Files
elcaribe/public/assets/js/vendors.js
2023-08-18 10:35:57 -04:00

285 lines
1.5 MiB
Vendored
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
!function (e, t) { "use strict"; "object" == typeof module && "object" == typeof module.exports ? module.exports = e.document ? t(e, !0) : function (e) { if (!e.document) throw new Error("jQuery requires a window with a document"); return t(e) } : t(e) }("undefined" != typeof window ? window : this, function (C, e) { "use strict"; var t = [], r = Object.getPrototypeOf, s = t.slice, g = t.flat ? function (e) { return t.flat.call(e) } : function (e) { return t.concat.apply([], e) }, u = t.push, i = t.indexOf, n = {}, o = n.toString, v = n.hasOwnProperty, a = v.toString, l = a.call(Object), y = {}, m = function (e) { return "function" == typeof e && "number" != typeof e.nodeType && "function" != typeof e.item }, x = function (e) { return null != e && e === e.window }, E = C.document, c = { type: !0, src: !0, nonce: !0, noModule: !0 }; function b(e, t, n) { var r, i, o = (n = n || E).createElement("script"); if (o.text = e, t) for (r in c) (i = t[r] || t.getAttribute && t.getAttribute(r)) && o.setAttribute(r, i); n.head.appendChild(o).parentNode.removeChild(o) } function w(e) { return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? n[o.call(e)] || "object" : typeof e } var f = "3.6.0", S = function (e, t) { return new S.fn.init(e, t) }; function p(e) { var t = !!e && "length" in e && e.length, n = w(e); return !m(e) && !x(e) && ("array" === n || 0 === t || "number" == typeof t && 0 < t && t - 1 in e) } S.fn = S.prototype = { jquery: f, constructor: S, length: 0, toArray: function () { return s.call(this) }, get: function (e) { return null == e ? s.call(this) : e < 0 ? this[e + this.length] : this[e] }, pushStack: function (e) { var t = S.merge(this.constructor(), e); return t.prevObject = this, t }, each: function (e) { return S.each(this, e) }, map: function (n) { return this.pushStack(S.map(this, function (e, t) { return n.call(e, t, e) })) }, slice: function () { return this.pushStack(s.apply(this, arguments)) }, first: function () { return this.eq(0) }, last: function () { return this.eq(-1) }, even: function () { return this.pushStack(S.grep(this, function (e, t) { return (t + 1) % 2 })) }, odd: function () { return this.pushStack(S.grep(this, function (e, t) { return t % 2 })) }, eq: function (e) { var t = this.length, n = +e + (e < 0 ? t : 0); return this.pushStack(0 <= n && n < t ? [this[n]] : []) }, end: function () { return this.prevObject || this.constructor() }, push: u, sort: t.sort, splice: t.splice }, S.extend = S.fn.extend = function () { var e, t, n, r, i, o, a = arguments[0] || {}, s = 1, u = arguments.length, l = !1; for ("boolean" == typeof a && (l = a, a = arguments[s] || {}, s++), "object" == typeof a || m(a) || (a = {}), s === u && (a = this, s--); s < u; s++)if (null != (e = arguments[s])) for (t in e) r = e[t], "__proto__" !== t && a !== r && (l && r && (S.isPlainObject(r) || (i = Array.isArray(r))) ? (n = a[t], o = i && !Array.isArray(n) ? [] : i || S.isPlainObject(n) ? n : {}, i = !1, a[t] = S.extend(l, o, r)) : void 0 !== r && (a[t] = r)); return a }, S.extend({ expando: "jQuery" + (f + Math.random()).replace(/\D/g, ""), isReady: !0, error: function (e) { throw new Error(e) }, noop: function () { }, isPlainObject: function (e) { var t, n; return !(!e || "[object Object]" !== o.call(e)) && (!(t = r(e)) || "function" == typeof (n = v.call(t, "constructor") && t.constructor) && a.call(n) === l) }, isEmptyObject: function (e) { var t; for (t in e) return !1; return !0 }, globalEval: function (e, t, n) { b(e, { nonce: t && t.nonce }, n) }, each: function (e, t) { var n, r = 0; if (p(e)) { for (n = e.length; r < n; r++)if (!1 === t.call(e[r], r, e[r])) break } else for (r in e) if (!1 === t.call(e[r], r, e[r])) break; return e }, makeArray: function (e, t) { var n = t || []; return null != e && (p(Object(e)) ? S.merge(n, "string" == typeof e ? [e] : e) : u.call(n, e)), n }, inArray: function (e, t, n) { return null == t ? -1 : i.call(t, e, n) }, merge: function (e, t) { for (var n = +t.length, r = 0, i = e.length; r < n; r++)e[i++] = t[r]; return e.length = i, e }, grep: function (e, t, n) { for (var r = [], i = 0, o = e.length, a = !n; i < o; i++)!t(e[i], i) !== a && r.push(e[i]); return r }, map: function (e, t, n) { var r, i, o = 0, a = []; if (p(e)) for (r = e.length; o < r; o++)null != (i = t(e[o], o, n)) && a.push(i); else for (o in e) null != (i = t(e[o], o, n)) && a.push(i); return g(a) }, guid: 1, support: y }), "function" == typeof Symbol && (S.fn[Symbol.iterator] = t[Symbol.iterator]), S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function (e, t) { n["[object " + t + "]"] = t.toLowerCase() }); var d = function (n) { var e, d, b, o, i, h, f, g, w, u, l, T, C, a, E, v, s, c, y, S = "sizzle" + 1 * new Date, p = n.document, k = 0, r = 0, m = ue(), x = ue(), A = ue(), N = ue(), j = function (e, t) { return e === t && (l = !0), 0 }, D = {}.hasOwnProperty, t = [], q = t.pop, L = t.push, H = t.push, O = t.slice, P = function (e, t) { for (var n = 0, r = e.length; n < r; n++)if (e[n] === t) return n; return -1 }, R = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", M = "[\\x20\\t\\r\\n\\f]", I = "(?:\\\\[\\da-fA-F]{1,6}" + M + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", W = "\\[" + M + "*(" + I + ")(?:" + M + "*([*^$|!~]?=)" + M + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + I + "))|)" + M + "*\\]", F = ":(" + I + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + W + ")*)|.*)\\)|)", B = new RegExp(M + "+", "g"), $ = new RegExp("^" + M + "+|((?:^|[^\\\\])(?:\\\\.)*)" + M + "+$", "g"), _ = new RegExp("^" + M + "*," + M + "*"), z = new RegExp("^" + M + "*([>+~]|" + M + ")" + M + "*"), U = new RegExp(M + "|>"), X = new RegExp(F), V = new RegExp("^" + I + "$"), G = { ID: new RegExp("^#(" + I + ")"), CLASS: new RegExp("^\\.(" + I + ")"), TAG: new RegExp("^(" + I + "|[*])"), ATTR: new RegExp("^" + W), PSEUDO: new RegExp("^" + F), CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + M + "*(even|odd|(([+-]|)(\\d*)n|)" + M + "*(?:([+-]|)" + M + "*(\\d+)|))" + M + "*\\)|)", "i"), bool: new RegExp("^(?:" + R + ")$", "i"), needsContext: new RegExp("^" + M + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + M + "*((?:-\\d)?\\d*)" + M + "*\\)|)(?=[^-]|$)", "i") }, Y = /HTML$/i, Q = /^(?:input|select|textarea|button)$/i, J = /^h\d$/i, K = /^[^{]+\{\s*\[native \w/, Z = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, ee = /[+~]/, te = new RegExp("\\\\[\\da-fA-F]{1,6}" + M + "?|\\\\([^\\r\\n\\f])", "g"), ne = function (e, t) { var n = "0x" + e.slice(1) - 65536; return t || (n < 0 ? String.fromCharCode(n + 65536) : String.fromCharCode(n >> 10 | 55296, 1023 & n | 56320)) }, re = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, ie = function (e, t) { return t ? "\0" === e ? "\ufffd" : e.slice(0, -1) + "\\" + e.charCodeAt(e.length - 1).toString(16) + " " : "\\" + e }, oe = function () { T() }, ae = be(function (e) { return !0 === e.disabled && "fieldset" === e.nodeName.toLowerCase() }, { dir: "parentNode", next: "legend" }); try { H.apply(t = O.call(p.childNodes), p.childNodes), t[p.childNodes.length].nodeType } catch (e) { H = { apply: t.length ? function (e, t) { L.apply(e, O.call(t)) } : function (e, t) { var n = e.length, r = 0; while (e[n++] = t[r++]); e.length = n - 1 } } } function se(t, e, n, r) { var i, o, a, s, u, l, c, f = e && e.ownerDocument, p = e ? e.nodeType : 9; if (n = n || [], "string" != typeof t || !t || 1 !== p && 9 !== p && 11 !== p) return n; if (!r && (T(e), e = e || C, E)) { if (11 !== p && (u = Z.exec(t))) if (i = u[1]) { if (9 === p) { if (!(a = e.getElementById(i))) return n; if (a.id === i) return n.push(a), n } else if (f && (a = f.getElementById(i)) && y(e, a) && a.id === i) return n.push(a), n } else { if (u[2]) return H.apply(n, e.getElementsByTagName(t)), n; if ((i = u[3]) && d.getElementsByClassName && e.getElementsByClassName) return H.apply(n, e.getElementsByClassName(i)), n } if (d.qsa && !N[t + " "] && (!v || !v.test(t)) && (1 !== p || "object" !== e.nodeName.toLowerCase())) { if (c = t, f = e, 1 === p && (U.test(t) || z.test(t))) { (f = ee.test(t) && ye(e.parentNode) || e) === e && d.scope || ((s = e.getAttribute("id")) ? s = s.replace(re, ie) : e.setAttribute("id", s = S)), o = (l = h(t)).length; while (o--) l[o] = (s ? "#" + s : ":scope") + " " + xe(l[o]); c = l.join(",") } try { return H.apply(n, f.querySelectorAll(c)), n } catch (e) { N(t, !0) } finally { s === S && e.removeAttribute("id") } } } return g(t.replace($, "$1"), e, n, r) } function ue() { var r = []; return function e(t, n) { return r.push(t + " ") > b.cacheLength && delete e[r.shift()], e[t + " "] = n } } function le(e) { return e[S] = !0, e } function ce(e) { var t = C.createElement("fieldset"); try { return !!e(t) } catch (e) { return !1 } finally { t.parentNode && t.parentNode.removeChild(t), t = null } } function fe(e, t) { var n = e.split("|"), r = n.length; while (r--) b.attrHandle[n[r]] = t } function pe(e, t) { var n = t && e, r = n && 1 === e.nodeType && 1 === t.nodeType && e.sourceIndex - t.sourceIndex; if (r) return r; if (n) while (n = n.nextSibling) if (n === t) return -1; return e ? 1 : -1 } function de(t) { return function (e) { return "input" === e.nodeName.toLowerCase() && e.type === t } } function he(n) { return function (e) { var t = e.nodeName.toLowerCase(); return ("input" === t || "button" === t) && e.type === n } } function ge(t) { return function (e) { return "form" in e ? e.parentNode && !1 === e.disabled ? "label" in e ? "label" in e.parentNode ? e.parentNode.disabled === t : e.disabled === t : e.isDisabled === t || e.isDisabled !== !t && ae(e) === t : e.disabled === t : "label" in e && e.disabled === t } } function ve(a) { return le(function (o) { return o = +o, le(function (e, t) { var n, r = a([], e.length, o), i = r.length; while (i--) e[n = r[i]] && (e[n] = !(t[n] = e[n])) }) }) } function ye(e) { return e && "undefined" != typeof e.getElementsByTagName && e } for (e in d = se.support = {}, i = se.isXML = function (e) { var t = e && e.namespaceURI, n = e && (e.ownerDocument || e).documentElement; return !Y.test(t || n && n.nodeName || "HTML") }, T = se.setDocument = function (e) { var t, n, r = e ? e.ownerDocument || e : p; return r != C && 9 === r.nodeType && r.documentElement && (a = (C = r).documentElement, E = !i(C), p != C && (n = C.defaultView) && n.top !== n && (n.addEventListener ? n.addEventListener("unload", oe, !1) : n.attachEvent && n.attachEvent("onunload", oe)), d.scope = ce(function (e) { return a.appendChild(e).appendChild(C.createElement("div")), "undefined" != typeof e.querySelectorAll && !e.querySelectorAll(":scope fieldset div").length }), d.attributes = ce(function (e) { return e.className = "i", !e.getAttribute("className") }), d.getElementsByTagName = ce(function (e) { return e.appendChild(C.createComment("")), !e.getElementsByTagName("*").length }), d.getElementsByClassName = K.test(C.getElementsByClassName), d.getById = ce(function (e) { return a.appendChild(e).id = S, !C.getElementsByName || !C.getElementsByName(S).length }), d.getById ? (b.filter.ID = function (e) { var t = e.replace(te, ne); return function (e) { return e.getAttribute("id") === t } }, b.find.ID = function (e, t) { if ("undefined" != typeof t.getElementById && E) { var n = t.getElementById(e); return n ? [n] : [] } }) : (b.filter.ID = function (e) { var n = e.replace(te, ne); return function (e) { var t = "undefined" != typeof e.getAttributeNode && e.getAttributeNode("id"); return t && t.value === n } }, b.find.ID = function (e, t) { if ("undefined" != typeof t.getElementById && E) { var n, r, i, o = t.getElementById(e); if (o) { if ((n = o.getAttributeNode("id")) && n.value === e) return [o]; i = t.getElementsByName(e), r = 0; while (o = i[r++]) if ((n = o.getAttributeNode("id")) && n.value === e) return [o] } return [] } }), b.find.TAG = d.getElementsByTagName ? function (e, t) { return "undefined" != typeof t.getElementsByTagName ? t.getElementsByTagName(e) : d.qsa ? t.querySelectorAll(e) : void 0 } : function (e, t) { var n, r = [], i = 0, o = t.getElementsByTagName(e); if ("*" === e) { while (n = o[i++]) 1 === n.nodeType && r.push(n); return r } return o }, b.find.CLASS = d.getElementsByClassName && function (e, t) { if ("undefined" != typeof t.getElementsByClassName && E) return t.getElementsByClassName(e) }, s = [], v = [], (d.qsa = K.test(C.querySelectorAll)) && (ce(function (e) { var t; a.appendChild(e).innerHTML = "<a id='" + S + "'></a><select id='" + S + "-\r\\' msallowcapture=''><option selected=''></option></select>", e.querySelectorAll("[msallowcapture^='']").length && v.push("[*^$]=" + M + "*(?:''|\"\")"), e.querySelectorAll("[selected]").length || v.push("\\[" + M + "*(?:value|" + R + ")"), e.querySelectorAll("[id~=" + S + "-]").length || v.push("~="), (t = C.createElement("input")).setAttribute("name", ""), e.appendChild(t), e.querySelectorAll("[name='']").length || v.push("\\[" + M + "*name" + M + "*=" + M + "*(?:''|\"\")"), e.querySelectorAll(":checked").length || v.push(":checked"), e.querySelectorAll("a#" + S + "+*").length || v.push(".#.+[+~]"), e.querySelectorAll("\\\f"), v.push("[\\r\\n\\f]") }), ce(function (e) { e.innerHTML = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>"; var t = C.createElement("input"); t.setAttribute("type", "hidden"), e.appendChild(t).setAttribute("name", "D"), e.querySelectorAll("[name=d]").length && v.push("name" + M + "*[*^$|!~]?="), 2 !== e.querySelectorAll(":enabled").length && v.push(":enabled", ":disabled"), a.appendChild(e).disabled = !0, 2 !== e.querySelectorAll(":disabled").length && v.push(":enabled", ":disabled"), e.querySelectorAll("*,:x"), v.push(",.*:") })), (d.matchesSelector = K.test(c = a.matches || a.webkitMatchesSelector || a.mozMatchesSelector || a.oMatchesSelector || a.msMatchesSelector)) && ce(function (e) { d.disconnectedMatch = c.call(e, "*"), c.call(e, "[s!='']:x"), s.push("!=", F) }), v = v.length && new RegExp(v.join("|")), s = s.length && new RegExp(s.join("|")), t = K.test(a.compareDocumentPosition), y = t || K.test(a.contains) ? function (e, t) { var n = 9 === e.nodeType ? e.documentElement : e, r = t && t.parentNode; return e === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r))) } : function (e, t) { if (t) while (t = t.parentNode) if (t === e) return !0; return !1 }, j = t ? function (e, t) { if (e === t) return l = !0, 0; var n = !e.compareDocumentPosition - !t.compareDocumentPosition; return n || (1 & (n = (e.ownerDocument || e) == (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !d.sortDetached && t.compareDocumentPosition(e) === n ? e == C || e.ownerDocument == p && y(p, e) ? -1 : t == C || t.ownerDocument == p && y(p, t) ? 1 : u ? P(u, e) - P(u, t) : 0 : 4 & n ? -1 : 1) } : function (e, t) { if (e === t) return l = !0, 0; var n, r = 0, i = e.parentNode, o = t.parentNode, a = [e], s = [t]; if (!i || !o) return e == C ? -1 : t == C ? 1 : i ? -1 : o ? 1 : u ? P(u, e) - P(u, t) : 0; if (i === o) return pe(e, t); n = e; while (n = n.parentNode) a.unshift(n); n = t; while (n = n.parentNode) s.unshift(n); while (a[r] === s[r]) r++; return r ? pe(a[r], s[r]) : a[r] == p ? -1 : s[r] == p ? 1 : 0 }), C }, se.matches = function (e, t) { return se(e, null, null, t) }, se.matchesSelector = function (e, t) { if (T(e), d.matchesSelector && E && !N[t + " "] && (!s || !s.test(t)) && (!v || !v.test(t))) try { var n = c.call(e, t); if (n || d.disconnectedMatch || e.document && 11 !== e.document.nodeType) return n } catch (e) { N(t, !0) } return 0 < se(t, C, null, [e]).length }, se.contains = function (e, t) { return (e.ownerDocument || e) != C && T(e), y(e, t) }, se.attr = function (e, t) { (e.ownerDocument || e) != C && T(e); var n = b.attrHandle[t.toLowerCase()], r = n && D.call(b.attrHandle, t.toLowerCase()) ? n(e, t, !E) : void 0; return void 0 !== r ? r : d.attributes || !E ? e.getAttribute(t) : (r = e.getAttributeNode(t)) && r.specified ? r.value : null }, se.escape = function (e) { return (e + "").replace(re, ie) }, se.error = function (e) { throw new Error("Syntax error, unrecognized expression: " + e) }, se.uniqueSort = function (e) { var t, n = [], r = 0, i = 0; if (l = !d.detectDuplicates, u = !d.sortStable && e.slice(0), e.sort(j), l) { while (t = e[i++]) t === e[i] && (r = n.push(i)); while (r--) e.splice(n[r], 1) } return u = null, e }, o = se.getText = function (e) { var t, n = "", r = 0, i = e.nodeType; if (i) { if (1 === i || 9 === i || 11 === i) { if ("string" == typeof e.textContent) return e.textContent; for (e = e.firstChild; e; e = e.nextSibling)n += o(e) } else if (3 === i || 4 === i) return e.nodeValue } else while (t = e[r++]) n += o(t); return n }, (b = se.selectors = { cacheLength: 50, createPseudo: le, match: G, attrHandle: {}, find: {}, relative: { ">": { dir: "parentNode", first: !0 }, " ": { dir: "parentNode" }, "+": { dir: "previousSibling", first: !0 }, "~": { dir: "previousSibling" } }, preFilter: { ATTR: function (e) { return e[1] = e[1].replace(te, ne), e[3] = (e[3] || e[4] || e[5] || "").replace(te, ne), "~=" === e[2] && (e[3] = " " + e[3] + " "), e.slice(0, 4) }, CHILD: function (e) { return e[1] = e[1].toLowerCase(), "nth" === e[1].slice(0, 3) ? (e[3] || se.error(e[0]), e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])), e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && se.error(e[0]), e }, PSEUDO: function (e) { var t, n = !e[6] && e[2]; return G.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && X.test(n) && (t = h(n, !0)) && (t = n.indexOf(")", n.length - t) - n.length) && (e[0] = e[0].slice(0, t), e[2] = n.slice(0, t)), e.slice(0, 3)) } }, filter: { TAG: function (e) { var t = e.replace(te, ne).toLowerCase(); return "*" === e ? function () { return !0 } : function (e) { return e.nodeName && e.nodeName.toLowerCase() === t } }, CLASS: function (e) { var t = m[e + " "]; return t || (t = new RegExp("(^|" + M + ")" + e + "(" + M + "|$)")) && m(e, function (e) { return t.test("string" == typeof e.className && e.className || "undefined" != typeof e.getAttribute && e.getAttribute("class") || "") }) }, ATTR: function (n, r, i) { return function (e) { var t = se.attr(e, n); return null == t ? "!=" === r : !r || (t += "", "=" === r ? t === i : "!=" === r ? t !== i : "^=" === r ? i && 0 === t.indexOf(i) : "*=" === r ? i && -1 < t.indexOf(i) : "$=" === r ? i && t.slice(-i.length) === i : "~=" === r ? -1 < (" " + t.replace(B, " ") + " ").indexOf(i) : "|=" === r && (t === i || t.slice(0, i.length + 1) === i + "-")) } }, CHILD: function (h, e, t, g, v) { var y = "nth" !== h.slice(0, 3), m = "last" !== h.slice(-4), x = "of-type" === e; return 1 === g && 0 === v ? function (e) { return !!e.parentNode } : function (e, t, n) { var r, i, o, a, s, u, l = y !== m ? "nextSibling" : "previousSibling", c = e.parentNode, f = x && e.nodeName.toLowerCase(), p = !n && !x, d = !1; if (c) { if (y) { while (l) { a = e; while (a = a[l]) if (x ? a.nodeName.toLowerCase() === f : 1 === a.nodeType) return !1; u = l = "only" === h && !u && "nextSibling" } return !0 } if (u = [m ? c.firstChild : c.lastChild], m && p) { d = (s = (r = (i = (o = (a = c)[S] || (a[S] = {}))[a.uniqueID] || (o[a.uniqueID] = {}))[h] || [])[0] === k && r[1]) && r[2], a = s && c.childNodes[s]; while (a = ++s && a && a[l] || (d = s = 0) || u.pop()) if (1 === a.nodeType && ++d && a === e) { i[h] = [k, s, d]; break } } else if (p && (d = s = (r = (i = (o = (a = e)[S] || (a[S] = {}))[a.uniqueID] || (o[a.uniqueID] = {}))[h] || [])[0] === k && r[1]), !1 === d) while (a = ++s && a && a[l] || (d = s = 0) || u.pop()) if ((x ? a.nodeName.toLowerCase() === f : 1 === a.nodeType) && ++d && (p && ((i = (o = a[S] || (a[S] = {}))[a.uniqueID] || (o[a.uniqueID] = {}))[h] = [k, d]), a === e)) break; return (d -= v) === g || d % g == 0 && 0 <= d / g } } }, PSEUDO: function (e, o) { var t, a = b.pseudos[e] || b.setFilters[e.toLowerCase()] || se.error("unsupported pseudo: " + e); return a[S] ? a(o) : 1 < a.length ? (t = [e, e, "", o], b.setFilters.hasOwnProperty(e.toLowerCase()) ? le(function (e, t) { var n, r = a(e, o), i = r.length; while (i--) e[n = P(e, r[i])] = !(t[n] = r[i]) }) : function (e) { return a(e, 0, t) }) : a } }, pseudos: { not: le(function (e) { var r = [], i = [], s = f(e.replace($, "$1")); return s[S] ? le(function (e, t, n, r) { var i, o = s(e, null, r, []), a = e.length; while (a--) (i = o[a]) && (e[a] = !(t[a] = i)) }) : function (e, t, n) { return r[0] = e, s(r, null, n, i), r[0] = null, !i.pop() } }), has: le(function (t) { return function (e) { return 0 < se(t, e).length } }), contains: le(function (t) { return t = t.replace(te, ne), function (e) { return -1 < (e.textContent || o(e)).indexOf(t) } }), lang: le(function (n) { return V.test(n || "") || se.error("unsupported lang: " + n), n = n.replace(te, ne).toLowerCase(), function (e) { var t; do { if (t = E ? e.lang : e.getAttribute("xml:lang") || e.getAttribute("lang")) return (t = t.toLowerCase()) === n || 0 === t.indexOf(n + "-") } while ((e = e.parentNode) && 1 === e.nodeType); return !1 } }), target: function (e) { var t = n.location && n.location.hash; return t && t.slice(1) === e.id }, root: function (e) { return e === a }, focus: function (e) { return e === C.activeElement && (!C.hasFocus || C.hasFocus()) && !!(e.type || e.href || ~e.tabIndex) }, enabled: ge(!1), disabled: ge(!0), checked: function (e) { var t = e.nodeName.toLowerCase(); return "input" === t && !!e.checked || "option" === t && !!e.selected }, selected: function (e) { return e.parentNode && e.parentNode.selectedIndex, !0 === e.selected }, empty: function (e) { for (e = e.firstChild; e; e = e.nextSibling)if (e.nodeType < 6) return !1; return !0 }, parent: function (e) { return !b.pseudos.empty(e) }, header: function (e) { return J.test(e.nodeName) }, input: function (e) { return Q.test(e.nodeName) }, button: function (e) { var t = e.nodeName.toLowerCase(); return "input" === t && "button" === e.type || "button" === t }, text: function (e) { var t; return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase()) }, first: ve(function () { return [0] }), last: ve(function (e, t) { return [t - 1] }), eq: ve(function (e, t, n) { return [n < 0 ? n + t : n] }), even: ve(function (e, t) { for (var n = 0; n < t; n += 2)e.push(n); return e }), odd: ve(function (e, t) { for (var n = 1; n < t; n += 2)e.push(n); return e }), lt: ve(function (e, t, n) { for (var r = n < 0 ? n + t : t < n ? t : n; 0 <= --r;)e.push(r); return e }), gt: ve(function (e, t, n) { for (var r = n < 0 ? n + t : n; ++r < t;)e.push(r); return e }) } }).pseudos.nth = b.pseudos.eq, { radio: !0, checkbox: !0, file: !0, password: !0, image: !0 }) b.pseudos[e] = de(e); for (e in { submit: !0, reset: !0 }) b.pseudos[e] = he(e); function me() { } function xe(e) { for (var t = 0, n = e.length, r = ""; t < n; t++)r += e[t].value; return r } function be(s, e, t) { var u = e.dir, l = e.next, c = l || u, f = t && "parentNode" === c, p = r++; return e.first ? function (e, t, n) { while (e = e[u]) if (1 === e.nodeType || f) return s(e, t, n); return !1 } : function (e, t, n) { var r, i, o, a = [k, p]; if (n) { while (e = e[u]) if ((1 === e.nodeType || f) && s(e, t, n)) return !0 } else while (e = e[u]) if (1 === e.nodeType || f) if (i = (o = e[S] || (e[S] = {}))[e.uniqueID] || (o[e.uniqueID] = {}), l && l === e.nodeName.toLowerCase()) e = e[u] || e; else { if ((r = i[c]) && r[0] === k && r[1] === p) return a[2] = r[2]; if ((i[c] = a)[2] = s(e, t, n)) return !0 } return !1 } } function we(i) { return 1 < i.length ? function (e, t, n) { var r = i.length; while (r--) if (!i[r](e, t, n)) return !1; return !0 } : i[0] } function Te(e, t, n, r, i) { for (var o, a = [], s = 0, u = e.length, l = null != t; s < u; s++)(o = e[s]) && (n && !n(o, r, i) || (a.push(o), l && t.push(s))); return a } function Ce(d, h, g, v, y, e) { return v && !v[S] && (v = Ce(v)), y && !y[S] && (y = Ce(y, e)), le(function (e, t, n, r) { var i, o, a, s = [], u = [], l = t.length, c = e || function (e, t, n) { for (var r = 0, i = t.length; r < i; r++)se(e, t[r], n); return n }(h || "*", n.nodeType ? [n] : n, []), f = !d || !e && h ? c : Te(c, s, d, n, r), p = g ? y || (e ? d : l || v) ? [] : t : f; if (g && g(f, p, n, r), v) { i = Te(p, u), v(i, [], n, r), o = i.length; while (o--) (a = i[o]) && (p[u[o]] = !(f[u[o]] = a)) } if (e) { if (y || d) { if (y) { i = [], o = p.length; while (o--) (a = p[o]) && i.push(f[o] = a); y(null, p = [], i, r) } o = p.length; while (o--) (a = p[o]) && -1 < (i = y ? P(e, a) : s[o]) && (e[i] = !(t[i] = a)) } } else p = Te(p === t ? p.splice(l, p.length) : p), y ? y(null, t, p, r) : H.apply(t, p) }) } function Ee(e) { for (var i, t, n, r = e.length, o = b.relative[e[0].type], a = o || b.relative[" "], s = o ? 1 : 0, u = be(function (e) { return e === i }, a, !0), l = be(function (e) { return -1 < P(i, e) }, a, !0), c = [function (e, t, n) { var r = !o && (n || t !== w) || ((i = t).nodeType ? u(e, t, n) : l(e, t, n)); return i = null, r }]; s < r; s++)if (t = b.relative[e[s].type]) c = [be(we(c), t)]; else { if ((t = b.filter[e[s].type].apply(null, e[s].matches))[S]) { for (n = ++s; n < r; n++)if (b.relative[e[n].type]) break; return Ce(1 < s && we(c), 1 < s && xe(e.slice(0, s - 1).concat({ value: " " === e[s - 2].type ? "*" : "" })).replace($, "$1"), t, s < n && Ee(e.slice(s, n)), n < r && Ee(e = e.slice(n)), n < r && xe(e)) } c.push(t) } return we(c) } return me.prototype = b.filters = b.pseudos, b.setFilters = new me, h = se.tokenize = function (e, t) { var n, r, i, o, a, s, u, l = x[e + " "]; if (l) return t ? 0 : l.slice(0); a = e, s = [], u = b.preFilter; while (a) { for (o in n && !(r = _.exec(a)) || (r && (a = a.slice(r[0].length) || a), s.push(i = [])), n = !1, (r = z.exec(a)) && (n = r.shift(), i.push({ value: n, type: r[0].replace($, " ") }), a = a.slice(n.length)), b.filter) !(r = G[o].exec(a)) || u[o] && !(r = u[o](r)) || (n = r.shift(), i.push({ value: n, type: o, matches: r }), a = a.slice(n.length)); if (!n) break } return t ? a.length : a ? se.error(e) : x(e, s).slice(0) }, f = se.compile = function (e, t) { var n, v, y, m, x, r, i = [], o = [], a = A[e + " "]; if (!a) { t || (t = h(e)), n = t.length; while (n--) (a = Ee(t[n]))[S] ? i.push(a) : o.push(a); (a = A(e, (v = o, m = 0 < (y = i).length, x = 0 < v.length, r = function (e, t, n, r, i) { var o, a, s, u = 0, l = "0", c = e && [], f = [], p = w, d = e || x && b.find.TAG("*", i), h = k += null == p ? 1 : Math.random() || .1, g = d.length; for (i && (w = t == C || t || i); l !== g && null != (o = d[l]); l++) { if (x && o) { a = 0, t || o.ownerDocument == C || (T(o), n = !E); while (s = v[a++]) if (s(o, t || C, n)) { r.push(o); break } i && (k = h) } m && ((o = !s && o) && u--, e && c.push(o)) } if (u += l, m && l !== u) { a = 0; while (s = y[a++]) s(c, f, t, n); if (e) { if (0 < u) while (l--) c[l] || f[l] || (f[l] = q.call(r)); f = Te(f) } H.apply(r, f), i && !e && 0 < f.length && 1 < u + y.length && se.uniqueSort(r) } return i && (k = h, w = p), c }, m ? le(r) : r))).selector = e } return a }, g = se.select = function (e, t, n, r) { var i, o, a, s, u, l = "function" == typeof e && e, c = !r && h(e = l.selector || e); if (n = n || [], 1 === c.length) { if (2 < (o = c[0] = c[0].slice(0)).length && "ID" === (a = o[0]).type && 9 === t.nodeType && E && b.relative[o[1].type]) { if (!(t = (b.find.ID(a.matches[0].replace(te, ne), t) || [])[0])) return n; l && (t = t.parentNode), e = e.slice(o.shift().value.length) } i = G.needsContext.test(e) ? 0 : o.length; while (i--) { if (a = o[i], b.relative[s = a.type]) break; if ((u = b.find[s]) && (r = u(a.matches[0].replace(te, ne), ee.test(o[0].type) && ye(t.parentNode) || t))) { if (o.splice(i, 1), !(e = r.length && xe(o))) return H.apply(n, r), n; break } } } return (l || f(e, c))(r, t, !E, n, !t || ee.test(e) && ye(t.parentNode) || t), n }, d.sortStable = S.split("").sort(j).join("") === S, d.detectDuplicates = !!l, T(), d.sortDetached = ce(function (e) { return 1 & e.compareDocumentPosition(C.createElement("fieldset")) }), ce(function (e) { return e.innerHTML = "<a href='#'></a>", "#" === e.firstChild.getAttribute("href") }) || fe("type|href|height|width", function (e, t, n) { if (!n) return e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2) }), d.attributes && ce(function (e) { return e.innerHTML = "<input/>", e.firstChild.setAttribute("value", ""), "" === e.firstChild.getAttribute("value") }) || fe("value", function (e, t, n) { if (!n && "input" === e.nodeName.toLowerCase()) return e.defaultValue }), ce(function (e) { return null == e.getAttribute("disabled") }) || fe(R, function (e, t, n) { var r; if (!n) return !0 === e[t] ? t.toLowerCase() : (r = e.getAttributeNode(t)) && r.specified ? r.value : null }), se }(C); S.find = d, S.expr = d.selectors, S.expr[":"] = S.expr.pseudos, S.uniqueSort = S.unique = d.uniqueSort, S.text = d.getText, S.isXMLDoc = d.isXML, S.contains = d.contains, S.escapeSelector = d.escape; var h = function (e, t, n) { var r = [], i = void 0 !== n; while ((e = e[t]) && 9 !== e.nodeType) if (1 === e.nodeType) { if (i && S(e).is(n)) break; r.push(e) } return r }, T = function (e, t) { for (var n = []; e; e = e.nextSibling)1 === e.nodeType && e !== t && n.push(e); return n }, k = S.expr.match.needsContext; function A(e, t) { return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase() } var N = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i; function j(e, n, r) { return m(n) ? S.grep(e, function (e, t) { return !!n.call(e, t, e) !== r }) : n.nodeType ? S.grep(e, function (e) { return e === n !== r }) : "string" != typeof n ? S.grep(e, function (e) { return -1 < i.call(n, e) !== r }) : S.filter(n, e, r) } S.filter = function (e, t, n) { var r = t[0]; return n && (e = ":not(" + e + ")"), 1 === t.length && 1 === r.nodeType ? S.find.matchesSelector(r, e) ? [r] : [] : S.find.matches(e, S.grep(t, function (e) { return 1 === e.nodeType })) }, S.fn.extend({ find: function (e) { var t, n, r = this.length, i = this; if ("string" != typeof e) return this.pushStack(S(e).filter(function () { for (t = 0; t < r; t++)if (S.contains(i[t], this)) return !0 })); for (n = this.pushStack([]), t = 0; t < r; t++)S.find(e, i[t], n); return 1 < r ? S.uniqueSort(n) : n }, filter: function (e) { return this.pushStack(j(this, e || [], !1)) }, not: function (e) { return this.pushStack(j(this, e || [], !0)) }, is: function (e) { return !!j(this, "string" == typeof e && k.test(e) ? S(e) : e || [], !1).length } }); var D, q = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/; (S.fn.init = function (e, t, n) { var r, i; if (!e) return this; if (n = n || D, "string" == typeof e) { if (!(r = "<" === e[0] && ">" === e[e.length - 1] && 3 <= e.length ? [null, e, null] : q.exec(e)) || !r[1] && t) return !t || t.jquery ? (t || n).find(e) : this.constructor(t).find(e); if (r[1]) { if (t = t instanceof S ? t[0] : t, S.merge(this, S.parseHTML(r[1], t && t.nodeType ? t.ownerDocument || t : E, !0)), N.test(r[1]) && S.isPlainObject(t)) for (r in t) m(this[r]) ? this[r](t[r]) : this.attr(r, t[r]); return this } return (i = E.getElementById(r[2])) && (this[0] = i, this.length = 1), this } return e.nodeType ? (this[0] = e, this.length = 1, this) : m(e) ? void 0 !== n.ready ? n.ready(e) : e(S) : S.makeArray(e, this) }).prototype = S.fn, D = S(E); var L = /^(?:parents|prev(?:Until|All))/, H = { children: !0, contents: !0, next: !0, prev: !0 }; function O(e, t) { while ((e = e[t]) && 1 !== e.nodeType); return e } S.fn.extend({ has: function (e) { var t = S(e, this), n = t.length; return this.filter(function () { for (var e = 0; e < n; e++)if (S.contains(this, t[e])) return !0 }) }, closest: function (e, t) { var n, r = 0, i = this.length, o = [], a = "string" != typeof e && S(e); if (!k.test(e)) for (; r < i; r++)for (n = this[r]; n && n !== t; n = n.parentNode)if (n.nodeType < 11 && (a ? -1 < a.index(n) : 1 === n.nodeType && S.find.matchesSelector(n, e))) { o.push(n); break } return this.pushStack(1 < o.length ? S.uniqueSort(o) : o) }, index: function (e) { return e ? "string" == typeof e ? i.call(S(e), this[0]) : i.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1 }, add: function (e, t) { return this.pushStack(S.uniqueSort(S.merge(this.get(), S(e, t)))) }, addBack: function (e) { return this.add(null == e ? this.prevObject : this.prevObject.filter(e)) } }), S.each({ parent: function (e) { var t = e.parentNode; return t && 11 !== t.nodeType ? t : null }, parents: function (e) { return h(e, "parentNode") }, parentsUntil: function (e, t, n) { return h(e, "parentNode", n) }, next: function (e) { return O(e, "nextSibling") }, prev: function (e) { return O(e, "previousSibling") }, nextAll: function (e) { return h(e, "nextSibling") }, prevAll: function (e) { return h(e, "previousSibling") }, nextUntil: function (e, t, n) { return h(e, "nextSibling", n) }, prevUntil: function (e, t, n) { return h(e, "previousSibling", n) }, siblings: function (e) { return T((e.parentNode || {}).firstChild, e) }, children: function (e) { return T(e.firstChild) }, contents: function (e) { return null != e.contentDocument && r(e.contentDocument) ? e.contentDocument : (A(e, "template") && (e = e.content || e), S.merge([], e.childNodes)) } }, function (r, i) { S.fn[r] = function (e, t) { var n = S.map(this, i, e); return "Until" !== r.slice(-5) && (t = e), t && "string" == typeof t && (n = S.filter(t, n)), 1 < this.length && (H[r] || S.uniqueSort(n), L.test(r) && n.reverse()), this.pushStack(n) } }); var P = /[^\x20\t\r\n\f]+/g; function R(e) { return e } function M(e) { throw e } function I(e, t, n, r) { var i; try { e && m(i = e.promise) ? i.call(e).done(t).fail(n) : e && m(i = e.then) ? i.call(e, t, n) : t.apply(void 0, [e].slice(r)) } catch (e) { n.apply(void 0, [e]) } } S.Callbacks = function (r) { var e, n; r = "string" == typeof r ? (e = r, n = {}, S.each(e.match(P) || [], function (e, t) { n[t] = !0 }), n) : S.extend({}, r); var i, t, o, a, s = [], u = [], l = -1, c = function () { for (a = a || r.once, o = i = !0; u.length; l = -1) { t = u.shift(); while (++l < s.length) !1 === s[l].apply(t[0], t[1]) && r.stopOnFalse && (l = s.length, t = !1) } r.memory || (t = !1), i = !1, a && (s = t ? [] : "") }, f = { add: function () { return s && (t && !i && (l = s.length - 1, u.push(t)), function n(e) { S.each(e, function (e, t) { m(t) ? r.unique && f.has(t) || s.push(t) : t && t.length && "string" !== w(t) && n(t) }) }(arguments), t && !i && c()), this }, remove: function () { return S.each(arguments, function (e, t) { var n; while (-1 < (n = S.inArray(t, s, n))) s.splice(n, 1), n <= l && l-- }), this }, has: function (e) { return e ? -1 < S.inArray(e, s) : 0 < s.length }, empty: function () { return s && (s = []), this }, disable: function () { return a = u = [], s = t = "", this }, disabled: function () { return !s }, lock: function () { return a = u = [], t || i || (s = t = ""), this }, locked: function () { return !!a }, fireWith: function (e, t) { return a || (t = [e, (t = t || []).slice ? t.slice() : t], u.push(t), i || c()), this }, fire: function () { return f.fireWith(this, arguments), this }, fired: function () { return !!o } }; return f }, S.extend({ Deferred: function (e) { var o = [["notify", "progress", S.Callbacks("memory"), S.Callbacks("memory"), 2], ["resolve", "done", S.Callbacks("once memory"), S.Callbacks("once memory"), 0, "resolved"], ["reject", "fail", S.Callbacks("once memory"), S.Callbacks("once memory"), 1, "rejected"]], i = "pending", a = { state: function () { return i }, always: function () { return s.done(arguments).fail(arguments), this }, "catch": function (e) { return a.then(null, e) }, pipe: function () { var i = arguments; return S.Deferred(function (r) { S.each(o, function (e, t) { var n = m(i[t[4]]) && i[t[4]]; s[t[1]](function () { var e = n && n.apply(this, arguments); e && m(e.promise) ? e.promise().progress(r.notify).done(r.resolve).fail(r.reject) : r[t[0] + "With"](this, n ? [e] : arguments) }) }), i = null }).promise() }, then: function (t, n, r) { var u = 0; function l(i, o, a, s) { return function () { var n = this, r = arguments, e = function () { var e, t; if (!(i < u)) { if ((e = a.apply(n, r)) === o.promise()) throw new TypeError("Thenable self-resolution"); t = e && ("object" == typeof e || "function" == typeof e) && e.then, m(t) ? s ? t.call(e, l(u, o, R, s), l(u, o, M, s)) : (u++, t.call(e, l(u, o, R, s), l(u, o, M, s), l(u, o, R, o.notifyWith))) : (a !== R && (n = void 0, r = [e]), (s || o.resolveWith)(n, r)) } }, t = s ? e : function () { try { e() } catch (e) { S.Deferred.exceptionHook && S.Deferred.exceptionHook(e, t.stackTrace), u <= i + 1 && (a !== M && (n = void 0, r = [e]), o.rejectWith(n, r)) } }; i ? t() : (S.Deferred.getStackHook && (t.stackTrace = S.Deferred.getStackHook()), C.setTimeout(t)) } } return S.Deferred(function (e) { o[0][3].add(l(0, e, m(r) ? r : R, e.notifyWith)), o[1][3].add(l(0, e, m(t) ? t : R)), o[2][3].add(l(0, e, m(n) ? n : M)) }).promise() }, promise: function (e) { return null != e ? S.extend(e, a) : a } }, s = {}; return S.each(o, function (e, t) { var n = t[2], r = t[5]; a[t[1]] = n.add, r && n.add(function () { i = r }, o[3 - e][2].disable, o[3 - e][3].disable, o[0][2].lock, o[0][3].lock), n.add(t[3].fire), s[t[0]] = function () { return s[t[0] + "With"](this === s ? void 0 : this, arguments), this }, s[t[0] + "With"] = n.fireWith }), a.promise(s), e && e.call(s, s), s }, when: function (e) { var n = arguments.length, t = n, r = Array(t), i = s.call(arguments), o = S.Deferred(), a = function (t) { return function (e) { r[t] = this, i[t] = 1 < arguments.length ? s.call(arguments) : e, --n || o.resolveWith(r, i) } }; if (n <= 1 && (I(e, o.done(a(t)).resolve, o.reject, !n), "pending" === o.state() || m(i[t] && i[t].then))) return o.then(); while (t--) I(i[t], a(t), o.reject); return o.promise() } }); var W = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; S.Deferred.exceptionHook = function (e, t) { C.console && C.console.warn && e && W.test(e.name) && C.console.warn("jQuery.Deferred exception: " + e.message, e.stack, t) }, S.readyException = function (e) { C.setTimeout(function () { throw e }) }; var F = S.Deferred(); function B() { E.removeEventListener("DOMContentLoaded", B), C.removeEventListener("load", B), S.ready() } S.fn.ready = function (e) { return F.then(e)["catch"](function (e) { S.readyException(e) }), this }, S.extend({ isReady: !1, readyWait: 1, ready: function (e) { (!0 === e ? --S.readyWait : S.isReady) || (S.isReady = !0) !== e && 0 < --S.readyWait || F.resolveWith(E, [S]) } }), S.ready.then = F.then, "complete" === E.readyState || "loading" !== E.readyState && !E.documentElement.doScroll ? C.setTimeout(S.ready) : (E.addEventListener("DOMContentLoaded", B), C.addEventListener("load", B)); var $ = function (e, t, n, r, i, o, a) { var s = 0, u = e.length, l = null == n; if ("object" === w(n)) for (s in i = !0, n) $(e, t, s, n[s], !0, o, a); else if (void 0 !== r && (i = !0, m(r) || (a = !0), l && (a ? (t.call(e, r), t = null) : (l = t, t = function (e, t, n) { return l.call(S(e), n) })), t)) for (; s < u; s++)t(e[s], n, a ? r : r.call(e[s], s, t(e[s], n))); return i ? e : l ? t.call(e) : u ? t(e[0], n) : o }, _ = /^-ms-/, z = /-([a-z])/g; function U(e, t) { return t.toUpperCase() } function X(e) { return e.replace(_, "ms-").replace(z, U) } var V = function (e) { return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType }; function G() { this.expando = S.expando + G.uid++ } G.uid = 1, G.prototype = { cache: function (e) { var t = e[this.expando]; return t || (t = {}, V(e) && (e.nodeType ? e[this.expando] = t : Object.defineProperty(e, this.expando, { value: t, configurable: !0 }))), t }, set: function (e, t, n) { var r, i = this.cache(e); if ("string" == typeof t) i[X(t)] = n; else for (r in t) i[X(r)] = t[r]; return i }, get: function (e, t) { return void 0 === t ? this.cache(e) : e[this.expando] && e[this.expando][X(t)] }, access: function (e, t, n) { return void 0 === t || t && "string" == typeof t && void 0 === n ? this.get(e, t) : (this.set(e, t, n), void 0 !== n ? n : t) }, remove: function (e, t) { var n, r = e[this.expando]; if (void 0 !== r) { if (void 0 !== t) { n = (t = Array.isArray(t) ? t.map(X) : (t = X(t)) in r ? [t] : t.match(P) || []).length; while (n--) delete r[t[n]] } (void 0 === t || S.isEmptyObject(r)) && (e.nodeType ? e[this.expando] = void 0 : delete e[this.expando]) } }, hasData: function (e) { var t = e[this.expando]; return void 0 !== t && !S.isEmptyObject(t) } }; var Y = new G, Q = new G, J = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, K = /[A-Z]/g; function Z(e, t, n) { var r, i; if (void 0 === n && 1 === e.nodeType) if (r = "data-" + t.replace(K, "-$&").toLowerCase(), "string" == typeof (n = e.getAttribute(r))) { try { n = "true" === (i = n) || "false" !== i && ("null" === i ? null : i === +i + "" ? +i : J.test(i) ? JSON.parse(i) : i) } catch (e) { } Q.set(e, t, n) } else n = void 0; return n } S.extend({ hasData: function (e) { return Q.hasData(e) || Y.hasData(e) }, data: function (e, t, n) { return Q.access(e, t, n) }, removeData: function (e, t) { Q.remove(e, t) }, _data: function (e, t, n) { return Y.access(e, t, n) }, _removeData: function (e, t) { Y.remove(e, t) } }), S.fn.extend({ data: function (n, e) { var t, r, i, o = this[0], a = o && o.attributes; if (void 0 === n) { if (this.length && (i = Q.get(o), 1 === o.nodeType && !Y.get(o, "hasDataAttrs"))) { t = a.length; while (t--) a[t] && 0 === (r = a[t].name).indexOf("data-") && (r = X(r.slice(5)), Z(o, r, i[r])); Y.set(o, "hasDataAttrs", !0) } return i } return "object" == typeof n ? this.each(function () { Q.set(this, n) }) : $(this, function (e) { var t; if (o && void 0 === e) return void 0 !== (t = Q.get(o, n)) ? t : void 0 !== (t = Z(o, n)) ? t : void 0; this.each(function () { Q.set(this, n, e) }) }, null, e, 1 < arguments.length, null, !0) }, removeData: function (e) { return this.each(function () { Q.remove(this, e) }) } }), S.extend({ queue: function (e, t, n) { var r; if (e) return t = (t || "fx") + "queue", r = Y.get(e, t), n && (!r || Array.isArray(n) ? r = Y.access(e, t, S.makeArray(n)) : r.push(n)), r || [] }, dequeue: function (e, t) { t = t || "fx"; var n = S.queue(e, t), r = n.length, i = n.shift(), o = S._queueHooks(e, t); "inprogress" === i && (i = n.shift(), r--), i && ("fx" === t && n.unshift("inprogress"), delete o.stop, i.call(e, function () { S.dequeue(e, t) }, o)), !r && o && o.empty.fire() }, _queueHooks: function (e, t) { var n = t + "queueHooks"; return Y.get(e, n) || Y.access(e, n, { empty: S.Callbacks("once memory").add(function () { Y.remove(e, [t + "queue", n]) }) }) } }), S.fn.extend({ queue: function (t, n) { var e = 2; return "string" != typeof t && (n = t, t = "fx", e--), arguments.length < e ? S.queue(this[0], t) : void 0 === n ? this : this.each(function () { var e = S.queue(this, t, n); S._queueHooks(this, t), "fx" === t && "inprogress" !== e[0] && S.dequeue(this, t) }) }, dequeue: function (e) { return this.each(function () { S.dequeue(this, e) }) }, clearQueue: function (e) { return this.queue(e || "fx", []) }, promise: function (e, t) { var n, r = 1, i = S.Deferred(), o = this, a = this.length, s = function () { --r || i.resolveWith(o, [o]) }; "string" != typeof e && (t = e, e = void 0), e = e || "fx"; while (a--) (n = Y.get(o[a], e + "queueHooks")) && n.empty && (r++, n.empty.add(s)); return s(), i.promise(t) } }); var ee = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, te = new RegExp("^(?:([+-])=|)(" + ee + ")([a-z%]*)$", "i"), ne = ["Top", "Right", "Bottom", "Left"], re = E.documentElement, ie = function (e) { return S.contains(e.ownerDocument, e) }, oe = { composed: !0 }; re.getRootNode && (ie = function (e) { return S.contains(e.ownerDocument, e) || e.getRootNode(oe) === e.ownerDocument }); var ae = function (e, t) { return "none" === (e = t || e).style.display || "" === e.style.display && ie(e) && "none" === S.css(e, "display") }; function se(e, t, n, r) { var i, o, a = 20, s = r ? function () { return r.cur() } : function () { return S.css(e, t, "") }, u = s(), l = n && n[3] || (S.cssNumber[t] ? "" : "px"), c = e.nodeType && (S.cssNumber[t] || "px" !== l && +u) && te.exec(S.css(e, t)); if (c && c[3] !== l) { u /= 2, l = l || c[3], c = +u || 1; while (a--) S.style(e, t, c + l), (1 - o) * (1 - (o = s() / u || .5)) <= 0 && (a = 0), c /= o; c *= 2, S.style(e, t, c + l), n = n || [] } return n && (c = +c || +u || 0, i = n[1] ? c + (n[1] + 1) * n[2] : +n[2], r && (r.unit = l, r.start = c, r.end = i)), i } var ue = {}; function le(e, t) { for (var n, r, i, o, a, s, u, l = [], c = 0, f = e.length; c < f; c++)(r = e[c]).style && (n = r.style.display, t ? ("none" === n && (l[c] = Y.get(r, "display") || null, l[c] || (r.style.display = "")), "" === r.style.display && ae(r) && (l[c] = (u = a = o = void 0, a = (i = r).ownerDocument, s = i.nodeName, (u = ue[s]) || (o = a.body.appendChild(a.createElement(s)), u = S.css(o, "display"), o.parentNode.removeChild(o), "none" === u && (u = "block"), ue[s] = u)))) : "none" !== n && (l[c] = "none", Y.set(r, "display", n))); for (c = 0; c < f; c++)null != l[c] && (e[c].style.display = l[c]); return e } S.fn.extend({ show: function () { return le(this, !0) }, hide: function () { return le(this) }, toggle: function (e) { return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function () { ae(this) ? S(this).show() : S(this).hide() }) } }); var ce, fe, pe = /^(?:checkbox|radio)$/i, de = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i, he = /^$|^module$|\/(?:java|ecma)script/i; ce = E.createDocumentFragment().appendChild(E.createElement("div")), (fe = E.createElement("input")).setAttribute("type", "radio"), fe.setAttribute("checked", "checked"), fe.setAttribute("name", "t"), ce.appendChild(fe), y.checkClone = ce.cloneNode(!0).cloneNode(!0).lastChild.checked, ce.innerHTML = "<textarea>x</textarea>", y.noCloneChecked = !!ce.cloneNode(!0).lastChild.defaultValue, ce.innerHTML = "<option></option>", y.option = !!ce.lastChild; var ge = { thead: [1, "<table>", "</table>"], col: [2, "<table><colgroup>", "</colgroup></table>"], tr: [2, "<table><tbody>", "</tbody></table>"], td: [3, "<table><tbody><tr>", "</tr></tbody></table>"], _default: [0, "", ""] }; function ve(e, t) { var n; return n = "undefined" != typeof e.getElementsByTagName ? e.getElementsByTagName(t || "*") : "undefined" != typeof e.querySelectorAll ? e.querySelectorAll(t || "*") : [], void 0 === t || t && A(e, t) ? S.merge([e], n) : n } function ye(e, t) { for (var n = 0, r = e.length; n < r; n++)Y.set(e[n], "globalEval", !t || Y.get(t[n], "globalEval")) } ge.tbody = ge.tfoot = ge.colgroup = ge.caption = ge.thead, ge.th = ge.td, y.option || (ge.optgroup = ge.option = [1, "<select multiple='multiple'>", "</select>"]); var me = /<|&#?\w+;/; function xe(e, t, n, r, i) { for (var o, a, s, u, l, c, f = t.createDocumentFragment(), p = [], d = 0, h = e.length; d < h; d++)if ((o = e[d]) || 0 === o) if ("object" === w(o)) S.merge(p, o.nodeType ? [o] : o); else if (me.test(o)) { a = a || f.appendChild(t.createElement("div")), s = (de.exec(o) || ["", ""])[1].toLowerCase(), u = ge[s] || ge._default, a.innerHTML = u[1] + S.htmlPrefilter(o) + u[2], c = u[0]; while (c--) a = a.lastChild; S.merge(p, a.childNodes), (a = f.firstChild).textContent = "" } else p.push(t.createTextNode(o)); f.textContent = "", d = 0; while (o = p[d++]) if (r && -1 < S.inArray(o, r)) i && i.push(o); else if (l = ie(o), a = ve(f.appendChild(o), "script"), l && ye(a), n) { c = 0; while (o = a[c++]) he.test(o.type || "") && n.push(o) } return f } var be = /^([^.]*)(?:\.(.+)|)/; function we() { return !0 } function Te() { return !1 } function Ce(e, t) { return e === function () { try { return E.activeElement } catch (e) { } }() == ("focus" === t) } function Ee(e, t, n, r, i, o) { var a, s; if ("object" == typeof t) { for (s in "string" != typeof n && (r = r || n, n = void 0), t) Ee(e, s, n, r, t[s], o); return e } if (null == r && null == i ? (i = n, r = n = void 0) : null == i && ("string" == typeof n ? (i = r, r = void 0) : (i = r, r = n, n = void 0)), !1 === i) i = Te; else if (!i) return e; return 1 === o && (a = i, (i = function (e) { return S().off(e), a.apply(this, arguments) }).guid = a.guid || (a.guid = S.guid++)), e.each(function () { S.event.add(this, t, i, r, n) }) } function Se(e, i, o) { o ? (Y.set(e, i, !1), S.event.add(e, i, { namespace: !1, handler: function (e) { var t, n, r = Y.get(this, i); if (1 & e.isTrigger && this[i]) { if (r.length) (S.event.special[i] || {}).delegateType && e.stopPropagation(); else if (r = s.call(arguments), Y.set(this, i, r), t = o(this, i), this[i](), r !== (n = Y.get(this, i)) || t ? Y.set(this, i, !1) : n = {}, r !== n) return e.stopImmediatePropagation(), e.preventDefault(), n && n.value } else r.length && (Y.set(this, i, { value: S.event.trigger(S.extend(r[0], S.Event.prototype), r.slice(1), this) }), e.stopImmediatePropagation()) } })) : void 0 === Y.get(e, i) && S.event.add(e, i, we) } S.event = { global: {}, add: function (t, e, n, r, i) { var o, a, s, u, l, c, f, p, d, h, g, v = Y.get(t); if (V(t)) { n.handler && (n = (o = n).handler, i = o.selector), i && S.find.matchesSelector(re, i), n.guid || (n.guid = S.guid++), (u = v.events) || (u = v.events = Object.create(null)), (a = v.handle) || (a = v.handle = function (e) { return "undefined" != typeof S && S.event.triggered !== e.type ? S.event.dispatch.apply(t, arguments) : void 0 }), l = (e = (e || "").match(P) || [""]).length; while (l--) d = g = (s = be.exec(e[l]) || [])[1], h = (s[2] || "").split(".").sort(), d && (f = S.event.special[d] || {}, d = (i ? f.delegateType : f.bindType) || d, f = S.event.special[d] || {}, c = S.extend({ type: d, origType: g, data: r, handler: n, guid: n.guid, selector: i, needsContext: i && S.expr.match.needsContext.test(i), namespace: h.join(".") }, o), (p = u[d]) || ((p = u[d] = []).delegateCount = 0, f.setup && !1 !== f.setup.call(t, r, h, a) || t.addEventListener && t.addEventListener(d, a)), f.add && (f.add.call(t, c), c.handler.guid || (c.handler.guid = n.guid)), i ? p.splice(p.delegateCount++, 0, c) : p.push(c), S.event.global[d] = !0) } }, remove: function (e, t, n, r, i) { var o, a, s, u, l, c, f, p, d, h, g, v = Y.hasData(e) && Y.get(e); if (v && (u = v.events)) { l = (t = (t || "").match(P) || [""]).length; while (l--) if (d = g = (s = be.exec(t[l]) || [])[1], h = (s[2] || "").split(".").sort(), d) { f = S.event.special[d] || {}, p = u[d = (r ? f.delegateType : f.bindType) || d] || [], s = s[2] && new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)"), a = o = p.length; while (o--) c = p[o], !i && g !== c.origType || n && n.guid !== c.guid || s && !s.test(c.namespace) || r && r !== c.selector && ("**" !== r || !c.selector) || (p.splice(o, 1), c.selector && p.delegateCount--, f.remove && f.remove.call(e, c)); a && !p.length && (f.teardown && !1 !== f.teardown.call(e, h, v.handle) || S.removeEvent(e, d, v.handle), delete u[d]) } else for (d in u) S.event.remove(e, d + t[l], n, r, !0); S.isEmptyObject(u) && Y.remove(e, "handle events") } }, dispatch: function (e) { var t, n, r, i, o, a, s = new Array(arguments.length), u = S.event.fix(e), l = (Y.get(this, "events") || Object.create(null))[u.type] || [], c = S.event.special[u.type] || {}; for (s[0] = u, t = 1; t < arguments.length; t++)s[t] = arguments[t]; if (u.delegateTarget = this, !c.preDispatch || !1 !== c.preDispatch.call(this, u)) { a = S.event.handlers.call(this, u, l), t = 0; while ((i = a[t++]) && !u.isPropagationStopped()) { u.currentTarget = i.elem, n = 0; while ((o = i.handlers[n++]) && !u.isImmediatePropagationStopped()) u.rnamespace && !1 !== o.namespace && !u.rnamespace.test(o.namespace) || (u.handleObj = o, u.data = o.data, void 0 !== (r = ((S.event.special[o.origType] || {}).handle || o.handler).apply(i.elem, s)) && !1 === (u.result = r) && (u.preventDefault(), u.stopPropagation())) } return c.postDispatch && c.postDispatch.call(this, u), u.result } }, handlers: function (e, t) { var n, r, i, o, a, s = [], u = t.delegateCount, l = e.target; if (u && l.nodeType && !("click" === e.type && 1 <= e.button)) for (; l !== this; l = l.parentNode || this)if (1 === l.nodeType && ("click" !== e.type || !0 !== l.disabled)) { for (o = [], a = {}, n = 0; n < u; n++)void 0 === a[i = (r = t[n]).selector + " "] && (a[i] = r.needsContext ? -1 < S(i, this).index(l) : S.find(i, this, null, [l]).length), a[i] && o.push(r); o.length && s.push({ elem: l, handlers: o }) } return l = this, u < t.length && s.push({ elem: l, handlers: t.slice(u) }), s }, addProp: function (t, e) { Object.defineProperty(S.Event.prototype, t, { enumerable: !0, configurable: !0, get: m(e) ? function () { if (this.originalEvent) return e(this.originalEvent) } : function () { if (this.originalEvent) return this.originalEvent[t] }, set: function (e) { Object.defineProperty(this, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) } }) }, fix: function (e) { return e[S.expando] ? e : new S.Event(e) }, special: { load: { noBubble: !0 }, click: { setup: function (e) { var t = this || e; return pe.test(t.type) && t.click && A(t, "input") && Se(t, "click", we), !1 }, trigger: function (e) { var t = this || e; return pe.test(t.type) && t.click && A(t, "input") && Se(t, "click"), !0 }, _default: function (e) { var t = e.target; return pe.test(t.type) && t.click && A(t, "input") && Y.get(t, "click") || A(t, "a") } }, beforeunload: { postDispatch: function (e) { void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result) } } } }, S.removeEvent = function (e, t, n) { e.removeEventListener && e.removeEventListener(t, n) }, S.Event = function (e, t) { if (!(this instanceof S.Event)) return new S.Event(e, t); e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && !1 === e.returnValue ? we : Te, this.target = e.target && 3 === e.target.nodeType ? e.target.parentNode : e.target, this.currentTarget = e.currentTarget, this.relatedTarget = e.relatedTarget) : this.type = e, t && S.extend(this, t), this.timeStamp = e && e.timeStamp || Date.now(), this[S.expando] = !0 }, S.Event.prototype = { constructor: S.Event, isDefaultPrevented: Te, isPropagationStopped: Te, isImmediatePropagationStopped: Te, isSimulated: !1, preventDefault: function () { var e = this.originalEvent; this.isDefaultPrevented = we, e && !this.isSimulated && e.preventDefault() }, stopPropagation: function () { var e = this.originalEvent; this.isPropagationStopped = we, e && !this.isSimulated && e.stopPropagation() }, stopImmediatePropagation: function () { var e = this.originalEvent; this.isImmediatePropagationStopped = we, e && !this.isSimulated && e.stopImmediatePropagation(), this.stopPropagation() } }, S.each({ altKey: !0, bubbles: !0, cancelable: !0, changedTouches: !0, ctrlKey: !0, detail: !0, eventPhase: !0, metaKey: !0, pageX: !0, pageY: !0, shiftKey: !0, view: !0, "char": !0, code: !0, charCode: !0, key: !0, keyCode: !0, button: !0, buttons: !0, clientX: !0, clientY: !0, offsetX: !0, offsetY: !0, pointerId: !0, pointerType: !0, screenX: !0, screenY: !0, targetTouches: !0, toElement: !0, touches: !0, which: !0 }, S.event.addProp), S.each({ focus: "focusin", blur: "focusout" }, function (e, t) { S.event.special[e] = { setup: function () { return Se(this, e, Ce), !1 }, trigger: function () { return Se(this, e), !0 }, _default: function () { return !0 }, delegateType: t } }), S.each({ mouseenter: "mouseover", mouseleave: "mouseout", pointerenter: "pointerover", pointerleave: "pointerout" }, function (e, i) { S.event.special[e] = { delegateType: i, bindType: i, handle: function (e) { var t, n = e.relatedTarget, r = e.handleObj; return n && (n === this || S.contains(this, n)) || (e.type = r.origType, t = r.handler.apply(this, arguments), e.type = i), t } } }), S.fn.extend({ on: function (e, t, n, r) { return Ee(this, e, t, n, r) }, one: function (e, t, n, r) { return Ee(this, e, t, n, r, 1) }, off: function (e, t, n) { var r, i; if (e && e.preventDefault && e.handleObj) return r = e.handleObj, S(e.delegateTarget).off(r.namespace ? r.origType + "." + r.namespace : r.origType, r.selector, r.handler), this; if ("object" == typeof e) { for (i in e) this.off(i, t, e[i]); return this } return !1 !== t && "function" != typeof t || (n = t, t = void 0), !1 === n && (n = Te), this.each(function () { S.event.remove(this, e, n, t) }) } }); var ke = /<script|<style|<link/i, Ae = /checked\s*(?:[^=]|=\s*.checked.)/i, Ne = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g; function je(e, t) { return A(e, "table") && A(11 !== t.nodeType ? t : t.firstChild, "tr") && S(e).children("tbody")[0] || e } function De(e) { return e.type = (null !== e.getAttribute("type")) + "/" + e.type, e } function qe(e) { return "true/" === (e.type || "").slice(0, 5) ? e.type = e.type.slice(5) : e.removeAttribute("type"), e } function Le(e, t) { var n, r, i, o, a, s; if (1 === t.nodeType) { if (Y.hasData(e) && (s = Y.get(e).events)) for (i in Y.remove(t, "handle events"), s) for (n = 0, r = s[i].length; n < r; n++)S.event.add(t, i, s[i][n]); Q.hasData(e) && (o = Q.access(e), a = S.extend({}, o), Q.set(t, a)) } } function He(n, r, i, o) { r = g(r); var e, t, a, s, u, l, c = 0, f = n.length, p = f - 1, d = r[0], h = m(d); if (h || 1 < f && "string" == typeof d && !y.checkClone && Ae.test(d)) return n.each(function (e) { var t = n.eq(e); h && (r[0] = d.call(this, e, t.html())), He(t, r, i, o) }); if (f && (t = (e = xe(r, n[0].ownerDocument, !1, n, o)).firstChild, 1 === e.childNodes.length && (e = t), t || o)) { for (s = (a = S.map(ve(e, "script"), De)).length; c < f; c++)u = e, c !== p && (u = S.clone(u, !0, !0), s && S.merge(a, ve(u, "script"))), i.call(n[c], u, c); if (s) for (l = a[a.length - 1].ownerDocument, S.map(a, qe), c = 0; c < s; c++)u = a[c], he.test(u.type || "") && !Y.access(u, "globalEval") && S.contains(l, u) && (u.src && "module" !== (u.type || "").toLowerCase() ? S._evalUrl && !u.noModule && S._evalUrl(u.src, { nonce: u.nonce || u.getAttribute("nonce") }, l) : b(u.textContent.replace(Ne, ""), u, l)) } return n } function Oe(e, t, n) { for (var r, i = t ? S.filter(t, e) : e, o = 0; null != (r = i[o]); o++)n || 1 !== r.nodeType || S.cleanData(ve(r)), r.parentNode && (n && ie(r) && ye(ve(r, "script")), r.parentNode.removeChild(r)); return e } S.extend({ htmlPrefilter: function (e) { return e }, clone: function (e, t, n) { var r, i, o, a, s, u, l, c = e.cloneNode(!0), f = ie(e); if (!(y.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || S.isXMLDoc(e))) for (a = ve(c), r = 0, i = (o = ve(e)).length; r < i; r++)s = o[r], u = a[r], void 0, "input" === (l = u.nodeName.toLowerCase()) && pe.test(s.type) ? u.checked = s.checked : "input" !== l && "textarea" !== l || (u.defaultValue = s.defaultValue); if (t) if (n) for (o = o || ve(e), a = a || ve(c), r = 0, i = o.length; r < i; r++)Le(o[r], a[r]); else Le(e, c); return 0 < (a = ve(c, "script")).length && ye(a, !f && ve(e, "script")), c }, cleanData: function (e) { for (var t, n, r, i = S.event.special, o = 0; void 0 !== (n = e[o]); o++)if (V(n)) { if (t = n[Y.expando]) { if (t.events) for (r in t.events) i[r] ? S.event.remove(n, r) : S.removeEvent(n, r, t.handle); n[Y.expando] = void 0 } n[Q.expando] && (n[Q.expando] = void 0) } } }), S.fn.extend({ detach: function (e) { return Oe(this, e, !0) }, remove: function (e) { return Oe(this, e) }, text: function (e) { return $(this, function (e) { return void 0 === e ? S.text(this) : this.empty().each(function () { 1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = e) }) }, null, e, arguments.length) }, append: function () { return He(this, arguments, function (e) { 1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || je(this, e).appendChild(e) }) }, prepend: function () { return He(this, arguments, function (e) { if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) { var t = je(this, e); t.insertBefore(e, t.firstChild) } }) }, before: function () { return He(this, arguments, function (e) { this.parentNode && this.parentNode.insertBefore(e, this) }) }, after: function () { return He(this, arguments, function (e) { this.parentNode && this.parentNode.insertBefore(e, this.nextSibling) }) }, empty: function () { for (var e, t = 0; null != (e = this[t]); t++)1 === e.nodeType && (S.cleanData(ve(e, !1)), e.textContent = ""); return this }, clone: function (e, t) { return e = null != e && e, t = null == t ? e : t, this.map(function () { return S.clone(this, e, t) }) }, html: function (e) { return $(this, function (e) { var t = this[0] || {}, n = 0, r = this.length; if (void 0 === e && 1 === t.nodeType) return t.innerHTML; if ("string" == typeof e && !ke.test(e) && !ge[(de.exec(e) || ["", ""])[1].toLowerCase()]) { e = S.htmlPrefilter(e); try { for (; n < r; n++)1 === (t = this[n] || {}).nodeType && (S.cleanData(ve(t, !1)), t.innerHTML = e); t = 0 } catch (e) { } } t && this.empty().append(e) }, null, e, arguments.length) }, replaceWith: function () { var n = []; return He(this, arguments, function (e) { var t = this.parentNode; S.inArray(this, n) < 0 && (S.cleanData(ve(this)), t && t.replaceChild(e, this)) }, n) } }), S.each({ appendTo: "append", prependTo: "prepend", insertBefore: "before", insertAfter: "after", replaceAll: "replaceWith" }, function (e, a) { S.fn[e] = function (e) { for (var t, n = [], r = S(e), i = r.length - 1, o = 0; o <= i; o++)t = o === i ? this : this.clone(!0), S(r[o])[a](t), u.apply(n, t.get()); return this.pushStack(n) } }); var Pe = new RegExp("^(" + ee + ")(?!px)[a-z%]+$", "i"), Re = function (e) { var t = e.ownerDocument.defaultView; return t && t.opener || (t = C), t.getComputedStyle(e) }, Me = function (e, t, n) { var r, i, o = {}; for (i in t) o[i] = e.style[i], e.style[i] = t[i]; for (i in r = n.call(e), t) e.style[i] = o[i]; return r }, Ie = new RegExp(ne.join("|"), "i"); function We(e, t, n) { var r, i, o, a, s = e.style; return (n = n || Re(e)) && ("" !== (a = n.getPropertyValue(t) || n[t]) || ie(e) || (a = S.style(e, t)), !y.pixelBoxStyles() && Pe.test(a) && Ie.test(t) && (r = s.width, i = s.minWidth, o = s.maxWidth, s.minWidth = s.maxWidth = s.width = a, a = n.width, s.width = r, s.minWidth = i, s.maxWidth = o)), void 0 !== a ? a + "" : a } function Fe(e, t) { return { get: function () { if (!e()) return (this.get = t).apply(this, arguments); delete this.get } } } !function () { function e() { if (l) { u.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0", l.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%", re.appendChild(u).appendChild(l); var e = C.getComputedStyle(l); n = "1%" !== e.top, s = 12 === t(e.marginLeft), l.style.right = "60%", o = 36 === t(e.right), r = 36 === t(e.width), l.style.position = "absolute", i = 12 === t(l.offsetWidth / 3), re.removeChild(u), l = null } } function t(e) { return Math.round(parseFloat(e)) } var n, r, i, o, a, s, u = E.createElement("div"), l = E.createElement("div"); l.style && (l.style.backgroundClip = "content-box", l.cloneNode(!0).style.backgroundClip = "", y.clearCloneStyle = "content-box" === l.style.backgroundClip, S.extend(y, { boxSizingReliable: function () { return e(), r }, pixelBoxStyles: function () { return e(), o }, pixelPosition: function () { return e(), n }, reliableMarginLeft: function () { return e(), s }, scrollboxSize: function () { return e(), i }, reliableTrDimensions: function () { var e, t, n, r; return null == a && (e = E.createElement("table"), t = E.createElement("tr"), n = E.createElement("div"), e.style.cssText = "position:absolute;left:-11111px;border-collapse:separate", t.style.cssText = "border:1px solid", t.style.height = "1px", n.style.height = "9px", n.style.display = "block", re.appendChild(e).appendChild(t).appendChild(n), r = C.getComputedStyle(t), a = parseInt(r.height, 10) + parseInt(r.borderTopWidth, 10) + parseInt(r.borderBottomWidth, 10) === t.offsetHeight, re.removeChild(e)), a } })) }(); var Be = ["Webkit", "Moz", "ms"], $e = E.createElement("div").style, _e = {}; function ze(e) { var t = S.cssProps[e] || _e[e]; return t || (e in $e ? e : _e[e] = function (e) { var t = e[0].toUpperCase() + e.slice(1), n = Be.length; while (n--) if ((e = Be[n] + t) in $e) return e }(e) || e) } var Ue = /^(none|table(?!-c[ea]).+)/, Xe = /^--/, Ve = { position: "absolute", visibility: "hidden", display: "block" }, Ge = { letterSpacing: "0", fontWeight: "400" }; function Ye(e, t, n) { var r = te.exec(t); return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : t } function Qe(e, t, n, r, i, o) { var a = "width" === t ? 1 : 0, s = 0, u = 0; if (n === (r ? "border" : "content")) return 0; for (; a < 4; a += 2)"margin" === n && (u += S.css(e, n + ne[a], !0, i)), r ? ("content" === n && (u -= S.css(e, "padding" + ne[a], !0, i)), "margin" !== n && (u -= S.css(e, "border" + ne[a] + "Width", !0, i))) : (u += S.css(e, "padding" + ne[a], !0, i), "padding" !== n ? u += S.css(e, "border" + ne[a] + "Width", !0, i) : s += S.css(e, "border" + ne[a] + "Width", !0, i)); return !r && 0 <= o && (u += Math.max(0, Math.ceil(e["offset" + t[0].toUpperCase() + t.slice(1)] - o - u - s - .5)) || 0), u } function Je(e, t, n) { var r = Re(e), i = (!y.boxSizingReliable() || n) && "border-box" === S.css(e, "boxSizing", !1, r), o = i, a = We(e, t, r), s = "offset" + t[0].toUpperCase() + t.slice(1); if (Pe.test(a)) { if (!n) return a; a = "auto" } return (!y.boxSizingReliable() && i || !y.reliableTrDimensions() && A(e, "tr") || "auto" === a || !parseFloat(a) && "inline" === S.css(e, "display", !1, r)) && e.getClientRects().length && (i = "border-box" === S.css(e, "boxSizing", !1, r), (o = s in e) && (a = e[s])), (a = parseFloat(a) || 0) + Qe(e, t, n || (i ? "border" : "content"), o, r, a) + "px" } function Ke(e, t, n, r, i) { return new Ke.prototype.init(e, t, n, r, i) } S.extend({ cssHooks: { opacity: { get: function (e, t) { if (t) { var n = We(e, "opacity"); return "" === n ? "1" : n } } } }, cssNumber: { animationIterationCount: !0, columnCount: !0, fillOpacity: !0, flexGrow: !0, flexShrink: !0, fontWeight: !0, gridArea: !0, gridColumn: !0, gridColumnEnd: !0, gridColumnStart: !0, gridRow: !0, gridRowEnd: !0, gridRowStart: !0, lineHeight: !0, opacity: !0, order: !0, orphans: !0, widows: !0, zIndex: !0, zoom: !0 }, cssProps: {}, style: function (e, t, n, r) { if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) { var i, o, a, s = X(t), u = Xe.test(t), l = e.style; if (u || (t = ze(s)), a = S.cssHooks[t] || S.cssHooks[s], void 0 === n) return a && "get" in a && void 0 !== (i = a.get(e, !1, r)) ? i : l[t]; "string" === (o = typeof n) && (i = te.exec(n)) && i[1] && (n = se(e, t, i), o = "number"), null != n && n == n && ("number" !== o || u || (n += i && i[3] || (S.cssNumber[s] ? "" : "px")), y.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (l[t] = "inherit"), a && "set" in a && void 0 === (n = a.set(e, n, r)) || (u ? l.setProperty(t, n) : l[t] = n)) } }, css: function (e, t, n, r) { var i, o, a, s = X(t); return Xe.test(t) || (t = ze(s)), (a = S.cssHooks[t] || S.cssHooks[s]) && "get" in a && (i = a.get(e, !0, n)), void 0 === i && (i = We(e, t, r)), "normal" === i && t in Ge && (i = Ge[t]), "" === n || n ? (o = parseFloat(i), !0 === n || isFinite(o) ? o || 0 : i) : i } }), S.each(["height", "width"], function (e, u) { S.cssHooks[u] = { get: function (e, t, n) { if (t) return !Ue.test(S.css(e, "display")) || e.getClientRects().length && e.getBoundingClientRect().width ? Je(e, u, n) : Me(e, Ve, function () { return Je(e, u, n) }) }, set: function (e, t, n) { var r, i = Re(e), o = !y.scrollboxSize() && "absolute" === i.position, a = (o || n) && "border-box" === S.css(e, "boxSizing", !1, i), s = n ? Qe(e, u, n, a, i) : 0; return a && o && (s -= Math.ceil(e["offset" + u[0].toUpperCase() + u.slice(1)] - parseFloat(i[u]) - Qe(e, u, "border", !1, i) - .5)), s && (r = te.exec(t)) && "px" !== (r[3] || "px") && (e.style[u] = t, t = S.css(e, u)), Ye(0, t, s) } } }), S.cssHooks.marginLeft = Fe(y.reliableMarginLeft, function (e, t) { if (t) return (parseFloat(We(e, "marginLeft")) || e.getBoundingClientRect().left - Me(e, { marginLeft: 0 }, function () { return e.getBoundingClientRect().left })) + "px" }), S.each({ margin: "", padding: "", border: "Width" }, function (i, o) { S.cssHooks[i + o] = { expand: function (e) { for (var t = 0, n = {}, r = "string" == typeof e ? e.split(" ") : [e]; t < 4; t++)n[i + ne[t] + o] = r[t] || r[t - 2] || r[0]; return n } }, "margin" !== i && (S.cssHooks[i + o].set = Ye) }), S.fn.extend({ css: function (e, t) { return $(this, function (e, t, n) { var r, i, o = {}, a = 0; if (Array.isArray(t)) { for (r = Re(e), i = t.length; a < i; a++)o[t[a]] = S.css(e, t[a], !1, r); return o } return void 0 !== n ? S.style(e, t, n) : S.css(e, t) }, e, t, 1 < arguments.length) } }), ((S.Tween = Ke).prototype = { constructor: Ke, init: function (e, t, n, r, i, o) { this.elem = e, this.prop = n, this.easing = i || S.easing._default, this.options = t, this.start = this.now = this.cur(), this.end = r, this.unit = o || (S.cssNumber[n] ? "" : "px") }, cur: function () { var e = Ke.propHooks[this.prop]; return e && e.get ? e.get(this) : Ke.propHooks._default.get(this) }, run: function (e) { var t, n = Ke.propHooks[this.prop]; return this.options.duration ? this.pos = t = S.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : this.pos = t = e, this.now = (this.end - this.start) * t + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), n && n.set ? n.set(this) : Ke.propHooks._default.set(this), this } }).init.prototype = Ke.prototype, (Ke.propHooks = { _default: { get: function (e) { var t; return 1 !== e.elem.nodeType || null != e.elem[e.prop] && null == e.elem.style[e.prop] ? e.elem[e.prop] : (t = S.css(e.elem, e.prop, "")) && "auto" !== t ? t : 0 }, set: function (e) { S.fx.step[e.prop] ? S.fx.step[e.prop](e) : 1 !== e.elem.nodeType || !S.cssHooks[e.prop] && null == e.elem.style[ze(e.prop)] ? e.elem[e.prop] = e.now : S.style(e.elem, e.prop, e.now + e.unit) } } }).scrollTop = Ke.propHooks.scrollLeft = { set: function (e) { e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now) } }, S.easing = { linear: function (e) { return e }, swing: function (e) { return .5 - Math.cos(e * Math.PI) / 2 }, _default: "swing" }, S.fx = Ke.prototype.init, S.fx.step = {}; var Ze, et, tt, nt, rt = /^(?:toggle|show|hide)$/, it = /queueHooks$/; function ot() { et && (!1 === E.hidden && C.requestAnimationFrame ? C.requestAnimationFrame(ot) : C.setTimeout(ot, S.fx.interval), S.fx.tick()) } function at() { return C.setTimeout(function () { Ze = void 0 }), Ze = Date.now() } function st(e, t) { var n, r = 0, i = { height: e }; for (t = t ? 1 : 0; r < 4; r += 2 - t)i["margin" + (n = ne[r])] = i["padding" + n] = e; return t && (i.opacity = i.width = e), i } function ut(e, t, n) { for (var r, i = (lt.tweeners[t] || []).concat(lt.tweeners["*"]), o = 0, a = i.length; o < a; o++)if (r = i[o].call(n, t, e)) return r } function lt(o, e, t) { var n, a, r = 0, i = lt.prefilters.length, s = S.Deferred().always(function () { delete u.elem }), u = function () { if (a) return !1; for (var e = Ze || at(), t = Math.max(0, l.startTime + l.duration - e), n = 1 - (t / l.duration || 0), r = 0, i = l.tweens.length; r < i; r++)l.tweens[r].run(n); return s.notifyWith(o, [l, n, t]), n < 1 && i ? t : (i || s.notifyWith(o, [l, 1, 0]), s.resolveWith(o, [l]), !1) }, l = s.promise({ elem: o, props: S.extend({}, e), opts: S.extend(!0, { specialEasing: {}, easing: S.easing._default }, t), originalProperties: e, originalOptions: t, startTime: Ze || at(), duration: t.duration, tweens: [], createTween: function (e, t) { var n = S.Tween(o, l.opts, e, t, l.opts.specialEasing[e] || l.opts.easing); return l.tweens.push(n), n }, stop: function (e) { var t = 0, n = e ? l.tweens.length : 0; if (a) return this; for (a = !0; t < n; t++)l.tweens[t].run(1); return e ? (s.notifyWith(o, [l, 1, 0]), s.resolveWith(o, [l, e])) : s.rejectWith(o, [l, e]), this } }), c = l.props; for (!function (e, t) { var n, r, i, o, a; for (n in e) if (i = t[r = X(n)], o = e[n], Array.isArray(o) && (i = o[1], o = e[n] = o[0]), n !== r && (e[r] = o, delete e[n]), (a = S.cssHooks[r]) && "expand" in a) for (n in o = a.expand(o), delete e[r], o) n in e || (e[n] = o[n], t[n] = i); else t[r] = i }(c, l.opts.specialEasing); r < i; r++)if (n = lt.prefilters[r].call(l, o, c, l.opts)) return m(n.stop) && (S._queueHooks(l.elem, l.opts.queue).stop = n.stop.bind(n)), n; return S.map(c, ut, l), m(l.opts.start) && l.opts.start.call(o, l), l.progress(l.opts.progress).done(l.opts.done, l.opts.complete).fail(l.opts.fail).always(l.opts.always), S.fx.timer(S.extend(u, { elem: o, anim: l, queue: l.opts.queue })), l } S.Animation = S.extend(lt, { tweeners: { "*": [function (e, t) { var n = this.createTween(e, t); return se(n.elem, e, te.exec(t), n), n }] }, tweener: function (e, t) { m(e) ? (t = e, e = ["*"]) : e = e.match(P); for (var n, r = 0, i = e.length; r < i; r++)n = e[r], lt.tweeners[n] = lt.tweeners[n] || [], lt.tweeners[n].unshift(t) }, prefilters: [function (e, t, n) { var r, i, o, a, s, u, l, c, f = "width" in t || "height" in t, p = this, d = {}, h = e.style, g = e.nodeType && ae(e), v = Y.get(e, "fxshow"); for (r in n.queue || (null == (a = S._queueHooks(e, "fx")).unqueued && (a.unqueued = 0, s = a.empty.fire, a.empty.fire = function () { a.unqueued || s() }), a.unqueued++, p.always(function () { p.always(function () { a.unqueued--, S.queue(e, "fx").length || a.empty.fire() }) })), t) if (i = t[r], rt.test(i)) { if (delete t[r], o = o || "toggle" === i, i === (g ? "hide" : "show")) { if ("show" !== i || !v || void 0 === v[r]) continue; g = !0 } d[r] = v && v[r] || S.style(e, r) } if ((u = !S.isEmptyObject(t)) || !S.isEmptyObject(d)) for (r in f && 1 === e.nodeType && (n.overflow = [h.overflow, h.overflowX, h.overflowY], null == (l = v && v.display) && (l = Y.get(e, "display")), "none" === (c = S.css(e, "display")) && (l ? c = l : (le([e], !0), l = e.style.display || l, c = S.css(e, "display"), le([e]))), ("inline" === c || "inline-block" === c && null != l) && "none" === S.css(e, "float") && (u || (p.done(function () { h.display = l }), null == l && (c = h.display, l = "none" === c ? "" : c)), h.display = "inline-block")), n.overflow && (h.overflow = "hidden", p.always(function () { h.overflow = n.overflow[0], h.overflowX = n.overflow[1], h.overflowY = n.overflow[2] })), u = !1, d) u || (v ? "hidden" in v && (g = v.hidden) : v = Y.access(e, "fxshow", { display: l }), o && (v.hidden = !g), g && le([e], !0), p.done(function () { for (r in g || le([e]), Y.remove(e, "fxshow"), d) S.style(e, r, d[r]) })), u = ut(g ? v[r] : 0, r, p), r in v || (v[r] = u.start, g && (u.end = u.start, u.start = 0)) }], prefilter: function (e, t) { t ? lt.prefilters.unshift(e) : lt.prefilters.push(e) } }), S.speed = function (e, t, n) { var r = e && "object" == typeof e ? S.extend({}, e) : { complete: n || !n && t || m(e) && e, duration: e, easing: n && t || t && !m(t) && t }; return S.fx.off ? r.duration = 0 : "number" != typeof r.duration && (r.duration in S.fx.speeds ? r.duration = S.fx.speeds[r.duration] : r.duration = S.fx.speeds._default), null != r.queue && !0 !== r.queue || (r.queue = "fx"), r.old = r.complete, r.complete = function () { m(r.old) && r.old.call(this), r.queue && S.dequeue(this, r.queue) }, r }, S.fn.extend({ fadeTo: function (e, t, n, r) { return this.filter(ae).css("opacity", 0).show().end().animate({ opacity: t }, e, n, r) }, animate: function (t, e, n, r) { var i = S.isEmptyObject(t), o = S.speed(e, n, r), a = function () { var e = lt(this, S.extend({}, t), o); (i || Y.get(this, "finish")) && e.stop(!0) }; return a.finish = a, i || !1 === o.queue ? this.each(a) : this.queue(o.queue, a) }, stop: function (i, e, o) { var a = function (e) { var t = e.stop; delete e.stop, t(o) }; return "string" != typeof i && (o = e, e = i, i = void 0), e && this.queue(i || "fx", []), this.each(function () { var e = !0, t = null != i && i + "queueHooks", n = S.timers, r = Y.get(this); if (t) r[t] && r[t].stop && a(r[t]); else for (t in r) r[t] && r[t].stop && it.test(t) && a(r[t]); for (t = n.length; t--;)n[t].elem !== this || null != i && n[t].queue !== i || (n[t].anim.stop(o), e = !1, n.splice(t, 1)); !e && o || S.dequeue(this, i) }) }, finish: function (a) { return !1 !== a && (a = a || "fx"), this.each(function () { var e, t = Y.get(this), n = t[a + "queue"], r = t[a + "queueHooks"], i = S.timers, o = n ? n.length : 0; for (t.finish = !0, S.queue(this, a, []), r && r.stop && r.stop.call(this, !0), e = i.length; e--;)i[e].elem === this && i[e].queue === a && (i[e].anim.stop(!0), i.splice(e, 1)); for (e = 0; e < o; e++)n[e] && n[e].finish && n[e].finish.call(this); delete t.finish }) } }), S.each(["toggle", "show", "hide"], function (e, r) { var i = S.fn[r]; S.fn[r] = function (e, t, n) { return null == e || "boolean" == typeof e ? i.apply(this, arguments) : this.animate(st(r, !0), e, t, n) } }), S.each({ slideDown: st("show"), slideUp: st("hide"), slideToggle: st("toggle"), fadeIn: { opacity: "show" }, fadeOut: { opacity: "hide" }, fadeToggle: { opacity: "toggle" } }, function (e, r) { S.fn[e] = function (e, t, n) { return this.animate(r, e, t, n) } }), S.timers = [], S.fx.tick = function () { var e, t = 0, n = S.timers; for (Ze = Date.now(); t < n.length; t++)(e = n[t])() || n[t] !== e || n.splice(t--, 1); n.length || S.fx.stop(), Ze = void 0 }, S.fx.timer = function (e) { S.timers.push(e), S.fx.start() }, S.fx.interval = 13, S.fx.start = function () { et || (et = !0, ot()) }, S.fx.stop = function () { et = null }, S.fx.speeds = { slow: 600, fast: 200, _default: 400 }, S.fn.delay = function (r, e) { return r = S.fx && S.fx.speeds[r] || r, e = e || "fx", this.queue(e, function (e, t) { var n = C.setTimeout(e, r); t.stop = function () { C.clearTimeout(n) } }) }, tt = E.createElement("input"), nt = E.createElement("select").appendChild(E.createElement("option")), tt.type = "checkbox", y.checkOn = "" !== tt.value, y.optSelected = nt.selected, (tt = E.createElement("input")).value = "t", tt.type = "radio", y.radioValue = "t" === tt.value; var ct, ft = S.expr.attrHandle; S.fn.extend({ attr: function (e, t) { return $(this, S.attr, e, t, 1 < arguments.length) }, removeAttr: function (e) { return this.each(function () { S.removeAttr(this, e) }) } }), S.extend({ attr: function (e, t, n) { var r, i, o = e.nodeType; if (3 !== o && 8 !== o && 2 !== o) return "undefined" == typeof e.getAttribute ? S.prop(e, t, n) : (1 === o && S.isXMLDoc(e) || (i = S.attrHooks[t.toLowerCase()] || (S.expr.match.bool.test(t) ? ct : void 0)), void 0 !== n ? null === n ? void S.removeAttr(e, t) : i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r : (e.setAttribute(t, n + ""), n) : i && "get" in i && null !== (r = i.get(e, t)) ? r : null == (r = S.find.attr(e, t)) ? void 0 : r) }, attrHooks: { type: { set: function (e, t) { if (!y.radioValue && "radio" === t && A(e, "input")) { var n = e.value; return e.setAttribute("type", t), n && (e.value = n), t } } } }, removeAttr: function (e, t) { var n, r = 0, i = t && t.match(P); if (i && 1 === e.nodeType) while (n = i[r++]) e.removeAttribute(n) } }), ct = { set: function (e, t, n) { return !1 === t ? S.removeAttr(e, n) : e.setAttribute(n, n), n } }, S.each(S.expr.match.bool.source.match(/\w+/g), function (e, t) { var a = ft[t] || S.find.attr; ft[t] = function (e, t, n) { var r, i, o = t.toLowerCase(); return n || (i = ft[o], ft[o] = r, r = null != a(e, t, n) ? o : null, ft[o] = i), r } }); var pt = /^(?:input|select|textarea|button)$/i, dt = /^(?:a|area)$/i; function ht(e) { return (e.match(P) || []).join(" ") } function gt(e) { return e.getAttribute && e.getAttribute("class") || "" } function vt(e) { return Array.isArray(e) ? e : "string" == typeof e && e.match(P) || [] } S.fn.extend({ prop: function (e, t) { return $(this, S.prop, e, t, 1 < arguments.length) }, removeProp: function (e) { return this.each(function () { delete this[S.propFix[e] || e] }) } }), S.extend({ prop: function (e, t, n) { var r, i, o = e.nodeType; if (3 !== o && 8 !== o && 2 !== o) return 1 === o && S.isXMLDoc(e) || (t = S.propFix[t] || t, i = S.propHooks[t]), void 0 !== n ? i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r : e[t] = n : i && "get" in i && null !== (r = i.get(e, t)) ? r : e[t] }, propHooks: { tabIndex: { get: function (e) { var t = S.find.attr(e, "tabindex"); return t ? parseInt(t, 10) : pt.test(e.nodeName) || dt.test(e.nodeName) && e.href ? 0 : -1 } } }, propFix: { "for": "htmlFor", "class": "className" } }), y.optSelected || (S.propHooks.selected = { get: function (e) { var t = e.parentNode; return t && t.parentNode && t.parentNode.selectedIndex, null }, set: function (e) { var t = e.parentNode; t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex) } }), S.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function () { S.propFix[this.toLowerCase()] = this }), S.fn.extend({ addClass: function (t) { var e, n, r, i, o, a, s, u = 0; if (m(t)) return this.each(function (e) { S(this).addClass(t.call(this, e, gt(this))) }); if ((e = vt(t)).length) while (n = this[u++]) if (i = gt(n), r = 1 === n.nodeType && " " + ht(i) + " ") { a = 0; while (o = e[a++]) r.indexOf(" " + o + " ") < 0 && (r += o + " "); i !== (s = ht(r)) && n.setAttribute("class", s) } return this }, removeClass: function (t) { var e, n, r, i, o, a, s, u = 0; if (m(t)) return this.each(function (e) { S(this).removeClass(t.call(this, e, gt(this))) }); if (!arguments.length) return this.attr("class", ""); if ((e = vt(t)).length) while (n = this[u++]) if (i = gt(n), r = 1 === n.nodeType && " " + ht(i) + " ") { a = 0; while (o = e[a++]) while (-1 < r.indexOf(" " + o + " ")) r = r.replace(" " + o + " ", " "); i !== (s = ht(r)) && n.setAttribute("class", s) } return this }, toggleClass: function (i, t) { var o = typeof i, a = "string" === o || Array.isArray(i); return "boolean" == typeof t && a ? t ? this.addClass(i) : this.removeClass(i) : m(i) ? this.each(function (e) { S(this).toggleClass(i.call(this, e, gt(this), t), t) }) : this.each(function () { var e, t, n, r; if (a) { t = 0, n = S(this), r = vt(i); while (e = r[t++]) n.hasClass(e) ? n.removeClass(e) : n.addClass(e) } else void 0 !== i && "boolean" !== o || ((e = gt(this)) && Y.set(this, "__className__", e), this.setAttribute && this.setAttribute("class", e || !1 === i ? "" : Y.get(this, "__className__") || "")) }) }, hasClass: function (e) { var t, n, r = 0; t = " " + e + " "; while (n = this[r++]) if (1 === n.nodeType && -1 < (" " + ht(gt(n)) + " ").indexOf(t)) return !0; return !1 } }); var yt = /\r/g; S.fn.extend({ val: function (n) { var r, e, i, t = this[0]; return arguments.length ? (i = m(n), this.each(function (e) { var t; 1 === this.nodeType && (null == (t = i ? n.call(this, e, S(this).val()) : n) ? t = "" : "number" == typeof t ? t += "" : Array.isArray(t) && (t = S.map(t, function (e) { return null == e ? "" : e + "" })), (r = S.valHooks[this.type] || S.valHooks[this.nodeName.toLowerCase()]) && "set" in r && void 0 !== r.set(this, t, "value") || (this.value = t)) })) : t ? (r = S.valHooks[t.type] || S.valHooks[t.nodeName.toLowerCase()]) && "get" in r && void 0 !== (e = r.get(t, "value")) ? e : "string" == typeof (e = t.value) ? e.replace(yt, "") : null == e ? "" : e : void 0 } }), S.extend({ valHooks: { option: { get: function (e) { var t = S.find.attr(e, "value"); return null != t ? t : ht(S.text(e)) } }, select: { get: function (e) { var t, n, r, i = e.options, o = e.selectedIndex, a = "select-one" === e.type, s = a ? null : [], u = a ? o + 1 : i.length; for (r = o < 0 ? u : a ? o : 0; r < u; r++)if (((n = i[r]).selected || r === o) && !n.disabled && (!n.parentNode.disabled || !A(n.parentNode, "optgroup"))) { if (t = S(n).val(), a) return t; s.push(t) } return s }, set: function (e, t) { var n, r, i = e.options, o = S.makeArray(t), a = i.length; while (a--) ((r = i[a]).selected = -1 < S.inArray(S.valHooks.option.get(r), o)) && (n = !0); return n || (e.selectedIndex = -1), o } } } }), S.each(["radio", "checkbox"], function () { S.valHooks[this] = { set: function (e, t) { if (Array.isArray(t)) return e.checked = -1 < S.inArray(S(e).val(), t) } }, y.checkOn || (S.valHooks[this].get = function (e) { return null === e.getAttribute("value") ? "on" : e.value }) }), y.focusin = "onfocusin" in C; var mt = /^(?:focusinfocus|focusoutblur)$/, xt = function (e) { e.stopPropagation() }; S.extend(S.event, { trigger: function (e, t, n, r) { var i, o, a, s, u, l, c, f, p = [n || E], d = v.call(e, "type") ? e.type : e, h = v.call(e, "namespace") ? e.namespace.split(".") : []; if (o = f = a = n = n || E, 3 !== n.nodeType && 8 !== n.nodeType && !mt.test(d + S.event.triggered) && (-1 < d.indexOf(".") && (d = (h = d.split(".")).shift(), h.sort()), u = d.indexOf(":") < 0 && "on" + d, (e = e[S.expando] ? e : new S.Event(d, "object" == typeof e && e)).isTrigger = r ? 2 : 3, e.namespace = h.join("."), e.rnamespace = e.namespace ? new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, e.result = void 0, e.target || (e.target = n), t = null == t ? [e] : S.makeArray(t, [e]), c = S.event.special[d] || {}, r || !c.trigger || !1 !== c.trigger.apply(n, t))) { if (!r && !c.noBubble && !x(n)) { for (s = c.delegateType || d, mt.test(s + d) || (o = o.parentNode); o; o = o.parentNode)p.push(o), a = o; a === (n.ownerDocument || E) && p.push(a.defaultView || a.parentWindow || C) } i = 0; while ((o = p[i++]) && !e.isPropagationStopped()) f = o, e.type = 1 < i ? s : c.bindType || d, (l = (Y.get(o, "events") || Object.create(null))[e.type] && Y.get(o, "handle")) && l.apply(o, t), (l = u && o[u]) && l.apply && V(o) && (e.result = l.apply(o, t), !1 === e.result && e.preventDefault()); return e.type = d, r || e.isDefaultPrevented() || c._default && !1 !== c._default.apply(p.pop(), t) || !V(n) || u && m(n[d]) && !x(n) && ((a = n[u]) && (n[u] = null), S.event.triggered = d, e.isPropagationStopped() && f.addEventListener(d, xt), n[d](), e.isPropagationStopped() && f.removeEventListener(d, xt), S.event.triggered = void 0, a && (n[u] = a)), e.result } }, simulate: function (e, t, n) { var r = S.extend(new S.Event, n, { type: e, isSimulated: !0 }); S.event.trigger(r, null, t) } }), S.fn.extend({ trigger: function (e, t) { return this.each(function () { S.event.trigger(e, t, this) }) }, triggerHandler: function (e, t) { var n = this[0]; if (n) return S.event.trigger(e, t, n, !0) } }), y.focusin || S.each({ focus: "focusin", blur: "focusout" }, function (n, r) { var i = function (e) { S.event.simulate(r, e.target, S.event.fix(e)) }; S.event.special[r] = { setup: function () { var e = this.ownerDocument || this.document || this, t = Y.access(e, r); t || e.addEventListener(n, i, !0), Y.access(e, r, (t || 0) + 1) }, teardown: function () { var e = this.ownerDocument || this.document || this, t = Y.access(e, r) - 1; t ? Y.access(e, r, t) : (e.removeEventListener(n, i, !0), Y.remove(e, r)) } } }); var bt = C.location, wt = { guid: Date.now() }, Tt = /\?/; S.parseXML = function (e) { var t, n; if (!e || "string" != typeof e) return null; try { t = (new C.DOMParser).parseFromString(e, "text/xml") } catch (e) { } return n = t && t.getElementsByTagName("parsererror")[0], t && !n || S.error("Invalid XML: " + (n ? S.map(n.childNodes, function (e) { return e.textContent }).join("\n") : e)), t }; var Ct = /\[\]$/, Et = /\r?\n/g, St = /^(?:submit|button|image|reset|file)$/i, kt = /^(?:input|select|textarea|keygen)/i; function At(n, e, r, i) { var t; if (Array.isArray(e)) S.each(e, function (e, t) { r || Ct.test(n) ? i(n, t) : At(n + "[" + ("object" == typeof t && null != t ? e : "") + "]", t, r, i) }); else if (r || "object" !== w(e)) i(n, e); else for (t in e) At(n + "[" + t + "]", e[t], r, i) } S.param = function (e, t) { var n, r = [], i = function (e, t) { var n = m(t) ? t() : t; r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(null == n ? "" : n) }; if (null == e) return ""; if (Array.isArray(e) || e.jquery && !S.isPlainObject(e)) S.each(e, function () { i(this.name, this.value) }); else for (n in e) At(n, e[n], t, i); return r.join("&") }, S.fn.extend({ serialize: function () { return S.param(this.serializeArray()) }, serializeArray: function () { return this.map(function () { var e = S.prop(this, "elements"); return e ? S.makeArray(e) : this }).filter(function () { var e = this.type; return this.name && !S(this).is(":disabled") && kt.test(this.nodeName) && !St.test(e) && (this.checked || !pe.test(e)) }).map(function (e, t) { var n = S(this).val(); return null == n ? null : Array.isArray(n) ? S.map(n, function (e) { return { name: t.name, value: e.replace(Et, "\r\n") } }) : { name: t.name, value: n.replace(Et, "\r\n") } }).get() } }); var Nt = /%20/g, jt = /#.*$/, Dt = /([?&])_=[^&]*/, qt = /^(.*?):[ \t]*([^\r\n]*)$/gm, Lt = /^(?:GET|HEAD)$/, Ht = /^\/\//, Ot = {}, Pt = {}, Rt = "*/".concat("*"), Mt = E.createElement("a"); function It(o) { return function (e, t) { "string" != typeof e && (t = e, e = "*"); var n, r = 0, i = e.toLowerCase().match(P) || []; if (m(t)) while (n = i[r++]) "+" === n[0] ? (n = n.slice(1) || "*", (o[n] = o[n] || []).unshift(t)) : (o[n] = o[n] || []).push(t) } } function Wt(t, i, o, a) { var s = {}, u = t === Pt; function l(e) { var r; return s[e] = !0, S.each(t[e] || [], function (e, t) { var n = t(i, o, a); return "string" != typeof n || u || s[n] ? u ? !(r = n) : void 0 : (i.dataTypes.unshift(n), l(n), !1) }), r } return l(i.dataTypes[0]) || !s["*"] && l("*") } function Ft(e, t) { var n, r, i = S.ajaxSettings.flatOptions || {}; for (n in t) void 0 !== t[n] && ((i[n] ? e : r || (r = {}))[n] = t[n]); return r && S.extend(!0, e, r), e } Mt.href = bt.href, S.extend({ active: 0, lastModified: {}, etag: {}, ajaxSettings: { url: bt.href, type: "GET", isLocal: /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol), global: !0, processData: !0, async: !0, contentType: "application/x-www-form-urlencoded; charset=UTF-8", accepts: { "*": Rt, text: "text/plain", html: "text/html", xml: "application/xml, text/xml", json: "application/json, text/javascript" }, contents: { xml: /\bxml\b/, html: /\bhtml/, json: /\bjson\b/ }, responseFields: { xml: "responseXML", text: "responseText", json: "responseJSON" }, converters: { "* text": String, "text html": !0, "text json": JSON.parse, "text xml": S.parseXML }, flatOptions: { url: !0, context: !0 } }, ajaxSetup: function (e, t) { return t ? Ft(Ft(e, S.ajaxSettings), t) : Ft(S.ajaxSettings, e) }, ajaxPrefilter: It(Ot), ajaxTransport: It(Pt), ajax: function (e, t) { "object" == typeof e && (t = e, e = void 0), t = t || {}; var c, f, p, n, d, r, h, g, i, o, v = S.ajaxSetup({}, t), y = v.context || v, m = v.context && (y.nodeType || y.jquery) ? S(y) : S.event, x = S.Deferred(), b = S.Callbacks("once memory"), w = v.statusCode || {}, a = {}, s = {}, u = "canceled", T = { readyState: 0, getResponseHeader: function (e) { var t; if (h) { if (!n) { n = {}; while (t = qt.exec(p)) n[t[1].toLowerCase() + " "] = (n[t[1].toLowerCase() + " "] || []).concat(t[2]) } t = n[e.toLowerCase() + " "] } return null == t ? null : t.join(", ") }, getAllResponseHeaders: function () { return h ? p : null }, setRequestHeader: function (e, t) { return null == h && (e = s[e.toLowerCase()] = s[e.toLowerCase()] || e, a[e] = t), this }, overrideMimeType: function (e) { return null == h && (v.mimeType = e), this }, statusCode: function (e) { var t; if (e) if (h) T.always(e[T.status]); else for (t in e) w[t] = [w[t], e[t]]; return this }, abort: function (e) { var t = e || u; return c && c.abort(t), l(0, t), this } }; if (x.promise(T), v.url = ((e || v.url || bt.href) + "").replace(Ht, bt.protocol + "//"), v.type = t.method || t.type || v.method || v.type, v.dataTypes = (v.dataType || "*").toLowerCase().match(P) || [""], null == v.crossDomain) { r = E.createElement("a"); try { r.href = v.url, r.href = r.href, v.crossDomain = Mt.protocol + "//" + Mt.host != r.protocol + "//" + r.host } catch (e) { v.crossDomain = !0 } } if (v.data && v.processData && "string" != typeof v.data && (v.data = S.param(v.data, v.traditional)), Wt(Ot, v, t, T), h) return T; for (i in (g = S.event && v.global) && 0 == S.active++ && S.event.trigger("ajaxStart"), v.type = v.type.toUpperCase(), v.hasContent = !Lt.test(v.type), f = v.url.replace(jt, ""), v.hasContent ? v.data && v.processData && 0 === (v.contentType || "").indexOf("application/x-www-form-urlencoded") && (v.data = v.data.replace(Nt, "+")) : (o = v.url.slice(f.length), v.data && (v.processData || "string" == typeof v.data) && (f += (Tt.test(f) ? "&" : "?") + v.data, delete v.data), !1 === v.cache && (f = f.replace(Dt, "$1"), o = (Tt.test(f) ? "&" : "?") + "_=" + wt.guid++ + o), v.url = f + o), v.ifModified && (S.lastModified[f] && T.setRequestHeader("If-Modified-Since", S.lastModified[f]), S.etag[f] && T.setRequestHeader("If-None-Match", S.etag[f])), (v.data && v.hasContent && !1 !== v.contentType || t.contentType) && T.setRequestHeader("Content-Type", v.contentType), T.setRequestHeader("Accept", v.dataTypes[0] && v.accepts[v.dataTypes[0]] ? v.accepts[v.dataTypes[0]] + ("*" !== v.dataTypes[0] ? ", " + Rt + "; q=0.01" : "") : v.accepts["*"]), v.headers) T.setRequestHeader(i, v.headers[i]); if (v.beforeSend && (!1 === v.beforeSend.call(y, T, v) || h)) return T.abort(); if (u = "abort", b.add(v.complete), T.done(v.success), T.fail(v.error), c = Wt(Pt, v, t, T)) { if (T.readyState = 1, g && m.trigger("ajaxSend", [T, v]), h) return T; v.async && 0 < v.timeout && (d = C.setTimeout(function () { T.abort("timeout") }, v.timeout)); try { h = !1, c.send(a, l) } catch (e) { if (h) throw e; l(-1, e) } } else l(-1, "No Transport"); function l(e, t, n, r) { var i, o, a, s, u, l = t; h || (h = !0, d && C.clearTimeout(d), c = void 0, p = r || "", T.readyState = 0 < e ? 4 : 0, i = 200 <= e && e < 300 || 304 === e, n && (s = function (e, t, n) { var r, i, o, a, s = e.contents, u = e.dataTypes; while ("*" === u[0]) u.shift(), void 0 === r && (r = e.mimeType || t.getResponseHeader("Content-Type")); if (r) for (i in s) if (s[i] && s[i].test(r)) { u.unshift(i); break } if (u[0] in n) o = u[0]; else { for (i in n) { if (!u[0] || e.converters[i + " " + u[0]]) { o = i; break } a || (a = i) } o = o || a } if (o) return o !== u[0] && u.unshift(o), n[o] }(v, T, n)), !i && -1 < S.inArray("script", v.dataTypes) && S.inArray("json", v.dataTypes) < 0 && (v.converters["text script"] = function () { }), s = function (e, t, n, r) { var i, o, a, s, u, l = {}, c = e.dataTypes.slice(); if (c[1]) for (a in e.converters) l[a.toLowerCase()] = e.converters[a]; o = c.shift(); while (o) if (e.responseFields[o] && (n[e.responseFields[o]] = t), !u && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)), u = o, o = c.shift()) if ("*" === o) o = u; else if ("*" !== u && u !== o) { if (!(a = l[u + " " + o] || l["* " + o])) for (i in l) if ((s = i.split(" "))[1] === o && (a = l[u + " " + s[0]] || l["* " + s[0]])) { !0 === a ? a = l[i] : !0 !== l[i] && (o = s[0], c.unshift(s[1])); break } if (!0 !== a) if (a && e["throws"]) t = a(t); else try { t = a(t) } catch (e) { return { state: "parsererror", error: a ? e : "No conversion from " + u + " to " + o } } } return { state: "success", data: t } }(v, s, T, i), i ? (v.ifModified && ((u = T.getResponseHeader("Last-Modified")) && (S.lastModified[f] = u), (u = T.getResponseHeader("etag")) && (S.etag[f] = u)), 204 === e || "HEAD" === v.type ? l = "nocontent" : 304 === e ? l = "notmodified" : (l = s.state, o = s.data, i = !(a = s.error))) : (a = l, !e && l || (l = "error", e < 0 && (e = 0))), T.status = e, T.statusText = (t || l) + "", i ? x.resolveWith(y, [o, l, T]) : x.rejectWith(y, [T, l, a]), T.statusCode(w), w = void 0, g && m.trigger(i ? "ajaxSuccess" : "ajaxError", [T, v, i ? o : a]), b.fireWith(y, [T, l]), g && (m.trigger("ajaxComplete", [T, v]), --S.active || S.event.trigger("ajaxStop"))) } return T }, getJSON: function (e, t, n) { return S.get(e, t, n, "json") }, getScript: function (e, t) { return S.get(e, void 0, t, "script") } }), S.each(["get", "post"], function (e, i) { S[i] = function (e, t, n, r) { return m(t) && (r = r || n, n = t, t = void 0), S.ajax(S.extend({ url: e, type: i, dataType: r, data: t, success: n }, S.isPlainObject(e) && e)) } }), S.ajaxPrefilter(function (e) { var t; for (t in e.headers) "content-type" === t.toLowerCase() && (e.contentType = e.headers[t] || "") }), S._evalUrl = function (e, t, n) { return S.ajax({ url: e, type: "GET", dataType: "script", cache: !0, async: !1, global: !1, converters: { "text script": function () { } }, dataFilter: function (e) { S.globalEval(e, t, n) } }) }, S.fn.extend({ wrapAll: function (e) { var t; return this[0] && (m(e) && (e = e.call(this[0])), t = S(e, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && t.insertBefore(this[0]), t.map(function () { var e = this; while (e.firstElementChild) e = e.firstElementChild; return e }).append(this)), this }, wrapInner: function (n) { return m(n) ? this.each(function (e) { S(this).wrapInner(n.call(this, e)) }) : this.each(function () { var e = S(this), t = e.contents(); t.length ? t.wrapAll(n) : e.append(n) }) }, wrap: function (t) { var n = m(t); return this.each(function (e) { S(this).wrapAll(n ? t.call(this, e) : t) }) }, unwrap: function (e) { return this.parent(e).not("body").each(function () { S(this).replaceWith(this.childNodes) }), this } }), S.expr.pseudos.hidden = function (e) { return !S.expr.pseudos.visible(e) }, S.expr.pseudos.visible = function (e) { return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length) }, S.ajaxSettings.xhr = function () { try { return new C.XMLHttpRequest } catch (e) { } }; var Bt = { 0: 200, 1223: 204 }, $t = S.ajaxSettings.xhr(); y.cors = !!$t && "withCredentials" in $t, y.ajax = $t = !!$t, S.ajaxTransport(function (i) { var o, a; if (y.cors || $t && !i.crossDomain) return { send: function (e, t) { var n, r = i.xhr(); if (r.open(i.type, i.url, i.async, i.username, i.password), i.xhrFields) for (n in i.xhrFields) r[n] = i.xhrFields[n]; for (n in i.mimeType && r.overrideMimeType && r.overrideMimeType(i.mimeType), i.crossDomain || e["X-Requested-With"] || (e["X-Requested-With"] = "XMLHttpRequest"), e) r.setRequestHeader(n, e[n]); o = function (e) { return function () { o && (o = a = r.onload = r.onerror = r.onabort = r.ontimeout = r.onreadystatechange = null, "abort" === e ? r.abort() : "error" === e ? "number" != typeof r.status ? t(0, "error") : t(r.status, r.statusText) : t(Bt[r.status] || r.status, r.statusText, "text" !== (r.responseType || "text") || "string" != typeof r.responseText ? { binary: r.response } : { text: r.responseText }, r.getAllResponseHeaders())) } }, r.onload = o(), a = r.onerror = r.ontimeout = o("error"), void 0 !== r.onabort ? r.onabort = a : r.onreadystatechange = function () { 4 === r.readyState && C.setTimeout(function () { o && a() }) }, o = o("abort"); try { r.send(i.hasContent && i.data || null) } catch (e) { if (o) throw e } }, abort: function () { o && o() } } }), S.ajaxPrefilter(function (e) { e.crossDomain && (e.contents.script = !1) }), S.ajaxSetup({ accepts: { script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" }, contents: { script: /\b(?:java|ecma)script\b/ }, converters: { "text script": function (e) { return S.globalEval(e), e } } }), S.ajaxPrefilter("script", function (e) { void 0 === e.cache && (e.cache = !1), e.crossDomain && (e.type = "GET") }), S.ajaxTransport("script", function (n) { var r, i; if (n.crossDomain || n.scriptAttrs) return { send: function (e, t) { r = S("<script>").attr(n.scriptAttrs || {}).prop({ charset: n.scriptCharset, src: n.url }).on("load error", i = function (e) { r.remove(), i = null, e && t("error" === e.type ? 404 : 200, e.type) }), E.head.appendChild(r[0]) }, abort: function () { i && i() } } }); var _t, zt = [], Ut = /(=)\?(?=&|$)|\?\?/; S.ajaxSetup({ jsonp: "callback", jsonpCallback: function () { var e = zt.pop() || S.expando + "_" + wt.guid++; return this[e] = !0, e } }), S.ajaxPrefilter("json jsonp", function (e, t, n) { var r, i, o, a = !1 !== e.jsonp && (Ut.test(e.url) ? "url" : "string" == typeof e.data && 0 === (e.contentType || "").indexOf("application/x-www-form-urlencoded") && Ut.test(e.data) && "data"); if (a || "jsonp" === e.dataTypes[0]) return r = e.jsonpCallback = m(e.jsonpCallback) ? e.jsonpCallback() : e.jsonpCallback, a ? e[a] = e[a].replace(Ut, "$1" + r) : !1 !== e.jsonp && (e.url += (Tt.test(e.url) ? "&" : "?") + e.jsonp + "=" + r), e.converters["script json"] = function () { return o || S.error(r + " was not called"), o[0] }, e.dataTypes[0] = "json", i = C[r], C[r] = function () { o = arguments }, n.always(function () { void 0 === i ? S(C).removeProp(r) : C[r] = i, e[r] && (e.jsonpCallback = t.jsonpCallback, zt.push(r)), o && m(i) && i(o[0]), o = i = void 0 }), "script" }), y.createHTMLDocument = ((_t = E.implementation.createHTMLDocument("").body).innerHTML = "<form></form><form></form>", 2 === _t.childNodes.length), S.parseHTML = function (e, t, n) { return "string" != typeof e ? [] : ("boolean" == typeof t && (n = t, t = !1), t || (y.createHTMLDocument ? ((r = (t = E.implementation.createHTMLDocument("")).createElement("base")).href = E.location.href, t.head.appendChild(r)) : t = E), o = !n && [], (i = N.exec(e)) ? [t.createElement(i[1])] : (i = xe([e], t, o), o && o.length && S(o).remove(), S.merge([], i.childNodes))); var r, i, o }, S.fn.load = function (e, t, n) { var r, i, o, a = this, s = e.indexOf(" "); return -1 < s && (r = ht(e.slice(s)), e = e.slice(0, s)), m(t) ? (n = t, t = void 0) : t && "object" == typeof t && (i = "POST"), 0 < a.length && S.ajax({ url: e, type: i || "GET", dataType: "html", data: t }).done(function (e) { o = arguments, a.html(r ? S("<div>").append(S.parseHTML(e)).find(r) : e) }).always(n && function (e, t) { a.each(function () { n.apply(this, o || [e.responseText, t, e]) }) }), this }, S.expr.pseudos.animated = function (t) { return S.grep(S.timers, function (e) { return t === e.elem }).length }, S.offset = { setOffset: function (e, t, n) { var r, i, o, a, s, u, l = S.css(e, "position"), c = S(e), f = {}; "static" === l && (e.style.position = "relative"), s = c.offset(), o = S.css(e, "top"), u = S.css(e, "left"), ("absolute" === l || "fixed" === l) && -1 < (o + u).indexOf("auto") ? (a = (r = c.position()).top, i = r.left) : (a = parseFloat(o) || 0, i = parseFloat(u) || 0), m(t) && (t = t.call(e, n, S.extend({}, s))), null != t.top && (f.top = t.top - s.top + a), null != t.left && (f.left = t.left - s.left + i), "using" in t ? t.using.call(e, f) : c.css(f) } }, S.fn.extend({ offset: function (t) { if (arguments.length) return void 0 === t ? this : this.each(function (e) { S.offset.setOffset(this, t, e) }); var e, n, r = this[0]; return r ? r.getClientRects().length ? (e = r.getBoundingClientRect(), n = r.ownerDocument.defaultView, { top: e.top + n.pageYOffset, left: e.left + n.pageXOffset }) : { top: 0, left: 0 } : void 0 }, position: function () { if (this[0]) { var e, t, n, r = this[0], i = { top: 0, left: 0 }; if ("fixed" === S.css(r, "position")) t = r.getBoundingClientRect(); else { t = this.offset(), n = r.ownerDocument, e = r.offsetParent || n.documentElement; while (e && (e === n.body || e === n.documentElement) && "static" === S.css(e, "position")) e = e.parentNode; e && e !== r && 1 === e.nodeType && ((i = S(e).offset()).top += S.css(e, "borderTopWidth", !0), i.left += S.css(e, "borderLeftWidth", !0)) } return { top: t.top - i.top - S.css(r, "marginTop", !0), left: t.left - i.left - S.css(r, "marginLeft", !0) } } }, offsetParent: function () { return this.map(function () { var e = this.offsetParent; while (e && "static" === S.css(e, "position")) e = e.offsetParent; return e || re }) } }), S.each({ scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function (t, i) { var o = "pageYOffset" === i; S.fn[t] = function (e) { return $(this, function (e, t, n) { var r; if (x(e) ? r = e : 9 === e.nodeType && (r = e.defaultView), void 0 === n) return r ? r[i] : e[t]; r ? r.scrollTo(o ? r.pageXOffset : n, o ? n : r.pageYOffset) : e[t] = n }, t, e, arguments.length) } }), S.each(["top", "left"], function (e, n) { S.cssHooks[n] = Fe(y.pixelPosition, function (e, t) { if (t) return t = We(e, n), Pe.test(t) ? S(e).position()[n] + "px" : t }) }), S.each({ Height: "height", Width: "width" }, function (a, s) { S.each({ padding: "inner" + a, content: s, "": "outer" + a }, function (r, o) { S.fn[o] = function (e, t) { var n = arguments.length && (r || "boolean" != typeof e), i = r || (!0 === e || !0 === t ? "margin" : "border"); return $(this, function (e, t, n) { var r; return x(e) ? 0 === o.indexOf("outer") ? e["inner" + a] : e.document.documentElement["client" + a] : 9 === e.nodeType ? (r = e.documentElement, Math.max(e.body["scroll" + a], r["scroll" + a], e.body["offset" + a], r["offset" + a], r["client" + a])) : void 0 === n ? S.css(e, t, i) : S.style(e, t, n, i) }, s, n ? e : void 0, n) } }) }), S.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function (e, t) { S.fn[t] = function (e) { return this.on(t, e) } }), S.fn.extend({ bind: function (e, t, n) { return this.on(e, null, t, n) }, unbind: function (e, t) { return this.off(e, null, t) }, delegate: function (e, t, n, r) { return this.on(t, e, n, r) }, undelegate: function (e, t, n) { return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n) }, hover: function (e, t) { return this.mouseenter(e).mouseleave(t || e) } }), S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), function (e, n) { S.fn[n] = function (e, t) { return 0 < arguments.length ? this.on(n, null, e, t) : this.trigger(n) } }); var Xt = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; S.proxy = function (e, t) { var n, r, i; if ("string" == typeof t && (n = e[t], t = e, e = n), m(e)) return r = s.call(arguments, 2), (i = function () { return e.apply(t || this, r.concat(s.call(arguments))) }).guid = e.guid = e.guid || S.guid++, i }, S.holdReady = function (e) { e ? S.readyWait++ : S.ready(!0) }, S.isArray = Array.isArray, S.parseJSON = JSON.parse, S.nodeName = A, S.isFunction = m, S.isWindow = x, S.camelCase = X, S.type = w, S.now = Date.now, S.isNumeric = function (e) { var t = S.type(e); return ("number" === t || "string" === t) && !isNaN(e - parseFloat(e)) }, S.trim = function (e) { return null == e ? "" : (e + "").replace(Xt, "") }, "function" == typeof define && define.amd && define("jquery", [], function () { return S }); var Vt = C.jQuery, Gt = C.$; return S.noConflict = function (e) { return C.$ === S && (C.$ = Gt), e && C.jQuery === S && (C.jQuery = Vt), S }, "undefined" == typeof e && (C.jQuery = C.$ = S), S });
/*
Copyright (C) Federico Zivolo 2019 - popper.js@1.16.0
Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT).
*/
(function (e, t) { 'object' == typeof exports && 'undefined' != typeof module ? module.exports = t() : 'function' == typeof define && define.amd ? define(t) : e.Popper = t() })(this, function () { 'use strict'; function e(e) { return e && '[object Function]' === {}.toString.call(e) } function t(e, t) { if (1 !== e.nodeType) return []; var o = e.ownerDocument.defaultView, n = o.getComputedStyle(e, null); return t ? n[t] : n } function o(e) { return 'HTML' === e.nodeName ? e : e.parentNode || e.host } function n(e) { if (!e) return document.body; switch (e.nodeName) { case 'HTML': case 'BODY': return e.ownerDocument.body; case '#document': return e.body; }var i = t(e), r = i.overflow, p = i.overflowX, s = i.overflowY; return /(auto|scroll|overlay)/.test(r + s + p) ? e : n(o(e)) } function i(e) { return e && e.referenceNode ? e.referenceNode : e } function r(e) { return 11 === e ? re : 10 === e ? pe : re || pe } function p(e) { if (!e) return document.documentElement; for (var o = r(10) ? document.body : null, n = e.offsetParent || null; n === o && e.nextElementSibling;)n = (e = e.nextElementSibling).offsetParent; var i = n && n.nodeName; return i && 'BODY' !== i && 'HTML' !== i ? -1 !== ['TH', 'TD', 'TABLE'].indexOf(n.nodeName) && 'static' === t(n, 'position') ? p(n) : n : e ? e.ownerDocument.documentElement : document.documentElement } function s(e) { var t = e.nodeName; return 'BODY' !== t && ('HTML' === t || p(e.firstElementChild) === e) } function d(e) { return null === e.parentNode ? e : d(e.parentNode) } function a(e, t) { if (!e || !e.nodeType || !t || !t.nodeType) return document.documentElement; var o = e.compareDocumentPosition(t) & Node.DOCUMENT_POSITION_FOLLOWING, n = o ? e : t, i = o ? t : e, r = document.createRange(); r.setStart(n, 0), r.setEnd(i, 0); var l = r.commonAncestorContainer; if (e !== l && t !== l || n.contains(i)) return s(l) ? l : p(l); var f = d(e); return f.host ? a(f.host, t) : a(e, d(t).host) } function l(e) { var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : 'top', o = 'top' === t ? 'scrollTop' : 'scrollLeft', n = e.nodeName; if ('BODY' === n || 'HTML' === n) { var i = e.ownerDocument.documentElement, r = e.ownerDocument.scrollingElement || i; return r[o] } return e[o] } function f(e, t) { var o = 2 < arguments.length && void 0 !== arguments[2] && arguments[2], n = l(t, 'top'), i = l(t, 'left'), r = o ? -1 : 1; return e.top += n * r, e.bottom += n * r, e.left += i * r, e.right += i * r, e } function m(e, t) { var o = 'x' === t ? 'Left' : 'Top', n = 'Left' == o ? 'Right' : 'Bottom'; return parseFloat(e['border' + o + 'Width'], 10) + parseFloat(e['border' + n + 'Width'], 10) } function h(e, t, o, n) { return ee(t['offset' + e], t['scroll' + e], o['client' + e], o['offset' + e], o['scroll' + e], r(10) ? parseInt(o['offset' + e]) + parseInt(n['margin' + ('Height' === e ? 'Top' : 'Left')]) + parseInt(n['margin' + ('Height' === e ? 'Bottom' : 'Right')]) : 0) } function c(e) { var t = e.body, o = e.documentElement, n = r(10) && getComputedStyle(o); return { height: h('Height', t, o, n), width: h('Width', t, o, n) } } function g(e) { return le({}, e, { right: e.left + e.width, bottom: e.top + e.height }) } function u(e) { var o = {}; try { if (r(10)) { o = e.getBoundingClientRect(); var n = l(e, 'top'), i = l(e, 'left'); o.top += n, o.left += i, o.bottom += n, o.right += i } else o = e.getBoundingClientRect() } catch (t) { } var p = { left: o.left, top: o.top, width: o.right - o.left, height: o.bottom - o.top }, s = 'HTML' === e.nodeName ? c(e.ownerDocument) : {}, d = s.width || e.clientWidth || p.width, a = s.height || e.clientHeight || p.height, f = e.offsetWidth - d, h = e.offsetHeight - a; if (f || h) { var u = t(e); f -= m(u, 'x'), h -= m(u, 'y'), p.width -= f, p.height -= h } return g(p) } function b(e, o) { var i = 2 < arguments.length && void 0 !== arguments[2] && arguments[2], p = r(10), s = 'HTML' === o.nodeName, d = u(e), a = u(o), l = n(e), m = t(o), h = parseFloat(m.borderTopWidth, 10), c = parseFloat(m.borderLeftWidth, 10); i && s && (a.top = ee(a.top, 0), a.left = ee(a.left, 0)); var b = g({ top: d.top - a.top - h, left: d.left - a.left - c, width: d.width, height: d.height }); if (b.marginTop = 0, b.marginLeft = 0, !p && s) { var w = parseFloat(m.marginTop, 10), y = parseFloat(m.marginLeft, 10); b.top -= h - w, b.bottom -= h - w, b.left -= c - y, b.right -= c - y, b.marginTop = w, b.marginLeft = y } return (p && !i ? o.contains(l) : o === l && 'BODY' !== l.nodeName) && (b = f(b, o)), b } function w(e) { var t = 1 < arguments.length && void 0 !== arguments[1] && arguments[1], o = e.ownerDocument.documentElement, n = b(e, o), i = ee(o.clientWidth, window.innerWidth || 0), r = ee(o.clientHeight, window.innerHeight || 0), p = t ? 0 : l(o), s = t ? 0 : l(o, 'left'), d = { top: p - n.top + n.marginTop, left: s - n.left + n.marginLeft, width: i, height: r }; return g(d) } function y(e) { var n = e.nodeName; if ('BODY' === n || 'HTML' === n) return !1; if ('fixed' === t(e, 'position')) return !0; var i = o(e); return !!i && y(i) } function E(e) { if (!e || !e.parentElement || r()) return document.documentElement; for (var o = e.parentElement; o && 'none' === t(o, 'transform');)o = o.parentElement; return o || document.documentElement } function v(e, t, r, p) { var s = 4 < arguments.length && void 0 !== arguments[4] && arguments[4], d = { top: 0, left: 0 }, l = s ? E(e) : a(e, i(t)); if ('viewport' === p) d = w(l, s); else { var f; 'scrollParent' === p ? (f = n(o(t)), 'BODY' === f.nodeName && (f = e.ownerDocument.documentElement)) : 'window' === p ? f = e.ownerDocument.documentElement : f = p; var m = b(f, l, s); if ('HTML' === f.nodeName && !y(l)) { var h = c(e.ownerDocument), g = h.height, u = h.width; d.top += m.top - m.marginTop, d.bottom = g + m.top, d.left += m.left - m.marginLeft, d.right = u + m.left } else d = m } r = r || 0; var v = 'number' == typeof r; return d.left += v ? r : r.left || 0, d.top += v ? r : r.top || 0, d.right -= v ? r : r.right || 0, d.bottom -= v ? r : r.bottom || 0, d } function x(e) { var t = e.width, o = e.height; return t * o } function O(e, t, o, n, i) { var r = 5 < arguments.length && void 0 !== arguments[5] ? arguments[5] : 0; if (-1 === e.indexOf('auto')) return e; var p = v(o, n, r, i), s = { top: { width: p.width, height: t.top - p.top }, right: { width: p.right - t.right, height: p.height }, bottom: { width: p.width, height: p.bottom - t.bottom }, left: { width: t.left - p.left, height: p.height } }, d = Object.keys(s).map(function (e) { return le({ key: e }, s[e], { area: x(s[e]) }) }).sort(function (e, t) { return t.area - e.area }), a = d.filter(function (e) { var t = e.width, n = e.height; return t >= o.clientWidth && n >= o.clientHeight }), l = 0 < a.length ? a[0].key : d[0].key, f = e.split('-')[1]; return l + (f ? '-' + f : '') } function L(e, t, o) { var n = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null, r = n ? E(t) : a(t, i(o)); return b(o, r, n) } function S(e) { var t = e.ownerDocument.defaultView, o = t.getComputedStyle(e), n = parseFloat(o.marginTop || 0) + parseFloat(o.marginBottom || 0), i = parseFloat(o.marginLeft || 0) + parseFloat(o.marginRight || 0), r = { width: e.offsetWidth + i, height: e.offsetHeight + n }; return r } function T(e) { var t = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' }; return e.replace(/left|right|bottom|top/g, function (e) { return t[e] }) } function C(e, t, o) { o = o.split('-')[0]; var n = S(e), i = { width: n.width, height: n.height }, r = -1 !== ['right', 'left'].indexOf(o), p = r ? 'top' : 'left', s = r ? 'left' : 'top', d = r ? 'height' : 'width', a = r ? 'width' : 'height'; return i[p] = t[p] + t[d] / 2 - n[d] / 2, i[s] = o === s ? t[s] - n[a] : t[T(s)], i } function D(e, t) { return Array.prototype.find ? e.find(t) : e.filter(t)[0] } function N(e, t, o) { if (Array.prototype.findIndex) return e.findIndex(function (e) { return e[t] === o }); var n = D(e, function (e) { return e[t] === o }); return e.indexOf(n) } function P(t, o, n) { var i = void 0 === n ? t : t.slice(0, N(t, 'name', n)); return i.forEach(function (t) { t['function'] && console.warn('`modifier.function` is deprecated, use `modifier.fn`!'); var n = t['function'] || t.fn; t.enabled && e(n) && (o.offsets.popper = g(o.offsets.popper), o.offsets.reference = g(o.offsets.reference), o = n(o, t)) }), o } function k() { if (!this.state.isDestroyed) { var e = { instance: this, styles: {}, arrowStyles: {}, attributes: {}, flipped: !1, offsets: {} }; e.offsets.reference = L(this.state, this.popper, this.reference, this.options.positionFixed), e.placement = O(this.options.placement, e.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding), e.originalPlacement = e.placement, e.positionFixed = this.options.positionFixed, e.offsets.popper = C(this.popper, e.offsets.reference, e.placement), e.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute', e = P(this.modifiers, e), this.state.isCreated ? this.options.onUpdate(e) : (this.state.isCreated = !0, this.options.onCreate(e)) } } function W(e, t) { return e.some(function (e) { var o = e.name, n = e.enabled; return n && o === t }) } function B(e) { for (var t = [!1, 'ms', 'Webkit', 'Moz', 'O'], o = e.charAt(0).toUpperCase() + e.slice(1), n = 0; n < t.length; n++) { var i = t[n], r = i ? '' + i + o : e; if ('undefined' != typeof document.body.style[r]) return r } return null } function H() { return this.state.isDestroyed = !0, W(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[B('transform')] = ''), this.disableEventListeners(), this.options.removeOnDestroy && this.popper.parentNode.removeChild(this.popper), this } function A(e) { var t = e.ownerDocument; return t ? t.defaultView : window } function M(e, t, o, i) { var r = 'BODY' === e.nodeName, p = r ? e.ownerDocument.defaultView : e; p.addEventListener(t, o, { passive: !0 }), r || M(n(p.parentNode), t, o, i), i.push(p) } function F(e, t, o, i) { o.updateBound = i, A(e).addEventListener('resize', o.updateBound, { passive: !0 }); var r = n(e); return M(r, 'scroll', o.updateBound, o.scrollParents), o.scrollElement = r, o.eventsEnabled = !0, o } function I() { this.state.eventsEnabled || (this.state = F(this.reference, this.options, this.state, this.scheduleUpdate)) } function R(e, t) { return A(e).removeEventListener('resize', t.updateBound), t.scrollParents.forEach(function (e) { e.removeEventListener('scroll', t.updateBound) }), t.updateBound = null, t.scrollParents = [], t.scrollElement = null, t.eventsEnabled = !1, t } function U() { this.state.eventsEnabled && (cancelAnimationFrame(this.scheduleUpdate), this.state = R(this.reference, this.state)) } function Y(e) { return '' !== e && !isNaN(parseFloat(e)) && isFinite(e) } function V(e, t) { Object.keys(t).forEach(function (o) { var n = ''; -1 !== ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(o) && Y(t[o]) && (n = 'px'), e.style[o] = t[o] + n }) } function j(e, t) { Object.keys(t).forEach(function (o) { var n = t[o]; !1 === n ? e.removeAttribute(o) : e.setAttribute(o, t[o]) }) } function q(e, t) { var o = e.offsets, n = o.popper, i = o.reference, r = $, p = function (e) { return e }, s = r(i.width), d = r(n.width), a = -1 !== ['left', 'right'].indexOf(e.placement), l = -1 !== e.placement.indexOf('-'), f = t ? a || l || s % 2 == d % 2 ? r : Z : p, m = t ? r : p; return { left: f(1 == s % 2 && 1 == d % 2 && !l && t ? n.left - 1 : n.left), top: m(n.top), bottom: m(n.bottom), right: f(n.right) } } function K(e, t, o) { var n = D(e, function (e) { var o = e.name; return o === t }), i = !!n && e.some(function (e) { return e.name === o && e.enabled && e.order < n.order }); if (!i) { var r = '`' + t + '`'; console.warn('`' + o + '`' + ' modifier is required by ' + r + ' modifier in order to work, be sure to include it before ' + r + '!') } return i } function z(e) { return 'end' === e ? 'start' : 'start' === e ? 'end' : e } function G(e) { var t = 1 < arguments.length && void 0 !== arguments[1] && arguments[1], o = he.indexOf(e), n = he.slice(o + 1).concat(he.slice(0, o)); return t ? n.reverse() : n } function _(e, t, o, n) { var i = e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/), r = +i[1], p = i[2]; if (!r) return e; if (0 === p.indexOf('%')) { var s; switch (p) { case '%p': s = o; break; case '%': case '%r': default: s = n; }var d = g(s); return d[t] / 100 * r } if ('vh' === p || 'vw' === p) { var a; return a = 'vh' === p ? ee(document.documentElement.clientHeight, window.innerHeight || 0) : ee(document.documentElement.clientWidth, window.innerWidth || 0), a / 100 * r } return r } function X(e, t, o, n) { var i = [0, 0], r = -1 !== ['right', 'left'].indexOf(n), p = e.split(/(\+|\-)/).map(function (e) { return e.trim() }), s = p.indexOf(D(p, function (e) { return -1 !== e.search(/,|\s/) })); p[s] && -1 === p[s].indexOf(',') && console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.'); var d = /\s*,\s*|\s+/, a = -1 === s ? [p] : [p.slice(0, s).concat([p[s].split(d)[0]]), [p[s].split(d)[1]].concat(p.slice(s + 1))]; return a = a.map(function (e, n) { var i = (1 === n ? !r : r) ? 'height' : 'width', p = !1; return e.reduce(function (e, t) { return '' === e[e.length - 1] && -1 !== ['+', '-'].indexOf(t) ? (e[e.length - 1] = t, p = !0, e) : p ? (e[e.length - 1] += t, p = !1, e) : e.concat(t) }, []).map(function (e) { return _(e, i, t, o) }) }), a.forEach(function (e, t) { e.forEach(function (o, n) { Y(o) && (i[t] += o * ('-' === e[n - 1] ? -1 : 1)) }) }), i } function J(e, t) { var o, n = t.offset, i = e.placement, r = e.offsets, p = r.popper, s = r.reference, d = i.split('-')[0]; return o = Y(+n) ? [+n, 0] : X(n, p, s, d), 'left' === d ? (p.top += o[0], p.left -= o[1]) : 'right' === d ? (p.top += o[0], p.left += o[1]) : 'top' === d ? (p.left += o[0], p.top -= o[1]) : 'bottom' === d && (p.left += o[0], p.top += o[1]), e.popper = p, e } var Q = Math.min, Z = Math.floor, $ = Math.round, ee = Math.max, te = 'undefined' != typeof window && 'undefined' != typeof document && 'undefined' != typeof navigator, oe = function () { for (var e = ['Edge', 'Trident', 'Firefox'], t = 0; t < e.length; t += 1)if (te && 0 <= navigator.userAgent.indexOf(e[t])) return 1; return 0 }(), ne = te && window.Promise, ie = ne ? function (e) { var t = !1; return function () { t || (t = !0, window.Promise.resolve().then(function () { t = !1, e() })) } } : function (e) { var t = !1; return function () { t || (t = !0, setTimeout(function () { t = !1, e() }, oe)) } }, re = te && !!(window.MSInputMethodContext && document.documentMode), pe = te && /MSIE 10/.test(navigator.userAgent), se = function (e, t) { if (!(e instanceof t)) throw new TypeError('Cannot call a class as a function') }, de = function () { function e(e, t) { for (var o, n = 0; n < t.length; n++)o = t[n], o.enumerable = o.enumerable || !1, o.configurable = !0, 'value' in o && (o.writable = !0), Object.defineProperty(e, o.key, o) } return function (t, o, n) { return o && e(t.prototype, o), n && e(t, n), t } }(), ae = function (e, t, o) { return t in e ? Object.defineProperty(e, t, { value: o, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = o, e }, le = Object.assign || function (e) { for (var t, o = 1; o < arguments.length; o++)for (var n in t = arguments[o], t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]); return e }, fe = te && /Firefox/i.test(navigator.userAgent), me = ['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'], he = me.slice(3), ce = { FLIP: 'flip', CLOCKWISE: 'clockwise', COUNTERCLOCKWISE: 'counterclockwise' }, ge = function () { function t(o, n) { var i = this, r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {}; se(this, t), this.scheduleUpdate = function () { return requestAnimationFrame(i.update) }, this.update = ie(this.update.bind(this)), this.options = le({}, t.Defaults, r), this.state = { isDestroyed: !1, isCreated: !1, scrollParents: [] }, this.reference = o && o.jquery ? o[0] : o, this.popper = n && n.jquery ? n[0] : n, this.options.modifiers = {}, Object.keys(le({}, t.Defaults.modifiers, r.modifiers)).forEach(function (e) { i.options.modifiers[e] = le({}, t.Defaults.modifiers[e] || {}, r.modifiers ? r.modifiers[e] : {}) }), this.modifiers = Object.keys(this.options.modifiers).map(function (e) { return le({ name: e }, i.options.modifiers[e]) }).sort(function (e, t) { return e.order - t.order }), this.modifiers.forEach(function (t) { t.enabled && e(t.onLoad) && t.onLoad(i.reference, i.popper, i.options, t, i.state) }), this.update(); var p = this.options.eventsEnabled; p && this.enableEventListeners(), this.state.eventsEnabled = p } return de(t, [{ key: 'update', value: function () { return k.call(this) } }, { key: 'destroy', value: function () { return H.call(this) } }, { key: 'enableEventListeners', value: function () { return I.call(this) } }, { key: 'disableEventListeners', value: function () { return U.call(this) } }]), t }(); return ge.Utils = ('undefined' == typeof window ? global : window).PopperUtils, ge.placements = me, ge.Defaults = { placement: 'bottom', positionFixed: !1, eventsEnabled: !0, removeOnDestroy: !1, onCreate: function () { }, onUpdate: function () { }, modifiers: { shift: { order: 100, enabled: !0, fn: function (e) { var t = e.placement, o = t.split('-')[0], n = t.split('-')[1]; if (n) { var i = e.offsets, r = i.reference, p = i.popper, s = -1 !== ['bottom', 'top'].indexOf(o), d = s ? 'left' : 'top', a = s ? 'width' : 'height', l = { start: ae({}, d, r[d]), end: ae({}, d, r[d] + r[a] - p[a]) }; e.offsets.popper = le({}, p, l[n]) } return e } }, offset: { order: 200, enabled: !0, fn: J, offset: 0 }, preventOverflow: { order: 300, enabled: !0, fn: function (e, t) { var o = t.boundariesElement || p(e.instance.popper); e.instance.reference === o && (o = p(o)); var n = B('transform'), i = e.instance.popper.style, r = i.top, s = i.left, d = i[n]; i.top = '', i.left = '', i[n] = ''; var a = v(e.instance.popper, e.instance.reference, t.padding, o, e.positionFixed); i.top = r, i.left = s, i[n] = d, t.boundaries = a; var l = t.priority, f = e.offsets.popper, m = { primary: function (e) { var o = f[e]; return f[e] < a[e] && !t.escapeWithReference && (o = ee(f[e], a[e])), ae({}, e, o) }, secondary: function (e) { var o = 'right' === e ? 'left' : 'top', n = f[o]; return f[e] > a[e] && !t.escapeWithReference && (n = Q(f[o], a[e] - ('right' === e ? f.width : f.height))), ae({}, o, n) } }; return l.forEach(function (e) { var t = -1 === ['left', 'top'].indexOf(e) ? 'secondary' : 'primary'; f = le({}, f, m[t](e)) }), e.offsets.popper = f, e }, priority: ['left', 'right', 'top', 'bottom'], padding: 5, boundariesElement: 'scrollParent' }, keepTogether: { order: 400, enabled: !0, fn: function (e) { var t = e.offsets, o = t.popper, n = t.reference, i = e.placement.split('-')[0], r = Z, p = -1 !== ['top', 'bottom'].indexOf(i), s = p ? 'right' : 'bottom', d = p ? 'left' : 'top', a = p ? 'width' : 'height'; return o[s] < r(n[d]) && (e.offsets.popper[d] = r(n[d]) - o[a]), o[d] > r(n[s]) && (e.offsets.popper[d] = r(n[s])), e } }, arrow: { order: 500, enabled: !0, fn: function (e, o) { var n; if (!K(e.instance.modifiers, 'arrow', 'keepTogether')) return e; var i = o.element; if ('string' == typeof i) { if (i = e.instance.popper.querySelector(i), !i) return e; } else if (!e.instance.popper.contains(i)) return console.warn('WARNING: `arrow.element` must be child of its popper element!'), e; var r = e.placement.split('-')[0], p = e.offsets, s = p.popper, d = p.reference, a = -1 !== ['left', 'right'].indexOf(r), l = a ? 'height' : 'width', f = a ? 'Top' : 'Left', m = f.toLowerCase(), h = a ? 'left' : 'top', c = a ? 'bottom' : 'right', u = S(i)[l]; d[c] - u < s[m] && (e.offsets.popper[m] -= s[m] - (d[c] - u)), d[m] + u > s[c] && (e.offsets.popper[m] += d[m] + u - s[c]), e.offsets.popper = g(e.offsets.popper); var b = d[m] + d[l] / 2 - u / 2, w = t(e.instance.popper), y = parseFloat(w['margin' + f], 10), E = parseFloat(w['border' + f + 'Width'], 10), v = b - e.offsets.popper[m] - y - E; return v = ee(Q(s[l] - u, v), 0), e.arrowElement = i, e.offsets.arrow = (n = {}, ae(n, m, $(v)), ae(n, h, ''), n), e }, element: '[x-arrow]' }, flip: { order: 600, enabled: !0, fn: function (e, t) { if (W(e.instance.modifiers, 'inner')) return e; if (e.flipped && e.placement === e.originalPlacement) return e; var o = v(e.instance.popper, e.instance.reference, t.padding, t.boundariesElement, e.positionFixed), n = e.placement.split('-')[0], i = T(n), r = e.placement.split('-')[1] || '', p = []; switch (t.behavior) { case ce.FLIP: p = [n, i]; break; case ce.CLOCKWISE: p = G(n); break; case ce.COUNTERCLOCKWISE: p = G(n, !0); break; default: p = t.behavior; }return p.forEach(function (s, d) { if (n !== s || p.length === d + 1) return e; n = e.placement.split('-')[0], i = T(n); var a = e.offsets.popper, l = e.offsets.reference, f = Z, m = 'left' === n && f(a.right) > f(l.left) || 'right' === n && f(a.left) < f(l.right) || 'top' === n && f(a.bottom) > f(l.top) || 'bottom' === n && f(a.top) < f(l.bottom), h = f(a.left) < f(o.left), c = f(a.right) > f(o.right), g = f(a.top) < f(o.top), u = f(a.bottom) > f(o.bottom), b = 'left' === n && h || 'right' === n && c || 'top' === n && g || 'bottom' === n && u, w = -1 !== ['top', 'bottom'].indexOf(n), y = !!t.flipVariations && (w && 'start' === r && h || w && 'end' === r && c || !w && 'start' === r && g || !w && 'end' === r && u), E = !!t.flipVariationsByContent && (w && 'start' === r && c || w && 'end' === r && h || !w && 'start' === r && u || !w && 'end' === r && g), v = y || E; (m || b || v) && (e.flipped = !0, (m || b) && (n = p[d + 1]), v && (r = z(r)), e.placement = n + (r ? '-' + r : ''), e.offsets.popper = le({}, e.offsets.popper, C(e.instance.popper, e.offsets.reference, e.placement)), e = P(e.instance.modifiers, e, 'flip')) }), e }, behavior: 'flip', padding: 5, boundariesElement: 'viewport', flipVariations: !1, flipVariationsByContent: !1 }, inner: { order: 700, enabled: !1, fn: function (e) { var t = e.placement, o = t.split('-')[0], n = e.offsets, i = n.popper, r = n.reference, p = -1 !== ['left', 'right'].indexOf(o), s = -1 === ['top', 'left'].indexOf(o); return i[p ? 'left' : 'top'] = r[o] - (s ? i[p ? 'width' : 'height'] : 0), e.placement = T(t), e.offsets.popper = g(i), e } }, hide: { order: 800, enabled: !0, fn: function (e) { if (!K(e.instance.modifiers, 'hide', 'preventOverflow')) return e; var t = e.offsets.reference, o = D(e.instance.modifiers, function (e) { return 'preventOverflow' === e.name }).boundaries; if (t.bottom < o.top || t.left > o.right || t.top > o.bottom || t.right < o.left) { if (!0 === e.hide) return e; e.hide = !0, e.attributes['x-out-of-boundaries'] = '' } else { if (!1 === e.hide) return e; e.hide = !1, e.attributes['x-out-of-boundaries'] = !1 } return e } }, computeStyle: { order: 850, enabled: !0, fn: function (e, t) { var o = t.x, n = t.y, i = e.offsets.popper, r = D(e.instance.modifiers, function (e) { return 'applyStyle' === e.name }).gpuAcceleration; void 0 !== r && console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'); var s, d, a = void 0 === r ? t.gpuAcceleration : r, l = p(e.instance.popper), f = u(l), m = { position: i.position }, h = q(e, 2 > window.devicePixelRatio || !fe), c = 'bottom' === o ? 'top' : 'bottom', g = 'right' === n ? 'left' : 'right', b = B('transform'); if (d = 'bottom' == c ? 'HTML' === l.nodeName ? -l.clientHeight + h.bottom : -f.height + h.bottom : h.top, s = 'right' == g ? 'HTML' === l.nodeName ? -l.clientWidth + h.right : -f.width + h.right : h.left, a && b) m[b] = 'translate3d(' + s + 'px, ' + d + 'px, 0)', m[c] = 0, m[g] = 0, m.willChange = 'transform'; else { var w = 'bottom' == c ? -1 : 1, y = 'right' == g ? -1 : 1; m[c] = d * w, m[g] = s * y, m.willChange = c + ', ' + g } var E = { "x-placement": e.placement }; return e.attributes = le({}, E, e.attributes), e.styles = le({}, m, e.styles), e.arrowStyles = le({}, e.offsets.arrow, e.arrowStyles), e }, gpuAcceleration: !0, x: 'bottom', y: 'right' }, applyStyle: { order: 900, enabled: !0, fn: function (e) { return V(e.instance.popper, e.styles), j(e.instance.popper, e.attributes), e.arrowElement && Object.keys(e.arrowStyles).length && V(e.arrowElement, e.arrowStyles), e }, onLoad: function (e, t, o, n, i) { var r = L(i, t, e, o.positionFixed), p = O(o.placement, r, t, e, o.modifiers.flip.boundariesElement, o.modifiers.flip.padding); return t.setAttribute('x-placement', p), V(t, { position: o.positionFixed ? 'fixed' : 'absolute' }), o }, gpuAcceleration: void 0 } } }, ge });
//# sourceMappingURL=popper.min.js.map\
/*!
* Bootstrap v4.5.0 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
!function (t, e) { "object" == typeof exports && "undefined" != typeof module ? e(exports, require("jquery"), require("popper.js")) : "function" == typeof define && define.amd ? define(["exports", "jquery", "popper.js"], e) : e((t = t || self).bootstrap = {}, t.jQuery, t.Popper) }(this, (function (t, e, n) { "use strict"; 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 o(t, e, n) { return e && i(t.prototype, e), n && i(t, n), t } function s(t, e, n) { return e in t ? Object.defineProperty(t, e, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : t[e] = n, t } function r(t, e) { var n = Object.keys(t); if (Object.getOwnPropertySymbols) { var i = Object.getOwnPropertySymbols(t); e && (i = i.filter((function (e) { return Object.getOwnPropertyDescriptor(t, e).enumerable }))), n.push.apply(n, i) } return n } function a(t) { for (var e = 1; e < arguments.length; e++) { var n = null != arguments[e] ? arguments[e] : {}; e % 2 ? r(Object(n), !0).forEach((function (e) { s(t, e, n[e]) })) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : r(Object(n)).forEach((function (e) { Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e)) })) } return t } e = e && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e, n = n && Object.prototype.hasOwnProperty.call(n, "default") ? n.default : n; function l(t) { var n = this, i = !1; return e(this).one(c.TRANSITION_END, (function () { i = !0 })), setTimeout((function () { i || c.triggerTransitionEnd(n) }), t), this } var c = { 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 n = e(t).css("transition-duration"), i = e(t).css("transition-delay"), o = parseFloat(n), s = parseFloat(i); return o || s ? (n = n.split(",")[0], i = i.split(",")[0], 1e3 * (parseFloat(n) + parseFloat(i))) : 0 }, reflow: function (t) { return t.offsetHeight }, triggerTransitionEnd: function (t) { e(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 o = n[i], s = e[i], r = s && c.isElement(s) ? "element" : null === (a = s) || "undefined" == typeof a ? "" + a : {}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase(); if (!new RegExp(o).test(r)) throw new Error(t.toUpperCase() + ': Option "' + i + '" provided type "' + r + '" but expected type "' + o + '".') } var a }, 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 ? c.findShadowRoot(t.parentNode) : null }, jQueryDetection: function () { if ("undefined" == typeof e) throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript."); var t = e.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") } }; c.jQueryDetection(), e.fn.emulateTransitionEnd = l, e.event.special[c.TRANSITION_END] = { bindType: "transitionend", delegateType: "transitionend", handle: function (t) { if (e(t.target).is(this)) return t.handleObj.handler.apply(this, arguments) } }; var h = "alert", u = e.fn[h], d = function () { function t(t) { this._element = t } var n = t.prototype; return n.close = function (t) { var e = this._element; t && (e = this._getRootElement(t)), this._triggerCloseEvent(e).isDefaultPrevented() || this._removeElement(e) }, n.dispose = function () { e.removeData(this._element, "bs.alert"), this._element = null }, n._getRootElement = function (t) { var n = c.getSelectorFromElement(t), i = !1; return n && (i = document.querySelector(n)), i || (i = e(t).closest(".alert")[0]), i }, n._triggerCloseEvent = function (t) { var n = e.Event("close.bs.alert"); return e(t).trigger(n), n }, n._removeElement = function (t) { var n = this; if (e(t).removeClass("show"), e(t).hasClass("fade")) { var i = c.getTransitionDurationFromElement(t); e(t).one(c.TRANSITION_END, (function (e) { return n._destroyElement(t, e) })).emulateTransitionEnd(i) } else this._destroyElement(t) }, n._destroyElement = function (t) { e(t).detach().trigger("closed.bs.alert").remove() }, t._jQueryInterface = function (n) { return this.each((function () { var i = e(this), o = i.data("bs.alert"); o || (o = new t(this), i.data("bs.alert", o)), "close" === n && o[n](this) })) }, t._handleDismiss = function (t) { return function (e) { e && e.preventDefault(), t.close(this) } }, o(t, null, [{ key: "VERSION", get: function () { return "4.5.0" } }]), t }(); e(document).on("click.bs.alert.data-api", '[data-dismiss="alert"]', d._handleDismiss(new d)), e.fn[h] = d._jQueryInterface, e.fn[h].Constructor = d, e.fn[h].noConflict = function () { return e.fn[h] = u, d._jQueryInterface }; var f = e.fn.button, g = function () { function t(t) { this._element = t } var n = t.prototype; return n.toggle = function () { var t = !0, n = !0, i = e(this._element).closest('[data-toggle="buttons"]')[0]; if (i) { var o = this._element.querySelector('input:not([type="hidden"])'); if (o) { if ("radio" === o.type) if (o.checked && this._element.classList.contains("active")) t = !1; else { var s = i.querySelector(".active"); s && e(s).removeClass("active") } t && ("checkbox" !== o.type && "radio" !== o.type || (o.checked = !this._element.classList.contains("active")), e(o).trigger("change")), o.focus(), n = !1 } } this._element.hasAttribute("disabled") || this._element.classList.contains("disabled") || (n && this._element.setAttribute("aria-pressed", !this._element.classList.contains("active")), t && e(this._element).toggleClass("active")) }, n.dispose = function () { e.removeData(this._element, "bs.button"), this._element = null }, t._jQueryInterface = function (n) { return this.each((function () { var i = e(this).data("bs.button"); i || (i = new t(this), e(this).data("bs.button", i)), "toggle" === n && i[n]() })) }, o(t, null, [{ key: "VERSION", get: function () { return "4.5.0" } }]), t }(); e(document).on("click.bs.button.data-api", '[data-toggle^="button"]', (function (t) { var n = t.target, i = n; if (e(n).hasClass("btn") || (n = e(n).closest(".btn")[0]), !n || n.hasAttribute("disabled") || n.classList.contains("disabled")) t.preventDefault(); else { var o = n.querySelector('input:not([type="hidden"])'); if (o && (o.hasAttribute("disabled") || o.classList.contains("disabled"))) return void t.preventDefault(); "LABEL" === i.tagName && o && "checkbox" === o.type && t.preventDefault(), g._jQueryInterface.call(e(n), "toggle") } })).on("focus.bs.button.data-api blur.bs.button.data-api", '[data-toggle^="button"]', (function (t) { var n = e(t.target).closest(".btn")[0]; e(n).toggleClass("focus", /^focus(in)?$/.test(t.type)) })), e(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], o = i.querySelector('input:not([type="hidden"])'); o.checked || o.hasAttribute("checked") ? i.classList.add("active") : i.classList.remove("active") } for (var s = 0, r = (t = [].slice.call(document.querySelectorAll('[data-toggle="button"]'))).length; s < r; s++) { var a = t[s]; "true" === a.getAttribute("aria-pressed") ? a.classList.add("active") : a.classList.remove("active") } })), e.fn.button = g._jQueryInterface, e.fn.button.Constructor = g, e.fn.button.noConflict = function () { return e.fn.button = f, g._jQueryInterface }; var m = "carousel", p = ".bs.carousel", _ = e.fn[m], v = { interval: 5e3, keyboard: !0, slide: !1, pause: "hover", wrap: !0, touch: !0 }, b = { interval: "(number|boolean)", keyboard: "boolean", slide: "(boolean|string)", pause: "(string|boolean)", wrap: "boolean", touch: "boolean" }, y = { TOUCH: "touch", PEN: "pen" }, E = 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 n = t.prototype; return n.next = function () { this._isSliding || this._slide("next") }, n.nextWhenVisible = function () { !document.hidden && e(this._element).is(":visible") && "hidden" !== e(this._element).css("visibility") && this.next() }, n.prev = function () { this._isSliding || this._slide("prev") }, n.pause = function (t) { t || (this._isPaused = !0), this._element.querySelector(".carousel-item-next, .carousel-item-prev") && (c.triggerTransitionEnd(this._element), this.cycle(!0)), clearInterval(this._interval), this._interval = null }, n.cycle = function (t) { t || (this._isPaused = !1), this._interval && (clearInterval(this._interval), this._interval = null), this._config.interval && !this._isPaused && (this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval)) }, n.to = function (t) { var n = 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) e(this._element).one("slid.bs.carousel", (function () { return n.to(t) })); else { if (i === t) return this.pause(), void this.cycle(); var o = t > i ? "next" : "prev"; this._slide(o, this._items[t]) } }, n.dispose = function () { e(this._element).off(p), e.removeData(this._element, "bs.carousel"), this._items = null, this._config = null, this._element = null, this._interval = null, this._isPaused = null, this._isSliding = null, this._activeElement = null, this._indicatorsElement = null }, n._getConfig = function (t) { return t = a(a({}, v), t), c.typeCheckConfig(m, t, b), t }, n._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() } }, n._addEventListeners = function () { var t = this; this._config.keyboard && e(this._element).on("keydown.bs.carousel", (function (e) { return t._keydown(e) })), "hover" === this._config.pause && e(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() }, n._addTouchEventListeners = function () { var t = this; if (this._touchSupported) { var n = function (e) { t._pointerEvent && y[e.originalEvent.pointerType.toUpperCase()] ? t.touchStartX = e.originalEvent.clientX : t._pointerEvent || (t.touchStartX = e.originalEvent.touches[0].clientX) }, i = function (e) { t._pointerEvent && y[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)) }; e(this._element.querySelectorAll(".carousel-item img")).on("dragstart.bs.carousel", (function (t) { return t.preventDefault() })), this._pointerEvent ? (e(this._element).on("pointerdown.bs.carousel", (function (t) { return n(t) })), e(this._element).on("pointerup.bs.carousel", (function (t) { return i(t) })), this._element.classList.add("pointer-event")) : (e(this._element).on("touchstart.bs.carousel", (function (t) { return n(t) })), e(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) })), e(this._element).on("touchend.bs.carousel", (function (t) { return i(t) }))) } }, n._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() } }, n._getItemIndex = function (t) { return this._items = t && t.parentNode ? [].slice.call(t.parentNode.querySelectorAll(".carousel-item")) : [], this._items.indexOf(t) }, n._getItemByDirection = function (t, e) { var n = "next" === t, i = "prev" === t, o = this._getItemIndex(e), s = this._items.length - 1; if ((i && 0 === o || n && o === s) && !this._config.wrap) return e; var r = (o + ("prev" === t ? -1 : 1)) % this._items.length; return -1 === r ? this._items[this._items.length - 1] : this._items[r] }, n._triggerSlideEvent = function (t, n) { var i = this._getItemIndex(t), o = this._getItemIndex(this._element.querySelector(".active.carousel-item")), s = e.Event("slide.bs.carousel", { relatedTarget: t, direction: n, from: o, to: i }); return e(this._element).trigger(s), s }, n._setActiveIndicatorElement = function (t) { if (this._indicatorsElement) { var n = [].slice.call(this._indicatorsElement.querySelectorAll(".active")); e(n).removeClass("active"); var i = this._indicatorsElement.children[this._getItemIndex(t)]; i && e(i).addClass("active") } }, n._slide = function (t, n) { var i, o, s, r = this, a = this._element.querySelector(".active.carousel-item"), l = this._getItemIndex(a), h = n || a && this._getItemByDirection(t, a), u = this._getItemIndex(h), d = Boolean(this._interval); if ("next" === t ? (i = "carousel-item-left", o = "carousel-item-next", s = "left") : (i = "carousel-item-right", o = "carousel-item-prev", s = "right"), h && e(h).hasClass("active")) this._isSliding = !1; else if (!this._triggerSlideEvent(h, s).isDefaultPrevented() && a && h) { this._isSliding = !0, d && this.pause(), this._setActiveIndicatorElement(h); var f = e.Event("slid.bs.carousel", { relatedTarget: h, direction: s, from: l, to: u }); if (e(this._element).hasClass("slide")) { e(h).addClass(o), c.reflow(h), e(a).addClass(i), e(h).addClass(i); var g = parseInt(h.getAttribute("data-interval"), 10); g ? (this._config.defaultInterval = this._config.defaultInterval || this._config.interval, this._config.interval = g) : this._config.interval = this._config.defaultInterval || this._config.interval; var m = c.getTransitionDurationFromElement(a); e(a).one(c.TRANSITION_END, (function () { e(h).removeClass(i + " " + o).addClass("active"), e(a).removeClass("active " + o + " " + i), r._isSliding = !1, setTimeout((function () { return e(r._element).trigger(f) }), 0) })).emulateTransitionEnd(m) } else e(a).removeClass("active"), e(h).addClass("active"), this._isSliding = !1, e(this._element).trigger(f); d && this.cycle() } }, t._jQueryInterface = function (n) { return this.each((function () { var i = e(this).data("bs.carousel"), o = a(a({}, v), e(this).data()); "object" == typeof n && (o = a(a({}, o), n)); var s = "string" == typeof n ? n : o.slide; if (i || (i = new t(this, o), e(this).data("bs.carousel", i)), "number" == typeof n) i.to(n); else if ("string" == typeof s) { if ("undefined" == typeof i[s]) throw new TypeError('No method named "' + s + '"'); i[s]() } else o.interval && o.ride && (i.pause(), i.cycle()) })) }, t._dataApiClickHandler = function (n) { var i = c.getSelectorFromElement(this); if (i) { var o = e(i)[0]; if (o && e(o).hasClass("carousel")) { var s = a(a({}, e(o).data()), e(this).data()), r = this.getAttribute("data-slide-to"); r && (s.interval = !1), t._jQueryInterface.call(e(o), s), r && e(o).data("bs.carousel").to(r), n.preventDefault() } } }, o(t, null, [{ key: "VERSION", get: function () { return "4.5.0" } }, { key: "Default", get: function () { return v } }]), t }(); e(document).on("click.bs.carousel.data-api", "[data-slide], [data-slide-to]", E._dataApiClickHandler), e(window).on("load.bs.carousel.data-api", (function () { for (var t = [].slice.call(document.querySelectorAll('[data-ride="carousel"]')), n = 0, i = t.length; n < i; n++) { var o = e(t[n]); E._jQueryInterface.call(o, o.data()) } })), e.fn[m] = E._jQueryInterface, e.fn[m].Constructor = E, e.fn[m].noConflict = function () { return e.fn[m] = _, E._jQueryInterface }; var w = "collapse", T = e.fn[w], C = { toggle: !0, parent: "" }, S = { toggle: "boolean", parent: "(string|element)" }, D = 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, o = n.length; i < o; i++) { var s = n[i], r = c.getSelectorFromElement(s), a = [].slice.call(document.querySelectorAll(r)).filter((function (e) { return e === t })); null !== r && a.length > 0 && (this._selector = r, this._triggerArray.push(s)) } this._parent = this._config.parent ? this._getParent() : null, this._config.parent || this._addAriaAndCollapsedClass(this._element, this._triggerArray), this._config.toggle && this.toggle() } var n = t.prototype; return n.toggle = function () { e(this._element).hasClass("show") ? this.hide() : this.show() }, n.show = function () { var n, i, o = this; if (!this._isTransitioning && !e(this._element).hasClass("show") && (this._parent && 0 === (n = [].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter((function (t) { return "string" == typeof o._config.parent ? t.getAttribute("data-parent") === o._config.parent : t.classList.contains("collapse") }))).length && (n = null), !(n && (i = e(n).not(this._selector).data("bs.collapse")) && i._isTransitioning))) { var s = e.Event("show.bs.collapse"); if (e(this._element).trigger(s), !s.isDefaultPrevented()) { n && (t._jQueryInterface.call(e(n).not(this._selector), "hide"), i || e(n).data("bs.collapse", null)); var r = this._getDimension(); e(this._element).removeClass("collapse").addClass("collapsing"), this._element.style[r] = 0, this._triggerArray.length && e(this._triggerArray).removeClass("collapsed").attr("aria-expanded", !0), this.setTransitioning(!0); var a = "scroll" + (r[0].toUpperCase() + r.slice(1)), l = c.getTransitionDurationFromElement(this._element); e(this._element).one(c.TRANSITION_END, (function () { e(o._element).removeClass("collapsing").addClass("collapse show"), o._element.style[r] = "", o.setTransitioning(!1), e(o._element).trigger("shown.bs.collapse") })).emulateTransitionEnd(l), this._element.style[r] = this._element[a] + "px" } } }, n.hide = function () { var t = this; if (!this._isTransitioning && e(this._element).hasClass("show")) { var n = e.Event("hide.bs.collapse"); if (e(this._element).trigger(n), !n.isDefaultPrevented()) { var i = this._getDimension(); this._element.style[i] = this._element.getBoundingClientRect()[i] + "px", c.reflow(this._element), e(this._element).addClass("collapsing").removeClass("collapse show"); var o = this._triggerArray.length; if (o > 0) for (var s = 0; s < o; s++) { var r = this._triggerArray[s], a = c.getSelectorFromElement(r); if (null !== a) e([].slice.call(document.querySelectorAll(a))).hasClass("show") || e(r).addClass("collapsed").attr("aria-expanded", !1) } this.setTransitioning(!0); this._element.style[i] = ""; var l = c.getTransitionDurationFromElement(this._element); e(this._element).one(c.TRANSITION_END, (function () { t.setTransitioning(!1), e(t._element).removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse") })).emulateTransitionEnd(l) } } }, n.setTransitioning = function (t) { this._isTransitioning = t }, n.dispose = function () { e.removeData(this._element, "bs.collapse"), this._config = null, this._parent = null, this._element = null, this._triggerArray = null, this._isTransitioning = null }, n._getConfig = function (t) { return (t = a(a({}, C), t)).toggle = Boolean(t.toggle), c.typeCheckConfig(w, t, S), t }, n._getDimension = function () { return e(this._element).hasClass("width") ? "width" : "height" }, n._getParent = function () { var n, i = this; c.isElement(this._config.parent) ? (n = this._config.parent, "undefined" != typeof this._config.parent.jquery && (n = this._config.parent[0])) : n = document.querySelector(this._config.parent); var o = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]', s = [].slice.call(n.querySelectorAll(o)); return e(s).each((function (e, n) { i._addAriaAndCollapsedClass(t._getTargetFromElement(n), [n]) })), n }, n._addAriaAndCollapsedClass = function (t, n) { var i = e(t).hasClass("show"); n.length && e(n).toggleClass("collapsed", !i).attr("aria-expanded", i) }, t._getTargetFromElement = function (t) { var e = c.getSelectorFromElement(t); return e ? document.querySelector(e) : null }, t._jQueryInterface = function (n) { return this.each((function () { var i = e(this), o = i.data("bs.collapse"), s = a(a(a({}, C), i.data()), "object" == typeof n && n ? n : {}); if (!o && s.toggle && "string" == typeof n && /show|hide/.test(n) && (s.toggle = !1), o || (o = new t(this, s), i.data("bs.collapse", o)), "string" == typeof n) { if ("undefined" == typeof o[n]) throw new TypeError('No method named "' + n + '"'); o[n]() } })) }, o(t, null, [{ key: "VERSION", get: function () { return "4.5.0" } }, { key: "Default", get: function () { return C } }]), t }(); e(document).on("click.bs.collapse.data-api", '[data-toggle="collapse"]', (function (t) { "A" === t.currentTarget.tagName && t.preventDefault(); var n = e(this), i = c.getSelectorFromElement(this), o = [].slice.call(document.querySelectorAll(i)); e(o).each((function () { var t = e(this), i = t.data("bs.collapse") ? "toggle" : n.data(); D._jQueryInterface.call(t, i) })) })), e.fn[w] = D._jQueryInterface, e.fn[w].Constructor = D, e.fn[w].noConflict = function () { return e.fn[w] = T, D._jQueryInterface }; var k = "dropdown", N = e.fn[k], A = new RegExp("38|40|27"), I = { offset: 0, flip: !0, boundary: "scrollParent", reference: "toggle", display: "dynamic", popperConfig: null }, O = { offset: "(number|string|function)", flip: "boolean", boundary: "(string|element)", reference: "(string|element)", display: "string", popperConfig: "(null|object)" }, j = 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 i = t.prototype; return i.toggle = function () { if (!this._element.disabled && !e(this._element).hasClass("disabled")) { var n = e(this._menu).hasClass("show"); t._clearMenus(), n || this.show(!0) } }, i.show = function (i) { if (void 0 === i && (i = !1), !(this._element.disabled || e(this._element).hasClass("disabled") || e(this._menu).hasClass("show"))) { var o = { relatedTarget: this._element }, s = e.Event("show.bs.dropdown", o), r = t._getParentFromElement(this._element); if (e(r).trigger(s), !s.isDefaultPrevented()) { if (!this._inNavbar && i) { if ("undefined" == typeof n) throw new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org/)"); var a = this._element; "parent" === this._config.reference ? a = r : c.isElement(this._config.reference) && (a = this._config.reference, "undefined" != typeof this._config.reference.jquery && (a = this._config.reference[0])), "scrollParent" !== this._config.boundary && e(r).addClass("position-static"), this._popper = new n(a, this._menu, this._getPopperConfig()) } "ontouchstart" in document.documentElement && 0 === e(r).closest(".navbar-nav").length && e(document.body).children().on("mouseover", null, e.noop), this._element.focus(), this._element.setAttribute("aria-expanded", !0), e(this._menu).toggleClass("show"), e(r).toggleClass("show").trigger(e.Event("shown.bs.dropdown", o)) } } }, i.hide = function () { if (!this._element.disabled && !e(this._element).hasClass("disabled") && e(this._menu).hasClass("show")) { var n = { relatedTarget: this._element }, i = e.Event("hide.bs.dropdown", n), o = t._getParentFromElement(this._element); e(o).trigger(i), i.isDefaultPrevented() || (this._popper && this._popper.destroy(), e(this._menu).toggleClass("show"), e(o).toggleClass("show").trigger(e.Event("hidden.bs.dropdown", n))) } }, i.dispose = function () { e.removeData(this._element, "bs.dropdown"), e(this._element).off(".bs.dropdown"), this._element = null, this._menu = null, null !== this._popper && (this._popper.destroy(), this._popper = null) }, i.update = function () { this._inNavbar = this._detectNavbar(), null !== this._popper && this._popper.scheduleUpdate() }, i._addEventListeners = function () { var t = this; e(this._element).on("click.bs.dropdown", (function (e) { e.preventDefault(), e.stopPropagation(), t.toggle() })) }, i._getConfig = function (t) { return t = a(a(a({}, this.constructor.Default), e(this._element).data()), t), c.typeCheckConfig(k, t, this.constructor.DefaultType), t }, i._getMenuElement = function () { if (!this._menu) { var e = t._getParentFromElement(this._element); e && (this._menu = e.querySelector(".dropdown-menu")) } return this._menu }, i._getPlacement = function () { var t = e(this._element.parentNode), n = "bottom-start"; return t.hasClass("dropup") ? n = e(this._menu).hasClass("dropdown-menu-right") ? "top-end" : "top-start" : t.hasClass("dropright") ? n = "right-start" : t.hasClass("dropleft") ? n = "left-start" : e(this._menu).hasClass("dropdown-menu-right") && (n = "bottom-end"), n }, i._detectNavbar = function () { return e(this._element).closest(".navbar").length > 0 }, i._getOffset = function () { var t = this, e = {}; return "function" == typeof this._config.offset ? e.fn = function (e) { return e.offsets = a(a({}, e.offsets), t._config.offset(e.offsets, t._element) || {}), e } : e.offset = this._config.offset, e }, i._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 }), a(a({}, t), this._config.popperConfig) }, t._jQueryInterface = function (n) { return this.each((function () { var i = e(this).data("bs.dropdown"); if (i || (i = new t(this, "object" == typeof n ? n : null), e(this).data("bs.dropdown", i)), "string" == typeof n) { if ("undefined" == typeof i[n]) throw new TypeError('No method named "' + n + '"'); i[n]() } })) }, t._clearMenus = function (n) { if (!n || 3 !== n.which && ("keyup" !== n.type || 9 === n.which)) for (var i = [].slice.call(document.querySelectorAll('[data-toggle="dropdown"]')), o = 0, s = i.length; o < s; o++) { var r = t._getParentFromElement(i[o]), a = e(i[o]).data("bs.dropdown"), l = { relatedTarget: i[o] }; if (n && "click" === n.type && (l.clickEvent = n), a) { var c = a._menu; if (e(r).hasClass("show") && !(n && ("click" === n.type && /input|textarea/i.test(n.target.tagName) || "keyup" === n.type && 9 === n.which) && e.contains(r, n.target))) { var h = e.Event("hide.bs.dropdown", l); e(r).trigger(h), h.isDefaultPrevented() || ("ontouchstart" in document.documentElement && e(document.body).children().off("mouseover", null, e.noop), i[o].setAttribute("aria-expanded", "false"), a._popper && a._popper.destroy(), e(c).removeClass("show"), e(r).removeClass("show").trigger(e.Event("hidden.bs.dropdown", l))) } } } }, t._getParentFromElement = function (t) { var e, n = c.getSelectorFromElement(t); return n && (e = document.querySelector(n)), e || t.parentNode }, t._dataApiKeydownHandler = function (n) { if (!(/input|textarea/i.test(n.target.tagName) ? 32 === n.which || 27 !== n.which && (40 !== n.which && 38 !== n.which || e(n.target).closest(".dropdown-menu").length) : !A.test(n.which)) && !this.disabled && !e(this).hasClass("disabled")) { var i = t._getParentFromElement(this), o = e(i).hasClass("show"); if (o || 27 !== n.which) { if (n.preventDefault(), n.stopPropagation(), !o || o && (27 === n.which || 32 === n.which)) return 27 === n.which && e(i.querySelector('[data-toggle="dropdown"]')).trigger("focus"), void e(this).trigger("click"); var s = [].slice.call(i.querySelectorAll(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)")).filter((function (t) { return e(t).is(":visible") })); if (0 !== s.length) { var r = s.indexOf(n.target); 38 === n.which && r > 0 && r--, 40 === n.which && r < s.length - 1 && r++, r < 0 && (r = 0), s[r].focus() } } } }, o(t, null, [{ key: "VERSION", get: function () { return "4.5.0" } }, { key: "Default", get: function () { return I } }, { key: "DefaultType", get: function () { return O } }]), t }(); e(document).on("keydown.bs.dropdown.data-api", '[data-toggle="dropdown"]', j._dataApiKeydownHandler).on("keydown.bs.dropdown.data-api", ".dropdown-menu", j._dataApiKeydownHandler).on("click.bs.dropdown.data-api keyup.bs.dropdown.data-api", j._clearMenus).on("click.bs.dropdown.data-api", '[data-toggle="dropdown"]', (function (t) { t.preventDefault(), t.stopPropagation(), j._jQueryInterface.call(e(this), "toggle") })).on("click.bs.dropdown.data-api", ".dropdown form", (function (t) { t.stopPropagation() })), e.fn[k] = j._jQueryInterface, e.fn[k].Constructor = j, e.fn[k].noConflict = function () { return e.fn[k] = N, j._jQueryInterface }; var P = e.fn.modal, x = { backdrop: !0, keyboard: !0, focus: !0, show: !0 }, L = { backdrop: "(boolean|string)", keyboard: "boolean", focus: "boolean", show: "boolean" }, R = 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 n = t.prototype; return n.toggle = function (t) { return this._isShown ? this.hide() : this.show(t) }, n.show = function (t) { var n = this; if (!this._isShown && !this._isTransitioning) { e(this._element).hasClass("fade") && (this._isTransitioning = !0); var i = e.Event("show.bs.modal", { relatedTarget: t }); e(this._element).trigger(i), this._isShown || i.isDefaultPrevented() || (this._isShown = !0, this._checkScrollbar(), this._setScrollbar(), this._adjustDialog(), this._setEscapeEvent(), this._setResizeEvent(), e(this._element).on("click.dismiss.bs.modal", '[data-dismiss="modal"]', (function (t) { return n.hide(t) })), e(this._dialog).on("mousedown.dismiss.bs.modal", (function () { e(n._element).one("mouseup.dismiss.bs.modal", (function (t) { e(t.target).is(n._element) && (n._ignoreBackdropClick = !0) })) })), this._showBackdrop((function () { return n._showElement(t) }))) } }, n.hide = function (t) { var n = this; if (t && t.preventDefault(), this._isShown && !this._isTransitioning) { var i = e.Event("hide.bs.modal"); if (e(this._element).trigger(i), this._isShown && !i.isDefaultPrevented()) { this._isShown = !1; var o = e(this._element).hasClass("fade"); if (o && (this._isTransitioning = !0), this._setEscapeEvent(), this._setResizeEvent(), e(document).off("focusin.bs.modal"), e(this._element).removeClass("show"), e(this._element).off("click.dismiss.bs.modal"), e(this._dialog).off("mousedown.dismiss.bs.modal"), o) { var s = c.getTransitionDurationFromElement(this._element); e(this._element).one(c.TRANSITION_END, (function (t) { return n._hideModal(t) })).emulateTransitionEnd(s) } else this._hideModal() } } }, n.dispose = function () { [window, this._element, this._dialog].forEach((function (t) { return e(t).off(".bs.modal") })), e(document).off("focusin.bs.modal"), e.removeData(this._element, "bs.modal"), this._config = null, this._element = null, this._dialog = null, this._backdrop = null, this._isShown = null, this._isBodyOverflowing = null, this._ignoreBackdropClick = null, this._isTransitioning = null, this._scrollbarWidth = null }, n.handleUpdate = function () { this._adjustDialog() }, n._getConfig = function (t) { return t = a(a({}, x), t), c.typeCheckConfig("modal", t, L), t }, n._triggerBackdropTransition = function () { var t = this; if ("static" === this._config.backdrop) { var n = e.Event("hidePrevented.bs.modal"); if (e(this._element).trigger(n), n.defaultPrevented) return; this._element.classList.add("modal-static"); var i = c.getTransitionDurationFromElement(this._element); e(this._element).one(c.TRANSITION_END, (function () { t._element.classList.remove("modal-static") })).emulateTransitionEnd(i), this._element.focus() } else this.hide() }, n._showElement = function (t) { var n = this, i = e(this._element).hasClass("fade"), o = 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), e(this._dialog).hasClass("modal-dialog-scrollable") && o ? o.scrollTop = 0 : this._element.scrollTop = 0, i && c.reflow(this._element), e(this._element).addClass("show"), this._config.focus && this._enforceFocus(); var s = e.Event("shown.bs.modal", { relatedTarget: t }), r = function () { n._config.focus && n._element.focus(), n._isTransitioning = !1, e(n._element).trigger(s) }; if (i) { var a = c.getTransitionDurationFromElement(this._dialog); e(this._dialog).one(c.TRANSITION_END, r).emulateTransitionEnd(a) } else r() }, n._enforceFocus = function () { var t = this; e(document).off("focusin.bs.modal").on("focusin.bs.modal", (function (n) { document !== n.target && t._element !== n.target && 0 === e(t._element).has(n.target).length && t._element.focus() })) }, n._setEscapeEvent = function () { var t = this; this._isShown ? e(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 || e(this._element).off("keydown.dismiss.bs.modal") }, n._setResizeEvent = function () { var t = this; this._isShown ? e(window).on("resize.bs.modal", (function (e) { return t.handleUpdate(e) })) : e(window).off("resize.bs.modal") }, n._hideModal = function () { var t = this; this._element.style.display = "none", this._element.setAttribute("aria-hidden", !0), this._element.removeAttribute("aria-modal"), this._isTransitioning = !1, this._showBackdrop((function () { e(document.body).removeClass("modal-open"), t._resetAdjustments(), t._resetScrollbar(), e(t._element).trigger("hidden.bs.modal") })) }, n._removeBackdrop = function () { this._backdrop && (e(this._backdrop).remove(), this._backdrop = null) }, n._showBackdrop = function (t) { var n = this, i = e(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), e(this._backdrop).appendTo(document.body), e(this._element).on("click.dismiss.bs.modal", (function (t) { n._ignoreBackdropClick ? n._ignoreBackdropClick = !1 : t.target === t.currentTarget && n._triggerBackdropTransition() })), i && c.reflow(this._backdrop), e(this._backdrop).addClass("show"), !t) return; if (!i) return void t(); var o = c.getTransitionDurationFromElement(this._backdrop); e(this._backdrop).one(c.TRANSITION_END, t).emulateTransitionEnd(o) } else if (!this._isShown && this._backdrop) { e(this._backdrop).removeClass("show"); var s = function () { n._removeBackdrop(), t && t() }; if (e(this._element).hasClass("fade")) { var r = c.getTransitionDurationFromElement(this._backdrop); e(this._backdrop).one(c.TRANSITION_END, s).emulateTransitionEnd(r) } else s() } else t && t() }, n._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") }, n._resetAdjustments = function () { this._element.style.paddingLeft = "", this._element.style.paddingRight = "" }, n._checkScrollbar = function () { var t = document.body.getBoundingClientRect(); this._isBodyOverflowing = Math.round(t.left + t.right) < window.innerWidth, this._scrollbarWidth = this._getScrollbarWidth() }, n._setScrollbar = function () { var t = this; if (this._isBodyOverflowing) { var n = [].slice.call(document.querySelectorAll(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top")), i = [].slice.call(document.querySelectorAll(".sticky-top")); e(n).each((function (n, i) { var o = i.style.paddingRight, s = e(i).css("padding-right"); e(i).data("padding-right", o).css("padding-right", parseFloat(s) + t._scrollbarWidth + "px") })), e(i).each((function (n, i) { var o = i.style.marginRight, s = e(i).css("margin-right"); e(i).data("margin-right", o).css("margin-right", parseFloat(s) - t._scrollbarWidth + "px") })); var o = document.body.style.paddingRight, s = e(document.body).css("padding-right"); e(document.body).data("padding-right", o).css("padding-right", parseFloat(s) + this._scrollbarWidth + "px") } e(document.body).addClass("modal-open") }, n._resetScrollbar = function () { var t = [].slice.call(document.querySelectorAll(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top")); e(t).each((function (t, n) { var i = e(n).data("padding-right"); e(n).removeData("padding-right"), n.style.paddingRight = i || "" })); var n = [].slice.call(document.querySelectorAll(".sticky-top")); e(n).each((function (t, n) { var i = e(n).data("margin-right"); "undefined" != typeof i && e(n).css("margin-right", i).removeData("margin-right") })); var i = e(document.body).data("padding-right"); e(document.body).removeData("padding-right"), document.body.style.paddingRight = i || "" }, n._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 (n, i) { return this.each((function () { var o = e(this).data("bs.modal"), s = a(a(a({}, x), e(this).data()), "object" == typeof n && n ? n : {}); if (o || (o = new t(this, s), e(this).data("bs.modal", o)), "string" == typeof n) { if ("undefined" == typeof o[n]) throw new TypeError('No method named "' + n + '"'); o[n](i) } else s.show && o.show(i) })) }, o(t, null, [{ key: "VERSION", get: function () { return "4.5.0" } }, { key: "Default", get: function () { return x } }]), t }(); e(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', (function (t) { var n, i = this, o = c.getSelectorFromElement(this); o && (n = document.querySelector(o)); var s = e(n).data("bs.modal") ? "toggle" : a(a({}, e(n).data()), e(this).data()); "A" !== this.tagName && "AREA" !== this.tagName || t.preventDefault(); var r = e(n).one("show.bs.modal", (function (t) { t.isDefaultPrevented() || r.one("hidden.bs.modal", (function () { e(i).is(":visible") && i.focus() })) })); R._jQueryInterface.call(e(n), s, this) })), e.fn.modal = R._jQueryInterface, e.fn.modal.Constructor = R, e.fn.modal.noConflict = function () { return e.fn.modal = P, R._jQueryInterface }; var q = ["background", "cite", "href", "itemtype", "longdesc", "poster", "src", "xlink:href"], F = { "*": ["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: [] }, Q = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi, B = /^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 H(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"), o = Object.keys(e), s = [].slice.call(i.body.querySelectorAll("*")), r = function (t, n) { var i = s[t], r = i.nodeName.toLowerCase(); if (-1 === o.indexOf(i.nodeName.toLowerCase())) return i.parentNode.removeChild(i), "continue"; var a = [].slice.call(i.attributes), l = [].concat(e["*"] || [], e[r] || []); a.forEach((function (t) { (function (t, e) { var n = t.nodeName.toLowerCase(); if (-1 !== e.indexOf(n)) return -1 === q.indexOf(n) || Boolean(t.nodeValue.match(Q) || t.nodeValue.match(B)); for (var i = e.filter((function (t) { return t instanceof RegExp })), o = 0, s = i.length; o < s; o++)if (n.match(i[o])) return !0; return !1 })(t, l) || i.removeAttribute(t.nodeName) })) }, a = 0, l = s.length; a < l; a++)r(a); return i.body.innerHTML } var U = "tooltip", M = e.fn[U], W = new RegExp("(^|\\s)bs-tooltip\\S+", "g"), V = ["sanitize", "whiteList", "sanitizeFn"], z = { animation: "boolean", template: "string", title: "(string|element|function)", trigger: "string", delay: "(number|object)", html: "boolean", selector: "(string|boolean)", placement: "(string|function)", offset: "(number|string|function)", container: "(string|element|boolean)", fallbackPlacement: "(string|array)", boundary: "(string|element)", sanitize: "boolean", sanitizeFn: "(null|function)", whiteList: "object", popperConfig: "(null|object)" }, K = { AUTO: "auto", TOP: "top", RIGHT: "right", BOTTOM: "bottom", LEFT: "left" }, X = { animation: !0, template: '<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>', trigger: "hover focus", title: "", delay: 0, html: !1, selector: !1, placement: "top", offset: 0, container: !1, fallbackPlacement: "flip", boundary: "scrollParent", sanitize: !0, sanitizeFn: null, whiteList: F, popperConfig: null }, Y = { 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" }, $ = function () { function t(t, e) { if ("undefined" == typeof n) throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)"); this._isEnabled = !0, this._timeout = 0, this._hoverState = "", this._activeTrigger = {}, this._popper = null, this.element = t, this.config = this._getConfig(e), this.tip = null, this._setListeners() } var i = t.prototype; return i.enable = function () { this._isEnabled = !0 }, i.disable = function () { this._isEnabled = !1 }, i.toggleEnabled = function () { this._isEnabled = !this._isEnabled }, i.toggle = function (t) { if (this._isEnabled) if (t) { var n = this.constructor.DATA_KEY, i = e(t.currentTarget).data(n); i || (i = new this.constructor(t.currentTarget, this._getDelegateConfig()), e(t.currentTarget).data(n, i)), i._activeTrigger.click = !i._activeTrigger.click, i._isWithActiveTrigger() ? i._enter(null, i) : i._leave(null, i) } else { if (e(this.getTipElement()).hasClass("show")) return void this._leave(null, this); this._enter(null, this) } }, i.dispose = function () { clearTimeout(this._timeout), e.removeData(this.element, this.constructor.DATA_KEY), e(this.element).off(this.constructor.EVENT_KEY), e(this.element).closest(".modal").off("hide.bs.modal", this._hideModalHandler), this.tip && e(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 }, i.show = function () { var t = this; if ("none" === e(this.element).css("display")) throw new Error("Please use show on visible elements"); var i = e.Event(this.constructor.Event.SHOW); if (this.isWithContent() && this._isEnabled) { e(this.element).trigger(i); var o = c.findShadowRoot(this.element), s = e.contains(null !== o ? o : this.element.ownerDocument.documentElement, this.element); if (i.isDefaultPrevented() || !s) return; var r = this.getTipElement(), a = c.getUID(this.constructor.NAME); r.setAttribute("id", a), this.element.setAttribute("aria-describedby", a), this.setContent(), this.config.animation && e(r).addClass("fade"); var l = "function" == typeof this.config.placement ? this.config.placement.call(this, r, this.element) : this.config.placement, h = this._getAttachment(l); this.addAttachmentClass(h); var u = this._getContainer(); e(r).data(this.constructor.DATA_KEY, this), e.contains(this.element.ownerDocument.documentElement, this.tip) || e(r).appendTo(u), e(this.element).trigger(this.constructor.Event.INSERTED), this._popper = new n(this.element, r, this._getPopperConfig(h)), e(r).addClass("show"), "ontouchstart" in document.documentElement && e(document.body).children().on("mouseover", null, e.noop); var d = function () { t.config.animation && t._fixTransition(); var n = t._hoverState; t._hoverState = null, e(t.element).trigger(t.constructor.Event.SHOWN), "out" === n && t._leave(null, t) }; if (e(this.tip).hasClass("fade")) { var f = c.getTransitionDurationFromElement(this.tip); e(this.tip).one(c.TRANSITION_END, d).emulateTransitionEnd(f) } else d() } }, i.hide = function (t) { var n = this, i = this.getTipElement(), o = e.Event(this.constructor.Event.HIDE), s = function () { "show" !== n._hoverState && i.parentNode && i.parentNode.removeChild(i), n._cleanTipClass(), n.element.removeAttribute("aria-describedby"), e(n.element).trigger(n.constructor.Event.HIDDEN), null !== n._popper && n._popper.destroy(), t && t() }; if (e(this.element).trigger(o), !o.isDefaultPrevented()) { if (e(i).removeClass("show"), "ontouchstart" in document.documentElement && e(document.body).children().off("mouseover", null, e.noop), this._activeTrigger.click = !1, this._activeTrigger.focus = !1, this._activeTrigger.hover = !1, e(this.tip).hasClass("fade")) { var r = c.getTransitionDurationFromElement(i); e(i).one(c.TRANSITION_END, s).emulateTransitionEnd(r) } else s(); this._hoverState = "" } }, i.update = function () { null !== this._popper && this._popper.scheduleUpdate() }, i.isWithContent = function () { return Boolean(this.getTitle()) }, i.addAttachmentClass = function (t) { e(this.getTipElement()).addClass("bs-tooltip-" + t) }, i.getTipElement = function () { return this.tip = this.tip || e(this.config.template)[0], this.tip }, i.setContent = function () { var t = this.getTipElement(); this.setElementContent(e(t.querySelectorAll(".tooltip-inner")), this.getTitle()), e(t).removeClass("fade show") }, i.setElementContent = function (t, n) { "object" != typeof n || !n.nodeType && !n.jquery ? this.config.html ? (this.config.sanitize && (n = H(n, this.config.whiteList, this.config.sanitizeFn)), t.html(n)) : t.text(n) : this.config.html ? e(n).parent().is(t) || t.empty().append(n) : t.text(e(n).text()) }, i.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 }, i._getPopperConfig = function (t) { var e = this; return a(a({}, { 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) }, i._getOffset = function () { var t = this, e = {}; return "function" == typeof this.config.offset ? e.fn = function (e) { return e.offsets = a(a({}, e.offsets), t.config.offset(e.offsets, t.element) || {}), e } : e.offset = this.config.offset, e }, i._getContainer = function () { return !1 === this.config.container ? document.body : c.isElement(this.config.container) ? e(this.config.container) : e(document).find(this.config.container) }, i._getAttachment = function (t) { return K[t.toUpperCase()] }, i._setListeners = function () { var t = this; this.config.trigger.split(" ").forEach((function (n) { if ("click" === n) e(t.element).on(t.constructor.Event.CLICK, t.config.selector, (function (e) { return t.toggle(e) })); else if ("manual" !== n) { var i = "hover" === n ? t.constructor.Event.MOUSEENTER : t.constructor.Event.FOCUSIN, o = "hover" === n ? t.constructor.Event.MOUSELEAVE : t.constructor.Event.FOCUSOUT; e(t.element).on(i, t.config.selector, (function (e) { return t._enter(e) })).on(o, t.config.selector, (function (e) { return t._leave(e) })) } })), this._hideModalHandler = function () { t.element && t.hide() }, e(this.element).closest(".modal").on("hide.bs.modal", this._hideModalHandler), this.config.selector ? this.config = a(a({}, this.config), {}, { trigger: "manual", selector: "" }) : this._fixTitle() }, i._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", "")) }, i._enter = function (t, n) { var i = this.constructor.DATA_KEY; (n = n || e(t.currentTarget).data(i)) || (n = new this.constructor(t.currentTarget, this._getDelegateConfig()), e(t.currentTarget).data(i, n)), t && (n._activeTrigger["focusin" === t.type ? "focus" : "hover"] = !0), e(n.getTipElement()).hasClass("show") || "show" === n._hoverState ? n._hoverState = "show" : (clearTimeout(n._timeout), n._hoverState = "show", n.config.delay && n.config.delay.show ? n._timeout = setTimeout((function () { "show" === n._hoverState && n.show() }), n.config.delay.show) : n.show()) }, i._leave = function (t, n) { var i = this.constructor.DATA_KEY; (n = n || e(t.currentTarget).data(i)) || (n = new this.constructor(t.currentTarget, this._getDelegateConfig()), e(t.currentTarget).data(i, n)), t && (n._activeTrigger["focusout" === t.type ? "focus" : "hover"] = !1), n._isWithActiveTrigger() || (clearTimeout(n._timeout), n._hoverState = "out", n.config.delay && n.config.delay.hide ? n._timeout = setTimeout((function () { "out" === n._hoverState && n.hide() }), n.config.delay.hide) : n.hide()) }, i._isWithActiveTrigger = function () { for (var t in this._activeTrigger) if (this._activeTrigger[t]) return !0; return !1 }, i._getConfig = function (t) { var n = e(this.element).data(); return Object.keys(n).forEach((function (t) { -1 !== V.indexOf(t) && delete n[t] })), "number" == typeof (t = a(a(a({}, this.constructor.Default), n), "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()), c.typeCheckConfig(U, t, this.constructor.DefaultType), t.sanitize && (t.template = H(t.template, t.whiteList, t.sanitizeFn)), t }, i._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 }, i._cleanTipClass = function () { var t = e(this.getTipElement()), n = t.attr("class").match(W); null !== n && n.length && t.removeClass(n.join("")) }, i._handlePopperPlacementChange = function (t) { this.tip = t.instance.popper, this._cleanTipClass(), this.addAttachmentClass(this._getAttachment(t.placement)) }, i._fixTransition = function () { var t = this.getTipElement(), n = this.config.animation; null === t.getAttribute("x-placement") && (e(t).removeClass("fade"), this.config.animation = !1, this.hide(), this.show(), this.config.animation = n) }, t._jQueryInterface = function (n) { return this.each((function () { var i = e(this).data("bs.tooltip"), o = "object" == typeof n && n; if ((i || !/dispose|hide/.test(n)) && (i || (i = new t(this, o), e(this).data("bs.tooltip", i)), "string" == typeof n)) { if ("undefined" == typeof i[n]) throw new TypeError('No method named "' + n + '"'); i[n]() } })) }, o(t, null, [{ key: "VERSION", get: function () { return "4.5.0" } }, { key: "Default", get: function () { return X } }, { key: "NAME", get: function () { return U } }, { key: "DATA_KEY", get: function () { return "bs.tooltip" } }, { key: "Event", get: function () { return Y } }, { key: "EVENT_KEY", get: function () { return ".bs.tooltip" } }, { key: "DefaultType", get: function () { return z } }]), t }(); e.fn[U] = $._jQueryInterface, e.fn[U].Constructor = $, e.fn[U].noConflict = function () { return e.fn[U] = M, $._jQueryInterface }; var J = "popover", G = e.fn[J], Z = new RegExp("(^|\\s)bs-popover\\S+", "g"), tt = a(a({}, $.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>' }), et = a(a({}, $.DefaultType), {}, { content: "(string|element|function)" }), nt = { 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" }, it = function (t) { var n, i; function s() { return t.apply(this, arguments) || this } i = t, (n = s).prototype = Object.create(i.prototype), n.prototype.constructor = n, n.__proto__ = i; var r = s.prototype; return r.isWithContent = function () { return this.getTitle() || this._getContent() }, r.addAttachmentClass = function (t) { e(this.getTipElement()).addClass("bs-popover-" + t) }, r.getTipElement = function () { return this.tip = this.tip || e(this.config.template)[0], this.tip }, r.setContent = function () { var t = e(this.getTipElement()); this.setElementContent(t.find(".popover-header"), this.getTitle()); var n = this._getContent(); "function" == typeof n && (n = n.call(this.element)), this.setElementContent(t.find(".popover-body"), n), t.removeClass("fade show") }, r._getContent = function () { return this.element.getAttribute("data-content") || this.config.content }, r._cleanTipClass = function () { var t = e(this.getTipElement()), n = t.attr("class").match(Z); null !== n && n.length > 0 && t.removeClass(n.join("")) }, s._jQueryInterface = function (t) { return this.each((function () { var n = e(this).data("bs.popover"), i = "object" == typeof t ? t : null; if ((n || !/dispose|hide/.test(t)) && (n || (n = new s(this, i), e(this).data("bs.popover", n)), "string" == typeof t)) { if ("undefined" == typeof n[t]) throw new TypeError('No method named "' + t + '"'); n[t]() } })) }, o(s, null, [{ key: "VERSION", get: function () { return "4.5.0" } }, { key: "Default", get: function () { return tt } }, { key: "NAME", get: function () { return J } }, { key: "DATA_KEY", get: function () { return "bs.popover" } }, { key: "Event", get: function () { return nt } }, { key: "EVENT_KEY", get: function () { return ".bs.popover" } }, { key: "DefaultType", get: function () { return et } }]), s }($); e.fn[J] = it._jQueryInterface, e.fn[J].Constructor = it, e.fn[J].noConflict = function () { return e.fn[J] = G, it._jQueryInterface }; var ot = "scrollspy", st = e.fn[ot], rt = { offset: 10, method: "auto", target: "" }, at = { offset: "number", method: "string", target: "(string|element)" }, lt = function () { function t(t, n) { var i = this; this._element = t, this._scrollElement = "BODY" === t.tagName ? window : t, this._config = this._getConfig(n), this._selector = this._config.target + " .nav-link," + this._config.target + " .list-group-item," + this._config.target + " .dropdown-item", this._offsets = [], this._targets = [], this._activeTarget = null, this._scrollHeight = 0, e(this._scrollElement).on("scroll.bs.scrollspy", (function (t) { return i._process(t) })), this.refresh(), this._process() } var n = t.prototype; return n.refresh = function () { var t = this, n = this._scrollElement === this._scrollElement.window ? "offset" : "position", i = "auto" === this._config.method ? n : this._config.method, o = "position" === i ? this._getScrollTop() : 0; this._offsets = [], this._targets = [], this._scrollHeight = this._getScrollHeight(), [].slice.call(document.querySelectorAll(this._selector)).map((function (t) { var n, s = c.getSelectorFromElement(t); if (s && (n = document.querySelector(s)), n) { var r = n.getBoundingClientRect(); if (r.width || r.height) return [e(n)[i]().top + o, s] } 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]) })) }, n.dispose = function () { e.removeData(this._element, "bs.scrollspy"), e(this._scrollElement).off(".bs.scrollspy"), this._element = null, this._scrollElement = null, this._config = null, this._selector = null, this._offsets = null, this._targets = null, this._activeTarget = null, this._scrollHeight = null }, n._getConfig = function (t) { if ("string" != typeof (t = a(a({}, rt), "object" == typeof t && t ? t : {})).target && c.isElement(t.target)) { var n = e(t.target).attr("id"); n || (n = c.getUID(ot), e(t.target).attr("id", n)), t.target = "#" + n } return c.typeCheckConfig(ot, t, at), t }, n._getScrollTop = function () { return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop }, n._getScrollHeight = function () { return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight) }, n._getOffsetHeight = function () { return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height }, n._process = function () { var 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 o = this._offsets.length; o--;) { this._activeTarget !== this._targets[o] && t >= this._offsets[o] && ("undefined" == typeof this._offsets[o + 1] || t < this._offsets[o + 1]) && this._activate(this._targets[o]) } } }, n._activate = function (t) { this._activeTarget = t, this._clear(); var n = this._selector.split(",").map((function (e) { return e + '[data-target="' + t + '"],' + e + '[href="' + t + '"]' })), i = e([].slice.call(document.querySelectorAll(n.join(",")))); i.hasClass("dropdown-item") ? (i.closest(".dropdown").find(".dropdown-toggle").addClass("active"), i.addClass("active")) : (i.addClass("active"), i.parents(".nav, .list-group").prev(".nav-link, .list-group-item").addClass("active"), i.parents(".nav, .list-group").prev(".nav-item").children(".nav-link").addClass("active")), e(this._scrollElement).trigger("activate.bs.scrollspy", { relatedTarget: t }) }, n._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 (n) { return this.each((function () { var i = e(this).data("bs.scrollspy"); if (i || (i = new t(this, "object" == typeof n && n), e(this).data("bs.scrollspy", i)), "string" == typeof n) { if ("undefined" == typeof i[n]) throw new TypeError('No method named "' + n + '"'); i[n]() } })) }, o(t, null, [{ key: "VERSION", get: function () { return "4.5.0" } }, { key: "Default", get: function () { return rt } }]), t }(); e(window).on("load.bs.scrollspy.data-api", (function () { for (var t = [].slice.call(document.querySelectorAll('[data-spy="scroll"]')), n = t.length; n--;) { var i = e(t[n]); lt._jQueryInterface.call(i, i.data()) } })), e.fn[ot] = lt._jQueryInterface, e.fn[ot].Constructor = lt, e.fn[ot].noConflict = function () { return e.fn[ot] = st, lt._jQueryInterface }; var ct = e.fn.tab, ht = function () { function t(t) { this._element = t } var n = t.prototype; return n.show = function () { var t = this; if (!(this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && e(this._element).hasClass("active") || e(this._element).hasClass("disabled"))) { var n, i, o = e(this._element).closest(".nav, .list-group")[0], s = c.getSelectorFromElement(this._element); if (o) { var r = "UL" === o.nodeName || "OL" === o.nodeName ? "> li > .active" : ".active"; i = (i = e.makeArray(e(o).find(r)))[i.length - 1] } var a = e.Event("hide.bs.tab", { relatedTarget: this._element }), l = e.Event("show.bs.tab", { relatedTarget: i }); if (i && e(i).trigger(a), e(this._element).trigger(l), !l.isDefaultPrevented() && !a.isDefaultPrevented()) { s && (n = document.querySelector(s)), this._activate(this._element, o); var h = function () { var n = e.Event("hidden.bs.tab", { relatedTarget: t._element }), o = e.Event("shown.bs.tab", { relatedTarget: i }); e(i).trigger(n), e(t._element).trigger(o) }; n ? this._activate(n, n.parentNode, h) : h() } } }, n.dispose = function () { e.removeData(this._element, "bs.tab"), this._element = null }, n._activate = function (t, n, i) { var o = this, s = (!n || "UL" !== n.nodeName && "OL" !== n.nodeName ? e(n).children(".active") : e(n).find("> li > .active"))[0], r = i && s && e(s).hasClass("fade"), a = function () { return o._transitionComplete(t, s, i) }; if (s && r) { var l = c.getTransitionDurationFromElement(s); e(s).removeClass("show").one(c.TRANSITION_END, a).emulateTransitionEnd(l) } else a() }, n._transitionComplete = function (t, n, i) { if (n) { e(n).removeClass("active"); var o = e(n.parentNode).find("> .dropdown-menu .active")[0]; o && e(o).removeClass("active"), "tab" === n.getAttribute("role") && n.setAttribute("aria-selected", !1) } if (e(t).addClass("active"), "tab" === t.getAttribute("role") && t.setAttribute("aria-selected", !0), c.reflow(t), t.classList.contains("fade") && t.classList.add("show"), t.parentNode && e(t.parentNode).hasClass("dropdown-menu")) { var s = e(t).closest(".dropdown")[0]; if (s) { var r = [].slice.call(s.querySelectorAll(".dropdown-toggle")); e(r).addClass("active") } t.setAttribute("aria-expanded", !0) } i && i() }, t._jQueryInterface = function (n) { return this.each((function () { var i = e(this), o = i.data("bs.tab"); if (o || (o = new t(this), i.data("bs.tab", o)), "string" == typeof n) { if ("undefined" == typeof o[n]) throw new TypeError('No method named "' + n + '"'); o[n]() } })) }, o(t, null, [{ key: "VERSION", get: function () { return "4.5.0" } }]), t }(); e(document).on("click.bs.tab.data-api", '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]', (function (t) { t.preventDefault(), ht._jQueryInterface.call(e(this), "show") })), e.fn.tab = ht._jQueryInterface, e.fn.tab.Constructor = ht, e.fn.tab.noConflict = function () { return e.fn.tab = ct, ht._jQueryInterface }; var ut = e.fn.toast, dt = { animation: "boolean", autohide: "boolean", delay: "number" }, ft = { animation: !0, autohide: !0, delay: 500 }, gt = function () { function t(t, e) { this._element = t, this._config = this._getConfig(e), this._timeout = null, this._setListeners() } var n = t.prototype; return n.show = function () { var t = this, n = e.Event("show.bs.toast"); if (e(this._element).trigger(n), !n.isDefaultPrevented()) { this._config.animation && this._element.classList.add("fade"); var i = function () { t._element.classList.remove("showing"), t._element.classList.add("show"), e(t._element).trigger("shown.bs.toast"), t._config.autohide && (t._timeout = setTimeout((function () { t.hide() }), t._config.delay)) }; if (this._element.classList.remove("hide"), c.reflow(this._element), this._element.classList.add("showing"), this._config.animation) { var o = c.getTransitionDurationFromElement(this._element); e(this._element).one(c.TRANSITION_END, i).emulateTransitionEnd(o) } else i() } }, n.hide = function () { if (this._element.classList.contains("show")) { var t = e.Event("hide.bs.toast"); e(this._element).trigger(t), t.isDefaultPrevented() || this._close() } }, n.dispose = function () { clearTimeout(this._timeout), this._timeout = null, this._element.classList.contains("show") && this._element.classList.remove("show"), e(this._element).off("click.dismiss.bs.toast"), e.removeData(this._element, "bs.toast"), this._element = null, this._config = null }, n._getConfig = function (t) { return t = a(a(a({}, ft), e(this._element).data()), "object" == typeof t && t ? t : {}), c.typeCheckConfig("toast", t, this.constructor.DefaultType), t }, n._setListeners = function () { var t = this; e(this._element).on("click.dismiss.bs.toast", '[data-dismiss="toast"]', (function () { return t.hide() })) }, n._close = function () { var t = this, n = function () { t._element.classList.add("hide"), e(t._element).trigger("hidden.bs.toast") }; if (this._element.classList.remove("show"), this._config.animation) { var i = c.getTransitionDurationFromElement(this._element); e(this._element).one(c.TRANSITION_END, n).emulateTransitionEnd(i) } else n() }, t._jQueryInterface = function (n) { return this.each((function () { var i = e(this), o = i.data("bs.toast"); if (o || (o = new t(this, "object" == typeof n && n), i.data("bs.toast", o)), "string" == typeof n) { if ("undefined" == typeof o[n]) throw new TypeError('No method named "' + n + '"'); o[n](this) } })) }, o(t, null, [{ key: "VERSION", get: function () { return "4.5.0" } }, { key: "DefaultType", get: function () { return dt } }, { key: "Default", get: function () { return ft } }]), t }(); e.fn.toast = gt._jQueryInterface, e.fn.toast.Constructor = gt, e.fn.toast.noConflict = function () { return e.fn.toast = ut, gt._jQueryInterface }, t.Alert = d, t.Button = g, t.Carousel = E, t.Collapse = D, t.Dropdown = j, t.Modal = R, t.Popover = it, t.Scrollspy = lt, t.Tab = ht, t.Toast = gt, t.Tooltip = $, t.Util = c, Object.defineProperty(t, "__esModule", { value: !0 }) }));
//# sourceMappingURL=bootstrap.min.js.map
/*!
* metismenu https://github.com/onokumus/metismenu#readme
* A jQuery menu plugin
* @version 3.0.5
* @author Osman Nuri Okumus <onokumus@gmail.com> (https://github.com/onokumus)
* @license: MIT
*/
!function (e, n) { "object" == typeof exports && "undefined" != typeof module ? module.exports = n(require("jquery")) : "function" == typeof define && define.amd ? define(["jquery"], n) : (e = e || self).metisMenu = n(e.jQuery) }(this, function (o) { "use strict"; function a() { return (a = Object.assign || function (e) { for (var n = 1; n < arguments.length; n++) { var t = arguments[n]; for (var i in t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]) } return e }).apply(this, arguments) } o = o && o.hasOwnProperty("default") ? o.default : o; var i, n, r, s = (n = "transitionend", r = { TRANSITION_END: "mmTransitionEnd", triggerTransitionEnd: function (e) { i(e).trigger(n) }, supportsTransitionEnd: function () { return Boolean(n) } }, (i = o).fn.mmEmulateTransitionEnd = e, i.event.special[r.TRANSITION_END] = { bindType: n, delegateType: n, handle: function (e) { if (i(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) } }, r); function e(e) { var n = this, t = !1; return i(this).one(r.TRANSITION_END, function () { t = !0 }), setTimeout(function () { t || r.triggerTransitionEnd(n) }, e), this } var t = "metisMenu", g = "metisMenu", l = "." + g, h = o.fn[t], f = { toggle: !0, preventDefault: !0, triggerElement: "a", parentTrigger: "li", subMenu: "ul" }, d = { SHOW: "show" + l, SHOWN: "shown" + l, HIDE: "hide" + l, HIDDEN: "hidden" + l, CLICK_DATA_API: "click" + l + ".data-api" }, u = "metismenu", c = "mm-active", p = "mm-show", m = "mm-collapse", T = "mm-collapsing", v = function () { function r(e, n) { this.element = e, this.config = a({}, f, {}, n), this.transitioning = null, this.init() } var e = r.prototype; return e.init = function () { var a = this, s = this.config, e = o(this.element); e.addClass(u), e.find(s.parentTrigger + "." + c).children(s.triggerElement).attr("aria-expanded", "true"), e.find(s.parentTrigger + "." + c).parents(s.parentTrigger).addClass(c), e.find(s.parentTrigger + "." + c).parents(s.parentTrigger).children(s.triggerElement).attr("aria-expanded", "true"), e.find(s.parentTrigger + "." + c).has(s.subMenu).children(s.subMenu).addClass(m + " " + p), e.find(s.parentTrigger).not("." + c).has(s.subMenu).children(s.subMenu).addClass(m), e.find(s.parentTrigger).children(s.triggerElement).on(d.CLICK_DATA_API, function (e) { var n = o(this); if ("true" !== n.attr("aria-disabled")) { s.preventDefault && "#" === n.attr("href") && e.preventDefault(); var t = n.parent(s.parentTrigger), i = t.siblings(s.parentTrigger), r = i.children(s.triggerElement); t.hasClass(c) ? (n.attr("aria-expanded", "false"), a.removeActive(t)) : (n.attr("aria-expanded", "true"), a.setActive(t), s.toggle && (a.removeActive(i), r.attr("aria-expanded", "false"))), s.onTransitionStart && s.onTransitionStart(e) } }) }, e.setActive = function (e) { o(e).addClass(c); var n = o(e).children(this.config.subMenu); 0 < n.length && !n.hasClass(p) && this.show(n) }, e.removeActive = function (e) { o(e).removeClass(c); var n = o(e).children(this.config.subMenu + "." + p); 0 < n.length && this.hide(n) }, e.show = function (e) { var n = this; if (!this.transitioning && !o(e).hasClass(T)) { var t = o(e), i = o.Event(d.SHOW); if (t.trigger(i), !i.isDefaultPrevented()) { if (t.parent(this.config.parentTrigger).addClass(c), this.config.toggle) { var r = t.parent(this.config.parentTrigger).siblings().children(this.config.subMenu + "." + p); this.hide(r) } t.removeClass(m).addClass(T).height(0), this.setTransitioning(!0); t.height(e[0].scrollHeight).one(s.TRANSITION_END, function () { n.config && n.element && (t.removeClass(T).addClass(m + " " + p).height(""), n.setTransitioning(!1), t.trigger(d.SHOWN)) }).mmEmulateTransitionEnd(350) } } }, e.hide = function (e) { var n = this; if (!this.transitioning && o(e).hasClass(p)) { var t = o(e), i = o.Event(d.HIDE); if (t.trigger(i), !i.isDefaultPrevented()) { t.parent(this.config.parentTrigger).removeClass(c), t.height(t.height())[0].offsetHeight, t.addClass(T).removeClass(m).removeClass(p), this.setTransitioning(!0); var r = function () { n.config && n.element && (n.transitioning && n.config.onTransitionEnd && n.config.onTransitionEnd(), n.setTransitioning(!1), t.trigger(d.HIDDEN), t.removeClass(T).addClass(m)) }; 0 === t.height() || "none" === t.css("display") ? r() : t.height(0).one(s.TRANSITION_END, r).mmEmulateTransitionEnd(350) } } }, e.setTransitioning = function (e) { this.transitioning = e }, e.dispose = function () { o.removeData(this.element, g), o(this.element).find(this.config.parentTrigger).children(this.config.triggerElement).off(d.CLICK_DATA_API), this.transitioning = null, this.config = null, this.element = null }, r.jQueryInterface = function (i) { return this.each(function () { var e = o(this), n = e.data(g), t = a({}, f, {}, e.data(), {}, "object" == typeof i && i ? i : {}); if (n || (n = new r(this, t), e.data(g, n)), "string" == typeof i) { if (void 0 === n[i]) throw new Error('No method named "' + i + '"'); n[i]() } }) }, r }(); return o.fn[t] = v.jQueryInterface, o.fn[t].Constructor = v, o.fn[t].noConflict = function () { return o.fn[t] = h, v.jQueryInterface }, v });
//# sourceMappingURL=metisMenu.min.js.map
/*!
* Bootstrap-select v1.13.12 (https://developer.snapappointments.com/bootstrap-select)
*
* Copyright 2012-2019 SnapAppointments, LLC
* Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE)
*/
!function (e, t) { void 0 === e && void 0 !== window && (e = window), "function" == typeof define && define.amd ? define(["jquery"], function (e) { return t(e) }) : "object" == typeof module && module.exports ? module.exports = t(require("jquery")) : t(e.jQuery) }(this, function (e) { !function (z) { "use strict"; var d = ["sanitize", "whiteList", "sanitizeFn"], r = ["background", "cite", "href", "itemtype", "longdesc", "poster", "src", "xlink:href"], e = { "*": ["class", "dir", "id", "lang", "role", "tabindex", "style", /^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", "alt", "title", "width", "height"], li: [], ol: [], p: [], pre: [], s: [], small: [], span: [], sub: [], sup: [], strong: [], u: [], ul: [] }, l = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi, a = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i; function v(e, t) { var i = e.nodeName.toLowerCase(); if (-1 !== z.inArray(i, t)) return -1 === z.inArray(i, r) || Boolean(e.nodeValue.match(l) || e.nodeValue.match(a)); for (var s = z(t).filter(function (e, t) { return t instanceof RegExp }), n = 0, o = s.length; n < o; n++)if (i.match(s[n])) return !0; return !1 } function P(e, t, i) { if (i && "function" == typeof i) return i(e); for (var s = Object.keys(t), n = 0, o = e.length; n < o; n++)for (var r = e[n].querySelectorAll("*"), l = 0, a = r.length; l < a; l++) { var c = r[l], d = c.nodeName.toLowerCase(); if (-1 !== s.indexOf(d)) for (var h = [].slice.call(c.attributes), p = [].concat(t["*"] || [], t[d] || []), u = 0, f = h.length; u < f; u++) { var m = h[u]; v(m, p) || c.removeAttribute(m.nodeName) } else c.parentNode.removeChild(c) } } "classList" in document.createElement("_") || function (e) { if ("Element" in e) { var t = "classList", i = "prototype", s = e.Element[i], n = Object, o = function () { var i = z(this); return { add: function (e) { return e = Array.prototype.slice.call(arguments).join(" "), i.addClass(e) }, remove: function (e) { return e = Array.prototype.slice.call(arguments).join(" "), i.removeClass(e) }, toggle: function (e, t) { return i.toggleClass(e, t) }, contains: function (e) { return i.hasClass(e) } } }; if (n.defineProperty) { var r = { get: o, enumerable: !0, configurable: !0 }; try { n.defineProperty(s, t, r) } catch (e) { void 0 !== e.number && -2146823252 !== e.number || (r.enumerable = !1, n.defineProperty(s, t, r)) } } else n[i].__defineGetter__ && s.__defineGetter__(t, o) } }(window); var t, c, i = document.createElement("_"); if (i.classList.add("c1", "c2"), !i.classList.contains("c2")) { var s = DOMTokenList.prototype.add, n = DOMTokenList.prototype.remove; DOMTokenList.prototype.add = function () { Array.prototype.forEach.call(arguments, s.bind(this)) }, DOMTokenList.prototype.remove = function () { Array.prototype.forEach.call(arguments, n.bind(this)) } } if (i.classList.toggle("c3", !1), i.classList.contains("c3")) { var o = DOMTokenList.prototype.toggle; DOMTokenList.prototype.toggle = function (e, t) { return 1 in arguments && !this.contains(e) == !t ? t : o.call(this, e) } } function h(e) { if (null == this) throw new TypeError; var t = String(this); if (e && "[object RegExp]" == c.call(e)) throw new TypeError; var i = t.length, s = String(e), n = s.length, o = 1 < arguments.length ? arguments[1] : void 0, r = o ? Number(o) : 0; r != r && (r = 0); var l = Math.min(Math.max(r, 0), i); if (i < n + l) return !1; for (var a = -1; ++a < n;)if (t.charCodeAt(l + a) != s.charCodeAt(a)) return !1; return !0 } function O(e, t) { var i, s = e.selectedOptions, n = []; if (t) { for (var o = 0, r = s.length; o < r; o++)(i = s[o]).disabled || "OPTGROUP" === i.parentNode.tagName && i.parentNode.disabled || n.push(i); return n } return s } function T(e, t) { for (var i, s = [], n = t || e.selectedOptions, o = 0, r = n.length; o < r; o++)(i = n[o]).disabled || "OPTGROUP" === i.parentNode.tagName && i.parentNode.disabled || s.push(i.value || i.text); return e.multiple ? s : s.length ? s[0] : null } i = null, String.prototype.startsWith || (t = function () { try { var e = {}, t = Object.defineProperty, i = t(e, e, e) && t } catch (e) { } return i }(), c = {}.toString, t ? t(String.prototype, "startsWith", { value: h, configurable: !0, writable: !0 }) : String.prototype.startsWith = h), Object.keys || (Object.keys = function (e, t, i) { for (t in i = [], e) i.hasOwnProperty.call(e, t) && i.push(t); return i }), HTMLSelectElement && !HTMLSelectElement.prototype.hasOwnProperty("selectedOptions") && Object.defineProperty(HTMLSelectElement.prototype, "selectedOptions", { get: function () { return this.querySelectorAll(":checked") } }); var p = { useDefault: !1, _set: z.valHooks.select.set }; z.valHooks.select.set = function (e, t) { return t && !p.useDefault && z(e).data("selected", !0), p._set.apply(this, arguments) }; var A = null, u = function () { try { return new Event("change"), !0 } catch (e) { return !1 } }(); function k(e, t, i, s) { for (var n = ["display", "subtext", "tokens"], o = !1, r = 0; r < n.length; r++) { var l = n[r], a = e[l]; if (a && (a = a.toString(), "display" === l && (a = a.replace(/<[^>]+>/g, "")), s && (a = w(a)), a = a.toUpperCase(), o = "contains" === i ? 0 <= a.indexOf(t) : a.startsWith(t))) break } return o } function L(e) { return parseInt(e, 10) || 0 } z.fn.triggerNative = function (e) { var t, i = this[0]; i.dispatchEvent ? (u ? t = new Event(e, { bubbles: !0 }) : (t = document.createEvent("Event")).initEvent(e, !0, !1), i.dispatchEvent(t)) : i.fireEvent ? ((t = document.createEventObject()).eventType = e, i.fireEvent("on" + e, t)) : this.trigger(e) }; var f = { "\xc0": "A", "\xc1": "A", "\xc2": "A", "\xc3": "A", "\xc4": "A", "\xc5": "A", "\xe0": "a", "\xe1": "a", "\xe2": "a", "\xe3": "a", "\xe4": "a", "\xe5": "a", "\xc7": "C", "\xe7": "c", "\xd0": "D", "\xf0": "d", "\xc8": "E", "\xc9": "E", "\xca": "E", "\xcb": "E", "\xe8": "e", "\xe9": "e", "\xea": "e", "\xeb": "e", "\xcc": "I", "\xcd": "I", "\xce": "I", "\xcf": "I", "\xec": "i", "\xed": "i", "\xee": "i", "\xef": "i", "\xd1": "N", "\xf1": "n", "\xd2": "O", "\xd3": "O", "\xd4": "O", "\xd5": "O", "\xd6": "O", "\xd8": "O", "\xf2": "o", "\xf3": "o", "\xf4": "o", "\xf5": "o", "\xf6": "o", "\xf8": "o", "\xd9": "U", "\xda": "U", "\xdb": "U", "\xdc": "U", "\xf9": "u", "\xfa": "u", "\xfb": "u", "\xfc": "u", "\xdd": "Y", "\xfd": "y", "\xff": "y", "\xc6": "Ae", "\xe6": "ae", "\xde": "Th", "\xfe": "th", "\xdf": "ss", "\u0100": "A", "\u0102": "A", "\u0104": "A", "\u0101": "a", "\u0103": "a", "\u0105": "a", "\u0106": "C", "\u0108": "C", "\u010a": "C", "\u010c": "C", "\u0107": "c", "\u0109": "c", "\u010b": "c", "\u010d": "c", "\u010e": "D", "\u0110": "D", "\u010f": "d", "\u0111": "d", "\u0112": "E", "\u0114": "E", "\u0116": "E", "\u0118": "E", "\u011a": "E", "\u0113": "e", "\u0115": "e", "\u0117": "e", "\u0119": "e", "\u011b": "e", "\u011c": "G", "\u011e": "G", "\u0120": "G", "\u0122": "G", "\u011d": "g", "\u011f": "g", "\u0121": "g", "\u0123": "g", "\u0124": "H", "\u0126": "H", "\u0125": "h", "\u0127": "h", "\u0128": "I", "\u012a": "I", "\u012c": "I", "\u012e": "I", "\u0130": "I", "\u0129": "i", "\u012b": "i", "\u012d": "i", "\u012f": "i", "\u0131": "i", "\u0134": "J", "\u0135": "j", "\u0136": "K", "\u0137": "k", "\u0138": "k", "\u0139": "L", "\u013b": "L", "\u013d": "L", "\u013f": "L", "\u0141": "L", "\u013a": "l", "\u013c": "l", "\u013e": "l", "\u0140": "l", "\u0142": "l", "\u0143": "N", "\u0145": "N", "\u0147": "N", "\u014a": "N", "\u0144": "n", "\u0146": "n", "\u0148": "n", "\u014b": "n", "\u014c": "O", "\u014e": "O", "\u0150": "O", "\u014d": "o", "\u014f": "o", "\u0151": "o", "\u0154": "R", "\u0156": "R", "\u0158": "R", "\u0155": "r", "\u0157": "r", "\u0159": "r", "\u015a": "S", "\u015c": "S", "\u015e": "S", "\u0160": "S", "\u015b": "s", "\u015d": "s", "\u015f": "s", "\u0161": "s", "\u0162": "T", "\u0164": "T", "\u0166": "T", "\u0163": "t", "\u0165": "t", "\u0167": "t", "\u0168": "U", "\u016a": "U", "\u016c": "U", "\u016e": "U", "\u0170": "U", "\u0172": "U", "\u0169": "u", "\u016b": "u", "\u016d": "u", "\u016f": "u", "\u0171": "u", "\u0173": "u", "\u0174": "W", "\u0175": "w", "\u0176": "Y", "\u0177": "y", "\u0178": "Y", "\u0179": "Z", "\u017b": "Z", "\u017d": "Z", "\u017a": "z", "\u017c": "z", "\u017e": "z", "\u0132": "IJ", "\u0133": "ij", "\u0152": "Oe", "\u0153": "oe", "\u0149": "'n", "\u017f": "s" }, m = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g, g = RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\u1ab0-\\u1aff\\u1dc0-\\u1dff]", "g"); function b(e) { return f[e] } function w(e) { return (e = e.toString()) && e.replace(m, b).replace(g, "") } var I, x, $, y, S = (I = { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#x27;", "`": "&#x60;" }, x = "(?:" + Object.keys(I).join("|") + ")", $ = RegExp(x), y = RegExp(x, "g"), function (e) { return e = null == e ? "" : "" + e, $.test(e) ? e.replace(y, E) : e }); function E(e) { return I[e] } var C = { 32: " ", 48: "0", 49: "1", 50: "2", 51: "3", 52: "4", 53: "5", 54: "6", 55: "7", 56: "8", 57: "9", 59: ";", 65: "A", 66: "B", 67: "C", 68: "D", 69: "E", 70: "F", 71: "G", 72: "H", 73: "I", 74: "J", 75: "K", 76: "L", 77: "M", 78: "N", 79: "O", 80: "P", 81: "Q", 82: "R", 83: "S", 84: "T", 85: "U", 86: "V", 87: "W", 88: "X", 89: "Y", 90: "Z", 96: "0", 97: "1", 98: "2", 99: "3", 100: "4", 101: "5", 102: "6", 103: "7", 104: "8", 105: "9" }, N = 27, D = 13, H = 32, W = 9, B = 38, M = 40, R = { success: !1, major: "3" }; try { R.full = (z.fn.dropdown.Constructor.VERSION || "").split(" ")[0].split("."), R.major = R.full[0], R.success = !0 } catch (e) { } var U = 0, j = ".bs.select", V = { DISABLED: "disabled", DIVIDER: "divider", SHOW: "open", DROPUP: "dropup", MENU: "dropdown-menu", MENURIGHT: "dropdown-menu-right", MENULEFT: "dropdown-menu-left", BUTTONCLASS: "btn-default", POPOVERHEADER: "popover-title", ICONBASE: "glyphicon", TICKICON: "glyphicon-ok" }, F = { MENU: "." + V.MENU }, _ = { span: document.createElement("span"), i: document.createElement("i"), subtext: document.createElement("small"), a: document.createElement("a"), li: document.createElement("li"), whitespace: document.createTextNode("\xa0"), fragment: document.createDocumentFragment() }; _.a.setAttribute("role", "option"), _.subtext.className = "text-muted", _.text = _.span.cloneNode(!1), _.text.className = "text", _.checkMark = _.span.cloneNode(!1); var G = new RegExp(B + "|" + M), q = new RegExp("^" + W + "$|" + N), K = function (e, t, i) { var s = _.li.cloneNode(!1); return e && (1 === e.nodeType || 11 === e.nodeType ? s.appendChild(e) : s.innerHTML = e), void 0 !== t && "" !== t && (s.className = t), null != i && s.classList.add("optgroup-" + i), s }, Y = function (e, t, i) { var s = _.a.cloneNode(!0); return e && (11 === e.nodeType ? s.appendChild(e) : s.insertAdjacentHTML("beforeend", e)), void 0 !== t && "" !== t && (s.className = t), "4" === R.major && s.classList.add("dropdown-item"), i && s.setAttribute("style", i), s }, Z = function (e, t) { var i, s, n = _.text.cloneNode(!1); if (e.content) n.innerHTML = e.content; else { if (n.textContent = e.text, e.icon) { var o = _.whitespace.cloneNode(!1); (s = (!0 === t ? _.i : _.span).cloneNode(!1)).className = e.iconBase + " " + e.icon, _.fragment.appendChild(s), _.fragment.appendChild(o) } e.subtext && ((i = _.subtext.cloneNode(!1)).textContent = e.subtext, n.appendChild(i)) } if (!0 === t) for (; 0 < n.childNodes.length;)_.fragment.appendChild(n.childNodes[0]); else _.fragment.appendChild(n); return _.fragment }, J = function (e) { var t, i, s = _.text.cloneNode(!1); if (s.innerHTML = e.label, e.icon) { var n = _.whitespace.cloneNode(!1); (i = _.span.cloneNode(!1)).className = e.iconBase + " " + e.icon, _.fragment.appendChild(i), _.fragment.appendChild(n) } return e.subtext && ((t = _.subtext.cloneNode(!1)).textContent = e.subtext, s.appendChild(t)), _.fragment.appendChild(s), _.fragment }, Q = function (e, t) { var i = this; p.useDefault || (z.valHooks.select.set = p._set, p.useDefault = !0), this.$element = z(e), this.$newElement = null, this.$button = null, this.$menu = null, this.options = t, this.selectpicker = { main: {}, search: {}, current: {}, view: {}, keydown: { keyHistory: "", resetKeyHistory: { start: function () { return setTimeout(function () { i.selectpicker.keydown.keyHistory = "" }, 800) } } } }, null === this.options.title && (this.options.title = this.$element.attr("title")); var s = this.options.windowPadding; "number" == typeof s && (this.options.windowPadding = [s, s, s, s]), this.val = Q.prototype.val, this.render = Q.prototype.render, this.refresh = Q.prototype.refresh, this.setStyle = Q.prototype.setStyle, this.selectAll = Q.prototype.selectAll, this.deselectAll = Q.prototype.deselectAll, this.destroy = Q.prototype.destroy, this.remove = Q.prototype.remove, this.show = Q.prototype.show, this.hide = Q.prototype.hide, this.init() }; function X(e) { var l, a = arguments, c = e; if ([].shift.apply(a), !R.success) { try { R.full = (z.fn.dropdown.Constructor.VERSION || "").split(" ")[0].split(".") } catch (e) { Q.BootstrapVersion ? R.full = Q.BootstrapVersion.split(" ")[0].split(".") : (R.full = [R.major, "0", "0"], console.warn("There was an issue retrieving Bootstrap's version. Ensure Bootstrap is being loaded before bootstrap-select and there is no namespace collision. If loading Bootstrap asynchronously, the version may need to be manually specified via $.fn.selectpicker.Constructor.BootstrapVersion.", e)) } R.major = R.full[0], R.success = !0 } if ("4" === R.major) { var t = []; Q.DEFAULTS.style === V.BUTTONCLASS && t.push({ name: "style", className: "BUTTONCLASS" }), Q.DEFAULTS.iconBase === V.ICONBASE && t.push({ name: "iconBase", className: "ICONBASE" }), Q.DEFAULTS.tickIcon === V.TICKICON && t.push({ name: "tickIcon", className: "TICKICON" }), V.DIVIDER = "dropdown-divider", V.SHOW = "show", V.BUTTONCLASS = "btn-light", V.POPOVERHEADER = "popover-header", V.ICONBASE = "", V.TICKICON = "bs-ok-default"; for (var i = 0; i < t.length; i++) { e = t[i]; Q.DEFAULTS[e.name] = V[e.className] } } var s = this.each(function () { var e = z(this); if (e.is("select")) { var t = e.data("selectpicker"), i = "object" == typeof c && c; if (t) { if (i) for (var s in i) i.hasOwnProperty(s) && (t.options[s] = i[s]) } else { var n = e.data(); for (var o in n) n.hasOwnProperty(o) && -1 !== z.inArray(o, d) && delete n[o]; var r = z.extend({}, Q.DEFAULTS, z.fn.selectpicker.defaults || {}, n, i); r.template = z.extend({}, Q.DEFAULTS.template, z.fn.selectpicker.defaults ? z.fn.selectpicker.defaults.template : {}, n.template, i.template), e.data("selectpicker", t = new Q(this, r)) } "string" == typeof c && (l = t[c] instanceof Function ? t[c].apply(t, a) : t.options[c]) } }); return void 0 !== l ? l : s } Q.VERSION = "1.13.12", Q.DEFAULTS = { noneSelectedText: "Nothing selected", noneResultsText: "No results matched {0}", countSelectedText: function (e, t) { return 1 == e ? "{0} item selected" : "{0} items selected" }, maxOptionsText: function (e, t) { return [1 == e ? "Limit reached ({n} item max)" : "Limit reached ({n} items max)", 1 == t ? "Group limit reached ({n} item max)" : "Group limit reached ({n} items max)"] }, selectAllText: "Select All", deselectAllText: "Deselect All", doneButton: !1, doneButtonText: "Close", multipleSeparator: ", ", styleBase: "btn", style: V.BUTTONCLASS, size: "auto", title: null, selectedTextFormat: "values", width: !1, container: !1, hideDisabled: !1, showSubtext: !1, showIcon: !0, showContent: !0, dropupAuto: !0, header: !1, liveSearch: !1, liveSearchPlaceholder: null, liveSearchNormalize: !1, liveSearchStyle: "contains", actionsBox: !1, iconBase: V.ICONBASE, tickIcon: V.TICKICON, showTick: !1, template: { caret: '<span class="caret"></span>' }, maxOptions: !1, mobile: !1, selectOnTab: !1, dropdownAlignRight: !1, windowPadding: 0, virtualScroll: 600, display: !1, sanitize: !0, sanitizeFn: null, whiteList: e }, Q.prototype = { constructor: Q, init: function () { var i = this, e = this.$element.attr("id"); U++, this.selectId = "bs-select-" + U, this.$element[0].classList.add("bs-select-hidden"), this.multiple = this.$element.prop("multiple"), this.autofocus = this.$element.prop("autofocus"), this.$element[0].classList.contains("show-tick") && (this.options.showTick = !0), this.$newElement = this.createDropdown(), this.$element.after(this.$newElement).prependTo(this.$newElement), this.$button = this.$newElement.children("button"), this.$menu = this.$newElement.children(F.MENU), this.$menuInner = this.$menu.children(".inner"), this.$searchbox = this.$menu.find("input"), this.$element[0].classList.remove("bs-select-hidden"), !0 === this.options.dropdownAlignRight && this.$menu[0].classList.add(V.MENURIGHT), void 0 !== e && this.$button.attr("data-id", e), this.checkDisabled(), this.clickListener(), this.options.liveSearch ? (this.liveSearchListener(), this.focusedParent = this.$searchbox[0]) : this.focusedParent = this.$menuInner[0], this.setStyle(), this.render(), this.setWidth(), this.options.container ? this.selectPosition() : this.$element.on("hide" + j, function () { if (i.isVirtual()) { var e = i.$menuInner[0], t = e.firstChild.cloneNode(!1); e.replaceChild(t, e.firstChild), e.scrollTop = 0 } }), this.$menu.data("this", this), this.$newElement.data("this", this), this.options.mobile && this.mobile(), this.$newElement.on({ "hide.bs.dropdown": function (e) { i.$element.trigger("hide" + j, e) }, "hidden.bs.dropdown": function (e) { i.$element.trigger("hidden" + j, e) }, "show.bs.dropdown": function (e) { i.$element.trigger("show" + j, e) }, "shown.bs.dropdown": function (e) { i.$element.trigger("shown" + j, e) } }), i.$element[0].hasAttribute("required") && this.$element.on("invalid" + j, function () { i.$button[0].classList.add("bs-invalid"), i.$element.on("shown" + j + ".invalid", function () { i.$element.val(i.$element.val()).off("shown" + j + ".invalid") }).on("rendered" + j, function () { this.validity.valid && i.$button[0].classList.remove("bs-invalid"), i.$element.off("rendered" + j) }), i.$button.on("blur" + j, function () { i.$element.trigger("focus").trigger("blur"), i.$button.off("blur" + j) }) }), setTimeout(function () { i.createLi(), i.$element.trigger("loaded" + j) }) }, createDropdown: function () { var e = this.multiple || this.options.showTick ? " show-tick" : "", t = this.multiple ? ' aria-multiselectable="true"' : "", i = "", s = this.autofocus ? " autofocus" : ""; R.major < 4 && this.$element.parent().hasClass("input-group") && (i = " input-group-btn"); var n, o = "", r = "", l = "", a = ""; return this.options.header && (o = '<div class="' + V.POPOVERHEADER + '"><button type="button" class="close" aria-hidden="true">&times;</button>' + this.options.header + "</div>"), this.options.liveSearch && (r = '<div class="bs-searchbox"><input type="search" class="form-control" autocomplete="off"' + (null === this.options.liveSearchPlaceholder ? "" : ' placeholder="' + S(this.options.liveSearchPlaceholder) + '"') + ' role="combobox" aria-label="Search" aria-controls="' + this.selectId + '" aria-autocomplete="list"></div>'), this.multiple && this.options.actionsBox && (l = '<div class="bs-actionsbox"><div class="btn-group btn-group-sm btn-block"><button type="button" class="actions-btn bs-select-all btn ' + V.BUTTONCLASS + '">' + this.options.selectAllText + '</button><button type="button" class="actions-btn bs-deselect-all btn ' + V.BUTTONCLASS + '">' + this.options.deselectAllText + "</button></div></div>"), this.multiple && this.options.doneButton && (a = '<div class="bs-donebutton"><div class="btn-group btn-block"><button type="button" class="btn btn-sm ' + V.BUTTONCLASS + '">' + this.options.doneButtonText + "</button></div></div>"), n = '<div class="dropdown bootstrap-select' + e + i + '"><button type="button" class="' + this.options.styleBase + ' dropdown-toggle" ' + ("static" === this.options.display ? 'data-display="static"' : "") + 'data-toggle="dropdown"' + s + ' role="combobox" aria-owns="' + this.selectId + '" aria-haspopup="listbox" aria-expanded="false"><div class="filter-option"><div class="filter-option-inner"><div class="filter-option-inner-inner"></div></div> </div>' + ("4" === R.major ? "" : '<span class="bs-caret">' + this.options.template.caret + "</span>") + '</button><div class="' + V.MENU + " " + ("4" === R.major ? "" : V.SHOW) + '">' + o + r + l + '<div class="inner ' + V.SHOW + '" role="listbox" id="' + this.selectId + '" tabindex="-1" ' + t + '><ul class="' + V.MENU + " inner " + ("4" === R.major ? V.SHOW : "") + '" role="presentation"></ul></div>' + a + "</div></div>", z(n) }, setPositionData: function () { this.selectpicker.view.canHighlight = []; for (var e = this.selectpicker.view.size = 0; e < this.selectpicker.current.data.length; e++) { var t = this.selectpicker.current.data[e], i = !0; "divider" === t.type ? (i = !1, t.height = this.sizeInfo.dividerHeight) : "optgroup-label" === t.type ? (i = !1, t.height = this.sizeInfo.dropdownHeaderHeight) : t.height = this.sizeInfo.liHeight, t.disabled && (i = !1), this.selectpicker.view.canHighlight.push(i), i && (this.selectpicker.view.size++, t.posinset = this.selectpicker.view.size), t.position = (0 === e ? 0 : this.selectpicker.current.data[e - 1].position) + t.height } }, isVirtual: function () { return !1 !== this.options.virtualScroll && this.selectpicker.main.elements.length >= this.options.virtualScroll || !0 === this.options.virtualScroll }, createView: function (A, e, t) { var L, N, D = this, i = 0, H = []; if (this.selectpicker.current = A ? this.selectpicker.search : this.selectpicker.main, this.setPositionData(), e) if (t) i = this.$menuInner[0].scrollTop; else if (!D.multiple) { var s = D.$element[0], n = (s.options[s.selectedIndex] || {}).liIndex; if ("number" == typeof n && !1 !== D.options.size) { var o = D.selectpicker.main.data[n], r = o && o.position; r && (i = r - (D.sizeInfo.menuInnerHeight + D.sizeInfo.liHeight) / 2) } } function l(e, t) { var i, s, n, o, r, l, a, c, d = D.selectpicker.current.elements.length, h = [], p = !0, u = D.isVirtual(); D.selectpicker.view.scrollTop = e, i = Math.ceil(D.sizeInfo.menuInnerHeight / D.sizeInfo.liHeight * 1.5), s = Math.round(d / i) || 1; for (var f = 0; f < s; f++) { var m = (f + 1) * i; if (f === s - 1 && (m = d), h[f] = [f * i + (f ? 1 : 0), m], !d) break; void 0 === r && e - 1 <= D.selectpicker.current.data[m - 1].position - D.sizeInfo.menuInnerHeight && (r = f) } if (void 0 === r && (r = 0), l = [D.selectpicker.view.position0, D.selectpicker.view.position1], n = Math.max(0, r - 1), o = Math.min(s - 1, r + 1), D.selectpicker.view.position0 = !1 === u ? 0 : Math.max(0, h[n][0]) || 0, D.selectpicker.view.position1 = !1 === u ? d : Math.min(d, h[o][1]) || 0, a = l[0] !== D.selectpicker.view.position0 || l[1] !== D.selectpicker.view.position1, void 0 !== D.activeIndex && (N = D.selectpicker.main.elements[D.prevActiveIndex], H = D.selectpicker.main.elements[D.activeIndex], L = D.selectpicker.main.elements[D.selectedIndex], t && (D.activeIndex !== D.selectedIndex && D.defocusItem(H), D.activeIndex = void 0), D.activeIndex && D.activeIndex !== D.selectedIndex && D.defocusItem(L)), void 0 !== D.prevActiveIndex && D.prevActiveIndex !== D.activeIndex && D.prevActiveIndex !== D.selectedIndex && D.defocusItem(N), (t || a) && (c = D.selectpicker.view.visibleElements ? D.selectpicker.view.visibleElements.slice() : [], D.selectpicker.view.visibleElements = !1 === u ? D.selectpicker.current.elements : D.selectpicker.current.elements.slice(D.selectpicker.view.position0, D.selectpicker.view.position1), D.setOptionStatus(), (A || !1 === u && t) && (p = !function (e, i) { return e.length === i.length && e.every(function (e, t) { return e === i[t] }) }(c, D.selectpicker.view.visibleElements)), (t || !0 === u) && p)) { var v, g, b = D.$menuInner[0], w = document.createDocumentFragment(), I = b.firstChild.cloneNode(!1), x = D.selectpicker.view.visibleElements, k = []; b.replaceChild(I, b.firstChild); f = 0; for (var $ = x.length; f < $; f++) { var y, S, E = x[f]; D.options.sanitize && (y = E.lastChild) && (S = D.selectpicker.current.data[f + D.selectpicker.view.position0]) && S.content && !S.sanitized && (k.push(y), S.sanitized = !0), w.appendChild(E) } if (D.options.sanitize && k.length && P(k, D.options.whiteList, D.options.sanitizeFn), !0 === u ? (v = 0 === D.selectpicker.view.position0 ? 0 : D.selectpicker.current.data[D.selectpicker.view.position0 - 1].position, g = D.selectpicker.view.position1 > d - 1 ? 0 : D.selectpicker.current.data[d - 1].position - D.selectpicker.current.data[D.selectpicker.view.position1 - 1].position, b.firstChild.style.marginTop = v + "px", b.firstChild.style.marginBottom = g + "px") : (b.firstChild.style.marginTop = 0, b.firstChild.style.marginBottom = 0), b.firstChild.appendChild(w), !0 === u && D.sizeInfo.hasScrollBar) { var C = b.firstChild.offsetWidth; if (t && C < D.sizeInfo.menuInnerInnerWidth && D.sizeInfo.totalMenuWidth > D.sizeInfo.selectWidth) b.firstChild.style.minWidth = D.sizeInfo.menuInnerInnerWidth + "px"; else if (C > D.sizeInfo.menuInnerInnerWidth) { D.$menu[0].style.minWidth = 0; var O = b.firstChild.offsetWidth; O > D.sizeInfo.menuInnerInnerWidth && (D.sizeInfo.menuInnerInnerWidth = O, b.firstChild.style.minWidth = D.sizeInfo.menuInnerInnerWidth + "px"), D.$menu[0].style.minWidth = "" } } } if (D.prevActiveIndex = D.activeIndex, D.options.liveSearch) { if (A && t) { var z, T = 0; D.selectpicker.view.canHighlight[T] || (T = 1 + D.selectpicker.view.canHighlight.slice(1).indexOf(!0)), z = D.selectpicker.view.visibleElements[T], D.defocusItem(D.selectpicker.view.currentActive), D.activeIndex = (D.selectpicker.current.data[T] || {}).index, D.focusItem(z) } } else D.$menuInner.trigger("focus") } l(i, !0), this.$menuInner.off("scroll.createView").on("scroll.createView", function (e, t) { D.noScroll || l(this.scrollTop, t), D.noScroll = !1 }), z(window).off("resize" + j + "." + this.selectId + ".createView").on("resize" + j + "." + this.selectId + ".createView", function () { D.$newElement.hasClass(V.SHOW) && l(D.$menuInner[0].scrollTop) }) }, focusItem: function (e, t, i) { if (e) { t = t || this.selectpicker.main.data[this.activeIndex]; var s = e.firstChild; s && (s.setAttribute("aria-setsize", this.selectpicker.view.size), s.setAttribute("aria-posinset", t.posinset), !0 !== i && (this.focusedParent.setAttribute("aria-activedescendant", s.id), e.classList.add("active"), s.classList.add("active"))) } }, defocusItem: function (e) { e && (e.classList.remove("active"), e.firstChild && e.firstChild.classList.remove("active")) }, setPlaceholder: function () { var e = !1; if (this.options.title && !this.multiple) { this.selectpicker.view.titleOption || (this.selectpicker.view.titleOption = document.createElement("option")), e = !0; var t = this.$element[0], i = !1, s = !this.selectpicker.view.titleOption.parentNode; if (s) this.selectpicker.view.titleOption.className = "bs-title-option", this.selectpicker.view.titleOption.value = "", i = void 0 === z(t.options[t.selectedIndex]).attr("selected") && void 0 === this.$element.data("selected"); !s && 0 === this.selectpicker.view.titleOption.index || t.insertBefore(this.selectpicker.view.titleOption, t.firstChild), i && (t.selectedIndex = 0) } return e }, createLi: function () { var c = this, f = this.options.iconBase, m = ':not([hidden]):not([data-hidden="true"])', v = [], g = [], d = 0, b = 0, e = this.setPlaceholder() ? 1 : 0; this.options.hideDisabled && (m += ":not(:disabled)"), !c.options.showTick && !c.multiple || _.checkMark.parentNode || (_.checkMark.className = f + " " + c.options.tickIcon + " check-mark", _.a.appendChild(_.checkMark)); var t = this.$element[0].querySelectorAll("select > *" + m); function w(e) { var t = g[g.length - 1]; t && "divider" === t.type && (t.optID || e.optID) || ((e = e || {}).type = "divider", v.push(K(!1, V.DIVIDER, e.optID ? e.optID + "div" : void 0)), g.push(e)) } function I(e, t) { if ((t = t || {}).divider = "true" === e.getAttribute("data-divider"), t.divider) w({ optID: t.optID }); else { var i = g.length, s = e.style.cssText, n = s ? S(s) : "", o = (e.className || "") + (t.optgroupClass || ""); t.optID && (o = "opt " + o), t.text = e.textContent, t.content = e.getAttribute("data-content"), t.tokens = e.getAttribute("data-tokens"), t.subtext = e.getAttribute("data-subtext"), t.icon = e.getAttribute("data-icon"), t.iconBase = f; var r = Z(t), l = K(Y(r, o, n), "", t.optID); l.firstChild && (l.firstChild.id = c.selectId + "-" + i), v.push(l), e.liIndex = i, t.display = t.content || t.text, t.type = "option", t.index = i, t.option = e, t.disabled = t.disabled || e.disabled, g.push(t); var a = 0; t.display && (a += t.display.length), t.subtext && (a += t.subtext.length), t.icon && (a += 1), d < a && (d = a, c.selectpicker.view.widestOption = v[v.length - 1]) } } function i(e, t) { var i = t[e], s = t[e - 1], n = t[e + 1], o = i.querySelectorAll("option" + m); if (o.length) { var r, l, a = { label: S(i.label), subtext: i.getAttribute("data-subtext"), icon: i.getAttribute("data-icon"), iconBase: f }, c = " " + (i.className || ""); b++, s && w({ optID: b }); var d = J(a); v.push(K(d, "dropdown-header" + c, b)), g.push({ display: a.label, subtext: a.subtext, type: "optgroup-label", optID: b }); for (var h = 0, p = o.length; h < p; h++) { var u = o[h]; 0 === h && (l = (r = g.length - 1) + p), I(u, { headerIndex: r, lastIndex: l, optID: b, optgroupClass: c, disabled: i.disabled }) } n && w({ optID: b }) } } for (var s = t.length; e < s; e++) { var n = t[e]; "OPTGROUP" !== n.tagName ? I(n, {}) : i(e, t) } this.selectpicker.main.elements = v, this.selectpicker.main.data = g, this.selectpicker.current = this.selectpicker.main }, findLis: function () { return this.$menuInner.find(".inner > li") }, render: function () { this.setPlaceholder(); var e, t = this, i = this.$element[0], s = O(i, this.options.hideDisabled), n = s.length, o = this.$button[0], r = o.querySelector(".filter-option-inner-inner"), l = document.createTextNode(this.options.multipleSeparator), a = _.fragment.cloneNode(!1), c = !1; if (o.classList.toggle("bs-placeholder", t.multiple ? !n : !T(i, s)), this.tabIndex(), "static" === this.options.selectedTextFormat) a = Z({ text: this.options.title }, !0); else if (!1 === (this.multiple && -1 !== this.options.selectedTextFormat.indexOf("count") && 1 < n && (1 < (e = this.options.selectedTextFormat.split(">")).length && n > e[1] || 1 === e.length && 2 <= n))) { for (var d = 0; d < n && d < 50; d++) { var h = s[d], p = {}, u = { content: h.getAttribute("data-content"), subtext: h.getAttribute("data-subtext"), icon: h.getAttribute("data-icon") }; this.multiple && 0 < d && a.appendChild(l.cloneNode(!1)), h.title ? p.text = h.title : u.content && t.options.showContent ? (p.content = u.content.toString(), c = !0) : (t.options.showIcon && (p.icon = u.icon, p.iconBase = this.options.iconBase), t.options.showSubtext && !t.multiple && u.subtext && (p.subtext = " " + u.subtext), p.text = h.textContent.trim()), a.appendChild(Z(p, !0)) } 49 < n && a.appendChild(document.createTextNode("...")) } else { var f = ':not([hidden]):not([data-hidden="true"]):not([data-divider="true"])'; this.options.hideDisabled && (f += ":not(:disabled)"); var m = this.$element[0].querySelectorAll("select > option" + f + ", optgroup" + f + " option" + f).length, v = "function" == typeof this.options.countSelectedText ? this.options.countSelectedText(n, m) : this.options.countSelectedText; a = Z({ text: v.replace("{0}", n.toString()).replace("{1}", m.toString()) }, !0) } if (null == this.options.title && (this.options.title = this.$element.attr("title")), a.childNodes.length || (a = Z({ text: void 0 !== this.options.title ? this.options.title : this.options.noneSelectedText }, !0)), o.title = a.textContent.replace(/<[^>]*>?/g, "").trim(), this.options.sanitize && c && P([a], t.options.whiteList, t.options.sanitizeFn), r.innerHTML = "", r.appendChild(a), R.major < 4 && this.$newElement[0].classList.contains("bs3-has-addon")) { var g = o.querySelector(".filter-expand"), b = r.cloneNode(!0); b.className = "filter-expand", g ? o.replaceChild(b, g) : o.appendChild(b) } this.$element.trigger("rendered" + j) }, setStyle: function (e, t) { var i, s = this.$button[0], n = this.$newElement[0], o = this.options.style.trim(); this.$element.attr("class") && this.$newElement.addClass(this.$element.attr("class").replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, "")), R.major < 4 && (n.classList.add("bs3"), n.parentNode.classList.contains("input-group") && (n.previousElementSibling || n.nextElementSibling) && (n.previousElementSibling || n.nextElementSibling).classList.contains("input-group-addon") && n.classList.add("bs3-has-addon")), i = e ? e.trim() : o, "add" == t ? i && s.classList.add.apply(s.classList, i.split(" ")) : "remove" == t ? i && s.classList.remove.apply(s.classList, i.split(" ")) : (o && s.classList.remove.apply(s.classList, o.split(" ")), i && s.classList.add.apply(s.classList, i.split(" "))) }, liHeight: function (e) { if (e || !1 !== this.options.size && !this.sizeInfo) { this.sizeInfo || (this.sizeInfo = {}); var t = document.createElement("div"), i = document.createElement("div"), s = document.createElement("div"), n = document.createElement("ul"), o = document.createElement("li"), r = document.createElement("li"), l = document.createElement("li"), a = document.createElement("a"), c = document.createElement("span"), d = this.options.header && 0 < this.$menu.find("." + V.POPOVERHEADER).length ? this.$menu.find("." + V.POPOVERHEADER)[0].cloneNode(!0) : null, h = this.options.liveSearch ? document.createElement("div") : null, p = this.options.actionsBox && this.multiple && 0 < this.$menu.find(".bs-actionsbox").length ? this.$menu.find(".bs-actionsbox")[0].cloneNode(!0) : null, u = this.options.doneButton && this.multiple && 0 < this.$menu.find(".bs-donebutton").length ? this.$menu.find(".bs-donebutton")[0].cloneNode(!0) : null, f = this.$element.find("option")[0]; if (this.sizeInfo.selectWidth = this.$newElement[0].offsetWidth, c.className = "text", a.className = "dropdown-item " + (f ? f.className : ""), t.className = this.$menu[0].parentNode.className + " " + V.SHOW, t.style.width = 0, "auto" === this.options.width && (i.style.minWidth = 0), i.className = V.MENU + " " + V.SHOW, s.className = "inner " + V.SHOW, n.className = V.MENU + " inner " + ("4" === R.major ? V.SHOW : ""), o.className = V.DIVIDER, r.className = "dropdown-header", c.appendChild(document.createTextNode("\u200b")), a.appendChild(c), l.appendChild(a), r.appendChild(c.cloneNode(!0)), this.selectpicker.view.widestOption && n.appendChild(this.selectpicker.view.widestOption.cloneNode(!0)), n.appendChild(l), n.appendChild(o), n.appendChild(r), d && i.appendChild(d), h) { var m = document.createElement("input"); h.className = "bs-searchbox", m.className = "form-control", h.appendChild(m), i.appendChild(h) } p && i.appendChild(p), s.appendChild(n), i.appendChild(s), u && i.appendChild(u), t.appendChild(i), document.body.appendChild(t); var v, g = l.offsetHeight, b = r ? r.offsetHeight : 0, w = d ? d.offsetHeight : 0, I = h ? h.offsetHeight : 0, x = p ? p.offsetHeight : 0, k = u ? u.offsetHeight : 0, $ = z(o).outerHeight(!0), y = !!window.getComputedStyle && window.getComputedStyle(i), S = i.offsetWidth, E = y ? null : z(i), C = { vert: L(y ? y.paddingTop : E.css("paddingTop")) + L(y ? y.paddingBottom : E.css("paddingBottom")) + L(y ? y.borderTopWidth : E.css("borderTopWidth")) + L(y ? y.borderBottomWidth : E.css("borderBottomWidth")), horiz: L(y ? y.paddingLeft : E.css("paddingLeft")) + L(y ? y.paddingRight : E.css("paddingRight")) + L(y ? y.borderLeftWidth : E.css("borderLeftWidth")) + L(y ? y.borderRightWidth : E.css("borderRightWidth")) }, O = { vert: C.vert + L(y ? y.marginTop : E.css("marginTop")) + L(y ? y.marginBottom : E.css("marginBottom")) + 2, horiz: C.horiz + L(y ? y.marginLeft : E.css("marginLeft")) + L(y ? y.marginRight : E.css("marginRight")) + 2 }; s.style.overflowY = "scroll", v = i.offsetWidth - S, document.body.removeChild(t), this.sizeInfo.liHeight = g, this.sizeInfo.dropdownHeaderHeight = b, this.sizeInfo.headerHeight = w, this.sizeInfo.searchHeight = I, this.sizeInfo.actionsHeight = x, this.sizeInfo.doneButtonHeight = k, this.sizeInfo.dividerHeight = $, this.sizeInfo.menuPadding = C, this.sizeInfo.menuExtras = O, this.sizeInfo.menuWidth = S, this.sizeInfo.menuInnerInnerWidth = S - C.horiz, this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth, this.sizeInfo.scrollBarWidth = v, this.sizeInfo.selectHeight = this.$newElement[0].offsetHeight, this.setPositionData() } }, getSelectPosition: function () { var e, t = z(window), i = this.$newElement.offset(), s = z(this.options.container); this.options.container && s.length && !s.is("body") ? ((e = s.offset()).top += parseInt(s.css("borderTopWidth")), e.left += parseInt(s.css("borderLeftWidth"))) : e = { top: 0, left: 0 }; var n = this.options.windowPadding; this.sizeInfo.selectOffsetTop = i.top - e.top - t.scrollTop(), this.sizeInfo.selectOffsetBot = t.height() - this.sizeInfo.selectOffsetTop - this.sizeInfo.selectHeight - e.top - n[2], this.sizeInfo.selectOffsetLeft = i.left - e.left - t.scrollLeft(), this.sizeInfo.selectOffsetRight = t.width() - this.sizeInfo.selectOffsetLeft - this.sizeInfo.selectWidth - e.left - n[1], this.sizeInfo.selectOffsetTop -= n[0], this.sizeInfo.selectOffsetLeft -= n[3] }, setMenuSize: function (e) { this.getSelectPosition(); var t, i, s, n, o, r, l, a = this.sizeInfo.selectWidth, c = this.sizeInfo.liHeight, d = this.sizeInfo.headerHeight, h = this.sizeInfo.searchHeight, p = this.sizeInfo.actionsHeight, u = this.sizeInfo.doneButtonHeight, f = this.sizeInfo.dividerHeight, m = this.sizeInfo.menuPadding, v = 0; if (this.options.dropupAuto && (l = c * this.selectpicker.current.elements.length + m.vert, this.$newElement.toggleClass(V.DROPUP, this.sizeInfo.selectOffsetTop - this.sizeInfo.selectOffsetBot > this.sizeInfo.menuExtras.vert && l + this.sizeInfo.menuExtras.vert + 50 > this.sizeInfo.selectOffsetBot)), "auto" === this.options.size) n = 3 < this.selectpicker.current.elements.length ? 3 * this.sizeInfo.liHeight + this.sizeInfo.menuExtras.vert - 2 : 0, i = this.sizeInfo.selectOffsetBot - this.sizeInfo.menuExtras.vert, s = n + d + h + p + u, r = Math.max(n - m.vert, 0), this.$newElement.hasClass(V.DROPUP) && (i = this.sizeInfo.selectOffsetTop - this.sizeInfo.menuExtras.vert), t = (o = i) - d - h - p - u - m.vert; else if (this.options.size && "auto" != this.options.size && this.selectpicker.current.elements.length > this.options.size) { for (var g = 0; g < this.options.size; g++)"divider" === this.selectpicker.current.data[g].type && v++; t = (i = c * this.options.size + v * f + m.vert) - m.vert, o = i + d + h + p + u, s = r = "" } this.$menu.css({ "max-height": o + "px", overflow: "hidden", "min-height": s + "px" }), this.$menuInner.css({ "max-height": t + "px", "overflow-y": "auto", "min-height": r + "px" }), this.sizeInfo.menuInnerHeight = Math.max(t, 1), this.selectpicker.current.data.length && this.selectpicker.current.data[this.selectpicker.current.data.length - 1].position > this.sizeInfo.menuInnerHeight && (this.sizeInfo.hasScrollBar = !0, this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth + this.sizeInfo.scrollBarWidth), "auto" === this.options.dropdownAlignRight && this.$menu.toggleClass(V.MENURIGHT, this.sizeInfo.selectOffsetLeft > this.sizeInfo.selectOffsetRight && this.sizeInfo.selectOffsetRight < this.sizeInfo.totalMenuWidth - a), this.dropdown && this.dropdown._popper && this.dropdown._popper.update() }, setSize: function (e) { if (this.liHeight(e), this.options.header && this.$menu.css("padding-top", 0), !1 !== this.options.size) { var t = this, i = z(window); this.setMenuSize(), this.options.liveSearch && this.$searchbox.off("input.setMenuSize propertychange.setMenuSize").on("input.setMenuSize propertychange.setMenuSize", function () { return t.setMenuSize() }), "auto" === this.options.size ? i.off("resize" + j + "." + this.selectId + ".setMenuSize scroll" + j + "." + this.selectId + ".setMenuSize").on("resize" + j + "." + this.selectId + ".setMenuSize scroll" + j + "." + this.selectId + ".setMenuSize", function () { return t.setMenuSize() }) : this.options.size && "auto" != this.options.size && this.selectpicker.current.elements.length > this.options.size && i.off("resize" + j + "." + this.selectId + ".setMenuSize scroll" + j + "." + this.selectId + ".setMenuSize"), t.createView(!1, !0, e) } }, setWidth: function () { var i = this; "auto" === this.options.width ? requestAnimationFrame(function () { i.$menu.css("min-width", "0"), i.$element.on("loaded" + j, function () { i.liHeight(), i.setMenuSize(); var e = i.$newElement.clone().appendTo("body"), t = e.css("width", "auto").children("button").outerWidth(); e.remove(), i.sizeInfo.selectWidth = Math.max(i.sizeInfo.totalMenuWidth, t), i.$newElement.css("width", i.sizeInfo.selectWidth + "px") }) }) : "fit" === this.options.width ? (this.$menu.css("min-width", ""), this.$newElement.css("width", "").addClass("fit-width")) : this.options.width ? (this.$menu.css("min-width", ""), this.$newElement.css("width", this.options.width)) : (this.$menu.css("min-width", ""), this.$newElement.css("width", "")), this.$newElement.hasClass("fit-width") && "fit" !== this.options.width && this.$newElement[0].classList.remove("fit-width") }, selectPosition: function () { this.$bsContainer = z('<div class="bs-container" />'); function e(e) { var t = {}, i = r.options.display || !!z.fn.dropdown.Constructor.Default && z.fn.dropdown.Constructor.Default.display; r.$bsContainer.addClass(e.attr("class").replace(/form-control|fit-width/gi, "")).toggleClass(V.DROPUP, e.hasClass(V.DROPUP)), s = e.offset(), l.is("body") ? n = { top: 0, left: 0 } : ((n = l.offset()).top += parseInt(l.css("borderTopWidth")) - l.scrollTop(), n.left += parseInt(l.css("borderLeftWidth")) - l.scrollLeft()), o = e.hasClass(V.DROPUP) ? 0 : e[0].offsetHeight, (R.major < 4 || "static" === i) && (t.top = s.top - n.top + o, t.left = s.left - n.left), t.width = e[0].offsetWidth, r.$bsContainer.css(t) } var s, n, o, r = this, l = z(this.options.container); this.$button.on("click.bs.dropdown.data-api", function () { r.isDisabled() || (e(r.$newElement), r.$bsContainer.appendTo(r.options.container).toggleClass(V.SHOW, !r.$button.hasClass(V.SHOW)).append(r.$menu)) }), z(window).off("resize" + j + "." + this.selectId + " scroll" + j + "." + this.selectId).on("resize" + j + "." + this.selectId + " scroll" + j + "." + this.selectId, function () { r.$newElement.hasClass(V.SHOW) && e(r.$newElement) }), this.$element.on("hide" + j, function () { r.$menu.data("height", r.$menu.height()), r.$bsContainer.detach() }) }, setOptionStatus: function (e) { var t = this; if (t.noScroll = !1, t.selectpicker.view.visibleElements && t.selectpicker.view.visibleElements.length) for (var i = 0; i < t.selectpicker.view.visibleElements.length; i++) { var s = t.selectpicker.current.data[i + t.selectpicker.view.position0], n = s.option; n && (!0 !== e && t.setDisabled(s.index, s.disabled), t.setSelected(s.index, n.selected)) } }, setSelected: function (e, t) { var i, s, n = this.selectpicker.main.elements[e], o = this.selectpicker.main.data[e], r = void 0 !== this.activeIndex, l = this.activeIndex === e || t && !this.multiple && !r; o.selected = t, s = n.firstChild, t && (this.selectedIndex = e), n.classList.toggle("selected", t), l ? (this.focusItem(n, o), this.selectpicker.view.currentActive = n, this.activeIndex = e) : this.defocusItem(n), s && (s.classList.toggle("selected", t), t ? s.setAttribute("aria-selected", !0) : this.multiple ? s.setAttribute("aria-selected", !1) : s.removeAttribute("aria-selected")), l || r || !t || void 0 === this.prevActiveIndex || (i = this.selectpicker.main.elements[this.prevActiveIndex], this.defocusItem(i)) }, setDisabled: function (e, t) { var i, s = this.selectpicker.main.elements[e]; this.selectpicker.main.data[e].disabled = t, i = s.firstChild, s.classList.toggle(V.DISABLED, t), i && ("4" === R.major && i.classList.toggle(V.DISABLED, t), t ? (i.setAttribute("aria-disabled", t), i.setAttribute("tabindex", -1)) : (i.removeAttribute("aria-disabled"), i.setAttribute("tabindex", 0))) }, isDisabled: function () { return this.$element[0].disabled }, checkDisabled: function () { this.isDisabled() ? (this.$newElement[0].classList.add(V.DISABLED), this.$button.addClass(V.DISABLED).attr("tabindex", -1).attr("aria-disabled", !0)) : (this.$button[0].classList.contains(V.DISABLED) && (this.$newElement[0].classList.remove(V.DISABLED), this.$button.removeClass(V.DISABLED).attr("aria-disabled", !1)), -1 != this.$button.attr("tabindex") || this.$element.data("tabindex") || this.$button.removeAttr("tabindex")) }, tabIndex: function () { this.$element.data("tabindex") !== this.$element.attr("tabindex") && -98 !== this.$element.attr("tabindex") && "-98" !== this.$element.attr("tabindex") && (this.$element.data("tabindex", this.$element.attr("tabindex")), this.$button.attr("tabindex", this.$element.data("tabindex"))), this.$element.attr("tabindex", -98) }, clickListener: function () { var C = this, t = z(document); function e() { C.options.liveSearch ? C.$searchbox.trigger("focus") : C.$menuInner.trigger("focus") } function i() { C.dropdown && C.dropdown._popper && C.dropdown._popper.state.isCreated ? e() : requestAnimationFrame(i) } t.data("spaceSelect", !1), this.$button.on("keyup", function (e) { /(32)/.test(e.keyCode.toString(10)) && t.data("spaceSelect") && (e.preventDefault(), t.data("spaceSelect", !1)) }), this.$newElement.on("show.bs.dropdown", function () { 3 < R.major && !C.dropdown && (C.dropdown = C.$button.data("bs.dropdown"), C.dropdown._menu = C.$menu[0]) }), this.$button.on("click.bs.dropdown.data-api", function () { C.$newElement.hasClass(V.SHOW) || C.setSize() }), this.$element.on("shown" + j, function () { C.$menuInner[0].scrollTop !== C.selectpicker.view.scrollTop && (C.$menuInner[0].scrollTop = C.selectpicker.view.scrollTop), 3 < R.major ? requestAnimationFrame(i) : e() }), this.$menuInner.on("mouseenter", "li a", function (e) { var t = this.parentElement, i = C.isVirtual() ? C.selectpicker.view.position0 : 0, s = Array.prototype.indexOf.call(t.parentElement.children, t), n = C.selectpicker.current.data[s + i]; C.focusItem(t, n, !0) }), this.$menuInner.on("click", "li a", function (e, t) { var i = z(this), s = C.$element[0], n = C.isVirtual() ? C.selectpicker.view.position0 : 0, o = C.selectpicker.current.data[i.parent().index() + n], r = o.index, l = T(s), a = s.selectedIndex, c = s.options[a], d = !0; if (C.multiple && 1 !== C.options.maxOptions && e.stopPropagation(), e.preventDefault(), !C.isDisabled() && !i.parent().hasClass(V.DISABLED)) { var h = o.option, p = z(h), u = h.selected, f = p.parent("optgroup"), m = f.find("option"), v = C.options.maxOptions, g = f.data("maxOptions") || !1; if (r === C.activeIndex && (t = !0), t || (C.prevActiveIndex = C.activeIndex, C.activeIndex = void 0), C.multiple) { if (h.selected = !u, C.setSelected(r, !u), i.trigger("blur"), !1 !== v || !1 !== g) { var b = v < O(s).length, w = g < f.find("option:selected").length; if (v && b || g && w) if (v && 1 == v) s.selectedIndex = -1, h.selected = !0, C.setOptionStatus(!0); else if (g && 1 == g) { for (var I = 0; I < m.length; I++) { var x = m[I]; x.selected = !1, C.setSelected(x.liIndex, !1) } h.selected = !0, C.setSelected(r, !0) } else { var k = "string" == typeof C.options.maxOptionsText ? [C.options.maxOptionsText, C.options.maxOptionsText] : C.options.maxOptionsText, $ = "function" == typeof k ? k(v, g) : k, y = $[0].replace("{n}", v), S = $[1].replace("{n}", g), E = z('<div class="notify"></div>'); $[2] && (y = y.replace("{var}", $[2][1 < v ? 0 : 1]), S = S.replace("{var}", $[2][1 < g ? 0 : 1])), h.selected = !1, C.$menu.append(E), v && b && (E.append(z("<div>" + y + "</div>")), d = !1, C.$element.trigger("maxReached" + j)), g && w && (E.append(z("<div>" + S + "</div>")), d = !1, C.$element.trigger("maxReachedGrp" + j)), setTimeout(function () { C.setSelected(r, !1) }, 10), E[0].classList.add("fadeOut"), setTimeout(function () { E.remove() }, 1050) } } } else c && (c.selected = !1), h.selected = !0, C.setSelected(r, !0); !C.multiple || C.multiple && 1 === C.options.maxOptions ? C.$button.trigger("focus") : C.options.liveSearch && C.$searchbox.trigger("focus"), d && (!C.multiple && a === s.selectedIndex || (A = [h.index, p.prop("selected"), l], C.$element.triggerNative("change"))) } }), this.$menu.on("click", "li." + V.DISABLED + " a, ." + V.POPOVERHEADER + ", ." + V.POPOVERHEADER + " :not(.close)", function (e) { e.currentTarget == this && (e.preventDefault(), e.stopPropagation(), C.options.liveSearch && !z(e.target).hasClass("close") ? C.$searchbox.trigger("focus") : C.$button.trigger("focus")) }), this.$menuInner.on("click", ".divider, .dropdown-header", function (e) { e.preventDefault(), e.stopPropagation(), C.options.liveSearch ? C.$searchbox.trigger("focus") : C.$button.trigger("focus") }), this.$menu.on("click", "." + V.POPOVERHEADER + " .close", function () { C.$button.trigger("click") }), this.$searchbox.on("click", function (e) { e.stopPropagation() }), this.$menu.on("click", ".actions-btn", function (e) { C.options.liveSearch ? C.$searchbox.trigger("focus") : C.$button.trigger("focus"), e.preventDefault(), e.stopPropagation(), z(this).hasClass("bs-select-all") ? C.selectAll() : C.deselectAll() }), this.$element.on("change" + j, function () { C.render(), C.$element.trigger("changed" + j, A), A = null }).on("focus" + j, function () { C.options.mobile || C.$button.trigger("focus") }) }, liveSearchListener: function () { var u = this, f = document.createElement("li"); this.$button.on("click.bs.dropdown.data-api", function () { u.$searchbox.val() && u.$searchbox.val("") }), this.$searchbox.on("click.bs.dropdown.data-api focus.bs.dropdown.data-api touchend.bs.dropdown.data-api", function (e) { e.stopPropagation() }), this.$searchbox.on("input propertychange", function () { var e = u.$searchbox.val(); if (u.selectpicker.search.elements = [], u.selectpicker.search.data = [], e) { var t = [], i = e.toUpperCase(), s = {}, n = [], o = u._searchStyle(), r = u.options.liveSearchNormalize; r && (i = w(i)), u._$lisSelected = u.$menuInner.find(".selected"); for (var l = 0; l < u.selectpicker.main.data.length; l++) { var a = u.selectpicker.main.data[l]; s[l] || (s[l] = k(a, i, o, r)), s[l] && void 0 !== a.headerIndex && -1 === n.indexOf(a.headerIndex) && (0 < a.headerIndex && (s[a.headerIndex - 1] = !0, n.push(a.headerIndex - 1)), s[a.headerIndex] = !0, n.push(a.headerIndex), s[a.lastIndex + 1] = !0), s[l] && "optgroup-label" !== a.type && n.push(l) } l = 0; for (var c = n.length; l < c; l++) { var d = n[l], h = n[l - 1], p = (a = u.selectpicker.main.data[d], u.selectpicker.main.data[h]); ("divider" !== a.type || "divider" === a.type && p && "divider" !== p.type && c - 1 !== l) && (u.selectpicker.search.data.push(a), t.push(u.selectpicker.main.elements[d])) } u.activeIndex = void 0, u.noScroll = !0, u.$menuInner.scrollTop(0), u.selectpicker.search.elements = t, u.createView(!0), t.length || (f.className = "no-results", f.innerHTML = u.options.noneResultsText.replace("{0}", '"' + S(e) + '"'), u.$menuInner[0].firstChild.appendChild(f)) } else u.$menuInner.scrollTop(0), u.createView(!1) }) }, _searchStyle: function () { return this.options.liveSearchStyle || "contains" }, val: function (e) { var t = this.$element[0]; if (void 0 === e) return this.$element.val(); var i = T(t); if (A = [null, null, i], this.$element.val(e).trigger("changed" + j, A), this.$newElement.hasClass(V.SHOW)) if (this.multiple) this.setOptionStatus(!0); else { var s = (t.options[t.selectedIndex] || {}).liIndex; "number" == typeof s && (this.setSelected(this.selectedIndex, !1), this.setSelected(s, !0)) } return this.render(), A = null, this.$element }, changeAll: function (e) { if (this.multiple) { void 0 === e && (e = !0); var t = this.$element[0], i = 0, s = 0, n = T(t); t.classList.add("bs-select-hidden"); for (var o = 0, r = this.selectpicker.current.elements.length; o < r; o++) { var l = this.selectpicker.current.data[o], a = l.option; a && !l.disabled && "divider" !== l.type && (l.selected && i++, (a.selected = e) && s++) } t.classList.remove("bs-select-hidden"), i !== s && (this.setOptionStatus(), A = [null, null, n], this.$element.triggerNative("change")) } }, selectAll: function () { return this.changeAll(!0) }, deselectAll: function () { return this.changeAll(!1) }, toggle: function (e) { (e = e || window.event) && e.stopPropagation(), this.$button.trigger("click.bs.dropdown.data-api") }, keydown: function (e) { var t, i, s, n, o, r = z(this), l = r.hasClass("dropdown-toggle"), a = (l ? r.closest(".dropdown") : r.closest(F.MENU)).data("this"), c = a.findLis(), d = !1, h = e.which === W && !l && !a.options.selectOnTab, p = G.test(e.which) || h, u = a.$menuInner[0].scrollTop, f = !0 === a.isVirtual() ? a.selectpicker.view.position0 : 0; if (!(112 <= e.which && e.which <= 123)) if (!(i = a.$newElement.hasClass(V.SHOW)) && (p || 48 <= e.which && e.which <= 57 || 96 <= e.which && e.which <= 105 || 65 <= e.which && e.which <= 90) && (a.$button.trigger("click.bs.dropdown.data-api"), a.options.liveSearch)) a.$searchbox.trigger("focus"); else { if (e.which === N && i && (e.preventDefault(), a.$button.trigger("click.bs.dropdown.data-api").trigger("focus")), p) { if (!c.length) return; -1 !== (t = (s = a.selectpicker.main.elements[a.activeIndex]) ? Array.prototype.indexOf.call(s.parentElement.children, s) : -1) && a.defocusItem(s), e.which === B ? (-1 !== t && t--, t + f < 0 && (t += c.length), a.selectpicker.view.canHighlight[t + f] || -1 === (t = a.selectpicker.view.canHighlight.slice(0, t + f).lastIndexOf(!0) - f) && (t = c.length - 1)) : e.which !== M && !h || (++t + f >= a.selectpicker.view.canHighlight.length && (t = 0), a.selectpicker.view.canHighlight[t + f] || (t = t + 1 + a.selectpicker.view.canHighlight.slice(t + f + 1).indexOf(!0))), e.preventDefault(); var m = f + t; e.which === B ? 0 === f && t === c.length - 1 ? (a.$menuInner[0].scrollTop = a.$menuInner[0].scrollHeight, m = a.selectpicker.current.elements.length - 1) : d = (o = (n = a.selectpicker.current.data[m]).position - n.height) < u : e.which !== M && !h || (0 === t ? m = a.$menuInner[0].scrollTop = 0 : d = u < (o = (n = a.selectpicker.current.data[m]).position - a.sizeInfo.menuInnerHeight)), s = a.selectpicker.current.elements[m], a.activeIndex = a.selectpicker.current.data[m].index, a.focusItem(s), a.selectpicker.view.currentActive = s, d && (a.$menuInner[0].scrollTop = o), a.options.liveSearch ? a.$searchbox.trigger("focus") : r.trigger("focus") } else if (!r.is("input") && !q.test(e.which) || e.which === H && a.selectpicker.keydown.keyHistory) { var v, g, b = []; e.preventDefault(), a.selectpicker.keydown.keyHistory += C[e.which], a.selectpicker.keydown.resetKeyHistory.cancel && clearTimeout(a.selectpicker.keydown.resetKeyHistory.cancel), a.selectpicker.keydown.resetKeyHistory.cancel = a.selectpicker.keydown.resetKeyHistory.start(), g = a.selectpicker.keydown.keyHistory, /^(.)\1+$/.test(g) && (g = g.charAt(0)); for (var w = 0; w < a.selectpicker.current.data.length; w++) { var I = a.selectpicker.current.data[w]; k(I, g, "startsWith", !0) && a.selectpicker.view.canHighlight[w] && b.push(I.index) } if (b.length) { var x = 0; c.removeClass("active").find("a").removeClass("active"), 1 === g.length && (-1 === (x = b.indexOf(a.activeIndex)) || x === b.length - 1 ? x = 0 : x++), v = b[x], d = 0 < u - (n = a.selectpicker.main.data[v]).position ? (o = n.position - n.height, !0) : (o = n.position - a.sizeInfo.menuInnerHeight, n.position > u + a.sizeInfo.menuInnerHeight), s = a.selectpicker.main.elements[v], a.activeIndex = b[x], a.focusItem(s), s && s.firstChild.focus(), d && (a.$menuInner[0].scrollTop = o), r.trigger("focus") } } i && (e.which === H && !a.selectpicker.keydown.keyHistory || e.which === D || e.which === W && a.options.selectOnTab) && (e.which !== H && e.preventDefault(), a.options.liveSearch && e.which === H || (a.$menuInner.find(".active a").trigger("click", !0), r.trigger("focus"), a.options.liveSearch || (e.preventDefault(), z(document).data("spaceSelect", !0)))) } }, mobile: function () { this.$element[0].classList.add("mobile-device") }, refresh: function () { var e = z.extend({}, this.options, this.$element.data()); this.options = e, this.checkDisabled(), this.setStyle(), this.render(), this.createLi(), this.setWidth(), this.setSize(!0), this.$element.trigger("refreshed" + j) }, hide: function () { this.$newElement.hide() }, show: function () { this.$newElement.show() }, remove: function () { this.$newElement.remove(), this.$element.remove() }, destroy: function () { this.$newElement.before(this.$element).remove(), this.$bsContainer ? this.$bsContainer.remove() : this.$menu.remove(), this.$element.off(j).removeData("selectpicker").removeClass("bs-select-hidden selectpicker"), z(window).off(j + "." + this.selectId) } }; var ee = z.fn.selectpicker; z.fn.selectpicker = X, z.fn.selectpicker.Constructor = Q, z.fn.selectpicker.noConflict = function () { return z.fn.selectpicker = ee, this }, z(document).off("keydown.bs.dropdown.data-api", '.bootstrap-select [data-toggle="dropdown"], .bootstrap-select .dropdown-menu').on("keydown" + j, '.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input', Q.prototype.keydown).on("focusin.modal", '.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input', function (e) { e.stopPropagation() }), z(window).on("load" + j + ".data-api", function () { z(".selectpicker").each(function () { var e = z(this); X.call(e, e.data()) }) }) }(e) });
//# sourceMappingURL=bootstrap-select.min.js.map
/**
* Tagify (v 3.4.0)- tags input component
* By Yair Even-Or
* Don't sell this code. (c)
* https://github.com/yairEO/tagify
*/
"use strict"; function _toConsumableArray(t) { return _arrayWithoutHoles(t) || _iterableToArray(t) || _nonIterableSpread() } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance") } function _iterableToArray(t) { if (Symbol.iterator in Object(t) || "[object Arguments]" === Object.prototype.toString.call(t)) return Array.from(t) } function _arrayWithoutHoles(t) { if (Array.isArray(t)) { for (var e = 0, i = new Array(t.length); e < t.length; e++)i[e] = t[e]; return i } } function ownKeys(e, t) { var i = Object.keys(e); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); t && (s = s.filter(function (t) { return Object.getOwnPropertyDescriptor(e, t).enumerable })), i.push.apply(i, s) } return i } function _objectSpread(e) { for (var t = 1; t < arguments.length; t++) { var i = null != arguments[t] ? arguments[t] : {}; t % 2 ? ownKeys(i, !0).forEach(function (t) { _defineProperty(e, t, i[t]) }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : ownKeys(i).forEach(function (t) { Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t)) }) } return e } function _defineProperty(t, e, i) { return e in t ? Object.defineProperty(t, e, { value: i, enumerable: !0, configurable: !0, writable: !0 }) : t[e] = i, t } !function (s) { s.fn.tagify = function () { var i = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {}; return this.each(function () { var t, e = s(this); if (e.data("tagify")) return this; i.isJQueryPlugin = !0, t = new n(e[0], i), e.data("tagify", t) }) }; function h() { return ((new Date).getTime() + Math.floor(1e4 * Math.random() + 1)).toString(16) } var o = "undefined" != typeof InstallTrigger; function r(t) { var e = document.createElement("div"); return t.replace(/\&#?[0-9a-z]+;/gi, function (t) { return e.innerHTML = t, e.innerText }) } function n(t, e) { if (!t) return console.warn("Tagify: ", "invalid input element ", t), this; this.applySettings(t, e || {}), this.state = { editing: {}, actions: {}, dropdown: {} }, this.value = [], this.tagsDataById = {}, this.listeners = {}, this.DOM = {}, this.extend(this, new this.EventDispatcher(this)), this.build(t), this.getCSSVars(), this.loadOriginalValues(), this.events.customBinding.call(this), this.events.binding.call(this), t.autofocus && this.DOM.input.focus() } n.prototype = { isIE: window.document.documentMode, TEXTS: { empty: "empty", exceed: "number of tags exceeded", pattern: "pattern mismatch", duplicate: "already exists", notAllowed: "not allowed" }, DEFAULTS: { delimiters: ",", pattern: null, maxTags: 1 / 0, callbacks: {}, addTagOnBlur: !0, duplicates: !1, whitelist: [], blacklist: [], enforceWhitelist: !1, keepInvalidTags: !1, mixTagsAllowedAfter: /,|\.|\:|\s/, mixTagsInterpolator: ["[[", "]]"], backspace: !0, skipInvalid: !1, editTags: 2, transformTag: function () { }, autoComplete: { enabled: !0, rightKey: !1 }, dropdown: { classname: "", enabled: 2, maxItems: 10, searchKeys: [], fuzzySearch: !0, highlightFirst: !1, closeOnSelect: !0, position: "all" } }, templates: { wrapper: function (t, e) { return '<tags class="tagify '.concat(e.mode ? "tagify--" + e.mode : "", " ").concat(t.className, '"\n ').concat(e.readonly ? 'readonly aria-readonly="true"' : 'aria-haspopup="listbox" aria-expanded="false"', '\n role="tagslist"\n tabIndex="-1">\n <span contenteditable data-placeholder="').concat(e.placeholder || "&#8203;", '" aria-placeholder="').concat(e.placeholder || "", '"\n class="tagify__input"\n role="textbox"\n aria-autocomplete="both"\n aria-multiline="').concat("mix" == e.mode, '"></span>\n </tags>') }, tag: function (t, e) { return '<tag title="'.concat(e.title || t, "\"\n contenteditable='false'\n spellcheck='false'\n tabIndex=\"-1\"\n class=\"tagify__tag ").concat(e.class ? e.class : "", '"\n ').concat(this.getAttributes(e), ">\n <x title='' class='tagify__tag__removeBtn' role='button' aria-label='remove tag'></x>\n <div>\n <span class='tagify__tag-text'>").concat(t, "</span>\n </div>\n </tag>") }, dropdownItem: function (t) { var e = this.settings.dropdown.mapValueTo, i = ((e ? "function" == typeof e ? e(t) : t[e] : t.value) || t.value || t).replace(/`|'/g, "&#39;"); return "<div ".concat(this.getAttributes(t), "\n class='tagify__dropdown__item ").concat(t.class ? t.class : "", '\'\n tabindex="0"\n role="option">').concat(i, "</div>") } }, customEventsList: ["add", "remove", "invalid", "input", "click", "keydown", "focus", "blur", "edit:input", "edit:updated", "edit:start", "edit:keydown", "dropdown:show", "dropdown:hide", "dropdown:select"], applySettings: function (i, t) { var s = this; if (this.DEFAULTS.templates = this.templates, this.settings = this.extend({}, this.DEFAULTS, t), this.settings.readonly = i.hasAttribute("readonly"), this.settings.placeholder = i.getAttribute("placeholder") || this.settings.placeholder || "", this.isIE && (this.settings.autoComplete = !1), ["whitelist", "blacklist"].forEach(function (t) { var e = i.getAttribute("data-" + t); e && (e = e.split(s.settings.delimiters)) instanceof Array && (s.settings[t] = e) }), "autoComplete" in t && !this.isObject(t.autoComplete) && (this.settings.autoComplete = this.DEFAULTS.autoComplete, this.settings.autoComplete.enabled = t.autoComplete), i.pattern) try { this.settings.pattern = new RegExp(i.pattern) } catch (t) { } if (this.settings.delimiters) try { this.settings.delimiters = new RegExp(this.settings.delimiters, "g") } catch (t) { } "select" == this.settings.mode && (this.settings.dropdown.enabled = 0), "mix" == this.settings.mode && (this.settings.autoComplete.rightKey = !0) }, getAttributes: function (t) { if ("[object Object]" != Object.prototype.toString.call(t)) return ""; var e, i, s = Object.keys(t), n = ""; for (i = s.length; i--;)"class" != (e = s[i]) && t.hasOwnProperty(e) && t[e] && (n += " " + e + (t[e] ? '="'.concat(t[e], '"') : "")); return n }, parseHTML: function (t) { return (new DOMParser).parseFromString(t.trim(), "text/html").body.firstElementChild }, getCaretGlobalPosition: function () { var t = document.getSelection(); if (t.rangeCount) { var e, i, s = t.getRangeAt(0), n = s.startContainer, a = s.startOffset; if (0 < a) return (i = document.createRange()).setStart(n, a - 1), i.setEnd(n, a), { left: (e = i.getBoundingClientRect()).right, top: e.top, bottom: e.bottom } } return { left: -9999, top: -9999 } }, getCSSVars: function () { var t, e, i, s = getComputedStyle(this.DOM.scope, null); this.CSSVars = { tagHideTransition: (t = function (t) { if (!t) return {}; var e = (t = t.trim().split(" ")[0]).split(/\d+/g).filter(function (t) { return t }).pop().trim(); return { value: +t.split(e).filter(function (t) { return t })[0].trim(), unit: e } }((i = "tag-hide-transition", s.getPropertyValue("--" + i))), e = t.value, "s" == t.unit ? 1e3 * e : e) } }, build: function (t) { var e = this.DOM, i = this.settings.templates.wrapper(t, this.settings); e.originalInput = t, e.scope = this.parseHTML(i), e.input = e.scope.querySelector("[contenteditable]"), t.parentNode.insertBefore(e.scope, t), 0 <= this.settings.dropdown.enabled && this.dropdown.init.call(this) }, destroy: function () { this.DOM.scope.parentNode.removeChild(this.DOM.scope), this.dropdown.hide.call(this, !0) }, loadOriginalValues: function (t) { if (t = t || this.DOM.originalInput.value) if (this.removeAllTags(), "mix" == this.settings.mode) this.parseMixTags(t.trim()); else { try { "string" != typeof JSON.parse(t) && (t = JSON.parse(t)) } catch (t) { } this.addTags(t).forEach(function (t) { return t && t.classList.add("tagify--noAnim") }) } }, isObject: function (t) { var e = Object.prototype.toString.call(t).split(" ")[1].slice(0, -1); return t === Object(t) && "Array" != e && "Function" != e && "RegExp" != e && "HTMLUnknownElement" != e }, extend: function (t, e, i) { var s = this; function n(t, e) { for (var i in e) e.hasOwnProperty(i) && (s.isObject(e[i]) ? s.isObject(t[i]) ? n(t[i], e[i]) : t[i] = Object.assign({}, e[i]) : t[i] = e[i]) } return t instanceof Object || (t = {}), n(t, e), i && n(t, i), t }, cloneEvent: function (t) { var e = {}; for (var i in t) e[i] = t[i]; return e }, EventDispatcher: function (s) { var n = document.createTextNode(""); function i(e, t, i) { i && t.split(/\s+/g).forEach(function (t) { return n[e + "EventListener"].call(n, t, i) }) } this.off = function (t, e) { return i("remove", t, e), this }, this.on = function (t, e) { return e && "function" == typeof e && i("add", t, e), this }, this.trigger = function (t, e) { var i; if (t) if (s.settings.isJQueryPlugin) "remove" == t && (t = "removeTag"), jQuery(s.DOM.originalInput).triggerHandler(t, [e]); else { try { i = new CustomEvent(t, { detail: this.extend({}, e, { tagify: this }) }) } catch (t) { console.warn(t) } n.dispatchEvent(i) } } }, loading: function (t) { return this.DOM.scope.classList[t ? "add" : "remove"]("tagify--loading"), this }, toggleFocusClass: function (t) { this.DOM.scope.classList.toggle("tagify--focus", !!t) }, events: { customBinding: function () { var e = this; this.customEventsList.forEach(function (t) { e.on(t, e.settings.callbacks[t]) }) }, binding: function (t) { var e, i = !(0 < arguments.length && void 0 !== t) || t, s = this.events.callbacks, n = i ? "addEventListener" : "removeEventListener"; if (!this.state.mainEvents || !i) for (var a in (this.state.mainEvents = i) && !this.listeners.main && (this.DOM.input.addEventListener(this.isIE ? "keydown" : "input", s[this.isIE ? "onInputIE" : "onInput"].bind(this)), this.settings.isJQueryPlugin && jQuery(this.DOM.originalInput).on("tagify.removeAllTags", this.removeAllTags.bind(this))), e = this.listeners.main = this.listeners.main || { focus: ["input", s.onFocusBlur.bind(this)], blur: ["input", s.onFocusBlur.bind(this)], keydown: ["input", s.onKeydown.bind(this)], click: ["scope", s.onClickScope.bind(this)], dblclick: ["scope", s.onDoubleClickScope.bind(this)] }) { if ("blur" == a && !i) return; this.DOM[e[a][0]][n](a, e[a][1]) } }, callbacks: { onFocusBlur: function (t) { var e = t.target ? t.target.textContent.trim() : "", i = this.settings, s = t.type; if (!(t.relatedTarget && t.relatedTarget.classList.contains("tagify__tag") && this.DOM.scope.contains(t.relatedTarget))) { if ("blur" == s && t.relatedTarget === this.DOM.scope) return this.dropdown.hide.call(this), void this.DOM.input.focus(); if (!this.state.actions.selectOption || !i.dropdown.enabled && i.dropdown.closeOnSelect) if (this.state.hasFocus = "focus" == s && +new Date, this.toggleFocusClass(this.state.hasFocus), this.setRangeAtStartEnd(!1), "mix" != i.mode) { if ("focus" == s) return this.trigger("focus", { relatedTarget: t.relatedTarget }), void (0 === i.dropdown.enabled && "select" != i.mode && this.dropdown.show.call(this)); "blur" == s && (this.trigger("blur", { relatedTarget: t.relatedTarget }), this.loading(!1), ("select" == this.settings.mode ? !this.value.length || this.value[0].value != e : e && !this.state.actions.selectOption && i.addTagOnBlur) && this.addTags(e, !0)), this.DOM.input.removeAttribute("style"), this.dropdown.hide.call(this) } else "blur" == t.type && this.dropdown.hide.call(this) } }, onKeydown: function (t) { var e = this, i = t.target.textContent.trim(); if (this.trigger("keydown", { originalEvent: this.cloneEvent(t) }), "mix" == this.settings.mode) { switch (t.key) { case "Left": case "ArrowLeft": this.state.actions.ArrowLeft = !0; break; case "Delete": case "Backspace": var s = document.getSelection(), n = [], a = r(this.DOM.input.innerHTML); setTimeout(function () { if (r(e.DOM.input.innerHTML).length >= a.length && (e.removeTag(s.anchorNode.previousElementSibling), 2 == e.DOM.input.children.length && "BR" == e.DOM.input.children[1].tagName)) return e.DOM.input.innerHTML = "", !(e.value.length = 0); var t = e.DOM.input.querySelectorAll(".tagify__tag");[].forEach.call(t, function (t) { return n.push(t.getAttribute("value")) }), e.value = e.value.filter(function (t) { return -1 != n.indexOf(t.value) }) }, 50) }return !0 } switch (t.key) { case "Backspace": this.state.dropdown.visible || "" != i && 8203 != i.charCodeAt(0) || (!0 === this.settings.backspace ? this.removeTag() : "edit" == this.settings.backspace && setTimeout(this.editTag.bind(this), 0)); break; case "Esc": case "Escape": if (this.state.dropdown.visible) return; t.target.blur(); break; case "Down": case "ArrowDown": this.state.dropdown.visible || this.dropdown.show.call(this); break; case "ArrowRight": var o = this.state.inputSuggestion || this.state.ddItemData; if (o && this.settings.autoComplete.rightKey) return void this.addTags([o], !0); break; case "Tab": if (!i || "select" == this.settings.mode) return !0; case "Enter": t.preventDefault(), setTimeout(function () { e.state.actions.selectOption || e.addTags(i, !0) }) } }, onInput: function (t) { var e = "mix" == this.settings.mode ? this.DOM.input.textContent : this.input.normalize.call(this), i = e.length >= this.settings.dropdown.enabled, s = { value: e, inputElm: this.DOM.input }; if ("mix" == this.settings.mode) return this.events.callbacks.onMixTagsInput.call(this, t); e ? this.input.value != e && (s.isValid = this.validateTag(e), this.trigger("input", s), this.input.set.call(this, e, !1), -1 != e.search(this.settings.delimiters) ? this.addTags(e) && this.input.set.call(this) : 0 <= this.settings.dropdown.enabled && this.dropdown[i ? "show" : "hide"].call(this, e)) : this.input.set.call(this, "") }, onMixTagsInput: function () { var t, e, i, s, n, a = this, o = this.settings; if (this.hasMaxTags()) return !0; window.getSelection && 0 < (t = window.getSelection()).rangeCount && ((e = t.getRangeAt(0).cloneRange()).collapse(!0), e.setStart(window.getSelection().focusNode, 0), (s = (i = e.toString().split(o.mixTagsAllowedAfter))[i.length - 1].match(o.pattern)) && (this.state.actions.ArrowLeft = !1, this.state.tag = { prefix: s[0], value: s.input.split(s[0])[1] }, n = this.state.tag.value.length >= o.dropdown.enabled)), setTimeout(function () { a.update(), a.trigger("input", a.extend({}, a.state.tag, { textContent: a.DOM.input.textContent })), a.state.tag && a.dropdown[n ? "show" : "hide"].call(a, a.state.tag.value) }, 10) }, onInputIE: function (t) { var e = this; setTimeout(function () { e.events.callbacks.onInput.call(e, t) }) }, onClickScope: function (t) { var e, i = t.target.closest(".tagify__tag"), s = this.settings, n = new Date - this.state.hasFocus; if (t.target != this.DOM.scope) { if (!t.target.classList.contains("tagify__tag__removeBtn")) return i ? (e = this.getNodeIndex(i), this.trigger("click", { tag: i, index: e, data: this.value[e], originalEvent: this.cloneEvent(t) }), void (1 == this.settings.editTags && this.events.callbacks.onDoubleClickScope.call(this, t))) : void (t.target == this.DOM.input && 500 < n ? this.state.dropdown.visible ? this.dropdown.hide.call(this) : 0 === s.dropdown.enabled && "mix" != s.mode && this.dropdown.show.call(this) : "select" == s.mode && (this.state.dropdown.visible || this.dropdown.show.call(this))); this.removeTag(t.target.parentNode) } else this.DOM.input.focus() }, onEditTagInput: function (t, e) { var i = t.closest("tag"), s = this.getNodeIndex(i), n = this.input.normalize.call(this, t), a = n.toLowerCase() == t.originalValue.toLowerCase() || this.validateTag(n); i.classList.toggle("tagify--invalid", !0 !== a), i.isValid = !0 === a, n.length >= this.settings.dropdown.enabled && (this.state.editing.value = n, this.dropdown.show.call(this, n)), this.trigger("edit:input", { tag: i, index: s, data: this.extend({}, this.value[s], { newValue: n }), originalEvent: this.cloneEvent(e) }) }, onEditTagBlur: function (t) { if (this.state.hasFocus || this.toggleFocusClass(), this.DOM.scope.contains(t)) { var e = t.closest(".tagify__tag"), i = this.input.normalize.call(this, t), s = i || t.originalValue, n = s != t.originalValue, a = (e.isValid, _objectSpread({}, this.tagsDataById[e.__tagifyId], { value: s })); if (!i) return this.removeTag(e), void this.onEditTagDone(); n ? (this.settings.transformTag.call(this, a), !0 === (!0 === this.validateTag(a.value)) && this.onEditTagDone(e, a)) : this.onEditTagDone(e) } }, onEditTagkeydown: function (t) { switch (this.trigger("edit:keydown", { originalEvent: this.cloneEvent(t) }), t.key) { case "Esc": case "Escape": t.target.textContent = t.target.originalValue; case "Enter": case "Tab": t.preventDefault(), t.target.blur() } }, onDoubleClickScope: function (t) { var e, i, s = t.target.closest("tag"), n = this.settings; s && (e = s.classList.contains("tagify__tag--editable"), i = s.hasAttribute("readonly"), "select" == n.mode || n.readonly || e || i || !this.settings.editTags || this.editTag(s), this.toggleFocusClass(!0)) } } }, editTag: function (t, e) { var i = this; e = e || {}; var s = (t = t || this.getLastTag()).querySelector(".tagify__tag-text"), n = this.getNodeIndex(t), a = this.tagsDataById[t.__tagifyId], o = this.events.callbacks, r = this, l = !0; if (s) { if (!(a instanceof Object && "editable" in a) || a.editable) return t.classList.add("tagify__tag--editable"), s.originalValue = s.textContent, s.setAttribute("contenteditable", !0), s.addEventListener("blur", function () { setTimeout(o.onEditTagBlur.bind(r), 0, s) }), s.addEventListener("input", o.onEditTagInput.bind(this, s)), s.addEventListener("keydown", function (t) { return o.onEditTagkeydown.call(i, t) }), s.focus(), this.setRangeAtStartEnd(!1, s), e.skipValidation || (l = this.editTagToggleValidity(t, a.value)), this.state.editing = { scope: t, input: t.querySelector("[contenteditable]") }, this.trigger("edit:start", { tag: t, index: n, data: a, isValid: l }), this } else console.warn("Cannot find element in Tag template: ", ".tagify__tag-text") }, editTagToggleValidity: function (t, e) { var i = this.validateTag(e, t.__tagifyId); return t.classList.toggle("tagify--invalid", !0 !== i), t.isValid = i }, onEditTagDone: function (t, e) { var i = { tag: t, index: this.getNodeIndex(t), data: e }; this.trigger("edit:beforeUpdate", i), t && this.replaceTag(t, e), this.trigger("edit:updated", i), this.dropdown.hide.call(this) }, replaceTag: function (t, e) { var i = this; e && e.value || (e = this.tagsDataById[t.__tagifyId]), e = !0 === t.isValid ? e : this.extend(e, this.getInvaildTagParams(e, e)); var s = this.createTagElem(e); this.state.editing.locked || (this.state.editing = { locked: !0 }, setTimeout(function () { return delete i.state.editing.locked }, 500), s.__tagifyId = t.__tagifyId, t.parentNode.replaceChild(s, t), this.tagsDataById[t.__tagifyId] = e, this.updateValueByDOMTags()) }, updateValueByDOMTags: function () { var e = this; this.value = [], [].forEach.call(this.getTagElms(), function (t) { t.classList.contains("tagify--notAllowed") || e.value.push(e.tagsDataById[t.__tagifyId]) }), this.update() }, setRangeAtStartEnd: function (e, i) { i = (i = i || this.DOM.input).lastChild || i; var s = document.getSelection(); s.rangeCount && ["Start", "End"].forEach(function (t) { return s.getRangeAt(0)["set" + t](i, e ? 0 : i.length) }) }, input: { value: "", set: function (t, e) { var i = 0 < arguments.length && void 0 !== t ? t : "", s = !(1 < arguments.length && void 0 !== e) || e, n = this.settings.dropdown.closeOnSelect; this.input.value = i, s && (this.DOM.input.innerHTML = i), !i && n && setTimeout(this.dropdown.hide.bind(this), 20), this.input.autocomplete.suggest.call(this), this.input.validate.call(this) }, validate: function () { var t = !this.input.value || this.validateTag(this.input.value); "select" == this.settings.mode ? this.DOM.scope.classList.toggle("tagify--invalid", !0 !== t) : this.DOM.input.classList.toggle("tagify__input--invalid", !0 !== t) }, normalize: function (t) { var e = t || this.DOM.input, i = []; e.childNodes.forEach(function (t) { return 3 == t.nodeType && i.push(t.nodeValue) }), i = i.join("\n"); try { i = i.replace(/(?:\r\n|\r|\n)/g, this.settings.delimiters.source.charAt(0)) } catch (t) { } return i = i.replace(/\s/g, " ").replace(/^\s+/, "") }, autocomplete: { suggest: function (t) { if (this.settings.autoComplete.enabled) { "string" == typeof (t = t || {}) && (t = { value: t }); var e = t.value || "", i = e.substr(0, this.input.value.length).toLowerCase(), s = e.substring(this.input.value.length); e && this.input.value && i == this.input.value.toLowerCase() ? (this.DOM.input.setAttribute("data-suggest", s), this.state.inputSuggestion = t) : (this.DOM.input.removeAttribute("data-suggest"), delete this.state.inputSuggestion) } }, set: function (t) { var e = this.DOM.input.getAttribute("data-suggest"), i = t || (e ? this.input.value + e : null); return !!i && ("mix" == this.settings.mode ? this.replaceTextWithNode(document.createTextNode(this.state.tag.prefix + i)) : (this.input.set.call(this, i), this.setRangeAtStartEnd()), this.input.autocomplete.suggest.call(this), this.dropdown.hide.call(this), !0) } } }, getNodeIndex: function (t) { var e = 0; if (t) for (; t = t.previousElementSibling;)e++; return e }, getTagElms: function () { return this.DOM.scope.querySelectorAll(".tagify__tag") }, getLastTag: function () { var t = this.DOM.scope.querySelectorAll("tag:not(.tagify--hide):not([readonly])"); return t[t.length - 1] }, isTagDuplicate: function (e, i) { var s = this; return "select" != this.settings.mode && this.value.some(function (t) { return t.__tagifyId != i && (s.isObject(e) ? JSON.stringify(t).toLowerCase() === JSON.stringify(e).toLowerCase() : e.trim().toLowerCase() === t.value.toLowerCase()) }) }, getTagIndexByValue: function (i) { var s = []; return this.getTagElms().forEach(function (t, e) { t.textContent.trim().toLowerCase() == i.toLowerCase() && s.push(e) }), s }, getTagElmByValue: function (t) { var e = this.getTagIndexByValue(t)[0]; return this.getTagElms()[e] }, markTagByValue: function (t, e) { return !!(e = e || this.getTagElmByValue(t)) && (e.classList.add("tagify--mark"), setTimeout(function () { e.classList.remove("tagify--mark") }, 100), e) }, isTagBlacklisted: function (e) { return e = e.toLowerCase().trim(), this.settings.blacklist.filter(function (t) { return e == t.toLowerCase() }).length }, isTagWhitelisted: function (e) { return this.settings.whitelist.some(function (t) { return "string" == typeof e ? e.trim().toLowerCase() === (t.value || t).toLowerCase() : JSON.stringify(t).toLowerCase() === JSON.stringify(e).toLowerCase() }) }, validateTag: function (t, e) { var i = t.trim(), s = this.settings, n = !0; return i ? s.pattern && !s.pattern.test(i) ? n = this.TEXTS.pattern : !s.duplicates && this.isTagDuplicate(i, e) ? n = this.TEXTS.duplicate : (this.isTagBlacklisted(i) || s.enforceWhitelist && !this.isTagWhitelisted(i)) && (n = this.TEXTS.notAllowed) : n = this.TEXTS.empty, n }, getInvaildTagParams: function (t, e) { return { "aria-invalid": !0, class: (t.class || "") + " tagify--notAllowed", title: e } }, hasMaxTags: function () { return this.value.length >= this.settings.maxTags && this.TEXTS.exceed }, normalizeTags: function (t) { function i(t) { return (t + "").split(a).filter(function (t) { return t }).map(function (t) { return { value: t.trim() } }) } var e, s = this.settings, n = s.whitelist, a = s.delimiters, o = s.mode, r = !!n && n[0] instanceof Object, l = t instanceof Array, d = l && t[0] instanceof Object && "value" in t[0], c = []; if (d) return t = (e = []).concat.apply(e, _toConsumableArray(t.map(function (e) { return i(e.value).map(function (t) { return _objectSpread({}, e, {}, t) }) }))); if ("number" == typeof t && (t = t.toString()), "string" == typeof t) { if (!t.trim()) return []; t = i(t) } else if (l) { var h; t = (h = []).concat.apply(h, _toConsumableArray(t.map(function (t) { return i(t) }))) } return r && (t.forEach(function (e) { var t = n.filter(function (t) { return t.value.toLowerCase() == e.value.toLowerCase() }); t[0] ? c.push(t[0]) : "mix" != o && c.push(e) }), t = c), t }, parseMixTags: function (t) { var o = this, e = this.settings, r = e.mixTagsInterpolator, l = e.duplicates, d = e.transformTag, c = e.enforceWhitelist; return t = t.split(r[0]).map(function (t, e) { var i, s, n = t.split(r[1]), a = n[0]; try { i = JSON.parse(a) } catch (t) { i = o.normalizeTags(a)[0] } if (!(1 < n.length) || c && !o.isTagWhitelisted(i.value) || !l && o.isTagDuplicate(i)) { if (t) return e ? r[0] + t : t } else d.call(o, i), i.__tagifyId = h(), (s = o.createTagElem(i)).classList.add("tagify--noAnim"), s.__tagifyId = i.__tagifyId, o.tagsDataById[s.__tagifyId] = i, n[0] = s.outerHTML, o.value.push(i); return n.join("") }).join(""), this.DOM.input.innerHTML = t, this.DOM.input.appendChild(document.createTextNode("")), this.update(), t }, replaceTextWithNode: function (t, e) { if (this.state.tag || e) { e = e || this.state.tag.prefix + this.state.tag.value; var i, s, n = this.state.selection || window.getSelection(), a = n.anchorNode; return a.splitText(n.anchorOffset), i = a.nodeValue.lastIndexOf(e), (s = a.splitText(i)).nodeValue = s.nodeValue.replace(e, ""), a.parentNode.insertBefore(t, s), this.DOM.input.normalize(), s } }, selectTag: function (t, e) { return this.input.set.call(this, e.value, !0), this.state.actions.selectOption && setTimeout(this.setRangeAtStartEnd.bind(this)), this.getLastTag() ? this.replaceTag(this.getLastTag(), e) : this.appendTag(t), this.value[0] = e, this.trigger("add", { tag: t, data: e }), this.update(), [t] }, addEmptyTag: function () { var t = { value: "", __tagifyId: h() }, e = this.createTagElem(t); this.tagsDataById[t.__tagifyId] = t, e.__tagifyId = t.__tagifyId, this.appendTag(e), this.editTag(e, { skipValidation: !0 }) }, addTags: function (t, e, i) { var s, n = this, a = 2 < arguments.length && void 0 !== i ? i : this.settings.skipInvalid, o = [], r = this.settings; return t && 0 != t.length ? (t = this.normalizeTags(t), this.state.editing.scope ? this.onEditTagDone(this.state.editing.scope, t[0]) : "mix" == r.mode ? (r.transformTag.call(this, t[0]), s = this.createTagElem(t[0]), this.replaceTextWithNode(s) || this.DOM.input.appendChild(s), this.DOM.input.appendChild(document.createTextNode("")), setTimeout(function () { return s.classList.add("tagify--noAnim") }, 300), t[0].prefix = t[0].prefix || this.state.tag ? this.state.tag.prefix : (r.pattern.source || r.pattern)[0], this.value.push(t[0]), this.update(), this.state.tag = null, this.trigger("add", this.extend({}, { tag: s }, { data: t[0] })), this.DOM.input.appendChild(document.createTextNode("")), s) : ("select" == r.mode && (e = !1), this.DOM.input.removeAttribute("style"), t.forEach(function (t) { var e, i, s = {}; if ((t = Object.assign({}, t)).__tagifyId = h(), n.tagsDataById[t.__tagifyId] = t, r.transformTag.call(n, t), !0 !== (e = n.hasMaxTags() || n.validateTag(t.value))) { if (a) return; n.extend(s, n.getInvaildTagParams(t, e)), e == n.TEXTS.duplicate && n.markTagByValue(t.value) } if (s.role = "tag", t.readonly && (s["aria-readonly"] = !0), (i = n.createTagElem(n.extend({}, t, s))).__tagifyId = t.__tagifyId, o.push(i), "select" == r.mode) return n.selectTag(i, t); n.appendTag(i), !0 === e ? (n.value.push(t), n.update(), n.trigger("add", { tag: i, index: n.value.length - 1, data: t })) : (n.trigger("invalid", { data: t, index: n.value.length, tag: i, message: e }), r.keepInvalidTags || setTimeout(function () { return n.removeTag(i, !0) }, 1e3)), n.dropdown.position.call(n) }), t.length && e && this.input.set.call(this), this.dropdown.refilter.call(this), o)) : ("select" == r.mode && this.removeAllTags(), o) }, appendTag: function (t) { var e = this.DOM.scope.lastElementChild; e === this.DOM.input ? this.DOM.scope.insertBefore(t, e) : this.DOM.scope.appendChild(t) }, minify: function (t) { return t ? t.replace(/\>[\r\n ]+\</g, "><").replace(/(<.*?>)|\s+/g, function (t, e) { return e || " " }) : "" }, createTagElem: function (t) { var e = function (t) { return t.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;") }(t.value), i = this.settings.templates.tag.call(this, e, t); return this.settings.readonly && (t.readonly = !0), i = this.minify(i), this.parseHTML(i) }, reCheckInvalidTags: function () { var n = this, t = this.DOM.scope.querySelectorAll(".tagify__tag.tagify--notAllowed");[].forEach.call(t, function (t) { var e = n.tagsDataById[t.__tagifyId], i = t.getAttribute("title") == n.TEXTS.duplicate, s = !0 === n.validateTag(e.value, e.__tagifyId); i && s && (t.isValid = !0, n.replaceTag(t, e)) }) }, removeTag: function (t, e, i) { if (t = t || this.getLastTag(), i = i || this.CSSVars.tagHideTransition, "string" == typeof t && (t = this.getTagElmByValue(t)), t instanceof HTMLElement) { var s = this, n = t.__tagifyId, a = this.getNodeIndex(t); "select" == this.settings.mode && (i = 0, this.input.set.call(this)), t.classList.contains("tagify--notAllowed") && (e = !0), i && 10 < i ? (t.style.width = parseFloat(window.getComputedStyle(t).width) + "px", document.body.clientTop, t.classList.add("tagify--hide"), setTimeout(o, i)) : o() } function o() { t.parentNode && (t.parentNode.removeChild(t), e ? s.settings.keepInvalidTags && s.trigger("remove", { tag: t, index: a }) : (s.removeValueById(n), delete s.tagsDataById[n], s.update(), s.trigger("remove", { tag: t, index: a, data: s.tagsDataById[n] }), s.dropdown.refilter.call(s), s.dropdown.position.call(s), s.settings.keepInvalidTags && s.reCheckInvalidTags())) } }, removeAllTags: function () { this.value = [], this.update(), Array.prototype.slice.call(this.getTagElms()).forEach(function (t) { return t.parentNode.removeChild(t) }), this.dropdown.position.call(this), "select" == this.settings.mode && this.input.set.call(this) }, removeValueById: function (e) { this.value = this.value.filter(function (t) { return t.__tagifyId != e }) }, preUpdate: function () { this.DOM.scope.classList.toggle("tagify--hasMaxTags", this.value.length >= this.settings.maxTags), this.DOM.scope.classList.toggle("tagify--noTags", !this.value.length) }, update: function () { this.preUpdate(); var t = function (t, s) { return t.map(function (t) { var e = {}; for (var i in t) i != s && (e[i] = t[i]); return e }) }(this.value, "__tagifyId"); this.DOM.originalInput.value = "mix" == this.settings.mode ? this.getMixedTagsAsString(t) : this.value.length ? JSON.stringify(t) : "" }, getMixedTagsAsString: function (t) { var i = "", s = 0, n = t, a = this.settings.mixTagsInterpolator; return function e(t) { t.childNodes.forEach(function (t) { if (1 == t.nodeType) { if (t.classList.contains("tagify__tag")) return void (i += a[0] + JSON.stringify(n[s++]) + a[1]); o && "BR" == t.tagName ? i += "\r\n" : "DIV" == t.tagName && (i += "\r\n", e(t)) } else i += t.textContent }) }(this.DOM.input), i }, getNodeHeight: function (t) { var e, i = t.cloneNode(!0); return i.style.cssText = "position:fixed; top:-9999px; opacity:0", document.body.appendChild(i), e = i.clientHeight, i.parentNode.removeChild(i), e }, dropdown: { init: function () { this.DOM.dropdown = this.dropdown.build.call(this), this.DOM.dropdown.content = this.DOM.dropdown.querySelector(".tagify__dropdown__wrapper") }, build: function () { var t = this.settings.dropdown, e = t.position, i = t.classname, s = "".concat("manual" == e ? "" : "tagify__dropdown tagify__dropdown--".concat(e), " ").concat(i).trim(); return this.parseHTML('<div class="'.concat(s, '" role="listbox" aria-labelledby="dropdown">\n <div class="tagify__dropdown__wrapper"></div>\n </div>')) }, show: function (t) { var e, i, s, n, a = this, o = this.settings, r = window.getSelection(), l = "manual" == o.dropdown.position; if (o.whitelist && o.whitelist.length && !1 !== o.dropdown.enable) { if (this.suggestedListItems = this.dropdown.filterListItems.call(this, t), !this.suggestedListItems.length) { if ("mix" != o.mode || o.enforceWhitelist) return this.input.autocomplete.suggest.call(this), void this.dropdown.hide.call(this); this.suggestedListItems = [{ value: t }] } s = (i = this.suggestedListItems[0]).value || i, o.autoComplete && 0 == s.indexOf(t) && this.input.autocomplete.suggest.call(this, i), e = this.dropdown.createListHTML.call(this, this.suggestedListItems), this.DOM.dropdown.content.innerHTML = this.minify(e), (o.enforceWhitelist && !l || o.dropdown.highlightFirst) && this.dropdown.highlightOption.call(this, this.DOM.dropdown.content.children[0]), this.DOM.scope.setAttribute("aria-expanded", !0), this.trigger("dropdown:show", this.DOM.dropdown), this.state.dropdown.visible = t || !0, this.state.selection = { anchorOffset: r.anchorOffset, anchorNode: r.anchorNode }, this.dropdown.position.call(this), document.body.contains(this.DOM.dropdown) || (l || (this.events.binding.call(this, !1), n = this.getNodeHeight(this.DOM.dropdown), this.DOM.dropdown.classList.add("tagify__dropdown--initial"), this.dropdown.position.call(this, n), document.body.appendChild(this.DOM.dropdown), setTimeout(function () { return a.DOM.dropdown.classList.remove("tagify__dropdown--initial") })), setTimeout(this.dropdown.events.binding.bind(this))) } }, hide: function (t) { var e = this.DOM, i = e.scope, s = e.dropdown, n = "manual" == this.settings.dropdown.position && !t; s && document.body.contains(s) && !n && (window.removeEventListener("resize", this.dropdown.position), this.dropdown.events.binding.call(this, !1), setTimeout(this.events.binding.bind(this), 250), i.setAttribute("aria-expanded", !1), s.parentNode.removeChild(s), this.state.dropdown.visible = !1, this.state.ddItemData = this.state.ddItemElm = this.state.selection = null, this.trigger("dropdown:hide", s)) }, refilter: function () { this.suggestedListItems = this.dropdown.filterListItems.call(this, ""); var t = this.dropdown.createListHTML.call(this, this.suggestedListItems); this.DOM.dropdown.content.innerHTML = this.minify(t), this.trigger("dropdown:updated", this.DOM.dropdown) }, position: function (t) { var e, i, s, n, a, o, r = this.DOM.dropdown; this.state.dropdown.visible && (o = "text" == this.settings.dropdown.position ? (n = (i = this.getCaretGlobalPosition()).bottom, s = i.top, a = i.left, "auto") : (s = (i = this.DOM.scope.getBoundingClientRect()).top, n = i.bottom - 1, a = i.left, i.width + "px"), s = Math.floor(s), n = Math.ceil(n), e = document.documentElement.clientHeight - n < (t || r.clientHeight), r.style.cssText = "left:" + (a + window.pageXOffset) + "px; width:" + o + ";" + (e ? "bottom:" + (document.documentElement.clientHeight - s - window.pageYOffset - 2) + "px;" : "top: " + (n + window.pageYOffset) + "px"), r.setAttribute("placement", e ? "top" : "bottom")) }, events: { binding: function (t) { var e = !(0 < arguments.length && void 0 !== t) || t, i = this.dropdown.events.callbacks, s = this.listeners.dropdown = this.listeners.dropdown || { position: this.dropdown.position.bind(this), onKeyDown: i.onKeyDown.bind(this), onMouseOver: i.onMouseOver.bind(this), onMouseLeave: i.onMouseLeave.bind(this), onClick: i.onClick.bind(this), onScroll: i.onScroll.bind(this) }, n = e ? "addEventListener" : "removeEventListener"; "manual" != this.settings.dropdown.position && (window[n]("resize", s.position), window[n]("keydown", s.onKeyDown)), this.DOM.dropdown[n]("mouseover", s.onMouseOver), this.DOM.dropdown[n]("mouseleave", s.onMouseLeave), this.DOM.dropdown[n]("mousedown", s.onClick), this.DOM.dropdown.content[n]("scroll", s.onScroll), this.DOM[this.listeners.main.click[0]][n]("click", this.listeners.main.click[1]) }, callbacks: { onKeyDown: function (t) { var e = this.DOM.dropdown.querySelector("[class$='--active']"), i = e; switch (t.key) { case "ArrowDown": case "ArrowUp": case "Down": case "Up": var s; t.preventDefault(), i = (i = i && i[("ArrowUp" == t.key || "Up" == t.key ? "previous" : "next") + "ElementSibling"]) || (s = this.DOM.dropdown.content.children)["ArrowUp" == t.key || "Up" == t.key ? s.length - 1 : 0], this.dropdown.highlightOption.call(this, i, !0); break; case "Escape": case "Esc": this.dropdown.hide.call(this); break; case "ArrowRight": if (this.state.actions.ArrowLeft) return; case "Tab": if ("mix" != this.settings.mode && !this.settings.autoComplete.rightKey) { try { var n = i ? i.textContent : this.suggestedListItems[0].value; this.input.autocomplete.set.call(this, n) } catch (t) { } return !1 } case "Enter": t.preventDefault(), this.dropdown.selectOption.call(this, e); break; case "Backspace": if ("mix" == this.settings.mode || this.state.editing.scope) return; var a = this.input.value.trim(); "" != a && 8203 != a.charCodeAt(0) || (!0 === this.settings.backspace ? this.removeTag() : "edit" == this.settings.backspace && setTimeout(this.editTag.bind(this), 0)) } }, onMouseOver: function (t) { var e = t.target.closest(".tagify__dropdown__item"); e && this.dropdown.highlightOption.call(this, e) }, onMouseLeave: function () { this.dropdown.highlightOption.call(this) }, onClick: function (t) { if (0 == t.button && t.target != this.DOM.dropdown) { var e = t.target.closest(".tagify__dropdown__item"); this.dropdown.selectOption.call(this, e) } }, onScroll: function (t) { var e = t.target, i = e.scrollTop / (e.scrollHeight - e.parentNode.clientHeight) * 100; this.trigger("dropdown:scroll", { percentage: Math.round(i) }) } } }, highlightOption: function (t, e) { var i, s = "tagify__dropdown__item--active"; if (this.state.ddItemElm && (this.state.ddItemElm.classList.remove(s), this.state.ddItemElm.removeAttribute("aria-selected")), !t) return this.state.ddItemData = null, this.state.ddItemElm = null, void this.input.autocomplete.suggest.call(this); i = this.suggestedListItems[this.getNodeIndex(t)], this.state.ddItemData = i, (this.state.ddItemElm = t).classList.add(s), t.setAttribute("aria-selected", !0), e && (t.parentNode.scrollTop = t.clientHeight + t.offsetTop - t.parentNode.clientHeight), this.settings.autoComplete && (this.input.autocomplete.suggest.call(this, i), "manual" != this.settings.dropdown.position && this.dropdown.position.call(this)) }, selectOption: function (t) { var e = this; if (t) { this.state.actions.selectOption = !0, setTimeout(function () { return e.state.actions.selectOption = !1 }, 50); var i = this.settings.dropdown.closeOnSelect, s = this.suggestedListItems[this.getNodeIndex(t)] || this.input.value; this.trigger("dropdown:select", s), this.addTags([s], !0), setTimeout(function () { e.DOM.input.focus(), e.toggleFocusClass(!0) }), i && this.dropdown.hide.call(this) } }, filterListItems: function (t) { var i, e, s, n, a = this, o = this.settings, r = [], l = o.whitelist, d = o.dropdown.maxItems || 1 / 0, c = o.dropdown.searchKeys.concat(["searchBy", "value"]), h = 0; if (!t) return (o.duplicates ? l : l.filter(function (t) { return !a.isTagDuplicate(t.value || t) })).slice(0, d); for (; h < l.length && (i = l[h] instanceof Object ? l[h] : { value: l[h] }, s = c.reduce(function (t, e) { return t + " " + (i[e] || "") }, "").toLowerCase().indexOf(t.toLowerCase()), e = o.dropdown.fuzzySearch ? 0 <= s : 0 == s, n = !o.duplicates && this.isTagDuplicate(i.value), e && !n && d-- && r.push(i), 0 != d); h++); return r }, createListHTML: function (t) { var e = this.settings.templates.dropdownItem.bind(this); return this.minify(t.map(e).join("")) } } } }(jQuery);
/*! For license information please see summernote-bs4.min.js.LICENSE.txt */
!function (t, e) { if ("object" == typeof exports && "object" == typeof module) module.exports = e(require("jquery")); else if ("function" == typeof define && define.amd) define(["jquery"], e); else { var n = "object" == typeof exports ? e(require("jquery")) : e(t.jQuery); for (var o in n) ("object" == typeof exports ? exports : t)[o] = n[o] } }(window, (function (t) { return function (t) { var e = {}; function n(o) { if (e[o]) return e[o].exports; var i = e[o] = { i: o, l: !1, exports: {} }; return t[o].call(i.exports, i, i.exports, n), i.l = !0, i.exports } return n.m = t, n.c = e, n.d = function (t, e, o) { n.o(t, e) || Object.defineProperty(t, e, { enumerable: !0, get: o }) }, 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 o = Object.create(null); if (n.r(o), Object.defineProperty(o, "default", { enumerable: !0, value: t }), 2 & e && "string" != typeof t) for (var i in t) n.d(o, i, function (e) { return t[e] }.bind(null, i)); return o }, 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 = 53) }({ 0: function (e, n) { e.exports = t }, 1: function (t, e, n) { "use strict"; var o = n(0), i = n.n(o); function r(t) { return (r = "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 a(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var s = function () { function t(e, n, o, i) { !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.markup = e, this.children = n, this.options = o, this.callback = i } var e, n, o; return e = t, (n = [{ key: "render", value: function (t) { var e = i()(this.markup); if (this.options && this.options.contents && e.html(this.options.contents), this.options && this.options.className && e.addClass(this.options.className), this.options && this.options.data && i.a.each(this.options.data, (function (t, n) { e.attr("data-" + t, n) })), this.options && this.options.click && e.on("click", this.options.click), this.children) { var n = e.find(".note-children-container"); this.children.forEach((function (t) { t.render(n.length ? n : e) })) } return this.callback && this.callback(e, this.options), this.options && this.options.callback && this.options.callback(e), t && t.append(e), e } }]) && a(e.prototype, n), o && a(e, o), t }(); e.a = { create: function (t, e) { return function () { var n = "object" === r(arguments[1]) ? arguments[1] : arguments[0], o = Array.isArray(arguments[0]) ? arguments[0] : []; return n && n.children && (o = n.children), new s(t, o, n, e) } } } }, 2: function (t, e) { (function (e) { t.exports = e }).call(this, {}) }, 3: function (t, e, n) { "use strict"; var o = n(0), i = n.n(o); i.a.summernote = i.a.summernote || { lang: {} }, i.a.extend(i.a.summernote.lang, { "en-US": { font: { bold: "Bold", italic: "Italic", underline: "Underline", clear: "Remove Font Style", height: "Line Height", name: "Font Family", strikethrough: "Strikethrough", subscript: "Subscript", superscript: "Superscript", size: "Font Size", sizeunit: "Font Size Unit" }, image: { image: "Picture", insert: "Insert Image", resizeFull: "Resize full", resizeHalf: "Resize half", resizeQuarter: "Resize quarter", resizeNone: "Original size", floatLeft: "Float Left", floatRight: "Float Right", floatNone: "Remove float", shapeRounded: "Shape: Rounded", shapeCircle: "Shape: Circle", shapeThumbnail: "Shape: Thumbnail", shapeNone: "Shape: None", dragImageHere: "Drag image or text here", dropImage: "Drop image or Text", selectFromFiles: "Select from files", maximumFileSize: "Maximum file size", maximumFileSizeError: "Maximum file size exceeded.", url: "Image URL", remove: "Remove Image", original: "Original" }, video: { video: "Video", videoLink: "Video Link", insert: "Insert Video", url: "Video URL", providers: "(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)" }, link: { link: "Link", insert: "Insert Link", unlink: "Unlink", edit: "Edit", textToDisplay: "Text to display", url: "To what URL should this link go?", openInNewWindow: "Open in new window", useProtocol: "Use default protocol" }, table: { table: "Table", addRowAbove: "Add row above", addRowBelow: "Add row below", addColLeft: "Add column left", addColRight: "Add column right", delRow: "Delete row", delCol: "Delete column", delTable: "Delete table" }, hr: { insert: "Insert Horizontal Rule" }, style: { style: "Style", p: "Normal", blockquote: "Quote", pre: "Code", h1: "Header 1", h2: "Header 2", h3: "Header 3", h4: "Header 4", h5: "Header 5", h6: "Header 6" }, lists: { unordered: "Unordered list", ordered: "Ordered list" }, options: { help: "Help", fullscreen: "Full Screen", codeview: "Code View" }, paragraph: { paragraph: "Paragraph", outdent: "Outdent", indent: "Indent", left: "Align left", center: "Align center", right: "Align right", justify: "Justify full" }, color: { recent: "Recent Color", more: "More Color", background: "Background Color", foreground: "Text Color", transparent: "Transparent", setTransparent: "Set transparent", reset: "Reset", resetToDefault: "Reset to default", cpSelect: "Select" }, shortcut: { shortcuts: "Keyboard shortcuts", close: "Close", textFormatting: "Text formatting", action: "Action", paragraphFormatting: "Paragraph formatting", documentStyle: "Document Style", extraKeys: "Extra keys" }, help: { insertParagraph: "Insert Paragraph", undo: "Undoes the last command", redo: "Redoes the last command", tab: "Tab", untab: "Untab", bold: "Set a bold style", italic: "Set a italic style", underline: "Set a underline style", strikethrough: "Set a strikethrough style", removeFormat: "Clean a style", justifyLeft: "Set left align", justifyCenter: "Set center align", justifyRight: "Set right align", justifyFull: "Set full align", insertUnorderedList: "Toggle unordered list", insertOrderedList: "Toggle ordered list", outdent: "Outdent on current paragraph", indent: "Indent on current paragraph", formatPara: "Change current block's format as a paragraph(P tag)", formatH1: "Change current block's format as H1", formatH2: "Change current block's format as H2", formatH3: "Change current block's format as H3", formatH4: "Change current block's format as H4", formatH5: "Change current block's format as H5", formatH6: "Change current block's format as H6", insertHorizontalRule: "Insert horizontal rule", "linkDialog.show": "Show Link Dialog" }, history: { undo: "Undo", redo: "Redo" }, specialChar: { specialChar: "SPECIAL CHARACTERS", select: "Select Special characters" }, output: { noSelection: "No Selection Made!" } } }); var r = "function" == typeof define && n(2), a = ["sans-serif", "serif", "monospace", "cursive", "fantasy"]; function s(t) { return -1 === i.a.inArray(t.toLowerCase(), a) ? "'".concat(t, "'") : t } var l, c = navigator.userAgent, u = /MSIE|Trident/i.test(c); if (u) { var d = /MSIE (\d+[.]\d+)/.exec(c); d && (l = parseFloat(d[1])), (d = /Trident\/.*rv:([0-9]{1,}[.0-9]{0,})/.exec(c)) && (l = parseFloat(d[1])) } var h = /Edge\/\d+/.test(c), f = !!window.CodeMirror, p = "ontouchstart" in window || navigator.MaxTouchPoints > 0 || navigator.msMaxTouchPoints > 0, m = u ? "DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted" : "input", v = { isMac: navigator.appVersion.indexOf("Mac") > -1, isMSIE: u, isEdge: h, isFF: !h && /firefox/i.test(c), isPhantom: /PhantomJS/i.test(c), isWebkit: !h && /webkit/i.test(c), isChrome: !h && /chrome/i.test(c), isSafari: !h && /safari/i.test(c) && !/chrome/i.test(c), browserVersion: l, jqueryVersion: parseFloat(i.a.fn.jquery), isSupportAmd: r, isSupportTouch: p, hasCodeMirror: f, isFontInstalled: function (t) { var e = "Comic Sans MS" === t ? "Courier New" : "Comic Sans MS", n = document.createElement("canvas").getContext("2d"); n.font = "200px '" + e + "'"; var o = n.measureText("mmmmmmmmmmwwwww").width; return n.font = "200px " + s(t) + ', "' + e + '"', o !== n.measureText("mmmmmmmmmmwwwww").width }, isW3CRangeSupport: !!document.createRange, inputEventName: m, genericFontFamilies: a, validFontName: s }; var g = 0; var b = { eq: function (t) { return function (e) { return t === e } }, eq2: function (t, e) { return t === e }, peq2: function (t) { return function (e, n) { return e[t] === n[t] } }, ok: function () { return !0 }, fail: function () { return !1 }, self: function (t) { return t }, not: function (t) { return function () { return !t.apply(t, arguments) } }, and: function (t, e) { return function (n) { return t(n) && e(n) } }, invoke: function (t, e) { return function () { return t[e].apply(t, arguments) } }, resetUniqueId: function () { g = 0 }, uniqueId: function (t) { var e = ++g + ""; return t ? t + e : e }, rect2bnd: function (t) { var e = i()(document); return { top: t.top + e.scrollTop(), left: t.left + e.scrollLeft(), width: t.right - t.left, height: t.bottom - t.top } }, invertObject: function (t) { var e = {}; for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[t[n]] = n); return e }, namespaceToCamel: function (t, e) { return (e = e || "") + t.split(".").map((function (t) { return t.substring(0, 1).toUpperCase() + t.substring(1) })).join("") }, debounce: function (t, e, n) { var o; return function () { var i = this, r = arguments, a = function () { o = null, n || t.apply(i, r) }, s = n && !o; clearTimeout(o), o = setTimeout(a, e), s && t.apply(i, r) } }, isValidUrl: function (t) { return /[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/gi.test(t) } }; function y(t) { return t[0] } function k(t) { return t[t.length - 1] } function w(t) { return t.slice(1) } function C(t, e) { if (t && t.length && e) { if (t.indexOf) return -1 !== t.indexOf(e); if (t.contains) return t.contains(e) } return !1 } var x = { head: y, last: k, initial: function (t) { return t.slice(0, t.length - 1) }, tail: w, prev: function (t, e) { if (t && t.length && e) { var n = t.indexOf(e); return -1 === n ? null : t[n - 1] } return null }, next: function (t, e) { if (t && t.length && e) { var n = t.indexOf(e); return -1 === n ? null : t[n + 1] } return null }, find: function (t, e) { for (var n = 0, o = t.length; n < o; n++) { var i = t[n]; if (e(i)) return i } }, contains: C, all: function (t, e) { for (var n = 0, o = t.length; n < o; n++)if (!e(t[n])) return !1; return !0 }, sum: function (t, e) { return e = e || b.self, t.reduce((function (t, n) { return t + e(n) }), 0) }, from: function (t) { for (var e = [], n = t.length, o = -1; ++o < n;)e[o] = t[o]; return e }, isEmpty: function (t) { return !t || !t.length }, clusterBy: function (t, e) { return t.length ? w(t).reduce((function (t, n) { var o = k(t); return e(k(o), n) ? o[o.length] = n : t[t.length] = [n], t }), [[y(t)]]) : [] }, compact: function (t) { for (var e = [], n = 0, o = t.length; n < o; n++)t[n] && e.push(t[n]); return e }, unique: function (t) { for (var e = [], n = 0, o = t.length; n < o; n++)C(e, t[n]) || e.push(t[n]); return e } }, S = String.fromCharCode(160); function T(t) { return t && i()(t).hasClass("note-editable") } function E(t) { return t = t.toUpperCase(), function (e) { return e && e.nodeName.toUpperCase() === t } } function I(t) { return t && 3 === t.nodeType } function $(t) { return t && /^BR|^IMG|^HR|^IFRAME|^BUTTON|^INPUT|^AUDIO|^VIDEO|^EMBED/.test(t.nodeName.toUpperCase()) } function N(t) { return !T(t) && (t && /^DIV|^P|^LI|^H[1-7]/.test(t.nodeName.toUpperCase())) } var P = E("PRE"), R = E("LI"); var L = E("TABLE"), A = E("DATA"); function F(t) { return !(M(t) || D(t) || H(t) || N(t) || L(t) || B(t) || A(t)) } function D(t) { return t && /^UL|^OL/.test(t.nodeName.toUpperCase()) } var H = E("HR"); function z(t) { return t && /^TD|^TH/.test(t.nodeName.toUpperCase()) } var B = E("BLOCKQUOTE"); function M(t) { return z(t) || B(t) || T(t) } var O = E("A"); var U = E("BODY"); var j = v.isMSIE && v.browserVersion < 11 ? "&nbsp;" : "<br>"; function W(t) { return I(t) ? t.nodeValue.length : t ? t.childNodes.length : 0 } function K(t) { var e = W(t); return 0 === e || (!I(t) && 1 === e && t.innerHTML === j || !(!x.all(t.childNodes, I) || "" !== t.innerHTML)) } function q(t) { $(t) || W(t) || (t.innerHTML = j) } function V(t, e) { for (; t;) { if (e(t)) return t; if (T(t)) break; t = t.parentNode } return null } function _(t, e) { e = e || b.fail; var n = []; return V(t, (function (t) { return T(t) || n.push(t), e(t) })), n } function G(t, e) { e = e || b.fail; for (var n = []; t && !e(t);)n.push(t), t = t.nextSibling; return n } function Y(t, e) { var n = e.nextSibling, o = e.parentNode; return n ? o.insertBefore(t, n) : o.appendChild(t), t } function Z(t, e) { return i.a.each(e, (function (e, n) { t.appendChild(n) })), t } function X(t) { return 0 === t.offset } function Q(t) { return t.offset === W(t.node) } function J(t) { return X(t) || Q(t) } function tt(t, e) { for (; t && t !== e;) { if (0 !== nt(t)) return !1; t = t.parentNode } return !0 } function et(t, e) { if (!e) return !1; for (; t && t !== e;) { if (nt(t) !== W(t.parentNode) - 1) return !1; t = t.parentNode } return !0 } function nt(t) { for (var e = 0; t = t.previousSibling;)e += 1; return e } function ot(t) { return !!(t && t.childNodes && t.childNodes.length) } function it(t, e) { var n, o; if (0 === t.offset) { if (T(t.node)) return null; n = t.node.parentNode, o = nt(t.node) } else ot(t.node) ? o = W(n = t.node.childNodes[t.offset - 1]) : (n = t.node, o = e ? 0 : t.offset - 1); return { node: n, offset: o } } function rt(t, e) { var n, o; if (K(t.node)) return null; if (W(t.node) === t.offset) { if (T(t.node)) return null; n = t.node.parentNode, o = nt(t.node) + 1 } else if (ot(t.node)) { if (o = 0, K(n = t.node.childNodes[t.offset])) return null } else if (n = t.node, o = e ? W(t.node) : t.offset + 1, K(n)) return null; return { node: n, offset: o } } function at(t, e) { return t.node === e.node && t.offset === e.offset } function st(t, e) { var n = e && e.isSkipPaddingBlankHTML, o = e && e.isNotSplitEdgePoint, i = e && e.isDiscardEmptySplits; if (i && (n = !0), J(t) && (I(t.node) || o)) { if (X(t)) return t.node; if (Q(t)) return t.node.nextSibling } if (I(t.node)) return t.node.splitText(t.offset); var r = t.node.childNodes[t.offset], a = Y(t.node.cloneNode(!1), t.node); return Z(a, G(r)), n || (q(t.node), q(a)), i && (K(t.node) && ut(t.node), K(a)) ? (ut(a), t.node.nextSibling) : a } function lt(t, e, n) { var o = _(e.node, b.eq(t)); return o.length ? 1 === o.length ? st(e, n) : o.reduce((function (t, o) { return t === e.node && (t = st(e, n)), st({ node: o, offset: t ? nt(t) : W(o) }, n) })) : null } function ct(t) { return document.createElement(t) } function ut(t, e) { if (t && t.parentNode) { if (t.removeNode) return t.removeNode(e); var n = t.parentNode; if (!e) { for (var o = [], i = 0, r = t.childNodes.length; i < r; i++)o.push(t.childNodes[i]); for (var a = 0, s = o.length; a < s; a++)n.insertBefore(o[a], t) } n.removeChild(t) } } var dt = E("TEXTAREA"); function ht(t, e) { var n = dt(t[0]) ? t.val() : t.html(); return e ? n.replace(/[\n\r]/g, "") : n } var ft = { NBSP_CHAR: S, ZERO_WIDTH_NBSP_CHAR: "\ufeff", blank: j, emptyPara: "<p>".concat(j, "</p>"), makePredByNodeName: E, isEditable: T, isControlSizing: function (t) { return t && i()(t).hasClass("note-control-sizing") }, isText: I, isElement: function (t) { return t && 1 === t.nodeType }, isVoid: $, isPara: N, isPurePara: function (t) { return N(t) && !R(t) }, isHeading: function (t) { return t && /^H[1-7]/.test(t.nodeName.toUpperCase()) }, isInline: F, isBlock: b.not(F), isBodyInline: function (t) { return F(t) && !V(t, N) }, isBody: U, isParaInline: function (t) { return F(t) && !!V(t, N) }, isPre: P, isList: D, isTable: L, isData: A, isCell: z, isBlockquote: B, isBodyContainer: M, isAnchor: O, isDiv: E("DIV"), isLi: R, isBR: E("BR"), isSpan: E("SPAN"), isB: E("B"), isU: E("U"), isS: E("S"), isI: E("I"), isImg: E("IMG"), isTextarea: dt, deepestChildIsEmpty: function (t) { do { if (null === t.firstElementChild || "" === t.firstElementChild.innerHTML) break } while (t = t.firstElementChild); return K(t) }, isEmpty: K, isEmptyAnchor: b.and(O, K), isClosestSibling: function (t, e) { return t.nextSibling === e || t.previousSibling === e }, withClosestSiblings: function (t, e) { e = e || b.ok; var n = []; return t.previousSibling && e(t.previousSibling) && n.push(t.previousSibling), n.push(t), t.nextSibling && e(t.nextSibling) && n.push(t.nextSibling), n }, nodeLength: W, isLeftEdgePoint: X, isRightEdgePoint: Q, isEdgePoint: J, isLeftEdgeOf: tt, isRightEdgeOf: et, isLeftEdgePointOf: function (t, e) { return X(t) && tt(t.node, e) }, isRightEdgePointOf: function (t, e) { return Q(t) && et(t.node, e) }, prevPoint: it, nextPoint: rt, isSamePoint: at, isVisiblePoint: function (t) { if (I(t.node) || !ot(t.node) || K(t.node)) return !0; var e = t.node.childNodes[t.offset - 1], n = t.node.childNodes[t.offset]; return !(e && !$(e) || n && !$(n)) }, prevPointUntil: function (t, e) { for (; t;) { if (e(t)) return t; t = it(t) } return null }, nextPointUntil: function (t, e) { for (; t;) { if (e(t)) return t; t = rt(t) } return null }, isCharPoint: function (t) { if (!I(t.node)) return !1; var e = t.node.nodeValue.charAt(t.offset - 1); return e && " " !== e && e !== S }, isSpacePoint: function (t) { if (!I(t.node)) return !1; var e = t.node.nodeValue.charAt(t.offset - 1); return " " === e || e === S }, walkPoint: function (t, e, n, o) { for (var i = t; i && (n(i), !at(i, e));) { i = rt(i, o && t.node !== i.node && e.node !== i.node) } }, ancestor: V, singleChildAncestor: function (t, e) { for (t = t.parentNode; t && 1 === W(t);) { if (e(t)) return t; if (T(t)) break; t = t.parentNode } return null }, listAncestor: _, lastAncestor: function (t, e) { var n = _(t); return x.last(n.filter(e)) }, listNext: G, listPrev: function (t, e) { e = e || b.fail; for (var n = []; t && !e(t);)n.push(t), t = t.previousSibling; return n }, listDescendant: function (t, e) { var n = []; return e = e || b.ok, function o(i) { t !== i && e(i) && n.push(i); for (var r = 0, a = i.childNodes.length; r < a; r++)o(i.childNodes[r]) }(t), n }, commonAncestor: function (t, e) { for (var n = _(t), o = e; o; o = o.parentNode)if (n.indexOf(o) > -1) return o; return null }, wrap: function (t, e) { var n = t.parentNode, o = i()("<" + e + ">")[0]; return n.insertBefore(o, t), o.appendChild(t), o }, insertAfter: Y, appendChildNodes: Z, position: nt, hasChildren: ot, makeOffsetPath: function (t, e) { return _(e, b.eq(t)).map(nt).reverse() }, fromOffsetPath: function (t, e) { for (var n = t, o = 0, i = e.length; o < i; o++)n = n.childNodes.length <= e[o] ? n.childNodes[n.childNodes.length - 1] : n.childNodes[e[o]]; return n }, splitTree: lt, splitPoint: function (t, e) { var n, o, i = e ? N : M, r = _(t.node, i), a = x.last(r) || t.node; i(a) ? (n = r[r.length - 2], o = a) : o = (n = a).parentNode; var s = n && lt(n, t, { isSkipPaddingBlankHTML: e, isNotSplitEdgePoint: e }); return s || o !== t.node || (s = t.node.childNodes[t.offset]), { rightNode: s, container: o } }, create: ct, createText: function (t) { return document.createTextNode(t) }, remove: ut, removeWhile: function (t, e) { for (; t && !T(t) && e(t);) { var n = t.parentNode; ut(t), t = n } }, replace: function (t, e) { if (t.nodeName.toUpperCase() === e.toUpperCase()) return t; var n = ct(e); return t.style.cssText && (n.style.cssText = t.style.cssText), Z(n, x.from(t.childNodes)), Y(n, t), ut(t), n }, html: function (t, e) { var n = ht(t); if (e) { n = (n = n.replace(/<(\/?)(\b(?!!)[^>\s]*)(.*?)(\s*\/?>)/g, (function (t, e, n) { n = n.toUpperCase(); var o = /^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(n) && !!e, i = /^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(n); return t + (o || i ? "\n" : "") }))).trim() } return n }, value: ht, posFromPlaceholder: function (t) { var e = i()(t), n = e.offset(), o = e.outerHeight(!0); return { left: n.left, top: n.top + o } }, attachEvents: function (t, e) { Object.keys(e).forEach((function (n) { t.on(n, e[n]) })) }, detachEvents: function (t, e) { Object.keys(e).forEach((function (n) { t.off(n, e[n]) })) }, isCustomStyleTag: function (t) { return t && !I(t) && x.contains(t.classList, "note-styletag") } }; function pt(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var mt = function () { function t(e, n) { !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.$note = e, this.memos = {}, this.modules = {}, this.layoutInfo = {}, this.options = i.a.extend(!0, {}, n), i.a.summernote.ui = i.a.summernote.ui_template(this.options), this.ui = i.a.summernote.ui, this.initialize() } var e, n, o; return e = t, (n = [{ key: "initialize", value: function () { return this.layoutInfo = this.ui.createLayout(this.$note), this._initialize(), this.$note.hide(), this } }, { key: "destroy", value: function () { this._destroy(), this.$note.removeData("summernote"), this.ui.removeLayout(this.$note, this.layoutInfo) } }, { key: "reset", value: function () { var t = this.isDisabled(); this.code(ft.emptyPara), this._destroy(), this._initialize(), t && this.disable() } }, { key: "_initialize", value: function () { var t = this; this.options.id = b.uniqueId(i.a.now()), this.options.container = this.options.container || this.layoutInfo.editor; var e = i.a.extend({}, this.options.buttons); Object.keys(e).forEach((function (n) { t.memo("button." + n, e[n]) })); var n = i.a.extend({}, this.options.modules, i.a.summernote.plugins || {}); Object.keys(n).forEach((function (e) { t.module(e, n[e], !0) })), Object.keys(this.modules).forEach((function (e) { t.initializeModule(e) })) } }, { key: "_destroy", value: function () { var t = this; Object.keys(this.modules).reverse().forEach((function (e) { t.removeModule(e) })), Object.keys(this.memos).forEach((function (e) { t.removeMemo(e) })), this.triggerEvent("destroy", this) } }, { key: "code", value: function (t) { var e = this.invoke("codeview.isActivated"); if (void 0 === t) return this.invoke("codeview.sync"), e ? this.layoutInfo.codable.val() : this.layoutInfo.editable.html(); e ? this.layoutInfo.codable.val(t) : this.layoutInfo.editable.html(t), this.$note.val(t), this.triggerEvent("change", t, this.layoutInfo.editable) } }, { key: "isDisabled", value: function () { return "false" === this.layoutInfo.editable.attr("contenteditable") } }, { key: "enable", value: function () { this.layoutInfo.editable.attr("contenteditable", !0), this.invoke("toolbar.activate", !0), this.triggerEvent("disable", !1), this.options.editing = !0 } }, { key: "disable", value: function () { this.invoke("codeview.isActivated") && this.invoke("codeview.deactivate"), this.layoutInfo.editable.attr("contenteditable", !1), this.options.editing = !1, this.invoke("toolbar.deactivate", !0), this.triggerEvent("disable", !0) } }, { key: "triggerEvent", value: function () { var t = x.head(arguments), e = x.tail(x.from(arguments)), n = this.options.callbacks[b.namespaceToCamel(t, "on")]; n && n.apply(this.$note[0], e), this.$note.trigger("summernote." + t, e) } }, { key: "initializeModule", value: function (t) { var e = this.modules[t]; e.shouldInitialize = e.shouldInitialize || b.ok, e.shouldInitialize() && (e.initialize && e.initialize(), e.events && ft.attachEvents(this.$note, e.events)) } }, { key: "module", value: function (t, e, n) { if (1 === arguments.length) return this.modules[t]; this.modules[t] = new e(this), n || this.initializeModule(t) } }, { key: "removeModule", value: function (t) { var e = this.modules[t]; e.shouldInitialize() && (e.events && ft.detachEvents(this.$note, e.events), e.destroy && e.destroy()), delete this.modules[t] } }, { key: "memo", value: function (t, e) { if (1 === arguments.length) return this.memos[t]; this.memos[t] = e } }, { key: "removeMemo", value: function (t) { this.memos[t] && this.memos[t].destroy && this.memos[t].destroy(), delete this.memos[t] } }, { key: "createInvokeHandlerAndUpdateState", value: function (t, e) { var n = this; return function (o) { n.createInvokeHandler(t, e)(o), n.invoke("buttons.updateCurrentStyle") } } }, { key: "createInvokeHandler", value: function (t, e) { var n = this; return function (o) { o.preventDefault(); var r = i()(o.target); n.invoke(t, e || r.closest("[data-value]").data("value"), r) } } }, { key: "invoke", value: function () { var t = x.head(arguments), e = x.tail(x.from(arguments)), n = t.split("."), o = n.length > 1, i = o && x.head(n), r = o ? x.last(n) : x.head(n), a = this.modules[i || "editor"]; return !i && this[r] ? this[r].apply(this, e) : a && a[r] && a.shouldInitialize() ? a[r].apply(a, e) : void 0 } }]) && pt(e.prototype, n), o && pt(e, o), t }(); function vt(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } function gt(t, e) { var n, o, i = t.parentElement(), r = document.body.createTextRange(), a = x.from(i.childNodes); for (n = 0; n < a.length; n++)if (!ft.isText(a[n])) { if (r.moveToElementText(a[n]), r.compareEndPoints("StartToStart", t) >= 0) break; o = a[n] } if (0 !== n && ft.isText(a[n - 1])) { var s = document.body.createTextRange(), l = null; s.moveToElementText(o || i), s.collapse(!o), l = o ? o.nextSibling : i.firstChild; var c = t.duplicate(); c.setEndPoint("StartToStart", s); for (var u = c.text.replace(/[\r\n]/g, "").length; u > l.nodeValue.length && l.nextSibling;)u -= l.nodeValue.length, l = l.nextSibling; l.nodeValue; e && l.nextSibling && ft.isText(l.nextSibling) && u === l.nodeValue.length && (u -= l.nodeValue.length, l = l.nextSibling), i = l, n = u } return { cont: i, offset: n } } function bt(t) { var e = document.body.createTextRange(), n = function t(e, n) { var o, i; if (ft.isText(e)) { var r = ft.listPrev(e, b.not(ft.isText)), a = x.last(r).previousSibling; o = a || e.parentNode, n += x.sum(x.tail(r), ft.nodeLength), i = !a } else { if (o = e.childNodes[n] || e, ft.isText(o)) return t(o, 0); n = 0, i = !1 } return { node: o, collapseToStart: i, offset: n } }(t.node, t.offset); return e.moveToElementText(n.node), e.collapse(n.collapseToStart), e.moveStart("character", n.offset), e } i.a.fn.extend({ summernote: function () { var t = i.a.type(x.head(arguments)), e = "string" === t, n = "object" === t, o = i.a.extend({}, i.a.summernote.options, n ? x.head(arguments) : {}); o.langInfo = i.a.extend(!0, {}, i.a.summernote.lang["en-US"], i.a.summernote.lang[o.lang]), o.icons = i.a.extend(!0, {}, i.a.summernote.options.icons, o.icons), o.tooltip = "auto" === o.tooltip ? !v.isSupportTouch : o.tooltip, this.each((function (t, e) { var n = i()(e); if (!n.data("summernote")) { var r = new mt(n, o); n.data("summernote", r), n.data("summernote").triggerEvent("init", r.layoutInfo) } })); var r = this.first(); if (r.length) { var a = r.data("summernote"); if (e) return a.invoke.apply(a, x.from(arguments)); o.focus && a.invoke("editor.focus") } return this } }); var yt = function () { function t(e, n, o, i) { !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.sc = e, this.so = n, this.ec = o, this.eo = i, this.isOnEditable = this.makeIsOn(ft.isEditable), this.isOnList = this.makeIsOn(ft.isList), this.isOnAnchor = this.makeIsOn(ft.isAnchor), this.isOnCell = this.makeIsOn(ft.isCell), this.isOnData = this.makeIsOn(ft.isData) } var e, n, o; return e = t, (n = [{ key: "nativeRange", value: function () { if (v.isW3CRangeSupport) { var t = document.createRange(); return t.setStart(this.sc, this.sc.data && this.so > this.sc.data.length ? 0 : this.so), t.setEnd(this.ec, this.sc.data ? Math.min(this.eo, this.sc.data.length) : this.eo), t } var e = bt({ node: this.sc, offset: this.so }); return e.setEndPoint("EndToEnd", bt({ node: this.ec, offset: this.eo })), e } }, { key: "getPoints", value: function () { return { sc: this.sc, so: this.so, ec: this.ec, eo: this.eo } } }, { key: "getStartPoint", value: function () { return { node: this.sc, offset: this.so } } }, { key: "getEndPoint", value: function () { return { node: this.ec, offset: this.eo } } }, { key: "select", value: function () { var t = this.nativeRange(); if (v.isW3CRangeSupport) { var e = document.getSelection(); e.rangeCount > 0 && e.removeAllRanges(), e.addRange(t) } else t.select(); return this } }, { key: "scrollIntoView", value: function (t) { var e = i()(t).height(); return t.scrollTop + e < this.sc.offsetTop && (t.scrollTop += Math.abs(t.scrollTop + e - this.sc.offsetTop)), this } }, { key: "normalize", value: function () { var e = function (t, e) { if (!t) return t; if (ft.isVisiblePoint(t) && (!ft.isEdgePoint(t) || ft.isRightEdgePoint(t) && !e || ft.isLeftEdgePoint(t) && e || ft.isRightEdgePoint(t) && e && ft.isVoid(t.node.nextSibling) || ft.isLeftEdgePoint(t) && !e && ft.isVoid(t.node.previousSibling) || ft.isBlock(t.node) && ft.isEmpty(t.node))) return t; var n = ft.ancestor(t.node, ft.isBlock), o = !1; if (!o) { var i = ft.prevPoint(t) || { node: null }; o = (ft.isLeftEdgePointOf(t, n) || ft.isVoid(i.node)) && !e } var r = !1; if (!r) { var a = ft.nextPoint(t) || { node: null }; r = (ft.isRightEdgePointOf(t, n) || ft.isVoid(a.node)) && e } if (o || r) { if (ft.isVisiblePoint(t)) return t; e = !e } return (e ? ft.nextPointUntil(ft.nextPoint(t), ft.isVisiblePoint) : ft.prevPointUntil(ft.prevPoint(t), ft.isVisiblePoint)) || t }, n = e(this.getEndPoint(), !1), o = this.isCollapsed() ? n : e(this.getStartPoint(), !0); return new t(o.node, o.offset, n.node, n.offset) } }, { key: "nodes", value: function (t, e) { t = t || b.ok; var n = e && e.includeAncestor, o = e && e.fullyContains, i = this.getStartPoint(), r = this.getEndPoint(), a = [], s = []; return ft.walkPoint(i, r, (function (e) { var i; ft.isEditable(e.node) || (o ? (ft.isLeftEdgePoint(e) && s.push(e.node), ft.isRightEdgePoint(e) && x.contains(s, e.node) && (i = e.node)) : i = n ? ft.ancestor(e.node, t) : e.node, i && t(i) && a.push(i)) }), !0), x.unique(a) } }, { key: "commonAncestor", value: function () { return ft.commonAncestor(this.sc, this.ec) } }, { key: "expand", value: function (e) { var n = ft.ancestor(this.sc, e), o = ft.ancestor(this.ec, e); if (!n && !o) return new t(this.sc, this.so, this.ec, this.eo); var i = this.getPoints(); return n && (i.sc = n, i.so = 0), o && (i.ec = o, i.eo = ft.nodeLength(o)), new t(i.sc, i.so, i.ec, i.eo) } }, { key: "collapse", value: function (e) { return e ? new t(this.sc, this.so, this.sc, this.so) : new t(this.ec, this.eo, this.ec, this.eo) } }, { key: "splitText", value: function () { var e = this.sc === this.ec, n = this.getPoints(); return ft.isText(this.ec) && !ft.isEdgePoint(this.getEndPoint()) && this.ec.splitText(this.eo), ft.isText(this.sc) && !ft.isEdgePoint(this.getStartPoint()) && (n.sc = this.sc.splitText(this.so), n.so = 0, e && (n.ec = n.sc, n.eo = this.eo - this.so)), new t(n.sc, n.so, n.ec, n.eo) } }, { key: "deleteContents", value: function () { if (this.isCollapsed()) return this; var e = this.splitText(), n = e.nodes(null, { fullyContains: !0 }), o = ft.prevPointUntil(e.getStartPoint(), (function (t) { return !x.contains(n, t.node) })), r = []; return i.a.each(n, (function (t, e) { var n = e.parentNode; o.node !== n && 1 === ft.nodeLength(n) && r.push(n), ft.remove(e, !1) })), i.a.each(r, (function (t, e) { ft.remove(e, !1) })), new t(o.node, o.offset, o.node, o.offset).normalize() } }, { key: "makeIsOn", value: function (t) { return function () { var e = ft.ancestor(this.sc, t); return !!e && e === ft.ancestor(this.ec, t) } } }, { key: "isLeftEdgeOf", value: function (t) { if (!ft.isLeftEdgePoint(this.getStartPoint())) return !1; var e = ft.ancestor(this.sc, t); return e && ft.isLeftEdgeOf(this.sc, e) } }, { key: "isCollapsed", value: function () { return this.sc === this.ec && this.so === this.eo } }, { key: "wrapBodyInlineWithPara", value: function () { if (ft.isBodyContainer(this.sc) && ft.isEmpty(this.sc)) return this.sc.innerHTML = ft.emptyPara, new t(this.sc.firstChild, 0, this.sc.firstChild, 0); var e, n = this.normalize(); if (ft.isParaInline(this.sc) || ft.isPara(this.sc)) return n; if (ft.isInline(n.sc)) { var o = ft.listAncestor(n.sc, b.not(ft.isInline)); e = x.last(o), ft.isInline(e) || (e = o[o.length - 2] || n.sc.childNodes[n.so]) } else e = n.sc.childNodes[n.so > 0 ? n.so - 1 : 0]; if (e) { var i = ft.listPrev(e, ft.isParaInline).reverse(); if ((i = i.concat(ft.listNext(e.nextSibling, ft.isParaInline))).length) { var r = ft.wrap(x.head(i), "p"); ft.appendChildNodes(r, x.tail(i)) } } return this.normalize() } }, { key: "insertNode", value: function (t) { var e = this; (ft.isText(t) || ft.isInline(t)) && (e = this.wrapBodyInlineWithPara().deleteContents()); var n = ft.splitPoint(e.getStartPoint(), ft.isInline(t)); return n.rightNode ? n.rightNode.parentNode.insertBefore(t, n.rightNode) : n.container.appendChild(t), t } }, { key: "pasteHTML", value: function (t) { t = i.a.trim(t); var e = i()("<div></div>").html(t)[0], n = x.from(e.childNodes), o = this; return o.so >= 0 && (n = n.reverse()), n = n.map((function (t) { return o.insertNode(t) })), o.so > 0 && (n = n.reverse()), n } }, { key: "toString", value: function () { var t = this.nativeRange(); return v.isW3CRangeSupport ? t.toString() : t.text } }, { key: "getWordRange", value: function (e) { var n = this.getEndPoint(); if (!ft.isCharPoint(n)) return this; var o = ft.prevPointUntil(n, (function (t) { return !ft.isCharPoint(t) })); return e && (n = ft.nextPointUntil(n, (function (t) { return !ft.isCharPoint(t) }))), new t(o.node, o.offset, n.node, n.offset) } }, { key: "getWordsRange", value: function (e) { var n = this.getEndPoint(), o = function (t) { return !ft.isCharPoint(t) && !ft.isSpacePoint(t) }; if (o(n)) return this; var i = ft.prevPointUntil(n, o); return e && (n = ft.nextPointUntil(n, o)), new t(i.node, i.offset, n.node, n.offset) } }, { key: "getWordsMatchRange", value: function (e) { var n = this.getEndPoint(), o = ft.prevPointUntil(n, (function (o) { if (!ft.isCharPoint(o) && !ft.isSpacePoint(o)) return !0; var i = new t(o.node, o.offset, n.node, n.offset), r = e.exec(i.toString()); return r && 0 === r.index })), i = new t(o.node, o.offset, n.node, n.offset), r = i.toString(), a = e.exec(r); return a && a[0].length === r.length ? i : null } }, { key: "bookmark", value: function (t) { return { s: { path: ft.makeOffsetPath(t, this.sc), offset: this.so }, e: { path: ft.makeOffsetPath(t, this.ec), offset: this.eo } } } }, { key: "paraBookmark", value: function (t) { return { s: { path: x.tail(ft.makeOffsetPath(x.head(t), this.sc)), offset: this.so }, e: { path: x.tail(ft.makeOffsetPath(x.last(t), this.ec)), offset: this.eo } } } }, { key: "getClientRects", value: function () { return this.nativeRange().getClientRects() } }]) && vt(e.prototype, n), o && vt(e, o), t }(), kt = { create: function (t, e, n, o) { if (4 === arguments.length) return new yt(t, e, n, o); if (2 === arguments.length) return new yt(t, e, n = t, o = e); var i = this.createFromSelection(); if (!i && 1 === arguments.length) { var r = arguments[0]; return ft.isEditable(r) && (r = r.lastChild), this.createFromBodyElement(r, ft.emptyPara === arguments[0].innerHTML) } return i }, createFromBodyElement: function (t) { var e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], n = this.createFromNode(t); return n.collapse(e) }, createFromSelection: function () { var t, e, n, o; if (v.isW3CRangeSupport) { var i = document.getSelection(); if (!i || 0 === i.rangeCount) return null; if (ft.isBody(i.anchorNode)) return null; var r = i.getRangeAt(0); t = r.startContainer, e = r.startOffset, n = r.endContainer, o = r.endOffset } else { var a = document.selection.createRange(), s = a.duplicate(); s.collapse(!1); var l = a; l.collapse(!0); var c = gt(l, !0), u = gt(s, !1); ft.isText(c.node) && ft.isLeftEdgePoint(c) && ft.isTextNode(u.node) && ft.isRightEdgePoint(u) && u.node.nextSibling === c.node && (c = u), t = c.cont, e = c.offset, n = u.cont, o = u.offset } return new yt(t, e, n, o) }, createFromNode: function (t) { var e = t, n = 0, o = t, i = ft.nodeLength(o); return ft.isVoid(e) && (n = ft.listPrev(e).length - 1, e = e.parentNode), ft.isBR(o) ? (i = ft.listPrev(o).length - 1, o = o.parentNode) : ft.isVoid(o) && (i = ft.listPrev(o).length, o = o.parentNode), this.create(e, n, o, i) }, createFromNodeBefore: function (t) { return this.createFromNode(t).collapse(!0) }, createFromNodeAfter: function (t) { return this.createFromNode(t).collapse() }, createFromBookmark: function (t, e) { var n = ft.fromOffsetPath(t, e.s.path), o = e.s.offset, i = ft.fromOffsetPath(t, e.e.path), r = e.e.offset; return new yt(n, o, i, r) }, createFromParaBookmark: function (t, e) { var n = t.s.offset, o = t.e.offset, i = ft.fromOffsetPath(x.head(e), t.s.path), r = ft.fromOffsetPath(x.last(e), t.e.path); return new yt(i, n, r, o) } }, wt = { BACKSPACE: 8, TAB: 9, ENTER: 13, SPACE: 32, DELETE: 46, LEFT: 37, UP: 38, RIGHT: 39, DOWN: 40, NUM0: 48, NUM1: 49, NUM2: 50, NUM3: 51, NUM4: 52, NUM5: 53, NUM6: 54, NUM7: 55, NUM8: 56, B: 66, E: 69, I: 73, J: 74, K: 75, L: 76, R: 82, S: 83, U: 85, V: 86, Y: 89, Z: 90, SLASH: 191, LEFTBRACKET: 219, BACKSLASH: 220, RIGHTBRACKET: 221, HOME: 36, END: 35, PAGEUP: 33, PAGEDOWN: 34 }, Ct = { isEdit: function (t) { return x.contains([wt.BACKSPACE, wt.TAB, wt.ENTER, wt.SPACE, wt.DELETE], t) }, isMove: function (t) { return x.contains([wt.LEFT, wt.UP, wt.RIGHT, wt.DOWN], t) }, isNavigation: function (t) { return x.contains([wt.HOME, wt.END, wt.PAGEUP, wt.PAGEDOWN], t) }, nameFromCode: b.invertObject(wt), code: wt }; function xt(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var St = function () { function t(e) { !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.stack = [], this.stackOffset = -1, this.context = e, this.$editable = e.layoutInfo.editable, this.editable = this.$editable[0] } var e, n, o; return e = t, (n = [{ key: "makeSnapshot", value: function () { var t = kt.create(this.editable); return { contents: this.$editable.html(), bookmark: t && t.isOnEditable() ? t.bookmark(this.editable) : { s: { path: [], offset: 0 }, e: { path: [], offset: 0 } } } } }, { key: "applySnapshot", value: function (t) { null !== t.contents && this.$editable.html(t.contents), null !== t.bookmark && kt.createFromBookmark(this.editable, t.bookmark).select() } }, { key: "rewind", value: function () { this.$editable.html() !== this.stack[this.stackOffset].contents && this.recordUndo(), this.stackOffset = 0, this.applySnapshot(this.stack[this.stackOffset]) } }, { key: "commit", value: function () { this.stack = [], this.stackOffset = -1, this.recordUndo() } }, { key: "reset", value: function () { this.stack = [], this.stackOffset = -1, this.$editable.html(""), this.recordUndo() } }, { key: "undo", value: function () { this.$editable.html() !== this.stack[this.stackOffset].contents && this.recordUndo(), this.stackOffset > 0 && (this.stackOffset--, this.applySnapshot(this.stack[this.stackOffset])) } }, { key: "redo", value: function () { this.stack.length - 1 > this.stackOffset && (this.stackOffset++, this.applySnapshot(this.stack[this.stackOffset])) } }, { key: "recordUndo", value: function () { this.stackOffset++, this.stack.length > this.stackOffset && (this.stack = this.stack.slice(0, this.stackOffset)), this.stack.push(this.makeSnapshot()), this.stack.length > this.context.options.historyLimit && (this.stack.shift(), this.stackOffset -= 1) } }]) && xt(e.prototype, n), o && xt(e, o), t }(); function Tt(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var Et = 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, o; return e = t, (n = [{ key: "jQueryCSS", value: function (t, e) { if (v.jqueryVersion < 1.9) { var n = {}; return i.a.each(e, (function (e, o) { n[o] = t.css(o) })), n } return t.css(e) } }, { key: "fromNode", value: function (t) { var e = this.jQueryCSS(t, ["font-family", "font-size", "text-align", "list-style-type", "line-height"]) || {}, n = t[0].style.fontSize || e["font-size"]; return e["font-size"] = parseInt(n, 10), e["font-size-unit"] = n.match(/[a-z%]+$/), e } }, { key: "stylePara", value: function (t, e) { i.a.each(t.nodes(ft.isPara, { includeAncestor: !0 }), (function (t, n) { i()(n).css(e) })) } }, { key: "styleNodes", value: function (t, e) { t = t.splitText(); var n = e && e.nodeName || "SPAN", o = !(!e || !e.expandClosestSibling), r = !(!e || !e.onlyPartialContains); if (t.isCollapsed()) return [t.insertNode(ft.create(n))]; var a = ft.makePredByNodeName(n), s = t.nodes(ft.isText, { fullyContains: !0 }).map((function (t) { return ft.singleChildAncestor(t, a) || ft.wrap(t, n) })); if (o) { if (r) { var l = t.nodes(); a = b.and(a, (function (t) { return x.contains(l, t) })) } return s.map((function (t) { var e = ft.withClosestSiblings(t, a), n = x.head(e), o = x.tail(e); return i.a.each(o, (function (t, e) { ft.appendChildNodes(n, e.childNodes), ft.remove(e) })), x.head(e) })) } return s } }, { key: "current", value: function (t) { var e = i()(ft.isElement(t.sc) ? t.sc : t.sc.parentNode), n = this.fromNode(e); try { n = i.a.extend(n, { "font-bold": document.queryCommandState("bold") ? "bold" : "normal", "font-italic": document.queryCommandState("italic") ? "italic" : "normal", "font-underline": document.queryCommandState("underline") ? "underline" : "normal", "font-subscript": document.queryCommandState("subscript") ? "subscript" : "normal", "font-superscript": document.queryCommandState("superscript") ? "superscript" : "normal", "font-strikethrough": document.queryCommandState("strikethrough") ? "strikethrough" : "normal", "font-family": document.queryCommandValue("fontname") || n["font-family"] }) } catch (t) { } if (t.isOnList()) { var o = ["circle", "disc", "disc-leading-zero", "square"].indexOf(n["list-style-type"]) > -1; n["list-style"] = o ? "unordered" : "ordered" } else n["list-style"] = "none"; var r = ft.ancestor(t.sc, ft.isPara); if (r && r.style["line-height"]) n["line-height"] = r.style.lineHeight; else { var a = parseInt(n["line-height"], 10) / parseInt(n["font-size"], 10); n["line-height"] = a.toFixed(1) } return n.anchor = t.isOnAnchor() && ft.ancestor(t.sc, ft.isAnchor), n.ancestors = ft.listAncestor(t.sc, ft.isEditable), n.range = t, n } }]) && Tt(e.prototype, n), o && Tt(e, o), t }(); function It(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var $t = 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, o; return e = t, (n = [{ key: "insertOrderedList", value: function (t) { this.toggleList("OL", t) } }, { key: "insertUnorderedList", value: function (t) { this.toggleList("UL", t) } }, { key: "indent", value: function (t) { var e = this, n = kt.create(t).wrapBodyInlineWithPara(), o = n.nodes(ft.isPara, { includeAncestor: !0 }), r = x.clusterBy(o, b.peq2("parentNode")); i.a.each(r, (function (t, n) { var o = x.head(n); if (ft.isLi(o)) { var r = e.findList(o.previousSibling); r ? n.map((function (t) { return r.appendChild(t) })) : (e.wrapList(n, o.parentNode.nodeName), n.map((function (t) { return t.parentNode })).map((function (t) { return e.appendToPrevious(t) }))) } else i.a.each(n, (function (t, e) { i()(e).css("marginLeft", (function (t, e) { return (parseInt(e, 10) || 0) + 25 })) })) })), n.select() } }, { key: "outdent", value: function (t) { var e = this, n = kt.create(t).wrapBodyInlineWithPara(), o = n.nodes(ft.isPara, { includeAncestor: !0 }), r = x.clusterBy(o, b.peq2("parentNode")); i.a.each(r, (function (t, n) { var o = x.head(n); ft.isLi(o) ? e.releaseList([n]) : i.a.each(n, (function (t, e) { i()(e).css("marginLeft", (function (t, e) { return (e = parseInt(e, 10) || 0) > 25 ? e - 25 : "" })) })) })), n.select() } }, { key: "toggleList", value: function (t, e) { var n = this, o = kt.create(e).wrapBodyInlineWithPara(), r = o.nodes(ft.isPara, { includeAncestor: !0 }), a = o.paraBookmark(r), s = x.clusterBy(r, b.peq2("parentNode")); if (x.find(r, ft.isPurePara)) { var l = []; i.a.each(s, (function (e, o) { l = l.concat(n.wrapList(o, t)) })), r = l } else { var c = o.nodes(ft.isList, { includeAncestor: !0 }).filter((function (e) { return !i.a.nodeName(e, t) })); c.length ? i.a.each(c, (function (e, n) { ft.replace(n, t) })) : r = this.releaseList(s, !0) } kt.createFromParaBookmark(a, r).select() } }, { key: "wrapList", value: function (t, e) { var n = x.head(t), o = x.last(t), i = ft.isList(n.previousSibling) && n.previousSibling, r = ft.isList(o.nextSibling) && o.nextSibling, a = i || ft.insertAfter(ft.create(e || "UL"), o); return t = t.map((function (t) { return ft.isPurePara(t) ? ft.replace(t, "LI") : t })), ft.appendChildNodes(a, t), r && (ft.appendChildNodes(a, x.from(r.childNodes)), ft.remove(r)), t } }, { key: "releaseList", value: function (t, e) { var n = this, o = []; return i.a.each(t, (function (t, r) { var a = x.head(r), s = x.last(r), l = e ? ft.lastAncestor(a, ft.isList) : a.parentNode, c = l.parentNode; if ("LI" === l.parentNode.nodeName) r.map((function (t) { var e = n.findNextSiblings(t); c.nextSibling ? c.parentNode.insertBefore(t, c.nextSibling) : c.parentNode.appendChild(t), e.length && (n.wrapList(e, l.nodeName), t.appendChild(e[0].parentNode)) })), 0 === l.children.length && c.removeChild(l), 0 === c.childNodes.length && c.parentNode.removeChild(c); else { var u = l.childNodes.length > 1 ? ft.splitTree(l, { node: s.parentNode, offset: ft.position(s) + 1 }, { isSkipPaddingBlankHTML: !0 }) : null, d = ft.splitTree(l, { node: a.parentNode, offset: ft.position(a) }, { isSkipPaddingBlankHTML: !0 }); r = e ? ft.listDescendant(d, ft.isLi) : x.from(d.childNodes).filter(ft.isLi), !e && ft.isList(l.parentNode) || (r = r.map((function (t) { return ft.replace(t, "P") }))), i.a.each(x.from(r).reverse(), (function (t, e) { ft.insertAfter(e, l) })); var h = x.compact([l, d, u]); i.a.each(h, (function (t, e) { var n = [e].concat(ft.listDescendant(e, ft.isList)); i.a.each(n.reverse(), (function (t, e) { ft.nodeLength(e) || ft.remove(e, !0) })) })) } o = o.concat(r) })), o } }, { key: "appendToPrevious", value: function (t) { return t.previousSibling ? ft.appendChildNodes(t.previousSibling, [t]) : this.wrapList([t], "LI") } }, { key: "findList", value: function (t) { return t ? x.find(t.children, (function (t) { return ["OL", "UL"].indexOf(t.nodeName) > -1 })) : null } }, { key: "findNextSiblings", value: function (t) { for (var e = []; t.nextSibling;)e.push(t.nextSibling), t = t.nextSibling; return e } }]) && It(e.prototype, n), o && It(e, o), t }(); function Nt(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var Pt = function () { function t(e) { !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.bullet = new $t, this.options = e.options } var e, n, o; return e = t, (n = [{ key: "insertTab", value: function (t, e) { var n = ft.createText(new Array(e + 1).join(ft.NBSP_CHAR)); (t = t.deleteContents()).insertNode(n, !0), (t = kt.create(n, e)).select() } }, { key: "insertParagraph", value: function (t, e) { e = (e = (e = e || kt.create(t)).deleteContents()).wrapBodyInlineWithPara(); var n, o = ft.ancestor(e.sc, ft.isPara); if (o) { if (ft.isLi(o) && (ft.isEmpty(o) || ft.deepestChildIsEmpty(o))) return void this.bullet.toggleList(o.parentNode.nodeName); var r = null; if (1 === this.options.blockquoteBreakingLevel ? r = ft.ancestor(o, ft.isBlockquote) : 2 === this.options.blockquoteBreakingLevel && (r = ft.lastAncestor(o, ft.isBlockquote)), r) { n = i()(ft.emptyPara)[0], ft.isRightEdgePoint(e.getStartPoint()) && ft.isBR(e.sc.nextSibling) && i()(e.sc.nextSibling).remove(); var a = ft.splitTree(r, e.getStartPoint(), { isDiscardEmptySplits: !0 }); a ? a.parentNode.insertBefore(n, a) : ft.insertAfter(n, r) } else { n = ft.splitTree(o, e.getStartPoint()); var s = ft.listDescendant(o, ft.isEmptyAnchor); s = s.concat(ft.listDescendant(n, ft.isEmptyAnchor)), i.a.each(s, (function (t, e) { ft.remove(e) })), (ft.isHeading(n) || ft.isPre(n) || ft.isCustomStyleTag(n)) && ft.isEmpty(n) && (n = ft.replace(n, "p")) } } else { var l = e.sc.childNodes[e.so]; n = i()(ft.emptyPara)[0], l ? e.sc.insertBefore(n, l) : e.sc.appendChild(n) } kt.create(n, 0).normalize().select().scrollIntoView(t) } }]) && Nt(e.prototype, n), o && Nt(e, o), t }(); function Rt(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var Lt = function t(e, n, o, i) { var r = { colPos: 0, rowPos: 0 }, a = [], s = []; function l(t, e, n, o, i, r, s) { var l = { baseRow: n, baseCell: o, isRowSpan: i, isColSpan: r, isVirtual: s }; a[t] || (a[t] = []), a[t][e] = l } function c(t, e, n, o) { return { baseCell: t.baseCell, action: e, virtualTable: { rowIndex: n, cellIndex: o } } } function u(t, e) { if (!a[t]) return e; if (!a[t][e]) return e; for (var n = e; a[t][n];)if (n++, !a[t][n]) return n } function d(t, e) { var n = u(t.rowIndex, e.cellIndex), o = e.colSpan > 1, i = e.rowSpan > 1, a = t.rowIndex === r.rowPos && e.cellIndex === r.colPos; l(t.rowIndex, n, t, e, i, o, !1); var s = e.attributes.rowSpan ? parseInt(e.attributes.rowSpan.value, 10) : 0; if (s > 1) for (var c = 1; c < s; c++) { var d = t.rowIndex + c; h(d, n, e, a), l(d, n, t, e, !0, o, !0) } var f = e.attributes.colSpan ? parseInt(e.attributes.colSpan.value, 10) : 0; if (f > 1) for (var p = 1; p < f; p++) { var m = u(t.rowIndex, n + p); h(t.rowIndex, m, e, a), l(t.rowIndex, m, t, e, i, !0, !0) } } function h(t, e, n, o) { t === r.rowPos && r.colPos >= n.cellIndex && n.cellIndex <= e && !o && r.colPos++ } function f(e) { switch (n) { case t.where.Column: if (e.isColSpan) return t.resultAction.SubtractSpanCount; break; case t.where.Row: if (!e.isVirtual && e.isRowSpan) return t.resultAction.AddCell; if (e.isRowSpan) return t.resultAction.SubtractSpanCount }return t.resultAction.RemoveCell } function p(e) { switch (n) { case t.where.Column: if (e.isColSpan) return t.resultAction.SumSpanCount; if (e.isRowSpan && e.isVirtual) return t.resultAction.Ignore; break; case t.where.Row: if (e.isRowSpan) return t.resultAction.SumSpanCount; if (e.isColSpan && e.isVirtual) return t.resultAction.Ignore }return t.resultAction.AddCell } this.getActionList = function () { for (var e = n === t.where.Row ? r.rowPos : -1, i = n === t.where.Column ? r.colPos : -1, l = 0, u = !0; u;) { var d = e >= 0 ? e : l, h = i >= 0 ? i : l, m = a[d]; if (!m) return u = !1, s; var v = m[h]; if (!v) return u = !1, s; var g = t.resultAction.Ignore; switch (o) { case t.requestAction.Add: g = p(v); break; case t.requestAction.Delete: g = f(v) }s.push(c(v, g, d, h)), l++ } return s }, e && e.tagName && ("td" === e.tagName.toLowerCase() || "th" === e.tagName.toLowerCase()) && (r.colPos = e.cellIndex, e.parentElement && e.parentElement.tagName && "tr" === e.parentElement.tagName.toLowerCase() && (r.rowPos = e.parentElement.rowIndex)), function () { for (var t = i.rows, e = 0; e < t.length; e++)for (var n = t[e].cells, o = 0; o < n.length; o++)d(t[e], n[o]) }() }; Lt.where = { Row: 0, Column: 1 }, Lt.requestAction = { Add: 0, Delete: 1 }, Lt.resultAction = { Ignore: 0, SubtractSpanCount: 1, RemoveCell: 2, AddCell: 3, SumSpanCount: 4 }; var At = 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, o; return e = t, (n = [{ key: "tab", value: function (t, e) { var n = ft.ancestor(t.commonAncestor(), ft.isCell), o = ft.ancestor(n, ft.isTable), i = ft.listDescendant(o, ft.isCell), r = x[e ? "prev" : "next"](i, n); r && kt.create(r, 0).select() } }, { key: "addRow", value: function (t, e) { for (var n = ft.ancestor(t.commonAncestor(), ft.isCell), o = i()(n).closest("tr"), r = this.recoverAttributes(o), a = i()("<tr" + r + "></tr>"), s = new Lt(n, Lt.where.Row, Lt.requestAction.Add, i()(o).closest("table")[0]).getActionList(), l = 0; l < s.length; l++) { var c = s[l], u = this.recoverAttributes(c.baseCell); switch (c.action) { case Lt.resultAction.AddCell: a.append("<td" + u + ">" + ft.blank + "</td>"); break; case Lt.resultAction.SumSpanCount: if ("top" === e && (c.baseCell.parent ? c.baseCell.closest("tr").rowIndex : 0) <= o[0].rowIndex) { var d = i()("<div></div>").append(i()("<td" + u + ">" + ft.blank + "</td>").removeAttr("rowspan")).html(); a.append(d); break } var h = parseInt(c.baseCell.rowSpan, 10); h++, c.baseCell.setAttribute("rowSpan", h) } } if ("top" === e) o.before(a); else { if (n.rowSpan > 1) { var f = o[0].rowIndex + (n.rowSpan - 2); return void i()(i()(o).parent().find("tr")[f]).after(i()(a)) } o.after(a) } } }, { key: "addCol", value: function (t, e) { var n = ft.ancestor(t.commonAncestor(), ft.isCell), o = i()(n).closest("tr"); i()(o).siblings().push(o); for (var r = new Lt(n, Lt.where.Column, Lt.requestAction.Add, i()(o).closest("table")[0]).getActionList(), a = 0; a < r.length; a++) { var s = r[a], l = this.recoverAttributes(s.baseCell); switch (s.action) { case Lt.resultAction.AddCell: "right" === e ? i()(s.baseCell).after("<td" + l + ">" + ft.blank + "</td>") : i()(s.baseCell).before("<td" + l + ">" + ft.blank + "</td>"); break; case Lt.resultAction.SumSpanCount: if ("right" === e) { var c = parseInt(s.baseCell.colSpan, 10); c++, s.baseCell.setAttribute("colSpan", c) } else i()(s.baseCell).before("<td" + l + ">" + ft.blank + "</td>") } } } }, { key: "recoverAttributes", value: function (t) { var e = ""; if (!t) return e; for (var n = t.attributes || [], o = 0; o < n.length; o++)"id" !== n[o].name.toLowerCase() && n[o].specified && (e += " " + n[o].name + "='" + n[o].value + "'"); return e } }, { key: "deleteRow", value: function (t) { for (var e = ft.ancestor(t.commonAncestor(), ft.isCell), n = i()(e).closest("tr"), o = n.children("td, th").index(i()(e)), r = n[0].rowIndex, a = new Lt(e, Lt.where.Row, Lt.requestAction.Delete, i()(n).closest("table")[0]).getActionList(), s = 0; s < a.length; s++)if (a[s]) { var l = a[s].baseCell, c = a[s].virtualTable, u = l.rowSpan && l.rowSpan > 1, d = u ? parseInt(l.rowSpan, 10) : 0; switch (a[s].action) { case Lt.resultAction.Ignore: continue; case Lt.resultAction.AddCell: var h = n.next("tr")[0]; if (!h) continue; var f = n[0].cells[o]; u && (d > 2 ? (d--, h.insertBefore(f, h.cells[o]), h.cells[o].setAttribute("rowSpan", d), h.cells[o].innerHTML = "") : 2 === d && (h.insertBefore(f, h.cells[o]), h.cells[o].removeAttribute("rowSpan"), h.cells[o].innerHTML = "")); continue; case Lt.resultAction.SubtractSpanCount: u && (d > 2 ? (d--, l.setAttribute("rowSpan", d), c.rowIndex !== r && l.cellIndex === o && (l.innerHTML = "")) : 2 === d && (l.removeAttribute("rowSpan"), c.rowIndex !== r && l.cellIndex === o && (l.innerHTML = ""))); continue; case Lt.resultAction.RemoveCell: continue } } n.remove() } }, { key: "deleteCol", value: function (t) { for (var e = ft.ancestor(t.commonAncestor(), ft.isCell), n = i()(e).closest("tr"), o = n.children("td, th").index(i()(e)), r = new Lt(e, Lt.where.Column, Lt.requestAction.Delete, i()(n).closest("table")[0]).getActionList(), a = 0; a < r.length; a++)if (r[a]) switch (r[a].action) { case Lt.resultAction.Ignore: continue; case Lt.resultAction.SubtractSpanCount: var s = r[a].baseCell; if (s.colSpan && s.colSpan > 1) { var l = s.colSpan ? parseInt(s.colSpan, 10) : 0; l > 2 ? (l--, s.setAttribute("colSpan", l), s.cellIndex === o && (s.innerHTML = "")) : 2 === l && (s.removeAttribute("colSpan"), s.cellIndex === o && (s.innerHTML = "")) } continue; case Lt.resultAction.RemoveCell: ft.remove(r[a].baseCell, !0); continue } } }, { key: "createTable", value: function (t, e, n) { for (var o, r = [], a = 0; a < t; a++)r.push("<td>" + ft.blank + "</td>"); o = r.join(""); for (var s, l = [], c = 0; c < e; c++)l.push("<tr>" + o + "</tr>"); s = l.join(""); var u = i()("<table>" + s + "</table>"); return n && n.tableClassName && u.addClass(n.tableClassName), u[0] } }, { key: "deleteTable", value: function (t) { var e = ft.ancestor(t.commonAncestor(), ft.isCell); i()(e).closest("table").remove() } }]) && Rt(e.prototype, n), o && Rt(e, o), t }(); function Ft(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var Dt = function () { function t(e) { var n = this; !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.context = e, this.$note = e.layoutInfo.note, this.$editor = e.layoutInfo.editor, this.$editable = e.layoutInfo.editable, this.options = e.options, this.lang = this.options.langInfo, this.editable = this.$editable[0], this.lastRange = null, this.snapshot = null, this.style = new Et, this.table = new At, this.typing = new Pt(e), this.bullet = new $t, this.history = new St(e), this.context.memo("help.undo", this.lang.help.undo), this.context.memo("help.redo", this.lang.help.redo), this.context.memo("help.tab", this.lang.help.tab), this.context.memo("help.untab", this.lang.help.untab), this.context.memo("help.insertParagraph", this.lang.help.insertParagraph), this.context.memo("help.insertOrderedList", this.lang.help.insertOrderedList), this.context.memo("help.insertUnorderedList", this.lang.help.insertUnorderedList), this.context.memo("help.indent", this.lang.help.indent), this.context.memo("help.outdent", this.lang.help.outdent), this.context.memo("help.formatPara", this.lang.help.formatPara), this.context.memo("help.insertHorizontalRule", this.lang.help.insertHorizontalRule), this.context.memo("help.fontName", this.lang.help.fontName); for (var o = ["bold", "italic", "underline", "strikethrough", "superscript", "subscript", "justifyLeft", "justifyCenter", "justifyRight", "justifyFull", "formatBlock", "removeFormat", "backColor"], r = 0, a = o.length; r < a; r++)this[o[r]] = function (t) { return function (e) { n.beforeCommand(), document.execCommand(t, !1, e), n.afterCommand(!0) } }(o[r]), this.context.memo("help." + o[r], this.lang.help[o[r]]); this.fontName = this.wrapCommand((function (t) { return n.fontStyling("font-family", v.validFontName(t)) })), this.fontSize = this.wrapCommand((function (t) { var e = n.currentStyle()["font-size-unit"]; return n.fontStyling("font-size", t + e) })), this.fontSizeUnit = this.wrapCommand((function (t) { var e = n.currentStyle()["font-size"]; return n.fontStyling("font-size", e + t) })); for (var s = 1; s <= 6; s++)this["formatH" + s] = function (t) { return function () { n.formatBlock("H" + t) } }(s), this.context.memo("help.formatH" + s, this.lang.help["formatH" + s]); this.insertParagraph = this.wrapCommand((function () { n.typing.insertParagraph(n.editable) })), this.insertOrderedList = this.wrapCommand((function () { n.bullet.insertOrderedList(n.editable) })), this.insertUnorderedList = this.wrapCommand((function () { n.bullet.insertUnorderedList(n.editable) })), this.indent = this.wrapCommand((function () { n.bullet.indent(n.editable) })), this.outdent = this.wrapCommand((function () { n.bullet.outdent(n.editable) })), this.insertNode = this.wrapCommand((function (t) { n.isLimited(i()(t).text().length) || (n.getLastRange().insertNode(t), n.setLastRange(kt.createFromNodeAfter(t).select())) })), this.insertText = this.wrapCommand((function (t) { if (!n.isLimited(t.length)) { var e = n.getLastRange().insertNode(ft.createText(t)); n.setLastRange(kt.create(e, ft.nodeLength(e)).select()) } })), this.pasteHTML = this.wrapCommand((function (t) { if (!n.isLimited(t.length)) { t = n.context.invoke("codeview.purify", t); var e = n.getLastRange().pasteHTML(t); n.setLastRange(kt.createFromNodeAfter(x.last(e)).select()) } })), this.formatBlock = this.wrapCommand((function (t, e) { var o = n.options.callbacks.onApplyCustomStyle; o ? o.call(n, e, n.context, n.onFormatBlock) : n.onFormatBlock(t, e) })), this.insertHorizontalRule = this.wrapCommand((function () { var t = n.getLastRange().insertNode(ft.create("HR")); t.nextSibling && n.setLastRange(kt.create(t.nextSibling, 0).normalize().select()) })), this.lineHeight = this.wrapCommand((function (t) { n.style.stylePara(n.getLastRange(), { lineHeight: t }) })), this.createLink = this.wrapCommand((function (t) { var e = t.url, o = t.text, r = t.isNewWindow, a = t.checkProtocol, s = t.range || n.getLastRange(), l = o.length - s.toString().length; if (!(l > 0 && n.isLimited(l))) { var c = s.toString() !== o; "string" == typeof e && (e = e.trim()), n.options.onCreateLink ? e = n.options.onCreateLink(e) : a && (e = /^([A-Za-z][A-Za-z0-9+-.]*\:|#|\/)/.test(e) ? e : n.options.defaultProtocol + e); var u = []; if (c) { var d = (s = s.deleteContents()).insertNode(i()("<A>" + o + "</A>")[0]); u.push(d) } else u = n.style.styleNodes(s, { nodeName: "A", expandClosestSibling: !0, onlyPartialContains: !0 }); i.a.each(u, (function (t, n) { i()(n).attr("href", e), r ? i()(n).attr("target", "_blank") : i()(n).removeAttr("target") })); var h = kt.createFromNodeBefore(x.head(u)).getStartPoint(), f = kt.createFromNodeAfter(x.last(u)).getEndPoint(); n.setLastRange(kt.create(h.node, h.offset, f.node, f.offset).select()) } })), this.color = this.wrapCommand((function (t) { var e = t.foreColor, n = t.backColor; e && document.execCommand("foreColor", !1, e), n && document.execCommand("backColor", !1, n) })), this.foreColor = this.wrapCommand((function (t) { document.execCommand("foreColor", !1, t) })), this.insertTable = this.wrapCommand((function (t) { var e = t.split("x"); n.getLastRange().deleteContents().insertNode(n.table.createTable(e[0], e[1], n.options)) })), this.removeMedia = this.wrapCommand((function () { var t = i()(n.restoreTarget()).parent(); t.closest("figure").length ? t.closest("figure").remove() : t = i()(n.restoreTarget()).detach(), n.context.triggerEvent("media.delete", t, n.$editable) })), this.floatMe = this.wrapCommand((function (t) { var e = i()(n.restoreTarget()); e.toggleClass("note-float-left", "left" === t), e.toggleClass("note-float-right", "right" === t), e.css("float", "none" === t ? "" : t) })), this.resize = this.wrapCommand((function (t) { var e = i()(n.restoreTarget()); 0 === (t = parseFloat(t)) ? e.css("width", "") : e.css({ width: 100 * t + "%", height: "" }) })) } var e, n, o; return e = t, (n = [{ key: "initialize", value: function () { var t = this; this.$editable.on("keydown", (function (e) { if (e.keyCode === Ct.code.ENTER && t.context.triggerEvent("enter", e), t.context.triggerEvent("keydown", e), t.snapshot = t.history.makeSnapshot(), t.hasKeyShortCut = !1, e.isDefaultPrevented() || (t.options.shortcuts ? t.hasKeyShortCut = t.handleKeyMap(e) : t.preventDefaultEditableShortCuts(e)), t.isLimited(1, e)) { var n = t.getLastRange(); if (n.eo - n.so == 0) return !1 } t.setLastRange(), t.options.recordEveryKeystroke && !1 === t.hasKeyShortCut && t.history.recordUndo() })).on("keyup", (function (e) { t.setLastRange(), t.context.triggerEvent("keyup", e) })).on("focus", (function (e) { t.setLastRange(), t.context.triggerEvent("focus", e) })).on("blur", (function (e) { t.context.triggerEvent("blur", e) })).on("mousedown", (function (e) { t.context.triggerEvent("mousedown", e) })).on("mouseup", (function (e) { t.setLastRange(), t.history.recordUndo(), t.context.triggerEvent("mouseup", e) })).on("scroll", (function (e) { t.context.triggerEvent("scroll", e) })).on("paste", (function (e) { t.setLastRange(), t.context.triggerEvent("paste", e) })).on("input", (function () { t.isLimited(0) && t.snapshot && t.history.applySnapshot(t.snapshot) })), this.$editable.attr("spellcheck", this.options.spellCheck), this.$editable.attr("autocorrect", this.options.spellCheck), this.options.disableGrammar && this.$editable.attr("data-gramm", !1), this.$editable.html(ft.html(this.$note) || ft.emptyPara), this.$editable.on(v.inputEventName, b.debounce((function () { t.context.triggerEvent("change", t.$editable.html(), t.$editable) }), 10)), this.$editable.on("focusin", (function (e) { t.context.triggerEvent("focusin", e) })).on("focusout", (function (e) { t.context.triggerEvent("focusout", e) })), this.options.airMode ? this.options.overrideContextMenu && this.$editor.on("contextmenu", (function (e) { return t.context.triggerEvent("contextmenu", e), !1 })) : (this.options.width && this.$editor.outerWidth(this.options.width), this.options.height && this.$editable.outerHeight(this.options.height), this.options.maxHeight && this.$editable.css("max-height", this.options.maxHeight), this.options.minHeight && this.$editable.css("min-height", this.options.minHeight)), this.history.recordUndo(), this.setLastRange() } }, { key: "destroy", value: function () { this.$editable.off() } }, { key: "handleKeyMap", value: function (t) { var e = this.options.keyMap[v.isMac ? "mac" : "pc"], n = []; t.metaKey && n.push("CMD"), t.ctrlKey && !t.altKey && n.push("CTRL"), t.shiftKey && n.push("SHIFT"); var o = Ct.nameFromCode[t.keyCode]; o && n.push(o); var i = e[n.join("+")]; if ("TAB" !== o || this.options.tabDisable) if (i) { if (!1 !== this.context.invoke(i)) return t.preventDefault(), !0 } else Ct.isEdit(t.keyCode) && this.afterCommand(); else this.afterCommand(); return !1 } }, { key: "preventDefaultEditableShortCuts", value: function (t) { (t.ctrlKey || t.metaKey) && x.contains([66, 73, 85], t.keyCode) && t.preventDefault() } }, { key: "isLimited", value: function (t, e) { return t = t || 0, (void 0 === e || !(Ct.isMove(e.keyCode) || Ct.isNavigation(e.keyCode) || e.ctrlKey || e.metaKey || x.contains([Ct.code.BACKSPACE, Ct.code.DELETE], e.keyCode))) && this.options.maxTextLength > 0 && this.$editable.text().length + t > this.options.maxTextLength } }, { key: "createRange", value: function () { return this.focus(), this.setLastRange(), this.getLastRange() } }, { key: "setLastRange", value: function (t) { t ? this.lastRange = t : (this.lastRange = kt.create(this.editable), 0 === i()(this.lastRange.sc).closest(".note-editable").length && (this.lastRange = kt.createFromBodyElement(this.editable))) } }, { key: "getLastRange", value: function () { return this.lastRange || this.setLastRange(), this.lastRange } }, { key: "saveRange", value: function (t) { t && this.getLastRange().collapse().select() } }, { key: "restoreRange", value: function () { this.lastRange && (this.lastRange.select(), this.focus()) } }, { key: "saveTarget", value: function (t) { this.$editable.data("target", t) } }, { key: "clearTarget", value: function () { this.$editable.removeData("target") } }, { key: "restoreTarget", value: function () { return this.$editable.data("target") } }, { key: "currentStyle", value: function () { var t = kt.create(); return t && (t = t.normalize()), t ? this.style.current(t) : this.style.fromNode(this.$editable) } }, { key: "styleFromNode", value: function (t) { return this.style.fromNode(t) } }, { key: "undo", value: function () { this.context.triggerEvent("before.command", this.$editable.html()), this.history.undo(), this.context.triggerEvent("change", this.$editable.html(), this.$editable) } }, { key: "commit", value: function () { this.context.triggerEvent("before.command", this.$editable.html()), this.history.commit(), this.context.triggerEvent("change", this.$editable.html(), this.$editable) } }, { key: "redo", value: function () { this.context.triggerEvent("before.command", this.$editable.html()), this.history.redo(), this.context.triggerEvent("change", this.$editable.html(), this.$editable) } }, { key: "beforeCommand", value: function () { this.context.triggerEvent("before.command", this.$editable.html()), document.execCommand("styleWithCSS", !1, this.options.styleWithCSS), this.focus() } }, { key: "afterCommand", value: function (t) { this.normalizeContent(), this.history.recordUndo(), t || this.context.triggerEvent("change", this.$editable.html(), this.$editable) } }, { key: "tab", value: function () { var t = this.getLastRange(); if (t.isCollapsed() && t.isOnCell()) this.table.tab(t); else { if (0 === this.options.tabSize) return !1; this.isLimited(this.options.tabSize) || (this.beforeCommand(), this.typing.insertTab(t, this.options.tabSize), this.afterCommand()) } } }, { key: "untab", value: function () { var t = this.getLastRange(); if (t.isCollapsed() && t.isOnCell()) this.table.tab(t, !0); else if (0 === this.options.tabSize) return !1 } }, { key: "wrapCommand", value: function (t) { return function () { this.beforeCommand(), t.apply(this, arguments), this.afterCommand() } } }, { key: "insertImage", value: function (t, e) { var n, o = this; return (n = t, i.a.Deferred((function (t) { var e = i()("<img>"); e.one("load", (function () { e.off("error abort"), t.resolve(e) })).one("error abort", (function () { e.off("load").detach(), t.reject(e) })).css({ display: "none" }).appendTo(document.body).attr("src", n) })).promise()).then((function (t) { o.beforeCommand(), "function" == typeof e ? e(t) : ("string" == typeof e && t.attr("data-filename", e), t.css("width", Math.min(o.$editable.width(), t.width()))), t.show(), o.getLastRange().insertNode(t[0]), o.setLastRange(kt.createFromNodeAfter(t[0]).select()), o.afterCommand() })).fail((function (t) { o.context.triggerEvent("image.upload.error", t) })) } }, { key: "insertImagesAsDataURL", value: function (t) { var e = this; i.a.each(t, (function (t, n) { var o = n.name; e.options.maximumImageFileSize && e.options.maximumImageFileSize < n.size ? e.context.triggerEvent("image.upload.error", e.lang.image.maximumFileSizeError) : function (t) { return i.a.Deferred((function (e) { i.a.extend(new FileReader, { onload: function (t) { var n = t.target.result; e.resolve(n) }, onerror: function (t) { e.reject(t) } }).readAsDataURL(t) })).promise() }(n).then((function (t) { return e.insertImage(t, o) })).fail((function () { e.context.triggerEvent("image.upload.error") })) })) } }, { key: "insertImagesOrCallback", value: function (t) { this.options.callbacks.onImageUpload ? this.context.triggerEvent("image.upload", t) : this.insertImagesAsDataURL(t) } }, { key: "getSelectedText", value: function () { var t = this.getLastRange(); return t.isOnAnchor() && (t = kt.createFromNode(ft.ancestor(t.sc, ft.isAnchor))), t.toString() } }, { key: "onFormatBlock", value: function (t, e) { if (document.execCommand("FormatBlock", !1, v.isMSIE ? "<" + t + ">" : t), e && e.length && (e[0].tagName.toUpperCase() !== t.toUpperCase() && (e = e.find(t)), e && e.length)) { var n = e[0].className || ""; if (n) { var o = this.createRange(); i()([o.sc, o.ec]).closest(t).addClass(n) } } } }, { key: "formatPara", value: function () { this.formatBlock("P") } }, { key: "fontStyling", value: function (t, e) { var n = this.getLastRange(); if ("" !== n) { var o = this.style.styleNodes(n); if (this.$editor.find(".note-status-output").html(""), i()(o).css(t, e), n.isCollapsed()) { var r = x.head(o); r && !ft.nodeLength(r) && (r.innerHTML = ft.ZERO_WIDTH_NBSP_CHAR, kt.createFromNodeAfter(r.firstChild).select(), this.setLastRange(), this.$editable.data("bogus", r)) } } else { var a = i.a.now(); this.$editor.find(".note-status-output").html('<div id="note-status-output-' + a + '" class="alert alert-info">' + this.lang.output.noSelection + "</div>"), setTimeout((function () { i()("#note-status-output-" + a).remove() }), 5e3) } } }, { key: "unlink", value: function () { var t = this.getLastRange(); if (t.isOnAnchor()) { var e = ft.ancestor(t.sc, ft.isAnchor); (t = kt.createFromNode(e)).select(), this.setLastRange(), this.beforeCommand(), document.execCommand("unlink"), this.afterCommand() } } }, { key: "getLinkInfo", value: function () { var t = this.getLastRange().expand(ft.isAnchor), e = i()(x.head(t.nodes(ft.isAnchor))), n = { range: t, text: t.toString(), url: e.length ? e.attr("href") : "" }; return e.length && (n.isNewWindow = "_blank" === e.attr("target")), n } }, { key: "addRow", value: function (t) { var e = this.getLastRange(this.$editable); e.isCollapsed() && e.isOnCell() && (this.beforeCommand(), this.table.addRow(e, t), this.afterCommand()) } }, { key: "addCol", value: function (t) { var e = this.getLastRange(this.$editable); e.isCollapsed() && e.isOnCell() && (this.beforeCommand(), this.table.addCol(e, t), this.afterCommand()) } }, { key: "deleteRow", value: function () { var t = this.getLastRange(this.$editable); t.isCollapsed() && t.isOnCell() && (this.beforeCommand(), this.table.deleteRow(t), this.afterCommand()) } }, { key: "deleteCol", value: function () { var t = this.getLastRange(this.$editable); t.isCollapsed() && t.isOnCell() && (this.beforeCommand(), this.table.deleteCol(t), this.afterCommand()) } }, { key: "deleteTable", value: function () { var t = this.getLastRange(this.$editable); t.isCollapsed() && t.isOnCell() && (this.beforeCommand(), this.table.deleteTable(t), this.afterCommand()) } }, { key: "resizeTo", value: function (t, e, n) { var o; if (n) { var i = t.y / t.x, r = e.data("ratio"); o = { width: r > i ? t.x : t.y / r, height: r > i ? t.x * r : t.y } } else o = { width: t.x, height: t.y }; e.css(o) } }, { key: "hasFocus", value: function () { return this.$editable.is(":focus") } }, { key: "focus", value: function () { this.hasFocus() || this.$editable.focus() } }, { key: "isEmpty", value: function () { return ft.isEmpty(this.$editable[0]) || ft.emptyPara === this.$editable.html() } }, { key: "empty", value: function () { this.context.invoke("code", ft.emptyPara) } }, { key: "normalizeContent", value: function () { this.$editable[0].normalize() } }]) && Ft(e.prototype, n), o && Ft(e, o), t }(); function Ht(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var zt = function () { function t(e) { !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.context = e, this.$editable = e.layoutInfo.editable } var e, n, o; return e = t, (n = [{ key: "initialize", value: function () { this.$editable.on("paste", this.pasteByEvent.bind(this)) } }, { key: "pasteByEvent", value: function (t) { var e = this, n = t.originalEvent.clipboardData; if (n && n.items && n.items.length) { var o = n.items.length > 1 ? n.items[1] : x.head(n.items); "file" === o.kind && -1 !== o.type.indexOf("image/") ? (this.context.invoke("editor.insertImagesOrCallback", [o.getAsFile()]), t.preventDefault()) : "string" === o.kind && this.context.invoke("editor.isLimited", n.getData("Text").length) && t.preventDefault() } else if (window.clipboardData) { var i = window.clipboardData.getData("text"); this.context.invoke("editor.isLimited", i.length) && t.preventDefault() } setTimeout((function () { e.context.invoke("editor.afterCommand") }), 10) } }]) && Ht(e.prototype, n), o && Ht(e, o), t }(); function Bt(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var Mt, Ot = function () { function t(e) { !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.context = e, this.$eventListener = i()(document), this.$editor = e.layoutInfo.editor, this.$editable = e.layoutInfo.editable, this.options = e.options, this.lang = this.options.langInfo, this.documentEventHandlers = {}, this.$dropzone = i()(['<div class="note-dropzone">', '<div class="note-dropzone-message"/>', "</div>"].join("")).prependTo(this.$editor) } var e, n, o; return e = t, (n = [{ key: "initialize", value: function () { this.options.disableDragAndDrop ? (this.documentEventHandlers.onDrop = function (t) { t.preventDefault() }, this.$eventListener = this.$dropzone, this.$eventListener.on("drop", this.documentEventHandlers.onDrop)) : this.attachDragAndDropEvent() } }, { key: "attachDragAndDropEvent", value: function () { var t = this, e = i()(), n = this.$dropzone.find(".note-dropzone-message"); this.documentEventHandlers.onDragenter = function (o) { var i = t.context.invoke("codeview.isActivated"), r = t.$editor.width() > 0 && t.$editor.height() > 0; i || e.length || !r || (t.$editor.addClass("dragover"), t.$dropzone.width(t.$editor.width()), t.$dropzone.height(t.$editor.height()), n.text(t.lang.image.dragImageHere)), e = e.add(o.target) }, this.documentEventHandlers.onDragleave = function (n) { (e = e.not(n.target)).length && "BODY" !== n.target.nodeName || (e = i()(), t.$editor.removeClass("dragover")) }, this.documentEventHandlers.onDrop = function () { e = i()(), t.$editor.removeClass("dragover") }, this.$eventListener.on("dragenter", this.documentEventHandlers.onDragenter).on("dragleave", this.documentEventHandlers.onDragleave).on("drop", this.documentEventHandlers.onDrop), this.$dropzone.on("dragenter", (function () { t.$dropzone.addClass("hover"), n.text(t.lang.image.dropImage) })).on("dragleave", (function () { t.$dropzone.removeClass("hover"), n.text(t.lang.image.dragImageHere) })), this.$dropzone.on("drop", (function (e) { var n = e.originalEvent.dataTransfer; e.preventDefault(), n && n.files && n.files.length ? (t.$editable.focus(), t.context.invoke("editor.insertImagesOrCallback", n.files)) : i.a.each(n.types, (function (e, o) { if (!(o.toLowerCase().indexOf("_moz_") > -1)) { var r = n.getData(o); o.toLowerCase().indexOf("text") > -1 ? t.context.invoke("editor.pasteHTML", r) : i()(r).each((function (e, n) { t.context.invoke("editor.insertNode", n) })) } })) })).on("dragover", !1) } }, { key: "destroy", value: function () { var t = this; Object.keys(this.documentEventHandlers).forEach((function (e) { t.$eventListener.off(e.substr(2).toLowerCase(), t.documentEventHandlers[e]) })), this.documentEventHandlers = {} } }]) && Bt(e.prototype, n), o && Bt(e, o), t }(); function Ut(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } v.hasCodeMirror && (Mt = window.CodeMirror); var jt = function () { function t(e) { !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.context = e, this.$editor = e.layoutInfo.editor, this.$editable = e.layoutInfo.editable, this.$codable = e.layoutInfo.codable, this.options = e.options } var e, n, o; return e = t, (n = [{ key: "sync", value: function () { this.isActivated() && v.hasCodeMirror && this.$codable.data("cmEditor").save() } }, { key: "isActivated", value: function () { return this.$editor.hasClass("codeview") } }, { key: "toggle", value: function () { this.isActivated() ? this.deactivate() : this.activate(), this.context.triggerEvent("codeview.toggled") } }, { key: "purify", value: function (t) { if (this.options.codeviewFilter && (t = t.replace(this.options.codeviewFilterRegex, ""), this.options.codeviewIframeFilter)) { var e = this.options.codeviewIframeWhitelistSrc.concat(this.options.codeviewIframeWhitelistSrcBase); t = t.replace(/(<iframe.*?>.*?(?:<\/iframe>)?)/gi, (function (t) { if (/<.+src(?==?('|"|\s)?)[\s\S]+src(?=('|"|\s)?)[^>]*?>/i.test(t)) return ""; var n = !0, o = !1, i = void 0; try { for (var r, a = e[Symbol.iterator](); !(n = (r = a.next()).done); n = !0) { var s = r.value; if (new RegExp('src="(https?:)?//' + s.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&") + '/(.+)"').test(t)) return t } } catch (t) { o = !0, i = t } finally { try { n || null == a.return || a.return() } finally { if (o) throw i } } return "" })) } return t } }, { key: "activate", value: function () { var t = this; if (this.$codable.val(ft.html(this.$editable, this.options.prettifyHtml)), this.$codable.height(this.$editable.height()), this.context.invoke("toolbar.updateCodeview", !0), this.$editor.addClass("codeview"), this.$codable.focus(), v.hasCodeMirror) { var e = Mt.fromTextArea(this.$codable[0], this.options.codemirror); if (this.options.codemirror.tern) { var n = new Mt.TernServer(this.options.codemirror.tern); e.ternServer = n, e.on("cursorActivity", (function (t) { n.updateArgHints(t) })) } e.on("blur", (function (n) { t.context.triggerEvent("blur.codeview", e.getValue(), n) })), e.on("change", (function () { t.context.triggerEvent("change.codeview", e.getValue(), e) })), e.setSize(null, this.$editable.outerHeight()), this.$codable.data("cmEditor", e) } else this.$codable.on("blur", (function (e) { t.context.triggerEvent("blur.codeview", t.$codable.val(), e) })), this.$codable.on("input", (function () { t.context.triggerEvent("change.codeview", t.$codable.val(), t.$codable) })) } }, { key: "deactivate", value: function () { if (v.hasCodeMirror) { var t = this.$codable.data("cmEditor"); this.$codable.val(t.getValue()), t.toTextArea() } var e = this.purify(ft.value(this.$codable, this.options.prettifyHtml) || ft.emptyPara), n = this.$editable.html() !== e; this.$editable.html(e), this.$editable.height(this.options.height ? this.$codable.height() : "auto"), this.$editor.removeClass("codeview"), n && this.context.triggerEvent("change", this.$editable.html(), this.$editable), this.$editable.focus(), this.context.invoke("toolbar.updateCodeview", !1) } }, { key: "destroy", value: function () { this.isActivated() && this.deactivate() } }]) && Ut(e.prototype, n), o && Ut(e, o), t }(); function Wt(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var Kt = function () { function t(e) { !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.$document = i()(document), this.$statusbar = e.layoutInfo.statusbar, this.$editable = e.layoutInfo.editable, this.options = e.options } var e, n, o; return e = t, (n = [{ key: "initialize", value: function () { var t = this; this.options.airMode || this.options.disableResizeEditor ? this.destroy() : this.$statusbar.on("mousedown", (function (e) { e.preventDefault(), e.stopPropagation(); var n = t.$editable.offset().top - t.$document.scrollTop(), o = function (e) { var o = e.clientY - (n + 24); o = t.options.minheight > 0 ? Math.max(o, t.options.minheight) : o, o = t.options.maxHeight > 0 ? Math.min(o, t.options.maxHeight) : o, t.$editable.height(o) }; t.$document.on("mousemove", o).one("mouseup", (function () { t.$document.off("mousemove", o) })) })) } }, { key: "destroy", value: function () { this.$statusbar.off(), this.$statusbar.addClass("locked") } }]) && Wt(e.prototype, n), o && Wt(e, o), t }(); function qt(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var Vt = function () { function t(e) { var n = this; !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.context = e, this.$editor = e.layoutInfo.editor, this.$toolbar = e.layoutInfo.toolbar, this.$editable = e.layoutInfo.editable, this.$codable = e.layoutInfo.codable, this.$window = i()(window), this.$scrollbar = i()("html, body"), this.onResize = function () { n.resizeTo({ h: n.$window.height() - n.$toolbar.outerHeight() }) } } var e, n, o; return e = t, (n = [{ key: "resizeTo", value: function (t) { this.$editable.css("height", t.h), this.$codable.css("height", t.h), this.$codable.data("cmeditor") && this.$codable.data("cmeditor").setsize(null, t.h) } }, { key: "toggle", value: function () { this.$editor.toggleClass("fullscreen"), this.isFullscreen() ? (this.$editable.data("orgHeight", this.$editable.css("height")), this.$editable.data("orgMaxHeight", this.$editable.css("maxHeight")), this.$editable.css("maxHeight", ""), this.$window.on("resize", this.onResize).trigger("resize"), this.$scrollbar.css("overflow", "hidden")) : (this.$window.off("resize", this.onResize), this.resizeTo({ h: this.$editable.data("orgHeight") }), this.$editable.css("maxHeight", this.$editable.css("orgMaxHeight")), this.$scrollbar.css("overflow", "visible")), this.context.invoke("toolbar.updateFullscreen", this.isFullscreen()) } }, { key: "isFullscreen", value: function () { return this.$editor.hasClass("fullscreen") } }]) && qt(e.prototype, n), o && qt(e, o), t }(); function _t(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var Gt = function () { function t(e) { var n = this; !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.context = e, this.$document = i()(document), this.$editingArea = e.layoutInfo.editingArea, this.options = e.options, this.lang = this.options.langInfo, this.events = { "summernote.mousedown": function (t, e) { n.update(e.target, e) && e.preventDefault() }, "summernote.keyup summernote.scroll summernote.change summernote.dialog.shown": function () { n.update() }, "summernote.disable summernote.blur": function () { n.hide() }, "summernote.codeview.toggled": function () { n.update() } } } var e, n, o; return e = t, (n = [{ key: "initialize", value: function () { var t = this; this.$handle = i()(['<div class="note-handle">', '<div class="note-control-selection">', '<div class="note-control-selection-bg"></div>', '<div class="note-control-holder note-control-nw"></div>', '<div class="note-control-holder note-control-ne"></div>', '<div class="note-control-holder note-control-sw"></div>', '<div class="', this.options.disableResizeImage ? "note-control-holder" : "note-control-sizing", ' note-control-se"></div>', this.options.disableResizeImage ? "" : '<div class="note-control-selection-info"></div>', "</div>", "</div>"].join("")).prependTo(this.$editingArea), this.$handle.on("mousedown", (function (e) { if (ft.isControlSizing(e.target)) { e.preventDefault(), e.stopPropagation(); var n = t.$handle.find(".note-control-selection").data("target"), o = n.offset(), i = t.$document.scrollTop(), r = function (e) { t.context.invoke("editor.resizeTo", { x: e.clientX - o.left, y: e.clientY - (o.top - i) }, n, !e.shiftKey), t.update(n[0], e) }; t.$document.on("mousemove", r).one("mouseup", (function (e) { e.preventDefault(), t.$document.off("mousemove", r), t.context.invoke("editor.afterCommand") })), n.data("ratio") || n.data("ratio", n.height() / n.width()) } })), this.$handle.on("wheel", (function (e) { e.preventDefault(), t.update() })) } }, { key: "destroy", value: function () { this.$handle.remove() } }, { key: "update", value: function (t, e) { if (this.context.isDisabled()) return !1; var n = ft.isImg(t), o = this.$handle.find(".note-control-selection"); if (this.context.invoke("imagePopover.update", t, e), n) { var r = i()(t), a = r.position(), s = { left: a.left + parseInt(r.css("marginLeft"), 10), top: a.top + parseInt(r.css("marginTop"), 10) }, l = { w: r.outerWidth(!1), h: r.outerHeight(!1) }; o.css({ display: "block", left: s.left, top: s.top, width: l.w, height: l.h }).data("target", r); var c = new Image; c.src = r.attr("src"); var u = l.w + "x" + l.h + " (" + this.lang.image.original + ": " + c.width + "x" + c.height + ")"; o.find(".note-control-selection-info").text(u), this.context.invoke("editor.saveTarget", t) } else this.hide(); return n } }, { key: "hide", value: function () { this.context.invoke("editor.clearTarget"), this.$handle.children().hide() } }]) && _t(e.prototype, n), o && _t(e, o), t }(); function Yt(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var Zt = /^([A-Za-z][A-Za-z0-9+-.]*\:[\/]{2}|tel:|mailto:[A-Z0-9._%+-]+@)?(www\.)?(.+)$/i, Xt = function () { function t(e) { var n = this; !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.context = e, this.events = { "summernote.keyup": function (t, e) { e.isDefaultPrevented() || n.handleKeyup(e) }, "summernote.keydown": function (t, e) { n.handleKeydown(e) } } } var e, n, o; return e = t, (n = [{ key: "initialize", value: function () { this.lastWordRange = null } }, { key: "destroy", value: function () { this.lastWordRange = null } }, { key: "replace", value: function () { if (this.lastWordRange) { var t = this.lastWordRange.toString(), e = t.match(Zt); if (e && (e[1] || e[2])) { var n = e[1] ? t : "http://" + t, o = t.replace(/^(?:https?:\/\/)?(?:tel?:?)?(?:mailto?:?)?(?:www\.)?/i, "").split("/")[0], r = i()("<a />").html(o).attr("href", n)[0]; this.context.options.linkTargetBlank && i()(r).attr("target", "_blank"), this.lastWordRange.insertNode(r), this.lastWordRange = null, this.context.invoke("editor.focus") } } } }, { key: "handleKeydown", value: function (t) { if (x.contains([Ct.code.ENTER, Ct.code.SPACE], t.keyCode)) { var e = this.context.invoke("editor.createRange").getWordRange(); this.lastWordRange = e } } }, { key: "handleKeyup", value: function (t) { x.contains([Ct.code.ENTER, Ct.code.SPACE], t.keyCode) && this.replace() } }]) && Yt(e.prototype, n), o && Yt(e, o), t }(); function Qt(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var Jt = function () { function t(e) { var n = this; !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.$note = e.layoutInfo.note, this.events = { "summernote.change": function () { n.$note.val(e.invoke("code")) } } } var e, n, o; return e = t, (n = [{ key: "shouldInitialize", value: function () { return ft.isTextarea(this.$note[0]) } }]) && Qt(e.prototype, n), o && Qt(e, o), t }(); function te(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var ee = function () { function t(e) { var n = this; !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.context = e, this.options = e.options.replace || {}, this.keys = [Ct.code.ENTER, Ct.code.SPACE, Ct.code.PERIOD, Ct.code.COMMA, Ct.code.SEMICOLON, Ct.code.SLASH], this.previousKeydownCode = null, this.events = { "summernote.keyup": function (t, e) { e.isDefaultPrevented() || n.handleKeyup(e) }, "summernote.keydown": function (t, e) { n.handleKeydown(e) } } } var e, n, o; return e = t, (n = [{ key: "shouldInitialize", value: function () { return !!this.options.match } }, { key: "initialize", value: function () { this.lastWord = null } }, { key: "destroy", value: function () { this.lastWord = null } }, { key: "replace", value: function () { if (this.lastWord) { var t = this, e = this.lastWord.toString(); this.options.match(e, (function (e) { if (e) { var n = ""; if ("string" == typeof e ? n = ft.createText(e) : e instanceof jQuery ? n = e[0] : e instanceof Node && (n = e), !n) return; t.lastWord.insertNode(n), t.lastWord = null, t.context.invoke("editor.focus") } })) } } }, { key: "handleKeydown", value: function (t) { if (this.previousKeydownCode && x.contains(this.keys, this.previousKeydownCode)) this.previousKeydownCode = t.keyCode; else { if (x.contains(this.keys, t.keyCode)) { var e = this.context.invoke("editor.createRange").getWordRange(); this.lastWord = e } this.previousKeydownCode = t.keyCode } } }, { key: "handleKeyup", value: function (t) { x.contains(this.keys, t.keyCode) && this.replace() } }]) && te(e.prototype, n), o && te(e, o), t }(); function ne(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var oe = function () { function t(e) { var n = this; !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.context = e, this.$editingArea = e.layoutInfo.editingArea, this.options = e.options, !0 === this.options.inheritPlaceholder && (this.options.placeholder = this.context.$note.attr("placeholder") || this.options.placeholder), this.events = { "summernote.init summernote.change": function () { n.update() }, "summernote.codeview.toggled": function () { n.update() } } } var e, n, o; return e = t, (n = [{ key: "shouldInitialize", value: function () { return !!this.options.placeholder } }, { key: "initialize", value: function () { var t = this; this.$placeholder = i()('<div class="note-placeholder">'), this.$placeholder.on("click", (function () { t.context.invoke("focus") })).html(this.options.placeholder).prependTo(this.$editingArea), this.update() } }, { key: "destroy", value: function () { this.$placeholder.remove() } }, { key: "update", value: function () { var t = !this.context.invoke("codeview.isActivated") && this.context.invoke("editor.isEmpty"); this.$placeholder.toggle(t) } }]) && ne(e.prototype, n), o && ne(e, o), t }(); function ie(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var re = function () { function t(e) { !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.ui = i.a.summernote.ui, this.context = e, this.$toolbar = e.layoutInfo.toolbar, this.options = e.options, this.lang = this.options.langInfo, this.invertedKeyMap = b.invertObject(this.options.keyMap[v.isMac ? "mac" : "pc"]) } var e, n, o; return e = t, (n = [{ key: "representShortcut", value: function (t) { var e = this.invertedKeyMap[t]; return this.options.shortcuts && e ? (v.isMac && (e = e.replace("CMD", "⌘").replace("SHIFT", "⇧")), " (" + (e = e.replace("BACKSLASH", "\\").replace("SLASH", "/").replace("LEFTBRACKET", "[").replace("RIGHTBRACKET", "]")) + ")") : "" } }, { key: "button", value: function (t) { return !this.options.tooltip && t.tooltip && delete t.tooltip, t.container = this.options.container, this.ui.button(t) } }, { key: "initialize", value: function () { this.addToolbarButtons(), this.addImagePopoverButtons(), this.addLinkPopoverButtons(), this.addTablePopoverButtons(), this.fontInstalledMap = {} } }, { key: "destroy", value: function () { delete this.fontInstalledMap } }, { key: "isFontInstalled", value: function (t) { return Object.prototype.hasOwnProperty.call(this.fontInstalledMap, t) || (this.fontInstalledMap[t] = v.isFontInstalled(t) || x.contains(this.options.fontNamesIgnoreCheck, t)), this.fontInstalledMap[t] } }, { key: "isFontDeservedToAdd", value: function (t) { return "" !== (t = t.toLowerCase()) && this.isFontInstalled(t) && -1 === v.genericFontFamilies.indexOf(t) } }, { key: "colorPalette", value: function (t, e, n, o) { var r = this; return this.ui.buttonGroup({ className: "note-color " + t, children: [this.button({ className: "note-current-color-button", contents: this.ui.icon(this.options.icons.font + " note-recent-color"), tooltip: e, click: function (t) { var e = i()(t.currentTarget); n && o ? r.context.invoke("editor.color", { backColor: e.attr("data-backColor"), foreColor: e.attr("data-foreColor") }) : n ? r.context.invoke("editor.color", { backColor: e.attr("data-backColor") }) : o && r.context.invoke("editor.color", { foreColor: e.attr("data-foreColor") }) }, callback: function (t) { var e = t.find(".note-recent-color"); n && (e.css("background-color", r.options.colorButton.backColor), t.attr("data-backColor", r.options.colorButton.backColor)), o ? (e.css("color", r.options.colorButton.foreColor), t.attr("data-foreColor", r.options.colorButton.foreColor)) : e.css("color", "transparent") } }), this.button({ className: "dropdown-toggle", contents: this.ui.dropdownButtonContents("", this.options), tooltip: this.lang.color.more, data: { toggle: "dropdown" } }), this.ui.dropdown({ items: (n ? ['<div class="note-palette">', '<div class="note-palette-title">' + this.lang.color.background + "</div>", "<div>", '<button type="button" class="note-color-reset btn btn-light" data-event="backColor" data-value="inherit">', this.lang.color.transparent, "</button>", "</div>", '<div class="note-holder" data-event="backColor"/>', "<div>", '<button type="button" class="note-color-select btn btn-light" data-event="openPalette" data-value="backColorPicker">', this.lang.color.cpSelect, "</button>", '<input type="color" id="backColorPicker" class="note-btn note-color-select-btn" value="' + this.options.colorButton.backColor + '" data-event="backColorPalette">', "</div>", '<div class="note-holder-custom" id="backColorPalette" data-event="backColor"/>', "</div>"].join("") : "") + (o ? ['<div class="note-palette">', '<div class="note-palette-title">' + this.lang.color.foreground + "</div>", "<div>", '<button type="button" class="note-color-reset btn btn-light" data-event="removeFormat" data-value="foreColor">', this.lang.color.resetToDefault, "</button>", "</div>", '<div class="note-holder" data-event="foreColor"/>', "<div>", '<button type="button" class="note-color-select btn btn-light" data-event="openPalette" data-value="foreColorPicker">', this.lang.color.cpSelect, "</button>", '<input type="color" id="foreColorPicker" class="note-btn note-color-select-btn" value="' + this.options.colorButton.foreColor + '" data-event="foreColorPalette">', "</div>", '<div class="note-holder-custom" id="foreColorPalette" data-event="foreColor"/>', "</div>"].join("") : ""), callback: function (t) { t.find(".note-holder").each((function (t, e) { var n = i()(e); n.append(r.ui.palette({ colors: r.options.colors, colorsName: r.options.colorsName, eventName: n.data("event"), container: r.options.container, tooltip: r.options.tooltip }).render()) })); var e = [["#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF", "#FFFFFF"]]; t.find(".note-holder-custom").each((function (t, n) { var o = i()(n); o.append(r.ui.palette({ colors: e, colorsName: e, eventName: o.data("event"), container: r.options.container, tooltip: r.options.tooltip }).render()) })), t.find("input[type=color]").each((function (e, n) { i()(n).change((function () { var e = t.find("#" + i()(this).data("event")).find(".note-color-btn").first(), n = this.value.toUpperCase(); e.css("background-color", n).attr("aria-label", n).attr("data-value", n).attr("data-original-title", n), e.click() })) })) }, click: function (e) { e.stopPropagation(); var n = i()("." + t).find(".note-dropdown-menu"), o = i()(e.target), a = o.data("event"), s = o.attr("data-value"); if ("openPalette" === a) { var l = n.find("#" + s), c = i()(n.find("#" + l.data("event")).find(".note-color-row")[0]), u = c.find(".note-color-btn").last().detach(), d = l.val(); u.css("background-color", d).attr("aria-label", d).attr("data-value", d).attr("data-original-title", d), c.prepend(u), l.click() } else { if (x.contains(["backColor", "foreColor"], a)) { var h = "backColor" === a ? "background-color" : "color", f = o.closest(".note-color").find(".note-recent-color"), p = o.closest(".note-color").find(".note-current-color-button"); f.css(h, s), p.attr("data-" + a, s) } r.context.invoke("editor." + a, s) } } })] }).render() } }, { key: "addToolbarButtons", value: function () { var t = this; this.context.memo("button.style", (function () { return t.ui.buttonGroup([t.button({ className: "dropdown-toggle", contents: t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.magic), t.options), tooltip: t.lang.style.style, data: { toggle: "dropdown" } }), t.ui.dropdown({ className: "dropdown-style", items: t.options.styleTags, title: t.lang.style.style, template: function (e) { "string" == typeof e && (e = { tag: e, title: Object.prototype.hasOwnProperty.call(t.lang.style, e) ? t.lang.style[e] : e }); var n = e.tag, o = e.title; return "<" + n + (e.style ? ' style="' + e.style + '" ' : "") + (e.className ? ' class="' + e.className + '"' : "") + ">" + o + "</" + n + ">" }, click: t.context.createInvokeHandler("editor.formatBlock") })]).render() })); for (var e = function (e, n) { var o = t.options.styleTags[e]; t.context.memo("button.style." + o, (function () { return t.button({ className: "note-btn-style-" + o, contents: '<div data-value="' + o + '">' + o.toUpperCase() + "</div>", tooltip: t.lang.style[o], click: t.context.createInvokeHandler("editor.formatBlock") }).render() })) }, n = 0, o = this.options.styleTags.length; n < o; n++)e(n); this.context.memo("button.bold", (function () { return t.button({ className: "note-btn-bold", contents: t.ui.icon(t.options.icons.bold), tooltip: t.lang.font.bold + t.representShortcut("bold"), click: t.context.createInvokeHandlerAndUpdateState("editor.bold") }).render() })), this.context.memo("button.italic", (function () { return t.button({ className: "note-btn-italic", contents: t.ui.icon(t.options.icons.italic), tooltip: t.lang.font.italic + t.representShortcut("italic"), click: t.context.createInvokeHandlerAndUpdateState("editor.italic") }).render() })), this.context.memo("button.underline", (function () { return t.button({ className: "note-btn-underline", contents: t.ui.icon(t.options.icons.underline), tooltip: t.lang.font.underline + t.representShortcut("underline"), click: t.context.createInvokeHandlerAndUpdateState("editor.underline") }).render() })), this.context.memo("button.clear", (function () { return t.button({ contents: t.ui.icon(t.options.icons.eraser), tooltip: t.lang.font.clear + t.representShortcut("removeFormat"), click: t.context.createInvokeHandler("editor.removeFormat") }).render() })), this.context.memo("button.strikethrough", (function () { return t.button({ className: "note-btn-strikethrough", contents: t.ui.icon(t.options.icons.strikethrough), tooltip: t.lang.font.strikethrough + t.representShortcut("strikethrough"), click: t.context.createInvokeHandlerAndUpdateState("editor.strikethrough") }).render() })), this.context.memo("button.superscript", (function () { return t.button({ className: "note-btn-superscript", contents: t.ui.icon(t.options.icons.superscript), tooltip: t.lang.font.superscript, click: t.context.createInvokeHandlerAndUpdateState("editor.superscript") }).render() })), this.context.memo("button.subscript", (function () { return t.button({ className: "note-btn-subscript", contents: t.ui.icon(t.options.icons.subscript), tooltip: t.lang.font.subscript, click: t.context.createInvokeHandlerAndUpdateState("editor.subscript") }).render() })), this.context.memo("button.fontname", (function () { var e = t.context.invoke("editor.currentStyle"); return t.options.addDefaultFonts && i.a.each(e["font-family"].split(","), (function (e, n) { n = n.trim().replace(/['"]+/g, ""), t.isFontDeservedToAdd(n) && -1 === t.options.fontNames.indexOf(n) && t.options.fontNames.push(n) })), t.ui.buttonGroup([t.button({ className: "dropdown-toggle", contents: t.ui.dropdownButtonContents('<span class="note-current-fontname"/>', t.options), tooltip: t.lang.font.name, data: { toggle: "dropdown" } }), t.ui.dropdownCheck({ className: "dropdown-fontname", checkClassName: t.options.icons.menuCheck, items: t.options.fontNames.filter(t.isFontInstalled.bind(t)), title: t.lang.font.name, template: function (t) { return '<span style="font-family: ' + v.validFontName(t) + '">' + t + "</span>" }, click: t.context.createInvokeHandlerAndUpdateState("editor.fontName") })]).render() })), this.context.memo("button.fontsize", (function () { return t.ui.buttonGroup([t.button({ className: "dropdown-toggle", contents: t.ui.dropdownButtonContents('<span class="note-current-fontsize"/>', t.options), tooltip: t.lang.font.size, data: { toggle: "dropdown" } }), t.ui.dropdownCheck({ className: "dropdown-fontsize", checkClassName: t.options.icons.menuCheck, items: t.options.fontSizes, title: t.lang.font.size, click: t.context.createInvokeHandlerAndUpdateState("editor.fontSize") })]).render() })), this.context.memo("button.fontsizeunit", (function () { return t.ui.buttonGroup([t.button({ className: "dropdown-toggle", contents: t.ui.dropdownButtonContents('<span class="note-current-fontsizeunit"/>', t.options), tooltip: t.lang.font.sizeunit, data: { toggle: "dropdown" } }), t.ui.dropdownCheck({ className: "dropdown-fontsizeunit", checkClassName: t.options.icons.menuCheck, items: t.options.fontSizeUnits, title: t.lang.font.sizeunit, click: t.context.createInvokeHandlerAndUpdateState("editor.fontSizeUnit") })]).render() })), this.context.memo("button.color", (function () { return t.colorPalette("note-color-all", t.lang.color.recent, !0, !0) })), this.context.memo("button.forecolor", (function () { return t.colorPalette("note-color-fore", t.lang.color.foreground, !1, !0) })), this.context.memo("button.backcolor", (function () { return t.colorPalette("note-color-back", t.lang.color.background, !0, !1) })), this.context.memo("button.ul", (function () { return t.button({ contents: t.ui.icon(t.options.icons.unorderedlist), tooltip: t.lang.lists.unordered + t.representShortcut("insertUnorderedList"), click: t.context.createInvokeHandler("editor.insertUnorderedList") }).render() })), this.context.memo("button.ol", (function () { return t.button({ contents: t.ui.icon(t.options.icons.orderedlist), tooltip: t.lang.lists.ordered + t.representShortcut("insertOrderedList"), click: t.context.createInvokeHandler("editor.insertOrderedList") }).render() })); var r = this.button({ contents: this.ui.icon(this.options.icons.alignLeft), tooltip: this.lang.paragraph.left + this.representShortcut("justifyLeft"), click: this.context.createInvokeHandler("editor.justifyLeft") }), a = this.button({ contents: this.ui.icon(this.options.icons.alignCenter), tooltip: this.lang.paragraph.center + this.representShortcut("justifyCenter"), click: this.context.createInvokeHandler("editor.justifyCenter") }), s = this.button({ contents: this.ui.icon(this.options.icons.alignRight), tooltip: this.lang.paragraph.right + this.representShortcut("justifyRight"), click: this.context.createInvokeHandler("editor.justifyRight") }), l = this.button({ contents: this.ui.icon(this.options.icons.alignJustify), tooltip: this.lang.paragraph.justify + this.representShortcut("justifyFull"), click: this.context.createInvokeHandler("editor.justifyFull") }), c = this.button({ contents: this.ui.icon(this.options.icons.outdent), tooltip: this.lang.paragraph.outdent + this.representShortcut("outdent"), click: this.context.createInvokeHandler("editor.outdent") }), u = this.button({ contents: this.ui.icon(this.options.icons.indent), tooltip: this.lang.paragraph.indent + this.representShortcut("indent"), click: this.context.createInvokeHandler("editor.indent") }); this.context.memo("button.justifyLeft", b.invoke(r, "render")), this.context.memo("button.justifyCenter", b.invoke(a, "render")), this.context.memo("button.justifyRight", b.invoke(s, "render")), this.context.memo("button.justifyFull", b.invoke(l, "render")), this.context.memo("button.outdent", b.invoke(c, "render")), this.context.memo("button.indent", b.invoke(u, "render")), this.context.memo("button.paragraph", (function () { return t.ui.buttonGroup([t.button({ className: "dropdown-toggle", contents: t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.alignLeft), t.options), tooltip: t.lang.paragraph.paragraph, data: { toggle: "dropdown" } }), t.ui.dropdown([t.ui.buttonGroup({ className: "note-align", children: [r, a, s, l] }), t.ui.buttonGroup({ className: "note-list", children: [c, u] })])]).render() })), this.context.memo("button.height", (function () { return t.ui.buttonGroup([t.button({ className: "dropdown-toggle", contents: t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.textHeight), t.options), tooltip: t.lang.font.height, data: { toggle: "dropdown" } }), t.ui.dropdownCheck({ items: t.options.lineHeights, checkClassName: t.options.icons.menuCheck, className: "dropdown-line-height", title: t.lang.font.height, click: t.context.createInvokeHandler("editor.lineHeight") })]).render() })), this.context.memo("button.table", (function () { return t.ui.buttonGroup([t.button({ className: "dropdown-toggle", contents: t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.table), t.options), tooltip: t.lang.table.table, data: { toggle: "dropdown" } }), t.ui.dropdown({ title: t.lang.table.table, className: "note-table", items: ['<div class="note-dimension-picker">', '<div class="note-dimension-picker-mousecatcher" data-event="insertTable" data-value="1x1"/>', '<div class="note-dimension-picker-highlighted"/>', '<div class="note-dimension-picker-unhighlighted"/>', "</div>", '<div class="note-dimension-display">1 x 1</div>'].join("") })], { callback: function (e) { e.find(".note-dimension-picker-mousecatcher").css({ width: t.options.insertTableMaxSize.col + "em", height: t.options.insertTableMaxSize.row + "em" }).mousedown(t.context.createInvokeHandler("editor.insertTable")).on("mousemove", t.tableMoveHandler.bind(t)) } }).render() })), this.context.memo("button.link", (function () { return t.button({ contents: t.ui.icon(t.options.icons.link), tooltip: t.lang.link.link + t.representShortcut("linkDialog.show"), click: t.context.createInvokeHandler("linkDialog.show") }).render() })), this.context.memo("button.picture", (function () { return t.button({ contents: t.ui.icon(t.options.icons.picture), tooltip: t.lang.image.image, click: t.context.createInvokeHandler("imageDialog.show") }).render() })), this.context.memo("button.video", (function () { return t.button({ contents: t.ui.icon(t.options.icons.video), tooltip: t.lang.video.video, click: t.context.createInvokeHandler("videoDialog.show") }).render() })), this.context.memo("button.hr", (function () { return t.button({ contents: t.ui.icon(t.options.icons.minus), tooltip: t.lang.hr.insert + t.representShortcut("insertHorizontalRule"), click: t.context.createInvokeHandler("editor.insertHorizontalRule") }).render() })), this.context.memo("button.fullscreen", (function () { return t.button({ className: "btn-fullscreen", contents: t.ui.icon(t.options.icons.arrowsAlt), tooltip: t.lang.options.fullscreen, click: t.context.createInvokeHandler("fullscreen.toggle") }).render() })), this.context.memo("button.codeview", (function () { return t.button({ className: "btn-codeview", contents: t.ui.icon(t.options.icons.code), tooltip: t.lang.options.codeview, click: t.context.createInvokeHandler("codeview.toggle") }).render() })), this.context.memo("button.redo", (function () { return t.button({ contents: t.ui.icon(t.options.icons.redo), tooltip: t.lang.history.redo + t.representShortcut("redo"), click: t.context.createInvokeHandler("editor.redo") }).render() })), this.context.memo("button.undo", (function () { return t.button({ contents: t.ui.icon(t.options.icons.undo), tooltip: t.lang.history.undo + t.representShortcut("undo"), click: t.context.createInvokeHandler("editor.undo") }).render() })), this.context.memo("button.help", (function () { return t.button({ contents: t.ui.icon(t.options.icons.question), tooltip: t.lang.options.help, click: t.context.createInvokeHandler("helpDialog.show") }).render() })) } }, { key: "addImagePopoverButtons", value: function () { var t = this; this.context.memo("button.resizeFull", (function () { return t.button({ contents: '<span class="note-fontsize-10">100%</span>', tooltip: t.lang.image.resizeFull, click: t.context.createInvokeHandler("editor.resize", "1") }).render() })), this.context.memo("button.resizeHalf", (function () { return t.button({ contents: '<span class="note-fontsize-10">50%</span>', tooltip: t.lang.image.resizeHalf, click: t.context.createInvokeHandler("editor.resize", "0.5") }).render() })), this.context.memo("button.resizeQuarter", (function () { return t.button({ contents: '<span class="note-fontsize-10">25%</span>', tooltip: t.lang.image.resizeQuarter, click: t.context.createInvokeHandler("editor.resize", "0.25") }).render() })), this.context.memo("button.resizeNone", (function () { return t.button({ contents: t.ui.icon(t.options.icons.rollback), tooltip: t.lang.image.resizeNone, click: t.context.createInvokeHandler("editor.resize", "0") }).render() })), this.context.memo("button.floatLeft", (function () { return t.button({ contents: t.ui.icon(t.options.icons.floatLeft), tooltip: t.lang.image.floatLeft, click: t.context.createInvokeHandler("editor.floatMe", "left") }).render() })), this.context.memo("button.floatRight", (function () { return t.button({ contents: t.ui.icon(t.options.icons.floatRight), tooltip: t.lang.image.floatRight, click: t.context.createInvokeHandler("editor.floatMe", "right") }).render() })), this.context.memo("button.floatNone", (function () { return t.button({ contents: t.ui.icon(t.options.icons.rollback), tooltip: t.lang.image.floatNone, click: t.context.createInvokeHandler("editor.floatMe", "none") }).render() })), this.context.memo("button.removeMedia", (function () { return t.button({ contents: t.ui.icon(t.options.icons.trash), tooltip: t.lang.image.remove, click: t.context.createInvokeHandler("editor.removeMedia") }).render() })) } }, { key: "addLinkPopoverButtons", value: function () { var t = this; this.context.memo("button.linkDialogShow", (function () { return t.button({ contents: t.ui.icon(t.options.icons.link), tooltip: t.lang.link.edit, click: t.context.createInvokeHandler("linkDialog.show") }).render() })), this.context.memo("button.unlink", (function () { return t.button({ contents: t.ui.icon(t.options.icons.unlink), tooltip: t.lang.link.unlink, click: t.context.createInvokeHandler("editor.unlink") }).render() })) } }, { key: "addTablePopoverButtons", value: function () { var t = this; this.context.memo("button.addRowUp", (function () { return t.button({ className: "btn-md", contents: t.ui.icon(t.options.icons.rowAbove), tooltip: t.lang.table.addRowAbove, click: t.context.createInvokeHandler("editor.addRow", "top") }).render() })), this.context.memo("button.addRowDown", (function () { return t.button({ className: "btn-md", contents: t.ui.icon(t.options.icons.rowBelow), tooltip: t.lang.table.addRowBelow, click: t.context.createInvokeHandler("editor.addRow", "bottom") }).render() })), this.context.memo("button.addColLeft", (function () { return t.button({ className: "btn-md", contents: t.ui.icon(t.options.icons.colBefore), tooltip: t.lang.table.addColLeft, click: t.context.createInvokeHandler("editor.addCol", "left") }).render() })), this.context.memo("button.addColRight", (function () { return t.button({ className: "btn-md", contents: t.ui.icon(t.options.icons.colAfter), tooltip: t.lang.table.addColRight, click: t.context.createInvokeHandler("editor.addCol", "right") }).render() })), this.context.memo("button.deleteRow", (function () { return t.button({ className: "btn-md", contents: t.ui.icon(t.options.icons.rowRemove), tooltip: t.lang.table.delRow, click: t.context.createInvokeHandler("editor.deleteRow") }).render() })), this.context.memo("button.deleteCol", (function () { return t.button({ className: "btn-md", contents: t.ui.icon(t.options.icons.colRemove), tooltip: t.lang.table.delCol, click: t.context.createInvokeHandler("editor.deleteCol") }).render() })), this.context.memo("button.deleteTable", (function () { return t.button({ className: "btn-md", contents: t.ui.icon(t.options.icons.trash), tooltip: t.lang.table.delTable, click: t.context.createInvokeHandler("editor.deleteTable") }).render() })) } }, { key: "build", value: function (t, e) { for (var n = 0, o = e.length; n < o; n++) { for (var i = e[n], r = Array.isArray(i) ? i[0] : i, a = Array.isArray(i) ? 1 === i.length ? [i[0]] : i[1] : [i], s = this.ui.buttonGroup({ className: "note-" + r }).render(), l = 0, c = a.length; l < c; l++) { var u = this.context.memo("button." + a[l]); u && s.append("function" == typeof u ? u(this.context) : u) } s.appendTo(t) } } }, { key: "updateCurrentStyle", value: function (t) { var e = this, n = t || this.$toolbar, o = this.context.invoke("editor.currentStyle"); if (this.updateBtnStates(n, { ".note-btn-bold": function () { return "bold" === o["font-bold"] }, ".note-btn-italic": function () { return "italic" === o["font-italic"] }, ".note-btn-underline": function () { return "underline" === o["font-underline"] }, ".note-btn-subscript": function () { return "subscript" === o["font-subscript"] }, ".note-btn-superscript": function () { return "superscript" === o["font-superscript"] }, ".note-btn-strikethrough": function () { return "strikethrough" === o["font-strikethrough"] } }), o["font-family"]) { var r = o["font-family"].split(",").map((function (t) { return t.replace(/[\'\"]/g, "").replace(/\s+$/, "").replace(/^\s+/, "") })), a = x.find(r, this.isFontInstalled.bind(this)); n.find(".dropdown-fontname a").each((function (t, e) { var n = i()(e), o = n.data("value") + "" == a + ""; n.toggleClass("checked", o) })), n.find(".note-current-fontname").text(a).css("font-family", a) } if (o["font-size"]) { var s = o["font-size"]; n.find(".dropdown-fontsize a").each((function (t, e) { var n = i()(e), o = n.data("value") + "" == s + ""; n.toggleClass("checked", o) })), n.find(".note-current-fontsize").text(s); var l = o["font-size-unit"]; n.find(".dropdown-fontsizeunit a").each((function (t, e) { var n = i()(e), o = n.data("value") + "" == l + ""; n.toggleClass("checked", o) })), n.find(".note-current-fontsizeunit").text(l) } if (o["line-height"]) { var c = o["line-height"]; n.find(".dropdown-line-height li a").each((function (t, n) { var o = i()(n).data("value") + "" == c + ""; e.className = o ? "checked" : "" })) } } }, { key: "updateBtnStates", value: function (t, e) { var n = this; i.a.each(e, (function (e, o) { n.ui.toggleBtnActive(t.find(e), o()) })) } }, { key: "tableMoveHandler", value: function (t) { var e, n = i()(t.target.parentNode), o = n.next(), r = n.find(".note-dimension-picker-mousecatcher"), a = n.find(".note-dimension-picker-highlighted"), s = n.find(".note-dimension-picker-unhighlighted"); if (void 0 === t.offsetX) { var l = i()(t.target).offset(); e = { x: t.pageX - l.left, y: t.pageY - l.top } } else e = { x: t.offsetX, y: t.offsetY }; var c = Math.ceil(e.x / 18) || 1, u = Math.ceil(e.y / 18) || 1; a.css({ width: c + "em", height: u + "em" }), r.data("value", c + "x" + u), c > 3 && c < this.options.insertTableMaxSize.col && s.css({ width: c + 1 + "em" }), u > 3 && u < this.options.insertTableMaxSize.row && s.css({ height: u + 1 + "em" }), o.html(c + " x " + u) } }]) && ie(e.prototype, n), o && ie(e, o), t }(); function ae(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var se = function () { function t(e) { !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.context = e, this.$window = i()(window), this.$document = i()(document), this.ui = i.a.summernote.ui, this.$note = e.layoutInfo.note, this.$editor = e.layoutInfo.editor, this.$toolbar = e.layoutInfo.toolbar, this.$editable = e.layoutInfo.editable, this.$statusbar = e.layoutInfo.statusbar, this.options = e.options, this.isFollowing = !1, this.followScroll = this.followScroll.bind(this) } var e, n, o; return e = t, (n = [{ key: "shouldInitialize", value: function () { return !this.options.airMode } }, { key: "initialize", value: function () { var t = this; this.options.toolbar = this.options.toolbar || [], this.options.toolbar.length ? this.context.invoke("buttons.build", this.$toolbar, this.options.toolbar) : this.$toolbar.hide(), this.options.toolbarContainer && this.$toolbar.appendTo(this.options.toolbarContainer), this.changeContainer(!1), this.$note.on("summernote.keyup summernote.mouseup summernote.change", (function () { t.context.invoke("buttons.updateCurrentStyle") })), this.context.invoke("buttons.updateCurrentStyle"), this.options.followingToolbar && this.$window.on("scroll resize", this.followScroll) } }, { key: "destroy", value: function () { this.$toolbar.children().remove(), this.options.followingToolbar && this.$window.off("scroll resize", this.followScroll) } }, { key: "followScroll", value: function () { if (this.$editor.hasClass("fullscreen")) return !1; var t = this.$editor.outerHeight(), e = this.$editor.width(), n = this.$toolbar.height(), o = this.$statusbar.height(), r = 0; this.options.otherStaticBar && (r = i()(this.options.otherStaticBar).outerHeight()); var a = this.$document.scrollTop(), s = this.$editor.offset().top, l = s - r, c = s + t - r - n - o; !this.isFollowing && a > l && a < c - n ? (this.isFollowing = !0, this.$editable.css({ marginTop: this.$toolbar.outerHeight() }), this.$toolbar.css({ position: "fixed", top: r, width: e, zIndex: 1e3 })) : this.isFollowing && (a < l || a > c) && (this.isFollowing = !1, this.$toolbar.css({ position: "relative", top: 0, width: "100%", zIndex: "auto" }), this.$editable.css({ marginTop: "" })) } }, { key: "changeContainer", value: function (t) { t ? this.$toolbar.prependTo(this.$editor) : this.options.toolbarContainer && this.$toolbar.appendTo(this.options.toolbarContainer), this.options.followingToolbar && this.followScroll() } }, { key: "updateFullscreen", value: function (t) { this.ui.toggleBtnActive(this.$toolbar.find(".btn-fullscreen"), t), this.changeContainer(t) } }, { key: "updateCodeview", value: function (t) { this.ui.toggleBtnActive(this.$toolbar.find(".btn-codeview"), t), t ? this.deactivate() : this.activate() } }, { key: "activate", value: function (t) { var e = this.$toolbar.find("button"); t || (e = e.not(".btn-codeview").not(".btn-fullscreen")), this.ui.toggleBtn(e, !0) } }, { key: "deactivate", value: function (t) { var e = this.$toolbar.find("button"); t || (e = e.not(".btn-codeview").not(".btn-fullscreen")), this.ui.toggleBtn(e, !1) } }]) && ae(e.prototype, n), o && ae(e, o), t }(); function le(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var ce = function () { function t(e) { !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.context = e, this.ui = i.a.summernote.ui, this.$body = i()(document.body), this.$editor = e.layoutInfo.editor, this.options = e.options, this.lang = this.options.langInfo, e.memo("help.linkDialog.show", this.options.langInfo.help["linkDialog.show"]) } var e, n, o; return e = t, (n = [{ key: "initialize", value: function () { var t = this.options.dialogsInBody ? this.$body : this.options.container, e = ['<div class="form-group note-form-group">', '<label for="note-dialog-link-txt-'.concat(this.options.id, '" class="note-form-label">').concat(this.lang.link.textToDisplay, "</label>"), '<input id="note-dialog-link-txt-'.concat(this.options.id, '" class="note-link-text form-control note-form-control note-input" type="text"/>'), "</div>", '<div class="form-group note-form-group">', '<label for="note-dialog-link-url-'.concat(this.options.id, '" class="note-form-label">').concat(this.lang.link.url, "</label>"), '<input id="note-dialog-link-url-'.concat(this.options.id, '" class="note-link-url form-control note-form-control note-input" type="text" value="http://"/>'), "</div>", this.options.disableLinkTarget ? "" : i()("<div/>").append(this.ui.checkbox({ className: "sn-checkbox-open-in-new-window", text: this.lang.link.openInNewWindow, checked: !0 }).render()).html(), i()("<div/>").append(this.ui.checkbox({ className: "sn-checkbox-use-protocol", text: this.lang.link.useProtocol, checked: !0 }).render()).html()].join(""), n = '<input type="button" href="#" class="'.concat("btn btn-primary note-btn note-btn-primary note-link-btn", '" value="').concat(this.lang.link.insert, '" disabled>'); this.$dialog = this.ui.dialog({ className: "link-dialog", title: this.lang.link.insert, fade: this.options.dialogsFade, body: e, footer: n }).render().appendTo(t) } }, { key: "destroy", value: function () { this.ui.hideDialog(this.$dialog), this.$dialog.remove() } }, { key: "bindEnterKey", value: function (t, e) { t.on("keypress", (function (t) { t.keyCode === Ct.code.ENTER && (t.preventDefault(), e.trigger("click")) })) } }, { key: "toggleLinkBtn", value: function (t, e, n) { this.ui.toggleBtn(t, e.val() && n.val()) } }, { key: "showLinkDialog", value: function (t) { var e = this; return i.a.Deferred((function (n) { var o = e.$dialog.find(".note-link-text"), i = e.$dialog.find(".note-link-url"), r = e.$dialog.find(".note-link-btn"), a = e.$dialog.find(".sn-checkbox-open-in-new-window input[type=checkbox]"), s = e.$dialog.find(".sn-checkbox-use-protocol input[type=checkbox]"); e.ui.onDialogShown(e.$dialog, (function () { e.context.triggerEvent("dialog.shown"), !t.url && b.isValidUrl(t.text) && (t.url = t.text), o.on("input paste propertychange", (function () { t.text = o.val(), e.toggleLinkBtn(r, o, i) })).val(t.text), i.on("input paste propertychange", (function () { t.text || o.val(i.val()), e.toggleLinkBtn(r, o, i) })).val(t.url), v.isSupportTouch || i.trigger("focus"), e.toggleLinkBtn(r, o, i), e.bindEnterKey(i, r), e.bindEnterKey(o, r); var l = void 0 !== t.isNewWindow ? t.isNewWindow : e.context.options.linkTargetBlank; a.prop("checked", l); var c = !t.url && e.context.options.useProtocol; s.prop("checked", c), r.one("click", (function (r) { r.preventDefault(), n.resolve({ range: t.range, url: i.val(), text: o.val(), isNewWindow: a.is(":checked"), checkProtocol: s.is(":checked") }), e.ui.hideDialog(e.$dialog) })) })), e.ui.onDialogHidden(e.$dialog, (function () { o.off(), i.off(), r.off(), "pending" === n.state() && n.reject() })), e.ui.showDialog(e.$dialog) })).promise() } }, { key: "show", value: function () { var t = this, e = this.context.invoke("editor.getLinkInfo"); this.context.invoke("editor.saveRange"), this.showLinkDialog(e).then((function (e) { t.context.invoke("editor.restoreRange"), t.context.invoke("editor.createLink", e) })).fail((function () { t.context.invoke("editor.restoreRange") })) } }]) && le(e.prototype, n), o && le(e, o), t }(); function ue(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var de = function () { function t(e) { var n = this; !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.context = e, this.ui = i.a.summernote.ui, this.options = e.options, this.events = { "summernote.keyup summernote.mouseup summernote.change summernote.scroll": function () { n.update() }, "summernote.disable summernote.dialog.shown summernote.blur": function () { n.hide() } } } var e, n, o; return e = t, (n = [{ key: "shouldInitialize", value: function () { return !x.isEmpty(this.options.popover.link) } }, { key: "initialize", value: function () { this.$popover = this.ui.popover({ className: "note-link-popover", callback: function (t) { t.find(".popover-content,.note-popover-content").prepend('<span><a target="_blank"></a>&nbsp;</span>') } }).render().appendTo(this.options.container); var t = this.$popover.find(".popover-content,.note-popover-content"); this.context.invoke("buttons.build", t, this.options.popover.link), this.$popover.on("mousedown", (function (t) { t.preventDefault() })) } }, { key: "destroy", value: function () { this.$popover.remove() } }, { key: "update", value: function () { if (this.context.invoke("editor.hasFocus")) { var t = this.context.invoke("editor.getLastRange"); if (t.isCollapsed() && t.isOnAnchor()) { var e = ft.ancestor(t.sc, ft.isAnchor), n = i()(e).attr("href"); this.$popover.find("a").attr("href", n).text(n); var o = ft.posFromPlaceholder(e), r = i()(this.options.container).offset(); o.top -= r.top, o.left -= r.left, this.$popover.css({ display: "block", left: o.left, top: o.top }) } else this.hide() } else this.hide() } }, { key: "hide", value: function () { this.$popover.hide() } }]) && ue(e.prototype, n), o && ue(e, o), t }(); function he(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var fe = function () { function t(e) { !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.context = e, this.ui = i.a.summernote.ui, this.$body = i()(document.body), this.$editor = e.layoutInfo.editor, this.options = e.options, this.lang = this.options.langInfo } var e, n, o; return e = t, (n = [{ key: "initialize", value: function () { var t = ""; if (this.options.maximumImageFileSize) { var e = Math.floor(Math.log(this.options.maximumImageFileSize) / Math.log(1024)), n = 1 * (this.options.maximumImageFileSize / Math.pow(1024, e)).toFixed(2) + " " + " KMGTP"[e] + "B"; t = "<small>".concat(this.lang.image.maximumFileSize + " : " + n, "</small>") } var o = this.options.dialogsInBody ? this.$body : this.options.container, i = ['<div class="form-group note-form-group note-group-select-from-files">', '<label for="note-dialog-image-file-' + this.options.id + '" class="note-form-label">' + this.lang.image.selectFromFiles + "</label>", '<input id="note-dialog-image-file-' + this.options.id + '" class="note-image-input form-control-file note-form-control note-input" ', ' type="file" name="files" accept="image/*" multiple="multiple"/>', t, "</div>", '<div class="form-group note-group-image-url">', '<label for="note-dialog-image-url-' + this.options.id + '" class="note-form-label">' + this.lang.image.url + "</label>", '<input id="note-dialog-image-url-' + this.options.id + '" class="note-image-url form-control note-form-control note-input" type="text"/>', "</div>"].join(""), r = '<input type="button" href="#" class="'.concat("btn btn-primary note-btn note-btn-primary note-image-btn", '" value="').concat(this.lang.image.insert, '" disabled>'); this.$dialog = this.ui.dialog({ title: this.lang.image.insert, fade: this.options.dialogsFade, body: i, footer: r }).render().appendTo(o) } }, { key: "destroy", value: function () { this.ui.hideDialog(this.$dialog), this.$dialog.remove() } }, { key: "bindEnterKey", value: function (t, e) { t.on("keypress", (function (t) { t.keyCode === Ct.code.ENTER && (t.preventDefault(), e.trigger("click")) })) } }, { key: "show", value: function () { var t = this; this.context.invoke("editor.saveRange"), this.showImageDialog().then((function (e) { t.ui.hideDialog(t.$dialog), t.context.invoke("editor.restoreRange"), "string" == typeof e ? t.options.callbacks.onImageLinkInsert ? t.context.triggerEvent("image.link.insert", e) : t.context.invoke("editor.insertImage", e) : t.context.invoke("editor.insertImagesOrCallback", e) })).fail((function () { t.context.invoke("editor.restoreRange") })) } }, { key: "showImageDialog", value: function () { var t = this; return i.a.Deferred((function (e) { var n = t.$dialog.find(".note-image-input"), o = t.$dialog.find(".note-image-url"), i = t.$dialog.find(".note-image-btn"); t.ui.onDialogShown(t.$dialog, (function () { t.context.triggerEvent("dialog.shown"), n.replaceWith(n.clone().on("change", (function (t) { e.resolve(t.target.files || t.target.value) })).val("")), o.on("input paste propertychange", (function () { t.ui.toggleBtn(i, o.val()) })).val(""), v.isSupportTouch || o.trigger("focus"), i.click((function (t) { t.preventDefault(), e.resolve(o.val()) })), t.bindEnterKey(o, i) })), t.ui.onDialogHidden(t.$dialog, (function () { n.off(), o.off(), i.off(), "pending" === e.state() && e.reject() })), t.ui.showDialog(t.$dialog) })) } }]) && he(e.prototype, n), o && he(e, o), t }(); function pe(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var me = function () { function t(e) { var n = this; !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.context = e, this.ui = i.a.summernote.ui, this.editable = e.layoutInfo.editable[0], this.options = e.options, this.events = { "summernote.disable summernote.blur": function () { n.hide() } } } var e, n, o; return e = t, (n = [{ key: "shouldInitialize", value: function () { return !x.isEmpty(this.options.popover.image) } }, { key: "initialize", value: function () { this.$popover = this.ui.popover({ className: "note-image-popover" }).render().appendTo(this.options.container); var t = this.$popover.find(".popover-content,.note-popover-content"); this.context.invoke("buttons.build", t, this.options.popover.image), this.$popover.on("mousedown", (function (t) { t.preventDefault() })) } }, { key: "destroy", value: function () { this.$popover.remove() } }, { key: "update", value: function (t, e) { if (ft.isImg(t)) { var n = i()(t).offset(), o = i()(this.options.container).offset(), r = {}; this.options.popatmouse ? (r.left = e.pageX - 20, r.top = e.pageY) : r = n, r.top -= o.top, r.left -= o.left, this.$popover.css({ display: "block", left: r.left, top: r.top }) } else this.hide() } }, { key: "hide", value: function () { this.$popover.hide() } }]) && pe(e.prototype, n), o && pe(e, o), t }(); function ve(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var ge = function () { function t(e) { var n = this; !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.context = e, this.ui = i.a.summernote.ui, this.options = e.options, this.events = { "summernote.mousedown": function (t, e) { n.update(e.target) }, "summernote.keyup summernote.scroll summernote.change": function () { n.update() }, "summernote.disable summernote.blur": function () { n.hide() } } } var e, n, o; return e = t, (n = [{ key: "shouldInitialize", value: function () { return !x.isEmpty(this.options.popover.table) } }, { key: "initialize", value: function () { this.$popover = this.ui.popover({ className: "note-table-popover" }).render().appendTo(this.options.container); var t = this.$popover.find(".popover-content,.note-popover-content"); this.context.invoke("buttons.build", t, this.options.popover.table), v.isFF && document.execCommand("enableInlineTableEditing", !1, !1), this.$popover.on("mousedown", (function (t) { t.preventDefault() })) } }, { key: "destroy", value: function () { this.$popover.remove() } }, { key: "update", value: function (t) { if (this.context.isDisabled()) return !1; var e = ft.isCell(t); if (e) { var n = ft.posFromPlaceholder(t), o = i()(this.options.container).offset(); n.top -= o.top, n.left -= o.left, this.$popover.css({ display: "block", left: n.left, top: n.top }) } else this.hide(); return e } }, { key: "hide", value: function () { this.$popover.hide() } }]) && ve(e.prototype, n), o && ve(e, o), t }(); function be(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var ye = function () { function t(e) { !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.context = e, this.ui = i.a.summernote.ui, this.$body = i()(document.body), this.$editor = e.layoutInfo.editor, this.options = e.options, this.lang = this.options.langInfo } var e, n, o; return e = t, (n = [{ key: "initialize", value: function () { var t = this.options.dialogsInBody ? this.$body : this.options.container, e = ['<div class="form-group note-form-group row-fluid">', '<label for="note-dialog-video-url-'.concat(this.options.id, '" class="note-form-label">').concat(this.lang.video.url, ' <small class="text-muted">').concat(this.lang.video.providers, "</small></label>"), '<input id="note-dialog-video-url-'.concat(this.options.id, '" class="note-video-url form-control note-form-control note-input" type="text"/>'), "</div>"].join(""), n = '<input type="button" href="#" class="'.concat("btn btn-primary note-btn note-btn-primary note-video-btn", '" value="').concat(this.lang.video.insert, '" disabled>'); this.$dialog = this.ui.dialog({ title: this.lang.video.insert, fade: this.options.dialogsFade, body: e, footer: n }).render().appendTo(t) } }, { key: "destroy", value: function () { this.ui.hideDialog(this.$dialog), this.$dialog.remove() } }, { key: "bindEnterKey", value: function (t, e) { t.on("keypress", (function (t) { t.keyCode === Ct.code.ENTER && (t.preventDefault(), e.trigger("click")) })) } }, { key: "createVideoNode", value: function (t) { var e, n = t.match(/\/\/(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))([\w|-]{11})(?:(?:[\?&]t=)(\S+))?$/), o = t.match(/(?:www\.|\/\/)instagram\.com\/p\/(.[a-zA-Z0-9_-]*)/), r = t.match(/\/\/vine\.co\/v\/([a-zA-Z0-9]+)/), a = t.match(/\/\/(player\.)?vimeo\.com\/([a-z]*\/)*(\d+)[?]?.*/), s = t.match(/.+dailymotion.com\/(video|hub)\/([^_]+)[^#]*(#video=([^_&]+))?/), l = t.match(/\/\/v\.youku\.com\/v_show\/id_(\w+)=*\.html/), c = t.match(/\/\/v\.qq\.com.*?vid=(.+)/), u = t.match(/\/\/v\.qq\.com\/x?\/?(page|cover).*?\/([^\/]+)\.html\??.*/), d = t.match(/^.+.(mp4|m4v)$/), h = t.match(/^.+.(ogg|ogv)$/), f = t.match(/^.+.(webm)$/), p = t.match(/(?:www\.|\/\/)facebook\.com\/([^\/]+)\/videos\/([0-9]+)/); if (n && 11 === n[1].length) { var m = n[1], v = 0; if (void 0 !== n[2]) { var g = n[2].match(/^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/); if (g) for (var b = [3600, 60, 1], y = 0, k = b.length; y < k; y++)v += void 0 !== g[y + 1] ? b[y] * parseInt(g[y + 1], 10) : 0 } e = i()("<iframe>").attr("frameborder", 0).attr("src", "//www.youtube.com/embed/" + m + (v > 0 ? "?start=" + v : "")).attr("width", "640").attr("height", "360") } else if (o && o[0].length) e = i()("<iframe>").attr("frameborder", 0).attr("src", "https://instagram.com/p/" + o[1] + "/embed/").attr("width", "612").attr("height", "710").attr("scrolling", "no").attr("allowtransparency", "true"); else if (r && r[0].length) e = i()("<iframe>").attr("frameborder", 0).attr("src", r[0] + "/embed/simple").attr("width", "600").attr("height", "600").attr("class", "vine-embed"); else if (a && a[3].length) e = i()("<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>").attr("frameborder", 0).attr("src", "//player.vimeo.com/video/" + a[3]).attr("width", "640").attr("height", "360"); else if (s && s[2].length) e = i()("<iframe>").attr("frameborder", 0).attr("src", "//www.dailymotion.com/embed/video/" + s[2]).attr("width", "640").attr("height", "360"); else if (l && l[1].length) e = i()("<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>").attr("frameborder", 0).attr("height", "498").attr("width", "510").attr("src", "//player.youku.com/embed/" + l[1]); else if (c && c[1].length || u && u[2].length) { var w = c && c[1].length ? c[1] : u[2]; e = i()("<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>").attr("frameborder", 0).attr("height", "310").attr("width", "500").attr("src", "https://v.qq.com/iframe/player.html?vid=" + w + "&amp;auto=0") } else if (d || h || f) e = i()("<video controls>").attr("src", t).attr("width", "640").attr("height", "360"); else { if (!p || !p[0].length) return !1; e = i()("<iframe>").attr("frameborder", 0).attr("src", "https://www.facebook.com/plugins/video.php?href=" + encodeURIComponent(p[0]) + "&show_text=0&width=560").attr("width", "560").attr("height", "301").attr("scrolling", "no").attr("allowtransparency", "true") } return e.addClass("note-video-clip"), e[0] } }, { key: "show", value: function () { var t = this, e = this.context.invoke("editor.getSelectedText"); this.context.invoke("editor.saveRange"), this.showVideoDialog(e).then((function (e) { t.ui.hideDialog(t.$dialog), t.context.invoke("editor.restoreRange"); var n = t.createVideoNode(e); n && t.context.invoke("editor.insertNode", n) })).fail((function () { t.context.invoke("editor.restoreRange") })) } }, { key: "showVideoDialog", value: function () { var t = this; return i.a.Deferred((function (e) { var n = t.$dialog.find(".note-video-url"), o = t.$dialog.find(".note-video-btn"); t.ui.onDialogShown(t.$dialog, (function () { t.context.triggerEvent("dialog.shown"), n.on("input paste propertychange", (function () { t.ui.toggleBtn(o, n.val()) })), v.isSupportTouch || n.trigger("focus"), o.click((function (t) { t.preventDefault(), e.resolve(n.val()) })), t.bindEnterKey(n, o) })), t.ui.onDialogHidden(t.$dialog, (function () { n.off(), o.off(), "pending" === e.state() && e.reject() })), t.ui.showDialog(t.$dialog) })) } }]) && be(e.prototype, n), o && be(e, o), t }(); function ke(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var we = function () { function t(e) { !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.context = e, this.ui = i.a.summernote.ui, this.$body = i()(document.body), this.$editor = e.layoutInfo.editor, this.options = e.options, this.lang = this.options.langInfo } var e, n, o; return e = t, (n = [{ key: "initialize", value: function () { var t = this.options.dialogsInBody ? this.$body : this.options.container, e = ['<p class="text-center">', '<a href="http://summernote.org/" target="_blank">Summernote 0.8.16</a> · ', '<a href="https://github.com/summernote/summernote" target="_blank">Project</a> · ', '<a href="https://github.com/summernote/summernote/issues" target="_blank">Issues</a>', "</p>"].join(""); this.$dialog = this.ui.dialog({ title: this.lang.options.help, fade: this.options.dialogsFade, body: this.createShortcutList(), footer: e, callback: function (t) { t.find(".modal-body,.note-modal-body").css({ "max-height": 300, overflow: "scroll" }) } }).render().appendTo(t) } }, { key: "destroy", value: function () { this.ui.hideDialog(this.$dialog), this.$dialog.remove() } }, { key: "createShortcutList", value: function () { var t = this, e = this.options.keyMap[v.isMac ? "mac" : "pc"]; return Object.keys(e).map((function (n) { var o = e[n], r = i()('<div><div class="help-list-item"/></div>'); return r.append(i()("<label><kbd>" + n + "</kdb></label>").css({ width: 180, "margin-right": 10 })).append(i()("<span/>").html(t.context.memo("help." + o) || o)), r.html() })).join("") } }, { key: "showHelpDialog", value: function () { var t = this; return i.a.Deferred((function (e) { t.ui.onDialogShown(t.$dialog, (function () { t.context.triggerEvent("dialog.shown"), e.resolve() })), t.ui.showDialog(t.$dialog) })).promise() } }, { key: "show", value: function () { var t = this; this.context.invoke("editor.saveRange"), this.showHelpDialog().then((function () { t.context.invoke("editor.restoreRange") })) } }]) && ke(e.prototype, n), o && ke(e, o), t }(); function Ce(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var xe = function () { function t(e) { var n = this; !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.context = e, this.ui = i.a.summernote.ui, this.options = e.options, this.hidable = !0, this.onContextmenu = !1, this.pageX = null, this.pageY = null, this.events = { "summernote.contextmenu": function (t) { n.options.editing && (t.preventDefault(), t.stopPropagation(), n.onContextmenu = !0, n.update(!0)) }, "summernote.mousedown": function (t, e) { n.pageX = e.pageX, n.pageY = e.pageY }, "summernote.keyup summernote.mouseup summernote.scroll": function (t, e) { n.options.editing && !n.onContextmenu && (n.pageX = e.pageX, n.pageY = e.pageY, n.update()), n.onContextmenu = !1 }, "summernote.disable summernote.change summernote.dialog.shown summernote.blur": function () { n.hide() }, "summernote.focusout": function () { n.$popover.is(":active,:focus") || n.hide() } } } var e, n, o; return e = t, (n = [{ key: "shouldInitialize", value: function () { return this.options.airMode && !x.isEmpty(this.options.popover.air) } }, { key: "initialize", value: function () { var t = this; this.$popover = this.ui.popover({ className: "note-air-popover" }).render().appendTo(this.options.container); var e = this.$popover.find(".popover-content"); this.context.invoke("buttons.build", e, this.options.popover.air), this.$popover.on("mousedown", (function () { t.hidable = !1 })), this.$popover.on("mouseup", (function () { t.hidable = !0 })) } }, { key: "destroy", value: function () { this.$popover.remove() } }, { key: "update", value: function (t) { var e = this.context.invoke("editor.currentStyle"); if (!e.range || e.range.isCollapsed() && !t) this.hide(); else { var n = { left: this.pageX, top: this.pageY }, o = i()(this.options.container).offset(); n.top -= o.top, n.left -= o.left, this.$popover.css({ display: "block", left: Math.max(n.left, 0) + -5, top: n.top + 5 }), this.context.invoke("buttons.updateCurrentStyle", this.$popover) } } }, { key: "hide", value: function () { this.hidable && this.$popover.hide() } }]) && Ce(e.prototype, n), o && Ce(e, o), t }(); function Se(t, e) { for (var n = 0; n < e.length; n++) { var o = e[n]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o) } } var Te = function () { function t(e) { var n = this; !function (t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.context = e, this.ui = i.a.summernote.ui, this.$editable = e.layoutInfo.editable, this.options = e.options, this.hint = this.options.hint || [], this.direction = this.options.hintDirection || "bottom", this.hints = Array.isArray(this.hint) ? this.hint : [this.hint], this.events = { "summernote.keyup": function (t, e) { e.isDefaultPrevented() || n.handleKeyup(e) }, "summernote.keydown": function (t, e) { n.handleKeydown(e) }, "summernote.disable summernote.dialog.shown summernote.blur": function () { n.hide() } } } var e, n, o; return e = t, (n = [{ key: "shouldInitialize", value: function () { return this.hints.length > 0 } }, { key: "initialize", value: function () { var t = this; this.lastWordRange = null, this.matchingWord = null, this.$popover = this.ui.popover({ className: "note-hint-popover", hideArrow: !0, direction: "" }).render().appendTo(this.options.container), this.$popover.hide(), this.$content = this.$popover.find(".popover-content,.note-popover-content"), this.$content.on("click", ".note-hint-item", (function (e) { t.$content.find(".active").removeClass("active"), i()(e.currentTarget).addClass("active"), t.replace() })), this.$popover.on("mousedown", (function (t) { t.preventDefault() })) } }, { key: "destroy", value: function () { this.$popover.remove() } }, { key: "selectItem", value: function (t) { this.$content.find(".active").removeClass("active"), t.addClass("active"), this.$content[0].scrollTop = t[0].offsetTop - this.$content.innerHeight() / 2 } }, { key: "moveDown", value: function () { var t = this.$content.find(".note-hint-item.active"), e = t.next(); if (e.length) this.selectItem(e); else { var n = t.parent().next(); n.length || (n = this.$content.find(".note-hint-group").first()), this.selectItem(n.find(".note-hint-item").first()) } } }, { key: "moveUp", value: function () { var t = this.$content.find(".note-hint-item.active"), e = t.prev(); if (e.length) this.selectItem(e); else { var n = t.parent().prev(); n.length || (n = this.$content.find(".note-hint-group").last()), this.selectItem(n.find(".note-hint-item").last()) } } }, { key: "replace", value: function () { var t = this.$content.find(".note-hint-item.active"); if (t.length) { var e = this.nodeFromItem(t); if (null !== this.matchingWord && 0 === this.matchingWord.length) this.lastWordRange.so = this.lastWordRange.eo; else if (null !== this.matchingWord && this.matchingWord.length > 0 && !this.lastWordRange.isCollapsed()) { var n = this.lastWordRange.eo - this.lastWordRange.so - this.matchingWord.length; n > 0 && (this.lastWordRange.so += n) } if (this.lastWordRange.insertNode(e), "next" === this.options.hintSelect) { var o = document.createTextNode(""); i()(e).after(o), kt.createFromNodeBefore(o).select() } else kt.createFromNodeAfter(e).select(); this.lastWordRange = null, this.hide(), this.context.invoke("editor.focus") } } }, { key: "nodeFromItem", value: function (t) { var e = this.hints[t.data("index")], n = t.data("item"), o = e.content ? e.content(n) : n; return "string" == typeof o && (o = ft.createText(o)), o } }, { key: "createItemTemplates", value: function (t, e) { var n = this.hints[t]; return e.map((function (e) { var o = i()('<div class="note-hint-item"/>'); return o.append(n.template ? n.template(e) : e + ""), o.data({ index: t, item: e }), o })) } }, { key: "handleKeydown", value: function (t) { this.$popover.is(":visible") && (t.keyCode === Ct.code.ENTER ? (t.preventDefault(), this.replace()) : t.keyCode === Ct.code.UP ? (t.preventDefault(), this.moveUp()) : t.keyCode === Ct.code.DOWN && (t.preventDefault(), this.moveDown())) } }, { key: "searchKeyword", value: function (t, e, n) { var o = this.hints[t]; if (o && o.match.test(e) && o.search) { var i = o.match.exec(e); this.matchingWord = i[0], o.search(i[1], n) } else n() } }, { key: "createGroup", value: function (t, e) { var n = this, o = i()('<div class="note-hint-group note-hint-group-' + t + '"/>'); return this.searchKeyword(t, e, (function (e) { (e = e || []).length && (o.html(n.createItemTemplates(t, e)), n.show()) })), o } }, { key: "handleKeyup", value: function (t) { var e = this; if (!x.contains([Ct.code.ENTER, Ct.code.UP, Ct.code.DOWN], t.keyCode)) { var n, o, r = this.context.invoke("editor.getLastRange"); if ("words" === this.options.hintMode) { if (n = r.getWordsRange(r), o = n.toString(), this.hints.forEach((function (t) { if (t.match.test(o)) return n = r.getWordsMatchRange(t.match), !1 })), !n) return void this.hide(); o = n.toString() } else n = r.getWordRange(), o = n.toString(); if (this.hints.length && o) { this.$content.empty(); var a = b.rect2bnd(x.last(n.getClientRects())), s = i()(this.options.container).offset(); a && (a.top -= s.top, a.left -= s.left, this.$popover.hide(), this.lastWordRange = n, this.hints.forEach((function (t, n) { t.match.test(o) && e.createGroup(n, o).appendTo(e.$content) })), this.$content.find(".note-hint-item:first").addClass("active"), "top" === this.direction ? this.$popover.css({ left: a.left, top: a.top - this.$popover.outerHeight() - 5 }) : this.$popover.css({ left: a.left, top: a.top + a.height + 5 })) } else this.hide() } } }, { key: "show", value: function () { this.$popover.show() } }, { key: "hide", value: function () { this.$popover.hide() } }]) && Se(e.prototype, n), o && Se(e, o), t }(); i.a.summernote = i.a.extend(i.a.summernote, { version: "0.8.16", plugins: {}, dom: ft, range: kt, lists: x, options: { langInfo: i.a.summernote.lang["en-US"], editing: !0, modules: { editor: Dt, clipboard: zt, dropzone: Ot, codeview: jt, statusbar: Kt, fullscreen: Vt, handle: Gt, hintPopover: Te, autoLink: Xt, autoSync: Jt, autoReplace: ee, placeholder: oe, buttons: re, toolbar: se, linkDialog: ce, linkPopover: de, imageDialog: fe, imagePopover: me, tablePopover: ge, videoDialog: ye, helpDialog: we, airPopover: xe }, buttons: {}, lang: "en-US", followingToolbar: !1, toolbarPosition: "top", otherStaticBar: "", toolbar: [["style", ["style"]], ["font", ["bold", "underline", "clear"]], ["fontname", ["fontname"]], ["color", ["color"]], ["para", ["ul", "ol", "paragraph"]], ["table", ["table"]], ["insert", ["link", "picture", "video"]], ["view", ["fullscreen", "codeview", "help"]]], popatmouse: !0, popover: { image: [["resize", ["resizeFull", "resizeHalf", "resizeQuarter", "resizeNone"]], ["float", ["floatLeft", "floatRight", "floatNone"]], ["remove", ["removeMedia"]]], link: [["link", ["linkDialogShow", "unlink"]]], table: [["add", ["addRowDown", "addRowUp", "addColLeft", "addColRight"]], ["delete", ["deleteRow", "deleteCol", "deleteTable"]]], air: [["color", ["color"]], ["font", ["bold", "underline", "clear"]], ["para", ["ul", "paragraph"]], ["table", ["table"]], ["insert", ["link", "picture"]], ["view", ["fullscreen", "codeview"]]] }, airMode: !1, overrideContextMenu: !1, width: null, height: null, linkTargetBlank: !0, useProtocol: !0, defaultProtocol: "http://", focus: !1, tabDisabled: !1, tabSize: 4, styleWithCSS: !1, shortcuts: !0, textareaAutoSync: !0, tooltip: "auto", container: null, maxTextLength: 0, blockquoteBreakingLevel: 2, spellCheck: !0, disableGrammar: !1, placeholder: null, inheritPlaceholder: !1, recordEveryKeystroke: !1, historyLimit: 200, hintMode: "word", hintSelect: "after", hintDirection: "bottom", styleTags: ["p", "blockquote", "pre", "h1", "h2", "h3", "h4", "h5", "h6"], fontNames: ["Arial", "Arial Black", "Comic Sans MS", "Courier New", "Helvetica Neue", "Helvetica", "Impact", "Lucida Grande", "Tahoma", "Times New Roman", "Verdana"], fontNamesIgnoreCheck: [], addDefaultFonts: !0, fontSizes: ["8", "9", "10", "11", "12", "14", "18", "24", "36"], fontSizeUnits: ["px", "pt"], colors: [["#000000", "#424242", "#636363", "#9C9C94", "#CEC6CE", "#EFEFEF", "#F7F7F7", "#FFFFFF"], ["#FF0000", "#FF9C00", "#FFFF00", "#00FF00", "#00FFFF", "#0000FF", "#9C00FF", "#FF00FF"], ["#F7C6CE", "#FFE7CE", "#FFEFC6", "#D6EFD6", "#CEDEE7", "#CEE7F7", "#D6D6E7", "#E7D6DE"], ["#E79C9C", "#FFC69C", "#FFE79C", "#B5D6A5", "#A5C6CE", "#9CC6EF", "#B5A5D6", "#D6A5BD"], ["#E76363", "#F7AD6B", "#FFD663", "#94BD7B", "#73A5AD", "#6BADDE", "#8C7BC6", "#C67BA5"], ["#CE0000", "#E79439", "#EFC631", "#6BA54A", "#4A7B8C", "#3984C6", "#634AA5", "#A54A7B"], ["#9C0000", "#B56308", "#BD9400", "#397B21", "#104A5A", "#085294", "#311873", "#731842"], ["#630000", "#7B3900", "#846300", "#295218", "#083139", "#003163", "#21104A", "#4A1031"]], colorsName: [["Black", "Tundora", "Dove Gray", "Star Dust", "Pale Slate", "Gallery", "Alabaster", "White"], ["Red", "Orange Peel", "Yellow", "Green", "Cyan", "Blue", "Electric Violet", "Magenta"], ["Azalea", "Karry", "Egg White", "Zanah", "Botticelli", "Tropical Blue", "Mischka", "Twilight"], ["Tonys Pink", "Peach Orange", "Cream Brulee", "Sprout", "Casper", "Perano", "Cold Purple", "Careys Pink"], ["Mandy", "Rajah", "Dandelion", "Olivine", "Gulf Stream", "Viking", "Blue Marguerite", "Puce"], ["Guardsman Red", "Fire Bush", "Golden Dream", "Chelsea Cucumber", "Smalt Blue", "Boston Blue", "Butterfly Bush", "Cadillac"], ["Sangria", "Mai Tai", "Buddha Gold", "Forest Green", "Eden", "Venice Blue", "Meteorite", "Claret"], ["Rosewood", "Cinnamon", "Olive", "Parsley", "Tiber", "Midnight Blue", "Valentino", "Loulou"]], colorButton: { foreColor: "#000000", backColor: "#FFFF00" }, lineHeights: ["1.0", "1.2", "1.4", "1.5", "1.6", "1.8", "2.0", "3.0"], tableClassName: "table table-bordered", insertTableMaxSize: { col: 10, row: 10 }, dialogsInBody: !1, dialogsFade: !1, maximumImageFileSize: null, callbacks: { onBeforeCommand: null, onBlur: null, onBlurCodeview: null, onChange: null, onChangeCodeview: null, onDialogShown: null, onEnter: null, onFocus: null, onImageLinkInsert: null, onImageUpload: null, onImageUploadError: null, onInit: null, onKeydown: null, onKeyup: null, onMousedown: null, onMouseup: null, onPaste: null, onScroll: null }, codemirror: { mode: "text/html", htmlMode: !0, lineNumbers: !0 }, codeviewFilter: !1, codeviewFilterRegex: /<\/*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|ilayer|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|t(?:itle|extarea)|xml)[^>]*?>/gi, codeviewIframeFilter: !0, codeviewIframeWhitelistSrc: [], codeviewIframeWhitelistSrcBase: ["www.youtube.com", "www.youtube-nocookie.com", "www.facebook.com", "vine.co", "instagram.com", "player.vimeo.com", "www.dailymotion.com", "player.youku.com", "v.qq.com"], keyMap: { pc: { ENTER: "insertParagraph", "CTRL+Z": "undo", "CTRL+Y": "redo", TAB: "tab", "SHIFT+TAB": "untab", "CTRL+B": "bold", "CTRL+I": "italic", "CTRL+U": "underline", "CTRL+SHIFT+S": "strikethrough", "CTRL+BACKSLASH": "removeFormat", "CTRL+SHIFT+L": "justifyLeft", "CTRL+SHIFT+E": "justifyCenter", "CTRL+SHIFT+R": "justifyRight", "CTRL+SHIFT+J": "justifyFull", "CTRL+SHIFT+NUM7": "insertUnorderedList", "CTRL+SHIFT+NUM8": "insertOrderedList", "CTRL+LEFTBRACKET": "outdent", "CTRL+RIGHTBRACKET": "indent", "CTRL+NUM0": "formatPara", "CTRL+NUM1": "formatH1", "CTRL+NUM2": "formatH2", "CTRL+NUM3": "formatH3", "CTRL+NUM4": "formatH4", "CTRL+NUM5": "formatH5", "CTRL+NUM6": "formatH6", "CTRL+ENTER": "insertHorizontalRule", "CTRL+K": "linkDialog.show" }, mac: { ENTER: "insertParagraph", "CMD+Z": "undo", "CMD+SHIFT+Z": "redo", TAB: "tab", "SHIFT+TAB": "untab", "CMD+B": "bold", "CMD+I": "italic", "CMD+U": "underline", "CMD+SHIFT+S": "strikethrough", "CMD+BACKSLASH": "removeFormat", "CMD+SHIFT+L": "justifyLeft", "CMD+SHIFT+E": "justifyCenter", "CMD+SHIFT+R": "justifyRight", "CMD+SHIFT+J": "justifyFull", "CMD+SHIFT+NUM7": "insertUnorderedList", "CMD+SHIFT+NUM8": "insertOrderedList", "CMD+LEFTBRACKET": "outdent", "CMD+RIGHTBRACKET": "indent", "CMD+NUM0": "formatPara", "CMD+NUM1": "formatH1", "CMD+NUM2": "formatH2", "CMD+NUM3": "formatH3", "CMD+NUM4": "formatH4", "CMD+NUM5": "formatH5", "CMD+NUM6": "formatH6", "CMD+ENTER": "insertHorizontalRule", "CMD+K": "linkDialog.show" } }, icons: { align: "note-icon-align", alignCenter: "note-icon-align-center", alignJustify: "note-icon-align-justify", alignLeft: "note-icon-align-left", alignRight: "note-icon-align-right", rowBelow: "note-icon-row-below", colBefore: "note-icon-col-before", colAfter: "note-icon-col-after", rowAbove: "note-icon-row-above", rowRemove: "note-icon-row-remove", colRemove: "note-icon-col-remove", indent: "note-icon-align-indent", outdent: "note-icon-align-outdent", arrowsAlt: "note-icon-arrows-alt", bold: "note-icon-bold", caret: "note-icon-caret", circle: "note-icon-circle", close: "note-icon-close", code: "note-icon-code", eraser: "note-icon-eraser", floatLeft: "note-icon-float-left", floatRight: "note-icon-float-right", font: "note-icon-font", frame: "note-icon-frame", italic: "note-icon-italic", link: "note-icon-link", unlink: "note-icon-chain-broken", magic: "note-icon-magic", menuCheck: "note-icon-menu-check", minus: "note-icon-minus", orderedlist: "note-icon-orderedlist", pencil: "note-icon-pencil", picture: "note-icon-picture", question: "note-icon-question", redo: "note-icon-redo", rollback: "note-icon-rollback", square: "note-icon-square", strikethrough: "note-icon-strikethrough", subscript: "note-icon-subscript", superscript: "note-icon-superscript", table: "note-icon-table", textHeight: "note-icon-text-height", trash: "note-icon-trash", underline: "note-icon-underline", undo: "note-icon-undo", unorderedlist: "note-icon-unorderedlist", video: "note-icon-video" } } }) }, 5: function (t, e, n) { }, 53: function (t, e, n) { "use strict"; n.r(e); var o = n(0), i = n.n(o), r = n(1); function a(t) { return (a = "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) } var s = r.a.create('<div class="note-editor note-frame card"/>'), l = r.a.create('<div class="note-toolbar card-header" role="toolbar"></div>'), c = r.a.create('<div class="note-editing-area"/>'), u = r.a.create('<textarea class="note-codable" aria-multiline="true"/>'), d = r.a.create('<div class="note-editable card-block" contentEditable="true" role="textbox" aria-multiline="true"/>'), h = r.a.create(['<output class="note-status-output" role="status" aria-live="polite"/>', '<div class="note-statusbar" role="status">', '<output class="note-status-output" aria-live="polite"></output>', '<div class="note-resizebar" aria-label="Resize">', '<div class="note-icon-bar"/>', '<div class="note-icon-bar"/>', '<div class="note-icon-bar"/>', "</div>", "</div>"].join("")), f = r.a.create('<div class="note-editor note-airframe"/>'), p = r.a.create(['<div class="note-editable" contentEditable="true" role="textbox" aria-multiline="true"/>', '<output class="note-status-output" role="status" aria-live="polite"/>'].join("")), m = r.a.create('<div class="note-btn-group btn-group">'), v = r.a.create('<div class="note-dropdown-menu dropdown-menu" role="list">', (function (t, e) { var n = Array.isArray(e.items) ? e.items.map((function (t) { var n = "string" == typeof t ? t : t.value || "", o = e.template ? e.template(t) : t, i = "object" === a(t) ? t.option : void 0; return '<a class="dropdown-item" href="#" ' + ('data-value="' + n + '"' + (void 0 !== i ? ' data-option="' + i + '"' : "")) + ' role="listitem" aria-label="' + n + '">' + o + "</a>" })).join("") : e.items; t.html(n).attr({ "aria-label": e.title }) })), g = function (t) { return t }, b = r.a.create('<div class="note-dropdown-menu dropdown-menu note-check" role="list">', (function (t, e) { var n = Array.isArray(e.items) ? e.items.map((function (t) { var n = "string" == typeof t ? t : t.value || "", o = e.template ? e.template(t) : t; return '<a class="dropdown-item" href="#" data-value="' + n + '" role="listitem" aria-label="' + t + '">' + C(e.checkClassName) + " " + o + "</a>" })).join("") : e.items; t.html(n).attr({ "aria-label": e.title }) })), y = r.a.create('<div class="modal note-modal" aria-hidden="false" tabindex="-1" role="dialog"/>', (function (t, e) { e.fade && t.addClass("fade"), t.attr({ "aria-label": e.title }), t.html(['<div class="modal-dialog">', '<div class="modal-content">', e.title ? '<div class="modal-header"><h4 class="modal-title">' + e.title + '</h4><button type="button" class="close" data-dismiss="modal" aria-label="Close" aria-hidden="true">&times;</button></div>' : "", '<div class="modal-body">' + e.body + "</div>", e.footer ? '<div class="modal-footer">' + e.footer + "</div>" : "", "</div>", "</div>"].join("")) })), k = r.a.create(['<div class="note-popover popover in">', '<div class="arrow"/>', '<div class="popover-content note-children-container"/>', "</div>"].join(""), (function (t, e) { var n = void 0 !== e.direction ? e.direction : "bottom"; t.addClass(n), e.hideArrow && t.find(".arrow").hide() })), w = r.a.create('<div class="form-check"></div>', (function (t, e) { t.html(['<label class="form-check-label"' + (e.id ? ' for="note-' + e.id + '"' : "") + ">", '<input type="checkbox" class="form-check-input"' + (e.id ? ' id="note-' + e.id + '"' : ""), e.checked ? " checked" : "", ' aria-label="' + (e.text ? e.text : "") + '"', ' aria-checked="' + (e.checked ? "true" : "false") + '"/>', " " + (e.text ? e.text : "") + "</label>"].join("")) })), C = function (t, e) { return "<" + (e = e || "i") + ' class="' + t + '"/>' }, x = function (t) { return { editor: s, toolbar: l, editingArea: c, codable: u, editable: d, statusbar: h, airEditor: f, airEditable: p, buttonGroup: m, dropdown: v, dropdownButtonContents: g, dropdownCheck: b, dialog: y, popover: k, icon: C, checkbox: w, options: t, palette: function (e, n) { return r.a.create('<div class="note-color-palette"/>', (function (e, n) { for (var o = [], i = 0, r = n.colors.length; i < r; i++) { for (var a = n.eventName, s = n.colors[i], l = n.colorsName[i], c = [], u = 0, d = s.length; u < d; u++) { var h = s[u], f = l[u]; c.push(['<button type="button" class="note-color-btn"', 'style="background-color:', h, '" ', 'data-event="', a, '" ', 'data-value="', h, '" ', 'title="', f, '" ', 'aria-label="', f, '" ', 'data-toggle="button" tabindex="-1"></button>'].join("")) } o.push('<div class="note-color-row">' + c.join("") + "</div>") } e.html(o.join("")), n.tooltip && e.find(".note-color-btn").tooltip({ container: n.container || t.container, trigger: "hover", placement: "bottom" }) }))(e, n) }, button: function (e, n) { return r.a.create('<button type="button" class="note-btn btn btn-light btn-sm" tabindex="-1">', (function (e, n) { n && n.tooltip && e.attr({ title: n.tooltip, "aria-label": n.tooltip }).tooltip({ container: n.container || t.container, trigger: "hover", placement: "bottom" }).on("click", (function (t) { i()(t.currentTarget).tooltip("hide") })) }))(e, n) }, toggleBtn: function (t, e) { t.toggleClass("disabled", !e), t.attr("disabled", !e) }, toggleBtnActive: function (t, e) { t.toggleClass("active", e) }, onDialogShown: function (t, e) { t.one("shown.bs.modal", e) }, onDialogHidden: function (t, e) { t.one("hidden.bs.modal", e) }, showDialog: function (t) { t.modal("show") }, hideDialog: function (t) { t.modal("hide") }, createLayout: function (e) { var n = (t.airMode ? f([c([u(), p()])]) : "bottom" === t.toolbarPosition ? s([c([u(), d()]), l(), h()]) : s([l(), c([u(), d()]), h()])).render(); return n.insertAfter(e), { note: e, editor: n, toolbar: n.find(".note-toolbar"), editingArea: n.find(".note-editing-area"), editable: n.find(".note-editable"), codable: n.find(".note-codable"), statusbar: n.find(".note-statusbar") } }, removeLayout: function (t, e) { t.html(e.editable.html()), e.editor.remove(), t.show() } } }; n(3), n(5); i.a.summernote = i.a.extend(i.a.summernote, { ui_template: x, interface: "bs4" }), i.a.summernote.options.styleTags = ["p", { title: "Blockquote", tag: "blockquote", className: "blockquote", value: "blockquote" }, "pre", "h1", "h2", "h3", "h4", "h5", "h6"] } }) }));
//# sourceMappingURL=summernote-bs4.min.js.map
//! moment.js
//! version : 2.18.1
//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
//! license : MIT
//! momentjs.com
!function (a, b) { "object" == typeof exports && "undefined" != typeof module ? module.exports = b() : "function" == typeof define && define.amd ? define(b) : a.moment = b() }(this, function () {
"use strict"; function a() { return sd.apply(null, arguments) } function b(a) { sd = a } function c(a) { return a instanceof Array || "[object Array]" === Object.prototype.toString.call(a) } function d(a) { return null != a && "[object Object]" === Object.prototype.toString.call(a) } function e(a) { var b; for (b in a) return !1; return !0 } function f(a) { return void 0 === a } function g(a) { return "number" == typeof a || "[object Number]" === Object.prototype.toString.call(a) } function h(a) { return a instanceof Date || "[object Date]" === Object.prototype.toString.call(a) } function i(a, b) { var c, d = []; for (c = 0; c < a.length; ++c)d.push(b(a[c], c)); return d } function j(a, b) { return Object.prototype.hasOwnProperty.call(a, b) } function k(a, b) { for (var c in b) j(b, c) && (a[c] = b[c]); return j(b, "toString") && (a.toString = b.toString), j(b, "valueOf") && (a.valueOf = b.valueOf), a } function l(a, b, c, d) { return sb(a, b, c, d, !0).utc() } function m() { return { empty: !1, unusedTokens: [], unusedInput: [], overflow: -2, charsLeftOver: 0, nullInput: !1, invalidMonth: null, invalidFormat: !1, userInvalidated: !1, iso: !1, parsedDateParts: [], meridiem: null, rfc2822: !1, weekdayMismatch: !1 } } function n(a) { return null == a._pf && (a._pf = m()), a._pf } function o(a) { if (null == a._isValid) { var b = n(a), c = ud.call(b.parsedDateParts, function (a) { return null != a }), d = !isNaN(a._d.getTime()) && b.overflow < 0 && !b.empty && !b.invalidMonth && !b.invalidWeekday && !b.nullInput && !b.invalidFormat && !b.userInvalidated && (!b.meridiem || b.meridiem && c); if (a._strict && (d = d && 0 === b.charsLeftOver && 0 === b.unusedTokens.length && void 0 === b.bigHour), null != Object.isFrozen && Object.isFrozen(a)) return d; a._isValid = d } return a._isValid } function p(a) { var b = l(NaN); return null != a ? k(n(b), a) : n(b).userInvalidated = !0, b } function q(a, b) { var c, d, e; if (f(b._isAMomentObject) || (a._isAMomentObject = b._isAMomentObject), f(b._i) || (a._i = b._i), f(b._f) || (a._f = b._f), f(b._l) || (a._l = b._l), f(b._strict) || (a._strict = b._strict), f(b._tzm) || (a._tzm = b._tzm), f(b._isUTC) || (a._isUTC = b._isUTC), f(b._offset) || (a._offset = b._offset), f(b._pf) || (a._pf = n(b)), f(b._locale) || (a._locale = b._locale), vd.length > 0) for (c = 0; c < vd.length; c++)d = vd[c], e = b[d], f(e) || (a[d] = e); return a } function r(b) { q(this, b), this._d = new Date(null != b._d ? b._d.getTime() : NaN), this.isValid() || (this._d = new Date(NaN)), wd === !1 && (wd = !0, a.updateOffset(this), wd = !1) } function s(a) { return a instanceof r || null != a && null != a._isAMomentObject } function t(a) { return a < 0 ? Math.ceil(a) || 0 : Math.floor(a) } function u(a) { var b = +a, c = 0; return 0 !== b && isFinite(b) && (c = t(b)), c } function v(a, b, c) { var d, e = Math.min(a.length, b.length), f = Math.abs(a.length - b.length), g = 0; for (d = 0; d < e; d++)(c && a[d] !== b[d] || !c && u(a[d]) !== u(b[d])) && g++; return g + f } function w(b) { a.suppressDeprecationWarnings === !1 && "undefined" != typeof console && console.warn && console.warn("Deprecation warning: " + b) } function x(b, c) { var d = !0; return k(function () { if (null != a.deprecationHandler && a.deprecationHandler(null, b), d) { for (var e, f = [], g = 0; g < arguments.length; g++) { if (e = "", "object" == typeof arguments[g]) { e += "\n[" + g + "] "; for (var h in arguments[0]) e += h + ": " + arguments[0][h] + ", "; e = e.slice(0, -2) } else e = arguments[g]; f.push(e) } w(b + "\nArguments: " + Array.prototype.slice.call(f).join("") + "\n" + (new Error).stack), d = !1 } return c.apply(this, arguments) }, c) } function y(b, c) { null != a.deprecationHandler && a.deprecationHandler(b, c), xd[b] || (w(c), xd[b] = !0) } function z(a) { return a instanceof Function || "[object Function]" === Object.prototype.toString.call(a) } function A(a) { var b, c; for (c in a) b = a[c], z(b) ? this[c] = b : this["_" + c] = b; this._config = a, this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + "|" + /\d{1,2}/.source) } function B(a, b) { var c, e = k({}, a); for (c in b) j(b, c) && (d(a[c]) && d(b[c]) ? (e[c] = {}, k(e[c], a[c]), k(e[c], b[c])) : null != b[c] ? e[c] = b[c] : delete e[c]); for (c in a) j(a, c) && !j(b, c) && d(a[c]) && (e[c] = k({}, e[c])); return e } function C(a) { null != a && this.set(a) } function D(a, b, c) { var d = this._calendar[a] || this._calendar.sameElse; return z(d) ? d.call(b, c) : d } function E(a) { var b = this._longDateFormat[a], c = this._longDateFormat[a.toUpperCase()]; return b || !c ? b : (this._longDateFormat[a] = c.replace(/MMMM|MM|DD|dddd/g, function (a) { return a.slice(1) }), this._longDateFormat[a]) } function F() { return this._invalidDate } function G(a) { return this._ordinal.replace("%d", a) } function H(a, b, c, d) { var e = this._relativeTime[c]; return z(e) ? e(a, b, c, d) : e.replace(/%d/i, a) } function I(a, b) { var c = this._relativeTime[a > 0 ? "future" : "past"]; return z(c) ? c(b) : c.replace(/%s/i, b) } function J(a, b) { var c = a.toLowerCase(); Hd[c] = Hd[c + "s"] = Hd[b] = a } function K(a) { return "string" == typeof a ? Hd[a] || Hd[a.toLowerCase()] : void 0 } function L(a) { var b, c, d = {}; for (c in a) j(a, c) && (b = K(c), b && (d[b] = a[c])); return d } function M(a, b) { Id[a] = b } function N(a) { var b = []; for (var c in a) b.push({ unit: c, priority: Id[c] }); return b.sort(function (a, b) { return a.priority - b.priority }), b } function O(b, c) { return function (d) { return null != d ? (Q(this, b, d), a.updateOffset(this, c), this) : P(this, b) } } function P(a, b) { return a.isValid() ? a._d["get" + (a._isUTC ? "UTC" : "") + b]() : NaN } function Q(a, b, c) { a.isValid() && a._d["set" + (a._isUTC ? "UTC" : "") + b](c) } function R(a) { return a = K(a), z(this[a]) ? this[a]() : this } function S(a, b) { if ("object" == typeof a) { a = L(a); for (var c = N(a), d = 0; d < c.length; d++)this[c[d].unit](a[c[d].unit]) } else if (a = K(a), z(this[a])) return this[a](b); return this } function T(a, b, c) { var d = "" + Math.abs(a), e = b - d.length, f = a >= 0; return (f ? c ? "+" : "" : "-") + Math.pow(10, Math.max(0, e)).toString().substr(1) + d } function U(a, b, c, d) { var e = d; "string" == typeof d && (e = function () { return this[d]() }), a && (Md[a] = e), b && (Md[b[0]] = function () { return T(e.apply(this, arguments), b[1], b[2]) }), c && (Md[c] = function () { return this.localeData().ordinal(e.apply(this, arguments), a) }) } function V(a) { return a.match(/\[[\s\S]/) ? a.replace(/^\[|\]$/g, "") : a.replace(/\\/g, "") } function W(a) { var b, c, d = a.match(Jd); for (b = 0, c = d.length; b < c; b++)Md[d[b]] ? d[b] = Md[d[b]] : d[b] = V(d[b]); return function (b) { var e, f = ""; for (e = 0; e < c; e++)f += z(d[e]) ? d[e].call(b, a) : d[e]; return f } } function X(a, b) { return a.isValid() ? (b = Y(b, a.localeData()), Ld[b] = Ld[b] || W(b), Ld[b](a)) : a.localeData().invalidDate() } function Y(a, b) { function c(a) { return b.longDateFormat(a) || a } var d = 5; for (Kd.lastIndex = 0; d >= 0 && Kd.test(a);)a = a.replace(Kd, c), Kd.lastIndex = 0, d -= 1; return a } function Z(a, b, c) { ce[a] = z(b) ? b : function (a, d) { return a && c ? c : b } } function $(a, b) { return j(ce, a) ? ce[a](b._strict, b._locale) : new RegExp(_(a)) } function _(a) { return aa(a.replace("\\", "").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (a, b, c, d, e) { return b || c || d || e })) } function aa(a) { return a.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&") } function ba(a, b) { var c, d = b; for ("string" == typeof a && (a = [a]), g(b) && (d = function (a, c) { c[b] = u(a) }), c = 0; c < a.length; c++)de[a[c]] = d } function ca(a, b) { ba(a, function (a, c, d, e) { d._w = d._w || {}, b(a, d._w, d, e) }) } function da(a, b, c) { null != b && j(de, a) && de[a](b, c._a, c, a) } function ea(a, b) { return new Date(Date.UTC(a, b + 1, 0)).getUTCDate() } function fa(a, b) { return a ? c(this._months) ? this._months[a.month()] : this._months[(this._months.isFormat || oe).test(b) ? "format" : "standalone"][a.month()] : c(this._months) ? this._months : this._months.standalone } function ga(a, b) { return a ? c(this._monthsShort) ? this._monthsShort[a.month()] : this._monthsShort[oe.test(b) ? "format" : "standalone"][a.month()] : c(this._monthsShort) ? this._monthsShort : this._monthsShort.standalone } function ha(a, b, c) { var d, e, f, g = a.toLocaleLowerCase(); if (!this._monthsParse) for (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = [], d = 0; d < 12; ++d)f = l([2e3, d]), this._shortMonthsParse[d] = this.monthsShort(f, "").toLocaleLowerCase(), this._longMonthsParse[d] = this.months(f, "").toLocaleLowerCase(); return c ? "MMM" === b ? (e = ne.call(this._shortMonthsParse, g), e !== -1 ? e : null) : (e = ne.call(this._longMonthsParse, g), e !== -1 ? e : null) : "MMM" === b ? (e = ne.call(this._shortMonthsParse, g), e !== -1 ? e : (e = ne.call(this._longMonthsParse, g), e !== -1 ? e : null)) : (e = ne.call(this._longMonthsParse, g), e !== -1 ? e : (e = ne.call(this._shortMonthsParse, g), e !== -1 ? e : null)) } function ia(a, b, c) { var d, e, f; if (this._monthsParseExact) return ha.call(this, a, b, c); for (this._monthsParse || (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = []), d = 0; d < 12; d++) { if (e = l([2e3, d]), c && !this._longMonthsParse[d] && (this._longMonthsParse[d] = new RegExp("^" + this.months(e, "").replace(".", "") + "$", "i"), this._shortMonthsParse[d] = new RegExp("^" + this.monthsShort(e, "").replace(".", "") + "$", "i")), c || this._monthsParse[d] || (f = "^" + this.months(e, "") + "|^" + this.monthsShort(e, ""), this._monthsParse[d] = new RegExp(f.replace(".", ""), "i")), c && "MMMM" === b && this._longMonthsParse[d].test(a)) return d; if (c && "MMM" === b && this._shortMonthsParse[d].test(a)) return d; if (!c && this._monthsParse[d].test(a)) return d } } function ja(a, b) { var c; if (!a.isValid()) return a; if ("string" == typeof b) if (/^\d+$/.test(b)) b = u(b); else if (b = a.localeData().monthsParse(b), !g(b)) return a; return c = Math.min(a.date(), ea(a.year(), b)), a._d["set" + (a._isUTC ? "UTC" : "") + "Month"](b, c), a } function ka(b) { return null != b ? (ja(this, b), a.updateOffset(this, !0), this) : P(this, "Month") } function la() { return ea(this.year(), this.month()) } function ma(a) { return this._monthsParseExact ? (j(this, "_monthsRegex") || oa.call(this), a ? this._monthsShortStrictRegex : this._monthsShortRegex) : (j(this, "_monthsShortRegex") || (this._monthsShortRegex = re), this._monthsShortStrictRegex && a ? this._monthsShortStrictRegex : this._monthsShortRegex) } function na(a) { return this._monthsParseExact ? (j(this, "_monthsRegex") || oa.call(this), a ? this._monthsStrictRegex : this._monthsRegex) : (j(this, "_monthsRegex") || (this._monthsRegex = se), this._monthsStrictRegex && a ? this._monthsStrictRegex : this._monthsRegex) } function oa() { function a(a, b) { return b.length - a.length } var b, c, d = [], e = [], f = []; for (b = 0; b < 12; b++)c = l([2e3, b]), d.push(this.monthsShort(c, "")), e.push(this.months(c, "")), f.push(this.months(c, "")), f.push(this.monthsShort(c, "")); for (d.sort(a), e.sort(a), f.sort(a), b = 0; b < 12; b++)d[b] = aa(d[b]), e[b] = aa(e[b]); for (b = 0; b < 24; b++)f[b] = aa(f[b]); this._monthsRegex = new RegExp("^(" + f.join("|") + ")", "i"), this._monthsShortRegex = this._monthsRegex, this._monthsStrictRegex = new RegExp("^(" + e.join("|") + ")", "i"), this._monthsShortStrictRegex = new RegExp("^(" + d.join("|") + ")", "i") } function pa(a) { return qa(a) ? 366 : 365 } function qa(a) { return a % 4 === 0 && a % 100 !== 0 || a % 400 === 0 } function ra() { return qa(this.year()) } function sa(a, b, c, d, e, f, g) { var h = new Date(a, b, c, d, e, f, g); return a < 100 && a >= 0 && isFinite(h.getFullYear()) && h.setFullYear(a), h } function ta(a) { var b = new Date(Date.UTC.apply(null, arguments)); return a < 100 && a >= 0 && isFinite(b.getUTCFullYear()) && b.setUTCFullYear(a), b } function ua(a, b, c) { var d = 7 + b - c, e = (7 + ta(a, 0, d).getUTCDay() - b) % 7; return -e + d - 1 } function va(a, b, c, d, e) { var f, g, h = (7 + c - d) % 7, i = ua(a, d, e), j = 1 + 7 * (b - 1) + h + i; return j <= 0 ? (f = a - 1, g = pa(f) + j) : j > pa(a) ? (f = a + 1, g = j - pa(a)) : (f = a, g = j), { year: f, dayOfYear: g } } function wa(a, b, c) { var d, e, f = ua(a.year(), b, c), g = Math.floor((a.dayOfYear() - f - 1) / 7) + 1; return g < 1 ? (e = a.year() - 1, d = g + xa(e, b, c)) : g > xa(a.year(), b, c) ? (d = g - xa(a.year(), b, c), e = a.year() + 1) : (e = a.year(), d = g), { week: d, year: e } } function xa(a, b, c) { var d = ua(a, b, c), e = ua(a + 1, b, c); return (pa(a) - d + e) / 7 } function ya(a) { return wa(a, this._week.dow, this._week.doy).week } function za() { return this._week.dow } function Aa() { return this._week.doy } function Ba(a) { var b = this.localeData().week(this); return null == a ? b : this.add(7 * (a - b), "d") } function Ca(a) { var b = wa(this, 1, 4).week; return null == a ? b : this.add(7 * (a - b), "d") } function Da(a, b) { return "string" != typeof a ? a : isNaN(a) ? (a = b.weekdaysParse(a), "number" == typeof a ? a : null) : parseInt(a, 10) } function Ea(a, b) { return "string" == typeof a ? b.weekdaysParse(a) % 7 || 7 : isNaN(a) ? null : a } function Fa(a, b) { return a ? c(this._weekdays) ? this._weekdays[a.day()] : this._weekdays[this._weekdays.isFormat.test(b) ? "format" : "standalone"][a.day()] : c(this._weekdays) ? this._weekdays : this._weekdays.standalone } function Ga(a) { return a ? this._weekdaysShort[a.day()] : this._weekdaysShort } function Ha(a) { return a ? this._weekdaysMin[a.day()] : this._weekdaysMin } function Ia(a, b, c) { var d, e, f, g = a.toLocaleLowerCase(); if (!this._weekdaysParse) for (this._weekdaysParse = [], this._shortWeekdaysParse = [], this._minWeekdaysParse = [], d = 0; d < 7; ++d)f = l([2e3, 1]).day(d), this._minWeekdaysParse[d] = this.weekdaysMin(f, "").toLocaleLowerCase(), this._shortWeekdaysParse[d] = this.weekdaysShort(f, "").toLocaleLowerCase(), this._weekdaysParse[d] = this.weekdays(f, "").toLocaleLowerCase(); return c ? "dddd" === b ? (e = ne.call(this._weekdaysParse, g), e !== -1 ? e : null) : "ddd" === b ? (e = ne.call(this._shortWeekdaysParse, g), e !== -1 ? e : null) : (e = ne.call(this._minWeekdaysParse, g), e !== -1 ? e : null) : "dddd" === b ? (e = ne.call(this._weekdaysParse, g), e !== -1 ? e : (e = ne.call(this._shortWeekdaysParse, g), e !== -1 ? e : (e = ne.call(this._minWeekdaysParse, g), e !== -1 ? e : null))) : "ddd" === b ? (e = ne.call(this._shortWeekdaysParse, g), e !== -1 ? e : (e = ne.call(this._weekdaysParse, g), e !== -1 ? e : (e = ne.call(this._minWeekdaysParse, g), e !== -1 ? e : null))) : (e = ne.call(this._minWeekdaysParse, g), e !== -1 ? e : (e = ne.call(this._weekdaysParse, g), e !== -1 ? e : (e = ne.call(this._shortWeekdaysParse, g), e !== -1 ? e : null))) } function Ja(a, b, c) { var d, e, f; if (this._weekdaysParseExact) return Ia.call(this, a, b, c); for (this._weekdaysParse || (this._weekdaysParse = [], this._minWeekdaysParse = [], this._shortWeekdaysParse = [], this._fullWeekdaysParse = []), d = 0; d < 7; d++) { if (e = l([2e3, 1]).day(d), c && !this._fullWeekdaysParse[d] && (this._fullWeekdaysParse[d] = new RegExp("^" + this.weekdays(e, "").replace(".", ".?") + "$", "i"), this._shortWeekdaysParse[d] = new RegExp("^" + this.weekdaysShort(e, "").replace(".", ".?") + "$", "i"), this._minWeekdaysParse[d] = new RegExp("^" + this.weekdaysMin(e, "").replace(".", ".?") + "$", "i")), this._weekdaysParse[d] || (f = "^" + this.weekdays(e, "") + "|^" + this.weekdaysShort(e, "") + "|^" + this.weekdaysMin(e, ""), this._weekdaysParse[d] = new RegExp(f.replace(".", ""), "i")), c && "dddd" === b && this._fullWeekdaysParse[d].test(a)) return d; if (c && "ddd" === b && this._shortWeekdaysParse[d].test(a)) return d; if (c && "dd" === b && this._minWeekdaysParse[d].test(a)) return d; if (!c && this._weekdaysParse[d].test(a)) return d } } function Ka(a) { if (!this.isValid()) return null != a ? this : NaN; var b = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); return null != a ? (a = Da(a, this.localeData()), this.add(a - b, "d")) : b } function La(a) { if (!this.isValid()) return null != a ? this : NaN; var b = (this.day() + 7 - this.localeData()._week.dow) % 7; return null == a ? b : this.add(a - b, "d") } function Ma(a) { if (!this.isValid()) return null != a ? this : NaN; if (null != a) { var b = Ea(a, this.localeData()); return this.day(this.day() % 7 ? b : b - 7) } return this.day() || 7 } function Na(a) { return this._weekdaysParseExact ? (j(this, "_weekdaysRegex") || Qa.call(this), a ? this._weekdaysStrictRegex : this._weekdaysRegex) : (j(this, "_weekdaysRegex") || (this._weekdaysRegex = ye), this._weekdaysStrictRegex && a ? this._weekdaysStrictRegex : this._weekdaysRegex) } function Oa(a) { return this._weekdaysParseExact ? (j(this, "_weekdaysRegex") || Qa.call(this), a ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) : (j(this, "_weekdaysShortRegex") || (this._weekdaysShortRegex = ze), this._weekdaysShortStrictRegex && a ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) } function Pa(a) { return this._weekdaysParseExact ? (j(this, "_weekdaysRegex") || Qa.call(this), a ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) : (j(this, "_weekdaysMinRegex") || (this._weekdaysMinRegex = Ae), this._weekdaysMinStrictRegex && a ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) } function Qa() { function a(a, b) { return b.length - a.length } var b, c, d, e, f, g = [], h = [], i = [], j = []; for (b = 0; b < 7; b++)c = l([2e3, 1]).day(b), d = this.weekdaysMin(c, ""), e = this.weekdaysShort(c, ""), f = this.weekdays(c, ""), g.push(d), h.push(e), i.push(f), j.push(d), j.push(e), j.push(f); for (g.sort(a), h.sort(a), i.sort(a), j.sort(a), b = 0; b < 7; b++)h[b] = aa(h[b]), i[b] = aa(i[b]), j[b] = aa(j[b]); this._weekdaysRegex = new RegExp("^(" + j.join("|") + ")", "i"), this._weekdaysShortRegex = this._weekdaysRegex, this._weekdaysMinRegex = this._weekdaysRegex, this._weekdaysStrictRegex = new RegExp("^(" + i.join("|") + ")", "i"), this._weekdaysShortStrictRegex = new RegExp("^(" + h.join("|") + ")", "i"), this._weekdaysMinStrictRegex = new RegExp("^(" + g.join("|") + ")", "i") } function Ra() { return this.hours() % 12 || 12 } function Sa() { return this.hours() || 24 } function Ta(a, b) { U(a, 0, 0, function () { return this.localeData().meridiem(this.hours(), this.minutes(), b) }) } function Ua(a, b) { return b._meridiemParse } function Va(a) { return "p" === (a + "").toLowerCase().charAt(0) } function Wa(a, b, c) { return a > 11 ? c ? "pm" : "PM" : c ? "am" : "AM" } function Xa(a) { return a ? a.toLowerCase().replace("_", "-") : a } function Ya(a) { for (var b, c, d, e, f = 0; f < a.length;) { for (e = Xa(a[f]).split("-"), b = e.length, c = Xa(a[f + 1]), c = c ? c.split("-") : null; b > 0;) { if (d = Za(e.slice(0, b).join("-"))) return d; if (c && c.length >= b && v(e, c, !0) >= b - 1) break; b-- } f++ } return null } function Za(a) { var b = null; if (!Fe[a] && "undefined" != typeof module && module && module.exports) try { b = Be._abbr, require("./locale/" + a), $a(b) } catch (a) { } return Fe[a] } function $a(a, b) { var c; return a && (c = f(b) ? bb(a) : _a(a, b), c && (Be = c)), Be._abbr } function _a(a, b) { if (null !== b) { var c = Ee; if (b.abbr = a, null != Fe[a]) y("defineLocaleOverride", "use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."), c = Fe[a]._config; else if (null != b.parentLocale) { if (null == Fe[b.parentLocale]) return Ge[b.parentLocale] || (Ge[b.parentLocale] = []), Ge[b.parentLocale].push({ name: a, config: b }), null; c = Fe[b.parentLocale]._config } return Fe[a] = new C(B(c, b)), Ge[a] && Ge[a].forEach(function (a) { _a(a.name, a.config) }), $a(a), Fe[a] } return delete Fe[a], null } function ab(a, b) { if (null != b) { var c, d = Ee; null != Fe[a] && (d = Fe[a]._config), b = B(d, b), c = new C(b), c.parentLocale = Fe[a], Fe[a] = c, $a(a) } else null != Fe[a] && (null != Fe[a].parentLocale ? Fe[a] = Fe[a].parentLocale : null != Fe[a] && delete Fe[a]); return Fe[a] } function bb(a) { var b; if (a && a._locale && a._locale._abbr && (a = a._locale._abbr), !a) return Be; if (!c(a)) { if (b = Za(a)) return b; a = [a] } return Ya(a) } function cb() { return Ad(Fe) } function db(a) { var b, c = a._a; return c && n(a).overflow === -2 && (b = c[fe] < 0 || c[fe] > 11 ? fe : c[ge] < 1 || c[ge] > ea(c[ee], c[fe]) ? ge : c[he] < 0 || c[he] > 24 || 24 === c[he] && (0 !== c[ie] || 0 !== c[je] || 0 !== c[ke]) ? he : c[ie] < 0 || c[ie] > 59 ? ie : c[je] < 0 || c[je] > 59 ? je : c[ke] < 0 || c[ke] > 999 ? ke : -1, n(a)._overflowDayOfYear && (b < ee || b > ge) && (b = ge), n(a)._overflowWeeks && b === -1 && (b = le), n(a)._overflowWeekday && b === -1 && (b = me), n(a).overflow = b), a } function eb(a) { var b, c, d, e, f, g, h = a._i, i = He.exec(h) || Ie.exec(h); if (i) { for (n(a).iso = !0, b = 0, c = Ke.length; b < c; b++)if (Ke[b][1].exec(i[1])) { e = Ke[b][0], d = Ke[b][2] !== !1; break } if (null == e) return void (a._isValid = !1); if (i[3]) { for (b = 0, c = Le.length; b < c; b++)if (Le[b][1].exec(i[3])) { f = (i[2] || " ") + Le[b][0]; break } if (null == f) return void (a._isValid = !1) } if (!d && null != f) return void (a._isValid = !1); if (i[4]) { if (!Je.exec(i[4])) return void (a._isValid = !1); g = "Z" } a._f = e + (f || "") + (g || ""), lb(a) } else a._isValid = !1 } function fb(a) { var b, c, d, e, f, g, h, i, j = { " GMT": " +0000", " EDT": " -0400", " EST": " -0500", " CDT": " -0500", " CST": " -0600", " MDT": " -0600", " MST": " -0700", " PDT": " -0700", " PST": " -0800" }, k = "YXWVUTSRQPONZABCDEFGHIKLM"; if (b = a._i.replace(/\([^\)]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").replace(/^\s|\s$/g, ""), c = Ne.exec(b)) { if (d = c[1] ? "ddd" + (5 === c[1].length ? ", " : " ") : "", e = "D MMM " + (c[2].length > 10 ? "YYYY " : "YY "), f = "HH:mm" + (c[4] ? ":ss" : ""), c[1]) { var l = new Date(c[2]), m = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"][l.getDay()]; if (c[1].substr(0, 3) !== m) return n(a).weekdayMismatch = !0, void (a._isValid = !1) } switch (c[5].length) { case 2: 0 === i ? h = " +0000" : (i = k.indexOf(c[5][1].toUpperCase()) - 12, h = (i < 0 ? " -" : " +") + ("" + i).replace(/^-?/, "0").match(/..$/)[0] + "00"); break; case 4: h = j[c[5]]; break; default: h = j[" GMT"] }c[5] = h, a._i = c.splice(1).join(""), g = " ZZ", a._f = d + e + f + g, lb(a), n(a).rfc2822 = !0 } else a._isValid = !1 } function gb(b) { var c = Me.exec(b._i); return null !== c ? void (b._d = new Date(+c[1])) : (eb(b), void (b._isValid === !1 && (delete b._isValid, fb(b), b._isValid === !1 && (delete b._isValid, a.createFromInputFallback(b))))) } function hb(a, b, c) { return null != a ? a : null != b ? b : c } function ib(b) { var c = new Date(a.now()); return b._useUTC ? [c.getUTCFullYear(), c.getUTCMonth(), c.getUTCDate()] : [c.getFullYear(), c.getMonth(), c.getDate()] } function jb(a) { var b, c, d, e, f = []; if (!a._d) { for (d = ib(a), a._w && null == a._a[ge] && null == a._a[fe] && kb(a), null != a._dayOfYear && (e = hb(a._a[ee], d[ee]), (a._dayOfYear > pa(e) || 0 === a._dayOfYear) && (n(a)._overflowDayOfYear = !0), c = ta(e, 0, a._dayOfYear), a._a[fe] = c.getUTCMonth(), a._a[ge] = c.getUTCDate()), b = 0; b < 3 && null == a._a[b]; ++b)a._a[b] = f[b] = d[b]; for (; b < 7; b++)a._a[b] = f[b] = null == a._a[b] ? 2 === b ? 1 : 0 : a._a[b]; 24 === a._a[he] && 0 === a._a[ie] && 0 === a._a[je] && 0 === a._a[ke] && (a._nextDay = !0, a._a[he] = 0), a._d = (a._useUTC ? ta : sa).apply(null, f), null != a._tzm && a._d.setUTCMinutes(a._d.getUTCMinutes() - a._tzm), a._nextDay && (a._a[he] = 24) } } function kb(a) { var b, c, d, e, f, g, h, i; if (b = a._w, null != b.GG || null != b.W || null != b.E) f = 1, g = 4, c = hb(b.GG, a._a[ee], wa(tb(), 1, 4).year), d = hb(b.W, 1), e = hb(b.E, 1), (e < 1 || e > 7) && (i = !0); else { f = a._locale._week.dow, g = a._locale._week.doy; var j = wa(tb(), f, g); c = hb(b.gg, a._a[ee], j.year), d = hb(b.w, j.week), null != b.d ? (e = b.d, (e < 0 || e > 6) && (i = !0)) : null != b.e ? (e = b.e + f, (b.e < 0 || b.e > 6) && (i = !0)) : e = f } d < 1 || d > xa(c, f, g) ? n(a)._overflowWeeks = !0 : null != i ? n(a)._overflowWeekday = !0 : (h = va(c, d, e, f, g), a._a[ee] = h.year, a._dayOfYear = h.dayOfYear) } function lb(b) { if (b._f === a.ISO_8601) return void eb(b); if (b._f === a.RFC_2822) return void fb(b); b._a = [], n(b).empty = !0; var c, d, e, f, g, h = "" + b._i, i = h.length, j = 0; for (e = Y(b._f, b._locale).match(Jd) || [], c = 0; c < e.length; c++)f = e[c], d = (h.match($(f, b)) || [])[0], d && (g = h.substr(0, h.indexOf(d)), g.length > 0 && n(b).unusedInput.push(g), h = h.slice(h.indexOf(d) + d.length), j += d.length), Md[f] ? (d ? n(b).empty = !1 : n(b).unusedTokens.push(f), da(f, d, b)) : b._strict && !d && n(b).unusedTokens.push(f); n(b).charsLeftOver = i - j, h.length > 0 && n(b).unusedInput.push(h), b._a[he] <= 12 && n(b).bigHour === !0 && b._a[he] > 0 && (n(b).bigHour = void 0), n(b).parsedDateParts = b._a.slice(0), n(b).meridiem = b._meridiem, b._a[he] = mb(b._locale, b._a[he], b._meridiem), jb(b), db(b) } function mb(a, b, c) { var d; return null == c ? b : null != a.meridiemHour ? a.meridiemHour(b, c) : null != a.isPM ? (d = a.isPM(c), d && b < 12 && (b += 12), d || 12 !== b || (b = 0), b) : b } function nb(a) { var b, c, d, e, f; if (0 === a._f.length) return n(a).invalidFormat = !0, void (a._d = new Date(NaN)); for (e = 0; e < a._f.length; e++)f = 0, b = q({}, a), null != a._useUTC && (b._useUTC = a._useUTC), b._f = a._f[e], lb(b), o(b) && (f += n(b).charsLeftOver, f += 10 * n(b).unusedTokens.length, n(b).score = f, (null == d || f < d) && (d = f, c = b)); k(a, c || b) } function ob(a) { if (!a._d) { var b = L(a._i); a._a = i([b.year, b.month, b.day || b.date, b.hour, b.minute, b.second, b.millisecond], function (a) { return a && parseInt(a, 10) }), jb(a) } } function pb(a) { var b = new r(db(qb(a))); return b._nextDay && (b.add(1, "d"), b._nextDay = void 0), b } function qb(a) { var b = a._i, d = a._f; return a._locale = a._locale || bb(a._l), null === b || void 0 === d && "" === b ? p({ nullInput: !0 }) : ("string" == typeof b && (a._i = b = a._locale.preparse(b)), s(b) ? new r(db(b)) : (h(b) ? a._d = b : c(d) ? nb(a) : d ? lb(a) : rb(a), o(a) || (a._d = null), a)) } function rb(b) { var e = b._i; f(e) ? b._d = new Date(a.now()) : h(e) ? b._d = new Date(e.valueOf()) : "string" == typeof e ? gb(b) : c(e) ? (b._a = i(e.slice(0), function (a) { return parseInt(a, 10) }), jb(b)) : d(e) ? ob(b) : g(e) ? b._d = new Date(e) : a.createFromInputFallback(b) } function sb(a, b, f, g, h) { var i = {}; return f !== !0 && f !== !1 || (g = f, f = void 0), (d(a) && e(a) || c(a) && 0 === a.length) && (a = void 0), i._isAMomentObject = !0, i._useUTC = i._isUTC = h, i._l = f, i._i = a, i._f = b, i._strict = g, pb(i) } function tb(a, b, c, d) { return sb(a, b, c, d, !1) } function ub(a, b) { var d, e; if (1 === b.length && c(b[0]) && (b = b[0]), !b.length) return tb(); for (d = b[0], e = 1; e < b.length; ++e)b[e].isValid() && !b[e][a](d) || (d = b[e]); return d } function vb() { var a = [].slice.call(arguments, 0); return ub("isBefore", a) } function wb() { var a = [].slice.call(arguments, 0); return ub("isAfter", a) } function xb(a) { for (var b in a) if (Re.indexOf(b) === -1 || null != a[b] && isNaN(a[b])) return !1; for (var c = !1, d = 0; d < Re.length; ++d)if (a[Re[d]]) { if (c) return !1; parseFloat(a[Re[d]]) !== u(a[Re[d]]) && (c = !0) } return !0 } function yb() { return this._isValid } function zb() { return Sb(NaN) } function Ab(a) { var b = L(a), c = b.year || 0, d = b.quarter || 0, e = b.month || 0, f = b.week || 0, g = b.day || 0, h = b.hour || 0, i = b.minute || 0, j = b.second || 0, k = b.millisecond || 0; this._isValid = xb(b), this._milliseconds = +k + 1e3 * j + 6e4 * i + 1e3 * h * 60 * 60, this._days = +g + 7 * f, this._months = +e + 3 * d + 12 * c, this._data = {}, this._locale = bb(), this._bubble() } function Bb(a) { return a instanceof Ab } function Cb(a) { return a < 0 ? Math.round(-1 * a) * -1 : Math.round(a) } function Db(a, b) { U(a, 0, 0, function () { var a = this.utcOffset(), c = "+"; return a < 0 && (a = -a, c = "-"), c + T(~~(a / 60), 2) + b + T(~~a % 60, 2) }) } function Eb(a, b) { var c = (b || "").match(a); if (null === c) return null; var d = c[c.length - 1] || [], e = (d + "").match(Se) || ["-", 0, 0], f = +(60 * e[1]) + u(e[2]); return 0 === f ? 0 : "+" === e[0] ? f : -f } function Fb(b, c) { var d, e; return c._isUTC ? (d = c.clone(), e = (s(b) || h(b) ? b.valueOf() : tb(b).valueOf()) - d.valueOf(), d._d.setTime(d._d.valueOf() + e), a.updateOffset(d, !1), d) : tb(b).local() } function Gb(a) { return 15 * -Math.round(a._d.getTimezoneOffset() / 15) } function Hb(b, c, d) { var e, f = this._offset || 0; if (!this.isValid()) return null != b ? this : NaN; if (null != b) { if ("string" == typeof b) { if (b = Eb(_d, b), null === b) return this } else Math.abs(b) < 16 && !d && (b = 60 * b); return !this._isUTC && c && (e = Gb(this)), this._offset = b, this._isUTC = !0, null != e && this.add(e, "m"), f !== b && (!c || this._changeInProgress ? Xb(this, Sb(b - f, "m"), 1, !1) : this._changeInProgress || (this._changeInProgress = !0, a.updateOffset(this, !0), this._changeInProgress = null)), this } return this._isUTC ? f : Gb(this) } function Ib(a, b) { return null != a ? ("string" != typeof a && (a = -a), this.utcOffset(a, b), this) : -this.utcOffset() } function Jb(a) { return this.utcOffset(0, a) } function Kb(a) { return this._isUTC && (this.utcOffset(0, a), this._isUTC = !1, a && this.subtract(Gb(this), "m")), this } function Lb() { if (null != this._tzm) this.utcOffset(this._tzm, !1, !0); else if ("string" == typeof this._i) { var a = Eb($d, this._i); null != a ? this.utcOffset(a) : this.utcOffset(0, !0) } return this } function Mb(a) { return !!this.isValid() && (a = a ? tb(a).utcOffset() : 0, (this.utcOffset() - a) % 60 === 0) } function Nb() { return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset() } function Ob() { if (!f(this._isDSTShifted)) return this._isDSTShifted; var a = {}; if (q(a, this), a = qb(a), a._a) { var b = a._isUTC ? l(a._a) : tb(a._a); this._isDSTShifted = this.isValid() && v(a._a, b.toArray()) > 0 } else this._isDSTShifted = !1; return this._isDSTShifted } function Pb() { return !!this.isValid() && !this._isUTC } function Qb() { return !!this.isValid() && this._isUTC } function Rb() { return !!this.isValid() && (this._isUTC && 0 === this._offset) } function Sb(a, b) { var c, d, e, f = a, h = null; return Bb(a) ? f = { ms: a._milliseconds, d: a._days, M: a._months } : g(a) ? (f = {}, b ? f[b] = a : f.milliseconds = a) : (h = Te.exec(a)) ? (c = "-" === h[1] ? -1 : 1, f = { y: 0, d: u(h[ge]) * c, h: u(h[he]) * c, m: u(h[ie]) * c, s: u(h[je]) * c, ms: u(Cb(1e3 * h[ke])) * c }) : (h = Ue.exec(a)) ? (c = "-" === h[1] ? -1 : 1, f = { y: Tb(h[2], c), M: Tb(h[3], c), w: Tb(h[4], c), d: Tb(h[5], c), h: Tb(h[6], c), m: Tb(h[7], c), s: Tb(h[8], c) }) : null == f ? f = {} : "object" == typeof f && ("from" in f || "to" in f) && (e = Vb(tb(f.from), tb(f.to)), f = {}, f.ms = e.milliseconds, f.M = e.months), d = new Ab(f), Bb(a) && j(a, "_locale") && (d._locale = a._locale), d } function Tb(a, b) { var c = a && parseFloat(a.replace(",", ".")); return (isNaN(c) ? 0 : c) * b } function Ub(a, b) { var c = { milliseconds: 0, months: 0 }; return c.months = b.month() - a.month() + 12 * (b.year() - a.year()), a.clone().add(c.months, "M").isAfter(b) && --c.months, c.milliseconds = +b - +a.clone().add(c.months, "M"), c } function Vb(a, b) { var c; return a.isValid() && b.isValid() ? (b = Fb(b, a), a.isBefore(b) ? c = Ub(a, b) : (c = Ub(b, a), c.milliseconds = -c.milliseconds, c.months = -c.months), c) : { milliseconds: 0, months: 0 } } function Wb(a, b) { return function (c, d) { var e, f; return null === d || isNaN(+d) || (y(b, "moment()." + b + "(period, number) is deprecated. Please use moment()." + b + "(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."), f = c, c = d, d = f), c = "string" == typeof c ? +c : c, e = Sb(c, d), Xb(this, e, a), this } } function Xb(b, c, d, e) { var f = c._milliseconds, g = Cb(c._days), h = Cb(c._months); b.isValid() && (e = null == e || e, f && b._d.setTime(b._d.valueOf() + f * d), g && Q(b, "Date", P(b, "Date") + g * d), h && ja(b, P(b, "Month") + h * d), e && a.updateOffset(b, g || h)) } function Yb(a, b) { var c = a.diff(b, "days", !0); return c < -6 ? "sameElse" : c < -1 ? "lastWeek" : c < 0 ? "lastDay" : c < 1 ? "sameDay" : c < 2 ? "nextDay" : c < 7 ? "nextWeek" : "sameElse" } function Zb(b, c) { var d = b || tb(), e = Fb(d, this).startOf("day"), f = a.calendarFormat(this, e) || "sameElse", g = c && (z(c[f]) ? c[f].call(this, d) : c[f]); return this.format(g || this.localeData().calendar(f, this, tb(d))) } function $b() { return new r(this) } function _b(a, b) { var c = s(a) ? a : tb(a); return !(!this.isValid() || !c.isValid()) && (b = K(f(b) ? "millisecond" : b), "millisecond" === b ? this.valueOf() > c.valueOf() : c.valueOf() < this.clone().startOf(b).valueOf()) } function ac(a, b) { var c = s(a) ? a : tb(a); return !(!this.isValid() || !c.isValid()) && (b = K(f(b) ? "millisecond" : b), "millisecond" === b ? this.valueOf() < c.valueOf() : this.clone().endOf(b).valueOf() < c.valueOf()) } function bc(a, b, c, d) { return d = d || "()", ("(" === d[0] ? this.isAfter(a, c) : !this.isBefore(a, c)) && (")" === d[1] ? this.isBefore(b, c) : !this.isAfter(b, c)) } function cc(a, b) { var c, d = s(a) ? a : tb(a); return !(!this.isValid() || !d.isValid()) && (b = K(b || "millisecond"), "millisecond" === b ? this.valueOf() === d.valueOf() : (c = d.valueOf(), this.clone().startOf(b).valueOf() <= c && c <= this.clone().endOf(b).valueOf())) } function dc(a, b) { return this.isSame(a, b) || this.isAfter(a, b) } function ec(a, b) { return this.isSame(a, b) || this.isBefore(a, b) } function fc(a, b, c) { var d, e, f, g; return this.isValid() ? (d = Fb(a, this), d.isValid() ? (e = 6e4 * (d.utcOffset() - this.utcOffset()), b = K(b), "year" === b || "month" === b || "quarter" === b ? (g = gc(this, d), "quarter" === b ? g /= 3 : "year" === b && (g /= 12)) : (f = this - d, g = "second" === b ? f / 1e3 : "minute" === b ? f / 6e4 : "hour" === b ? f / 36e5 : "day" === b ? (f - e) / 864e5 : "week" === b ? (f - e) / 6048e5 : f), c ? g : t(g)) : NaN) : NaN } function gc(a, b) { var c, d, e = 12 * (b.year() - a.year()) + (b.month() - a.month()), f = a.clone().add(e, "months"); return b - f < 0 ? (c = a.clone().add(e - 1, "months"), d = (b - f) / (f - c)) : (c = a.clone().add(e + 1, "months"), d = (b - f) / (c - f)), -(e + d) || 0 } function hc() { return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ") } function ic() { if (!this.isValid()) return null; var a = this.clone().utc(); return a.year() < 0 || a.year() > 9999 ? X(a, "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]") : z(Date.prototype.toISOString) ? this.toDate().toISOString() : X(a, "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]") } function jc() { if (!this.isValid()) return "moment.invalid(/* " + this._i + " */)"; var a = "moment", b = ""; this.isLocal() || (a = 0 === this.utcOffset() ? "moment.utc" : "moment.parseZone", b = "Z"); var c = "[" + a + '("]', d = 0 <= this.year() && this.year() <= 9999 ? "YYYY" : "YYYYYY", e = "-MM-DD[T]HH:mm:ss.SSS", f = b + '[")]'; return this.format(c + d + e + f) } function kc(b) { b || (b = this.isUtc() ? a.defaultFormatUtc : a.defaultFormat); var c = X(this, b); return this.localeData().postformat(c) } function lc(a, b) { return this.isValid() && (s(a) && a.isValid() || tb(a).isValid()) ? Sb({ to: this, from: a }).locale(this.locale()).humanize(!b) : this.localeData().invalidDate() } function mc(a) { return this.from(tb(), a) } function nc(a, b) { return this.isValid() && (s(a) && a.isValid() || tb(a).isValid()) ? Sb({ from: this, to: a }).locale(this.locale()).humanize(!b) : this.localeData().invalidDate() } function oc(a) { return this.to(tb(), a) } function pc(a) { var b; return void 0 === a ? this._locale._abbr : (b = bb(a), null != b && (this._locale = b), this) } function qc() { return this._locale } function rc(a) { switch (a = K(a)) { case "year": this.month(0); case "quarter": case "month": this.date(1); case "week": case "isoWeek": case "day": case "date": this.hours(0); case "hour": this.minutes(0); case "minute": this.seconds(0); case "second": this.milliseconds(0) }return "week" === a && this.weekday(0), "isoWeek" === a && this.isoWeekday(1), "quarter" === a && this.month(3 * Math.floor(this.month() / 3)), this } function sc(a) { return a = K(a), void 0 === a || "millisecond" === a ? this : ("date" === a && (a = "day"), this.startOf(a).add(1, "isoWeek" === a ? "week" : a).subtract(1, "ms")) } function tc() { return this._d.valueOf() - 6e4 * (this._offset || 0) } function uc() { return Math.floor(this.valueOf() / 1e3) } function vc() { return new Date(this.valueOf()) } function wc() { var a = this; return [a.year(), a.month(), a.date(), a.hour(), a.minute(), a.second(), a.millisecond()] } function xc() { var a = this; return { years: a.year(), months: a.month(), date: a.date(), hours: a.hours(), minutes: a.minutes(), seconds: a.seconds(), milliseconds: a.milliseconds() } } function yc() { return this.isValid() ? this.toISOString() : null } function zc() { return o(this) } function Ac() {
return k({}, n(this))
} function Bc() { return n(this).overflow } function Cc() { return { input: this._i, format: this._f, locale: this._locale, isUTC: this._isUTC, strict: this._strict } } function Dc(a, b) { U(0, [a, a.length], 0, b) } function Ec(a) { return Ic.call(this, a, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy) } function Fc(a) { return Ic.call(this, a, this.isoWeek(), this.isoWeekday(), 1, 4) } function Gc() { return xa(this.year(), 1, 4) } function Hc() { var a = this.localeData()._week; return xa(this.year(), a.dow, a.doy) } function Ic(a, b, c, d, e) { var f; return null == a ? wa(this, d, e).year : (f = xa(a, d, e), b > f && (b = f), Jc.call(this, a, b, c, d, e)) } function Jc(a, b, c, d, e) { var f = va(a, b, c, d, e), g = ta(f.year, 0, f.dayOfYear); return this.year(g.getUTCFullYear()), this.month(g.getUTCMonth()), this.date(g.getUTCDate()), this } function Kc(a) { return null == a ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (a - 1) + this.month() % 3) } function Lc(a) { var b = Math.round((this.clone().startOf("day") - this.clone().startOf("year")) / 864e5) + 1; return null == a ? b : this.add(a - b, "d") } function Mc(a, b) { b[ke] = u(1e3 * ("0." + a)) } function Nc() { return this._isUTC ? "UTC" : "" } function Oc() { return this._isUTC ? "Coordinated Universal Time" : "" } function Pc(a) { return tb(1e3 * a) } function Qc() { return tb.apply(null, arguments).parseZone() } function Rc(a) { return a } function Sc(a, b, c, d) { var e = bb(), f = l().set(d, b); return e[c](f, a) } function Tc(a, b, c) { if (g(a) && (b = a, a = void 0), a = a || "", null != b) return Sc(a, b, c, "month"); var d, e = []; for (d = 0; d < 12; d++)e[d] = Sc(a, d, c, "month"); return e } function Uc(a, b, c, d) { "boolean" == typeof a ? (g(b) && (c = b, b = void 0), b = b || "") : (b = a, c = b, a = !1, g(b) && (c = b, b = void 0), b = b || ""); var e = bb(), f = a ? e._week.dow : 0; if (null != c) return Sc(b, (c + f) % 7, d, "day"); var h, i = []; for (h = 0; h < 7; h++)i[h] = Sc(b, (h + f) % 7, d, "day"); return i } function Vc(a, b) { return Tc(a, b, "months") } function Wc(a, b) { return Tc(a, b, "monthsShort") } function Xc(a, b, c) { return Uc(a, b, c, "weekdays") } function Yc(a, b, c) { return Uc(a, b, c, "weekdaysShort") } function Zc(a, b, c) { return Uc(a, b, c, "weekdaysMin") } function $c() { var a = this._data; return this._milliseconds = df(this._milliseconds), this._days = df(this._days), this._months = df(this._months), a.milliseconds = df(a.milliseconds), a.seconds = df(a.seconds), a.minutes = df(a.minutes), a.hours = df(a.hours), a.months = df(a.months), a.years = df(a.years), this } function _c(a, b, c, d) { var e = Sb(b, c); return a._milliseconds += d * e._milliseconds, a._days += d * e._days, a._months += d * e._months, a._bubble() } function ad(a, b) { return _c(this, a, b, 1) } function bd(a, b) { return _c(this, a, b, -1) } function cd(a) { return a < 0 ? Math.floor(a) : Math.ceil(a) } function dd() { var a, b, c, d, e, f = this._milliseconds, g = this._days, h = this._months, i = this._data; return f >= 0 && g >= 0 && h >= 0 || f <= 0 && g <= 0 && h <= 0 || (f += 864e5 * cd(fd(h) + g), g = 0, h = 0), i.milliseconds = f % 1e3, a = t(f / 1e3), i.seconds = a % 60, b = t(a / 60), i.minutes = b % 60, c = t(b / 60), i.hours = c % 24, g += t(c / 24), e = t(ed(g)), h += e, g -= cd(fd(e)), d = t(h / 12), h %= 12, i.days = g, i.months = h, i.years = d, this } function ed(a) { return 4800 * a / 146097 } function fd(a) { return 146097 * a / 4800 } function gd(a) { if (!this.isValid()) return NaN; var b, c, d = this._milliseconds; if (a = K(a), "month" === a || "year" === a) return b = this._days + d / 864e5, c = this._months + ed(b), "month" === a ? c : c / 12; switch (b = this._days + Math.round(fd(this._months)), a) { case "week": return b / 7 + d / 6048e5; case "day": return b + d / 864e5; case "hour": return 24 * b + d / 36e5; case "minute": return 1440 * b + d / 6e4; case "second": return 86400 * b + d / 1e3; case "millisecond": return Math.floor(864e5 * b) + d; default: throw new Error("Unknown unit " + a) } } function hd() { return this.isValid() ? this._milliseconds + 864e5 * this._days + this._months % 12 * 2592e6 + 31536e6 * u(this._months / 12) : NaN } function id(a) { return function () { return this.as(a) } } function jd(a) { return a = K(a), this.isValid() ? this[a + "s"]() : NaN } function kd(a) { return function () { return this.isValid() ? this._data[a] : NaN } } function ld() { return t(this.days() / 7) } function md(a, b, c, d, e) { return e.relativeTime(b || 1, !!c, a, d) } function nd(a, b, c) { var d = Sb(a).abs(), e = uf(d.as("s")), f = uf(d.as("m")), g = uf(d.as("h")), h = uf(d.as("d")), i = uf(d.as("M")), j = uf(d.as("y")), k = e <= vf.ss && ["s", e] || e < vf.s && ["ss", e] || f <= 1 && ["m"] || f < vf.m && ["mm", f] || g <= 1 && ["h"] || g < vf.h && ["hh", g] || h <= 1 && ["d"] || h < vf.d && ["dd", h] || i <= 1 && ["M"] || i < vf.M && ["MM", i] || j <= 1 && ["y"] || ["yy", j]; return k[2] = b, k[3] = +a > 0, k[4] = c, md.apply(null, k) } function od(a) { return void 0 === a ? uf : "function" == typeof a && (uf = a, !0) } function pd(a, b) { return void 0 !== vf[a] && (void 0 === b ? vf[a] : (vf[a] = b, "s" === a && (vf.ss = b - 1), !0)) } function qd(a) { if (!this.isValid()) return this.localeData().invalidDate(); var b = this.localeData(), c = nd(this, !a, b); return a && (c = b.pastFuture(+this, c)), b.postformat(c) } function rd() { if (!this.isValid()) return this.localeData().invalidDate(); var a, b, c, d = wf(this._milliseconds) / 1e3, e = wf(this._days), f = wf(this._months); a = t(d / 60), b = t(a / 60), d %= 60, a %= 60, c = t(f / 12), f %= 12; var g = c, h = f, i = e, j = b, k = a, l = d, m = this.asSeconds(); return m ? (m < 0 ? "-" : "") + "P" + (g ? g + "Y" : "") + (h ? h + "M" : "") + (i ? i + "D" : "") + (j || k || l ? "T" : "") + (j ? j + "H" : "") + (k ? k + "M" : "") + (l ? l + "S" : "") : "P0D" } var sd, td; td = Array.prototype.some ? Array.prototype.some : function (a) { for (var b = Object(this), c = b.length >>> 0, d = 0; d < c; d++)if (d in b && a.call(this, b[d], d, b)) return !0; return !1 }; var ud = td, vd = a.momentProperties = [], wd = !1, xd = {}; a.suppressDeprecationWarnings = !1, a.deprecationHandler = null; var yd; yd = Object.keys ? Object.keys : function (a) { var b, c = []; for (b in a) j(a, b) && c.push(b); return c }; var zd, Ad = yd, Bd = { sameDay: "[Today at] LT", nextDay: "[Tomorrow at] LT", nextWeek: "dddd [at] LT", lastDay: "[Yesterday at] LT", lastWeek: "[Last] dddd [at] LT", sameElse: "L" }, Cd = { LTS: "h:mm:ss A", LT: "h:mm A", L: "MM/DD/YYYY", LL: "MMMM D, YYYY", LLL: "MMMM D, YYYY h:mm A", LLLL: "dddd, MMMM D, YYYY h:mm A" }, Dd = "Invalid date", Ed = "%d", Fd = /\d{1,2}/, Gd = { future: "in %s", past: "%s ago", s: "a few seconds", ss: "%d seconds", m: "a minute", mm: "%d minutes", h: "an hour", hh: "%d hours", d: "a day", dd: "%d days", M: "a month", MM: "%d months", y: "a year", yy: "%d years" }, Hd = {}, Id = {}, Jd = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g, Kd = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, Ld = {}, Md = {}, Nd = /\d/, Od = /\d\d/, Pd = /\d{3}/, Qd = /\d{4}/, Rd = /[+-]?\d{6}/, Sd = /\d\d?/, Td = /\d\d\d\d?/, Ud = /\d\d\d\d\d\d?/, Vd = /\d{1,3}/, Wd = /\d{1,4}/, Xd = /[+-]?\d{1,6}/, Yd = /\d+/, Zd = /[+-]?\d+/, $d = /Z|[+-]\d\d:?\d\d/gi, _d = /Z|[+-]\d\d(?::?\d\d)?/gi, ae = /[+-]?\d+(\.\d{1,3})?/, be = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, ce = {}, de = {}, ee = 0, fe = 1, ge = 2, he = 3, ie = 4, je = 5, ke = 6, le = 7, me = 8; zd = Array.prototype.indexOf ? Array.prototype.indexOf : function (a) { var b; for (b = 0; b < this.length; ++b)if (this[b] === a) return b; return -1 }; var ne = zd; U("M", ["MM", 2], "Mo", function () { return this.month() + 1 }), U("MMM", 0, 0, function (a) { return this.localeData().monthsShort(this, a) }), U("MMMM", 0, 0, function (a) { return this.localeData().months(this, a) }), J("month", "M"), M("month", 8), Z("M", Sd), Z("MM", Sd, Od), Z("MMM", function (a, b) { return b.monthsShortRegex(a) }), Z("MMMM", function (a, b) { return b.monthsRegex(a) }), ba(["M", "MM"], function (a, b) { b[fe] = u(a) - 1 }), ba(["MMM", "MMMM"], function (a, b, c, d) { var e = c._locale.monthsParse(a, d, c._strict); null != e ? b[fe] = e : n(c).invalidMonth = a }); var oe = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/, pe = "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), qe = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), re = be, se = be; U("Y", 0, 0, function () { var a = this.year(); return a <= 9999 ? "" + a : "+" + a }), U(0, ["YY", 2], 0, function () { return this.year() % 100 }), U(0, ["YYYY", 4], 0, "year"), U(0, ["YYYYY", 5], 0, "year"), U(0, ["YYYYYY", 6, !0], 0, "year"), J("year", "y"), M("year", 1), Z("Y", Zd), Z("YY", Sd, Od), Z("YYYY", Wd, Qd), Z("YYYYY", Xd, Rd), Z("YYYYYY", Xd, Rd), ba(["YYYYY", "YYYYYY"], ee), ba("YYYY", function (b, c) { c[ee] = 2 === b.length ? a.parseTwoDigitYear(b) : u(b) }), ba("YY", function (b, c) { c[ee] = a.parseTwoDigitYear(b) }), ba("Y", function (a, b) { b[ee] = parseInt(a, 10) }), a.parseTwoDigitYear = function (a) { return u(a) + (u(a) > 68 ? 1900 : 2e3) }; var te = O("FullYear", !0); U("w", ["ww", 2], "wo", "week"), U("W", ["WW", 2], "Wo", "isoWeek"), J("week", "w"), J("isoWeek", "W"), M("week", 5), M("isoWeek", 5), Z("w", Sd), Z("ww", Sd, Od), Z("W", Sd), Z("WW", Sd, Od), ca(["w", "ww", "W", "WW"], function (a, b, c, d) { b[d.substr(0, 1)] = u(a) }); var ue = { dow: 0, doy: 6 }; U("d", 0, "do", "day"), U("dd", 0, 0, function (a) { return this.localeData().weekdaysMin(this, a) }), U("ddd", 0, 0, function (a) { return this.localeData().weekdaysShort(this, a) }), U("dddd", 0, 0, function (a) { return this.localeData().weekdays(this, a) }), U("e", 0, 0, "weekday"), U("E", 0, 0, "isoWeekday"), J("day", "d"), J("weekday", "e"), J("isoWeekday", "E"), M("day", 11), M("weekday", 11), M("isoWeekday", 11), Z("d", Sd), Z("e", Sd), Z("E", Sd), Z("dd", function (a, b) { return b.weekdaysMinRegex(a) }), Z("ddd", function (a, b) { return b.weekdaysShortRegex(a) }), Z("dddd", function (a, b) { return b.weekdaysRegex(a) }), ca(["dd", "ddd", "dddd"], function (a, b, c, d) { var e = c._locale.weekdaysParse(a, d, c._strict); null != e ? b.d = e : n(c).invalidWeekday = a }), ca(["d", "e", "E"], function (a, b, c, d) { b[d] = u(a) }); var ve = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), we = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), xe = "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), ye = be, ze = be, Ae = be; U("H", ["HH", 2], 0, "hour"), U("h", ["hh", 2], 0, Ra), U("k", ["kk", 2], 0, Sa), U("hmm", 0, 0, function () { return "" + Ra.apply(this) + T(this.minutes(), 2) }), U("hmmss", 0, 0, function () { return "" + Ra.apply(this) + T(this.minutes(), 2) + T(this.seconds(), 2) }), U("Hmm", 0, 0, function () { return "" + this.hours() + T(this.minutes(), 2) }), U("Hmmss", 0, 0, function () { return "" + this.hours() + T(this.minutes(), 2) + T(this.seconds(), 2) }), Ta("a", !0), Ta("A", !1), J("hour", "h"), M("hour", 13), Z("a", Ua), Z("A", Ua), Z("H", Sd), Z("h", Sd), Z("k", Sd), Z("HH", Sd, Od), Z("hh", Sd, Od), Z("kk", Sd, Od), Z("hmm", Td), Z("hmmss", Ud), Z("Hmm", Td), Z("Hmmss", Ud), ba(["H", "HH"], he), ba(["k", "kk"], function (a, b, c) { var d = u(a); b[he] = 24 === d ? 0 : d }), ba(["a", "A"], function (a, b, c) { c._isPm = c._locale.isPM(a), c._meridiem = a }), ba(["h", "hh"], function (a, b, c) { b[he] = u(a), n(c).bigHour = !0 }), ba("hmm", function (a, b, c) { var d = a.length - 2; b[he] = u(a.substr(0, d)), b[ie] = u(a.substr(d)), n(c).bigHour = !0 }), ba("hmmss", function (a, b, c) { var d = a.length - 4, e = a.length - 2; b[he] = u(a.substr(0, d)), b[ie] = u(a.substr(d, 2)), b[je] = u(a.substr(e)), n(c).bigHour = !0 }), ba("Hmm", function (a, b, c) { var d = a.length - 2; b[he] = u(a.substr(0, d)), b[ie] = u(a.substr(d)) }), ba("Hmmss", function (a, b, c) { var d = a.length - 4, e = a.length - 2; b[he] = u(a.substr(0, d)), b[ie] = u(a.substr(d, 2)), b[je] = u(a.substr(e)) }); var Be, Ce = /[ap]\.?m?\.?/i, De = O("Hours", !0), Ee = { calendar: Bd, longDateFormat: Cd, invalidDate: Dd, ordinal: Ed, dayOfMonthOrdinalParse: Fd, relativeTime: Gd, months: pe, monthsShort: qe, week: ue, weekdays: ve, weekdaysMin: xe, weekdaysShort: we, meridiemParse: Ce }, Fe = {}, Ge = {}, He = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, Ie = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, Je = /Z|[+-]\d\d(?::?\d\d)?/, Ke = [["YYYYYY-MM-DD", /[+-]\d{6}-\d\d-\d\d/], ["YYYY-MM-DD", /\d{4}-\d\d-\d\d/], ["GGGG-[W]WW-E", /\d{4}-W\d\d-\d/], ["GGGG-[W]WW", /\d{4}-W\d\d/, !1], ["YYYY-DDD", /\d{4}-\d{3}/], ["YYYY-MM", /\d{4}-\d\d/, !1], ["YYYYYYMMDD", /[+-]\d{10}/], ["YYYYMMDD", /\d{8}/], ["GGGG[W]WWE", /\d{4}W\d{3}/], ["GGGG[W]WW", /\d{4}W\d{2}/, !1], ["YYYYDDD", /\d{7}/]], Le = [["HH:mm:ss.SSSS", /\d\d:\d\d:\d\d\.\d+/], ["HH:mm:ss,SSSS", /\d\d:\d\d:\d\d,\d+/], ["HH:mm:ss", /\d\d:\d\d:\d\d/], ["HH:mm", /\d\d:\d\d/], ["HHmmss.SSSS", /\d\d\d\d\d\d\.\d+/], ["HHmmss,SSSS", /\d\d\d\d\d\d,\d+/], ["HHmmss", /\d\d\d\d\d\d/], ["HHmm", /\d\d\d\d/], ["HH", /\d\d/]], Me = /^\/?Date\((\-?\d+)/i, Ne = /^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d?\d\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(?:\d\d)?\d\d\s)(\d\d:\d\d)(\:\d\d)?(\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\d{4}))$/; a.createFromInputFallback = x("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.", function (a) { a._d = new Date(a._i + (a._useUTC ? " UTC" : "")) }), a.ISO_8601 = function () { }, a.RFC_2822 = function () { }; var Oe = x("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/", function () { var a = tb.apply(null, arguments); return this.isValid() && a.isValid() ? a < this ? this : a : p() }), Pe = x("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/", function () { var a = tb.apply(null, arguments); return this.isValid() && a.isValid() ? a > this ? this : a : p() }), Qe = function () { return Date.now ? Date.now() : +new Date }, Re = ["year", "quarter", "month", "week", "day", "hour", "minute", "second", "millisecond"]; Db("Z", ":"), Db("ZZ", ""), Z("Z", _d), Z("ZZ", _d), ba(["Z", "ZZ"], function (a, b, c) { c._useUTC = !0, c._tzm = Eb(_d, a) }); var Se = /([\+\-]|\d\d)/gi; a.updateOffset = function () { }; var Te = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/, Ue = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/; Sb.fn = Ab.prototype, Sb.invalid = zb; var Ve = Wb(1, "add"), We = Wb(-1, "subtract"); a.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ", a.defaultFormatUtc = "YYYY-MM-DDTHH:mm:ss[Z]"; var Xe = x("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.", function (a) { return void 0 === a ? this.localeData() : this.locale(a) }); U(0, ["gg", 2], 0, function () { return this.weekYear() % 100 }), U(0, ["GG", 2], 0, function () { return this.isoWeekYear() % 100 }), Dc("gggg", "weekYear"), Dc("ggggg", "weekYear"), Dc("GGGG", "isoWeekYear"), Dc("GGGGG", "isoWeekYear"), J("weekYear", "gg"), J("isoWeekYear", "GG"), M("weekYear", 1), M("isoWeekYear", 1), Z("G", Zd), Z("g", Zd), Z("GG", Sd, Od), Z("gg", Sd, Od), Z("GGGG", Wd, Qd), Z("gggg", Wd, Qd), Z("GGGGG", Xd, Rd), Z("ggggg", Xd, Rd), ca(["gggg", "ggggg", "GGGG", "GGGGG"], function (a, b, c, d) { b[d.substr(0, 2)] = u(a) }), ca(["gg", "GG"], function (b, c, d, e) { c[e] = a.parseTwoDigitYear(b) }), U("Q", 0, "Qo", "quarter"), J("quarter", "Q"), M("quarter", 7), Z("Q", Nd), ba("Q", function (a, b) { b[fe] = 3 * (u(a) - 1) }), U("D", ["DD", 2], "Do", "date"), J("date", "D"), M("date", 9), Z("D", Sd), Z("DD", Sd, Od), Z("Do", function (a, b) { return a ? b._dayOfMonthOrdinalParse || b._ordinalParse : b._dayOfMonthOrdinalParseLenient }), ba(["D", "DD"], ge), ba("Do", function (a, b) { b[ge] = u(a.match(Sd)[0], 10) }); var Ye = O("Date", !0); U("DDD", ["DDDD", 3], "DDDo", "dayOfYear"), J("dayOfYear", "DDD"), M("dayOfYear", 4), Z("DDD", Vd), Z("DDDD", Pd), ba(["DDD", "DDDD"], function (a, b, c) { c._dayOfYear = u(a) }), U("m", ["mm", 2], 0, "minute"), J("minute", "m"), M("minute", 14), Z("m", Sd), Z("mm", Sd, Od), ba(["m", "mm"], ie); var Ze = O("Minutes", !1); U("s", ["ss", 2], 0, "second"), J("second", "s"), M("second", 15), Z("s", Sd), Z("ss", Sd, Od), ba(["s", "ss"], je); var $e = O("Seconds", !1); U("S", 0, 0, function () { return ~~(this.millisecond() / 100) }), U(0, ["SS", 2], 0, function () { return ~~(this.millisecond() / 10) }), U(0, ["SSS", 3], 0, "millisecond"), U(0, ["SSSS", 4], 0, function () { return 10 * this.millisecond() }), U(0, ["SSSSS", 5], 0, function () { return 100 * this.millisecond() }), U(0, ["SSSSSS", 6], 0, function () { return 1e3 * this.millisecond() }), U(0, ["SSSSSSS", 7], 0, function () { return 1e4 * this.millisecond() }), U(0, ["SSSSSSSS", 8], 0, function () { return 1e5 * this.millisecond() }), U(0, ["SSSSSSSSS", 9], 0, function () { return 1e6 * this.millisecond() }), J("millisecond", "ms"), M("millisecond", 16), Z("S", Vd, Nd), Z("SS", Vd, Od), Z("SSS", Vd, Pd); var _e; for (_e = "SSSS"; _e.length <= 9; _e += "S")Z(_e, Yd); for (_e = "S"; _e.length <= 9; _e += "S")ba(_e, Mc); var af = O("Milliseconds", !1); U("z", 0, 0, "zoneAbbr"), U("zz", 0, 0, "zoneName"); var bf = r.prototype; bf.add = Ve, bf.calendar = Zb, bf.clone = $b, bf.diff = fc, bf.endOf = sc, bf.format = kc, bf.from = lc, bf.fromNow = mc, bf.to = nc, bf.toNow = oc, bf.get = R, bf.invalidAt = Bc, bf.isAfter = _b, bf.isBefore = ac, bf.isBetween = bc, bf.isSame = cc, bf.isSameOrAfter = dc, bf.isSameOrBefore = ec, bf.isValid = zc, bf.lang = Xe, bf.locale = pc, bf.localeData = qc, bf.max = Pe, bf.min = Oe, bf.parsingFlags = Ac, bf.set = S, bf.startOf = rc, bf.subtract = We, bf.toArray = wc, bf.toObject = xc, bf.toDate = vc, bf.toISOString = ic, bf.inspect = jc, bf.toJSON = yc, bf.toString = hc, bf.unix = uc, bf.valueOf = tc, bf.creationData = Cc, bf.year = te, bf.isLeapYear = ra, bf.weekYear = Ec, bf.isoWeekYear = Fc, bf.quarter = bf.quarters = Kc, bf.month = ka, bf.daysInMonth = la, bf.week = bf.weeks = Ba, bf.isoWeek = bf.isoWeeks = Ca, bf.weeksInYear = Hc, bf.isoWeeksInYear = Gc, bf.date = Ye, bf.day = bf.days = Ka, bf.weekday = La, bf.isoWeekday = Ma, bf.dayOfYear = Lc, bf.hour = bf.hours = De, bf.minute = bf.minutes = Ze, bf.second = bf.seconds = $e, bf.millisecond = bf.milliseconds = af, bf.utcOffset = Hb, bf.utc = Jb, bf.local = Kb, bf.parseZone = Lb, bf.hasAlignedHourOffset = Mb, bf.isDST = Nb, bf.isLocal = Pb, bf.isUtcOffset = Qb, bf.isUtc = Rb, bf.isUTC = Rb, bf.zoneAbbr = Nc, bf.zoneName = Oc, bf.dates = x("dates accessor is deprecated. Use date instead.", Ye), bf.months = x("months accessor is deprecated. Use month instead", ka), bf.years = x("years accessor is deprecated. Use year instead", te), bf.zone = x("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/", Ib), bf.isDSTShifted = x("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information", Ob); var cf = C.prototype; cf.calendar = D, cf.longDateFormat = E, cf.invalidDate = F, cf.ordinal = G, cf.preparse = Rc, cf.postformat = Rc, cf.relativeTime = H, cf.pastFuture = I, cf.set = A, cf.months = fa, cf.monthsShort = ga, cf.monthsParse = ia, cf.monthsRegex = na, cf.monthsShortRegex = ma, cf.week = ya, cf.firstDayOfYear = Aa, cf.firstDayOfWeek = za, cf.weekdays = Fa, cf.weekdaysMin = Ha, cf.weekdaysShort = Ga, cf.weekdaysParse = Ja, cf.weekdaysRegex = Na, cf.weekdaysShortRegex = Oa, cf.weekdaysMinRegex = Pa, cf.isPM = Va, cf.meridiem = Wa, $a("en", { dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, ordinal: function (a) { var b = a % 10, c = 1 === u(a % 100 / 10) ? "th" : 1 === b ? "st" : 2 === b ? "nd" : 3 === b ? "rd" : "th"; return a + c } }), a.lang = x("moment.lang is deprecated. Use moment.locale instead.", $a), a.langData = x("moment.langData is deprecated. Use moment.localeData instead.", bb); var df = Math.abs, ef = id("ms"), ff = id("s"), gf = id("m"), hf = id("h"), jf = id("d"), kf = id("w"), lf = id("M"), mf = id("y"), nf = kd("milliseconds"), of = kd("seconds"), pf = kd("minutes"), qf = kd("hours"), rf = kd("days"), sf = kd("months"), tf = kd("years"), uf = Math.round, vf = { ss: 44, s: 45, m: 45, h: 22, d: 26, M: 11 }, wf = Math.abs, xf = Ab.prototype; return xf.isValid = yb, xf.abs = $c, xf.add = ad, xf.subtract = bd, xf.as = gd, xf.asMilliseconds = ef, xf.asSeconds = ff, xf.asMinutes = gf, xf.asHours = hf, xf.asDays = jf, xf.asWeeks = kf, xf.asMonths = lf, xf.asYears = mf, xf.valueOf = hd, xf._bubble = dd, xf.get = jd, xf.milliseconds = nf, xf.seconds = of, xf.minutes = pf, xf.hours = qf, xf.days = rf, xf.weeks = ld, xf.months = sf, xf.years = tf, xf.humanize = qd, xf.toISOString = rd, xf.toString = rd, xf.toJSON = rd, xf.locale = pc, xf.localeData = qc, xf.toIsoString = x("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)", rd), xf.lang = Xe, U("X", 0, 0, "unix"), U("x", 0, 0, "valueOf"), Z("x", Zd), Z("X", ae), ba("X", function (a, b, c) { c._d = new Date(1e3 * parseFloat(a, 10)) }), ba("x", function (a, b, c) { c._d = new Date(u(a)) }), a.version = "2.18.1", b(tb), a.fn = bf, a.min = vb, a.max = wb, a.now = Qe, a.utc = l, a.unix = Pc, a.months = Vc, a.isDate = h, a.locale = $a, a.invalid = p, a.duration = Sb, a.isMoment = s, a.weekdays = Xc, a.parseZone = Qc, a.localeData = bb, a.isDuration = Bb, a.monthsShort = Wc, a.weekdaysMin = Zc, a.defineLocale = _a, a.updateLocale = ab, a.locales = cb, a.weekdaysShort = Yc, a.normalizeUnits = K, a.relativeTimeRounding = od, a.relativeTimeThreshold = pd, a.calendarFormat = Yb, a.prototype = bf, a
});
/*
* International Telephone Input v16.1.0
* https://github.com/jackocnr/intl-tel-input.git
* Licensed under the MIT license
*/
!function (a) { "object" == typeof module && module.exports ? module.exports = a() : window.intlTelInput = a() }(function (a) {
"use strict"; return function () {
function b(a, b) { if (!(a instanceof b)) throw new TypeError("Cannot call a class as a function") } function c(a, b) { for (var c = 0; c < b.length; c++) { var d = b[c]; d.enumerable = d.enumerable || !1, d.configurable = !0, "value" in d && (d.writable = !0), Object.defineProperty(a, d.key, d) } } function d(a, b, d) { return b && c(a.prototype, b), d && c(a, d), a } for (var e = [["Afghanistan (‫افغانستان‬‎)", "af", "93"], ["Albania (Shqipëri)", "al", "355"], ["Algeria (‫الجزائر‬‎)", "dz", "213"], ["American Samoa", "as", "1", 5, ["684"]], ["Andorra", "ad", "376"], ["Angola", "ao", "244"], ["Anguilla", "ai", "1", 6, ["264"]], ["Antigua and Barbuda", "ag", "1", 7, ["268"]], ["Argentina", "ar", "54"], ["Armenia (Հայաստան)", "am", "374"], ["Aruba", "aw", "297"], ["Australia", "au", "61", 0], ["Austria (Österreich)", "at", "43"], ["Azerbaijan (Azərbaycan)", "az", "994"], ["Bahamas", "bs", "1", 8, ["242"]], ["Bahrain (‫البحرين‬‎)", "bh", "973"], ["Bangladesh (বাংলাদেশ)", "bd", "880"], ["Barbados", "bb", "1", 9, ["246"]], ["Belarus (Беларусь)", "by", "375"], ["Belgium (België)", "be", "32"], ["Belize", "bz", "501"], ["Benin (Bénin)", "bj", "229"], ["Bermuda", "bm", "1", 10, ["441"]], ["Bhutan (འབྲུག)", "bt", "975"], ["Bolivia", "bo", "591"], ["Bosnia and Herzegovina (Босна и Херцеговина)", "ba", "387"], ["Botswana", "bw", "267"], ["Brazil (Brasil)", "br", "55"], ["British Indian Ocean Territory", "io", "246"], ["British Virgin Islands", "vg", "1", 11, ["284"]], ["Brunei", "bn", "673"], ["Bulgaria (България)", "bg", "359"], ["Burkina Faso", "bf", "226"], ["Burundi (Uburundi)", "bi", "257"], ["Cambodia (កម្ពុជា)", "kh", "855"], ["Cameroon (Cameroun)", "cm", "237"], ["Canada", "ca", "1", 1, ["204", "226", "236", "249", "250", "289", "306", "343", "365", "387", "403", "416", "418", "431", "437", "438", "450", "506", "514", "519", "548", "579", "581", "587", "604", "613", "639", "647", "672", "705", "709", "742", "778", "780", "782", "807", "819", "825", "867", "873", "902", "905"]], ["Cape Verde (Kabu Verdi)", "cv", "238"], ["Caribbean Netherlands", "bq", "599", 1, ["3", "4", "7"]], ["Cayman Islands", "ky", "1", 12, ["345"]], ["Central African Republic (République centrafricaine)", "cf", "236"], ["Chad (Tchad)", "td", "235"], ["Chile", "cl", "56"], ["China (中国)", "cn", "86"], ["Christmas Island", "cx", "61", 2], ["Cocos (Keeling) Islands", "cc", "61", 1], ["Colombia", "co", "57"], ["Comoros (‫جزر القمر‬‎)", "km", "269"], ["Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)", "cd", "243"], ["Congo (Republic) (Congo-Brazzaville)", "cg", "242"], ["Cook Islands", "ck", "682"], ["Costa Rica", "cr", "506"], ["Côte dIvoire", "ci", "225"], ["Croatia (Hrvatska)", "hr", "385"], ["Cuba", "cu", "53"], ["Curaçao", "cw", "599", 0], ["Cyprus (Κύπρος)", "cy", "357"], ["Czech Republic (Česká republika)", "cz", "420"], ["Denmark (Danmark)", "dk", "45"], ["Djibouti", "dj", "253"], ["Dominica", "dm", "1", 13, ["767"]], ["Dominican Republic (República Dominicana)", "do", "1", 2, ["809", "829", "849"]], ["Ecuador", "ec", "593"], ["Egypt (‫مصر‬‎)", "eg", "20"], ["El Salvador", "sv", "503"], ["Equatorial Guinea (Guinea Ecuatorial)", "gq", "240"], ["Eritrea", "er", "291"], ["Estonia (Eesti)", "ee", "372"], ["Ethiopia", "et", "251"], ["Falkland Islands (Islas Malvinas)", "fk", "500"], ["Faroe Islands (Føroyar)", "fo", "298"], ["Fiji", "fj", "679"], ["Finland (Suomi)", "fi", "358", 0], ["France", "fr", "33"], ["French Guiana (Guyane française)", "gf", "594"], ["French Polynesia (Polynésie française)", "pf", "689"], ["Gabon", "ga", "241"], ["Gambia", "gm", "220"], ["Georgia (საქართველო)", "ge", "995"], ["Germany (Deutschland)", "de", "49"], ["Ghana (Gaana)", "gh", "233"], ["Gibraltar", "gi", "350"], ["Greece (Ελλάδα)", "gr", "30"], ["Greenland (Kalaallit Nunaat)", "gl", "299"], ["Grenada", "gd", "1", 14, ["473"]], ["Guadeloupe", "gp", "590", 0], ["Guam", "gu", "1", 15, ["671"]], ["Guatemala", "gt", "502"], ["Guernsey", "gg", "44", 1, ["1481", "7781", "7839", "7911"]], ["Guinea (Guinée)", "gn", "224"], ["Guinea-Bissau (Guiné Bissau)", "gw", "245"], ["Guyana", "gy", "592"], ["Haiti", "ht", "509"], ["Honduras", "hn", "504"], ["Hong Kong (香港)", "hk", "852"], ["Hungary (Magyarország)", "hu", "36"], ["Iceland (Ísland)", "is", "354"], ["India (भारत)", "in", "91"], ["Indonesia", "id", "62"], ["Iran (‫ایران‬‎)", "ir", "98"], ["Iraq (‫العراق‬‎)", "iq", "964"], ["Ireland", "ie", "353"], ["Isle of Man", "im", "44", 2, ["1624", "74576", "7524", "7924", "7624"]], ["Israel (‫ישראל‬‎)", "il", "972"], ["Italy (Italia)", "it", "39", 0], ["Jamaica", "jm", "1", 4, ["876", "658"]], ["Japan (日本)", "jp", "81"], ["Jersey", "je", "44", 3, ["1534", "7509", "7700", "7797", "7829", "7937"]], ["Jordan (‫الأردن‬‎)", "jo", "962"], ["Kazakhstan (Казахстан)", "kz", "7", 1, ["33", "7"]], ["Kenya", "ke", "254"], ["Kiribati", "ki", "686"], ["Kosovo", "xk", "383"], ["Kuwait (‫الكويت‬‎)", "kw", "965"], ["Kyrgyzstan (Кыргызстан)", "kg", "996"], ["Laos (ລາວ)", "la", "856"], ["Latvia (Latvija)", "lv", "371"], ["Lebanon (‫لبنان‬‎)", "lb", "961"], ["Lesotho", "ls", "266"], ["Liberia", "lr", "231"], ["Libya (‫ليبيا‬‎)", "ly", "218"], ["Liechtenstein", "li", "423"], ["Lithuania (Lietuva)", "lt", "370"], ["Luxembourg", "lu", "352"], ["Macau (澳門)", "mo", "853"], ["Macedonia (FYROM) (Македонија)", "mk", "389"], ["Madagascar (Madagasikara)", "mg", "261"], ["Malawi", "mw", "265"], ["Malaysia", "my", "60"], ["Maldives", "mv", "960"], ["Mali", "ml", "223"], ["Malta", "mt", "356"], ["Marshall Islands", "mh", "692"], ["Martinique", "mq", "596"], ["Mauritania (‫موريتانيا‬‎)", "mr", "222"], ["Mauritius (Moris)", "mu", "230"], ["Mayotte", "yt", "262", 1, ["269", "639"]], ["Mexico (México)", "mx", "52"], ["Micronesia", "fm", "691"], ["Moldova (Republica Moldova)", "md", "373"], ["Monaco", "mc", "377"], ["Mongolia (Монгол)", "mn", "976"], ["Montenegro (Crna Gora)", "me", "382"], ["Montserrat", "ms", "1", 16, ["664"]], ["Morocco (‫المغرب‬‎)", "ma", "212", 0], ["Mozambique (Moçambique)", "mz", "258"], ["Myanmar (Burma) (မြန်မာ)", "mm", "95"], ["Namibia (Namibië)", "na", "264"], ["Nauru", "nr", "674"], ["Nepal (नेपाल)", "np", "977"], ["Netherlands (Nederland)", "nl", "31"], ["New Caledonia (Nouvelle-Calédonie)", "nc", "687"], ["New Zealand", "nz", "64"], ["Nicaragua", "ni", "505"], ["Niger (Nijar)", "ne", "227"], ["Nigeria", "ng", "234"], ["Niue", "nu", "683"], ["Norfolk Island", "nf", "672"], ["North Korea (조선 민주주의 인민 공화국)", "kp", "850"], ["Northern Mariana Islands", "mp", "1", 17, ["670"]], ["Norway (Norge)", "no", "47", 0], ["Oman (‫عُمان‬‎)", "om", "968"], ["Pakistan (‫پاکستان‬‎)", "pk", "92"], ["Palau", "pw", "680"], ["Palestine (‫فلسطين‬‎)", "ps", "970"], ["Panama (Panamá)", "pa", "507"], ["Papua New Guinea", "pg", "675"], ["Paraguay", "py", "595"], ["Peru (Perú)", "pe", "51"], ["Philippines", "ph", "63"], ["Poland (Polska)", "pl", "48"], ["Portugal", "pt", "351"], ["Puerto Rico", "pr", "1", 3, ["787", "939"]], ["Qatar (‫قطر‬‎)", "qa", "974"], ["Réunion (La Réunion)", "re", "262", 0], ["Romania (România)", "ro", "40"], ["Russia (Россия)", "ru", "7", 0], ["Rwanda", "rw", "250"], ["Saint Barthélemy", "bl", "590", 1], ["Saint Helena", "sh", "290"], ["Saint Kitts and Nevis", "kn", "1", 18, ["869"]], ["Saint Lucia", "lc", "1", 19, ["758"]], ["Saint Martin (Saint-Martin (partie française))", "mf", "590", 2], ["Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)", "pm", "508"], ["Saint Vincent and the Grenadines", "vc", "1", 20, ["784"]], ["Samoa", "ws", "685"], ["San Marino", "sm", "378"], ["São Tomé and Príncipe (São Tomé e Príncipe)", "st", "239"], ["Saudi Arabia (‫المملكة العربية السعودية‬‎)", "sa", "966"], ["Senegal (Sénégal)", "sn", "221"], ["Serbia (Србија)", "rs", "381"], ["Seychelles", "sc", "248"], ["Sierra Leone", "sl", "232"], ["Singapore", "sg", "65"], ["Sint Maarten", "sx", "1", 21, ["721"]], ["Slovakia (Slovensko)", "sk", "421"], ["Slovenia (Slovenija)", "si", "386"], ["Solomon Islands", "sb", "677"], ["Somalia (Soomaaliya)", "so", "252"], ["South Africa", "za", "27"], ["South Korea (대한민국)", "kr", "82"], ["South Sudan (‫جنوب السودان‬‎)", "ss", "211"], ["Spain (España)", "es", "34"], ["Sri Lanka (ශ්‍රී ලංකාව)", "lk", "94"], ["Sudan (‫السودان‬‎)", "sd", "249"], ["Suriname", "sr", "597"], ["Svalbard and Jan Mayen", "sj", "47", 1, ["79"]], ["Swaziland", "sz", "268"], ["Sweden (Sverige)", "se", "46"], ["Switzerland (Schweiz)", "ch", "41"], ["Syria (‫سوريا‬‎)", "sy", "963"], ["Taiwan (台灣)", "tw", "886"], ["Tajikistan", "tj", "992"], ["Tanzania", "tz", "255"], ["Thailand (ไทย)", "th", "66"], ["Timor-Leste", "tl", "670"], ["Togo", "tg", "228"], ["Tokelau", "tk", "690"], ["Tonga", "to", "676"], ["Trinidad and Tobago", "tt", "1", 22, ["868"]], ["Tunisia (‫تونس‬‎)", "tn", "216"], ["Turkey (Türkiye)", "tr", "90"], ["Turkmenistan", "tm", "993"], ["Turks and Caicos Islands", "tc", "1", 23, ["649"]], ["Tuvalu", "tv", "688"], ["U.S. Virgin Islands", "vi", "1", 24, ["340"]], ["Uganda", "ug", "256"], ["Ukraine (Україна)", "ua", "380"], ["United Arab Emirates (‫الإمارات العربية المتحدة‬‎)", "ae", "971"], ["United Kingdom", "gb", "44", 0], ["United States", "us", "1", 0], ["Uruguay", "uy", "598"], ["Uzbekistan (Oʻzbekiston)", "uz", "998"], ["Vanuatu", "vu", "678"], ["Vatican City (Città del Vaticano)", "va", "39", 1, ["06698"]], ["Venezuela", "ve", "58"], ["Vietnam (Việt Nam)", "vn", "84"], ["Wallis and Futuna (Wallis-et-Futuna)", "wf", "681"], ["Western Sahara (‫الصحراء الغربية‬‎)", "eh", "212", 1, ["5288", "5289"]], ["Yemen (‫اليمن‬‎)", "ye", "967"], ["Zambia", "zm", "260"], ["Zimbabwe", "zw", "263"], ["Åland Islands", "ax", "358", 1, ["18"]]], f = 0; f < e.length; f++) { var g = e[f]; e[f] = { name: g[0], iso2: g[1], dialCode: g[2], priority: g[3] || 0, areaCodes: g[4] || null } } var h = { getInstance: function (a) { var b = a.getAttribute("data-intl-tel-input-id"); return window.intlTelInputGlobals.instances[b] }, instances: {} }; "object" == typeof window && (window.intlTelInputGlobals = h); var i = 0, j = { allowDropdown: !0, autoHideDialCode: !0, autoPlaceholder: "polite", customContainer: "", customPlaceholder: null, dropdownContainer: null, excludeCountries: [], formatOnDisplay: !0, geoIpLookup: null, hiddenInput: "", initialCountry: "", localizedCountries: null, nationalMode: !0, onlyCountries: [], placeholderNumberType: "MOBILE", preferredCountries: ["us", "gb"], separateDialCode: !1, utilsScript: "" }, k = ["800", "822", "833", "844", "855", "866", "877", "880", "881", "882", "883", "884", "885", "886", "887", "888", "889"]; "object" == typeof window && window.addEventListener("load", function () { window.intlTelInputGlobals.windowLoaded = !0 }); var l = function (a, b) { for (var c = Object.keys(a), d = 0; d < c.length; d++)b(c[d], a[c[d]]) }, m = function (a) { l(window.intlTelInputGlobals.instances, function (b) { window.intlTelInputGlobals.instances[b][a]() }) }, n = function () {
function c(a, d) { var e = this; b(this, c), this.id = i++, this.a = a, this.b = null, this.c = null; var f = d || {}; this.d = {}, l(j, function (a, b) { e.d[a] = f.hasOwnProperty(a) ? f[a] : b }), this.e = Boolean(a.getAttribute("placeholder")) } return d(c, [{ key: "_init", value: function () { var a = this; if (this.d.nationalMode && (this.d.autoHideDialCode = !1), this.d.separateDialCode && (this.d.autoHideDialCode = this.d.nationalMode = !1), this.g = /Android.+Mobile|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent), this.g && (document.body.classList.add("iti-mobile"), this.d.dropdownContainer || (this.d.dropdownContainer = document.body)), "undefined" != typeof Promise) { var b = new Promise(function (b, c) { a.h = b, a.i = c }), c = new Promise(function (b, c) { a.i0 = b, a.i1 = c }); this.promise = Promise.all([b, c]) } else this.h = this.i = function () { }, this.i0 = this.i1 = function () { }; this.s = {}, this._b(), this._f(), this._h(), this._i(), this._i3() } }, { key: "_b", value: function () { this._d(), this._d2(), this._e(), this.d.localizedCountries && this._d0(), (this.d.onlyCountries.length || this.d.localizedCountries) && this.p.sort(this._d1) } }, { key: "_c", value: function (b, c, d) { c.length > this.dialCodeMaxLen && (this.dialCodeMaxLen = c.length), this.q.hasOwnProperty(c) || (this.q[c] = []); for (var e = 0; e < this.q[c].length; e++)if (this.q[c][e] === b) return; var f = d !== a ? d : this.q[c].length; this.q[c][f] = b } }, { key: "_d", value: function () { if (this.d.onlyCountries.length) { var a = this.d.onlyCountries.map(function (a) { return a.toLowerCase() }); this.p = e.filter(function (b) { return a.indexOf(b.iso2) > -1 }) } else if (this.d.excludeCountries.length) { var b = this.d.excludeCountries.map(function (a) { return a.toLowerCase() }); this.p = e.filter(function (a) { return -1 === b.indexOf(a.iso2) }) } else this.p = e } }, { key: "_d0", value: function () { for (var a = 0; a < this.p.length; a++) { var b = this.p[a].iso2.toLowerCase(); this.d.localizedCountries.hasOwnProperty(b) && (this.p[a].name = this.d.localizedCountries[b]) } } }, { key: "_d1", value: function (a, b) { return a.name.localeCompare(b.name) } }, { key: "_d2", value: function () { this.dialCodeMaxLen = 0, this.q = {}; for (var a = 0; a < this.p.length; a++) { var b = this.p[a]; this._c(b.iso2, b.dialCode, b.priority) } for (var c = 0; c < this.p.length; c++) { var d = this.p[c]; if (d.areaCodes) for (var e = this.q[d.dialCode][0], f = 0; f < d.areaCodes.length; f++) { for (var g = d.areaCodes[f], h = 1; h < g.length; h++) { var i = d.dialCode + g.substr(0, h); this._c(e, i), this._c(d.iso2, i) } this._c(d.iso2, d.dialCode + g) } } } }, { key: "_e", value: function () { this.preferredCountries = []; for (var a = 0; a < this.d.preferredCountries.length; a++) { var b = this.d.preferredCountries[a].toLowerCase(), c = this._y(b, !1, !0); c && this.preferredCountries.push(c) } } }, { key: "_e2", value: function (a, b, c) { var d = document.createElement(a); return b && l(b, function (a, b) { return d.setAttribute(a, b) }), c && c.appendChild(d), d } }, { key: "_f", value: function () { this.a.hasAttribute("autocomplete") || this.a.form && this.a.form.hasAttribute("autocomplete") || this.a.setAttribute("autocomplete", "off"); var a = "iti"; this.d.allowDropdown && (a += " iti--allow-dropdown"), this.d.separateDialCode && (a += " iti--separate-dial-code"), this.d.customContainer && (a += " ", a += this.d.customContainer); var b = this._e2("div", { "class": a }); if (this.a.parentNode.insertBefore(b, this.a), this.k = this._e2("div", { "class": "iti__flag-container" }, b), b.appendChild(this.a), this.selectedFlag = this._e2("div", { "class": "iti__selected-flag", role: "combobox", "aria-owns": "country-listbox", "aria-expanded": "false" }, this.k), this.l = this._e2("div", { "class": "iti__flag" }, this.selectedFlag), this.d.separateDialCode && (this.t = this._e2("div", { "class": "iti__selected-dial-code" }, this.selectedFlag)), this.d.allowDropdown && (this.selectedFlag.setAttribute("tabindex", "0"), this.u = this._e2("div", { "class": "iti__arrow" }, this.selectedFlag), this.m = this._e2("ul", { "class": "iti__country-list iti__hide", id: "country-listbox", role: "listbox" }), this.preferredCountries.length && (this._g(this.preferredCountries, "iti__preferred"), this._e2("li", { "class": "iti__divider", role: "separator", "aria-disabled": "true" }, this.m)), this._g(this.p, "iti__standard"), this.d.dropdownContainer ? (this.dropdown = this._e2("div", { "class": "iti iti--container" }), this.dropdown.appendChild(this.m)) : this.k.appendChild(this.m)), this.d.hiddenInput) { var c = this.d.hiddenInput, d = this.a.getAttribute("name"); if (d) { var e = d.lastIndexOf("["); -1 !== e && (c = "".concat(d.substr(0, e), "[").concat(c, "]")) } this.hiddenInput = this._e2("input", { type: "hidden", name: c }), b.appendChild(this.hiddenInput) } } }, { key: "_g", value: function (a, b) { for (var c = "", d = 0; d < a.length; d++) { var e = a[d]; c += "<li class='iti__country ".concat(b, "' tabIndex='-1' id='iti-item-").concat(e.iso2, "' role='option' data-dial-code='").concat(e.dialCode, "' data-country-code='").concat(e.iso2, "'>"), c += "<div class='iti__flag-box'><div class='iti__flag iti__".concat(e.iso2, "'></div></div>"), c += "<span class='iti__country-name'>".concat(e.name, "</span>"), c += "<span class='iti__dial-code'>+".concat(e.dialCode, "</span>"), c += "</li>" } this.m.insertAdjacentHTML("beforeend", c) } }, { key: "_h", value: function () { var a = this.a.value, b = this._5(a), c = this._w(a), d = this.d, e = d.initialCountry, f = d.nationalMode, g = d.autoHideDialCode, h = d.separateDialCode; b && !c ? this._v(a) : "auto" !== e && (e ? this._z(e.toLowerCase()) : b && c ? this._z("us") : (this.j = this.preferredCountries.length ? this.preferredCountries[0].iso2 : this.p[0].iso2, a || this._z(this.j)), a || f || g || h || (this.a.value = "+".concat(this.s.dialCode))), a && this._u(a) } }, { key: "_i", value: function () { this._j(), this.d.autoHideDialCode && this._l(), this.d.allowDropdown && this._i2(), this.hiddenInput && this._i0() } }, { key: "_i0", value: function () { var a = this; this._a14 = function () { a.hiddenInput.value = a.getNumber() }, this.a.form && this.a.form.addEventListener("submit", this._a14) } }, { key: "_i1", value: function () { for (var a = this.a; a && "LABEL" !== a.tagName;)a = a.parentNode; return a } }, { key: "_i2", value: function () { var a = this; this._a9 = function (b) { a.m.classList.contains("iti__hide") ? a.a.focus() : b.preventDefault() }; var b = this._i1(); b && b.addEventListener("click", this._a9), this._a10 = function () { !a.m.classList.contains("iti__hide") || a.a.disabled || a.a.readOnly || a._n() }, this.selectedFlag.addEventListener("click", this._a10), this._a11 = function (b) { a.m.classList.contains("iti__hide") && -1 !== ["ArrowUp", "Up", "ArrowDown", "Down", " ", "Enter"].indexOf(b.key) && (b.preventDefault(), b.stopPropagation(), a._n()), "Tab" === b.key && a._2() }, this.k.addEventListener("keydown", this._a11) } }, { key: "_i3", value: function () { var a = this; this.d.utilsScript && !window.intlTelInputUtils ? window.intlTelInputGlobals.windowLoaded ? window.intlTelInputGlobals.loadUtils(this.d.utilsScript) : window.addEventListener("load", function () { window.intlTelInputGlobals.loadUtils(a.d.utilsScript) }) : this.i0(), "auto" === this.d.initialCountry ? this._i4() : this.h() } }, { key: "_i4", value: function () { window.intlTelInputGlobals.autoCountry ? this.handleAutoCountry() : window.intlTelInputGlobals.startedLoadingAutoCountry || (window.intlTelInputGlobals.startedLoadingAutoCountry = !0, "function" == typeof this.d.geoIpLookup && this.d.geoIpLookup(function (a) { window.intlTelInputGlobals.autoCountry = a.toLowerCase(), setTimeout(function () { return m("handleAutoCountry") }) }, function () { return m("rejectAutoCountryPromise") })) } }, { key: "_j", value: function () { var a = this; this._a12 = function () { a._v(a.a.value) && a._8() }, this.a.addEventListener("keyup", this._a12), this._a13 = function () { setTimeout(a._a12) }, this.a.addEventListener("cut", this._a13), this.a.addEventListener("paste", this._a13) } }, { key: "_j2", value: function (a) { var b = this.a.getAttribute("maxlength"); return b && a.length > b ? a.substr(0, b) : a } }, { key: "_l", value: function () { var a = this; this._a8 = function () { a._l2() }, this.a.form && this.a.form.addEventListener("submit", this._a8), this.a.addEventListener("blur", this._a8) } }, { key: "_l2", value: function () { if ("+" === this.a.value.charAt(0)) { var a = this._m(this.a.value); a && this.s.dialCode !== a || (this.a.value = "") } } }, { key: "_m", value: function (a) { return a.replace(/\D/g, "") } }, { key: "_m2", value: function (a) { var b = document.createEvent("Event"); b.initEvent(a, !0, !0), this.a.dispatchEvent(b) } }, { key: "_n", value: function () { this.m.classList.remove("iti__hide"), this.selectedFlag.setAttribute("aria-expanded", "true"), this._o(), this.b && (this._x(this.b, !1), this._3(this.b, !0)), this._p(), this.u.classList.add("iti__arrow--up"), this._m2("open:countrydropdown") } }, { key: "_n2", value: function (a, b, c) { c && !a.classList.contains(b) ? a.classList.add(b) : !c && a.classList.contains(b) && a.classList.remove(b) } }, { key: "_o", value: function () { var a = this; if (this.d.dropdownContainer && this.d.dropdownContainer.appendChild(this.dropdown), !this.g) { var b = this.a.getBoundingClientRect(), c = window.pageYOffset || document.documentElement.scrollTop, d = b.top + c, e = this.m.offsetHeight, f = d + this.a.offsetHeight + e < c + window.innerHeight, g = d - e > c; if (this._n2(this.m, "iti__country-list--dropup", !f && g), this.d.dropdownContainer) { var h = !f && g ? 0 : this.a.offsetHeight; this.dropdown.style.top = "".concat(d + h, "px"), this.dropdown.style.left = "".concat(b.left + document.body.scrollLeft, "px"), this._a4 = function () { return a._2() }, window.addEventListener("scroll", this._a4) } } } }, { key: "_o2", value: function (a) { for (var b = a; b && b !== this.m && !b.classList.contains("iti__country");)b = b.parentNode; return b === this.m ? null : b } }, { key: "_p", value: function () { var a = this; this._a0 = function (b) { var c = a._o2(b.target); c && a._x(c, !1) }, this.m.addEventListener("mouseover", this._a0), this._a1 = function (b) { var c = a._o2(b.target); c && a._1(c) }, this.m.addEventListener("click", this._a1); var b = !0; this._a2 = function () { b || a._2(), b = !1 }, document.documentElement.addEventListener("click", this._a2); var c = "", d = null; this._a3 = function (b) { b.preventDefault(), "ArrowUp" === b.key || "Up" === b.key || "ArrowDown" === b.key || "Down" === b.key ? a._q(b.key) : "Enter" === b.key ? a._r() : "Escape" === b.key ? a._2() : /^[a-zA-ZÀ-ÿа-яА-Я ]$/.test(b.key) && (d && clearTimeout(d), c += b.key.toLowerCase(), a._s(c), d = setTimeout(function () { c = "" }, 1e3)) }, document.addEventListener("keydown", this._a3) } }, { key: "_q", value: function (a) { var b = "ArrowUp" === a || "Up" === a ? this.c.previousElementSibling : this.c.nextElementSibling; b && (b.classList.contains("iti__divider") && (b = "ArrowUp" === a || "Up" === a ? b.previousElementSibling : b.nextElementSibling), this._x(b, !0)) } }, { key: "_r", value: function () { this.c && this._1(this.c) } }, { key: "_s", value: function (a) { for (var b = 0; b < this.p.length; b++)if (this._t(this.p[b].name, a)) { var c = this.m.querySelector("#iti-item-".concat(this.p[b].iso2)); this._x(c, !1), this._3(c, !0); break } } }, { key: "_t", value: function (a, b) { return a.substr(0, b.length).toLowerCase() === b } }, { key: "_u", value: function (a) { var b = a; if (this.d.formatOnDisplay && window.intlTelInputUtils && this.s) { var c = !this.d.separateDialCode && (this.d.nationalMode || "+" !== b.charAt(0)), d = intlTelInputUtils.numberFormat, e = d.NATIONAL, f = d.INTERNATIONAL, g = c ? e : f; b = intlTelInputUtils.formatNumber(b, this.s.iso2, g) } b = this._7(b), this.a.value = b } }, { key: "_v", value: function (a) { var b = a, c = this.s.dialCode, d = "1" === c; b && this.d.nationalMode && d && "+" !== b.charAt(0) && ("1" !== b.charAt(0) && (b = "1".concat(b)), b = "+".concat(b)), this.d.separateDialCode && c && "+" !== b.charAt(0) && (b = "+".concat(c).concat(b)); var e = this._5(b), f = this._m(b), g = null; if (e) { var h = this.q[this._m(e)], i = -1 !== h.indexOf(this.s.iso2) && f.length <= e.length - 1; if (!("1" === c && this._w(f)) && !i) for (var j = 0; j < h.length; j++)if (h[j]) { g = h[j]; break } } else "+" === b.charAt(0) && f.length ? g = "" : b && "+" !== b || (g = this.j); return null !== g && this._z(g) } }, { key: "_w", value: function (a) { var b = this._m(a); if ("1" === b.charAt(0)) { var c = b.substr(1, 3); return -1 !== k.indexOf(c) } return !1 } }, { key: "_x", value: function (a, b) { var c = this.c; c && c.classList.remove("iti__highlight"), this.c = a, this.c.classList.add("iti__highlight"), b && this.c.focus() } }, { key: "_y", value: function (a, b, c) { for (var d = b ? e : this.p, f = 0; f < d.length; f++)if (d[f].iso2 === a) return d[f]; if (c) return null; throw new Error("No country data for '".concat(a, "'")) } }, { key: "_z", value: function (a) { var b = this.s.iso2 ? this.s : {}; this.s = a ? this._y(a, !1, !1) : {}, this.s.iso2 && (this.j = this.s.iso2), this.l.setAttribute("class", "iti__flag iti__".concat(a)); var c = a ? "".concat(this.s.name, ": +").concat(this.s.dialCode) : "Unknown"; if (this.selectedFlag.setAttribute("title", c), this.d.separateDialCode) { var d = this.s.dialCode ? "+".concat(this.s.dialCode) : ""; this.t.innerHTML = d; var e = this.selectedFlag.offsetWidth || this._getHiddenSelectedFlagWidth(); this.a.style.paddingLeft = "".concat(e + 6, "px") } if (this._0(), this.d.allowDropdown) { var f = this.b; if (f && (f.classList.remove("iti__active"), f.setAttribute("aria-selected", "false")), a) { var g = this.m.querySelector("#iti-item-".concat(a)); g.setAttribute("aria-selected", "true"), g.classList.add("iti__active"), this.b = g, this.selectedFlag.setAttribute("aria-activedescendant", g.getAttribute("id")) } } return b.iso2 !== a } }, { key: "_getHiddenSelectedFlagWidth", value: function () { var a = this.a.parentNode.cloneNode(); a.style.visibility = "hidden", document.body.appendChild(a); var b = this.selectedFlag.cloneNode(!0); a.appendChild(b); var c = b.offsetWidth; return a.parentNode.removeChild(a), c } }, { key: "_0", value: function () { var a = "aggressive" === this.d.autoPlaceholder || !this.e && "polite" === this.d.autoPlaceholder; if (window.intlTelInputUtils && a) { var b = intlTelInputUtils.numberType[this.d.placeholderNumberType], c = this.s.iso2 ? intlTelInputUtils.getExampleNumber(this.s.iso2, this.d.nationalMode, b) : ""; c = this._7(c), "function" == typeof this.d.customPlaceholder && (c = this.d.customPlaceholder(c, this.s)), this.a.setAttribute("placeholder", c) } } }, { key: "_1", value: function (a) { var b = this._z(a.getAttribute("data-country-code")); this._2(), this._4(a.getAttribute("data-dial-code"), !0), this.a.focus(); var c = this.a.value.length; this.a.setSelectionRange(c, c), b && this._8() } }, { key: "_2", value: function () { this.m.classList.add("iti__hide"), this.selectedFlag.setAttribute("aria-expanded", "false"), this.u.classList.remove("iti__arrow--up"), document.removeEventListener("keydown", this._a3), document.documentElement.removeEventListener("click", this._a2), this.m.removeEventListener("mouseover", this._a0), this.m.removeEventListener("click", this._a1), this.d.dropdownContainer && (this.g || window.removeEventListener("scroll", this._a4), this.dropdown.parentNode && this.dropdown.parentNode.removeChild(this.dropdown)), this._m2("close:countrydropdown") } }, { key: "_3", value: function (a, b) { var c = this.m, d = window.pageYOffset || document.documentElement.scrollTop, e = c.offsetHeight, f = c.getBoundingClientRect().top + d, g = f + e, h = a.offsetHeight, i = a.getBoundingClientRect().top + d, j = i + h, k = i - f + c.scrollTop, l = e / 2 - h / 2; if (i < f) b && (k -= l), c.scrollTop = k; else if (j > g) { b && (k += l); var m = e - h; c.scrollTop = k - m } } }, { key: "_4", value: function (a, b) { var c, d = this.a.value, e = "+".concat(a); if ("+" === d.charAt(0)) { var f = this._5(d); c = f ? d.replace(f, e) : e } else { if (this.d.nationalMode || this.d.separateDialCode) return; if (d) c = e + d; else { if (!b && this.d.autoHideDialCode) return; c = e } } this.a.value = c } }, { key: "_5", value: function (a) { var b = ""; if ("+" === a.charAt(0)) for (var c = "", d = 0; d < a.length; d++) { var e = a.charAt(d); if (!isNaN(parseInt(e, 10)) && (c += e, this.q[c] && (b = a.substr(0, d + 1)), c.length === this.dialCodeMaxLen)) break } return b } }, { key: "_6", value: function () { var a = this.a.value.trim(), b = this.s.dialCode, c = this._m(a); return (this.d.separateDialCode && "+" !== a.charAt(0) && b && c ? "+".concat(b) : "") + a } }, { key: "_7", value: function (a) { var b = a; if (this.d.separateDialCode) { var c = this._5(b); if (c) { c = "+".concat(this.s.dialCode); var d = " " === b[c.length] || "-" === b[c.length] ? c.length + 1 : c.length; b = b.substr(d) } } return this._j2(b) } }, { key: "_8", value: function () { this._m2("countrychange") } }, { key: "handleAutoCountry", value: function () { "auto" === this.d.initialCountry && (this.j = window.intlTelInputGlobals.autoCountry, this.a.value || this.setCountry(this.j), this.h()) } }, { key: "handleUtils", value: function () { window.intlTelInputUtils && (this.a.value && this._u(this.a.value), this._0()), this.i0() } }, { key: "destroy", value: function () { var a = this.a.form; if (this.d.allowDropdown) { this._2(), this.selectedFlag.removeEventListener("click", this._a10), this.k.removeEventListener("keydown", this._a11); var b = this._i1(); b && b.removeEventListener("click", this._a9) } this.hiddenInput && a && a.removeEventListener("submit", this._a14), this.d.autoHideDialCode && (a && a.removeEventListener("submit", this._a8), this.a.removeEventListener("blur", this._a8)), this.a.removeEventListener("keyup", this._a12), this.a.removeEventListener("cut", this._a13), this.a.removeEventListener("paste", this._a13), this.a.removeAttribute("data-intl-tel-input-id"); var c = this.a.parentNode; c.parentNode.insertBefore(this.a, c), c.parentNode.removeChild(c), delete window.intlTelInputGlobals.instances[this.id] } }, { key: "getExtension", value: function () { return window.intlTelInputUtils ? intlTelInputUtils.getExtension(this._6(), this.s.iso2) : "" } }, { key: "getNumber", value: function (a) { if (window.intlTelInputUtils) { var b = this.s.iso2; return intlTelInputUtils.formatNumber(this._6(), b, a) } return "" } }, { key: "getNumberType", value: function () { return window.intlTelInputUtils ? intlTelInputUtils.getNumberType(this._6(), this.s.iso2) : -99 } }, { key: "getSelectedCountryData", value: function () { return this.s } }, { key: "getValidationError", value: function () { if (window.intlTelInputUtils) { var a = this.s.iso2; return intlTelInputUtils.getValidationError(this._6(), a) } return -99 } }, {
key: "isValidNumber", value: function () {
var a = this._6().trim(), b = this.d.nationalMode ? this.s.iso2 : ""
; return window.intlTelInputUtils ? intlTelInputUtils.isValidNumber(a, b) : null
}
}, { key: "setCountry", value: function (a) { var b = a.toLowerCase(); this.l.classList.contains("iti__".concat(b)) || (this._z(b), this._4(this.s.dialCode, !1), this._8()) } }, { key: "setNumber", value: function (a) { var b = this._v(a); this._u(a), b && this._8() } }, { key: "setPlaceholderNumberType", value: function (a) { this.d.placeholderNumberType = a, this._0() } }]), c
}(); h.getCountryData = function () { return e }; var o = function (a, b, c) { var d = document.createElement("script"); d.onload = function () { m("handleUtils"), b && b() }, d.onerror = function () { m("rejectUtilsScriptPromise"), c && c() }, d.className = "iti-load-utils", d.async = !0, d.src = a, document.body.appendChild(d) }; return h.loadUtils = function (a) { if (!window.intlTelInputUtils && !window.intlTelInputGlobals.startedLoadingUtilsScript) { if (window.intlTelInputGlobals.startedLoadingUtilsScript = !0, "undefined" != typeof Promise) return new Promise(function (b, c) { return o(a, b, c) }); o(a) } return null }, h.defaults = j, h.version = "16.1.0", function (a, b) { var c = new n(a, b); return c._init(), a.setAttribute("data-intl-tel-input-id", c.id), window.intlTelInputGlobals.instances[c.id] = c, c }
}()
});
/*! nouislider - 14.6.2 - 9/16/2020 */
!function (t) { "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? module.exports = t() : window.noUiSlider = t() }(function () { "use strict"; var lt = "14.6.2"; function ut(t) { t.parentElement.removeChild(t) } function a(t) { return null != t } function ct(t) { t.preventDefault() } function o(t) { return "number" == typeof t && !isNaN(t) && isFinite(t) } function pt(t, e, r) { 0 < r && (ht(t, e), setTimeout(function () { mt(t, e) }, r)) } function ft(t) { return Math.max(Math.min(t, 100), 0) } function dt(t) { return Array.isArray(t) ? t : [t] } function e(t) { var e = (t = String(t)).split("."); return 1 < e.length ? e[1].length : 0 } function ht(t, e) { t.classList && !/\s/.test(e) ? t.classList.add(e) : t.className += " " + e } function mt(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 gt(t) { var e = void 0 !== window.pageXOffset, r = "CSS1Compat" === (t.compatMode || ""); return { x: e ? window.pageXOffset : r ? t.documentElement.scrollLeft : t.body.scrollLeft, y: e ? window.pageYOffset : r ? t.documentElement.scrollTop : t.body.scrollTop } } function c(t, e) { return 100 / (e - t) } function p(t, e, r) { return 100 * e / (t[r + 1] - t[r]) } function f(t, e) { for (var r = 1; t >= e[r];)r += 1; return r } function r(t, e, r) { if (r >= t.slice(-1)[0]) return 100; var n, i, o = f(r, t), s = t[o - 1], a = t[o], l = e[o - 1], u = e[o]; return l + (i = r, p(n = [s, a], n[0] < 0 ? i + Math.abs(n[0]) : i - n[0], 0) / c(l, u)) } function n(t, e, r, n) { if (100 === n) return n; var i, o, s = f(n, t), a = t[s - 1], l = t[s]; return r ? (l - a) / 2 < n - a ? l : a : e[s - 1] ? t[s - 1] + (i = n - t[s - 1], o = e[s - 1], Math.round(i / o) * o) : n } function s(t, e, r) { var n; if ("number" == typeof e && (e = [e]), !Array.isArray(e)) throw new Error("noUiSlider (" + lt + "): 'range' contains invalid value."); if (!o(n = "min" === t ? 0 : "max" === t ? 100 : parseFloat(t)) || !o(e[0])) throw new Error("noUiSlider (" + lt + "): 'range' value isn't numeric."); r.xPct.push(n), r.xVal.push(e[0]), n ? r.xSteps.push(!isNaN(e[1]) && e[1]) : isNaN(e[1]) || (r.xSteps[0] = e[1]), r.xHighestCompleteStep.push(0) } function l(t, e, r) { if (e) if (r.xVal[t] !== r.xVal[t + 1]) { r.xSteps[t] = p([r.xVal[t], r.xVal[t + 1]], e, 0) / c(r.xPct[t], r.xPct[t + 1]); var n = (r.xVal[t + 1] - r.xVal[t]) / r.xNumSteps[t], i = Math.ceil(Number(n.toFixed(3)) - 1), o = r.xVal[t] + r.xNumSteps[t] * i; r.xHighestCompleteStep[t] = o } else r.xSteps[t] = r.xHighestCompleteStep[t] = r.xVal[t] } function i(t, e, r) { var n; this.xPct = [], this.xVal = [], this.xSteps = [r || !1], this.xNumSteps = [!1], this.xHighestCompleteStep = [], this.snap = e; var i = []; for (n in t) t.hasOwnProperty(n) && i.push([t[n], n]); for (i.length && "object" == typeof i[0][0] ? i.sort(function (t, e) { return t[0][0] - e[0][0] }) : i.sort(function (t, e) { return t[0] - e[0] }), n = 0; n < i.length; n++)s(i[n][1], i[n][0], this); for (this.xNumSteps = this.xSteps.slice(0), n = 0; n < this.xNumSteps.length; n++)l(n, this.xNumSteps[n], this) } i.prototype.getDistance = function (t) { var e, r = []; for (e = 0; e < this.xNumSteps.length - 1; e++) { var n = this.xNumSteps[e]; if (n && t / n % 1 != 0) throw new Error("noUiSlider (" + lt + "): 'limit', 'margin' and 'padding' of " + this.xPct[e] + "% range must be divisible by step."); r[e] = p(this.xVal, t, e) } return r }, i.prototype.getAbsoluteDistance = function (t, e, r) { var n, i = 0; if (t < this.xPct[this.xPct.length - 1]) for (; t > this.xPct[i + 1];)i++; else t === this.xPct[this.xPct.length - 1] && (i = this.xPct.length - 2); r || t !== this.xPct[i + 1] || i++; var o = 1, s = e[i], a = 0, l = 0, u = 0, c = 0; for (n = r ? (t - this.xPct[i]) / (this.xPct[i + 1] - this.xPct[i]) : (this.xPct[i + 1] - t) / (this.xPct[i + 1] - this.xPct[i]); 0 < s;)a = this.xPct[i + 1 + c] - this.xPct[i + c], 100 < e[i + c] * o + 100 - 100 * n ? (l = a * n, o = (s - 100 * n) / e[i + c], n = 1) : (l = e[i + c] * a / 100 * o, o = 0), r ? (u -= l, 1 <= this.xPct.length + c && c--) : (u += l, 1 <= this.xPct.length - c && c++), s = e[i + c] * o; return t + u }, i.prototype.toStepping = function (t) { return t = r(this.xVal, this.xPct, t) }, i.prototype.fromStepping = function (t) { return function (t, e, r) { if (100 <= r) return t.slice(-1)[0]; var n, i = f(r, e), o = t[i - 1], s = t[i], a = e[i - 1], l = e[i]; return n = [o, s], (r - a) * c(a, l) * (n[1] - n[0]) / 100 + n[0] }(this.xVal, this.xPct, t) }, i.prototype.getStep = function (t) { return t = n(this.xPct, this.xSteps, this.snap, t) }, i.prototype.getDefaultStep = function (t, e, r) { var n = f(t, this.xPct); return (100 === t || e && t === this.xPct[n - 1]) && (n = Math.max(n - 1, 1)), (this.xVal[n] - this.xVal[n - 1]) / r }, i.prototype.getNearbySteps = function (t) { var e = f(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] } } }, i.prototype.countStepDecimals = function () { var t = this.xNumSteps.map(e); return Math.max.apply(null, t) }, i.prototype.convert = function (t) { return this.getStep(this.toStepping(t)) }; var u = { to: function (t) { return void 0 !== t && t.toFixed(2) }, from: Number }, d = { target: "target", base: "base", origin: "origin", handle: "handle", handleLower: "handle-lower", handleUpper: "handle-upper", touchArea: "touch-area", horizontal: "horizontal", vertical: "vertical", background: "background", connect: "connect", connects: "connects", ltr: "ltr", rtl: "rtl", textDirectionLtr: "txt-dir-ltr", textDirectionRtl: "txt-dir-rtl", draggable: "draggable", drag: "state-drag", tap: "state-tap", active: "active", tooltip: "tooltip", pips: "pips", pipsHorizontal: "pips-horizontal", pipsVertical: "pips-vertical", marker: "marker", markerHorizontal: "marker-horizontal", markerVertical: "marker-vertical", markerNormal: "marker-normal", markerLarge: "marker-large", markerSub: "marker-sub", value: "value", valueHorizontal: "value-horizontal", valueVertical: "value-vertical", valueNormal: "value-normal", valueLarge: "value-large", valueSub: "value-sub" }; function h(t) { if ("object" == typeof (e = t) && "function" == typeof e.to && "function" == typeof e.from) return !0; var e; throw new Error("noUiSlider (" + lt + "): 'format' requires 'to' and 'from' methods.") } function m(t, e) { if (!o(e)) throw new Error("noUiSlider (" + lt + "): 'step' is not numeric."); t.singleStep = e } function g(t, e) { if (!o(e)) throw new Error("noUiSlider (" + lt + "): 'keyboardPageMultiplier' is not numeric."); t.keyboardPageMultiplier = e } function v(t, e) { if (!o(e)) throw new Error("noUiSlider (" + lt + "): 'keyboardDefaultStep' is not numeric."); t.keyboardDefaultStep = e } function b(t, e) { if ("object" != typeof e || Array.isArray(e)) throw new Error("noUiSlider (" + lt + "): 'range' is not an object."); if (void 0 === e.min || void 0 === e.max) throw new Error("noUiSlider (" + lt + "): Missing 'min' or 'max' in 'range'."); if (e.min === e.max) throw new Error("noUiSlider (" + lt + "): 'range' 'min' and 'max' cannot be equal."); t.spectrum = new i(e, t.snap, t.singleStep) } function x(t, e) { if (e = dt(e), !Array.isArray(e) || !e.length) throw new Error("noUiSlider (" + lt + "): 'start' option is incorrect."); t.handles = e.length, t.start = e } function S(t, e) { if ("boolean" != typeof (t.snap = e)) throw new Error("noUiSlider (" + lt + "): 'snap' option must be a boolean.") } function w(t, e) { if ("boolean" != typeof (t.animate = e)) throw new Error("noUiSlider (" + lt + "): 'animate' option must be a boolean.") } function y(t, e) { if ("number" != typeof (t.animationDuration = e)) throw new Error("noUiSlider (" + lt + "): 'animationDuration' option must be a number.") } function E(t, e) { var r, n = [!1]; if ("lower" === e ? e = [!0, !1] : "upper" === e && (e = [!1, !0]), !0 === e || !1 === e) { for (r = 1; r < t.handles; r++)n.push(e); n.push(!1) } else { if (!Array.isArray(e) || !e.length || e.length !== t.handles + 1) throw new Error("noUiSlider (" + lt + "): 'connect' option doesn't match handle count."); n = e } t.connect = n } function C(t, e) { switch (e) { case "horizontal": t.ort = 0; break; case "vertical": t.ort = 1; break; default: throw new Error("noUiSlider (" + lt + "): 'orientation' option is invalid.") } } function P(t, e) { if (!o(e)) throw new Error("noUiSlider (" + lt + "): 'margin' option must be numeric."); 0 !== e && (t.margin = t.spectrum.getDistance(e)) } function N(t, e) { if (!o(e)) throw new Error("noUiSlider (" + lt + "): 'limit' option must be numeric."); if (t.limit = t.spectrum.getDistance(e), !t.limit || t.handles < 2) throw new Error("noUiSlider (" + lt + "): 'limit' option is only supported on linear sliders with 2 or more handles.") } function k(t, e) { var r; if (!o(e) && !Array.isArray(e)) throw new Error("noUiSlider (" + lt + "): 'padding' option must be numeric or array of exactly 2 numbers."); if (Array.isArray(e) && 2 !== e.length && !o(e[0]) && !o(e[1])) throw new Error("noUiSlider (" + lt + "): '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])], r = 0; r < t.spectrum.xNumSteps.length - 1; r++)if (t.padding[0][r] < 0 || t.padding[1][r] < 0) throw new Error("noUiSlider (" + lt + "): 'padding' option must be a positive number(s)."); var n = e[0] + e[1], i = t.spectrum.xVal[0]; if (1 < n / (t.spectrum.xVal[t.spectrum.xVal.length - 1] - i)) throw new Error("noUiSlider (" + lt + "): 'padding' option must not exceed 100% of the range.") } } function U(t, e) { switch (e) { case "ltr": t.dir = 0; break; case "rtl": t.dir = 1; break; default: throw new Error("noUiSlider (" + lt + "): 'direction' option was not recognized.") } } function A(t, e) { if ("string" != typeof e) throw new Error("noUiSlider (" + lt + "): 'behaviour' must be a string containing options."); var r = 0 <= e.indexOf("tap"), n = 0 <= e.indexOf("drag"), i = 0 <= e.indexOf("fixed"), o = 0 <= e.indexOf("snap"), s = 0 <= e.indexOf("hover"), a = 0 <= e.indexOf("unconstrained"); if (i) { if (2 !== t.handles) throw new Error("noUiSlider (" + lt + "): 'fixed' behaviour must be used with 2 handles"); P(t, t.start[1] - t.start[0]) } if (a && (t.margin || t.limit)) throw new Error("noUiSlider (" + lt + "): 'unconstrained' behaviour cannot be used with margin or limit"); t.events = { tap: r || o, drag: n, fixed: i, snap: o, hover: s, unconstrained: a } } function V(t, e) { if (!1 !== e) if (!0 === e) { t.tooltips = []; for (var r = 0; r < t.handles; r++)t.tooltips.push(!0) } else { if (t.tooltips = dt(e), t.tooltips.length !== t.handles) throw new Error("noUiSlider (" + lt + "): 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 (" + lt + "): 'tooltips' must be passed a formatter or 'false'.") }) } } function D(t, e) { h(t.ariaFormat = e) } function M(t, e) { h(t.format = e) } function O(t, e) { if ("boolean" != typeof (t.keyboardSupport = e)) throw new Error("noUiSlider (" + lt + "): 'keyboardSupport' option must be a boolean.") } function L(t, e) { t.documentElement = e } function z(t, e) { if ("string" != typeof e && !1 !== e) throw new Error("noUiSlider (" + lt + "): 'cssPrefix' must be a string or `false`."); t.cssPrefix = e } function H(t, e) { if ("object" != typeof e) throw new Error("noUiSlider (" + lt + "): 'cssClasses' must be an object."); if ("string" == typeof t.cssPrefix) for (var r in t.cssClasses = {}, e) e.hasOwnProperty(r) && (t.cssClasses[r] = t.cssPrefix + e[r]); else t.cssClasses = e } function vt(e) { var r = { margin: 0, limit: 0, padding: 0, animate: !0, animationDuration: 300, ariaFormat: u, format: u }, n = { step: { r: !1, t: m }, keyboardPageMultiplier: { r: !1, t: g }, keyboardDefaultStep: { r: !1, t: v }, start: { r: !0, t: x }, connect: { r: !0, t: E }, direction: { r: !0, t: U }, snap: { r: !1, t: S }, animate: { r: !1, t: w }, animationDuration: { r: !1, t: y }, range: { r: !0, t: b }, orientation: { r: !1, t: C }, margin: { r: !1, t: P }, limit: { r: !1, t: N }, padding: { r: !1, t: k }, behaviour: { r: !0, t: A }, ariaFormat: { r: !1, t: D }, format: { r: !1, t: M }, tooltips: { r: !1, t: V }, keyboardSupport: { r: !0, t: O }, documentElement: { r: !1, t: L }, cssPrefix: { r: !0, t: z }, cssClasses: { r: !0, t: H } }, i = { connect: !1, direction: "ltr", behaviour: "tap", orientation: "horizontal", keyboardSupport: !0, cssPrefix: "noUi-", cssClasses: d, keyboardPageMultiplier: 5, keyboardDefaultStep: 10 }; e.format && !e.ariaFormat && (e.ariaFormat = e.format), Object.keys(n).forEach(function (t) { if (!a(e[t]) && void 0 === i[t]) { if (n[t].r) throw new Error("noUiSlider (" + lt + "): '" + t + "' is required."); return !0 } n[t].t(r, a(e[t]) ? e[t] : i[t]) }), r.pips = e.pips; var t = document.createElement("div"), o = void 0 !== t.style.msTransform, s = void 0 !== t.style.transform; r.transformRule = s ? "transform" : o ? "msTransform" : "webkitTransform"; return r.style = [["left", "top"], ["right", "bottom"]][r.dir][r.ort], r } function j(t, b, o) { var l, u, s, c, i, a, e, p, f = 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" }, d = 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 }(), h = t, y = b.spectrum, x = [], S = [], m = [], g = 0, v = {}, w = t.ownerDocument, E = b.documentElement || w.documentElement, C = w.body, P = -1, N = 0, k = 1, U = 2, A = "rtl" === w.dir || 1 === b.ort ? 0 : 100; function V(t, e) { var r = w.createElement("div"); return e && ht(r, e), t.appendChild(r), r } function D(t, e) { var r = V(t, b.cssClasses.origin), n = V(r, b.cssClasses.handle); return V(n, b.cssClasses.touchArea), n.setAttribute("data-handle", e), b.keyboardSupport && (n.setAttribute("tabindex", "0"), n.addEventListener("keydown", function (t) { return function (t, e) { if (O() || L(e)) return !1; var r = ["Left", "Right"], n = ["Down", "Up"], i = ["PageDown", "PageUp"], o = ["Home", "End"]; b.dir && !b.ort ? r.reverse() : b.ort && !b.dir && (n.reverse(), i.reverse()); var s, a = t.key.replace("Arrow", ""), l = a === i[0], u = a === i[1], c = a === n[0] || a === r[0] || l, p = a === n[1] || a === r[1] || u, f = a === o[0], d = a === o[1]; if (!(c || p || f || d)) return !0; if (t.preventDefault(), p || c) { var h = b.keyboardPageMultiplier, m = c ? 0 : 1, g = at(e), v = g[m]; if (null === v) return !1; !1 === v && (v = y.getDefaultStep(S[e], c, b.keyboardDefaultStep)), (u || l) && (v *= h), v = Math.max(v, 1e-7), v *= c ? -1 : 1, s = x[e] + v } else s = d ? b.spectrum.xVal[b.spectrum.xVal.length - 1] : b.spectrum.xVal[0]; return rt(e, y.toStepping(s), !0, !0), J("slide", e), J("update", e), J("change", e), J("set", e), !1 }(t, e) })), n.setAttribute("role", "slider"), n.setAttribute("aria-orientation", b.ort ? "vertical" : "horizontal"), 0 === e ? ht(n, b.cssClasses.handleLower) : e === b.handles - 1 && ht(n, b.cssClasses.handleUpper), r } function M(t, e) { return !!e && V(t, b.cssClasses.connect) } function r(t, e) { return !!b.tooltips[e] && V(t.firstChild, b.cssClasses.tooltip) } function O() { return h.hasAttribute("disabled") } function L(t) { return u[t].hasAttribute("disabled") } function z() { i && (G("update.tooltips"), i.forEach(function (t) { t && ut(t) }), i = null) } function H() { z(), i = u.map(r), $("update.tooltips", function (t, e, r) { if (i[e]) { var n = t[e]; !0 !== b.tooltips[e] && (n = b.tooltips[e].to(r[e])), i[e].innerHTML = n } }) } function j(e, i, o) { var s = w.createElement("div"), a = []; a[N] = b.cssClasses.valueNormal, a[k] = b.cssClasses.valueLarge, a[U] = b.cssClasses.valueSub; var l = []; l[N] = b.cssClasses.markerNormal, l[k] = b.cssClasses.markerLarge, l[U] = b.cssClasses.markerSub; var u = [b.cssClasses.valueHorizontal, b.cssClasses.valueVertical], c = [b.cssClasses.markerHorizontal, b.cssClasses.markerVertical]; function p(t, e) { var r = e === b.cssClasses.value, n = r ? a : l; return e + " " + (r ? u : c)[b.ort] + " " + n[t] } return ht(s, b.cssClasses.pips), ht(s, 0 === b.ort ? b.cssClasses.pipsHorizontal : b.cssClasses.pipsVertical), Object.keys(e).forEach(function (t) { !function (t, e, r) { if ((r = i ? i(e, r) : r) !== P) { var n = V(s, !1); n.className = p(r, b.cssClasses.marker), n.style[b.style] = t + "%", N < r && ((n = V(s, !1)).className = p(r, b.cssClasses.value), n.setAttribute("data-value", e), n.style[b.style] = t + "%", n.innerHTML = o.to(e)) } }(t, e[t][0], e[t][1]) }), s } function F() { c && (ut(c), c = null) } function R(t) { F(); var m, g, v, b, e, r, x, S, w, n = t.mode, i = t.density || 1, o = t.filter || !1, s = function (t, e, r) { if ("range" === t || "steps" === t) return y.xVal; if ("count" === t) { if (e < 2) throw new Error("noUiSlider (" + lt + "): 'values' (>= 2) required for mode 'count'."); var n = e - 1, i = 100 / n; for (e = []; n--;)e[n] = n * i; e.push(100), t = "positions" } return "positions" === t ? e.map(function (t) { return y.fromStepping(r ? y.getStep(t) : t) }) : "values" === t ? r ? e.map(function (t) { return y.fromStepping(y.getStep(y.toStepping(t))) }) : e : void 0 }(n, t.values || !1, t.stepped || !1), a = (m = i, g = n, v = s, b = {}, e = y.xVal[0], r = y.xVal[y.xVal.length - 1], S = x = !1, w = 0, (v = v.slice().sort(function (t, e) { return t - e }).filter(function (t) { return !this[t] && (this[t] = !0) }, {}))[0] !== e && (v.unshift(e), x = !0), v[v.length - 1] !== r && (v.push(r), S = !0), v.forEach(function (t, e) { var r, n, i, o, s, a, l, u, c, p, f = t, d = v[e + 1], h = "steps" === g; if (h && (r = y.xNumSteps[e]), r || (r = d - f), !1 !== f) for (void 0 === d && (d = f), r = Math.max(r, 1e-7), n = f; n <= d; n = (n + r).toFixed(7) / 1) { for (u = (s = (o = y.toStepping(n)) - w) / m, p = s / (c = Math.round(u)), i = 1; i <= c; i += 1)b[(a = w + i * p).toFixed(5)] = [y.fromStepping(a), 0]; l = -1 < v.indexOf(n) ? k : h ? U : N, !e && x && n !== d && (l = 0), n === d && S || (b[o.toFixed(5)] = [n, l]), w = o } }), b), l = t.format || { to: Math.round }; return c = h.appendChild(j(a, o, l)) } function T() { var t = l.getBoundingClientRect(), e = "offset" + ["Width", "Height"][b.ort]; return 0 === b.ort ? t.width || l[e] : t.height || l[e] } function B(n, i, o, s) { var e = function (t) { return !!(t = function (t, e, r) { var n, i, o = 0 === t.type.indexOf("touch"), s = 0 === t.type.indexOf("mouse"), a = 0 === t.type.indexOf("pointer"); 0 === t.type.indexOf("MSPointer") && (a = !0); if ("mousedown" === t.type && !t.buttons && !t.touches) return !1; if (o) { var l = function (t) { return t.target === r || r.contains(t.target) || t.target.shadowRoot && t.target.shadowRoot.contains(r) }; if ("touchstart" === t.type) { var u = Array.prototype.filter.call(t.touches, l); if (1 < u.length) return !1; n = u[0].pageX, i = u[0].pageY } else { var c = Array.prototype.find.call(t.changedTouches, l); if (!c) return !1; n = c.pageX, i = c.pageY } } e = e || gt(w), (s || a) && (n = t.clientX + e.x, i = t.clientY + e.y); return t.pageOffset = e, t.points = [n, i], t.cursor = s || a, t }(t, s.pageOffset, s.target || i)) && (!(O() && !s.doNotReject) && (e = h, r = b.cssClasses.tap, !((e.classList ? e.classList.contains(r) : new RegExp("\\b" + r + "\\b").test(e.className)) && !s.doNotReject) && (!(n === f.start && void 0 !== t.buttons && 1 < t.buttons) && ((!s.hover || !t.buttons) && (d || t.preventDefault(), t.calcPoint = t.points[b.ort], void o(t, s)))))); var e, r }, r = []; return n.split(" ").forEach(function (t) { i.addEventListener(t, e, !!d && { passive: !0 }), r.push([t, e]) }), r } function q(t) { var e, r, n, i, o, s, a = 100 * (t - (e = l, r = b.ort, n = e.getBoundingClientRect(), i = e.ownerDocument, o = i.documentElement, s = gt(i), /webkit.*Chrome.*Mobile/i.test(navigator.userAgent) && (s.x = 0), r ? n.top + s.y - o.clientTop : n.left + s.x - o.clientLeft)) / T(); return a = ft(a), b.dir ? 100 - a : a } function X(t, e) { "mouseout" === t.type && "HTML" === t.target.nodeName && null === t.relatedTarget && _(t, e) } function Y(t, e) { if (-1 === navigator.appVersion.indexOf("MSIE 9") && 0 === t.buttons && 0 !== e.buttonsProperty) return _(t, e); var r = (b.dir ? -1 : 1) * (t.calcPoint - e.startCalcPoint); Z(0 < r, 100 * r / e.baseSize, e.locations, e.handleNumbers) } function _(t, e) { e.handle && (mt(e.handle, b.cssClasses.active), g -= 1), e.listeners.forEach(function (t) { E.removeEventListener(t[0], t[1]) }), 0 === g && (mt(h, b.cssClasses.drag), et(), t.cursor && (C.style.cursor = "", C.removeEventListener("selectstart", ct))), e.handleNumbers.forEach(function (t) { J("change", t), J("set", t), J("end", t) }) } function I(t, e) { if (e.handleNumbers.some(L)) return !1; var r; 1 === e.handleNumbers.length && (r = u[e.handleNumbers[0]].children[0], g += 1, ht(r, b.cssClasses.active)); t.stopPropagation(); var n = [], i = B(f.move, E, Y, { target: t.target, handle: r, listeners: n, startCalcPoint: t.calcPoint, baseSize: T(), pageOffset: t.pageOffset, handleNumbers: e.handleNumbers, buttonsProperty: t.buttons, locations: S.slice() }), o = B(f.end, E, _, { target: t.target, handle: r, listeners: n, doNotReject: !0, handleNumbers: e.handleNumbers }), s = B("mouseout", E, X, { target: t.target, handle: r, listeners: n, doNotReject: !0, handleNumbers: e.handleNumbers }); n.push.apply(n, i.concat(o, s)), t.cursor && (C.style.cursor = getComputedStyle(t.target).cursor, 1 < u.length && ht(h, b.cssClasses.drag), C.addEventListener("selectstart", ct, !1)), e.handleNumbers.forEach(function (t) { J("start", t) }) } function n(t) { t.stopPropagation(); var i, o, s, e = q(t.calcPoint), r = (i = e, s = !(o = 100), u.forEach(function (t, e) { if (!L(e)) { var r = S[e], n = Math.abs(r - i); (n < o || n <= o && r < i || 100 === n && 100 === o) && (s = e, o = n) } }), s); if (!1 === r) return !1; b.events.snap || pt(h, b.cssClasses.tap, b.animationDuration), rt(r, e, !0, !0), et(), J("slide", r, !0), J("update", r, !0), J("change", r, !0), J("set", r, !0), b.events.snap && I(t, { handleNumbers: [r] }) } function W(t) { var e = q(t.calcPoint), r = y.getStep(e), n = y.fromStepping(r); Object.keys(v).forEach(function (t) { "hover" === t.split(".")[0] && v[t].forEach(function (t) { t.call(a, n) }) }) } function $(t, e) { v[t] = v[t] || [], v[t].push(e), "update" === t.split(".")[0] && u.forEach(function (t, e) { J("update", e) }) } function G(t) { var n = t && t.split(".")[0], i = n && t.substring(n.length); Object.keys(v).forEach(function (t) { var e = t.split(".")[0], r = t.substring(e.length); n && n !== e || i && i !== r || delete v[t] }) } function J(r, n, i) { Object.keys(v).forEach(function (t) { var e = t.split(".")[0]; r === e && v[t].forEach(function (t) { t.call(a, x.map(b.format.to), n, x.slice(), i || !1, S.slice(), a) }) }) } function K(t, e, r, n, i, o) { var s; return 1 < u.length && !b.events.unconstrained && (n && 0 < e && (s = y.getAbsoluteDistance(t[e - 1], b.margin, 0), r = Math.max(r, s)), i && e < u.length - 1 && (s = y.getAbsoluteDistance(t[e + 1], b.margin, 1), r = Math.min(r, s))), 1 < u.length && b.limit && (n && 0 < e && (s = y.getAbsoluteDistance(t[e - 1], b.limit, 0), r = Math.min(r, s)), i && e < u.length - 1 && (s = y.getAbsoluteDistance(t[e + 1], b.limit, 1), r = Math.max(r, s))), b.padding && (0 === e && (s = y.getAbsoluteDistance(0, b.padding[0], 0), r = Math.max(r, s)), e === u.length - 1 && (s = y.getAbsoluteDistance(100, b.padding[1], 1), r = Math.min(r, s))), !((r = ft(r = y.getStep(r))) === t[e] && !o) && r } function Q(t, e) { var r = b.ort; return (r ? e : t) + ", " + (r ? t : e) } function Z(t, n, r, e) { var i = r.slice(), o = [!t, t], s = [t, !t]; e = e.slice(), t && e.reverse(), 1 < e.length ? e.forEach(function (t, e) { var r = K(i, t, i[t] + n, o[e], s[e], !1); !1 === r ? n = 0 : (n = r - i[t], i[t] = r) }) : o = s = [!0]; var a = !1; e.forEach(function (t, e) { a = rt(t, r[t] + n, o[e], s[e]) || a }), a && e.forEach(function (t) { J("update", t), J("slide", t) }) } function tt(t, e) { return b.dir ? 100 - t - e : t } function et() { m.forEach(function (t) { var e = 50 < S[t] ? -1 : 1, r = 3 + (u.length + e * t); u[t].style.zIndex = r }) } function rt(t, e, r, n, i) { return i || (e = K(S, t, e, r, n, !1)), !1 !== e && (function (t, e) { S[t] = e, x[t] = y.fromStepping(e); var r = "translate(" + Q(10 * (tt(e, 0) - A) + "%", "0") + ")"; u[t].style[b.transformRule] = r, nt(t), nt(t + 1) }(t, e), !0) } function nt(t) { if (s[t]) { var e = 0, r = 100; 0 !== t && (e = S[t - 1]), t !== s.length - 1 && (r = S[t]); var n = r - e, i = "translate(" + Q(tt(e, n) + "%", "0") + ")", o = "scale(" + Q(n / 100, "1") + ")"; s[t].style[b.transformRule] = i + " " + o } } function it(t, e) { return null === t || !1 === t || void 0 === t ? S[e] : ("number" == typeof t && (t = String(t)), t = b.format.from(t), !1 === (t = y.toStepping(t)) || isNaN(t) ? S[e] : t) } function ot(t, e, r) { var n = dt(t), i = void 0 === S[0]; e = void 0 === e || !!e, b.animate && !i && pt(h, b.cssClasses.tap, b.animationDuration), m.forEach(function (t) { rt(t, it(n[t], t), !0, !1, r) }); for (var o = 1 === m.length ? 0 : 1; o < m.length; ++o)m.forEach(function (t) { rt(t, S[t], !0, !0, r) }); et(), m.forEach(function (t) { J("update", t), null !== n[t] && e && J("set", t) }) } function st() { var t = x.map(b.format.to); return 1 === t.length ? t[0] : t } function at(t) { var e = S[t], r = y.getNearbySteps(e), n = x[t], i = r.thisStep.step, o = null; if (b.snap) return [n - r.stepBefore.startValue || null, r.stepAfter.startValue - n || null]; !1 !== i && n + i > r.stepAfter.startValue && (i = r.stepAfter.startValue - n), o = n > r.thisStep.startValue ? r.thisStep.step : !1 !== r.stepBefore.step && n - r.stepBefore.highestStep, 100 === e ? i = null : 0 === e && (o = null); var s = y.countStepDecimals(); return null !== i && !1 !== i && (i = Number(i.toFixed(s))), null !== o && !1 !== o && (o = Number(o.toFixed(s))), [o, i] } return ht(e = h, b.cssClasses.target), 0 === b.dir ? ht(e, b.cssClasses.ltr) : ht(e, b.cssClasses.rtl), 0 === b.ort ? ht(e, b.cssClasses.horizontal) : ht(e, b.cssClasses.vertical), ht(e, "rtl" === getComputedStyle(e).direction ? b.cssClasses.textDirectionRtl : b.cssClasses.textDirectionLtr), l = V(e, b.cssClasses.base), function (t, e) { var r = V(e, b.cssClasses.connects); u = [], (s = []).push(M(r, t[0])); for (var n = 0; n < b.handles; n++)u.push(D(e, n)), m[n] = n, s.push(M(r, t[n + 1])) }(b.connect, l), (p = b.events).fixed || u.forEach(function (t, e) { B(f.start, t.children[0], I, { handleNumbers: [e] }) }), p.tap && B(f.start, l, n, {}), p.hover && B(f.move, l, W, { hover: !0 }), p.drag && s.forEach(function (t, e) { if (!1 !== t && 0 !== e && e !== s.length - 1) { var r = u[e - 1], n = u[e], i = [t]; ht(t, b.cssClasses.draggable), p.fixed && (i.push(r.children[0]), i.push(n.children[0])), i.forEach(function (t) { B(f.start, t, I, { handles: [r, n], handleNumbers: [e - 1, e] }) }) } }), ot(b.start), b.pips && R(b.pips), b.tooltips && H(), $("update", function (t, e, s, r, a) { m.forEach(function (t) { var e = u[t], r = K(S, t, 0, !0, !0, !0), n = K(S, t, 100, !0, !0, !0), i = a[t], o = b.ariaFormat.to(s[t]); r = y.fromStepping(r).toFixed(1), n = y.fromStepping(n).toFixed(1), i = y.fromStepping(i).toFixed(1), e.children[0].setAttribute("aria-valuemin", r), e.children[0].setAttribute("aria-valuemax", n), e.children[0].setAttribute("aria-valuenow", i), e.children[0].setAttribute("aria-valuetext", o) }) }), a = { destroy: function () { for (var t in b.cssClasses) b.cssClasses.hasOwnProperty(t) && mt(h, b.cssClasses[t]); for (; h.firstChild;)h.removeChild(h.firstChild); delete h.noUiSlider }, steps: function () { return m.map(at) }, on: $, off: G, get: st, set: ot, setHandle: function (t, e, r, n) { if (!(0 <= (t = Number(t)) && t < m.length)) throw new Error("noUiSlider (" + lt + "): invalid handle number, got: " + t); rt(t, it(e, t), !0, !0, n), J("update", t), r && J("set", t) }, reset: function (t) { ot(b.start, t) }, __moveHandles: function (t, e, r) { Z(t, e, S, r) }, options: o, updateOptions: function (e, t) { var r = st(), n = ["margin", "limit", "padding", "range", "animate", "snap", "step", "format", "pips", "tooltips"]; n.forEach(function (t) { void 0 !== e[t] && (o[t] = e[t]) }); var i = vt(o); n.forEach(function (t) { void 0 !== e[t] && (b[t] = i[t]) }), y = i.spectrum, b.margin = i.margin, b.limit = i.limit, b.padding = i.padding, b.pips ? R(b.pips) : F(), b.tooltips ? H() : z(), S = [], ot(e.start || r, t) }, target: h, removePips: F, removeTooltips: z, getTooltips: function () { return i }, getOrigins: function () { return u }, pips: R } } return { __spectrum: i, version: lt, cssClasses: d, create: function (t, e) { if (!t || !t.nodeName) throw new Error("noUiSlider (" + lt + "): create requires a single element, got: " + t); if (t.noUiSlider) throw new Error("noUiSlider (" + lt + "): Slider was already initialized."); var r = j(t, vt(e), e); return t.noUiSlider = r } } });
/**
* Minified by jsDelivr using Terser v3.14.1.
* Original file: /npm/daterangepicker@3.0.5/daterangepicker.js
*
* Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
*/
!function (t, e) { if ("function" == typeof define && define.amd) define(["moment", "jquery"], function (t, a) { return a.fn || (a.fn = {}), "function" != typeof t && t.default && (t = t.default), e(t, a) }); else if ("object" == typeof module && module.exports) { var a = "undefined" != typeof window ? window.jQuery : void 0; a || (a = require("jquery")).fn || (a.fn = {}); var i = "undefined" != typeof window && void 0 !== window.moment ? window.moment : require("moment"); module.exports = e(i, a) } else t.daterangepicker = e(t.moment, t.jQuery) }(this, function (t, e) { var a = function (a, i, s) { if (this.parentEl = "body", this.element = e(a), this.startDate = t().startOf("day"), this.endDate = t().endOf("day"), this.minDate = !1, this.maxDate = !1, this.maxSpan = !1, this.autoApply = !1, this.singleDatePicker = !1, this.showDropdowns = !1, this.minYear = t().subtract(100, "year").format("YYYY"), this.maxYear = t().add(100, "year").format("YYYY"), this.showWeekNumbers = !1, this.showISOWeekNumbers = !1, this.showCustomRangeLabel = !0, this.timePicker = !1, this.timePicker24Hour = !1, this.timePickerIncrement = 1, this.timePickerSeconds = !1, this.linkedCalendars = !0, this.autoUpdateInput = !0, this.alwaysShowCalendars = !1, this.ranges = {}, this.opens = "right", this.element.hasClass("pull-right") && (this.opens = "left"), this.drops = "down", this.element.hasClass("dropup") && (this.drops = "up"), this.buttonClasses = "btn btn-sm", this.applyButtonClasses = "btn-primary", this.cancelButtonClasses = "btn-default", this.locale = { direction: "ltr", format: t.localeData().longDateFormat("L"), separator: " - ", applyLabel: "Apply", cancelLabel: "Cancel", weekLabel: "W", customRangeLabel: "Custom Range", daysOfWeek: t.weekdaysMin(), monthNames: t.monthsShort(), firstDay: t.localeData().firstDayOfWeek() }, this.callback = function () { }, this.isShowing = !1, this.leftCalendar = {}, this.rightCalendar = {}, "object" == typeof i && null !== i || (i = {}), "string" == typeof (i = e.extend(this.element.data(), i)).template || i.template instanceof e || (i.template = '<div class="daterangepicker"><div class="ranges"></div><div class="drp-calendar left"><div class="calendar-table"></div><div class="calendar-time"></div></div><div class="drp-calendar right"><div class="calendar-table"></div><div class="calendar-time"></div></div><div class="drp-buttons"><span class="drp-selected"></span><button class="cancelBtn" type="button"></button><button class="applyBtn" disabled="disabled" type="button"></button> </div></div>'), this.parentEl = i.parentEl && e(i.parentEl).length ? e(i.parentEl) : e(this.parentEl), this.container = e(i.template).appendTo(this.parentEl), "object" == typeof i.locale && ("string" == typeof i.locale.direction && (this.locale.direction = i.locale.direction), "string" == typeof i.locale.format && (this.locale.format = i.locale.format), "string" == typeof i.locale.separator && (this.locale.separator = i.locale.separator), "object" == typeof i.locale.daysOfWeek && (this.locale.daysOfWeek = i.locale.daysOfWeek.slice()), "object" == typeof i.locale.monthNames && (this.locale.monthNames = i.locale.monthNames.slice()), "number" == typeof i.locale.firstDay && (this.locale.firstDay = i.locale.firstDay), "string" == typeof i.locale.applyLabel && (this.locale.applyLabel = i.locale.applyLabel), "string" == typeof i.locale.cancelLabel && (this.locale.cancelLabel = i.locale.cancelLabel), "string" == typeof i.locale.weekLabel && (this.locale.weekLabel = i.locale.weekLabel), "string" == typeof i.locale.customRangeLabel)) { (f = document.createElement("textarea")).innerHTML = i.locale.customRangeLabel; var n = f.value; this.locale.customRangeLabel = n } if (this.container.addClass(this.locale.direction), "string" == typeof i.startDate && (this.startDate = t(i.startDate, this.locale.format)), "string" == typeof i.endDate && (this.endDate = t(i.endDate, this.locale.format)), "string" == typeof i.minDate && (this.minDate = t(i.minDate, this.locale.format)), "string" == typeof i.maxDate && (this.maxDate = t(i.maxDate, this.locale.format)), "object" == typeof i.startDate && (this.startDate = t(i.startDate)), "object" == typeof i.endDate && (this.endDate = t(i.endDate)), "object" == typeof i.minDate && (this.minDate = t(i.minDate)), "object" == typeof i.maxDate && (this.maxDate = t(i.maxDate)), this.minDate && this.startDate.isBefore(this.minDate) && (this.startDate = this.minDate.clone()), this.maxDate && this.endDate.isAfter(this.maxDate) && (this.endDate = this.maxDate.clone()), "string" == typeof i.applyButtonClasses && (this.applyButtonClasses = i.applyButtonClasses), "string" == typeof i.applyClass && (this.applyButtonClasses = i.applyClass), "string" == typeof i.cancelButtonClasses && (this.cancelButtonClasses = i.cancelButtonClasses), "string" == typeof i.cancelClass && (this.cancelButtonClasses = i.cancelClass), "object" == typeof i.maxSpan && (this.maxSpan = i.maxSpan), "object" == typeof i.dateLimit && (this.maxSpan = i.dateLimit), "string" == typeof i.opens && (this.opens = i.opens), "string" == typeof i.drops && (this.drops = i.drops), "boolean" == typeof i.showWeekNumbers && (this.showWeekNumbers = i.showWeekNumbers), "boolean" == typeof i.showISOWeekNumbers && (this.showISOWeekNumbers = i.showISOWeekNumbers), "string" == typeof i.buttonClasses && (this.buttonClasses = i.buttonClasses), "object" == typeof i.buttonClasses && (this.buttonClasses = i.buttonClasses.join(" ")), "boolean" == typeof i.showDropdowns && (this.showDropdowns = i.showDropdowns), "number" == typeof i.minYear && (this.minYear = i.minYear), "number" == typeof i.maxYear && (this.maxYear = i.maxYear), "boolean" == typeof i.showCustomRangeLabel && (this.showCustomRangeLabel = i.showCustomRangeLabel), "boolean" == typeof i.singleDatePicker && (this.singleDatePicker = i.singleDatePicker, this.singleDatePicker && (this.endDate = this.startDate.clone())), "boolean" == typeof i.timePicker && (this.timePicker = i.timePicker), "boolean" == typeof i.timePickerSeconds && (this.timePickerSeconds = i.timePickerSeconds), "number" == typeof i.timePickerIncrement && (this.timePickerIncrement = i.timePickerIncrement), "boolean" == typeof i.timePicker24Hour && (this.timePicker24Hour = i.timePicker24Hour), "boolean" == typeof i.autoApply && (this.autoApply = i.autoApply), "boolean" == typeof i.autoUpdateInput && (this.autoUpdateInput = i.autoUpdateInput), "boolean" == typeof i.linkedCalendars && (this.linkedCalendars = i.linkedCalendars), "function" == typeof i.isInvalidDate && (this.isInvalidDate = i.isInvalidDate), "function" == typeof i.isCustomDate && (this.isCustomDate = i.isCustomDate), "boolean" == typeof i.alwaysShowCalendars && (this.alwaysShowCalendars = i.alwaysShowCalendars), 0 != this.locale.firstDay) for (var r = this.locale.firstDay; r > 0;)this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift()), r--; var o, l, h; if (void 0 === i.startDate && void 0 === i.endDate && e(this.element).is(":text")) { var c = e(this.element).val(), d = c.split(this.locale.separator); o = l = null, 2 == d.length ? (o = t(d[0], this.locale.format), l = t(d[1], this.locale.format)) : this.singleDatePicker && "" !== c && (o = t(c, this.locale.format), l = t(c, this.locale.format)), null !== o && null !== l && (this.setStartDate(o), this.setEndDate(l)) } if ("object" == typeof i.ranges) { for (h in i.ranges) { o = "string" == typeof i.ranges[h][0] ? t(i.ranges[h][0], this.locale.format) : t(i.ranges[h][0]), l = "string" == typeof i.ranges[h][1] ? t(i.ranges[h][1], this.locale.format) : t(i.ranges[h][1]), this.minDate && o.isBefore(this.minDate) && (o = this.minDate.clone()); var m = this.maxDate; if (this.maxSpan && m && o.clone().add(this.maxSpan).isAfter(m) && (m = o.clone().add(this.maxSpan)), m && l.isAfter(m) && (l = m.clone()), !(this.minDate && l.isBefore(this.minDate, this.timepicker ? "minute" : "day") || m && o.isAfter(m, this.timepicker ? "minute" : "day"))) { var f; (f = document.createElement("textarea")).innerHTML = h; n = f.value; this.ranges[n] = [o, l] } } var p = "<ul>"; for (h in this.ranges) p += '<li data-range-key="' + h + '">' + h + "</li>"; this.showCustomRangeLabel && (p += '<li data-range-key="' + this.locale.customRangeLabel + '">' + this.locale.customRangeLabel + "</li>"), p += "</ul>", this.container.find(".ranges").prepend(p) } "function" == typeof s && (this.callback = s), this.timePicker || (this.startDate = this.startDate.startOf("day"), this.endDate = this.endDate.endOf("day"), this.container.find(".calendar-time").hide()), this.timePicker && this.autoApply && (this.autoApply = !1), this.autoApply && this.container.addClass("auto-apply"), "object" == typeof i.ranges && this.container.addClass("show-ranges"), this.singleDatePicker && (this.container.addClass("single"), this.container.find(".drp-calendar.left").addClass("single"), this.container.find(".drp-calendar.left").show(), this.container.find(".drp-calendar.right").hide(), this.timePicker || this.container.addClass("auto-apply")), (void 0 === i.ranges && !this.singleDatePicker || this.alwaysShowCalendars) && this.container.addClass("show-calendar"), this.container.addClass("opens" + this.opens), this.container.find(".applyBtn, .cancelBtn").addClass(this.buttonClasses), this.applyButtonClasses.length && this.container.find(".applyBtn").addClass(this.applyButtonClasses), this.cancelButtonClasses.length && this.container.find(".cancelBtn").addClass(this.cancelButtonClasses), this.container.find(".applyBtn").html(this.locale.applyLabel), this.container.find(".cancelBtn").html(this.locale.cancelLabel), this.container.find(".drp-calendar").on("click.daterangepicker", ".prev", e.proxy(this.clickPrev, this)).on("click.daterangepicker", ".next", e.proxy(this.clickNext, this)).on("mousedown.daterangepicker", "td.available", e.proxy(this.clickDate, this)).on("mouseenter.daterangepicker", "td.available", e.proxy(this.hoverDate, this)).on("change.daterangepicker", "select.yearselect", e.proxy(this.monthOrYearChanged, this)).on("change.daterangepicker", "select.monthselect", e.proxy(this.monthOrYearChanged, this)).on("change.daterangepicker", "select.hourselect,select.minuteselect,select.secondselect,select.ampmselect", e.proxy(this.timeChanged, this)), this.container.find(".ranges").on("click.daterangepicker", "li", e.proxy(this.clickRange, this)), this.container.find(".drp-buttons").on("click.daterangepicker", "button.applyBtn", e.proxy(this.clickApply, this)).on("click.daterangepicker", "button.cancelBtn", e.proxy(this.clickCancel, this)), this.element.is("input") || this.element.is("button") ? this.element.on({ "click.daterangepicker": e.proxy(this.show, this), "focus.daterangepicker": e.proxy(this.show, this), "keyup.daterangepicker": e.proxy(this.elementChanged, this), "keydown.daterangepicker": e.proxy(this.keydown, this) }) : (this.element.on("click.daterangepicker", e.proxy(this.toggle, this)), this.element.on("keydown.daterangepicker", e.proxy(this.toggle, this))), this.updateElement() }; return a.prototype = { constructor: a, setStartDate: function (e) { "string" == typeof e && (this.startDate = t(e, this.locale.format)), "object" == typeof e && (this.startDate = t(e)), this.timePicker || (this.startDate = this.startDate.startOf("day")), this.timePicker && this.timePickerIncrement && this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement), this.minDate && this.startDate.isBefore(this.minDate) && (this.startDate = this.minDate.clone(), this.timePicker && this.timePickerIncrement && this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement)), this.maxDate && this.startDate.isAfter(this.maxDate) && (this.startDate = this.maxDate.clone(), this.timePicker && this.timePickerIncrement && this.startDate.minute(Math.floor(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement)), this.isShowing || this.updateElement(), this.updateMonthsInView() }, setEndDate: function (e) { "string" == typeof e && (this.endDate = t(e, this.locale.format)), "object" == typeof e && (this.endDate = t(e)), this.timePicker || (this.endDate = this.endDate.endOf("day")), this.timePicker && this.timePickerIncrement && this.endDate.minute(Math.round(this.endDate.minute() / this.timePickerIncrement) * this.timePickerIncrement), this.endDate.isBefore(this.startDate) && (this.endDate = this.startDate.clone()), this.maxDate && this.endDate.isAfter(this.maxDate) && (this.endDate = this.maxDate.clone()), this.maxSpan && this.startDate.clone().add(this.maxSpan).isBefore(this.endDate) && (this.endDate = this.startDate.clone().add(this.maxSpan)), this.previousRightTime = this.endDate.clone(), this.container.find(".drp-selected").html(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format)), this.isShowing || this.updateElement(), this.updateMonthsInView() }, isInvalidDate: function () { return !1 }, isCustomDate: function () { return !1 }, updateView: function () { this.timePicker && (this.renderTimePicker("left"), this.renderTimePicker("right"), this.endDate ? this.container.find(".right .calendar-time select").removeAttr("disabled").removeClass("disabled") : this.container.find(".right .calendar-time select").attr("disabled", "disabled").addClass("disabled")), this.endDate && this.container.find(".drp-selected").html(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format)), this.updateMonthsInView(), this.updateCalendars(), this.updateFormInputs() }, updateMonthsInView: function () { if (this.endDate) { if (!this.singleDatePicker && this.leftCalendar.month && this.rightCalendar.month && (this.startDate.format("YYYY-MM") == this.leftCalendar.month.format("YYYY-MM") || this.startDate.format("YYYY-MM") == this.rightCalendar.month.format("YYYY-MM")) && (this.endDate.format("YYYY-MM") == this.leftCalendar.month.format("YYYY-MM") || this.endDate.format("YYYY-MM") == this.rightCalendar.month.format("YYYY-MM"))) return; this.leftCalendar.month = this.startDate.clone().date(2), this.linkedCalendars || this.endDate.month() == this.startDate.month() && this.endDate.year() == this.startDate.year() ? this.rightCalendar.month = this.startDate.clone().date(2).add(1, "month") : this.rightCalendar.month = this.endDate.clone().date(2) } else this.leftCalendar.month.format("YYYY-MM") != this.startDate.format("YYYY-MM") && this.rightCalendar.month.format("YYYY-MM") != this.startDate.format("YYYY-MM") && (this.leftCalendar.month = this.startDate.clone().date(2), this.rightCalendar.month = this.startDate.clone().date(2).add(1, "month")); this.maxDate && this.linkedCalendars && !this.singleDatePicker && this.rightCalendar.month > this.maxDate && (this.rightCalendar.month = this.maxDate.clone().date(2), this.leftCalendar.month = this.maxDate.clone().date(2).subtract(1, "month")) }, updateCalendars: function () { if (this.timePicker) { var t, e, a, i; if (this.endDate) { if (t = parseInt(this.container.find(".left .hourselect").val(), 10), e = parseInt(this.container.find(".left .minuteselect").val(), 10), isNaN(e) && (e = parseInt(this.container.find(".left .minuteselect option:last").val(), 10)), a = this.timePickerSeconds ? parseInt(this.container.find(".left .secondselect").val(), 10) : 0, !this.timePicker24Hour) "PM" === (i = this.container.find(".left .ampmselect").val()) && t < 12 && (t += 12), "AM" === i && 12 === t && (t = 0) } else if (t = parseInt(this.container.find(".right .hourselect").val(), 10), e = parseInt(this.container.find(".right .minuteselect").val(), 10), isNaN(e) && (e = parseInt(this.container.find(".right .minuteselect option:last").val(), 10)), a = this.timePickerSeconds ? parseInt(this.container.find(".right .secondselect").val(), 10) : 0, !this.timePicker24Hour) "PM" === (i = this.container.find(".right .ampmselect").val()) && t < 12 && (t += 12), "AM" === i && 12 === t && (t = 0); this.leftCalendar.month.hour(t).minute(e).second(a), this.rightCalendar.month.hour(t).minute(e).second(a) } this.renderCalendar("left"), this.renderCalendar("right"), this.container.find(".ranges li").removeClass("active"), null != this.endDate && this.calculateChosenLabel() }, renderCalendar: function (a) { var i, s = (i = "left" == a ? this.leftCalendar : this.rightCalendar).month.month(), n = i.month.year(), r = i.month.hour(), o = i.month.minute(), l = i.month.second(), h = t([n, s]).daysInMonth(), c = t([n, s, 1]), d = t([n, s, h]), m = t(c).subtract(1, "month").month(), f = t(c).subtract(1, "month").year(), p = t([f, m]).daysInMonth(), u = c.day(); (i = []).firstDay = c, i.lastDay = d; for (var D = 0; D < 6; D++)i[D] = []; var g = p - u + this.locale.firstDay + 1; g > p && (g -= 7), u == this.locale.firstDay && (g = p - 6); for (var y = t([f, m, g, 12, o, l]), k = (D = 0, 0), b = 0; D < 42; D++, k++, y = t(y).add(24, "hour"))D > 0 && k % 7 == 0 && (k = 0, b++), i[b][k] = y.clone().hour(r).minute(o).second(l), y.hour(12), this.minDate && i[b][k].format("YYYY-MM-DD") == this.minDate.format("YYYY-MM-DD") && i[b][k].isBefore(this.minDate) && "left" == a && (i[b][k] = this.minDate.clone()), this.maxDate && i[b][k].format("YYYY-MM-DD") == this.maxDate.format("YYYY-MM-DD") && i[b][k].isAfter(this.maxDate) && "right" == a && (i[b][k] = this.maxDate.clone()); "left" == a ? this.leftCalendar.calendar = i : this.rightCalendar.calendar = i; var v = "left" == a ? this.minDate : this.startDate, C = this.maxDate, Y = ("left" == a ? this.startDate : this.endDate, this.locale.direction, '<table class="table-condensed">'); Y += "<thead>", Y += "<tr>", (this.showWeekNumbers || this.showISOWeekNumbers) && (Y += "<th></th>"), v && !v.isBefore(i.firstDay) || this.linkedCalendars && "left" != a ? Y += "<th></th>" : Y += '<th class="prev available"><span></span></th>'; var w = this.locale.monthNames[i[1][1].month()] + i[1][1].format(" YYYY"); if (this.showDropdowns) { for (var P = i[1][1].month(), x = i[1][1].year(), M = C && C.year() || this.maxYear, I = v && v.year() || this.minYear, S = x == I, B = x == M, A = '<select class="monthselect">', L = 0; L < 12; L++)(!S || v && L >= v.month()) && (!B || C && L <= C.month()) ? A += "<option value='" + L + "'" + (L === P ? " selected='selected'" : "") + ">" + this.locale.monthNames[L] + "</option>" : A += "<option value='" + L + "'" + (L === P ? " selected='selected'" : "") + " disabled='disabled'>" + this.locale.monthNames[L] + "</option>"; A += "</select>"; for (var N = '<select class="yearselect">', E = I; E <= M; E++)N += '<option value="' + E + '"' + (E === x ? ' selected="selected"' : "") + ">" + E + "</option>"; w = A + (N += "</select>") } if (Y += '<th colspan="5" class="month">' + w + "</th>", C && !C.isAfter(i.lastDay) || this.linkedCalendars && "right" != a && !this.singleDatePicker ? Y += "<th></th>" : Y += '<th class="next available"><span></span></th>', Y += "</tr>", Y += "<tr>", (this.showWeekNumbers || this.showISOWeekNumbers) && (Y += '<th class="week">' + this.locale.weekLabel + "</th>"), e.each(this.locale.daysOfWeek, function (t, e) { Y += "<th>" + e + "</th>" }), Y += "</tr>", Y += "</thead>", Y += "<tbody>", null == this.endDate && this.maxSpan) { var W = this.startDate.clone().add(this.maxSpan).endOf("day"); C && !W.isBefore(C) || (C = W) } for (b = 0; b < 6; b++) { Y += "<tr>", this.showWeekNumbers ? Y += '<td class="week">' + i[b][0].week() + "</td>" : this.showISOWeekNumbers && (Y += '<td class="week">' + i[b][0].isoWeek() + "</td>"); for (k = 0; k < 7; k++) { var O = []; i[b][k].isSame(new Date, "day") && O.push("today"), i[b][k].isoWeekday() > 5 && O.push("weekend"), i[b][k].month() != i[1][1].month() && O.push("off", "ends"), this.minDate && i[b][k].isBefore(this.minDate, "day") && O.push("off", "disabled"), C && i[b][k].isAfter(C, "day") && O.push("off", "disabled"), this.isInvalidDate(i[b][k]) && O.push("off", "disabled"), i[b][k].format("YYYY-MM-DD") == this.startDate.format("YYYY-MM-DD") && O.push("active", "start-date"), null != this.endDate && i[b][k].format("YYYY-MM-DD") == this.endDate.format("YYYY-MM-DD") && O.push("active", "end-date"), null != this.endDate && i[b][k] > this.startDate && i[b][k] < this.endDate && O.push("in-range"); var H = this.isCustomDate(i[b][k]); !1 !== H && ("string" == typeof H ? O.push(H) : Array.prototype.push.apply(O, H)); var j = "", R = !1; for (D = 0; D < O.length; D++)j += O[D] + " ", "disabled" == O[D] && (R = !0); R || (j += "available"), Y += '<td class="' + j.replace(/^\s+|\s+$/g, "") + '" data-title="r' + b + "c" + k + '">' + i[b][k].date() + "</td>" } Y += "</tr>" } Y += "</tbody>", Y += "</table>", this.container.find(".drp-calendar." + a + " .calendar-table").html(Y) }, renderTimePicker: function (t) { if ("right" != t || this.endDate) { var e, a, i, s = this.maxDate; if (!this.maxSpan || this.maxDate && !this.startDate.clone().add(this.maxSpan).isBefore(this.maxDate) || (s = this.startDate.clone().add(this.maxSpan)), "left" == t) a = this.startDate.clone(), i = this.minDate; else if ("right" == t) { a = this.endDate.clone(), i = this.startDate; var n = this.container.find(".drp-calendar.right .calendar-time"); if ("" != n.html() && (a.hour(isNaN(a.hour()) ? n.find(".hourselect option:selected").val() : a.hour()), a.minute(isNaN(a.minute()) ? n.find(".minuteselect option:selected").val() : a.minute()), a.second(isNaN(a.second()) ? n.find(".secondselect option:selected").val() : a.second()), !this.timePicker24Hour)) { var r = n.find(".ampmselect option:selected").val(); "PM" === r && a.hour() < 12 && a.hour(a.hour() + 12), "AM" === r && 12 === a.hour() && a.hour(0) } a.isBefore(this.startDate) && (a = this.startDate.clone()), s && a.isAfter(s) && (a = s.clone()) } e = '<select class="hourselect">'; for (var o = this.timePicker24Hour ? 0 : 1, l = this.timePicker24Hour ? 23 : 12, h = o; h <= l; h++) { var c = h; this.timePicker24Hour || (c = a.hour() >= 12 ? 12 == h ? 12 : h + 12 : 12 == h ? 0 : h); var d = a.clone().hour(c), m = !1; i && d.minute(59).isBefore(i) && (m = !0), s && d.minute(0).isAfter(s) && (m = !0), c != a.hour() || m ? e += m ? '<option value="' + h + '" disabled="disabled" class="disabled">' + h + "</option>" : '<option value="' + h + '">' + h + "</option>" : e += '<option value="' + h + '" selected="selected">' + h + "</option>" } e += "</select> ", e += ': <select class="minuteselect">'; for (h = 0; h < 60; h += this.timePickerIncrement) { var f = h < 10 ? "0" + h : h; d = a.clone().minute(h), m = !1; i && d.second(59).isBefore(i) && (m = !0), s && d.second(0).isAfter(s) && (m = !0), a.minute() != h || m ? e += m ? '<option value="' + h + '" disabled="disabled" class="disabled">' + f + "</option>" : '<option value="' + h + '">' + f + "</option>" : e += '<option value="' + h + '" selected="selected">' + f + "</option>" } if (e += "</select> ", this.timePickerSeconds) { e += ': <select class="secondselect">'; for (h = 0; h < 60; h++) { f = h < 10 ? "0" + h : h, d = a.clone().second(h), m = !1; i && d.isBefore(i) && (m = !0), s && d.isAfter(s) && (m = !0), a.second() != h || m ? e += m ? '<option value="' + h + '" disabled="disabled" class="disabled">' + f + "</option>" : '<option value="' + h + '">' + f + "</option>" : e += '<option value="' + h + '" selected="selected">' + f + "</option>" } e += "</select> " } if (!this.timePicker24Hour) { e += '<select class="ampmselect">'; var p = "", u = ""; i && a.clone().hour(12).minute(0).second(0).isBefore(i) && (p = ' disabled="disabled" class="disabled"'), s && a.clone().hour(0).minute(0).second(0).isAfter(s) && (u = ' disabled="disabled" class="disabled"'), a.hour() >= 12 ? e += '<option value="AM"' + p + '>AM</option><option value="PM" selected="selected"' + u + ">PM</option>" : e += '<option value="AM" selected="selected"' + p + '>AM</option><option value="PM"' + u + ">PM</option>", e += "</select>" } this.container.find(".drp-calendar." + t + " .calendar-time").html(e) } }, updateFormInputs: function () { this.singleDatePicker || this.endDate && (this.startDate.isBefore(this.endDate) || this.startDate.isSame(this.endDate)) ? this.container.find("button.applyBtn").removeAttr("disabled") : this.container.find("button.applyBtn").attr("disabled", "disabled") }, move: function () { var t, a = { top: 0, left: 0 }, i = e(window).width(); this.parentEl.is("body") || (a = { top: this.parentEl.offset().top - this.parentEl.scrollTop(), left: this.parentEl.offset().left - this.parentEl.scrollLeft() }, i = this.parentEl[0].clientWidth + this.parentEl.offset().left), t = "up" == this.drops ? this.element.offset().top - this.container.outerHeight() - a.top : this.element.offset().top + this.element.outerHeight() - a.top, this.container.css({ top: 0, left: 0, right: "auto" }); var s = this.container.outerWidth(); if (this.container["up" == this.drops ? "addClass" : "removeClass"]("drop-up"), "left" == this.opens) { var n = i - this.element.offset().left - this.element.outerWidth(); s + n > e(window).width() ? this.container.css({ top: t, right: "auto", left: 9 }) : this.container.css({ top: t, right: n, left: "auto" }) } else if ("center" == this.opens) { (r = this.element.offset().left - a.left + this.element.outerWidth() / 2 - s / 2) < 0 ? this.container.css({ top: t, right: "auto", left: 9 }) : r + s > e(window).width() ? this.container.css({ top: t, left: "auto", right: 0 }) : this.container.css({ top: t, left: r, right: "auto" }) } else { var r; (r = this.element.offset().left - a.left) + s > e(window).width() ? this.container.css({ top: t, left: "auto", right: 0 }) : this.container.css({ top: t, left: r, right: "auto" }) } }, show: function (t) { this.isShowing || (this._outsideClickProxy = e.proxy(function (t) { this.outsideClick(t) }, this), e(document).on("mousedown.daterangepicker", this._outsideClickProxy).on("touchend.daterangepicker", this._outsideClickProxy).on("click.daterangepicker", "[data-toggle=dropdown]", this._outsideClickProxy).on("focusin.daterangepicker", this._outsideClickProxy), e(window).on("resize.daterangepicker", e.proxy(function (t) { this.move(t) }, this)), this.oldStartDate = this.startDate.clone(), this.oldEndDate = this.endDate.clone(), this.previousRightTime = this.endDate.clone(), this.updateView(), this.container.show(), this.move(), this.element.trigger("show.daterangepicker", this), this.isShowing = !0) }, hide: function (t) { this.isShowing && (this.endDate || (this.startDate = this.oldStartDate.clone(), this.endDate = this.oldEndDate.clone()), this.startDate.isSame(this.oldStartDate) && this.endDate.isSame(this.oldEndDate) || this.callback(this.startDate.clone(), this.endDate.clone(), this.chosenLabel), this.updateElement(), e(document).off(".daterangepicker"), e(window).off(".daterangepicker"), this.container.hide(), this.element.trigger("hide.daterangepicker", this), this.isShowing = !1) }, toggle: function (t) { this.isShowing ? this.hide() : this.show() }, outsideClick: function (t) { var a = e(t.target); "focusin" == t.type || a.closest(this.element).length || a.closest(this.container).length || a.closest(".calendar-table").length || (this.hide(), this.element.trigger("outsideClick.daterangepicker", this)) }, showCalendars: function () { this.container.addClass("show-calendar"), this.move(), this.element.trigger("showCalendar.daterangepicker", this) }, hideCalendars: function () { this.container.removeClass("show-calendar"), this.element.trigger("hideCalendar.daterangepicker", this) }, clickRange: function (t) { var e = t.target.getAttribute("data-range-key"); if (this.chosenLabel = e, e == this.locale.customRangeLabel) this.showCalendars(); else { var a = this.ranges[e]; this.startDate = a[0], this.endDate = a[1], this.timePicker || (this.startDate.startOf("day"), this.endDate.endOf("day")), this.alwaysShowCalendars || this.hideCalendars(), this.clickApply() } }, clickPrev: function (t) { e(t.target).parents(".drp-calendar").hasClass("left") ? (this.leftCalendar.month.subtract(1, "month"), this.linkedCalendars && this.rightCalendar.month.subtract(1, "month")) : this.rightCalendar.month.subtract(1, "month"), this.updateCalendars() }, clickNext: function (t) { e(t.target).parents(".drp-calendar").hasClass("left") ? this.leftCalendar.month.add(1, "month") : (this.rightCalendar.month.add(1, "month"), this.linkedCalendars && this.leftCalendar.month.add(1, "month")), this.updateCalendars() }, hoverDate: function (t) { if (e(t.target).hasClass("available")) { var a = e(t.target).attr("data-title"), i = a.substr(1, 1), s = a.substr(3, 1), n = e(t.target).parents(".drp-calendar").hasClass("left") ? this.leftCalendar.calendar[i][s] : this.rightCalendar.calendar[i][s], r = this.leftCalendar, o = this.rightCalendar, l = this.startDate; this.endDate || this.container.find(".drp-calendar tbody td").each(function (t, a) { if (!e(a).hasClass("week")) { var i = e(a).attr("data-title"), s = i.substr(1, 1), h = i.substr(3, 1), c = e(a).parents(".drp-calendar").hasClass("left") ? r.calendar[s][h] : o.calendar[s][h]; c.isAfter(l) && c.isBefore(n) || c.isSame(n, "day") ? e(a).addClass("in-range") : e(a).removeClass("in-range") } }) } }, clickDate: function (t) { if (e(t.target).hasClass("available")) { var a = e(t.target).attr("data-title"), i = a.substr(1, 1), s = a.substr(3, 1), n = e(t.target).parents(".drp-calendar").hasClass("left") ? this.leftCalendar.calendar[i][s] : this.rightCalendar.calendar[i][s]; if (this.endDate || n.isBefore(this.startDate, "day")) { if (this.timePicker) { var r = parseInt(this.container.find(".left .hourselect").val(), 10); if (!this.timePicker24Hour) "PM" === (h = this.container.find(".left .ampmselect").val()) && r < 12 && (r += 12), "AM" === h && 12 === r && (r = 0); var o = parseInt(this.container.find(".left .minuteselect").val(), 10); isNaN(o) && (o = parseInt(this.container.find(".left .minuteselect option:last").val(), 10)); var l = this.timePickerSeconds ? parseInt(this.container.find(".left .secondselect").val(), 10) : 0; n = n.clone().hour(r).minute(o).second(l) } this.endDate = null, this.setStartDate(n.clone()) } else if (!this.endDate && n.isBefore(this.startDate)) this.setEndDate(this.startDate.clone()); else { if (this.timePicker) { var h; r = parseInt(this.container.find(".right .hourselect").val(), 10); if (!this.timePicker24Hour) "PM" === (h = this.container.find(".right .ampmselect").val()) && r < 12 && (r += 12), "AM" === h && 12 === r && (r = 0); o = parseInt(this.container.find(".right .minuteselect").val(), 10); isNaN(o) && (o = parseInt(this.container.find(".right .minuteselect option:last").val(), 10)); l = this.timePickerSeconds ? parseInt(this.container.find(".right .secondselect").val(), 10) : 0; n = n.clone().hour(r).minute(o).second(l) } this.setEndDate(n.clone()), this.autoApply && (this.calculateChosenLabel(), this.clickApply()) } this.singleDatePicker && (this.setEndDate(this.startDate), this.timePicker || this.clickApply()), this.updateView(), t.stopPropagation() } }, calculateChosenLabel: function () { var t = !0, e = 0; for (var a in this.ranges) { if (this.timePicker) { var i = this.timePickerSeconds ? "YYYY-MM-DD HH:mm:ss" : "YYYY-MM-DD HH:mm"; if (this.startDate.format(i) == this.ranges[a][0].format(i) && this.endDate.format(i) == this.ranges[a][1].format(i)) { t = !1, this.chosenLabel = this.container.find(".ranges li:eq(" + e + ")").addClass("active").attr("data-range-key"); break } } else if (this.startDate.format("YYYY-MM-DD") == this.ranges[a][0].format("YYYY-MM-DD") && this.endDate.format("YYYY-MM-DD") == this.ranges[a][1].format("YYYY-MM-DD")) { t = !1, this.chosenLabel = this.container.find(".ranges li:eq(" + e + ")").addClass("active").attr("data-range-key"); break } e++ } t && (this.showCustomRangeLabel ? this.chosenLabel = this.container.find(".ranges li:last").addClass("active").attr("data-range-key") : this.chosenLabel = null, this.showCalendars()) }, clickApply: function (t) { this.hide(), this.element.trigger("apply.daterangepicker", this) }, clickCancel: function (t) { this.startDate = this.oldStartDate, this.endDate = this.oldEndDate, this.hide(), this.element.trigger("cancel.daterangepicker", this) }, monthOrYearChanged: function (t) { var a = e(t.target).closest(".drp-calendar").hasClass("left"), i = a ? "left" : "right", s = this.container.find(".drp-calendar." + i), n = parseInt(s.find(".monthselect").val(), 10), r = s.find(".yearselect").val(); a || (r < this.startDate.year() || r == this.startDate.year() && n < this.startDate.month()) && (n = this.startDate.month(), r = this.startDate.year()), this.minDate && (r < this.minDate.year() || r == this.minDate.year() && n < this.minDate.month()) && (n = this.minDate.month(), r = this.minDate.year()), this.maxDate && (r > this.maxDate.year() || r == this.maxDate.year() && n > this.maxDate.month()) && (n = this.maxDate.month(), r = this.maxDate.year()), a ? (this.leftCalendar.month.month(n).year(r), this.linkedCalendars && (this.rightCalendar.month = this.leftCalendar.month.clone().add(1, "month"))) : (this.rightCalendar.month.month(n).year(r), this.linkedCalendars && (this.leftCalendar.month = this.rightCalendar.month.clone().subtract(1, "month"))), this.updateCalendars() }, timeChanged: function (t) { var a = e(t.target).closest(".drp-calendar"), i = a.hasClass("left"), s = parseInt(a.find(".hourselect").val(), 10), n = parseInt(a.find(".minuteselect").val(), 10); isNaN(n) && (n = parseInt(a.find(".minuteselect option:last").val(), 10)); var r = this.timePickerSeconds ? parseInt(a.find(".secondselect").val(), 10) : 0; if (!this.timePicker24Hour) { var o = a.find(".ampmselect").val(); "PM" === o && s < 12 && (s += 12), "AM" === o && 12 === s && (s = 0) } if (i) { var l = this.startDate.clone(); l.hour(s), l.minute(n), l.second(r), this.setStartDate(l), this.singleDatePicker ? this.endDate = this.startDate.clone() : this.endDate && this.endDate.format("YYYY-MM-DD") == l.format("YYYY-MM-DD") && this.endDate.isBefore(l) && this.setEndDate(l.clone()) } else if (this.endDate) { var h = this.endDate.clone(); h.hour(s), h.minute(n), h.second(r), this.setEndDate(h) } this.updateCalendars(), this.updateFormInputs(), this.renderTimePicker("left"), this.renderTimePicker("right") }, elementChanged: function () { if (this.element.is("input") && this.element.val().length) { var e = this.element.val().split(this.locale.separator), a = null, i = null; 2 === e.length && (a = t(e[0], this.locale.format), i = t(e[1], this.locale.format)), (this.singleDatePicker || null === a || null === i) && (i = a = t(this.element.val(), this.locale.format)), a.isValid() && i.isValid() && (this.setStartDate(a), this.setEndDate(i), this.updateView()) } }, keydown: function (t) { 9 !== t.keyCode && 13 !== t.keyCode || this.hide(), 27 === t.keyCode && (t.preventDefault(), t.stopPropagation(), this.hide()) }, updateElement: function () { if (this.element.is("input") && this.autoUpdateInput) { var t = this.startDate.format(this.locale.format); this.singleDatePicker || (t += this.locale.separator + this.endDate.format(this.locale.format)), t !== this.element.val() && this.element.val(t).trigger("change") } }, remove: function () { this.container.remove(), this.element.off(".daterangepicker"), this.element.removeData() } }, e.fn.daterangepicker = function (t, i) { var s = e.extend(!0, {}, e.fn.daterangepicker.defaultOptions, t); return this.each(function () { var t = e(this); t.data("daterangepicker") && t.data("daterangepicker").remove(), t.data("daterangepicker", new a(t, s, i)) }), this }, a });
//# sourceMappingURL=/sm/3a884fe0bdb97cb3a94b410e67cf38fdc248890d5581232077b3e6241e25cd21.map
/*!
* The Final Countdown for jQuery v2.2.0 (http://hilios.github.io/jQuery.countdown/)
* Copyright (c) 2016 Edson Hilios
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
!function (a) { "use strict"; "function" == typeof define && define.amd ? define(["jquery"], a) : a(jQuery) }(function (a) { "use strict"; function b(a) { if (a instanceof Date) return a; if (String(a).match(g)) return String(a).match(/^[0-9]*$/) && (a = Number(a)), String(a).match(/\-/) && (a = String(a).replace(/\-/g, "/")), new Date(a); throw new Error("Couldn't cast `" + a + "` to a date object.") } function c(a) { var b = a.toString().replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"); return new RegExp(b) } function d(a) { return function (b) { var d = b.match(/%(-|!)?[A-Z]{1}(:[^;]+;)?/gi); if (d) for (var f = 0, g = d.length; f < g; ++f) { var h = d[f].match(/%(-|!)?([a-zA-Z]{1})(:[^;]+;)?/), j = c(h[0]), k = h[1] || "", l = h[3] || "", m = null; h = h[2], i.hasOwnProperty(h) && (m = i[h], m = Number(a[m])), null !== m && ("!" === k && (m = e(l, m)), "" === k && m < 10 && (m = "0" + m.toString()), b = b.replace(j, m.toString())) } return b = b.replace(/%%/, "%") } } function e(a, b) { var c = "s", d = ""; return a && (a = a.replace(/(:|;|\s)/gi, "").split(/\,/), 1 === a.length ? c = a[0] : (d = a[0], c = a[1])), Math.abs(b) > 1 ? c : d } var f = [], g = [], h = { precision: 100, elapse: !1, defer: !1 }; g.push(/^[0-9]*$/.source), g.push(/([0-9]{1,2}\/){2}[0-9]{4}( [0-9]{1,2}(:[0-9]{2}){2})?/.source), g.push(/[0-9]{4}([\/\-][0-9]{1,2}){2}( [0-9]{1,2}(:[0-9]{2}){2})?/.source), g = new RegExp(g.join("|")); var i = { Y: "years", m: "months", n: "daysToMonth", d: "daysToWeek", w: "weeks", W: "weeksToMonth", H: "hours", M: "minutes", S: "seconds", D: "totalDays", I: "totalHours", N: "totalMinutes", T: "totalSeconds" }, j = function (b, c, d) { this.el = b, this.$el = a(b), this.interval = null, this.offset = {}, this.options = a.extend({}, h), this.instanceNumber = f.length, f.push(this), this.$el.data("countdown-instance", this.instanceNumber), d && ("function" == typeof d ? (this.$el.on("update.countdown", d), this.$el.on("stoped.countdown", d), this.$el.on("finish.countdown", d)) : this.options = a.extend({}, h, d)), this.setFinalDate(c), this.options.defer === !1 && this.start() }; a.extend(j.prototype, { start: function () { null !== this.interval && clearInterval(this.interval); var a = this; this.update(), this.interval = setInterval(function () { a.update.call(a) }, this.options.precision) }, stop: function () { clearInterval(this.interval), this.interval = null, this.dispatchEvent("stoped") }, toggle: function () { this.interval ? this.stop() : this.start() }, pause: function () { this.stop() }, resume: function () { this.start() }, remove: function () { this.stop.call(this), f[this.instanceNumber] = null, delete this.$el.data().countdownInstance }, setFinalDate: function (a) { this.finalDate = b(a) }, update: function () { if (0 === this.$el.closest("html").length) return void this.remove(); var b, c = void 0 !== a._data(this.el, "events"), d = new Date; b = this.finalDate.getTime() - d.getTime(), b = Math.ceil(b / 1e3), b = !this.options.elapse && b < 0 ? 0 : Math.abs(b), this.totalSecsLeft !== b && c && (this.totalSecsLeft = b, this.elapsed = d >= this.finalDate, this.offset = { seconds: this.totalSecsLeft % 60, minutes: Math.floor(this.totalSecsLeft / 60) % 60, hours: Math.floor(this.totalSecsLeft / 60 / 60) % 24, days: Math.floor(this.totalSecsLeft / 60 / 60 / 24) % 7, daysToWeek: Math.floor(this.totalSecsLeft / 60 / 60 / 24) % 7, daysToMonth: Math.floor(this.totalSecsLeft / 60 / 60 / 24 % 30.4368), weeks: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 7), weeksToMonth: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 7) % 4, months: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 30.4368), years: Math.abs(this.finalDate.getFullYear() - d.getFullYear()), totalDays: Math.floor(this.totalSecsLeft / 60 / 60 / 24), totalHours: Math.floor(this.totalSecsLeft / 60 / 60), totalMinutes: Math.floor(this.totalSecsLeft / 60), totalSeconds: this.totalSecsLeft }, this.options.elapse || 0 !== this.totalSecsLeft ? this.dispatchEvent("update") : (this.stop(), this.dispatchEvent("finish"))) }, dispatchEvent: function (b) { var c = a.Event(b + ".countdown"); c.finalDate = this.finalDate, c.elapsed = this.elapsed, c.offset = a.extend({}, this.offset), c.strftime = d(this.offset), this.$el.trigger(c) } }), a.fn.countdown = function () { var b = Array.prototype.slice.call(arguments, 0); return this.each(function () { var c = a(this).data("countdown-instance"); if (void 0 !== c) { var d = f[c], e = b[0]; j.prototype.hasOwnProperty(e) ? d[e].apply(d, b.slice(1)) : null === String(e).match(/^[$A-Z_][0-9A-Z_$]*$/i) ? (d.setFinalDate.call(d, e), d.start()) : a.error("Method %s does not exist on jQuery.countdown".replace(/\%s/gi, e)) } else new j(this, b[0], b[1]) }) } });
// uppy
!function (e) { if ("object" == typeof exports && "undefined" != typeof module) module.exports = e(); else if ("function" == typeof define && define.amd) define([], e); else { ("undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this).Uppy = e() } }(function () { var define, module, exports, createModuleFactory = function (e) { var t; return function (r) { return t || e(t = { exports: {}, parent: r }, t.exports), t.exports } }, _$lib_58 = createModuleFactory(function (e, t) { var r = _$browser_64("socket.io-client"); e.exports = t = o; var n = t.managers = {}; function o(e, t) { "object" == typeof e && (t = e, e = void 0), t = t || {}; var o, i = _$url_62(e), s = i.source, a = i.id, l = i.path, u = n[a] && l in n[a].nsps; return t.forceNew || t["force new connection"] || !1 === t.multiplex || u ? (r("ignoring socket cache for %s", s), o = _$manager_59(s, t)) : (n[a] || (r("new io instance for %s", s), n[a] = _$manager_59(s, t)), o = n[a]), i.query && !t.query && (t.query = i.query), o.socket(i.path, t) } t.protocol = _$socketIoParser_68.protocol, t.connect = o, t.Manager = _$manager_59, t.Socket = _$socket_61 }), _$empty_7 = createModuleFactory(function (e, t) { }), _$buffer_8 = createModuleFactory(function (e, t) { (function (e) { "use strict"; t.Buffer = e, t.INSPECT_MAX_BYTES = 50; var r = 2147483647; function n(t) { if (t > r) throw new RangeError('The value "' + t + '" is invalid for option "size"'); var n = new Uint8Array(t); return n.__proto__ = e.prototype, n } function e(e, t, r) { if ("number" == typeof e) { if ("string" == typeof t) throw new TypeError('The "string" argument must be of type string. Received type number'); return s(e) } return o(e, t, r) } function o(t, r, o) { if ("string" == typeof t) return function (t, r) { if ("string" == typeof r && "" !== r || (r = "utf8"), !e.isEncoding(r)) throw new TypeError("Unknown encoding: " + r); var o = 0 | u(t, r), i = n(o), s = i.write(t, r); return s !== o && (i = i.slice(0, s)), i }(t, r); if (ArrayBuffer.isView(t)) return a(t); if (null == t) throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof t); if (U(t, ArrayBuffer) || t && U(t.buffer, ArrayBuffer)) return function (t, r, n) { if (r < 0 || t.byteLength < r) throw new RangeError('"offset" is outside of buffer bounds'); if (t.byteLength < r + (n || 0)) throw new RangeError('"length" is outside of buffer bounds'); var o; return (o = void 0 === r && void 0 === n ? new Uint8Array(t) : void 0 === n ? new Uint8Array(t, r) : new Uint8Array(t, r, n)).__proto__ = e.prototype, o }(t, r, o); if ("number" == typeof t) throw new TypeError('The "value" argument must not be of type number. Received type number'); var i = t.valueOf && t.valueOf(); if (null != i && i !== t) return e.from(i, r, o); var s = function (t) { if (e.isBuffer(t)) { var r = 0 | l(t.length), o = n(r); return 0 === o.length ? o : (t.copy(o, 0, 0, r), o) } return void 0 !== t.length ? "number" != typeof t.length || D(t.length) ? n(0) : a(t) : "Buffer" === t.type && Array.isArray(t.data) ? a(t.data) : void 0 }(t); if (s) return s; if ("undefined" != typeof Symbol && null != Symbol.toPrimitive && "function" == typeof t[Symbol.toPrimitive]) return e.from(t[Symbol.toPrimitive]("string"), r, o); throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof t) } function i(e) { if ("number" != typeof e) throw new TypeError('"size" argument must be of type number'); if (e < 0) throw new RangeError('The value "' + e + '" is invalid for option "size"') } function s(e) { return i(e), n(e < 0 ? 0 : 0 | l(e)) } function a(e) { for (var t = e.length < 0 ? 0 : 0 | l(e.length), r = n(t), o = 0; o < t; o += 1)r[o] = 255 & e[o]; return r } function l(e) { if (e >= r) throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + r.toString(16) + " bytes"); return 0 | e } function u(t, r) { if (e.isBuffer(t)) return t.length; if (ArrayBuffer.isView(t) || U(t, ArrayBuffer)) return t.byteLength; if ("string" != typeof t) throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + typeof t); var n = t.length, o = arguments.length > 2 && !0 === arguments[2]; if (!o && 0 === n) return 0; for (var i = !1; ;)switch (r) { case "ascii": case "latin1": case "binary": return n; case "utf8": case "utf-8": return O(t).length; case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return 2 * n; case "hex": return n >>> 1; case "base64": return R(t).length; default: if (i) return o ? -1 : O(t).length; r = ("" + r).toLowerCase(), i = !0 } } function c(e, t, r) { var n = e[t]; e[t] = e[r], e[r] = n } function p(t, r, n, o, i) { if (0 === t.length) return -1; if ("string" == typeof n ? (o = n, n = 0) : n > 2147483647 ? n = 2147483647 : n < -2147483648 && (n = -2147483648), D(n = +n) && (n = i ? 0 : t.length - 1), n < 0 && (n = t.length + n), n >= t.length) { if (i) return -1; n = t.length - 1 } else if (n < 0) { if (!i) return -1; n = 0 } if ("string" == typeof r && (r = e.from(r, o)), e.isBuffer(r)) return 0 === r.length ? -1 : d(t, r, n, o, i); if ("number" == typeof r) return r &= 255, "function" == typeof Uint8Array.prototype.indexOf ? i ? Uint8Array.prototype.indexOf.call(t, r, n) : Uint8Array.prototype.lastIndexOf.call(t, r, n) : d(t, [r], n, o, i); throw new TypeError("val must be string, number or Buffer") } function d(e, t, r, n, o) { var i, s = 1, a = e.length, l = t.length; if (void 0 !== n && ("ucs2" === (n = String(n).toLowerCase()) || "ucs-2" === n || "utf16le" === n || "utf-16le" === n)) { if (e.length < 2 || t.length < 2) return -1; s = 2, a /= 2, l /= 2, r /= 2 } function u(e, t) { return 1 === s ? e[t] : e.readUInt16BE(t * s) } if (o) { var c = -1; for (i = r; i < a; i++)if (u(e, i) === u(t, -1 === c ? 0 : i - c)) { if (-1 === c && (c = i), i - c + 1 === l) return c * s } else -1 !== c && (i -= i - c), c = -1 } else for (r + l > a && (r = a - l), i = r; i >= 0; i--) { for (var p = !0, d = 0; d < l; d++)if (u(e, i + d) !== u(t, d)) { p = !1; break } if (p) return i } return -1 } function _(e, t, r, n) { r = Number(r) || 0; var o = e.length - r; n ? (n = Number(n)) > o && (n = o) : n = o; var i = t.length; n > i / 2 && (n = i / 2); for (var s = 0; s < n; ++s) { var a = parseInt(t.substr(2 * s, 2), 16); if (D(a)) return s; e[r + s] = a } return s } function h(e, t, r, n) { return I(O(t, e.length - r), e, r, n) } function f(e, t, r, n) { return I(function (e) { for (var t = [], r = 0; r < e.length; ++r)t.push(255 & e.charCodeAt(r)); return t }(t), e, r, n) } function g(e, t, r, n) { return f(e, t, r, n) } function m(e, t, r, n) { return I(R(t), e, r, n) } function y(e, t, r, n) { return I(function (e, t) { for (var r, n, o, i = [], s = 0; s < e.length && !((t -= 2) < 0); ++s)n = (r = e.charCodeAt(s)) >> 8, o = r % 256, i.push(o), i.push(n); return i }(t, e.length - r), e, r, n) } function v(e, t, r) { return 0 === t && r === e.length ? _$base64Js_5.fromByteArray(e) : _$base64Js_5.fromByteArray(e.slice(t, r)) } function b(e, t, r) { r = Math.min(e.length, r); for (var n = [], o = t; o < r;) { var i, s, a, l, u = e[o], c = null, p = u > 239 ? 4 : u > 223 ? 3 : u > 191 ? 2 : 1; if (o + p <= r) switch (p) { case 1: u < 128 && (c = u); break; case 2: 128 == (192 & (i = e[o + 1])) && (l = (31 & u) << 6 | 63 & i) > 127 && (c = l); break; case 3: i = e[o + 1], s = e[o + 2], 128 == (192 & i) && 128 == (192 & s) && (l = (15 & u) << 12 | (63 & i) << 6 | 63 & s) > 2047 && (l < 55296 || l > 57343) && (c = l); break; case 4: i = e[o + 1], s = e[o + 2], a = e[o + 3], 128 == (192 & i) && 128 == (192 & s) && 128 == (192 & a) && (l = (15 & u) << 18 | (63 & i) << 12 | (63 & s) << 6 | 63 & a) > 65535 && l < 1114112 && (c = l) }null === c ? (c = 65533, p = 1) : c > 65535 && (c -= 65536, n.push(c >>> 10 & 1023 | 55296), c = 56320 | 1023 & c), n.push(c), o += p } return function (e) { var t = e.length; if (t <= w) return String.fromCharCode.apply(String, e); for (var r = "", n = 0; n < t;)r += String.fromCharCode.apply(String, e.slice(n, n += w)); return r }(n) } e.TYPED_ARRAY_SUPPORT = function () { try { var e = new Uint8Array(1); return e.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } }, 42 === e.foo() } catch (t) { return !1 } }(), e.TYPED_ARRAY_SUPPORT || "undefined" == typeof console || "function" != typeof console.error || console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."), Object.defineProperty(e.prototype, "parent", { enumerable: !0, get: function () { if (e.isBuffer(this)) return this.buffer } }), Object.defineProperty(e.prototype, "offset", { enumerable: !0, get: function () { if (e.isBuffer(this)) return this.byteOffset } }), "undefined" != typeof Symbol && null != Symbol.species && e[Symbol.species] === e && Object.defineProperty(e, Symbol.species, { value: null, configurable: !0, enumerable: !1, writable: !1 }), e.poolSize = 8192, e.from = function (e, t, r) { return o(e, t, r) }, e.prototype.__proto__ = Uint8Array.prototype, e.__proto__ = Uint8Array, e.alloc = function (e, t, r) { return function (e, t, r) { return i(e), e <= 0 ? n(e) : void 0 !== t ? "string" == typeof r ? n(e).fill(t, r) : n(e).fill(t) : n(e) }(e, t, r) }, e.allocUnsafe = function (e) { return s(e) }, e.allocUnsafeSlow = function (e) { return s(e) }, e.isBuffer = function (t) { return null != t && !0 === t._isBuffer && t !== e.prototype }, e.compare = function (t, r) { if (U(t, Uint8Array) && (t = e.from(t, t.offset, t.byteLength)), U(r, Uint8Array) && (r = e.from(r, r.offset, r.byteLength)), !e.isBuffer(t) || !e.isBuffer(r)) throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array'); if (t === r) return 0; for (var n = t.length, o = r.length, i = 0, s = Math.min(n, o); i < s; ++i)if (t[i] !== r[i]) { n = t[i], o = r[i]; break } return n < o ? -1 : o < n ? 1 : 0 }, e.isEncoding = function (e) { switch (String(e).toLowerCase()) { case "hex": case "utf8": case "utf-8": case "ascii": case "latin1": case "binary": case "base64": case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return !0; default: return !1 } }, e.concat = function (t, r) { if (!Array.isArray(t)) throw new TypeError('"list" argument must be an Array of Buffers'); if (0 === t.length) return e.alloc(0); var n; if (void 0 === r) for (r = 0, n = 0; n < t.length; ++n)r += t[n].length; var o = e.allocUnsafe(r), i = 0; for (n = 0; n < t.length; ++n) { var s = t[n]; if (U(s, Uint8Array) && (s = e.from(s)), !e.isBuffer(s)) throw new TypeError('"list" argument must be an Array of Buffers'); s.copy(o, i), i += s.length } return o }, e.byteLength = u, e.prototype._isBuffer = !0, e.prototype.swap16 = function () { var e = this.length; if (e % 2 != 0) throw new RangeError("Buffer size must be a multiple of 16-bits"); for (var t = 0; t < e; t += 2)c(this, t, t + 1); return this }, e.prototype.swap32 = function () { var e = this.length; if (e % 4 != 0) throw new RangeError("Buffer size must be a multiple of 32-bits"); for (var t = 0; t < e; t += 4)c(this, t, t + 3), c(this, t + 1, t + 2); return this }, e.prototype.swap64 = function () { var e = this.length; if (e % 8 != 0) throw new RangeError("Buffer size must be a multiple of 64-bits"); for (var t = 0; t < e; t += 8)c(this, t, t + 7), c(this, t + 1, t + 6), c(this, t + 2, t + 5), c(this, t + 3, t + 4); return this }, e.prototype.toString = function () { var e = this.length; return 0 === e ? "" : 0 === arguments.length ? b(this, 0, e) : function (e, t, r) { var n = !1; if ((void 0 === t || t < 0) && (t = 0), t > this.length) return ""; if ((void 0 === r || r > this.length) && (r = this.length), r <= 0) return ""; if ((r >>>= 0) <= (t >>>= 0)) return ""; for (e || (e = "utf8"); ;)switch (e) { case "hex": return E(this, t, r); case "utf8": case "utf-8": return b(this, t, r); case "ascii": return S(this, t, r); case "latin1": case "binary": return P(this, t, r); case "base64": return v(this, t, r); case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return C(this, t, r); default: if (n) throw new TypeError("Unknown encoding: " + e); e = (e + "").toLowerCase(), n = !0 } }.apply(this, arguments) }, e.prototype.toLocaleString = e.prototype.toString, e.prototype.equals = function (t) { if (!e.isBuffer(t)) throw new TypeError("Argument must be a Buffer"); return this === t || 0 === e.compare(this, t) }, e.prototype.inspect = function () { var e = "", r = t.INSPECT_MAX_BYTES; return e = this.toString("hex", 0, r).replace(/(.{2})/g, "$1 ").trim(), this.length > r && (e += " ... "), "<Buffer " + e + ">" }, e.prototype.compare = function (t, r, n, o, i) { if (U(t, Uint8Array) && (t = e.from(t, t.offset, t.byteLength)), !e.isBuffer(t)) throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type ' + typeof t); if (void 0 === r && (r = 0), void 0 === n && (n = t ? t.length : 0), void 0 === o && (o = 0), void 0 === i && (i = this.length), r < 0 || n > t.length || o < 0 || i > this.length) throw new RangeError("out of range index"); if (o >= i && r >= n) return 0; if (o >= i) return -1; if (r >= n) return 1; if (this === t) return 0; for (var s = (i >>>= 0) - (o >>>= 0), a = (n >>>= 0) - (r >>>= 0), l = Math.min(s, a), u = this.slice(o, i), c = t.slice(r, n), p = 0; p < l; ++p)if (u[p] !== c[p]) { s = u[p], a = c[p]; break } return s < a ? -1 : a < s ? 1 : 0 }, e.prototype.includes = function (e, t, r) { return -1 !== this.indexOf(e, t, r) }, e.prototype.indexOf = function (e, t, r) { return p(this, e, t, r, !0) }, e.prototype.lastIndexOf = function (e, t, r) { return p(this, e, t, r, !1) }, e.prototype.write = function (e, t, r, n) { if (void 0 === t) n = "utf8", r = this.length, t = 0; else if (void 0 === r && "string" == typeof t) n = t, r = this.length, t = 0; else { if (!isFinite(t)) throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported"); t >>>= 0, isFinite(r) ? (r >>>= 0, void 0 === n && (n = "utf8")) : (n = r, r = void 0) } var o = this.length - t; if ((void 0 === r || r > o) && (r = o), e.length > 0 && (r < 0 || t < 0) || t > this.length) throw new RangeError("Attempt to write outside buffer bounds"); n || (n = "utf8"); for (var i = !1; ;)switch (n) { case "hex": return _(this, e, t, r); case "utf8": case "utf-8": return h(this, e, t, r); case "ascii": return f(this, e, t, r); case "latin1": case "binary": return g(this, e, t, r); case "base64": return m(this, e, t, r); case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return y(this, e, t, r); default: if (i) throw new TypeError("Unknown encoding: " + n); n = ("" + n).toLowerCase(), i = !0 } }, e.prototype.toJSON = function () { return { type: "Buffer", data: Array.prototype.slice.call(this._arr || this, 0) } }; var w = 4096; function S(e, t, r) { var n = ""; r = Math.min(e.length, r); for (var o = t; o < r; ++o)n += String.fromCharCode(127 & e[o]); return n } function P(e, t, r) { var n = ""; r = Math.min(e.length, r); for (var o = t; o < r; ++o)n += String.fromCharCode(e[o]); return n } function E(e, t, r) { var n, o = e.length; (!t || t < 0) && (t = 0), (!r || r < 0 || r > o) && (r = o); for (var i = "", s = t; s < r; ++s)i += (n = e[s]) < 16 ? "0" + n.toString(16) : n.toString(16); return i } function C(e, t, r) { for (var n = e.slice(t, r), o = "", i = 0; i < n.length; i += 2)o += String.fromCharCode(n[i] + 256 * n[i + 1]); return o } function T(e, t, r) { if (e % 1 != 0 || e < 0) throw new RangeError("offset is not uint"); if (e + t > r) throw new RangeError("Trying to access beyond buffer length") } function $(t, r, n, o, i, s) { if (!e.isBuffer(t)) throw new TypeError('"buffer" argument must be a Buffer instance'); if (r > i || r < s) throw new RangeError('"value" argument is out of bounds'); if (n + o > t.length) throw new RangeError("Index out of range") } function k(e, t, r, n, o, i) { if (r + n > e.length) throw new RangeError("Index out of range"); if (r < 0) throw new RangeError("Index out of range") } function F(e, t, r, n, o) { return t = +t, r >>>= 0, o || k(e, 0, r, 4), _$ieee754_41.write(e, t, r, n, 23, 4), r + 4 } function A(e, t, r, n, o) { return t = +t, r >>>= 0, o || k(e, 0, r, 8), _$ieee754_41.write(e, t, r, n, 52, 8), r + 8 } e.prototype.slice = function (t, r) { var n = this.length; (t = ~~t) < 0 ? (t += n) < 0 && (t = 0) : t > n && (t = n), (r = void 0 === r ? n : ~~r) < 0 ? (r += n) < 0 && (r = 0) : r > n && (r = n), r < t && (r = t); var o = this.subarray(t, r); return o.__proto__ = e.prototype, o }, e.prototype.readUIntLE = function (e, t, r) { e >>>= 0, t >>>= 0, r || T(e, t, this.length); for (var n = this[e], o = 1, i = 0; ++i < t && (o *= 256);)n += this[e + i] * o; return n }, e.prototype.readUIntBE = function (e, t, r) { e >>>= 0, t >>>= 0, r || T(e, t, this.length); for (var n = this[e + --t], o = 1; t > 0 && (o *= 256);)n += this[e + --t] * o; return n }, e.prototype.readUInt8 = function (e, t) { return e >>>= 0, t || T(e, 1, this.length), this[e] }, e.prototype.readUInt16LE = function (e, t) { return e >>>= 0, t || T(e, 2, this.length), this[e] | this[e + 1] << 8 }, e.prototype.readUInt16BE = function (e, t) { return e >>>= 0, t || T(e, 2, this.length), this[e] << 8 | this[e + 1] }, e.prototype.readUInt32LE = function (e, t) { return e >>>= 0, t || T(e, 4, this.length), (this[e] | this[e + 1] << 8 | this[e + 2] << 16) + 16777216 * this[e + 3] }, e.prototype.readUInt32BE = function (e, t) { return e >>>= 0, t || T(e, 4, this.length), 16777216 * this[e] + (this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3]) }, e.prototype.readIntLE = function (e, t, r) { e >>>= 0, t >>>= 0, r || T(e, t, this.length); for (var n = this[e], o = 1, i = 0; ++i < t && (o *= 256);)n += this[e + i] * o; return n >= (o *= 128) && (n -= Math.pow(2, 8 * t)), n }, e.prototype.readIntBE = function (e, t, r) { e >>>= 0, t >>>= 0, r || T(e, t, this.length); for (var n = t, o = 1, i = this[e + --n]; n > 0 && (o *= 256);)i += this[e + --n] * o; return i >= (o *= 128) && (i -= Math.pow(2, 8 * t)), i }, e.prototype.readInt8 = function (e, t) { return e >>>= 0, t || T(e, 1, this.length), 128 & this[e] ? -1 * (255 - this[e] + 1) : this[e] }, e.prototype.readInt16LE = function (e, t) { e >>>= 0, t || T(e, 2, this.length); var r = this[e] | this[e + 1] << 8; return 32768 & r ? 4294901760 | r : r }, e.prototype.readInt16BE = function (e, t) { e >>>= 0, t || T(e, 2, this.length); var r = this[e + 1] | this[e] << 8; return 32768 & r ? 4294901760 | r : r }, e.prototype.readInt32LE = function (e, t) { return e >>>= 0, t || T(e, 4, this.length), this[e] | this[e + 1] << 8 | this[e + 2] << 16 | this[e + 3] << 24 }, e.prototype.readInt32BE = function (e, t) { return e >>>= 0, t || T(e, 4, this.length), this[e] << 24 | this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3] }, e.prototype.readFloatLE = function (e, t) { return e >>>= 0, t || T(e, 4, this.length), _$ieee754_41.read(this, e, !0, 23, 4) }, e.prototype.readFloatBE = function (e, t) { return e >>>= 0, t || T(e, 4, this.length), _$ieee754_41.read(this, e, !1, 23, 4) }, e.prototype.readDoubleLE = function (e, t) { return e >>>= 0, t || T(e, 8, this.length), _$ieee754_41.read(this, e, !0, 52, 8) }, e.prototype.readDoubleBE = function (e, t) { return e >>>= 0, t || T(e, 8, this.length), _$ieee754_41.read(this, e, !1, 52, 8) }, e.prototype.writeUIntLE = function (e, t, r, n) { e = +e, t >>>= 0, r >>>= 0, n || $(this, e, t, r, Math.pow(2, 8 * r) - 1, 0); var o = 1, i = 0; for (this[t] = 255 & e; ++i < r && (o *= 256);)this[t + i] = e / o & 255; return t + r }, e.prototype.writeUIntBE = function (e, t, r, n) { e = +e, t >>>= 0, r >>>= 0, n || $(this, e, t, r, Math.pow(2, 8 * r) - 1, 0); var o = r - 1, i = 1; for (this[t + o] = 255 & e; --o >= 0 && (i *= 256);)this[t + o] = e / i & 255; return t + r }, e.prototype.writeUInt8 = function (e, t, r) { return e = +e, t >>>= 0, r || $(this, e, t, 1, 255, 0), this[t] = 255 & e, t + 1 }, e.prototype.writeUInt16LE = function (e, t, r) { return e = +e, t >>>= 0, r || $(this, e, t, 2, 65535, 0), this[t] = 255 & e, this[t + 1] = e >>> 8, t + 2 }, e.prototype.writeUInt16BE = function (e, t, r) { return e = +e, t >>>= 0, r || $(this, e, t, 2, 65535, 0), this[t] = e >>> 8, this[t + 1] = 255 & e, t + 2 }, e.prototype.writeUInt32LE = function (e, t, r) { return e = +e, t >>>= 0, r || $(this, e, t, 4, 4294967295, 0), this[t + 3] = e >>> 24, this[t + 2] = e >>> 16, this[t + 1] = e >>> 8, this[t] = 255 & e, t + 4 }, e.prototype.writeUInt32BE = function (e, t, r) { return e = +e, t >>>= 0, r || $(this, e, t, 4, 4294967295, 0), this[t] = e >>> 24, this[t + 1] = e >>> 16, this[t + 2] = e >>> 8, this[t + 3] = 255 & e, t + 4 }, e.prototype.writeIntLE = function (e, t, r, n) { if (e = +e, t >>>= 0, !n) { var o = Math.pow(2, 8 * r - 1); $(this, e, t, r, o - 1, -o) } var i = 0, s = 1, a = 0; for (this[t] = 255 & e; ++i < r && (s *= 256);)e < 0 && 0 === a && 0 !== this[t + i - 1] && (a = 1), this[t + i] = (e / s >> 0) - a & 255; return t + r }, e.prototype.writeIntBE = function (e, t, r, n) { if (e = +e, t >>>= 0, !n) { var o = Math.pow(2, 8 * r - 1); $(this, e, t, r, o - 1, -o) } var i = r - 1, s = 1, a = 0; for (this[t + i] = 255 & e; --i >= 0 && (s *= 256);)e < 0 && 0 === a && 0 !== this[t + i + 1] && (a = 1), this[t + i] = (e / s >> 0) - a & 255; return t + r }, e.prototype.writeInt8 = function (e, t, r) { return e = +e, t >>>= 0, r || $(this, e, t, 1, 127, -128), e < 0 && (e = 255 + e + 1), this[t] = 255 & e, t + 1 }, e.prototype.writeInt16LE = function (e, t, r) { return e = +e, t >>>= 0, r || $(this, e, t, 2, 32767, -32768), this[t] = 255 & e, this[t + 1] = e >>> 8, t + 2 }, e.prototype.writeInt16BE = function (e, t, r) { return e = +e, t >>>= 0, r || $(this, e, t, 2, 32767, -32768), this[t] = e >>> 8, this[t + 1] = 255 & e, t + 2 }, e.prototype.writeInt32LE = function (e, t, r) { return e = +e, t >>>= 0, r || $(this, e, t, 4, 2147483647, -2147483648), this[t] = 255 & e, this[t + 1] = e >>> 8, this[t + 2] = e >>> 16, this[t + 3] = e >>> 24, t + 4 }, e.prototype.writeInt32BE = function (e, t, r) { return e = +e, t >>>= 0, r || $(this, e, t, 4, 2147483647, -2147483648), e < 0 && (e = 4294967295 + e + 1), this[t] = e >>> 24, this[t + 1] = e >>> 16, this[t + 2] = e >>> 8, this[t + 3] = 255 & e, t + 4 }, e.prototype.writeFloatLE = function (e, t, r) { return F(this, e, t, !0, r) }, e.prototype.writeFloatBE = function (e, t, r) { return F(this, e, t, !1, r) }, e.prototype.writeDoubleLE = function (e, t, r) { return A(this, e, t, !0, r) }, e.prototype.writeDoubleBE = function (e, t, r) { return A(this, e, t, !1, r) }, e.prototype.copy = function (t, r, n, o) { if (!e.isBuffer(t)) throw new TypeError("argument should be a Buffer"); if (n || (n = 0), o || 0 === o || (o = this.length), r >= t.length && (r = t.length), r || (r = 0), o > 0 && o < n && (o = n), o === n) return 0; if (0 === t.length || 0 === this.length) return 0; if (r < 0) throw new RangeError("targetStart out of bounds"); if (n < 0 || n >= this.length) throw new RangeError("Index out of range"); if (o < 0) throw new RangeError("sourceEnd out of bounds"); o > this.length && (o = this.length), t.length - r < o - n && (o = t.length - r + n); var i = o - n; if (this === t && "function" == typeof Uint8Array.prototype.copyWithin) this.copyWithin(r, n, o); else if (this === t && n < r && r < o) for (var s = i - 1; s >= 0; --s)t[s + r] = this[s + n]; else Uint8Array.prototype.set.call(t, this.subarray(n, o), r); return i }, e.prototype.fill = function (t, r, n, o) { if ("string" == typeof t) { if ("string" == typeof r ? (o = r, r = 0, n = this.length) : "string" == typeof n && (o = n, n = this.length), void 0 !== o && "string" != typeof o) throw new TypeError("encoding must be a string"); if ("string" == typeof o && !e.isEncoding(o)) throw new TypeError("Unknown encoding: " + o); if (1 === t.length) { var i = t.charCodeAt(0); ("utf8" === o && i < 128 || "latin1" === o) && (t = i) } } else "number" == typeof t && (t &= 255); if (r < 0 || this.length < r || this.length < n) throw new RangeError("Out of range index"); if (n <= r) return this; var s; if (r >>>= 0, n = void 0 === n ? this.length : n >>> 0, t || (t = 0), "number" == typeof t) for (s = r; s < n; ++s)this[s] = t; else { var a = e.isBuffer(t) ? t : e.from(t, o), l = a.length; if (0 === l) throw new TypeError('The value "' + t + '" is invalid for argument "value"'); for (s = 0; s < n - r; ++s)this[s + r] = a[s % l] } return this }; var x = /[^+\/0-9A-Za-z-_]/g; function O(e, t) { var r; t = t || 1 / 0; for (var n = e.length, o = null, i = [], s = 0; s < n; ++s) { if ((r = e.charCodeAt(s)) > 55295 && r < 57344) { if (!o) { if (r > 56319) { (t -= 3) > -1 && i.push(239, 191, 189); continue } if (s + 1 === n) { (t -= 3) > -1 && i.push(239, 191, 189); continue } o = r; continue } if (r < 56320) { (t -= 3) > -1 && i.push(239, 191, 189), o = r; continue } r = 65536 + (o - 55296 << 10 | r - 56320) } else o && (t -= 3) > -1 && i.push(239, 191, 189); if (o = null, r < 128) { if ((t -= 1) < 0) break; i.push(r) } else if (r < 2048) { if ((t -= 2) < 0) break; i.push(r >> 6 | 192, 63 & r | 128) } else if (r < 65536) { if ((t -= 3) < 0) break; i.push(r >> 12 | 224, r >> 6 & 63 | 128, 63 & r | 128) } else { if (!(r < 1114112)) throw new Error("Invalid code point"); if ((t -= 4) < 0) break; i.push(r >> 18 | 240, r >> 12 & 63 | 128, r >> 6 & 63 | 128, 63 & r | 128) } } return i } function R(e) { return _$base64Js_5.toByteArray(function (e) { if ((e = (e = e.split("=")[0]).trim().replace(x, "")).length < 2) return ""; for (; e.length % 4 != 0;)e += "="; return e }(e)) } function I(e, t, r, n) { for (var o = 0; o < n && !(o + r >= t.length || o >= e.length); ++o)t[o + r] = e[o]; return o } function U(e, t) { return e instanceof t || null != e && null != e.constructor && null != e.constructor.name && e.constructor.name === t.name } function D(e) { return e != e } }).call(this, _$buffer_8({}).Buffer) }), _$browser_54 = {}, cachedSetTimeout, cachedClearTimeout, process = _$browser_54 = {}; function defaultSetTimout() { throw new Error("setTimeout has not been defined") } function defaultClearTimeout() { throw new Error("clearTimeout has not been defined") } function runTimeout(e) { if (cachedSetTimeout === setTimeout) return setTimeout(e, 0); if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) return cachedSetTimeout = setTimeout, setTimeout(e, 0); try { return cachedSetTimeout(e, 0) } catch (t) { try { return cachedSetTimeout.call(null, e, 0) } catch (t) { return cachedSetTimeout.call(this, e, 0) } } } !function () { try { cachedSetTimeout = "function" == typeof setTimeout ? setTimeout : defaultSetTimout } catch (e) { cachedSetTimeout = defaultSetTimout } try { cachedClearTimeout = "function" == typeof clearTimeout ? clearTimeout : defaultClearTimeout } catch (e) { cachedClearTimeout = defaultClearTimeout } }(); var currentQueue, queue = [], draining = !1, queueIndex = -1; function cleanUpNextTick() { draining && currentQueue && (draining = !1, currentQueue.length ? queue = currentQueue.concat(queue) : queueIndex = -1, queue.length && drainQueue()) } function drainQueue() { if (!draining) { var e = runTimeout(cleanUpNextTick); draining = !0; for (var t = queue.length; t;) { for (currentQueue = queue, queue = []; ++queueIndex < t;)currentQueue && currentQueue[queueIndex].run(); queueIndex = -1, t = queue.length } currentQueue = null, draining = !1, function (e) { if (cachedClearTimeout === clearTimeout) return clearTimeout(e); if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) return cachedClearTimeout = clearTimeout, clearTimeout(e); try { cachedClearTimeout(e) } catch (t) { try { return cachedClearTimeout.call(null, e) } catch (t) { return cachedClearTimeout.call(this, e) } } }(e) } } function Item(e, t) { this.fun = e, this.array = t } function noop() { } process.nextTick = function (e) { var t = new Array(arguments.length - 1); if (arguments.length > 1) for (var r = 1; r < arguments.length; r++)t[r - 1] = arguments[r]; queue.push(new Item(e, t)), 1 !== queue.length || draining || runTimeout(drainQueue) }, Item.prototype.run = function () { this.fun.apply(null, this.array) }, process.title = "browser", process.browser = !0, process.env = {}, process.argv = [], process.version = "", process.versions = {}, process.on = noop, process.addListener = noop, process.once = noop, process.off = noop, process.removeListener = noop, process.removeAllListeners = noop, process.emit = noop, process.prependListener = noop, process.prependOnceListener = noop, process.listeners = function (e) { return [] }, process.binding = function (e) { throw new Error("process.binding is not supported") }, process.cwd = function () { return "/" }, process.chdir = function (e) { throw new Error("process.chdir is not supported") }, process.umask = function () { return 0 }; var _$es6Promise_34 = { exports: {} }; (function (e, t) { !function (e, t) { "object" == typeof _$es6Promise_34.exports ? _$es6Promise_34.exports = t() : "function" == typeof define && define.amd ? define(t) : e.ES6Promise = t() }(this, function () { "use strict"; function r(e) { return "function" == typeof e } var n = Array.isArray ? Array.isArray : function (e) { return "[object Array]" === Object.prototype.toString.call(e) }, o = 0, i = void 0, s = void 0, a = function (e, t) { h[o] = e, h[o + 1] = t, 2 === (o += 2) && (s ? s(f) : b()) }, l = "undefined" != typeof window ? window : void 0, u = l || {}, c = u.MutationObserver || u.WebKitMutationObserver, p = "undefined" == typeof self && void 0 !== e && "[object process]" === {}.toString.call(e), d = "undefined" != typeof Uint8ClampedArray && "undefined" != typeof importScripts && "undefined" != typeof MessageChannel; function _() { var e = setTimeout; return function () { return e(f, 1) } } var h = new Array(1e3); function f() { for (var e = 0; e < o; e += 2)(0, h[e])(h[e + 1]), h[e] = void 0, h[e + 1] = void 0; o = 0 } var g, m, y, v, b = void 0; function w(e, t) { var r = this, n = new this.constructor(E); void 0 === n[P] && M(n); var o = r._state; if (o) { var i = arguments[o - 1]; a(function () { return B(o, n, i, r._result) }) } else U(r, n, e, t); return n } function S(e) { if (e && "object" == typeof e && e.constructor === this) return e; var t = new this(E); return x(t, e), t } p ? b = function () { return e.nextTick(f) } : c ? (m = 0, y = new c(f), v = document.createTextNode(""), y.observe(v, { characterData: !0 }), b = function () { v.data = m = ++m % 2 }) : d ? ((g = new MessageChannel).port1.onmessage = f, b = function () { return g.port2.postMessage(0) }) : b = void 0 === l ? function () { try { var e = Function("return this")().require("vertx"); return void 0 !== (i = e.runOnLoop || e.runOnContext) ? function () { i(f) } : _() } catch (t) { return _() } }() : _(); var P = Math.random().toString(36).substring(2); function E() { } var C = void 0, T = 1, $ = 2, k = { error: null }; function F(e) { try { return e.then } catch (error) { return k.error = error, k } } function A(e, t, n) { t.constructor === e.constructor && n === w && t.constructor.resolve === S ? function (e, t) { t._state === T ? R(e, t._result) : t._state === $ ? I(e, t._result) : U(t, void 0, function (t) { return x(e, t) }, function (t) { return I(e, t) }) }(e, t) : n === k ? (I(e, k.error), k.error = null) : void 0 === n ? R(e, t) : r(n) ? function (e, t, r) { a(function (e) { var n = !1, o = function (r, o, i, s) { try { r.call(o, function (r) { n || (n = !0, t !== r ? x(e, r) : R(e, r)) }, function (t) { n || (n = !0, I(e, t)) }) } catch (a) { return a } }(r, t, 0, 0, e._label); !n && o && (n = !0, I(e, o)) }, e) }(e, t, n) : R(e, t) } function x(e, t) { var r, n; e === t ? I(e, new TypeError("You cannot resolve a promise with itself")) : (n = typeof (r = t), null === r || "object" !== n && "function" !== n ? R(e, t) : A(e, t, F(t))) } function O(e) { e._onerror && e._onerror(e._result), D(e) } function R(e, t) { e._state === C && (e._result = t, e._state = T, 0 !== e._subscribers.length && a(D, e)) } function I(e, t) { e._state === C && (e._state = $, e._result = t, a(O, e)) } function U(e, t, r, n) { var o = e._subscribers, i = o.length; e._onerror = null, o[i] = t, o[i + T] = r, o[i + $] = n, 0 === i && e._state && a(D, e) } function D(e) { var t = e._subscribers, r = e._state; if (0 !== t.length) { for (var n = void 0, o = void 0, i = e._result, s = 0; s < t.length; s += 3)n = t[s], o = t[s + r], n ? B(r, n, o, i) : o(i); e._subscribers.length = 0 } } function B(e, t, n, o) { var i = r(n), s = void 0, a = void 0, l = void 0, u = void 0; if (i) { if ((s = function (e, t) { try { return e(t) } catch (r) { return k.error = r, k } }(n, o)) === k ? (u = !0, a = s.error, s.error = null) : l = !0, t === s) return void I(t, new TypeError("A promises callback cannot return that same promise.")) } else s = o, l = !0; t._state !== C || (i && l ? x(t, s) : u ? I(t, a) : e === T ? R(t, s) : e === $ && I(t, s)) } var L = 0; function M(e) { e[P] = L++, e._state = void 0, e._result = void 0, e._subscribers = [] } var N = function () { function e(e, t) { this._instanceConstructor = e, this.promise = new e(E), this.promise[P] || M(this.promise), n(t) ? (this.length = t.length, this._remaining = t.length, this._result = new Array(this.length), 0 === this.length ? R(this.promise, this._result) : (this.length = this.length || 0, this._enumerate(t), 0 === this._remaining && R(this.promise, this._result))) : I(this.promise, new Error("Array Methods must be provided an Array")) } return e.prototype._enumerate = function (e) { for (var t = 0; this._state === C && t < e.length; t++)this._eachEntry(e[t], t) }, e.prototype._eachEntry = function (e, t) { var r = this._instanceConstructor, n = r.resolve; if (n === S) { var o = F(e); if (o === w && e._state !== C) this._settledAt(e._state, t, e._result); else if ("function" != typeof o) this._remaining--, this._result[t] = e; else if (r === j) { var i = new r(E); A(i, e, o), this._willSettleAt(i, t) } else this._willSettleAt(new r(function (t) { return t(e) }), t) } else this._willSettleAt(n(e), t) }, e.prototype._settledAt = function (e, t, r) { var n = this.promise; n._state === C && (this._remaining--, e === $ ? I(n, r) : this._result[t] = r), 0 === this._remaining && R(n, this._result) }, e.prototype._willSettleAt = function (e, t) { var r = this; U(e, void 0, function (e) { return r._settledAt(T, t, e) }, function (e) { return r._settledAt($, t, e) }) }, e }(), j = function () { function e(t) { this[P] = L++, this._result = this._state = void 0, this._subscribers = [], E !== t && ("function" != typeof t && function () { throw new TypeError("You must pass a resolver function as the first argument to the promise constructor") }(), this instanceof e ? function (e, t) { try { t(function (t) { x(e, t) }, function (t) { I(e, t) }) } catch (r) { I(e, r) } }(this, t) : function () { throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.") }()) } return e.prototype.catch = function (e) { return this.then(null, e) }, e.prototype.finally = function (e) { var t = this.constructor; return r(e) ? this.then(function (r) { return t.resolve(e()).then(function () { return r }) }, function (r) { return t.resolve(e()).then(function () { throw r }) }) : this.then(e, e) }, e }(); return j.prototype.then = w, j.all = function (e) { return new N(this, e).promise }, j.race = function (e) { var t = this; return n(e) ? new t(function (r, n) { for (var o = e.length, i = 0; i < o; i++)t.resolve(e[i]).then(r, n) }) : new t(function (e, t) { return t(new TypeError("You must pass an array to race.")) }) }, j.resolve = S, j.reject = function (e) { var t = new this(E); return I(t, e), t }, j._setScheduler = function (e) { s = e }, j._setAsap = function (e) { a = e }, j._asap = a, j.polyfill = function () { var e = void 0; if (void 0 !== t) e = t; else if ("undefined" != typeof self) e = self; else try { e = Function("return this")() } catch (o) { throw new Error("polyfill failed because global object is unavailable in this environment") } var r = e.Promise; if (r) { var n = null; try { n = Object.prototype.toString.call(r.resolve()) } catch (o) { } if ("[object Promise]" === n && !r.cast) return } e.Promise = j }, j.Promise = j, j }) }).call(this, _$browser_54, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}), _$es6Promise_34 = _$es6Promise_34.exports; var _$auto_33 = _$es6Promise_34.polyfill(), _$fetchUmd_77 = { exports: {} }, __global_77, factory; __global_77 = this, factory = function (e) { "use strict"; var t = { searchParams: "URLSearchParams" in self, iterable: "Symbol" in self && "iterator" in Symbol, blob: "FileReader" in self && "Blob" in self && function () { try { return new Blob, !0 } catch (e) { return !1 } }(), formData: "FormData" in self, arrayBuffer: "ArrayBuffer" in self }; if (t.arrayBuffer) var r = ["[object Int8Array]", "[object Uint8Array]", "[object Uint8ClampedArray]", "[object Int16Array]", "[object Uint16Array]", "[object Int32Array]", "[object Uint32Array]", "[object Float32Array]", "[object Float64Array]"], n = ArrayBuffer.isView || function (e) { return e && r.indexOf(Object.prototype.toString.call(e)) > -1 }; function o(e) { if ("string" != typeof e && (e = String(e)), /[^a-z0-9\-#$%&'*+.^_`|~]/i.test(e)) throw new TypeError("Invalid character in header field name"); return e.toLowerCase() } function i(e) { return "string" != typeof e && (e = String(e)), e } function s(e) { var r = { next: function () { var t = e.shift(); return { done: void 0 === t, value: t } } }; return t.iterable && (r[Symbol.iterator] = function () { return r }), r } function a(e) { this.map = {}, e instanceof a ? e.forEach(function (e, t) { this.append(t, e) }, this) : Array.isArray(e) ? e.forEach(function (e) { this.append(e[0], e[1]) }, this) : e && Object.getOwnPropertyNames(e).forEach(function (t) { this.append(t, e[t]) }, this) } function l(e) { if (e.bodyUsed) return Promise.reject(new TypeError("Already read")); e.bodyUsed = !0 } function u(e) { return new Promise(function (t, r) { e.onload = function () { t(e.result) }, e.onerror = function () { r(e.error) } }) } function c(e) { var t = new FileReader, r = u(t); return t.readAsArrayBuffer(e), r } function p(e) { if (e.slice) return e.slice(0); var t = new Uint8Array(e.byteLength); return t.set(new Uint8Array(e)), t.buffer } function d() { return this.bodyUsed = !1, this._initBody = function (e) { var r; this._bodyInit = e, e ? "string" == typeof e ? this._bodyText = e : t.blob && Blob.prototype.isPrototypeOf(e) ? this._bodyBlob = e : t.formData && FormData.prototype.isPrototypeOf(e) ? this._bodyFormData = e : t.searchParams && URLSearchParams.prototype.isPrototypeOf(e) ? this._bodyText = e.toString() : t.arrayBuffer && t.blob && (r = e) && DataView.prototype.isPrototypeOf(r) ? (this._bodyArrayBuffer = p(e.buffer), this._bodyInit = new Blob([this._bodyArrayBuffer])) : t.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(e) || n(e)) ? this._bodyArrayBuffer = p(e) : this._bodyText = e = Object.prototype.toString.call(e) : this._bodyText = "", this.headers.get("content-type") || ("string" == typeof e ? this.headers.set("content-type", "text/plain;charset=UTF-8") : this._bodyBlob && this._bodyBlob.type ? this.headers.set("content-type", this._bodyBlob.type) : t.searchParams && URLSearchParams.prototype.isPrototypeOf(e) && this.headers.set("content-type", "application/x-www-form-urlencoded;charset=UTF-8")) }, t.blob && (this.blob = function () { var e = l(this); if (e) return e; if (this._bodyBlob) return Promise.resolve(this._bodyBlob); if (this._bodyArrayBuffer) return Promise.resolve(new Blob([this._bodyArrayBuffer])); if (this._bodyFormData) throw new Error("could not read FormData body as blob"); return Promise.resolve(new Blob([this._bodyText])) }, this.arrayBuffer = function () { return this._bodyArrayBuffer ? l(this) || Promise.resolve(this._bodyArrayBuffer) : this.blob().then(c) }), this.text = function () { var e, t, r, n = l(this); if (n) return n; if (this._bodyBlob) return e = this._bodyBlob, r = u(t = new FileReader), t.readAsText(e), r; if (this._bodyArrayBuffer) return Promise.resolve(function (e) { for (var t = new Uint8Array(e), r = new Array(t.length), n = 0; n < t.length; n++)r[n] = String.fromCharCode(t[n]); return r.join("") }(this._bodyArrayBuffer)); if (this._bodyFormData) throw new Error("could not read FormData body as text"); return Promise.resolve(this._bodyText) }, t.formData && (this.formData = function () { return this.text().then(f) }), this.json = function () { return this.text().then(JSON.parse) }, this } a.prototype.append = function (e, t) { e = o(e), t = i(t); var r = this.map[e]; this.map[e] = r ? r + ", " + t : t }, a.prototype.delete = function (e) { delete this.map[o(e)] }, a.prototype.get = function (e) { return e = o(e), this.has(e) ? this.map[e] : null }, a.prototype.has = function (e) { return this.map.hasOwnProperty(o(e)) }, a.prototype.set = function (e, t) { this.map[o(e)] = i(t) }, a.prototype.forEach = function (e, t) { for (var r in this.map) this.map.hasOwnProperty(r) && e.call(t, this.map[r], r, this) }, a.prototype.keys = function () { var e = []; return this.forEach(function (t, r) { e.push(r) }), s(e) }, a.prototype.values = function () { var e = []; return this.forEach(function (t) { e.push(t) }), s(e) }, a.prototype.entries = function () { var e = []; return this.forEach(function (t, r) { e.push([r, t]) }), s(e) }, t.iterable && (a.prototype[Symbol.iterator] = a.prototype.entries); var _ = ["DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT"]; function h(e, t) { var r, n, o = (t = t || {}).body; if (e instanceof h) { if (e.bodyUsed) throw new TypeError("Already read"); this.url = e.url, this.credentials = e.credentials, t.headers || (this.headers = new a(e.headers)), this.method = e.method, this.mode = e.mode, this.signal = e.signal, o || null == e._bodyInit || (o = e._bodyInit, e.bodyUsed = !0) } else this.url = String(e); if (this.credentials = t.credentials || this.credentials || "same-origin", !t.headers && this.headers || (this.headers = new a(t.headers)), this.method = (n = (r = t.method || this.method || "GET").toUpperCase(), _.indexOf(n) > -1 ? n : r), this.mode = t.mode || this.mode || null, this.signal = t.signal || this.signal, this.referrer = null, ("GET" === this.method || "HEAD" === this.method) && o) throw new TypeError("Body not allowed for GET or HEAD requests"); this._initBody(o) } function f(e) { var t = new FormData; return e.trim().split("&").forEach(function (e) { if (e) { var r = e.split("="), n = r.shift().replace(/\+/g, " "), o = r.join("=").replace(/\+/g, " "); t.append(decodeURIComponent(n), decodeURIComponent(o)) } }), t } function g(e, t) { t || (t = {}), this.type = "default", this.status = void 0 === t.status ? 200 : t.status, this.ok = this.status >= 200 && this.status < 300, this.statusText = "statusText" in t ? t.statusText : "OK", this.headers = new a(t.headers), this.url = t.url || "", this._initBody(e) } h.prototype.clone = function () { return new h(this, { body: this._bodyInit }) }, d.call(h.prototype), d.call(g.prototype), g.prototype.clone = function () { return new g(this._bodyInit, { status: this.status, statusText: this.statusText, headers: new a(this.headers), url: this.url }) }, g.error = function () { var e = new g(null, { status: 0, statusText: "" }); return e.type = "error", e }; var m = [301, 302, 303, 307, 308]; g.redirect = function (e, t) { if (-1 === m.indexOf(t)) throw new RangeError("Invalid status code"); return new g(null, { status: t, headers: { location: e } }) }, e.DOMException = self.DOMException; try { new e.DOMException } catch (err) { e.DOMException = function (e, t) { this.message = e, this.name = t; var r = Error(e); this.stack = r.stack }, e.DOMException.prototype = Object.create(Error.prototype), e.DOMException.prototype.constructor = e.DOMException } function y(r, n) { return new Promise(function (o, i) { var s = new h(r, n); if (s.signal && s.signal.aborted) return i(new e.DOMException("Aborted", "AbortError")); var l = new XMLHttpRequest; function u() { l.abort() } l.onload = function () { var e, t, r = { status: l.status, statusText: l.statusText, headers: (e = l.getAllResponseHeaders() || "", t = new a, e.replace(/\r?\n[\t ]+/g, " ").split(/\r?\n/).forEach(function (e) { var r = e.split(":"), n = r.shift().trim(); if (n) { var o = r.join(":").trim(); t.append(n, o) } }), t) }; r.url = "responseURL" in l ? l.responseURL : r.headers.get("X-Request-URL"); var n = "response" in l ? l.response : l.responseText; o(new g(n, r)) }, l.onerror = function () { i(new TypeError("Network request failed")) }, l.ontimeout = function () { i(new TypeError("Network request failed")) }, l.onabort = function () { i(new e.DOMException("Aborted", "AbortError")) }, l.open(s.method, s.url, !0), "include" === s.credentials ? l.withCredentials = !0 : "omit" === s.credentials && (l.withCredentials = !1), "responseType" in l && t.blob && (l.responseType = "blob"), s.headers.forEach(function (e, t) { l.setRequestHeader(t, e) }), s.signal && (s.signal.addEventListener("abort", u), l.onreadystatechange = function () { 4 === l.readyState && s.signal.removeEventListener("abort", u) }), l.send(void 0 === s._bodyInit ? null : s._bodyInit) }) } y.polyfill = !0, self.fetch || (self.fetch = y, self.Headers = a, self.Request = h, self.Response = g), e.Headers = a, e.Request = h, e.Response = g, e.fetch = y, Object.defineProperty(e, "__esModule", { value: !0 }) }, "object" == typeof _$fetchUmd_77.exports ? factory(_$fetchUmd_77.exports) : "function" == typeof define && define.amd ? define(["exports"], factory) : factory(__global_77.WHATWGFetch = {}), _$fetchUmd_77 = _$fetchUmd_77.exports; var _$hasProperty_218 = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }; function _extends() { return (_extends = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } var _$Translator_199 = function () { function e(e) { var t = this; this.locale = { strings: {}, pluralize: function (e) { return 1 === e ? 0 : 1 } }, Array.isArray(e) ? e.forEach(function (e) { return t._apply(e) }) : this._apply(e) } var t = e.prototype; return t._apply = function (e) { if (e && e.strings) { var t = this.locale; this.locale = _extends({}, t, { strings: _extends({}, t.strings, e.strings) }), this.locale.pluralize = e.pluralize || t.pluralize } }, t.interpolate = function (e, t) { var r = String.prototype, n = r.split, o = r.replace, i = /\$/g, s = [e]; for (var a in t) if ("_" !== a && _$hasProperty_218(t, a)) { var l = t[a]; "string" == typeof l && (l = o.call(t[a], i, "$$$$")), s = u(s, new RegExp("%\\{" + a + "\\}", "g"), l) } return s; function u(e, t, r) { var o = []; return e.forEach(function (e) { n.call(e, t).forEach(function (e, t, n) { "" !== e && o.push(e), t < n.length - 1 && o.push(r) }) }), o } }, t.translate = function (e, t) { return this.translateArray(e, t).join("") }, t.translateArray = function (e, t) { if (t && void 0 !== t.smart_count) { var r = this.locale.pluralize(t.smart_count); return this.interpolate(this.locale.strings[e][r], t) } return this.interpolate(this.locale.strings[e], t) }, e }(), _$namespaceEmitter_49 = function () { var e = {}, t = e._fns = {}; return e.emit = function (e, r, n, o, i, s, a) { var l = function (e) { for (var r = t[e] ? t[e] : [], n = e.indexOf(":"), o = -1 === n ? [e] : [e.substring(0, n), e.substring(n + 1)], i = Object.keys(t), s = 0, a = i.length; s < a; s++) { var l = i[s]; if ("*" === l && (r = r.concat(t[l])), 2 === o.length && o[0] === l) { r = r.concat(t[l]); break } } return r }(e); l.length && function (e, t, r) { for (var n = 0, o = t.length; n < o && t[n]; n++)t[n].event = e, t[n].apply(t[n], r) }(e, l, [r, n, o, i, s, a]) }, e.on = function (e, r) { t[e] || (t[e] = []), t[e].push(r) }, e.once = function (t, r) { this.on(t, function n() { r.apply(this, arguments), e.off(t, n) }) }, e.off = function (e, t) { var r = []; if (e && t) for (var n = this._fns[e], o = 0, i = n ? n.length : 0; o < i; o++)n[o] !== t && r.push(n[o]); r.length ? this._fns[e] = r : delete this._fns[e] }, e }, _$pad_16 = function (e, t) { var r = "000000000" + e; return r.substr(r.length - t) }, env = "object" == typeof window ? window : self, globalCount = Object.keys(env).length, clientId = _$pad_16(((navigator.mimeTypes ? navigator.mimeTypes.length : 0) + navigator.userAgent.length).toString(36) + globalCount.toString(36), 4), _$fingerprintBrowser_14 = function () { return clientId }, getRandomValue, crypto = window.crypto || window.msCrypto; if (crypto) { var lim = Math.pow(2, 32) - 1; getRandomValue = function () { return Math.abs(crypto.getRandomValues(new Uint32Array(1))[0] / lim) } } else getRandomValue = Math.random; var _$getRandomValue_15 = getRandomValue, _$cuid_13 = {}, c = 0, blockSize = 4, base = 36, discreteValues = Math.pow(base, blockSize); function randomBlock() { return _$pad_16((_$getRandomValue_15() * discreteValues << 0).toString(base), blockSize) } function safeCounter() { return c = c < discreteValues ? c : 0, ++c - 1 } function cuid() { return "c" + (new Date).getTime().toString(base) + _$pad_16(safeCounter().toString(base), blockSize) + _$fingerprintBrowser_14() + (randomBlock() + randomBlock()) } cuid.slug = function () { var e = (new Date).getTime().toString(36), t = safeCounter().toString(36).slice(-4), r = _$fingerprintBrowser_14().slice(0, 1) + _$fingerprintBrowser_14().slice(-1), n = randomBlock().slice(-2); return e.slice(-2) + t + r + n }, cuid.isCuid = function (e) { return "string" == typeof e && !!e.startsWith("c") }, cuid.isSlug = function (e) { if ("string" != typeof e) return !1; var t = e.length; return t >= 7 && t <= 10 }, cuid.fingerprint = _$fingerprintBrowser_14, _$cuid_13 = cuid; var _$lodashThrottle_46 = {}; (function (e) { var t = "Expected a function", r = NaN, n = "[object Symbol]", o = /^\s+|\s+$/g, i = /^[-+]0x[0-9a-f]+$/i, s = /^0b[01]+$/i, a = /^0o[0-7]+$/i, l = parseInt, u = "object" == typeof e && e && e.Object === Object && e, c = "object" == typeof self && self && self.Object === Object && self, p = u || c || Function("return this")(), d = Object.prototype.toString, _ = Math.max, h = Math.min, f = function () { return p.Date.now() }; function g(e) { var t = typeof e; return !!e && ("object" == t || "function" == t) } function m(e) { if ("number" == typeof e) return e; if (function (e) { return "symbol" == typeof e || function (e) { return !!e && "object" == typeof e }(e) && d.call(e) == n }(e)) return r; if (g(e)) { var t = "function" == typeof e.valueOf ? e.valueOf() : e; e = g(t) ? t + "" : t } if ("string" != typeof e) return 0 === e ? e : +e; e = e.replace(o, ""); var u = s.test(e); return u || a.test(e) ? l(e.slice(2), u ? 2 : 8) : i.test(e) ? r : +e } _$lodashThrottle_46 = function (e, r, n) { var o = !0, i = !0; if ("function" != typeof e) throw new TypeError(t); return g(n) && (o = "leading" in n ? !!n.leading : o, i = "trailing" in n ? !!n.trailing : i), function (e, r, n) { var o, i, s, a, l, u, c = 0, p = !1, d = !1, y = !0; if ("function" != typeof e) throw new TypeError(t); function v(t) { var r = o, n = i; return o = i = void 0, c = t, a = e.apply(n, r) } function b(e) { var t = e - u; return void 0 === u || t >= r || t < 0 || d && e - c >= s } function w() { var e = f(); if (b(e)) return S(e); l = setTimeout(w, function (e) { var t = r - (e - u); return d ? h(t, s - (e - c)) : t }(e)) } function S(e) { return l = void 0, y && o ? v(e) : (o = i = void 0, a) } function P() { var e = f(), t = b(e); if (o = arguments, i = this, u = e, t) { if (void 0 === l) return function (e) { return c = e, l = setTimeout(w, r), p ? v(e) : a }(u); if (d) return l = setTimeout(w, r), v(u) } return void 0 === l && (l = setTimeout(w, r)), a } return r = m(r) || 0, g(n) && (p = !!n.leading, s = (d = "maxWait" in n) ? _(m(n.maxWait) || 0, r) : s, y = "trailing" in n ? !!n.trailing : y), P.cancel = function () { void 0 !== l && clearTimeout(l), c = 0, o = u = i = l = void 0 }, P.flush = function () { return void 0 === l ? a : S(f()) }, P }(e, r, { leading: o, maxWait: r, trailing: i }) } }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}); var _$prettyBytes_225 = function (e) { if ("number" != typeof e || isNaN(e)) throw new TypeError("Expected a number, got " + typeof e); var t = e < 0, r = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]; if (t && (e = -e), e < 1) return (t ? "-" : "") + e + " B"; var n = Math.min(Math.floor(Math.log(e) / Math.log(1024)), r.length - 1); e = Number(e / Math.pow(1024, n)); var o = r[n]; return e >= 10 || e % 1 == 0 ? (t ? "-" : "") + e.toFixed(0) + " " + o : (t ? "-" : "") + e.toFixed(1) + " " + o }, _$wildcard_78 = {}; function WildcardMatcher(e, t) { this.text = e = e || "", this.hasWild = ~e.indexOf("*"), this.separator = t, this.parts = e.split(t) } WildcardMatcher.prototype.match = function (e) { var t, r, n = !0, o = this.parts, i = o.length; if ("string" == typeof e || e instanceof String) if (this.hasWild || this.text == e) { for (r = (e || "").split(this.separator), t = 0; n && t < i; t++)"*" !== o[t] && (n = t < r.length && o[t] === r[t]); n = n && r } else n = !1; else if ("function" == typeof e.splice) for (n = [], t = e.length; t--;)this.match(e[t]) && (n[n.length] = e[t]); else if ("object" == typeof e) for (var s in n = {}, e) this.match(s) && (n[s] = e[s]); return n }, _$wildcard_78 = function (e, t, r) { var n = new WildcardMatcher(e, r || /[\/\.]/); return void 0 !== t ? n.match(t) : n }; var reMimePartSplit = /[\/\+\.]/, _$mimeMatch_48 = function (e, t) { function r(t) { var r = _$wildcard_78(t, e, reMimePartSplit); return r && r.length >= 2 } return t ? r(t.split(";")[0]) : r }, _$package_164 = { version: "1.2.0" }, _$lib_163 = {}; function ___extends_163() { return (___extends_163 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } var DefaultStore = function () { function e() { this.state = {}, this.callbacks = [] } var t = e.prototype; return t.getState = function () { return this.state }, t.setState = function (e) { var t = ___extends_163({}, this.state), r = ___extends_163({}, this.state, e); this.state = r, this._publish(t, r, e) }, t.subscribe = function (e) { var t = this; return this.callbacks.push(e), function () { t.callbacks.splice(t.callbacks.indexOf(e), 1) } }, t._publish = function () { for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++)t[r] = arguments[r]; this.callbacks.forEach(function (e) { e.apply(void 0, t) }) }, e }(); DefaultStore.VERSION = _$package_164.version, _$lib_163 = function () { return new DefaultStore }; var _$getFileNameAndExtension_212 = function (e) { var t = /(?:\.([^.]+))?$/.exec(e)[1]; return { name: e.replace("." + t, ""), extension: t } }, _$mimeTypes_224 = { md: "text/markdown", markdown: "text/markdown", mp4: "video/mp4", mp3: "audio/mp3", svg: "image/svg+xml", jpg: "image/jpeg", png: "image/png", gif: "image/gif", heic: "image/heic", heif: "image/heif", yaml: "text/yaml", yml: "text/yaml", csv: "text/csv", avi: "video/x-msvideo", mks: "video/x-matroska", mkv: "video/x-matroska", mov: "video/quicktime", doc: "application/msword", docm: "application/vnd.ms-word.document.macroenabled.12", docx: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", dot: "application/msword", dotm: "application/vnd.ms-word.template.macroenabled.12", dotx: "application/vnd.openxmlformats-officedocument.wordprocessingml.template", xla: "application/vnd.ms-excel", xlam: "application/vnd.ms-excel.addin.macroenabled.12", xlc: "application/vnd.ms-excel", xlf: "application/x-xliff+xml", xlm: "application/vnd.ms-excel", xls: "application/vnd.ms-excel", xlsb: "application/vnd.ms-excel.sheet.binary.macroenabled.12", xlsm: "application/vnd.ms-excel.sheet.macroenabled.12", xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", xlt: "application/vnd.ms-excel", xltm: "application/vnd.ms-excel.template.macroenabled.12", xltx: "application/vnd.openxmlformats-officedocument.spreadsheetml.template", xlw: "application/vnd.ms-excel", txt: "text/plain", text: "text/plain", conf: "text/plain", log: "text/plain", pdf: "application/pdf" }, _$getFileType_213 = function (e) { var t = e.name ? _$getFileNameAndExtension_212(e.name).extension : null; return t = t ? t.toLowerCase() : null, e.type ? e.type : t && _$mimeTypes_224[t] ? _$mimeTypes_224[t] : "application/octet-stream" }; function encodeFilename(e) { var t = ""; return e.replace(/[^A-Z0-9]/gi, function (e) { return t += "-" + function (e) { return e.charCodeAt(0).toString(32) }(e), "/" }) + t } var _$generateFileID_205 = function (e) { return ["uppy", e.name ? encodeFilename(e.name.toLowerCase()) : "", e.type, e.meta && e.meta.relativePath ? encodeFilename(e.meta.relativePath.toLowerCase()) : "", e.data.size, e.data.lastModified].filter(function (e) { return e }).join("-") }, _$supportsUploadProgress_95 = function (e) { if (null == e && (e = "undefined" != typeof navigator ? navigator.userAgent : null), !e) return !0; var t = /Edge\/(\d+\.\d+)/.exec(e); if (!t) return !0; var r = t[1].split("."), n = r[0], o = r[1]; return n = parseInt(n, 10), o = parseInt(o, 10), n < 15 || 15 === n && o < 15063 || n > 18 || 18 === n && o >= 18218 }; function __pad_217(e) { return 2 !== e.length ? 0 + e : e } var _$getTimeStamp_217 = function () { var e = new Date; return __pad_217(e.getHours().toString()) + ":" + __pad_217(e.getMinutes().toString()) + ":" + __pad_217(e.getSeconds().toString()) }, debugLogger = { debug: function () { for (var e = console.debug || console.log, t = arguments.length, r = new Array(t), n = 0; n < t; n++)r[n] = arguments[n]; e.call.apply(e, [console, "[Uppy] [" + _$getTimeStamp_217() + "]"].concat(r)) }, warn: function () { for (var e, t = arguments.length, r = new Array(t), n = 0; n < t; n++)r[n] = arguments[n]; return (e = console).warn.apply(e, ["[Uppy] [" + _$getTimeStamp_217() + "]"].concat(r)) }, error: function () { for (var e, t = arguments.length, r = new Array(t), n = 0; n < t; n++)r[n] = arguments[n]; return (e = console).error.apply(e, ["[Uppy] [" + _$getTimeStamp_217() + "]"].concat(r)) } }, _$loggers_94 = { nullLogger: { debug: function () { }, warn: function () { }, error: function () { } }, debugLogger: debugLogger }, _$preact_53 = { exports: {} }; !function () { "use strict"; function e() { } function t(t, r) { var n, o, i, s, a = S; for (s = arguments.length; s-- > 2;)w.push(arguments[s]); for (r && null != r.children && (w.length || w.push(r.children), delete r.children); w.length;)if ((o = w.pop()) && void 0 !== o.pop) for (s = o.length; s--;)w.push(o[s]); else "boolean" == typeof o && (o = null), (i = "function" != typeof t) && (null == o ? o = "" : "number" == typeof o ? o = String(o) : "string" != typeof o && (i = !1)), i && n ? a[a.length - 1] += o : a === S ? a = [o] : a.push(o), n = i; var l = new e; return l.nodeName = t, l.children = a, l.attributes = null == r ? void 0 : r, l.key = null == r ? void 0 : r.key, void 0 !== b.vnode && b.vnode(l), l } function r(e, t) { for (var r in t) e[r] = t[r]; return e } function n(e) { !e.__d && (e.__d = !0) && 1 == C.push(e) && (b.debounceRendering || P)(o) } function o() { var e, t = C; for (C = []; e = t.pop();)e.__d && m(e) } function i(e, t) { return e.__n === t || e.nodeName.toLowerCase() === t.toLowerCase() } function s(e) { var t = r({}, e.attributes); t.children = e.children; var n = e.nodeName.defaultProps; if (void 0 !== n) for (var o in n) void 0 === t[o] && (t[o] = n[o]); return t } function a(e) { var t = e.parentNode; t && t.removeChild(e) } function l(e, t, r, n, o) { if ("className" === t && (t = "class"), "key" === t); else if ("ref" === t) r && r(null), n && n(e); else if ("class" !== t || o) if ("style" === t) { if (n && "string" != typeof n && "string" != typeof r || (e.style.cssText = n || ""), n && "object" == typeof n) { if ("string" != typeof r) for (var i in r) i in n || (e.style[i] = ""); for (var i in n) e.style[i] = "number" == typeof n[i] && !1 === E.test(i) ? n[i] + "px" : n[i] } } else if ("dangerouslySetInnerHTML" === t) n && (e.innerHTML = n.__html || ""); else if ("o" == t[0] && "n" == t[1]) { var s = t !== (t = t.replace(/Capture$/, "")); t = t.toLowerCase().substring(2), n ? r || e.addEventListener(t, u, s) : e.removeEventListener(t, u, s), (e.__l || (e.__l = {}))[t] = n } else if ("list" !== t && "type" !== t && !o && t in e) !function (e, t, r) { try { e[t] = r } catch (n) { } }(e, t, null == n ? "" : n), null != n && !1 !== n || e.removeAttribute(t); else { var a = o && t !== (t = t.replace(/^xlink:?/, "")); null == n || !1 === n ? a ? e.removeAttributeNS("http://www.w3.org/1999/xlink", t.toLowerCase()) : e.removeAttribute(t) : "function" != typeof n && (a ? e.setAttributeNS("http://www.w3.org/1999/xlink", t.toLowerCase(), n) : e.setAttribute(t, n)) } else e.className = n || "" } function u(e) { return this.__l[e.type](b.event && b.event(e) || e) } function c() { for (var e; e = T.pop();)b.afterMount && b.afterMount(e), e.componentDidMount && e.componentDidMount() } function p(e, t, r, n, o, u) { $++ || (k = null != o && void 0 !== o.ownerSVGElement, F = null != e && !("__preactattr_" in e)); var p = function e(t, r, n, o, u) { var c = t, p = k; if (null != r && "boolean" != typeof r || (r = ""), "string" == typeof r || "number" == typeof r) return t && void 0 !== t.splitText && t.parentNode && (!t._component || u) ? t.nodeValue != r && (t.nodeValue = r) : (c = document.createTextNode(r), t && (t.parentNode && t.parentNode.replaceChild(c, t), d(t, !0))), c.__preactattr_ = !0, c; var _, f, m = r.nodeName; if ("function" == typeof m) return function (e, t, r, n) { for (var o = e && e._component, i = o, a = e, l = o && e._componentConstructor === t.nodeName, u = l, c = s(t); o && !u && (o = o.__u);)u = o.constructor === t.nodeName; return o && u && (!n || o._component) ? (g(o, c, 3, r, n), e = o.base) : (i && !l && (y(i), e = a = null), o = h(t.nodeName, c, r), e && !o.__b && (o.__b = e, a = null), g(o, c, 1, r, n), e = o.base, a && e !== a && (a._component = null, d(a, !1))), e }(t, r, n, o); if (k = "svg" === m || "foreignObject" !== m && k, m = String(m), (!t || !i(t, m)) && (_ = m, (f = k ? document.createElementNS("http://www.w3.org/2000/svg", _) : document.createElement(_)).__n = _, c = f, t)) { for (; t.firstChild;)c.appendChild(t.firstChild); t.parentNode && t.parentNode.replaceChild(c, t), d(t, !0) } var v = c.firstChild, b = c.__preactattr_, w = r.children; if (null == b) { b = c.__preactattr_ = {}; for (var S = c.attributes, P = S.length; P--;)b[S[P].name] = S[P].value } return !F && w && 1 === w.length && "string" == typeof w[0] && null != v && void 0 !== v.splitText && null == v.nextSibling ? v.nodeValue != w[0] && (v.nodeValue = w[0]) : (w && w.length || null != v) && function (t, r, n, o, s) { var l, u, c, p, _, h, f, g, m = t.childNodes, y = [], v = {}, b = 0, w = 0, S = m.length, P = 0, E = r ? r.length : 0; if (0 !== S) for (var C = 0; C < S; C++) { var T = m[C], $ = T.__preactattr_, k = E && $ ? T._component ? T._component.__k : $.key : null; null != k ? (b++, v[k] = T) : ($ || (void 0 !== T.splitText ? !s || T.nodeValue.trim() : s)) && (y[P++] = T) } if (0 !== E) for (var C = 0; C < E; C++) { p = r[C], _ = null; var k = p.key; if (null != k) b && void 0 !== v[k] && (_ = v[k], v[k] = void 0, b--); else if (!_ && w < P) for (l = w; l < P; l++)if (void 0 !== y[l] && (h = u = y[l], g = s, "string" == typeof (f = p) || "number" == typeof f ? void 0 !== h.splitText : "string" == typeof f.nodeName ? !h._componentConstructor && i(h, f.nodeName) : g || h._componentConstructor === f.nodeName)) { _ = u, y[l] = void 0, l === P - 1 && P--, l === w && w++; break } _ = e(_, p, n, o), c = m[C], _ && _ !== t && _ !== c && (null == c ? t.appendChild(_) : _ === c.nextSibling ? a(c) : t.insertBefore(_, c)) } if (b) for (var C in v) void 0 !== v[C] && d(v[C], !1); for (; w <= P;)void 0 !== (_ = y[P--]) && d(_, !1) }(c, w, n, o, F || null != b.dangerouslySetInnerHTML), function (e, t, r) { var n; for (n in r) t && null != t[n] || null == r[n] || l(e, n, r[n], r[n] = void 0, k); for (n in t) "children" === n || "innerHTML" === n || n in r && t[n] === ("value" === n || "checked" === n ? e[n] : r[n]) || l(e, n, r[n], r[n] = t[n], k) }(c, r.attributes, b), k = p, c }(e, t, r, n, u); return o && p.parentNode !== o && o.appendChild(p), --$ || (F = !1, u || c()), p } function d(e, t) { var r = e._component; r ? y(r) : (null != e.__preactattr_ && e.__preactattr_.ref && e.__preactattr_.ref(null), !1 !== t && null != e.__preactattr_ || a(e), _(e)) } function _(e) { for (e = e.lastChild; e;) { var t = e.previousSibling; d(e, !0), e = t } } function h(e, t, r) { var n, o = A[e.name]; if (e.prototype && e.prototype.render ? (n = new e(t, r), v.call(n, t, r)) : ((n = new v(t, r)).constructor = e, n.render = f), o) for (var i = o.length; i--;)if (o[i].constructor === e) { n.__b = o[i].__b, o.splice(i, 1); break } return n } function f(e, t, r) { return this.constructor(e, r) } function g(e, t, r, o, i) { e.__x || (e.__x = !0, (e.__r = t.ref) && delete t.ref, (e.__k = t.key) && delete t.key, !e.base || i ? e.componentWillMount && e.componentWillMount() : e.componentWillReceiveProps && e.componentWillReceiveProps(t, o), o && o !== e.context && (e.__c || (e.__c = e.context), e.context = o), e.__p || (e.__p = e.props), e.props = t, e.__x = !1, 0 !== r && (1 !== r && !1 === b.syncComponentUpdates && e.base ? n(e) : m(e, 1, i)), e.__r && e.__r(e)) } function m(e, t, n, o) { if (!e.__x) { var i, a, l, u = e.props, _ = e.state, f = e.context, v = e.__p || u, w = e.__s || _, S = e.__c || f, P = e.base, E = e.__b, C = P || E, k = e._component, F = !1; if (P && (e.props = v, e.state = w, e.context = S, 2 !== t && e.shouldComponentUpdate && !1 === e.shouldComponentUpdate(u, _, f) ? F = !0 : e.componentWillUpdate && e.componentWillUpdate(u, _, f), e.props = u, e.state = _, e.context = f), e.__p = e.__s = e.__c = e.__b = null, e.__d = !1, !F) { i = e.render(u, _, f), e.getChildContext && (f = r(r({}, f), e.getChildContext())); var A, x, O = i && i.nodeName; if ("function" == typeof O) { var R = s(i); (a = k) && a.constructor === O && R.key == a.__k ? g(a, R, 1, f, !1) : (A = a, e._component = a = h(O, R, f), a.__b = a.__b || E, a.__u = e, g(a, R, 0, f, !1), m(a, 1, n, !0)), x = a.base } else l = C, (A = k) && (l = e._component = null), (C || 1 === t) && (l && (l._component = null), x = p(l, i, f, n || !P, C && C.parentNode, !0)); if (C && x !== C && a !== k) { var I = C.parentNode; I && x !== I && (I.replaceChild(x, C), A || (C._component = null, d(C, !1))) } if (A && y(A), e.base = x, x && !o) { for (var U = e, D = e; D = D.__u;)(U = D).base = x; x._component = U, x._componentConstructor = U.constructor } } if (!P || n ? T.unshift(e) : F || (e.componentDidUpdate && e.componentDidUpdate(v, w, S), b.afterUpdate && b.afterUpdate(e)), null != e.__h) for (; e.__h.length;)e.__h.pop().call(e); $ || o || c() } } function y(e) { b.beforeUnmount && b.beforeUnmount(e); var t = e.base; e.__x = !0, e.componentWillUnmount && e.componentWillUnmount(), e.base = null; var r = e._component; r ? y(r) : t && (t.__preactattr_ && t.__preactattr_.ref && t.__preactattr_.ref(null), e.__b = t, a(t), function (e) { var t = e.constructor.name; (A[t] || (A[t] = [])).push(e) }(e), _(t)), e.__r && e.__r(null) } function v(e, t) { this.__d = !0, this.context = t, this.props = e, this.state = this.state || {} } var b = {}, w = [], S = [], P = "function" == typeof Promise ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout, E = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i, C = [], T = [], $ = 0, k = !1, F = !1, A = {}; r(v.prototype, { setState: function (e, t) { var o = this.state; this.__s || (this.__s = r({}, o)), r(o, "function" == typeof e ? e(o, this.props) : e), t && (this.__h = this.__h || []).push(t), n(this) }, forceUpdate: function (e) { e && (this.__h = this.__h || []).push(e), m(this, 2) }, render: function () { } }); var x = { h: t, createElement: t, cloneElement: function (e, n) { return t(e.nodeName, r(r({}, e.attributes), n), arguments.length > 2 ? [].slice.call(arguments, 2) : e.children) }, Component: v, render: function (e, t, r) { return p(r, e, {}, !1, t, !1) }, rerender: o, options: b }; _$preact_53.exports = x }(), _$preact_53 = _$preact_53.exports; var _$isDOMElement_219 = function (e) { return e && "object" == typeof e && e.nodeType === Node.ELEMENT_NODE }, _$findDOMElement_204 = function (e, t) { return void 0 === t && (t = document), "string" == typeof e ? t.querySelector(e) : "object" == typeof e && _$isDOMElement_219(e) ? e : void 0 }; function ___extends_92() { return (___extends_92 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } var _$Plugin_92 = function () { function e(e, t) { this.uppy = e, this.opts = t || {}, this.update = this.update.bind(this), this.mount = this.mount.bind(this), this.install = this.install.bind(this), this.uninstall = this.uninstall.bind(this) } var t = e.prototype; return t.getPluginState = function () { return this.uppy.getState().plugins[this.id] || {} }, t.setPluginState = function (e) { var t, r = this.uppy.getState().plugins; this.uppy.setState({ plugins: ___extends_92({}, r, (t = {}, t[this.id] = ___extends_92({}, r[this.id], {}, e), t)) }) }, t.setOptions = function (e) { this.opts = ___extends_92({}, this.opts, {}, e), this.setPluginState() }, t.update = function (e) { void 0 !== this.el && this._updateUI && this._updateUI(e) }, t.afterUpdate = function () { }, t.onMount = function () { }, t.mount = function (t, r) { var n, o, i, s, a = this, l = r.id, u = _$findDOMElement_204(t); if (u) return this.isTargetDOMEl = !0, this.rerender = function (e) { a.uppy.getPlugin(a.id) && (a.el = _$preact_53.render(a.render(e), u, a.el), a.afterUpdate()) }, this._updateUI = (n = this.rerender, o = null, i = null, function () { for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++)t[r] = arguments[r]; return i = t, o || (o = Promise.resolve().then(function () { return o = null, n.apply(void 0, i) })), o }), this.uppy.log("Installing " + l + " to a DOM element '" + t + "'"), this.opts.replaceTargetContent && (u.innerHTML = ""), this.el = _$preact_53.render(this.render(this.uppy.getState()), u), this.onMount(), this.el; if ("object" == typeof t && t instanceof e) s = t; else if ("function" == typeof t) { var c = t; this.uppy.iteratePlugins(function (e) { if (e instanceof c) return s = e, !1 }) } if (s) return this.uppy.log("Installing " + l + " to " + s.id), this.parent = s, this.el = s.addTarget(r), this.onMount(), this.el; throw this.uppy.log("Not installing " + l), new Error("Invalid target option given to " + l + ". Please make sure that the element\n exists on the page, or that the plugin you are targeting has been installed. Check that the <script> tag initializing Uppy\n comes at the bottom of the page, before the closing </body> tag (see https://github.com/transloadit/uppy/issues/1042).") }, t.render = function (e) { throw new Error("Extend the render method to add your plugin to a DOM element") }, t.addTarget = function (e) { throw new Error("Extend the addTarget method to add your plugin to another plugin's target") }, t.unmount = function () { this.isTargetDOMEl && this.el && this.el.parentNode && this.el.parentNode.removeChild(this.el) }, t.install = function () { }, t.uninstall = function () { this.unmount() }, e }(), _$package_96 = { version: "1.6.0" }, _$lib_93 = {}; function ___extends_93() { return (___extends_93 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } function _defineProperties(e, t) { for (var r = 0; r < t.length; r++) { var n = t[r]; n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n) } } function _wrapNativeSuper(e) { var t = "function" == typeof Map ? new Map : void 0; return (_wrapNativeSuper = function (e) { if (null === e || (r = e, -1 === Function.toString.call(r).indexOf("[native code]"))) return e; var r; if ("function" != typeof e) throw new TypeError("Super expression must either be null or a function"); if (void 0 !== t) { if (t.has(e)) return t.get(e); t.set(e, n) } function n() { return _construct(e, arguments, _getPrototypeOf(this).constructor) } return n.prototype = Object.create(e.prototype, { constructor: { value: n, enumerable: !1, writable: !0, configurable: !0 } }), _setPrototypeOf(n, e) })(e) } function _construct(e, t, r) { return (_construct = 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 (e) { return !1 } }() ? Reflect.construct : function (e, t, r) { var n = [null]; n.push.apply(n, t); var o = new (Function.bind.apply(e, n)); return r && _setPrototypeOf(o, r.prototype), o }).apply(null, arguments) } function _setPrototypeOf(e, t) { return (_setPrototypeOf = Object.setPrototypeOf || function (e, t) { return e.__proto__ = t, e })(e, t) } function _getPrototypeOf(e) { return (_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) })(e) } var nullLogger = _$loggers_94.nullLogger, __debugLogger_93 = _$loggers_94.debugLogger, RestrictionError = function (e) { var t, r; function n() { for (var t, r = arguments.length, n = new Array(r), o = 0; o < r; o++)n[o] = arguments[o]; return (t = e.call.apply(e, [this].concat(n)) || this).isRestriction = !0, t } return r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r, n }(_wrapNativeSuper(Error)), Uppy = function () { function e(e) { var t = this; this.defaultLocale = { strings: { youCanOnlyUploadX: { 0: "You can only upload %{smart_count} file", 1: "You can only upload %{smart_count} files", 2: "You can only upload %{smart_count} files" }, youHaveToAtLeastSelectX: { 0: "You have to select at least %{smart_count} file", 1: "You have to select at least %{smart_count} files", 2: "You have to select at least %{smart_count} files" }, exceedsSize: "This file exceeds maximum allowed size of", youCanOnlyUploadFileTypes: "You can only upload: %{types}", companionError: "Connection with Companion failed", companionAuthError: "Authorization required", companionUnauthorizeHint: "To unauthorize to your %{provider} account, please go to %{url}", failedToUpload: "Failed to upload %{file}", noInternetConnection: "No Internet connection", connectedToInternet: "Connected to the Internet", noFilesFound: "You have no files or folders here", selectX: { 0: "Select %{smart_count}", 1: "Select %{smart_count}", 2: "Select %{smart_count}" }, selectAllFilesFromFolderNamed: "Select all files from folder %{name}", unselectAllFilesFromFolderNamed: "Unselect all files from folder %{name}", selectFileNamed: "Select file %{name}", unselectFileNamed: "Unselect file %{name}", openFolderNamed: "Open folder %{name}", cancel: "Cancel", logOut: "Log out", filter: "Filter", resetFilter: "Reset filter", loading: "Loading...", authenticateWithTitle: "Please authenticate with %{pluginName} to select files", authenticateWith: "Connect to %{pluginName}", emptyFolderAdded: "No files were added from empty folder", folderAdded: { 0: "Added %{smart_count} file from %{folder}", 1: "Added %{smart_count} files from %{folder}", 2: "Added %{smart_count} files from %{folder}" } } }; var r = { id: "uppy", autoProceed: !1, allowMultipleUploads: !0, debug: !1, restrictions: { maxFileSize: null, maxNumberOfFiles: null, minNumberOfFiles: null, allowedFileTypes: null }, meta: {}, onBeforeFileAdded: function (e, t) { return e }, onBeforeUpload: function (e) { return e }, store: _$lib_163(), logger: nullLogger }; if (this.opts = ___extends_93({}, r, {}, e, { restrictions: ___extends_93({}, r.restrictions, {}, e && e.restrictions) }), e && e.logger && e.debug ? this.log("You are using a custom `logger`, but also set `debug: true`, which uses built-in logger to output logs to console. Ignoring `debug: true` and using your custom `logger`.", "warning") : e && e.debug && (this.opts.logger = __debugLogger_93), this.log("Using Core v" + this.constructor.VERSION), this.opts.restrictions.allowedFileTypes && null !== this.opts.restrictions.allowedFileTypes && !Array.isArray(this.opts.restrictions.allowedFileTypes)) throw new TypeError("`restrictions.allowedFileTypes` must be an array"); this.i18nInit(), this.plugins = {}, this.getState = this.getState.bind(this), this.getPlugin = this.getPlugin.bind(this), this.setFileMeta = this.setFileMeta.bind(this), this.setFileState = this.setFileState.bind(this), this.log = this.log.bind(this), this.info = this.info.bind(this), this.hideInfo = this.hideInfo.bind(this), this.addFile = this.addFile.bind(this), this.removeFile = this.removeFile.bind(this), this.pauseResume = this.pauseResume.bind(this), this._calculateProgress = _$lodashThrottle_46(this._calculateProgress.bind(this), 500, { leading: !0, trailing: !0 }), this.updateOnlineStatus = this.updateOnlineStatus.bind(this), this.resetProgress = this.resetProgress.bind(this), this.pauseAll = this.pauseAll.bind(this), this.resumeAll = this.resumeAll.bind(this), this.retryAll = this.retryAll.bind(this), this.cancelAll = this.cancelAll.bind(this), this.retryUpload = this.retryUpload.bind(this), this.upload = this.upload.bind(this), this.emitter = _$namespaceEmitter_49(), this.on = this.on.bind(this), this.off = this.off.bind(this), this.once = this.emitter.once.bind(this.emitter), this.emit = this.emitter.emit.bind(this.emitter), this.preProcessors = [], this.uploaders = [], this.postProcessors = [], this.store = this.opts.store, this.setState({ plugins: {}, files: {}, currentUploads: {}, allowNewUpload: !0, capabilities: { uploadProgress: _$supportsUploadProgress_95(), individualCancellation: !0, resumableUploads: !1 }, totalProgress: 0, meta: ___extends_93({}, this.opts.meta), info: { isHidden: !0, type: "info", message: "" } }), this._storeUnsubscribe = this.store.subscribe(function (e, r, n) { t.emit("state-update", e, r, n), t.updateAll(r) }), this.opts.debug && "undefined" != typeof window && (window[this.opts.id] = this), this._addListeners() } var t, r, n = e.prototype; return n.on = function (e, t) { return this.emitter.on(e, t), this }, n.off = function (e, t) { return this.emitter.off(e, t), this }, n.updateAll = function (e) { this.iteratePlugins(function (t) { t.update(e) }) }, n.setState = function (e) { this.store.setState(e) }, n.getState = function () { return this.store.getState() }, n.setFileState = function (e, t) { var r; if (!this.getState().files[e]) throw new Error("Can\u2019t set state for " + e + " (the file could have been removed)"); this.setState({ files: ___extends_93({}, this.getState().files, (r = {}, r[e] = ___extends_93({}, this.getState().files[e], t), r)) }) }, n.i18nInit = function () { this.translator = new _$Translator_199([this.defaultLocale, this.opts.locale]), this.locale = this.translator.locale, this.i18n = this.translator.translate.bind(this.translator), this.i18nArray = this.translator.translateArray.bind(this.translator) }, n.setOptions = function (e) { this.opts = ___extends_93({}, this.opts, {}, e, { restrictions: ___extends_93({}, this.opts.restrictions, {}, e && e.restrictions) }), e.meta && this.setMeta(e.meta), this.i18nInit(), e.locale && this.iteratePlugins(function (e) { e.setOptions() }), this.setState() }, n.resetProgress = function () { var e = { percentage: 0, bytesUploaded: 0, uploadComplete: !1, uploadStarted: null }, t = ___extends_93({}, this.getState().files), r = {}; Object.keys(t).forEach(function (n) { var o = ___extends_93({}, t[n]); o.progress = ___extends_93({}, o.progress, e), r[n] = o }), this.setState({ files: r, totalProgress: 0 }), this.emit("reset-progress") }, n.addPreProcessor = function (e) { this.preProcessors.push(e) }, n.removePreProcessor = function (e) { var t = this.preProcessors.indexOf(e); -1 !== t && this.preProcessors.splice(t, 1) }, n.addPostProcessor = function (e) { this.postProcessors.push(e) }, n.removePostProcessor = function (e) { var t = this.postProcessors.indexOf(e); -1 !== t && this.postProcessors.splice(t, 1) }, n.addUploader = function (e) { this.uploaders.push(e) }, n.removeUploader = function (e) { var t = this.uploaders.indexOf(e); -1 !== t && this.uploaders.splice(t, 1) }, n.setMeta = function (e) { var t = ___extends_93({}, this.getState().meta, e), r = ___extends_93({}, this.getState().files); Object.keys(r).forEach(function (t) { r[t] = ___extends_93({}, r[t], { meta: ___extends_93({}, r[t].meta, e) }) }), this.log("Adding metadata:"), this.log(e), this.setState({ meta: t, files: r }) }, n.setFileMeta = function (e, t) { var r = ___extends_93({}, this.getState().files); if (r[e]) { var n = ___extends_93({}, r[e].meta, t); r[e] = ___extends_93({}, r[e], { meta: n }), this.setState({ files: r }) } else this.log("Was trying to set metadata for a file that has been removed: ", e) }, n.getFile = function (e) { return this.getState().files[e] }, n.getFiles = function () { var e = this.getState().files; return Object.keys(e).map(function (t) { return e[t] }) }, n._checkMinNumberOfFiles = function (e) { var t = this.opts.restrictions.minNumberOfFiles; if (Object.keys(e).length < t) throw new RestrictionError("" + this.i18n("youHaveToAtLeastSelectX", { smart_count: t })) }, n._checkRestrictions = function (e) { var t = this.opts.restrictions, r = t.maxFileSize, n = t.maxNumberOfFiles, o = t.allowedFileTypes; if (n && Object.keys(this.getState().files).length + 1 > n) throw new RestrictionError("" + this.i18n("youCanOnlyUploadX", { smart_count: n })); if (o && !o.some(function (t) { return t.indexOf("/") > -1 ? !!e.type && _$mimeMatch_48(e.type, t) : "." === t[0] && e.extension.toLowerCase() === t.substr(1).toLowerCase() })) { var i = o.join(", "); throw new RestrictionError(this.i18n("youCanOnlyUploadFileTypes", { types: i })) } if (r && null != e.data.size && e.data.size > r) throw new RestrictionError(this.i18n("exceedsSize") + " " + _$prettyBytes_225(r)) }, n._showOrLogErrorAndThrow = function (e, t) { var r = void 0 === t ? {} : t, n = r.showInformer, o = void 0 === n || n, i = r.file, s = void 0 === i ? null : i, a = "object" == typeof e ? e.message : e, l = "object" == typeof e && e.details ? e.details : ""; throw e.isRestriction ? (this.log(a + " " + l), this.emit("restriction-failed", s, e)) : this.log(a + " " + l, "error"), o && this.info({ message: a, details: l }, "error", 5e3), "object" == typeof e ? e : new Error(e) }, n.addFile = function (e) { var t, r = this, n = this.getState(), o = n.files; !1 === n.allowNewUpload && this._showOrLogErrorAndThrow(new RestrictionError("Cannot add new files: already uploading."), { file: e }); var i = _$getFileType_213(e); e.type = i; var s, a = this.opts.onBeforeFileAdded(e, o); !1 === a && this._showOrLogErrorAndThrow(new RestrictionError("Cannot add the file because onBeforeFileAdded returned false."), { showInformer: !1, file: e }), "object" == typeof a && a && (e = a), s = e.name ? e.name : "image" === i.split("/")[0] ? i.split("/")[0] + "." + i.split("/")[1] : "noname"; var l = _$getFileNameAndExtension_212(s).extension, u = e.isRemote || !1, c = _$generateFileID_205(e); o[c] && this._showOrLogErrorAndThrow(new RestrictionError("Cannot add the duplicate file '" + s + "', it already exists."), { file: e }); var p = e.meta || {}; p.name = s, p.type = i; var d = isFinite(e.data.size) ? e.data.size : null, _ = { source: e.source || "", id: c, name: s, extension: l || "", meta: ___extends_93({}, this.getState().meta, p), type: i, data: e.data, progress: { percentage: 0, bytesUploaded: 0, bytesTotal: d, uploadComplete: !1, uploadStarted: null }, size: d, isRemote: u, remote: e.remote || "", preview: e.preview }; try { this._checkRestrictions(_) } catch (err) { this._showOrLogErrorAndThrow(err, { file: _ }) } return this.setState({ files: ___extends_93({}, o, (t = {}, t[c] = _, t)) }), this.emit("file-added", _), this.log("Added file: " + s + ", " + c + ", mime type: " + i), this.opts.autoProceed && !this.scheduledAutoProceed && (this.scheduledAutoProceed = setTimeout(function () { r.scheduledAutoProceed = null, r.upload().catch(function (e) { e.isRestriction || r.log(e.stack || e.message || e) }) }, 4)), c }, n.removeFile = function (e) { var t = this, r = this.getState(), n = r.files, o = r.currentUploads, i = ___extends_93({}, n), s = i[e]; delete i[e]; var a = ___extends_93({}, o), l = []; Object.keys(a).forEach(function (t) { var r = o[t].fileIDs.filter(function (t) { return t !== e }); 0 !== r.length ? a[t] = ___extends_93({}, o[t], { fileIDs: r }) : l.push(t) }), this.setState(___extends_93({ currentUploads: a, files: i }, 0 === Object.keys(i).length && { allowNewUpload: !0 })), l.forEach(function (e) { t._removeUpload(e) }), this._calculateTotalProgress(), this.emit("file-removed", s), this.log("File removed: " + s.id) }, n.pauseResume = function (e) { if (this.getState().capabilities.resumableUploads && !this.getFile(e).uploadComplete) { var t = !this.getFile(e).isPaused; return this.setFileState(e, { isPaused: t }), this.emit("upload-pause", e, t), t } }, n.pauseAll = function () { var e = ___extends_93({}, this.getState().files); Object.keys(e).filter(function (t) { return !e[t].progress.uploadComplete && e[t].progress.uploadStarted }).forEach(function (t) { var r = ___extends_93({}, e[t], { isPaused: !0 }); e[t] = r }), this.setState({ files: e }), this.emit("pause-all") }, n.resumeAll = function () { var e = ___extends_93({}, this.getState().files); Object.keys(e).filter(function (t) { return !e[t].progress.uploadComplete && e[t].progress.uploadStarted }).forEach(function (t) { var r = ___extends_93({}, e[t], { isPaused: !1, error: null }); e[t] = r }), this.setState({ files: e }), this.emit("resume-all") }, n.retryAll = function () { var e = ___extends_93({}, this.getState().files), t = Object.keys(e).filter(function (t) { return e[t].error }); t.forEach(function (t) { var r = ___extends_93({}, e[t], { isPaused: !1, error: null }); e[t] = r }), this.setState({ files: e, error: null }), this.emit("retry-all", t); var r = this._createUpload(t); return this._runUpload(r) }, n.cancelAll = function () { var e = this; this.emit("cancel-all"), Object.keys(this.getState().files).forEach(function (t) { e.removeFile(t) }), this.setState({ totalProgress: 0, error: null }) }, n.retryUpload = function (e) { this.setFileState(e, { error: null, isPaused: !1 }), this.emit("upload-retry", e); var t = this._createUpload([e]); return this._runUpload(t) }, n.reset = function () { this.cancelAll() }, n._calculateProgress = function (e, t) { if (this.getFile(e.id)) { var r = isFinite(t.bytesTotal) && t.bytesTotal > 0; this.setFileState(e.id, { progress: ___extends_93({}, this.getFile(e.id).progress, { bytesUploaded: t.bytesUploaded, bytesTotal: t.bytesTotal, percentage: r ? Math.round(t.bytesUploaded / t.bytesTotal * 100) : 0 }) }), this._calculateTotalProgress() } else this.log("Not setting progress for a file that has been removed: " + e.id) }, n._calculateTotalProgress = function () { var e = this.getFiles().filter(function (e) { return e.progress.uploadStarted }); if (0 === e.length) return this.emit("progress", 0), void this.setState({ totalProgress: 0 }); var t = e.filter(function (e) { return null != e.progress.bytesTotal }), r = e.filter(function (e) { return null == e.progress.bytesTotal }); if (0 !== t.length) { var n = t.reduce(function (e, t) { return e + t.progress.bytesTotal }, 0), o = n / t.length; n += o * r.length; var i = 0; t.forEach(function (e) { i += e.progress.bytesUploaded }), r.forEach(function (e) { i += o * (e.progress.percentage || 0) / 100 }); var s = 0 === n ? 0 : Math.round(i / n * 100); s > 100 && (s = 100), this.setState({ totalProgress: s }), this.emit("progress", s) } else { var a = 100 * e.length, l = r.reduce(function (e, t) { return e + t.progress.percentage }, 0), u = Math.round(l / a * 100); this.setState({ totalProgress: u }) } }, n._addListeners = function () { var e = this; this.on("error", function (t) { e.setState({ error: t.message || "Unknown error" }) }), this.on("upload-error", function (t, r, n) { e.setFileState(t.id, { error: r.message || "Unknown error", response: n }), e.setState({ error: r.message }); var o = e.i18n("failedToUpload", { file: t.name }); "object" == typeof r && r.message && (o = { message: o, details: r.message }), e.info(o, "error", 5e3) }), this.on("upload", function () { e.setState({ error: null }) }), this.on("upload-started", function (t, r) { e.getFile(t.id) ? e.setFileState(t.id, { progress: { uploadStarted: Date.now(), uploadComplete: !1, percentage: 0, bytesUploaded: 0, bytesTotal: t.size } }) : e.log("Not setting progress for a file that has been removed: " + t.id) }), this.on("upload-progress", this._calculateProgress), this.on("upload-success", function (t, r) { if (e.getFile(t.id)) { var n = e.getFile(t.id).progress; e.setFileState(t.id, { progress: ___extends_93({}, n, { uploadComplete: !0, percentage: 100, bytesUploaded: n.bytesTotal }), response: r, uploadURL: r.uploadURL, isPaused: !1 }), e._calculateTotalProgress() } else e.log("Not setting progress for a file that has been removed: " + t.id) }), this.on("preprocess-progress", function (t, r) { e.getFile(t.id) ? e.setFileState(t.id, { progress: ___extends_93({}, e.getFile(t.id).progress, { preprocess: r }) }) : e.log("Not setting progress for a file that has been removed: " + t.id) }), this.on("preprocess-complete", function (t) { if (e.getFile(t.id)) { var r = ___extends_93({}, e.getState().files); r[t.id] = ___extends_93({}, r[t.id], { progress: ___extends_93({}, r[t.id].progress) }), delete r[t.id].progress.preprocess, e.setState({ files: r }) } else e.log("Not setting progress for a file that has been removed: " + t.id) }), this.on("postprocess-progress", function (t, r) { e.getFile(t.id) ? e.setFileState(t.id, { progress: ___extends_93({}, e.getState().files[t.id].progress, { postprocess: r }) }) : e.log("Not setting progress for a file that has been removed: " + t.id) }), this.on("postprocess-complete", function (t) { if (e.getFile(t.id)) { var r = ___extends_93({}, e.getState().files); r[t.id] = ___extends_93({}, r[t.id], { progress: ___extends_93({}, r[t.id].progress) }), delete r[t.id].progress.postprocess, e.setState({ files: r }) } else e.log("Not setting progress for a file that has been removed: " + t.id) }), this.on("restored", function () { e._calculateTotalProgress() }), "undefined" != typeof window && window.addEventListener && (window.addEventListener("online", function () { return e.updateOnlineStatus() }), window.addEventListener("offline", function () { return e.updateOnlineStatus() }), setTimeout(function () { return e.updateOnlineStatus() }, 3e3)) }, n.updateOnlineStatus = function () { void 0 === window.navigator.onLine || window.navigator.onLine ? (this.emit("is-online"), this.wasOffline && (this.emit("back-online"), this.info(this.i18n("connectedToInternet"), "success", 3e3), this.wasOffline = !1)) : (this.emit("is-offline"), this.info(this.i18n("noInternetConnection"), "error", 0), this.wasOffline = !0) }, n.getID = function () { return this.opts.id }, n.use = function (e, t) { if ("function" != typeof e) throw new TypeError("Expected a plugin class, but got " + (null === e ? "null" : typeof e) + ". Please verify that the plugin was imported and spelled correctly."); var r = new e(this, t), n = r.id; if (this.plugins[r.type] = this.plugins[r.type] || [], !n) throw new Error("Your plugin must have an id"); if (!r.type) throw new Error("Your plugin must have a type"); var o = this.getPlugin(n); if (o) { var i = "Already found a plugin named '" + o.id + "'. Tried to use: '" + n + "'.\nUppy plugins must have unique `id` options. See https://uppy.io/docs/plugins/#id."; throw new Error(i) } return e.VERSION && this.log("Using " + n + " v" + e.VERSION), this.plugins[r.type].push(r), r.install(), this }, n.getPlugin = function (e) { var t = null; return this.iteratePlugins(function (r) { if (r.id === e) return t = r, !1 }), t }, n.iteratePlugins = function (e) { var t = this; Object.keys(this.plugins).forEach(function (r) { t.plugins[r].forEach(e) }) }, n.removePlugin = function (e) { this.log("Removing plugin " + e.id), this.emit("plugin-remove", e), e.uninstall && e.uninstall(); var t = this.plugins[e.type].slice(), r = t.indexOf(e); -1 !== r && (t.splice(r, 1), this.plugins[e.type] = t); var n = this.getState(); delete n.plugins[e.id], this.setState(n) }, n.close = function () { var e = this; this.log("Closing Uppy instance " + this.opts.id + ": removing all files and uninstalling plugins"), this.reset(), this._storeUnsubscribe(), this.iteratePlugins(function (t) { e.removePlugin(t) }) }, n.info = function (e, t, r) { void 0 === t && (t = "info"), void 0 === r && (r = 3e3); var n = "object" == typeof e; this.setState({ info: { isHidden: !1, type: t, message: n ? e.message : e, details: n ? e.details : null } }), this.emit("info-visible"), clearTimeout(this.infoTimeoutID), this.infoTimeoutID = 0 !== r ? setTimeout(this.hideInfo, r) : void 0 }, n.hideInfo = function () { var e = ___extends_93({}, this.getState().info, { isHidden: !0 }); this.setState({ info: e }), this.emit("info-hidden") }, n.log = function (e, t) { var r = this.opts.logger; switch (t) { case "error": r.error(e); break; case "warning": r.warn(e); break; default: r.debug(e) } }, n.run = function () { return this.log("Calling run() is no longer necessary.", "warning"), this }, n.restore = function (e) { return this.log('Core: attempting to restore upload "' + e + '"'), this.getState().currentUploads[e] ? this._runUpload(e) : (this._removeUpload(e), Promise.reject(new Error("Nonexistent upload"))) }, n._createUpload = function (e) { var t, r = this.getState(), n = r.allowNewUpload, o = r.currentUploads; if (!n) throw new Error("Cannot create a new upload: already uploading."); var i = _$cuid_13(); return this.emit("upload", { id: i, fileIDs: e }), this.setState({ allowNewUpload: !1 !== this.opts.allowMultipleUploads, currentUploads: ___extends_93({}, o, (t = {}, t[i] = { fileIDs: e, step: 0, result: {} }, t)) }), i }, n._getUpload = function (e) { return this.getState().currentUploads[e] }, n.addResultData = function (e, t) { var r; if (this._getUpload(e)) { var n = this.getState().currentUploads, o = ___extends_93({}, n[e], { result: ___extends_93({}, n[e].result, t) }); this.setState({ currentUploads: ___extends_93({}, n, (r = {}, r[e] = o, r)) }) } else this.log("Not setting result for an upload that has been removed: " + e) }, n._removeUpload = function (e) { var t = ___extends_93({}, this.getState().currentUploads); delete t[e], this.setState({ currentUploads: t }) }, n._runUpload = function (e) { var t = this, r = this.getState().currentUploads[e].step, n = [].concat(this.preProcessors, this.uploaders, this.postProcessors), o = Promise.resolve(); return n.forEach(function (n, i) { i < r || (o = o.then(function () { var r, o = t.getState().currentUploads, s = o[e]; if (s) { var a = ___extends_93({}, s, { step: i }); return t.setState({ currentUploads: ___extends_93({}, o, (r = {}, r[e] = a, r)) }), n(a.fileIDs, e) } }).then(function (e) { return null })) }), o.catch(function (r) { t.emit("error", r, e), t._removeUpload(e) }), o.then(function () { var r = t.getState().currentUploads[e]; if (r) { var n = r.fileIDs.map(function (e) { return t.getFile(e) }), o = n.filter(function (e) { return !e.error }), i = n.filter(function (e) { return e.error }); t.addResultData(e, { successful: o, failed: i, uploadID: e }) } }).then(function () { var r = t.getState().currentUploads; if (r[e]) { var n = r[e].result; return t.emit("complete", n), t._removeUpload(e), n } }).then(function (r) { return null == r && t.log("Not setting result for an upload that has been removed: " + e), r }) }, n.upload = function () { var e = this; this.plugins.uploader || this.log("No uploader type plugins are used", "warning"); var t = this.getState().files, r = this.opts.onBeforeUpload(t); return !1 === r ? Promise.reject(new Error("Not starting the upload because onBeforeUpload returned false")) : (r && "object" == typeof r && (t = r), Promise.resolve().then(function () { return e._checkMinNumberOfFiles(t) }).then(function () { var r = e.getState().currentUploads, n = Object.keys(r).reduce(function (e, t) { return e.concat(r[t].fileIDs) }, []), o = []; Object.keys(t).forEach(function (t) { var r = e.getFile(t); r.progress.uploadStarted || -1 !== n.indexOf(t) || o.push(r.id) }); var i = e._createUpload(o); return e._runUpload(i) }).catch(function (t) { e._showOrLogErrorAndThrow(t) })) }, t = e, (r = [{ key: "state", get: function () { return this.getState() } }]) && _defineProperties(t.prototype, r), e }(); function ___wrapNativeSuper_85(e) { var t = "function" == typeof Map ? new Map : void 0; return (___wrapNativeSuper_85 = function (e) { if (null === e || (r = e, -1 === Function.toString.call(r).indexOf("[native code]"))) return e; var r; if ("function" != typeof e) throw new TypeError("Super expression must either be null or a function"); if (void 0 !== t) { if (t.has(e)) return t.get(e); t.set(e, n) } function n() { return ___construct_85(e, arguments, ___getPrototypeOf_85(this).constructor) } return n.prototype = Object.create(e.prototype, { constructor: { value: n, enumerable: !1, writable: !0, configurable: !0 } }), ___setPrototypeOf_85(n, e) })(e) } function ___construct_85(e, t, r) { return (___construct_85 = 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 (e) { return !1 } }() ? Reflect.construct : function (e, t, r) { var n = [null]; n.push.apply(n, t); var o = new (Function.bind.apply(e, n)); return r && ___setPrototypeOf_85(o, r.prototype), o }).apply(null, arguments) } function ___setPrototypeOf_85(e, t) { return (___setPrototypeOf_85 = Object.setPrototypeOf || function (e, t) { return e.__proto__ = t, e })(e, t) } function ___getPrototypeOf_85(e) { return (___getPrototypeOf_85 = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e) })(e) } Uppy.VERSION = _$package_96.version, _$lib_93 = function (e) { return new Uppy(e) }, _$lib_93.Uppy = Uppy, _$lib_93.Plugin = _$Plugin_92, _$lib_93.debugLogger = __debugLogger_93; var AuthError = function (e) { var t, r; function n() { var t; return (t = e.call(this, "Authorization required") || this).name = "AuthError", t.isAuthError = !0, t } return r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r, n }(___wrapNativeSuper_85(Error)), _$AuthError_85 = AuthError, _$package_91 = { version: "1.4.1" }, _class, _temp; function ___extends_87() { return (___extends_87 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } function ___defineProperties_87(e, t) { for (var r = 0; r < t.length; r++) { var n = t[r]; n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n) } } var _$RequestClient_87 = (_temp = _class = function () { function e(e, t) { this.uppy = e, this.opts = t, this.onReceiveResponse = this.onReceiveResponse.bind(this), this.allowedHeaders = ["accept", "content-type", "uppy-auth-token"], this.preflightDone = !1 } var t, r, n = e.prototype; return n.headers = function () { var e = this.opts.companionHeaders || this.opts.serverHeaders || {}; return Promise.resolve(___extends_87({}, this.defaultHeaders, {}, e)) }, n._getPostResponseFunc = function (e) { var t = this; return function (r) { return e ? r : t.onReceiveResponse(r) } }, n.onReceiveResponse = function (e) { var t, r = this.uppy.getState().companion || {}, n = this.opts.companionUrl, o = e.headers; return o.has("i-am") && o.get("i-am") !== r[n] && this.uppy.setState({ companion: ___extends_87({}, r, (t = {}, t[n] = o.get("i-am"), t)) }), e }, n._getUrl = function (e) { return /^(https?:|)\/\//.test(e) ? e : this.hostname + "/" + e }, n._json = function (e) { if (401 === e.status) throw new _$AuthError_85; if (e.status < 200 || e.status > 300) { var t = "Failed request with status: " + e.status + ". " + e.statusText; return e.json().then(function (e) { throw t = e.message ? t + " message: " + e.message : t, t = e.requestId ? t + " request-Id: " + e.requestId : t, new Error(t) }).catch(function () { throw new Error(t) }) } return e.json() }, n.preflight = function (e) { var t = this; return new Promise(function (r, n) { if (t.preflightDone) return r(t.allowedHeaders.slice()); fetch(t._getUrl(e), { method: "OPTIONS" }).then(function (e) { e.headers.has("access-control-allow-headers") && (t.allowedHeaders = e.headers.get("access-control-allow-headers").split(",").map(function (e) { return e.trim().toLowerCase() })), t.preflightDone = !0, r(t.allowedHeaders.slice()) }).catch(function (e) { t.uppy.log("[CompanionClient] unable to make preflight request " + e, "warning"), t.preflightDone = !0, r(t.allowedHeaders.slice()) }) }) }, n.preflightAndHeaders = function (e) { var t = this; return Promise.all([this.preflight(e), this.headers()]).then(function (e) { var r = e[0], n = e[1]; return Object.keys(n).forEach(function (e) { -1 === r.indexOf(e.toLowerCase()) && (t.uppy.log("[CompanionClient] excluding unallowed header " + e), delete n[e]) }), n }) }, n.get = function (e, t) { var r = this; return new Promise(function (n, o) { r.preflightAndHeaders(e).then(function (i) { fetch(r._getUrl(e), { method: "get", headers: i, credentials: "same-origin" }).then(r._getPostResponseFunc(t)).then(function (e) { return r._json(e).then(n) }).catch(function (t) { t = t.isAuthError ? t : new Error("Could not get " + r._getUrl(e) + ". " + t), o(t) }) }).catch(o) }) }, n.post = function (e, t, r) { var n = this; return new Promise(function (o, i) { n.preflightAndHeaders(e).then(function (s) { fetch(n._getUrl(e), { method: "post", headers: s, credentials: "same-origin", body: JSON.stringify(t) }).then(n._getPostResponseFunc(r)).then(function (e) { return n._json(e).then(o) }).catch(function (t) { t = t.isAuthError ? t : new Error("Could not post " + n._getUrl(e) + ". " + t), i(t) }) }).catch(i) }) }, n.delete = function (e, t, r) { var n = this; return new Promise(function (o, i) { n.preflightAndHeaders(e).then(function (s) { fetch(n.hostname + "/" + e, { method: "delete", headers: s, credentials: "same-origin", body: t ? JSON.stringify(t) : null }).then(n._getPostResponseFunc(r)).then(function (e) { return n._json(e).then(o) }).catch(function (t) { t = t.isAuthError ? t : new Error("Could not delete " + n._getUrl(e) + ". " + t), i(t) }) }).catch(i) }) }, t = e, (r = [{ key: "hostname", get: function () { var e = this.uppy.getState().companion, t = this.opts.companionUrl; return (e && e[t] ? e[t] : t).replace(/\/$/, "") } }, { key: "defaultHeaders", get: function () { return { Accept: "application/json", "Content-Type": "application/json", "Uppy-Versions": "@uppy/companion-client=" + e.VERSION } } }]) && ___defineProperties_87(t.prototype, r), e }(), _class.VERSION = _$package_91.version, _temp), _$tokenStorage_90 = {}; function ___extends_86() { return (___extends_86 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } _$tokenStorage_90.setItem = function (e, t) { return new Promise(function (r) { localStorage.setItem(e, t), r() }) }, _$tokenStorage_90.getItem = function (e) { return Promise.resolve(localStorage.getItem(e)) }, _$tokenStorage_90.removeItem = function (e) { return new Promise(function (t) { localStorage.removeItem(e), t() }) }; var _getName = function (e) { return e.split("-").map(function (e) { return e.charAt(0).toUpperCase() + e.slice(1) }).join(" ") }, _$Provider_86 = function (e) { var t, r; function n(t, r) { var n; return (n = e.call(this, t, r) || this).provider = r.provider, n.id = n.provider, n.authProvider = r.authProvider || n.provider, n.name = n.opts.name || _getName(n.id), n.pluginId = n.opts.pluginId, n.tokenKey = "companion-" + n.pluginId + "-auth-token", n } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.headers = function () { var t = this; return new Promise(function (r, n) { e.prototype.headers.call(t).then(function (e) { t.getAuthToken().then(function (t) { r(___extends_86({}, e, { "uppy-auth-token": t })) }) }).catch(n) }) }, o.onReceiveResponse = function (t) { t = e.prototype.onReceiveResponse.call(this, t); var r = this.uppy.getPlugin(this.pluginId), n = r.getPluginState().authenticated ? 401 !== t.status : t.status < 400; return r.setPluginState({ authenticated: n }), t }, o.setAuthToken = function (e) { return this.uppy.getPlugin(this.pluginId).storage.setItem(this.tokenKey, e) }, o.getAuthToken = function () { return this.uppy.getPlugin(this.pluginId).storage.getItem(this.tokenKey) }, o.authUrl = function () { return this.hostname + "/" + this.id + "/connect" }, o.fileUrl = function (e) { return this.hostname + "/" + this.id + "/get/" + e }, o.list = function (e) { return this.get(this.id + "/list/" + (e || "")) }, o.logout = function () { var e = this; return new Promise(function (t, r) { e.get(e.id + "/logout").then(function (n) { e.uppy.getPlugin(e.pluginId).storage.removeItem(e.tokenKey).then(function () { return t(n) }).catch(r) }).catch(r) }) }, n.initPlugin = function (e, t, r) { if (e.type = "acquirer", e.files = [], r && (e.opts = ___extends_86({}, r, t)), t.serverUrl || t.serverPattern) throw new Error("`serverUrl` and `serverPattern` have been renamed to `companionUrl` and `companionAllowedHosts` respectively in the 0.30.5 release. Please consult the docs (for example, https://uppy.io/docs/instagram/ for the Instagram plugin) and use the updated options.`"); if (t.companionAllowedHosts) { var n = t.companionAllowedHosts; if (!("string" == typeof n || Array.isArray(n) || n instanceof RegExp)) throw new TypeError(e.id + ': the option "companionAllowedHosts" must be one of string, Array, RegExp'); e.opts.companionAllowedHosts = n } else /^(?!https?:\/\/).*$/i.test(t.companionUrl) ? e.opts.companionAllowedHosts = "https://" + t.companionUrl.replace(/^\/\//, "") : e.opts.companionAllowedHosts = t.companionUrl; e.storage = e.opts.storage || _$tokenStorage_90 }, n }(_$RequestClient_87), _$Socket_88 = function () { function e(e) { this.opts = e, this._queued = [], this.isOpen = !1, this.emitter = _$namespaceEmitter_49(), this._handleMessage = this._handleMessage.bind(this), this.close = this.close.bind(this), this.emit = this.emit.bind(this), this.on = this.on.bind(this), this.once = this.once.bind(this), this.send = this.send.bind(this), e && !1 === e.autoOpen || this.open() } var t = e.prototype; return t.open = function () { var e = this; this.socket = new WebSocket(this.opts.target), this.socket.onopen = function (t) { for (e.isOpen = !0; e._queued.length > 0 && e.isOpen;) { var r = e._queued[0]; e.send(r.action, r.payload), e._queued = e._queued.slice(1) } }, this.socket.onclose = function (t) { e.isOpen = !1 }, this.socket.onmessage = this._handleMessage }, t.close = function () { this.socket && this.socket.close() }, t.send = function (e, t) { this.isOpen ? this.socket.send(JSON.stringify({ action: e, payload: t })) : this._queued.push({ action: e, payload: t }) }, t.on = function (e, t) { this.emitter.on(e, t) }, t.emit = function (e, t) { this.emitter.emit(e, t) }, t.once = function (e, t) { this.emitter.once(e, t) }, t._handleMessage = function (e) { try { var t = JSON.parse(e.data); this.emit(t.action, t.payload) } catch (err) { console.log(err) } }, e }(), _$lib_89 = { RequestClient: _$RequestClient_87, Provider: _$Provider_86, Socket: _$Socket_88 }, h = _$preact_53.h, AuthView = function (e) { var t, r; function n() { return e.apply(this, arguments) || this } return r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r, n.prototype.render = function () { var e = h("span", { class: "uppy-Provider-authTitleName" }, this.props.pluginName, h("br", null)); return h("div", { class: "uppy-Provider-auth" }, h("div", { class: "uppy-Provider-authIcon" }, this.props.pluginIcon()), h("div", { class: "uppy-Provider-authTitle" }, this.props.i18nArray("authenticateWithTitle", { pluginName: e })), h("button", { type: "button", class: "uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Provider-authBtn", onclick: this.props.handleAuth, "data-uppy-super-focusable": !0 }, this.props.i18nArray("authenticateWith", { pluginName: this.props.pluginName }))) }, n }(_$preact_53.Component), _$AuthView_144 = AuthView, _$classnames_9 = { exports: {} }; !function () { "use strict"; var e = {}.hasOwnProperty; function t() { for (var r = [], n = 0; n < arguments.length; n++) { var o = arguments[n]; if (o) { var i = typeof o; if ("string" === i || "number" === i) r.push(o); else if (Array.isArray(o) && o.length) { var s = t.apply(null, o); s && r.push(s) } else if ("object" === i) for (var a in o) e.call(o, a) && o[a] && r.push(a) } } return r.join(" ") } _$classnames_9.exports ? (t.default = t, _$classnames_9.exports = t) : "function" == typeof define && "object" == typeof define.amd && define.amd ? define("classnames", [], function () { return t }) : window.classNames = t }(), _$classnames_9 = _$classnames_9.exports; var __h_145 = _$preact_53.h, Breadcrumb = function (e) { return __h_145("span", null, __h_145("button", { type: "button", class: "uppy-u-reset", onclick: e.getFolder }, e.title), e.isLast ? "" : " / ") }, _$Breadcrumbs_145 = function (e) { return __h_145("div", { class: "uppy-Provider-breadcrumbs" }, __h_145("div", { class: "uppy-Provider-breadcrumbsIcon" }, e.breadcrumbsIcon), e.directories.map(function (t, r) { return __h_145(Breadcrumb, { key: t.id, getFolder: function () { return e.getFolder(t.id) }, title: 0 === r ? e.title : t.title, isLast: r + 1 === e.directories.length }) })) }, __h_147 = _$preact_53.h, Component = _$preact_53.Component, _$Filter_147 = function (e) { var t, r; function n(t) { var r; return (r = e.call(this, t) || this).preventEnterPress = r.preventEnterPress.bind(function (e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e }(r)), r } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.preventEnterPress = function (e) { 13 === e.keyCode && (e.stopPropagation(), e.preventDefault()) }, o.render = function () { var e = this; return __h_147("div", { class: "uppy-ProviderBrowser-search" }, __h_147("input", { class: "uppy-u-reset uppy-ProviderBrowser-searchInput", type: "text", placeholder: this.props.i18n("filter"), "aria-label": this.props.i18n("filter"), onkeyup: this.preventEnterPress, onkeydown: this.preventEnterPress, onkeypress: this.preventEnterPress, oninput: function (t) { return e.props.filterQuery(t) }, value: this.props.filterInput }), __h_147("svg", { "aria-hidden": "true", focusable: "false", class: "UppyIcon uppy-ProviderBrowser-searchIcon", width: "12", height: "12", viewBox: "0 0 12 12" }, __h_147("path", { d: "M8.638 7.99l3.172 3.172a.492.492 0 1 1-.697.697L7.91 8.656a4.977 4.977 0 0 1-2.983.983C2.206 9.639 0 7.481 0 4.819 0 2.158 2.206 0 4.927 0c2.721 0 4.927 2.158 4.927 4.82a4.74 4.74 0 0 1-1.216 3.17zm-3.71.685c2.176 0 3.94-1.726 3.94-3.856 0-2.129-1.764-3.855-3.94-3.855C2.75.964.984 2.69.984 4.819c0 2.13 1.765 3.856 3.942 3.856z" })), this.props.filterInput && __h_147("button", { class: "uppy-u-reset uppy-ProviderBrowser-searchClose", type: "button", "aria-label": this.props.i18n("resetFilter"), title: this.props.i18n("resetFilter"), onclick: this.props.filterQuery }, __h_147("svg", { "aria-hidden": "true", focusable: "false", class: "UppyIcon", viewBox: "0 0 19 19" }, __h_147("path", { d: "M17.318 17.232L9.94 9.854 9.586 9.5l-.354.354-7.378 7.378h.707l-.62-.62v.706L9.318 9.94l.354-.354-.354-.354L1.94 1.854v.707l.62-.62h-.706l7.378 7.378.354.354.354-.354 7.378-7.378h-.707l.622.62v-.706L9.854 9.232l-.354.354.354.354 7.378 7.378.708-.707-7.38-7.378v.708l7.38-7.38.353-.353-.353-.353-.622-.622-.353-.353-.354.352-7.378 7.38h.708L2.56 1.23 2.208.88l-.353.353-.622.62-.353.355.352.353 7.38 7.38v-.708l-7.38 7.38-.353.353.352.353.622.622.353.353.354-.353 7.38-7.38h-.708l7.38 7.38z" })))) }, n }(Component), __h_150 = _$preact_53.h; function FileIcon() { return __h_150("svg", { "aria-hidden": "true", focusable: "false", class: "UppyIcon", width: 11, height: 14.5, viewBox: "0 0 44 58" }, __h_150("path", { d: "M27.437.517a1 1 0 0 0-.094.03H4.25C2.037.548.217 2.368.217 4.58v48.405c0 2.212 1.82 4.03 4.03 4.03H39.03c2.21 0 4.03-1.818 4.03-4.03V15.61a1 1 0 0 0-.03-.28 1 1 0 0 0 0-.093 1 1 0 0 0-.03-.032 1 1 0 0 0 0-.03 1 1 0 0 0-.032-.063 1 1 0 0 0-.03-.063 1 1 0 0 0-.032 0 1 1 0 0 0-.03-.063 1 1 0 0 0-.032-.03 1 1 0 0 0-.03-.063 1 1 0 0 0-.063-.062l-14.593-14a1 1 0 0 0-.062-.062A1 1 0 0 0 28 .708a1 1 0 0 0-.374-.157 1 1 0 0 0-.156 0 1 1 0 0 0-.03-.03l-.003-.003zM4.25 2.547h22.218v9.97c0 2.21 1.82 4.03 4.03 4.03h10.564v36.438a2.02 2.02 0 0 1-2.032 2.032H4.25c-1.13 0-2.032-.9-2.032-2.032V4.58c0-1.13.902-2.032 2.03-2.032zm24.218 1.345l10.375 9.937.75.718H30.5c-1.13 0-2.032-.9-2.032-2.03V3.89z" })) } function FolderIcon() { return __h_150("svg", { "aria-hidden": "true", focusable: "false", class: "UppyIcon", style: { width: 16, marginRight: 3 }, viewBox: "0 0 276.157 276.157" }, __h_150("path", { d: "M273.08 101.378c-3.3-4.65-8.86-7.32-15.254-7.32h-24.34V67.59c0-10.2-8.3-18.5-18.5-18.5h-85.322c-3.63 0-9.295-2.875-11.436-5.805l-6.386-8.735c-4.982-6.814-15.104-11.954-23.546-11.954H58.73c-9.292 0-18.638 6.608-21.737 15.372l-2.033 5.752c-.958 2.71-4.72 5.37-7.596 5.37H18.5C8.3 49.09 0 57.39 0 67.59v167.07c0 .886.16 1.73.443 2.52.152 3.306 1.18 6.424 3.053 9.064 3.3 4.652 8.86 7.32 15.255 7.32h188.487c11.395 0 23.27-8.425 27.035-19.18l40.677-116.188c2.11-6.035 1.43-12.164-1.87-16.816zM18.5 64.088h8.864c9.295 0 18.64-6.607 21.738-15.37l2.032-5.75c.96-2.712 4.722-5.373 7.597-5.373h29.565c3.63 0 9.295 2.876 11.437 5.806l6.386 8.735c4.982 6.815 15.104 11.954 23.546 11.954h85.322c1.898 0 3.5 1.602 3.5 3.5v26.47H69.34c-11.395 0-23.27 8.423-27.035 19.178L15 191.23V67.59c0-1.898 1.603-3.5 3.5-3.5zm242.29 49.15l-40.676 116.188c-1.674 4.78-7.812 9.135-12.877 9.135H18.75c-1.447 0-2.576-.372-3.02-.997-.442-.625-.422-1.814.057-3.18l40.677-116.19c1.674-4.78 7.812-9.134 12.877-9.134h188.487c1.448 0 2.577.372 3.02.997.443.625.423 1.814-.056 3.18z" })) } function VideoIcon() { return __h_150("svg", { "aria-hidden": "true", focusable: "false", viewBox: "0 0 58 58" }, __h_150("path", { d: "M36.537 28.156l-11-7a1.005 1.005 0 0 0-1.02-.033C24.2 21.3 24 21.635 24 22v14a1 1 0 0 0 1.537.844l11-7a1.002 1.002 0 0 0 0-1.688zM26 34.18V23.82L34.137 29 26 34.18z" }), __h_150("path", { d: "M57 6H1a1 1 0 0 0-1 1v44a1 1 0 0 0 1 1h56a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1zM10 28H2v-9h8v9zm-8 2h8v9H2v-9zm10 10V8h34v42H12V40zm44-12h-8v-9h8v9zm-8 2h8v9h-8v-9zm8-22v9h-8V8h8zM2 8h8v9H2V8zm0 42v-9h8v9H2zm54 0h-8v-9h8v9z" })) } var _$ItemIcon_150 = function (e) { if (null !== e.itemIconString) switch (e.itemIconString) { case "file": return __h_150(FileIcon, null); case "folder": return __h_150(FolderIcon, null); case "video": return __h_150(VideoIcon, null); default: return __h_150("img", { src: e.itemIconString }) } }, __h_149 = _$preact_53.h, _$GridLi_149 = function (e) { return __h_149("li", { class: e.className }, __h_149("div", { "aria-hidden": !0, class: "uppy-ProviderBrowserItem-fakeCheckbox " + (e.isChecked ? "uppy-ProviderBrowserItem-fakeCheckbox--is-checked" : "") }), __h_149("button", { type: "button", class: "uppy-u-reset uppy-ProviderBrowserItem-inner", onclick: e.toggleCheckbox, role: "option", "aria-label": e.isChecked ? e.i18n("unselectFileNamed", { name: e.title }) : e.i18n("selectFileNamed", { name: e.title }), "aria-selected": e.isChecked, "aria-disabled": e.isDisabled, "data-uppy-super-focusable": !0 }, e.itemIconEl, e.showTitles && e.title)) }, __h_151 = _$preact_53.h, getAriaLabelOfCheckbox = function (e) { return "folder" === e.type ? e.isChecked ? e.i18n("unselectAllFilesFromFolderNamed", { name: e.title }) : e.i18n("selectAllFilesFromFolderNamed", { name: e.title }) : e.isChecked ? e.i18n("unselectFileNamed", { name: e.title }) : e.i18n("selectFileNamed", { name: e.title }) }, _$ListLi_151 = function (e) { return __h_151("li", { class: e.className }, __h_151("button", { type: "button", class: "uppy-u-reset uppy-ProviderBrowserItem-fakeCheckbox " + (e.isChecked ? "uppy-ProviderBrowserItem-fakeCheckbox--is-checked" : ""), onClick: e.toggleCheckbox, id: e.id, role: "option", "aria-label": getAriaLabelOfCheckbox(e), "aria-selected": e.isChecked, "aria-disabled": e.isDisabled, "data-uppy-super-focusable": !0 }), "file" === e.type ? __h_151("label", { for: e.id, className: "uppy-u-reset uppy-ProviderBrowserItem-inner" }, e.itemIconEl, e.showTitles && e.title) : __h_151("button", { type: "button", class: "uppy-u-reset uppy-ProviderBrowserItem-inner", onclick: e.handleFolderClick, "aria-label": e.i18n("openFolderNamed", { name: e.title }) }, e.itemIconEl, e.showTitles && e.title)) }; function ___extends_152() { return (___extends_152 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } var __h_152 = _$preact_53.h, _$Item_152 = function (e) { var t = e.getItemIcon(), r = _$classnames_9("uppy-ProviderBrowserItem", { "uppy-ProviderBrowserItem--selected": e.isChecked }, { "uppy-ProviderBrowserItem--noPreview": "video" === t }), n = __h_152(_$ItemIcon_150, { itemIconString: t }); switch (e.viewType) { case "grid": return __h_152(_$GridLi_149, ___extends_152({}, e, { className: r, itemIconEl: n })); case "list": return __h_152(_$ListLi_151, ___extends_152({}, e, { className: r, itemIconEl: n })); default: throw new Error("There is no such type " + e.viewType) } }; function ___extends_153() { return (___extends_153 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } var __h_153 = _$preact_53.h, getSharedProps = function (e, t) { return { id: e.id, title: e.name, getItemIcon: function () { return e.icon }, isChecked: t.isChecked(e), toggleCheckbox: function (r) { return t.toggleCheckbox(r, e) }, columns: t.columns, showTitles: t.showTitles, viewType: t.viewType, i18n: t.i18n } }, _$ItemList_153 = function (e) { return e.folders.length || e.files.length ? __h_153("div", { class: "uppy-ProviderBrowser-body" }, __h_153("ul", { class: "uppy-ProviderBrowser-list", onscroll: e.handleScroll, role: "listbox", tabindex: "-1" }, e.folders.map(function (t) { return _$Item_152(___extends_153({}, getSharedProps(t, e), { type: "folder", isDisabled: !!e.isChecked(t) && e.isChecked(t).loading, handleFolderClick: function () { return e.handleFolderClick(t) } })) }), e.files.map(function (t) { return _$Item_152(___extends_153({}, getSharedProps(t, e), { type: "file", isDisabled: !1 })) }))) : __h_153("div", { class: "uppy-Provider-empty" }, e.i18n("noFilesFound")) }, __h_148 = _$preact_53.h, _$FooterActions_148 = function (e) { return __h_148("div", { class: "uppy-ProviderBrowser-footer" }, __h_148("button", { class: "uppy-u-reset uppy-c-btn uppy-c-btn-primary", onclick: e.done }, e.i18n("selectX", { smart_count: e.selected })), __h_148("button", { class: "uppy-u-reset uppy-c-btn uppy-c-btn-link", onclick: e.cancel }, e.i18n("cancel"))) }; function ___extends_146() { return (___extends_146 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } var __h_146 = _$preact_53.h, _$Browser_146 = function (e) { var t = e.folders, r = e.files; "" !== e.filterInput && (t = e.filterItems(e.folders), r = e.filterItems(e.files)); var n = e.currentSelection.length; return __h_146("div", { class: _$classnames_9("uppy-ProviderBrowser", "uppy-ProviderBrowser-viewType--" + e.viewType) }, __h_146("div", { class: "uppy-ProviderBrowser-header" }, __h_146("div", { class: _$classnames_9("uppy-ProviderBrowser-headerBar", !e.showBreadcrumbs && "uppy-ProviderBrowser-headerBar--simple") }, e.showBreadcrumbs && _$Breadcrumbs_145({ getFolder: e.getFolder, directories: e.directories, breadcrumbsIcon: e.pluginIcon && e.pluginIcon(), title: e.title }), __h_146("span", { class: "uppy-ProviderBrowser-user" }, e.username), __h_146("button", { type: "button", onclick: e.logout, class: "uppy-u-reset uppy-ProviderBrowser-userLogout" }, e.i18n("logOut")))), e.showFilter && __h_146(_$Filter_147, e), __h_146(_$ItemList_153, { columns: [{ name: "Name", key: "title" }], folders: t, files: r, activeRow: e.isActiveRow, sortByTitle: e.sortByTitle, sortByDate: e.sortByDate, isChecked: e.isChecked, handleFolderClick: e.getNextFolder, toggleCheckbox: e.toggleCheckbox, handleScroll: e.handleScroll, title: e.title, showTitles: e.showTitles, i18n: e.i18n, viewType: e.viewType }), n > 0 && __h_146(_$FooterActions_148, ___extends_146({ selected: n }, e))) }, __h_154 = _$preact_53.h, _$Loader_154 = function (e) { return __h_154("div", { class: "uppy-Provider-loading" }, __h_154("span", null, e.i18n("loading"))) }, _$isPreviewSupported_222 = function (e) { if (!e) return !1; var t = e.split("/")[1]; return !!/^(jpe?g|gif|png|svg|svg\+xml|bmp)$/.test(t) }, _$package_156 = { version: "1.5.0" }, ___class_155, ___temp_155; function ___extends_155() { return (___extends_155 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } var __h_155 = _$preact_53.h, __Component_155 = _$preact_53.Component, CloseWrapper = function (e) { var t, r; function n() { return e.apply(this, arguments) || this } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.componentWillUnmount = function () { this.props.onUnmount() }, o.render = function () { return this.props.children[0] }, n }(__Component_155), _$lib_155 = (___temp_155 = ___class_155 = function () { function e(e, t) { this.plugin = e, this.provider = t.provider, this.opts = ___extends_155({}, { viewType: "list", showTitles: !0, showFilter: !0, showBreadcrumbs: !0 }, {}, t), this.addFile = this.addFile.bind(this), this.filterItems = this.filterItems.bind(this), this.filterQuery = this.filterQuery.bind(this), this.toggleSearch = this.toggleSearch.bind(this), this.getFolder = this.getFolder.bind(this), this.getNextFolder = this.getNextFolder.bind(this), this.logout = this.logout.bind(this), this.preFirstRender = this.preFirstRender.bind(this), this.handleAuth = this.handleAuth.bind(this), this.sortByTitle = this.sortByTitle.bind(this), this.sortByDate = this.sortByDate.bind(this), this.isActiveRow = this.isActiveRow.bind(this), this.isChecked = this.isChecked.bind(this), this.toggleCheckbox = this.toggleCheckbox.bind(this), this.handleError = this.handleError.bind(this), this.handleScroll = this.handleScroll.bind(this), this.listAllFiles = this.listAllFiles.bind(this), this.donePicking = this.donePicking.bind(this), this.cancelPicking = this.cancelPicking.bind(this), this.clearSelection = this.clearSelection.bind(this), this.render = this.render.bind(this), this.clearSelection() } var t = e.prototype; return t.tearDown = function () { }, t._updateFilesAndFolders = function (e, t, r) { this.nextPagePath = e.nextPagePath, e.items.forEach(function (e) { e.isFolder ? r.push(e) : t.push(e) }), this.plugin.setPluginState({ folders: r, files: t }) }, t.preFirstRender = function () { this.plugin.setPluginState({ didFirstRender: !0 }), this.plugin.onFirstRender() }, t.getFolder = function (e, t) { var r = this; return this._loaderWrapper(this.provider.list(e), function (n) { var o, i = r.plugin.getPluginState(), s = function (t, r) { for (var n = 0; n < t.length; n++)if (o = t[n], e === o.id) return n; var o; return -1 }(i.directories); o = -1 !== s ? i.directories.slice(0, s + 1) : i.directories.concat([{ id: e, title: t }]), r.username = r.username ? r.username : n.username, r._updateFilesAndFolders(n, [], []), r.plugin.setPluginState({ directories: o }) }, this.handleError) }, t.getNextFolder = function (e) { this.getFolder(e.requestPath, e.name), this.lastCheckbox = void 0 }, t.addFile = function (e) { var t = { id: this.providerFileToId(e), source: this.plugin.id, data: e, name: e.name || e.id, type: e.mimeType, isRemote: !0, body: { fileId: e.id }, remote: { companionUrl: this.plugin.opts.companionUrl, url: "" + this.provider.fileUrl(e.requestPath), body: { fileId: e.id }, providerOptions: this.provider.opts } }, r = _$getFileType_213(t); r && _$isPreviewSupported_222(r) && (t.preview = e.thumbnail), this.plugin.uppy.log("Adding remote file"); try { this.plugin.uppy.addFile(t) } catch (err) { err.isRestriction || this.plugin.uppy.log(err) } }, t.removeFile = function (e) { var t = this.plugin.getPluginState().currentSelection; this.plugin.setPluginState({ currentSelection: t.filter(function (t) { return t.id !== e }) }) }, t.logout = function () { var e = this; this.provider.logout().then(function (t) { if (t.ok) { if (!t.revoked) { var r = e.plugin.uppy.i18n("companionUnauthorizeHint", { provider: e.plugin.title, url: t.manual_revoke_url }); e.plugin.uppy.info(r, "info", 7e3) } e.plugin.setPluginState({ authenticated: !1, files: [], folders: [], directories: [] }) } }).catch(this.handleError) }, t.filterQuery = function (e) { var t = this.plugin.getPluginState(); this.plugin.setPluginState(___extends_155({}, t, { filterInput: e ? e.target.value : "" })) }, t.toggleSearch = function (e) { var t = this.plugin.getPluginState(); this.plugin.setPluginState({ isSearchVisible: !t.isSearchVisible, filterInput: "" }) }, t.filterItems = function (e) { var t = this.plugin.getPluginState(); return t.filterInput && "" !== t.filterInput ? e.filter(function (e) { return -1 !== e.name.toLowerCase().indexOf(t.filterInput.toLowerCase()) }) : e }, t.sortByTitle = function () { var e = ___extends_155({}, this.plugin.getPluginState()), t = e.files, r = e.folders, n = e.sorting, o = t.sort(function (e, t) { return "titleDescending" === n ? t.name.localeCompare(e.name) : e.name.localeCompare(t.name) }), i = r.sort(function (e, t) { return "titleDescending" === n ? t.name.localeCompare(e.name) : e.name.localeCompare(t.name) }); this.plugin.setPluginState(___extends_155({}, e, { files: o, folders: i, sorting: "titleDescending" === n ? "titleAscending" : "titleDescending" })) }, t.sortByDate = function () { var e = ___extends_155({}, this.plugin.getPluginState()), t = e.files, r = e.folders, n = e.sorting, o = t.sort(function (e, t) { var r = new Date(e.modifiedDate), o = new Date(t.modifiedDate); return "dateDescending" === n ? r > o ? -1 : r < o ? 1 : 0 : r > o ? 1 : r < o ? -1 : 0 }), i = r.sort(function (e, t) { var r = new Date(e.modifiedDate), o = new Date(t.modifiedDate); return "dateDescending" === n ? r > o ? -1 : r < o ? 1 : 0 : r > o ? 1 : r < o ? -1 : 0 }); this.plugin.setPluginState(___extends_155({}, e, { files: o, folders: i, sorting: "dateDescending" === n ? "dateAscending" : "dateDescending" })) }, t.sortBySize = function () { var e = ___extends_155({}, this.plugin.getPluginState()), t = e.files, r = e.sorting; if (t.length && this.plugin.getItemData(t[0]).size) { var n = t.sort(function (e, t) { var n = e.size, o = t.size; return "sizeDescending" === r ? n > o ? -1 : n < o ? 1 : 0 : n > o ? 1 : n < o ? -1 : 0 }); this.plugin.setPluginState(___extends_155({}, e, { files: n, sorting: "sizeDescending" === r ? "sizeAscending" : "sizeDescending" })) } }, t.isActiveRow = function (e) { return this.plugin.getPluginState().activeRow === this.plugin.getItemId(e) }, t.isChecked = function (e) { return this.plugin.getPluginState().currentSelection.some(function (t) { return t.id === e.id }) }, t.addFolder = function (e) { var t = this, r = this.providerFileToId(e), n = this.plugin.getPluginState(), o = n.selectedFolders || {}; if (!(r in o && o[r].loading)) return o[r] = { loading: !0, files: [] }, this.plugin.setPluginState({ selectedFolders: o }), this.listAllFiles(e.requestPath).then(function (i) { i.forEach(function (e) { t.addFile(e) }); var s, a = i.map(t.providerFileToId); (n = t.plugin.getPluginState()).selectedFolders[r] = { loading: !1, files: a }, t.plugin.setPluginState({ selectedFolders: o }), s = i.length ? t.plugin.uppy.i18n("folderAdded", { smart_count: i.length, folder: e.name }) : t.plugin.uppy.i18n("emptyFolderAdded"), t.plugin.uppy.info(s) }).catch(function (e) { delete (n = t.plugin.getPluginState()).selectedFolders[r], t.plugin.setPluginState({ selectedFolders: n.selectedFolders }), t.handleError(e) }) }, t.toggleCheckbox = function (e, t) { e.stopPropagation(), e.preventDefault(), e.currentTarget.focus(); var r = this.plugin.getPluginState(), n = r.folders, o = r.files, i = this.filterItems(n.concat(o)); if (this.lastCheckbox && e.shiftKey) { var s, a = i.indexOf(this.lastCheckbox), l = i.indexOf(t); return s = a < l ? i.slice(a, l + 1) : i.slice(l, a + 1), void this.plugin.setPluginState({ currentSelection: s }) } this.lastCheckbox = t; var u = this.plugin.getPluginState().currentSelection; this.isChecked(t) ? this.plugin.setPluginState({ currentSelection: u.filter(function (e) { return e.id !== t.id }) }) : this.plugin.setPluginState({ currentSelection: u.concat([t]) }) }, t.providerFileToId = function (e) { return _$generateFileID_205({ data: e, name: e.name || e.id, type: e.mimeType }) }, t.handleAuth = function () { var t = this, r = btoa(JSON.stringify({ origin: "origin" in location ? location.origin : location.protocol + "//" + location.hostname + (location.port ? ":" + location.port : "") })), n = encodeURIComponent("@uppy/provider-views=" + e.VERSION), o = this.provider.authUrl() + "?state=" + r + "&uppyVersions=" + n, i = window.open(o, "_blank"); window.addEventListener("message", function e(r) { if (t._isOriginAllowed(r.origin, t.plugin.opts.companionAllowedHosts) && r.source === i) { var n = "string" == typeof r.data ? JSON.parse(r.data) : r.data; n.token ? (i.close(), window.removeEventListener("message", e), t.provider.setAuthToken(n.token), t.preFirstRender()) : t.plugin.uppy.log("did not receive token from auth window") } else t.plugin.uppy.log("rejecting event from " + r.origin + " vs allowed pattern " + t.plugin.opts.companionAllowedHosts) }) }, t._isOriginAllowed = function (e, t) { var r = function (e) { return "string" == typeof e ? new RegExp("^" + e + "$") : e instanceof RegExp ? e : void 0 }; return (Array.isArray(t) ? t.map(r) : [r(t)]).filter(function (e) { return null != e }).some(function (t) { return t.test(e) || t.test(e + "/") }) }, t.handleError = function (e) { var t = this.plugin.uppy; if (t.log(e.toString()), !e.isAuthError) { var r = t.i18n("companionError"); t.info({ message: r, details: e.toString() }, "error", 5e3) } }, t.handleScroll = function (e) { var t = this, r = e.target.scrollHeight - (e.target.scrollTop + e.target.offsetHeight), n = this.nextPagePath || null; r < 50 && n && !this._isHandlingScroll && (this.provider.list(n).then(function (e) { var r = t.plugin.getPluginState(), n = r.files, o = r.folders; t._updateFilesAndFolders(e, n, o) }).catch(this.handleError).then(function () { t._isHandlingScroll = !1 }), this._isHandlingScroll = !0) }, t.listAllFiles = function (e, t) { var r = this; return void 0 === t && (t = null), t = t || [], new Promise(function (n, o) { r.provider.list(e).then(function (e) { e.items.forEach(function (e) { e.isFolder || t.push(e) }); var i = e.nextPagePath || null; return i ? r.listAllFiles(i, t).then(function (e) { return n(e) }).catch(function (e) { return o(e) }) : n(t) }).catch(function (e) { return o(e) }) }) }, t.donePicking = function () { var e = this, t = this.plugin.getPluginState().currentSelection.map(function (t) { return t.isFolder ? e.addFolder(t) : e.addFile(t) }); this._loaderWrapper(Promise.all(t), function () { e.clearSelection() }, function () { }) }, t.cancelPicking = function () { this.clearSelection(); var e = this.plugin.uppy.getPlugin("Dashboard"); e && e.hideAllPanels() }, t.clearSelection = function () { this.plugin.setPluginState({ currentSelection: [] }) }, t._loaderWrapper = function (e, t, r) { var n = this; e.then(function (e) { n.plugin.setPluginState({ loading: !1 }), t(e) }).catch(function (e) { n.plugin.setPluginState({ loading: !1 }), r(e) }), this.plugin.setPluginState({ loading: !0 }) }, t.render = function (e, t) { void 0 === t && (t = {}); var r = this.plugin.getPluginState(), n = r.authenticated; if (r.didFirstRender || this.preFirstRender(), this.plugin.getPluginState().loading) return __h_155(CloseWrapper, { onUnmount: this.clearSelection }, __h_155(_$Loader_154, { i18n: this.plugin.uppy.i18n })); if (!n) return __h_155(CloseWrapper, { onUnmount: this.clearSelection }, __h_155(_$AuthView_144, { pluginName: this.plugin.title, pluginIcon: this.plugin.icon, handleAuth: this.handleAuth, i18n: this.plugin.uppy.i18n, i18nArray: this.plugin.uppy.i18nArray })); var o = ___extends_155({}, this.opts, {}, t), i = ___extends_155({}, this.plugin.getPluginState(), { username: this.username, getNextFolder: this.getNextFolder, getFolder: this.getFolder, filterItems: this.filterItems, filterQuery: this.filterQuery, toggleSearch: this.toggleSearch, sortByTitle: this.sortByTitle, sortByDate: this.sortByDate, logout: this.logout, isActiveRow: this.isActiveRow, isChecked: this.isChecked, toggleCheckbox: this.toggleCheckbox, handleScroll: this.handleScroll, listAllFiles: this.listAllFiles, done: this.donePicking, cancel: this.cancelPicking, title: this.plugin.title, viewType: o.viewType, showTitles: o.showTitles, showFilter: o.showFilter, showBreadcrumbs: o.showBreadcrumbs, pluginIcon: this.plugin.icon, i18n: this.plugin.uppy.i18n }); return __h_155(CloseWrapper, { onUnmount: this.clearSelection }, __h_155(_$Browser_146, i)) }, e }(), ___class_155.VERSION = _$package_156.version, ___temp_155), _$package_166 = { version: "1.2.0" }, _$lib_165 = {}; function ___extends_165() { return (___extends_165 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } var STATE_UPDATE = "uppy/STATE_UPDATE", defaultSelector = function (e) { return function (t) { return t.uppy[e] } }, ReduxStore = function () { function e(e) { this._store = e.store, this._id = e.id || _$cuid_13(), this._selector = e.selector || defaultSelector(this._id), this.setState({}) } var t = e.prototype; return t.setState = function (e) { this._store.dispatch({ type: STATE_UPDATE, id: this._id, payload: e }) }, t.getState = function () { return this._selector(this._store.getState()) }, t.subscribe = function (e) { var t = this, r = this.getState(); return this._store.subscribe(function () { var n = t.getState(); if (r !== n) { var o = function (e, t) { var r = Object.keys(t), n = {}; return r.forEach(function (r) { e[r] !== t[r] && (n[r] = t[r]) }), n }(r, n); e(r, n, o), r = n } }) }, e }(); ReduxStore.VERSION = _$package_166.version, _$lib_165 = function (e) { return new ReduxStore(e) }, _$lib_165.STATE_UPDATE = STATE_UPDATE, _$lib_165.reducer = function (e, t) { if (void 0 === e && (e = {}), t.type === STATE_UPDATE) { var r, n = ___extends_165({}, e[t.id], t.payload); return ___extends_165({}, e, ((r = {})[t.id] = n, r)) } return e }, _$lib_165.middleware = function () { return function () { return function (e) { return function (t) { e(t) } } } }; var _$isShallowEqual_43 = function (e, t) { if (e === t) return !0; for (var r in e) if (!(r in t)) return !1; for (var r in t) if (e[r] !== t[r]) return !1; return !0 }; function ___extends_118() { return (___extends_118 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } var __h_118 = _$preact_53.h, __Component_118 = _$preact_53.Component, _$pure_118 = function (e) { return function (t) { var r, n; function o() { return t.apply(this, arguments) || this } n = t, (r = o).prototype = Object.create(n.prototype), r.prototype.constructor = r, r.__proto__ = n; var i = o.prototype; return i.shouldComponentUpdate = function (e) { return !_$isShallowEqual_43(this.props, e) }, i.render = function () { var t = ___extends_118({}, this.props); return __h_118(e, t) }, o }(__Component_118) }, __h_111 = _$preact_53.h, _$icons_111 = { defaultPickerIcon: function () { return __h_111("svg", { "aria-hidden": "true", focusable: "false", width: "30", height: "30", viewBox: "0 0 30 30" }, __h_111("path", { d: "M15 30c8.284 0 15-6.716 15-15 0-8.284-6.716-15-15-15C6.716 0 0 6.716 0 15c0 8.284 6.716 15 15 15zm4.258-12.676v6.846h-8.426v-6.846H5.204l9.82-12.364 9.82 12.364H19.26z" })) }, iconRetry: function () { return __h_111("svg", { "aria-hidden": "true", focusable: "false", class: "UppyIcon retry", width: "28", height: "31", viewBox: "0 0 16 19" }, __h_111("path", { d: "M16 11a8 8 0 1 1-8-8v2a6 6 0 1 0 6 6h2z" }), __h_111("path", { d: "M7.9 3H10v2H7.9z" }), __h_111("path", { d: "M8.536.5l3.535 3.536-1.414 1.414L7.12 1.914z" }), __h_111("path", { d: "M10.657 2.621l1.414 1.415L8.536 7.57 7.12 6.157z" })) }, localIcon: function () { return __h_111("svg", { "aria-hidden": "true", focusable: "false", fill: "#607d8b", width: "27", height: "25", viewBox: "0 0 27 25" }, __h_111("path", { d: "M5.586 9.288a.313.313 0 0 0 .282.176h4.84v3.922c0 1.514 1.25 2.24 2.792 2.24 1.54 0 2.79-.726 2.79-2.24V9.464h4.84c.122 0 .23-.068.284-.176a.304.304 0 0 0-.046-.324L13.735.106a.316.316 0 0 0-.472 0l-7.63 8.857a.302.302 0 0 0-.047.325z" }), __h_111("path", { d: "M24.3 5.093c-.218-.76-.54-1.187-1.208-1.187h-4.856l1.018 1.18h3.948l2.043 11.038h-7.193v2.728H9.114v-2.725h-7.36l2.66-11.04h3.33l1.018-1.18H3.907c-.668 0-1.06.46-1.21 1.186L0 16.456v7.062C0 24.338.676 25 1.51 25h23.98c.833 0 1.51-.663 1.51-1.482v-7.062L24.3 5.093z" })) }, iconAudio: function () { return __h_111("svg", { "aria-hidden": "true", focusable: "false", class: "UppyIcon", width: "25", height: "25", viewBox: "0 0 25 25" }, __h_111("path", { d: "M9.5 18.64c0 1.14-1.145 2-2.5 2s-2.5-.86-2.5-2c0-1.14 1.145-2 2.5-2 .557 0 1.079.145 1.5.396V7.25a.5.5 0 0 1 .379-.485l9-2.25A.5.5 0 0 1 18.5 5v11.64c0 1.14-1.145 2-2.5 2s-2.5-.86-2.5-2c0-1.14 1.145-2 2.5-2 .557 0 1.079.145 1.5.396V8.67l-8 2v7.97zm8-11v-2l-8 2v2l8-2zM7 19.64c.855 0 1.5-.484 1.5-1s-.645-1-1.5-1-1.5.484-1.5 1 .645 1 1.5 1zm9-2c.855 0 1.5-.484 1.5-1s-.645-1-1.5-1-1.5.484-1.5 1 .645 1 1.5 1z", fill: "#049BCF", "fill-rule": "nonzero" })) }, iconVideo: function () { return __h_111("svg", { "aria-hidden": "true", focusable: "false", class: "UppyIcon", width: "25", height: "25", viewBox: "0 0 25 25" }, __h_111("path", { d: "M16 11.834l4.486-2.691A1 1 0 0 1 22 10v6a1 1 0 0 1-1.514.857L16 14.167V17a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2.834zM15 9H5v8h10V9zm1 4l5 3v-6l-5 3z", fill: "#19AF67", "fill-rule": "nonzero" })) }, iconPDF: function () { return __h_111("svg", { "aria-hidden": "true", focusable: "false", class: "UppyIcon", width: "25", height: "25", viewBox: "0 0 25 25" }, __h_111("path", { d: "M9.766 8.295c-.691-1.843-.539-3.401.747-3.726 1.643-.414 2.505.938 2.39 3.299-.039.79-.194 1.662-.537 3.148.324.49.66.967 1.055 1.51.17.231.382.488.629.757 1.866-.128 3.653.114 4.918.655 1.487.635 2.192 1.685 1.614 2.84-.566 1.133-1.839 1.084-3.416.249-1.141-.604-2.457-1.634-3.51-2.707a13.467 13.467 0 0 0-2.238.426c-1.392 4.051-4.534 6.453-5.707 4.572-.986-1.58 1.38-4.206 4.914-5.375.097-.322.185-.656.264-1.001.08-.353.306-1.31.407-1.737-.678-1.059-1.2-2.031-1.53-2.91zm2.098 4.87c-.033.144-.068.287-.104.427l.033-.01-.012.038a14.065 14.065 0 0 1 1.02-.197l-.032-.033.052-.004a7.902 7.902 0 0 1-.208-.271c-.197-.27-.38-.526-.555-.775l-.006.028-.002-.003c-.076.323-.148.632-.186.8zm5.77 2.978c1.143.605 1.832.632 2.054.187.26-.519-.087-1.034-1.113-1.473-.911-.39-2.175-.608-3.55-.608.845.766 1.787 1.459 2.609 1.894zM6.559 18.789c.14.223.693.16 1.425-.413.827-.648 1.61-1.747 2.208-3.206-2.563 1.064-4.102 2.867-3.633 3.62zm5.345-10.97c.088-1.793-.351-2.48-1.146-2.28-.473.119-.564 1.05-.056 2.405.213.566.52 1.188.908 1.859.18-.858.268-1.453.294-1.984z", fill: "#E2514A", "fill-rule": "nonzero" })) }, iconFile: function () { return __h_111("svg", { "aria-hidden": "true", focusable: "false", class: "UppyIcon", width: "25", height: "25", viewBox: "0 0 25 25" }, __h_111("g", { fill: "#A7AFB7", "fill-rule": "nonzero" }, __h_111("path", { d: "M5.5 22a.5.5 0 0 1-.5-.5v-18a.5.5 0 0 1 .5-.5h10.719a.5.5 0 0 1 .367.16l3.281 3.556a.5.5 0 0 1 .133.339V21.5a.5.5 0 0 1-.5.5h-14zm.5-1h13V7.25L16 4H6v17z" }), __h_111("path", { d: "M15 4v3a1 1 0 0 0 1 1h3V7h-3V4h-1z" }))) }, iconText: function () { return __h_111("svg", { "aria-hidden": "true", focusable: "false", class: "UppyIcon", width: "25", height: "25", viewBox: "0 0 25 25" }, __h_111("path", { d: "M4.5 7h13a.5.5 0 1 1 0 1h-13a.5.5 0 0 1 0-1zm0 3h15a.5.5 0 1 1 0 1h-15a.5.5 0 1 1 0-1zm0 3h15a.5.5 0 1 1 0 1h-15a.5.5 0 1 1 0-1zm0 3h10a.5.5 0 1 1 0 1h-10a.5.5 0 1 1 0-1z", fill: "#5A5E69", "fill-rule": "nonzero" })) }, iconCopyLink: function () { return __h_111("svg", { "aria-hidden": "true", focusable: "false", class: "UppyIcon", width: "14", height: "14", viewBox: "0 0 14 12" }, __h_111("path", { d: "M7.94 7.703a2.613 2.613 0 0 1-.626 2.681l-.852.851a2.597 2.597 0 0 1-1.849.766A2.616 2.616 0 0 1 2.764 7.54l.852-.852a2.596 2.596 0 0 1 2.69-.625L5.267 7.099a1.44 1.44 0 0 0-.833.407l-.852.851a1.458 1.458 0 0 0 1.03 2.486c.39 0 .755-.152 1.03-.426l.852-.852c.231-.231.363-.522.406-.824l1.04-1.038zm4.295-5.937A2.596 2.596 0 0 0 10.387 1c-.698 0-1.355.272-1.849.766l-.852.851a2.614 2.614 0 0 0-.624 2.688l1.036-1.036c.041-.304.173-.6.407-.833l.852-.852c.275-.275.64-.426 1.03-.426a1.458 1.458 0 0 1 1.03 2.486l-.852.851a1.442 1.442 0 0 1-.824.406l-1.04 1.04a2.596 2.596 0 0 0 2.683-.628l.851-.85a2.616 2.616 0 0 0 0-3.697zm-6.88 6.883a.577.577 0 0 0 .82 0l3.474-3.474a.579.579 0 1 0-.819-.82L5.355 7.83a.579.579 0 0 0 0 .819z" })) }, iconPencil: function () { return __h_111("svg", { "aria-hidden": "true", focusable: "false", class: "UppyIcon", width: "14", height: "14", viewBox: "0 0 14 14" }, __h_111("g", { "fill-rule": "evenodd" }, __h_111("path", { d: "M1.5 10.793h2.793A1 1 0 0 0 5 10.5L11.5 4a1 1 0 0 0 0-1.414L9.707.793a1 1 0 0 0-1.414 0l-6.5 6.5A1 1 0 0 0 1.5 8v2.793zm1-1V8L9 1.5l1.793 1.793-6.5 6.5H2.5z", "fill-rule": "nonzero" }), __h_111("rect", { x: "1", y: "12.293", width: "11", height: "1", rx: ".5" }), __h_111("path", { "fill-rule": "nonzero", d: "M6.793 2.5L9.5 5.207l.707-.707L7.5 1.793z" }))) }, iconCross: function () { return __h_111("svg", { "aria-hidden": "true", focusable: "false", class: "UppyIcon", width: "18", height: "18", viewBox: "0 0 18 18" }, __h_111("path", { d: "M9 0C4.034 0 0 4.034 0 9s4.034 9 9 9 9-4.034 9-9-4.034-9-9-9z" }), __h_111("path", { fill: "#FFF", d: "M13 12.222l-.778.778L9 9.778 5.778 13 5 12.222 8.222 9 5 5.778 5.778 5 9 8.222 12.222 5l.778.778L9.778 9z" })) }, iconPlus: function () { return __h_111("svg", { "aria-hidden": "true", focusable: "false", class: "UppyIcon", width: "15", height: "15", viewBox: "0 0 15 15" }, __h_111("path", { d: "M8 6.5h6a.5.5 0 0 1 .5.5v.5a.5.5 0 0 1-.5.5H8v6a.5.5 0 0 1-.5.5H7a.5.5 0 0 1-.5-.5V8h-6a.5.5 0 0 1-.5-.5V7a.5.5 0 0 1 .5-.5h6v-6A.5.5 0 0 1 7 0h.5a.5.5 0 0 1 .5.5v6z" })) } }, iconFile = _$icons_111.iconFile, iconText = _$icons_111.iconText, iconAudio = _$icons_111.iconAudio, iconVideo = _$icons_111.iconVideo, iconPDF = _$icons_111.iconPDF, _$getFileTypeIcon_116 = function (e) { var t = { color: "#838999", icon: iconFile() }; if (!e) return t; var r = e.split("/")[0], n = e.split("/")[1]; return "text" === r ? { color: "#5a5e69", icon: iconText() } : "audio" === r ? { color: "#068dbb", icon: iconAudio() } : "video" === r ? { color: "#19af67", icon: iconVideo() } : "application" === r && "pdf" === n ? { color: "#e25149", icon: iconPDF() } : "image" === r ? { color: "#f2f2f2", icon: "" } : t }, __h_108 = _$preact_53.h, _$FilePreview_108 = function (e) { var t = e.file; if (t.preview) return __h_108("img", { class: "uppy-DashboardItem-previewImg", alt: t.name, src: t.preview }); var r = _$getFileTypeIcon_116(t.type), n = r.color, o = r.icon; return __h_108("div", { class: "uppy-DashboardItem-previewIconWrap" }, __h_108("span", { class: "uppy-DashboardItem-previewIcon", style: { color: n } }, o), __h_108("svg", { "aria-hidden": "true", focusable: "false", class: "uppy-DashboardItem-previewIconBg", width: "58", height: "76", viewBox: "0 0 58 76" }, __h_108("rect", { fill: "#FFF", width: "58", height: "76", rx: "3", "fill-rule": "evenodd" }))) }, __h_103 = _$preact_53.h, _$FilePreviewAndLink_103 = function (e) { return __h_103("div", { class: "uppy-DashboardItem-previewInnerWrap", style: { backgroundColor: _$getFileTypeIcon_116(e.file.type).color } }, e.showLinkToFileUploadResult && e.file.uploadURL && __h_103("a", { class: "uppy-DashboardItem-previewLink", href: e.file.uploadURL, rel: "noreferrer noopener", target: "_blank", "aria-label": e.file.meta.name }), __h_103(_$FilePreview_108, { file: e.file })) }, __h_104 = _$preact_53.h, circleLength = 2 * Math.PI * 15, _$PauseResumeCancelIcon_104 = function (e) { return __h_104("svg", { "aria-hidden": "true", focusable: "false", width: "70", height: "70", viewBox: "0 0 36 36", class: "UppyIcon UppyIcon-progressCircle" }, __h_104("g", { class: "progress-group" }, __h_104("circle", { class: "bg", r: "15", cx: "18", cy: "18", "stroke-width": "2", fill: "none" }), __h_104("circle", { class: "progress", r: "15", cx: "18", cy: "18", transform: "rotate(-90, 18, 18)", "stroke-width": "2", fill: "none", "stroke-dasharray": circleLength, "stroke-dashoffset": circleLength - circleLength / 100 * e.progress })), !e.hidePauseResumeCancelButtons && __h_104("g", null, __h_104("polygon", { class: "play", transform: "translate(3, 3)", points: "12 20 12 10 20 15" }), __h_104("g", { class: "pause", transform: "translate(14.5, 13)" }, __h_104("rect", { x: "0", y: "0", width: "2", height: "10", rx: "0" }), __h_104("rect", { x: "5", y: "0", width: "2", height: "10", rx: "0" })), __h_104("polygon", { class: "cancel", transform: "translate(2, 2)", points: "19.8856516 11.0625 16 14.9481516 12.1019737 11.0625 11.0625 12.1143484 14.9481516 16 11.0625 19.8980263 12.1019737 20.9375 16 17.0518484 19.8856516 20.9375 20.9375 19.8980263 17.0518484 16 20.9375 12" })), __h_104("polygon", { class: "check", transform: "translate(2, 3)", points: "14 22.5 7 15.2457065 8.99985857 13.1732815 14 18.3547104 22.9729883 9 25 11.1005634" })) }, __h_105 = _$preact_53.h, iconRetry = _$icons_111.iconRetry; function progressIndicatorTitle(e) { return e.isUploaded ? e.i18n("uploadComplete") : e.error ? e.i18n("retryUpload") : e.resumableUploads ? e.file.isPaused ? e.i18n("resumeUpload") : e.i18n("pauseUpload") : e.individualCancellation ? e.i18n("cancelUpload") : "" } var _$FileProgress_105 = function (e) { return e.hideRetryButton && e.error ? __h_105("div", { class: "uppy-DashboardItem-progress" }) : e.isUploaded || e.hidePauseResumeCancelButtons && !e.error ? __h_105("div", { class: "uppy-DashboardItem-progress" }, __h_105("div", { class: "uppy-DashboardItem-progressIndicator" }, __h_105(_$PauseResumeCancelIcon_104, { progress: e.file.progress.percentage, hidePauseResumeCancelButtons: e.hidePauseResumeCancelButtons }))) : __h_105("div", { class: "uppy-DashboardItem-progress" }, __h_105("button", { class: "uppy-u-reset uppy-DashboardItem-progressIndicator", type: "button", "aria-label": progressIndicatorTitle(e), title: progressIndicatorTitle(e), onclick: function () { return function (e) { e.isUploaded || (!e.error || e.hideRetryButton ? e.hidePauseResumeCancelButtons || (e.resumableUploads ? e.pauseUpload(e.file.id) : e.individualCancellation && e.cancelUpload(e.file.id)) : e.retryUpload(e.file.id)) }(e) } }, e.error ? e.hideRetryButton ? null : iconRetry() : __h_105(_$PauseResumeCancelIcon_104, { progress: e.file.progress.percentage, hidePauseResumeCancelButtons: e.hidePauseResumeCancelButtons }))) }, _$truncateString_120 = function (e, t) { if (e.length <= t) return e; if (t <= "...".length) return e.substr(0, t); var r = t - "...".length, n = Math.ceil(r / 2), o = Math.floor(r / 2); return e.substr(0, n) + "..." + e.substr(e.length - o) }, __h_102 = _$preact_53.h, renderFileSource = function (e) { return e.file.source && e.file.source !== e.id && __h_102("div", { class: "uppy-DashboardItem-sourceIcon" }, e.acquirers.map(function (t) { if (t.id === e.file.source) return function (e, t) { return __h_102("span", { title: t.i18n("fileSource", { name: e.name }) }, e.icon()) }(t, e) })) }, _$FileInfo_102 = function (e) { return __h_102("div", { class: "uppy-DashboardItem-fileInfo", "data-uppy-file-source": e.file.source }, function (e) { var t; return t = e.containerWidth <= 352 ? 35 : e.containerWidth <= 576 ? 60 : 30, __h_102("div", { class: "uppy-DashboardItem-name", title: e.file.meta.name }, _$truncateString_120(e.file.meta.name, t)) }(e), __h_102("div", { class: "uppy-DashboardItem-status" }, function (e) { return e.file.data.size && __h_102("div", { class: "uppy-DashboardItem-statusSize" }, _$prettyBytes_225(e.file.data.size)) }(e), renderFileSource(e))) }, _$copyToClipboard_113 = function (e, t) { return t = t || "Copy the URL below", new Promise(function (r) { var n = document.createElement("textarea"); n.setAttribute("style", { position: "fixed", top: 0, left: 0, width: "2em", height: "2em", padding: 0, border: "none", outline: "none", boxShadow: "none", background: "transparent" }), n.value = e, document.body.appendChild(n), n.select(); var o = function () { document.body.removeChild(n), window.prompt(t, e), r() }; try { return document.execCommand("copy") ? (document.body.removeChild(n), r()) : o() } catch (err) { return document.body.removeChild(n), o() } }) }, __h_101 = _$preact_53.h, iconPencil = _$icons_111.iconPencil, iconCross = _$icons_111.iconCross, iconCopyLink = _$icons_111.iconCopyLink, renderCopyLinkButton = function (e) { return e.showLinkToFileUploadResult && e.file.uploadURL && __h_101("button", { class: "uppy-u-reset uppy-DashboardItem-action uppy-DashboardItem-action--copyLink", type: "button", "aria-label": e.i18n("copyLink"), title: e.i18n("copyLink"), onclick: function (t) { return function (e, t) { return _$copyToClipboard_113(t.file.uploadURL, t.i18n("copyLinkToClipboardFallback")).then(function () { t.log("Link copied to clipboard."), t.info(t.i18n("copyLinkToClipboardSuccess"), "info", 3e3) }).catch(t.log).then(function () { return e.target.focus({ preventScroll: !0 }) }) }(t, e) } }, iconCopyLink()) }, _$Buttons_101 = function (e) { return __h_101("div", { className: "uppy-DashboardItem-actionWrapper" }, function (e) { return !e.uploadInProgressOrComplete && e.metaFields && e.metaFields.length > 0 && __h_101("button", { class: "uppy-u-reset uppy-DashboardItem-action uppy-DashboardItem-action--edit", type: "button", "aria-label": e.i18n("editFile") + " " + e.file.meta.name, title: e.i18n("editFile"), onclick: function (t) { return e.toggleFileCard(e.file.id) } }, iconPencil()) }(e), renderCopyLinkButton(e), function (e) { return e.showRemoveButton && __h_101("button", { class: "uppy-u-reset uppy-DashboardItem-action uppy-DashboardItem-action--remove", type: "button", "aria-label": e.i18n("removeFile"), title: e.i18n("removeFile"), onclick: function () { return e.removeFile(e.file.id) } }, iconCross()) }(e)) }; function ___extends_106() { return (___extends_106 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } var __h_106 = _$preact_53.h, _$FileItem_106 = _$pure_118(function (e) { var t = e.file, r = t.progress.preprocess || t.progress.postprocess, n = t.progress.uploadComplete && !r && !t.error, o = t.progress.uploadStarted || r, i = t.progress.uploadStarted && !t.progress.uploadComplete || r, s = t.isPaused || !1, a = t.error || !1, l = e.individualCancellation ? !n : !i && !n, u = _$classnames_9("uppy-u-reset", "uppy-DashboardItem", { "is-inprogress": i }, { "is-processing": r }, { "is-complete": n }, { "is-paused": s }, { "is-error": !!a }, { "is-resumable": e.resumableUploads }, { "is-noIndividualCancellation": !e.individualCancellation }); return __h_106("li", { class: u, id: "uppy_" + t.id }, __h_106("div", { class: "uppy-DashboardItem-preview" }, __h_106(_$FilePreviewAndLink_103, { file: t, showLinkToFileUploadResult: e.showLinkToFileUploadResult }), __h_106(_$FileProgress_105, ___extends_106({}, e, { file: t, error: a, isUploaded: n }))), __h_106("div", { class: "uppy-DashboardItem-fileInfoAndButtons" }, __h_106(_$FileInfo_102, { file: t, id: e.id, acquirers: e.acquirers, containerWidth: e.containerWidth, i18n: e.i18n }), __h_106(_$Buttons_101, { file: t, metaFields: e.metaFields, showLinkToFileUploadResult: e.showLinkToFileUploadResult, showRemoveButton: l, uploadInProgressOrComplete: o, removeFile: e.removeFile, toggleFileCard: e.toggleFileCard, i18n: e.i18n, log: e.log, info: e.info }))) }); function ___extends_107() { return (___extends_107 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } var __h_107 = _$preact_53.h, _$FileList_107 = function (e) { var t = 0 === e.totalFileCount, r = _$classnames_9("uppy-Dashboard-files", { "uppy-Dashboard-files--noFiles": t }), n = { id: e.id, error: e.error, i18n: e.i18n, log: e.log, info: e.info, acquirers: e.acquirers, resumableUploads: e.resumableUploads, individualCancellation: e.individualCancellation, hideRetryButton: e.hideRetryButton, hidePauseResumeCancelButtons: e.hidePauseResumeCancelButtons, showLinkToFileUploadResult: e.showLinkToFileUploadResult, isWide: e.isWide, metaFields: e.metaFields, retryUpload: e.retryUpload, pauseUpload: e.pauseUpload, cancelUpload: e.cancelUpload, toggleFileCard: e.toggleFileCard, removeFile: e.removeFile }; return __h_107("ul", { class: r, tabindex: "-1" }, Object.keys(e.files).map(function (t) { return __h_107(_$FileItem_106, ___extends_107({ key: t }, n, { file: e.files[t] })) })) }; function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } var localIcon = _$icons_111.localIcon, __h_97 = _$preact_53.h, AddFiles = function (e) { var t, r; function n(t) { var r; return (r = e.call(this, t) || this).triggerFileInputClick = r.triggerFileInputClick.bind(_assertThisInitialized(r)), r.handleFileInputChange = r.handleFileInputChange.bind(_assertThisInitialized(r)), r.renderPoweredByUppy = r.renderPoweredByUppy.bind(_assertThisInitialized(r)), r.renderHiddenFileInput = r.renderHiddenFileInput.bind(_assertThisInitialized(r)), r.renderDropPasteBrowseTagline = r.renderDropPasteBrowseTagline.bind(_assertThisInitialized(r)), r.renderMyDeviceAcquirer = r.renderMyDeviceAcquirer.bind(_assertThisInitialized(r)), r.renderAcquirer = r.renderAcquirer.bind(_assertThisInitialized(r)), r } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.triggerFileInputClick = function () { this.fileInput.click() }, o.handleFileInputChange = function (e) { this.props.handleInputChange(e), e.target.value = null }, o.renderPoweredByUppy = function () { return __h_97("a", { tabindex: "-1", href: "https://uppy.io", rel: "noreferrer noopener", target: "_blank", class: "uppy-Dashboard-poweredBy" }, this.props.i18n("poweredBy") + " ", __h_97("svg", { "aria-hidden": "true", focusable: "false", class: "UppyIcon uppy-Dashboard-poweredByIcon", width: "11", height: "11", viewBox: "0 0 11 11" }, __h_97("path", { d: "M7.365 10.5l-.01-4.045h2.612L5.5.806l-4.467 5.65h2.604l.01 4.044h3.718z", "fill-rule": "evenodd" })), __h_97("span", { class: "uppy-Dashboard-poweredByUppy" }, "Uppy")) }, o.renderHiddenFileInput = function () { var e = this; return __h_97("input", { class: "uppy-Dashboard-input", hidden: !0, "aria-hidden": "true", tabindex: -1, type: "file", name: "files[]", multiple: 1 !== this.props.maxNumberOfFiles, onchange: this.handleFileInputChange, accept: this.props.allowedFileTypes, ref: function (t) { e.fileInput = t } }) }, o.renderDropPasteBrowseTagline = function () { var e = __h_97("button", { type: "button", class: "uppy-u-reset uppy-Dashboard-browse", onclick: this.triggerFileInputClick }, this.props.i18n("browse")); return __h_97("div", { class: "uppy-Dashboard-dropFilesTitle" }, 0 === this.props.acquirers.length ? this.props.i18nArray("dropPaste", { browse: e }) : this.props.i18nArray("dropPasteImport", { browse: e })) }, o.renderMyDeviceAcquirer = function () { return __h_97("div", { class: "uppy-DashboardTab", role: "presentation" }, __h_97("button", { type: "button", class: "uppy-DashboardTab-btn", role: "tab", tabindex: 0, "data-uppy-super-focusable": !0, onclick: this.triggerFileInputClick }, localIcon(), __h_97("div", { class: "uppy-DashboardTab-name" }, this.props.i18n("myDevice")))) }, o.renderAcquirer = function (e) { var t = this; return __h_97("div", { class: "uppy-DashboardTab", role: "presentation" }, __h_97("button", { type: "button", class: "uppy-DashboardTab-btn", role: "tab", tabindex: 0, "aria-controls": "uppy-DashboardContent-panel--" + e.id, "aria-selected": this.props.activePickerPanel.id === e.id, "data-uppy-super-focusable": !0, onclick: function () { return t.props.showPanel(e.id) } }, e.icon(), __h_97("div", { class: "uppy-DashboardTab-name" }, e.name))) }, o.render = function () { var e = this; return __h_97("div", { class: "uppy-DashboardAddFiles" }, this.renderHiddenFileInput(), __h_97("div", { class: "uppy-DashboardTabs" }, this.renderDropPasteBrowseTagline(), this.props.acquirers.length > 0 && __h_97("div", { class: "uppy-DashboardTabs-list", role: "tablist" }, this.renderMyDeviceAcquirer(), this.props.acquirers.map(function (t) { return e.renderAcquirer(t) }))), __h_97("div", { class: "uppy-DashboardAddFiles-info" }, this.props.note && __h_97("div", { class: "uppy-Dashboard-note" }, this.props.note), this.props.proudlyDisplayPoweredByUppy && this.renderPoweredByUppy(this.props))) }, n }(_$preact_53.Component), _$AddFiles_97 = AddFiles, __h_98 = _$preact_53.h, _$AddFilesPanel_98 = function (e) { return __h_98("div", { class: "uppy-Dashboard-AddFilesPanel", "data-uppy-panelType": "AddFiles", "aria-hidden": e.showAddFilesPanel }, __h_98("div", { class: "uppy-DashboardContent-bar" }, __h_98("div", { class: "uppy-DashboardContent-title", role: "heading", "aria-level": "h1" }, e.i18n("addingMoreFiles")), __h_98("button", { class: "uppy-DashboardContent-back", type: "button", onclick: function (t) { return e.toggleAddFilesPanel(!1) } }, e.i18n("back"))), __h_98(_$AddFiles_97, e)) }, _$ignoreEvent_117 = function (e) { var t = e.target.tagName; "INPUT" !== t && "TEXTAREA" !== t ? (e.preventDefault(), e.stopPropagation()) : e.stopPropagation() }, __h_109 = _$preact_53.h, _$PickerPanelContent_109 = function (e) { return __h_109("div", { class: "uppy-DashboardContent-panel", role: "tabpanel", "data-uppy-panelType": "PickerPanel", id: "uppy-DashboardContent-panel--" + e.activePickerPanel.id, onDragOver: _$ignoreEvent_117, onDragLeave: _$ignoreEvent_117, onDrop: _$ignoreEvent_117, onPaste: _$ignoreEvent_117 }, __h_109("div", { class: "uppy-DashboardContent-bar" }, __h_109("div", { class: "uppy-DashboardContent-title", role: "heading", "aria-level": "h1" }, e.i18n("importFrom", { name: e.activePickerPanel.name })), __h_109("button", { class: "uppy-DashboardContent-back", type: "button", onclick: e.hideAllPanels }, e.i18n("done"))), __h_109("div", { class: "uppy-DashboardContent-panelBody" }, e.getPlugin(e.activePickerPanel.id).render(e.state))) }, __h_110 = _$preact_53.h, iconPlus = _$icons_111.iconPlus, uploadStates = { STATE_ERROR: "error", STATE_WAITING: "waiting", STATE_PREPROCESSING: "preprocessing", STATE_UPLOADING: "uploading", STATE_POSTPROCESSING: "postprocessing", STATE_COMPLETE: "complete", STATE_PAUSED: "paused" }; function UploadStatus(e) { switch (function (e, t, r, n) { if (void 0 === n && (n = {}), e) return uploadStates.STATE_ERROR; if (t) return uploadStates.STATE_COMPLETE; if (r) return uploadStates.STATE_PAUSED; for (var o = uploadStates.STATE_WAITING, i = Object.keys(n), s = 0; s < i.length; s++) { var a = n[i[s]].progress; if (a.uploadStarted && !a.uploadComplete) return uploadStates.STATE_UPLOADING; a.preprocess && o !== uploadStates.STATE_UPLOADING && (o = uploadStates.STATE_PREPROCESSING), a.postprocess && o !== uploadStates.STATE_UPLOADING && o !== uploadStates.STATE_PREPROCESSING && (o = uploadStates.STATE_POSTPROCESSING) } return o }(e.isAllErrored, e.isAllComplete, e.isAllPaused, e.files)) { case "uploading": return e.i18n("uploadingXFiles", { smart_count: e.inProgressNotPausedFiles.length }); case "preprocessing": case "postprocessing": return e.i18n("processingXFiles", { smart_count: e.processingFiles.length }); case "paused": return e.i18n("uploadPaused"); case "waiting": return e.i18n("xFilesSelected", { smart_count: e.newFiles.length }); case "complete": return e.i18n("uploadComplete") } } var _$PickerPanelTopBar_110 = function (e) { var t = e.allowNewUpload; return t && e.maxNumberOfFiles && (t = e.totalFileCount < e.maxNumberOfFiles), __h_110("div", { class: "uppy-DashboardContent-bar" }, e.isAllComplete ? __h_110("div", null) : __h_110("button", { class: "uppy-DashboardContent-back", type: "button", onclick: e.cancelAll }, e.i18n("cancel")), __h_110("div", { class: "uppy-DashboardContent-title", role: "heading", "aria-level": "h1" }, __h_110(UploadStatus, e)), t ? __h_110("button", { class: "uppy-DashboardContent-addMore", type: "button", "aria-label": e.i18n("addMoreFiles"), title: e.i18n("addMoreFiles"), onclick: function () { return e.toggleAddFilesPanel(!0) } }, iconPlus(), __h_110("span", { class: "uppy-DashboardContent-addMoreCaption" }, e.i18n("addMore"))) : __h_110("div", null)) }; function ___extends_100() { return (___extends_100 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } var __h_100 = _$preact_53.h, __Component_100 = _$preact_53.Component, FileCard = function (e) { var t, r; function n(t) { var r; (r = e.call(this, t) || this).saveOnEnter = function (e) { if (13 === e.keyCode) { e.stopPropagation(), e.preventDefault(); var t = r.props.files[r.props.fileCardFor]; r.props.saveFileCard(r.state.formState, t.id) } }, r.tempStoreMeta = function (e, t) { var n; r.setState({ formState: ___extends_100({}, r.state.formState, (n = {}, n[t] = e.target.value, n)) }) }, r.handleSave = function () { var e = r.props.fileCardFor; r.props.saveFileCard(r.state.formState, e) }, r.handleCancel = function () { r.props.toggleFileCard() }, r.renderMetaFields = function () { return (r.props.metaFields || []).map(function (e) { var t = "uppy-Dashboard-FileCard-input-" + e.id; return __h_100("fieldset", { key: e.id, class: "uppy-Dashboard-FileCard-fieldset" }, __h_100("label", { class: "uppy-Dashboard-FileCard-label", for: t }, e.name), __h_100("input", { class: "uppy-u-reset uppy-c-textInput uppy-Dashboard-FileCard-input", id: t, type: "text", value: r.state.formState[e.id], placeholder: e.placeholder, onkeyup: r.saveOnEnter, onkeydown: r.saveOnEnter, onkeypress: r.saveOnEnter, oninput: function (t) { return r.tempStoreMeta(t, e.id) }, "data-uppy-super-focusable": !0 })) }) }; var n = r.props.files[r.props.fileCardFor], o = r.props.metaFields || [], i = {}; return o.forEach(function (e) { i[e.id] = n.meta[e.id] || "" }), r.state = { formState: i }, r } return r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r, n.prototype.render = function () { var e = this.props.files[this.props.fileCardFor]; return __h_100("div", { class: "uppy-Dashboard-FileCard", "data-uppy-panelType": "FileCard", onDragOver: _$ignoreEvent_117, onDragLeave: _$ignoreEvent_117, onDrop: _$ignoreEvent_117, onPaste: _$ignoreEvent_117 }, __h_100("div", { class: "uppy-DashboardContent-bar" }, __h_100("div", { class: "uppy-DashboardContent-title", role: "heading", "aria-level": "h1" }, this.props.i18nArray("editing", { file: __h_100("span", { class: "uppy-DashboardContent-titleFile" }, e.meta ? e.meta.name : e.name) })), __h_100("button", { class: "uppy-DashboardContent-back", type: "button", title: this.props.i18n("finishEditingFile"), onclick: this.handleSave }, this.props.i18n("done"))), __h_100("div", { class: "uppy-Dashboard-FileCard-inner" }, __h_100("div", { class: "uppy-Dashboard-FileCard-preview", style: { backgroundColor: _$getFileTypeIcon_116(e.type).color } }, __h_100(_$FilePreview_108, { file: e })), __h_100("div", { class: "uppy-Dashboard-FileCard-info" }, this.renderMetaFields()), __h_100("div", { class: "uppy-Dashboard-FileCard-actions" }, __h_100("button", { class: "uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Dashboard-FileCard-actionsBtn", type: "button", onclick: this.handleSave }, this.props.i18n("saveChanges")), __h_100("button", { class: "uppy-u-reset uppy-c-btn uppy-c-btn-link uppy-Dashboard-FileCard-actionsBtn", type: "button", onclick: this.handleCancel }, this.props.i18n("cancel"))))) }, n }(__Component_100), _$FileCard_100 = FileCard, _$isTouchDevice_223 = function () { return "ontouchstart" in window || !!navigator.maxTouchPoints }, _$preactCssTransitionGroup_52 = { exports: {} }, __global_52, __factory_52; function ___extends_99() { return (___extends_99 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } __global_52 = this, __factory_52 = function (e) { "use strict"; function t(e) { return e.attributes && e.attributes.key } function r(e) { return e.base } function n(e) { return e && e.filter(function (e) { return null !== e }) } function o(e, t) { for (var r = e.length; r--;)if (t(e[r])) return !0; return !1 } function i(e, r) { return o(e, function (e) { return t(e) === r }) } function s(e, r) { return i(e, t(r)) } function a(e, r, n) { return o(e, function (e) { return t(e) === r && e.props[n] }) } function l(e, r, n) { return a(e, t(r), n) } var u = " ", c = /[\n\t\r]+/g, p = function (e) { return (u + e + u).replace(c, u) }; function d(e, t) { var r; e.classList ? (r = e.classList).add.apply(r, t.split(" ")) : e.className += " " + t } function _(e, t) { if (t = t.trim(), e.classList) { var r; (r = e.classList).remove.apply(r, t.split(" ")) } else { var n = e.className.trim(), o = p(n); for (t = u + t + u; o.indexOf(t) >= 0;)o = o.replace(t, u); e.className = o.trim() } } var h = { transitionend: { transition: "transitionend", WebkitTransition: "webkitTransitionEnd", MozTransition: "mozTransitionEnd", OTransition: "oTransitionEnd", msTransition: "MSTransitionEnd" }, animationend: { animation: "animationend", WebkitAnimation: "webkitAnimationEnd", MozAnimation: "mozAnimationEnd", OAnimation: "oAnimationEnd", msAnimation: "MSAnimationEnd" } }, f = []; "undefined" != typeof window && function () { var e = document.createElement("div").style; for (var t in "AnimationEvent" in window || delete h.animationend.animation, "TransitionEvent" in window || delete h.transitionend.transition, h) { var r = h[t]; for (var n in r) if (n in e) { f.push(r[n]); break } } }(); var g = function (e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") }, m = function (e, t) { if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) }, y = function (e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" != typeof t && "function" != typeof t ? e : t }, v = function (e) { function t() { var n, o; g(this, t); for (var i = arguments.length, s = Array(i), a = 0; a < i; a++)s[a] = arguments[a]; return n = o = y(this, e.call.apply(e, [this].concat(s))), o.flushClassNameQueue = function () { r(o) && d(r(o), o.classNameQueue.join(" ")), o.classNameQueue.length = 0, o.timeout = null }, y(o, n) } return m(t, e), t.prototype.transition = function (e, t, n) { var o = this, i = r(this), s = this.props.name[e] || this.props.name + "-" + e, a = this.props.name[e + "Active"] || s + "-active", l = null; this.endListener && this.endListener(), this.endListener = function (e) { e && e.target !== i || (clearTimeout(l), _(i, s), _(i, a), function (e, t) { f.length && f.forEach(function (r) { e.removeEventListener(r, t, !1) }) }(i, o.endListener), o.endListener = null, t && t()) }, n ? (l = setTimeout(this.endListener, n), this.transitionTimeouts.push(l)) : function (e, t) { if (!f.length) return window.setTimeout(t, 0); f.forEach(function (r) { e.addEventListener(r, t, !1) }) }(i, this.endListener), d(i, s), this.queueClass(a) }, t.prototype.queueClass = function (e) { this.classNameQueue.push(e), this.timeout || (this.timeout = setTimeout(this.flushClassNameQueue, 17)) }, t.prototype.stop = function () { this.timeout && (clearTimeout(this.timeout), this.classNameQueue.length = 0, this.timeout = null), this.endListener && this.endListener() }, t.prototype.componentWillMount = function () { this.classNameQueue = [], this.transitionTimeouts = [] }, t.prototype.componentWillUnmount = function () { this.timeout && clearTimeout(this.timeout), this.transitionTimeouts.forEach(function (e) { clearTimeout(e) }) }, t.prototype.componentWillEnter = function (e) { this.props.enter ? this.transition("enter", e, this.props.enterTimeout) : e() }, t.prototype.componentWillLeave = function (e) { this.props.leave ? this.transition("leave", e, this.props.leaveTimeout) : e() }, t.prototype.render = function () { return (e = this.props.children) && e[0]; var e }, t }(e.Component), b = function (r) { function o(n) { g(this, o); var i = y(this, r.call(this)); return i.renderChild = function (r) { var n = i.props, o = n.transitionName, s = n.transitionEnter, a = n.transitionLeave, l = n.transitionEnterTimeout, u = n.transitionLeaveTimeout, c = t(r); return e.h(v, { key: c, ref: function (e) { (i.refs[c] = e) || (r = null) }, name: o, enter: s, leave: a, enterTimeout: l, leaveTimeout: u }, r) }, i.refs = {}, i.state = { children: (n.children || []).slice() }, i } return m(o, r), o.prototype.shouldComponentUpdate = function (e, t) { return t.children !== this.state.children }, o.prototype.componentWillMount = function () { this.currentlyTransitioningKeys = {}, this.keysToEnter = [], this.keysToLeave = [] }, o.prototype.componentWillReceiveProps = function (r) { var o, a, u, c, p = this, d = r.children, _ = r.exclusive, h = r.showProp, f = n(d || []).slice(), g = n(_ ? this.props.children : this.state.children), m = (o = f, a = [], u = {}, c = [], g.forEach(function (e) { var r = t(e); i(o, r) ? c.length && (u[r] = c, c = []) : c.push(e) }), o.forEach(function (e) { var r = t(e); u.hasOwnProperty(r) && (a = a.concat(u[r])), a.push(e) }), a.concat(c)); h && (m = m.map(function (t) { var r; return !t.props[h] && l(g, t, h) && (t = e.cloneElement(t, ((r = {})[h] = !0, r))), t })), _ && m.forEach(function (e) { return p.stop(t(e)) }), this.setState({ children: m }), this.forceUpdate(), f.forEach(function (e) { var t = e.key, r = g && s(g, e); if (h) { if (r) { var n = l(g, e, h), o = e.props[h]; n || !o || p.currentlyTransitioningKeys[t] || p.keysToEnter.push(t) } } else r || p.currentlyTransitioningKeys[t] || p.keysToEnter.push(t) }), g.forEach(function (e) { var t = e.key, r = f && s(f, e); if (h) { if (r) { var n = l(f, e, h), o = e.props[h]; n || !o || p.currentlyTransitioningKeys[t] || p.keysToLeave.push(t) } } else r || p.currentlyTransitioningKeys[t] || p.keysToLeave.push(t) }) }, o.prototype.performEnter = function (e) { var t = this; this.currentlyTransitioningKeys[e] = !0; var r = this.refs[e]; r.componentWillEnter ? r.componentWillEnter(function () { return t._handleDoneEntering(e) }) : this._handleDoneEntering(e) }, o.prototype._handleDoneEntering = function (e) { delete this.currentlyTransitioningKeys[e]; var t = n(this.props.children), r = this.props.showProp; !t || !r && !i(t, e) || r && !a(t, e, r) ? this.performLeave(e) : this.setState({ children: t }) }, o.prototype.stop = function (e) { delete this.currentlyTransitioningKeys[e]; var t = this.refs[e]; t && t.stop() }, o.prototype.performLeave = function (e) { var t = this; this.currentlyTransitioningKeys[e] = !0; var r = this.refs[e]; r && r.componentWillLeave ? r.componentWillLeave(function () { return t._handleDoneLeaving(e) }) : this._handleDoneLeaving(e) }, o.prototype._handleDoneLeaving = function (e) { delete this.currentlyTransitioningKeys[e]; var t = this.props.showProp, r = n(this.props.children); t && r && a(r, e, t) ? this.performEnter(e) : !t && r && i(r, e) ? this.performEnter(e) : this.setState({ children: r }) }, o.prototype.componentDidUpdate = function () { var e = this, t = this.keysToEnter, r = this.keysToLeave; this.keysToEnter = [], t.forEach(function (t) { return e.performEnter(t) }), this.keysToLeave = [], r.forEach(function (t) { return e.performLeave(t) }) }, o.prototype.render = function (t, r) { var o = t.component, i = (t.transitionName, t.transitionEnter, t.transitionLeave, t.transitionEnterTimeout, t.transitionLeaveTimeout, t.children, function (e, t) { var r = {}; for (var n in e) t.indexOf(n) >= 0 || Object.prototype.hasOwnProperty.call(e, n) && (r[n] = e[n]); return r }(t, ["component", "transitionName", "transitionEnter", "transitionLeave", "transitionEnterTimeout", "transitionLeaveTimeout", "children"])), s = r.children; return e.h(o, i, n(s).map(this.renderChild)) }, o }(e.Component); return b.defaultProps = { component: "span", transitionEnter: !0, transitionLeave: !0 }, b }, "object" == typeof _$preactCssTransitionGroup_52.exports ? _$preactCssTransitionGroup_52.exports = __factory_52(_$preact_53) : "function" == typeof define && define.amd ? define(["preact"], __factory_52) : __global_52.PreactCSSTransitionGroup = __factory_52(__global_52.preact), _$preactCssTransitionGroup_52 = _$preactCssTransitionGroup_52.exports; var __h_99 = _$preact_53.h; function TransitionWrapper(e) { return __h_99(_$preactCssTransitionGroup_52, { transitionName: "uppy-transition-slideDownUp", transitionEnterTimeout: 250, transitionLeaveTimeout: 250 }, e.children) } var _$Dashboard_99 = function (e) { var t = 0 === e.totalFileCount, r = _$classnames_9({ "uppy-Root": e.isTargetDOMEl }, "uppy-Dashboard", { "Uppy--isTouchDevice": _$isTouchDevice_223() }, { "uppy-Dashboard--animateOpenClose": e.animateOpenClose }, { "uppy-Dashboard--isClosing": e.isClosing }, { "uppy-Dashboard--isDraggingOver": e.isDraggingOver }, { "uppy-Dashboard--modal": !e.inline }, { "uppy-size--md": e.containerWidth > 576 }, { "uppy-size--lg": e.containerWidth > 700 }, { "uppy-size--xl": e.containerWidth > 900 }, { "uppy-Dashboard--isAddFilesPanelVisible": e.showAddFilesPanel }, { "uppy-Dashboard--isInnerWrapVisible": e.areInsidesReadyToBeVisible }); return __h_99("div", { class: r, "aria-hidden": e.inline ? "false" : e.isHidden, "aria-label": e.inline ? e.i18n("dashboardTitle") : e.i18n("dashboardWindowTitle"), onpaste: e.handlePaste, onDragOver: e.handleDragOver, onDragLeave: e.handleDragLeave, onDrop: e.handleDrop }, __h_99("div", { class: "uppy-Dashboard-overlay", tabindex: -1, onclick: e.handleClickOutside }), __h_99("div", { class: "uppy-Dashboard-inner", "aria-modal": !e.inline && "true", role: !e.inline && "dialog", style: { width: e.inline && e.width ? e.width : "", height: e.inline && e.height ? e.height : "" } }, e.inline ? null : __h_99("button", { class: "uppy-u-reset uppy-Dashboard-close", type: "button", "aria-label": e.i18n("closeModal"), title: e.i18n("closeModal"), onclick: e.closeModal }, __h_99("span", { "aria-hidden": "true" }, "\xd7")), __h_99("div", { class: "uppy-Dashboard-innerWrap" }, __h_99("div", { class: "uppy-Dashboard-dropFilesHereHint" }, e.i18n("dropHint")), !t && e.showSelectedFiles && __h_99(_$PickerPanelTopBar_110, e), e.showSelectedFiles ? __h_99(t ? _$AddFiles_97 : _$FileList_107, e) : __h_99(_$AddFiles_97, e), __h_99(TransitionWrapper, null, e.showAddFilesPanel ? __h_99(_$AddFilesPanel_98, ___extends_99({ key: "AddFilesPanel" }, e)) : null), __h_99(TransitionWrapper, null, e.fileCardFor ? __h_99(_$FileCard_100, ___extends_99({ key: "FileCard" }, e)) : null), __h_99(TransitionWrapper, null, e.activePickerPanel ? __h_99(_$PickerPanelContent_109, ___extends_99({ key: "PickerPanelContent" }, e)) : null), __h_99("div", { class: "uppy-Dashboard-progressindicators" }, e.progressindicators.map(function (t) { return e.getPlugin(t.id).render(e.state) }))))) }, _$StatusBarStates_160 = { STATE_ERROR: "error", STATE_WAITING: "waiting", STATE_PREPROCESSING: "preprocessing", STATE_UPLOADING: "uploading", STATE_POSTPROCESSING: "postprocessing", STATE_COMPLETE: "complete" }, _$secondsToTime_227 = function (e) { return { hours: Math.floor(e / 3600) % 24, minutes: Math.floor(e / 60) % 60, seconds: Math.floor(e % 60) } }, _$prettyETA_226 = function (e) { var t = _$secondsToTime_227(e), r = t.hours ? t.hours + "h " : "", n = t.hours ? ("0" + t.minutes).substr(-2) : t.minutes, o = n ? n + "m" : "", i = n ? ("0" + t.seconds).substr(-2) : t.seconds; return "" + r + o + (t.hours ? "" : n ? " " + i + "s" : i + "s") }; function ___extends_159() { return (___extends_159 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } var __h_159 = _$preact_53.h, _$StatusBar_159 = function (e) { var t, r, n = e = e || {}, o = n.newFiles, i = n.allowNewUpload, s = n.isUploadInProgress, a = n.isAllPaused, l = n.resumableUploads, u = n.error, c = n.hideUploadButton, p = n.hidePauseResumeButton, d = n.hideCancelButton, _ = n.hideRetryButton, h = e.uploadState, f = e.totalProgress; if (h === _$StatusBarStates_160.STATE_PREPROCESSING || h === _$StatusBarStates_160.STATE_POSTPROCESSING) { var g = function (e) { var t = []; Object.keys(e).forEach(function (r) { var n = e[r].progress; n.preprocess && t.push(n.preprocess), n.postprocess && t.push(n.postprocess) }); var r = t[0]; return { mode: r.mode, message: r.message, value: t.filter(function (e) { return "determinate" === e.mode }).reduce(function (e, t, r, n) { return e + t.value / n.length }, 0) } }(e.files); "determinate" === (t = g.mode) && (f = 100 * g.value), r = ProgressBarProcessing(g) } else h === _$StatusBarStates_160.STATE_COMPLETE ? r = ProgressBarComplete(e) : h === _$StatusBarStates_160.STATE_UPLOADING ? (e.supportsUploadProgress || (t = "indeterminate", f = null), r = ProgressBarUploading(e)) : h === _$StatusBarStates_160.STATE_ERROR && (f = void 0, r = ProgressBarError(e)); var m = "number" == typeof f ? f : 100, y = h === _$StatusBarStates_160.STATE_WAITING && e.hideUploadButton || h === _$StatusBarStates_160.STATE_WAITING && !e.newFiles > 0 || h === _$StatusBarStates_160.STATE_COMPLETE && e.hideAfterFinish, v = !u && o && !s && !a && i && !c, b = !d && h !== _$StatusBarStates_160.STATE_WAITING && h !== _$StatusBarStates_160.STATE_COMPLETE, w = l && !p && h !== _$StatusBarStates_160.STATE_WAITING && h !== _$StatusBarStates_160.STATE_PREPROCESSING && h !== _$StatusBarStates_160.STATE_POSTPROCESSING && h !== _$StatusBarStates_160.STATE_COMPLETE, S = u && !_, P = "uppy-StatusBar-progress\n " + (t ? "is-" + t : ""), E = _$classnames_9({ "uppy-Root": e.isTargetDOMEl }, "uppy-StatusBar", "is-" + h); return __h_159("div", { class: E, "aria-hidden": y }, __h_159("div", { class: P, style: { width: m + "%" }, role: "progressbar", "aria-valuemin": "0", "aria-valuemax": "100", "aria-valuenow": f }), r, __h_159("div", { class: "uppy-StatusBar-actions" }, v ? __h_159(UploadBtn, ___extends_159({}, e, { uploadState: h })) : null, S ? __h_159(RetryBtn, e) : null, w ? __h_159(PauseResumeButton, e) : null, b ? __h_159(CancelBtn, e) : null)) }, UploadBtn = function (e) { var t = _$classnames_9("uppy-u-reset", "uppy-c-btn", "uppy-StatusBar-actionBtn", "uppy-StatusBar-actionBtn--upload", { "uppy-c-btn-primary": e.uploadState === _$StatusBarStates_160.STATE_WAITING }); return __h_159("button", { type: "button", class: t, "aria-label": e.i18n("uploadXFiles", { smart_count: e.newFiles }), onclick: e.startUpload, "data-uppy-super-focusable": !0 }, e.newFiles && e.isUploadStarted ? e.i18n("uploadXNewFiles", { smart_count: e.newFiles }) : e.i18n("uploadXFiles", { smart_count: e.newFiles })) }, RetryBtn = function (e) { return __h_159("button", { type: "button", class: "uppy-u-reset uppy-c-btn uppy-StatusBar-actionBtn uppy-StatusBar-actionBtn--retry", "aria-label": e.i18n("retryUpload"), onclick: e.retryAll, "data-uppy-super-focusable": !0 }, __h_159("svg", { "aria-hidden": "true", focusable: "false", class: "UppyIcon", width: "8", height: "10", viewBox: "0 0 8 10" }, __h_159("path", { d: "M4 2.408a2.75 2.75 0 1 0 2.75 2.75.626.626 0 0 1 1.25.018v.023a4 4 0 1 1-4-4.041V.25a.25.25 0 0 1 .389-.208l2.299 1.533a.25.25 0 0 1 0 .416l-2.3 1.533A.25.25 0 0 1 4 3.316v-.908z" })), e.i18n("retry")) }, CancelBtn = function (e) { return __h_159("button", { type: "button", class: "uppy-u-reset uppy-StatusBar-actionCircleBtn", title: e.i18n("cancel"), "aria-label": e.i18n("cancel"), onclick: e.cancelAll, "data-uppy-super-focusable": !0 }, __h_159("svg", { "aria-hidden": "true", focusable: "false", class: "UppyIcon", width: "16", height: "16", viewBox: "0 0 16 16" }, __h_159("g", { fill: "none", "fill-rule": "evenodd" }, __h_159("circle", { fill: "#888", cx: "8", cy: "8", r: "8" }), __h_159("path", { fill: "#FFF", d: "M9.283 8l2.567 2.567-1.283 1.283L8 9.283 5.433 11.85 4.15 10.567 6.717 8 4.15 5.433 5.433 4.15 8 6.717l2.567-2.567 1.283 1.283z" })))) }, PauseResumeButton = function (e) { var t = e.isAllPaused, r = (0, e.i18n)(t ? "resume" : "pause"); return __h_159("button", { title: r, "aria-label": r, class: "uppy-u-reset uppy-StatusBar-actionCircleBtn", type: "button", onclick: function () { return function (e) { if (!e.isAllComplete) return e.resumableUploads ? e.isAllPaused ? e.resumeAll() : e.pauseAll() : e.cancelAll() }(e) }, "data-uppy-super-focusable": !0 }, __h_159("svg", { "aria-hidden": "true", focusable: "false", class: "UppyIcon", width: "16", height: "16", viewBox: "0 0 16 16" }, __h_159("g", { fill: "none", "fill-rule": "evenodd" }, __h_159("circle", { fill: "#888", cx: "8", cy: "8", r: "8" }), __h_159("path", t ? { fill: "#FFF", d: "M6 4.25L11.5 8 6 11.75z" } : { d: "M5 4.5h2v7H5v-7zm4 0h2v7H9v-7z", fill: "#FFF" })))) }, LoadingSpinner = function () { return __h_159("svg", { "aria-hidden": "true", focusable: "false", class: "uppy-StatusBar-spinner", width: "14", height: "14" }, __h_159("path", { d: "M13.983 6.547c-.12-2.509-1.64-4.893-3.939-5.936-2.48-1.127-5.488-.656-7.556 1.094C.524 3.367-.398 6.048.162 8.562c.556 2.495 2.46 4.52 4.94 5.183 2.932.784 5.61-.602 7.256-3.015-1.493 1.993-3.745 3.309-6.298 2.868-2.514-.434-4.578-2.349-5.153-4.84a6.226 6.226 0 0 1 2.98-6.778C6.34.586 9.74 1.1 11.373 3.493c.407.596.693 1.282.842 1.988.127.598.073 1.197.161 1.794.078.525.543 1.257 1.15.864.525-.341.49-1.05.456-1.592-.007-.15.02.3 0 0", "fill-rule": "evenodd" })) }, ProgressBarProcessing = function (e) { var t = Math.round(100 * e.value); return __h_159("div", { class: "uppy-StatusBar-content" }, __h_159(LoadingSpinner, null), "determinate" === e.mode ? t + "% \xb7 " : "", e.message) }, UnknownProgressDetails = function (e) { return __h_159("div", { class: "uppy-StatusBar-statusSecondary" }, e.i18n("filesUploadedOfTotal", { complete: e.complete, smart_count: e.numUploads })) }, UploadNewlyAddedFiles = function (e) { var t = _$classnames_9("uppy-u-reset", "uppy-c-btn", "uppy-StatusBar-actionBtn", "uppy-StatusBar-actionBtn--uploadNewlyAdded"); return __h_159("div", { class: "uppy-StatusBar-statusSecondary" }, __h_159("div", { class: "uppy-StatusBar-statusSecondaryHint" }, e.i18n("xMoreFilesAdded", { smart_count: e.newFiles })), __h_159("button", { type: "button", class: t, "aria-label": e.i18n("uploadXFiles", { smart_count: e.newFiles }), onclick: e.startUpload }, e.i18n("upload"))) }, ThrottledProgressDetails = _$lodashThrottle_46(function (e) { var t = e.numUploads > 1; return __h_159("div", { class: "uppy-StatusBar-statusSecondary" }, t && e.i18n("filesUploadedOfTotal", { complete: e.complete, smart_count: e.numUploads }), __h_159("span", { class: "uppy-StatusBar-additionalInfo" }, t && " \xb7 ", e.i18n("dataUploadedOfTotal", { complete: _$prettyBytes_225(e.totalUploadedSize), total: _$prettyBytes_225(e.totalSize) }), " \xb7 ", e.i18n("xTimeLeft", { time: _$prettyETA_226(e.totalETA) }))) }, 500, { leading: !0, trailing: !0 }), ProgressBarUploading = function (e) { if (!e.isUploadStarted || e.isAllComplete) return null; var t = e.isAllPaused ? e.i18n("paused") : e.i18n("uploading"), r = e.newFiles && e.isUploadStarted; return __h_159("div", { class: "uppy-StatusBar-content", "aria-label": t, title: t }, e.isAllPaused ? null : __h_159(LoadingSpinner, null), __h_159("div", { class: "uppy-StatusBar-status" }, __h_159("div", { class: "uppy-StatusBar-statusPrimary" }, e.supportsUploadProgress ? t + ": " + e.totalProgress + "%" : t), e.isAllPaused || r || !e.showProgressDetails ? null : e.supportsUploadProgress ? __h_159(ThrottledProgressDetails, e) : __h_159(UnknownProgressDetails, e), r ? __h_159(UploadNewlyAddedFiles, e) : null)) }, ProgressBarComplete = function (e) { e.totalProgress; var t = e.i18n; return __h_159("div", { class: "uppy-StatusBar-content", role: "status", title: t("complete") }, __h_159("div", { class: "uppy-StatusBar-status" }, __h_159("div", { class: "uppy-StatusBar-statusPrimary" }, __h_159("svg", { "aria-hidden": "true", focusable: "false", class: "uppy-StatusBar-statusIndicator UppyIcon", width: "15", height: "11", viewBox: "0 0 15 11" }, __h_159("path", { d: "M.414 5.843L1.627 4.63l3.472 3.472L13.202 0l1.212 1.213L5.1 10.528z" })), t("complete")))) }, ProgressBarError = function (e) { var t = e.error, r = (e.retryAll, e.hideRetryButton, e.i18n); return __h_159("div", { class: "uppy-StatusBar-content", role: "alert", title: r("uploadFailed") }, __h_159("div", { class: "uppy-StatusBar-status" }, __h_159("div", { class: "uppy-StatusBar-statusPrimary" }, __h_159("svg", { "aria-hidden": "true", focusable: "false", class: "uppy-StatusBar-statusIndicator UppyIcon", width: "11", height: "11", viewBox: "0 0 11 11" }, __h_159("path", { d: "M4.278 5.5L0 1.222 1.222 0 5.5 4.278 9.778 0 11 1.222 6.722 5.5 11 9.778 9.778 11 5.5 6.722 1.222 11 0 9.778z" })), r("uploadFailed"))), __h_159("span", { class: "uppy-StatusBar-details", "aria-label": t, "data-microtip-position": "top-right", "data-microtip-size": "medium", role: "tooltip" }, "?")) }, _$getSpeed_216 = function (e) { if (!e.bytesUploaded) return 0; var t = new Date - e.uploadStarted; return e.bytesUploaded / (t / 1e3) }, _$getBytesRemaining_206 = function (e) { return e.bytesTotal - e.bytesUploaded }, _$package_162 = { version: "1.4.0" }, ___class_161, ___temp_161; function ___extends_161() { return (___extends_161 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } function ___assertThisInitialized_161(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } var __Plugin_161 = _$lib_93.Plugin, _$lib_161 = (___temp_161 = ___class_161 = function (e) { var t, r; function n(t, r) { var n; return (n = e.call(this, t, r) || this).startUpload = function () { return n.uppy.upload().catch(function (e) { e.isRestriction || n.uppy.log(e.stack || e.message || e) }) }, n.id = n.opts.id || "StatusBar", n.title = "StatusBar", n.type = "progressindicator", n.defaultLocale = { strings: { uploading: "Uploading", upload: "Upload", complete: "Complete", uploadFailed: "Upload failed", paused: "Paused", retry: "Retry", cancel: "Cancel", pause: "Pause", resume: "Resume", filesUploadedOfTotal: { 0: "%{complete} of %{smart_count} file uploaded", 1: "%{complete} of %{smart_count} files uploaded", 2: "%{complete} of %{smart_count} files uploaded" }, dataUploadedOfTotal: "%{complete} of %{total}", xTimeLeft: "%{time} left", uploadXFiles: { 0: "Upload %{smart_count} file", 1: "Upload %{smart_count} files", 2: "Upload %{smart_count} files" }, uploadXNewFiles: { 0: "Upload +%{smart_count} file", 1: "Upload +%{smart_count} files", 2: "Upload +%{smart_count} files" }, xMoreFilesAdded: { 0: "%{smart_count} more file added", 1: "%{smart_count} more files added", 2: "%{smart_count} more files added" } } }, n.opts = ___extends_161({}, { target: "body", hideUploadButton: !1, hideRetryButton: !1, hidePauseResumeButton: !1, hideCancelButton: !1, showProgressDetails: !1, hideAfterFinish: !0 }, {}, r), n.i18nInit(), n.render = n.render.bind(___assertThisInitialized_161(n)), n.install = n.install.bind(___assertThisInitialized_161(n)), n } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.setOptions = function (t) { e.prototype.setOptions.call(this, t), this.i18nInit() }, o.i18nInit = function () { this.translator = new _$Translator_199([this.defaultLocale, this.uppy.locale, this.opts.locale]), this.i18n = this.translator.translate.bind(this.translator), this.setPluginState() }, o.getTotalSpeed = function (e) { var t = 0; return e.forEach(function (e) { t += _$getSpeed_216(e.progress) }), t }, o.getTotalETA = function (e) { var t = this.getTotalSpeed(e); if (0 === t) return 0; var r = e.reduce(function (e, t) { return e + _$getBytesRemaining_206(t.progress) }, 0); return Math.round(r / t * 10) / 10 }, o.getUploadingState = function (e, t, r) { if (e) return _$StatusBarStates_160.STATE_ERROR; if (t) return _$StatusBarStates_160.STATE_COMPLETE; for (var n = _$StatusBarStates_160.STATE_WAITING, o = Object.keys(r), i = 0; i < o.length; i++) { var s = r[o[i]].progress; if (s.uploadStarted && !s.uploadComplete) return _$StatusBarStates_160.STATE_UPLOADING; s.preprocess && n !== _$StatusBarStates_160.STATE_UPLOADING && (n = _$StatusBarStates_160.STATE_PREPROCESSING), s.postprocess && n !== _$StatusBarStates_160.STATE_UPLOADING && n !== _$StatusBarStates_160.STATE_PREPROCESSING && (n = _$StatusBarStates_160.STATE_POSTPROCESSING) } return n }, o.render = function (e) { var t = e.capabilities, r = e.files, n = e.allowNewUpload, o = e.totalProgress, i = e.error, s = Object.keys(r).map(function (e) { return r[e] }), a = s.filter(function (e) { return !e.progress.uploadStarted && !e.progress.preprocess && !e.progress.postprocess }), l = s.filter(function (e) { return e.progress.uploadStarted }), u = l.filter(function (e) { return e.isPaused }), c = s.filter(function (e) { return e.progress.uploadComplete }), p = s.filter(function (e) { return e.error }), d = s.filter(function (e) { return !e.progress.uploadComplete && e.progress.uploadStarted }), _ = d.filter(function (e) { return !e.isPaused }), h = s.filter(function (e) { return e.progress.uploadStarted || e.progress.preprocess || e.progress.postprocess }), f = s.filter(function (e) { return e.progress.preprocess || e.progress.postprocess }), g = this.getTotalETA(_), m = 0, y = 0; l.forEach(function (e) { m += e.progress.bytesTotal || 0, y += e.progress.bytesUploaded || 0 }); var v = l.length > 0, b = 100 === o && c.length === Object.keys(r).length && 0 === f.length, w = v && p.length === l.length, S = 0 !== d.length && u.length === d.length, P = d.length > 0, E = t.resumableUploads || !1, C = !1 !== t.uploadProgress; return _$StatusBar_159({ error: i, uploadState: this.getUploadingState(w, b, e.files || {}), allowNewUpload: n, totalProgress: o, totalSize: m, totalUploadedSize: y, isAllComplete: b, isAllPaused: S, isAllErrored: w, isUploadStarted: v, isUploadInProgress: P, complete: c.length, newFiles: a.length, numUploads: h.length, totalETA: g, files: r, i18n: this.i18n, pauseAll: this.uppy.pauseAll, resumeAll: this.uppy.resumeAll, retryAll: this.uppy.retryAll, cancelAll: this.uppy.cancelAll, startUpload: this.startUpload, resumableUploads: E, supportsUploadProgress: C, showProgressDetails: this.opts.showProgressDetails, hideUploadButton: this.opts.hideUploadButton, hideRetryButton: this.opts.hideRetryButton, hidePauseResumeButton: this.opts.hidePauseResumeButton, hideCancelButton: this.opts.hideCancelButton, hideAfterFinish: this.opts.hideAfterFinish, isTargetDOMEl: this.isTargetDOMEl }) }, o.install = function () { var e = this.opts.target; e && this.mount(e, this) }, o.uninstall = function () { this.unmount() }, n }(__Plugin_161), ___class_161.VERSION = _$package_162.version, ___temp_161), _$package_139 = { version: "1.3.2" }, ___class_138, ___temp_138; function ___extends_138() { return (___extends_138 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } var __Plugin_138 = _$lib_93.Plugin, __h_138 = _$preact_53.h, _$lib_138 = (___temp_138 = ___class_138 = function (e) { var t, r; function n(t, r) { var n; return (n = e.call(this, t, r) || this).type = "progressindicator", n.id = n.opts.id || "Informer", n.title = "Informer", n.opts = ___extends_138({}, {}, r), n.render = n.render.bind(function (e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e }(n)), n } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.render = function (e) { var t = e.info, r = t.isHidden, n = t.message, o = t.details; return __h_138("div", { class: "uppy uppy-Informer", "aria-hidden": r }, __h_138("p", { role: "alert" }, n, " ", o && __h_138("span", { "aria-label": o, "data-microtip-position": "top-left", "data-microtip-size": "medium", role: "tooltip" }, "?"))) }, o.install = function () { var e = this.opts.target; e && this.mount(e, this) }, n }(__Plugin_138), ___class_138.VERSION = _$package_139.version, ___temp_138), _$exif_35 = { exports: {} }; (function () { var e = !1, t = function (e) { return e instanceof t ? e : this instanceof t ? void (this.EXIFwrapped = e) : new t(e) }; void 0 !== _$exif_35.exports ? (_$exif_35.exports && (_$exif_35.exports = _$exif_35.exports = t), _$exif_35.exports.EXIF = t) : this.EXIF = t; var r = t.Tags = { 36864: "ExifVersion", 40960: "FlashpixVersion", 40961: "ColorSpace", 40962: "PixelXDimension", 40963: "PixelYDimension", 37121: "ComponentsConfiguration", 37122: "CompressedBitsPerPixel", 37500: "MakerNote", 37510: "UserComment", 40964: "RelatedSoundFile", 36867: "DateTimeOriginal", 36868: "DateTimeDigitized", 37520: "SubsecTime", 37521: "SubsecTimeOriginal", 37522: "SubsecTimeDigitized", 33434: "ExposureTime", 33437: "FNumber", 34850: "ExposureProgram", 34852: "SpectralSensitivity", 34855: "ISOSpeedRatings", 34856: "OECF", 37377: "ShutterSpeedValue", 37378: "ApertureValue", 37379: "BrightnessValue", 37380: "ExposureBias", 37381: "MaxApertureValue", 37382: "SubjectDistance", 37383: "MeteringMode", 37384: "LightSource", 37385: "Flash", 37396: "SubjectArea", 37386: "FocalLength", 41483: "FlashEnergy", 41484: "SpatialFrequencyResponse", 41486: "FocalPlaneXResolution", 41487: "FocalPlaneYResolution", 41488: "FocalPlaneResolutionUnit", 41492: "SubjectLocation", 41493: "ExposureIndex", 41495: "SensingMethod", 41728: "FileSource", 41729: "SceneType", 41730: "CFAPattern", 41985: "CustomRendered", 41986: "ExposureMode", 41987: "WhiteBalance", 41988: "DigitalZoomRation", 41989: "FocalLengthIn35mmFilm", 41990: "SceneCaptureType", 41991: "GainControl", 41992: "Contrast", 41993: "Saturation", 41994: "Sharpness", 41995: "DeviceSettingDescription", 41996: "SubjectDistanceRange", 40965: "InteroperabilityIFDPointer", 42016: "ImageUniqueID" }, o = t.TiffTags = { 256: "ImageWidth", 257: "ImageHeight", 34665: "ExifIFDPointer", 34853: "GPSInfoIFDPointer", 40965: "InteroperabilityIFDPointer", 258: "BitsPerSample", 259: "Compression", 262: "PhotometricInterpretation", 274: "Orientation", 277: "SamplesPerPixel", 284: "PlanarConfiguration", 530: "YCbCrSubSampling", 531: "YCbCrPositioning", 282: "XResolution", 283: "YResolution", 296: "ResolutionUnit", 273: "StripOffsets", 278: "RowsPerStrip", 279: "StripByteCounts", 513: "JPEGInterchangeFormat", 514: "JPEGInterchangeFormatLength", 301: "TransferFunction", 318: "WhitePoint", 319: "PrimaryChromaticities", 529: "YCbCrCoefficients", 532: "ReferenceBlackWhite", 306: "DateTime", 270: "ImageDescription", 271: "Make", 272: "Model", 305: "Software", 315: "Artist", 33432: "Copyright" }, i = t.GPSTags = { 0: "GPSVersionID", 1: "GPSLatitudeRef", 2: "GPSLatitude", 3: "GPSLongitudeRef", 4: "GPSLongitude", 5: "GPSAltitudeRef", 6: "GPSAltitude", 7: "GPSTimeStamp", 8: "GPSSatellites", 9: "GPSStatus", 10: "GPSMeasureMode", 11: "GPSDOP", 12: "GPSSpeedRef", 13: "GPSSpeed", 14: "GPSTrackRef", 15: "GPSTrack", 16: "GPSImgDirectionRef", 17: "GPSImgDirection", 18: "GPSMapDatum", 19: "GPSDestLatitudeRef", 20: "GPSDestLatitude", 21: "GPSDestLongitudeRef", 22: "GPSDestLongitude", 23: "GPSDestBearingRef", 24: "GPSDestBearing", 25: "GPSDestDistanceRef", 26: "GPSDestDistance", 27: "GPSProcessingMethod", 28: "GPSAreaInformation", 29: "GPSDateStamp", 30: "GPSDifferential" }, s = t.IFD1Tags = { 256: "ImageWidth", 257: "ImageHeight", 258: "BitsPerSample", 259: "Compression", 262: "PhotometricInterpretation", 273: "StripOffsets", 274: "Orientation", 277: "SamplesPerPixel", 278: "RowsPerStrip", 279: "StripByteCounts", 282: "XResolution", 283: "YResolution", 284: "PlanarConfiguration", 296: "ResolutionUnit", 513: "JpegIFOffset", 514: "JpegIFByteCount", 529: "YCbCrCoefficients", 530: "YCbCrSubSampling", 531: "YCbCrPositioning", 532: "ReferenceBlackWhite" }, a = t.StringValues = { ExposureProgram: { 0: "Not defined", 1: "Manual", 2: "Normal program", 3: "Aperture priority", 4: "Shutter priority", 5: "Creative program", 6: "Action program", 7: "Portrait mode", 8: "Landscape mode" }, MeteringMode: { 0: "Unknown", 1: "Average", 2: "CenterWeightedAverage", 3: "Spot", 4: "MultiSpot", 5: "Pattern", 6: "Partial", 255: "Other" }, LightSource: { 0: "Unknown", 1: "Daylight", 2: "Fluorescent", 3: "Tungsten (incandescent light)", 4: "Flash", 9: "Fine weather", 10: "Cloudy weather", 11: "Shade", 12: "Daylight fluorescent (D 5700 - 7100K)", 13: "Day white fluorescent (N 4600 - 5400K)", 14: "Cool white fluorescent (W 3900 - 4500K)", 15: "White fluorescent (WW 3200 - 3700K)", 17: "Standard light A", 18: "Standard light B", 19: "Standard light C", 20: "D55", 21: "D65", 22: "D75", 23: "D50", 24: "ISO studio tungsten", 255: "Other" }, Flash: { 0: "Flash did not fire", 1: "Flash fired", 5: "Strobe return light not detected", 7: "Strobe return light detected", 9: "Flash fired, compulsory flash mode", 13: "Flash fired, compulsory flash mode, return light not detected", 15: "Flash fired, compulsory flash mode, return light detected", 16: "Flash did not fire, compulsory flash mode", 24: "Flash did not fire, auto mode", 25: "Flash fired, auto mode", 29: "Flash fired, auto mode, return light not detected", 31: "Flash fired, auto mode, return light detected", 32: "No flash function", 65: "Flash fired, red-eye reduction mode", 69: "Flash fired, red-eye reduction mode, return light not detected", 71: "Flash fired, red-eye reduction mode, return light detected", 73: "Flash fired, compulsory flash mode, red-eye reduction mode", 77: "Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected", 79: "Flash fired, compulsory flash mode, red-eye reduction mode, return light detected", 89: "Flash fired, auto mode, red-eye reduction mode", 93: "Flash fired, auto mode, return light not detected, red-eye reduction mode", 95: "Flash fired, auto mode, return light detected, red-eye reduction mode" }, SensingMethod: { 1: "Not defined", 2: "One-chip color area sensor", 3: "Two-chip color area sensor", 4: "Three-chip color area sensor", 5: "Color sequential area sensor", 7: "Trilinear sensor", 8: "Color sequential linear sensor" }, SceneCaptureType: { 0: "Standard", 1: "Landscape", 2: "Portrait", 3: "Night scene" }, SceneType: { 1: "Directly photographed" }, CustomRendered: { 0: "Normal process", 1: "Custom process" }, WhiteBalance: { 0: "Auto white balance", 1: "Manual white balance" }, GainControl: { 0: "None", 1: "Low gain up", 2: "High gain up", 3: "Low gain down", 4: "High gain down" }, Contrast: { 0: "Normal", 1: "Soft", 2: "Hard" }, Saturation: { 0: "Normal", 1: "Low saturation", 2: "High saturation" }, Sharpness: { 0: "Normal", 1: "Soft", 2: "Hard" }, SubjectDistanceRange: { 0: "Unknown", 1: "Macro", 2: "Close view", 3: "Distant view" }, FileSource: { 3: "DSC" }, Components: { 0: "", 1: "Y", 2: "Cb", 3: "Cr", 4: "R", 5: "G", 6: "B" } }; function l(e) { return !!e.exifdata } function u(r, n) { function o(o) { var i = c(o); r.exifdata = i || {}; var s = function (t) { var r = new DataView(t); if (e && console.log("Got file of length " + t.byteLength), 255 != r.getUint8(0) || 216 != r.getUint8(1)) return e && console.log("Not a valid JPEG"), !1; for (var n = 2, o = t.byteLength, i = function (e, t) { return 56 === e.getUint8(t) && 66 === e.getUint8(t + 1) && 73 === e.getUint8(t + 2) && 77 === e.getUint8(t + 3) && 4 === e.getUint8(t + 4) && 4 === e.getUint8(t + 5) }; n < o;) { if (i(r, n)) { var s = r.getUint8(n + 7); return s % 2 != 0 && (s += 1), 0 === s && (s = 4), d(t, n + 8 + s, r.getUint16(n + 6 + s)) } n++ } }(o); if (r.iptcdata = s || {}, t.isXmpEnabled) { var a = function (t) { if ("DOMParser" in self) { var r = new DataView(t); if (e && console.log("Got file of length " + t.byteLength), 255 != r.getUint8(0) || 216 != r.getUint8(1)) return e && console.log("Not a valid JPEG"), !1; for (var n = 2, o = t.byteLength, i = new DOMParser; n < o - 4;) { if ("http" == f(r, n, 4)) { var s = n - 1, a = r.getUint16(n - 2) - 1, l = f(r, s, a), u = l.indexOf("xmpmeta>") + 8, c = (l = l.substring(l.indexOf("<x:xmpmeta"), u)).indexOf("x:xmpmeta") + 10; return l = l.slice(0, c) + 'xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:plus="http://schemas.android.com/apk/lib/com.google.android.gms.plus" xmlns:ext="http://www.gettyimages.com/xsltExtension/1.0" xmlns:exif="http://ns.adobe.com/exif/1.0/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:crs="http://ns.adobe.com/camera-raw-settings/1.0/" xmlns:xapGImg="http://ns.adobe.com/xap/1.0/g/img/" xmlns:Iptc4xmpExt="http://iptc.org/std/Iptc4xmpExt/2008-02-29/" ' + l.slice(c), y(i.parseFromString(l, "text/xml")) } n++ } } }(o); r.xmpdata = a || {} } n && n.call(r) } if (r.src) if (/^data\:/i.test(r.src)) o(function (e, t) { t = t || e.match(/^data\:([^\;]+)\;base64,/im)[1] || "", e = e.replace(/^data\:([^\;]+)\;base64,/gim, ""); for (var r = atob(e), n = r.length, o = new ArrayBuffer(n), i = new Uint8Array(o), s = 0; s < n; s++)i[s] = r.charCodeAt(s); return o }(r.src)); else if (/^blob\:/i.test(r.src)) (s = new FileReader).onload = function (e) { o(e.target.result) }, function (e, t) { var r = new XMLHttpRequest; r.open("GET", e, !0), r.responseType = "blob", r.onload = function (e) { var t; 200 != this.status && 0 !== this.status || (t = this.response, s.readAsArrayBuffer(t)) }, r.send() }(r.src); else { var i = new XMLHttpRequest; i.onload = function () { if (200 != this.status && 0 !== this.status) throw "Could not load image"; o(i.response), i = null }, i.open("GET", r.src, !0), i.responseType = "arraybuffer", i.send(null) } else if (self.FileReader && (r instanceof self.Blob || r instanceof self.File)) { var s; (s = new FileReader).onload = function (t) { e && console.log("Got file of length " + t.target.result.byteLength), o(t.target.result) }, s.readAsArrayBuffer(r) } } function c(t) { var r = new DataView(t); if (e && console.log("Got file of length " + t.byteLength), 255 != r.getUint8(0) || 216 != r.getUint8(1)) return e && console.log("Not a valid JPEG"), !1; for (var n, o = 2, i = t.byteLength; o < i;) { if (255 != r.getUint8(o)) return e && console.log("Not a valid marker at offset " + o + ", found: " + r.getUint8(o)), !1; if (n = r.getUint8(o + 1), e && console.log(n), 225 == n) return e && console.log("Found 0xFFE1 marker"), g(r, o + 4, r.getUint16(o + 2)); o += 2 + r.getUint16(o + 2) } } var p = { 120: "caption", 110: "credit", 25: "keywords", 55: "dateCreated", 80: "byline", 85: "bylineTitle", 122: "captionWriter", 105: "headline", 116: "copyright", 15: "category" }; function d(e, t, r) { for (var n, o, i, s, a = new DataView(e), l = {}, u = t; u < t + r;)28 === a.getUint8(u) && 2 === a.getUint8(u + 1) && (s = a.getUint8(u + 2)) in p && (i = a.getInt16(u + 3), o = p[s], n = f(a, u + 5, i), l.hasOwnProperty(o) ? l[o] instanceof Array ? l[o].push(n) : l[o] = [l[o], n] : l[o] = n), u++; return l } function _(t, r, n, o, i) { var s, a, l, u = t.getUint16(n, !i), c = {}; for (l = 0; l < u; l++)s = n + 12 * l + 2, !(a = o[t.getUint16(s, !i)]) && e && console.log("Unknown tag: " + t.getUint16(s, !i)), c[a] = h(t, s, r, n, i); return c } function h(e, t, r, n, o) { var i, s, a, l, u, c, p = e.getUint16(t + 2, !o), d = e.getUint32(t + 4, !o), _ = e.getUint32(t + 8, !o) + r; switch (p) { case 1: case 7: if (1 == d) return e.getUint8(t + 8, !o); for (i = d > 4 ? _ : t + 8, s = [], l = 0; l < d; l++)s[l] = e.getUint8(i + l); return s; case 2: return f(e, i = d > 4 ? _ : t + 8, d - 1); case 3: if (1 == d) return e.getUint16(t + 8, !o); for (i = d > 2 ? _ : t + 8, s = [], l = 0; l < d; l++)s[l] = e.getUint16(i + 2 * l, !o); return s; case 4: if (1 == d) return e.getUint32(t + 8, !o); for (s = [], l = 0; l < d; l++)s[l] = e.getUint32(_ + 4 * l, !o); return s; case 5: if (1 == d) return u = e.getUint32(_, !o), c = e.getUint32(_ + 4, !o), (a = new Number(u / c)).numerator = u, a.denominator = c, a; for (s = [], l = 0; l < d; l++)u = e.getUint32(_ + 8 * l, !o), c = e.getUint32(_ + 4 + 8 * l, !o), s[l] = new Number(u / c), s[l].numerator = u, s[l].denominator = c; return s; case 9: if (1 == d) return e.getInt32(t + 8, !o); for (s = [], l = 0; l < d; l++)s[l] = e.getInt32(_ + 4 * l, !o); return s; case 10: if (1 == d) return e.getInt32(_, !o) / e.getInt32(_ + 4, !o); for (s = [], l = 0; l < d; l++)s[l] = e.getInt32(_ + 8 * l, !o) / e.getInt32(_ + 4 + 8 * l, !o); return s } } function f(e, t, r) { var o = ""; for (n = t; n < t + r; n++)o += String.fromCharCode(e.getUint8(n)); return o } function g(t, n) { if ("Exif" != f(t, n, 4)) return e && console.log("Not valid EXIF data! " + f(t, n, 4)), !1; var l, u, c, p, d, h = n + 6; if (18761 == t.getUint16(h)) l = !1; else { if (19789 != t.getUint16(h)) return e && console.log("Not valid TIFF data! (no 0x4949 or 0x4D4D)"), !1; l = !0 } if (42 != t.getUint16(h + 2, !l)) return e && console.log("Not valid TIFF data! (no 0x002A)"), !1; var g = t.getUint32(h + 4, !l); if (g < 8) return e && console.log("Not valid TIFF data! (First offset less than 8)", t.getUint32(h + 4, !l)), !1; if ((u = _(t, h, h + g, o, l)).ExifIFDPointer) for (c in p = _(t, h, h + u.ExifIFDPointer, r, l)) { switch (c) { case "LightSource": case "Flash": case "MeteringMode": case "ExposureProgram": case "SensingMethod": case "SceneCaptureType": case "SceneType": case "CustomRendered": case "WhiteBalance": case "GainControl": case "Contrast": case "Saturation": case "Sharpness": case "SubjectDistanceRange": case "FileSource": p[c] = a[c][p[c]]; break; case "ExifVersion": case "FlashpixVersion": p[c] = String.fromCharCode(p[c][0], p[c][1], p[c][2], p[c][3]); break; case "ComponentsConfiguration": p[c] = a.Components[p[c][0]] + a.Components[p[c][1]] + a.Components[p[c][2]] + a.Components[p[c][3]] }u[c] = p[c] } if (u.GPSInfoIFDPointer) for (c in d = _(t, h, h + u.GPSInfoIFDPointer, i, l)) { switch (c) { case "GPSVersionID": d[c] = d[c][0] + "." + d[c][1] + "." + d[c][2] + "." + d[c][3] }u[c] = d[c] } return u.thumbnail = function (e, t, r, n) { var o = function (e, t, r) { var n = e.getUint16(t, !r); return e.getUint32(t + 2 + 12 * n, !r) }(e, t + r, n); if (!o) return {}; if (o > e.byteLength) return {}; var i = _(e, t, t + o, s, n); if (i.Compression) switch (i.Compression) { case 6: if (i.JpegIFOffset && i.JpegIFByteCount) { var a = t + i.JpegIFOffset, l = i.JpegIFByteCount; i.blob = new Blob([new Uint8Array(e.buffer, a, l)], { type: "image/jpeg" }) } break; case 1: console.log("Thumbnail image format is TIFF, which is not implemented."); break; default: console.log("Unknown thumbnail image format '%s'", i.Compression) } else 2 == i.PhotometricInterpretation && console.log("Thumbnail image format is RGB, which is not implemented."); return i }(t, h, g, l), u } function m(e) { var t = {}; if (1 == e.nodeType) { if (e.attributes.length > 0) { t["@attributes"] = {}; for (var r = 0; r < e.attributes.length; r++) { var n = e.attributes.item(r); t["@attributes"][n.nodeName] = n.nodeValue } } } else if (3 == e.nodeType) return e.nodeValue; if (e.hasChildNodes()) for (var o = 0; o < e.childNodes.length; o++) { var i = e.childNodes.item(o), s = i.nodeName; if (null == t[s]) t[s] = m(i); else { if (null == t[s].push) { var a = t[s]; t[s] = [], t[s].push(a) } t[s].push(m(i)) } } return t } function y(e) { try { var t = {}; if (e.children.length > 0) for (var r = 0; r < e.children.length; r++) { var n = e.children.item(r), o = n.attributes; for (var i in o) { var s = o[i], a = s.nodeName, l = s.nodeValue; void 0 !== a && (t[a] = l) } var u = n.nodeName; if (void 0 === t[u]) t[u] = m(n); else { if (void 0 === t[u].push) { var c = t[u]; t[u] = [], t[u].push(c) } t[u].push(m(n)) } } else t = e.textContent; return t } catch (p) { console.log(p.message) } } t.enableXmp = function () { t.isXmpEnabled = !0 }, t.disableXmp = function () { t.isXmpEnabled = !1 }, t.getData = function (e, t) { return !((self.Image && e instanceof self.Image || self.HTMLImageElement && e instanceof self.HTMLImageElement) && !e.complete || (l(e) ? t && t.call(e) : u(e, t), 0)) }, t.getTag = function (e, t) { if (l(e)) return e.exifdata[t] }, t.getIptcTag = function (e, t) { if (l(e)) return e.iptcdata[t] }, t.getAllTags = function (e) { if (!l(e)) return {}; var t, r = e.exifdata, n = {}; for (t in r) r.hasOwnProperty(t) && (n[t] = r[t]); return n }, t.getAllIptcTags = function (e) { if (!l(e)) return {}; var t, r = e.iptcdata, n = {}; for (t in r) r.hasOwnProperty(t) && (n[t] = r[t]); return n }, t.pretty = function (e) { if (!l(e)) return ""; var t, r = e.exifdata, n = ""; for (t in r) r.hasOwnProperty(t) && ("object" == typeof r[t] ? r[t] instanceof Number ? n += t + " : " + r[t] + " [" + r[t].numerator + "/" + r[t].denominator + "]\r\n" : n += t + " : [" + r[t].length + " values]\r\n" : n += t + " : " + r[t] + "\r\n"); return n }, t.readFromBinaryFile = function (e) { return c(e) }, "function" == typeof define && define.amd && define("exif-js", [], function () { return t }) }).call(this), _$exif_35 = _$exif_35.exports; var _$dataURItoBlob_201 = function (e, t, r) { var n = e.split(",")[1], o = t.mimeType || e.split(",")[0].split(":")[1].split(";")[0]; null == o && (o = "plain/text"); for (var i, s = atob(n), a = [], l = 0; l < s.length; l++)a.push(s.charCodeAt(l)); try { i = new Uint8Array(a) } catch (err) { return null } return r ? new File([i], t.name || "", { type: o }) : new Blob([i], { type: o }) }, _$isObjectURL_221 = function (e) { return 0 === e.indexOf("blob:") }, _$imageOrientations_167 = { 1: { rotation: 0, xScale: 1, yScale: 1 }, 2: { rotation: 0, xScale: -1, yScale: 1 }, 3: { rotation: 180, xScale: 1, yScale: 1 }, 4: { rotation: 180, xScale: -1, yScale: 1 }, 5: { rotation: 90, xScale: 1, yScale: -1 }, 6: { rotation: 90, xScale: 1, yScale: 1 }, 7: { rotation: 270, xScale: 1, yScale: -1 }, 8: { rotation: 270, xScale: 1, yScale: 1 } }, _$package_169 = { version: "1.5.0" }, ___class_168, ___temp_168; function ___extends_168() { return (___extends_168 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } var __Plugin_168 = _$lib_93.Plugin, _$lib_168 = (___temp_168 = ___class_168 = function (e) { var t, r; function n(t, r) { var n; return (n = e.call(this, t, r) || this).onFileAdded = function (e) { e.preview || n.addToQueue(e) }, n.onFileRemoved = function (e) { var t = n.queue.indexOf(e); -1 !== t && n.queue.splice(t, 1), e.preview && _$isObjectURL_221(e.preview) && URL.revokeObjectURL(e.preview) }, n.onRestored = function () { var e = n.uppy.getState().files; Object.keys(e).forEach(function (e) { var t = n.uppy.getFile(e); t.isRestored && (t.preview && !_$isObjectURL_221(t.preview) || n.addToQueue(t)) }) }, n.waitUntilAllProcessed = function (e) { return e.forEach(function (e) { var t = n.uppy.getFile(e); n.uppy.emit("preprocess-progress", t, { mode: "indeterminate", message: n.i18n("generatingThumbnails") }) }), new Promise(function (e, t) { n.queueProcessing ? n.uppy.once("thumbnail:all-generated", function () { e() }) : e() }) }, n.type = "modifier", n.id = n.opts.id || "ThumbnailGenerator", n.title = "Thumbnail Generator", n.queue = [], n.queueProcessing = !1, n.defaultThumbnailDimension = 200, n.defaultLocale = { strings: { generatingThumbnails: "Generating thumbnails..." } }, n.opts = ___extends_168({}, { thumbnailWidth: null, thumbnailHeight: null, waitForThumbnailsBeforeUpload: !1 }, {}, r), n.i18nInit(), n } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.setOptions = function (t) { e.prototype.setOptions.call(this, t), this.i18nInit() }, o.i18nInit = function () { this.translator = new _$Translator_199([this.defaultLocale, this.uppy.locale, this.opts.locale]), this.i18n = this.translator.translate.bind(this.translator), this.setPluginState() }, o.createThumbnail = function (e, t, r) { var n = this, o = URL.createObjectURL(e.data), i = new Promise(function (e, t) { var r = new Image; r.src = o, r.addEventListener("load", function () { URL.revokeObjectURL(o), e(r) }), r.addEventListener("error", function (e) { URL.revokeObjectURL(o), t(e.error || new Error("Could not create thumbnail")) }) }); return Promise.all([i, this.getOrientation(e)]).then(function (e) { var o = e[0], i = e[1], s = n.getProportionalDimensions(o, t, r, i.rotation), a = n.rotateImage(o, i), l = n.resizeImage(a, s.width, s.height); return n.canvasToBlob(l, "image/png") }).then(function (e) { return URL.createObjectURL(e) }) }, o.getProportionalDimensions = function (e, t, r, n) { var o = e.width / e.height; return 90 !== n && 270 !== n || (o = e.height / e.width), null != t ? { width: t, height: Math.round(t / o) } : null != r ? { width: Math.round(r * o), height: r } : { width: this.defaultThumbnailDimension, height: Math.round(this.defaultThumbnailDimension / o) } }, o.getOrientation = function (e) { var t = this; return new Promise(function (r) { var n = t.uppy; _$exif_35.getData(e.data, function () { var t = _$exif_35.getAllTags(this); delete t.thumbnail, n.setFileMeta(e.id, { exifdata: t }); var o = _$exif_35.getTag(this, "Orientation") || 1; r(_$imageOrientations_167[o]) }) }) }, o.protect = function (e) { var t = e.width / e.height, r = Math.floor(Math.sqrt(5e6 * t)), n = Math.floor(5e6 / Math.sqrt(5e6 * t)); if (r > 4096 && (r = 4096, n = Math.round(r / t)), n > 4096 && (n = 4096, r = Math.round(t * n)), e.width > r) { var o = document.createElement("canvas"); o.width = r, o.height = n, o.getContext("2d").drawImage(e, 0, 0, r, n), e = o } return e }, o.resizeImage = function (e, t, r) { e = this.protect(e); var n = Math.ceil(Math.log(e.width / t) * Math.LOG2E); n < 1 && (n = 1); for (var o = t * Math.pow(2, n - 1), i = r * Math.pow(2, n - 1); n--;) { var s = document.createElement("canvas"); s.width = o, s.height = i, s.getContext("2d").drawImage(e, 0, 0, o, i), e = s, o = Math.round(o / 2), i = Math.round(i / 2) } return e }, o.rotateImage = function (e, t) { var r = e.width, n = e.height; 90 !== t.rotation && 270 !== t.rotation || (r = e.height, n = e.width); var o = document.createElement("canvas"); o.width = r, o.height = n; var i = o.getContext("2d"); return i.translate(r / 2, n / 2), i.rotate(t.rotation * Math.PI / 180), i.scale(t.xScale, t.yScale), i.drawImage(e, -e.width / 2, -e.height / 2, e.width, e.height), o }, o.canvasToBlob = function (e, t, r) { try { e.getContext("2d").getImageData(0, 0, 1, 1) } catch (err) { if (18 === err.code) return Promise.reject(new Error("cannot read image, probably an svg with external resources")) } return e.toBlob ? new Promise(function (n) { e.toBlob(n, t, r) }).then(function (e) { if (null === e) throw new Error("cannot read image, probably an svg with external resources"); return e }) : Promise.resolve().then(function () { return _$dataURItoBlob_201(e.toDataURL(t, r), {}) }).then(function (e) { if (null === e) throw new Error("could not extract blob, probably an old browser"); return e }) }, o.setPreviewURL = function (e, t) { this.uppy.setFileState(e, { preview: t }) }, o.addToQueue = function (e) { this.queue.push(e), !1 === this.queueProcessing && this.processQueue() }, o.processQueue = function () { var e = this; if (this.queueProcessing = !0, this.queue.length > 0) { var t = this.queue.shift(); return this.requestThumbnail(t).catch(function (e) { }).then(function () { return e.processQueue() }) } this.queueProcessing = !1, this.uppy.log("[ThumbnailGenerator] Emptied thumbnail queue"), this.uppy.emit("thumbnail:all-generated") }, o.requestThumbnail = function (e) { var t = this; return _$isPreviewSupported_222(e.type) && !e.isRemote ? this.createThumbnail(e, this.opts.thumbnailWidth, this.opts.thumbnailHeight).then(function (r) { t.setPreviewURL(e.id, r), t.uppy.log("[ThumbnailGenerator] Generated thumbnail for " + e.id), t.uppy.emit("thumbnail:generated", t.uppy.getFile(e.id), r) }).catch(function (r) { t.uppy.log("[ThumbnailGenerator] Failed thumbnail for " + e.id + ":", "warning"), t.uppy.log(r, "warning"), t.uppy.emit("thumbnail:error", t.uppy.getFile(e.id), r) }) : Promise.resolve() }, o.install = function () { this.uppy.on("file-added", this.onFileAdded), this.uppy.on("file-removed", this.onFileRemoved), this.uppy.on("restored", this.onRestored), this.opts.waitForThumbnailsBeforeUpload && this.uppy.addPreProcessor(this.waitUntilAllProcessed) }, o.uninstall = function () { this.uppy.off("file-added", this.onFileAdded), this.uppy.off("file-removed", this.onFileRemoved), this.uppy.off("restored", this.onRestored), this.opts.waitForThumbnailsBeforeUpload && this.uppy.removePreProcessor(this.waitUntilAllProcessed) }, n }(__Plugin_168), ___class_168.VERSION = _$package_169.version, ___temp_168), _$findAllDOMElements_203 = function (e) { if ("string" == typeof e) { var t = [].slice.call(document.querySelectorAll(e)); return t.length > 0 ? t : null } if ("object" == typeof e && _$isDOMElement_219(e)) return [e] }, _$toArray_229 = function (e) { return Array.prototype.slice.call(e || [], 0) }, _$getRelativePath_210 = function (e) { return e.fullPath && e.fullPath !== "/" + e.name ? e.fullPath : null }, _$getFilesAndDirectoriesFromDirectory_209 = function e(t, r, n, o) { var i = o.onSuccess; t.readEntries(function (o) { var s = [].concat(r, o); o.length ? setTimeout(function () { e(t, s, n, { onSuccess: i }) }, 0) : i(s) }, function (e) { n(e), i(r) }) }, _$webkitGetAsEntryApi_211 = function (e, t) { var r = [], n = []; return _$toArray_229(e.items).forEach(function (e) { var o = e.webkitGetAsEntry(); o && n.push(function e(n) { return new Promise(function (o) { if (n.isFile) n.file(function (e) { e.relativePath = _$getRelativePath_210(n), r.push(e), o() }, function (e) { t(e), o() }); else if (n.isDirectory) { var i = n.createReader(); _$getFilesAndDirectoriesFromDirectory_209(i, [], t, { onSuccess: function (t) { var r = t.map(function (t) { return e(t) }); Promise.all(r).then(function () { return o() }) } }) } }) }(o)) }), Promise.all(n).then(function () { return r }) }, _$fallbackApi_208 = function (e) { var t = _$toArray_229(e.files); return Promise.resolve(t) }, _$getDroppedFiles_207 = function (e, t) { var r = (void 0 === t ? {} : t).logDropError, n = void 0 === r ? function () { } : r; return e.items && e.items[0] && "webkitGetAsEntry" in e.items[0] ? _$webkitGetAsEntryApi_211(e, n) : _$fallbackApi_208(e) }, _$getActiveOverlayEl_115 = function (e, t) { if (t) { var r = e.querySelector('[data-uppy-paneltype="' + t + '"]'); if (r) return r } return e }, _$FOCUSABLE_ELEMENTS_196 = ['a[href]:not([tabindex^="-"]):not([inert]):not([aria-hidden])', 'area[href]:not([tabindex^="-"]):not([inert]):not([aria-hidden])', "input:not([disabled]):not([inert]):not([aria-hidden])", "select:not([disabled]):not([inert]):not([aria-hidden])", "textarea:not([disabled]):not([inert]):not([aria-hidden])", "button:not([disabled]):not([inert]):not([aria-hidden])", 'iframe:not([tabindex^="-"]):not([inert]):not([aria-hidden])', 'object:not([tabindex^="-"]):not([inert]):not([aria-hidden])', 'embed:not([tabindex^="-"]):not([inert]):not([aria-hidden])', '[contenteditable]:not([tabindex^="-"]):not([inert]):not([aria-hidden])', '[tabindex]:not([tabindex^="-"]):not([inert]):not([aria-hidden])']; function focusOnFirstNode(e, t) { var r = t[0]; r && (r.focus(), e.preventDefault()) } function trapFocus(e, t, r) { var n = _$getActiveOverlayEl_115(r, t), o = _$toArray_229(n.querySelectorAll(_$FOCUSABLE_ELEMENTS_196)), i = o.indexOf(document.activeElement); !function (e) { return e.contains(document.activeElement) }(n) ? focusOnFirstNode(e, o) : e.shiftKey && 0 === i ? function (e, t) { var r = o[o.length - 1]; r && (r.focus(), e.preventDefault()) }(e) : e.shiftKey || i !== o.length - 1 || focusOnFirstNode(e, o) } var _$trapFocus_119 = { forModal: function (e, t, r) { trapFocus(e, t, r) }, forInline: function (e, t, r) { null === t || trapFocus(e, t, r) } }, _$ResizeObserver_57 = { exports: {} }; (function (e) { !function (e, t) { "object" == typeof _$ResizeObserver_57.exports ? _$ResizeObserver_57.exports = t() : "function" == typeof define && define.amd ? define(t) : e.ResizeObserver = t() }(this, function () { "use strict"; var t = function () { if ("undefined" != typeof Map) return Map; function e(e, t) { var r = -1; return e.some(function (e, n) { return e[0] === t && (r = n, !0) }), r } return function () { function t() { this.__entries__ = [] } return Object.defineProperty(t.prototype, "size", { get: function () { return this.__entries__.length }, enumerable: !0, configurable: !0 }), t.prototype.get = function (t) { var r = e(this.__entries__, t), n = this.__entries__[r]; return n && n[1] }, t.prototype.set = function (t, r) { var n = e(this.__entries__, t); ~n ? this.__entries__[n][1] = r : this.__entries__.push([t, r]) }, t.prototype.delete = function (t) { var r = this.__entries__, n = e(r, t); ~n && r.splice(n, 1) }, t.prototype.has = function (t) { return !!~e(this.__entries__, t) }, t.prototype.clear = function () { this.__entries__.splice(0) }, t.prototype.forEach = function (e, t) { void 0 === t && (t = null); for (var r = 0, n = this.__entries__; r < n.length; r++) { var o = n[r]; e.call(t, o[1], o[0]) } }, t }() }(), r = "undefined" != typeof window && "undefined" != typeof document && window.document === document, n = void 0 !== e && e.Math === Math ? e : "undefined" != typeof self && self.Math === Math ? self : "undefined" != typeof window && window.Math === Math ? window : Function("return this")(), o = "function" == typeof requestAnimationFrame ? requestAnimationFrame.bind(n) : function (e) { return setTimeout(function () { return e(Date.now()) }, 1e3 / 60) }, i = 2, s = 20, a = ["top", "right", "bottom", "left", "width", "height", "size", "weight"], l = "undefined" != typeof MutationObserver, u = function () { function e() { this.connected_ = !1, this.mutationEventsAdded_ = !1, this.mutationsObserver_ = null, this.observers_ = [], this.onTransitionEnd_ = this.onTransitionEnd_.bind(this), this.refresh = function (e, t) { var r = !1, n = !1, s = 0; function a() { r && (r = !1, e()), n && u() } function l() { o(a) } function u() { var e = Date.now(); if (r) { if (e - s < i) return; n = !0 } else r = !0, n = !1, setTimeout(l, t); s = e } return u }(this.refresh.bind(this), s) } return e.prototype.addObserver = function (e) { ~this.observers_.indexOf(e) || this.observers_.push(e), this.connected_ || this.connect_() }, e.prototype.removeObserver = function (e) { var t = this.observers_, r = t.indexOf(e); ~r && t.splice(r, 1), !t.length && this.connected_ && this.disconnect_() }, e.prototype.refresh = function () { this.updateObservers_() && this.refresh() }, e.prototype.updateObservers_ = function () { var e = this.observers_.filter(function (e) { return e.gatherActive(), e.hasActive() }); return e.forEach(function (e) { return e.broadcastActive() }), e.length > 0 }, e.prototype.connect_ = function () { r && !this.connected_ && (document.addEventListener("transitionend", this.onTransitionEnd_), window.addEventListener("resize", this.refresh), l ? (this.mutationsObserver_ = new MutationObserver(this.refresh), this.mutationsObserver_.observe(document, { attributes: !0, childList: !0, characterData: !0, subtree: !0 })) : (document.addEventListener("DOMSubtreeModified", this.refresh), this.mutationEventsAdded_ = !0), this.connected_ = !0) }, e.prototype.disconnect_ = function () { r && this.connected_ && (document.removeEventListener("transitionend", this.onTransitionEnd_), window.removeEventListener("resize", this.refresh), this.mutationsObserver_ && this.mutationsObserver_.disconnect(), this.mutationEventsAdded_ && document.removeEventListener("DOMSubtreeModified", this.refresh), this.mutationsObserver_ = null, this.mutationEventsAdded_ = !1, this.connected_ = !1) }, e.prototype.onTransitionEnd_ = function (e) { var t = e.propertyName, r = void 0 === t ? "" : t; a.some(function (e) { return !!~r.indexOf(e) }) && this.refresh() }, e.getInstance = function () { return this.instance_ || (this.instance_ = new e), this.instance_ }, e.instance_ = null, e }(), c = function (e, t) { for (var r = 0, n = Object.keys(t); r < n.length; r++) { var o = n[r]; Object.defineProperty(e, o, { value: t[o], enumerable: !1, writable: !1, configurable: !0 }) } return e }, p = function (e) { return e && e.ownerDocument && e.ownerDocument.defaultView || n }, d = m(0, 0, 0, 0); function _(e) { return parseFloat(e) || 0 } function h(e) { for (var t = [], r = 1; r < arguments.length; r++)t[r - 1] = arguments[r]; return t.reduce(function (t, r) { return t + _(e["border-" + r + "-width"]) }, 0) } var f = "undefined" != typeof SVGGraphicsElement ? function (e) { return e instanceof p(e).SVGGraphicsElement } : function (e) { return e instanceof p(e).SVGElement && "function" == typeof e.getBBox }; function g(e) { return r ? f(e) ? function (e) { var t = e.getBBox(); return m(0, 0, t.width, t.height) }(e) : function (e) { var t = e.clientWidth, r = e.clientHeight; if (!t && !r) return d; var n = p(e).getComputedStyle(e), o = function (e) { for (var t = {}, r = 0, n = ["top", "right", "bottom", "left"]; r < n.length; r++) { var o = n[r], i = e["padding-" + o]; t[o] = _(i) } return t }(n), i = o.left + o.right, s = o.top + o.bottom, a = _(n.width), l = _(n.height); if ("border-box" === n.boxSizing && (Math.round(a + i) !== t && (a -= h(n, "left", "right") + i), Math.round(l + s) !== r && (l -= h(n, "top", "bottom") + s)), !function (e) { return e === p(e).document.documentElement }(e)) { var u = Math.round(a + i) - t, c = Math.round(l + s) - r; 1 !== Math.abs(u) && (a -= u), 1 !== Math.abs(c) && (l -= c) } return m(o.left, o.top, a, l) }(e) : d } function m(e, t, r, n) { return { x: e, y: t, width: r, height: n } } var y = function () { function e(e) { this.broadcastWidth = 0, this.broadcastHeight = 0, this.contentRect_ = m(0, 0, 0, 0), this.target = e } return e.prototype.isActive = function () { var e = g(this.target); return this.contentRect_ = e, e.width !== this.broadcastWidth || e.height !== this.broadcastHeight }, e.prototype.broadcastRect = function () { var e = this.contentRect_; return this.broadcastWidth = e.width, this.broadcastHeight = e.height, e }, e }(), v = function (e, t) { var r, n, o, i, s, a, l, u = (n = (r = t).x, o = r.y, i = r.width, s = r.height, a = "undefined" != typeof DOMRectReadOnly ? DOMRectReadOnly : Object, l = Object.create(a.prototype), c(l, { x: n, y: o, width: i, height: s, top: o, right: n + i, bottom: s + o, left: n }), l); c(this, { target: e, contentRect: u }) }, b = function () { function e(e, r, n) { if (this.activeObservations_ = [], this.observations_ = new t, "function" != typeof e) throw new TypeError("The callback provided as parameter 1 is not a function."); this.callback_ = e, this.controller_ = r, this.callbackCtx_ = n } return e.prototype.observe = function (e) { if (!arguments.length) throw new TypeError("1 argument required, but only 0 present."); if ("undefined" != typeof Element && Element instanceof Object) { if (!(e instanceof p(e).Element)) throw new TypeError('parameter 1 is not of type "Element".'); var t = this.observations_; t.has(e) || (t.set(e, new y(e)), this.controller_.addObserver(this), this.controller_.refresh()) } }, e.prototype.unobserve = function (e) { if (!arguments.length) throw new TypeError("1 argument required, but only 0 present."); if ("undefined" != typeof Element && Element instanceof Object) { if (!(e instanceof p(e).Element)) throw new TypeError('parameter 1 is not of type "Element".'); var t = this.observations_; t.has(e) && (t.delete(e), t.size || this.controller_.removeObserver(this)) } }, e.prototype.disconnect = function () { this.clearActive(), this.observations_.clear(), this.controller_.removeObserver(this) }, e.prototype.gatherActive = function () { var e = this; this.clearActive(), this.observations_.forEach(function (t) { t.isActive() && e.activeObservations_.push(t) }) }, e.prototype.broadcastActive = function () { if (this.hasActive()) { var e = this.callbackCtx_, t = this.activeObservations_.map(function (e) { return new v(e.target, e.broadcastRect()) }); this.callback_.call(e, t, e), this.clearActive() } }, e.prototype.clearActive = function () { this.activeObservations_.splice(0) }, e.prototype.hasActive = function () { return this.activeObservations_.length > 0 }, e }(), w = "undefined" != typeof WeakMap ? new WeakMap : new t, S = function e(t) { if (!(this instanceof e)) throw new TypeError("Cannot call a class as a function."); if (!arguments.length) throw new TypeError("1 argument required, but only 0 present."); var r = u.getInstance(), n = new b(t, r, this); w.set(this, n) }; return ["observe", "unobserve", "disconnect"].forEach(function (e) { S.prototype[e] = function () { var t; return (t = w.get(this))[e].apply(t, arguments) } }), void 0 !== n.ResizeObserver ? n.ResizeObserver : S }) }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}), _$ResizeObserver_57 = _$ResizeObserver_57.exports; var _$lodashDebounce_45 = {}; (function (e) { var t = NaN, r = "[object Symbol]", n = /^\s+|\s+$/g, o = /^[-+]0x[0-9a-f]+$/i, i = /^0b[01]+$/i, s = /^0o[0-7]+$/i, a = parseInt, l = "object" == typeof e && e && e.Object === Object && e, u = "object" == typeof self && self && self.Object === Object && self, c = l || u || Function("return this")(), p = Object.prototype.toString, d = Math.max, _ = Math.min, h = function () { return c.Date.now() }; function f(e) { var t = typeof e; return !!e && ("object" == t || "function" == t) } function g(e) { if ("number" == typeof e) return e; if (function (e) { return "symbol" == typeof e || function (e) { return !!e && "object" == typeof e }(e) && p.call(e) == r }(e)) return t; if (f(e)) { var l = "function" == typeof e.valueOf ? e.valueOf() : e; e = f(l) ? l + "" : l } if ("string" != typeof e) return 0 === e ? e : +e; e = e.replace(n, ""); var u = i.test(e); return u || s.test(e) ? a(e.slice(2), u ? 2 : 8) : o.test(e) ? t : +e } _$lodashDebounce_45 = function (e, t, r) { var n, o, i, s, a, l, u = 0, c = !1, p = !1, m = !0; if ("function" != typeof e) throw new TypeError("Expected a function"); function y(t) { var r = n, i = o; return n = o = void 0, u = t, s = e.apply(i, r) } function v(e) { var r = e - l; return void 0 === l || r >= t || r < 0 || p && e - u >= i } function b() { var e = h(); if (v(e)) return w(e); a = setTimeout(b, function (e) { var r = t - (e - l); return p ? _(r, i - (e - u)) : r }(e)) } function w(e) { return a = void 0, m && n ? y(e) : (n = o = void 0, s) } function S() { var e = h(), r = v(e); if (n = arguments, o = this, l = e, r) { if (void 0 === a) return function (e) { return u = e, a = setTimeout(b, t), c ? y(e) : s }(l); if (p) return a = setTimeout(b, t), y(l) } return void 0 === a && (a = setTimeout(b, t)), s } return t = g(t) || 0, f(r) && (c = !!r.leading, i = (p = "maxWait" in r) ? d(g(r.maxWait) || 0, t) : i, m = "trailing" in r ? !!r.trailing : m), S.cancel = function () { void 0 !== a && clearTimeout(a), u = 0, n = l = o = a = void 0 }, S.flush = function () { return void 0 === a ? s : w(h()) }, S } }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}); var _$createSuperFocus_114 = function () { var e = !1; return _$lodashDebounce_45(function (t, r) { var n = _$getActiveOverlayEl_115(t, r), o = n.contains(document.activeElement); if (!o || !e) { var i = n.querySelector("[data-uppy-super-focusable]"); if (!o || i) if (i) i.focus({ preventScroll: !0 }), e = !0; else { var s = n.querySelector(_$FOCUSABLE_ELEMENTS_196); s && s.focus({ preventScroll: !0 }), e = !1 } } }, 260) }; function areInputsEqual(e, t) { if (e.length !== t.length) return !1; for (var r = 0; r < e.length; r++)if (e[r] !== t[r]) return !1; return !0 } var _$memoizeOneCjs_47 = function (e, t) { var r; void 0 === t && (t = areInputsEqual); var n, o = [], i = !1; return function () { for (var s = arguments.length, a = new Array(s), l = 0; l < s; l++)a[l] = arguments[l]; return i && r === this && t(a, o) ? n : (n = e.apply(this, a), i = !0, r = this, o = a, n) } }, _$package_121 = { version: "1.5.0" }, ___class_112, ___temp_112; function ___extends_112() { return (___extends_112 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } function ___assertThisInitialized_112(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } var __Plugin_112 = _$lib_93.Plugin, ResizeObserver = _$ResizeObserver_57.default || _$ResizeObserver_57, defaultPickerIcon = _$icons_111.defaultPickerIcon, memoize = _$memoizeOneCjs_47.default || _$memoizeOneCjs_47; function createPromise() { var e = {}; return e.promise = new Promise(function (t, r) { e.resolve = t, e.reject = r }), e } var _$lib_112 = (___temp_112 = ___class_112 = function (e) { var t, r; function n(t, r) { var n; (n = e.call(this, t, r) || this).cancelUpload = function (e) { n.uppy.removeFile(e) }, n.saveFileCard = function (e, t) { n.uppy.setFileMeta(t, e), n.toggleFileCard() }, n._attachRenderFunctionToTarget = function (e) { var t = n.uppy.getPlugin(e.id); return ___extends_112({}, e, { icon: t.icon || n.opts.defaultPickerIcon, render: t.render }) }, n._isTargetSupported = function (e) { var t = n.uppy.getPlugin(e.id); return "function" != typeof t.isSupported || t.isSupported() }, n._getAcquirers = memoize(function (e) { return e.filter(function (e) { return "acquirer" === e.type && n._isTargetSupported(e) }).map(n._attachRenderFunctionToTarget) }), n._getProgressIndicators = memoize(function (e) { return e.filter(function (e) { return "progressindicator" === e.type }).map(n._attachRenderFunctionToTarget) }), n.id = n.opts.id || "Dashboard", n.title = "Dashboard", n.type = "orchestrator", n.modalName = "uppy-Dashboard-" + _$cuid_13(), n.defaultLocale = { strings: { closeModal: "Close Modal", importFrom: "Import from %{name}", addingMoreFiles: "Adding more files", addMoreFiles: "Add more files", dashboardWindowTitle: "File Uploader Window (Press escape to close)", dashboardTitle: "File Uploader", copyLinkToClipboardSuccess: "Link copied to clipboard", copyLinkToClipboardFallback: "Copy the URL below", copyLink: "Copy link", link: "Link", fileSource: "File source: %{name}", done: "Done", back: "Back", addMore: "Add more", removeFile: "Remove file", editFile: "Edit file", editing: "Editing %{file}", edit: "Edit", finishEditingFile: "Finish editing file", saveChanges: "Save changes", cancel: "Cancel", myDevice: "My Device", dropPasteImport: "Drop files here, paste, %{browse} or import from", dropPaste: "Drop files here, paste or %{browse}", dropHint: "Drop your files here", browse: "browse", uploadComplete: "Upload complete", uploadPaused: "Upload paused", resumeUpload: "Resume upload", pauseUpload: "Pause upload", retryUpload: "Retry upload", cancelUpload: "Cancel upload", xFilesSelected: { 0: "%{smart_count} file selected", 1: "%{smart_count} files selected", 2: "%{smart_count} files selected" }, uploadingXFiles: { 0: "Uploading %{smart_count} file", 1: "Uploading %{smart_count} files", 2: "Uploading %{smart_count} files" }, processingXFiles: { 0: "Processing %{smart_count} file", 1: "Processing %{smart_count} files", 2: "Processing %{smart_count} files" }, poweredBy: "Powered by" } }; var o = { target: "body", metaFields: [], trigger: "#uppy-select-files", inline: !1, width: 750, height: 550, thumbnailWidth: 280, waitForThumbnailsBeforeUpload: !1, defaultPickerIcon: defaultPickerIcon, showLinkToFileUploadResult: !0, showProgressDetails: !1, hideUploadButton: !1, hideRetryButton: !1, hidePauseResumeCancelButtons: !1, hideProgressAfterFinish: !1, note: null, closeModalOnClickOutside: !1, closeAfterFinish: !1, disableStatusBar: !1, disableInformer: !1, disableThumbnailGenerator: !1, disablePageScrollWhenModalOpen: !0, animateOpenClose: !0, proudlyDisplayPoweredByUppy: !0, onRequestCloseModal: function () { return n.closeModal() }, showSelectedFiles: !0, browserBackButtonClose: !1 }; return n.opts = ___extends_112({}, o, {}, r), n.i18nInit(), n.openModal = n.openModal.bind(___assertThisInitialized_112(n)), n.closeModal = n.closeModal.bind(___assertThisInitialized_112(n)), n.requestCloseModal = n.requestCloseModal.bind(___assertThisInitialized_112(n)), n.isModalOpen = n.isModalOpen.bind(___assertThisInitialized_112(n)), n.addTarget = n.addTarget.bind(___assertThisInitialized_112(n)), n.removeTarget = n.removeTarget.bind(___assertThisInitialized_112(n)), n.hideAllPanels = n.hideAllPanels.bind(___assertThisInitialized_112(n)), n.showPanel = n.showPanel.bind(___assertThisInitialized_112(n)), n.toggleFileCard = n.toggleFileCard.bind(___assertThisInitialized_112(n)), n.toggleAddFilesPanel = n.toggleAddFilesPanel.bind(___assertThisInitialized_112(n)), n.initEvents = n.initEvents.bind(___assertThisInitialized_112(n)), n.handlePopState = n.handlePopState.bind(___assertThisInitialized_112(n)), n.handleKeyDownInModal = n.handleKeyDownInModal.bind(___assertThisInitialized_112(n)), n.handleKeyDownInInline = n.handleKeyDownInInline.bind(___assertThisInitialized_112(n)), n.handleComplete = n.handleComplete.bind(___assertThisInitialized_112(n)), n.handleClickOutside = n.handleClickOutside.bind(___assertThisInitialized_112(n)), n.handlePaste = n.handlePaste.bind(___assertThisInitialized_112(n)), n.handlePasteOnBody = n.handlePasteOnBody.bind(___assertThisInitialized_112(n)), n.handleInputChange = n.handleInputChange.bind(___assertThisInitialized_112(n)), n.handleDragOver = n.handleDragOver.bind(___assertThisInitialized_112(n)), n.handleDragLeave = n.handleDragLeave.bind(___assertThisInitialized_112(n)), n.handleDrop = n.handleDrop.bind(___assertThisInitialized_112(n)), n.superFocusOnEachUpdate = n.superFocusOnEachUpdate.bind(___assertThisInitialized_112(n)), n.recordIfFocusedOnUppyRecently = n.recordIfFocusedOnUppyRecently.bind(___assertThisInitialized_112(n)), n.render = n.render.bind(___assertThisInitialized_112(n)), n.install = n.install.bind(___assertThisInitialized_112(n)), n.superFocus = _$createSuperFocus_114(), n.ifFocusedOnUppyRecently = !1, n.makeDashboardInsidesVisibleAnywayTimeout = null, n.removeDragOverClassTimeout = null, n } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.setOptions = function (t) { e.prototype.setOptions.call(this, t), this.i18nInit() }, o.i18nInit = function () { this.translator = new _$Translator_199([this.defaultLocale, this.uppy.locale, this.opts.locale]), this.i18n = this.translator.translate.bind(this.translator), this.i18nArray = this.translator.translateArray.bind(this.translator), this.setPluginState() }, o.removeTarget = function (e) { var t = this.getPluginState().targets.filter(function (t) { return t.id !== e.id }); this.setPluginState({ targets: t }) }, o.addTarget = function (e) { var t = e.id || e.constructor.name, r = e.title || t, n = e.type; if ("acquirer" === n || "progressindicator" === n || "presenter" === n) { var o = { id: t, name: r, type: n }, i = this.getPluginState().targets.slice(); return i.push(o), this.setPluginState({ targets: i }), this.el } this.uppy.log("Dashboard: Modal can only be used by plugins of types: acquirer, progressindicator, presenter", "error") }, o.hideAllPanels = function () { this.setPluginState({ activePickerPanel: !1, showAddFilesPanel: !1, activeOverlayType: null }) }, o.showPanel = function (e) { var t = this.getPluginState().targets.filter(function (t) { return "acquirer" === t.type && t.id === e })[0]; this.setPluginState({ activePickerPanel: t, activeOverlayType: "PickerPanel" }) }, o.openModal = function () { var e = this, t = createPromise(), r = t.promise, n = t.resolve; return this.savedScrollPosition = window.pageYOffset, this.savedActiveElement = document.activeElement, this.opts.disablePageScrollWhenModalOpen && document.body.classList.add("uppy-Dashboard-isFixed"), this.opts.animateOpenClose && this.getPluginState().isClosing ? this.el.addEventListener("animationend", function t() { e.setPluginState({ isHidden: !1 }), e.el.removeEventListener("animationend", t, !1), n() }, !1) : (this.setPluginState({ isHidden: !1 }), n()), this.opts.browserBackButtonClose && this.updateBrowserHistory(), document.addEventListener("keydown", this.handleKeyDownInModal), this.uppy.emit("dashboard:modal-open"), r }, o.closeModal = function (e) { var t = this; void 0 === e && (e = {}); var r = e.manualClose, n = void 0 === r || r, o = this.getPluginState(), i = o.isHidden, s = o.isClosing; if (!i && !s) { var a = createPromise(), l = a.promise, u = a.resolve; return this.opts.disablePageScrollWhenModalOpen && document.body.classList.remove("uppy-Dashboard-isFixed"), this.opts.animateOpenClose ? (this.setPluginState({ isClosing: !0 }), this.el.addEventListener("animationend", function e() { t.setPluginState({ isHidden: !0, isClosing: !1 }), t.superFocus.cancel(), t.savedActiveElement.focus(), t.el.removeEventListener("animationend", e, !1), u() }, !1)) : (this.setPluginState({ isHidden: !0 }), this.superFocus.cancel(), this.savedActiveElement.focus(), u()), document.removeEventListener("keydown", this.handleKeyDownInModal), n && this.opts.browserBackButtonClose && history.state && history.state[this.modalName] && history.go(-1), this.uppy.emit("dashboard:modal-closed"), l } }, o.isModalOpen = function () { return !this.getPluginState().isHidden || !1 }, o.requestCloseModal = function () { return this.opts.onRequestCloseModal ? this.opts.onRequestCloseModal() : this.closeModal() }, o.toggleFileCard = function (e) { e ? this.uppy.emit("dashboard:file-edit-start") : this.uppy.emit("dashboard:file-edit-complete"), this.setPluginState({ fileCardFor: e || null, activeOverlayType: e ? "FileCard" : null }) }, o.toggleAddFilesPanel = function (e) { this.setPluginState({ showAddFilesPanel: e, activeOverlayType: e ? "AddFiles" : null }) }, o.addFile = function (e) { try { this.uppy.addFile({ source: this.id, name: e.name, type: e.type, data: e, meta: { relativePath: e.relativePath || null } }) } catch (err) { err.isRestriction || this.uppy.log(err) } }, o.startListeningToResize = function () { var e = this; this.resizeObserver = new ResizeObserver(function (t, r) { var n = t[0].contentRect, o = n.width, i = n.height; e.uppy.log("[Dashboard] resized: " + o + " / " + i, "debug"), e.setPluginState({ containerWidth: o, containerHeight: i, areInsidesReadyToBeVisible: !0 }) }), this.resizeObserver.observe(this.el.querySelector(".uppy-Dashboard-inner")), this.makeDashboardInsidesVisibleAnywayTimeout = setTimeout(function () { var t = e.getPluginState(), r = !e.opts.inline && t.isHidden; t.areInsidesReadyToBeVisible || r || (e.uppy.log("[Dashboard] resize event didn't fire on time: defaulted to mobile layout", "debug"), e.setPluginState({ areInsidesReadyToBeVisible: !0 })) }, 1e3) }, o.stopListeningToResize = function () { this.resizeObserver.disconnect(), clearTimeout(this.makeDashboardInsidesVisibleAnywayTimeout) }, o.recordIfFocusedOnUppyRecently = function (e) { this.el.contains(e.target) ? this.ifFocusedOnUppyRecently = !0 : (this.ifFocusedOnUppyRecently = !1, this.superFocus.cancel()) }, o.updateBrowserHistory = function () { var e; history.state && history.state[this.modalName] || history.pushState(___extends_112({}, history.state, ((e = {})[this.modalName] = !0, e)), ""), window.addEventListener("popstate", this.handlePopState, !1) }, o.handlePopState = function (e) { !this.isModalOpen() || e.state && e.state[this.modalName] || this.closeModal({ manualClose: !1 }), !this.isModalOpen() && e.state && e.state[this.modalName] && history.go(-1) }, o.handleKeyDownInModal = function (e) { 27 === e.keyCode && this.requestCloseModal(e), 9 === e.keyCode && _$trapFocus_119.forModal(e, this.getPluginState().activeOverlayType, this.el) }, o.handleClickOutside = function () { this.opts.closeModalOnClickOutside && this.requestCloseModal() }, o.handlePaste = function (e) { var t = this; this.uppy.iteratePlugins(function (t) { "acquirer" === t.type && t.handleRootPaste && t.handleRootPaste(e) }), _$toArray_229(e.clipboardData.files).forEach(function (e) { t.uppy.log("[Dashboard] File pasted"), t.addFile(e) }) }, o.handleInputChange = function (e) { var t = this; e.preventDefault(), _$toArray_229(e.target.files).forEach(function (e) { return t.addFile(e) }) }, o.handleDragOver = function (e) { e.preventDefault(), e.stopPropagation(), clearTimeout(this.removeDragOverClassTimeout), this.setPluginState({ isDraggingOver: !0 }) }, o.handleDragLeave = function (e) { var t = this; e.preventDefault(), e.stopPropagation(), clearTimeout(this.removeDragOverClassTimeout), this.removeDragOverClassTimeout = setTimeout(function () { t.setPluginState({ isDraggingOver: !1 }) }, 50) }, o.handleDrop = function (e, t) { var r = this; e.preventDefault(), e.stopPropagation(), clearTimeout(this.removeDragOverClassTimeout), e.dataTransfer.dropEffect = "copy", this.setPluginState({ isDraggingOver: !1 }), this.uppy.iteratePlugins(function (t) { "acquirer" === t.type && t.handleRootDrop && t.handleRootDrop(e) }); var n = !1; _$getDroppedFiles_207(e.dataTransfer, { logDropError: function (e) { r.uppy.log(e, "error"), n || (r.uppy.info(e.message, "error"), n = !0) } }).then(function (e) { e.length > 0 && (r.uppy.log("[Dashboard] Files were dropped"), e.forEach(function (e) { return r.addFile(e) })) }) }, o.handleKeyDownInInline = function (e) { 9 === e.keyCode && _$trapFocus_119.forInline(e, this.getPluginState().activeOverlayType, this.el) }, o.handlePasteOnBody = function (e) { this.el.contains(document.activeElement) && this.handlePaste(e) }, o.handleComplete = function (e) { var t = e.failed; e.uploadID, this.opts.closeAfterFinish && 0 === t.length && this.requestCloseModal() }, o.initEvents = function () { var e = this, t = _$findAllDOMElements_203(this.opts.trigger); !this.opts.inline && t && t.forEach(function (t) { return t.addEventListener("click", e.openModal) }), this.opts.inline || t || this.uppy.log("Dashboard modal trigger not found. Make sure `trigger` is set in Dashboard options unless you are planning to call openModal() method yourself", "error"), this.startListeningToResize(), document.addEventListener("paste", this.handlePasteOnBody), this.uppy.on("plugin-remove", this.removeTarget), this.uppy.on("file-added", this.hideAllPanels), this.uppy.on("dashboard:modal-closed", this.hideAllPanels), this.uppy.on("complete", this.handleComplete), document.addEventListener("focus", this.recordIfFocusedOnUppyRecently, !0), document.addEventListener("click", this.recordIfFocusedOnUppyRecently, !0), this.opts.inline && this.el.addEventListener("keydown", this.handleKeyDownInInline) }, o.removeEvents = function () { var e = this, t = _$findAllDOMElements_203(this.opts.trigger); !this.opts.inline && t && t.forEach(function (t) { return t.removeEventListener("click", e.openModal) }), this.stopListeningToResize(), document.removeEventListener("paste", this.handlePasteOnBody), window.removeEventListener("popstate", this.handlePopState, !1), this.uppy.off("plugin-remove", this.removeTarget), this.uppy.off("file-added", this.hideAllPanels), this.uppy.off("dashboard:modal-closed", this.hideAllPanels), this.uppy.off("complete", this.handleComplete), document.removeEventListener("focus", this.recordIfFocusedOnUppyRecently), document.removeEventListener("click", this.recordIfFocusedOnUppyRecently), this.opts.inline && this.el.removeEventListener("keydown", this.handleKeyDownInInline) }, o.superFocusOnEachUpdate = function () { var e = this.el.contains(document.activeElement), t = document.activeElement === document.querySelector("body") || null === document.activeElement, r = this.uppy.getState().info.isHidden, n = !this.opts.inline; r && (n || e || t && this.ifFocusedOnUppyRecently) ? this.superFocus(this.el, this.getPluginState().activeOverlayType) : this.superFocus.cancel() }, o.afterUpdate = function () { this.superFocusOnEachUpdate() }, o.render = function (e) { var t = this.getPluginState(), r = e.files, n = e.capabilities, o = e.allowNewUpload, i = Object.keys(r).filter(function (e) { return !r[e].progress.uploadStarted }), s = Object.keys(r).filter(function (e) { return r[e].progress.uploadStarted }), a = Object.keys(r).filter(function (e) { return r[e].isPaused }), l = Object.keys(r).filter(function (e) { return r[e].progress.uploadComplete }), u = Object.keys(r).filter(function (e) { return r[e].error }), c = Object.keys(r).filter(function (e) { return !r[e].progress.uploadComplete && r[e].progress.uploadStarted }), p = c.filter(function (e) { return !r[e].isPaused }), d = Object.keys(r).filter(function (e) { return r[e].progress.preprocess || r[e].progress.postprocess }), _ = s.length > 0, h = 100 === e.totalProgress && l.length === Object.keys(r).length && 0 === d.length, f = _ && u.length === s.length, g = 0 !== c.length && a.length === c.length, m = this._getAcquirers(t.targets), y = this._getProgressIndicators(t.targets); return _$Dashboard_99({ state: e, isHidden: t.isHidden, files: r, newFiles: i, uploadStartedFiles: s, completeFiles: l, erroredFiles: u, inProgressFiles: c, inProgressNotPausedFiles: p, processingFiles: d, isUploadStarted: _, isAllComplete: h, isAllErrored: f, isAllPaused: g, totalFileCount: Object.keys(r).length, totalProgress: e.totalProgress, allowNewUpload: o, acquirers: m, activePickerPanel: t.activePickerPanel, animateOpenClose: this.opts.animateOpenClose, isClosing: t.isClosing, getPlugin: this.uppy.getPlugin, progressindicators: y, autoProceed: this.uppy.opts.autoProceed, id: this.id, closeModal: this.requestCloseModal, handleClickOutside: this.handleClickOutside, handleInputChange: this.handleInputChange, handlePaste: this.handlePaste, inline: this.opts.inline, showPanel: this.showPanel, hideAllPanels: this.hideAllPanels, log: this.uppy.log, i18n: this.i18n, i18nArray: this.i18nArray, addFile: this.uppy.addFile, removeFile: this.uppy.removeFile, info: this.uppy.info, note: this.opts.note, metaFields: t.metaFields, resumableUploads: n.resumableUploads || !1, individualCancellation: n.individualCancellation, pauseUpload: this.uppy.pauseResume, retryUpload: this.uppy.retryUpload, cancelUpload: this.cancelUpload, cancelAll: this.uppy.cancelAll, fileCardFor: t.fileCardFor, toggleFileCard: this.toggleFileCard, toggleAddFilesPanel: this.toggleAddFilesPanel, showAddFilesPanel: t.showAddFilesPanel, saveFileCard: this.saveFileCard, width: this.opts.width, height: this.opts.height, showLinkToFileUploadResult: this.opts.showLinkToFileUploadResult, proudlyDisplayPoweredByUppy: this.opts.proudlyDisplayPoweredByUppy, containerWidth: t.containerWidth, areInsidesReadyToBeVisible: t.areInsidesReadyToBeVisible, isTargetDOMEl: this.isTargetDOMEl, parentElement: this.el, allowedFileTypes: this.uppy.opts.restrictions.allowedFileTypes, maxNumberOfFiles: this.uppy.opts.restrictions.maxNumberOfFiles, showSelectedFiles: this.opts.showSelectedFiles, isDraggingOver: t.isDraggingOver, handleDragOver: this.handleDragOver, handleDragLeave: this.handleDragLeave, handleDrop: this.handleDrop }) }, o.discoverProviderPlugins = function () { var e = this; this.uppy.iteratePlugins(function (t) { t && !t.target && t.opts && t.opts.target === e.constructor && e.addTarget(t) }) }, o.install = function () { var e = this; this.setPluginState({ isHidden: !0, fileCardFor: null, activeOverlayType: null, showAddFilesPanel: !1, activePickerPanel: !1, metaFields: this.opts.metaFields, targets: [], areInsidesReadyToBeVisible: !1, isDraggingOver: !1 }); var t = this.opts, r = t.inline, n = t.closeAfterFinish; if (r && n) throw new Error("[Dashboard] `closeAfterFinish: true` cannot be used on an inline Dashboard, because an inline Dashboard cannot be closed at all. Either set `inline: false`, or disable the `closeAfterFinish` option."); this.uppy.opts.allowMultipleUploads && n && this.uppy.log("[Dashboard] When using `closeAfterFinish`, we recommended setting the `allowMultipleUploads` option to `false` in the Uppy constructor. See https://uppy.io/docs/uppy/#allowMultipleUploads-true", "warning"); var o = this.opts.target; o && this.mount(o, this), (this.opts.plugins || []).forEach(function (t) { var r = e.uppy.getPlugin(t); r && r.mount(e, r) }), this.opts.disableStatusBar || this.uppy.use(_$lib_161, { id: this.id + ":StatusBar", target: this, hideUploadButton: this.opts.hideUploadButton, hideRetryButton: this.opts.hideRetryButton, hidePauseResumeButton: this.opts.hidePauseResumeButton, hideCancelButton: this.opts.hideCancelButton, showProgressDetails: this.opts.showProgressDetails, hideAfterFinish: this.opts.hideProgressAfterFinish, locale: this.opts.locale }), this.opts.disableInformer || this.uppy.use(_$lib_138, { id: this.id + ":Informer", target: this }), this.opts.disableThumbnailGenerator || this.uppy.use(_$lib_168, { id: this.id + ":ThumbnailGenerator", thumbnailWidth: this.opts.thumbnailWidth, waitForThumbnailsBeforeUpload: this.opts.waitForThumbnailsBeforeUpload }), this.discoverProviderPlugins(), this.initEvents() }, o.uninstall = function () { var e = this; if (!this.opts.disableInformer) { var t = this.uppy.getPlugin(this.id + ":Informer"); t && this.uppy.removePlugin(t) } if (!this.opts.disableStatusBar) { var r = this.uppy.getPlugin(this.id + ":StatusBar"); r && this.uppy.removePlugin(r) } if (!this.opts.disableThumbnailGenerator) { var n = this.uppy.getPlugin(this.id + ":ThumbnailGenerator"); n && this.uppy.removePlugin(n) } (this.opts.plugins || []).forEach(function (t) { var r = e.uppy.getPlugin(t); r && r.unmount() }), this.unmount(), this.removeEvents() }, n }(__Plugin_112), ___class_112.VERSION = _$package_121.version, ___temp_112), _$isDragDropSupported_220 = function () { var e = document.createElement("div"); return "draggable" in e && "ondragstart" in e && "ondrop" in e && "FormData" in window && "FileReader" in window }, _$package_123 = { version: "1.4.0" }, ___class_122, ___temp_122; function ___extends_122() { return (___extends_122 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } function ___assertThisInitialized_122(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } var __Plugin_122 = _$lib_93.Plugin, __h_122 = _$preact_53.h, _$lib_122 = (___temp_122 = ___class_122 = function (e) { var t, r; function n(t, r) { var n; return (n = e.call(this, t, r) || this).type = "acquirer", n.id = n.opts.id || "DragDrop", n.title = "Drag & Drop", n.defaultLocale = { strings: { dropHereOr: "Drop files here or %{browse}", browse: "browse" } }, n.opts = ___extends_122({}, { target: null, inputName: "files[]", width: "100%", height: "100%", note: null }, {}, r), n.isDragDropSupported = _$isDragDropSupported_220(), n.removeDragOverClassTimeout = null, n.i18nInit(), n.handleInputChange = n.handleInputChange.bind(___assertThisInitialized_122(n)), n.handleDragOver = n.handleDragOver.bind(___assertThisInitialized_122(n)), n.handleDragLeave = n.handleDragLeave.bind(___assertThisInitialized_122(n)), n.handleDrop = n.handleDrop.bind(___assertThisInitialized_122(n)), n.addFile = n.addFile.bind(___assertThisInitialized_122(n)), n.render = n.render.bind(___assertThisInitialized_122(n)), n } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.setOptions = function (t) { e.prototype.setOptions.call(this, t), this.i18nInit() }, o.i18nInit = function () { this.translator = new _$Translator_199([this.defaultLocale, this.uppy.locale, this.opts.locale]), this.i18n = this.translator.translate.bind(this.translator), this.i18nArray = this.translator.translateArray.bind(this.translator), this.setPluginState() }, o.addFile = function (e) { try { this.uppy.addFile({ source: this.id, name: e.name, type: e.type, data: e, meta: { relativePath: e.relativePath || null } }) } catch (err) { err.isRestriction || this.uppy.log(err) } }, o.handleInputChange = function (e) { this.uppy.log("[DragDrop] Files selected through input"), _$toArray_229(e.target.files).forEach(this.addFile), e.target.value = null }, o.handleDrop = function (e, t) { var r = this; e.preventDefault(), e.stopPropagation(), clearTimeout(this.removeDragOverClassTimeout), e.dataTransfer.dropEffect = "copy", this.setPluginState({ isDraggingOver: !1 }), this.uppy.log("[DragDrop] Files were dropped"), _$getDroppedFiles_207(e.dataTransfer, { logDropError: function (e) { r.uppy.log(e, "error") } }).then(function (e) { e.forEach(r.addFile) }) }, o.handleDragOver = function (e) { e.preventDefault(), e.stopPropagation(), clearTimeout(this.removeDragOverClassTimeout), this.setPluginState({ isDraggingOver: !0 }) }, o.handleDragLeave = function (e) { var t = this; e.preventDefault(), e.stopPropagation(), clearTimeout(this.removeDragOverClassTimeout), this.removeDragOverClassTimeout = setTimeout(function () { t.setPluginState({ isDraggingOver: !1 }) }, 50) }, o.renderHiddenFileInput = function () { var e = this, t = this.uppy.opts.restrictions; return __h_122("input", { class: "uppy-DragDrop-input", type: "file", tabindex: -1, focusable: "false", ref: function (t) { e.fileInputRef = t }, name: this.opts.inputName, multiple: 1 !== t.maxNumberOfFiles, accept: t.allowedFileTypes, onchange: this.handleInputChange }) }, o.renderArrowSvg = function () { return __h_122("svg", { "aria-hidden": "true", focusable: "false", class: "UppyIcon uppy-DragDrop-arrow", width: "16", height: "16", viewBox: "0 0 16 16" }, __h_122("path", { d: "M11 10V0H5v10H2l6 6 6-6h-3zm0 0", "fill-rule": "evenodd" })) }, o.renderLabel = function () { return __h_122("div", { class: "uppy-DragDrop-label" }, this.i18nArray("dropHereOr", { browse: __h_122("span", { class: "uppy-DragDrop-browse" }, this.i18n("browse")) })) }, o.renderNote = function () { return __h_122("span", { class: "uppy-DragDrop-note" }, this.opts.note) }, o.render = function (e) { var t = this, r = "\n uppy-Root\n uppy-u-reset\n uppy-DragDrop-container\n " + (this.isDragDropSupported ? "uppy-DragDrop--is-dragdrop-supported" : "") + "\n " + (this.getPluginState().isDraggingOver ? "uppy-DragDrop--isDraggingOver" : "") + "\n ", n = { width: this.opts.width, height: this.opts.height }; return __h_122("button", { type: "button", class: r, style: n, onClick: function () { return t.fileInputRef.click() }, onDragOver: this.handleDragOver, onDragLeave: this.handleDragLeave, onDrop: this.handleDrop }, this.renderHiddenFileInput(), __h_122("div", { class: "uppy-DragDrop-inner" }, this.renderArrowSvg(), this.renderLabel(), this.renderNote())) }, o.install = function () { this.setPluginState({ isDraggingOver: !1 }); var e = this.opts.target; e && this.mount(e, this) }, o.uninstall = function () { this.unmount() }, n }(__Plugin_122), ___class_122.VERSION = _$package_123.version, ___temp_122), _$package_127 = { version: "1.4.0" }, ___class_126, ___temp_126; function ___extends_126() { return (___extends_126 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } function ___assertThisInitialized_126(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } var __Plugin_126 = _$lib_93.Plugin, __h_126 = _$preact_53.h, _$lib_126 = (___temp_126 = ___class_126 = function (e) { var t, r; function n(t, r) { var n; return (n = e.call(this, t, r) || this).id = n.opts.id || "FileInput", n.title = "File Input", n.type = "acquirer", n.defaultLocale = { strings: { chooseFiles: "Choose files" } }, n.opts = ___extends_126({}, { target: null, pretty: !0, inputName: "files[]" }, {}, r), n.i18nInit(), n.render = n.render.bind(___assertThisInitialized_126(n)), n.handleInputChange = n.handleInputChange.bind(___assertThisInitialized_126(n)), n.handleClick = n.handleClick.bind(___assertThisInitialized_126(n)), n } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.setOptions = function (t) { e.prototype.setOptions.call(this, t), this.i18nInit() }, o.i18nInit = function () { this.translator = new _$Translator_199([this.defaultLocale, this.uppy.locale, this.opts.locale]), this.i18n = this.translator.translate.bind(this.translator), this.i18nArray = this.translator.translateArray.bind(this.translator), this.setPluginState() }, o.handleInputChange = function (e) { var t = this; this.uppy.log("[FileInput] Something selected through input..."), _$toArray_229(e.target.files).forEach(function (e) { try { t.uppy.addFile({ source: t.id, name: e.name, type: e.type, data: e }) } catch (err) { err.isRestriction || t.uppy.log(err) } }), e.target.value = null }, o.handleClick = function (e) { this.input.click() }, o.render = function (e) { var t = this, r = this.uppy.opts.restrictions, n = r.allowedFileTypes ? r.allowedFileTypes.join(",") : null; return __h_126("div", { class: "uppy-Root uppy-FileInput-container" }, __h_126("input", { class: "uppy-FileInput-input", style: this.opts.pretty && { width: "0.1px", height: "0.1px", opacity: 0, overflow: "hidden", position: "absolute", zIndex: -1 }, type: "file", name: this.opts.inputName, onchange: this.handleInputChange, multiple: 1 !== r.maxNumberOfFiles, accept: n, ref: function (e) { t.input = e } }), this.opts.pretty && __h_126("button", { class: "uppy-FileInput-btn", type: "button", onclick: this.handleClick }, this.i18n("chooseFiles"))) }, o.install = function () { var e = this.opts.target; e && this.mount(e, this) }, o.uninstall = function () { this.unmount() }, n }(__Plugin_126), ___class_126.VERSION = _$package_127.version, ___temp_126), _$package_143 = { version: "1.3.2" }, ___class_142, ___temp_142; function ___extends_142() { return (___extends_142 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } var __Plugin_142 = _$lib_93.Plugin, __h_142 = _$preact_53.h, _$lib_142 = (___temp_142 = ___class_142 = function (e) { var t, r; function n(t, r) { var n; return (n = e.call(this, t, r) || this).id = n.opts.id || "ProgressBar", n.title = "Progress Bar", n.type = "progressindicator", n.opts = ___extends_142({}, { target: "body", replaceTargetContent: !1, fixed: !1, hideAfterFinish: !0 }, r), n.render = n.render.bind(function (e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e }(n)), n } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.render = function (e) { var t = e.totalProgress || 0, r = 100 === t && this.opts.hideAfterFinish; return __h_142("div", { class: "uppy uppy-ProgressBar", style: { position: this.opts.fixed ? "fixed" : "initial" }, "aria-hidden": r }, __h_142("div", { class: "uppy-ProgressBar-inner", style: { width: t + "%" } }), __h_142("div", { class: "uppy-ProgressBar-percentage" }, t)) }, o.install = function () { var e = this.opts.target; e && this.mount(e, this) }, o.uninstall = function () { this.unmount() }, n }(__Plugin_142), ___class_142.VERSION = _$package_143.version, ___temp_142), _$package_125 = { version: "1.3.3" }, ___class_124, ___temp_124; function ___assertThisInitialized_124(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } var __Plugin_124 = _$lib_93.Plugin, __Provider_124 = _$lib_89.Provider, __h_124 = _$preact_53.h, _$lib_124 = (___temp_124 = ___class_124 = function (e) { var t, r; function n(t, r) { var n; return (n = e.call(this, t, r) || this).id = n.opts.id || "Dropbox", __Provider_124.initPlugin(___assertThisInitialized_124(n), r), n.title = n.opts.title || "Dropbox", n.icon = function () { return __h_124("svg", { "aria-hidden": "true", focusable: "false", width: "128", height: "128", viewBox: "0 0 128 128" }, __h_124("path", { d: "M31.997 11L64 31.825 31.997 52.651 0 31.825 31.997 11zM96 11l32 20.825-32 20.826-32-20.826L96 11zM0 73.476l31.997-20.825L64 73.476 31.997 94.302 0 73.476zm96-20.825l32 20.825-32 20.826-32-20.826 32-20.825zm-64.508 48.254l32.003-20.826 31.997 20.826-31.997 20.825-32.003-20.825z", fill: "#0260FF", "fill-rule": "nonzero" })) }, n.provider = new __Provider_124(t, { companionUrl: n.opts.companionUrl, companionHeaders: n.opts.companionHeaders || n.opts.serverHeaders, storage: n.opts.storage, provider: "dropbox", pluginId: n.id }), n.onFirstRender = n.onFirstRender.bind(___assertThisInitialized_124(n)), n.render = n.render.bind(___assertThisInitialized_124(n)), n } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.install = function () { this.view = new _$lib_155(this, { provider: this.provider }), this.setPluginState({ authenticated: !1, files: [], folders: [], directories: [], activeRow: -1, filterInput: "", isSearchVisible: !1 }); var e = this.opts.target; e && this.mount(e, this) }, o.uninstall = function () { this.view.tearDown(), this.unmount() }, o.onFirstRender = function () { return this.view.getFolder() }, o.render = function (e) { return this.view.render(e) }, n }(__Plugin_124), ___class_124.VERSION = _$package_125.version, ___temp_124), _$DriveProviderViews_135 = function (e) { var t, r; function n() { return e.apply(this, arguments) || this } return r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r, n.prototype.toggleCheckbox = function (t, r) { t.stopPropagation(), t.preventDefault(), r.custom.isTeamDrive || r.custom.isSharedDrive || e.prototype.toggleCheckbox.call(this, t, r) }, n }(_$lib_155), _$package_137 = { version: "1.3.3" }, ___class_136, ___temp_136; function ___assertThisInitialized_136(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } var __Plugin_136 = _$lib_93.Plugin, __Provider_136 = _$lib_89.Provider, __h_136 = _$preact_53.h, _$lib_136 = (___temp_136 = ___class_136 = function (e) { var t, r; function n(t, r) { var n; return (n = e.call(this, t, r) || this).id = n.opts.id || "GoogleDrive", n.title = n.opts.title || "Google Drive", __Provider_136.initPlugin(___assertThisInitialized_136(n), r), n.title = n.opts.title || "Google Drive", n.icon = function () { return __h_136("svg", { "aria-hidden": "true", focusable: "false", width: "18px", height: "16px", viewBox: "0 0 18 16", version: "1.1" }, __h_136("g", { "fill-rule": "evenodd" }, __h_136("polygon", { fill: "#3089FC", points: "6.32475 10.2 18 10.2 14.999625 15.3 3.324375 15.3" }), __h_136("polygon", { fill: "#00A85D", points: "3.000375 15.3 0 10.2 5.83875 0.275974026 8.838 5.37597403 5.999625 10.2" }), __h_136("polygon", { fill: "#FFD024", points: "11.838375 9.92402597 5.999625 0 12.000375 0 17.839125 9.92402597" }))) }, n.provider = new __Provider_136(t, { companionUrl: n.opts.companionUrl, companionHeaders: n.opts.companionHeaders || n.opts.serverHeaders, storage: n.opts.storage, provider: "drive", authProvider: "google", pluginId: n.id }), n.onFirstRender = n.onFirstRender.bind(___assertThisInitialized_136(n)), n.render = n.render.bind(___assertThisInitialized_136(n)), n } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.install = function () { this.view = new _$DriveProviderViews_135(this, { provider: this.provider }), this.setPluginState({ authenticated: !1, files: [], folders: [], directories: [], activeRow: -1, filterInput: "", isSearchVisible: !1, hasTeamDrives: !1, teamDrives: [], teamDriveId: "" }); var e = this.opts.target; e && this.mount(e, this) }, o.uninstall = function () { this.view.tearDown(), this.unmount() }, o.onFirstRender = function () { return this.view.getFolder("root", "/") }, o.render = function (e) { return this.view.render(e) }, n }(__Plugin_136), ___class_136.VERSION = _$package_137.version, ___temp_136), _$package_141 = { version: "1.3.3" }, ___class_140, ___temp_140; function ___assertThisInitialized_140(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } var __Plugin_140 = _$lib_93.Plugin, __Provider_140 = _$lib_89.Provider, __h_140 = _$preact_53.h, _$lib_140 = (___temp_140 = ___class_140 = function (e) { var t, r; function n(t, r) { var n; return (n = e.call(this, t, r) || this).id = n.opts.id || "Instagram", __Provider_140.initPlugin(___assertThisInitialized_140(n), r), n.title = n.opts.title || "Instagram", n.icon = function () { return __h_140("svg", { "aria-hidden": "true", focusable: "false", fill: "#DE3573", width: "28", height: "28", viewBox: "0 0 512 512" }, __h_140("path", { d: "M256,49.471c67.266,0,75.233.257,101.8,1.469,24.562,1.121,37.9,5.224,46.778,8.674a78.052,78.052,0,0,1,28.966,18.845,78.052,78.052,0,0,1,18.845,28.966c3.45,8.877,7.554,22.216,8.674,46.778,1.212,26.565,1.469,34.532,1.469,101.8s-0.257,75.233-1.469,101.8c-1.121,24.562-5.225,37.9-8.674,46.778a83.427,83.427,0,0,1-47.811,47.811c-8.877,3.45-22.216,7.554-46.778,8.674-26.56,1.212-34.527,1.469-101.8,1.469s-75.237-.257-101.8-1.469c-24.562-1.121-37.9-5.225-46.778-8.674a78.051,78.051,0,0,1-28.966-18.845,78.053,78.053,0,0,1-18.845-28.966c-3.45-8.877-7.554-22.216-8.674-46.778-1.212-26.564-1.469-34.532-1.469-101.8s0.257-75.233,1.469-101.8c1.121-24.562,5.224-37.9,8.674-46.778A78.052,78.052,0,0,1,78.458,78.458a78.053,78.053,0,0,1,28.966-18.845c8.877-3.45,22.216-7.554,46.778-8.674,26.565-1.212,34.532-1.469,101.8-1.469m0-45.391c-68.418,0-77,.29-103.866,1.516-26.815,1.224-45.127,5.482-61.151,11.71a123.488,123.488,0,0,0-44.62,29.057A123.488,123.488,0,0,0,17.3,90.982C11.077,107.007,6.819,125.319,5.6,152.134,4.369,179,4.079,187.582,4.079,256S4.369,333,5.6,359.866c1.224,26.815,5.482,45.127,11.71,61.151a123.489,123.489,0,0,0,29.057,44.62,123.486,123.486,0,0,0,44.62,29.057c16.025,6.228,34.337,10.486,61.151,11.71,26.87,1.226,35.449,1.516,103.866,1.516s77-.29,103.866-1.516c26.815-1.224,45.127-5.482,61.151-11.71a128.817,128.817,0,0,0,73.677-73.677c6.228-16.025,10.486-34.337,11.71-61.151,1.226-26.87,1.516-35.449,1.516-103.866s-0.29-77-1.516-103.866c-1.224-26.815-5.482-45.127-11.71-61.151a123.486,123.486,0,0,0-29.057-44.62A123.487,123.487,0,0,0,421.018,17.3C404.993,11.077,386.681,6.819,359.866,5.6,333,4.369,324.418,4.079,256,4.079h0Z" }), __h_140("path", { d: "M256,126.635A129.365,129.365,0,1,0,385.365,256,129.365,129.365,0,0,0,256,126.635Zm0,213.338A83.973,83.973,0,1,1,339.974,256,83.974,83.974,0,0,1,256,339.973Z" }), __h_140("circle", { cx: "390.476", cy: "121.524", r: "30.23" })) }, n.provider = new __Provider_140(t, { companionUrl: n.opts.companionUrl, companionHeaders: n.opts.companionHeaders || n.opts.serverHeaders, storage: n.opts.storage, provider: "instagram", authProvider: "instagram", pluginId: n.id }), n.onFirstRender = n.onFirstRender.bind(___assertThisInitialized_140(n)), n.render = n.render.bind(___assertThisInitialized_140(n)), n } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.install = function () { this.view = new _$lib_155(this, { provider: this.provider, viewType: "grid", showTitles: !1, showFilter: !1, showBreadcrumbs: !1 }), this.setPluginState({ authenticated: !1, files: [], folders: [], directories: [], activeRow: -1, filterInput: "", isSearchVisible: !1 }); var e = this.opts.target; e && this.mount(e, this) }, o.uninstall = function () { this.view.tearDown(), this.unmount() }, o.onFirstRender = function () { this.view.getFolder("recent") }, o.render = function (e) { return this.view.render(e) }, n }(__Plugin_140), ___class_140.VERSION = _$package_141.version, ___temp_140); function ___assertThisInitialized_191(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } var __h_191 = _$preact_53.h, UrlUI = function (e) { var t, r; function n(t) { var r; return (r = e.call(this, t) || this).handleKeyPress = r.handleKeyPress.bind(___assertThisInitialized_191(r)), r.handleClick = r.handleClick.bind(___assertThisInitialized_191(r)), r } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.componentDidMount = function () { this.input.value = "" }, o.handleKeyPress = function (e) { 13 === e.keyCode && this.props.addFile(this.input.value) }, o.handleClick = function () { this.props.addFile(this.input.value) }, o.render = function () { var e = this; return __h_191("div", { class: "uppy-Url" }, __h_191("input", { class: "uppy-u-reset uppy-c-textInput uppy-Url-input", type: "text", "aria-label": this.props.i18n("enterUrlToImport"), placeholder: this.props.i18n("enterUrlToImport"), onkeyup: this.handleKeyPress, ref: function (t) { e.input = t }, "data-uppy-super-focusable": !0 }), __h_191("button", { class: "uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Url-importButton", type: "button", onclick: this.handleClick }, this.props.i18n("import"))) }, n }(_$preact_53.Component), _$UrlUI_191 = UrlUI, _$forEachDroppedOrPastedUrl_193 = function (e, t, r) { var n, o = _$toArray_229(e.items); switch (t) { case "paste": if (o.some(function (e) { return "file" === e.kind })) return; n = o.filter(function (e) { return "string" === e.kind && "text/plain" === e.type }); break; case "drop": n = o.filter(function (e) { return "string" === e.kind && "text/uri-list" === e.type }); break; default: throw new Error("isDropOrPaste must be either 'drop' or 'paste', but it's " + t) }n.forEach(function (e) { e.getAsString(function (e) { return r(e) }) }) }, _$package_194 = { version: "1.4.0" }, ___class_192, ___temp_192; function ___extends_192() { return (___extends_192 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } function ___assertThisInitialized_192(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } var __Plugin_192 = _$lib_93.Plugin, __h_192 = _$preact_53.h, __RequestClient_192 = _$lib_89.RequestClient; function UrlIcon() { return __h_192("svg", { "aria-hidden": "true", focusable: "false", width: "23", height: "23", viewBox: "0 0 23 23" }, __h_192("path", { d: "M20.485 11.236l-2.748 2.737c-.184.182-.367.365-.642.547-1.007.73-2.107 1.095-3.298 1.095-1.65 0-3.298-.73-4.398-2.19-.275-.365-.183-1.003.183-1.277.367-.273 1.008-.182 1.283.183 1.191 1.642 3.482 1.915 5.13.73a.714.714 0 0 0 .367-.365l2.75-2.737c1.373-1.46 1.373-3.74-.093-5.108a3.72 3.72 0 0 0-5.13 0L12.33 6.4a.888.888 0 0 1-1.283 0 .88.88 0 0 1 0-1.277l1.558-1.55a5.38 5.38 0 0 1 7.605 0c2.29 2.006 2.382 5.564.274 7.662zm-8.979 6.294L9.95 19.081a3.72 3.72 0 0 1-5.13 0c-1.467-1.368-1.467-3.74-.093-5.108l2.75-2.737.366-.365c.824-.547 1.74-.82 2.748-.73 1.008.183 1.833.639 2.382 1.46.275.365.917.456 1.283.182.367-.273.458-.912.183-1.277-.916-1.186-2.199-1.915-3.573-2.098-1.374-.273-2.84.091-4.031 1.004l-.55.547-2.749 2.737c-2.107 2.189-2.015 5.655.092 7.753C4.727 21.453 6.101 22 7.475 22c1.374 0 2.749-.547 3.848-1.55l1.558-1.551a.88.88 0 0 0 0-1.278c-.367-.364-1.008-.456-1.375-.09z", fill: "#FF814F", "fill-rule": "nonzero" })) } var _$lib_192 = (___temp_192 = ___class_192 = function (e) { var t, r; function n(t, r) { var n; if ((n = e.call(this, t, r) || this).id = n.opts.id || "Url", n.title = n.opts.title || "Link", n.type = "acquirer", n.icon = function () { return __h_192(UrlIcon, null) }, n.defaultLocale = { strings: { import: "Import", enterUrlToImport: "Enter URL to import a file", failedToFetch: "Companion failed to fetch this URL, please make sure it\u2019s correct", enterCorrectUrl: "Incorrect URL: Please make sure you are entering a direct link to a file" } }, n.opts = ___extends_192({}, {}, {}, r), n.i18nInit(), n.hostname = n.opts.companionUrl, !n.hostname) throw new Error("Companion hostname is required, please consult https://uppy.io/docs/companion"); return n.getMeta = n.getMeta.bind(___assertThisInitialized_192(n)), n.addFile = n.addFile.bind(___assertThisInitialized_192(n)), n.handleRootDrop = n.handleRootDrop.bind(___assertThisInitialized_192(n)), n.handleRootPaste = n.handleRootPaste.bind(___assertThisInitialized_192(n)), n.client = new __RequestClient_192(t, { companionUrl: n.opts.companionUrl, companionHeaders: n.opts.companionHeaders || n.opts.serverHeaders }), n } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.setOptions = function (t) { e.prototype.setOptions.call(this, t), this.i18nInit() }, o.i18nInit = function () { this.translator = new _$Translator_199([this.defaultLocale, this.uppy.locale, this.opts.locale]), this.i18n = this.translator.translate.bind(this.translator), this.i18nArray = this.translator.translateArray.bind(this.translator), this.setPluginState() }, o.getFileNameFromUrl = function (e) { return e.substring(e.lastIndexOf("/") + 1) }, o.checkIfCorrectURL = function (e) { if (!e) return !1; var t = e.match(/^([a-z0-9]+):\/\//)[1]; return "http" === t || "https" === t }, o.addProtocolToURL = function (e) { return /^[a-z0-9]+:\/\//.test(e) ? e : "http://" + e }, o.getMeta = function (e) { var t = this; return this.client.post("url/meta", { url: e }).then(function (e) { if (e.error) throw t.uppy.log("[URL] Error:"), t.uppy.log(e.error), new Error("Failed to fetch the file"); return e }) }, o.addFile = function (e) { var t = this; return e = this.addProtocolToURL(e), this.checkIfCorrectURL(e) ? this.getMeta(e).then(function (r) { return { source: t.id, name: t.getFileNameFromUrl(e), type: r.type, data: { size: r.size }, isRemote: !0, body: { url: e }, remote: { companionUrl: t.opts.companionUrl, url: t.hostname + "/url/get", body: { fileId: e, url: e }, providerOptions: t.client.opts } } }).then(function (e) { t.uppy.log("[Url] Adding remote file"); try { t.uppy.addFile(e) } catch (err) { err.isRestriction || t.uppy.log(err) } }).catch(function (e) { t.uppy.log(e), t.uppy.info({ message: t.i18n("failedToFetch"), details: e }, "error", 4e3) }) : (this.uppy.log("[URL] Incorrect URL entered: " + e), void this.uppy.info(this.i18n("enterCorrectUrl"), "error", 4e3)) }, o.handleRootDrop = function (e) { var t = this; _$forEachDroppedOrPastedUrl_193(e.dataTransfer, "drop", function (e) { t.uppy.log("[URL] Adding file from dropped url: " + e), t.addFile(e) }) }, o.handleRootPaste = function (e) { var t = this; _$forEachDroppedOrPastedUrl_193(e.clipboardData, "paste", function (e) { t.uppy.log("[URL] Adding file from pasted url: " + e), t.addFile(e) }) }, o.render = function (e) { return __h_192(_$UrlUI_191, { i18n: this.i18n, addFile: this.addFile }) }, o.install = function () { var e = this.opts.target; e && this.mount(e, this) }, o.uninstall = function () { this.unmount() }, n }(__Plugin_192), ___class_192.VERSION = _$package_194.version, ___temp_192), mimeToExtensions = { "video/ogg": "ogv", "audio/ogg": "ogg", "video/webm": "webm", "audio/webm": "webm", "video/x-matroska": "mkv", "video/mp4": "mp4", "audio/mp3": "mp3" }, _$getFileTypeExtension_214 = function (e) { return e = e.replace(/;.*$/, ""), mimeToExtensions[e] || null }, _$canvasToBlob_200 = function (e, t, r) { return e.toBlob ? new Promise(function (n) { e.toBlob(n, t, r) }) : Promise.resolve().then(function () { return _$dataURItoBlob_201(e.toDataURL(t, r), {}) }) }, _$supportsMediaRecorder_236 = function () { return "function" == typeof MediaRecorder && !!MediaRecorder.prototype && "function" == typeof MediaRecorder.prototype.start }, __h_230 = _$preact_53.h, _$CameraIcon_230 = function (e) { return __h_230("svg", { "aria-hidden": "true", focusable: "false", fill: "#0097DC", width: "66", height: "55", viewBox: "0 0 66 55" }, __h_230("path", { d: "M57.3 8.433c4.59 0 8.1 3.51 8.1 8.1v29.7c0 4.59-3.51 8.1-8.1 8.1H8.7c-4.59 0-8.1-3.51-8.1-8.1v-29.7c0-4.59 3.51-8.1 8.1-8.1h9.45l4.59-7.02c.54-.54 1.35-1.08 2.16-1.08h16.2c.81 0 1.62.54 2.16 1.08l4.59 7.02h9.45zM33 14.64c-8.62 0-15.393 6.773-15.393 15.393 0 8.62 6.773 15.393 15.393 15.393 8.62 0 15.393-6.773 15.393-15.393 0-8.62-6.773-15.393-15.393-15.393zM33 40c-5.648 0-9.966-4.319-9.966-9.967 0-5.647 4.318-9.966 9.966-9.966s9.966 4.319 9.966 9.966C42.966 35.681 38.648 40 33 40z", "fill-rule": "evenodd" })) }, __h_234 = _$preact_53.h, _$SnapshotButton_234 = function (e) { var t = e.onSnapshot, r = e.i18n; return __h_234("button", { class: "uppy-u-reset uppy-c-btn uppy-Webcam-button uppy-Webcam-button--picture", type: "button", title: r("takePicture"), "aria-label": r("takePicture"), onclick: t, "data-uppy-super-focusable": !0 }, _$CameraIcon_230()) }, __h_233 = _$preact_53.h, _$RecordButton_233 = function (e) { var t = e.recording, r = e.onStartRecording, n = e.onStopRecording, o = e.i18n; return t ? __h_233("button", { class: "uppy-u-reset uppy-c-btn uppy-Webcam-button uppy-Webcam-button--video", type: "button", title: o("stopRecording"), "aria-label": o("stopRecording"), onclick: n, "data-uppy-super-focusable": !0 }, __h_233("svg", { "aria-hidden": "true", focusable: "false", class: "UppyIcon", width: "100", height: "100", viewBox: "0 0 100 100" }, __h_233("rect", { x: "15", y: "15", width: "70", height: "70" }))) : __h_233("button", { class: "uppy-u-reset uppy-c-btn uppy-Webcam-button uppy-Webcam-button--video", type: "button", title: o("startRecording"), "aria-label": o("startRecording"), onclick: r, "data-uppy-super-focusable": !0 }, __h_233("svg", { "aria-hidden": "true", focusable: "false", class: "UppyIcon", width: "100", height: "100", viewBox: "0 0 100 100" }, __h_233("circle", { cx: "50", cy: "50", r: "40" }))) }, __h_231 = _$preact_53.h, __Component_231 = _$preact_53.Component; function isModeAvailable(e, t) { return -1 !== e.indexOf(t) } var CameraScreen = function (e) { var t, r; function n() { return e.apply(this, arguments) || this } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.componentDidMount = function () { this.props.onFocus() }, o.componentWillUnmount = function () { this.props.onStop() }, o.render = function () { var e = this.props.supportsRecording && (isModeAvailable(this.props.modes, "video-only") || isModeAvailable(this.props.modes, "audio-only") || isModeAvailable(this.props.modes, "video-audio")), t = isModeAvailable(this.props.modes, "picture"); return __h_231("div", { class: "uppy uppy-Webcam-container" }, __h_231("div", { class: "uppy-Webcam-videoContainer" }, __h_231("video", { class: "uppy-Webcam-video " + (this.props.mirror ? "uppy-Webcam-video--mirrored" : ""), autoplay: !0, muted: !0, playsinline: !0, srcObject: this.props.src || "" })), __h_231("div", { class: "uppy-Webcam-buttonContainer" }, t ? _$SnapshotButton_234(this.props) : null, " ", e ? _$RecordButton_233(this.props) : null)) }, n }(__Component_231), _$CameraScreen_231 = CameraScreen, __h_232 = _$preact_53.h, _$PermissionsScreen_232 = function (e) { return __h_232("div", { class: "uppy-Webcam-permissons" }, __h_232("div", { class: "uppy-Webcam-permissonsIcon" }, e.icon()), __h_232("h1", { class: "uppy-Webcam-title" }, e.i18n("allowAccessTitle")), __h_232("p", null, e.i18n("allowAccessDescription"))) }, _$package_237 = { version: "1.4.0" }, ___class_235, ___temp_235; function ___extends_235() { return (___extends_235 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } function ___assertThisInitialized_235(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } var __h_235 = _$preact_53.h, __Plugin_235 = _$lib_93.Plugin, _$lib_235 = (___temp_235 = ___class_235 = function (e) { var t, r; function n(t, r) { var n; (n = e.call(this, t, r) || this).mediaDevices = function () { if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) return navigator.mediaDevices; var e = navigator.mozGetUserMedia || navigator.webkitGetUserMedia; return e ? { getUserMedia: function (t) { return new Promise(function (r, n) { e.call(navigator, t, r, n) }) } } : null }(), n.supportsUserMedia = !!n.mediaDevices, n.protocol = location.protocol.match(/https/i) ? "https" : "http", n.id = n.opts.id || "Webcam", n.title = n.opts.title || "Camera", n.type = "acquirer", n.icon = _$CameraIcon_230, n.defaultLocale = { strings: { smile: "Smile!", takePicture: "Take a picture", startRecording: "Begin video recording", stopRecording: "Stop video recording", allowAccessTitle: "Please allow access to your camera", allowAccessDescription: "In order to take pictures or record video with your camera, please allow camera access for this site." } }; var o = { onBeforeSnapshot: function () { return Promise.resolve() }, countdown: !1, modes: ["video-audio", "video-only", "audio-only", "picture"], mirror: !0, facingMode: "user", preferredVideoMimeType: null }; return n.opts = ___extends_235({}, o, {}, r), n.i18nInit(), n.install = n.install.bind(___assertThisInitialized_235(n)), n.setPluginState = n.setPluginState.bind(___assertThisInitialized_235(n)), n.render = n.render.bind(___assertThisInitialized_235(n)), n.start = n.start.bind(___assertThisInitialized_235(n)), n.stop = n.stop.bind(___assertThisInitialized_235(n)), n.takeSnapshot = n.takeSnapshot.bind(___assertThisInitialized_235(n)), n.startRecording = n.startRecording.bind(___assertThisInitialized_235(n)), n.stopRecording = n.stopRecording.bind(___assertThisInitialized_235(n)), n.oneTwoThreeSmile = n.oneTwoThreeSmile.bind(___assertThisInitialized_235(n)), n.focus = n.focus.bind(___assertThisInitialized_235(n)), n.webcamActive = !1, n.opts.countdown && (n.opts.onBeforeSnapshot = n.oneTwoThreeSmile), n } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.setOptions = function (t) { e.prototype.setOptions.call(this, t), this.i18nInit() }, o.i18nInit = function () { this.translator = new _$Translator_199([this.defaultLocale, this.uppy.locale, this.opts.locale]), this.i18n = this.translator.translate.bind(this.translator), this.i18nArray = this.translator.translateArray.bind(this.translator), this.setPluginState() }, o.isSupported = function () { return !!this.mediaDevices }, o.getConstraints = function () { return { audio: -1 !== this.opts.modes.indexOf("video-audio") || -1 !== this.opts.modes.indexOf("audio-only"), video: !(-1 === this.opts.modes.indexOf("video-audio") && -1 === this.opts.modes.indexOf("video-only") && -1 === this.opts.modes.indexOf("picture")) && { facingMode: this.opts.facingMode } } }, o.start = function () { var e = this; if (!this.isSupported()) return Promise.reject(new Error("Webcam access not supported")); this.webcamActive = !0; var t = this.getConstraints(); return this.mediaDevices.getUserMedia(t).then(function (t) { e.stream = t, e.setPluginState({ cameraReady: !0 }) }).catch(function (t) { e.setPluginState({ cameraError: t }) }) }, o.startRecording = function () { var e = this, t = {}, r = this.opts.preferredVideoMimeType; r && MediaRecorder.isTypeSupported(r) && _$getFileTypeExtension_214(r) && (t.mimeType = r), this.recorder = new MediaRecorder(this.stream, t), this.recordingChunks = [], this.recorder.addEventListener("dataavailable", function (t) { e.recordingChunks.push(t.data) }), this.recorder.start(), this.setPluginState({ isRecording: !0 }) }, o.stopRecording = function () { var e = this; return new Promise(function (t, r) { e.recorder.addEventListener("stop", function () { t() }), e.recorder.stop() }).then(function () { return e.setPluginState({ isRecording: !1 }), e.getVideo() }).then(function (t) { try { e.uppy.addFile(t) } catch (err) { err.isRestriction || e.uppy.log(err) } }).then(function () { e.recordingChunks = null, e.recorder = null }, function (t) { throw e.recordingChunks = null, e.recorder = null, t }) }, o.stop = function () { this.stream.getAudioTracks().forEach(function (e) { e.stop() }), this.stream.getVideoTracks().forEach(function (e) { e.stop() }), this.webcamActive = !1, this.stream = null }, o.getVideoElement = function () { return this.el.querySelector(".uppy-Webcam-video") }, o.oneTwoThreeSmile = function () { var e = this; return new Promise(function (t, r) { var n = e.opts.countdown, o = setInterval(function () { if (!e.webcamActive) return clearInterval(o), e.captureInProgress = !1, r(new Error("Webcam is not active")); n > 0 ? (e.uppy.info(n + "...", "warning", 800), n--) : (clearInterval(o), e.uppy.info(e.i18n("smile"), "success", 1500), setTimeout(function () { return t() }, 1500)) }, 1e3) }) }, o.takeSnapshot = function () { var e = this; this.captureInProgress || (this.captureInProgress = !0, this.opts.onBeforeSnapshot().catch(function (t) { var r = "object" == typeof t ? t.message : t; return e.uppy.info(r, "error", 5e3), Promise.reject(new Error("onBeforeSnapshot: " + r)) }).then(function () { return e.getImage() }).then(function (t) { e.captureInProgress = !1; try { e.uppy.addFile(t) } catch (err) { err.isRestriction || e.uppy.log(err) } }, function (t) { throw e.captureInProgress = !1, t })) }, o.getImage = function () { var e = this, t = this.getVideoElement(); if (!t) return Promise.reject(new Error("No video element found, likely due to the Webcam tab being closed.")); var r = "cam-" + Date.now() + ".jpg", n = t.videoWidth, o = t.videoHeight, i = document.createElement("canvas"); return i.width = n, i.height = o, i.getContext("2d").drawImage(t, 0, 0), _$canvasToBlob_200(i, "image/jpeg").then(function (t) { return { source: e.id, name: r, data: new Blob([t], { type: "image/jpeg" }), type: "image/jpeg" } }) }, o.getVideo = function () { var e = this.recordingChunks[0].type, t = _$getFileTypeExtension_214(e); if (!t) return Promise.reject(new Error('Could not retrieve recording: Unsupported media type "' + e + '"')); var r = "webcam-" + Date.now() + "." + t, n = new Blob(this.recordingChunks, { type: e }), o = { source: this.id, name: r, data: new Blob([n], { type: e }), type: e }; return Promise.resolve(o) }, o.focus = function () { var e = this; this.opts.countdown && setTimeout(function () { e.uppy.info(e.i18n("smile"), "success", 1500) }, 1e3) }, o.render = function (e) { this.webcamActive || this.start(); var t = this.getPluginState(); return t.cameraReady ? __h_235(_$CameraScreen_231, ___extends_235({}, t, { onSnapshot: this.takeSnapshot, onStartRecording: this.startRecording, onStopRecording: this.stopRecording, onFocus: this.focus, onStop: this.stop, i18n: this.i18n, modes: this.opts.modes, supportsRecording: _$supportsMediaRecorder_236(), recording: t.isRecording, mirror: this.opts.mirror, src: this.stream })) : __h_235(_$PermissionsScreen_232, { icon: _$CameraIcon_230, i18n: this.i18n }) }, o.install = function () { this.setPluginState({ cameraReady: !1 }); var e = this.opts.target; e && this.mount(e, this) }, o.uninstall = function () { this.stream && this.stop(), this.unmount() }, n }(__Plugin_235), ___class_235.VERSION = _$package_237.version, ___temp_235), _$requiresPort_56 = function (e, t) { if (t = t.split(":")[0], !(e = +e)) return !1; switch (t) { case "http": case "ws": return 80 !== e; case "https": case "wss": return 443 !== e; case "ftp": return 21 !== e; case "gopher": return 70 !== e; case "file": return !1 }return 0 !== e }, _$querystringify_55 = {}, undef, __has_55 = Object.prototype.hasOwnProperty; function decode(e) { try { return decodeURIComponent(e.replace(/\+/g, " ")) } catch (t) { return null } } _$querystringify_55.stringify = function (e, t) { t = t || ""; var r, n, o = []; for (n in "string" != typeof t && (t = "?"), e) if (__has_55.call(e, n)) { if ((r = e[n]) || null !== r && r !== undef && !isNaN(r) || (r = ""), n = encodeURIComponent(n), r = encodeURIComponent(r), null === n || null === r) continue; o.push(n + "=" + r) } return o.length ? t + o.join("&") : "" }, _$querystringify_55.parse = function (e) { for (var t, r = /([^=?&]+)=?([^&]*)/g, n = {}; t = r.exec(e);) { var o = decode(t[1]), i = decode(t[2]); null === o || null === i || o in n || (n[o] = i) } return n }; var _$urlParse_76 = {}; (function (e) { "use strict"; var t = /^[A-Za-z][A-Za-z0-9+-.]*:\/\//, r = /^([a-z][a-z0-9.+-]*:)?(\/\/)?([\S\s]*)/i, n = new RegExp("^[\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF]+"); function o(e) { return (e || "").toString().replace(n, "") } var i = [["#", "hash"], ["?", "query"], function (e) { return e.replace("\\", "/") }, ["/", "pathname"], ["@", "auth", 1], [NaN, "host", void 0, 1, 1], [/:(\d+)$/, "port", void 0, 1], [NaN, "hostname", void 0, 1, 1]], s = { hash: 1, query: 1 }; function a(r) { var n, o = ("undefined" != typeof window ? window : void 0 !== e ? e : "undefined" != typeof self ? self : {}).location || {}, i = {}, a = typeof (r = r || o); if ("blob:" === r.protocol) i = new u(unescape(r.pathname), {}); else if ("string" === a) for (n in i = new u(r, {}), s) delete i[n]; else if ("object" === a) { for (n in r) n in s || (i[n] = r[n]); void 0 === i.slashes && (i.slashes = t.test(r.href)) } return i } function l(e) { e = o(e); var t = r.exec(e); return { protocol: t[1] ? t[1].toLowerCase() : "", slashes: !!t[2], rest: t[3] } } function u(e, t, r) { if (e = o(e), !(this instanceof u)) return new u(e, t, r); var n, s, c, p, d, _, h = i.slice(), f = typeof t, g = this, m = 0; for ("object" !== f && "string" !== f && (r = t, t = null), r && "function" != typeof r && (r = _$querystringify_55.parse), t = a(t), n = !(s = l(e || "")).protocol && !s.slashes, g.slashes = s.slashes || n && t.slashes, g.protocol = s.protocol || t.protocol || "", e = s.rest, s.slashes || (h[3] = [/(.*)/, "pathname"]); m < h.length; m++)"function" != typeof (p = h[m]) ? (c = p[0], _ = p[1], c != c ? g[_] = e : "string" == typeof c ? ~(d = e.indexOf(c)) && ("number" == typeof p[2] ? (g[_] = e.slice(0, d), e = e.slice(d + p[2])) : (g[_] = e.slice(d), e = e.slice(0, d))) : (d = c.exec(e)) && (g[_] = d[1], e = e.slice(0, d.index)), g[_] = g[_] || n && p[3] && t[_] || "", p[4] && (g[_] = g[_].toLowerCase())) : e = p(e); r && (g.query = r(g.query)), n && t.slashes && "/" !== g.pathname.charAt(0) && ("" !== g.pathname || "" !== t.pathname) && (g.pathname = function (e, t) { if ("" === e) return t; for (var r = (t || "/").split("/").slice(0, -1).concat(e.split("/")), n = r.length, o = r[n - 1], i = !1, s = 0; n--;)"." === r[n] ? r.splice(n, 1) : ".." === r[n] ? (r.splice(n, 1), s++) : s && (0 === n && (i = !0), r.splice(n, 1), s--); return i && r.unshift(""), "." !== o && ".." !== o || r.push(""), r.join("/") }(g.pathname, t.pathname)), _$requiresPort_56(g.port, g.protocol) || (g.host = g.hostname, g.port = ""), g.username = g.password = "", g.auth && (p = g.auth.split(":"), g.username = p[0] || "", g.password = p[1] || ""), g.origin = g.protocol && g.host && "file:" !== g.protocol ? g.protocol + "//" + g.host : "null", g.href = g.toString() } u.prototype = { set: function (e, t, r) { var n = this; switch (e) { case "query": "string" == typeof t && t.length && (t = (r || _$querystringify_55.parse)(t)), n[e] = t; break; case "port": n[e] = t, _$requiresPort_56(t, n.protocol) ? t && (n.host = n.hostname + ":" + t) : (n.host = n.hostname, n[e] = ""); break; case "hostname": n[e] = t, n.port && (t += ":" + n.port), n.host = t; break; case "host": n[e] = t, /:\d+$/.test(t) ? (t = t.split(":"), n.port = t.pop(), n.hostname = t.join(":")) : (n.hostname = t, n.port = ""); break; case "protocol": n.protocol = t.toLowerCase(), n.slashes = !r; break; case "pathname": case "hash": if (t) { var o = "pathname" === e ? "/" : "#"; n[e] = t.charAt(0) !== o ? o + t : t } else n[e] = t; break; default: n[e] = t }for (var s = 0; s < i.length; s++) { var a = i[s]; a[4] && (n[a[1]] = n[a[1]].toLowerCase()) } return n.origin = n.protocol && n.host && "file:" !== n.protocol ? n.protocol + "//" + n.host : "null", n.href = n.toString(), n }, toString: function (e) { e && "function" == typeof e || (e = _$querystringify_55.stringify); var t, r = this, n = r.protocol; n && ":" !== n.charAt(n.length - 1) && (n += ":"); var o = n + (r.slashes ? "//" : ""); return r.username && (o += r.username, r.password && (o += ":" + r.password), o += "@"), o += r.host + r.pathname, (t = "object" == typeof r.query ? e(r.query) : r.query) && (o += "?" !== t.charAt(0) ? "?" + t : t), r.hash && (o += r.hash), o } }, u.extractProtocol = l, u.location = a, u.trimLeft = o, u.qs = _$querystringify_55, _$urlParse_76 = u }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}); var _$RateLimitedQueue_198 = function () { function e(e) { this.limit = "number" != typeof e || 0 === e ? 1 / 0 : e, this.activeRequests = 0, this.queuedHandlers = [] } var t = e.prototype; return t._call = function (e) { var t = this; this.activeRequests += 1; var r, n = !1; try { r = e() } catch (err) { throw this.activeRequests -= 1, err } return { abort: function () { n || (n = !0, t.activeRequests -= 1, r(), t._queueNext()) }, done: function () { n || (n = !0, t.activeRequests -= 1, t._queueNext()) } } }, t._queueNext = function () { var e = this; Promise.resolve().then(function () { e._next() }) }, t._next = function () { if (!(this.activeRequests >= this.limit) && 0 !== this.queuedHandlers.length) { var e = this.queuedHandlers.shift(), t = this._call(e.fn); e.abort = t.abort, e.done = t.done } }, t._queue = function (e) { var t = this, r = { fn: e, abort: function () { t._dequeue(r) }, done: function () { throw new Error("Cannot mark a queued request as done: this indicates a bug") } }; return this.queuedHandlers.push(r), r }, t._dequeue = function (e) { var t = this.queuedHandlers.indexOf(e); -1 !== t && this.queuedHandlers.splice(t, 1) }, t.run = function (e) { return this.activeRequests < this.limit ? this._call(e) : this._queue(e) }, t.wrapPromiseFunction = function (e) { var t = this; return function () { for (var r = arguments.length, n = new Array(r), o = 0; o < r; o++)n[o] = arguments[o]; return new Promise(function (r, o) { var i = t.run(function () { var t, s; try { s = Promise.resolve(e.apply(void 0, n)) } catch (err) { s = Promise.reject(err) } return s.then(function (e) { t ? o(t) : (i.done(), r(e)) }, function (e) { t ? o(t) : (i.done(), o(e)) }), function () { t = new Error("Cancelled") } }) }) } }, e }(), _$emitSocketProgress_202 = _$lodashThrottle_46(function (e, t, r) { var n = t.progress, o = t.bytesUploaded, i = t.bytesTotal; n && (e.uppy.log("Upload progress: " + n), e.uppy.emit("upload-progress", r, { uploader: e, bytesUploaded: o, bytesTotal: i })) }, 300, { leading: !0, trailing: !0 }), _$getSocketHost_215 = function (e) { var t = /^(?:https?:\/\/|\/\/)?(?:[^@\n]+@)?(?:www\.)?([^\n]+)/i.exec(e)[1]; return (/^http:\/\//i.test(e) ? "ws" : "wss") + "://" + t }, _$settle_228 = function (e) { var t = [], r = []; function n(e) { t.push(e) } function o(e) { r.push(e) } return Promise.all(e.map(function (e) { return e.then(n, o) })).then(function () { return { successful: t, failed: r } }) }, _$EventTracker_195 = function () { function e(e) { this._events = [], this._emitter = e } var t = e.prototype; return t.on = function (e, t) { return this._events.push([e, t]), this._emitter.on(e, t) }, t.remove = function () { var e = this; this._events.forEach(function (t) { var r = t[0], n = t[1]; e._emitter.off(r, n) }) }, e }(), ProgressTimeout = function () { function e(e, t) { this._timeout = e, this._onTimedOut = t, this._isDone = !1, this._aliveTimer = null, this._onTimedOut = this._onTimedOut.bind(this) } var t = e.prototype; return t.progress = function () { this._isDone || this._timeout > 0 && (this._aliveTimer && clearTimeout(this._aliveTimer), this._aliveTimer = setTimeout(this._onTimedOut, this._timeout)) }, t.done = function () { this._aliveTimer && (clearTimeout(this._aliveTimer), this._aliveTimer = null), this._isDone = !0 }, e }(), _$ProgressTimeout_197 = ProgressTimeout, _$package_239 = { version: "1.4.0" }, ___class_238, ___temp_238; function ___extends_238() { return (___extends_238 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } var __Plugin_238 = _$lib_93.Plugin, __Provider_238 = _$lib_89.Provider, __RequestClient_238 = _$lib_89.RequestClient, __Socket_238 = _$lib_89.Socket; function buildResponseError(e, t) { return t || (t = new Error("Upload error")), "string" == typeof t && (t = new Error(t)), t instanceof Error || (t = ___extends_238(new Error("Upload error"), { data: t })), t.request = e, t } function setTypeInBlob(e) { return e.data.slice(0, e.data.size, e.meta.type) } var _$lib_238 = (___temp_238 = ___class_238 = function (e) { var t, r; function n(t, r) { var n; (n = e.call(this, t, r) || this).type = "uploader", n.id = n.opts.id || "XHRUpload", n.title = "XHRUpload", n.defaultLocale = { strings: { timedOut: "Upload stalled for %{seconds} seconds, aborting." } }; var o = { formData: !0, fieldName: "files[]", method: "post", metaFields: null, responseUrlFieldName: "url", bundle: !1, headers: {}, timeout: 3e4, limit: 0, withCredentials: !1, responseType: "", getResponseData: function (e, t) { var r = {}; try { r = JSON.parse(e) } catch (err) { console.log(err) } return r }, getResponseError: function (e, t) { return new Error("Upload error") }, validateStatus: function (e, t, r) { return e >= 200 && e < 300 } }; if (n.opts = ___extends_238({}, o, {}, r), n.i18nInit(), n.handleUpload = n.handleUpload.bind(function (e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e }(n)), n.opts.__queue instanceof _$RateLimitedQueue_198 ? n.requests = n.opts.__queue : n.requests = new _$RateLimitedQueue_198(n.opts.limit), n.opts.bundle && !n.opts.formData) throw new Error("`opts.formData` must be true when `opts.bundle` is enabled."); return n.uploaderEvents = Object.create(null), n } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.setOptions = function (t) { e.prototype.setOptions.call(this, t), this.i18nInit() }, o.i18nInit = function () { this.translator = new _$Translator_199([this.defaultLocale, this.uppy.locale, this.opts.locale]), this.i18n = this.translator.translate.bind(this.translator), this.setPluginState() }, o.getOptions = function (e) { var t = this.uppy.getState().xhrUpload, r = ___extends_238({}, this.opts, {}, t || {}, {}, e.xhrUpload || {}, { headers: {} }); return ___extends_238(r.headers, this.opts.headers), t && ___extends_238(r.headers, t.headers), e.xhrUpload && ___extends_238(r.headers, e.xhrUpload.headers), r }, o.addMetadata = function (e, t, r) { (Array.isArray(r.metaFields) ? r.metaFields : Object.keys(t)).forEach(function (r) { e.append(r, t[r]) }) }, o.createFormDataUpload = function (e, t) { var r = new FormData; this.addMetadata(r, e.meta, t); var n = setTypeInBlob(e); return e.name ? r.append(t.fieldName, n, e.meta.name) : r.append(t.fieldName, n), r }, o.createBundledUpload = function (e, t) { var r = this, n = new FormData, o = this.uppy.getState().meta; return this.addMetadata(n, o, t), e.forEach(function (e) { var t = r.getOptions(e), o = setTypeInBlob(e); e.name ? n.append(t.fieldName, o, e.name) : n.append(t.fieldName, o) }), n }, o.createBareUpload = function (e, t) { return e.data }, o.upload = function (e, t, r) { var n = this, o = this.getOptions(e); return this.uppy.log("uploading " + t + " of " + r), new Promise(function (t, r) { n.uppy.emit("upload-started", e); var i = o.formData ? n.createFormDataUpload(e, o) : n.createBareUpload(e, o), s = new _$ProgressTimeout_197(o.timeout, function () { a.abort(); var t = new Error(n.i18n("timedOut", { seconds: Math.ceil(o.timeout / 1e3) })); n.uppy.emit("upload-error", e, t), r(t) }), a = new XMLHttpRequest; n.uploaderEvents[e.id] = new _$EventTracker_195(n.uppy); var l = _$cuid_13(); a.upload.addEventListener("loadstart", function (e) { n.uppy.log("[XHRUpload] " + l + " started") }), a.upload.addEventListener("progress", function (t) { n.uppy.log("[XHRUpload] " + l + " progress: " + t.loaded + " / " + t.total), s.progress(), t.lengthComputable && n.uppy.emit("upload-progress", e, { uploader: n, bytesUploaded: t.loaded, bytesTotal: t.total }) }), a.addEventListener("load", function (i) { if (n.uppy.log("[XHRUpload] " + l + " finished"), s.done(), u.done(), n.uploaderEvents[e.id] && (n.uploaderEvents[e.id].remove(), n.uploaderEvents[e.id] = null), o.validateStatus(i.target.status, a.responseText, a)) { var c = o.getResponseData(a.responseText, a), p = c[o.responseUrlFieldName], d = { status: i.target.status, body: c, uploadURL: p }; return n.uppy.emit("upload-success", e, d), p && n.uppy.log("Download " + e.name + " from " + p), t(e) } var _ = o.getResponseData(a.responseText, a), h = buildResponseError(a, o.getResponseError(a.responseText, a)), f = { status: i.target.status, body: _ }; return n.uppy.emit("upload-error", e, h, f), r(h) }), a.addEventListener("error", function (t) { n.uppy.log("[XHRUpload] " + l + " errored"), s.done(), u.done(), n.uploaderEvents[e.id] && (n.uploaderEvents[e.id].remove(), n.uploaderEvents[e.id] = null); var i = buildResponseError(a, o.getResponseError(a.responseText, a)); return n.uppy.emit("upload-error", e, i), r(i) }), a.open(o.method.toUpperCase(), o.endpoint, !0), a.withCredentials = o.withCredentials, "" !== o.responseType && (a.responseType = o.responseType), Object.keys(o.headers).forEach(function (e) { a.setRequestHeader(e, o.headers[e]) }); var u = n.requests.run(function () { return a.send(i), function () { s.done(), a.abort() } }); n.onFileRemove(e.id, function () { u.abort(), r(new Error("File removed")) }), n.onCancelAll(e.id, function () { u.abort(), r(new Error("Upload cancelled")) }) }) }, o.uploadRemote = function (e, t, r) { var n = this, o = this.getOptions(e); return new Promise(function (t, r) { n.uppy.emit("upload-started", e); var i = {}; (Array.isArray(o.metaFields) ? o.metaFields : Object.keys(e.meta)).forEach(function (t) { i[t] = e.meta[t] }), new (e.remote.providerOptions.provider ? __Provider_238 : __RequestClient_238)(n.uppy, e.remote.providerOptions).post(e.remote.url, ___extends_238({}, e.remote.body, { endpoint: o.endpoint, size: e.data.size, fieldname: o.fieldName, metadata: i, headers: o.headers })).then(function (i) { var s = i.token, a = _$getSocketHost_215(e.remote.companionUrl), l = new __Socket_238({ target: a + "/api/" + s, autoOpen: !1 }); n.uploaderEvents[e.id] = new _$EventTracker_195(n.uppy), n.onFileRemove(e.id, function () { l.send("pause", {}), u.abort(), t("upload " + e.id + " was removed") }), n.onCancelAll(e.id, function () { l.send("pause", {}), u.abort(), t("upload " + e.id + " was canceled") }), n.onRetry(e.id, function () { l.send("pause", {}), l.send("resume", {}) }), n.onRetryAll(e.id, function () { l.send("pause", {}), l.send("resume", {}) }), l.on("progress", function (t) { return _$emitSocketProgress_202(n, t, e) }), l.on("success", function (r) { var i = o.getResponseData(r.response.responseText, r.response), s = i[o.responseUrlFieldName], a = { status: r.response.status, body: i, uploadURL: s }; return n.uppy.emit("upload-success", e, a), u.done(), n.uploaderEvents[e.id] && (n.uploaderEvents[e.id].remove(), n.uploaderEvents[e.id] = null), t() }), l.on("error", function (t) { var i = t.response, s = i ? o.getResponseError(i.responseText, i) : ___extends_238(new Error(t.error.message), { cause: t.error }); n.uppy.emit("upload-error", e, s), u.done(), n.uploaderEvents[e.id] && (n.uploaderEvents[e.id].remove(), n.uploaderEvents[e.id] = null), r(s) }); var u = n.requests.run(function () { return l.open(), e.isPaused && l.send("pause", {}), function () { return l.close() } }) }) }) }, o.uploadBundle = function (e) { var t = this; return new Promise(function (r, n) { var o = t.opts.endpoint, i = t.opts.method, s = t.uppy.getState().xhrUpload, a = t.createBundledUpload(e, ___extends_238({}, t.opts, {}, s || {})), l = new XMLHttpRequest, u = new _$ProgressTimeout_197(t.opts.timeout, function () { l.abort(); var e = new Error(t.i18n("timedOut", { seconds: Math.ceil(t.opts.timeout / 1e3) })); c(e), n(e) }), c = function (r) { e.forEach(function (e) { t.uppy.emit("upload-error", e, r) }) }; l.upload.addEventListener("loadstart", function (e) { t.uppy.log("[XHRUpload] started uploading bundle"), u.progress() }), l.upload.addEventListener("progress", function (r) { u.progress(), r.lengthComputable && e.forEach(function (e) { t.uppy.emit("upload-progress", e, { uploader: t, bytesUploaded: r.loaded / r.total * e.size, bytesTotal: e.size }) }) }), l.addEventListener("load", function (o) { if (u.done(), t.opts.validateStatus(o.target.status, l.responseText, l)) { var i = t.opts.getResponseData(l.responseText, l), s = { status: o.target.status, body: i }; return e.forEach(function (e) { t.uppy.emit("upload-success", e, s) }), r() } var a = t.opts.getResponseError(l.responseText, l) || new Error("Upload error"); return a.request = l, c(a), n(a) }), l.addEventListener("error", function (e) { u.done(); var r = t.opts.getResponseError(l.responseText, l) || new Error("Upload error"); return c(r), n(r) }), t.uppy.on("cancel-all", function () { u.done(), l.abort() }), l.open(i.toUpperCase(), o, !0), l.withCredentials = t.opts.withCredentials, "" !== t.opts.responseType && (l.responseType = t.opts.responseType), Object.keys(t.opts.headers).forEach(function (e) { l.setRequestHeader(e, t.opts.headers[e]) }), l.send(a), e.forEach(function (e) { t.uppy.emit("upload-started", e) }) }) }, o.uploadFiles = function (e) { var t = this, r = e.map(function (r, n) { var o = parseInt(n, 10) + 1, i = e.length; return r.error ? Promise.reject(new Error(r.error)) : r.isRemote ? t.uploadRemote(r, o, i) : t.upload(r, o, i) }); return _$settle_228(r) }, o.onFileRemove = function (e, t) { this.uploaderEvents[e].on("file-removed", function (r) { e === r.id && t(r.id) }) }, o.onRetry = function (e, t) { this.uploaderEvents[e].on("upload-retry", function (r) { e === r && t() }) }, o.onRetryAll = function (e, t) { var r = this; this.uploaderEvents[e].on("retry-all", function (n) { r.uppy.getFile(e) && t() }) }, o.onCancelAll = function (e, t) { var r = this; this.uploaderEvents[e].on("cancel-all", function () { r.uppy.getFile(e) && t() }) }, o.handleUpload = function (e) { var t = this; if (0 === e.length) return this.uppy.log("[XHRUpload] No files to upload!"), Promise.resolve(); 0 === this.opts.limit && this.uppy.log("[XHRUpload] When uploading multiple files at once, consider setting the `limit` option (to `10` for example), to limit the number of concurrent uploads, which helps prevent memory and network issues: https://uppy.io/docs/xhr-upload/#limit-0", "warning"), this.uppy.log("[XHRUpload] Uploading..."); var r = e.map(function (e) { return t.uppy.getFile(e) }); if (this.opts.bundle) { if (r.some(function (e) { return e.isRemote })) throw new Error("Can\u2019t upload remote files when bundle: true option is set"); return this.uploadBundle(r) } return this.uploadFiles(r).then(function () { return null }) }, o.install = function () { if (this.opts.bundle) { var e = this.uppy.getState().capabilities; this.uppy.setState({ capabilities: ___extends_238({}, e, { individualCancellation: !1 }) }) } this.uppy.addUploader(this.handleUpload) }, o.uninstall = function () { if (this.opts.bundle) { var e = this.uppy.getState().capabilities; this.uppy.setState({ capabilities: ___extends_238({}, e, { individualCancellation: !0 }) }) } this.uppy.removeUploader(this.handleUpload) }, n }(__Plugin_238), ___class_238.VERSION = _$package_239.version, ___temp_238), _$package_84 = { version: "1.3.3" }, ___class_83, ___temp_83; function ___assertThisInitialized_83(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function ___extends_83() { return (___extends_83 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } var URL_ = "function" == typeof URL ? URL : _$urlParse_76, __Plugin_83 = _$lib_93.Plugin, __RequestClient_83 = _$lib_89.RequestClient; function isXml(e) { var t = e.headers ? e.headers["content-type"] : e.getResponseHeader("Content-Type"); return "string" == typeof t && "application/xml" === t.toLowerCase() } function getXmlValue(e, t) { var r = e.indexOf("<" + t + ">"), n = e.indexOf("</" + t + ">", r); return -1 !== r && -1 !== n ? e.slice(r + t.length + 2, n) : "" } function assertServerError(e) { if (e && e.error) { var t = new Error(e.message); throw ___extends_83(t, e.error), t } return e } var _$lib_83 = (___temp_83 = ___class_83 = function (e) { var t, r; function n(t, r) { var n; (n = e.call(this, t, r) || this).type = "uploader", n.id = n.opts.id || "AwsS3", n.title = "AWS S3", n.defaultLocale = { strings: { preparingUpload: "Preparing upload..." } }; var o = { timeout: 3e4, limit: 0, getUploadParameters: n.getUploadParameters.bind(___assertThisInitialized_83(n)) }; return n.opts = ___extends_83({}, o, {}, r), n.i18nInit(), n.client = new __RequestClient_83(t, r), n.prepareUpload = n.prepareUpload.bind(___assertThisInitialized_83(n)), n.requests = new _$RateLimitedQueue_198(n.opts.limit), n } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.setOptions = function (t) { e.prototype.setOptions.call(this, t), this.i18nInit() }, o.i18nInit = function () { this.translator = new _$Translator_199([this.defaultLocale, this.uppy.locale, this.opts.locale]), this.i18n = this.translator.translate.bind(this.translator), this.setPluginState() }, o.getUploadParameters = function (e) { if (!this.opts.companionUrl) throw new Error("Expected a `companionUrl` option containing a Companion address."); var t = encodeURIComponent(e.meta.name), r = encodeURIComponent(e.meta.type); return this.client.get("s3/params?filename=" + t + "&type=" + r).then(assertServerError) }, o.validateParameters = function (e, t) { if ("object" != typeof t || !t || "string" != typeof t.url || "object" != typeof t.fields && null != t.fields || null != t.method && !/^(put|post)$/i.test(t.method)) { var r = new TypeError("AwsS3: got incorrect result from 'getUploadParameters()' for file '" + e.name + "', expected an object '{ url, method, fields, headers }'.\nSee https://uppy.io/docs/aws-s3/#getUploadParameters-file for more on the expected format."); throw console.error(r), r } return t }, o.prepareUpload = function (e) { var t = this; e.forEach(function (e) { var r = t.uppy.getFile(e); t.uppy.emit("preprocess-progress", r, { mode: "determinate", message: t.i18n("preparingUpload"), value: 0 }) }); var r = this.requests.wrapPromiseFunction(function (e) { return t.opts.getUploadParameters(e) }); return Promise.all(e.map(function (e) { var n = t.uppy.getFile(e); return r(n).then(function (e) { return t.validateParameters(n, e) }).then(function (e) { return t.uppy.emit("preprocess-progress", n, { mode: "determinate", message: t.i18n("preparingUpload"), value: 1 }), e }).catch(function (e) { t.uppy.emit("upload-error", n, e) }) })).then(function (r) { var n = {}; e.forEach(function (e, o) { var i = t.uppy.getFile(e); if (i && !i.error) { var s = r[o], a = s.method, l = void 0 === a ? "post" : a, u = s.url, c = s.fields, p = s.headers, d = { method: l, formData: "post" === l.toLowerCase(), endpoint: u, metaFields: c ? Object.keys(c) : [] }; p && (d.headers = p); var _ = ___extends_83({}, i, { meta: ___extends_83({}, i.meta, {}, c), xhrUpload: d }); n[e] = _ } }); var o = t.uppy.getState().files; t.uppy.setState({ files: ___extends_83({}, o, {}, n) }), e.forEach(function (e) { var r = t.uppy.getFile(e); t.uppy.emit("preprocess-complete", r) }) }) }, o.install = function () { var e = this.uppy.log; this.uppy.addPreProcessor(this.prepareUpload); var t = !1, r = { fieldName: "file", responseUrlFieldName: "location", timeout: this.opts.timeout, __queue: this.requests, responseType: "text", getResponseData: function (r, n) { var o, i; return isXml(n) ? { location: (o = n.responseURL, i = getXmlValue(r, "Location"), new URL_(i, o).toString()), bucket: getXmlValue(r, "Bucket"), key: getXmlValue(r, "Key"), etag: getXmlValue(r, "ETag") } : "POST" === this.method.toUpperCase() ? (t || (e("[AwsS3] No response data found, make sure to set the success_action_status AWS SDK option to 201. See https://uppy.io/docs/aws-s3/#POST-Uploads", "warning"), t = !0), { location: null }) : n.responseURL ? { location: n.responseURL.replace(/\?.*$/, "") } : { location: null } }, getResponseError: function (e, t) { if (isXml(t)) { var r = getXmlValue(e, "Message"); return new Error(r) } } }; this.opts.getResponseData && (r.getResponseData = this.opts.getResponseData), this.uppy.use(_$lib_238, r) }, o.uninstall = function () { var e = this.uppy.getPlugin("XHRUpload"); this.uppy.removePlugin(e), this.uppy.removePreProcessor(this.prepareUpload) }, n }(__Plugin_83), ___class_83.VERSION = _$package_84.version, ___temp_83); function ___extends_80() { return (___extends_80 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } var defaultOptions = { limit: 1, onStart: function () { }, onProgress: function () { }, onPartComplete: function () { }, onSuccess: function () { }, onError: function (e) { throw e } }; function remove(e, t) { var r = e.indexOf(t); -1 !== r && e.splice(r, 1) } var MultipartUploader = function () { function e(e, t) { this.options = ___extends_80({}, defaultOptions, {}, t), this.file = e, this.key = this.options.key || null, this.uploadId = this.options.uploadId || null, this.parts = this.options.parts || [], this.createdPromise = Promise.reject(), this.isPaused = !1, this.chunks = null, this.chunkState = null, this.uploading = [], this._initChunks(), this.createdPromise.catch(function () { }) } var t = e.prototype; return t._initChunks = function () { for (var e = [], t = Math.max(Math.ceil(this.file.size / 1e4), 5242880), r = 0; r < this.file.size; r += t) { var n = Math.min(this.file.size, r + t); e.push(this.file.slice(r, n)) } this.chunks = e, this.chunkState = e.map(function () { return { uploaded: 0, busy: !1, done: !1 } }) }, t._createUpload = function () { var e = this; return this.createdPromise = Promise.resolve().then(function () { return e.options.createMultipartUpload() }), this.createdPromise.then(function (t) { if ("object" != typeof t || !t || "string" != typeof t.uploadId || "string" != typeof t.key) throw new TypeError("AwsS3/Multipart: Got incorrect result from `createMultipartUpload()`, expected an object `{ uploadId, key }`."); e.key = t.key, e.uploadId = t.uploadId, e.options.onStart(t), e._uploadParts() }).catch(function (t) { e._onError(t) }) }, t._resumeUpload = function () { var e = this; return Promise.resolve().then(function () { return e.options.listParts({ uploadId: e.uploadId, key: e.key }) }).then(function (t) { t.forEach(function (t) { var r = t.PartNumber - 1; e.chunkState[r] = { uploaded: t.Size, etag: t.ETag, done: !0 }, e.parts.some(function (e) { return e.PartNumber === t.PartNumber }) || e.parts.push({ PartNumber: t.PartNumber, ETag: t.ETag }) }), e._uploadParts() }).catch(function (t) { e._onError(t) }) }, t._uploadParts = function () { var e = this; if (!this.isPaused) { var t = this.options.limit - this.uploading.length; if (0 !== t) if (this.chunkState.every(function (e) { return e.done })) this._completeUpload(); else { for (var r = [], n = 0; n < this.chunkState.length; n++) { var o = this.chunkState[n]; if (!o.done && !o.busy && (r.push(n), r.length >= t)) break } r.forEach(function (t) { e._uploadPart(t) }) } } }, t._uploadPart = function (e) { var t = this, r = this.chunks[e]; return this.chunkState[e].busy = !0, Promise.resolve().then(function () { return t.options.prepareUploadPart({ key: t.key, uploadId: t.uploadId, body: r, number: e + 1 }) }).then(function (e) { if ("object" != typeof e || !e || "string" != typeof e.url) throw new TypeError("AwsS3/Multipart: Got incorrect result from `prepareUploadPart()`, expected an object `{ url }`."); return e }).then(function (r) { var n = r.url; t._uploadPartBytes(e, n) }, function (e) { t._onError(e) }) }, t._onPartProgress = function (e, t, r) { this.chunkState[e].uploaded = t; var n = this.chunkState.reduce(function (e, t) { return e + t.uploaded }, 0); this.options.onProgress(n, this.file.size) }, t._onPartComplete = function (e, t) { this.chunkState[e].etag = t, this.chunkState[e].done = !0; var r = { PartNumber: e + 1, ETag: t }; this.parts.push(r), this.options.onPartComplete(r), this._uploadParts() }, t._uploadPartBytes = function (e, t) { var r = this, n = this.chunks[e], o = new XMLHttpRequest; o.open("PUT", t, !0), o.responseType = "text", this.uploading.push(o), o.upload.addEventListener("progress", function (t) { t.lengthComputable && r._onPartProgress(e, t.loaded, t.total) }), o.addEventListener("abort", function (t) { remove(r.uploading, t.target), r.chunkState[e].busy = !1 }), o.addEventListener("load", function (t) { if (remove(r.uploading, t.target), r.chunkState[e].busy = !1, t.target.status < 200 || t.target.status >= 300) r._onError(new Error("Non 2xx")); else { r._onPartProgress(e, n.size, n.size); var o = t.target.getResponseHeader("ETag"); null !== o ? r._onPartComplete(e, o) : r._onError(new Error("AwsS3/Multipart: Could not read the ETag header. This likely means CORS is not configured correctly on the S3 Bucket. Seee https://uppy.io/docs/aws-s3-multipart#S3-Bucket-Configuration for instructions.")) } }), o.addEventListener("error", function (t) { remove(r.uploading, t.target), r.chunkState[e].busy = !1; var n = new Error("Unknown error"); n.source = t.target, r._onError(n) }), o.send(n) }, t._completeUpload = function () { var e = this; return this.parts.sort(function (e, t) { return e.PartNumber - t.PartNumber }), Promise.resolve().then(function () { return e.options.completeMultipartUpload({ key: e.key, uploadId: e.uploadId, parts: e.parts }) }).then(function (t) { e.options.onSuccess(t) }, function (t) { e._onError(t) }) }, t._abortUpload = function () { var e = this; this.uploading.slice().forEach(function (e) { e.abort() }), this.createdPromise.then(function () { e.options.abortMultipartUpload({ key: e.key, uploadId: e.uploadId }) }, function () { }), this.uploading = [] }, t._onError = function (e) { this.options.onError(e) }, t.start = function () { this.isPaused = !1, this.uploadId ? this._resumeUpload() : this._createUpload() }, t.pause = function () { this.uploading.slice().forEach(function (e) { e.abort() }), this.isPaused = !0 }, t.abort = function (e) { if (void 0 === e && (e = {}), !e.really) return this.pause(); this._abortUpload() }, e }(), _$MultipartUploader_80 = MultipartUploader, _$package_82 = { version: "1.3.4" }, ___class_81, ___temp_81; function ___assertThisInitialized_81(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } function ___extends_81() { return (___extends_81 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } var __Plugin_81 = _$lib_93.Plugin, __Socket_81 = _$lib_89.Socket, __Provider_81 = _$lib_89.Provider, __RequestClient_81 = _$lib_89.RequestClient; function __assertServerError_81(e) { if (e && e.error) { var t = new Error(e.message); throw ___extends_81(t, e.error), t } return e } var _$lib_81 = (___temp_81 = ___class_81 = function (e) { var t, r; function n(t, r) { var n; (n = e.call(this, t, r) || this).type = "uploader", n.id = n.opts.id || "AwsS3Multipart", n.title = "AWS S3 Multipart", n.client = new __RequestClient_81(t, r); var o = { timeout: 3e4, limit: 0, createMultipartUpload: n.createMultipartUpload.bind(___assertThisInitialized_81(n)), listParts: n.listParts.bind(___assertThisInitialized_81(n)), prepareUploadPart: n.prepareUploadPart.bind(___assertThisInitialized_81(n)), abortMultipartUpload: n.abortMultipartUpload.bind(___assertThisInitialized_81(n)), completeMultipartUpload: n.completeMultipartUpload.bind(___assertThisInitialized_81(n)) }; return n.opts = ___extends_81({}, o, {}, r), n.upload = n.upload.bind(___assertThisInitialized_81(n)), n.requests = new _$RateLimitedQueue_198(n.opts.limit), n.uploaders = Object.create(null), n.uploaderEvents = Object.create(null), n.uploaderSockets = Object.create(null), n } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.resetUploaderReferences = function (e, t) { void 0 === t && (t = {}), this.uploaders[e] && (this.uploaders[e].abort({ really: t.abort || !1 }), this.uploaders[e] = null), this.uploaderEvents[e] && (this.uploaderEvents[e].remove(), this.uploaderEvents[e] = null), this.uploaderSockets[e] && (this.uploaderSockets[e].close(), this.uploaderSockets[e] = null) }, o.assertHost = function () { if (!this.opts.companionUrl) throw new Error("Expected a `companionUrl` option containing a Companion address.") }, o.createMultipartUpload = function (e) { this.assertHost(); var t = {}; return Object.keys(e.meta).map(function (r) { null != e.meta[r] && (t[r] = e.meta[r].toString()) }), this.client.post("s3/multipart", { filename: e.name, type: e.type, metadata: t }).then(__assertServerError_81) }, o.listParts = function (e, t) { var r = t.key, n = t.uploadId; this.assertHost(); var o = encodeURIComponent(r); return this.client.get("s3/multipart/" + n + "?key=" + o).then(__assertServerError_81) }, o.prepareUploadPart = function (e, t) { var r = t.key, n = t.uploadId, o = t.number; this.assertHost(); var i = encodeURIComponent(r); return this.client.get("s3/multipart/" + n + "/" + o + "?key=" + i).then(__assertServerError_81) }, o.completeMultipartUpload = function (e, t) { var r = t.key, n = t.uploadId, o = t.parts; this.assertHost(); var i = encodeURIComponent(r), s = encodeURIComponent(n); return this.client.post("s3/multipart/" + s + "/complete?key=" + i, { parts: o }).then(__assertServerError_81) }, o.abortMultipartUpload = function (e, t) { var r = t.key, n = t.uploadId; this.assertHost(); var o = encodeURIComponent(r), i = encodeURIComponent(n); return this.client.delete("s3/multipart/" + i + "?key=" + o).then(__assertServerError_81) }, o.uploadFile = function (e) { var t = this; return new Promise(function (r, n) { var o = new _$MultipartUploader_80(e.data, ___extends_81({ createMultipartUpload: t.opts.createMultipartUpload.bind(t, e), listParts: t.opts.listParts.bind(t, e), prepareUploadPart: t.opts.prepareUploadPart.bind(t, e), completeMultipartUpload: t.opts.completeMultipartUpload.bind(t, e), abortMultipartUpload: t.opts.abortMultipartUpload.bind(t, e), onStart: function (r) { var n = t.uppy.getFile(e.id); t.uppy.setFileState(e.id, { s3Multipart: ___extends_81({}, n.s3Multipart, { key: r.key, uploadId: r.uploadId, parts: [] }) }) }, onProgress: function (r, n) { t.uppy.emit("upload-progress", e, { uploader: t, bytesUploaded: r, bytesTotal: n }) }, onError: function (r) { t.uppy.log(r), t.uppy.emit("upload-error", e, r), r.message = "Failed because: " + r.message, i.done(), t.resetUploaderReferences(e.id), n(r) }, onSuccess: function (n) { var s = { uploadURL: n.location }; i.done(), t.resetUploaderReferences(e.id), t.uppy.emit("upload-success", e, s), n.location && t.uppy.log("Download " + o.file.name + " from " + n.location), r(o) }, onPartComplete: function (r) { var n = t.uppy.getFile(e.id); n && (t.uppy.setFileState(e.id, { s3Multipart: ___extends_81({}, n.s3Multipart, { parts: [].concat(n.s3Multipart.parts, [r]) }) }), t.uppy.emit("s3-multipart:part-uploaded", n, r)) }, limit: t.opts.limit || 5 }, e.s3Multipart)); t.uploaders[e.id] = o, t.uploaderEvents[e.id] = new _$EventTracker_195(t.uppy); var i = t.requests.run(function () { return e.isPaused || o.start(), function () { } }); t.onFileRemove(e.id, function (n) { i.abort(), t.resetUploaderReferences(e.id, { abort: !0 }), r("upload " + n.id + " was removed") }), t.onCancelAll(e.id, function () { i.abort(), t.resetUploaderReferences(e.id, { abort: !0 }), r("upload " + e.id + " was canceled") }), t.onFilePause(e.id, function (e) { e ? (i.abort(), o.pause()) : (i.abort(), i = t.requests.run(function () { return o.start(), function () { } })) }), t.onPauseAll(e.id, function () { i.abort(), o.pause() }), t.onResumeAll(e.id, function () { i.abort(), e.error && o.abort(), i = t.requests.run(function () { return o.start(), function () { } }) }), e.isRestored || t.uppy.emit("upload-started", e, o) }) }, o.uploadRemote = function (e) { var t = this; return this.resetUploaderReferences(e.id), this.uppy.emit("upload-started", e), e.serverToken ? this.connectToServerSocket(e) : new Promise(function (r, n) { new (e.remote.providerOptions.provider ? __Provider_81 : __RequestClient_81)(t.uppy, e.remote.providerOptions).post(e.remote.url, ___extends_81({}, e.remote.body, { protocol: "s3-multipart", size: e.data.size, metadata: e.meta })).then(function (r) { return t.uppy.setFileState(e.id, { serverToken: r.token }), e = t.uppy.getFile(e.id) }).then(function (e) { return t.connectToServerSocket(e) }).then(function () { r() }).catch(function (e) { n(new Error(e)) }) }) }, o.connectToServerSocket = function (e) { var t = this; return new Promise(function (r, n) { var o = e.serverToken, i = _$getSocketHost_215(e.remote.companionUrl), s = new __Socket_81({ target: i + "/api/" + o, autoOpen: !1 }); t.uploaderSockets[e.id] = s, t.uploaderEvents[e.id] = new _$EventTracker_195(t.uppy), t.onFileRemove(e.id, function (n) { a.abort(), s.send("pause", {}), t.resetUploaderReferences(e.id, { abort: !0 }), r("upload " + e.id + " was removed") }), t.onFilePause(e.id, function (e) { e ? (a.abort(), s.send("pause", {})) : (a.abort(), a = t.requests.run(function () { return s.send("resume", {}), function () { } })) }), t.onPauseAll(e.id, function () { a.abort(), s.send("pause", {}) }), t.onCancelAll(e.id, function () { a.abort(), s.send("pause", {}), t.resetUploaderReferences(e.id), r("upload " + e.id + " was canceled") }), t.onResumeAll(e.id, function () { a.abort(), e.error && s.send("pause", {}), a = t.requests.run(function () { s.send("resume", {}) }) }), t.onRetry(e.id, function () { s.isOpen && (s.send("pause", {}), s.send("resume", {})) }), t.onRetryAll(e.id, function () { s.isOpen && (s.send("pause", {}), s.send("resume", {})) }), s.on("progress", function (r) { return _$emitSocketProgress_202(t, r, e) }), s.on("error", function (r) { t.uppy.emit("upload-error", e, new Error(r.error)), t.resetUploaderReferences(e.id), a.done(), n(new Error(r.error)) }), s.on("success", function (n) { var o = { uploadURL: n.url }; t.uppy.emit("upload-success", e, o), t.resetUploaderReferences(e.id), a.done(), r() }); var a = t.requests.run(function () { return s.open(), e.isPaused && s.send("pause", {}), function () { } }) }) }, o.upload = function (e) { var t = this; if (0 === e.length) return Promise.resolve(); var r = e.map(function (e) { var r = t.uppy.getFile(e); return r.isRemote ? t.uploadRemote(r) : t.uploadFile(r) }); return Promise.all(r) }, o.onFileRemove = function (e, t) { this.uploaderEvents[e].on("file-removed", function (r) { e === r.id && t(r.id) }) }, o.onFilePause = function (e, t) { this.uploaderEvents[e].on("upload-pause", function (r, n) { e === r && t(n) }) }, o.onRetry = function (e, t) { this.uploaderEvents[e].on("upload-retry", function (r) { e === r && t() }) }, o.onRetryAll = function (e, t) { var r = this; this.uploaderEvents[e].on("retry-all", function (n) { r.uppy.getFile(e) && t() }) }, o.onPauseAll = function (e, t) { var r = this; this.uploaderEvents[e].on("pause-all", function () { r.uppy.getFile(e) && t() }) }, o.onCancelAll = function (e, t) { var r = this; this.uploaderEvents[e].on("cancel-all", function () { r.uppy.getFile(e) && t() }) }, o.onResumeAll = function (e, t) { var r = this; this.uploaderEvents[e].on("resume-all", function () { r.uppy.getFile(e) && t() }) }, o.install = function () { var e = this.uppy.getState().capabilities; this.uppy.setState({ capabilities: ___extends_81({}, e, { resumableUploads: !0 }) }), this.uppy.addUploader(this.upload) }, o.uninstall = function () { var e = this.uppy.getState().capabilities; this.uppy.setState({ capabilities: ___extends_81({}, e, { resumableUploads: !1 }) }), this.uppy.removeUploader(this.upload) }, n }(__Plugin_81), ___class_81.VERSION = _$package_82.version, ___temp_81), _$error_187 = {}; Object.defineProperty(_$error_187, "__esModule", { value: !0 }); var DetailedError = function (e) { function t(e) { var r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null, n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null; !function (e, r) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") }(this); var o = function (e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" != typeof t && "function" != typeof t ? e : t }(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e.message)); o.originalRequest = n, o.causingError = r; var i = e.message; return null != r && (i += ", caused by " + r.toString()), null != n && (i += ", originated from request (response code: " + n.status + ", response text: " + n.responseText + ")"), o.message = i, o } return function (e, t) { if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) }(t, Error), t }(); _$error_187.default = DetailedError; var hasOwn = Object.prototype.hasOwnProperty, toStr = Object.prototype.toString, defineProperty = Object.defineProperty, gOPD = Object.getOwnPropertyDescriptor, isArray = function (e) { return "function" == typeof Array.isArray ? Array.isArray(e) : "[object Array]" === toStr.call(e) }, isPlainObject = function (e) { if (!e || "[object Object]" !== toStr.call(e)) return !1; var t, r = hasOwn.call(e, "constructor"), n = e.constructor && e.constructor.prototype && hasOwn.call(e.constructor.prototype, "isPrototypeOf"); if (e.constructor && !r && !n) return !1; for (t in e); return void 0 === t || hasOwn.call(e, t) }, setProperty = function (e, t) { defineProperty && "__proto__" === t.name ? defineProperty(e, t.name, { enumerable: !0, configurable: !0, value: t.newValue, writable: !0 }) : e[t.name] = t.newValue }, getProperty = function (e, t) { if ("__proto__" === t) { if (!hasOwn.call(e, t)) return; if (gOPD) return gOPD(e, t).value } return e[t] }, _$extend_36 = function e() { var t, r, n, o, i, s, a = arguments[0], l = 1, u = arguments.length, c = !1; for ("boolean" == typeof a && (c = a, a = arguments[1] || {}, l = 2), (null == a || "object" != typeof a && "function" != typeof a) && (a = {}); l < u; ++l)if (null != (t = arguments[l])) for (r in t) n = getProperty(a, r), a !== (o = getProperty(t, r)) && (c && o && (isPlainObject(o) || (i = isArray(o))) ? (i ? (i = !1, s = n && isArray(n) ? n : []) : s = n && isPlainObject(n) ? n : {}, setProperty(a, { name: r, newValue: e(c, s, o) })) : void 0 !== o && setProperty(a, { name: r, newValue: o })); return a }, _$base64_44 = { exports: {} }; (function (global) { !function (e, t) { "object" == typeof _$base64_44.exports ? _$base64_44.exports = t(e) : "function" == typeof define && define.amd ? define(t) : t(e) }("undefined" != typeof self ? self : "undefined" != typeof window ? window : void 0 !== global ? global : this, function (global) { "use strict"; global = global || {}; var _Base64 = global.Base64, version = "2.5.1", buffer; if (_$base64_44.exports) try { buffer = eval("require('buffer').Buffer") } catch (err) { buffer = void 0 } var b64chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", b64tab = function (e) { for (var t = {}, r = 0, n = e.length; r < n; r++)t[e.charAt(r)] = r; return t }(b64chars), fromCharCode = String.fromCharCode, cb_utob = function (e) { if (e.length < 2) return (t = e.charCodeAt(0)) < 128 ? e : t < 2048 ? fromCharCode(192 | t >>> 6) + fromCharCode(128 | 63 & t) : fromCharCode(224 | t >>> 12 & 15) + fromCharCode(128 | t >>> 6 & 63) + fromCharCode(128 | 63 & t); var t = 65536 + 1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320); return fromCharCode(240 | t >>> 18 & 7) + fromCharCode(128 | t >>> 12 & 63) + fromCharCode(128 | t >>> 6 & 63) + fromCharCode(128 | 63 & t) }, re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g, utob = function (e) { return e.replace(re_utob, cb_utob) }, cb_encode = function (e) { var t = [0, 2, 1][e.length % 3], r = e.charCodeAt(0) << 16 | (e.length > 1 ? e.charCodeAt(1) : 0) << 8 | (e.length > 2 ? e.charCodeAt(2) : 0); return [b64chars.charAt(r >>> 18), b64chars.charAt(r >>> 12 & 63), t >= 2 ? "=" : b64chars.charAt(r >>> 6 & 63), t >= 1 ? "=" : b64chars.charAt(63 & r)].join("") }, btoa = global.btoa ? function (e) { return global.btoa(e) } : function (e) { return e.replace(/[\s\S]{1,3}/g, cb_encode) }, _encode = buffer ? buffer.from && Uint8Array && buffer.from !== Uint8Array.from ? function (e) { return (e.constructor === buffer.constructor ? e : buffer.from(e)).toString("base64") } : function (e) { return (e.constructor === buffer.constructor ? e : new buffer(e)).toString("base64") } : function (e) { return btoa(utob(e)) }, encode = function (e, t) { return t ? _encode(String(e)).replace(/[+\/]/g, function (e) { return "+" == e ? "-" : "_" }).replace(/=/g, "") : _encode(String(e)) }, encodeURI = function (e) { return encode(e, !0) }, re_btou = new RegExp(["[\xc0-\xdf][\x80-\xbf]", "[\xe0-\xef][\x80-\xbf]{2}", "[\xf0-\xf7][\x80-\xbf]{3}"].join("|"), "g"), cb_btou = function (e) { switch (e.length) { case 4: var t = ((7 & e.charCodeAt(0)) << 18 | (63 & e.charCodeAt(1)) << 12 | (63 & e.charCodeAt(2)) << 6 | 63 & e.charCodeAt(3)) - 65536; return fromCharCode(55296 + (t >>> 10)) + fromCharCode(56320 + (1023 & t)); case 3: return fromCharCode((15 & e.charCodeAt(0)) << 12 | (63 & e.charCodeAt(1)) << 6 | 63 & e.charCodeAt(2)); default: return fromCharCode((31 & e.charCodeAt(0)) << 6 | 63 & e.charCodeAt(1)) } }, btou = function (e) { return e.replace(re_btou, cb_btou) }, cb_decode = function (e) { var t = e.length, r = t % 4, n = (t > 0 ? b64tab[e.charAt(0)] << 18 : 0) | (t > 1 ? b64tab[e.charAt(1)] << 12 : 0) | (t > 2 ? b64tab[e.charAt(2)] << 6 : 0) | (t > 3 ? b64tab[e.charAt(3)] : 0), o = [fromCharCode(n >>> 16), fromCharCode(n >>> 8 & 255), fromCharCode(255 & n)]; return o.length -= [0, 0, 2, 1][r], o.join("") }, _atob = global.atob ? function (e) { return global.atob(e) } : function (e) { return e.replace(/\S{1,4}/g, cb_decode) }, atob = function (e) { return _atob(String(e).replace(/[^A-Za-z0-9\+\/]/g, "")) }, _decode = buffer ? buffer.from && Uint8Array && buffer.from !== Uint8Array.from ? function (e) { return (e.constructor === buffer.constructor ? e : buffer.from(e, "base64")).toString() } : function (e) { return (e.constructor === buffer.constructor ? e : new buffer(e, "base64")).toString() } : function (e) { return btou(_atob(e)) }, decode = function (e) { return _decode(String(e).replace(/[-_]/g, function (e) { return "-" == e ? "+" : "/" }).replace(/[^A-Za-z0-9\+\/]/g, "")) }, noConflict = function () { var e = global.Base64; return global.Base64 = _Base64, e }; if (global.Base64 = { VERSION: version, atob: atob, btoa: btoa, fromBase64: decode, toBase64: encode, utob: utob, encode: encode, encodeURI: encodeURI, btou: btou, decode: decode, noConflict: noConflict, __buffer__: buffer }, "function" == typeof Object.defineProperty) { var noEnum = function (e) { return { value: e, enumerable: !1, writable: !0, configurable: !0 } }; global.Base64.extendString = function () { Object.defineProperty(String.prototype, "fromBase64", noEnum(function () { return decode(this) })), Object.defineProperty(String.prototype, "toBase64", noEnum(function (e) { return encode(this, e) })), Object.defineProperty(String.prototype, "toBase64URI", noEnum(function () { return encode(this, !0) })) } } return global.Meteor && (Base64 = global.Base64), _$base64_44.exports ? _$base64_44.exports.Base64 = global.Base64 : "function" == typeof define && define.amd && define([], function () { return global.Base64 }), { Base64: global.Base64 } }) }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}), _$base64_44 = _$base64_44.exports; var _$request_183 = {}; Object.defineProperty(_$request_183, "__esModule", { value: !0 }), _$request_183.newRequest = function () { return new window.XMLHttpRequest }, _$request_183.resolveUrl = function (e, t) { return new _urlParse2.default(t, e).toString() }; var obj, _urlParse2 = (obj = _$urlParse_76) && obj.__esModule ? obj : { default: obj }, _$isReactNative_181 = {}; Object.defineProperty(_$isReactNative_181, "__esModule", { value: !0 }), _$isReactNative_181.default = function () { return "undefined" != typeof navigator && "string" == typeof navigator.product && "reactnative" === navigator.product.toLowerCase() }; var _$uriToBlob_186 = {}; Object.defineProperty(_$uriToBlob_186, "__esModule", { value: !0 }), _$uriToBlob_186.default = function (e, t) { var r = new XMLHttpRequest; r.responseType = "blob", r.onload = function () { var e = r.response; t(null, e) }, r.onerror = function (e) { t(e) }, r.open("GET", e), r.send() }; var _$isCordova_180 = {}; Object.defineProperty(_$isCordova_180, "__esModule", { value: !0 }), _$isCordova_180.default = function () { return "undefined" != typeof window && (void 0 !== window.PhoneGap || void 0 !== window.Cordova || void 0 !== window.cordova) }; var _$readAsByteArray_182 = {}; Object.defineProperty(_$readAsByteArray_182, "__esModule", { value: !0 }), _$readAsByteArray_182.default = function (e, t) { var r = new FileReader; r.onload = function () { t(null, new Uint8Array(r.result)) }, r.onerror = function (e) { t(e) }, r.readAsArrayBuffer(e) }; var _$source_184 = {}; Object.defineProperty(_$source_184, "__esModule", { value: !0 }); var _createClass = function () { function e(e, t) { for (var r = 0; r < t.length; r++) { var n = t[r]; n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n) } } return function (t, r, n) { return r && e(t.prototype, r), n && e(t, n), t } }(); _$source_184.getSource = function (e, t, r) { if ((0, _isReactNative2.default)() && e && void 0 !== e.uri) (0, _uriToBlob2.default)(e.uri, function (e, t) { if (e) return r(new Error("tus: cannot fetch `file.uri` as Blob, make sure the uri is correct and accessible. " + e)); r(null, new FileSource(t)) }); else { if ("function" != typeof e.slice || void 0 === e.size) return "function" == typeof e.read ? (t = +t, isFinite(t) ? void r(null, new StreamSource(e, t)) : void r(new Error("cannot create source for stream without a finite value for the `chunkSize` option"))) : void r(new Error("source object may only be an instance of File, Blob, or Reader in this environment")); r(null, new FileSource(e)) } }; var _isReactNative2 = _interopRequireDefault(_$isReactNative_181), _uriToBlob2 = _interopRequireDefault(_$uriToBlob_186), _isCordova2 = _interopRequireDefault(_$isCordova_180), _readAsByteArray2 = _interopRequireDefault(_$readAsByteArray_182); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function _classCallCheck(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } var FileSource = function () { function e(t) { _classCallCheck(this, e), this._file = t, this.size = t.size } return _createClass(e, [{ key: "slice", value: function (e, t, r) { (0, _isCordova2.default)() ? (0, _readAsByteArray2.default)(this._file.slice(e, t), function (e, t) { if (e) return r(e); r(null, t) }) : r(null, this._file.slice(e, t)) } }, { key: "close", value: function () { } }]), e }(), StreamSource = function () { function e(t, r) { _classCallCheck(this, e), this._chunkSize = r, this._buffer = void 0, this._bufferOffset = 0, this._reader = t, this._done = !1 } return _createClass(e, [{ key: "slice", value: function (e, t, r) { if (!(e < this._bufferOffset)) return this._readUntilEnoughDataOrDone(e, t, r); r(new Error("Requested data is before the reader's current offset")) } }, { key: "_readUntilEnoughDataOrDone", value: function (e, t, r) { var n = this, o = t <= this._bufferOffset + len(this._buffer); if (this._done || o) { var i = this._getDataFromBuffer(e, t); r(null, i, null == i && this._done) } else this._reader.read().then(function (o) { var i = o.value; o.done ? n._done = !0 : void 0 === n._buffer ? n._buffer = i : n._buffer = function (e, t) { if (e.concat) return e.concat(t); if (e instanceof Blob) return new Blob([e, t], { type: e.type }); if (e.set) { var r = new e.constructor(e.length + t.length); return r.set(e), r.set(t, e.length), r } throw new Error("Unknown data type") }(n._buffer, i), n._readUntilEnoughDataOrDone(e, t, r) }).catch(function (e) { r(new Error("Error during read: " + e)) }) } }, { key: "_getDataFromBuffer", value: function (e, t) { e > this._bufferOffset && (this._buffer = this._buffer.slice(e - this._bufferOffset), this._bufferOffset = e); var r = 0 === len(this._buffer); return this._done && r ? null : this._buffer.slice(0, t - e) } }, { key: "close", value: function () { this._reader.cancel && this._reader.cancel() } }]), e }(); function len(e) { return void 0 === e ? 0 : void 0 !== e.size ? e.size : e.length } var _$storage_185 = {}; Object.defineProperty(_$storage_185, "__esModule", { value: !0 }); var ___createClass_185 = function () { function e(e, t) { for (var r = 0; r < t.length; r++) { var n = t[r]; n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n) } } return function (t, r, n) { return r && e(t.prototype, r), n && e(t, n), t } }(); _$storage_185.getStorage = function () { return hasStorage ? new LocalStorage : null }; var hasStorage = !1; try { hasStorage = "localStorage" in window; var key = "tusSupport"; localStorage.setItem(key, localStorage.getItem(key)) } catch (e) { if (e.code !== e.SECURITY_ERR && e.code !== e.QUOTA_EXCEEDED_ERR) throw e; hasStorage = !1 } _$storage_185.canStoreURLs = hasStorage; var LocalStorage = function () { function e() { !function (t, r) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this) } return ___createClass_185(e, [{ key: "setItem", value: function (e, t, r) { r(null, localStorage.setItem(e, t)) } }, { key: "getItem", value: function (e, t) { t(null, localStorage.getItem(e)) } }, { key: "removeItem", value: function (e, t) { t(null, localStorage.removeItem(e)) } }]), e }(), _$fingerprint_179 = {}; Object.defineProperty(_$fingerprint_179, "__esModule", { value: !0 }), _$fingerprint_179.default = function (e, t, r) { return (0, ___isCordova2_179.default)() ? r(new Error("Fingerprint cannot be computed for file input type")) : (0, ___isReactNative2_179.default)() ? r(null, function (e, t) { var r = e.exif ? function (e) { var t = 0; if (0 === e.length) return t; for (var r = 0; r < e.length; r++) { t = (t << 5) - t + e.charCodeAt(r), t &= t } return t }(JSON.stringify(e.exif)) : "noexif"; return ["tus-rn", e.name || "noname", e.size || "nosize", r, t.endpoint].join("/") }(e, t)) : r(null, ["tus-br", e.name, e.type, e.size, e.lastModified, t.endpoint].join("-")) }; var ___isReactNative2_179 = ___interopRequireDefault_179(_$isReactNative_181), ___isCordova2_179 = ___interopRequireDefault_179(_$isCordova_180); function ___interopRequireDefault_179(e) { return e && e.__esModule ? e : { default: e } } var _$upload_189 = {}; Object.defineProperty(_$upload_189, "__esModule", { value: !0 }); var ___createClass_189 = function () { function e(e, t) { for (var r = 0; r < t.length; r++) { var n = t[r]; n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n) } } return function (t, r, n) { return r && e(t.prototype, r), n && e(t, n), t } }(), _error2 = ___interopRequireDefault_189(_$error_187), _extend2 = ___interopRequireDefault_189(_$extend_36); function ___interopRequireDefault_189(e) { return e && e.__esModule ? e : { default: e } } var __defaultOptions_189 = { endpoint: null, fingerprint: ___interopRequireDefault_189(_$fingerprint_179).default, resume: !0, onProgress: null, onChunkComplete: null, onSuccess: null, onError: null, headers: {}, chunkSize: 1 / 0, withCredentials: !1, uploadUrl: null, uploadSize: null, overridePatchMethod: !1, retryDelays: null, removeFingerprintOnSuccess: !1, uploadLengthDeferred: !1, urlStorage: null, fileReader: null }, Upload = function () { function e(t, r) { !function (t, r) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this), this.options = (0, _extend2.default)(!0, {}, __defaultOptions_189, r), this._storage = this.options.urlStorage, this.file = t, this.url = null, this._xhr = null, this._fingerprint = null, this._offset = null, this._aborted = !1, this._size = null, this._source = null, this._retryAttempt = 0, this._retryTimeout = null, this._offsetBeforeRetry = 0 } return ___createClass_189(e, [{ key: "start", value: function () { var e = this, t = this.file; t ? this.options.endpoint || this.options.uploadUrl ? (this.options.resume && null == this._storage && (this._storage = (0, _$storage_185.getStorage)()), this._source ? this._start(this._source) : (this.options.fileReader || _$source_184.getSource)(t, this.options.chunkSize, function (t, r) { t ? e._emitError(t) : (e._source = r, e._start(r)) })) : this._emitError(new Error("tus: neither an endpoint or an upload URL is provided")) : this._emitError(new Error("tus: no file or stream to upload provided")) } }, { key: "_start", value: function (e) { var t = this, r = this.file; if (this.options.uploadLengthDeferred) this._size = null; else if (null != this.options.uploadSize) { if (this._size = +this.options.uploadSize, isNaN(this._size)) return void this._emitError(new Error("tus: cannot convert `uploadSize` option into a number")) } else if (this._size = e.size, null == this._size) return void this._emitError(new Error("tus: cannot automatically derive upload's size from input and must be specified manually using the `uploadSize` option")); var n = this.options.retryDelays; if (null != n) { if ("[object Array]" !== Object.prototype.toString.call(n)) return void this._emitError(new Error("tus: the `retryDelays` option must either be an array or null")); var o = this.options.onError; this.options.onError = function (e) { t.options.onError = o, null != t._offset && t._offset > t._offsetBeforeRetry && (t._retryAttempt = 0); var r = !0; "undefined" != typeof window && "navigator" in window && !1 === window.navigator.onLine && (r = !1); var i = e.originalRequest ? e.originalRequest.status : 0, s = !inStatusCategory(i, 400) || 409 === i || 423 === i; if (t._retryAttempt < n.length && null != e.originalRequest && s && r) { var a = n[t._retryAttempt++]; t._offsetBeforeRetry = t._offset, t.options.uploadUrl = t.url, t._retryTimeout = setTimeout(function () { t.start() }, a) } else t._emitError(e) } } if (this._aborted = !1, null == this.url) return null != this.options.uploadUrl ? (this.url = this.options.uploadUrl, void this._resumeUpload()) : void (this._hasStorage() ? this.options.fingerprint(r, this.options, function (e, r) { e ? t._emitError(e) : (t._fingerprint = r, t._storage.getItem(t._fingerprint, function (e, r) { e ? t._emitError(e) : null != r ? (t.url = r, t._resumeUpload()) : t._createUpload() })) }) : this._createUpload()); this._resumeUpload() } }, { key: "abort", value: function (t, r) { var n = this; null !== this._xhr && (this._xhr.abort(), this._source.close()), this._aborted = !0, null != this._retryTimeout && (clearTimeout(this._retryTimeout), this._retryTimeout = null), r = r || function () { }, t ? e.terminate(this.url, this.options, function (e, t) { if (e) return r(e, t); n._hasStorage() ? n._storage.removeItem(n._fingerprint, r) : r() }) : r() } }, { key: "_hasStorage", value: function () { return this.options.resume && this._storage } }, { key: "_emitXhrError", value: function (e, t, r) { this._emitError(new _error2.default(t, r, e)) } }, { key: "_emitError", value: function (e) { if ("function" != typeof this.options.onError) throw e; this.options.onError(e) } }, { key: "_emitSuccess", value: function () { "function" == typeof this.options.onSuccess && this.options.onSuccess() } }, { key: "_emitProgress", value: function (e, t) { "function" == typeof this.options.onProgress && this.options.onProgress(e, t) } }, { key: "_emitChunkComplete", value: function (e, t, r) { "function" == typeof this.options.onChunkComplete && this.options.onChunkComplete(e, t, r) } }, { key: "_setupXHR", value: function (e) { this._xhr = e, setupXHR(e, this.options) } }, { key: "_createUpload", value: function () { var e = this; if (this.options.endpoint) { var t = (0, _$request_183.newRequest)(); t.open("POST", this.options.endpoint, !0), t.onload = function () { if (inStatusCategory(t.status, 200)) { var r = t.getResponseHeader("Location"); if (null != r) { if (e.url = (0, _$request_183.resolveUrl)(e.options.endpoint, r), 0 === e._size) return e._emitSuccess(), void e._source.close(); e._hasStorage() && e._storage.setItem(e._fingerprint, e.url, function (t) { t && e._emitError(t) }), e._offset = 0, e._startUpload() } else e._emitXhrError(t, new Error("tus: invalid or missing Location header")) } else e._emitXhrError(t, new Error("tus: unexpected response while creating upload")) }, t.onerror = function (r) { e._emitXhrError(t, new Error("tus: failed to create upload"), r) }, this._setupXHR(t), this.options.uploadLengthDeferred ? t.setRequestHeader("Upload-Defer-Length", 1) : t.setRequestHeader("Upload-Length", this._size); var r = function (e) { var t = []; for (var r in e) t.push(r + " " + _$base64_44.Base64.encode(e[r])); return t.join(",") }(this.options.metadata); "" !== r && t.setRequestHeader("Upload-Metadata", r), t.send(null) } else this._emitError(new Error("tus: unable to create upload because no endpoint is provided")) } }, { key: "_resumeUpload", value: function () { var e = this, t = (0, _$request_183.newRequest)(); t.open("HEAD", this.url, !0), t.onload = function () { if (!inStatusCategory(t.status, 200)) return e._hasStorage() && inStatusCategory(t.status, 400) && e._storage.removeItem(e._fingerprint, function (t) { t && e._emitError(t) }), 423 === t.status ? void e._emitXhrError(t, new Error("tus: upload is currently locked; retry later")) : e.options.endpoint ? (e.url = null, void e._createUpload()) : void e._emitXhrError(t, new Error("tus: unable to resume upload (new upload cannot be created without an endpoint)")); var r = parseInt(t.getResponseHeader("Upload-Offset"), 10); if (isNaN(r)) e._emitXhrError(t, new Error("tus: invalid or missing offset value")); else { var n = parseInt(t.getResponseHeader("Upload-Length"), 10); if (!isNaN(n) || e.options.uploadLengthDeferred) { if (r === n) return e._emitProgress(n, n), void e._emitSuccess(); e._offset = r, e._startUpload() } else e._emitXhrError(t, new Error("tus: invalid or missing length value")) } }, t.onerror = function (r) { e._emitXhrError(t, new Error("tus: failed to resume upload"), r) }, this._setupXHR(t), t.send(null) } }, { key: "_startUpload", value: function () { var e = this; if (!this._aborted) { var t = (0, _$request_183.newRequest)(); this.options.overridePatchMethod ? (t.open("POST", this.url, !0), t.setRequestHeader("X-HTTP-Method-Override", "PATCH")) : t.open("PATCH", this.url, !0), t.onload = function () { if (inStatusCategory(t.status, 200)) { var r = parseInt(t.getResponseHeader("Upload-Offset"), 10); if (isNaN(r)) e._emitXhrError(t, new Error("tus: invalid or missing offset value")); else { if (e._emitProgress(r, e._size), e._emitChunkComplete(r - e._offset, r, e._size), e._offset = r, r == e._size) return e.options.removeFingerprintOnSuccess && e.options.resume && e._storage.removeItem(e._fingerprint, function (t) { t && e._emitError(t) }), e._emitSuccess(), void e._source.close(); e._startUpload() } } else e._emitXhrError(t, new Error("tus: unexpected response while uploading chunk")) }, t.onerror = function (r) { e._aborted || e._emitXhrError(t, new Error("tus: failed to upload chunk at offset " + e._offset), r) }, "upload" in t && (t.upload.onprogress = function (t) { t.lengthComputable && e._emitProgress(r + t.loaded, e._size) }), this._setupXHR(t), t.setRequestHeader("Upload-Offset", this._offset), t.setRequestHeader("Content-Type", "application/offset+octet-stream"); var r = this._offset, n = this._offset + this.options.chunkSize; (n === 1 / 0 || n > this._size) && !this.options.uploadLengthDeferred && (n = this._size), this._source.slice(r, n, function (r, n, o) { r ? e._emitError(r) : (e.options.uploadLengthDeferred && o && (e._size = e._offset + (n && n.size ? n.size : 0), t.setRequestHeader("Upload-Length", e._size)), null === n ? t.send() : (t.send(n), e._emitProgress(e._offset, e._size))) }) } } }], [{ key: "terminate", value: function (e, t, r) { if ("function" != typeof t && "function" != typeof r) throw new Error("tus: a callback function must be specified"); "function" == typeof t && (r = t, t = {}); var n = (0, _$request_183.newRequest)(); n.open("DELETE", e, !0), n.onload = function () { 204 === n.status ? r() : r(new _error2.default(new Error("tus: unexpected response while terminating upload"), null, n)) }, n.onerror = function (e) { r(new _error2.default(e, new Error("tus: failed to terminate upload"), n)) }, setupXHR(n, t), n.send(null) } }]), e }(); function inStatusCategory(e, t) { return e >= t && e < t + 100 } function setupXHR(e, t) { e.setRequestHeader("Tus-Resumable", "1.0.0"); var r = t.headers || {}; for (var n in r) e.setRequestHeader(n, r[n]); e.withCredentials = t.withCredentials } Upload.defaultOptions = __defaultOptions_189, _$upload_189.default = Upload; var __obj_188, _upload2 = (__obj_188 = _$upload_189) && __obj_188.__esModule ? __obj_188 : { default: __obj_188 }, storage = function (e) { if (e && e.__esModule) return e; var t = {}; if (null != e) for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]); return t.default = e, t }(_$storage_185), __defaultOptions_188 = _upload2.default.defaultOptions, moduleExport = { Upload: _upload2.default, canStoreURLs: storage.canStoreURLs, defaultOptions: __defaultOptions_188 }; if ("undefined" != typeof window) { var _window = window, __XMLHttpRequest_188 = _window.XMLHttpRequest, __Blob_188 = _window.Blob; moduleExport.isSupported = __XMLHttpRequest_188 && __Blob_188 && "function" == typeof __Blob_188.prototype.slice } else moduleExport.isSupported = !0, moduleExport.FileStorage = storage.FileStorage; var _$moduleExport_188 = moduleExport, _$getFingerprint_177 = function (e) { return function (t, r, n) { return "undefined" != typeof window && (void 0 !== window.PhoneGap || void 0 !== window.Cordova || void 0 !== window.cordova) || "undefined" != typeof navigator && "string" == typeof navigator.product && "reactnative" === navigator.product.toLowerCase() ? _$moduleExport_188.Upload.defaultOptions.fingerprint(t, r, n) : n(null, ["tus", e.id, r.endpoint].join("-")) } }, _$package_190 = { version: "1.5.0" }, ___class_178, ___temp_178; function ___extends_178() { return (___extends_178 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } function ___assertThisInitialized_178(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } var __Plugin_178 = _$lib_93.Plugin, __Provider_178 = _$lib_89.Provider, __RequestClient_178 = _$lib_89.RequestClient, __Socket_178 = _$lib_89.Socket, tusDefaultOptions = { endpoint: "", resume: !0, onProgress: null, onChunkComplete: null, onSuccess: null, onError: null, headers: {}, chunkSize: 1 / 0, withCredentials: !1, uploadUrl: null, uploadSize: null, overridePatchMethod: !1, retryDelays: null }, _$lib_178 = (___temp_178 = ___class_178 = function (e) { var t, r; function n(t, r) { var n; return (n = e.call(this, t, r) || this).type = "uploader", n.id = n.opts.id || "Tus", n.title = "Tus", n.opts = ___extends_178({}, { resume: !0, autoRetry: !0, useFastRemoteRetry: !0, limit: 0, retryDelays: [0, 1e3, 3e3, 5e3] }, r), n.requests = new _$RateLimitedQueue_198(n.opts.limit), n.uploaders = Object.create(null), n.uploaderEvents = Object.create(null), n.uploaderSockets = Object.create(null), n.handleResetProgress = n.handleResetProgress.bind(___assertThisInitialized_178(n)), n.handleUpload = n.handleUpload.bind(___assertThisInitialized_178(n)), n } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.handleResetProgress = function () { var e = ___extends_178({}, this.uppy.getState().files); Object.keys(e).forEach(function (t) { if (e[t].tus && e[t].tus.uploadUrl) { var r = ___extends_178({}, e[t].tus); delete r.uploadUrl, e[t] = ___extends_178({}, e[t], { tus: r }) } }), this.uppy.setState({ files: e }) }, o.resetUploaderReferences = function (e, t) { if (void 0 === t && (t = {}), this.uploaders[e]) { var r = this.uploaders[e]; r.abort(), t.abort && setTimeout(function () { return r.abort(!0) }, 1e3), this.uploaders[e] = null } this.uploaderEvents[e] && (this.uploaderEvents[e].remove(), this.uploaderEvents[e] = null), this.uploaderSockets[e] && (this.uploaderSockets[e].close(), this.uploaderSockets[e] = null) }, o.upload = function (e, t, r) { var n = this; return this.resetUploaderReferences(e.id), new Promise(function (t, r) { n.uppy.emit("upload-started", e); var o = ___extends_178({}, tusDefaultOptions, n.opts, e.tus || {}); o.fingerprint = _$getFingerprint_177(e), o.onError = function (t) { n.uppy.log(t), n.uppy.emit("upload-error", e, t), t.message = "Failed because: " + t.message, n.resetUploaderReferences(e.id), l.done(), r(t) }, o.onProgress = function (t, r) { n.onReceiveUploadUrl(e, a.url), n.uppy.emit("upload-progress", e, { uploader: n, bytesUploaded: t, bytesTotal: r }) }, o.onSuccess = function () { var r = { uploadURL: a.url }; n.uppy.emit("upload-success", e, r), a.url && n.uppy.log("Download " + a.file.name + " from " + a.url), n.resetUploaderReferences(e.id), l.done(), t(a) }; var i = function (e, t, r) { Object.prototype.hasOwnProperty.call(e, t) && !Object.prototype.hasOwnProperty.call(e, r) && (e[r] = e[t]) }, s = {}; (Array.isArray(o.metaFields) ? o.metaFields : Object.keys(e.meta)).forEach(function (t) { s[t] = e.meta[t] }), i(s, "type", "filetype"), i(s, "name", "filename"), o.metadata = s; var a = new _$moduleExport_188.Upload(e.data, o); n.uploaders[e.id] = a, n.uploaderEvents[e.id] = new _$EventTracker_195(n.uppy); var l = n.requests.run(function () { return e.isPaused || a.start(), function () { } }); n.onFileRemove(e.id, function (r) { l.abort(), n.resetUploaderReferences(e.id, { abort: !!a.url }), t("upload " + r + " was removed") }), n.onPause(e.id, function (e) { e ? (l.abort(), a.abort()) : (l.abort(), l = n.requests.run(function () { return a.start(), function () { } })) }), n.onPauseAll(e.id, function () { l.abort(), a.abort() }), n.onCancelAll(e.id, function () { l.abort(), n.resetUploaderReferences(e.id, { abort: !!a.url }), t("upload " + e.id + " was canceled") }), n.onResumeAll(e.id, function () { l.abort(), e.error && a.abort(), l = n.requests.run(function () { return a.start(), function () { } }) }) }).catch(function (t) { throw n.uppy.emit("upload-error", e, t), t }) }, o.uploadRemote = function (e, t, r) { var n = this; this.resetUploaderReferences(e.id); var o = ___extends_178({}, this.opts); return e.tus && ___extends_178(o, e.tus), this.uppy.emit("upload-started", e), this.uppy.log(e.remote.url), e.serverToken ? this.connectToServerSocket(e) : new Promise(function (t, r) { new (e.remote.providerOptions.provider ? __Provider_178 : __RequestClient_178)(n.uppy, e.remote.providerOptions).post(e.remote.url, ___extends_178({}, e.remote.body, { endpoint: o.endpoint, uploadUrl: o.uploadUrl, protocol: "tus", size: e.data.size, metadata: e.meta })).then(function (t) { return n.uppy.setFileState(e.id, { serverToken: t.token }), e = n.uppy.getFile(e.id), n.connectToServerSocket(e) }).then(function () { t() }).catch(function (e) { r(new Error(e)) }) }) }, o.connectToServerSocket = function (e) { var t = this; return new Promise(function (r, n) { var o = e.serverToken, i = _$getSocketHost_215(e.remote.companionUrl), s = new __Socket_178({ target: i + "/api/" + o, autoOpen: !1 }); t.uploaderSockets[e.id] = s, t.uploaderEvents[e.id] = new _$EventTracker_195(t.uppy), t.onFileRemove(e.id, function () { a.abort(), s.send("pause", {}), s.send("cancel", {}), t.resetUploaderReferences(e.id), r("upload " + e.id + " was removed") }), t.onPause(e.id, function (e) { e ? (a.abort(), s.send("pause", {})) : (a.abort(), a = t.requests.run(function () { return s.send("resume", {}), function () { } })) }), t.onPauseAll(e.id, function () { a.abort(), s.send("pause", {}) }), t.onCancelAll(e.id, function () { a.abort(), s.send("pause", {}), s.send("cancel", {}), t.resetUploaderReferences(e.id), r("upload " + e.id + " was canceled") }), t.onResumeAll(e.id, function () { a.abort(), e.error && s.send("pause", {}), a = t.requests.run(function () { return s.send("resume", {}), function () { } }) }), t.onRetry(e.id, function () { s.isOpen && (s.send("pause", {}), s.send("resume", {})) }), t.onRetryAll(e.id, function () { s.isOpen && (s.send("pause", {}), s.send("resume", {})) }), s.on("progress", function (r) { return _$emitSocketProgress_202(t, r, e) }), s.on("error", function (r) { var o = r.error.message, i = ___extends_178(new Error(o), { cause: r.error }); t.opts.useFastRemoteRetry ? s.close() : (t.resetUploaderReferences(e.id), t.uppy.setFileState(e.id, { serverToken: null })), t.uppy.emit("upload-error", e, i), a.done(), n(i) }), s.on("success", function (n) { var o = { uploadURL: n.url }; t.uppy.emit("upload-success", e, o), t.resetUploaderReferences(e.id), a.done(), r() }); var a = t.requests.run(function () { return s.open(), e.isPaused && s.send("pause", {}), function () { } }) }) }, o.onReceiveUploadUrl = function (e, t) { var r = this.uppy.getFile(e.id); r && (r.tus && r.tus.uploadUrl === t || (this.uppy.log("[Tus] Storing upload url"), this.uppy.setFileState(r.id, { tus: ___extends_178({}, r.tus, { uploadUrl: t }) }))) }, o.onFileRemove = function (e, t) { this.uploaderEvents[e].on("file-removed", function (r) { e === r.id && t(r.id) }) }, o.onPause = function (e, t) { this.uploaderEvents[e].on("upload-pause", function (r, n) { e === r && t(n) }) }, o.onRetry = function (e, t) { this.uploaderEvents[e].on("upload-retry", function (r) { e === r && t() }) }, o.onRetryAll = function (e, t) { var r = this; this.uploaderEvents[e].on("retry-all", function (n) { r.uppy.getFile(e) && t() }) }, o.onPauseAll = function (e, t) { var r = this; this.uploaderEvents[e].on("pause-all", function () { r.uppy.getFile(e) && t() }) }, o.onCancelAll = function (e, t) { var r = this; this.uploaderEvents[e].on("cancel-all", function () { r.uppy.getFile(e) && t() }) }, o.onResumeAll = function (e, t) { var r = this; this.uploaderEvents[e].on("resume-all", function () { r.uppy.getFile(e) && t() }) }, o.uploadFiles = function (e) { var t = this, r = e.map(function (r, n) { var o = n + 1, i = e.length; return "error" in r && r.error ? Promise.reject(new Error(r.error)) : r.isRemote ? t.uploadRemote(r, o, i) : t.upload(r, o, i) }); return _$settle_228(r) }, o.handleUpload = function (e) { var t = this; if (0 === e.length) return this.uppy.log("[Tus] No files to upload"), Promise.resolve(); 0 === this.opts.limit && this.uppy.log("[Tus] When uploading multiple files at once, consider setting the `limit` option (to `10` for example), to limit the number of concurrent uploads, which helps prevent memory and network issues: https://uppy.io/docs/tus/#limit-0", "warning"), this.uppy.log("[Tus] Uploading..."); var r = e.map(function (e) { return t.uppy.getFile(e) }); return this.uploadFiles(r).then(function () { return null }) }, o.install = function () { this.uppy.setState({ capabilities: ___extends_178({}, this.uppy.getState().capabilities, { resumableUploads: !0 }) }), this.uppy.addUploader(this.handleUpload), this.uppy.on("reset-progress", this.handleResetProgress), this.opts.autoRetry && this.uppy.on("back-online", this.uppy.retryAll) }, o.uninstall = function () { this.uppy.setState({ capabilities: ___extends_178({}, this.uppy.getState().capabilities, { resumableUploads: !1 }) }), this.uppy.removeUploader(this.handleUpload), this.opts.autoRetry && this.uppy.off("back-online", this.uppy.retryAll) }, n }(__Plugin_178), ___class_178.VERSION = _$package_190.version, ___temp_178), re = /^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/, parts = ["source", "protocol", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor"], _$parseuri_51 = function (e) { var t = e, r = e.indexOf("["), n = e.indexOf("]"); -1 != r && -1 != n && (e = e.substring(0, r) + e.substring(r, n).replace(/:/g, ";") + e.substring(n, e.length)); for (var o = re.exec(e || ""), i = {}, s = 14; s--;)i[parts[s]] = o[s] || ""; return -1 != r && -1 != n && (i.source = t, i.host = i.host.substring(1, i.host.length - 1).replace(/;/g, ":"), i.authority = i.authority.replace("[", "").replace("]", "").replace(/;/g, ":"), i.ipv6uri = !0), i }, s = 1e3, m = 60 * s, __h_66 = 60 * m, d = 24 * __h_66, y = 365.25 * d; function plural(e, t, r) { if (!(e < t)) return e < 1.5 * t ? Math.floor(e / t) + " " + r : Math.ceil(e / t) + " " + r + "s" } var _$ms_66 = function (e, t) { t = t || {}; var r, n = typeof e; if ("string" === n && e.length > 0) return function (e) { if (!((e = String(e)).length > 100)) { var t = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e); if (t) { var r = parseFloat(t[1]); switch ((t[2] || "ms").toLowerCase()) { case "years": case "year": case "yrs": case "yr": case "y": return r * y; case "days": case "day": case "d": return r * d; case "hours": case "hour": case "hrs": case "hr": case "h": return r * __h_66; case "minutes": case "minute": case "mins": case "min": case "m": return r * m; case "seconds": case "second": case "secs": case "sec": case "s": return r * s; case "milliseconds": case "millisecond": case "msecs": case "msec": case "ms": return r; default: return } } } }(e); if ("number" === n && !1 === isNaN(e)) return t.long ? plural(r = e, d, "day") || plural(r, __h_66, "hour") || plural(r, m, "minute") || plural(r, s, "second") || r + " ms" : function (e) { return e >= d ? Math.round(e / d) + "d" : e >= __h_66 ? Math.round(e / __h_66) + "h" : e >= m ? Math.round(e / m) + "m" : e >= s ? Math.round(e / s) + "s" : e + "ms" }(e); throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(e)) }, _$debug_65 = {}; function createDebug(e) { var t; function r() { if (r.enabled) { var e = r, n = +new Date, o = n - (t || n); e.diff = o, e.prev = t, e.curr = n, t = n; for (var i = new Array(arguments.length), s = 0; s < i.length; s++)i[s] = arguments[s]; i[0] = _$debug_65.coerce(i[0]), "string" != typeof i[0] && i.unshift("%O"); var a = 0; i[0] = i[0].replace(/%([a-zA-Z%])/g, function (t, r) { if ("%%" === t) return t; a++; var n = _$debug_65.formatters[r]; if ("function" == typeof n) { var o = i[a]; t = n.call(e, o), i.splice(a, 1), a-- } return t }), _$debug_65.formatArgs.call(e, i), (r.log || _$debug_65.log || console.log.bind(console)).apply(e, i) } } return r.namespace = e, r.enabled = _$debug_65.enabled(e), r.useColors = _$debug_65.useColors(), r.color = function (e) { var t, r = 0; for (t in e) r = (r << 5) - r + e.charCodeAt(t), r |= 0; return _$debug_65.colors[Math.abs(r) % _$debug_65.colors.length] }(e), r.destroy = destroy, "function" == typeof _$debug_65.init && _$debug_65.init(r), _$debug_65.instances.push(r), r } function destroy() { var e = _$debug_65.instances.indexOf(this); return -1 !== e && (_$debug_65.instances.splice(e, 1), !0) } _$debug_65 = _$debug_65 = createDebug.debug = createDebug.default = createDebug, _$debug_65.coerce = function (e) { return e instanceof Error ? e.stack || e.message : e }, _$debug_65.disable = function () { _$debug_65.enable("") }, _$debug_65.enable = function (e) { var t; _$debug_65.save(e), _$debug_65.names = [], _$debug_65.skips = []; var r = ("string" == typeof e ? e : "").split(/[\s,]+/), n = r.length; for (t = 0; t < n; t++)r[t] && ("-" === (e = r[t].replace(/\*/g, ".*?"))[0] ? _$debug_65.skips.push(new RegExp("^" + e.substr(1) + "$")) : _$debug_65.names.push(new RegExp("^" + e + "$"))); for (t = 0; t < _$debug_65.instances.length; t++) { var o = _$debug_65.instances[t]; o.enabled = _$debug_65.enabled(o.namespace) } }, _$debug_65.enabled = function (e) { if ("*" === e[e.length - 1]) return !0; var t, r; for (t = 0, r = _$debug_65.skips.length; t < r; t++)if (_$debug_65.skips[t].test(e)) return !1; for (t = 0, r = _$debug_65.names.length; t < r; t++)if (_$debug_65.names[t].test(e)) return !0; return !1 }, _$debug_65.humanize = _$ms_66, _$debug_65.instances = [], _$debug_65.names = [], _$debug_65.skips = [], _$debug_65.formatters = {}; var _$browser_64 = {}; (function (t) { function r() { var r; try { r = _$browser_64.storage.debug } catch (e) { } return !r && void 0 !== t && "env" in t && (r = t.env.DEBUG), r } (_$browser_64 = _$browser_64 = _$debug_65).log = function () { return "object" == typeof console && console.log && Function.prototype.apply.call(console.log, console, arguments) }, _$browser_64.formatArgs = function (e) { var t = this.useColors; if (e[0] = (t ? "%c" : "") + this.namespace + (t ? " %c" : " ") + e[0] + (t ? "%c " : " ") + "+" + _$browser_64.humanize(this.diff), t) { var r = "color: " + this.color; e.splice(1, 0, r, "color: inherit"); var n = 0, o = 0; e[0].replace(/%[a-zA-Z%]/g, function (e) { "%%" !== e && (n++, "%c" === e && (o = n)) }), e.splice(o, 0, r) } }, _$browser_64.save = function (t) { try { null == t ? _$browser_64.storage.removeItem("debug") : _$browser_64.storage.debug = t } catch (e) { } }, _$browser_64.load = r, _$browser_64.useColors = function () { return !("undefined" == typeof window || !window.process || "renderer" !== window.process.type) || ("undefined" == typeof navigator || !navigator.userAgent || !navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) && ("undefined" != typeof document && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || "undefined" != typeof window && window.console && (window.console.firebug || window.console.exception && window.console.table) || "undefined" != typeof navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || "undefined" != typeof navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)) }, _$browser_64.storage = "undefined" != typeof chrome && void 0 !== chrome.storage ? chrome.storage.local : function () { try { return window.localStorage } catch (e) { } }(), _$browser_64.colors = ["#0000CC", "#0000FF", "#0033CC", "#0033FF", "#0066CC", "#0066FF", "#0099CC", "#0099FF", "#00CC00", "#00CC33", "#00CC66", "#00CC99", "#00CCCC", "#00CCFF", "#3300CC", "#3300FF", "#3333CC", "#3333FF", "#3366CC", "#3366FF", "#3399CC", "#3399FF", "#33CC00", "#33CC33", "#33CC66", "#33CC99", "#33CCCC", "#33CCFF", "#6600CC", "#6600FF", "#6633CC", "#6633FF", "#66CC00", "#66CC33", "#9900CC", "#9900FF", "#9933CC", "#9933FF", "#99CC00", "#99CC33", "#CC0000", "#CC0033", "#CC0066", "#CC0099", "#CC00CC", "#CC00FF", "#CC3300", "#CC3333", "#CC3366", "#CC3399", "#CC33CC", "#CC33FF", "#CC6600", "#CC6633", "#CC9900", "#CC9933", "#CCCC00", "#CCCC33", "#FF0000", "#FF0033", "#FF0066", "#FF0099", "#FF00CC", "#FF00FF", "#FF3300", "#FF3333", "#FF3366", "#FF3399", "#FF33CC", "#FF33FF", "#FF6600", "#FF6633", "#FF9900", "#FF9933", "#FFCC00", "#FFCC33"], _$browser_64.formatters.j = function (e) { try { return JSON.stringify(e) } catch (err) { return "[UnexpectedJSONParseError]: " + err.message } }, _$browser_64.enable(r()) }).call(this, _$browser_54); var debug = _$browser_64("socket.io-client:url"), _$url_62 = function (e, t) { var r = e; t = t || "undefined" != typeof location && location, null == e && (e = t.protocol + "//" + t.host), "string" == typeof e && ("/" === e.charAt(0) && (e = "/" === e.charAt(1) ? t.protocol + e : t.host + e), /^(https?|wss?):\/\//.test(e) || (debug("protocol-less url %s", e), e = void 0 !== t ? t.protocol + "//" + e : "https://" + e), debug("parse %s", e), r = _$parseuri_51(e)), r.port || (/^(http|ws)$/.test(r.protocol) ? r.port = "80" : /^(http|ws)s$/.test(r.protocol) && (r.port = "443")), r.path = r.path || "/"; var n = -1 !== r.host.indexOf(":") ? "[" + r.host + "]" : r.host; return r.id = r.protocol + "://" + n + ":" + r.port, r.href = r.protocol + "://" + n + (t && t.port === r.port ? "" : ":" + r.port), r }, __s_74 = 1e3, __m_74 = 60 * __s_74, __h_74 = 60 * __m_74, __d_74 = 24 * __h_74, __y_74 = 365.25 * __d_74; function __plural_74(e, t, r) { if (!(e < t)) return e < 1.5 * t ? Math.floor(e / t) + " " + r : Math.ceil(e / t) + " " + r + "s" } var _$ms_74 = function (e, t) { t = t || {}; var r, n = typeof e; if ("string" === n && e.length > 0) return function (e) { if (!((e = String(e)).length > 100)) { var t = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e); if (t) { var r = parseFloat(t[1]); switch ((t[2] || "ms").toLowerCase()) { case "years": case "year": case "yrs": case "yr": case "y": return r * __y_74; case "days": case "day": case "d": return r * __d_74; case "hours": case "hour": case "hrs": case "hr": case "h": return r * __h_74; case "minutes": case "minute": case "mins": case "min": case "m": return r * __m_74; case "seconds": case "second": case "secs": case "sec": case "s": return r * __s_74; case "milliseconds": case "millisecond": case "msecs": case "msec": case "ms": return r; default: return } } } }(e); if ("number" === n && !1 === isNaN(e)) return t.long ? __plural_74(r = e, __d_74, "day") || __plural_74(r, __h_74, "hour") || __plural_74(r, __m_74, "minute") || __plural_74(r, __s_74, "second") || r + " ms" : function (e) { return e >= __d_74 ? Math.round(e / __d_74) + "d" : e >= __h_74 ? Math.round(e / __h_74) + "h" : e >= __m_74 ? Math.round(e / __m_74) + "m" : e >= __s_74 ? Math.round(e / __s_74) + "s" : e + "ms" }(e); throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(e)) }, _$debug_72 = {}; function __createDebug_72(e) { var t; function r() { if (r.enabled) { var e = r, n = +new Date, o = n - (t || n); e.diff = o, e.prev = t, e.curr = n, t = n; for (var i = new Array(arguments.length), s = 0; s < i.length; s++)i[s] = arguments[s]; i[0] = _$debug_72.coerce(i[0]), "string" != typeof i[0] && i.unshift("%O"); var a = 0; i[0] = i[0].replace(/%([a-zA-Z%])/g, function (t, r) { if ("%%" === t) return t; a++; var n = _$debug_72.formatters[r]; if ("function" == typeof n) { var o = i[a]; t = n.call(e, o), i.splice(a, 1), a-- } return t }), _$debug_72.formatArgs.call(e, i), (r.log || _$debug_72.log || console.log.bind(console)).apply(e, i) } } return r.namespace = e, r.enabled = _$debug_72.enabled(e), r.useColors = _$debug_72.useColors(), r.color = function (e) { var t, r = 0; for (t in e) r = (r << 5) - r + e.charCodeAt(t), r |= 0; return _$debug_72.colors[Math.abs(r) % _$debug_72.colors.length] }(e), r.destroy = __destroy_72, "function" == typeof _$debug_72.init && _$debug_72.init(r), _$debug_72.instances.push(r), r } function __destroy_72() { var e = _$debug_72.instances.indexOf(this); return -1 !== e && (_$debug_72.instances.splice(e, 1), !0) } _$debug_72 = _$debug_72 = __createDebug_72.debug = __createDebug_72.default = __createDebug_72, _$debug_72.coerce = function (e) { return e instanceof Error ? e.stack || e.message : e }, _$debug_72.disable = function () { _$debug_72.enable("") }, _$debug_72.enable = function (e) { var t; _$debug_72.save(e), _$debug_72.names = [], _$debug_72.skips = []; var r = ("string" == typeof e ? e : "").split(/[\s,]+/), n = r.length; for (t = 0; t < n; t++)r[t] && ("-" === (e = r[t].replace(/\*/g, ".*?"))[0] ? _$debug_72.skips.push(new RegExp("^" + e.substr(1) + "$")) : _$debug_72.names.push(new RegExp("^" + e + "$"))); for (t = 0; t < _$debug_72.instances.length; t++) { var o = _$debug_72.instances[t]; o.enabled = _$debug_72.enabled(o.namespace) } }, _$debug_72.enabled = function (e) { if ("*" === e[e.length - 1]) return !0; var t, r; for (t = 0, r = _$debug_72.skips.length; t < r; t++)if (_$debug_72.skips[t].test(e)) return !1; for (t = 0, r = _$debug_72.names.length; t < r; t++)if (_$debug_72.names[t].test(e)) return !0; return !1 }, _$debug_72.humanize = _$ms_74, _$debug_72.instances = [], _$debug_72.names = [], _$debug_72.skips = [], _$debug_72.formatters = {}; var _$browser_71 = {}; (function (t) { function r() { var r; try { r = _$browser_71.storage.debug } catch (e) { } return !r && void 0 !== t && "env" in t && (r = t.env.DEBUG), r } (_$browser_71 = _$browser_71 = _$debug_72).log = function () { return "object" == typeof console && console.log && Function.prototype.apply.call(console.log, console, arguments) }, _$browser_71.formatArgs = function (e) { var t = this.useColors; if (e[0] = (t ? "%c" : "") + this.namespace + (t ? " %c" : " ") + e[0] + (t ? "%c " : " ") + "+" + _$browser_71.humanize(this.diff), t) { var r = "color: " + this.color; e.splice(1, 0, r, "color: inherit"); var n = 0, o = 0; e[0].replace(/%[a-zA-Z%]/g, function (e) { "%%" !== e && (n++, "%c" === e && (o = n)) }), e.splice(o, 0, r) } }, _$browser_71.save = function (t) { try { null == t ? _$browser_71.storage.removeItem("debug") : _$browser_71.storage.debug = t } catch (e) { } }, _$browser_71.load = r, _$browser_71.useColors = function () { return !("undefined" == typeof window || !window.process || "renderer" !== window.process.type) || ("undefined" == typeof navigator || !navigator.userAgent || !navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) && ("undefined" != typeof document && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || "undefined" != typeof window && window.console && (window.console.firebug || window.console.exception && window.console.table) || "undefined" != typeof navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || "undefined" != typeof navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)) }, _$browser_71.storage = "undefined" != typeof chrome && void 0 !== chrome.storage ? chrome.storage.local : function () { try { return window.localStorage } catch (e) { } }(), _$browser_71.colors = ["#0000CC", "#0000FF", "#0033CC", "#0033FF", "#0066CC", "#0066FF", "#0099CC", "#0099FF", "#00CC00", "#00CC33", "#00CC66", "#00CC99", "#00CCCC", "#00CCFF", "#3300CC", "#3300FF", "#3333CC", "#3333FF", "#3366CC", "#3366FF", "#3399CC", "#3399FF", "#33CC00", "#33CC33", "#33CC66", "#33CC99", "#33CCCC", "#33CCFF", "#6600CC", "#6600FF", "#6633CC", "#6633FF", "#66CC00", "#66CC33", "#9900CC", "#9900FF", "#9933CC", "#9933FF", "#99CC00", "#99CC33", "#CC0000", "#CC0033", "#CC0066", "#CC0099", "#CC00CC", "#CC00FF", "#CC3300", "#CC3333", "#CC3366", "#CC3399", "#CC33CC", "#CC33FF", "#CC6600", "#CC6633", "#CC9900", "#CC9933", "#CCCC00", "#CCCC33", "#FF0000", "#FF0033", "#FF0066", "#FF0099", "#FF00CC", "#FF00FF", "#FF3300", "#FF3333", "#FF3366", "#FF3399", "#FF33CC", "#FF33FF", "#FF6600", "#FF6633", "#FF9900", "#FF9933", "#FFCC00", "#FFCC33"], _$browser_71.formatters.j = function (e) { try { return JSON.stringify(e) } catch (err) { return "[UnexpectedJSONParseError]: " + err.message } }, _$browser_71.enable(r()) }).call(this, _$browser_54); var _$componentEmitter_70 = { exports: {} }; function Emitter(e) { if (e) return function (e) { for (var t in Emitter.prototype) e[t] = Emitter.prototype[t]; return e }(e) } _$componentEmitter_70.exports = Emitter, Emitter.prototype.on = Emitter.prototype.addEventListener = function (e, t) { return this._callbacks = this._callbacks || {}, (this._callbacks["$" + e] = this._callbacks["$" + e] || []).push(t), this }, Emitter.prototype.once = function (e, t) { function r() { this.off(e, r), t.apply(this, arguments) } return r.fn = t, this.on(e, r), this }, Emitter.prototype.off = Emitter.prototype.removeListener = Emitter.prototype.removeAllListeners = Emitter.prototype.removeEventListener = function (e, t) { if (this._callbacks = this._callbacks || {}, 0 == arguments.length) return this._callbacks = {}, this; var r, n = this._callbacks["$" + e]; if (!n) return this; if (1 == arguments.length) return delete this._callbacks["$" + e], this; for (var o = 0; o < n.length; o++)if ((r = n[o]) === t || r.fn === t) { n.splice(o, 1); break } return this }, Emitter.prototype.emit = function (e) { this._callbacks = this._callbacks || {}; var t = [].slice.call(arguments, 1), r = this._callbacks["$" + e]; if (r) for (var n = 0, o = (r = r.slice(0)).length; n < o; ++n)r[n].apply(this, t); return this }, Emitter.prototype.listeners = function (e) { return this._callbacks = this._callbacks || {}, this._callbacks["$" + e] || [] }, Emitter.prototype.hasListeners = function (e) { return !!this.listeners(e).length }, _$componentEmitter_70 = _$componentEmitter_70.exports; for (var toString = {}.toString, _$isarray_73 = Array.isArray || function (e) { return "[object Array]" == toString.call(e) }, _$base64Js_5 = { toByteArray: function (e) { for (var t, r = getLens(e), n = r[0], o = r[1], i = new Arr(function (e, t, r) { return 3 * (t + r) / 4 - r }(0, n, o)), s = 0, a = o > 0 ? n - 4 : n, l = 0; l < a; l += 4)t = revLookup[e.charCodeAt(l)] << 18 | revLookup[e.charCodeAt(l + 1)] << 12 | revLookup[e.charCodeAt(l + 2)] << 6 | revLookup[e.charCodeAt(l + 3)], i[s++] = t >> 16 & 255, i[s++] = t >> 8 & 255, i[s++] = 255 & t; return 2 === o && (t = revLookup[e.charCodeAt(l)] << 2 | revLookup[e.charCodeAt(l + 1)] >> 4, i[s++] = 255 & t), 1 === o && (t = revLookup[e.charCodeAt(l)] << 10 | revLookup[e.charCodeAt(l + 1)] << 4 | revLookup[e.charCodeAt(l + 2)] >> 2, i[s++] = t >> 8 & 255, i[s++] = 255 & t), i }, fromByteArray: function (e) { for (var t, r = e.length, n = r % 3, o = [], i = 0, s = r - n; i < s; i += 16383)o.push(encodeChunk(e, i, i + 16383 > s ? s : i + 16383)); return 1 === n ? (t = e[r - 1], o.push(lookup[t >> 2] + lookup[t << 4 & 63] + "==")) : 2 === n && (t = (e[r - 2] << 8) + e[r - 1], o.push(lookup[t >> 10] + lookup[t >> 4 & 63] + lookup[t << 2 & 63] + "=")), o.join("") } }, lookup = [], revLookup = [], Arr = "undefined" != typeof Uint8Array ? Uint8Array : Array, code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", i = 0, __len_5 = code.length; i < __len_5; ++i)lookup[i] = code[i], revLookup[code.charCodeAt(i)] = i; function getLens(e) { var t = e.length; if (t % 4 > 0) throw new Error("Invalid string. Length must be a multiple of 4"); var r = e.indexOf("="); return -1 === r && (r = t), [r, r === t ? 0 : 4 - r % 4] } function encodeChunk(e, t, r) { for (var n, o, i = [], s = t; s < r; s += 3)n = (e[s] << 16 & 16711680) + (e[s + 1] << 8 & 65280) + (255 & e[s + 2]), i.push(lookup[(o = n) >> 18 & 63] + lookup[o >> 12 & 63] + lookup[o >> 6 & 63] + lookup[63 & o]); return i.join("") } revLookup["-".charCodeAt(0)] = 62, revLookup["_".charCodeAt(0)] = 63; var _$ieee754_41 = { read: function (e, t, r, n, o) { var i, s, a = 8 * o - n - 1, l = (1 << a) - 1, u = l >> 1, c = -7, p = r ? o - 1 : 0, d = r ? -1 : 1, _ = e[t + p]; for (p += d, i = _ & (1 << -c) - 1, _ >>= -c, c += a; c > 0; i = 256 * i + e[t + p], p += d, c -= 8); for (s = i & (1 << -c) - 1, i >>= -c, c += n; c > 0; s = 256 * s + e[t + p], p += d, c -= 8); if (0 === i) i = 1 - u; else { if (i === l) return s ? NaN : 1 / 0 * (_ ? -1 : 1); s += Math.pow(2, n), i -= u } return (_ ? -1 : 1) * s * Math.pow(2, i - n) }, write: function (e, t, r, n, o, i) { var s, a, l, u = 8 * i - o - 1, c = (1 << u) - 1, p = c >> 1, d = 23 === o ? Math.pow(2, -24) - Math.pow(2, -77) : 0, _ = n ? 0 : i - 1, h = n ? 1 : -1, f = t < 0 || 0 === t && 1 / t < 0 ? 1 : 0; for (t = Math.abs(t), isNaN(t) || t === 1 / 0 ? (a = isNaN(t) ? 1 : 0, s = c) : (s = Math.floor(Math.log(t) / Math.LN2), t * (l = Math.pow(2, -s)) < 1 && (s--, l *= 2), (t += s + p >= 1 ? d / l : d * Math.pow(2, 1 - p)) * l >= 2 && (s++, l /= 2), s + p >= c ? (a = 0, s = c) : s + p >= 1 ? (a = (t * l - 1) * Math.pow(2, o), s += p) : (a = t * Math.pow(2, p - 1) * Math.pow(2, o), s = 0)); o >= 8; e[r + _] = 255 & a, _ += h, a /= 256, o -= 8); for (s = s << o | a, u += o; u > 0; e[r + _] = 255 & s, _ += h, s /= 256, u -= 8); e[r + _ - h] |= 128 * f } }, _$isBuffer_69 = {}; (function (e) { _$isBuffer_69 = function (o) { return t && e.isBuffer(o) || r && (o instanceof ArrayBuffer || n(o)) }; var t = "function" == typeof e && "function" == typeof e.isBuffer, r = "function" == typeof ArrayBuffer, n = function (e) { return "function" == typeof ArrayBuffer.isView ? ArrayBuffer.isView(e) : e.buffer instanceof ArrayBuffer } }).call(this, _$buffer_8({}).Buffer); var _$binary_67 = {}, __toString_67 = Object.prototype.toString, withNativeBlob = "function" == typeof Blob || "undefined" != typeof Blob && "[object BlobConstructor]" === __toString_67.call(Blob), withNativeFile = "function" == typeof File || "undefined" != typeof File && "[object FileConstructor]" === __toString_67.call(File); _$binary_67.deconstructPacket = function (e) { var t = [], r = e.data, n = e; return n.data = function e(t, r) { if (!t) return t; if (_$isBuffer_69(t)) { var n = { _placeholder: !0, num: r.length }; return r.push(t), n } if (_$isarray_73(t)) { for (var o = new Array(t.length), i = 0; i < t.length; i++)o[i] = e(t[i], r); return o } if ("object" == typeof t && !(t instanceof Date)) { o = {}; for (var s in t) o[s] = e(t[s], r); return o } return t }(r, t), n.attachments = t.length, { packet: n, buffers: t } }, _$binary_67.reconstructPacket = function (e, t) { return e.data = function e(t, r) { if (!t) return t; if (t && t._placeholder) return r[t.num]; if (_$isarray_73(t)) for (var n = 0; n < t.length; n++)t[n] = e(t[n], r); else if ("object" == typeof t) for (var o in t) t[o] = e(t[o], r); return t }(e.data, t), e.attachments = void 0, e }, _$binary_67.removeBlobs = function (e, t) { var r = 0, n = e; !function e(o, i, s) { if (!o) return o; if (withNativeBlob && o instanceof Blob || withNativeFile && o instanceof File) { r++; var a = new FileReader; a.onload = function () { s ? s[i] = this.result : n = this.result, --r || t(n) }, a.readAsArrayBuffer(o) } else if (_$isarray_73(o)) for (var l = 0; l < o.length; l++)e(o[l], l, o); else if ("object" == typeof o && !_$isBuffer_69(o)) for (var u in o) e(o[u], u, o) }(n), r || t(n) }; var _$socketIoParser_68 = {}, __debug_68 = _$browser_71("socket.io-parser"); function Encoder() { } _$socketIoParser_68.protocol = 4, _$socketIoParser_68.types = ["CONNECT", "DISCONNECT", "EVENT", "ACK", "ERROR", "BINARY_EVENT", "BINARY_ACK"], _$socketIoParser_68.CONNECT = 0, _$socketIoParser_68.DISCONNECT = 1, _$socketIoParser_68.EVENT = 2, _$socketIoParser_68.ACK = 3, _$socketIoParser_68.ERROR = 4, _$socketIoParser_68.BINARY_EVENT = 5, _$socketIoParser_68.BINARY_ACK = 6, _$socketIoParser_68.Encoder = Encoder, _$socketIoParser_68.Decoder = Decoder; var ERROR_PACKET = _$socketIoParser_68.ERROR + '"encode error"'; function encodeAsString(t) { var r = "" + t.type; if (_$socketIoParser_68.BINARY_EVENT !== t.type && _$socketIoParser_68.BINARY_ACK !== t.type || (r += t.attachments + "-"), t.nsp && "/" !== t.nsp && (r += t.nsp + ","), null != t.id && (r += t.id), null != t.data) { var n = function (t) { try { return JSON.stringify(t) } catch (e) { return !1 } }(t.data); if (!1 === n) return ERROR_PACKET; r += n } return __debug_68("encoded %j as %s", t, r), r } function Decoder() { this.reconstructor = null } function BinaryReconstructor(e) { this.reconPack = e, this.buffers = [] } function error(e) { return { type: _$socketIoParser_68.ERROR, data: "parser error: " + e } } Encoder.prototype.encode = function (e, t) { __debug_68("encoding packet %j", e), _$socketIoParser_68.BINARY_EVENT === e.type || _$socketIoParser_68.BINARY_ACK === e.type ? function (e, t) { _$binary_67.removeBlobs(e, function (e) { var r = _$binary_67.deconstructPacket(e), n = encodeAsString(r.packet), o = r.buffers; o.unshift(n), t(o) }) }(e, t) : t([encodeAsString(e)]) }, _$componentEmitter_70(Decoder.prototype), Decoder.prototype.add = function (t) { var r; if ("string" == typeof t) r = function (t) { var r = 0, n = { type: Number(t.charAt(0)) }; if (null == _$socketIoParser_68.types[n.type]) return error("unknown packet type " + n.type); if (_$socketIoParser_68.BINARY_EVENT === n.type || _$socketIoParser_68.BINARY_ACK === n.type) { for (var o = ""; "-" !== t.charAt(++r) && (o += t.charAt(r), r != t.length);); if (o != Number(o) || "-" !== t.charAt(r)) throw new Error("Illegal attachments"); n.attachments = Number(o) } if ("/" === t.charAt(r + 1)) for (n.nsp = ""; ++r;) { if ("," === (s = t.charAt(r))) break; if (n.nsp += s, r === t.length) break } else n.nsp = "/"; var i = t.charAt(r + 1); if ("" !== i && Number(i) == i) { for (n.id = ""; ++r;) { var s; if (null == (s = t.charAt(r)) || Number(s) != s) { --r; break } if (n.id += t.charAt(r), r === t.length) break } n.id = Number(n.id) } if (t.charAt(++r)) { var a = function (t) { try { return JSON.parse(t) } catch (e) { return !1 } }(t.substr(r)); if (!(!1 !== a && (n.type === _$socketIoParser_68.ERROR || _$isarray_73(a)))) return error("invalid payload"); n.data = a } return __debug_68("decoded %s as %j", t, n), n }(t), _$socketIoParser_68.BINARY_EVENT === r.type || _$socketIoParser_68.BINARY_ACK === r.type ? (this.reconstructor = new BinaryReconstructor(r), 0 === this.reconstructor.reconPack.attachments && this.emit("decoded", r)) : this.emit("decoded", r); else { if (!_$isBuffer_69(t) && !t.base64) throw new Error("Unknown type: " + t); if (!this.reconstructor) throw new Error("got binary data when not reconstructing a packet"); (r = this.reconstructor.takeBinaryData(t)) && (this.reconstructor = null, this.emit("decoded", r)) } }, Decoder.prototype.destroy = function () { this.reconstructor && this.reconstructor.finishedReconstruction() }, BinaryReconstructor.prototype.takeBinaryData = function (e) { if (this.buffers.push(e), this.buffers.length === this.reconPack.attachments) { var t = _$binary_67.reconstructPacket(this.reconPack, this.buffers); return this.finishedReconstruction(), t } return null }, BinaryReconstructor.prototype.finishedReconstruction = function () { this.reconPack = null, this.buffers = [] }; var _$componentEmitter_26 = { exports: {} }; function __Emitter_26(e) { if (e) return function (e) { for (var t in __Emitter_26.prototype) e[t] = __Emitter_26.prototype[t]; return e }(e) } _$componentEmitter_26.exports = __Emitter_26, __Emitter_26.prototype.on = __Emitter_26.prototype.addEventListener = function (e, t) { return this._callbacks = this._callbacks || {}, (this._callbacks["$" + e] = this._callbacks["$" + e] || []).push(t), this }, __Emitter_26.prototype.once = function (e, t) { function r() { this.off(e, r), t.apply(this, arguments) } return r.fn = t, this.on(e, r), this }, __Emitter_26.prototype.off = __Emitter_26.prototype.removeListener = __Emitter_26.prototype.removeAllListeners = __Emitter_26.prototype.removeEventListener = function (e, t) { if (this._callbacks = this._callbacks || {}, 0 == arguments.length) return this._callbacks = {}, this; var r, n = this._callbacks["$" + e]; if (!n) return this; if (1 == arguments.length) return delete this._callbacks["$" + e], this; for (var o = 0; o < n.length; o++)if ((r = n[o]) === t || r.fn === t) { n.splice(o, 1); break } return this }, __Emitter_26.prototype.emit = function (e) { this._callbacks = this._callbacks || {}; var t = [].slice.call(arguments, 1), r = this._callbacks["$" + e]; if (r) for (var n = 0, o = (r = r.slice(0)).length; n < o; ++n)r[n].apply(this, t); return this }, __Emitter_26.prototype.listeners = function (e) { return this._callbacks = this._callbacks || {}, this._callbacks["$" + e] || [] }, __Emitter_26.prototype.hasListeners = function (e) { return !!this.listeners(e).length }, _$componentEmitter_26 = _$componentEmitter_26.exports; var __s_29 = 1e3, __m_29 = 60 * __s_29, __h_29 = 60 * __m_29, __d_29 = 24 * __h_29, __y_29 = 365.25 * __d_29; function __plural_29(e, t, r) { if (!(e < t)) return e < 1.5 * t ? Math.floor(e / t) + " " + r : Math.ceil(e / t) + " " + r + "s" } var _$ms_29 = function (e, t) { t = t || {}; var r, n = typeof e; if ("string" === n && e.length > 0) return function (e) { if (!((e = String(e)).length > 100)) { var t = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e); if (t) { var r = parseFloat(t[1]); switch ((t[2] || "ms").toLowerCase()) { case "years": case "year": case "yrs": case "yr": case "y": return r * __y_29; case "days": case "day": case "d": return r * __d_29; case "hours": case "hour": case "hrs": case "hr": case "h": return r * __h_29; case "minutes": case "minute": case "mins": case "min": case "m": return r * __m_29; case "seconds": case "second": case "secs": case "sec": case "s": return r * __s_29; case "milliseconds": case "millisecond": case "msecs": case "msec": case "ms": return r; default: return } } } }(e); if ("number" === n && !1 === isNaN(e)) return t.long ? __plural_29(r = e, __d_29, "day") || __plural_29(r, __h_29, "hour") || __plural_29(r, __m_29, "minute") || __plural_29(r, __s_29, "second") || r + " ms" : function (e) { return e >= __d_29 ? Math.round(e / __d_29) + "d" : e >= __h_29 ? Math.round(e / __h_29) + "h" : e >= __m_29 ? Math.round(e / __m_29) + "m" : e >= __s_29 ? Math.round(e / __s_29) + "s" : e + "ms" }(e); throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(e)) }, _$debug_28 = {}; function __createDebug_28(e) { var t; function r() { if (r.enabled) { var e = r, n = +new Date, o = n - (t || n); e.diff = o, e.prev = t, e.curr = n, t = n; for (var i = new Array(arguments.length), s = 0; s < i.length; s++)i[s] = arguments[s]; i[0] = _$debug_28.coerce(i[0]), "string" != typeof i[0] && i.unshift("%O"); var a = 0; i[0] = i[0].replace(/%([a-zA-Z%])/g, function (t, r) { if ("%%" === t) return t; a++; var n = _$debug_28.formatters[r]; if ("function" == typeof n) { var o = i[a]; t = n.call(e, o), i.splice(a, 1), a-- } return t }), _$debug_28.formatArgs.call(e, i), (r.log || _$debug_28.log || console.log.bind(console)).apply(e, i) } } return r.namespace = e, r.enabled = _$debug_28.enabled(e), r.useColors = _$debug_28.useColors(), r.color = function (e) { var t, r = 0; for (t in e) r = (r << 5) - r + e.charCodeAt(t), r |= 0; return _$debug_28.colors[Math.abs(r) % _$debug_28.colors.length] }(e), r.destroy = __destroy_28, "function" == typeof _$debug_28.init && _$debug_28.init(r), _$debug_28.instances.push(r), r } function __destroy_28() { var e = _$debug_28.instances.indexOf(this); return -1 !== e && (_$debug_28.instances.splice(e, 1), !0) } _$debug_28 = _$debug_28 = __createDebug_28.debug = __createDebug_28.default = __createDebug_28, _$debug_28.coerce = function (e) { return e instanceof Error ? e.stack || e.message : e }, _$debug_28.disable = function () { _$debug_28.enable("") }, _$debug_28.enable = function (e) { var t; _$debug_28.save(e), _$debug_28.names = [], _$debug_28.skips = []; var r = ("string" == typeof e ? e : "").split(/[\s,]+/), n = r.length; for (t = 0; t < n; t++)r[t] && ("-" === (e = r[t].replace(/\*/g, ".*?"))[0] ? _$debug_28.skips.push(new RegExp("^" + e.substr(1) + "$")) : _$debug_28.names.push(new RegExp("^" + e + "$"))); for (t = 0; t < _$debug_28.instances.length; t++) { var o = _$debug_28.instances[t]; o.enabled = _$debug_28.enabled(o.namespace) } }, _$debug_28.enabled = function (e) { if ("*" === e[e.length - 1]) return !0; var t, r; for (t = 0, r = _$debug_28.skips.length; t < r; t++)if (_$debug_28.skips[t].test(e)) return !1; for (t = 0, r = _$debug_28.names.length; t < r; t++)if (_$debug_28.names[t].test(e)) return !0; return !1 }, _$debug_28.humanize = _$ms_29, _$debug_28.instances = [], _$debug_28.names = [], _$debug_28.skips = [], _$debug_28.formatters = {}; var _$browser_27 = {}; (function (t) { function r() { var r; try { r = _$browser_27.storage.debug } catch (e) { } return !r && void 0 !== t && "env" in t && (r = t.env.DEBUG), r } (_$browser_27 = _$browser_27 = _$debug_28).log = function () { return "object" == typeof console && console.log && Function.prototype.apply.call(console.log, console, arguments) }, _$browser_27.formatArgs = function (e) { var t = this.useColors; if (e[0] = (t ? "%c" : "") + this.namespace + (t ? " %c" : " ") + e[0] + (t ? "%c " : " ") + "+" + _$browser_27.humanize(this.diff), t) { var r = "color: " + this.color; e.splice(1, 0, r, "color: inherit"); var n = 0, o = 0; e[0].replace(/%[a-zA-Z%]/g, function (e) { "%%" !== e && (n++, "%c" === e && (o = n)) }), e.splice(o, 0, r) } }, _$browser_27.save = function (t) { try { null == t ? _$browser_27.storage.removeItem("debug") : _$browser_27.storage.debug = t } catch (e) { } }, _$browser_27.load = r, _$browser_27.useColors = function () { return !("undefined" == typeof window || !window.process || "renderer" !== window.process.type) || ("undefined" == typeof navigator || !navigator.userAgent || !navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) && ("undefined" != typeof document && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || "undefined" != typeof window && window.console && (window.console.firebug || window.console.exception && window.console.table) || "undefined" != typeof navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || "undefined" != typeof navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)) }, _$browser_27.storage = "undefined" != typeof chrome && void 0 !== chrome.storage ? chrome.storage.local : function () { try { return window.localStorage } catch (e) { } }(), _$browser_27.colors = ["#0000CC", "#0000FF", "#0033CC", "#0033FF", "#0066CC", "#0066FF", "#0099CC", "#0099FF", "#00CC00", "#00CC33", "#00CC66", "#00CC99", "#00CCCC", "#00CCFF", "#3300CC", "#3300FF", "#3333CC", "#3333FF", "#3366CC", "#3366FF", "#3399CC", "#3399FF", "#33CC00", "#33CC33", "#33CC66", "#33CC99", "#33CCCC", "#33CCFF", "#6600CC", "#6600FF", "#6633CC", "#6633FF", "#66CC00", "#66CC33", "#9900CC", "#9900FF", "#9933CC", "#9933FF", "#99CC00", "#99CC33", "#CC0000", "#CC0033", "#CC0066", "#CC0099", "#CC00CC", "#CC00FF", "#CC3300", "#CC3333", "#CC3366", "#CC3399", "#CC33CC", "#CC33FF", "#CC6600", "#CC6633", "#CC9900", "#CC9933", "#CCCC00", "#CCCC33", "#FF0000", "#FF0033", "#FF0066", "#FF0099", "#FF00CC", "#FF00FF", "#FF3300", "#FF3333", "#FF3366", "#FF3399", "#FF33CC", "#FF33FF", "#FF6600", "#FF6633", "#FF9900", "#FF9933", "#FFCC00", "#FFCC33"], _$browser_27.formatters.j = function (e) { try { return JSON.stringify(e) } catch (err) { return "[UnexpectedJSONParseError]: " + err.message } }, _$browser_27.enable(r()) }).call(this, _$browser_54); var indexOf = [].indexOf, _$indexof_42 = function (e, t) { if (indexOf) return e.indexOf(t); for (var r = 0; r < e.length; ++r)if (e[r] === t) return r; return -1 }, _$parseqs_50 = { encode: function (e) { var t = ""; for (var r in e) e.hasOwnProperty(r) && (t.length && (t += "&"), t += encodeURIComponent(r) + "=" + encodeURIComponent(e[r])); return t }, decode: function (e) { for (var t = {}, r = e.split("&"), n = 0, o = r.length; n < o; n++) { var i = r[n].split("="); t[decodeURIComponent(i[0])] = decodeURIComponent(i[1]) } return t } }, _$keys_31 = Object.keys || function (e) { var t = [], r = Object.prototype.hasOwnProperty; for (var n in e) r.call(e, n) && t.push(n); return t }, __toString_39 = {}.toString, _$isarray_39 = Array.isArray || function (e) { return "[object Array]" == __toString_39.call(e) }, _$hasBinary_38 = {}; (function (e) { var t = Object.prototype.toString, r = "function" == typeof Blob || "undefined" != typeof Blob && "[object BlobConstructor]" === t.call(Blob), n = "function" == typeof File || "undefined" != typeof File && "[object FileConstructor]" === t.call(File); _$hasBinary_38 = function t(o) { if (!o || "object" != typeof o) return !1; if (_$isarray_39(o)) { for (var i = 0, s = o.length; i < s; i++)if (t(o[i])) return !0; return !1 } if ("function" == typeof e && e.isBuffer && e.isBuffer(o) || "function" == typeof ArrayBuffer && o instanceof ArrayBuffer || r && o instanceof Blob || n && o instanceof File) return !0; if (o.toJSON && "function" == typeof o.toJSON && 1 === arguments.length) return t(o.toJSON(), !0); for (var a in o) if (Object.prototype.hasOwnProperty.call(o, a) && t(o[a])) return !0; return !1 } }).call(this, _$buffer_8({}).Buffer); var _$arraybufferSlice_2 = function (e, t, r) { var n = e.byteLength; if (t = t || 0, r = r || n, e.slice) return e.slice(t, r); if (t < 0 && (t += n), r < 0 && (r += n), r > n && (r = n), t >= n || t >= r || 0 === n) return new ArrayBuffer(0); for (var o = new Uint8Array(e), i = new Uint8Array(r - t), s = t, a = 0; s < r; s++, a++)i[a] = o[s]; return i.buffer }; function __noop_1() { } var _$after_1 = function (e, t, r) { var n = !1; return r = r || __noop_1, o.count = e, 0 === e ? t() : o; function o(e, i) { if (o.count <= 0) throw new Error("after called too many times"); --o.count, e ? (n = !0, t(e), t = r) : 0 !== o.count || n || t(null, i) } }, byteArray, byteCount, byteIndex, stringFromCharCode = String.fromCharCode; function ucs2decode(e) { for (var t, r, n = [], o = 0, i = e.length; o < i;)(t = e.charCodeAt(o++)) >= 55296 && t <= 56319 && o < i ? 56320 == (64512 & (r = e.charCodeAt(o++))) ? n.push(((1023 & t) << 10) + (1023 & r) + 65536) : (n.push(t), o--) : n.push(t); return n } function checkScalarValue(e, t) { if (e >= 55296 && e <= 57343) { if (t) throw Error("Lone surrogate U+" + e.toString(16).toUpperCase() + " is not a scalar value"); return !1 } return !0 } function createByte(e, t) { return stringFromCharCode(e >> t & 63 | 128) } function encodeCodePoint(e, t) { if (0 == (4294967168 & e)) return stringFromCharCode(e); var r = ""; return 0 == (4294965248 & e) ? r = stringFromCharCode(e >> 6 & 31 | 192) : 0 == (4294901760 & e) ? (checkScalarValue(e, t) || (e = 65533), r = stringFromCharCode(e >> 12 & 15 | 224), r += createByte(e, 6)) : 0 == (4292870144 & e) && (r = stringFromCharCode(e >> 18 & 7 | 240), r += createByte(e, 12), r += createByte(e, 6)), r + stringFromCharCode(63 & e | 128) } function readContinuationByte() { if (byteIndex >= byteCount) throw Error("Invalid byte index"); var e = 255 & byteArray[byteIndex]; if (byteIndex++, 128 == (192 & e)) return 63 & e; throw Error("Invalid continuation byte") } function decodeSymbol(e) { var t, r; if (byteIndex > byteCount) throw Error("Invalid byte index"); if (byteIndex == byteCount) return !1; if (t = 255 & byteArray[byteIndex], byteIndex++, 0 == (128 & t)) return t; if (192 == (224 & t)) { if ((r = (31 & t) << 6 | readContinuationByte()) >= 128) return r; throw Error("Invalid continuation byte") } if (224 == (240 & t)) { if ((r = (15 & t) << 12 | readContinuationByte() << 6 | readContinuationByte()) >= 2048) return checkScalarValue(r, e) ? r : 65533; throw Error("Invalid continuation byte") } if (240 == (248 & t) && (r = (7 & t) << 18 | readContinuationByte() << 12 | readContinuationByte() << 6 | readContinuationByte()) >= 65536 && r <= 1114111) return r; throw Error("Invalid UTF-8 detected") } var _$utf8_32 = { encode: function (e, t) { for (var r = !1 !== (t = t || {}).strict, n = ucs2decode(e), o = n.length, i = -1, s = ""; ++i < o;)s += encodeCodePoint(n[i], r); return s }, decode: function (e, t) { var r = !1 !== (t = t || {}).strict; byteArray = ucs2decode(e), byteCount = byteArray.length, byteIndex = 0; for (var n, o = []; !1 !== (n = decodeSymbol(r));)o.push(n); return function (e) { for (var t, r = e.length, n = -1, o = ""; ++n < r;)(t = e[n]) > 65535 && (o += stringFromCharCode((t -= 65536) >>> 10 & 1023 | 55296), t = 56320 | 1023 & t), o += stringFromCharCode(t); return o }(o) } }, _$base64Arraybuffer_4 = {}; !function () { "use strict"; for (var e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", t = new Uint8Array(256), r = 0; r < e.length; r++)t[e.charCodeAt(r)] = r; _$base64Arraybuffer_4.encode = function (t) { var r, n = new Uint8Array(t), o = n.length, i = ""; for (r = 0; r < o; r += 3)i += e[n[r] >> 2], i += e[(3 & n[r]) << 4 | n[r + 1] >> 4], i += e[(15 & n[r + 1]) << 2 | n[r + 2] >> 6], i += e[63 & n[r + 2]]; return o % 3 == 2 ? i = i.substring(0, i.length - 1) + "=" : o % 3 == 1 && (i = i.substring(0, i.length - 2) + "=="), i }, _$base64Arraybuffer_4.decode = function (e) { var r, n, o, i, s, a = .75 * e.length, l = e.length, u = 0; "=" === e[e.length - 1] && (a--, "=" === e[e.length - 2] && a--); var c = new ArrayBuffer(a), p = new Uint8Array(c); for (r = 0; r < l; r += 4)n = t[e.charCodeAt(r)], o = t[e.charCodeAt(r + 1)], i = t[e.charCodeAt(r + 2)], s = t[e.charCodeAt(r + 3)], p[u++] = n << 2 | o >> 4, p[u++] = (15 & o) << 4 | i >> 2, p[u++] = (3 & i) << 6 | 63 & s; return c } }(); var _$blob_6 = {}, BlobBuilder = void 0 !== BlobBuilder ? BlobBuilder : "undefined" != typeof WebKitBlobBuilder ? WebKitBlobBuilder : "undefined" != typeof MSBlobBuilder ? MSBlobBuilder : "undefined" != typeof MozBlobBuilder && MozBlobBuilder, blobSupported = function () { try { return 2 === new Blob(["hi"]).size } catch (e) { return !1 } }(), blobSupportsArrayBufferView = blobSupported && function () { try { return 2 === new Blob([new Uint8Array([1, 2])]).size } catch (e) { return !1 } }(), blobBuilderSupported = BlobBuilder && BlobBuilder.prototype.append && BlobBuilder.prototype.getBlob; function mapArrayBufferViews(e) { return e.map(function (e) { if (e.buffer instanceof ArrayBuffer) { var t = e.buffer; if (e.byteLength !== t.byteLength) { var r = new Uint8Array(e.byteLength); r.set(new Uint8Array(t, e.byteOffset, e.byteLength)), t = r.buffer } return t } return e }) } function BlobBuilderConstructor(e, t) { t = t || {}; var r = new BlobBuilder; return mapArrayBufferViews(e).forEach(function (e) { r.append(e) }), t.type ? r.getBlob(t.type) : r.getBlob() } function BlobConstructor(e, t) { return new Blob(mapArrayBufferViews(e), t || {}) } "undefined" != typeof Blob && (BlobBuilderConstructor.prototype = Blob.prototype, BlobConstructor.prototype = Blob.prototype), _$blob_6 = blobSupported ? blobSupportsArrayBufferView ? Blob : BlobConstructor : blobBuilderSupported ? BlobBuilderConstructor : void 0; var _$browser_30 = {}, base64encoder; "undefined" != typeof ArrayBuffer && (base64encoder = _$base64Arraybuffer_4); var isAndroid = "undefined" != typeof navigator && /Android/i.test(navigator.userAgent), isPhantomJS = "undefined" != typeof navigator && /PhantomJS/i.test(navigator.userAgent), dontSendBlobs = isAndroid || isPhantomJS; _$browser_30.protocol = 3; var packets = _$browser_30.packets = { open: 0, close: 1, ping: 2, pong: 3, message: 4, upgrade: 5, noop: 6 }, packetslist = _$keys_31(packets), err = { type: "error", data: "parser error" }; function map(e, t, r) { for (var n = new Array(e.length), o = _$after_1(e.length, r), i = function (e, r, o) { t(r, function (t, r) { n[e] = r, o(t, n) }) }, s = 0; s < e.length; s++)i(s, e[s], o) } _$browser_30.encodePacket = function (e, t, r, n) { "function" == typeof t && (n = t, t = !1), "function" == typeof r && (n = r, r = null); var o = void 0 === e.data ? void 0 : e.data.buffer || e.data; if ("undefined" != typeof ArrayBuffer && o instanceof ArrayBuffer) return function (e, t, r) { if (!t) return _$browser_30.encodeBase64Packet(e, r); var n = e.data, o = new Uint8Array(n), i = new Uint8Array(1 + n.byteLength); i[0] = packets[e.type]; for (var s = 0; s < o.length; s++)i[s + 1] = o[s]; return r(i.buffer) }(e, t, n); if (void 0 !== _$blob_6 && o instanceof _$blob_6) return function (e, t, r) { if (!t) return _$browser_30.encodeBase64Packet(e, r); if (dontSendBlobs) return function (e, t, r) { if (!t) return _$browser_30.encodeBase64Packet(e, r); var n = new FileReader; return n.onload = function () { _$browser_30.encodePacket({ type: e.type, data: n.result }, t, !0, r) }, n.readAsArrayBuffer(e.data) }(e, t, r); var n = new Uint8Array(1); return n[0] = packets[e.type], r(new _$blob_6([n.buffer, e.data])) }(e, t, n); if (o && o.base64) return function (e, t) { return t("b" + _$browser_30.packets[e.type] + e.data.data) }(e, n); var i = packets[e.type]; return void 0 !== e.data && (i += r ? _$utf8_32.encode(String(e.data), { strict: !1 }) : String(e.data)), n("" + i) }, _$browser_30.encodeBase64Packet = function (t, r) { var n, o = "b" + _$browser_30.packets[t.type]; if (void 0 !== _$blob_6 && t.data instanceof _$blob_6) { var i = new FileReader; return i.onload = function () { var e = i.result.split(",")[1]; r(o + e) }, i.readAsDataURL(t.data) } try { n = String.fromCharCode.apply(null, new Uint8Array(t.data)) } catch (e) { for (var s = new Uint8Array(t.data), a = new Array(s.length), l = 0; l < s.length; l++)a[l] = s[l]; n = String.fromCharCode.apply(null, a) } return o += btoa(n), r(o) }, _$browser_30.decodePacket = function (t, r, n) { if (void 0 === t) return err; if ("string" == typeof t) { if ("b" === t.charAt(0)) return _$browser_30.decodeBase64Packet(t.substr(1), r); if (n && !1 === (t = function (t) { try { t = _$utf8_32.decode(t, { strict: !1 }) } catch (e) { return !1 } return t }(t))) return err; var o = t.charAt(0); return Number(o) == o && packetslist[o] ? t.length > 1 ? { type: packetslist[o], data: t.substring(1) } : { type: packetslist[o] } : err } o = new Uint8Array(t)[0]; var i = _$arraybufferSlice_2(t, 1); return _$blob_6 && "blob" === r && (i = new _$blob_6([i])), { type: packetslist[o], data: i } }, _$browser_30.decodeBase64Packet = function (e, t) { var r = packetslist[e.charAt(0)]; if (!base64encoder) return { type: r, data: { base64: !0, data: e.substr(1) } }; var n = base64encoder.decode(e.substr(1)); return "blob" === t && _$blob_6 && (n = new _$blob_6([n])), { type: r, data: n } }, _$browser_30.encodePayload = function (e, t, r) { "function" == typeof t && (r = t, t = null); var n = _$hasBinary_38(e); return t && n ? _$blob_6 && !dontSendBlobs ? _$browser_30.encodePayloadAsBlob(e, r) : _$browser_30.encodePayloadAsArrayBuffer(e, r) : e.length ? void map(e, function (e, r) { _$browser_30.encodePacket(e, !!n && t, !1, function (e) { r(null, function (e) { return e.length + ":" + e }(e)) }) }, function (e, t) { return r(t.join("")) }) : r("0:") }, _$browser_30.decodePayload = function (e, t, r) { if ("string" != typeof e) return _$browser_30.decodePayloadAsBinary(e, t, r); var n; if ("function" == typeof t && (r = t, t = null), "" === e) return r(err, 0, 1); for (var o, i, s = "", a = 0, l = e.length; a < l; a++) { var u = e.charAt(a); if (":" === u) { if ("" === s || s != (o = Number(s))) return r(err, 0, 1); if (s != (i = e.substr(a + 1, o)).length) return r(err, 0, 1); if (i.length) { if (n = _$browser_30.decodePacket(i, t, !1), err.type === n.type && err.data === n.data) return r(err, 0, 1); if (!1 === r(n, a + o, l)) return } a += o, s = "" } else s += u } return "" !== s ? r(err, 0, 1) : void 0 }, _$browser_30.encodePayloadAsArrayBuffer = function (e, t) { if (!e.length) return t(new ArrayBuffer(0)); map(e, function (e, t) { _$browser_30.encodePacket(e, !0, !0, function (e) { return t(null, e) }) }, function (e, r) { var n = r.reduce(function (e, t) { var r; return e + (r = "string" == typeof t ? t.length : t.byteLength).toString().length + r + 2 }, 0), o = new Uint8Array(n), i = 0; return r.forEach(function (e) { var t = "string" == typeof e, r = e; if (t) { for (var n = new Uint8Array(e.length), s = 0; s < e.length; s++)n[s] = e.charCodeAt(s); r = n.buffer } o[i++] = t ? 0 : 1; var a = r.byteLength.toString(); for (s = 0; s < a.length; s++)o[i++] = parseInt(a[s]); for (o[i++] = 255, n = new Uint8Array(r), s = 0; s < n.length; s++)o[i++] = n[s] }), t(o.buffer) }) }, _$browser_30.encodePayloadAsBlob = function (e, t) { map(e, function (e, t) { _$browser_30.encodePacket(e, !0, !0, function (e) { var r = new Uint8Array(1); if (r[0] = 1, "string" == typeof e) { for (var n = new Uint8Array(e.length), o = 0; o < e.length; o++)n[o] = e.charCodeAt(o); e = n.buffer, r[0] = 0 } var i = (e instanceof ArrayBuffer ? e.byteLength : e.size).toString(), s = new Uint8Array(i.length + 1); for (o = 0; o < i.length; o++)s[o] = parseInt(i[o]); if (s[i.length] = 255, _$blob_6) { var a = new _$blob_6([r.buffer, s.buffer, e]); t(null, a) } }) }, function (e, r) { return t(new _$blob_6(r)) }) }, _$browser_30.decodePayloadAsBinary = function (t, r, n) { "function" == typeof r && (n = r, r = null); for (var o = t, i = []; o.byteLength > 0;) { for (var s = new Uint8Array(o), a = 0 === s[0], l = "", u = 1; 255 !== s[u]; u++) { if (l.length > 310) return n(err, 0, 1); l += s[u] } o = _$arraybufferSlice_2(o, 2 + l.length), l = parseInt(l); var c = _$arraybufferSlice_2(o, 0, l); if (a) try { c = String.fromCharCode.apply(null, new Uint8Array(c)) } catch (e) { var p = new Uint8Array(c); for (c = "", u = 0; u < p.length; u++)c += String.fromCharCode(p[u]) } i.push(c), o = _$arraybufferSlice_2(o, l) } var d = i.length; i.forEach(function (e, t) { n(_$browser_30.decodePacket(e, r, !0), t, d) }) }; var _$transport_19 = {}; function Transport(e) { this.path = e.path, this.hostname = e.hostname, this.port = e.port, this.secure = e.secure, this.query = e.query, this.timestampParam = e.timestampParam, this.timestampRequests = e.timestampRequests, this.readyState = "", this.agent = e.agent || !1, this.socket = e.socket, this.enablesXDR = e.enablesXDR, this.pfx = e.pfx, this.key = e.key, this.passphrase = e.passphrase, this.cert = e.cert, this.ca = e.ca, this.ciphers = e.ciphers, this.rejectUnauthorized = e.rejectUnauthorized, this.forceNode = e.forceNode, this.isReactNative = e.isReactNative, this.extraHeaders = e.extraHeaders, this.localAddress = e.localAddress } _$transport_19 = Transport, _$componentEmitter_26(Transport.prototype), Transport.prototype.onError = function (e, t) { var r = new Error(e); return r.type = "TransportError", r.description = t, this.emit("error", r), this }, Transport.prototype.open = function () { return "closed" !== this.readyState && "" !== this.readyState || (this.readyState = "opening", this.doOpen()), this }, Transport.prototype.close = function () { return "opening" !== this.readyState && "open" !== this.readyState || (this.doClose(), this.onClose()), this }, Transport.prototype.send = function (e) { if ("open" !== this.readyState) throw new Error("Transport not open"); this.write(e) }, Transport.prototype.onOpen = function () { this.readyState = "open", this.writable = !0, this.emit("open") }, Transport.prototype.onData = function (e) { var t = _$browser_30.decodePacket(e, this.socket.binaryType); this.onPacket(t) }, Transport.prototype.onPacket = function (e) { this.emit("packet", e) }, Transport.prototype.onClose = function () { this.readyState = "closed", this.emit("close") }; var _$hasCors_40 = {}; try { _$hasCors_40 = "undefined" != typeof XMLHttpRequest && "withCredentials" in new XMLHttpRequest } catch (err) { _$hasCors_40 = !1 } var _$xmlhttprequest_25 = function (t) { var r = t.xdomain, n = t.xscheme, o = t.enablesXDR; try { if ("undefined" != typeof XMLHttpRequest && (!r || _$hasCors_40)) return new XMLHttpRequest } catch (e) { } try { if ("undefined" != typeof XDomainRequest && !n && o) return new XDomainRequest } catch (e) { } if (!r) try { return new (self[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP") } catch (e) { } }, _$componentInherit_12 = function (e, t) { var r = function () { }; r.prototype = t.prototype, e.prototype = new r, e.prototype.constructor = e }, _$yeast_79 = {}, prev, alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""), length = 64, __map_79 = {}, seed = 0, __i_79 = 0; function encode(e) { var t = ""; do { t = alphabet[e % length] + t, e = Math.floor(e / length) } while (e > 0); return t } function yeast() { var e = encode(+new Date); return e !== prev ? (seed = 0, prev = e) : e + "." + encode(seed++) } for (; __i_79 < length; __i_79++)__map_79[alphabet[__i_79]] = __i_79; yeast.encode = encode, yeast.decode = function (e) { var t = 0; for (__i_79 = 0; __i_79 < e.length; __i_79++)t = t * length + __map_79[e.charAt(__i_79)]; return t }, _$yeast_79 = yeast; var __debug_23 = _$browser_27("engine.io-client:polling"), _$Polling_23 = Polling, hasXHR2 = null != new _$xmlhttprequest_25({ xdomain: !1 }).responseType; function Polling(e) { var t = e && e.forceBase64; hasXHR2 && !t || (this.supportsBinary = !1), _$transport_19.call(this, e) } _$componentInherit_12(Polling, _$transport_19), Polling.prototype.name = "polling", Polling.prototype.doOpen = function () { this.poll() }, Polling.prototype.pause = function (e) { var t = this; function r() { __debug_23("paused"), t.readyState = "paused", e() } if (this.readyState = "pausing", this.polling || !this.writable) { var n = 0; this.polling && (__debug_23("we are currently polling - waiting to pause"), n++, this.once("pollComplete", function () { __debug_23("pre-pause polling complete"), --n || r() })), this.writable || (__debug_23("we are currently writing - waiting to pause"), n++, this.once("drain", function () { __debug_23("pre-pause writing complete"), --n || r() })) } else r() }, Polling.prototype.poll = function () { __debug_23("polling"), this.polling = !0, this.doPoll(), this.emit("poll") }, Polling.prototype.onData = function (e) { var t = this; __debug_23("polling got data %s", e), _$browser_30.decodePayload(e, this.socket.binaryType, function (e, r, n) { if ("opening" === t.readyState && t.onOpen(), "close" === e.type) return t.onClose(), !1; t.onPacket(e) }), "closed" !== this.readyState && (this.polling = !1, this.emit("pollComplete"), "open" === this.readyState ? this.poll() : __debug_23('ignoring poll - transport state "%s"', this.readyState)) }, Polling.prototype.doClose = function () { var e = this; function t() { __debug_23("writing close packet"), e.write([{ type: "close" }]) } "open" === this.readyState ? (__debug_23("transport open - closing"), t()) : (__debug_23("transport not open - deferring close"), this.once("open", t)) }, Polling.prototype.write = function (e) { var t = this; this.writable = !1; var r = function () { t.writable = !0, t.emit("drain") }; _$browser_30.encodePayload(e, this.supportsBinary, function (e) { t.doWrite(e, r) }) }, Polling.prototype.uri = function () { var e = this.query || {}, t = this.secure ? "https" : "http", r = ""; return !1 !== this.timestampRequests && (e[this.timestampParam] = _$yeast_79()), this.supportsBinary || e.sid || (e.b64 = 1), e = _$parseqs_50.encode(e), this.port && ("https" === t && 443 !== Number(this.port) || "http" === t && 80 !== Number(this.port)) && (r = ":" + this.port), e.length && (e = "?" + e), t + "://" + (-1 !== this.hostname.indexOf(":") ? "[" + this.hostname + "]" : this.hostname) + r + this.path + e }; var _$pollingXhr_22 = {}, __debug_22 = _$browser_27("engine.io-client:polling-xhr"); function empty() { } function XHR(e) { if (_$Polling_23.call(this, e), this.requestTimeout = e.requestTimeout, this.extraHeaders = e.extraHeaders, "undefined" != typeof location) { var t = "https:" === location.protocol, r = location.port; r || (r = t ? 443 : 80), this.xd = "undefined" != typeof location && e.hostname !== location.hostname || r !== e.port, this.xs = e.secure !== t } } function Request(e) { this.method = e.method || "GET", this.uri = e.uri, this.xd = !!e.xd, this.xs = !!e.xs, this.async = !1 !== e.async, this.data = void 0 !== e.data ? e.data : null, this.agent = e.agent, this.isBinary = e.isBinary, this.supportsBinary = e.supportsBinary, this.enablesXDR = e.enablesXDR, this.requestTimeout = e.requestTimeout, this.pfx = e.pfx, this.key = e.key, this.passphrase = e.passphrase, this.cert = e.cert, this.ca = e.ca, this.ciphers = e.ciphers, this.rejectUnauthorized = e.rejectUnauthorized, this.extraHeaders = e.extraHeaders, this.create() } if (_$pollingXhr_22 = XHR, _$pollingXhr_22.Request = Request, _$componentInherit_12(XHR, _$Polling_23), XHR.prototype.supportsBinary = !0, XHR.prototype.request = function (e) { return (e = e || {}).uri = this.uri(), e.xd = this.xd, e.xs = this.xs, e.agent = this.agent || !1, e.supportsBinary = this.supportsBinary, e.enablesXDR = this.enablesXDR, e.pfx = this.pfx, e.key = this.key, e.passphrase = this.passphrase, e.cert = this.cert, e.ca = this.ca, e.ciphers = this.ciphers, e.rejectUnauthorized = this.rejectUnauthorized, e.requestTimeout = this.requestTimeout, e.extraHeaders = this.extraHeaders, new Request(e) }, XHR.prototype.doWrite = function (e, t) { var r = "string" != typeof e && void 0 !== e, n = this.request({ method: "POST", data: e, isBinary: r }), o = this; n.on("success", t), n.on("error", function (e) { o.onError("xhr post error", e) }), this.sendXhr = n }, XHR.prototype.doPoll = function () { __debug_22("xhr poll"); var e = this.request(), t = this; e.on("data", function (e) { t.onData(e) }), e.on("error", function (e) { t.onError("xhr poll error", e) }), this.pollXhr = e }, _$componentEmitter_26(Request.prototype), Request.prototype.create = function () { var t = { agent: this.agent, xdomain: this.xd, xscheme: this.xs, enablesXDR: this.enablesXDR }; t.pfx = this.pfx, t.key = this.key, t.passphrase = this.passphrase, t.cert = this.cert, t.ca = this.ca, t.ciphers = this.ciphers, t.rejectUnauthorized = this.rejectUnauthorized; var r = this.xhr = new _$xmlhttprequest_25(t), n = this; try { __debug_22("xhr open %s: %s", this.method, this.uri), r.open(this.method, this.uri, this.async); try { if (this.extraHeaders) for (var o in r.setDisableHeaderCheck && r.setDisableHeaderCheck(!0), this.extraHeaders) this.extraHeaders.hasOwnProperty(o) && r.setRequestHeader(o, this.extraHeaders[o]) } catch (e) { } if ("POST" === this.method) try { this.isBinary ? r.setRequestHeader("Content-type", "application/octet-stream") : r.setRequestHeader("Content-type", "text/plain;charset=UTF-8") } catch (e) { } try { r.setRequestHeader("Accept", "*/*") } catch (e) { } "withCredentials" in r && (r.withCredentials = !0), this.requestTimeout && (r.timeout = this.requestTimeout), this.hasXDR() ? (r.onload = function () { n.onLoad() }, r.onerror = function () { n.onError(r.responseText) }) : r.onreadystatechange = function () { if (2 === r.readyState) try { var t = r.getResponseHeader("Content-Type"); n.supportsBinary && "application/octet-stream" === t && (r.responseType = "arraybuffer") } catch (e) { } 4 === r.readyState && (200 === r.status || 1223 === r.status ? n.onLoad() : setTimeout(function () { n.onError(r.status) }, 0)) }, __debug_22("xhr data %s", this.data), r.send(this.data) } catch (e) { return void setTimeout(function () { n.onError(e) }, 0) } "undefined" != typeof document && (this.index = Request.requestsCount++, Request.requests[this.index] = this) }, Request.prototype.onSuccess = function () { this.emit("success"), this.cleanup() }, Request.prototype.onData = function (e) { this.emit("data", e), this.onSuccess() }, Request.prototype.onError = function (e) { this.emit("error", e), this.cleanup(!0) }, Request.prototype.cleanup = function (t) { if (void 0 !== this.xhr && null !== this.xhr) { if (this.hasXDR() ? this.xhr.onload = this.xhr.onerror = empty : this.xhr.onreadystatechange = empty, t) try { this.xhr.abort() } catch (e) { } "undefined" != typeof document && delete Request.requests[this.index], this.xhr = null } }, Request.prototype.onLoad = function () { var t; try { var r; try { r = this.xhr.getResponseHeader("Content-Type") } catch (e) { } t = "application/octet-stream" === r && this.xhr.response || this.xhr.responseText } catch (e) { this.onError(e) } null != t && this.onData(t) }, Request.prototype.hasXDR = function () { return "undefined" != typeof XDomainRequest && !this.xs && this.enablesXDR }, Request.prototype.abort = function () { this.cleanup() }, Request.requestsCount = 0, Request.requests = {}, "undefined" != typeof document) if ("function" == typeof attachEvent) attachEvent("onunload", unloadHandler); else if ("function" == typeof addEventListener) { var terminationEvent = "onpagehide" in self ? "pagehide" : "unload"; addEventListener(terminationEvent, unloadHandler, !1) } function unloadHandler() { for (var e in Request.requests) Request.requests.hasOwnProperty(e) && Request.requests[e].abort() } var _$JSONPPolling_21 = {}; (function (t) { _$JSONPPolling_21 = a; var r, n = /\n/g, o = /\\n/g; function i() { } function s() { return "undefined" != typeof self ? self : "undefined" != typeof window ? window : void 0 !== t ? t : {} } function a(e) { if (_$Polling_23.call(this, e), this.query = this.query || {}, !r) { var t = s(); r = t.___eio = t.___eio || [] } this.index = r.length; var n = this; r.push(function (e) { n.onData(e) }), this.query.j = this.index, "function" == typeof addEventListener && addEventListener("beforeunload", function () { n.script && (n.script.onerror = i) }, !1) } _$componentInherit_12(a, _$Polling_23), a.prototype.supportsBinary = !1, a.prototype.doClose = function () { this.script && (this.script.parentNode.removeChild(this.script), this.script = null), this.form && (this.form.parentNode.removeChild(this.form), this.form = null, this.iframe = null), _$Polling_23.prototype.doClose.call(this) }, a.prototype.doPoll = function () { var e = this, t = document.createElement("script"); this.script && (this.script.parentNode.removeChild(this.script), this.script = null), t.async = !0, t.src = this.uri(), t.onerror = function (t) { e.onError("jsonp poll error", t) }; var r = document.getElementsByTagName("script")[0]; r ? r.parentNode.insertBefore(t, r) : (document.head || document.body).appendChild(t), this.script = t, "undefined" != typeof navigator && /gecko/i.test(navigator.userAgent) && setTimeout(function () { var e = document.createElement("iframe"); document.body.appendChild(e), document.body.removeChild(e) }, 100) }, a.prototype.doWrite = function (t, r) { var i = this; if (!this.form) { var s, a = document.createElement("form"), l = document.createElement("textarea"), u = this.iframeId = "eio_iframe_" + this.index; a.className = "socketio", a.style.position = "absolute", a.style.top = "-1000px", a.style.left = "-1000px", a.target = u, a.method = "POST", a.setAttribute("accept-charset", "utf-8"), l.name = "d", a.appendChild(l), document.body.appendChild(a), this.form = a, this.area = l } function c() { p(), r() } function p() { if (i.iframe) try { i.form.removeChild(i.iframe) } catch (e) { i.onError("jsonp polling iframe removal error", e) } try { var t = '<iframe src="javascript:0" name="' + i.iframeId + '">'; s = document.createElement(t) } catch (e) { (s = document.createElement("iframe")).name = i.iframeId, s.src = "javascript:0" } s.id = i.iframeId, i.form.appendChild(s), i.iframe = s } this.form.action = this.uri(), p(), t = t.replace(o, "\\\n"), this.area.value = t.replace(n, "\\n"); try { this.form.submit() } catch (e) { } this.iframe.attachEvent ? this.iframe.onreadystatechange = function () { "complete" === i.iframe.readyState && c() } : this.iframe.onload = c } }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}); var _$websocket_24 = {}; (function (t) { var r, n, o = _$browser_27("engine.io-client:websocket"); if ("undefined" != typeof WebSocket) r = WebSocket; else if ("undefined" != typeof self) r = self.WebSocket || self.MozWebSocket; else try { n = _$empty_7({}) } catch (e) { } var i = r || n; function s(e) { e && e.forceBase64 && (this.supportsBinary = !1), this.perMessageDeflate = e.perMessageDeflate, this.usingBrowserWebSocket = r && !e.forceNode, this.protocols = e.protocols, this.usingBrowserWebSocket || (i = n), _$transport_19.call(this, e) } _$websocket_24 = s, _$componentInherit_12(s, _$transport_19), s.prototype.name = "websocket", s.prototype.supportsBinary = !0, s.prototype.doOpen = function () { if (this.check()) { var e = this.uri(), t = this.protocols, r = { agent: this.agent, perMessageDeflate: this.perMessageDeflate }; r.pfx = this.pfx, r.key = this.key, r.passphrase = this.passphrase, r.cert = this.cert, r.ca = this.ca, r.ciphers = this.ciphers, r.rejectUnauthorized = this.rejectUnauthorized, this.extraHeaders && (r.headers = this.extraHeaders), this.localAddress && (r.localAddress = this.localAddress); try { this.ws = this.usingBrowserWebSocket && !this.isReactNative ? t ? new i(e, t) : new i(e) : new i(e, t, r) } catch (err) { return this.emit("error", err) } void 0 === this.ws.binaryType && (this.supportsBinary = !1), this.ws.supports && this.ws.supports.binary ? (this.supportsBinary = !0, this.ws.binaryType = "nodebuffer") : this.ws.binaryType = "arraybuffer", this.addEventListeners() } }, s.prototype.addEventListeners = function () { var e = this; this.ws.onopen = function () { e.onOpen() }, this.ws.onclose = function () { e.onClose() }, this.ws.onmessage = function (t) { e.onData(t.data) }, this.ws.onerror = function (t) { e.onError("websocket error", t) } }, s.prototype.write = function (r) { var n = this; this.writable = !1; for (var i = r.length, s = 0, a = i; s < a; s++)!function (r) { _$browser_30.encodePacket(r, n.supportsBinary, function (s) { if (!n.usingBrowserWebSocket) { var a = {}; r.options && (a.compress = r.options.compress), n.perMessageDeflate && ("string" == typeof s ? t.byteLength(s) : s.length) < n.perMessageDeflate.threshold && (a.compress = !1) } try { n.usingBrowserWebSocket ? n.ws.send(s) : n.ws.send(s, a) } catch (e) { o("websocket closed before onclose event") } --i || (n.emit("flush"), setTimeout(function () { n.writable = !0, n.emit("drain") }, 0)) }) }(r[s]) }, s.prototype.onClose = function () { _$transport_19.prototype.onClose.call(this) }, s.prototype.doClose = function () { void 0 !== this.ws && this.ws.close() }, s.prototype.uri = function () { var e = this.query || {}, t = this.secure ? "wss" : "ws", r = ""; return this.port && ("wss" === t && 443 !== Number(this.port) || "ws" === t && 80 !== Number(this.port)) && (r = ":" + this.port), this.timestampRequests && (e[this.timestampParam] = _$yeast_79()), this.supportsBinary || (e.b64 = 1), (e = _$parseqs_50.encode(e)).length && (e = "?" + e), t + "://" + (-1 !== this.hostname.indexOf(":") ? "[" + this.hostname + "]" : this.hostname) + r + this.path + e }, s.prototype.check = function () { return !(!i || "__initialize" in i && this.name === s.prototype.name) } }).call(this, _$buffer_8({}).Buffer); var _$transports_20 = { polling: function (e) { var t = !1, r = !1, n = !1 !== e.jsonp; if ("undefined" != typeof location) { var o = "https:" === location.protocol, i = location.port; i || (i = o ? 443 : 80), t = e.hostname !== location.hostname || i !== e.port, r = e.secure !== o } if (e.xdomain = t, e.xscheme = r, "open" in new _$xmlhttprequest_25(e) && !e.forceJSONP) return new _$pollingXhr_22(e); if (!n) throw new Error("JSONP disabled"); return new _$JSONPPolling_21(e) } }; _$transports_20.websocket = _$websocket_24; var _$socket_18 = {}, __debug_18 = _$browser_27("engine.io-client:socket"); function __Socket_18(e, t) { if (!(this instanceof __Socket_18)) return new __Socket_18(e, t); t = t || {}, e && "object" == typeof e && (t = e, e = null), e ? (e = _$parseuri_51(e), t.hostname = e.host, t.secure = "https" === e.protocol || "wss" === e.protocol, t.port = e.port, e.query && (t.query = e.query)) : t.host && (t.hostname = _$parseuri_51(t.host).host), this.secure = null != t.secure ? t.secure : "undefined" != typeof location && "https:" === location.protocol, t.hostname && !t.port && (t.port = this.secure ? "443" : "80"), this.agent = t.agent || !1, this.hostname = t.hostname || ("undefined" != typeof location ? location.hostname : "localhost"), this.port = t.port || ("undefined" != typeof location && location.port ? location.port : this.secure ? 443 : 80), this.query = t.query || {}, "string" == typeof this.query && (this.query = _$parseqs_50.decode(this.query)), this.upgrade = !1 !== t.upgrade, this.path = (t.path || "/engine.io").replace(/\/$/, "") + "/", this.forceJSONP = !!t.forceJSONP, this.jsonp = !1 !== t.jsonp, this.forceBase64 = !!t.forceBase64, this.enablesXDR = !!t.enablesXDR, this.timestampParam = t.timestampParam || "t", this.timestampRequests = t.timestampRequests, this.transports = t.transports || ["polling", "websocket"], this.transportOptions = t.transportOptions || {}, this.readyState = "", this.writeBuffer = [], this.prevBufferLen = 0, this.policyPort = t.policyPort || 843, this.rememberUpgrade = t.rememberUpgrade || !1, this.binaryType = null, this.onlyBinaryUpgrades = t.onlyBinaryUpgrades, this.perMessageDeflate = !1 !== t.perMessageDeflate && (t.perMessageDeflate || {}), !0 === this.perMessageDeflate && (this.perMessageDeflate = {}), this.perMessageDeflate && null == this.perMessageDeflate.threshold && (this.perMessageDeflate.threshold = 1024), this.pfx = t.pfx || null, this.key = t.key || null, this.passphrase = t.passphrase || null, this.cert = t.cert || null, this.ca = t.ca || null, this.ciphers = t.ciphers || null, this.rejectUnauthorized = void 0 === t.rejectUnauthorized || t.rejectUnauthorized, this.forceNode = !!t.forceNode, this.isReactNative = "undefined" != typeof navigator && "string" == typeof navigator.product && "reactnative" === navigator.product.toLowerCase(), ("undefined" == typeof self || this.isReactNative) && (t.extraHeaders && Object.keys(t.extraHeaders).length > 0 && (this.extraHeaders = t.extraHeaders), t.localAddress && (this.localAddress = t.localAddress)), this.id = null, this.upgrades = null, this.pingInterval = null, this.pingTimeout = null, this.pingIntervalTimer = null, this.pingTimeoutTimer = null, this.open() } _$socket_18 = __Socket_18, __Socket_18.priorWebsocketSuccess = !1, _$componentEmitter_26(__Socket_18.prototype), __Socket_18.protocol = _$browser_30.protocol, __Socket_18.Socket = __Socket_18, __Socket_18.Transport = _$transport_19, __Socket_18.transports = _$transports_20, __Socket_18.parser = _$browser_30, __Socket_18.prototype.createTransport = function (e) { __debug_18('creating transport "%s"', e); var t = function (e) { var t = {}; for (var r in e) e.hasOwnProperty(r) && (t[r] = e[r]); return t }(this.query); t.EIO = _$browser_30.protocol, t.transport = e; var r = this.transportOptions[e] || {}; return this.id && (t.sid = this.id), new _$transports_20[e]({ query: t, socket: this, agent: r.agent || this.agent, hostname: r.hostname || this.hostname, port: r.port || this.port, secure: r.secure || this.secure, path: r.path || this.path, forceJSONP: r.forceJSONP || this.forceJSONP, jsonp: r.jsonp || this.jsonp, forceBase64: r.forceBase64 || this.forceBase64, enablesXDR: r.enablesXDR || this.enablesXDR, timestampRequests: r.timestampRequests || this.timestampRequests, timestampParam: r.timestampParam || this.timestampParam, policyPort: r.policyPort || this.policyPort, pfx: r.pfx || this.pfx, key: r.key || this.key, passphrase: r.passphrase || this.passphrase, cert: r.cert || this.cert, ca: r.ca || this.ca, ciphers: r.ciphers || this.ciphers, rejectUnauthorized: r.rejectUnauthorized || this.rejectUnauthorized, perMessageDeflate: r.perMessageDeflate || this.perMessageDeflate, extraHeaders: r.extraHeaders || this.extraHeaders, forceNode: r.forceNode || this.forceNode, localAddress: r.localAddress || this.localAddress, requestTimeout: r.requestTimeout || this.requestTimeout, protocols: r.protocols || void 0, isReactNative: this.isReactNative }) }, __Socket_18.prototype.open = function () { var t; if (this.rememberUpgrade && __Socket_18.priorWebsocketSuccess && -1 !== this.transports.indexOf("websocket")) t = "websocket"; else { if (0 === this.transports.length) { var r = this; return void setTimeout(function () { r.emit("error", "No transports available") }, 0) } t = this.transports[0] } this.readyState = "opening"; try { t = this.createTransport(t) } catch (e) { return this.transports.shift(), void this.open() } t.open(), this.setTransport(t) }, __Socket_18.prototype.setTransport = function (e) { __debug_18("setting transport %s", e.name); var t = this; this.transport && (__debug_18("clearing existing transport %s", this.transport.name), this.transport.removeAllListeners()), this.transport = e, e.on("drain", function () { t.onDrain() }).on("packet", function (e) { t.onPacket(e) }).on("error", function (e) { t.onError(e) }).on("close", function () { t.onClose("transport close") }) }, __Socket_18.prototype.probe = function (e) { __debug_18('probing transport "%s"', e); var t = this.createTransport(e, { probe: 1 }), r = !1, n = this; function o() { if (n.onlyBinaryUpgrades) { var o = !this.supportsBinary && n.transport.supportsBinary; r = r || o } r || (__debug_18('probe transport "%s" opened', e), t.send([{ type: "ping", data: "probe" }]), t.once("packet", function (o) { if (!r) if ("pong" === o.type && "probe" === o.data) { if (__debug_18('probe transport "%s" pong', e), n.upgrading = !0, n.emit("upgrading", t), !t) return; __Socket_18.priorWebsocketSuccess = "websocket" === t.name, __debug_18('pausing current transport "%s"', n.transport.name), n.transport.pause(function () { r || "closed" !== n.readyState && (__debug_18("changing transport and sending upgrade packet"), c(), n.setTransport(t), t.send([{ type: "upgrade" }]), n.emit("upgrade", t), t = null, n.upgrading = !1, n.flush()) }) } else { __debug_18('probe transport "%s" failed', e); var i = new Error("probe error"); i.transport = t.name, n.emit("upgradeError", i) } })) } function i() { r || (r = !0, c(), t.close(), t = null) } function s(r) { var o = new Error("probe error: " + r); o.transport = t.name, i(), __debug_18('probe transport "%s" failed because of error: %s', e, r), n.emit("upgradeError", o) } function a() { s("transport closed") } function l() { s("socket closed") } function u(e) { t && e.name !== t.name && (__debug_18('"%s" works - aborting "%s"', e.name, t.name), i()) } function c() { t.removeListener("open", o), t.removeListener("error", s), t.removeListener("close", a), n.removeListener("close", l), n.removeListener("upgrading", u) } __Socket_18.priorWebsocketSuccess = !1, t.once("open", o), t.once("error", s), t.once("close", a), this.once("close", l), this.once("upgrading", u), t.open() }, __Socket_18.prototype.onOpen = function () { if (__debug_18("socket open"), this.readyState = "open", __Socket_18.priorWebsocketSuccess = "websocket" === this.transport.name, this.emit("open"), this.flush(), "open" === this.readyState && this.upgrade && this.transport.pause) { __debug_18("starting upgrade probes"); for (var e = 0, t = this.upgrades.length; e < t; e++)this.probe(this.upgrades[e]) } }, __Socket_18.prototype.onPacket = function (e) { if ("opening" === this.readyState || "open" === this.readyState || "closing" === this.readyState) switch (__debug_18('socket receive: type "%s", data "%s"', e.type, e.data), this.emit("packet", e), this.emit("heartbeat"), e.type) { case "open": this.onHandshake(JSON.parse(e.data)); break; case "pong": this.setPing(), this.emit("pong"); break; case "error": var t = new Error("server error"); t.code = e.data, this.onError(t); break; case "message": this.emit("data", e.data), this.emit("message", e.data) } else __debug_18('packet received with socket readyState "%s"', this.readyState) }, __Socket_18.prototype.onHandshake = function (e) { this.emit("handshake", e), this.id = e.sid, this.transport.query.sid = e.sid, this.upgrades = this.filterUpgrades(e.upgrades), this.pingInterval = e.pingInterval, this.pingTimeout = e.pingTimeout, this.onOpen(), "closed" !== this.readyState && (this.setPing(), this.removeListener("heartbeat", this.onHeartbeat), this.on("heartbeat", this.onHeartbeat)) }, __Socket_18.prototype.onHeartbeat = function (e) { clearTimeout(this.pingTimeoutTimer); var t = this; t.pingTimeoutTimer = setTimeout(function () { "closed" !== t.readyState && t.onClose("ping timeout") }, e || t.pingInterval + t.pingTimeout) }, __Socket_18.prototype.setPing = function () { var e = this; clearTimeout(e.pingIntervalTimer), e.pingIntervalTimer = setTimeout(function () { __debug_18("writing ping packet - expecting pong within %sms", e.pingTimeout), e.ping(), e.onHeartbeat(e.pingTimeout) }, e.pingInterval) }, __Socket_18.prototype.ping = function () { var e = this; this.sendPacket("ping", function () { e.emit("ping") }) }, __Socket_18.prototype.onDrain = function () { this.writeBuffer.splice(0, this.prevBufferLen), this.prevBufferLen = 0, 0 === this.writeBuffer.length ? this.emit("drain") : this.flush() }, __Socket_18.prototype.flush = function () { "closed" !== this.readyState && this.transport.writable && !this.upgrading && this.writeBuffer.length && (__debug_18("flushing %d packets in socket", this.writeBuffer.length), this.transport.send(this.writeBuffer), this.prevBufferLen = this.writeBuffer.length, this.emit("flush")) }, __Socket_18.prototype.write = __Socket_18.prototype.send = function (e, t, r) { return this.sendPacket("message", e, t, r), this }, __Socket_18.prototype.sendPacket = function (e, t, r, n) { if ("function" == typeof t && (n = t, t = void 0), "function" == typeof r && (n = r, r = null), "closing" !== this.readyState && "closed" !== this.readyState) { (r = r || {}).compress = !1 !== r.compress; var o = { type: e, data: t, options: r }; this.emit("packetCreate", o), this.writeBuffer.push(o), n && this.once("flush", n), this.flush() } }, __Socket_18.prototype.close = function () { if ("opening" === this.readyState || "open" === this.readyState) { this.readyState = "closing"; var e = this; this.writeBuffer.length ? this.once("drain", function () { this.upgrading ? n() : t() }) : this.upgrading ? n() : t() } function t() { e.onClose("forced close"), __debug_18("socket closing - telling transport to close"), e.transport.close() } function r() { e.removeListener("upgrade", r), e.removeListener("upgradeError", r), t() } function n() { e.once("upgrade", r), e.once("upgradeError", r) } return this }, __Socket_18.prototype.onError = function (e) { __debug_18("socket error %j", e), __Socket_18.priorWebsocketSuccess = !1, this.emit("error", e), this.onClose("transport error", e) }, __Socket_18.prototype.onClose = function (e, t) { "opening" !== this.readyState && "open" !== this.readyState && "closing" !== this.readyState || (__debug_18('socket close with reason: "%s"', e), clearTimeout(this.pingIntervalTimer), clearTimeout(this.pingTimeoutTimer), this.transport.removeAllListeners("close"), this.transport.close(), this.transport.removeAllListeners(), this.readyState = "closed", this.id = null, this.emit("close", e, t), this.writeBuffer = [], this.prevBufferLen = 0) }, __Socket_18.prototype.filterUpgrades = function (e) { for (var t = [], r = 0, n = e.length; r < n; r++)~_$indexof_42(this.transports, e[r]) && t.push(e[r]); return t }; var _$lib_17 = {}; _$lib_17 = _$socket_18, _$lib_17.parser = _$browser_30; var _$componentEmitter_63 = { exports: {} }; function __Emitter_63(e) { if (e) return function (e) { for (var t in __Emitter_63.prototype) e[t] = __Emitter_63.prototype[t]; return e }(e) } _$componentEmitter_63.exports = __Emitter_63, __Emitter_63.prototype.on = __Emitter_63.prototype.addEventListener = function (e, t) { return this._callbacks = this._callbacks || {}, (this._callbacks["$" + e] = this._callbacks["$" + e] || []).push(t), this }, __Emitter_63.prototype.once = function (e, t) { function r() { this.off(e, r), t.apply(this, arguments) } return r.fn = t, this.on(e, r), this }, __Emitter_63.prototype.off = __Emitter_63.prototype.removeListener = __Emitter_63.prototype.removeAllListeners = __Emitter_63.prototype.removeEventListener = function (e, t) { if (this._callbacks = this._callbacks || {}, 0 == arguments.length) return this._callbacks = {}, this; var r, n = this._callbacks["$" + e]; if (!n) return this; if (1 == arguments.length) return delete this._callbacks["$" + e], this; for (var o = 0; o < n.length; o++)if ((r = n[o]) === t || r.fn === t) { n.splice(o, 1); break } return this }, __Emitter_63.prototype.emit = function (e) { this._callbacks = this._callbacks || {}; var t = [].slice.call(arguments, 1), r = this._callbacks["$" + e]; if (r) for (var n = 0, o = (r = r.slice(0)).length; n < o; ++n)r[n].apply(this, t); return this }, __Emitter_63.prototype.listeners = function (e) { return this._callbacks = this._callbacks || {}, this._callbacks["$" + e] || [] }, __Emitter_63.prototype.hasListeners = function (e) { return !!this.listeners(e).length }, _$componentEmitter_63 = _$componentEmitter_63.exports; var _$toArray_75 = function (e, t) { for (var r = [], n = (t = t || 0) || 0; n < e.length; n++)r[n - t] = e[n]; return r }, _$on_60 = function (e, t, r) { return e.on(t, r), { destroy: function () { e.removeListener(t, r) } } }, slice = [].slice, _$componentBind_10 = function (e, t) { if ("string" == typeof t && (t = e[t]), "function" != typeof t) throw new Error("bind() requires a function"); var r = slice.call(arguments, 2); return function () { return t.apply(e, r.concat(slice.call(arguments))) } }, _$socket_61 = {}, __debug_61 = _$browser_64("socket.io-client:socket"); _$socket_61 = _$socket_61 = __Socket_61; var events = { connect: 1, connect_error: 1, connect_timeout: 1, connecting: 1, disconnect: 1, error: 1, reconnect: 1, reconnect_attempt: 1, reconnect_failed: 1, reconnect_error: 1, reconnecting: 1, ping: 1, pong: 1 }, emit = _$componentEmitter_63.prototype.emit; function __Socket_61(e, t, r) { this.io = e, this.nsp = t, this.json = this, this.ids = 0, this.acks = {}, this.receiveBuffer = [], this.sendBuffer = [], this.connected = !1, this.disconnected = !0, this.flags = {}, r && r.query && (this.query = r.query), this.io.autoConnect && this.open() } _$componentEmitter_63(__Socket_61.prototype), __Socket_61.prototype.subEvents = function () { if (!this.subs) { var e = this.io; this.subs = [_$on_60(e, "open", _$componentBind_10(this, "onopen")), _$on_60(e, "packet", _$componentBind_10(this, "onpacket")), _$on_60(e, "close", _$componentBind_10(this, "onclose"))] } }, __Socket_61.prototype.open = __Socket_61.prototype.connect = function () { return this.connected ? this : (this.subEvents(), this.io.open(), "open" === this.io.readyState && this.onopen(), this.emit("connecting"), this) }, __Socket_61.prototype.send = function () { var e = _$toArray_75(arguments); return e.unshift("message"), this.emit.apply(this, e), this }, __Socket_61.prototype.emit = function (e) { if (events.hasOwnProperty(e)) return emit.apply(this, arguments), this; var t = _$toArray_75(arguments), r = { type: (void 0 !== this.flags.binary ? this.flags.binary : _$hasBinary_38(t)) ? _$socketIoParser_68.BINARY_EVENT : _$socketIoParser_68.EVENT, data: t, options: {} }; return r.options.compress = !this.flags || !1 !== this.flags.compress, "function" == typeof t[t.length - 1] && (__debug_61("emitting packet with ack id %d", this.ids), this.acks[this.ids] = t.pop(), r.id = this.ids++), this.connected ? this.packet(r) : this.sendBuffer.push(r), this.flags = {}, this }, __Socket_61.prototype.packet = function (e) { e.nsp = this.nsp, this.io.packet(e) }, __Socket_61.prototype.onopen = function () { if (__debug_61("transport is open - connecting"), "/" !== this.nsp) if (this.query) { var e = "object" == typeof this.query ? _$parseqs_50.encode(this.query) : this.query; __debug_61("sending connect packet with query %s", e), this.packet({ type: _$socketIoParser_68.CONNECT, query: e }) } else this.packet({ type: _$socketIoParser_68.CONNECT }) }, __Socket_61.prototype.onclose = function (e) { __debug_61("close (%s)", e), this.connected = !1, this.disconnected = !0, delete this.id, this.emit("disconnect", e) }, __Socket_61.prototype.onpacket = function (e) { var t = e.nsp === this.nsp, r = e.type === _$socketIoParser_68.ERROR && "/" === e.nsp; if (t || r) switch (e.type) { case _$socketIoParser_68.CONNECT: this.onconnect(); break; case _$socketIoParser_68.EVENT: case _$socketIoParser_68.BINARY_EVENT: this.onevent(e); break; case _$socketIoParser_68.ACK: case _$socketIoParser_68.BINARY_ACK: this.onack(e); break; case _$socketIoParser_68.DISCONNECT: this.ondisconnect(); break; case _$socketIoParser_68.ERROR: this.emit("error", e.data) } }, __Socket_61.prototype.onevent = function (e) { var t = e.data || []; __debug_61("emitting event %j", t), null != e.id && (__debug_61("attaching ack callback to event"), t.push(this.ack(e.id))), this.connected ? emit.apply(this, t) : this.receiveBuffer.push(t) }, __Socket_61.prototype.ack = function (e) { var t = this, r = !1; return function () { if (!r) { r = !0; var n = _$toArray_75(arguments); __debug_61("sending ack %j", n), t.packet({ type: _$hasBinary_38(n) ? _$socketIoParser_68.BINARY_ACK : _$socketIoParser_68.ACK, id: e, data: n }) } } }, __Socket_61.prototype.onack = function (e) { var t = this.acks[e.id]; "function" == typeof t ? (__debug_61("calling ack %s with %j", e.id, e.data), t.apply(this, e.data), delete this.acks[e.id]) : __debug_61("bad ack %s", e.id) }, __Socket_61.prototype.onconnect = function () { this.connected = !0, this.disconnected = !1, this.emit("connect"), this.emitBuffered() }, __Socket_61.prototype.emitBuffered = function () { var e; for (e = 0; e < this.receiveBuffer.length; e++)emit.apply(this, this.receiveBuffer[e]); for (this.receiveBuffer = [], e = 0; e < this.sendBuffer.length; e++)this.packet(this.sendBuffer[e]); this.sendBuffer = [] }, __Socket_61.prototype.ondisconnect = function () { __debug_61("server disconnect (%s)", this.nsp), this.destroy(), this.onclose("io server disconnect") }, __Socket_61.prototype.destroy = function () { if (this.subs) { for (var e = 0; e < this.subs.length; e++)this.subs[e].destroy(); this.subs = null } this.io.destroy(this) }, __Socket_61.prototype.close = __Socket_61.prototype.disconnect = function () { return this.connected && (__debug_61("performing disconnect (%s)", this.nsp), this.packet({ type: _$socketIoParser_68.DISCONNECT })), this.destroy(), this.connected && this.onclose("io client disconnect"), this }, __Socket_61.prototype.compress = function (e) { return this.flags.compress = e, this }, __Socket_61.prototype.binary = function (e) { return this.flags.binary = e, this }; var _$backo2_3 = {}; function Backoff(e) { e = e || {}, this.ms = e.min || 100, this.max = e.max || 1e4, this.factor = e.factor || 2, this.jitter = e.jitter > 0 && e.jitter <= 1 ? e.jitter : 0, this.attempts = 0 } _$backo2_3 = Backoff, Backoff.prototype.duration = function () { var e = this.ms * Math.pow(this.factor, this.attempts++); if (this.jitter) { var t = Math.random(), r = Math.floor(t * this.jitter * e); e = 0 == (1 & Math.floor(10 * t)) ? e - r : e + r } return 0 | Math.min(e, this.max) }, Backoff.prototype.reset = function () { this.attempts = 0 }, Backoff.prototype.setMin = function (e) { this.ms = e }, Backoff.prototype.setMax = function (e) { this.max = e }, Backoff.prototype.setJitter = function (e) { this.jitter = e }; var _$manager_59 = {}, __debug_59 = _$browser_64("socket.io-client:manager"), __has_59 = Object.prototype.hasOwnProperty; function Manager(e, t) { if (!(this instanceof Manager)) return new Manager(e, t); e && "object" == typeof e && (t = e, e = void 0), (t = t || {}).path = t.path || "/socket.io", this.nsps = {}, this.subs = [], this.opts = t, this.reconnection(!1 !== t.reconnection), this.reconnectionAttempts(t.reconnectionAttempts || 1 / 0), this.reconnectionDelay(t.reconnectionDelay || 1e3), this.reconnectionDelayMax(t.reconnectionDelayMax || 5e3), this.randomizationFactor(t.randomizationFactor || .5), this.backoff = new _$backo2_3({ min: this.reconnectionDelay(), max: this.reconnectionDelayMax(), jitter: this.randomizationFactor() }), this.timeout(null == t.timeout ? 2e4 : t.timeout), this.readyState = "closed", this.uri = e, this.connecting = [], this.lastPing = null, this.encoding = !1, this.packetBuffer = []; var r = t.parser || _$socketIoParser_68; this.encoder = new r.Encoder, this.decoder = new r.Decoder, this.autoConnect = !1 !== t.autoConnect, this.autoConnect && this.open() } _$manager_59 = Manager, Manager.prototype.emitAll = function () { for (var e in this.emit.apply(this, arguments), this.nsps) __has_59.call(this.nsps, e) && this.nsps[e].emit.apply(this.nsps[e], arguments) }, Manager.prototype.updateSocketIds = function () { for (var e in this.nsps) __has_59.call(this.nsps, e) && (this.nsps[e].id = this.generateId(e)) }, Manager.prototype.generateId = function (e) { return ("/" === e ? "" : e + "#") + this.engine.id }, _$componentEmitter_63(Manager.prototype), Manager.prototype.reconnection = function (e) { return arguments.length ? (this._reconnection = !!e, this) : this._reconnection }, Manager.prototype.reconnectionAttempts = function (e) { return arguments.length ? (this._reconnectionAttempts = e, this) : this._reconnectionAttempts }, Manager.prototype.reconnectionDelay = function (e) { return arguments.length ? (this._reconnectionDelay = e, this.backoff && this.backoff.setMin(e), this) : this._reconnectionDelay }, Manager.prototype.randomizationFactor = function (e) { return arguments.length ? (this._randomizationFactor = e, this.backoff && this.backoff.setJitter(e), this) : this._randomizationFactor }, Manager.prototype.reconnectionDelayMax = function (e) { return arguments.length ? (this._reconnectionDelayMax = e, this.backoff && this.backoff.setMax(e), this) : this._reconnectionDelayMax }, Manager.prototype.timeout = function (e) { return arguments.length ? (this._timeout = e, this) : this._timeout }, Manager.prototype.maybeReconnectOnOpen = function () { !this.reconnecting && this._reconnection && 0 === this.backoff.attempts && this.reconnect() }, Manager.prototype.open = Manager.prototype.connect = function (e, t) { if (__debug_59("readyState %s", this.readyState), ~this.readyState.indexOf("open")) return this; __debug_59("opening %s", this.uri), this.engine = _$lib_17(this.uri, this.opts); var r = this.engine, n = this; this.readyState = "opening", this.skipReconnect = !1; var o = _$on_60(r, "open", function () { n.onopen(), e && e() }), i = _$on_60(r, "error", function (t) { if (__debug_59("connect_error"), n.cleanup(), n.readyState = "closed", n.emitAll("connect_error", t), e) { var r = new Error("Connection error"); r.data = t, e(r) } else n.maybeReconnectOnOpen() }); if (!1 !== this._timeout) { var s = this._timeout; __debug_59("connect attempt will timeout after %d", s); var a = setTimeout(function () { __debug_59("connect attempt timed out after %d", s), o.destroy(), r.close(), r.emit("error", "timeout"), n.emitAll("connect_timeout", s) }, s); this.subs.push({ destroy: function () { clearTimeout(a) } }) } return this.subs.push(o), this.subs.push(i), this }, Manager.prototype.onopen = function () { __debug_59("open"), this.cleanup(), this.readyState = "open", this.emit("open"); var e = this.engine; this.subs.push(_$on_60(e, "data", _$componentBind_10(this, "ondata"))), this.subs.push(_$on_60(e, "ping", _$componentBind_10(this, "onping"))), this.subs.push(_$on_60(e, "pong", _$componentBind_10(this, "onpong"))), this.subs.push(_$on_60(e, "error", _$componentBind_10(this, "onerror"))), this.subs.push(_$on_60(e, "close", _$componentBind_10(this, "onclose"))), this.subs.push(_$on_60(this.decoder, "decoded", _$componentBind_10(this, "ondecoded"))) }, Manager.prototype.onping = function () { this.lastPing = new Date, this.emitAll("ping") }, Manager.prototype.onpong = function () { this.emitAll("pong", new Date - this.lastPing) }, Manager.prototype.ondata = function (e) { this.decoder.add(e) }, Manager.prototype.ondecoded = function (e) { this.emit("packet", e) }, Manager.prototype.onerror = function (e) { __debug_59("error", e), this.emitAll("error", e) }, Manager.prototype.socket = function (e, t) { var r = this.nsps[e]; if (!r) { r = new _$socket_61(this, e, t), this.nsps[e] = r; var n = this; r.on("connecting", o), r.on("connect", function () { r.id = n.generateId(e) }), this.autoConnect && o() } function o() { ~_$indexof_42(n.connecting, r) || n.connecting.push(r) } return r }, Manager.prototype.destroy = function (e) { var t = _$indexof_42(this.connecting, e); ~t && this.connecting.splice(t, 1), this.connecting.length || this.close() }, Manager.prototype.packet = function (e) { __debug_59("writing packet %j", e); var t = this; e.query && 0 === e.type && (e.nsp += "?" + e.query), t.encoding ? t.packetBuffer.push(e) : (t.encoding = !0, this.encoder.encode(e, function (r) { for (var n = 0; n < r.length; n++)t.engine.write(r[n], e.options); t.encoding = !1, t.processPacketQueue() })) }, Manager.prototype.processPacketQueue = function () { if (this.packetBuffer.length > 0 && !this.encoding) { var e = this.packetBuffer.shift(); this.packet(e) } }, Manager.prototype.cleanup = function () { __debug_59("cleanup"); for (var e = this.subs.length, t = 0; t < e; t++)this.subs.shift().destroy(); this.packetBuffer = [], this.encoding = !1, this.lastPing = null, this.decoder.destroy() }, Manager.prototype.close = Manager.prototype.disconnect = function () { __debug_59("disconnect"), this.skipReconnect = !0, this.reconnecting = !1, "opening" === this.readyState && this.cleanup(), this.backoff.reset(), this.readyState = "closed", this.engine && this.engine.close() }, Manager.prototype.onclose = function (e) { __debug_59("onclose"), this.cleanup(), this.backoff.reset(), this.readyState = "closed", this.emit("close", e), this._reconnection && !this.skipReconnect && this.reconnect() }, Manager.prototype.reconnect = function () { if (this.reconnecting || this.skipReconnect) return this; var e = this; if (this.backoff.attempts >= this._reconnectionAttempts) __debug_59("reconnect failed"), this.backoff.reset(), this.emitAll("reconnect_failed"), this.reconnecting = !1; else { var t = this.backoff.duration(); __debug_59("will wait %dms before reconnect attempt", t), this.reconnecting = !0; var r = setTimeout(function () { e.skipReconnect || (__debug_59("attempting reconnect"), e.emitAll("reconnect_attempt", e.backoff.attempts), e.emitAll("reconnecting", e.backoff.attempts), e.skipReconnect || e.open(function (t) { t ? (__debug_59("reconnect attempt error"), e.reconnecting = !1, e.reconnect(), e.emitAll("reconnect_error", t.data)) : (__debug_59("reconnect success"), e.onreconnect()) })) }, t); this.subs.push({ destroy: function () { clearTimeout(r) } }) } }, Manager.prototype.onreconnect = function () { var e = this.backoff.attempts; this.reconnecting = !1, this.backoff.reset(), this.updateSocketIds(), this.emitAll("reconnect", e) }; var _$componentEmitter_11 = { exports: {} }; function __Emitter_11(e) { if (e) return function (e) { for (var t in __Emitter_11.prototype) e[t] = __Emitter_11.prototype[t]; return e }(e) } _$componentEmitter_11.exports = __Emitter_11, __Emitter_11.prototype.on = __Emitter_11.prototype.addEventListener = function (e, t) { return this._callbacks = this._callbacks || {}, (this._callbacks["$" + e] = this._callbacks["$" + e] || []).push(t), this }, __Emitter_11.prototype.once = function (e, t) { function r() { this.off(e, r), t.apply(this, arguments) } return r.fn = t, this.on(e, r), this }, __Emitter_11.prototype.off = __Emitter_11.prototype.removeListener = __Emitter_11.prototype.removeAllListeners = __Emitter_11.prototype.removeEventListener = function (e, t) { if (this._callbacks = this._callbacks || {}, 0 == arguments.length) return this._callbacks = {}, this; var r, n = this._callbacks["$" + e]; if (!n) return this; if (1 == arguments.length) return delete this._callbacks["$" + e], this; for (var o = 0; o < n.length; o++)if ((r = n[o]) === t || r.fn === t) { n.splice(o, 1); break } return 0 === n.length && delete this._callbacks["$" + e], this }, __Emitter_11.prototype.emit = function (e) { this._callbacks = this._callbacks || {}; for (var t = new Array(arguments.length - 1), r = this._callbacks["$" + e], n = 1; n < arguments.length; n++)t[n - 1] = arguments[n]; if (r) { n = 0; for (var o = (r = r.slice(0)).length; n < o; ++n)r[n].apply(this, t) } return this }, __Emitter_11.prototype.listeners = function (e) { return this._callbacks = this._callbacks || {}, this._callbacks["$" + e] || [] }, __Emitter_11.prototype.hasListeners = function (e) { return !!this.listeners(e).length }, _$componentEmitter_11 = _$componentEmitter_11.exports; var _$parseUrl_175 = function (e) { var t = /^\w+:\/\//.exec(e), r = 0; t && (r = t[0].length + 1); var n = e.indexOf("/", r); return -1 === n ? { origin: e, pathname: "/" } : { origin: e.slice(0, n), pathname: e.slice(n) } }; function ___extends_170() { return (___extends_170 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } var socketIo, io = function () { return socketIo || (socketIo = _$lib_58({})), socketIo }, statusOrder = ["ASSEMBLY_UPLOADING", "ASSEMBLY_EXECUTING", "ASSEMBLY_COMPLETED"]; function isStatus(e, t) { return statusOrder.indexOf(e) >= statusOrder.indexOf(t) } var TransloaditAssembly = function (e) { var t, r; function n(t) { var r; return (r = e.call(this) || this).status = t, r.socket = null, r.pollInterval = null, r.closed = !1, r } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.connect = function () { this._connectSocket(), this._beginPolling() }, o._onFinished = function () { this.emit("finished"), this.close() }, o._connectSocket = function () { var e = this, t = _$parseUrl_175(this.status.websocket_url), r = io().connect(t.origin, { transports: ["websocket"], path: t.pathname }); r.on("connect", function () { r.emit("assembly_connect", { id: e.status.assembly_id }), e.emit("connect") }), r.on("error", function () { r.disconnect(), e.socket = null }), r.on("assembly_finished", function () { e._onFinished() }), r.on("assembly_upload_finished", function (t) { e.emit("upload", t), e.status.uploads.push(t) }), r.on("assembly_uploading_finished", function () { e.emit("executing") }), r.on("assembly_upload_meta_data_extracted", function () { e.emit("metadata"), e._fetchStatus({ diff: !1 }) }), r.on("assembly_result_finished", function (t, r) { e.emit("result", t, r), e.status.results[t] || (e.status.results[t] = []), e.status.results[t].push(r) }), r.on("assembly_error", function (t) { e._onError(t), e._fetchStatus({ diff: !1 }) }), this.socket = r }, o._onError = function (e) { this.emit("error", ___extends_170(new Error(e.message), e)) }, o._beginPolling = function () { var e = this; this.pollInterval = setInterval(function () { e.socket && e.socket.connected || e._fetchStatus() }, 2e3) }, o._fetchStatus = function (e) { var t = this, r = (void 0 === e ? {} : e).diff, n = void 0 === r || r; return fetch(this.status.assembly_ssl_url).then(function (e) { return e.json() }).then(function (e) { t.closed || (t.emit("status", e), n ? t.updateStatus(e) : t.status = e) }) }, o.update = function () { return this._fetchStatus({ diff: !0 }) }, o.updateStatus = function (e) { this._diffStatus(this.status, e), this.status = e }, o._diffStatus = function (e, t) { var r = this, n = e.ok, o = t.ok; if (t.error && !e.error) return this._onError(t); var i = isStatus(o, "ASSEMBLY_EXECUTING") && !isStatus(n, "ASSEMBLY_EXECUTING"); i && this.emit("executing"), Object.keys(t.uploads).filter(function (t) { return !_$hasProperty_218(e.uploads, t) }).map(function (e) { return t.uploads[e] }).forEach(function (e) { r.emit("upload", e) }), i && this.emit("metadata"), Object.keys(t.results).forEach(function (n) { var o = t.results[n], i = e.results[n]; o.filter(function (e) { return !i || !i.some(function (t) { return t.id === e.id }) }).forEach(function (e) { r.emit("result", n, e) }) }), isStatus(o, "ASSEMBLY_COMPLETED") && !isStatus(n, "ASSEMBLY_COMPLETED") && this.emit("finished") }, o.close = function () { this.closed = !0, this.socket && (this.socket.disconnect(), this.socket = null), clearInterval(this.pollInterval) }, n }(_$componentEmitter_11), _$TransloaditAssembly_170 = TransloaditAssembly, _$Client_173 = function () { function e(e) { void 0 === e && (e = {}), this.opts = e, this._reportError = this._reportError.bind(this), this._headers = { "Transloadit-Client": this.opts.client } } var t = e.prototype; return t.createAssembly = function (e) { var t = this, r = (e.templateId, e.params), n = e.fields, o = e.signature, i = e.expectedFiles, s = new FormData; s.append("params", "string" == typeof r ? r : JSON.stringify(r)), o && s.append("signature", o), Object.keys(n).forEach(function (e) { s.append(e, n[e]) }), s.append("num_expected_upload_files", i); var a = this.opts.service + "/assemblies"; return fetch(a, { method: "post", headers: this._headers, body: s }).then(function (e) { return e.json() }).then(function (e) { if (e.error) { var t = new Error(e.error); throw t.message = e.error, t.details = e.reason, t } return e }).catch(function (e) { return t._reportError(e, { url: a, type: "API_ERROR" }) }) }, t.reserveFile = function (e, t) { var r = this, n = encodeURIComponent(t.size), o = e.assembly_ssl_url + "/reserve_file?size=" + n; return fetch(o, { method: "post", headers: this._headers }).then(function (e) { return e.json() }).catch(function (n) { return r._reportError(n, { assembly: e, file: t, url: o, type: "API_ERROR" }) }) }, t.addFile = function (e, t) { var r = this; if (!t.uploadURL) return Promise.reject(new Error("File does not have an `uploadURL`.")); var n = encodeURIComponent(t.size), o = encodeURIComponent(t.uploadURL), i = "size=" + n + "&filename=" + encodeURIComponent(t.name) + "&fieldname=file&s3Url=" + o, s = e.assembly_ssl_url + "/add_file?" + i; return fetch(s, { method: "post", headers: this._headers }).then(function (e) { return e.json() }).catch(function (n) { return r._reportError(n, { assembly: e, file: t, url: s, type: "API_ERROR" }) }) }, t.cancelAssembly = function (e) { var t = this, r = e.assembly_ssl_url; return fetch(r, { method: "delete", headers: this._headers }).then(function (e) { return e.json() }).catch(function (e) { return t._reportError(e, { url: r, type: "API_ERROR" }) }) }, t.getAssemblyStatus = function (e) { var t = this; return fetch(e, { headers: this._headers }).then(function (e) { return e.json() }).catch(function (r) { return t._reportError(r, { url: e, type: "STATUS_ERROR" }) }) }, t.submitError = function (e, t) { var r = t.endpoint, n = t.instance, o = t.assembly, i = e.details ? e.message + " (" + e.details + ")" : e.message; return fetch("https://status.transloadit.com/client_error", { method: "post", body: JSON.stringify({ endpoint: r, instance: n, assembly_id: o, agent: "undefined" != typeof navigator ? navigator.userAgent : "", client: this.opts.client, error: i }) }).then(function (e) { return e.json() }) }, t._reportError = function (e, t) { if (!1 === this.opts.errorReporting) throw e; var r = { type: t.type }; throw t.assembly && (r.assembly = t.assembly.assembly_id, r.instance = t.assembly.instance), t.url && (r.endpoint = t.url), this.submitError(e, r).catch(function (e) { }), e }, e }(), _$AssemblyOptions_171 = {}; function validateParams(e) { if (!e) throw new Error("Transloadit: The `params` option is required."); if ("string" == typeof e) try { e = JSON.parse(e) } catch (err) { throw err.message = "Transloadit: The `params` option is a malformed JSON string: " + err.message, err } if (!e.auth || !e.auth.key) throw new Error("Transloadit: The `params.auth.key` option is required. You can find your Transloadit API key at https://transloadit.com/account/api-settings.") } var AssemblyOptions = function () { function e(e, t) { this.files = e, this.opts = t } var t = e.prototype; return t._normalizeAssemblyOptions = function (e, t) { if (Array.isArray(t.fields)) { var r = t.fields; t.fields = {}, r.forEach(function (r) { t.fields[r] = e.meta[r] }) } return t.fields || (t.fields = {}), t }, t._getAssemblyOptions = function (e) { var t = this, r = this.opts; return Promise.resolve().then(function () { return r.getAssemblyOptions(e, r) }).then(function (r) { return t._normalizeAssemblyOptions(e, r) }).then(function (t) { return validateParams(t.params), { fileIDs: [e.id], options: t } }) }, t._dedupe = function (e) { var t = Object.create(null); return e.forEach(function (e) { var r, n = e.fileIDs, o = e.options, i = JSON.stringify(o); t[i] ? (r = t[i].fileIDs).push.apply(r, n) : t[i] = { options: o, fileIDs: [].concat(n) } }), Object.keys(t).map(function (e) { return t[e] }) }, t.build = function () { var e = this, t = this.opts; return this.files.length > 0 ? Promise.all(this.files.map(function (t) { return e._getAssemblyOptions(t) })).then(function (t) { return e._dedupe(t) }) : t.alwaysRunAssembly ? Promise.resolve(t.getAssemblyOptions(null, t)).then(function (t) { return validateParams(t.params), [{ fileIDs: e.files.map(function (e) { return e.id }), options: t }] }) : Promise.resolve([]) }, e }(); function ___assertThisInitialized_172(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } _$AssemblyOptions_171 = AssemblyOptions, _$AssemblyOptions_171.validateParams = validateParams; var TransloaditAssemblyWatcher = function (e) { var t, r; function n(t, r) { var n; return (n = e.call(this) || this)._uppy = t, n._assemblyIDs = r, n._remaining = r.length, n.promise = new Promise(function (e, t) { n._resolve = e, n._reject = t }), n._onAssemblyComplete = n._onAssemblyComplete.bind(___assertThisInitialized_172(n)), n._onAssemblyCancel = n._onAssemblyCancel.bind(___assertThisInitialized_172(n)), n._onAssemblyError = n._onAssemblyError.bind(___assertThisInitialized_172(n)), n._onImportError = n._onImportError.bind(___assertThisInitialized_172(n)), n._addListeners(), n } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o._watching = function (e) { return -1 !== this._assemblyIDs.indexOf(e) }, o._onAssemblyComplete = function (e) { this._watching(e.assembly_id) && (this._uppy.log("[Transloadit] AssemblyWatcher: Got Assembly finish " + e.assembly_id), this.emit("assembly-complete", e.assembly_id), this._checkAllComplete()) }, o._onAssemblyCancel = function (e) { this._watching(e.assembly_id) && this._checkAllComplete() }, o._onAssemblyError = function (e, t) { this._watching(e.assembly_id) && (this._uppy.log("[Transloadit] AssemblyWatcher: Got Assembly error " + e.assembly_id), this._uppy.log(t), this.emit("assembly-error", e.assembly_id, t), this._checkAllComplete()) }, o._onImportError = function (e, t, r) { this._watching(e.assembly_id) && this._onAssemblyError(e, r) }, o._checkAllComplete = function () { this._remaining -= 1, 0 === this._remaining && (this._removeListeners(), this._resolve()) }, o._removeListeners = function () { this._uppy.off("transloadit:complete", this._onAssemblyComplete), this._uppy.off("transloadit:assembly-cancel", this._onAssemblyCancel), this._uppy.off("transloadit:assembly-error", this._onAssemblyError), this._uppy.off("transloadit:import-error", this._onImportError) }, o._addListeners = function () { this._uppy.on("transloadit:complete", this._onAssemblyComplete), this._uppy.on("transloadit:assembly-cancel", this._onAssemblyCancel), this._uppy.on("transloadit:assembly-error", this._onAssemblyError), this._uppy.on("transloadit:import-error", this._onImportError) }, n }(_$componentEmitter_11), _$TransloaditAssemblyWatcher_172 = TransloaditAssemblyWatcher, _$package_176 = { version: "1.4.0" }, _$lib_174 = {}, ___class_174, ___temp_174; function ___extends_174() { return (___extends_174 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } function ___assertThisInitialized_174(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } var __Plugin_174 = _$lib_93.Plugin; function defaultGetAssemblyOptions(e, t) { return { params: t.params, signature: t.signature, fields: t.fields } } var COMPANION = "https://api2.transloadit.com/companion", TL_COMPANION = /https?:\/\/api2(?:-\w+)?\.transloadit\.com\/companion/, TL_UPPY_SERVER = /https?:\/\/api2(?:-\w+)?\.transloadit\.com\/uppy-server/; ___temp_174 = ___class_174 = function (e) { var t, r; function n(t, r) { var n; (n = e.call(this, t, r) || this).type = "uploader", n.id = n.opts.id || "Transloadit", n.title = "Transloadit", n.defaultLocale = { strings: { creatingAssembly: "Preparing upload...", creatingAssemblyFailed: "Transloadit: Could not create Assembly", encoding: "Encoding..." } }; var o = { service: "https://api2.transloadit.com", errorReporting: !0, waitForEncoding: !1, waitForMetadata: !1, alwaysRunAssembly: !1, importFromUploadURLs: !1, signature: null, params: null, fields: {}, getAssemblyOptions: defaultGetAssemblyOptions, limit: 0 }; n.opts = ___extends_174({}, o, {}, r), n.i18nInit(), n._prepareUpload = n._prepareUpload.bind(___assertThisInitialized_174(n)), n._afterUpload = n._afterUpload.bind(___assertThisInitialized_174(n)), n._onError = n._onError.bind(___assertThisInitialized_174(n)), n._onTusError = n._onTusError.bind(___assertThisInitialized_174(n)), n._onCancelAll = n._onCancelAll.bind(___assertThisInitialized_174(n)), n._onFileUploadURLAvailable = n._onFileUploadURLAvailable.bind(___assertThisInitialized_174(n)), n._onRestored = n._onRestored.bind(___assertThisInitialized_174(n)), n._getPersistentData = n._getPersistentData.bind(___assertThisInitialized_174(n)); var i = n.opts.getAssemblyOptions !== o.getAssemblyOptions; return n.opts.params ? _$AssemblyOptions_171.validateParams(n.opts.params) : i || _$AssemblyOptions_171.validateParams(null), n.client = new _$Client_173({ service: n.opts.service, client: n._getClientVersion(), errorReporting: n.opts.errorReporting }), n.activeAssemblies = {}, n } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.setOptions = function (t) { e.prototype.setOptions.call(this, t), this.i18nInit() }, o.i18nInit = function () { this.translator = new _$Translator_199([this.defaultLocale, this.uppy.locale, this.opts.locale]), this.i18n = this.translator.translate.bind(this.translator), this.i18nArray = this.translator.translateArray.bind(this.translator), this.setPluginState() }, o._getClientVersion = function () { var e = this, t = ["uppy-core:" + this.uppy.constructor.VERSION, "uppy-transloadit:" + this.constructor.VERSION, "uppy-tus:" + _$lib_178.VERSION], r = function (r, n) { var o = e.uppy.getPlugin(r); o && t.push(n + ":" + o.constructor.VERSION) }; return this.opts.importFromUploadURLs && (r("XHRUpload", "uppy-xhr-upload"), r("AwsS3", "uppy-aws-s3"), r("AwsS3Multipart", "uppy-aws-s3-multipart")), r("Dropbox", "uppy-dropbox"), r("Facebook", "uppy-facebook"), r("GoogleDrive", "uppy-google-drive"), r("Instagram", "uppy-instagram"), r("OneDrive", "uppy-onedrive"), r("Url", "uppy-url"), t.join(",") }, o._attachAssemblyMetadata = function (e, t) { var r = ___extends_174({}, e.meta, { assembly_url: t.assembly_url, filename: e.name, fieldname: "file" }), n = ___extends_174({}, e.tus, { endpoint: t.tus_url }), o = e.remote; if (e.remote && TL_UPPY_SERVER.test(e.remote.companionUrl)) { var i = new Error("The https://api2.transloadit.com/uppy-server endpoint was renamed to https://api2.transloadit.com/companion, please update your `companionUrl` options accordingly."); throw this.uppy.log(i), i } if (e.remote && TL_COMPANION.test(e.remote.companionUrl)) { var s = t.companion_url.replace(/\/$/, ""), a = e.remote.url.replace(e.remote.companionUrl, "").replace(/^\//, ""); o = ___extends_174({}, e.remote, { companionUrl: s, url: s + "/" + a }) } var l = ___extends_174({}, e, { transloadit: { assembly: t.assembly_id } }); return this.opts.importFromUploadURLs || ___extends_174(l, { meta: r, tus: n, remote: o }), l }, o._createAssembly = function (e, t, r) { var n = this; return this.uppy.log("[Transloadit] create Assembly"), this.client.createAssembly({ params: r.params, fields: r.fields, expectedFiles: e.length, signature: r.signature }).then(function (r) { var o, i, s = new _$TransloaditAssembly_170(r), a = s.status, l = n.getPluginState(), u = l.assemblies, c = l.uploadsAssemblies; n.setPluginState({ assemblies: ___extends_174({}, u, (o = {}, o[a.assembly_id] = a, o)), uploadsAssemblies: ___extends_174({}, c, (i = {}, i[t] = [].concat(c[t], [a.assembly_id]), i)) }); var p = n.uppy.getState().files, d = {}; return e.forEach(function (e) { d[e] = n._attachAssemblyMetadata(n.uppy.getFile(e), a) }), n.uppy.setState({ files: ___extends_174({}, p, {}, d) }), n.uppy.emit("transloadit:assembly-created", a, e), n._connectAssembly(s), n.uppy.log("[Transloadit] Created Assembly " + a.assembly_id), s }).catch(function (e) { throw e.message = n.i18n("creatingAssemblyFailed") + ": " + e.message, e }) }, o._shouldWaitAfterUpload = function () { return this.opts.waitForEncoding || this.opts.waitForMetadata }, o._reserveFiles = function (e, t) { var r = this; return Promise.all(t.map(function (t) { var n = r.uppy.getFile(t); return r.client.reserveFile(e, n) })) }, o._onFileUploadURLAvailable = function (e) { var t = this; if (e && e.transloadit && e.transloadit.assembly) { var r = this.getPluginState().assemblies[e.transloadit.assembly]; this.client.addFile(r, e).catch(function (n) { t.uppy.log(n), t.uppy.emit("transloadit:import-error", r, e.id, n) }) } }, o._findFile = function (e) { for (var t = this.uppy.getFiles(), r = 0; r < t.length; r++) { var n = t[r]; if (n.uploadURL === e.tus_upload_url) return n; if (n.tus && n.tus.uploadUrl === e.tus_upload_url) return n; if (!e.is_tus_file && n.name === e.name && n.size === e.size) return n } }, o._onFileUploadComplete = function (e, t) { var r, n = this.getPluginState(), o = this._findFile(t); o ? (this.setPluginState({ files: ___extends_174({}, n.files, (r = {}, r[t.id] = { assembly: e, id: o.id, uploadedFile: t }, r)) }), this.uppy.emit("transloadit:upload", t, this.getAssembly(e))) : this.uppy.log("[Transloadit] Couldn\u2019t file the file, it was likely removed in the process") }, o._onResult = function (e, t, r) { var n = this.getPluginState(), o = n.files[r.original_id]; r.localId = o ? o.id : null; var i = { result: r, stepName: t, id: r.id, assembly: e }; this.setPluginState({ results: [].concat(n.results, [i]) }), this.uppy.emit("transloadit:result", t, r, this.getAssembly(e)) }, o._onAssemblyFinished = function (e) { var t = this, r = e.assembly_ssl_url; this.client.getAssemblyStatus(r).then(function (e) { var r, n = t.getPluginState(); t.setPluginState({ assemblies: ___extends_174({}, n.assemblies, (r = {}, r[e.assembly_id] = e, r)) }), t.uppy.emit("transloadit:complete", e) }) }, o._cancelAssembly = function (e) { var t = this; return this.client.cancelAssembly(e).then(function () { t.uppy.emit("transloadit:assembly-cancelled", e) }) }, o._onCancelAll = function () { var e = this, t = this.getPluginState().assemblies, r = Object.keys(t).map(function (t) { var r = e.getAssembly(t); return e._cancelAssembly(r) }); Promise.all(r).catch(function (t) { e.uppy.log(t) }) }, o._getPersistentData = function (e) { var t, r = this.getPluginState(), n = r.assemblies, o = r.uploadsAssemblies; e(((t = {})[this.id] = { assemblies: n, uploadsAssemblies: o }, t)) }, o._onRestored = function (e) { var t = this, r = e && e[this.id] ? e[this.id] : {}, n = r.assemblies || {}, o = r.uploadsAssemblies || {}; 0 !== Object.keys(o).length && (this.restored = Promise.resolve().then(function () { var e, r, i; return e = n, r = {}, i = [], Object.keys(e).forEach(function (n) { var o = e[n]; o.uploads.forEach(function (e) { var o = t._findFile(e); r[e.id] = { id: o.id, assembly: n, uploadedFile: e } }); var s = t.getPluginState(); Object.keys(o.results).forEach(function (e) { o.results[e].forEach(function (t) { var r = s.files[t.original_id]; t.localId = r ? r.id : null, i.push({ id: t.id, result: t, stepName: e, assembly: n }) }) }) }), t.setPluginState({ assemblies: e, files: r, results: i, uploadsAssemblies: o }), function () { var e = t.getPluginState().assemblies; Object.keys(e).forEach(function (r) { var n = new _$TransloaditAssembly_170(e[r]); t._connectAssembly(n) }) }(), function () { var e = t.getPluginState().assemblies; return Promise.all(Object.keys(e).map(function (e) { return t.activeAssemblies[e].update() })) }() }), this.restored.then(function () { t.restored = null })) }, o._connectAssembly = function (e) { var t = this, r = e.status.assembly_id; return this.activeAssemblies[r] = e, e.on("status", function (e) { var n, o = t.getPluginState().assemblies; t.setPluginState({ assemblies: ___extends_174({}, o, (n = {}, n[r] = e, n)) }) }), e.on("upload", function (e) { t._onFileUploadComplete(r, e) }), e.on("error", function (r) { r.assembly = e.status, t.uppy.emit("transloadit:assembly-error", e.status, r) }), e.on("executing", function () { t.uppy.emit("transloadit:assembly-executing", e.status) }), this.opts.waitForEncoding && e.on("result", function (e, n) { t._onResult(r, e, n) }), this.opts.waitForEncoding ? e.on("finished", function () { t._onAssemblyFinished(e.status) }) : this.opts.waitForMetadata && e.on("metadata", function () { t._onAssemblyFinished(e.status) }), "ASSEMBLY_COMPLETE" === e.ok ? e : (new Promise(function (t, r) { e.once("connect", t), e.once("status", t), e.once("error", r) }).then(function () { t.uppy.log("[Transloadit] Socket is ready") }), e.connect(), e) }, o._prepareUpload = function (e, t) { var r, n = this; (e = e.filter(function (e) { return !e.error })).forEach(function (e) { var t = n.uppy.getFile(e); n.uppy.emit("preprocess-progress", t, { mode: "indeterminate", message: n.i18n("creatingAssembly") }) }); var o = function (e) { var r = e.fileIDs, o = e.options; return n._createAssembly(r, t, o).then(function (e) { if (n.opts.importFromUploadURLs) return n._reserveFiles(e, r) }).then(function () { r.forEach(function (e) { var t = n.uppy.getFile(e); n.uppy.emit("preprocess-complete", t) }) }).catch(function (e) { throw r.forEach(function (t) { var r = n.uppy.getFile(t); n.uppy.emit("preprocess-complete", r), n.uppy.emit("upload-error", r, e) }), e }) }, i = this.getPluginState().uploadsAssemblies; this.setPluginState({ uploadsAssemblies: ___extends_174({}, i, (r = {}, r[t] = [], r)) }); var s = e.map(function (e) { return n.uppy.getFile(e) }); return new _$AssemblyOptions_171(s, this.opts).build().then(function (e) { return Promise.all(e.map(o)) }, function (t) { throw e.forEach(function (e) { var r = n.uppy.getFile(e); n.uppy.emit("preprocess-complete", r), n.uppy.emit("upload-error", r, t) }), t }) }, o._afterUpload = function (e, t) { var r = this; e = e.filter(function (e) { return !e.error }); var n = this.getPluginState(); if (this.restored) return this.restored.then(function () { return r._afterUpload(e, t) }); var o = n.uploadsAssemblies[t]; if (!this._shouldWaitAfterUpload()) { o.forEach(function (e) { r.activeAssemblies[e].close(), delete r.activeAssemblies[e] }); var i = o.map(function (e) { return r.getAssembly(e) }); return this.uppy.addResultData(t, { transloadit: i }), Promise.resolve() } if (0 === o.length) return this.uppy.addResultData(t, { transloadit: [] }), Promise.resolve(); var s = new _$TransloaditAssemblyWatcher_172(this.uppy, o); return e.forEach(function (e) { var t = r.uppy.getFile(e); r.uppy.emit("postprocess-progress", t, { mode: "indeterminate", message: r.i18n("encoding") }) }), s.on("assembly-complete", function (e) { r.getAssemblyFiles(e).forEach(function (e) { r.uppy.emit("postprocess-complete", e) }) }), s.on("assembly-error", function (e, t) { r.getAssemblyFiles(e).forEach(function (e) { r.uppy.emit("upload-error", e, t), r.uppy.emit("postprocess-complete", e) }) }), s.promise.then(function () { var e = o.map(function (e) { return r.getAssembly(e) }), n = ___extends_174({}, r.getPluginState().uploadsAssemblies); delete n[t], r.setPluginState({ uploadsAssemblies: n }), r.uppy.addResultData(t, { transloadit: e }) }) }, o._onError = function (e, t) { var r = this; this.uppy.log("[Transloadit] _onError in upload " + t), this.uppy.log(e), this.getPluginState().uploadsAssemblies[t].forEach(function (e) { r.activeAssemblies[e] && r.activeAssemblies[e].close() }) }, o._onTusError = function (e) { if (e && /^tus: /.test(e.message)) { var t = e.originalRequest && e.originalRequest.responseURL ? e.originalRequest.responseURL : null; this.client.submitError(e, { url: t, type: "TUS_ERROR" }).then(function (e) { }) } }, o.install = function () { this.uppy.addPreProcessor(this._prepareUpload), this.uppy.addPostProcessor(this._afterUpload), this.uppy.on("error", this._onError), this.uppy.on("cancel-all", this._onCancelAll), this.uppy.on("upload-error", this._onTusError), this.opts.importFromUploadURLs ? this.uppy.on("upload-success", this._onFileUploadURLAvailable) : this.uppy.use(_$lib_178, { resume: !1, useFastRemoteRetry: !1, metaFields: ["assembly_url", "filename", "fieldname"], limit: this.opts.limit }), this.uppy.on("restore:get-data", this._getPersistentData), this.uppy.on("restored", this._onRestored), this.setPluginState({ assemblies: {}, uploadsAssemblies: {}, files: {}, results: [] }); var e = this.uppy.getState().capabilities; this.uppy.setState({ capabilities: ___extends_174({}, e, { individualCancellation: !1 }) }) }, o.uninstall = function () { this.uppy.removePreProcessor(this._prepareUpload), this.uppy.removePostProcessor(this._afterUpload), this.uppy.off("error", this._onError), this.opts.importFromUploadURLs && this.uppy.off("upload-success", this._onFileUploadURLAvailable); var e = this.uppy.getState().capabilities; this.uppy.setState({ capabilities: ___extends_174({}, e, { individualCancellation: !0 }) }) }, o.getAssembly = function (e) { return this.getPluginState().assemblies[e] }, o.getAssemblyFiles = function (e) { return this.uppy.getFiles().filter(function (t) { return t && t.transloadit && t.transloadit.assembly === e }) }, n }(__Plugin_174), ___class_174.VERSION = _$package_176.version, _$lib_174 = ___temp_174, _$lib_174.COMPANION = COMPANION, _$lib_174.UPPY_SERVER = COMPANION, _$lib_174.COMPANION_PATTERN = /\.transloadit\.com$/; var _$lib_37 = { __esModule: !0 }; _$lib_37.default = getFormData, _$lib_37.getFieldData = getFieldData; var NODE_LIST_CLASSES = { "[object HTMLCollection]": !0, "[object NodeList]": !0, "[object RadioNodeList]": !0 }, IGNORED_ELEMENT_TYPES = { button: !0, fieldset: !0, reset: !0, submit: !0 }, CHECKED_INPUT_TYPES = { checkbox: !0, radio: !0 }, TRIM_RE = /^\s+|\s+$/g, __slice_37 = Array.prototype.slice, __toString_37 = Object.prototype.toString; function getFormData(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : { trim: !1 }; if (!e) throw new Error("A form is required by getFormData, was given form=" + e); for (var r = {}, n = void 0, o = [], i = {}, s = 0, a = e.elements.length; s < a; s++) { var l = e.elements[s]; IGNORED_ELEMENT_TYPES[l.type] || l.disabled || (n = l.name || l.id) && !i[n] && (o.push(n), i[n] = !0) } for (var u = 0, c = o.length; u < c; u++) { var p = getFieldData(e, n = o[u], t); null != p && (r[n] = p) } return r } function getFieldData(e, t) { var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : { trim: !1 }; if (!e) throw new Error("A form is required by getFieldData, was given form=" + e); if (!t && "[object String]" !== __toString_37.call(t)) throw new Error("A field name is required by getFieldData, was given fieldName=" + t); var n = e.elements[t]; if (!n || n.disabled) return null; if (!NODE_LIST_CLASSES[__toString_37.call(n)]) return getFormElementValue(n, r.trim); for (var o = [], i = !0, s = 0, a = n.length; s < a; s++)if (!n[s].disabled) { i && "radio" !== n[s].type && (i = !1); var l = getFormElementValue(n[s], r.trim); null != l && (o = o.concat(l)) } return i && 1 === o.length ? o[0] : o.length > 0 ? o : null } function getFormElementValue(e, t) { var r = null, n = e.type; if ("select-one" === n) return e.options.length && (r = e.options[e.selectedIndex].value), r; if ("select-multiple" === n) { r = []; for (var o = 0, i = e.options.length; o < i; o++)e.options[o].selected && r.push(e.options[o].value); return 0 === r.length && (r = null), r } return "file" === n && "files" in e ? (e.multiple ? 0 === (r = __slice_37.call(e.files)).length && (r = null) : r = e.files[0], r) : (CHECKED_INPUT_TYPES[n] ? e.checked && (r = e.value) : r = t ? e.value.replace(TRIM_RE, "") : e.value, r) } getFormData.getFieldData = getFieldData; var _$package_129 = { version: "1.3.3" }, ___class_128, ___temp_128; function ___extends_128() { return (___extends_128 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } function ___assertThisInitialized_128(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } var __Plugin_128 = _$lib_93.Plugin, __getFormData_128 = _$lib_37.default || _$lib_37, _$lib_128 = (___temp_128 = ___class_128 = function (e) { var t, r; function n(t, r) { var n; return (n = e.call(this, t, r) || this).type = "acquirer", n.id = n.opts.id || "Form", n.title = "Form", n.opts = ___extends_128({}, { target: null, resultName: "uppyResult", getMetaFromForm: !0, addResultToForm: !0, multipleResults: !1, submitOnSuccess: !1, triggerUploadOnSubmit: !1 }, r), n.handleFormSubmit = n.handleFormSubmit.bind(___assertThisInitialized_128(n)), n.handleUploadStart = n.handleUploadStart.bind(___assertThisInitialized_128(n)), n.handleSuccess = n.handleSuccess.bind(___assertThisInitialized_128(n)), n.addResultToForm = n.addResultToForm.bind(___assertThisInitialized_128(n)), n.getMetaFromForm = n.getMetaFromForm.bind(___assertThisInitialized_128(n)), n } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.handleUploadStart = function () { this.opts.getMetaFromForm && this.getMetaFromForm() }, o.handleSuccess = function (e) { this.opts.addResultToForm && this.addResultToForm(e), this.opts.submitOnSuccess && this.form.submit() }, o.handleFormSubmit = function (e) { var t = this; if (this.opts.triggerUploadOnSubmit) { e.preventDefault(); var r = _$toArray_229(e.target.elements), n = []; r.forEach(function (e) { ("BUTTON" === e.tagName || "INPUT" === e.tagName && "submit" === e.type) && !e.disabled && (e.disabled = !0, n.push(e)) }), this.uppy.upload().then(function () { n.forEach(function (e) { e.disabled = !1 }) }, function (e) { return n.forEach(function (e) { e.disabled = !1 }), Promise.reject(e) }).catch(function (e) { t.uppy.log(e.stack || e.message || e) }) } }, o.addResultToForm = function (e) { this.uppy.log("[Form] Adding result to the original form:"), this.uppy.log(e); var t = this.form.querySelector('[name="' + this.opts.resultName + '"]'); if (t) if (this.opts.multipleResults) { var r; try { r = JSON.parse(t.value) } catch (err) { } Array.isArray(r) || (r = []), r.push(e), t.value = JSON.stringify(r) } else t.value = JSON.stringify(e); else (t = document.createElement("input")).name = this.opts.resultName, t.type = "hidden", this.opts.multipleResults ? t.value = JSON.stringify([e]) : t.value = JSON.stringify(e), this.form.appendChild(t) }, o.getMetaFromForm = function () { var e = __getFormData_128(this.form); delete e[this.opts.resultName], this.uppy.setMeta(e) }, o.install = function () { this.form = _$findDOMElement_204(this.opts.target), this.form && "FORM" === this.form.nodeName ? (this.form.addEventListener("submit", this.handleFormSubmit), this.uppy.on("upload", this.handleUploadStart), this.uppy.on("complete", this.handleSuccess)) : this.uppy.log("Form plugin requires a <form> target element passed in options to operate, none was found", "error") }, o.uninstall = function () { this.form.removeEventListener("submit", this.handleFormSubmit), this.uppy.off("upload", this.handleUploadStart), this.uppy.off("complete", this.handleSuccess) }, n }(__Plugin_128), ___class_128.VERSION = _$package_129.version, ___temp_128), _$ServiceWorkerStore_132 = {}, isSupported = "undefined" != typeof navigator && "serviceWorker" in navigator, ServiceWorkerStore = function () { function e(e) { this.ready = new Promise(function (e, t) { isSupported ? navigator.serviceWorker.controller ? e() : navigator.serviceWorker.addEventListener("controllerchange", function () { e() }) : t(new Error("Unsupported")) }), this.name = e.storeName } var t = e.prototype; return t.list = function () { var e = this, t = {}, r = new Promise(function (e, r) { t.resolve = e, t.reject = r }); console.log("Loading stored blobs from Service Worker"); var n = function r(n) { if (n.data.store === e.name) switch (n.data.type) { case "uppy/ALL_FILES": t.resolve(n.data.files), navigator.serviceWorker.removeEventListener("message", r) } }; return this.ready.then(function () { navigator.serviceWorker.addEventListener("message", n), navigator.serviceWorker.controller.postMessage({ type: "uppy/GET_FILES", store: e.name }) }), r }, t.put = function (e) { var t = this; return this.ready.then(function () { navigator.serviceWorker.controller.postMessage({ type: "uppy/ADD_FILE", store: t.name, file: e }) }) }, t.delete = function (e) { var t = this; return this.ready.then(function () { navigator.serviceWorker.controller.postMessage({ type: "uppy/REMOVE_FILE", store: t.name, fileID: e }) }) }, e }(); ServiceWorkerStore.isSupported = isSupported, _$ServiceWorkerStore_132 = ServiceWorkerStore; var _$IndexedDBStore_130 = {}; function ___extends_130() { return (___extends_130 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } var indexedDB = "undefined" != typeof window && (window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.OIndexedDB || window.msIndexedDB), __isSupported_130 = !!indexedDB, DB_NAME = "uppy-blobs", STORE_NAME = "files", DEFAULT_EXPIRY = 864e5, DB_VERSION = 3; function connect(e) { var t = indexedDB.open(e, DB_VERSION); return new Promise(function (e, r) { t.onupgradeneeded = function (t) { var r = t.target.result, n = t.currentTarget.transaction; if (t.oldVersion < 2 && r.createObjectStore(STORE_NAME, { keyPath: "id" }).createIndex("store", "store", { unique: !1 }), t.oldVersion < 3) { var o = n.objectStore(STORE_NAME); o.createIndex("expires", "expires", { unique: !1 }), o.openCursor().onsuccess = function (e) { var t = e.target.result; if (t) { var r = t.value; r.expires = Date.now() + DEFAULT_EXPIRY, t.update(r) } } } n.oncomplete = function () { e(r) } }, t.onsuccess = function (t) { e(t.target.result) }, t.onerror = r }) } function waitForRequest(e) { return new Promise(function (t, r) { e.onsuccess = function (e) { t(e.target.result) }, e.onerror = r }) } var cleanedUp = !1, IndexedDBStore = function () { function e(t) { var r = this; this.opts = ___extends_130({ dbName: DB_NAME, storeName: "default", expires: DEFAULT_EXPIRY, maxFileSize: 10485760, maxTotalSize: 314572800 }, t), this.name = this.opts.storeName; var n = function () { return connect(r.opts.dbName) }; cleanedUp ? this.ready = n() : (cleanedUp = !0, this.ready = e.cleanup().then(n, n)) } var t = e.prototype; return t.key = function (e) { return this.name + "!" + e }, t.list = function () { var e = this; return this.ready.then(function (t) { return waitForRequest(t.transaction([STORE_NAME], "readonly").objectStore(STORE_NAME).index("store").getAll(IDBKeyRange.only(e.name))) }).then(function (e) { var t = {}; return e.forEach(function (e) { t[e.fileID] = e.data }), t }) }, t.get = function (e) { var t = this; return this.ready.then(function (r) { return waitForRequest(r.transaction([STORE_NAME], "readonly").objectStore(STORE_NAME).get(t.key(e))) }).then(function (e) { return { id: e.data.fileID, data: e.data.data } }) }, t.getSize = function () { var e = this; return this.ready.then(function (t) { var r = t.transaction([STORE_NAME], "readonly").objectStore(STORE_NAME).index("store").openCursor(IDBKeyRange.only(e.name)); return new Promise(function (e, t) { var n = 0; r.onsuccess = function (t) { var r = t.target.result; r ? (n += r.value.data.size, r.continue()) : e(n) }, r.onerror = function () { t(new Error("Could not retrieve stored blobs size")) } }) }) }, t.put = function (e) { var t = this; return e.data.size > this.opts.maxFileSize ? Promise.reject(new Error("File is too big to store.")) : this.getSize().then(function (e) { return e > t.opts.maxTotalSize ? Promise.reject(new Error("No space left")) : t.ready }).then(function (r) { return waitForRequest(r.transaction([STORE_NAME], "readwrite").objectStore(STORE_NAME).add({ id: t.key(e.id), fileID: e.id, store: t.name, expires: Date.now() + t.opts.expires, data: e.data })) }) }, t.delete = function (e) { var t = this; return this.ready.then(function (r) { return waitForRequest(r.transaction([STORE_NAME], "readwrite").objectStore(STORE_NAME).delete(t.key(e))) }) }, e.cleanup = function () { return connect(DB_NAME).then(function (e) { var t = e.transaction([STORE_NAME], "readwrite").objectStore(STORE_NAME).index("expires").openCursor(IDBKeyRange.upperBound(Date.now())); return new Promise(function (r, n) { t.onsuccess = function (t) { var n = t.target.result; if (n) { var o = n.value; console.log("[IndexedDBStore] Deleting record", o.fileID, "of size", _$prettyBytes_225(o.data.size), "- expired on", new Date(o.expires)), n.delete(), n.continue() } else r(e) }, t.onerror = n }) }).then(function (e) { e.close() }) }, e }(); function ___extends_131() { return (___extends_131 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } function maybeParse(e) { try { return JSON.parse(e) } catch (err) { return null } } IndexedDBStore.isSupported = __isSupported_130, _$IndexedDBStore_130 = IndexedDBStore; var __cleanedUp_131 = !1, _$MetaDataStore_131 = function () { function e(t) { this.opts = ___extends_131({ expires: 864e5 }, t), this.name = "uppyState:" + t.storeName, __cleanedUp_131 || (__cleanedUp_131 = !0, e.cleanup()) } var t = e.prototype; return t.load = function () { var e = localStorage.getItem(this.name); if (!e) return null; var t = maybeParse(e); return t ? t.metadata ? t.metadata : (this.save(t), t) : null }, t.save = function (e) { var t = Date.now() + this.opts.expires, r = JSON.stringify({ metadata: e, expires: t }); localStorage.setItem(this.name, r) }, e.cleanup = function () { var e = function () { for (var e = [], t = 0; t < localStorage.length; t++) { var r = localStorage.key(t); /^uppyState:/.test(r) && e.push(r.slice("uppyState:".length)) } return e }(), t = Date.now(); e.forEach(function (e) { var r = localStorage.getItem("uppyState:" + e); if (!r) return null; var n = maybeParse(r); if (!n) return null; n.expires && n.expires < t && localStorage.removeItem("uppyState:" + e) }) }, e }(), _$package_134 = { version: "1.3.2" }, ___class_133, ___temp_133; function ___extends_133() { return (___extends_133 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } function ___assertThisInitialized_133(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } var __Plugin_133 = _$lib_93.Plugin, _$lib_133 = (___temp_133 = ___class_133 = function (e) { var t, r; function n(t, r) { var n; return (n = e.call(this, t, r) || this).type = "debugger", n.id = n.opts.id || "GoldenRetriever", n.title = "Golden Retriever", n.opts = ___extends_133({}, { expires: 864e5, serviceWorker: !1 }, r), n.MetaDataStore = new _$MetaDataStore_131({ expires: n.opts.expires, storeName: t.getID() }), n.ServiceWorkerStore = null, n.opts.serviceWorker && (n.ServiceWorkerStore = new _$ServiceWorkerStore_132({ storeName: t.getID() })), n.IndexedDBStore = new _$IndexedDBStore_130(___extends_133({ expires: n.opts.expires }, n.opts.indexedDB || {}, { storeName: t.getID() })), n.saveFilesStateToLocalStorage = n.saveFilesStateToLocalStorage.bind(___assertThisInitialized_133(n)), n.loadFilesStateFromLocalStorage = n.loadFilesStateFromLocalStorage.bind(___assertThisInitialized_133(n)), n.loadFileBlobsFromServiceWorker = n.loadFileBlobsFromServiceWorker.bind(___assertThisInitialized_133(n)), n.loadFileBlobsFromIndexedDB = n.loadFileBlobsFromIndexedDB.bind(___assertThisInitialized_133(n)), n.onBlobsLoaded = n.onBlobsLoaded.bind(___assertThisInitialized_133(n)), n } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.loadFilesStateFromLocalStorage = function () { var e = this.MetaDataStore.load(); e && (this.uppy.log("[GoldenRetriever] Recovered some state from Local Storage"), this.uppy.setState({ currentUploads: e.currentUploads || {}, files: e.files || {} }), this.savedPluginData = e.pluginData) }, o.getWaitingFiles = function () { var e = {}; return this.uppy.getFiles().forEach(function (t) { t.progress && t.progress.uploadStarted || (e[t.id] = t) }), e }, o.getUploadingFiles = function () { var e = this, t = {}, r = this.uppy.getState().currentUploads; return r && Object.keys(r).forEach(function (n) { r[n].fileIDs.forEach(function (r) { t[r] = e.uppy.getFile(r) }) }), t }, o.saveFilesStateToLocalStorage = function () { var e = ___extends_133(this.getWaitingFiles(), this.getUploadingFiles()), t = {}; this.uppy.emit("restore:get-data", function (e) { ___extends_133(t, e) }); var r = this.uppy.getState().currentUploads; this.MetaDataStore.save({ currentUploads: r, files: e, pluginData: t }) }, o.loadFileBlobsFromServiceWorker = function () { var e = this; this.ServiceWorkerStore.list().then(function (t) { var r = Object.keys(t).length; return r === e.uppy.getFiles().length ? (e.uppy.log("[GoldenRetriever] Successfully recovered " + r + " blobs from Service Worker!"), e.uppy.info("Successfully recovered " + r + " files", "success", 3e3), e.onBlobsLoaded(t)) : (e.uppy.log("[GoldenRetriever] No blobs found in Service Worker, trying IndexedDB now..."), e.loadFileBlobsFromIndexedDB()) }).catch(function (t) { e.uppy.log("[GoldenRetriever] Failed to recover blobs from Service Worker", "warning"), e.uppy.log(t) }) }, o.loadFileBlobsFromIndexedDB = function () { var e = this; this.IndexedDBStore.list().then(function (t) { var r = Object.keys(t).length; if (r > 0) return e.uppy.log("[GoldenRetriever] Successfully recovered " + r + " blobs from IndexedDB!"), e.uppy.info("Successfully recovered " + r + " files", "success", 3e3), e.onBlobsLoaded(t); e.uppy.log("[GoldenRetriever] No blobs found in IndexedDB") }).catch(function (t) { e.uppy.log("[GoldenRetriever] Failed to recover blobs from IndexedDB", "warning"), e.uppy.log(t) }) }, o.onBlobsLoaded = function (e) { var t = this, r = [], n = ___extends_133({}, this.uppy.getState().files); Object.keys(e).forEach(function (o) { var i = t.uppy.getFile(o); if (i) { var s = ___extends_133({}, i, { data: e[o], isRestored: !0 }); n[o] = s } else r.push(o) }), this.uppy.setState({ files: n }), this.uppy.emit("restored", this.savedPluginData), r.length && this.deleteBlobs(r).then(function () { t.uppy.log("[GoldenRetriever] Cleaned up " + r.length + " old files") }).catch(function (e) { t.uppy.log("[GoldenRetriever] Could not clean up " + r.length + " old files", "warning"), t.uppy.log(e) }) }, o.deleteBlobs = function (e) { var t = this, r = []; return e.forEach(function (e) { t.ServiceWorkerStore && r.push(t.ServiceWorkerStore.delete(e)), t.IndexedDBStore && r.push(t.IndexedDBStore.delete(e)) }), Promise.all(r) }, o.install = function () { var e = this; this.loadFilesStateFromLocalStorage(), this.uppy.getFiles().length > 0 ? this.ServiceWorkerStore ? (this.uppy.log("[GoldenRetriever] Attempting to load files from Service Worker..."), this.loadFileBlobsFromServiceWorker()) : (this.uppy.log("[GoldenRetriever] Attempting to load files from Indexed DB..."), this.loadFileBlobsFromIndexedDB()) : (this.uppy.log("[GoldenRetriever] No files need to be loaded, only restoring processing state..."), this.onBlobsLoaded([])), this.uppy.on("file-added", function (t) { t.isRemote || (e.ServiceWorkerStore && e.ServiceWorkerStore.put(t).catch(function (t) { e.uppy.log("[GoldenRetriever] Could not store file", "warning"), e.uppy.log(t) }), e.IndexedDBStore.put(t).catch(function (t) { e.uppy.log("[GoldenRetriever] Could not store file", "warning"), e.uppy.log(t) })) }), this.uppy.on("file-removed", function (t) { e.ServiceWorkerStore && e.ServiceWorkerStore.delete(t.id).catch(function (t) { e.uppy.log("[GoldenRetriever] Failed to remove file", "warning"), e.uppy.log(t) }), e.IndexedDBStore.delete(t.id).catch(function (t) { e.uppy.log("[GoldenRetriever] Failed to remove file", "warning"), e.uppy.log(t) }) }), this.uppy.on("complete", function (t) { var r = t.successful, n = r.map(function (e) { return e.id }); e.deleteBlobs(n).then(function () { e.uppy.log("[GoldenRetriever] Removed " + r.length + " files that finished uploading") }).catch(function (t) { e.uppy.log("[GoldenRetriever] Could not remove " + r.length + " files that finished uploading", "warning"), e.uppy.log(t) }) }), this.uppy.on("state-update", this.saveFilesStateToLocalStorage), this.uppy.on("restored", function () { var t = e.uppy.getState().currentUploads; t && Object.keys(t).forEach(function (r) { e.uppy.restore(r, t[r]) }) }) }, n }(__Plugin_133), ___class_133.VERSION = _$package_134.version, ___temp_133), _$package_158 = { version: "1.3.1" }, ___class_157, ___temp_157; function ___extends_157() { return (___extends_157 = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]) } return e }).apply(this, arguments) } function ___assertThisInitialized_157(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e } var __Plugin_157 = _$lib_93.Plugin, _$lib_157 = (___temp_157 = ___class_157 = function (e) { var t, r; function n(t, r) { var n; return (n = e.call(this, t, r) || this).type = "debugger", n.id = n.opts.id || "ReduxDevTools", n.title = "Redux DevTools", n.opts = ___extends_157({}, {}, r), n.handleStateChange = n.handleStateChange.bind(___assertThisInitialized_157(n)), n.initDevTools = n.initDevTools.bind(___assertThisInitialized_157(n)), n } r = e, (t = n).prototype = Object.create(r.prototype), t.prototype.constructor = t, t.__proto__ = r; var o = n.prototype; return o.handleStateChange = function (e, t, r) { this.devTools.send("UPPY_STATE_UPDATE", t) }, o.initDevTools = function () { var e = this; this.devTools = window.devToolsExtension.connect(), this.devToolsUnsubscribe = this.devTools.subscribe(function (t) { if ("DISPATCH" === t.type) switch (console.log(t.payload.type), t.payload.type) { case "RESET": return void e.uppy.reset(); case "IMPORT_STATE": var r = t.payload.nextLiftedState.computedStates; return e.uppy.store.state = ___extends_157({}, e.uppy.getState(), r[r.length - 1].state), void e.uppy.updateAll(e.uppy.getState()); case "JUMP_TO_STATE": case "JUMP_TO_ACTION": e.uppy.store.state = ___extends_157({}, e.uppy.getState(), JSON.parse(t.state)), e.uppy.updateAll(e.uppy.getState()) } }) }, o.install = function () { this.withDevTools = "undefined" != typeof window && window.__REDUX_DEVTOOLS_EXTENSION__, this.withDevTools && (this.initDevTools(), this.uppy.on("state-update", this.handleStateChange)) }, o.uninstall = function () { this.withDevTools && (this.devToolsUnsubscribe(), this.uppy.off("state-update", this.handleStateUpdate)) }, n }(__Plugin_157), ___class_157.VERSION = _$package_158.version, ___temp_157), _$uppy_241 = {}; _$uppy_241.Core = _$lib_93, _$uppy_241.debugLogger = _$uppy_241.Core.debugLogger, _$uppy_241.server = _$lib_89, _$uppy_241.views = { ProviderView: _$lib_155 }, _$uppy_241.DefaultStore = _$lib_163, _$uppy_241.ReduxStore = _$lib_165, _$uppy_241.Dashboard = _$lib_112, _$uppy_241.DragDrop = _$lib_122, _$uppy_241.FileInput = _$lib_126, _$uppy_241.Informer = _$lib_138, _$uppy_241.ProgressBar = _$lib_142, _$uppy_241.StatusBar = _$lib_161, _$uppy_241.Dropbox = _$lib_124, _$uppy_241.GoogleDrive = _$lib_136, _$uppy_241.Instagram = _$lib_140, _$uppy_241.Url = _$lib_192, _$uppy_241.Webcam = _$lib_235, _$uppy_241.AwsS3 = _$lib_83, _$uppy_241.AwsS3Multipart = _$lib_81, _$uppy_241.Transloadit = _$lib_174, _$uppy_241.Tus = _$lib_178, _$uppy_241.XHRUpload = _$lib_238, _$uppy_241.Form = _$lib_128, _$uppy_241.GoldenRetriever = _$lib_133, _$uppy_241.ReduxDevTools = _$lib_157, _$uppy_241.ThumbnailGenerator = _$lib_168, _$uppy_241.locales = {}; var _$bundle_240 = {}; return _$bundle_240 = _$uppy_241, _$bundle_240 });
//# sourceMappingURL=uppy.min.js.map
/*
* FooTable v3 - FooTable is a jQuery plugin that aims to make HTML tables on smaller devices look awesome.
* @version 3.1.5
* @link http://fooplugins.com
* @copyright Steven Usher & Brad Vincent 2015
* @license Released under the GPLv3 license.
*/
!function (a, b) { window.console = window.console || { log: function () { }, error: function () { } }, a.fn.footable = function (a, c) { return a = a || {}, this.filter("table").each(function (d, e) { b.init(e, a, c) }) }; var c = { events: [] }; b.__debug__ = JSON.parse(localStorage.getItem("footable_debug")) || !1, b.__debug_options__ = JSON.parse(localStorage.getItem("footable_debug_options")) || c, b.debug = function (d, e) { return b.is["boolean"](d) ? (b.__debug__ = d, void (b.__debug__ ? (localStorage.setItem("footable_debug", JSON.stringify(b.__debug__)), b.__debug_options__ = a.extend(!0, {}, c, e || {}), b.is.hash(e) && localStorage.setItem("footable_debug_options", JSON.stringify(b.__debug_options__))) : (localStorage.removeItem("footable_debug"), localStorage.removeItem("footable_debug_options")))) : b.__debug__ }, b.get = function (b) { return a(b).first().data("__FooTable__") }, b.init = function (a, c, d) { var e = b.get(a); return e instanceof b.Table && e.destroy(), new b.Table(a, c, d) }, b.getRow = function (b) { var c = a(b).closest("tr"); return c.hasClass("footable-detail-row") && (c = c.prev()), c.data("__FooTableRow__") } }(jQuery, FooTable = window.FooTable || {}), function (a) { var b = function () { return !0 }; a.arr = {}, a.arr.each = function (b, c) { if (a.is.array(b) && a.is.fn(c)) for (var d = 0, e = b.length; e > d && c(b[d], d) !== !1; d++); }, a.arr.get = function (b, c) { var d = []; if (!a.is.array(b)) return d; if (!a.is.fn(c)) return b; for (var e = 0, f = b.length; f > e; e++)c(b[e], e) && d.push(b[e]); return d }, a.arr.any = function (c, d) { if (!a.is.array(c)) return !1; d = a.is.fn(d) ? d : b; for (var e = 0, f = c.length; f > e; e++)if (d(c[e], e)) return !0; return !1 }, a.arr.contains = function (b, c) { if (!a.is.array(b) || a.is.undef(c)) return !1; for (var d = 0, e = b.length; e > d; d++)if (b[d] == c) return !0; return !1 }, a.arr.first = function (c, d) { if (!a.is.array(c)) return null; d = a.is.fn(d) ? d : b; for (var e = 0, f = c.length; f > e; e++)if (d(c[e], e)) return c[e]; return null }, a.arr.map = function (b, c) { var d = [], e = null; if (!a.is.array(b) || !a.is.fn(c)) return d; for (var f = 0, g = b.length; g > f; f++)null != (e = c(b[f], f)) && d.push(e); return d }, a.arr.remove = function (b, c) { var d = [], e = []; if (!a.is.array(b) || !a.is.fn(c)) return e; for (var f = 0, g = b.length; g > f; f++)c(b[f], f, e) && (d.push(f), e.push(b[f])); for (d.sort(function (a, b) { return b - a }), f = 0, g = d.length; g > f; f++) { var h = d[f] - f; b.splice(h, 1) } return e }, a.arr["delete"] = function (b, c) { var d = -1, e = null; if (!a.is.array(b) || a.is.undef(c)) return e; for (var f = 0, g = b.length; g > f; f++)if (b[f] == c) { d = f, e = b[f]; break } return -1 != d && b.splice(d, 1), e }, a.arr.replace = function (a, b, c) { var d = a.indexOf(b); -1 !== d && (a[d] = c) } }(FooTable), function (a) { a.is = {}, a.is.type = function (a, b) { return typeof a === b }, a.is.defined = function (a) { return "undefined" != typeof a }, a.is.undef = function (a) { return "undefined" == typeof a }, a.is.array = function (a) { return "[object Array]" === Object.prototype.toString.call(a) }, a.is.date = function (a) { return "[object Date]" === Object.prototype.toString.call(a) && !isNaN(a.getTime()) }, a.is["boolean"] = function (a) { return "[object Boolean]" === Object.prototype.toString.call(a) }, a.is.string = function (a) { return "[object String]" === Object.prototype.toString.call(a) }, a.is.number = function (a) { return "[object Number]" === Object.prototype.toString.call(a) && !isNaN(a) }, a.is.fn = function (b) { return a.is.defined(window) && b === window.alert || "[object Function]" === Object.prototype.toString.call(b) }, a.is.error = function (a) { return "[object Error]" === Object.prototype.toString.call(a) }, a.is.object = function (a) { return "[object Object]" === Object.prototype.toString.call(a) }, a.is.hash = function (b) { return a.is.object(b) && b.constructor === Object && !b.nodeType && !b.setInterval }, a.is.element = function (a) { return "object" == typeof HTMLElement ? a instanceof HTMLElement : a && "object" == typeof a && null !== a && 1 === a.nodeType && "string" == typeof a.nodeName }, a.is.promise = function (b) { return a.is.object(b) && a.is.fn(b.then) && a.is.fn(b.promise) }, a.is.jq = function (b) { return a.is.defined(window.jQuery) && b instanceof jQuery && b.length > 0 }, a.is.moment = function (b) { return a.is.defined(window.moment) && a.is.object(b) && a.is["boolean"](b._isAMomentObject) }, a.is.emptyObject = function (b) { if (!a.is.hash(b)) return !1; for (var c in b) if (b.hasOwnProperty(c)) return !1; return !0 }, a.is.emptyArray = function (b) { return a.is.array(b) ? 0 === b.length : !0 }, a.is.emptyString = function (b) { return a.is.string(b) ? 0 === b.length : !0 } }(FooTable), function (a) { a.str = {}, a.str.contains = function (b, c, d) { return a.is.emptyString(b) || a.is.emptyString(c) ? !1 : c.length <= b.length && -1 !== (d ? b.toUpperCase().indexOf(c.toUpperCase()) : b.indexOf(c)) }, a.str.containsExact = function (b, c, d) { return a.is.emptyString(b) || a.is.emptyString(c) || c.length > b.length ? !1 : new RegExp("\\b" + a.str.escapeRegExp(c) + "\\b", d ? "i" : "").test(b) }, a.str.containsWord = function (b, c, d) { if (a.is.emptyString(b) || a.is.emptyString(c) || b.length < c.length) return !1; for (var e = b.split(/\W/), f = 0, g = e.length; g > f; f++)if (d ? e[f].toUpperCase() == c.toUpperCase() : e[f] == c) return !0; return !1 }, a.str.from = function (b, c) { return a.is.emptyString(b) ? b : a.str.contains(b, c) ? b.substring(b.indexOf(c) + 1) : b }, a.str.startsWith = function (b, c) { return a.is.emptyString(b) ? b == c : b.slice(0, c.length) == c }, a.str.toCamelCase = function (b) { return a.is.emptyString(b) ? b : b.toUpperCase() === b ? b.toLowerCase() : b.replace(/^([A-Z])|[-\s_](\w)/g, function (b, c, d) { return a.is.string(d) ? d.toUpperCase() : c.toLowerCase() }) }, a.str.random = function (b) { return b = a.is.emptyString(b) ? "" : b, b + Math.random().toString(36).substr(2, 9) }, a.str.escapeRegExp = function (b) { return a.is.emptyString(b) ? b : b.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") } }(FooTable), function (a) { "use strict"; function b() { } Object.create || (Object.create = function () { var b = function () { }; return function (c) { if (arguments.length > 1) throw Error("Second argument not supported"); if (!a.is.object(c)) throw TypeError("Argument must be an object"); b.prototype = c; var d = new b; return b.prototype = null, d } }()); var c = /xyz/.test(function () { xyz }) ? /\b_super\b/ : /.*/; b.__extend__ = function (b, d, e, f) { b[d] = a.is.fn(f) && c.test(e) ? function (a, b) { return function () { var a, c; return a = this._super, this._super = f, c = b.apply(this, arguments), this._super = a, c } }(d, e) : e }, b.extend = function (d, e) { function f(b, d, e, f) { b[d] = a.is.fn(f) && c.test(e) ? function (a, b, c) { return function () { var a, d; return a = this._super, this._super = c, d = b.apply(this, arguments), this._super = a, d } }(d, e, f) : e } var g = Array.prototype.slice.call(arguments); if (d = g.shift(), e = g.shift(), a.is.hash(d)) { var h = Object.create(this.prototype), i = this.prototype; for (var j in d) "__ctor__" !== j && f(h, j, d[j], i[j]); var k = a.is.fn(h.__ctor__) ? h.__ctor__ : function () { if (!a.is.fn(this.construct)) throw new SyntaxError('FooTable class objects must be constructed with the "new" keyword.'); this.construct.apply(this, arguments) }; return h.construct = a.is.fn(h.construct) ? h.construct : function () { }, k.prototype = h, h.constructor = k, k.extend = b.extend, k } a.is.string(d) && a.is.fn(e) && f(this.prototype, d, e, this.prototype[d]) }, a.Class = b, a.ClassFactory = a.Class.extend({ construct: function () { this.registered = {} }, contains: function (b) { return a.is.defined(this.registered[b]) }, names: function () { var a, b = []; for (a in this.registered) this.registered.hasOwnProperty(a) && b.push(a); return b }, register: function (b, c, d) { if (a.is.string(b) && a.is.fn(c)) { var e = this.registered[b]; this.registered[b] = { name: b, klass: c, priority: a.is.number(d) ? d : a.is.defined(e) ? e.priority : 0 } } }, load: function (b, c, d) { var e, f, g = this, h = Array.prototype.slice.call(arguments), i = [], j = []; b = h.shift() || {}; for (e in g.registered) if (g.registered.hasOwnProperty(e)) { var k = g.registered[e]; b.hasOwnProperty(e) && (f = b[e], a.is.string(f) && (f = a.getFnPointer(b[e])), a.is.fn(f) && (k = { name: e, klass: f, priority: g.registered[e].priority })), i.push(k) } for (e in b) b.hasOwnProperty(e) && !g.registered.hasOwnProperty(e) && (f = b[e], a.is.string(f) && (f = a.getFnPointer(b[e])), a.is.fn(f) && i.push({ name: e, klass: f, priority: 0 })); return i.sort(function (a, b) { return b.priority - a.priority }), a.arr.each(i, function (b) { a.is.fn(b.klass) && j.push(g._make(b.klass, h)) }), j }, make: function (b, c, d) { var e, f = this, g = Array.prototype.slice.call(arguments); return b = g.shift(), e = f.registered[b], a.is.fn(e.klass) ? f._make(e.klass, g) : null }, _make: function (a, b) { function c() { return a.apply(this, b) } return c.prototype = a.prototype, new c } }) }(FooTable), function (a, b) { b.css2json = function (c) { if (b.is.emptyString(c)) return {}; for (var d, e, f, g = {}, h = c.split(";"), i = 0, j = h.length; j > i; i++)b.is.emptyString(h[i]) || (d = h[i].split(":"), b.is.emptyString(d[0]) || b.is.emptyString(d[1]) || (e = b.str.toCamelCase(a.trim(d[0])), f = a.trim(d[1]), g[e] = f)); return g }, b.getFnPointer = function (a) { if (b.is.emptyString(a)) return null; var c = window, d = a.split("."); return b.arr.each(d, function (a) { c[a] && (c = c[a]) }), b.is.fn(c) ? c : null }, b.checkFnValue = function (a, c, d) { function e(a, c, d) { return b.is.fn(c) ? function () { return c.apply(a, arguments) } : d } return d = b.is.fn(d) ? d : null, b.is.fn(c) ? e(a, c, d) : b.is.type(c, "string") ? e(a, b.getFnPointer(c), d) : d } }(jQuery, FooTable), function (a, b) { b.Cell = b.Class.extend({ construct: function (a, b, c, d) { this.ft = a, this.row = b, this.column = c, this.created = !1, this.define(d) }, define: function (c) { this.$el = b.is.element(c) || b.is.jq(c) ? a(c) : null, this.$detail = null; var d = b.is.hash(c) && b.is.hash(c.options) && b.is.defined(c.value); this.value = this.column.parser.call(this.column, b.is.jq(this.$el) ? this.$el : d ? c.value : c, this.ft.o), this.o = a.extend(!0, { classes: null, style: null }, d ? c.options : {}), this.classes = b.is.jq(this.$el) && this.$el.attr("class") ? this.$el.attr("class").match(/\S+/g) : b.is.array(this.o.classes) ? this.o.classes : b.is.string(this.o.classes) ? this.o.classes.match(/\S+/g) : [], this.style = b.is.jq(this.$el) && this.$el.attr("style") ? b.css2json(this.$el.attr("style")) : b.is.hash(this.o.style) ? this.o.style : b.is.string(this.o.style) ? b.css2json(this.o.style) : {} }, $create: function () { this.created || ((this.$el = b.is.jq(this.$el) ? this.$el : a("<td/>")).data("value", this.value).contents().detach().end().append(this.format(this.value)), this._setClasses(this.$el), this._setStyle(this.$el), this.$detail = a("<tr/>").addClass(this.row.classes.join(" ")).data("__FooTableCell__", this).append(a("<th/>")).append(a("<td/>")), this.created = !0) }, collapse: function () { this.created && (this.$detail.children("th").html(this.column.title), this.$el.clone().attr("id", this.$el.attr("id") ? this.$el.attr("id") + "-detail" : void 0).css("display", "table-cell").html("").append(this.$el.contents().detach()).replaceAll(this.$detail.children("td").first()), b.is.jq(this.$detail.parent()) || this.$detail.appendTo(this.row.$details.find(".footable-details > tbody"))) }, restore: function () { if (this.created) { if (b.is.jq(this.$detail.parent())) { var a = this.$detail.children("td").first(); this.$el.attr("class", a.attr("class")).attr("style", a.attr("style")).css("display", this.column.hidden || !this.column.visible ? "none" : "table-cell").append(a.contents().detach()) } this.$detail.detach() } }, parse: function () { return this.column.parser.call(this.column, this.$el, this.ft.o) }, format: function (a) { return this.column.formatter.call(this.column, a, this.ft.o, this.row.value) }, val: function (c, d, e) { if (b.is.undef(c)) return this.value; var f = this, g = b.is.hash(c) && b.is.hash(c.options) && b.is.defined(c.value); if (this.o = a.extend(!0, { classes: f.classes, style: f.style }, g ? c.options : {}), this.value = g ? c.value : c, this.classes = b.is.array(this.o.classes) ? this.o.classes : b.is.string(this.o.classes) ? this.o.classes.match(/\S+/g) : [], this.style = b.is.hash(this.o.style) ? this.o.style : b.is.string(this.o.style) ? b.css2json(this.o.style) : {}, e = b.is["boolean"](e) ? e : !0, this.created && e) { this.$el.data("value", this.value).empty(); var h = this.$detail.children("td").first().empty(), i = b.is.jq(this.$detail.parent()) ? h : this.$el; i.append(this.format(this.value)), this._setClasses(i), this._setStyle(i), (b.is["boolean"](d) ? d : !0) && this.row.draw() } }, _setClasses: function (a) { var c = !b.is.emptyArray(this.column.classes), d = !b.is.emptyArray(this.classes), e = null; a.removeAttr("class"), (c || d) && (c && d ? e = this.classes.concat(this.column.classes).join(" ") : c ? e = this.column.classes.join(" ") : d && (e = this.classes.join(" ")), b.is.emptyString(e) || a.addClass(e)) }, _setStyle: function (c) { var d = !b.is.emptyObject(this.column.style), e = !b.is.emptyObject(this.style), f = null; c.removeAttr("style"), (d || e) && (d && e ? f = a.extend({}, this.column.style, this.style) : d ? f = this.column.style : e && (f = this.style), b.is.hash(f) && c.css(f)) } }) }(jQuery, FooTable), function (a, b) { b.Column = b.Class.extend({ construct: function (a, c, d) { this.ft = a, this.type = b.is.emptyString(d) ? "text" : d, this.virtual = b.is["boolean"](c.virtual) ? c.virtual : !1, this.$el = b.is.jq(c.$el) ? c.$el : null, this.index = b.is.number(c.index) ? c.index : -1, this.internal = !1, this.define(c), this.$create() }, define: function (a) { this.hidden = b.is["boolean"](a.hidden) ? a.hidden : !1, this.visible = b.is["boolean"](a.visible) ? a.visible : !0, this.name = b.is.string(a.name) ? a.name : null, null == this.name && (this.name = "col" + (a.index + 1)), this.title = b.is.string(a.title) ? a.title : null, !this.virtual && null == this.title && b.is.jq(this.$el) && (this.title = this.$el.html()), null == this.title && (this.title = "Column " + (a.index + 1)), this.style = b.is.hash(a.style) ? a.style : b.is.string(a.style) ? b.css2json(a.style) : {}, this.classes = b.is.array(a.classes) ? a.classes : b.is.string(a.classes) ? a.classes.match(/\S+/g) : [], this.parser = b.checkFnValue(this, a.parser, this.parser), this.formatter = b.checkFnValue(this, a.formatter, this.formatter) }, $create: function () { (this.$el = !this.virtual && b.is.jq(this.$el) ? this.$el : a("<th/>")).html(this.title).addClass(this.classes.join(" ")).css(this.style) }, parser: function (c) { if (b.is.element(c) || b.is.jq(c)) { var d = a(c).data("value"); return b.is.defined(d) ? d : a(c).html() } return b.is.defined(c) && null != c ? c + "" : null }, formatter: function (a, b, c) { return null == a ? "" : a }, createCell: function (a) { var c = b.is.jq(a.$el) ? a.$el.children("td,th").get(this.index) : null, d = b.is.hash(a.value) ? a.value[this.name] : null; return new b.Cell(this.ft, a, this, c || d) } }), b.columns = new b.ClassFactory, b.columns.register("text", b.Column) }(jQuery, FooTable), function (a, b) { b.Component = b.Class.extend({ construct: function (a, c) { if (!(a instanceof b.Table)) throw new TypeError("The instance parameter must be an instance of FooTable.Table."); this.ft = a, this.enabled = b.is["boolean"](c) ? c : !1 }, preinit: function (a) { }, init: function () { }, destroy: function () { }, predraw: function () { }, draw: function () { }, postdraw: function () { } }), b.components = new b.ClassFactory }(jQuery, FooTable), function (a, b) { b.Defaults = function () { this.stopPropagation = !1, this.on = null }, b.defaults = new b.Defaults }(jQuery, FooTable), function (a, b) { b.Row = b.Class.extend({ construct: function (a, b, c) { this.ft = a, this.columns = b, this.created = !1, this.define(c) }, define: function (c) { this.$el = b.is.element(c) || b.is.jq(c) ? a(c) : null, this.$toggle = a("<span/>", { "class": "footable-toggle fooicon fooicon-plus" }); var d = b.is.hash(c), e = d && b.is.hash(c.options) && b.is.hash(c.value); this.value = d ? e ? c.value : c : null, this.o = a.extend(!0, { expanded: !1, classes: null, style: null }, e ? c.options : {}), this.expanded = b.is.jq(this.$el) ? this.$el.data("expanded") || this.o.expanded : this.o.expanded, this.classes = b.is.jq(this.$el) && this.$el.attr("class") ? this.$el.attr("class").match(/\S+/g) : b.is.array(this.o.classes) ? this.o.classes : b.is.string(this.o.classes) ? this.o.classes.match(/\S+/g) : [], this.style = b.is.jq(this.$el) && this.$el.attr("style") ? b.css2json(this.$el.attr("style")) : b.is.hash(this.o.style) ? this.o.style : b.is.string(this.o.style) ? b.css2json(this.o.style) : {}, this.cells = this.createCells(); var f = this; f.value = {}, b.arr.each(f.cells, function (a) { f.value[a.column.name] = a.val() }) }, $create: function () { if (!this.created) { (this.$el = b.is.jq(this.$el) ? this.$el : a("<tr/>")).data("__FooTableRow__", this), this._setClasses(this.$el), this._setStyle(this.$el), "last" == this.ft.rows.toggleColumn && this.$toggle.addClass("last-column"), this.$details = a("<tr/>", { "class": "footable-detail-row" }).append(a("<td/>", { colspan: this.ft.columns.visibleColspan }).append(a("<table/>", { "class": "footable-details " + this.ft.classes.join(" ") }).append("<tbody/>"))); var c = this; b.arr.each(c.cells, function (a) { a.created || a.$create(), c.$el.append(a.$el) }), c.$el.off("click.ft.row").on("click.ft.row", { self: c }, c._onToggle), this.created = !0 } }, createCells: function () { var a = this; return b.arr.map(a.columns, function (b) { return b.createCell(a) }) }, val: function (c, d, e) { var f = this; if (!b.is.hash(c)) return b.is.hash(this.value) && !b.is.emptyObject(this.value) || (this.value = {}, b.arr.each(this.cells, function (a) { a.column.internal || (f.value[a.column.name] = a.val()) })), this.value; this.collapse(!1); var g = b.is.hash(c), h = g && b.is.hash(c.options) && b.is.hash(c.value); if (this.o = a.extend(!0, { expanded: f.expanded, classes: f.classes, style: f.style }, h ? c.options : {}), this.expanded = this.o.expanded, this.classes = b.is.array(this.o.classes) ? this.o.classes : b.is.string(this.o.classes) ? this.o.classes.match(/\S+/g) : [], this.style = b.is.hash(this.o.style) ? this.o.style : b.is.string(this.o.style) ? b.css2json(this.o.style) : {}, g) if (h && (c = c.value), b.is.hash(this.value)) for (var i in c) c.hasOwnProperty(i) && (this.value[i] = c[i]); else this.value = c; else this.value = null; e = b.is["boolean"](e) ? e : !0, b.arr.each(this.cells, function (a) { !a.column.internal && b.is.defined(f.value[a.column.name]) && a.val(f.value[a.column.name], !1, e) }), this.created && e && (this._setClasses(this.$el), this._setStyle(this.$el), (b.is["boolean"](d) ? d : !0) && this.draw()) }, _setClasses: function (a) { var c = !b.is.emptyArray(this.classes), d = null; a.removeAttr("class"), c && (d = this.classes.join(" "), b.is.emptyString(d) || a.addClass(d)) }, _setStyle: function (a) { var c = !b.is.emptyObject(this.style), d = null; a.removeAttr("style"), c && (d = this.style, b.is.hash(d) && a.css(d)) }, expand: function () { if (this.created) { var a = this; a.ft.raise("expand.ft.row", [a]).then(function () { a.__hidden__ = b.arr.map(a.cells, function (a) { return a.column.hidden && a.column.visible ? a : null }), a.__hidden__.length > 0 && (a.$details.insertAfter(a.$el).children("td").first().attr("colspan", a.ft.columns.visibleColspan), b.arr.each(a.__hidden__, function (a) { a.collapse() })), a.$el.attr("data-expanded", !0), a.$toggle.removeClass("fooicon-plus").addClass("fooicon-minus"), a.expanded = !0, a.ft.raise("expanded.ft.row", [a]) }) } }, collapse: function (a) { if (this.created) { var c = this; c.ft.raise("collapse.ft.row", [c]).then(function () { b.arr.each(c.__hidden__, function (a) { a.restore() }), c.$details.detach(), c.$el.removeAttr("data-expanded"), c.$toggle.removeClass("fooicon-minus").addClass("fooicon-plus"), (b.is["boolean"](a) ? a : !0) && (c.expanded = !1), c.ft.raise("collapsed.ft.row", [c]) }) } }, predraw: function (a) { this.created && (this.expanded && this.collapse(!1), this.$toggle.detach(), a = b.is["boolean"](a) ? a : !0, a && this.$el.detach()) }, draw: function (a) { this.created || this.$create(), b.is.jq(a) && a.append(this.$el); var c = this; b.arr.each(c.cells, function (a) { a.$el.css("display", a.column.hidden || !a.column.visible ? "none" : "table-cell"), c.ft.rows.showToggle && c.ft.columns.hasHidden && ("first" == c.ft.rows.toggleColumn && a.column.index == c.ft.columns.firstVisibleIndex || "last" == c.ft.rows.toggleColumn && a.column.index == c.ft.columns.lastVisibleIndex) && a.$el.prepend(c.$toggle), a.$el.add(a.column.$el).removeClass("footable-first-visible footable-last-visible"), a.column.index == c.ft.columns.firstVisibleIndex && a.$el.add(a.column.$el).addClass("footable-first-visible"), a.column.index == c.ft.columns.lastVisibleIndex && a.$el.add(a.column.$el).addClass("footable-last-visible") }), this.expanded && this.expand() }, toggle: function () { this.created && this.ft.columns.hasHidden && (this.expanded ? this.collapse() : this.expand()) }, _onToggle: function (b) { var c = b.data.self; a(b.target).is(c.ft.rows.toggleSelector) && c.toggle() } }) }(jQuery, FooTable), function (a, b) { b.instances = [], b.Table = b.Class.extend({ construct: function (c, d, e) { this._resizeTimeout = null, this.id = b.instances.push(this), this.initialized = !1, this.$el = (b.is.jq(c) ? c : a(c)).first(), this.$loader = a("<div/>", { "class": "footable-loader" }).append(a("<span/>", { "class": "fooicon fooicon-loader" })), this.o = a.extend(!0, {}, b.defaults, d), this.data = this.$el.data() || {}, this.classes = [], this.components = b.components.load(b.is.hash(this.data.components) ? this.data.components : this.o.components, this), this.breakpoints = this.use(FooTable.Breakpoints), this.columns = this.use(FooTable.Columns), this.rows = this.use(FooTable.Rows), this._construct(e) }, _construct: function (a) { var c = this; return this._preinit().then(function () { return c._init().then(function () { return c.raise("ready.ft.table").then(function () { b.is.fn(a) && a.call(c, c) }) }) }).always(function (a) { c.$el.show(), b.is.error(a) && console.error("FooTable: unhandled error thrown during initialization.", a) }) }, _preinit: function () { var a = this; return this.raise("preinit.ft.table", [a.data]).then(function () { var c = (a.$el.attr("class") || "").match(/\S+/g) || []; a.o.ajax = b.checkFnValue(a, a.data.ajax, a.o.ajax), a.o.stopPropagation = b.is["boolean"](a.data.stopPropagation) ? a.data.stopPropagation : a.o.stopPropagation; for (var d = 0, e = c.length; e > d; d++)b.str.startsWith(c[d], "footable") || a.classes.push(c[d]); return a.$el.hide().after(a.$loader), a.execute(!1, !1, "preinit", a.data) }) }, _init: function () { var c = this; return c.raise("init.ft.table").then(function () { var d = c.$el.children("thead"), e = c.$el.children("tbody"), f = c.$el.children("tfoot"); return c.$el.addClass("footable footable-" + c.id), b.is.hash(c.o.on) && c.$el.on(c.o.on), 0 == f.length && c.$el.append(f = a("<tfoot/>")), 0 == e.length && c.$el.append("<tbody/>"), 0 == d.length && c.$el.prepend(d = a("<thead/>")), c.execute(!1, !0, "init").then(function () { return c.$el.data("__FooTable__", c), 0 == f.children("tr").length && f.remove(), 0 == d.children("tr").length && d.remove(), c.raise("postinit.ft.table").then(function () { return c.draw() }).always(function () { a(window).off("resize.ft" + c.id, c._onWindowResize).on("resize.ft" + c.id, { self: c }, c._onWindowResize), c.initialized = !0 }) }) }) }, destroy: function () { var c = this; return c.raise("destroy.ft.table").then(function () { return c.execute(!0, !0, "destroy").then(function () { c.$el.removeData("__FooTable__").removeClass("footable-" + c.id), b.is.hash(c.o.on) && c.$el.off(c.o.on), a(window).off("resize.ft" + c.id, c._onWindowResize), c.initialized = !1, b.instances[c.id] = null }) }).fail(function (a) { b.is.error(a) && console.error("FooTable: unhandled error thrown while destroying the plugin.", a) }) }, raise: function (c, d) { var e = this, f = b.__debug__ && (b.is.emptyArray(b.__debug_options__.events) || b.arr.any(b.__debug_options__.events, function (a) { return b.str.contains(c, a) })); return d = d || [], d.unshift(this), a.Deferred(function (b) { var g = a.Event(c); 1 == e.o.stopPropagation && e.$el.one(c, function (a) { a.stopPropagation() }), f && console.log("FooTable:" + c + ": ", d), e.$el.trigger(g, d), g.isDefaultPrevented() ? (f && console.log('FooTable: default prevented for the "' + c + '" event.'), b.reject(g)) : b.resolve(g) }) }, use: function (a) { for (var b = 0, c = this.components.length; c > b; b++)if (this.components[b] instanceof a) return this.components[b]; return null }, draw: function () { var a = this, c = a.$el.clone().insertBefore(a.$el); return a.$el.detach(), a.execute(!1, !0, "predraw").then(function () { return a.raise("predraw.ft.table").then(function () { return a.execute(!1, !0, "draw").then(function () { return a.raise("draw.ft.table").then(function () { return a.execute(!1, !0, "postdraw").then(function () { return a.raise("postdraw.ft.table") }) }) }) }) }).fail(function (a) { b.is.error(a) && console.error("FooTable: unhandled error thrown during a draw operation.", a) }).always(function () { c.replaceWith(a.$el), a.$loader.remove() }) }, execute: function (a, c, d, e, f) { var g = this, h = Array.prototype.slice.call(arguments); a = h.shift(), c = h.shift(); var i = c ? b.arr.get(g.components, function (a) { return a.enabled }) : g.components.slice(0); return h.unshift(a ? i.reverse() : i), g._execute.apply(g, h) }, _execute: function (c, d, e, f) { if (!c || !c.length) return a.when(); var g, h = this, i = Array.prototype.slice.call(arguments); return c = i.shift(), d = i.shift(), g = c.shift(), b.is.fn(g[d]) ? a.Deferred(function (a) { try { var c = g[d].apply(g, i); if (b.is.promise(c)) return c.then(a.resolve, a.reject); a.resolve(c) } catch (e) { a.reject(e) } }).then(function () { return h._execute.apply(h, [c, d].concat(i)) }) : h._execute.apply(h, [c, d].concat(i)) }, _onWindowResize: function (a) { var b = a.data.self; null != b._resizeTimeout && clearTimeout(b._resizeTimeout), b._resizeTimeout = setTimeout(function () { b._resizeTimeout = null, b.raise("resize.ft.table").then(function () { b.breakpoints.check() }) }, 300) } }) }(jQuery, FooTable), function (a, b) { b.ArrayColumn = b.Column.extend({ construct: function (a, b) { this._super(a, b, "array") }, parser: function (c) { if (b.is.element(c) || b.is.jq(c)) { var d = a(c), e = d.data("value"); if (b.is.array(e)) return e; e = d.html(); try { e = JSON.parse(e) } catch (f) { e = null } return b.is.array(e) ? e : null } return b.is.array(c) ? c : null }, formatter: function (a, c, d) { return b.is.array(a) ? JSON.stringify(a) : "" } }), b.columns.register("array", b.ArrayColumn) }(jQuery, FooTable), function (a, b) { b.is.undef(window.moment) || (b.DateColumn = b.Column.extend({ construct: function (a, c) { this._super(a, c, "date"), this.formatString = b.is.string(c.formatString) ? c.formatString : "MM-DD-YYYY" }, parser: function (c) { if (b.is.element(c) || b.is.jq(c)) { var d = a(c).data("value"); c = b.is.defined(d) ? d : a(c).text(), b.is.string(c) && (c = isNaN(c) ? c : +c) } if (b.is.date(c)) return moment(c); if (b.is.object(c) && b.is["boolean"](c._isAMomentObject)) return c; if (b.is.string(c)) { if (isNaN(c)) return moment(c, this.formatString); c = +c } return b.is.number(c) ? moment(c) : null }, formatter: function (a, c, d) { return b.is.object(a) && b.is["boolean"](a._isAMomentObject) && a.isValid() ? a.format(this.formatString) : "" }, filterValue: function (c) { if ((b.is.element(c) || b.is.jq(c)) && (c = a(c).data("filterValue") || a(c).text()), b.is.hash(c) && b.is.hash(c.options) && (b.is.string(c.options.filterValue) && (c = c.options.filterValue), b.is.defined(c.value) && (c = c.value)), b.is.object(c) && b.is["boolean"](c._isAMomentObject)) return c.format(this.formatString); if (b.is.string(c)) { if (isNaN(c)) return c; c = +c } return b.is.number(c) || b.is.date(c) ? moment(c).format(this.formatString) : b.is.defined(c) && null != c ? c + "" : "" } }), b.columns.register("date", b.DateColumn)) }(jQuery, FooTable), function (a, b) { b.HTMLColumn = b.Column.extend({ construct: function (a, b) { this._super(a, b, "html") }, parser: function (c) { if (b.is.string(c) && (c = a(a.trim(c))), b.is.element(c) && (c = a(c)), b.is.jq(c)) { var d = c.prop("tagName").toLowerCase(); if ("td" == d || "th" == d) { var e = c.data("value"); return b.is.defined(e) ? e : c.contents() } return c } return null } }), b.columns.register("html", b.HTMLColumn) }(jQuery, FooTable), function (a, b) { b.NumberColumn = b.Column.extend({ construct: function (a, c) { this._super(a, c, "number"), this.decimalSeparator = b.is.string(c.decimalSeparator) ? c.decimalSeparator : ".", this.thousandSeparator = b.is.string(c.thousandSeparator) ? c.thousandSeparator : ",", this.decimalSeparatorRegex = new RegExp(b.str.escapeRegExp(this.decimalSeparator), "g"), this.thousandSeparatorRegex = new RegExp(b.str.escapeRegExp(this.thousandSeparator), "g"), this.cleanRegex = new RegExp("[^-0-9" + b.str.escapeRegExp(this.decimalSeparator) + "]", "g") }, parser: function (c) { if (b.is.element(c) || b.is.jq(c)) { var d = a(c).data("value"); c = b.is.defined(d) ? d : a(c).text().replace(this.cleanRegex, "") } return b.is.string(c) && (c = c.replace(this.thousandSeparatorRegex, "").replace(this.decimalSeparatorRegex, "."), c = parseFloat(c)), b.is.number(c) ? c : null }, formatter: function (a, b, c) { if (null == a) return ""; var d = (a + "").split("."); return 2 == d.length && d[0].length > 3 && (d[0] = d[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, this.thousandSeparator)), d.join(this.decimalSeparator) } }), b.columns.register("number", b.NumberColumn) }(jQuery, FooTable), function (a, b) { b.ObjectColumn = b.Column.extend({ construct: function (a, b) { this._super(a, b, "object") }, parser: function (c) { if (b.is.element(c) || b.is.jq(c)) { var d = a(c), e = d.data("value"); if (b.is.object(e)) return e; e = d.html(); try { e = JSON.parse(e) } catch (f) { e = null } return b.is.object(e) ? e : null } return b.is.object(c) ? c : null }, formatter: function (a, c, d) { return b.is.object(a) ? JSON.stringify(a) : "" } }), b.columns.register("object", b.ObjectColumn) }(jQuery, FooTable), function (a, b) { b.Breakpoint = b.Class.extend({ construct: function (a, b) { this.name = a, this.width = b } }) }(jQuery, FooTable), function (a, b) { b.Breakpoints = b.Component.extend({ construct: function (a) { this._super(a, !0), this.o = a.o, this.current = null, this.array = [], this.cascade = this.o.cascade, this.useParentWidth = this.o.useParentWidth, this.hidden = null, this._classNames = "", this.getWidth = b.checkFnValue(this, this.o.getWidth, this.getWidth) }, preinit: function (a) { var c = this; return this.ft.raise("preinit.ft.breakpoints", [a]).then(function () { c.cascade = b.is["boolean"](a.cascade) ? a.cascade : c.cascade, c.o.breakpoints = b.is.hash(a.breakpoints) ? a.breakpoints : c.o.breakpoints, c.getWidth = b.checkFnValue(c, a.getWidth, c.getWidth), null == c.o.breakpoints && (c.o.breakpoints = { xs: 480, sm: 768, md: 992, lg: 1200 }); for (var d in c.o.breakpoints) c.o.breakpoints.hasOwnProperty(d) && (c.array.push(new b.Breakpoint(d, c.o.breakpoints[d])), c._classNames += "breakpoint-" + d + " "); c.array.sort(function (a, b) { return b.width - a.width }) }) }, init: function () { var a = this; return this.ft.raise("init.ft.breakpoints").then(function () { a.current = a.get() }) }, draw: function () { this.ft.$el.removeClass(this._classNames).addClass("breakpoint-" + this.current.name) }, calculate: function () { for (var a, c = this, d = null, e = [], f = null, g = c.getWidth(), h = 0, i = c.array.length; i > h; h++)a = c.array[h], (!d && h == i - 1 || g >= a.width && (f instanceof b.Breakpoint ? g < f.width : !0)) && (d = a), d || e.push(a.name), f = a; return e.push(d.name), c.hidden = e.join(" "), d }, visible: function (a) { if (b.is.emptyString(a)) return !0; if ("all" === a) return !1; for (var c = a.split(" "), d = 0, e = c.length; e > d; d++)if (this.cascade ? b.str.containsWord(this.hidden, c[d]) : c[d] == this.current.name) return !1; return !0 }, check: function () { var a = this, c = a.get(); c instanceof b.Breakpoint && c != a.current && a.ft.raise("before.ft.breakpoints", [a.current, c]).then(function () { var b = a.current; return a.current = c, a.ft.draw().then(function () { a.ft.raise("after.ft.breakpoints", [a.current, b]) }) }) }, get: function (a) { return b.is.undef(a) ? this.calculate() : a instanceof b.Breakpoint ? a : b.is.string(a) ? b.arr.first(this.array, function (b) { return b.name == a }) : b.is.number(a) && a >= 0 && a < this.array.length ? this.array[a] : null }, getWidth: function () { return b.is.fn(this.o.getWidth) ? this.o.getWidth(this.ft) : 1 == this.useParentWidth ? this.getParentWidth() : this.getViewportWidth() }, getParentWidth: function () { return this.ft.$el.parent().width() }, getViewportWidth: function () { return Math.max(document.documentElement.clientWidth, window.innerWidth, 0) } }), b.components.register("breakpoints", b.Breakpoints, 1e3) }(jQuery, FooTable), function (a) { a.Column.prototype.breakpoints = null, a.Column.prototype.__breakpoints_define__ = function (b) { this.breakpoints = a.is.emptyString(b.breakpoints) ? null : b.breakpoints }, a.Column.extend("define", function (a) { this._super(a), this.__breakpoints_define__(a) }) }(FooTable), function (a) { a.Defaults.prototype.breakpoints = null, a.Defaults.prototype.cascade = !1, a.Defaults.prototype.useParentWidth = !1, a.Defaults.prototype.getWidth = null }(FooTable), function (a, b) {
b.Columns = b.Component.extend({
construct: function (a) { this._super(a, !0), this.o = a.o, this.array = [], this.$header = null, this.showHeader = a.o.showHeader, this._fromHTML = b.is.emptyArray(a.o.columns) && !b.is.promise(a.o.columns) }, parse: function (c) { var d = this; return a.Deferred(function (c) { function e(c, d) { var e = []; if (0 == c.length || 0 == d.length) e = c.concat(d); else { var f = 0; b.arr.each(c.concat(d), function (a) { a.index > f && (f = a.index) }), f++; for (var g, h, i = 0; f > i; i++)g = {}, b.arr.each(c, function (a) { return a.index == i ? (g = a, !1) : void 0 }), h = {}, b.arr.each(d, function (a) { return a.index == i ? (h = a, !1) : void 0 }), e.push(a.extend(!0, {}, g, h)) } return e } var f, g, h = [], i = [], j = d.ft.$el.find("tr.footable-header, thead > tr:last:has([data-breakpoints]), tbody > tr:first:has([data-breakpoints]), thead > tr:last, tbody > tr:first").first(); if (j.length > 0) { var k = j.parent().is("tbody") && j.children().length == j.children("td").length; k || (d.$header = j.addClass("footable-header")), j.children("td,th").each(function (b, c) { f = a(c), g = f.data(), g.index = b, g.$el = f, g.virtual = k, i.push(g) }), k && (d.showHeader = !1) } b.is.array(d.o.columns) && !b.is.emptyArray(d.o.columns) ? (b.arr.each(d.o.columns, function (a, b) { a.index = b, h.push(a) }), d.parseFinalize(c, e(h, i))) : b.is.promise(d.o.columns) ? d.o.columns.then(function (a) { b.arr.each(a, function (a, b) { a.index = b, h.push(a) }), d.parseFinalize(c, e(h, i)) }, function (a) { c.reject(Error("Columns ajax request error: " + a.status + " (" + a.statusText + ")")) }) : d.parseFinalize(c, e(h, i)) }) }, parseFinalize: function (a, c) {
var d, e = this, f = []; b.arr.each(c, function (a) { (d = b.columns.contains(a.type) ? b.columns.make(a.type, e.ft, a) : new b.Column(e.ft, a)) && f.push(d) }), b.is.emptyArray(f) ? a.reject(Error("No columns supplied.")) : (f.sort(function (a, b) {
return a.index - b.index
}), a.resolve(f))
}, preinit: function (a) { var c = this; return c.ft.raise("preinit.ft.columns", [a]).then(function () { return c.parse(a).then(function (d) { c.array = d, c.showHeader = b.is["boolean"](a.showHeader) ? a.showHeader : c.showHeader }) }) }, init: function () { var a = this; return this.ft.raise("init.ft.columns", [a.array]).then(function () { a.$create() }) }, destroy: function () { var a = this; this.ft.raise("destroy.ft.columns").then(function () { a._fromHTML || a.$header.remove() }) }, predraw: function () { var a = this, c = !0; a.visibleColspan = 0, a.firstVisibleIndex = 0, a.lastVisibleIndex = 0, a.hasHidden = !1, b.arr.each(a.array, function (b) { b.hidden = !a.ft.breakpoints.visible(b.breakpoints), !b.hidden && b.visible && (c && (a.firstVisibleIndex = b.index, c = !1), a.lastVisibleIndex = b.index, a.visibleColspan++), b.hidden && (a.hasHidden = !0) }), a.ft.$el.toggleClass("breakpoint", a.hasHidden) }, draw: function () { b.arr.each(this.array, function (a) { a.$el.css("display", a.hidden || !a.visible ? "none" : "table-cell") }), !this.showHeader && b.is.jq(this.$header.parent()) && this.$header.detach() }, $create: function () { var c = this; c.$header = b.is.jq(c.$header) ? c.$header : a("<tr/>", { "class": "footable-header" }), c.$header.children("th,td").detach(), b.arr.each(c.array, function (a) { c.$header.append(a.$el) }), c.showHeader && !b.is.jq(c.$header.parent()) && c.ft.$el.children("thead").append(c.$header) }, get: function (a) { return a instanceof b.Column ? a : b.is.string(a) ? b.arr.first(this.array, function (b) { return b.name == a }) : b.is.number(a) ? b.arr.first(this.array, function (b) { return b.index == a }) : b.is.fn(a) ? b.arr.get(this.array, a) : null }, ensure: function (a) { var c = this, d = []; return b.is.array(a) ? (b.arr.each(a, function (a) { d.push(c.get(a)) }), d) : d }
}), b.components.register("columns", b.Columns, 900)
}(jQuery, FooTable), function (a) { a.Defaults.prototype.columns = [], a.Defaults.prototype.showHeader = !0 }(FooTable), function (a, b) { b.Rows = b.Component.extend({ construct: function (a) { this._super(a, !0), this.o = a.o, this.array = [], this.all = [], this.showToggle = a.o.showToggle, this.toggleSelector = a.o.toggleSelector, this.toggleColumn = a.o.toggleColumn, this.emptyString = a.o.empty, this.expandFirst = a.o.expandFirst, this.expandAll = a.o.expandAll, this.$empty = null, this._fromHTML = b.is.emptyArray(a.o.rows) && !b.is.promise(a.o.rows) }, parse: function () { var c = this; return a.Deferred(function (a) { var d = c.ft.$el.children("tbody").children("tr"); b.is.array(c.o.rows) && c.o.rows.length > 0 ? c.parseFinalize(a, c.o.rows) : b.is.promise(c.o.rows) ? c.o.rows.then(function (b) { c.parseFinalize(a, b) }, function (b) { a.reject(Error("Rows ajax request error: " + b.status + " (" + b.statusText + ")")) }) : b.is.jq(d) ? (c.parseFinalize(a, d), d.detach()) : c.parseFinalize(a, []) }) }, parseFinalize: function (c, d) { var e = this, f = a.map(d, function (a) { return new b.Row(e.ft, e.ft.columns.array, a) }); c.resolve(f) }, preinit: function (a) { var c = this; return c.ft.raise("preinit.ft.rows", [a]).then(function () { return c.parse().then(function (d) { c.all = d, c.array = c.all.slice(0), c.showToggle = b.is["boolean"](a.showToggle) ? a.showToggle : c.showToggle, c.toggleSelector = b.is.string(a.toggleSelector) ? a.toggleSelector : c.toggleSelector, c.toggleColumn = b.is.string(a.toggleColumn) ? a.toggleColumn : c.toggleColumn, "first" != c.toggleColumn && "last" != c.toggleColumn && (c.toggleColumn = "first"), c.emptyString = b.is.string(a.empty) ? a.empty : c.emptyString, c.expandFirst = b.is["boolean"](a.expandFirst) ? a.expandFirst : c.expandFirst, c.expandAll = b.is["boolean"](a.expandAll) ? a.expandAll : c.expandAll }) }) }, init: function () { var a = this; return a.ft.raise("init.ft.rows", [a.all]).then(function () { a.$create() }) }, destroy: function () { var a = this; this.ft.raise("destroy.ft.rows").then(function () { b.arr.each(a.array, function (b) { b.predraw(!a._fromHTML) }), a.all = a.array = [] }) }, predraw: function () { b.arr.each(this.array, function (a) { a.predraw() }), this.array = this.all.slice(0) }, $create: function () { this.$empty = a("<tr/>", { "class": "footable-empty" }).append(a("<td/>").text(this.emptyString)) }, draw: function () { var a = this, c = a.ft.$el.children("tbody"), d = !0; a.array.length > 0 ? (a.$empty.detach(), b.arr.each(a.array, function (b) { (a.expandFirst && d || a.expandAll) && (b.expanded = !0, d = !1), b.draw(c) })) : (a.$empty.children("td").attr("colspan", a.ft.columns.visibleColspan), c.append(a.$empty)) }, load: function (c, d) { var e = this, f = a.map(c, function (a) { return new b.Row(e.ft, e.ft.columns.array, a) }); b.arr.each(this.array, function (a) { a.predraw() }), this.all = (b.is["boolean"](d) ? d : !1) ? this.all.concat(f) : f, this.array = this.all.slice(0), this.ft.draw() }, expand: function () { b.arr.each(this.array, function (a) { a.expand() }) }, collapse: function () { b.arr.each(this.array, function (a) { a.collapse() }) } }), b.components.register("rows", b.Rows, 800) }(jQuery, FooTable), function (a) { a.Defaults.prototype.rows = [], a.Defaults.prototype.empty = "No results", a.Defaults.prototype.showToggle = !0, a.Defaults.prototype.toggleSelector = "tr,td,.footable-toggle", a.Defaults.prototype.toggleColumn = "first", a.Defaults.prototype.expandFirst = !1, a.Defaults.prototype.expandAll = !1 }(FooTable), function (a) { a.Table.prototype.loadRows = function (a, b) { this.rows.load(a, b) } }(FooTable), function (a) { a.Filter = a.Class.extend({ construct: function (b, c, d, e, f, g, h) { this.name = b, this.space = !a.is.string(e) || "OR" != e && "AND" != e ? "AND" : e, this.connectors = a.is["boolean"](f) ? f : !0, this.ignoreCase = a.is["boolean"](g) ? g : !0, this.hidden = a.is["boolean"](h) ? h : !1, this.query = c instanceof a.Query ? c : new a.Query(c, this.space, this.connectors, this.ignoreCase), this.columns = d }, match: function (b) { return a.is.string(b) ? (a.is.string(this.query) && (this.query = new a.Query(this.query, this.space, this.connectors, this.ignoreCase)), this.query instanceof a.Query ? this.query.match(b) : !1) : !1 }, matchRow: function (b) { var c = this, d = a.arr.map(b.cells, function (b) { return a.arr.contains(c.columns, b.column) ? b.filterValue : null }).join(" "); return c.match(d) } }) }(FooTable), function (a, b) { b.Filtering = b.Component.extend({ construct: function (a) { this._super(a, a.o.filtering.enabled), this.filters = a.o.filtering.filters, this.delay = a.o.filtering.delay, this.min = a.o.filtering.min, this.space = a.o.filtering.space, this.connectors = a.o.filtering.connectors, this.ignoreCase = a.o.filtering.ignoreCase, this.exactMatch = a.o.filtering.exactMatch, this.placeholder = a.o.filtering.placeholder, this.dropdownTitle = a.o.filtering.dropdownTitle, this.position = a.o.filtering.position, this.focus = a.o.filtering.focus, this.container = a.o.filtering.container, this.$container = null, this.$row = null, this.$cell = null, this.$form = null, this.$dropdown = null, this.$input = null, this.$button = null, this._filterTimeout = null, this._exactRegExp = /^"(.*?)"$/ }, preinit: function (a) { var c = this; return c.ft.raise("preinit.ft.filtering").then(function () { c.ft.$el.hasClass("footable-filtering") && (c.enabled = !0), c.enabled = b.is["boolean"](a.filtering) ? a.filtering : c.enabled, c.enabled && (c.space = b.is.string(a.filterSpace) ? a.filterSpace : c.space, c.min = b.is.number(a.filterMin) ? a.filterMin : c.min, c.connectors = b.is["boolean"](a.filterConnectors) ? a.filterConnectors : c.connectors, c.ignoreCase = b.is["boolean"](a.filterIgnoreCase) ? a.filterIgnoreCase : c.ignoreCase, c.exactMatch = b.is["boolean"](a.filterExactMatch) ? a.filterExactMatch : c.exactMatch, c.focus = b.is["boolean"](a.filterFocus) ? a.filterFocus : c.focus, c.delay = b.is.number(a.filterDelay) ? a.filterDelay : c.delay, c.placeholder = b.is.string(a.filterPlaceholder) ? a.filterPlaceholder : c.placeholder, c.dropdownTitle = b.is.string(a.filterDropdownTitle) ? a.filterDropdownTitle : c.dropdownTitle, c.container = b.is.string(a.filterContainer) ? a.filterContainer : c.container, c.filters = b.is.array(a.filterFilters) ? c.ensure(a.filterFilters) : c.ensure(c.filters), c.ft.$el.hasClass("footable-filtering-left") && (c.position = "left"), c.ft.$el.hasClass("footable-filtering-center") && (c.position = "center"), c.ft.$el.hasClass("footable-filtering-right") && (c.position = "right"), c.position = b.is.string(a.filterPosition) ? a.filterPosition : c.position) }, function () { c.enabled = !1 }) }, init: function () { var a = this; return a.ft.raise("init.ft.filtering").then(function () { a.$create() }, function () { a.enabled = !1 }) }, destroy: function () { var a = this; return a.ft.raise("destroy.ft.filtering").then(function () { a.ft.$el.removeClass("footable-filtering").find("thead > tr.footable-filtering").remove() }) }, $create: function () { var c, d = this, e = a("<div/>", { "class": "form-group footable-filtering-search" }).append(a("<label/>", { "class": "sr-only", text: "Search" })), f = a("<div/>", { "class": "input-group" }).appendTo(e), g = a("<div/>", { "class": "input-group-btn" }), h = a("<button/>", { type: "button", "class": "btn btn-default dropdown-toggle" }).on("click", { self: d }, d._onDropdownToggleClicked).append(a("<span/>", { "class": "caret" })); switch (d.position) { case "left": c = "footable-filtering-left"; break; case "center": c = "footable-filtering-center"; break; default: c = "footable-filtering-right" }d.ft.$el.addClass("footable-filtering").addClass(c), d.$container = null === d.container ? a() : a(d.container).first(), d.$container.length ? d.$container.addClass("footable-filtering-external").addClass(c) : (d.$row = a("<tr/>", { "class": "footable-filtering" }).prependTo(d.ft.$el.children("thead")), d.$cell = a("<th/>").attr("colspan", d.ft.columns.visibleColspan).appendTo(d.$row), d.$container = d.$cell), d.$form = a("<form/>", { "class": "form-inline" }).append(e).appendTo(d.$container), d.$input = a("<input/>", { type: "text", "class": "form-control", placeholder: d.placeholder }), d.$button = a("<button/>", { type: "button", "class": "btn btn-primary" }).on("click", { self: d }, d._onSearchButtonClicked).append(a("<span/>", { "class": "fooicon fooicon-search" })), d.$dropdown = a("<ul/>", { "class": "dropdown-menu dropdown-menu-right" }), b.is.emptyString(d.dropdownTitle) || d.$dropdown.append(a("<li/>", { "class": "dropdown-header", text: d.dropdownTitle })), d.$dropdown.append(b.arr.map(d.ft.columns.array, function (b) { return b.filterable ? a("<li/>").append(a("<a/>", { "class": "checkbox" }).append(a("<label/>", { html: b.title }).prepend(a("<input/>", { type: "checkbox", checked: !0 }).data("__FooTableColumn__", b)))) : null })), d.delay > 0 && (d.$input.on("keypress keyup paste", { self: d }, d._onSearchInputChanged), d.$dropdown.on("click", 'input[type="checkbox"]', { self: d }, d._onSearchColumnClicked)), g.append(d.$button, h, d.$dropdown), f.append(d.$input, g) }, predraw: function () { if (!b.is.emptyArray(this.filters)) { var c = this; c.ft.rows.array = a.grep(c.ft.rows.array, function (a) { return a.filtered(c.filters) }) } }, draw: function () { b.is.jq(this.$cell) && this.$cell.attr("colspan", this.ft.columns.visibleColspan); var a = this.find("search"); if (a instanceof b.Filter) { var c = a.query.val(); this.exactMatch && this._exactRegExp.test(c) && (c = c.replace(this._exactRegExp, "$1")), this.$input.val(c) } else this.$input.val(null); this.setButton(!b.arr.any(this.filters, function (a) { return !a.hidden })) }, addFilter: function (a, c, d, e, f, g, h) { var i = this.createFilter(a, c, d, e, f, g, h); i instanceof b.Filter && (this.removeFilter(i.name), this.filters.push(i)) }, removeFilter: function (a) { b.arr.remove(this.filters, function (b) { return b.name == a }) }, filter: function (a) { var b = this; return b.filters = b.ensure(b.filters), b.ft.raise("before.ft.filtering", [b.filters]).then(function () { if (b.filters = b.ensure(b.filters), a) var c = b.$input.prop("selectionStart"), d = b.$input.prop("selectionEnd"); return b.ft.draw().then(function () { a && b.$input.focus().prop({ selectionStart: c, selectionEnd: d }), b.ft.raise("after.ft.filtering", [b.filters]) }) }) }, clear: function () { return this.filters = b.arr.get(this.filters, function (a) { return a.hidden }), this.filter(this.focus) }, setButton: function (a) { a ? this.$button.children(".fooicon").removeClass("fooicon-remove").addClass("fooicon-search") : this.$button.children(".fooicon").removeClass("fooicon-search").addClass("fooicon-remove") }, find: function (a) { return b.arr.first(this.filters, function (b) { return b.name == a }) }, columns: function () { return b.is.jq(this.$dropdown) ? this.$dropdown.find("input:checked").map(function () { return a(this).data("__FooTableColumn__") }).get() : this.ft.columns.get(function (a) { return a.filterable }) }, ensure: function (a) { var c = this, d = [], e = c.columns(); return b.is.emptyArray(a) || b.arr.each(a, function (a) { a = c._ensure(a, e), a instanceof b.Filter && d.push(a) }), d }, createFilter: function (a, c, d, e, f, g, h) { return b.is.string(a) && (a = { name: a, query: c, columns: d, ignoreCase: e, connectors: f, space: g, hidden: h }), this._ensure(a, this.columns()) }, _ensure: function (a, c) { return (b.is.hash(a) || a instanceof b.Filter) && !b.is.emptyString(a.name) && (!b.is.emptyString(a.query) || a.query instanceof b.Query) ? (a.columns = b.is.emptyArray(a.columns) ? c : this.ft.columns.ensure(a.columns), a.ignoreCase = b.is["boolean"](a.ignoreCase) ? a.ignoreCase : this.ignoreCase, a.connectors = b.is["boolean"](a.connectors) ? a.connectors : this.connectors, a.hidden = b.is["boolean"](a.hidden) ? a.hidden : !1, a.space = !b.is.string(a.space) || "AND" !== a.space && "OR" !== a.space ? this.space : a.space, a.query = b.is.string(a.query) ? new b.Query(a.query, a.space, a.connectors, a.ignoreCase) : a.query, a instanceof b.Filter ? a : new b.Filter(a.name, a.query, a.columns, a.space, a.connectors, a.ignoreCase, a.hidden)) : null }, _onSearchInputChanged: function (a) { var c = a.data.self, d = "keypress" == a.type && !b.is.emptyString(String.fromCharCode(a.charCode)), e = "keyup" == a.type && (8 == a.which || 46 == a.which), f = "paste" == a.type; (d || e || f) && (13 == a.which && a.preventDefault(), null != c._filterTimeout && clearTimeout(c._filterTimeout), c._filterTimeout = setTimeout(function () { c._filterTimeout = null; var a = c.$input.val(); a.length >= c.min ? (c.exactMatch && !c._exactRegExp.test(a) && (a = '"' + a + '"'), c.addFilter("search", a), c.filter(c.focus)) : b.is.emptyString(a) && c.clear() }, c.delay)) }, _onSearchButtonClicked: function (a) { a.preventDefault(); var b = a.data.self; null != b._filterTimeout && clearTimeout(b._filterTimeout); var c = b.$button.children(".fooicon"); if (c.hasClass("fooicon-remove")) b.clear(); else { var d = b.$input.val(); d.length >= b.min && (b.exactMatch && !b._exactRegExp.test(d) && (d = '"' + d + '"'), b.addFilter("search", d), b.filter(b.focus)) } }, _onSearchColumnClicked: function (a) { var b = a.data.self; null != b._filterTimeout && clearTimeout(b._filterTimeout), b._filterTimeout = setTimeout(function () { b._filterTimeout = null; var a = b.$button.children(".fooicon"); a.hasClass("fooicon-remove") && (a.removeClass("fooicon-remove").addClass("fooicon-search"), b.addFilter("search", b.$input.val()), b.filter()) }, b.delay) }, _onDropdownToggleClicked: function (b) { b.preventDefault(), b.stopPropagation(); var c = b.data.self; c.$dropdown.parent().toggleClass("open"), c.$dropdown.parent().hasClass("open") ? a(document).on("click.footable", { self: c }, c._onDocumentClicked) : a(document).off("click.footable", c._onDocumentClicked) }, _onDocumentClicked: function (b) { if (0 == a(b.target).closest(".dropdown-menu").length) { b.preventDefault(); var c = b.data.self; c.$dropdown.parent().removeClass("open"), a(document).off("click.footable", c._onDocumentClicked) } } }), b.components.register("filtering", b.Filtering, 500) }(jQuery, FooTable), function (a) { a.Query = a.Class.extend({ construct: function (b, c, d, e) { this._original = null, this._value = null, this.space = !a.is.string(c) || "OR" != c && "AND" != c ? "AND" : c, this.connectors = a.is["boolean"](d) ? d : !0, this.ignoreCase = a.is["boolean"](e) ? e : !0, this.left = null, this.right = null, this.parts = [], this.operator = null, this.val(b) }, val: function (b) { if (a.is.emptyString(b)) return this._value; if (a.is.emptyString(this._original)) this._original = b; else if (this._original == b) return; this._value = b, this._parse() }, match: function (b) { return a.is.emptyString(this.operator) || "OR" === this.operator ? this._left(b, !1) || this._match(b, !1) || this._right(b, !1) : "AND" === this.operator ? this._left(b, !0) && this._match(b, !0) && this._right(b, !0) : void 0 }, _match: function (b, c) { var d = this, e = !1, f = a.is.emptyString(b); return a.is.emptyArray(d.parts) && d.left instanceof a.Query ? c : a.is.emptyArray(d.parts) ? e : ("OR" === d.space ? a.arr.each(d.parts, function (c) { if (c.empty && f) { if (e = !0, c.negate) return e = !1 } else { var g = (c.exact ? a.str.containsExact : a.str.contains)(b, c.query, d.ignoreCase); if (g && !c.negate && (e = !0), g && c.negate) return e = !1 } }) : (e = !0, a.arr.each(d.parts, function (c) { if (c.empty) return (!f && !c.negate || f && c.negate) && (e = !1), e; var g = (c.exact ? a.str.containsExact : a.str.contains)(b, c.query, d.ignoreCase); return (!g && !c.negate || g && c.negate) && (e = !1), e })), e) }, _left: function (b, c) { return this.left instanceof a.Query ? this.left.match(b) : c }, _right: function (b, c) { return this.right instanceof a.Query ? this.right.match(b) : c }, _parse: function () { if (!a.is.emptyString(this._value)) if (/\sOR\s/.test(this._value)) { this.operator = "OR"; var b = this._value.split(/(?:\sOR\s)(.*)?/); this.left = new a.Query(b[0], this.space, this.connectors, this.ignoreCase), this.right = new a.Query(b[1], this.space, this.connectors, this.ignoreCase) } else if (/\sAND\s/.test(this._value)) { this.operator = "AND"; var c = this._value.split(/(?:\sAND\s)(.*)?/); this.left = new a.Query(c[0], this.space, this.connectors, this.ignoreCase), this.right = new a.Query(c[1], this.space, this.connectors, this.ignoreCase) } else { var d = this; this.parts = a.arr.map(this._value.match(/(?:[^\s"]+|"[^"]*")+/g), function (a) { return d._part(a) }) } }, _part: function (b) { var c = { query: b, negate: !1, phrase: !1, exact: !1, empty: !1 }; return a.str.startsWith(c.query, "-") && (c.query = a.str.from(c.query, "-"), c.negate = !0), /^"(.*?)"$/.test(c.query) ? (c.query = c.query.replace(/^"(.*?)"$/, "$1"), c.phrase = !0, c.exact = !0) : this.connectors && /(?:\w)+?([-_\+\.])(?:\w)+?/.test(c.query) && (c.query = c.query.replace(/(?:\w)+?([-_\+\.])(?:\w)+?/g, function (a, b) { return a.replace(b, " ") }), c.phrase = !0), c.empty = c.phrase && a.is.emptyString(c.query), c } }) }(FooTable), function (a) { a.Cell.prototype.filterValue = null, a.Cell.prototype.__filtering_define__ = function (a) { this.filterValue = this.column.filterValue.call(this.column, a) }, a.Cell.prototype.__filtering_val__ = function (b) { a.is.defined(b) && (this.filterValue = this.column.filterValue.call(this.column, b)) }, a.Cell.extend("define", function (a) { this._super(a), this.__filtering_define__(a) }), a.Cell.extend("val", function (a, b, c) { var d = this._super(a, b, c); return this.__filtering_val__(a), d }) }(FooTable), function (a, b) { b.Column.prototype.filterable = !0, b.Column.prototype.filterValue = function (c) { if (b.is.element(c) || b.is.jq(c)) { var d = a(c).data("filterValue"); return b.is.defined(d) ? "" + d : a(c).text() } if (b.is.hash(c) && b.is.hash(c.options)) { if (b.is.string(c.options.filterValue)) return c.options.filterValue; b.is.defined(c.value) && (c = c.value) } return b.is.defined(c) && null != c ? c + "" : "" }, b.Column.prototype.__filtering_define__ = function (a) { this.filterable = b.is["boolean"](a.filterable) ? a.filterable : this.filterable, this.filterValue = b.checkFnValue(this, a.filterValue, this.filterValue) }, b.Column.extend("define", function (a) { this._super(a), this.__filtering_define__(a) }) }(jQuery, FooTable), function (a) { a.Defaults.prototype.filtering = { enabled: !1, filters: [], delay: 1200, min: 1, space: "AND", placeholder: "Search", dropdownTitle: null, position: "right", connectors: !0, ignoreCase: !0, exactMatch: !1, focus: !0, container: null } }(FooTable), function (a) { a.Row.prototype.filtered = function (b) { var c = !0, d = this; return a.arr.each(b, function (a) { return 0 == (c = a.matchRow(d)) ? !1 : void 0 }), c } }(FooTable), function (a, b) { b.Sorter = b.Class.extend({ construct: function (a, b) { this.column = a, this.direction = b } }) }(jQuery, FooTable), function (a, b) { b.Sorting = b.Component.extend({ construct: function (a) { this._super(a, a.o.sorting.enabled), this.o = a.o.sorting, this.column = null, this.allowed = !0, this.initial = null }, preinit: function (a) { var c = this; this.ft.raise("preinit.ft.sorting", [a]).then(function () { c.ft.$el.hasClass("footable-sorting") && (c.enabled = !0), c.enabled = b.is["boolean"](a.sorting) ? a.sorting : c.enabled, c.enabled && (c.column = b.arr.first(c.ft.columns.array, function (a) { return a.sorted })) }, function () { c.enabled = !1 }) }, init: function () { var c = this; this.ft.raise("init.ft.sorting").then(function () { if (!c.initial) { var d = !!c.column; c.initial = { isset: d, rows: c.ft.rows.all.slice(0), column: d ? c.column.name : null, direction: d ? c.column.direction : null } } b.arr.each(c.ft.columns.array, function (b) { b.sortable && b.$el.addClass("footable-sortable").append(a("<span/>", { "class": "fooicon fooicon-sort" })) }), c.ft.$el.on("click.footable", ".footable-sortable", { self: c }, c._onSortClicked) }, function () { c.enabled = !1 }) }, destroy: function () { var a = this; this.ft.raise("destroy.ft.paging").then(function () { a.ft.$el.off("click.footable", ".footable-sortable", a._onSortClicked), a.ft.$el.children("thead").children("tr.footable-header").children(".footable-sortable").removeClass("footable-sortable footable-asc footable-desc").find("span.fooicon").remove() }) }, predraw: function () { if (this.column) { var a = this, b = a.column; a.ft.rows.array.sort(function (a, c) { return "DESC" == b.direction ? b.sorter(c.cells[b.index].sortValue, a.cells[b.index].sortValue) : b.sorter(a.cells[b.index].sortValue, c.cells[b.index].sortValue) }) } }, draw: function () { if (this.column) { var a = this, b = a.ft.$el.find("thead > tr > .footable-sortable"), c = a.column.$el; b.removeClass("footable-asc footable-desc").children(".fooicon").removeClass("fooicon-sort fooicon-sort-asc fooicon-sort-desc"), b.not(c).children(".fooicon").addClass("fooicon-sort"), c.addClass("DESC" == a.column.direction ? "footable-desc" : "footable-asc").children(".fooicon").addClass("DESC" == a.column.direction ? "fooicon-sort-desc" : "fooicon-sort-asc") } }, sort: function (a, b) { return this._sort(a, b) }, toggleAllowed: function (a) { a = b.is["boolean"](a) ? a : !this.allowed, this.allowed = a, this.ft.$el.toggleClass("footable-sorting-disabled", !this.allowed) }, hasChanged: function () { return !(!this.initial || !this.column || this.column.name === this.initial.column && (this.column.direction === this.initial.direction || null === this.initial.direction && "ASC" === this.column.direction)) }, reset: function () { this.initial && (this.initial.isset ? this.sort(this.initial.column, this.initial.direction) : (this.column && (this.column.$el.removeClass("footable-asc footable-desc"), this.column = null), this.ft.rows.all = this.initial.rows, this.ft.draw())) }, _sort: function (c, d) { if (!this.allowed) return a.Deferred().reject("sorting disabled"); var e = this, f = new b.Sorter(e.ft.columns.get(c), b.Sorting.dir(d)); return e.ft.raise("before.ft.sorting", [f]).then(function () { return b.arr.each(e.ft.columns.array, function (a) { a != e.column && (a.direction = null) }), e.column = e.ft.columns.get(f.column), e.column && (e.column.direction = b.Sorting.dir(f.direction)), e.ft.draw().then(function () { e.ft.raise("after.ft.sorting", [f]) }) }) }, _onSortClicked: function (b) { var c = b.data.self, d = a(this).closest("th,td"), e = d.is(".footable-asc, .footable-desc") ? d.hasClass("footable-desc") ? "ASC" : "DESC" : "ASC"; c._sort(d.index(), e) } }), b.Sorting.dir = function (a) { return !b.is.string(a) || "ASC" != a && "DESC" != a ? "ASC" : a }, b.components.register("sorting", b.Sorting, 600) }(jQuery, FooTable), function (a) { a.Cell.prototype.sortValue = null, a.Cell.prototype.__sorting_define__ = function (a) { this.sortValue = this.column.sortValue.call(this.column, a) }, a.Cell.prototype.__sorting_val__ = function (b) { a.is.defined(b) && (this.sortValue = this.column.sortValue.call(this.column, b)) }, a.Cell.extend("define", function (a) { this._super(a), this.__sorting_define__(a) }), a.Cell.extend("val", function (a, b, c) { var d = this._super(a, b, c); return this.__sorting_val__(a), d }) }(FooTable), function (a, b) { b.Column.prototype.direction = null, b.Column.prototype.sortable = !0, b.Column.prototype.sorted = !1, b.Column.prototype.sorter = function (a, b) { return "string" == typeof a && (a = a.toLowerCase()), "string" == typeof b && (b = b.toLowerCase()), a === b ? 0 : b > a ? -1 : 1 }, b.Column.prototype.sortValue = function (c) { if (b.is.element(c) || b.is.jq(c)) { var d = a(c).data("sortValue"); return b.is.defined(d) ? d : this.parser(c) } if (b.is.hash(c) && b.is.hash(c.options)) { if (b.is.string(c.options.sortValue)) return c.options.sortValue; b.is.defined(c.value) && (c = c.value) } return b.is.defined(c) && null != c ? c : null }, b.Column.prototype.__sorting_define__ = function (a) { this.sorter = b.checkFnValue(this, a.sorter, this.sorter), this.direction = b.is.type(a.direction, "string") ? b.Sorting.dir(a.direction) : null, this.sortable = b.is["boolean"](a.sortable) ? a.sortable : !0, this.sorted = b.is["boolean"](a.sorted) ? a.sorted : !1, this.sortValue = b.checkFnValue(this, a.sortValue, this.sortValue) }, b.Column.extend("define", function (a) { this._super(a), this.__sorting_define__(a) }) }(jQuery, FooTable), function (a) { a.Defaults.prototype.sorting = { enabled: !1 } }(FooTable), function (a, b) { b.HTMLColumn.extend("__sorting_define__", function (c) { this._super(c), this.sortUse = b.is.string(c.sortUse) && -1 !== a.inArray(c.sortUse, ["html", "text"]) ? c.sortUse : "html" }), b.HTMLColumn.prototype.sortValue = function (c) { if (b.is.element(c) || b.is.jq(c)) { var d = a(c).data("sortValue"); return b.is.defined(d) ? d : this.parser(c) } if (b.is.hash(c) && b.is.hash(c.options)) { if (b.is.string(c.options.sortValue)) return c.options.sortValue; b.is.defined(c.value) && (c = c.value) } return b.is.defined(c) && null != c ? c : null } }(jQuery, FooTable), function (a, b) { b.NumberColumn.prototype.sortValue = function (c) { if (b.is.element(c) || b.is.jq(c)) { var d = a(c).data("sortValue"); return b.is.number(d) ? d : this.parser(c) } if (b.is.hash(c) && b.is.hash(c.options)) { if (b.is.string(c.options.sortValue)) return this.parser(c); if (b.is.number(c.options.sortValue)) return c.options.sortValue; if (b.is.number(c.value)) return c.value } return b.is.string(c) ? this.parser(c) : b.is.number(c) ? c : null } }(jQuery, FooTable), function (a) { a.Table.prototype.sort = function (b, c) { return this.use(a.Sorting).sort(b, c) } }(FooTable), function (a, b) { b.Pager = b.Class.extend({ construct: function (a, b, c, d, e) { this.total = a, this.current = b, this.size = c, this.page = d, this.forward = e } }) }(jQuery, FooTable), function (a, b) {
b.Paging = b.Component.extend({
construct: function (a) { this._super(a, a.o.paging.enabled), this.strings = a.o.paging.strings, this.current = a.o.paging.current, this.size = a.o.paging.size, this.limit = a.o.paging.limit, this.position = a.o.paging.position, this.countFormat = a.o.paging.countFormat, this.container = a.o.paging.container, this.total = -1, this.totalRows = 0, this.previous = -1, this.formattedCount = null, this.$container = null, this.$wrapper = null, this.$row = null, this.$cell = null, this.$pagination = null, this.$count = null, this.detached = !0, this._createdLinks = 0 }, preinit: function (a) { var c = this; this.ft.raise("preinit.ft.paging", [a]).then(function () { c.ft.$el.hasClass("footable-paging") && (c.enabled = !0), c.enabled = b.is["boolean"](a.paging) ? a.paging : c.enabled, c.enabled && (c.size = b.is.number(a.pagingSize) ? a.pagingSize : c.size, c.current = b.is.number(a.pagingCurrent) ? a.pagingCurrent : c.current, c.limit = b.is.number(a.pagingLimit) ? a.pagingLimit : c.limit, c.ft.$el.hasClass("footable-paging-left") && (c.position = "left"), c.ft.$el.hasClass("footable-paging-center") && (c.position = "center"), c.ft.$el.hasClass("footable-paging-right") && (c.position = "right"), c.position = b.is.string(a.pagingPosition) ? a.pagingPosition : c.position, c.countFormat = b.is.string(a.pagingCountFormat) ? a.pagingCountFormat : c.countFormat, c.container = b.is.string(a.pagingContainer) ? a.pagingContainer : c.container, c.total = Math.ceil(c.ft.rows.all.length / c.size)) }, function () { c.enabled = !1 }) }, init: function () { var a = this; this.ft.raise("init.ft.paging").then(function () { a.$create() }, function () { a.enabled = !1 }) }, destroy: function () { var a = this; this.ft.raise("destroy.ft.paging").then(function () { a.ft.$el.removeClass("footable-paging").find("tfoot > tr.footable-paging").remove(), a.detached = !0, a._createdLinks = 0 }) }, predraw: function () { this.total = Math.ceil(this.ft.rows.array.length / this.size), this.current = this.current > this.total ? this.total : this.current < 1 ? 1 : this.current, this.totalRows = this.ft.rows.array.length, this.totalRows > this.size && (this.ft.rows.array = this.ft.rows.array.splice((this.current - 1) * this.size, this.size)), this.formattedCount = this.format(this.countFormat) }, draw: function () { if (this.total <= 1) this.detached || (this.$row ? this.$row.detach() : this.$wrapper.detach(), this.detached = !0); else { if (this.detached) { if (this.$row) { var c = this.ft.$el.children("tfoot"); 0 == c.length && (c = a("<tfoot/>"), this.ft.$el.append(c)), this.$row.appendTo(c) } else this.$wrapper.appendTo(this.$container); this.detached = !1 } b.is.jq(this.$cell) && this.$cell.attr("colspan", this.ft.columns.visibleColspan), this._createLinks(), this._setVisible(this.current, this.current > this.previous), this._setNavigation(!0), this.$count.text(this.formattedCount) } }, $create: function () { this._createdLinks = 0; var c = "footable-paging-center"; switch (this.position) { case "left": c = "footable-paging-left"; break; case "right": c = "footable-paging-right" }if (this.ft.$el.addClass("footable-paging").addClass(c), this.$container = null === this.container ? null : a(this.container).first(), b.is.jq(this.$container)) this.$container.addClass("footable-paging-external").addClass(c); else { var d = this.ft.$el.children("tfoot"); 0 == d.length && (d = a("<tfoot/>"), this.ft.$el.append(d)), this.$row = a("<tr/>", { "class": "footable-paging" }).prependTo(d), this.$container = this.$cell = a("<td/>").attr("colspan", this.ft.columns.visibleColspan).appendTo(this.$row) } this.$wrapper = a("<div/>", { "class": "footable-pagination-wrapper" }).appendTo(this.$container), this.$pagination = a("<ul/>", { "class": "pagination" }).on("click.footable", "a.footable-page-link", { self: this }, this._onPageClicked), this.$count = a("<span/>", { "class": "label label-default" }), this.$wrapper.append(this.$pagination, a("<div/>", { "class": "divider" }), this.$count), this.detached = !1 }, format: function (a) { var b = this.size * (this.current - 1) + 1, c = this.size * this.current; return 0 == this.ft.rows.array.length ? (b = 0, c = 0) : c = c > this.totalRows ? this.totalRows : c, a.replace(/\{CP}/g, this.current).replace(/\{TP}/g, this.total).replace(/\{PF}/g, b).replace(/\{PL}/g, c).replace(/\{TR}/g, this.totalRows) }, first: function () { return this._set(1) }, prev: function () { return this._set(this.current - 1 > 0 ? this.current - 1 : 1) }, next: function () { return this._set(this.current + 1 < this.total ? this.current + 1 : this.total) }, last: function () { return this._set(this.total) }, "goto": function (a) { return this._set(a > this.total ? this.total : 1 > a ? 1 : a) }, prevPages: function () { var a = this.$pagination.children("li.footable-page.visible:first").data("page") - 1; this._setVisible(a, !0), this._setNavigation(!1) }, nextPages: function () { var a = this.$pagination.children("li.footable-page.visible:last").data("page") + 1; this._setVisible(a, !1), this._setNavigation(!1) }, pageSize: function (a) { return a = parseInt(a), isNaN(a) ? this.size : (this.size = a, this.total = Math.ceil(this.ft.rows.all.length / this.size), b.is.jq(this.$wrapper) && (this.$container.is("td") ? this.$row.remove() : this.$wrapper.remove()), this.$create(), void this.ft.draw()) }, _set: function (c) { var d = this, e = new b.Pager(d.total, d.current, d.size, c, c > d.current); return d.ft.raise("before.ft.paging", [e]).then(function () { return e.page = e.page > e.total ? e.total : e.page, e.page = e.page < 1 ? 1 : e.page, d.current == c ? a.when() : (d.previous = d.current, d.current = e.page, d.ft.draw().then(function () { d.ft.raise("after.ft.paging", [e]) })) }) }, _createLinks: function () { if (this._createdLinks !== this.total) { var b = this, c = b.total > 1, d = function (b, c, d) { return a("<li/>", { "class": d }).attr("data-page", b).append(a("<a/>", { "class": "footable-page-link", href: "#" }).data("page", b).html(c)) }; b.$pagination.empty(), c && (b.$pagination.append(d("first", b.strings.first, "footable-page-nav")), b.$pagination.append(d("prev", b.strings.prev, "footable-page-nav")), b.limit > 0 && b.limit < b.total && b.$pagination.append(d("prev-limit", b.strings.prevPages, "footable-page-nav"))); for (var e, f = 0; f < b.total; f++)e = d(f + 1, f + 1, "footable-page"), b.$pagination.append(e); c && (b.limit > 0 && b.limit < b.total && b.$pagination.append(d("next-limit", b.strings.nextPages, "footable-page-nav")), b.$pagination.append(d("next", b.strings.next, "footable-page-nav")), b.$pagination.append(d("last", b.strings.last, "footable-page-nav"))), b._createdLinks = b.total } }, _setNavigation: function (a) {
1 == this.current ? this.$pagination.children('li[data-page="first"],li[data-page="prev"]').addClass("disabled") : this.$pagination.children('li[data-page="first"],li[data-page="prev"]').removeClass("disabled"), this.current == this.total ? this.$pagination.children('li[data-page="next"],li[data-page="last"]').addClass("disabled") : this.$pagination.children('li[data-page="next"],li[data-page="last"]').removeClass("disabled"), 1 == (this.$pagination.children("li.footable-page.visible:first").data("page") || 1) ? this.$pagination.children('li[data-page="prev-limit"]').addClass("disabled") : this.$pagination.children('li[data-page="prev-limit"]').removeClass("disabled"), (this.$pagination.children("li.footable-page.visible:last").data("page") || this.limit) == this.total ? this.$pagination.children('li[data-page="next-limit"]').addClass("disabled") : this.$pagination.children('li[data-page="next-limit"]').removeClass("disabled"), this.limit > 0 && this.total < this.limit ? this.$pagination.children('li[data-page="prev-limit"],li[data-page="next-limit"]').css("display", "none") : this.$pagination.children('li[data-page="prev-limit"],li[data-page="next-limit"]').css("display", ""),
a && this.$pagination.children("li.footable-page").removeClass("active").filter('li[data-page="' + this.current + '"]').addClass("active")
}, _setVisible: function (a, b) { if (this.limit > 0 && this.total > this.limit) { if (!this.$pagination.children('li.footable-page[data-page="' + a + '"]').hasClass("visible")) { var c = 0, d = 0; 1 == b ? (d = a > this.total ? this.total : a, c = d - this.limit) : (c = 1 > a ? 0 : a - 1, d = c + this.limit), 0 > c && (c = 0, d = this.limit > this.total ? this.total : this.limit), d > this.total && (d = this.total, c = this.total - this.limit < 0 ? 0 : this.total - this.limit), this.$pagination.children("li.footable-page").removeClass("visible").slice(c, d).addClass("visible") } } else this.$pagination.children("li.footable-page").removeClass("visible").slice(0, this.total).addClass("visible") }, _onPageClicked: function (b) { if (b.preventDefault(), !a(b.target).closest("li").is(".active,.disabled")) { var c = b.data.self, d = a(this).data("page"); switch (d) { case "first": return void c.first(); case "prev": return void c.prev(); case "next": return void c.next(); case "last": return void c.last(); case "prev-limit": return void c.prevPages(); case "next-limit": return void c.nextPages(); default: return void c._set(d) } } }
}), b.components.register("paging", b.Paging, 400)
}(jQuery, FooTable), function (a) { a.Defaults.prototype.paging = { enabled: !1, countFormat: "{CP} of {TP}", current: 1, limit: 5, position: "center", size: 10, container: null, strings: { first: "&laquo;", prev: "&lsaquo;", next: "&rsaquo;", last: "&raquo;", prevPages: "...", nextPages: "..." } } }(FooTable), function (a) { a.Table.prototype.gotoPage = function (b) { return this.use(a.Paging)["goto"](b) }, a.Table.prototype.nextPage = function () { return this.use(a.Paging).next() }, a.Table.prototype.prevPage = function () { return this.use(a.Paging).prev() }, a.Table.prototype.firstPage = function () { return this.use(a.Paging).first() }, a.Table.prototype.lastPage = function () { return this.use(a.Paging).last() }, a.Table.prototype.nextPages = function () { return this.use(a.Paging).nextPages() }, a.Table.prototype.prevPages = function () { return this.use(a.Paging).prevPages() }, a.Table.prototype.pageSize = function (b) { return this.use(a.Paging).pageSize(b) } }(FooTable), function (a, b) { b.Editing = b.Component.extend({ construct: function (c) { this._super(c, c.o.editing.enabled), this.pageToNew = c.o.editing.pageToNew, this.alwaysShow = c.o.editing.alwaysShow, this.column = a.extend(!0, {}, c.o.editing.column, { visible: this.alwaysShow }), this.position = c.o.editing.position, this.showText = c.o.editing.showText, this.hideText = c.o.editing.hideText, this.addText = c.o.editing.addText, this.editText = c.o.editing.editText, this.deleteText = c.o.editing.deleteText, this.viewText = c.o.editing.viewText, this.allowAdd = c.o.editing.allowAdd, this.allowEdit = c.o.editing.allowEdit, this.allowDelete = c.o.editing.allowDelete, this.allowView = c.o.editing.allowView, this._$buttons = null, this.callbacks = { addRow: b.checkFnValue(this, c.o.editing.addRow), editRow: b.checkFnValue(this, c.o.editing.editRow), deleteRow: b.checkFnValue(this, c.o.editing.deleteRow), viewRow: b.checkFnValue(this, c.o.editing.viewRow) } }, preinit: function (c) { var d = this; this.ft.raise("preinit.ft.editing", [c]).then(function () { if (d.ft.$el.hasClass("footable-editing") && (d.enabled = !0), d.enabled = b.is["boolean"](c.editing) ? c.editing : d.enabled, d.enabled) { if (d.pageToNew = b.is["boolean"](c.editingPageToNew) ? c.editingPageToNew : d.pageToNew, d.alwaysShow = b.is["boolean"](c.editingAlwaysShow) ? c.editingAlwaysShow : d.alwaysShow, d.position = b.is.string(c.editingPosition) ? c.editingPosition : d.position, d.showText = b.is.string(c.editingShowText) ? c.editingShowText : d.showText, d.hideText = b.is.string(c.editingHideText) ? c.editingHideText : d.hideText, d.addText = b.is.string(c.editingAddText) ? c.editingAddText : d.addText, d.editText = b.is.string(c.editingEditText) ? c.editingEditText : d.editText, d.deleteText = b.is.string(c.editingDeleteText) ? c.editingDeleteText : d.deleteText, d.viewText = b.is.string(c.editingViewText) ? c.editingViewText : d.viewText, d.allowAdd = b.is["boolean"](c.editingAllowAdd) ? c.editingAllowAdd : d.allowAdd, d.allowEdit = b.is["boolean"](c.editingAllowEdit) ? c.editingAllowEdit : d.allowEdit, d.allowDelete = b.is["boolean"](c.editingAllowDelete) ? c.editingAllowDelete : d.allowDelete, d.allowView = b.is["boolean"](c.editingAllowView) ? c.editingAllowView : d.allowView, d.column = new b.EditingColumn(d.ft, d, a.extend(!0, {}, d.column, c.editingColumn, { visible: d.alwaysShow })), d.ft.$el.hasClass("footable-editing-left") && (d.position = "left"), d.ft.$el.hasClass("footable-editing-right") && (d.position = "right"), "right" === d.position) d.column.index = d.ft.columns.array.length; else { d.column.index = 0; for (var e = 0, f = d.ft.columns.array.length; f > e; e++)d.ft.columns.array[e].index += 1 } d.ft.columns.array.push(d.column), d.ft.columns.array.sort(function (a, b) { return a.index - b.index }), d.callbacks.addRow = b.checkFnValue(d, c.editingAddRow, d.callbacks.addRow), d.callbacks.editRow = b.checkFnValue(d, c.editingEditRow, d.callbacks.editRow), d.callbacks.deleteRow = b.checkFnValue(d, c.editingDeleteRow, d.callbacks.deleteRow), d.callbacks.viewRow = b.checkFnValue(d, c.editingViewRow, d.callbacks.viewRow) } }, function () { d.enabled = !1 }) }, init: function () { var a = this; this.ft.raise("init.ft.editing").then(function () { a.$create() }, function () { a.enabled = !1 }) }, destroy: function () { var a = this; this.ft.raise("destroy.ft.editing").then(function () { a.ft.$el.removeClass("footable-editing footable-editing-always-show footable-editing-no-add footable-editing-no-edit footable-editing-no-delete footable-editing-no-view").off("click.ft.editing").find("tfoot > tr.footable-editing").remove() }) }, $create: function () { var b = this, c = "right" === b.position ? "footable-editing-right" : "footable-editing-left"; b.ft.$el.addClass("footable-editing").addClass(c).on("click.ft.editing", ".footable-show", { self: b }, b._onShowClick).on("click.ft.editing", ".footable-hide", { self: b }, b._onHideClick).on("click.ft.editing", ".footable-edit", { self: b }, b._onEditClick).on("click.ft.editing", ".footable-delete", { self: b }, b._onDeleteClick).on("click.ft.editing", ".footable-view", { self: b }, b._onViewClick).on("click.ft.editing", ".footable-add", { self: b }, b._onAddClick), b.$cell = a("<td/>").attr("colspan", b.ft.columns.visibleColspan).append(b.$buttonShow()), b.allowAdd && b.$cell.append(b.$buttonAdd()), b.$cell.append(b.$buttonHide()), b.alwaysShow && b.ft.$el.addClass("footable-editing-always-show"), b.allowAdd || b.ft.$el.addClass("footable-editing-no-add"), b.allowEdit || b.ft.$el.addClass("footable-editing-no-edit"), b.allowDelete || b.ft.$el.addClass("footable-editing-no-delete"), b.allowView || b.ft.$el.addClass("footable-editing-no-view"); var d = b.ft.$el.children("tfoot"); 0 == d.length && (d = a("<tfoot/>"), b.ft.$el.append(d)), b.$row = a("<tr/>", { "class": "footable-editing" }).append(b.$cell).appendTo(d) }, $buttonShow: function () { return '<button type="button" class="btn btn-primary footable-show">' + this.showText + "</button>" }, $buttonHide: function () { return '<button type="button" class="btn btn-default footable-hide">' + this.hideText + "</button>" }, $buttonAdd: function () { return '<button type="button" class="btn btn-primary footable-add">' + this.addText + "</button> " }, $buttonEdit: function () { return '<button type="button" class="btn btn-default footable-edit">' + this.editText + "</button> " }, $buttonDelete: function () { return '<button type="button" class="btn btn-default footable-delete">' + this.deleteText + "</button>" }, $buttonView: function () { return '<button type="button" class="btn btn-default footable-view">' + this.viewText + "</button> " }, $rowButtons: function () { return b.is.jq(this._$buttons) ? this._$buttons.clone() : (this._$buttons = a('<div class="btn-group btn-group-xs" role="group"></div>'), this.allowView && this._$buttons.append(this.$buttonView()), this.allowEdit && this._$buttons.append(this.$buttonEdit()), this.allowDelete && this._$buttons.append(this.$buttonDelete()), this._$buttons) }, draw: function () { this.$cell.attr("colspan", this.ft.columns.visibleColspan) }, _onEditClick: function (c) { c.preventDefault(); var d = c.data.self, e = a(this).closest("tr").data("__FooTableRow__"); e instanceof b.Row && d.ft.raise("edit.ft.editing", [e]).then(function () { d.callbacks.editRow.call(d.ft, e) }) }, _onDeleteClick: function (c) { c.preventDefault(); var d = c.data.self, e = a(this).closest("tr").data("__FooTableRow__"); e instanceof b.Row && d.ft.raise("delete.ft.editing", [e]).then(function () { d.callbacks.deleteRow.call(d.ft, e) }) }, _onViewClick: function (c) { c.preventDefault(); var d = c.data.self, e = a(this).closest("tr").data("__FooTableRow__"); e instanceof b.Row && d.ft.raise("view.ft.editing", [e]).then(function () { d.callbacks.viewRow.call(d.ft, e) }) }, _onAddClick: function (a) { a.preventDefault(); var b = a.data.self; b.ft.raise("add.ft.editing").then(function () { b.callbacks.addRow.call(b.ft) }) }, _onShowClick: function (a) { a.preventDefault(); var b = a.data.self; b.ft.raise("show.ft.editing").then(function () { b.ft.$el.addClass("footable-editing-show"), b.column.visible = !0, b.ft.draw() }) }, _onHideClick: function (a) { a.preventDefault(); var b = a.data.self; b.ft.raise("hide.ft.editing").then(function () { b.ft.$el.removeClass("footable-editing-show"), b.column.visible = !1, b.ft.draw() }) } }), b.components.register("editing", b.Editing, 850) }(jQuery, FooTable), function (a, b) { b.EditingColumn = b.Column.extend({ construct: function (a, b, c) { this._super(a, c, "editing"), this.editing = b, this.internal = !0 }, $create: function () { (this.$el = !this.virtual && b.is.jq(this.$el) ? this.$el : a("<th/>", { "class": "footable-editing" })).html(this.title) }, parser: function (c) { if (b.is.string(c) && (c = a(a.trim(c))), b.is.element(c) && (c = a(c)), b.is.jq(c)) { var d = c.prop("tagName").toLowerCase(); return "td" == d || "th" == d ? c.data("value") || c.contents() : c } return null }, createCell: function (c) { var d = this.editing.$rowButtons(), e = a("<td/>").append(d); return b.is.jq(c.$el) && (0 === this.index ? e.prependTo(c.$el) : e.insertAfter(c.$el.children().eq(this.index - 1))), new b.Cell(this.ft, c, this, e || e.html()) } }), b.columns.register("editing", b.EditingColumn) }(jQuery, FooTable), function (a, b) { b.Defaults.prototype.editing = { enabled: !1, pageToNew: !0, position: "right", alwaysShow: !1, addRow: function () { }, editRow: function (a) { }, deleteRow: function (a) { }, viewRow: function (a) { }, showText: '<span class="fooicon fooicon-pencil" aria-hidden="true"></span> Edit rows', hideText: "Cancel", addText: "New row", editText: '<span class="fooicon fooicon-pencil" aria-hidden="true"></span>', deleteText: '<span class="fooicon fooicon-trash" aria-hidden="true"></span>', viewText: '<span class="fooicon fooicon-stats" aria-hidden="true"></span>', allowAdd: !0, allowEdit: !0, allowDelete: !0, allowView: !1, column: { classes: "footable-editing", name: "editing", title: "", filterable: !1, sortable: !1 } } }(jQuery, FooTable), function (a, b) { b.is.defined(b.Paging) && (b.Paging.prototype.unpaged = [], b.Paging.extend("predraw", function () { this.unpaged = this.ft.rows.array.slice(0), this._super() })) }(jQuery, FooTable), function (a, b) { b.Row.prototype.add = function (c) { c = b.is["boolean"](c) ? c : !0; var d = this; return a.Deferred(function (a) { var b = d.ft.rows.all.push(d) - 1; return c ? d.ft.draw().then(function () { a.resolve(b) }) : void a.resolve(b) }) }, b.Row.prototype["delete"] = function (c) { c = b.is["boolean"](c) ? c : !0; var d = this; return a.Deferred(function (a) { var e = d.ft.rows.all.indexOf(d); return b.is.number(e) && e >= 0 && e < d.ft.rows.all.length && (d.ft.rows.all.splice(e, 1), c) ? d.ft.draw().then(function () { a.resolve(d) }) : void a.resolve(d) }) }, b.is.defined(b.Paging) && b.Row.extend("add", function (a) { a = b.is["boolean"](a) ? a : !0; var c, d = this, e = this._super(a), f = d.ft.use(b.Editing); return f && f.pageToNew && (c = d.ft.use(b.Paging)) && a ? e.then(function () { var a = c.unpaged.indexOf(d), b = Math.ceil((a + 1) / c.size); return c.current !== b ? c["goto"](b) : void 0 }) : e }), b.is.defined(b.Sorting) && b.Row.extend("val", function (a, c) { c = b.is["boolean"](c) ? c : !0; var d = this._super(a); if (!b.is.hash(a)) return d; var e = this; return c && e.ft.draw().then(function () { var a, c = e.ft.use(b.Editing); if (b.is.defined(b.Paging) && c && c.pageToNew && (a = e.ft.use(b.Paging))) { var d = a.unpaged.indexOf(e), f = Math.ceil((d + 1) / a.size); if (a.current !== f) return a["goto"](f) } }), d }) }(jQuery, FooTable), function (a) { a.Rows.prototype.add = function (b, c) { var d = b; a.is.hash(b) && (d = new FooTable.Row(this.ft, this.ft.columns.array, b)), d instanceof FooTable.Row && d.add(c) }, a.Rows.prototype.update = function (b, c, d) { var e = this.ft.rows.all.length, f = b; a.is.number(b) && b >= 0 && e > b && (f = this.ft.rows.all[b]), f instanceof FooTable.Row && a.is.hash(c) && f.val(c, d) }, a.Rows.prototype["delete"] = function (b, c) { var d = this.ft.rows.all.length, e = b; a.is.number(b) && b >= 0 && d > b && (e = this.ft.rows.all[b]), e instanceof FooTable.Row && e["delete"](c) } }(FooTable), function (a, b) { var c = 0, d = function (a) { var b, c, d = 2166136261; for (b = 0, c = a.length; c > b; b++)d ^= a.charCodeAt(b), d += (d << 1) + (d << 4) + (d << 7) + (d << 8) + (d << 24); return d >>> 0 }(location.origin + location.pathname); b.State = b.Component.extend({ construct: function (a) { this._super(a, a.o.state.enabled), this._key = "1", this.key = this._key + (b.is.string(a.o.state.key) ? a.o.state.key : this._uid()), this.filtering = b.is["boolean"](a.o.state.filtering) ? a.o.state.filtering : !0, this.paging = b.is["boolean"](a.o.state.paging) ? a.o.state.paging : !0, this.sorting = b.is["boolean"](a.o.state.sorting) ? a.o.state.sorting : !0 }, preinit: function (a) { var c = this; this.ft.raise("preinit.ft.state", [a]).then(function () { c.enabled = b.is["boolean"](a.state) ? a.state : c.enabled, c.enabled && (c.key = c._key + (b.is.string(a.stateKey) ? a.stateKey : c.key), c.filtering = b.is["boolean"](a.stateFiltering) ? a.stateFiltering : c.filtering, c.paging = b.is["boolean"](a.statePaging) ? a.statePaging : c.paging, c.sorting = b.is["boolean"](a.stateSorting) ? a.stateSorting : c.sorting) }, function () { c.enabled = !1 }) }, get: function (a) { return JSON.parse(localStorage.getItem(this.key + ":" + a)) }, set: function (a, b) { localStorage.setItem(this.key + ":" + a, JSON.stringify(b)) }, remove: function (a) { localStorage.removeItem(this.key + ":" + a) }, read: function () { this.ft.execute(!1, !0, "readState") }, write: function () { this.ft.execute(!1, !0, "writeState") }, clear: function () { this.ft.execute(!1, !0, "clearState") }, _uid: function () { var a = this.ft.$el.attr("id"); return d + "_" + (b.is.string(a) ? a : ++c) } }), b.components.register("state", b.State, 700) }(jQuery, FooTable), function (a) { a.Component.prototype.readState = function () { }, a.Component.prototype.writeState = function () { }, a.Component.prototype.clearState = function () { } }(FooTable), function (a) { a.Defaults.prototype.state = { enabled: !1, filtering: !0, paging: !0, sorting: !0, key: null } }(FooTable), function (a) { a.Filtering && (a.Filtering.prototype.readState = function () { if (this.ft.state.filtering) { var b = this.ft.state.get("filtering"); a.is.hash(b) && !a.is.emptyArray(b.filters) && (this.filters = this.ensure(b.filters)) } }, a.Filtering.prototype.writeState = function () { if (this.ft.state.filtering) { var b = a.arr.map(this.filters, function (b) { return { name: b.name, query: b.query instanceof a.Query ? b.query.val() : b.query, columns: a.arr.map(b.columns, function (a) { return a.name }), hidden: b.hidden, space: b.space, connectors: b.connectors, ignoreCase: b.ignoreCase } }); this.ft.state.set("filtering", { filters: b }) } }, a.Filtering.prototype.clearState = function () { this.ft.state.filtering && this.ft.state.remove("filtering") }) }(FooTable), function (a) { a.Paging && (a.Paging.prototype.readState = function () { if (this.ft.state.paging) { var b = this.ft.state.get("paging"); a.is.hash(b) && (this.current = b.current, this.size = b.size) } }, a.Paging.prototype.writeState = function () { this.ft.state.paging && this.ft.state.set("paging", { current: this.current, size: this.size }) }, a.Paging.prototype.clearState = function () { this.ft.state.paging && this.ft.state.remove("paging") }) }(FooTable), function (a) { a.Sorting && (a.Sorting.prototype.readState = function () { if (this.ft.state.sorting) { var b = this.ft.state.get("sorting"); if (a.is.hash(b)) { var c = this.ft.columns.get(b.column); c instanceof a.Column && (this.column = c, this.column.direction = b.direction) } } }, a.Sorting.prototype.writeState = function () { this.ft.state.sorting && this.column instanceof a.Column && this.ft.state.set("sorting", { column: this.column.name, direction: this.column.direction }) }, a.Sorting.prototype.clearState = function () { this.ft.state.sorting && this.ft.state.remove("sorting") }) }(FooTable), function (a) { a.Table.extend("_construct", function (a) { return this.state = this.use(FooTable.State), this._super(a) }), a.Table.extend("_preinit", function () { var a = this; return a._super().then(function () { a.state.enabled && a.state.read() }) }), a.Table.extend("draw", function () { var a = this; return a._super().then(function () { a.state.enabled && a.state.write() }) }) }(FooTable), function (a, b) { b.Export = b.Component.extend({ construct: function (a) { this._super(a, !0), this.snapshot = [] }, predraw: function () { this.snapshot = this.ft.rows.array.slice(0) }, columns: function () { var a = []; return b.arr.each(this.ft.columns.array, function (b) { b.internal || a.push({ type: b.type, name: b.name, title: b.title, visible: b.visible, hidden: b.hidden, classes: b.classes, style: b.style }) }), a }, rows: function (a) { a = b.is["boolean"](a) ? a : !1; var c = a ? this.ft.rows.all : this.snapshot, d = []; return b.arr.each(c, function (a) { d.push(a.val()) }), d }, json: function (a) { return JSON.parse(JSON.stringify({ columns: this.columns(), rows: this.rows(a) })) }, csv: function (a) { var c, d, e = "", f = this.columns(); b.arr.each(f, function (a, b) { d = '"' + a.title.replace(/"/g, '""') + '"', e += 0 === b ? d : "," + d }), e += "\n"; var g = a ? this.ft.rows.all : this.snapshot; return b.arr.each(g, function (a) { b.arr.each(a.cells, function (a, b) { a.column.internal || (c = a.column.stringify.call(a.column, a.value, a.ft.o, a.row.value), d = '"' + c.replace(/"/g, '""') + '"', e += 0 === b ? d : "," + d) }), e += "\n" }), e } }), b.components.register("export", b.Export, 490) }(jQuery, FooTable), function (a) { a.Column.prototype.__export_define__ = function (b) { this.stringify = a.checkFnValue(this, b.stringify, this.stringify) }, a.Column.extend("define", function (a) { this._super(a), this.__export_define__(a) }), a.Column.prototype.stringify = function (a, b, c) { return a + "" }, a.DateColumn.prototype.stringify = function (b, c, d) { return a.is.object(b) && a.is["boolean"](b._isAMomentObject) && b.isValid() ? b.format(this.formatString) : "" }, a.ObjectColumn.prototype.stringify = function (b, c, d) { return a.is.object(b) ? JSON.stringify(b) : "" }, a.ArrayColumn.prototype.stringify = function (b, c, d) { return a.is.array(b) ? JSON.stringify(b) : "" } }(FooTable), function (a) { a.Table.prototype.toJSON = function (b) { return this.use(a.Export).json(b) }, a.Table.prototype.toCSV = function (b) { return this.use(a.Export).csv(b) } }(FooTable);
/*
Bootstrap Notify
*/
!function (t) { "function" == typeof define && define.amd ? define(["jquery"], t) : t("object" == typeof exports ? require("jquery") : jQuery) }(function (t) { function s(s) { var e = !1; return t('[data-notify="container"]').each(function (i, n) { var a = t(n), o = a.find('[data-notify="title"]').text().trim(), r = a.find('[data-notify="message"]').html().trim(), l = o === t("<div>" + s.settings.content.title + "</div>").html().trim(), d = r === t("<div>" + s.settings.content.message + "</div>").html().trim(), g = a.hasClass("alert-" + s.settings.type); return l && d && g && (e = !0), !e }), e } function e(e, n, a) { var o = { content: { message: "object" == typeof n ? n.message : n, title: n.title ? n.title : "", icon: n.icon ? n.icon : "", url: n.url ? n.url : "#", target: n.target ? n.target : "-" } }; a = t.extend(!0, {}, o, a), this.settings = t.extend(!0, {}, i, a), this._defaults = i, "-" === this.settings.content.target && (this.settings.content.target = this.settings.url_target), this.animations = { start: "webkitAnimationStart oanimationstart MSAnimationStart animationstart", end: "webkitAnimationEnd oanimationend MSAnimationEnd animationend" }, "number" == typeof this.settings.offset && (this.settings.offset = { x: this.settings.offset, y: this.settings.offset }), (this.settings.allow_duplicates || !this.settings.allow_duplicates && !s(this)) && this.init() } var i = { element: "body", position: null, type: "info", allow_dismiss: !0, allow_duplicates: !0, newest_on_top: !1, showProgressbar: !1, placement: { from: "top", align: "right" }, offset: 20, spacing: 10, z_index: 1031, delay: 5e3, timer: 1e3, url_target: "_blank", mouse_over: null, animate: { enter: "animated fadeInDown", exit: "animated fadeOutUp" }, onShow: null, onShown: null, onClose: null, onClosed: null, icon_type: "class", template: '<div data-notify="container" class="col-xs-11 col-sm-4 alert alert-{0}" role="alert"><button type="button" aria-hidden="true" class="close" data-notify="dismiss">&times;</button><span data-notify="icon"></span> <span data-notify="title">{1}</span> <span data-notify="message">{2}</span><div class="progress" data-notify="progressbar"><div class="progress-bar progress-bar-{0}" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%;"></div></div><a href="{3}" target="{4}" data-notify="url"></a></div>' }; String.format = function () { for (var t = arguments[0], s = 1; s < arguments.length; s++)t = t.replace(RegExp("\\{" + (s - 1) + "\\}", "gm"), arguments[s]); return t }, t.extend(e.prototype, { init: function () { var t = this; this.buildNotify(), this.settings.content.icon && this.setIcon(), "#" != this.settings.content.url && this.styleURL(), this.styleDismiss(), this.placement(), this.bind(), this.notify = { $ele: this.$ele, update: function (s, e) { var i = {}; "string" == typeof s ? i[s] = e : i = s; for (var n in i) switch (n) { case "type": this.$ele.removeClass("alert-" + t.settings.type), this.$ele.find('[data-notify="progressbar"] > .progress-bar').removeClass("progress-bar-" + t.settings.type), t.settings.type = i[n], this.$ele.addClass("alert-" + i[n]).find('[data-notify="progressbar"] > .progress-bar').addClass("progress-bar-" + i[n]); break; case "icon": var a = this.$ele.find('[data-notify="icon"]'); "class" === t.settings.icon_type.toLowerCase() ? a.removeClass(t.settings.content.icon).addClass(i[n]) : (a.is("img") || a.find("img"), a.attr("src", i[n])); break; case "progress": var o = t.settings.delay - t.settings.delay * (i[n] / 100); this.$ele.data("notify-delay", o), this.$ele.find('[data-notify="progressbar"] > div').attr("aria-valuenow", i[n]).css("width", i[n] + "%"); break; case "url": this.$ele.find('[data-notify="url"]').attr("href", i[n]); break; case "target": this.$ele.find('[data-notify="url"]').attr("target", i[n]); break; default: this.$ele.find('[data-notify="' + n + '"]').html(i[n]) }var r = this.$ele.outerHeight() + parseInt(t.settings.spacing) + parseInt(t.settings.offset.y); t.reposition(r) }, close: function () { t.close() } } }, buildNotify: function () { var s = this.settings.content; this.$ele = t(String.format(this.settings.template, this.settings.type, s.title, s.message, s.url, s.target)), this.$ele.attr("data-notify-position", this.settings.placement.from + "-" + this.settings.placement.align), this.settings.allow_dismiss || this.$ele.find('[data-notify="dismiss"]').css("display", "none"), (this.settings.delay <= 0 && !this.settings.showProgressbar || !this.settings.showProgressbar) && this.$ele.find('[data-notify="progressbar"]').remove() }, setIcon: function () { "class" === this.settings.icon_type.toLowerCase() ? this.$ele.find('[data-notify="icon"]').addClass(this.settings.content.icon) : this.$ele.find('[data-notify="icon"]').is("img") ? this.$ele.find('[data-notify="icon"]').attr("src", this.settings.content.icon) : this.$ele.find('[data-notify="icon"]').append('<img src="' + this.settings.content.icon + '" alt="Notify Icon" />') }, styleDismiss: function () { this.$ele.find('[data-notify="dismiss"]').css({ position: "absolute", right: "10px", top: "5px", zIndex: this.settings.z_index + 2 }) }, styleURL: function () { this.$ele.find('[data-notify="url"]').css({ backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)", height: "100%", left: 0, position: "absolute", top: 0, width: "100%", zIndex: this.settings.z_index + 1 }) }, placement: function () { var s = this, e = this.settings.offset.y, i = { display: "inline-block", margin: "0px auto", position: this.settings.position ? this.settings.position : "body" === this.settings.element ? "fixed" : "absolute", transition: "all .5s ease-in-out", zIndex: this.settings.z_index }, n = !1, a = this.settings; switch (t('[data-notify-position="' + this.settings.placement.from + "-" + this.settings.placement.align + '"]:not([data-closing="true"])').each(function () { e = Math.max(e, parseInt(t(this).css(a.placement.from)) + parseInt(t(this).outerHeight()) + parseInt(a.spacing)) }), this.settings.newest_on_top === !0 && (e = this.settings.offset.y), i[this.settings.placement.from] = e + "px", this.settings.placement.align) { case "left": case "right": i[this.settings.placement.align] = this.settings.offset.x + "px"; break; case "center": i.left = 0, i.right = 0 }this.$ele.css(i).addClass(this.settings.animate.enter), t.each(Array("webkit-", "moz-", "o-", "ms-", ""), function (t, e) { s.$ele[0].style[e + "AnimationIterationCount"] = 1 }), t(this.settings.element).append(this.$ele), this.settings.newest_on_top === !0 && (e = parseInt(e) + parseInt(this.settings.spacing) + this.$ele.outerHeight(), this.reposition(e)), t.isFunction(s.settings.onShow) && s.settings.onShow.call(this.$ele), this.$ele.one(this.animations.start, function () { n = !0 }).one(this.animations.end, function () { s.$ele.removeClass(s.settings.animate.enter), t.isFunction(s.settings.onShown) && s.settings.onShown.call(this) }), setTimeout(function () { n || t.isFunction(s.settings.onShown) && s.settings.onShown.call(this) }, 600) }, bind: function () { var s = this; if (this.$ele.find('[data-notify="dismiss"]').on("click", function () { s.close() }), this.$ele.mouseover(function () { t(this).data("data-hover", "true") }).mouseout(function () { t(this).data("data-hover", "false") }), this.$ele.data("data-hover", "false"), this.settings.delay > 0) { s.$ele.data("notify-delay", s.settings.delay); var e = setInterval(function () { var t = parseInt(s.$ele.data("notify-delay")) - s.settings.timer; if ("false" === s.$ele.data("data-hover") && "pause" === s.settings.mouse_over || "pause" != s.settings.mouse_over) { var i = (s.settings.delay - t) / s.settings.delay * 100; s.$ele.data("notify-delay", t), s.$ele.find('[data-notify="progressbar"] > div').attr("aria-valuenow", i).css("width", i + "%") } t <= -s.settings.timer && (clearInterval(e), s.close()) }, s.settings.timer) } }, close: function () { var s = this, e = parseInt(this.$ele.css(this.settings.placement.from)), i = !1; this.$ele.attr("data-closing", "true").addClass(this.settings.animate.exit), s.reposition(e), t.isFunction(s.settings.onClose) && s.settings.onClose.call(this.$ele), this.$ele.one(this.animations.start, function () { i = !0 }).one(this.animations.end, function () { t(this).remove(), t.isFunction(s.settings.onClosed) && s.settings.onClosed.call(this) }), setTimeout(function () { i || (s.$ele.remove(), s.settings.onClosed && s.settings.onClosed(s.$ele)) }, 600) }, reposition: function (s) { var e = this, i = '[data-notify-position="' + this.settings.placement.from + "-" + this.settings.placement.align + '"]:not([data-closing="true"])', n = this.$ele.nextAll(i); this.settings.newest_on_top === !0 && (n = this.$ele.prevAll(i)), n.each(function () { t(this).css(e.settings.placement.from, s), s = parseInt(s) + parseInt(e.settings.spacing) + t(this).outerHeight() }) } }), t.notify = function (t, s) { var i = new e(this, t, s); return i.notify }, t.notifyDefaults = function (s) { return i = t.extend(!0, {}, i, s) }, t.notifyClose = function (s) { "warning" === s && (s = "danger"), "undefined" == typeof s || "all" === s ? t("[data-notify]").find('[data-notify="dismiss"]').trigger("click") : "success" === s || "info" === s || "warning" === s || "danger" === s ? t(".alert-" + s + "[data-notify]").find('[data-notify="dismiss"]').trigger("click") : s ? t(s + "[data-notify]").find('[data-notify="dismiss"]').trigger("click") : t('[data-notify-position="' + s + '"]').find('[data-notify="dismiss"]').trigger("click") }, t.notifyCloseExcept = function (s) { "warning" === s && (s = "danger"), "success" === s || "info" === s || "warning" === s || "danger" === s ? t("[data-notify]").not(".alert-" + s).find('[data-notify="dismiss"]').trigger("click") : t("[data-notify]").not(s).find('[data-notify="dismiss"]').trigger("click") } });
/*
_ _ _ _
___| (_) ___| | __ (_)___
/ __| | |/ __| |/ / | / __|
\__ \ | | (__| < _ | \__ \
|___/_|_|\___|_|\_(_)/ |___/
|__/
Version: 1.9.0
Author: Ken Wheeler
Website: http://kenwheeler.github.io
Docs: http://kenwheeler.github.io/slick
Repo: http://github.com/kenwheeler/slick
Issues: http://github.com/kenwheeler/slick/issues
*/
(function (i) { "use strict"; "function" == typeof define && define.amd ? define(["jquery"], i) : "undefined" != typeof exports ? module.exports = i(require("jquery")) : i(jQuery) })(function (i) {
"use strict"; var e = window.Slick || {}; e = function () { function e(e, o) { var s, n = this; n.defaults = { accessibility: !0, adaptiveHeight: !1, appendArrows: i(e), appendDots: i(e), 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, t) { return i('<button type="button" />').text(t + 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 }, n.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 }, i.extend(n, n.initials), n.activeBreakpoint = null, n.animType = null, n.animProp = null, n.breakpoints = [], n.breakpointSettings = [], n.cssTransitions = !1, n.focussed = !1, n.interrupted = !1, n.hidden = "hidden", n.paused = !0, n.positionProp = null, n.respondTo = null, n.rowCount = 1, n.shouldClick = !0, n.$slider = i(e), n.$slidesCache = null, n.transformType = null, n.transitionType = null, n.visibilityChange = "visibilitychange", n.windowWidth = 0, n.windowTimer = null, s = i(e).data("slick") || {}, n.options = i.extend({}, n.defaults, o, s), n.currentSlide = n.options.initialSlide, n.originalSettings = n.options, "undefined" != typeof document.mozHidden ? (n.hidden = "mozHidden", n.visibilityChange = "mozvisibilitychange") : "undefined" != typeof document.webkitHidden && (n.hidden = "webkitHidden", n.visibilityChange = "webkitvisibilitychange"), n.autoPlay = i.proxy(n.autoPlay, n), n.autoPlayClear = i.proxy(n.autoPlayClear, n), n.autoPlayIterator = i.proxy(n.autoPlayIterator, n), n.changeSlide = i.proxy(n.changeSlide, n), n.clickHandler = i.proxy(n.clickHandler, n), n.selectHandler = i.proxy(n.selectHandler, n), n.setPosition = i.proxy(n.setPosition, n), n.swipeHandler = i.proxy(n.swipeHandler, n), n.dragHandler = i.proxy(n.dragHandler, n), n.keyHandler = i.proxy(n.keyHandler, n), n.instanceUid = t++, n.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/, n.registerBreakpoints(), n.init(!0) } var t = 0; return e }(), e.prototype.activateADA = function () { var i = this; i.$slideTrack.find(".slick-active").attr({ "aria-hidden": "false" }).find("a, input, button, select").attr({ tabindex: "0" }) }, e.prototype.addSlide = e.prototype.slickAdd = function (e, t, o) { var s = this; if ("boolean" == typeof t) o = t, t = null; else if (t < 0 || t >= s.slideCount) return !1; s.unload(), "number" == typeof t ? 0 === t && 0 === s.$slides.length ? i(e).appendTo(s.$slideTrack) : o ? i(e).insertBefore(s.$slides.eq(t)) : i(e).insertAfter(s.$slides.eq(t)) : o === !0 ? i(e).prependTo(s.$slideTrack) : i(e).appendTo(s.$slideTrack), s.$slides = s.$slideTrack.children(this.options.slide), s.$slideTrack.children(this.options.slide).detach(), s.$slideTrack.append(s.$slides), s.$slides.each(function (e, t) { i(t).attr("data-slick-index", e) }), s.$slidesCache = s.$slides, s.reinit() }, e.prototype.animateHeight = function () { var i = this; if (1 === i.options.slidesToShow && i.options.adaptiveHeight === !0 && i.options.vertical === !1) { var e = i.$slides.eq(i.currentSlide).outerHeight(!0); i.$list.animate({ height: e }, i.options.speed) } }, e.prototype.animateSlide = function (e, t) { var o = {}, s = this; s.animateHeight(), s.options.rtl === !0 && s.options.vertical === !1 && (e = -e), s.transformsEnabled === !1 ? s.options.vertical === !1 ? s.$slideTrack.animate({ left: e }, s.options.speed, s.options.easing, t) : s.$slideTrack.animate({ top: e }, s.options.speed, s.options.easing, t) : s.cssTransitions === !1 ? (s.options.rtl === !0 && (s.currentLeft = -s.currentLeft), i({ animStart: s.currentLeft }).animate({ animStart: e }, { duration: s.options.speed, easing: s.options.easing, step: function (i) { i = Math.ceil(i), s.options.vertical === !1 ? (o[s.animType] = "translate(" + i + "px, 0px)", s.$slideTrack.css(o)) : (o[s.animType] = "translate(0px," + i + "px)", s.$slideTrack.css(o)) }, complete: function () { t && t.call() } })) : (s.applyTransition(), e = Math.ceil(e), s.options.vertical === !1 ? o[s.animType] = "translate3d(" + e + "px, 0px, 0px)" : o[s.animType] = "translate3d(0px," + e + "px, 0px)", s.$slideTrack.css(o), t && setTimeout(function () { s.disableTransition(), t.call() }, s.options.speed)) }, e.prototype.getNavTarget = function () { var e = this, t = e.options.asNavFor; return t && null !== t && (t = i(t).not(e.$slider)), t }, e.prototype.asNavFor = function (e) { var t = this, o = t.getNavTarget(); null !== o && "object" == typeof o && o.each(function () { var t = i(this).slick("getSlick"); t.unslicked || t.slideHandler(e, !0) }) }, e.prototype.applyTransition = function (i) { var e = this, t = {}; e.options.fade === !1 ? t[e.transitionType] = e.transformType + " " + e.options.speed + "ms " + e.options.cssEase : t[e.transitionType] = "opacity " + e.options.speed + "ms " + e.options.cssEase, e.options.fade === !1 ? e.$slideTrack.css(t) : e.$slides.eq(i).css(t) }, e.prototype.autoPlay = function () { var i = this; i.autoPlayClear(), i.slideCount > i.options.slidesToShow && (i.autoPlayTimer = setInterval(i.autoPlayIterator, i.options.autoplaySpeed)) }, e.prototype.autoPlayClear = function () { var i = this; i.autoPlayTimer && clearInterval(i.autoPlayTimer) }, e.prototype.autoPlayIterator = function () { var i = this, e = i.currentSlide + i.options.slidesToScroll; i.paused || i.interrupted || i.focussed || (i.options.infinite === !1 && (1 === i.direction && i.currentSlide + 1 === i.slideCount - 1 ? i.direction = 0 : 0 === i.direction && (e = i.currentSlide - i.options.slidesToScroll, i.currentSlide - 1 === 0 && (i.direction = 1))), i.slideHandler(e)) }, e.prototype.buildArrows = function () { var e = this; e.options.arrows === !0 && (e.$prevArrow = i(e.options.prevArrow).addClass("slick-arrow"), e.$nextArrow = i(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), e.options.infinite !== !0 && 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, t, o = this; if (o.options.dots === !0 && o.slideCount > o.options.slidesToShow) { for (o.$slider.addClass("slick-dotted"), t = i("<ul />").addClass(o.options.dotsClass), e = 0; e <= o.getDotCount(); e += 1)t.append(i("<li />").append(o.options.customPaging.call(this, o, e))); o.$dots = t.appendTo(o.options.appendDots), o.$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, t) { i(t).attr("data-slick-index", e).data("originalStyling", i(t).attr("style") || "") }), e.$slider.addClass("slick-slider"), e.$slideTrack = 0 === e.slideCount ? i('<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), e.options.centerMode !== !0 && e.options.swipeToSlide !== !0 || (e.options.slidesToScroll = 1), i("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), e.options.draggable === !0 && e.$list.addClass("draggable") }, e.prototype.buildRows = function () { var i, e, t, o, s, n, r, l = this; if (o = document.createDocumentFragment(), n = l.$slider.children(), l.options.rows > 0) { for (r = l.options.slidesPerRow * l.options.rows, s = Math.ceil(n.length / r), i = 0; i < s; i++) { var d = document.createElement("div"); for (e = 0; e < l.options.rows; e++) { var a = document.createElement("div"); for (t = 0; t < l.options.slidesPerRow; t++) { var c = i * r + (e * l.options.slidesPerRow + t); n.get(c) && a.appendChild(n.get(c)) } d.appendChild(a) } o.appendChild(d) } l.$slider.empty().append(o), l.$slider.children().children().children().css({ width: 100 / l.options.slidesPerRow + "%", display: "inline-block" }) } }, e.prototype.checkResponsive = function (e, t) { var o, s, n, r = this, l = !1, d = r.$slider.width(), a = window.innerWidth || i(window).width(); if ("window" === r.respondTo ? n = a : "slider" === r.respondTo ? n = d : "min" === r.respondTo && (n = Math.min(a, d)), r.options.responsive && r.options.responsive.length && null !== r.options.responsive) { s = null; for (o in r.breakpoints) r.breakpoints.hasOwnProperty(o) && (r.originalSettings.mobileFirst === !1 ? n < r.breakpoints[o] && (s = r.breakpoints[o]) : n > r.breakpoints[o] && (s = r.breakpoints[o])); null !== s ? null !== r.activeBreakpoint ? (s !== r.activeBreakpoint || t) && (r.activeBreakpoint = s, "unslick" === r.breakpointSettings[s] ? r.unslick(s) : (r.options = i.extend({}, r.originalSettings, r.breakpointSettings[s]), e === !0 && (r.currentSlide = r.options.initialSlide), r.refresh(e)), l = s) : (r.activeBreakpoint = s, "unslick" === r.breakpointSettings[s] ? r.unslick(s) : (r.options = i.extend({}, r.originalSettings, r.breakpointSettings[s]), e === !0 && (r.currentSlide = r.options.initialSlide), r.refresh(e)), l = s) : null !== r.activeBreakpoint && (r.activeBreakpoint = null, r.options = r.originalSettings, e === !0 && (r.currentSlide = r.options.initialSlide), r.refresh(e), l = s), e || l === !1 || r.$slider.trigger("breakpoint", [r, l]) } }, e.prototype.changeSlide = function (e, t) { var o, s, n, r = this, l = i(e.currentTarget); switch (l.is("a") && e.preventDefault(), l.is("li") || (l = l.closest("li")), n = r.slideCount % r.options.slidesToScroll !== 0, o = n ? 0 : (r.slideCount - r.currentSlide) % r.options.slidesToScroll, e.data.message) { case "previous": s = 0 === o ? r.options.slidesToScroll : r.options.slidesToShow - o, r.slideCount > r.options.slidesToShow && r.slideHandler(r.currentSlide - s, !1, t); break; case "next": s = 0 === o ? r.options.slidesToScroll : o, r.slideCount > r.options.slidesToShow && r.slideHandler(r.currentSlide + s, !1, t); break; case "index": var d = 0 === e.data.index ? 0 : e.data.index || l.index() * r.options.slidesToScroll; r.slideHandler(r.checkNavigable(d), !1, t), l.children().trigger("focus"); break; default: return } }, e.prototype.checkNavigable = function (i) { var e, t, o = this; if (e = o.getNavigableIndexes(), t = 0, i > e[e.length - 1]) i = e[e.length - 1]; else for (var s in e) { if (i < e[s]) { i = t; break } t = e[s] } return i }, e.prototype.cleanUpEvents = function () { var e = this; e.options.dots && null !== e.$dots && (i("li", e.$dots).off("click.slick", e.changeSlide).off("mouseenter.slick", i.proxy(e.interrupt, e, !0)).off("mouseleave.slick", i.proxy(e.interrupt, e, !1)), e.options.accessibility === !0 && e.$dots.off("keydown.slick", e.keyHandler)), e.$slider.off("focus.slick blur.slick"), e.options.arrows === !0 && e.slideCount > e.options.slidesToShow && (e.$prevArrow && e.$prevArrow.off("click.slick", e.changeSlide), e.$nextArrow && e.$nextArrow.off("click.slick", e.changeSlide), e.options.accessibility === !0 && (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), i(document).off(e.visibilityChange, e.visibility), e.cleanUpSlideEvents(), e.options.accessibility === !0 && e.$list.off("keydown.slick", e.keyHandler), e.options.focusOnSelect === !0 && i(e.$slideTrack).children().off("click.slick", e.selectHandler), i(window).off("orientationchange.slick.slick-" + e.instanceUid, e.orientationChange), i(window).off("resize.slick.slick-" + e.instanceUid, e.resize), i("[draggable!=true]", e.$slideTrack).off("dragstart", e.preventDefault), i(window).off("load.slick.slick-" + e.instanceUid, e.setPosition) }, e.prototype.cleanUpSlideEvents = function () { var e = this; e.$list.off("mouseenter.slick", i.proxy(e.interrupt, e, !0)), e.$list.off("mouseleave.slick", i.proxy(e.interrupt, e, !1)) }, e.prototype.cleanUpRows = function () { var i, e = this; e.options.rows > 0 && (i = e.$slides.children().children(), i.removeAttr("style"), e.$slider.empty().append(i)) }, e.prototype.clickHandler = function (i) { var e = this; e.shouldClick === !1 && (i.stopImmediatePropagation(), i.stopPropagation(), i.preventDefault()) }, e.prototype.destroy = function (e) { var t = this; t.autoPlayClear(), t.touchObject = {}, t.cleanUpEvents(), i(".slick-cloned", t.$slider).detach(), t.$dots && t.$dots.remove(), t.$prevArrow && t.$prevArrow.length && (t.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""), t.htmlExpr.test(t.options.prevArrow) && t.$prevArrow.remove()), t.$nextArrow && t.$nextArrow.length && (t.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""), t.htmlExpr.test(t.options.nextArrow) && t.$nextArrow.remove()), t.$slides && (t.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function () { i(this).attr("style", i(this).data("originalStyling")) }), t.$slideTrack.children(this.options.slide).detach(), t.$slideTrack.detach(), t.$list.detach(), t.$slider.append(t.$slides)), t.cleanUpRows(), t.$slider.removeClass("slick-slider"), t.$slider.removeClass("slick-initialized"), t.$slider.removeClass("slick-dotted"), t.unslicked = !0, e || t.$slider.trigger("destroy", [t]) }, e.prototype.disableTransition = function (i) { var e = this, t = {}; t[e.transitionType] = "", e.options.fade === !1 ? e.$slideTrack.css(t) : e.$slides.eq(i).css(t) }, e.prototype.fadeSlide = function (i, e) { var t = this; t.cssTransitions === !1 ? (t.$slides.eq(i).css({ zIndex: t.options.zIndex }), t.$slides.eq(i).animate({ opacity: 1 }, t.options.speed, t.options.easing, e)) : (t.applyTransition(i), t.$slides.eq(i).css({ opacity: 1, zIndex: t.options.zIndex }), e && setTimeout(function () { t.disableTransition(i), e.call() }, t.options.speed)) }, e.prototype.fadeSlideOut = function (i) { var e = this; e.cssTransitions === !1 ? e.$slides.eq(i).animate({ opacity: 0, zIndex: e.options.zIndex - 2 }, e.options.speed, e.options.easing) : (e.applyTransition(i), e.$slides.eq(i).css({ opacity: 0, zIndex: e.options.zIndex - 2 })) }, e.prototype.filterSlides = e.prototype.slickFilter = function (i) { var e = this; null !== i && (e.$slidesCache = e.$slides, e.unload(), e.$slideTrack.children(this.options.slide).detach(), e.$slidesCache.filter(i).appendTo(e.$slideTrack), e.reinit()) }, e.prototype.focusHandler = function () { var e = this; e.$slider.off("focus.slick blur.slick").on("focus.slick", "*", function (t) { var o = i(this); setTimeout(function () { e.options.pauseOnFocus && o.is(":focus") && (e.focussed = !0, e.autoPlay()) }, 0) }).on("blur.slick", "*", function (t) { i(this); e.options.pauseOnFocus && (e.focussed = !1, e.autoPlay()) }) }, e.prototype.getCurrent = e.prototype.slickCurrentSlide = function () { var i = this; return i.currentSlide }, e.prototype.getDotCount = function () { var i = this, e = 0, t = 0, o = 0; if (i.options.infinite === !0) if (i.slideCount <= i.options.slidesToShow) ++o; else for (; e < i.slideCount;)++o, e = t + i.options.slidesToScroll, t += i.options.slidesToScroll <= i.options.slidesToShow ? i.options.slidesToScroll : i.options.slidesToShow; else if (i.options.centerMode === !0) o = i.slideCount; else if (i.options.asNavFor) for (; e < i.slideCount;)++o, e = t + i.options.slidesToScroll, t += i.options.slidesToScroll <= i.options.slidesToShow ? i.options.slidesToScroll : i.options.slidesToShow; else o = 1 + Math.ceil((i.slideCount - i.options.slidesToShow) / i.options.slidesToScroll); return o - 1 }, e.prototype.getLeft = function (i) { var e, t, o, s, n = this, r = 0; return n.slideOffset = 0, t = n.$slides.first().outerHeight(!0), n.options.infinite === !0 ? (n.slideCount > n.options.slidesToShow && (n.slideOffset = n.slideWidth * n.options.slidesToShow * -1, s = -1, n.options.vertical === !0 && n.options.centerMode === !0 && (2 === n.options.slidesToShow ? s = -1.5 : 1 === n.options.slidesToShow && (s = -2)), r = t * n.options.slidesToShow * s), n.slideCount % n.options.slidesToScroll !== 0 && i + n.options.slidesToScroll > n.slideCount && n.slideCount > n.options.slidesToShow && (i > n.slideCount ? (n.slideOffset = (n.options.slidesToShow - (i - n.slideCount)) * n.slideWidth * -1, r = (n.options.slidesToShow - (i - n.slideCount)) * t * -1) : (n.slideOffset = n.slideCount % n.options.slidesToScroll * n.slideWidth * -1, r = n.slideCount % n.options.slidesToScroll * t * -1))) : i + n.options.slidesToShow > n.slideCount && (n.slideOffset = (i + n.options.slidesToShow - n.slideCount) * n.slideWidth, r = (i + n.options.slidesToShow - n.slideCount) * t), n.slideCount <= n.options.slidesToShow && (n.slideOffset = 0, r = 0), n.options.centerMode === !0 && n.slideCount <= n.options.slidesToShow ? n.slideOffset = n.slideWidth * Math.floor(n.options.slidesToShow) / 2 - n.slideWidth * n.slideCount / 2 : n.options.centerMode === !0 && n.options.infinite === !0 ? n.slideOffset += n.slideWidth * Math.floor(n.options.slidesToShow / 2) - n.slideWidth : n.options.centerMode === !0 && (n.slideOffset = 0, n.slideOffset += n.slideWidth * Math.floor(n.options.slidesToShow / 2)), e = n.options.vertical === !1 ? i * n.slideWidth * -1 + n.slideOffset : i * t * -1 + r, n.options.variableWidth === !0 && (o = n.slideCount <= n.options.slidesToShow || n.options.infinite === !1 ? n.$slideTrack.children(".slick-slide").eq(i) : n.$slideTrack.children(".slick-slide").eq(i + n.options.slidesToShow), e = n.options.rtl === !0 ? o[0] ? (n.$slideTrack.width() - o[0].offsetLeft - o.width()) * -1 : 0 : o[0] ? o[0].offsetLeft * -1 : 0, n.options.centerMode === !0 && (o = n.slideCount <= n.options.slidesToShow || n.options.infinite === !1 ? n.$slideTrack.children(".slick-slide").eq(i) : n.$slideTrack.children(".slick-slide").eq(i + n.options.slidesToShow + 1), e = n.options.rtl === !0 ? o[0] ? (n.$slideTrack.width() - o[0].offsetLeft - o.width()) * -1 : 0 : o[0] ? o[0].offsetLeft * -1 : 0, e += (n.$list.width() - o.outerWidth()) / 2)), e }, e.prototype.getOption = e.prototype.slickGetOption = function (i) { var e = this; return e.options[i] }, e.prototype.getNavigableIndexes = function () { var i, e = this, t = 0, o = 0, s = []; for (e.options.infinite === !1 ? i = e.slideCount : (t = e.options.slidesToScroll * -1, o = e.options.slidesToScroll * -1, i = 2 * e.slideCount); t < i;)s.push(t), t = o + e.options.slidesToScroll, o += e.options.slidesToScroll <= e.options.slidesToShow ? e.options.slidesToScroll : e.options.slidesToShow; return s }, e.prototype.getSlick = function () { return this }, e.prototype.getSlideCount = function () { var e, t, o, s, n = this; return s = n.options.centerMode === !0 ? Math.floor(n.$list.width() / 2) : 0, o = n.swipeLeft * -1 + s, n.options.swipeToSlide === !0 ? (n.$slideTrack.find(".slick-slide").each(function (e, s) { var r, l, d; if (r = i(s).outerWidth(), l = s.offsetLeft, n.options.centerMode !== !0 && (l += r / 2), d = l + r, o < d) return t = s, !1 }), e = Math.abs(i(t).attr("data-slick-index") - n.currentSlide) || 1) : n.options.slidesToScroll }, e.prototype.goTo = e.prototype.slickGoTo = function (i, e) { var t = this; t.changeSlide({ data: { message: "index", index: parseInt(i) } }, e) }, e.prototype.init = function (e) { var t = this; i(t.$slider).hasClass("slick-initialized") || (i(t.$slider).addClass("slick-initialized"), t.buildRows(), t.buildOut(), t.setProps(), t.startLoad(), t.loadSlider(), t.initializeEvents(), t.updateArrows(), t.updateDots(), t.checkResponsive(!0), t.focusHandler()), e && t.$slider.trigger("init", [t]), t.options.accessibility === !0 && t.initADA(), t.options.autoplay && (t.paused = !1, t.autoPlay()) }, e.prototype.initADA = function () { var e = this, t = Math.ceil(e.slideCount / e.options.slidesToShow), o = e.getNavigableIndexes().filter(function (i) { return i >= 0 && i < 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 (t) { var s = o.indexOf(t); if (i(this).attr({ role: "tabpanel", id: "slick-slide" + e.instanceUid + t, tabindex: -1 }), s !== -1) { var n = "slick-slide-control" + e.instanceUid + s; i("#" + n).length && i(this).attr({ "aria-describedby": n }) } }), e.$dots.attr("role", "tablist").find("li").each(function (s) { var n = o[s]; i(this).attr({ role: "presentation" }), i(this).find("button").first().attr({ role: "tab", id: "slick-slide-control" + e.instanceUid + s, "aria-controls": "slick-slide" + e.instanceUid + n, "aria-label": s + 1 + " of " + t, "aria-selected": null, tabindex: "-1" }) }).eq(e.currentSlide).find("button").attr({ "aria-selected": "true", tabindex: "0" }).end()); for (var s = e.currentSlide, n = s + e.options.slidesToShow; s < n; s++)e.options.focusOnChange ? e.$slides.eq(s).attr({ tabindex: "0" }) : e.$slides.eq(s).removeAttr("tabindex"); e.activateADA() }, e.prototype.initArrowEvents = function () { var i = this; i.options.arrows === !0 && i.slideCount > i.options.slidesToShow && (i.$prevArrow.off("click.slick").on("click.slick", { message: "previous" }, i.changeSlide), i.$nextArrow.off("click.slick").on("click.slick", { message: "next" }, i.changeSlide), i.options.accessibility === !0 && (i.$prevArrow.on("keydown.slick", i.keyHandler), i.$nextArrow.on("keydown.slick", i.keyHandler))) }, e.prototype.initDotEvents = function () { var e = this; e.options.dots === !0 && e.slideCount > e.options.slidesToShow && (i("li", e.$dots).on("click.slick", { message: "index" }, e.changeSlide), e.options.accessibility === !0 && e.$dots.on("keydown.slick", e.keyHandler)), e.options.dots === !0 && e.options.pauseOnDotsHover === !0 && e.slideCount > e.options.slidesToShow && i("li", e.$dots).on("mouseenter.slick", i.proxy(e.interrupt, e, !0)).on("mouseleave.slick", i.proxy(e.interrupt, e, !1)) }, e.prototype.initSlideEvents = function () { var e = this; e.options.pauseOnHover && (e.$list.on("mouseenter.slick", i.proxy(e.interrupt, e, !0)), e.$list.on("mouseleave.slick", i.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), i(document).on(e.visibilityChange, i.proxy(e.visibility, e)), e.options.accessibility === !0 && e.$list.on("keydown.slick", e.keyHandler), e.options.focusOnSelect === !0 && i(e.$slideTrack).children().on("click.slick", e.selectHandler), i(window).on("orientationchange.slick.slick-" + e.instanceUid, i.proxy(e.orientationChange, e)), i(window).on("resize.slick.slick-" + e.instanceUid, i.proxy(e.resize, e)), i("[draggable!=true]", e.$slideTrack).on("dragstart", e.preventDefault), i(window).on("load.slick.slick-" + e.instanceUid, e.setPosition), i(e.setPosition) }, e.prototype.initUI = function () { var i = this; i.options.arrows === !0 && i.slideCount > i.options.slidesToShow && (i.$prevArrow.show(), i.$nextArrow.show()), i.options.dots === !0 && i.slideCount > i.options.slidesToShow && i.$dots.show() }, e.prototype.keyHandler = function (i) { var e = this; i.target.tagName.match("TEXTAREA|INPUT|SELECT") || (37 === i.keyCode && e.options.accessibility === !0 ? e.changeSlide({ data: { message: e.options.rtl === !0 ? "next" : "previous" } }) : 39 === i.keyCode && e.options.accessibility === !0 && e.changeSlide({ data: { message: e.options.rtl === !0 ? "previous" : "next" } })) }, e.prototype.lazyLoad = function () { function e(e) { i("img[data-lazy]", e).each(function () { var e = i(this), t = i(this).attr("data-lazy"), o = i(this).attr("data-srcset"), s = i(this).attr("data-sizes") || r.$slider.attr("data-sizes"), n = document.createElement("img"); n.onload = function () { e.animate({ opacity: 0 }, 100, function () { o && (e.attr("srcset", o), s && e.attr("sizes", s)), e.attr("src", t).animate({ opacity: 1 }, 200, function () { e.removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading") }), r.$slider.trigger("lazyLoaded", [r, e, t]) }) }, n.onerror = function () { e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"), r.$slider.trigger("lazyLoadError", [r, e, t]) }, n.src = t }) } var t, o, s, n, r = this; if (r.options.centerMode === !0 ? r.options.infinite === !0 ? (s = r.currentSlide + (r.options.slidesToShow / 2 + 1), n = s + r.options.slidesToShow + 2) : (s = Math.max(0, r.currentSlide - (r.options.slidesToShow / 2 + 1)), n = 2 + (r.options.slidesToShow / 2 + 1) + r.currentSlide) : (s = r.options.infinite ? r.options.slidesToShow + r.currentSlide : r.currentSlide, n = Math.ceil(s + r.options.slidesToShow), r.options.fade === !0 && (s > 0 && s--, n <= r.slideCount && n++)), t = r.$slider.find(".slick-slide").slice(s, n), "anticipated" === r.options.lazyLoad) for (var l = s - 1, d = n, a = r.$slider.find(".slick-slide"), c = 0; c < r.options.slidesToScroll; c++)l < 0 && (l = r.slideCount - 1), t = t.add(a.eq(l)), t = t.add(a.eq(d)), l--, d++; e(t), r.slideCount <= r.options.slidesToShow ? (o = r.$slider.find(".slick-slide"), e(o)) : r.currentSlide >= r.slideCount - r.options.slidesToShow ? (o = r.$slider.find(".slick-cloned").slice(0, r.options.slidesToShow), e(o)) : 0 === r.currentSlide && (o = r.$slider.find(".slick-cloned").slice(r.options.slidesToShow * -1), e(o)) }, e.prototype.loadSlider = function () { var i = this; i.setPosition(), i.$slideTrack.css({ opacity: 1 }), i.$slider.removeClass("slick-loading"), i.initUI(), "progressive" === i.options.lazyLoad && i.progressiveLazyLoad() }, e.prototype.next = e.prototype.slickNext = function () { var i = this; i.changeSlide({ data: { message: "next" } }) }, e.prototype.orientationChange = function () { var i = this; i.checkResponsive(), i.setPosition() }, e.prototype.pause = e.prototype.slickPause = function () { var i = this; i.autoPlayClear(), i.paused = !0 }, e.prototype.play = e.prototype.slickPlay = function () { var i = this; i.autoPlay(), i.options.autoplay = !0, i.paused = !1, i.focussed = !1, i.interrupted = !1 }, e.prototype.postSlide = function (e) { var t = this; if (!t.unslicked && (t.$slider.trigger("afterChange", [t, e]), t.animating = !1, t.slideCount > t.options.slidesToShow && t.setPosition(), t.swipeLeft = null, t.options.autoplay && t.autoPlay(), t.options.accessibility === !0 && (t.initADA(), t.options.focusOnChange))) { var o = i(t.$slides.get(t.currentSlide)); o.attr("tabindex", 0).focus() } }, e.prototype.prev = e.prototype.slickPrev = function () { var i = this; i.changeSlide({ data: { message: "previous" } }) }, e.prototype.preventDefault = function (i) { i.preventDefault() }, e.prototype.progressiveLazyLoad = function (e) { e = e || 1; var t, o, s, n, r, l = this, d = i("img[data-lazy]", l.$slider); d.length ? (t = d.first(), o = t.attr("data-lazy"), s = t.attr("data-srcset"), n = t.attr("data-sizes") || l.$slider.attr("data-sizes"), r = document.createElement("img"), r.onload = function () { s && (t.attr("srcset", s), n && t.attr("sizes", n)), t.attr("src", o).removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading"), l.options.adaptiveHeight === !0 && l.setPosition(), l.$slider.trigger("lazyLoaded", [l, t, o]), l.progressiveLazyLoad() }, r.onerror = function () { e < 3 ? setTimeout(function () { l.progressiveLazyLoad(e + 1) }, 500) : (t.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"), l.$slider.trigger("lazyLoadError", [l, t, o]), l.progressiveLazyLoad()) }, r.src = o) : l.$slider.trigger("allImagesLoaded", [l]) }, e.prototype.refresh = function (e) { var t, o, s = this; o = s.slideCount - s.options.slidesToShow, !s.options.infinite && s.currentSlide > o && (s.currentSlide = o), s.slideCount <= s.options.slidesToShow && (s.currentSlide = 0), t = s.currentSlide, s.destroy(!0), i.extend(s, s.initials, { currentSlide: t }), s.init(), e || s.changeSlide({ data: { message: "index", index: t } }, !1) }, e.prototype.registerBreakpoints = function () { var e, t, o, s = this, n = s.options.responsive || null; if ("array" === i.type(n) && n.length) { s.respondTo = s.options.respondTo || "window"; for (e in n) if (o = s.breakpoints.length - 1, n.hasOwnProperty(e)) { for (t = n[e].breakpoint; o >= 0;)s.breakpoints[o] && s.breakpoints[o] === t && s.breakpoints.splice(o, 1), o--; s.breakpoints.push(t), s.breakpointSettings[t] = n[e].settings } s.breakpoints.sort(function (i, e) { return s.options.mobileFirst ? i - e : e - i }) } }, 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), e.options.focusOnSelect === !0 && i(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; i(window).width() !== e.windowWidth && (clearTimeout(e.windowDelay), e.windowDelay = window.setTimeout(function () { e.windowWidth = i(window).width(), e.checkResponsive(), e.unslicked || e.setPosition() }, 50)) }, e.prototype.removeSlide = e.prototype.slickRemove = function (i, e, t) { var o = this; return "boolean" == typeof i ? (e = i, i = e === !0 ? 0 : o.slideCount - 1) : i = e === !0 ? --i : i, !(o.slideCount < 1 || i < 0 || i > o.slideCount - 1) && (o.unload(), t === !0 ? o.$slideTrack.children().remove() : o.$slideTrack.children(this.options.slide).eq(i).remove(), o.$slides = o.$slideTrack.children(this.options.slide), o.$slideTrack.children(this.options.slide).detach(), o.$slideTrack.append(o.$slides), o.$slidesCache = o.$slides, void o.reinit()) }, e.prototype.setCSS = function (i) { var e, t, o = this, s = {}; o.options.rtl === !0 && (i = -i), e = "left" == o.positionProp ? Math.ceil(i) + "px" : "0px", t = "top" == o.positionProp ? Math.ceil(i) + "px" : "0px", s[o.positionProp] = i, o.transformsEnabled === !1 ? o.$slideTrack.css(s) : (s = {}, o.cssTransitions === !1 ? (s[o.animType] = "translate(" + e + ", " + t + ")", o.$slideTrack.css(s)) : (s[o.animType] = "translate3d(" + e + ", " + t + ", 0px)", o.$slideTrack.css(s))) }, e.prototype.setDimensions = function () { var i = this; i.options.vertical === !1 ? i.options.centerMode === !0 && i.$list.css({ padding: "0px " + i.options.centerPadding }) : (i.$list.height(i.$slides.first().outerHeight(!0) * i.options.slidesToShow), i.options.centerMode === !0 && i.$list.css({ padding: i.options.centerPadding + " 0px" })), i.listWidth = i.$list.width(), i.listHeight = i.$list.height(), i.options.vertical === !1 && i.options.variableWidth === !1 ? (i.slideWidth = Math.ceil(i.listWidth / i.options.slidesToShow), i.$slideTrack.width(Math.ceil(i.slideWidth * i.$slideTrack.children(".slick-slide").length))) : i.options.variableWidth === !0 ? i.$slideTrack.width(5e3 * i.slideCount) : (i.slideWidth = Math.ceil(i.listWidth), i.$slideTrack.height(Math.ceil(i.$slides.first().outerHeight(!0) * i.$slideTrack.children(".slick-slide").length))); var e = i.$slides.first().outerWidth(!0) - i.$slides.first().width(); i.options.variableWidth === !1 && i.$slideTrack.children(".slick-slide").width(i.slideWidth - e) }, e.prototype.setFade = function () { var e, t = this; t.$slides.each(function (o, s) { e = t.slideWidth * o * -1, t.options.rtl === !0 ? i(s).css({ position: "relative", right: e, top: 0, zIndex: t.options.zIndex - 2, opacity: 0 }) : i(s).css({ position: "relative", left: e, top: 0, zIndex: t.options.zIndex - 2, opacity: 0 }) }), t.$slides.eq(t.currentSlide).css({ zIndex: t.options.zIndex - 1, opacity: 1 }) }, e.prototype.setHeight = function () { var i = this; if (1 === i.options.slidesToShow && i.options.adaptiveHeight === !0 && i.options.vertical === !1) { var e = i.$slides.eq(i.currentSlide).outerHeight(!0); i.$list.css("height", e) } }, e.prototype.setOption = e.prototype.slickSetOption = function () { var e, t, o, s, n, r = this, l = !1; if ("object" === i.type(arguments[0]) ? (o = arguments[0], l = arguments[1], n = "multiple") : "string" === i.type(arguments[0]) && (o = arguments[0], s = arguments[1], l = arguments[2], "responsive" === arguments[0] && "array" === i.type(arguments[1]) ? n = "responsive" : "undefined" != typeof arguments[1] && (n = "single")), "single" === n) r.options[o] = s; else if ("multiple" === n) i.each(o, function (i, e) { r.options[i] = e }); else if ("responsive" === n) for (t in s) if ("array" !== i.type(r.options.responsive)) r.options.responsive = [s[t]]; else { for (e = r.options.responsive.length - 1; e >= 0;)r.options.responsive[e].breakpoint === s[t].breakpoint && r.options.responsive.splice(e, 1), e--; r.options.responsive.push(s[t]) } l && (r.unload(), r.reinit()) }, e.prototype.setPosition = function () { var i = this; i.setDimensions(), i.setHeight(), i.options.fade === !1 ? i.setCSS(i.getLeft(i.currentSlide)) : i.setFade(), i.$slider.trigger("setPosition", [i]) }, e.prototype.setProps = function () {
var i = this, e = document.body.style; i.positionProp = i.options.vertical === !0 ? "top" : "left",
"top" === i.positionProp ? i.$slider.addClass("slick-vertical") : i.$slider.removeClass("slick-vertical"), void 0 === e.WebkitTransition && void 0 === e.MozTransition && void 0 === e.msTransition || i.options.useCSS === !0 && (i.cssTransitions = !0), i.options.fade && ("number" == typeof i.options.zIndex ? i.options.zIndex < 3 && (i.options.zIndex = 3) : i.options.zIndex = i.defaults.zIndex), void 0 !== e.OTransform && (i.animType = "OTransform", i.transformType = "-o-transform", i.transitionType = "OTransition", void 0 === e.perspectiveProperty && void 0 === e.webkitPerspective && (i.animType = !1)), void 0 !== e.MozTransform && (i.animType = "MozTransform", i.transformType = "-moz-transform", i.transitionType = "MozTransition", void 0 === e.perspectiveProperty && void 0 === e.MozPerspective && (i.animType = !1)), void 0 !== e.webkitTransform && (i.animType = "webkitTransform", i.transformType = "-webkit-transform", i.transitionType = "webkitTransition", void 0 === e.perspectiveProperty && void 0 === e.webkitPerspective && (i.animType = !1)), void 0 !== e.msTransform && (i.animType = "msTransform", i.transformType = "-ms-transform", i.transitionType = "msTransition", void 0 === e.msTransform && (i.animType = !1)), void 0 !== e.transform && i.animType !== !1 && (i.animType = "transform", i.transformType = "transform", i.transitionType = "transition"), i.transformsEnabled = i.options.useTransform && null !== i.animType && i.animType !== !1
}, e.prototype.setSlideClasses = function (i) { var e, t, o, s, n = this; if (t = n.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden", "true"), n.$slides.eq(i).addClass("slick-current"), n.options.centerMode === !0) { var r = n.options.slidesToShow % 2 === 0 ? 1 : 0; e = Math.floor(n.options.slidesToShow / 2), n.options.infinite === !0 && (i >= e && i <= n.slideCount - 1 - e ? n.$slides.slice(i - e + r, i + e + 1).addClass("slick-active").attr("aria-hidden", "false") : (o = n.options.slidesToShow + i, t.slice(o - e + 1 + r, o + e + 2).addClass("slick-active").attr("aria-hidden", "false")), 0 === i ? t.eq(t.length - 1 - n.options.slidesToShow).addClass("slick-center") : i === n.slideCount - 1 && t.eq(n.options.slidesToShow).addClass("slick-center")), n.$slides.eq(i).addClass("slick-center") } else i >= 0 && i <= n.slideCount - n.options.slidesToShow ? n.$slides.slice(i, i + n.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false") : t.length <= n.options.slidesToShow ? t.addClass("slick-active").attr("aria-hidden", "false") : (s = n.slideCount % n.options.slidesToShow, o = n.options.infinite === !0 ? n.options.slidesToShow + i : i, n.options.slidesToShow == n.options.slidesToScroll && n.slideCount - i < n.options.slidesToShow ? t.slice(o - (n.options.slidesToShow - s), o + s).addClass("slick-active").attr("aria-hidden", "false") : t.slice(o, o + n.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false")); "ondemand" !== n.options.lazyLoad && "anticipated" !== n.options.lazyLoad || n.lazyLoad() }, e.prototype.setupInfinite = function () { var e, t, o, s = this; if (s.options.fade === !0 && (s.options.centerMode = !1), s.options.infinite === !0 && s.options.fade === !1 && (t = null, s.slideCount > s.options.slidesToShow)) { for (o = s.options.centerMode === !0 ? s.options.slidesToShow + 1 : s.options.slidesToShow, e = s.slideCount; e > s.slideCount - o; e -= 1)t = e - 1, i(s.$slides[t]).clone(!0).attr("id", "").attr("data-slick-index", t - s.slideCount).prependTo(s.$slideTrack).addClass("slick-cloned"); for (e = 0; e < o + s.slideCount; e += 1)t = e, i(s.$slides[t]).clone(!0).attr("id", "").attr("data-slick-index", t + s.slideCount).appendTo(s.$slideTrack).addClass("slick-cloned"); s.$slideTrack.find(".slick-cloned").find("[id]").each(function () { i(this).attr("id", "") }) } }, e.prototype.interrupt = function (i) { var e = this; i || e.autoPlay(), e.interrupted = i }, e.prototype.selectHandler = function (e) { var t = this, o = i(e.target).is(".slick-slide") ? i(e.target) : i(e.target).parents(".slick-slide"), s = parseInt(o.attr("data-slick-index")); return s || (s = 0), t.slideCount <= t.options.slidesToShow ? void t.slideHandler(s, !1, !0) : void t.slideHandler(s) }, e.prototype.slideHandler = function (i, e, t) { var o, s, n, r, l, d = null, a = this; if (e = e || !1, !(a.animating === !0 && a.options.waitForAnimate === !0 || a.options.fade === !0 && a.currentSlide === i)) return e === !1 && a.asNavFor(i), o = i, d = a.getLeft(o), r = a.getLeft(a.currentSlide), a.currentLeft = null === a.swipeLeft ? r : a.swipeLeft, a.options.infinite === !1 && a.options.centerMode === !1 && (i < 0 || i > a.getDotCount() * a.options.slidesToScroll) ? void (a.options.fade === !1 && (o = a.currentSlide, t !== !0 && a.slideCount > a.options.slidesToShow ? a.animateSlide(r, function () { a.postSlide(o) }) : a.postSlide(o))) : a.options.infinite === !1 && a.options.centerMode === !0 && (i < 0 || i > a.slideCount - a.options.slidesToScroll) ? void (a.options.fade === !1 && (o = a.currentSlide, t !== !0 && a.slideCount > a.options.slidesToShow ? a.animateSlide(r, function () { a.postSlide(o) }) : a.postSlide(o))) : (a.options.autoplay && clearInterval(a.autoPlayTimer), s = o < 0 ? a.slideCount % a.options.slidesToScroll !== 0 ? a.slideCount - a.slideCount % a.options.slidesToScroll : a.slideCount + o : o >= a.slideCount ? a.slideCount % a.options.slidesToScroll !== 0 ? 0 : o - a.slideCount : o, a.animating = !0, a.$slider.trigger("beforeChange", [a, a.currentSlide, s]), n = a.currentSlide, a.currentSlide = s, a.setSlideClasses(a.currentSlide), a.options.asNavFor && (l = a.getNavTarget(), l = l.slick("getSlick"), l.slideCount <= l.options.slidesToShow && l.setSlideClasses(a.currentSlide)), a.updateDots(), a.updateArrows(), a.options.fade === !0 ? (t !== !0 ? (a.fadeSlideOut(n), a.fadeSlide(s, function () { a.postSlide(s) })) : a.postSlide(s), void a.animateHeight()) : void (t !== !0 && a.slideCount > a.options.slidesToShow ? a.animateSlide(d, function () { a.postSlide(s) }) : a.postSlide(s))) }, e.prototype.startLoad = function () { var i = this; i.options.arrows === !0 && i.slideCount > i.options.slidesToShow && (i.$prevArrow.hide(), i.$nextArrow.hide()), i.options.dots === !0 && i.slideCount > i.options.slidesToShow && i.$dots.hide(), i.$slider.addClass("slick-loading") }, e.prototype.swipeDirection = function () { var i, e, t, o, s = this; return i = s.touchObject.startX - s.touchObject.curX, e = s.touchObject.startY - s.touchObject.curY, t = Math.atan2(e, i), o = Math.round(180 * t / Math.PI), o < 0 && (o = 360 - Math.abs(o)), o <= 45 && o >= 0 ? s.options.rtl === !1 ? "left" : "right" : o <= 360 && o >= 315 ? s.options.rtl === !1 ? "left" : "right" : o >= 135 && o <= 225 ? s.options.rtl === !1 ? "right" : "left" : s.options.verticalSwiping === !0 ? o >= 35 && o <= 135 ? "down" : "up" : "vertical" }, e.prototype.swipeEnd = function (i) { var e, t, o = this; if (o.dragging = !1, o.swiping = !1, o.scrolling) return o.scrolling = !1, !1; if (o.interrupted = !1, o.shouldClick = !(o.touchObject.swipeLength > 10), void 0 === o.touchObject.curX) return !1; if (o.touchObject.edgeHit === !0 && o.$slider.trigger("edge", [o, o.swipeDirection()]), o.touchObject.swipeLength >= o.touchObject.minSwipe) { switch (t = o.swipeDirection()) { case "left": case "down": e = o.options.swipeToSlide ? o.checkNavigable(o.currentSlide + o.getSlideCount()) : o.currentSlide + o.getSlideCount(), o.currentDirection = 0; break; case "right": case "up": e = o.options.swipeToSlide ? o.checkNavigable(o.currentSlide - o.getSlideCount()) : o.currentSlide - o.getSlideCount(), o.currentDirection = 1 }"vertical" != t && (o.slideHandler(e), o.touchObject = {}, o.$slider.trigger("swipe", [o, t])) } else o.touchObject.startX !== o.touchObject.curX && (o.slideHandler(o.currentSlide), o.touchObject = {}) }, e.prototype.swipeHandler = function (i) { var e = this; if (!(e.options.swipe === !1 || "ontouchend" in document && e.options.swipe === !1 || e.options.draggable === !1 && i.type.indexOf("mouse") !== -1)) switch (e.touchObject.fingerCount = i.originalEvent && void 0 !== i.originalEvent.touches ? i.originalEvent.touches.length : 1, e.touchObject.minSwipe = e.listWidth / e.options.touchThreshold, e.options.verticalSwiping === !0 && (e.touchObject.minSwipe = e.listHeight / e.options.touchThreshold), i.data.action) { case "start": e.swipeStart(i); break; case "move": e.swipeMove(i); break; case "end": e.swipeEnd(i) } }, e.prototype.swipeMove = function (i) { var e, t, o, s, n, r, l = this; return n = void 0 !== i.originalEvent ? i.originalEvent.touches : null, !(!l.dragging || l.scrolling || n && 1 !== n.length) && (e = l.getLeft(l.currentSlide), l.touchObject.curX = void 0 !== n ? n[0].pageX : i.clientX, l.touchObject.curY = void 0 !== n ? n[0].pageY : i.clientY, l.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(l.touchObject.curX - l.touchObject.startX, 2))), r = Math.round(Math.sqrt(Math.pow(l.touchObject.curY - l.touchObject.startY, 2))), !l.options.verticalSwiping && !l.swiping && r > 4 ? (l.scrolling = !0, !1) : (l.options.verticalSwiping === !0 && (l.touchObject.swipeLength = r), t = l.swipeDirection(), void 0 !== i.originalEvent && l.touchObject.swipeLength > 4 && (l.swiping = !0, i.preventDefault()), s = (l.options.rtl === !1 ? 1 : -1) * (l.touchObject.curX > l.touchObject.startX ? 1 : -1), l.options.verticalSwiping === !0 && (s = l.touchObject.curY > l.touchObject.startY ? 1 : -1), o = l.touchObject.swipeLength, l.touchObject.edgeHit = !1, l.options.infinite === !1 && (0 === l.currentSlide && "right" === t || l.currentSlide >= l.getDotCount() && "left" === t) && (o = l.touchObject.swipeLength * l.options.edgeFriction, l.touchObject.edgeHit = !0), l.options.vertical === !1 ? l.swipeLeft = e + o * s : l.swipeLeft = e + o * (l.$list.height() / l.listWidth) * s, l.options.verticalSwiping === !0 && (l.swipeLeft = e + o * s), l.options.fade !== !0 && l.options.touchMove !== !1 && (l.animating === !0 ? (l.swipeLeft = null, !1) : void l.setCSS(l.swipeLeft)))) }, e.prototype.swipeStart = function (i) { var e, t = this; return t.interrupted = !0, 1 !== t.touchObject.fingerCount || t.slideCount <= t.options.slidesToShow ? (t.touchObject = {}, !1) : (void 0 !== i.originalEvent && void 0 !== i.originalEvent.touches && (e = i.originalEvent.touches[0]), t.touchObject.startX = t.touchObject.curX = void 0 !== e ? e.pageX : i.clientX, t.touchObject.startY = t.touchObject.curY = void 0 !== e ? e.pageY : i.clientY, void (t.dragging = !0)) }, e.prototype.unfilterSlides = e.prototype.slickUnfilter = function () { var i = this; null !== i.$slidesCache && (i.unload(), i.$slideTrack.children(this.options.slide).detach(), i.$slidesCache.appendTo(i.$slideTrack), i.reinit()) }, e.prototype.unload = function () { var e = this; i(".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 (i) { var e = this; e.$slider.trigger("unslick", [e, i]), e.destroy() }, e.prototype.updateArrows = function () { var i, e = this; i = Math.floor(e.options.slidesToShow / 2), e.options.arrows === !0 && e.slideCount > e.options.slidesToShow && !e.options.infinite && (e.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false"), e.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false"), 0 === e.currentSlide ? (e.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true"), e.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false")) : e.currentSlide >= e.slideCount - e.options.slidesToShow && e.options.centerMode === !1 ? (e.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"), e.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false")) : e.currentSlide >= e.slideCount - 1 && e.options.centerMode === !0 && (e.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"), e.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false"))) }, e.prototype.updateDots = function () { var i = this; null !== i.$dots && (i.$dots.find("li").removeClass("slick-active").end(), i.$dots.find("li").eq(Math.floor(i.currentSlide / i.options.slidesToScroll)).addClass("slick-active")) }, e.prototype.visibility = function () { var i = this; i.options.autoplay && (document[i.hidden] ? i.interrupted = !0 : i.interrupted = !1) }, i.fn.slick = function () { var i, t, o = this, s = arguments[0], n = Array.prototype.slice.call(arguments, 1), r = o.length; for (i = 0; i < r; i++)if ("object" == typeof s || "undefined" == typeof s ? o[i].slick = new e(o[i], s) : t = o[i].slick[s].apply(o[i].slick, n), "undefined" != typeof t) return t; return o }
});
/*! bootstrap-timepicker v0.5.2
* http://jdewit.github.com/bootstrap-timepicker
* Copyright (c) 2016 Joris de Wit and bootstrap-timepicker contributors
* MIT License
*/
!function (a, b, c) { "use strict"; var d = function (b, c) { this.widget = "", this.$element = a(b), this.defaultTime = c.defaultTime, this.disableFocus = c.disableFocus, this.disableMousewheel = c.disableMousewheel, this.isOpen = c.isOpen, this.minuteStep = c.minuteStep, this.modalBackdrop = c.modalBackdrop, this.orientation = c.orientation, this.secondStep = c.secondStep, this.snapToStep = c.snapToStep, this.showInputs = c.showInputs, this.showMeridian = c.showMeridian, this.showSeconds = c.showSeconds, this.template = c.template, this.appendWidgetTo = c.appendWidgetTo, this.showWidgetOnAddonClick = c.showWidgetOnAddonClick, this.icons = c.icons, this.maxHours = c.maxHours, this.explicitMode = c.explicitMode, this.handleDocumentClick = function (a) { var b = a.data.scope; b.$element.parent().find(a.target).length || b.$widget.is(a.target) || b.$widget.find(a.target).length || b.hideWidget() }, this._init() }; d.prototype = { constructor: d, _init: function () { var b = this; this.showWidgetOnAddonClick && this.$element.parent().hasClass("input-group") && this.$element.parent().hasClass("bootstrap-timepicker") ? (this.$element.parent(".input-group.bootstrap-timepicker").find(".input-group-addon").on({ "click.timepicker": a.proxy(this.showWidget, this) }), this.$element.on({ "focus.timepicker": a.proxy(this.highlightUnit, this), "click.timepicker": a.proxy(this.highlightUnit, this), "keydown.timepicker": a.proxy(this.elementKeydown, this), "blur.timepicker": a.proxy(this.blurElement, this), "mousewheel.timepicker DOMMouseScroll.timepicker": a.proxy(this.mousewheel, this) })) : this.template ? this.$element.on({ "focus.timepicker": a.proxy(this.showWidget, this), "click.timepicker": a.proxy(this.showWidget, this), "blur.timepicker": a.proxy(this.blurElement, this), "mousewheel.timepicker DOMMouseScroll.timepicker": a.proxy(this.mousewheel, this) }) : this.$element.on({ "focus.timepicker": a.proxy(this.highlightUnit, this), "click.timepicker": a.proxy(this.highlightUnit, this), "keydown.timepicker": a.proxy(this.elementKeydown, this), "blur.timepicker": a.proxy(this.blurElement, this), "mousewheel.timepicker DOMMouseScroll.timepicker": a.proxy(this.mousewheel, this) }), this.template !== !1 ? this.$widget = a(this.getTemplate()).on("click", a.proxy(this.widgetClick, this)) : this.$widget = !1, this.showInputs && this.$widget !== !1 && this.$widget.find("input").each(function () { a(this).on({ "click.timepicker": function () { a(this).select() }, "keydown.timepicker": a.proxy(b.widgetKeydown, b), "keyup.timepicker": a.proxy(b.widgetKeyup, b) }) }), this.setDefaultTime(this.defaultTime) }, blurElement: function () { this.highlightedUnit = null, this.updateFromElementVal() }, clear: function () { this.hour = "", this.minute = "", this.second = "", this.meridian = "", this.$element.val("") }, decrementHour: function () { if (this.showMeridian) if (1 === this.hour) this.hour = 12; else { if (12 === this.hour) return this.hour--, this.toggleMeridian(); if (0 === this.hour) return this.hour = 11, this.toggleMeridian(); this.hour-- } else this.hour <= 0 ? this.hour = this.maxHours - 1 : this.hour-- }, decrementMinute: function (a) { var b; b = a ? this.minute - a : this.minute - this.minuteStep, 0 > b ? (this.decrementHour(), this.minute = b + 60) : this.minute = b }, decrementSecond: function () { var a = this.second - this.secondStep; 0 > a ? (this.decrementMinute(!0), this.second = a + 60) : this.second = a }, elementKeydown: function (a) { switch (a.which) { case 9: if (a.shiftKey) { if ("hour" === this.highlightedUnit) { this.hideWidget(); break } this.highlightPrevUnit() } else { if (this.showMeridian && "meridian" === this.highlightedUnit || this.showSeconds && "second" === this.highlightedUnit || !this.showMeridian && !this.showSeconds && "minute" === this.highlightedUnit) { this.hideWidget(); break } this.highlightNextUnit() } a.preventDefault(), this.updateFromElementVal(); break; case 27: this.updateFromElementVal(); break; case 37: a.preventDefault(), this.highlightPrevUnit(), this.updateFromElementVal(); break; case 38: switch (a.preventDefault(), this.highlightedUnit) { case "hour": this.incrementHour(), this.highlightHour(); break; case "minute": this.incrementMinute(), this.highlightMinute(); break; case "second": this.incrementSecond(), this.highlightSecond(); break; case "meridian": this.toggleMeridian(), this.highlightMeridian() }this.update(); break; case 39: a.preventDefault(), this.highlightNextUnit(), this.updateFromElementVal(); break; case 40: switch (a.preventDefault(), this.highlightedUnit) { case "hour": this.decrementHour(), this.highlightHour(); break; case "minute": this.decrementMinute(), this.highlightMinute(); break; case "second": this.decrementSecond(), this.highlightSecond(); break; case "meridian": this.toggleMeridian(), this.highlightMeridian() }this.update() } }, getCursorPosition: function () { var a = this.$element.get(0); if ("selectionStart" in a) return a.selectionStart; if (c.selection) { a.focus(); var b = c.selection.createRange(), d = c.selection.createRange().text.length; return b.moveStart("character", -a.value.length), b.text.length - d } }, getTemplate: function () { var a, b, c, d, e, f; switch (this.showInputs ? (b = '<input type="text" class="bootstrap-timepicker-hour" maxlength="2"/>', c = '<input type="text" class="bootstrap-timepicker-minute" maxlength="2"/>', d = '<input type="text" class="bootstrap-timepicker-second" maxlength="2"/>', e = '<input type="text" class="bootstrap-timepicker-meridian" maxlength="2"/>') : (b = '<span class="bootstrap-timepicker-hour"></span>', c = '<span class="bootstrap-timepicker-minute"></span>', d = '<span class="bootstrap-timepicker-second"></span>', e = '<span class="bootstrap-timepicker-meridian"></span>'), f = '<table><tr><td><a href="#" data-action="incrementHour"><span class="' + this.icons.up + '"></span></a></td><td class="separator">&nbsp;</td><td><a href="#" data-action="incrementMinute"><span class="' + this.icons.up + '"></span></a></td>' + (this.showSeconds ? '<td class="separator">&nbsp;</td><td><a href="#" data-action="incrementSecond"><span class="' + this.icons.up + '"></span></a></td>' : "") + (this.showMeridian ? '<td class="separator">&nbsp;</td><td class="meridian-column"><a href="#" data-action="toggleMeridian"><span class="' + this.icons.up + '"></span></a></td>' : "") + "</tr><tr><td>" + b + '</td> <td class="separator">:</td><td>' + c + "</td> " + (this.showSeconds ? '<td class="separator">:</td><td>' + d + "</td>" : "") + (this.showMeridian ? '<td class="separator">&nbsp;</td><td>' + e + "</td>" : "") + '</tr><tr><td><a href="#" data-action="decrementHour"><span class="' + this.icons.down + '"></span></a></td><td class="separator"></td><td><a href="#" data-action="decrementMinute"><span class="' + this.icons.down + '"></span></a></td>' + (this.showSeconds ? '<td class="separator">&nbsp;</td><td><a href="#" data-action="decrementSecond"><span class="' + this.icons.down + '"></span></a></td>' : "") + (this.showMeridian ? '<td class="separator">&nbsp;</td><td><a href="#" data-action="toggleMeridian"><span class="' + this.icons.down + '"></span></a></td>' : "") + "</tr></table>", this.template) { case "modal": a = '<div class="bootstrap-timepicker-widget modal hide fade in" data-backdrop="' + (this.modalBackdrop ? "true" : "false") + '"><div class="modal-header"><a href="#" class="close" data-dismiss="modal">&times;</a><h3>Pick a Time</h3></div><div class="modal-content">' + f + '</div><div class="modal-footer"><a href="#" class="btn btn-primary" data-dismiss="modal">OK</a></div></div>'; break; case "dropdown": a = '<div class="bootstrap-timepicker-widget dropdown-menu">' + f + "</div>" }return a }, getTime: function () { return "" === this.hour ? "" : this.hour + ":" + (1 === this.minute.toString().length ? "0" + this.minute : this.minute) + (this.showSeconds ? ":" + (1 === this.second.toString().length ? "0" + this.second : this.second) : "") + (this.showMeridian ? " " + this.meridian : "") }, hideWidget: function () { this.isOpen !== !1 && (this.$element.trigger({ type: "hide.timepicker", time: { value: this.getTime(), hours: this.hour, minutes: this.minute, seconds: this.second, meridian: this.meridian } }), "modal" === this.template && this.$widget.modal ? this.$widget.modal("hide") : this.$widget.removeClass("open"), a(c).off("mousedown.timepicker, touchend.timepicker", this.handleDocumentClick), this.isOpen = !1, this.$widget.detach()) }, highlightUnit: function () { this.position = this.getCursorPosition(), this.position >= 0 && this.position <= 2 ? this.highlightHour() : this.position >= 3 && this.position <= 5 ? this.highlightMinute() : this.position >= 6 && this.position <= 8 ? this.showSeconds ? this.highlightSecond() : this.highlightMeridian() : this.position >= 9 && this.position <= 11 && this.highlightMeridian() }, highlightNextUnit: function () { switch (this.highlightedUnit) { case "hour": this.highlightMinute(); break; case "minute": this.showSeconds ? this.highlightSecond() : this.showMeridian ? this.highlightMeridian() : this.highlightHour(); break; case "second": this.showMeridian ? this.highlightMeridian() : this.highlightHour(); break; case "meridian": this.highlightHour() } }, highlightPrevUnit: function () { switch (this.highlightedUnit) { case "hour": this.showMeridian ? this.highlightMeridian() : this.showSeconds ? this.highlightSecond() : this.highlightMinute(); break; case "minute": this.highlightHour(); break; case "second": this.highlightMinute(); break; case "meridian": this.showSeconds ? this.highlightSecond() : this.highlightMinute() } }, highlightHour: function () { var a = this.$element.get(0), b = this; this.highlightedUnit = "hour", a.setSelectionRange && setTimeout(function () { b.hour < 10 ? a.setSelectionRange(0, 1) : a.setSelectionRange(0, 2) }, 0) }, highlightMinute: function () { var a = this.$element.get(0), b = this; this.highlightedUnit = "minute", a.setSelectionRange && setTimeout(function () { b.hour < 10 ? a.setSelectionRange(2, 4) : a.setSelectionRange(3, 5) }, 0) }, highlightSecond: function () { var a = this.$element.get(0), b = this; this.highlightedUnit = "second", a.setSelectionRange && setTimeout(function () { b.hour < 10 ? a.setSelectionRange(5, 7) : a.setSelectionRange(6, 8) }, 0) }, highlightMeridian: function () { var a = this.$element.get(0), b = this; this.highlightedUnit = "meridian", a.setSelectionRange && (this.showSeconds ? setTimeout(function () { b.hour < 10 ? a.setSelectionRange(8, 10) : a.setSelectionRange(9, 11) }, 0) : setTimeout(function () { b.hour < 10 ? a.setSelectionRange(5, 7) : a.setSelectionRange(6, 8) }, 0)) }, incrementHour: function () { if (this.showMeridian) { if (11 === this.hour) return this.hour++, this.toggleMeridian(); 12 === this.hour && (this.hour = 0) } return this.hour === this.maxHours - 1 ? void (this.hour = 0) : void this.hour++ }, incrementMinute: function (a) { var b; b = a ? this.minute + a : this.minute + this.minuteStep - this.minute % this.minuteStep, b > 59 ? (this.incrementHour(), this.minute = b - 60) : this.minute = b }, incrementSecond: function () { var a = this.second + this.secondStep - this.second % this.secondStep; a > 59 ? (this.incrementMinute(!0), this.second = a - 60) : this.second = a }, mousewheel: function (b) { if (!this.disableMousewheel) { b.preventDefault(), b.stopPropagation(); var c = b.originalEvent.wheelDelta || -b.originalEvent.detail, d = null; switch ("mousewheel" === b.type ? d = -1 * b.originalEvent.wheelDelta : "DOMMouseScroll" === b.type && (d = 40 * b.originalEvent.detail), d && (b.preventDefault(), a(this).scrollTop(d + a(this).scrollTop())), this.highlightedUnit) { case "minute": c > 0 ? this.incrementMinute() : this.decrementMinute(), this.highlightMinute(); break; case "second": c > 0 ? this.incrementSecond() : this.decrementSecond(), this.highlightSecond(); break; case "meridian": this.toggleMeridian(), this.highlightMeridian(); break; default: c > 0 ? this.incrementHour() : this.decrementHour(), this.highlightHour() }return !1 } }, changeToNearestStep: function (a, b) { return a % b === 0 ? a : Math.round(a % b / b) ? (a + (b - a % b)) % 60 : a - a % b }, place: function () { if (!this.isInline) { var c = this.$widget.outerWidth(), d = this.$widget.outerHeight(), e = 10, f = a(b).width(), g = a(b).height(), h = a(b).scrollTop(), i = parseInt(this.$element.parents().filter(function () { return "auto" !== a(this).css("z-index") }).first().css("z-index"), 10) + 10, j = this.component ? this.component.parent().offset() : this.$element.offset(), k = this.component ? this.component.outerHeight(!0) : this.$element.outerHeight(!1), l = this.component ? this.component.outerWidth(!0) : this.$element.outerWidth(!1), m = j.left, n = j.top; this.$widget.removeClass("timepicker-orient-top timepicker-orient-bottom timepicker-orient-right timepicker-orient-left"), "auto" !== this.orientation.x ? (this.$widget.addClass("timepicker-orient-" + this.orientation.x), "right" === this.orientation.x && (m -= c - l)) : (this.$widget.addClass("timepicker-orient-left"), j.left < 0 ? m -= j.left - e : j.left + c > f && (m = f - c - e)); var o, p, q = this.orientation.y; "auto" === q && (o = -h + j.top - d, p = h + g - (j.top + k + d), q = Math.max(o, p) === p ? "top" : "bottom"), this.$widget.addClass("timepicker-orient-" + q), "top" === q ? n += k : n -= d + parseInt(this.$widget.css("padding-top"), 10), this.$widget.css({ top: n, left: m, zIndex: i }) } }, remove: function () { a("document").off(".timepicker"), this.$widget && this.$widget.remove(), delete this.$element.data().timepicker }, setDefaultTime: function (a) { if (this.$element.val()) this.updateFromElementVal(); else if ("current" === a) { var b = new Date, c = b.getHours(), d = b.getMinutes(), e = b.getSeconds(), f = "AM"; 0 !== e && (e = Math.ceil(b.getSeconds() / this.secondStep) * this.secondStep, 60 === e && (d += 1, e = 0)), 0 !== d && (d = Math.ceil(b.getMinutes() / this.minuteStep) * this.minuteStep, 60 === d && (c += 1, d = 0)), this.showMeridian && (0 === c ? c = 12 : c >= 12 ? (c > 12 && (c -= 12), f = "PM") : f = "AM"), this.hour = c, this.minute = d, this.second = e, this.meridian = f, this.update() } else a === !1 ? (this.hour = 0, this.minute = 0, this.second = 0, this.meridian = "AM") : this.setTime(a) }, setTime: function (a, b) { if (!a) return void this.clear(); var c, d, e, f, g, h; if ("object" == typeof a && a.getMonth) e = a.getHours(), f = a.getMinutes(), g = a.getSeconds(), this.showMeridian && (h = "AM", e > 12 && (h = "PM", e %= 12), 12 === e && (h = "PM")); else { if (c = (/a/i.test(a) ? 1 : 0) + (/p/i.test(a) ? 2 : 0), c > 2) return void this.clear(); if (d = a.replace(/[^0-9\:]/g, "").split(":"), e = d[0] ? d[0].toString() : d.toString(), this.explicitMode && e.length > 2 && e.length % 2 !== 0) return void this.clear(); f = d[1] ? d[1].toString() : "", g = d[2] ? d[2].toString() : "", e.length > 4 && (g = e.slice(-2), e = e.slice(0, -2)), e.length > 2 && (f = e.slice(-2), e = e.slice(0, -2)), f.length > 2 && (g = f.slice(-2), f = f.slice(0, -2)), e = parseInt(e, 10), f = parseInt(f, 10), g = parseInt(g, 10), isNaN(e) && (e = 0), isNaN(f) && (f = 0), isNaN(g) && (g = 0), g > 59 && (g = 59), f > 59 && (f = 59), e >= this.maxHours && (e = this.maxHours - 1), this.showMeridian ? (e > 12 && (c = 2, e -= 12), c || (c = 1), 0 === e && (e = 12), h = 1 === c ? "AM" : "PM") : 12 > e && 2 === c ? e += 12 : e >= this.maxHours ? e = this.maxHours - 1 : (0 > e || 12 === e && 1 === c) && (e = 0) } this.hour = e, this.snapToStep ? (this.minute = this.changeToNearestStep(f, this.minuteStep), this.second = this.changeToNearestStep(g, this.secondStep)) : (this.minute = f, this.second = g), this.meridian = h, this.update(b) }, showWidget: function () { this.isOpen || this.$element.is(":disabled") || (this.$widget.appendTo(this.appendWidgetTo), a(c).on("mousedown.timepicker, touchend.timepicker", { scope: this }, this.handleDocumentClick), this.$element.trigger({ type: "show.timepicker", time: { value: this.getTime(), hours: this.hour, minutes: this.minute, seconds: this.second, meridian: this.meridian } }), this.place(), this.disableFocus && this.$element.blur(), "" === this.hour && (this.defaultTime ? this.setDefaultTime(this.defaultTime) : this.setTime("0:0:0")), "modal" === this.template && this.$widget.modal ? this.$widget.modal("show").on("hidden", a.proxy(this.hideWidget, this)) : this.isOpen === !1 && this.$widget.addClass("open"), this.isOpen = !0) }, toggleMeridian: function () { this.meridian = "AM" === this.meridian ? "PM" : "AM" }, update: function (a) { this.updateElement(), a || this.updateWidget(), this.$element.trigger({ type: "changeTime.timepicker", time: { value: this.getTime(), hours: this.hour, minutes: this.minute, seconds: this.second, meridian: this.meridian } }) }, updateElement: function () { this.$element.val(this.getTime()).change() }, updateFromElementVal: function () { this.setTime(this.$element.val()) }, updateWidget: function () { if (this.$widget !== !1) { var a = this.hour, b = 1 === this.minute.toString().length ? "0" + this.minute : this.minute, c = 1 === this.second.toString().length ? "0" + this.second : this.second; this.showInputs ? (this.$widget.find("input.bootstrap-timepicker-hour").val(a), this.$widget.find("input.bootstrap-timepicker-minute").val(b), this.showSeconds && this.$widget.find("input.bootstrap-timepicker-second").val(c), this.showMeridian && this.$widget.find("input.bootstrap-timepicker-meridian").val(this.meridian)) : (this.$widget.find("span.bootstrap-timepicker-hour").text(a), this.$widget.find("span.bootstrap-timepicker-minute").text(b), this.showSeconds && this.$widget.find("span.bootstrap-timepicker-second").text(c), this.showMeridian && this.$widget.find("span.bootstrap-timepicker-meridian").text(this.meridian)) } }, updateFromWidgetInputs: function () { if (this.$widget !== !1) { var a = this.$widget.find("input.bootstrap-timepicker-hour").val() + ":" + this.$widget.find("input.bootstrap-timepicker-minute").val() + (this.showSeconds ? ":" + this.$widget.find("input.bootstrap-timepicker-second").val() : "") + (this.showMeridian ? this.$widget.find("input.bootstrap-timepicker-meridian").val() : ""); this.setTime(a, !0) } }, widgetClick: function (b) { b.stopPropagation(), b.preventDefault(); var c = a(b.target), d = c.closest("a").data("action"); d && this[d](), this.update(), c.is("input") && c.get(0).setSelectionRange(0, 2) }, widgetKeydown: function (b) { var c = a(b.target), d = c.attr("class").replace("bootstrap-timepicker-", ""); switch (b.which) { case 9: if (b.shiftKey) { if ("hour" === d) return this.hideWidget() } else if (this.showMeridian && "meridian" === d || this.showSeconds && "second" === d || !this.showMeridian && !this.showSeconds && "minute" === d) return this.hideWidget(); break; case 27: this.hideWidget(); break; case 38: switch (b.preventDefault(), d) { case "hour": this.incrementHour(); break; case "minute": this.incrementMinute(); break; case "second": this.incrementSecond(); break; case "meridian": this.toggleMeridian() }this.setTime(this.getTime()), c.get(0).setSelectionRange(0, 2); break; case 40: switch (b.preventDefault(), d) { case "hour": this.decrementHour(); break; case "minute": this.decrementMinute(); break; case "second": this.decrementSecond(); break; case "meridian": this.toggleMeridian() }this.setTime(this.getTime()), c.get(0).setSelectionRange(0, 2) } }, widgetKeyup: function (a) { (65 === a.which || 77 === a.which || 80 === a.which || 46 === a.which || 8 === a.which || a.which >= 48 && a.which <= 57 || a.which >= 96 && a.which <= 105) && this.updateFromWidgetInputs() } }, a.fn.timepicker = function (b) { var c = Array.apply(null, arguments); return c.shift(), this.each(function () { var e = a(this), f = e.data("timepicker"), g = "object" == typeof b && b; f || e.data("timepicker", f = new d(this, a.extend({}, a.fn.timepicker.defaults, g, a(this).data()))), "string" == typeof b && f[b].apply(f, c) }) }, a.fn.timepicker.defaults = { defaultTime: "current", disableFocus: !1, disableMousewheel: !1, isOpen: !1, minuteStep: 15, modalBackdrop: !1, orientation: { x: "auto", y: "auto" }, secondStep: 15, snapToStep: !1, showSeconds: !1, showInputs: !0, showMeridian: !0, template: "dropdown", appendWidgetTo: "body", showWidgetOnAddonClick: !0, icons: { up: "glyphicon glyphicon-chevron-up", down: "glyphicon glyphicon-chevron-down" }, maxHours: 24, explicitMode: !1 }, a.fn.timepicker.Constructor = d, a(c).on("focus.timepicker.data-api click.timepicker.data-api", '[data-provide="timepicker"]', function (b) { var c = a(this); c.data("timepicker") || (b.preventDefault(), c.timepicker()) }) }(jQuery, window, document);
/*! lazysizes - v5.2.0 */
!function (a, b) { var c = b(a, a.document, Date); a.lazySizes = c, "object" == typeof module && module.exports && (module.exports = c) }("undefined" != typeof window ? window : {}, function (a, b, c) { "use strict"; var d, e; if (function () { var b, c = { lazyClass: "lazyload", loadedClass: "lazyloaded", loadingClass: "lazyloading", preloadClass: "lazypreload", errorClass: "lazyerror", autosizesClass: "lazyautosizes", srcAttr: "data-src", srcsetAttr: "data-srcset", sizesAttr: "data-sizes", minSize: 40, customMedia: {}, init: !0, expFactor: 1.5, hFac: .8, loadMode: 2, loadHidden: !0, ricTimeout: 0, throttleDelay: 125 }; e = a.lazySizesConfig || a.lazysizesConfig || {}; for (b in c) b in e || (e[b] = c[b]) }(), !b || !b.getElementsByClassName) return { init: function () { }, cfg: e, noSupport: !0 }; var f = b.documentElement, g = a.HTMLPictureElement, h = "addEventListener", i = "getAttribute", j = a[h].bind(a), k = a.setTimeout, l = a.requestAnimationFrame || k, m = a.requestIdleCallback, n = /^picture$/i, o = ["load", "error", "lazyincluded", "_lazyloaded"], p = {}, q = Array.prototype.forEach, r = function (a, b) { return p[b] || (p[b] = new RegExp("(\\s|^)" + b + "(\\s|$)")), p[b].test(a[i]("class") || "") && p[b] }, s = function (a, b) { r(a, b) || a.setAttribute("class", (a[i]("class") || "").trim() + " " + b) }, t = function (a, b) { var c; (c = r(a, b)) && a.setAttribute("class", (a[i]("class") || "").replace(c, " ")) }, u = function (a, b, c) { var d = c ? h : "removeEventListener"; c && u(a, b), o.forEach(function (c) { a[d](c, b) }) }, v = function (a, c, e, f, g) { var h = b.createEvent("Event"); return e || (e = {}), e.instance = d, h.initEvent(c, !f, !g), h.detail = e, a.dispatchEvent(h), h }, w = function (b, c) { var d; !g && (d = a.picturefill || e.pf) ? (c && c.src && !b[i]("srcset") && b.setAttribute("srcset", c.src), d({ reevaluate: !0, elements: [b] })) : c && c.src && (b.src = c.src) }, x = function (a, b) { return (getComputedStyle(a, null) || {})[b] }, y = function (a, b, c) { for (c = c || a.offsetWidth; c < e.minSize && b && !a._lazysizesWidth;)c = b.offsetWidth, b = b.parentNode; return c }, z = function () { var a, c, d = [], e = [], f = d, g = function () { var b = f; for (f = d.length ? e : d, a = !0, c = !1; b.length;)b.shift()(); a = !1 }, h = function (d, e) { a && !e ? d.apply(this, arguments) : (f.push(d), c || (c = !0, (b.hidden ? k : l)(g))) }; return h._lsFlush = g, h }(), A = function (a, b) { return b ? function () { z(a) } : function () { var b = this, c = arguments; z(function () { a.apply(b, c) }) } }, B = function (a) { var b, d = 0, f = e.throttleDelay, g = e.ricTimeout, h = function () { b = !1, d = c.now(), a() }, i = m && g > 49 ? function () { m(h, { timeout: g }), g !== e.ricTimeout && (g = e.ricTimeout) } : A(function () { k(h) }, !0); return function (a) { var e; (a = !0 === a) && (g = 33), b || (b = !0, e = f - (c.now() - d), e < 0 && (e = 0), a || e < 9 ? i() : k(i, e)) } }, C = function (a) { var b, d, e = 99, f = function () { b = null, a() }, g = function () { var a = c.now() - d; a < e ? k(g, e - a) : (m || f)(f) }; return function () { d = c.now(), b || (b = k(g, e)) } }, D = function () { var g, m, o, p, y, D, F, G, H, I, J, K, L = /^img$/i, M = /^iframe$/i, N = "onscroll" in a && !/(gle|ing)bot/.test(navigator.userAgent), O = 0, P = 0, Q = 0, R = -1, S = function (a) { Q--, (!a || Q < 0 || !a.target) && (Q = 0) }, T = function (a) { return null == K && (K = "hidden" == x(b.body, "visibility")), K || !("hidden" == x(a.parentNode, "visibility") && "hidden" == x(a, "visibility")) }, U = function (a, c) { var d, e = a, g = T(a); for (G -= c, J += c, H -= c, I += c; g && (e = e.offsetParent) && e != b.body && e != f;)(g = (x(e, "opacity") || 1) > 0) && "visible" != x(e, "overflow") && (d = e.getBoundingClientRect(), g = I > d.left && H < d.right && J > d.top - 1 && G < d.bottom + 1); return g }, V = function () { var a, c, h, j, k, l, n, o, q, r, s, t, u = d.elements; if ((p = e.loadMode) && Q < 8 && (a = u.length)) { for (c = 0, R++; c < a; c++)if (u[c] && !u[c]._lazyRace) if (!N || d.prematureUnveil && d.prematureUnveil(u[c])) ba(u[c]); else if ((o = u[c][i]("data-expand")) && (l = 1 * o) || (l = P), r || (r = !e.expand || e.expand < 1 ? f.clientHeight > 500 && f.clientWidth > 500 ? 500 : 370 : e.expand, d._defEx = r, s = r * e.expFactor, t = e.hFac, K = null, P < s && Q < 1 && R > 2 && p > 2 && !b.hidden ? (P = s, R = 0) : P = p > 1 && R > 1 && Q < 6 ? r : O), q !== l && (D = innerWidth + l * t, F = innerHeight + l, n = -1 * l, q = l), h = u[c].getBoundingClientRect(), (J = h.bottom) >= n && (G = h.top) <= F && (I = h.right) >= n * t && (H = h.left) <= D && (J || I || H || G) && (e.loadHidden || T(u[c])) && (m && Q < 3 && !o && (p < 3 || R < 4) || U(u[c], l))) { if (ba(u[c]), k = !0, Q > 9) break } else !k && m && !j && Q < 4 && R < 4 && p > 2 && (g[0] || e.preloadAfterLoad) && (g[0] || !o && (J || I || H || G || "auto" != u[c][i](e.sizesAttr))) && (j = g[0] || u[c]); j && !k && ba(j) } }, W = B(V), X = function (a) { var b = a.target; if (b._lazyCache) return void delete b._lazyCache; S(a), s(b, e.loadedClass), t(b, e.loadingClass), u(b, Z), v(b, "lazyloaded") }, Y = A(X), Z = function (a) { Y({ target: a.target }) }, $ = function (a, b) { try { a.contentWindow.location.replace(b) } catch (c) { a.src = b } }, _ = function (a) { var b, c = a[i](e.srcsetAttr); (b = e.customMedia[a[i]("data-media") || a[i]("media")]) && a.setAttribute("media", b), c && a.setAttribute("srcset", c) }, aa = A(function (a, b, c, d, f) { var g, h, j, l, m, p; (m = v(a, "lazybeforeunveil", b)).defaultPrevented || (d && (c ? s(a, e.autosizesClass) : a.setAttribute("sizes", d)), h = a[i](e.srcsetAttr), g = a[i](e.srcAttr), f && (j = a.parentNode, l = j && n.test(j.nodeName || "")), p = b.firesLoad || "src" in a && (h || g || l), m = { target: a }, s(a, e.loadingClass), p && (clearTimeout(o), o = k(S, 2500), u(a, Z, !0)), l && q.call(j.getElementsByTagName("source"), _), h ? a.setAttribute("srcset", h) : g && !l && (M.test(a.nodeName) ? $(a, g) : a.src = g), f && (h || l) && w(a, { src: g })), a._lazyRace && delete a._lazyRace, t(a, e.lazyClass), z(function () { var b = a.complete && a.naturalWidth > 1; p && !b || (b && s(a, "ls-is-cached"), X(m), a._lazyCache = !0, k(function () { "_lazyCache" in a && delete a._lazyCache }, 9)), "lazy" == a.loading && Q-- }, !0) }), ba = function (a) { if (!a._lazyRace) { var b, c = L.test(a.nodeName), d = c && (a[i](e.sizesAttr) || a[i]("sizes")), f = "auto" == d; (!f && m || !c || !a[i]("src") && !a.srcset || a.complete || r(a, e.errorClass) || !r(a, e.lazyClass)) && (b = v(a, "lazyunveilread").detail, f && E.updateElem(a, !0, a.offsetWidth), a._lazyRace = !0, Q++, aa(a, b, f, d, c)) } }, ca = C(function () { e.loadMode = 3, W() }), da = function () { 3 == e.loadMode && (e.loadMode = 2), ca() }, ea = function () { if (!m) { if (c.now() - y < 999) return void k(ea, 999); m = !0, e.loadMode = 3, W(), j("scroll", da, !0) } }; return { _: function () { y = c.now(), d.elements = b.getElementsByClassName(e.lazyClass), g = b.getElementsByClassName(e.lazyClass + " " + e.preloadClass), j("scroll", W, !0), j("resize", W, !0), j("pageshow", function (a) { if (a.persisted) { var c = b.querySelectorAll("." + e.loadingClass); c.length && c.forEach && l(function () { c.forEach(function (a) { a.complete && ba(a) }) }) } }), a.MutationObserver ? new MutationObserver(W).observe(f, { childList: !0, subtree: !0, attributes: !0 }) : (f[h]("DOMNodeInserted", W, !0), f[h]("DOMAttrModified", W, !0), setInterval(W, 999)), j("hashchange", W, !0), ["focus", "mouseover", "click", "load", "transitionend", "animationend"].forEach(function (a) { b[h](a, W, !0) }), /d$|^c/.test(b.readyState) ? ea() : (j("load", ea), b[h]("DOMContentLoaded", W), k(ea, 2e4)), d.elements.length ? (V(), z._lsFlush()) : W() }, checkElems: W, unveil: ba, _aLSL: da } }(), E = function () { var a, c = A(function (a, b, c, d) { var e, f, g; if (a._lazysizesWidth = d, d += "px", a.setAttribute("sizes", d), n.test(b.nodeName || "")) for (e = b.getElementsByTagName("source"), f = 0, g = e.length; f < g; f++)e[f].setAttribute("sizes", d); c.detail.dataAttr || w(a, c.detail) }), d = function (a, b, d) { var e, f = a.parentNode; f && (d = y(a, f, d), e = v(a, "lazybeforesizes", { width: d, dataAttr: !!b }), e.defaultPrevented || (d = e.detail.width) && d !== a._lazysizesWidth && c(a, f, e, d)) }, f = function () { var b, c = a.length; if (c) for (b = 0; b < c; b++)d(a[b]) }, g = C(f); return { _: function () { a = b.getElementsByClassName(e.autosizesClass), j("resize", g) }, checkElems: g, updateElem: d } }(), F = function () { !F.i && b.getElementsByClassName && (F.i = !0, E._(), D._()) }; return k(function () { e.init && F() }), d = { cfg: e, autoSizer: E, loader: D, init: F, uP: w, aC: s, rC: t, hC: r, fire: v, gW: y, rAF: z } });
/*! jssocials - v1.4.0 - 2016-10-10
* http://js-socials.com
* Copyright (c) 2016 Artem Tabalin; Licensed MIT */
!function (a, b, c) { function d(a, c) { var d = b(a); d.data(f, this), this._$element = d, this.shares = [], this._init(c), this._render() } var e = "JSSocials", f = e, g = function (a, c) { return b.isFunction(a) ? a.apply(c, b.makeArray(arguments).slice(2)) : a }, h = /(\.(jpeg|png|gif|bmp|svg)$|^data:image\/(jpeg|png|gif|bmp|svg\+xml);base64)/i, i = /(&?[a-zA-Z0-9]+=)?\{([a-zA-Z0-9]+)\}/g, j = { G: 1e9, M: 1e6, K: 1e3 }, k = {}; d.prototype = { url: "", text: "", shareIn: "blank", showLabel: function (a) { return this.showCount === !1 ? a > this.smallScreenWidth : a >= this.largeScreenWidth }, showCount: function (a) { return a <= this.smallScreenWidth ? "inside" : !0 }, smallScreenWidth: 640, largeScreenWidth: 1024, resizeTimeout: 200, elementClass: "jssocials", sharesClass: "jssocials-shares", shareClass: "jssocials-share", shareButtonClass: "jssocials-share-button", shareLinkClass: "jssocials-share-link", shareLogoClass: "jssocials-share-logo", shareLabelClass: "jssocials-share-label", shareLinkCountClass: "jssocials-share-link-count", shareCountBoxClass: "jssocials-share-count-box", shareCountClass: "jssocials-share-count", shareZeroCountClass: "jssocials-share-no-count", _init: function (a) { this._initDefaults(), b.extend(this, a), this._initShares(), this._attachWindowResizeCallback() }, _initDefaults: function () { this.url = a.location.href, this.text = b.trim(b("meta[name=description]").attr("content") || b("title").text()) }, _initShares: function () { this.shares = b.map(this.shares, b.proxy(function (a) { "string" == typeof a && (a = { share: a }); var c = a.share && k[a.share]; if (!c && !a.renderer) throw Error("Share '" + a.share + "' is not found"); return b.extend({ url: this.url, text: this.text }, c, a) }, this)) }, _attachWindowResizeCallback: function () { b(a).on("resize", b.proxy(this._windowResizeHandler, this)) }, _detachWindowResizeCallback: function () { b(a).off("resize", this._windowResizeHandler) }, _windowResizeHandler: function () { (b.isFunction(this.showLabel) || b.isFunction(this.showCount)) && (a.clearTimeout(this._resizeTimer), this._resizeTimer = setTimeout(b.proxy(this.refresh, this), this.resizeTimeout)) }, _render: function () { this._clear(), this._defineOptionsByScreen(), this._$element.addClass(this.elementClass), this._$shares = b("<div>").addClass(this.sharesClass).appendTo(this._$element), this._renderShares() }, _defineOptionsByScreen: function () { this._screenWidth = b(a).width(), this._showLabel = g(this.showLabel, this, this._screenWidth), this._showCount = g(this.showCount, this, this._screenWidth) }, _renderShares: function () { b.each(this.shares, b.proxy(function (a, b) { this._renderShare(b) }, this)) }, _renderShare: function (a) { var c; c = b.isFunction(a.renderer) ? b(a.renderer()) : this._createShare(a), c.addClass(this.shareClass).addClass(a.share ? "jssocials-share-" + a.share : "").addClass(a.css).appendTo(this._$shares) }, _createShare: function (a) { var c = b("<div>"), d = this._createShareLink(a).appendTo(c); if (this._showCount) { var e = "inside" === this._showCount, f = e ? d : b("<div>").addClass(this.shareCountBoxClass).appendTo(c); f.addClass(e ? this.shareLinkCountClass : this.shareCountBoxClass), this._renderShareCount(a, f) } return c }, _createShareLink: function (a) { var c = this._getShareStrategy(a), d = c.call(a, { shareUrl: this._getShareUrl(a) }); return d.addClass(this.shareLinkClass).append(this._createShareLogo(a)), this._showLabel && d.append(this._createShareLabel(a)), b.each(this.on || {}, function (c, e) { b.isFunction(e) && d.on(c, b.proxy(e, a)) }), d }, _getShareStrategy: function (a) { var b = m[a.shareIn || this.shareIn]; if (!b) throw Error("Share strategy '" + this.shareIn + "' not found"); return b }, _getShareUrl: function (a) { var b = g(a.shareUrl, a); return this._formatShareUrl(b, a) }, _createShareLogo: function (a) { var c = a.logo, d = h.test(c) ? b("<img>").attr("src", a.logo) : b("<i>").addClass(c); return d.addClass(this.shareLogoClass), d }, _createShareLabel: function (a) { return b("<span>").addClass(this.shareLabelClass).text(a.label) }, _renderShareCount: function (a, c) { var d = b("<span>").addClass(this.shareCountClass); c.addClass(this.shareZeroCountClass).append(d), this._loadCount(a).done(b.proxy(function (a) { a && (c.removeClass(this.shareZeroCountClass), d.text(a)) }, this)) }, _loadCount: function (a) { var c = b.Deferred(), d = this._getCountUrl(a); if (!d) return c.resolve(0).promise(); var e = b.proxy(function (b) { c.resolve(this._getCountValue(b, a)) }, this); return b.getJSON(d).done(e).fail(function () { b.get(d).done(e).fail(function () { c.resolve(0) }) }), c.promise() }, _getCountUrl: function (a) { var b = g(a.countUrl, a); return this._formatShareUrl(b, a) }, _getCountValue: function (a, c) { var d = (b.isFunction(c.getCount) ? c.getCount(a) : a) || 0; return "string" == typeof d ? d : this._formatNumber(d) }, _formatNumber: function (a) { return b.each(j, function (b, c) { return a >= c ? (a = parseFloat((a / c).toFixed(2)) + b, !1) : void 0 }), a }, _formatShareUrl: function (b, c) { return b.replace(i, function (b, d, e) { var f = c[e] || ""; return f ? (d || "") + a.encodeURIComponent(f) : "" }) }, _clear: function () { a.clearTimeout(this._resizeTimer), this._$element.empty() }, _passOptionToShares: function (a, c) { var d = this.shares; b.each(["url", "text"], function (e, f) { f === a && b.each(d, function (b, d) { d[a] = c }) }) }, _normalizeShare: function (a) { return b.isNumeric(a) ? this.shares[a] : "string" == typeof a ? b.grep(this.shares, function (b) { return b.share === a })[0] : a }, refresh: function () { this._render() }, destroy: function () { this._clear(), this._detachWindowResizeCallback(), this._$element.removeClass(this.elementClass).removeData(f) }, option: function (a, b) { return 1 === arguments.length ? this[a] : (this[a] = b, this._passOptionToShares(a, b), void this.refresh()) }, shareOption: function (a, b, c) { return a = this._normalizeShare(a), 2 === arguments.length ? a[b] : (a[b] = c, void this.refresh()) } }, b.fn.jsSocials = function (a) { var e = b.makeArray(arguments), g = e.slice(1), h = this; return this.each(function () { var e, i = b(this), j = i.data(f); if (j) if ("string" == typeof a) { if (e = j[a].apply(j, g), e !== c && e !== j) return h = e, !1 } else j._detachWindowResizeCallback(), j._init(a), j._render(); else new d(i, a) }), h }; var l = function (a) { var c; b.isPlainObject(a) ? c = d.prototype : (c = k[a], a = arguments[1] || {}), b.extend(c, a) }, m = { popup: function (c) { return b("<a>").attr("href", "#").on("click", function () { return a.open(c.shareUrl, null, "width=600, height=400, location=0, menubar=0, resizeable=0, scrollbars=0, status=0, titlebar=0, toolbar=0"), !1 }) }, blank: function (a) { return b("<a>").attr({ target: "_blank", href: a.shareUrl }) }, self: function (a) { return b("<a>").attr({ target: "_self", href: a.shareUrl }) } }; a.jsSocials = { Socials: d, shares: k, shareStrategies: m, setDefaults: l } }(window, jQuery), function (a, b, c) { b.extend(c.shares, { email: { label: "E-mail", logo: "fa fa-at", shareUrl: "mailto:{to}?subject={text}&body={url}", countUrl: "", shareIn: "self" }, twitter: { label: "Tweet", logo: "fa fa-twitter", shareUrl: "https://twitter.com/share?url={url}&text={text}&via={via}&hashtags={hashtags}", countUrl: "" }, facebook: { label: "Like", logo: "fa fa-facebook", shareUrl: "https://facebook.com/sharer/sharer.php?u={url}", countUrl: "https://graph.facebook.com/?id={url}", getCount: function (a) { return a.share && a.share.share_count || 0 } }, vkontakte: { label: "Like", logo: "fa fa-vk", shareUrl: "https://vk.com/share.php?url={url}&title={title}&description={text}", countUrl: "https://vk.com/share.php?act=count&index=1&url={url}", getCount: function (a) { return parseInt(a.slice(15, -2).split(", ")[1]) } }, googleplus: { label: "+1", logo: "fa fa-google", shareUrl: "https://plus.google.com/share?url={url}", countUrl: "" }, linkedin: { label: "Share", logo: "fa fa-linkedin", shareUrl: "https://www.linkedin.com/shareArticle?mini=true&url={url}", countUrl: "https://www.linkedin.com/countserv/count/share?format=jsonp&url={url}&callback=?", getCount: function (a) { return a.count } }, pinterest: { label: "Pin it", logo: "fa fa-pinterest", shareUrl: "https://pinterest.com/pin/create/bookmarklet/?media={media}&url={url}&description={text}", countUrl: "https://api.pinterest.com/v1/urls/count.json?&url={url}&callback=?", getCount: function (a) { return a.count } }, stumbleupon: { label: "Share", logo: "fa fa-stumbleupon", shareUrl: "http://www.stumbleupon.com/submit?url={url}&title={title}", countUrl: "https://cors-anywhere.herokuapp.com/https://www.stumbleupon.com/services/1.01/badge.getinfo?url={url}", getCount: function (a) { return a.result.views } }, telegram: { label: "Telegram", logo: "fa fa-paper-plane", shareUrl: "tg://msg?text={url} {text}", countUrl: "", shareIn: "self" }, whatsapp: { label: "WhatsApp", logo: "fa fa-whatsapp", shareUrl: "whatsapp://send?text={url} {text}", countUrl: "", shareIn: "self" }, line: { label: "LINE", logo: "fa fa-comment", shareUrl: "http://line.me/R/msg/text/?{text} {url}", countUrl: "" }, viber: { label: "Viber", logo: "fa fa-volume-control-phone", shareUrl: "viber://forward?text={url} {text}", countUrl: "", shareIn: "self" }, pocket: { label: "Pocket", logo: "fa fa-get-pocket", shareUrl: "https://getpocket.com/save?url={url}&title={title}", countUrl: "" }, messenger: { label: "Share", logo: "fa fa-commenting", shareUrl: "fb-messenger://share?link={url}", countUrl: "", shareIn: "self" } }) }(window, jQuery, window.jsSocials);
/*!
Zoom 1.7.21
license: MIT
http://www.jacklmoore.com/zoom
*/
(function (o) { var t = { url: !1, callback: !1, target: !1, duration: 120, on: "mouseover", touch: !0, onZoomIn: !1, onZoomOut: !1, magnify: 1 }; o.zoom = function (t, n, e, i) { var u, c, a, r, m, l, s, f = o(t), h = f.css("position"), d = o(n); return t.style.position = /(absolute|fixed)/.test(h) ? h : "relative", t.style.overflow = "hidden", e.style.width = e.style.height = "", o(e).addClass("zoomImg").css({ position: "absolute", top: 0, left: 0, opacity: 0, width: e.width * i, height: e.height * i, border: "none", maxWidth: "none", maxHeight: "none" }).appendTo(t), { init: function () { c = f.outerWidth(), u = f.outerHeight(), n === t ? (r = c, a = u) : (r = d.outerWidth(), a = d.outerHeight()), m = (e.width - c) / r, l = (e.height - u) / a, s = d.offset() }, move: function (o) { var t = o.pageX - s.left, n = o.pageY - s.top; n = Math.max(Math.min(n, a), 0), t = Math.max(Math.min(t, r), 0), e.style.left = t * -m + "px", e.style.top = n * -l + "px" } } }, o.fn.zoom = function (n) { return this.each(function () { var e = o.extend({}, t, n || {}), i = e.target && o(e.target)[0] || this, u = this, c = o(u), a = document.createElement("img"), r = o(a), m = "mousemove.zoom", l = !1, s = !1; if (!e.url) { var f = u.querySelector("img"); if (f && (e.url = f.getAttribute("data-src") || f.currentSrc || f.src), !e.url) return } c.one("zoom.destroy", function (o, t) { c.off(".zoom"), i.style.position = o, i.style.overflow = t, a.onload = null, r.remove() }.bind(this, i.style.position, i.style.overflow)), a.onload = function () { function t(t) { f.init(), f.move(t), r.stop().fadeTo(o.support.opacity ? e.duration : 0, 1, o.isFunction(e.onZoomIn) ? e.onZoomIn.call(a) : !1) } function n() { r.stop().fadeTo(e.duration, 0, o.isFunction(e.onZoomOut) ? e.onZoomOut.call(a) : !1) } var f = o.zoom(i, u, a, e.magnify); "grab" === e.on ? c.on("mousedown.zoom", function (e) { 1 === e.which && (o(document).one("mouseup.zoom", function () { n(), o(document).off(m, f.move) }), t(e), o(document).on(m, f.move), e.preventDefault()) }) : "click" === e.on ? c.on("click.zoom", function (e) { return l ? void 0 : (l = !0, t(e), o(document).on(m, f.move), o(document).one("click.zoom", function () { n(), l = !1, o(document).off(m, f.move) }), !1) }) : "toggle" === e.on ? c.on("click.zoom", function (o) { l ? n() : t(o), l = !l }) : "mouseover" === e.on && (f.init(), c.on("mouseenter.zoom", t).on("mouseleave.zoom", n).on(m, f.move)), e.touch && c.on("touchstart.zoom", function (o) { o.preventDefault(), s ? (s = !1, n()) : (s = !0, t(o.originalEvent.touches[0] || o.originalEvent.changedTouches[0])) }).on("touchmove.zoom", function (o) { o.preventDefault(), f.move(o.originalEvent.touches[0] || o.originalEvent.changedTouches[0]) }).on("touchend.zoom", function (o) { o.preventDefault(), s && (s = !1, n()) }), o.isFunction(e.callback) && e.callback.call(a) }, a.setAttribute("role", "presentation"), a.alt = "", a.src = e.url }) }, o.fn.zoom.defaults = t })(window.jQuery);
/*!
* Chart.js v2.8.0
* https://www.chartjs.org
* (c) 2019 Chart.js Contributors
* Released under the MIT License
*/
!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.Chart = e(t.moment) }(this, function (t) { "use strict"; t = t && t.hasOwnProperty("default") ? t.default : t; var e = { rgb2hsl: i, rgb2hsv: n, rgb2hwb: a, rgb2cmyk: o, rgb2keyword: s, rgb2xyz: l, rgb2lab: d, rgb2lch: function (t) { return x(d(t)) }, hsl2rgb: u, hsl2hsv: function (t) { var e = t[0], i = t[1] / 100, n = t[2] / 100; if (0 === n) return [0, 0, 0]; return [e, 100 * (2 * (i *= (n *= 2) <= 1 ? n : 2 - n) / (n + i)), 100 * ((n + i) / 2)] }, hsl2hwb: function (t) { return a(u(t)) }, hsl2cmyk: function (t) { return o(u(t)) }, hsl2keyword: function (t) { return s(u(t)) }, hsv2rgb: h, hsv2hsl: function (t) { var e, i, n = t[0], a = t[1] / 100, o = t[2] / 100; return e = a * o, [n, 100 * (e = (e /= (i = (2 - a) * o) <= 1 ? i : 2 - i) || 0), 100 * (i /= 2)] }, hsv2hwb: function (t) { return a(h(t)) }, hsv2cmyk: function (t) { return o(h(t)) }, hsv2keyword: function (t) { return s(h(t)) }, hwb2rgb: c, hwb2hsl: function (t) { return i(c(t)) }, hwb2hsv: function (t) { return n(c(t)) }, hwb2cmyk: function (t) { return o(c(t)) }, hwb2keyword: function (t) { return s(c(t)) }, cmyk2rgb: f, cmyk2hsl: function (t) { return i(f(t)) }, cmyk2hsv: function (t) { return n(f(t)) }, cmyk2hwb: function (t) { return a(f(t)) }, cmyk2keyword: function (t) { return s(f(t)) }, keyword2rgb: w, keyword2hsl: function (t) { return i(w(t)) }, keyword2hsv: function (t) { return n(w(t)) }, keyword2hwb: function (t) { return a(w(t)) }, keyword2cmyk: function (t) { return o(w(t)) }, keyword2lab: function (t) { return d(w(t)) }, keyword2xyz: function (t) { return l(w(t)) }, xyz2rgb: p, xyz2lab: m, xyz2lch: function (t) { return x(m(t)) }, lab2xyz: v, lab2rgb: y, lab2lch: x, lch2lab: k, lch2xyz: function (t) { return v(k(t)) }, lch2rgb: function (t) { return y(k(t)) } }; function i(t) { var e, i, n = t[0] / 255, a = t[1] / 255, o = t[2] / 255, r = Math.min(n, a, o), s = Math.max(n, a, o), l = s - r; return s == r ? e = 0 : n == s ? e = (a - o) / l : a == s ? e = 2 + (o - n) / l : o == s && (e = 4 + (n - a) / l), (e = Math.min(60 * e, 360)) < 0 && (e += 360), i = (r + s) / 2, [e, 100 * (s == r ? 0 : i <= .5 ? l / (s + r) : l / (2 - s - r)), 100 * i] } function n(t) { var e, i, n = t[0], a = t[1], o = t[2], r = Math.min(n, a, o), s = Math.max(n, a, o), l = s - r; return i = 0 == s ? 0 : l / s * 1e3 / 10, s == r ? e = 0 : n == s ? e = (a - o) / l : a == s ? e = 2 + (o - n) / l : o == s && (e = 4 + (n - a) / l), (e = Math.min(60 * e, 360)) < 0 && (e += 360), [e, i, s / 255 * 1e3 / 10] } function a(t) { var e = t[0], n = t[1], a = t[2]; return [i(t)[0], 100 * (1 / 255 * Math.min(e, Math.min(n, a))), 100 * (a = 1 - 1 / 255 * Math.max(e, Math.max(n, a)))] } function o(t) { var e, i = t[0] / 255, n = t[1] / 255, a = t[2] / 255; return [100 * ((1 - i - (e = Math.min(1 - i, 1 - n, 1 - a))) / (1 - e) || 0), 100 * ((1 - n - e) / (1 - e) || 0), 100 * ((1 - a - e) / (1 - e) || 0), 100 * e] } function s(t) { return _[JSON.stringify(t)] } function l(t) { var e = t[0] / 255, i = t[1] / 255, n = t[2] / 255; return [100 * (.4124 * (e = e > .04045 ? Math.pow((e + .055) / 1.055, 2.4) : e / 12.92) + .3576 * (i = i > .04045 ? Math.pow((i + .055) / 1.055, 2.4) : i / 12.92) + .1805 * (n = n > .04045 ? Math.pow((n + .055) / 1.055, 2.4) : n / 12.92)), 100 * (.2126 * e + .7152 * i + .0722 * n), 100 * (.0193 * e + .1192 * i + .9505 * n)] } function d(t) { var e = l(t), i = e[0], n = e[1], a = e[2]; return n /= 100, a /= 108.883, i = (i /= 95.047) > .008856 ? Math.pow(i, 1 / 3) : 7.787 * i + 16 / 116, [116 * (n = n > .008856 ? Math.pow(n, 1 / 3) : 7.787 * n + 16 / 116) - 16, 500 * (i - n), 200 * (n - (a = a > .008856 ? Math.pow(a, 1 / 3) : 7.787 * a + 16 / 116))] } function u(t) { var e, i, n, a, o, r = t[0] / 360, s = t[1] / 100, l = t[2] / 100; if (0 == s) return [o = 255 * l, o, o]; e = 2 * l - (i = l < .5 ? l * (1 + s) : l + s - l * s), a = [0, 0, 0]; for (var d = 0; d < 3; d++)(n = r + 1 / 3 * -(d - 1)) < 0 && n++, n > 1 && n--, o = 6 * n < 1 ? e + 6 * (i - e) * n : 2 * n < 1 ? i : 3 * n < 2 ? e + (i - e) * (2 / 3 - n) * 6 : e, a[d] = 255 * o; return a } function h(t) { var e = t[0] / 60, i = t[1] / 100, n = t[2] / 100, a = Math.floor(e) % 6, o = e - Math.floor(e), r = 255 * n * (1 - i), s = 255 * n * (1 - i * o), l = 255 * n * (1 - i * (1 - o)); n *= 255; switch (a) { case 0: return [n, l, r]; case 1: return [s, n, r]; case 2: return [r, n, l]; case 3: return [r, s, n]; case 4: return [l, r, n]; case 5: return [n, r, s] } } function c(t) { var e, i, n, a, o = t[0] / 360, s = t[1] / 100, l = t[2] / 100, d = s + l; switch (d > 1 && (s /= d, l /= d), n = 6 * o - (e = Math.floor(6 * o)), 0 != (1 & e) && (n = 1 - n), a = s + n * ((i = 1 - l) - s), e) { default: case 6: case 0: r = i, g = a, b = s; break; case 1: r = a, g = i, b = s; break; case 2: r = s, g = i, b = a; break; case 3: r = s, g = a, b = i; break; case 4: r = a, g = s, b = i; break; case 5: r = i, g = s, b = a }return [255 * r, 255 * g, 255 * b] } function f(t) { var e = t[0] / 100, i = t[1] / 100, n = t[2] / 100, a = t[3] / 100; return [255 * (1 - Math.min(1, e * (1 - a) + a)), 255 * (1 - Math.min(1, i * (1 - a) + a)), 255 * (1 - Math.min(1, n * (1 - a) + a))] } function p(t) { var e, i, n, a = t[0] / 100, o = t[1] / 100, r = t[2] / 100; return i = -.9689 * a + 1.8758 * o + .0415 * r, n = .0557 * a + -.204 * o + 1.057 * r, e = (e = 3.2406 * a + -1.5372 * o + -.4986 * r) > .0031308 ? 1.055 * Math.pow(e, 1 / 2.4) - .055 : e *= 12.92, i = i > .0031308 ? 1.055 * Math.pow(i, 1 / 2.4) - .055 : i *= 12.92, n = n > .0031308 ? 1.055 * Math.pow(n, 1 / 2.4) - .055 : n *= 12.92, [255 * (e = Math.min(Math.max(0, e), 1)), 255 * (i = Math.min(Math.max(0, i), 1)), 255 * (n = Math.min(Math.max(0, n), 1))] } function m(t) { var e = t[0], i = t[1], n = t[2]; return i /= 100, n /= 108.883, e = (e /= 95.047) > .008856 ? Math.pow(e, 1 / 3) : 7.787 * e + 16 / 116, [116 * (i = i > .008856 ? Math.pow(i, 1 / 3) : 7.787 * i + 16 / 116) - 16, 500 * (e - i), 200 * (i - (n = n > .008856 ? Math.pow(n, 1 / 3) : 7.787 * n + 16 / 116))] } function v(t) { var e, i, n, a, o = t[0], r = t[1], s = t[2]; return o <= 8 ? a = (i = 100 * o / 903.3) / 100 * 7.787 + 16 / 116 : (i = 100 * Math.pow((o + 16) / 116, 3), a = Math.pow(i / 100, 1 / 3)), [e = e / 95.047 <= .008856 ? e = 95.047 * (r / 500 + a - 16 / 116) / 7.787 : 95.047 * Math.pow(r / 500 + a, 3), i, n = n / 108.883 <= .008859 ? n = 108.883 * (a - s / 200 - 16 / 116) / 7.787 : 108.883 * Math.pow(a - s / 200, 3)] } function x(t) { var e, i = t[0], n = t[1], a = t[2]; return (e = 360 * Math.atan2(a, n) / 2 / Math.PI) < 0 && (e += 360), [i, Math.sqrt(n * n + a * a), e] } function y(t) { return p(v(t)) } function k(t) { var e, i = t[0], n = t[1]; return e = t[2] / 360 * 2 * Math.PI, [i, n * Math.cos(e), n * Math.sin(e)] } function w(t) { return M[t] } var M = { 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] }, _ = {}; for (var C in M) _[JSON.stringify(M[C])] = C; var S = function () { return new T }; for (var P in e) { S[P + "Raw"] = function (t) { return function (i) { return "number" == typeof i && (i = Array.prototype.slice.call(arguments)), e[t](i) } }(P); var I = /(\w+)2(\w+)/.exec(P), A = I[1], D = I[2]; (S[A] = S[A] || {})[D] = S[P] = function (t) { return function (i) { "number" == typeof i && (i = Array.prototype.slice.call(arguments)); var n = e[t](i); if ("string" == typeof n || void 0 === n) return n; for (var a = 0; a < n.length; a++)n[a] = Math.round(n[a]); return n } }(P) } var T = function () { this.convs = {} }; T.prototype.routeSpace = function (t, e) { var i = e[0]; return void 0 === i ? this.getValues(t) : ("number" == typeof i && (i = Array.prototype.slice.call(e)), this.setValues(t, i)) }, T.prototype.setValues = function (t, e) { return this.space = t, this.convs = {}, this.convs[t] = e, this }, T.prototype.getValues = function (t) { var e = this.convs[t]; if (!e) { var i = this.space, n = this.convs[i]; e = S[i][t](n), this.convs[t] = e } return e }, ["rgb", "hsl", "hsv", "cmyk", "keyword"].forEach(function (t) { T.prototype[t] = function (e) { return this.routeSpace(t, arguments) } }); var F = S, 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] }, R = { getRgba: O, getHsla: z, getRgb: function (t) { var e = O(t); return e && e.slice(0, 3) }, getHsl: function (t) { var e = z(t); return e && e.slice(0, 3) }, getHwb: B, getAlpha: function (t) { var e = O(t); if (e) return e[3]; if (e = z(t)) return e[3]; if (e = B(t)) return e[3] }, hexString: function (t, e) { var e = void 0 !== e && 3 === t.length ? e : t[3]; return "#" + H(t[0]) + H(t[1]) + H(t[2]) + (e >= 0 && e < 1 ? H(Math.round(255 * e)) : "") }, rgbString: function (t, e) { if (e < 1 || t[3] && t[3] < 1) return N(t, e); return "rgb(" + t[0] + ", " + t[1] + ", " + t[2] + ")" }, rgbaString: N, percentString: function (t, e) { if (e < 1 || t[3] && t[3] < 1) return W(t, e); var i = Math.round(t[0] / 255 * 100), n = Math.round(t[1] / 255 * 100), a = Math.round(t[2] / 255 * 100); return "rgb(" + i + "%, " + n + "%, " + a + "%)" }, percentaString: W, hslString: function (t, e) { if (e < 1 || t[3] && t[3] < 1) return V(t, e); return "hsl(" + t[0] + ", " + t[1] + "%, " + t[2] + "%)" }, hslaString: V, hwbString: function (t, e) { void 0 === e && (e = void 0 !== t[3] ? t[3] : 1); return "hwb(" + t[0] + ", " + t[1] + "%, " + t[2] + "%" + (void 0 !== e && 1 !== e ? ", " + e : "") + ")" }, keyword: function (t) { return j[t.slice(0, 3)] } }; function O(t) { if (t) { var e = [0, 0, 0], i = 1, n = t.match(/^#([a-fA-F0-9]{3,4})$/i), a = ""; if (n) { a = (n = n[1])[3]; for (var o = 0; o < e.length; o++)e[o] = parseInt(n[o] + n[o], 16); a && (i = Math.round(parseInt(a + a, 16) / 255 * 100) / 100) } else if (n = t.match(/^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i)) { a = n[2], n = n[1]; for (o = 0; o < e.length; o++)e[o] = parseInt(n.slice(2 * o, 2 * o + 2), 16); a && (i = Math.round(parseInt(a, 16) / 255 * 100) / 100) } else if (n = 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(n[o + 1]); i = parseFloat(n[4]) } else if (n = 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(n[o + 1])); i = parseFloat(n[4]) } else if (n = t.match(/(\w+)/)) { if ("transparent" == n[1]) return [0, 0, 0, 0]; if (!(e = L[n[1]])) return } for (o = 0; o < e.length; o++)e[o] = E(e[o], 0, 255); return i = i || 0 == i ? E(i, 0, 1) : 1, e[3] = i, e } } function z(t) { if (t) { var e = t.match(/^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/); if (e) { var i = parseFloat(e[4]); return [E(parseInt(e[1]), 0, 360), E(parseFloat(e[2]), 0, 100), E(parseFloat(e[3]), 0, 100), E(isNaN(i) ? 1 : i, 0, 1)] } } } function B(t) { if (t) { var e = t.match(/^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/); if (e) { var i = parseFloat(e[4]); return [E(parseInt(e[1]), 0, 360), E(parseFloat(e[2]), 0, 100), E(parseFloat(e[3]), 0, 100), E(isNaN(i) ? 1 : i, 0, 1)] } } } function N(t, e) { return void 0 === e && (e = void 0 !== t[3] ? t[3] : 1), "rgba(" + t[0] + ", " + t[1] + ", " + t[2] + ", " + e + ")" } function W(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 V(t, e) { return void 0 === e && (e = void 0 !== t[3] ? t[3] : 1), "hsla(" + t[0] + ", " + t[1] + "%, " + t[2] + "%, " + e + ")" } function E(t, e, i) { return Math.min(Math.max(e, t), i) } function H(t) { var e = t.toString(16).toUpperCase(); return e.length < 2 ? "0" + e : e } var j = {}; for (var q in L) j[L[q]] = q; var Y = function (t) { return t instanceof Y ? t : this instanceof Y ? (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 = R.getRgba(t)) ? this.setValues("rgb", e) : (e = R.getHsla(t)) ? this.setValues("hsl", e) : (e = R.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 Y(t); var e }; Y.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 R.hexString(this.values.rgb) }, rgbString: function () { return R.rgbString(this.values.rgb, this.values.alpha) }, rgbaString: function () { return R.rgbaString(this.values.rgb, this.values.alpha) }, percentString: function () { return R.percentString(this.values.rgb, this.values.alpha) }, hslString: function () { return R.hslString(this.values.hsl, this.values.alpha) }, hslaString: function () { return R.hslaString(this.values.hsl, this.values.alpha) }, hwbString: function () { return R.hwbString(this.values.hwb, this.values.alpha) }, keyword: function () { return R.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 = [], i = 0; i < t.length; i++) { var n = t[i] / 255; e[i] = n <= .03928 ? n / 12.92 : Math.pow((n + .055) / 1.055, 2.4) } return .2126 * e[0] + .7152 * e[1] + .0722 * e[2] }, contrast: function (t) { var e = this.luminosity(), i = t.luminosity(); return e > i ? (e + .05) / (i + .05) : (i + .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, i = (e[0] + t) % 360; return e[0] = i < 0 ? 360 + i : i, this.setValues("hsl", e), this }, mix: function (t, e) { var i = t, n = void 0 === e ? .5 : e, a = 2 * n - 1, o = this.alpha() - i.alpha(), r = ((a * o == -1 ? a : (a + o) / (1 + a * o)) + 1) / 2, s = 1 - r; return this.rgb(r * this.red() + s * i.red(), r * this.green() + s * i.green(), r * this.blue() + s * i.blue()).alpha(this.alpha() * n + i.alpha() * (1 - n)) }, toJSON: function () { return this.rgb() }, clone: function () { var t, e, i = new Y, n = this.values, a = i.values; for (var o in n) n.hasOwnProperty(o) && (t = n[o], "[object Array]" === (e = {}.toString.call(t)) ? a[o] = t.slice(0) : "[object Number]" === e ? a[o] = t : console.error("unexpected color value:", t)); return i } }, Y.prototype.spaces = { rgb: ["red", "green", "blue"], hsl: ["hue", "saturation", "lightness"], hsv: ["hue", "saturation", "value"], hwb: ["hue", "whiteness", "blackness"], cmyk: ["cyan", "magenta", "yellow", "black"] }, Y.prototype.maxes = { rgb: [255, 255, 255], hsl: [360, 100, 100], hsv: [360, 100, 100], hwb: [360, 100, 100], cmyk: [100, 100, 100, 100] }, Y.prototype.getValues = function (t) { for (var e = this.values, i = {}, n = 0; n < t.length; n++)i[t.charAt(n)] = e[t][n]; return 1 !== e.alpha && (i.a = e.alpha), i }, Y.prototype.setValues = function (t, e) { var i, n, a = this.values, o = this.spaces, r = this.maxes, s = 1; if (this.valid = !0, "alpha" === t) s = e; else if (e.length) a[t] = e.slice(0, t.length), s = e[t.length]; else if (void 0 !== e[t.charAt(0)]) { for (i = 0; i < t.length; i++)a[t][i] = e[t.charAt(i)]; s = e.a } else if (void 0 !== e[o[t][0]]) { var l = o[t]; for (i = 0; i < t.length; i++)a[t][i] = e[l[i]]; s = e.alpha } if (a.alpha = Math.max(0, Math.min(1, void 0 === s ? a.alpha : s)), "alpha" === t) return !1; for (i = 0; i < t.length; i++)n = Math.max(0, Math.min(r[t][i], a[t][i])), a[t][i] = Math.round(n); for (var d in o) d !== t && (a[d] = F[t][d](a[t])); return !0 }, Y.prototype.setSpace = function (t, e) { var i = e[0]; return void 0 === i ? this.getValues(t) : ("number" == typeof i && (i = Array.prototype.slice.call(e)), this.setValues(t, i), this) }, Y.prototype.setChannel = function (t, e, i) { var n = this.values[t]; return void 0 === i ? n[e] : i === n[e] ? this : (n[e] = i, this.setValues(t, n), this) }, "undefined" != typeof window && (window.Color = Y); var U, X = Y, K = { noop: function () { }, uid: (U = 0, function () { return U++ }), 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, i) { return K.valueOrDefault(K.isArray(t) ? t[e] : t, i) }, callback: function (t, e, i) { if (t && "function" == typeof t.call) return t.apply(i, e) }, each: function (t, e, i, n) { var a, o, r; if (K.isArray(t)) if (o = t.length, n) for (a = o - 1; a >= 0; a--)e.call(i, t[a], a); else for (a = 0; a < o; a++)e.call(i, t[a], a); else if (K.isObject(t)) for (o = (r = Object.keys(t)).length, a = 0; a < o; a++)e.call(i, t[r[a]], r[a]) }, arrayEquals: function (t, e) { var i, n, a, o; if (!t || !e || t.length !== e.length) return !1; for (i = 0, n = t.length; i < n; ++i)if (a = t[i], o = e[i], a instanceof Array && o instanceof Array) { if (!K.arrayEquals(a, o)) return !1 } else if (a !== o) return !1; return !0 }, clone: function (t) { if (K.isArray(t)) return t.map(K.clone); if (K.isObject(t)) { for (var e = {}, i = Object.keys(t), n = i.length, a = 0; a < n; ++a)e[i[a]] = K.clone(t[i[a]]); return e } return t }, _merger: function (t, e, i, n) { var a = e[t], o = i[t]; K.isObject(a) && K.isObject(o) ? K.merge(a, o, n) : e[t] = K.clone(o) }, _mergerIf: function (t, e, i) { var n = e[t], a = i[t]; K.isObject(n) && K.isObject(a) ? K.mergeIf(n, a) : e.hasOwnProperty(t) || (e[t] = K.clone(a)) }, merge: function (t, e, i) { var n, a, o, r, s, l = K.isArray(e) ? e : [e], d = l.length; if (!K.isObject(t)) return t; for (n = (i = i || {}).merger || K._merger, a = 0; a < d; ++a)if (e = l[a], K.isObject(e)) for (s = 0, r = (o = Object.keys(e)).length; s < r; ++s)n(o[s], t, e, i); return t }, mergeIf: function (t, e) { return K.merge(t, e, { merger: K._mergerIf }) }, extend: function (t) { for (var e = function (e, i) { t[i] = e }, i = 1, n = arguments.length; i < n; ++i)K.each(arguments[i], e); return t }, inherits: function (t) { var e = this, i = t && t.hasOwnProperty("constructor") ? t.constructor : function () { return e.apply(this, arguments) }, n = function () { this.constructor = i }; return n.prototype = e.prototype, i.prototype = new n, i.extend = K.inherits, t && K.extend(i.prototype, t), i.__super__ = e.prototype, i } }, G = K; K.callCallback = K.callback, K.indexOf = function (t, e, i) { return Array.prototype.indexOf.call(t, e, i) }, K.getValueOrDefault = K.valueOrDefault, K.getValueAtIndexOrDefault = K.valueAtIndexOrDefault; var Z = { 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, i = 0, n = 1; return 0 === t ? 0 : 1 === t ? 1 : (i || (i = .3), n < 1 ? (n = 1, e = i / 4) : e = i / (2 * Math.PI) * Math.asin(1 / n), -n * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - e) * (2 * Math.PI) / i)) }, easeOutElastic: function (t) { var e = 1.70158, i = 0, n = 1; return 0 === t ? 0 : 1 === t ? 1 : (i || (i = .3), n < 1 ? (n = 1, e = i / 4) : e = i / (2 * Math.PI) * Math.asin(1 / n), n * Math.pow(2, -10 * t) * Math.sin((t - e) * (2 * Math.PI) / i) + 1) }, easeInOutElastic: function (t) { var e = 1.70158, i = 0, n = 1; return 0 === t ? 0 : 2 == (t /= .5) ? 1 : (i || (i = .45), n < 1 ? (n = 1, e = i / 4) : e = i / (2 * Math.PI) * Math.asin(1 / n), t < 1 ? n * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - e) * (2 * Math.PI) / i) * -.5 : n * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - e) * (2 * Math.PI) / i) * .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 - Z.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 * Z.easeInBounce(2 * t) : .5 * Z.easeOutBounce(2 * t - 1) + .5 } }, $ = { effects: Z }; G.easingEffects = Z; var J = Math.PI, Q = J / 180, tt = 2 * J, et = J / 2, it = J / 4, nt = 2 * J / 3, at = { clear: function (t) { t.ctx.clearRect(0, 0, t.width, t.height) }, roundedRect: function (t, e, i, n, a, o) { if (o) { var r = Math.min(o, a / 2, n / 2), s = e + r, l = i + r, d = e + n - r, u = i + a - r; t.moveTo(e, l), s < d && l < u ? (t.arc(s, l, r, -J, -et), t.arc(d, l, r, -et, 0), t.arc(d, u, r, 0, et), t.arc(s, u, r, et, J)) : s < d ? (t.moveTo(s, i), t.arc(d, l, r, -et, et), t.arc(s, l, r, et, J + et)) : l < u ? (t.arc(s, l, r, -J, 0), t.arc(s, u, r, 0, J)) : t.arc(s, l, r, -J, J), t.closePath(), t.moveTo(e, i) } else t.rect(e, i, n, a) }, drawPoint: function (t, e, i, n, a, o) { var r, s, l, d, u, h = (o || 0) * Q; if (!e || "object" != typeof e || "[object HTMLImageElement]" !== (r = e.toString()) && "[object HTMLCanvasElement]" !== r) { if (!(isNaN(i) || i <= 0)) { switch (t.beginPath(), e) { default: t.arc(n, a, i, 0, tt), t.closePath(); break; case "triangle": t.moveTo(n + Math.sin(h) * i, a - Math.cos(h) * i), h += nt, t.lineTo(n + Math.sin(h) * i, a - Math.cos(h) * i), h += nt, t.lineTo(n + Math.sin(h) * i, a - Math.cos(h) * i), t.closePath(); break; case "rectRounded": d = i - (u = .516 * i), s = Math.cos(h + it) * d, l = Math.sin(h + it) * d, t.arc(n - s, a - l, u, h - J, h - et), t.arc(n + l, a - s, u, h - et, h), t.arc(n + s, a + l, u, h, h + et), t.arc(n - l, a + s, u, h + et, h + J), t.closePath(); break; case "rect": if (!o) { d = Math.SQRT1_2 * i, t.rect(n - d, a - d, 2 * d, 2 * d); break } h += it; case "rectRot": s = Math.cos(h) * i, l = Math.sin(h) * i, t.moveTo(n - s, a - l), t.lineTo(n + l, a - s), t.lineTo(n + s, a + l), t.lineTo(n - l, a + s), t.closePath(); break; case "crossRot": h += it; case "cross": s = Math.cos(h) * i, l = Math.sin(h) * i, t.moveTo(n - s, a - l), t.lineTo(n + s, a + l), t.moveTo(n + l, a - s), t.lineTo(n - l, a + s); break; case "star": s = Math.cos(h) * i, l = Math.sin(h) * i, t.moveTo(n - s, a - l), t.lineTo(n + s, a + l), t.moveTo(n + l, a - s), t.lineTo(n - l, a + s), h += it, s = Math.cos(h) * i, l = Math.sin(h) * i, t.moveTo(n - s, a - l), t.lineTo(n + s, a + l), t.moveTo(n + l, a - s), t.lineTo(n - l, a + s); break; case "line": s = Math.cos(h) * i, l = Math.sin(h) * i, t.moveTo(n - s, a - l), t.lineTo(n + s, a + l); break; case "dash": t.moveTo(n, a), t.lineTo(n + Math.cos(h) * i, a + Math.sin(h) * i) }t.fill(), t.stroke() } } else t.drawImage(e, n - e.width / 2, a - e.height / 2, e.width, e.height) }, _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, i, n) { var a = i.steppedLine; if (a) { if ("middle" === a) { var o = (e.x + i.x) / 2; t.lineTo(o, n ? i.y : e.y), t.lineTo(o, n ? e.y : i.y) } else "after" === a && !n || "after" !== a && n ? t.lineTo(e.x, i.y) : t.lineTo(i.x, e.y); t.lineTo(i.x, i.y) } else i.tension ? t.bezierCurveTo(n ? e.controlPointPreviousX : e.controlPointNextX, n ? e.controlPointPreviousY : e.controlPointNextY, n ? i.controlPointNextX : i.controlPointPreviousX, n ? i.controlPointNextY : i.controlPointPreviousY, i.x, i.y) : t.lineTo(i.x, i.y) } }, ot = at; G.clear = at.clear, G.drawRoundedRectangle = function (t) { t.beginPath(), at.roundedRect.apply(at, arguments) }; var rt = { _set: function (t, e) { return G.merge(this[t] || (this[t] = {}), e) } }; rt._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 st = rt, lt = G.valueOrDefault; var dt = { toLineHeight: function (t, e) { var i = ("" + t).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/); if (!i || "normal" === i[1]) return 1.2 * e; switch (t = +i[2], i[3]) { case "px": return t; case "%": t /= 100 }return e * t }, toPadding: function (t) { var e, i, n, a; return G.isObject(t) ? (e = +t.top || 0, i = +t.right || 0, n = +t.bottom || 0, a = +t.left || 0) : e = i = n = a = +t || 0, { top: e, right: i, bottom: n, left: a, height: e + n, width: a + i } }, _parseFont: function (t) { var e = st.global, i = lt(t.fontSize, e.defaultFontSize), n = { family: lt(t.fontFamily, e.defaultFontFamily), lineHeight: G.options.toLineHeight(lt(t.lineHeight, e.defaultLineHeight), i), size: i, style: lt(t.fontStyle, e.defaultFontStyle), weight: null, string: "" }; return n.string = function (t) { return !t || G.isNullOrUndef(t.size) || G.isNullOrUndef(t.family) ? null : (t.style ? t.style + " " : "") + (t.weight ? t.weight + " " : "") + t.size + "px " + t.family }(n), n }, resolve: function (t, e, i) { var n, a, o; for (n = 0, a = t.length; n < a; ++n)if (void 0 !== (o = t[n]) && (void 0 !== e && "function" == typeof o && (o = o(e)), void 0 !== i && G.isArray(o) && (o = o[i]), void 0 !== o)) return o } }, ut = G, ht = $, ct = ot, ft = dt; ut.easing = ht, ut.canvas = ct, ut.options = ft; var gt = function (t) { ut.extend(this, t), this.initialize.apply(this, arguments) }; ut.extend(gt.prototype, { initialize: function () { this.hidden = !1 }, pivot: function () { var t = this; return t._view || (t._view = ut.clone(t._model)), t._start = {}, t }, transition: function (t) { var e = this, i = e._model, n = e._start, a = e._view; return i && 1 !== t ? (a || (a = e._view = {}), n || (n = e._start = {}), function (t, e, i, n) { var a, o, r, s, l, d, u, h, c, f = Object.keys(i); for (a = 0, o = f.length; a < o; ++a)if (d = i[r = f[a]], e.hasOwnProperty(r) || (e[r] = d), (s = e[r]) !== d && "_" !== r[0]) { if (t.hasOwnProperty(r) || (t[r] = s), (u = typeof d) == typeof (l = t[r])) if ("string" === u) { if ((h = X(l)).valid && (c = X(d)).valid) { e[r] = c.mix(h, n).rgbString(); continue } } else if (ut.isFinite(l) && ut.isFinite(d)) { e[r] = l + (d - l) * n; continue } e[r] = d } }(n, a, i, t), e) : (e._view = i, e._start = null, e) }, tooltipPosition: function () { return { x: this._model.x, y: this._model.y } }, hasValue: function () { return ut.isNumber(this._model.x) && ut.isNumber(this._model.y) } }), gt.extend = ut.inherits; var pt = gt, mt = pt.extend({ chart: null, currentStep: 0, numSteps: 60, easing: "", render: null, onAnimationProgress: null, onAnimationComplete: null }), vt = mt; Object.defineProperty(mt.prototype, "animationObject", { get: function () { return this } }), Object.defineProperty(mt.prototype, "chartInstance", { get: function () { return this.chart }, set: function (t) { this.chart = t } }), st._set("global", { animation: { duration: 1e3, easing: "easeOutQuart", onProgress: ut.noop, onComplete: ut.noop } }); var bt = { animations: [], request: null, addAnimation: function (t, e, i, n) { var a, o, r = this.animations; for (e.chart = t, e.startTime = Date.now(), e.duration = i, n || (t.animating = !0), a = 0, o = r.length; a < o; ++a)if (r[a].chart === t) return void (r[a] = e); r.push(e), 1 === r.length && this.requestAnimationFrame() }, cancelAnimation: function (t) { var e = ut.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 = ut.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, i, n, a = this.animations, o = 0; o < a.length;)e = (t = a[o]).chart, i = t.numSteps, n = Math.floor((Date.now() - t.startTime) / t.duration * i) + 1, t.currentStep = Math.min(n, i), ut.callback(t.render, [e, t], e), ut.callback(t.onAnimationProgress, [t], e), t.currentStep >= i ? (ut.callback(t.onAnimationComplete, [t], e), e.animating = !1, a.splice(o, 1)) : ++o } }, xt = ut.options.resolve, yt = ["push", "pop", "shift", "splice", "unshift"]; function kt(t, e) { var i = t._chartjs; if (i) { var n = i.listeners, a = n.indexOf(e); -1 !== a && n.splice(a, 1), n.length > 0 || (yt.forEach(function (e) { delete t[e] }), delete t._chartjs) } } var wt = function (t, e) { this.initialize(t, e) }; ut.extend(wt.prototype, { datasetElementType: null, dataElementType: null, initialize: function (t, e) { this.chart = t, this.index = e, this.linkScales(), this.addElements() }, updateIndex: function (t) { this.index = t }, linkScales: function () { var t = this, e = t.getMeta(), i = t.getDataset(); null !== e.xAxisID && e.xAxisID in t.chart.scales || (e.xAxisID = i.xAxisID || t.chart.options.scales.xAxes[0].id), null !== e.yAxisID && e.yAxisID in t.chart.scales || (e.yAxisID = i.yAxisID || t.chart.options.scales.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 && kt(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, i = this.getMeta(), n = this.getDataset().data || [], a = i.data; for (t = 0, e = n.length; t < e; ++t)a[t] = a[t] || this.createMetaData(t); i.dataset = i.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, i = this, n = i.getDataset(), a = n.data || (n.data = []); i._data !== a && (i._data && kt(i._data, i), a && Object.isExtensible(a) && (e = i, (t = a)._chartjs ? t._chartjs.listeners.push(e) : (Object.defineProperty(t, "_chartjs", { configurable: !0, enumerable: !1, value: { listeners: [e] } }), yt.forEach(function (e) { var i = "onData" + e.charAt(0).toUpperCase() + e.slice(1), n = t[e]; Object.defineProperty(t, e, { configurable: !0, enumerable: !1, value: function () { var e = Array.prototype.slice.call(arguments), a = n.apply(this, e); return ut.each(t._chartjs.listeners, function (t) { "function" == typeof t[i] && t[i].apply(t, e) }), a } }) }))), i._data = a), i.resyncElements() }, update: ut.noop, transition: function (t) { for (var e = this.getMeta(), i = e.data || [], n = i.length, a = 0; a < n; ++a)i[a].transition(t); e.dataset && e.dataset.transition(t) }, draw: function () { var t = this.getMeta(), e = t.data || [], i = e.length, n = 0; for (t.dataset && t.dataset.draw(); n < i; ++n)e[n].draw() }, removeHoverStyle: function (t) { ut.merge(t._model, t.$previousStyle || {}), delete t.$previousStyle }, setHoverStyle: function (t) { var e = this.chart.data.datasets[t._datasetIndex], i = t._index, n = t.custom || {}, a = t._model, o = ut.getHoverColor; t.$previousStyle = { backgroundColor: a.backgroundColor, borderColor: a.borderColor, borderWidth: a.borderWidth }, a.backgroundColor = xt([n.hoverBackgroundColor, e.hoverBackgroundColor, o(a.backgroundColor)], void 0, i), a.borderColor = xt([n.hoverBorderColor, e.hoverBorderColor, o(a.borderColor)], void 0, i), a.borderWidth = xt([n.hoverBorderWidth, e.hoverBorderWidth, a.borderWidth], void 0, i) }, resyncElements: function () { var t = this.getMeta(), e = this.getDataset().data, i = t.data.length, n = e.length; n < i ? t.data.splice(n, i - n) : n > i && this.insertElements(i, n - i) }, insertElements: function (t, e) { for (var i = 0; i < e; ++i)this.addElementAndReset(t + i) }, 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) } }), wt.extend = ut.inherits; var Mt = wt; st._set("global", { elements: { arc: { backgroundColor: st.global.defaultColor, borderColor: "#fff", borderWidth: 2, borderAlign: "center" } } }); var _t = pt.extend({ 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 i = this._view; if (i) { for (var n = ut.getAngleFromPoint(i, { x: t, y: e }), a = n.angle, o = n.distance, r = i.startAngle, s = i.endAngle; s < r;)s += 2 * Math.PI; for (; a > s;)a -= 2 * Math.PI; for (; a < r;)a += 2 * Math.PI; var l = a >= r && a <= s, d = o >= i.innerRadius && o <= i.outerRadius; return l && d } return !1 }, getCenterPoint: function () { var t = this._view, e = (t.startAngle + t.endAngle) / 2, i = (t.innerRadius + t.outerRadius) / 2; return { x: t.x + Math.cos(e) * i, y: t.y + Math.sin(e) * i } }, 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, i = (t.outerRadius - t.innerRadius) / 2 + t.innerRadius; return { x: t.x + Math.cos(e) * i, y: t.y + Math.sin(e) * i } }, draw: function () { var t, e = this._chart.ctx, i = this._view, n = i.startAngle, a = i.endAngle, o = "inner" === i.borderAlign ? .33 : 0; e.save(), e.beginPath(), e.arc(i.x, i.y, Math.max(i.outerRadius - o, 0), n, a), e.arc(i.x, i.y, i.innerRadius, a, n, !0), e.closePath(), e.fillStyle = i.backgroundColor, e.fill(), i.borderWidth && ("inner" === i.borderAlign ? (e.beginPath(), t = o / i.outerRadius, e.arc(i.x, i.y, i.outerRadius, n - t, a + t), i.innerRadius > o ? (t = o / i.innerRadius, e.arc(i.x, i.y, i.innerRadius - o, a + t, n - t, !0)) : e.arc(i.x, i.y, o, a + Math.PI / 2, n - Math.PI / 2), e.closePath(), e.clip(), e.beginPath(), e.arc(i.x, i.y, i.outerRadius, n, a), e.arc(i.x, i.y, i.innerRadius, a, n, !0), e.closePath(), e.lineWidth = 2 * i.borderWidth, e.lineJoin = "round") : (e.lineWidth = i.borderWidth, e.lineJoin = "bevel"), e.strokeStyle = i.borderColor, e.stroke()), e.restore() } }), Ct = ut.valueOrDefault, St = st.global.defaultColor; st._set("global", { elements: { line: { tension: .4, backgroundColor: St, borderWidth: 3, borderColor: St, borderCapStyle: "butt", borderDash: [], borderDashOffset: 0, borderJoinStyle: "miter", capBezierPoints: !0, fill: !0 } } }); var Pt = pt.extend({ draw: function () { var t, e, i, n, a = this._view, o = this._chart.ctx, r = a.spanGaps, s = this._children.slice(), l = st.global, d = l.elements.line, u = -1; for (this._loop && s.length && s.push(s[0]), o.save(), o.lineCap = a.borderCapStyle || d.borderCapStyle, o.setLineDash && o.setLineDash(a.borderDash || d.borderDash), o.lineDashOffset = Ct(a.borderDashOffset, d.borderDashOffset), o.lineJoin = a.borderJoinStyle || d.borderJoinStyle, o.lineWidth = Ct(a.borderWidth, d.borderWidth), o.strokeStyle = a.borderColor || l.defaultColor, o.beginPath(), u = -1, t = 0; t < s.length; ++t)e = s[t], i = ut.previousItem(s, t), n = e._view, 0 === t ? n.skip || (o.moveTo(n.x, n.y), u = t) : (i = -1 === u ? i : s[u], n.skip || (u !== t - 1 && !r || -1 === u ? o.moveTo(n.x, n.y) : ut.canvas.lineTo(o, i._view, e._view), u = t)); o.stroke(), o.restore() } }), It = ut.valueOrDefault, At = st.global.defaultColor; function Dt(t) { var e = this._view; return !!e && Math.abs(t - e.x) < e.radius + e.hitRadius } st._set("global", { elements: { point: { radius: 3, pointStyle: "circle", backgroundColor: At, borderColor: At, borderWidth: 1, hitRadius: 1, hoverRadius: 4, hoverBorderWidth: 1 } } }); var Tt = pt.extend({ inRange: function (t, e) { var i = this._view; return !!i && Math.pow(t - i.x, 2) + Math.pow(e - i.y, 2) < Math.pow(i.hitRadius + i.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, i = this._chart.ctx, n = e.pointStyle, a = e.rotation, o = e.radius, r = e.x, s = e.y, l = st.global, d = l.defaultColor; e.skip || (void 0 === t || ut.canvas._isPointInArea(e, t)) && (i.strokeStyle = e.borderColor || d, i.lineWidth = It(e.borderWidth, l.elements.point.borderWidth), i.fillStyle = e.backgroundColor || d, ut.canvas.drawPoint(i, n, o, r, s, a)) } }), Ft = st.global.defaultColor; function Lt(t) { return t && void 0 !== t.width } function Rt(t) { var e, i, n, a, o; return Lt(t) ? (o = t.width / 2, e = t.x - o, i = t.x + o, n = Math.min(t.y, t.base), a = Math.max(t.y, t.base)) : (o = t.height / 2, e = Math.min(t.x, t.base), i = Math.max(t.x, t.base), n = t.y - o, a = t.y + o), { left: e, top: n, right: i, bottom: a } } function Ot(t, e, i) { return t === e ? i : t === i ? e : t } function zt(t, e, i) { var n, a, o, r, s = t.borderWidth, l = function (t) { var e = t.borderSkipped, i = {}; return e ? (t.horizontal ? t.base > t.x && (e = Ot(e, "left", "right")) : t.base < t.y && (e = Ot(e, "bottom", "top")), i[e] = !0, i) : i }(t); return ut.isObject(s) ? (n = +s.top || 0, a = +s.right || 0, o = +s.bottom || 0, r = +s.left || 0) : n = a = o = r = +s || 0, { t: l.top || n < 0 ? 0 : n > i ? i : n, r: l.right || a < 0 ? 0 : a > e ? e : a, b: l.bottom || o < 0 ? 0 : o > i ? i : o, l: l.left || r < 0 ? 0 : r > e ? e : r } } function Bt(t, e, i) { var n = null === e, a = null === i, o = !(!t || n && a) && Rt(t); return o && (n || e >= o.left && e <= o.right) && (a || i >= o.top && i <= o.bottom) } st._set("global", { elements: { rectangle: { backgroundColor: Ft, borderColor: Ft, borderSkipped: "bottom", borderWidth: 0 } } }); var Nt = pt.extend({ draw: function () { var t = this._chart.ctx, e = this._view, i = function (t) { var e = Rt(t), i = e.right - e.left, n = e.bottom - e.top, a = zt(t, i / 2, n / 2); return { outer: { x: e.left, y: e.top, w: i, h: n }, inner: { x: e.left + a.l, y: e.top + a.t, w: i - a.l - a.r, h: n - a.t - a.b } } }(e), n = i.outer, a = i.inner; t.fillStyle = e.backgroundColor, t.fillRect(n.x, n.y, n.w, n.h), n.w === a.w && n.h === a.h || (t.save(), t.beginPath(), t.rect(n.x, n.y, n.w, n.h), t.clip(), t.fillStyle = e.borderColor, t.rect(a.x, a.y, a.w, a.h), t.fill("evenodd"), t.restore()) }, height: function () { var t = this._view; return t.base - t.y }, inRange: function (t, e) { return Bt(this._view, t, e) }, inLabelRange: function (t, e) { var i = this._view; return Lt(i) ? Bt(i, t, null) : Bt(i, null, e) }, inXRange: function (t) { return Bt(this._view, t, null) }, inYRange: function (t) { return Bt(this._view, null, t) }, getCenterPoint: function () { var t, e, i = this._view; return Lt(i) ? (t = i.x, e = (i.y + i.base) / 2) : (t = (i.x + i.base) / 2, e = i.y), { x: t, y: e } }, getArea: function () { var t = this._view; return Lt(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 } } }), Wt = {}, Vt = _t, Et = Pt, Ht = Tt, jt = Nt; Wt.Arc = Vt, Wt.Line = Et, Wt.Point = Ht, Wt.Rectangle = jt; var qt = ut.options.resolve; st._set("bar", { hover: { mode: "label" }, scales: { xAxes: [{ type: "category", categoryPercentage: .8, barPercentage: .9, offset: !0, gridLines: { offsetGridLines: !0 } }], yAxes: [{ type: "linear" }] } }); var Yt = Mt.extend({ dataElementType: Wt.Rectangle, initialize: function () { var t; Mt.prototype.initialize.apply(this, arguments), (t = this.getMeta()).stack = this.getDataset().stack, t.bar = !0 }, update: function (t) { var e, i, n = this.getMeta().data; for (this._ruler = this.getRuler(), e = 0, i = n.length; e < i; ++e)this.updateElement(n[e], e, t) }, updateElement: function (t, e, i) { var n = this, a = n.getMeta(), o = n.getDataset(), r = n._resolveElementOptions(t, e); t._xScale = n.getScaleForId(a.xAxisID), t._yScale = n.getScaleForId(a.yAxisID), t._datasetIndex = n.index, t._index = e, t._model = { backgroundColor: r.backgroundColor, borderColor: r.borderColor, borderSkipped: r.borderSkipped, borderWidth: r.borderWidth, datasetLabel: o.label, label: n.chart.data.labels[e] }, n._updateElementGeometry(t, e, i), t.pivot() }, _updateElementGeometry: function (t, e, i) { var n = this, a = t._model, o = n._getValueScale(), r = o.getBasePixel(), s = o.isHorizontal(), l = n._ruler || n.getRuler(), d = n.calculateBarValuePixels(n.index, e), u = n.calculateBarIndexPixels(n.index, e, l); a.horizontal = s, a.base = i ? r : d.base, a.x = s ? i ? r : d.head : u.center, a.y = s ? u.center : i ? r : d.head, a.height = s ? u.size : void 0, a.width = s ? void 0 : u.size }, _getStacks: function (t) { var e, i, n = this.chart, a = this._getIndexScale().options.stacked, o = void 0 === t ? n.data.datasets.length : t + 1, r = []; for (e = 0; e < o; ++e)(i = n.getDatasetMeta(e)).bar && n.isDatasetVisible(e) && (!1 === a || !0 === a && -1 === r.indexOf(i.stack) || void 0 === a && (void 0 === i.stack || -1 === r.indexOf(i.stack))) && r.push(i.stack); return r }, getStackCount: function () { return this._getStacks().length }, getStackIndex: function (t, e) { var i = this._getStacks(t), n = void 0 !== e ? i.indexOf(e) : -1; return -1 === n ? i.length - 1 : n }, getRuler: function () { var t, e, i = this._getIndexScale(), n = this.getStackCount(), a = this.index, o = i.isHorizontal(), r = o ? i.left : i.top, s = r + (o ? i.width : i.height), l = []; for (t = 0, e = this.getMeta().data.length; t < e; ++t)l.push(i.getPixelForValue(null, t, a)); return { min: ut.isNullOrUndef(i.options.barThickness) ? function (t, e) { var i, n, a, o, r = t.isHorizontal() ? t.width : t.height, s = t.getTicks(); for (a = 1, o = e.length; a < o; ++a)r = Math.min(r, Math.abs(e[a] - e[a - 1])); for (a = 0, o = s.length; a < o; ++a)n = t.getPixelForTick(a), r = a > 0 ? Math.min(r, n - i) : r, i = n; return r }(i, l) : -1, pixels: l, start: r, end: s, stackCount: n, scale: i } }, calculateBarValuePixels: function (t, e) { var i, n, a, o, r, s, l = this.chart, d = this.getMeta(), u = this._getValueScale(), h = u.isHorizontal(), c = l.data.datasets, f = +u.getRightValue(c[t].data[e]), g = u.options.minBarLength, p = u.options.stacked, m = d.stack, v = 0; if (p || void 0 === p && void 0 !== m) for (i = 0; i < t; ++i)(n = l.getDatasetMeta(i)).bar && n.stack === m && n.controller._getValueScaleId() === u.id && l.isDatasetVisible(i) && (a = +u.getRightValue(c[i].data[e]), (f < 0 && a < 0 || f >= 0 && a > 0) && (v += a)); return o = u.getPixelForValue(v), s = (r = u.getPixelForValue(v + f)) - o, void 0 !== g && Math.abs(s) < g && (s = g, r = f >= 0 && !h || f < 0 && h ? o - g : o + g), { size: s, base: o, head: r, center: r + s / 2 } }, calculateBarIndexPixels: function (t, e, i) { var n = i.scale.options, a = "flex" === n.barThickness ? function (t, e, i) { var n, a = e.pixels, o = a[t], r = t > 0 ? a[t - 1] : null, s = t < a.length - 1 ? a[t + 1] : null, l = i.categoryPercentage; return null === r && (r = o - (null === s ? e.end - e.start : s - o)), null === s && (s = o + o - r), n = o - (o - Math.min(r, s)) / 2 * l, { chunk: Math.abs(s - r) / 2 * l / e.stackCount, ratio: i.barPercentage, start: n } }(e, i, n) : function (t, e, i) { var n, a, o = i.barThickness, r = e.stackCount, s = e.pixels[t]; return ut.isNullOrUndef(o) ? (n = e.min * i.categoryPercentage, a = i.barPercentage) : (n = o * r, a = 1), { chunk: n / r, ratio: a, start: s - n / 2 } }(e, i, n), o = this.getStackIndex(t, this.getMeta().stack), r = a.start + a.chunk * o + a.chunk / 2, s = Math.min(ut.valueOrDefault(n.maxBarThickness, 1 / 0), a.chunk * a.ratio); return { base: r - s / 2, head: r + s / 2, center: r, size: s } }, draw: function () { var t = this.chart, e = this._getValueScale(), i = this.getMeta().data, n = this.getDataset(), a = i.length, o = 0; for (ut.canvas.clipArea(t.ctx, t.chartArea); o < a; ++o)isNaN(e.getRightValue(n.data[o])) || i[o].draw(); ut.canvas.unclipArea(t.ctx) }, _resolveElementOptions: function (t, e) { var i, n, a, o = this.chart, r = o.data.datasets[this.index], s = t.custom || {}, l = o.options.elements.rectangle, d = {}, u = { chart: o, dataIndex: e, dataset: r, datasetIndex: this.index }, h = ["backgroundColor", "borderColor", "borderSkipped", "borderWidth"]; for (i = 0, n = h.length; i < n; ++i)d[a = h[i]] = qt([s[a], r[a], l[a]], u, e); return d } }), Ut = ut.valueOrDefault, Xt = ut.options.resolve; st._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 i = e.datasets[t.datasetIndex].label || "", n = e.datasets[t.datasetIndex].data[t.index]; return i + ": (" + t.xLabel + ", " + t.yLabel + ", " + n.r + ")" } } } }); var Kt = Mt.extend({ dataElementType: Wt.Point, update: function (t) { var e = this, i = e.getMeta().data; ut.each(i, function (i, n) { e.updateElement(i, n, t) }) }, updateElement: function (t, e, i) { var n = this, a = n.getMeta(), o = t.custom || {}, r = n.getScaleForId(a.xAxisID), s = n.getScaleForId(a.yAxisID), l = n._resolveElementOptions(t, e), d = n.getDataset().data[e], u = n.index, h = i ? r.getPixelForDecimal(.5) : r.getPixelForValue("object" == typeof d ? d : NaN, e, u), c = i ? s.getBasePixel() : s.getPixelForValue(d, e, u); t._xScale = r, 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: i ? 0 : l.radius, skip: o.skip || isNaN(h) || isNaN(c), x: h, y: c }, t.pivot() }, setHoverStyle: function (t) { var e = t._model, i = t._options, n = ut.getHoverColor; t.$previousStyle = { backgroundColor: e.backgroundColor, borderColor: e.borderColor, borderWidth: e.borderWidth, radius: e.radius }, e.backgroundColor = Ut(i.hoverBackgroundColor, n(i.backgroundColor)), e.borderColor = Ut(i.hoverBorderColor, n(i.borderColor)), e.borderWidth = Ut(i.hoverBorderWidth, i.borderWidth), e.radius = i.radius + i.hoverRadius }, _resolveElementOptions: function (t, e) { var i, n, a, o = this.chart, r = o.data.datasets[this.index], s = t.custom || {}, l = o.options.elements.point, d = r.data[e], u = {}, h = { chart: o, dataIndex: e, dataset: r, datasetIndex: this.index }, c = ["backgroundColor", "borderColor", "borderWidth", "hoverBackgroundColor", "hoverBorderColor", "hoverBorderWidth", "hoverRadius", "hitRadius", "pointStyle", "rotation"]; for (i = 0, n = c.length; i < n; ++i)u[a = c[i]] = Xt([s[a], r[a], l[a]], h, e); return u.radius = Xt([s.radius, d ? d.r : void 0, r.radius, l.radius], h, e), u } }), Gt = ut.options.resolve, Zt = ut.valueOrDefault; st._set("doughnut", { animation: { animateRotate: !0, animateScale: !1 }, hover: { mode: "single" }, legendCallback: function (t) { var e = []; e.push('<ul class="' + t.id + '-legend">'); var i = t.data, n = i.datasets, a = i.labels; if (n.length) for (var o = 0; o < n[0].data.length; ++o)e.push('<li><span style="background-color:' + n[0].backgroundColor[o] + '"></span>'), a[o] && e.push(a[o]), e.push("</li>"); return e.push("</ul>"), e.join("") }, legend: { labels: { generateLabels: function (t) { var e = t.data; return e.labels.length && e.datasets.length ? e.labels.map(function (i, n) { var a = t.getDatasetMeta(0), o = e.datasets[0], r = a.data[n], s = r && r.custom || {}, l = t.options.elements.arc; return { text: i, fillStyle: Gt([s.backgroundColor, o.backgroundColor, l.backgroundColor], void 0, n), strokeStyle: Gt([s.borderColor, o.borderColor, l.borderColor], void 0, n), lineWidth: Gt([s.borderWidth, o.borderWidth, l.borderWidth], void 0, n), hidden: isNaN(o.data[n]) || a.data[n].hidden, index: n } }) : [] } }, onClick: function (t, e) { var i, n, a, o = e.index, r = this.chart; for (i = 0, n = (r.data.datasets || []).length; i < n; ++i)(a = r.getDatasetMeta(i)).data[o] && (a.data[o].hidden = !a.data[o].hidden); r.update() } }, cutoutPercentage: 50, rotation: -.5 * Math.PI, circumference: 2 * Math.PI, tooltips: { callbacks: { title: function () { return "" }, label: function (t, e) { var i = e.labels[t.index], n = ": " + e.datasets[t.datasetIndex].data[t.index]; return ut.isArray(i) ? (i = i.slice())[0] += n : i += n, i } } } }); var $t = Mt.extend({ dataElementType: Wt.Arc, linkScales: ut.noop, getRingIndex: function (t) { for (var e = 0, i = 0; i < t; ++i)this.chart.isDatasetVisible(i) && ++e; return e }, update: function (t) { var e, i, n = this, a = n.chart, o = a.chartArea, r = a.options, s = o.right - o.left, l = o.bottom - o.top, d = Math.min(s, l), u = { x: 0, y: 0 }, h = n.getMeta(), c = h.data, f = r.cutoutPercentage, g = r.circumference, p = n._getRingWeight(n.index); if (g < 2 * Math.PI) { var m = r.rotation % (2 * Math.PI), v = (m += 2 * Math.PI * (m >= Math.PI ? -1 : m < -Math.PI ? 1 : 0)) + g, b = { x: Math.cos(m), y: Math.sin(m) }, x = { x: Math.cos(v), y: Math.sin(v) }, y = m <= 0 && v >= 0 || m <= 2 * Math.PI && 2 * Math.PI <= v, k = m <= .5 * Math.PI && .5 * Math.PI <= v || m <= 2.5 * Math.PI && 2.5 * Math.PI <= v, w = m <= -Math.PI && -Math.PI <= v || m <= Math.PI && Math.PI <= v, M = m <= .5 * -Math.PI && .5 * -Math.PI <= v || m <= 1.5 * Math.PI && 1.5 * Math.PI <= v, _ = f / 100, C = { x: w ? -1 : Math.min(b.x * (b.x < 0 ? 1 : _), x.x * (x.x < 0 ? 1 : _)), y: M ? -1 : Math.min(b.y * (b.y < 0 ? 1 : _), x.y * (x.y < 0 ? 1 : _)) }, S = { x: y ? 1 : Math.max(b.x * (b.x > 0 ? 1 : _), x.x * (x.x > 0 ? 1 : _)), y: k ? 1 : Math.max(b.y * (b.y > 0 ? 1 : _), x.y * (x.y > 0 ? 1 : _)) }, P = { width: .5 * (S.x - C.x), height: .5 * (S.y - C.y) }; d = Math.min(s / P.width, l / P.height), u = { x: -.5 * (S.x + C.x), y: -.5 * (S.y + C.y) } } for (e = 0, i = c.length; e < i; ++e)c[e]._options = n._resolveElementOptions(c[e], e); for (a.borderWidth = n.getMaxBorderWidth(), a.outerRadius = Math.max((d - a.borderWidth) / 2, 0), a.innerRadius = Math.max(f ? a.outerRadius / 100 * f : 0, 0), a.radiusLength = (a.outerRadius - a.innerRadius) / (n._getVisibleDatasetWeightTotal() || 1), a.offsetX = u.x * a.outerRadius, a.offsetY = u.y * a.outerRadius, h.total = n.calculateTotal(), n.outerRadius = a.outerRadius - a.radiusLength * n._getRingWeightOffset(n.index), n.innerRadius = Math.max(n.outerRadius - a.radiusLength * p, 0), e = 0, i = c.length; e < i; ++e)n.updateElement(c[e], e, t) }, updateElement: function (t, e, i) { var n = this, a = n.chart, o = a.chartArea, r = a.options, s = r.animation, l = (o.left + o.right) / 2, d = (o.top + o.bottom) / 2, u = r.rotation, h = r.rotation, c = n.getDataset(), f = i && s.animateRotate ? 0 : t.hidden ? 0 : n.calculateCircumference(c.data[e]) * (r.circumference / (2 * Math.PI)), g = i && s.animateScale ? 0 : n.innerRadius, p = i && s.animateScale ? 0 : n.outerRadius, m = t._options || {}; ut.extend(t, { _datasetIndex: n.index, _index: e, _model: { backgroundColor: m.backgroundColor, borderColor: m.borderColor, borderWidth: m.borderWidth, borderAlign: m.borderAlign, x: l + a.offsetX, y: d + a.offsetY, startAngle: u, endAngle: h, circumference: f, outerRadius: p, innerRadius: g, label: ut.valueAtIndexOrDefault(c.label, e, a.data.labels[e]) } }); var v = t._model; i && s.animateRotate || (v.startAngle = 0 === e ? r.rotation : n.getMeta().data[e - 1]._model.endAngle, v.endAngle = v.startAngle + v.circumference), t.pivot() }, calculateTotal: function () { var t, e = this.getDataset(), i = this.getMeta(), n = 0; return ut.each(i.data, function (i, a) { t = e.data[a], isNaN(t) || i.hidden || (n += Math.abs(t)) }), n }, calculateCircumference: function (t) { var e = this.getMeta().total; return e > 0 && !isNaN(t) ? 2 * Math.PI * (Math.abs(t) / e) : 0 }, getMaxBorderWidth: function (t) { var e, i, n, a, o, r, s, l, d = 0, u = this.chart; if (!t) for (e = 0, i = u.data.datasets.length; e < i; ++e)if (u.isDatasetVisible(e)) { t = (n = u.getDatasetMeta(e)).data, e !== this.index && (o = n.controller); break } if (!t) return 0; for (e = 0, i = t.length; e < i; ++e)a = t[e], "inner" !== (r = o ? o._resolveElementOptions(a, e) : a._options).borderAlign && (s = r.borderWidth, d = (l = r.hoverBorderWidth) > (d = s > d ? s : d) ? l : d); return d }, setHoverStyle: function (t) { var e = t._model, i = t._options, n = ut.getHoverColor; t.$previousStyle = { backgroundColor: e.backgroundColor, borderColor: e.borderColor, borderWidth: e.borderWidth }, e.backgroundColor = Zt(i.hoverBackgroundColor, n(i.backgroundColor)), e.borderColor = Zt(i.hoverBorderColor, n(i.borderColor)), e.borderWidth = Zt(i.hoverBorderWidth, i.borderWidth) }, _resolveElementOptions: function (t, e) { var i, n, a, o = this.chart, r = this.getDataset(), s = t.custom || {}, l = o.options.elements.arc, d = {}, u = { chart: o, dataIndex: e, dataset: r, datasetIndex: this.index }, h = ["backgroundColor", "borderColor", "borderWidth", "borderAlign", "hoverBackgroundColor", "hoverBorderColor", "hoverBorderWidth"]; for (i = 0, n = h.length; i < n; ++i)d[a = h[i]] = Gt([s[a], r[a], l[a]], u, e); return d }, _getRingWeightOffset: function (t) { for (var e = 0, i = 0; i < t; ++i)this.chart.isDatasetVisible(i) && (e += this._getRingWeight(i)); return e }, _getRingWeight: function (t) { return Math.max(Zt(this.chart.data.datasets[t].weight, 1), 0) }, _getVisibleDatasetWeightTotal: function () { return this._getRingWeightOffset(this.chart.data.datasets.length) } }); st._set("horizontalBar", { hover: { mode: "index", axis: "y" }, scales: { xAxes: [{ type: "linear", position: "bottom" }], yAxes: [{ type: "category", position: "left", categoryPercentage: .8, barPercentage: .9, offset: !0, gridLines: { offsetGridLines: !0 } }] }, elements: { rectangle: { borderSkipped: "left" } }, tooltips: { mode: "index", axis: "y" } }); var Jt = Yt.extend({ _getValueScaleId: function () { return this.getMeta().xAxisID }, _getIndexScaleId: function () { return this.getMeta().yAxisID } }), Qt = ut.valueOrDefault, te = ut.options.resolve, ee = ut.canvas._isPointInArea; function ie(t, e) { return Qt(t.showLine, e.showLines) } st._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 ne = Mt.extend({ datasetElementType: Wt.Line, dataElementType: Wt.Point, update: function (t) { var e, i, n = this, a = n.getMeta(), o = a.dataset, r = a.data || [], s = n.getScaleForId(a.yAxisID), l = n.getDataset(), d = ie(l, n.chart.options); for (d && (void 0 !== l.tension && void 0 === l.lineTension && (l.lineTension = l.tension), o._scale = s, o._datasetIndex = n.index, o._children = r, o._model = n._resolveLineOptions(o), o.pivot()), e = 0, i = r.length; e < i; ++e)n.updateElement(r[e], e, t); for (d && 0 !== o._model.tension && n.updateBezierControlPoints(), e = 0, i = r.length; e < i; ++e)r[e].pivot() }, updateElement: function (t, e, i) { var n, a, o = this, r = o.getMeta(), s = t.custom || {}, l = o.getDataset(), d = o.index, u = l.data[e], h = o.getScaleForId(r.yAxisID), c = o.getScaleForId(r.xAxisID), f = r.dataset._model, g = o._resolvePointOptions(t, e); n = c.getPixelForValue("object" == typeof u ? u : NaN, e, d), a = i ? h.getBasePixel() : o.calculatePointY(u, e, d), t._xScale = c, t._yScale = h, t._options = g, t._datasetIndex = d, t._index = e, t._model = { x: n, y: a, skip: s.skip || isNaN(n) || isNaN(a), radius: g.radius, pointStyle: g.pointStyle, rotation: g.rotation, backgroundColor: g.backgroundColor, borderColor: g.borderColor, borderWidth: g.borderWidth, tension: Qt(s.tension, f ? f.tension : 0), steppedLine: !!f && f.steppedLine, hitRadius: g.hitRadius } }, _resolvePointOptions: function (t, e) { var i, n, a, o = this.chart, r = o.data.datasets[this.index], s = t.custom || {}, l = o.options.elements.point, d = {}, u = { chart: o, dataIndex: e, dataset: r, datasetIndex: this.index }, h = { backgroundColor: "pointBackgroundColor", borderColor: "pointBorderColor", borderWidth: "pointBorderWidth", hitRadius: "pointHitRadius", hoverBackgroundColor: "pointHoverBackgroundColor", hoverBorderColor: "pointHoverBorderColor", hoverBorderWidth: "pointHoverBorderWidth", hoverRadius: "pointHoverRadius", pointStyle: "pointStyle", radius: "pointRadius", rotation: "pointRotation" }, c = Object.keys(h); for (i = 0, n = c.length; i < n; ++i)d[a = c[i]] = te([s[a], r[h[a]], r[a], l[a]], u, e); return d }, _resolveLineOptions: function (t) { var e, i, n, a = this.chart, o = a.data.datasets[this.index], r = t.custom || {}, s = a.options, l = s.elements.line, d = {}, u = ["backgroundColor", "borderWidth", "borderColor", "borderCapStyle", "borderDash", "borderDashOffset", "borderJoinStyle", "fill", "cubicInterpolationMode"]; for (e = 0, i = u.length; e < i; ++e)d[n = u[e]] = te([r[n], o[n], l[n]]); return d.spanGaps = Qt(o.spanGaps, s.spanGaps), d.tension = Qt(o.lineTension, l.tension), d.steppedLine = te([r.steppedLine, o.steppedLine, l.stepped]), d }, calculatePointY: function (t, e, i) { var n, a, o, r = this.chart, s = this.getMeta(), l = this.getScaleForId(s.yAxisID), d = 0, u = 0; if (l.options.stacked) { for (n = 0; n < i; n++)if (a = r.data.datasets[n], "line" === (o = r.getDatasetMeta(n)).type && o.yAxisID === l.id && r.isDatasetVisible(n)) { var h = Number(l.getRightValue(a.data[e])); h < 0 ? u += h || 0 : d += h || 0 } var c = Number(l.getRightValue(t)); return c < 0 ? l.getPixelForValue(u + c) : l.getPixelForValue(d + c) } return l.getPixelForValue(t) }, updateBezierControlPoints: function () { var t, e, i, n, a = this.chart, o = this.getMeta(), r = o.dataset._model, s = a.chartArea, l = o.data || []; function d(t, e, i) { return Math.max(Math.min(t, i), e) } if (r.spanGaps && (l = l.filter(function (t) { return !t._model.skip })), "monotone" === r.cubicInterpolationMode) ut.splineCurveMonotone(l); else for (t = 0, e = l.length; t < e; ++t)i = l[t]._model, n = ut.splineCurve(ut.previousItem(l, t)._model, i, ut.nextItem(l, t)._model, r.tension), i.controlPointPreviousX = n.previous.x, i.controlPointPreviousY = n.previous.y, i.controlPointNextX = n.next.x, i.controlPointNextY = n.next.y; if (a.options.elements.line.capBezierPoints) for (t = 0, e = l.length; t < e; ++t)i = l[t]._model, ee(i, s) && (t > 0 && ee(l[t - 1]._model, s) && (i.controlPointPreviousX = d(i.controlPointPreviousX, s.left, s.right), i.controlPointPreviousY = d(i.controlPointPreviousY, s.top, s.bottom)), t < l.length - 1 && ee(l[t + 1]._model, s) && (i.controlPointNextX = d(i.controlPointNextX, s.left, s.right), i.controlPointNextY = d(i.controlPointNextY, s.top, s.bottom))) }, draw: function () { var t, e = this.chart, i = this.getMeta(), n = i.data || [], a = e.chartArea, o = n.length, r = 0; for (ie(this.getDataset(), e.options) && (t = (i.dataset._model.borderWidth || 0) / 2, ut.canvas.clipArea(e.ctx, { left: a.left, right: a.right, top: a.top - t, bottom: a.bottom + t }), i.dataset.draw(), ut.canvas.unclipArea(e.ctx)); r < o; ++r)n[r].draw(a) }, setHoverStyle: function (t) { var e = t._model, i = t._options, n = ut.getHoverColor; t.$previousStyle = { backgroundColor: e.backgroundColor, borderColor: e.borderColor, borderWidth: e.borderWidth, radius: e.radius }, e.backgroundColor = Qt(i.hoverBackgroundColor, n(i.backgroundColor)), e.borderColor = Qt(i.hoverBorderColor, n(i.borderColor)), e.borderWidth = Qt(i.hoverBorderWidth, i.borderWidth), e.radius = Qt(i.hoverRadius, i.radius) } }), ae = ut.options.resolve; st._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 = []; e.push('<ul class="' + t.id + '-legend">'); var i = t.data, n = i.datasets, a = i.labels; if (n.length) for (var o = 0; o < n[0].data.length; ++o)e.push('<li><span style="background-color:' + n[0].backgroundColor[o] + '"></span>'), a[o] && e.push(a[o]), e.push("</li>"); return e.push("</ul>"), e.join("") }, legend: { labels: { generateLabels: function (t) { var e = t.data; return e.labels.length && e.datasets.length ? e.labels.map(function (i, n) { var a = t.getDatasetMeta(0), o = e.datasets[0], r = a.data[n].custom || {}, s = t.options.elements.arc; return { text: i, fillStyle: ae([r.backgroundColor, o.backgroundColor, s.backgroundColor], void 0, n), strokeStyle: ae([r.borderColor, o.borderColor, s.borderColor], void 0, n), lineWidth: ae([r.borderWidth, o.borderWidth, s.borderWidth], void 0, n), hidden: isNaN(o.data[n]) || a.data[n].hidden, index: n } }) : [] } }, onClick: function (t, e) { var i, n, a, o = e.index, r = this.chart; for (i = 0, n = (r.data.datasets || []).length; i < n; ++i)(a = r.getDatasetMeta(i)).data[o].hidden = !a.data[o].hidden; r.update() } }, tooltips: { callbacks: { title: function () { return "" }, label: function (t, e) { return e.labels[t.index] + ": " + t.yLabel } } } }); var oe = Mt.extend({ dataElementType: Wt.Arc, linkScales: ut.noop, update: function (t) { var e, i, n, a = this, o = a.getDataset(), r = a.getMeta(), s = a.chart.options.startAngle || 0, l = a._starts = [], d = a._angles = [], u = r.data; for (a._updateRadius(), r.count = a.countVisibleElements(), e = 0, i = o.data.length; e < i; e++)l[e] = s, n = a._computeAngle(e), d[e] = n, s += n; for (e = 0, i = u.length; e < i; ++e)u[e]._options = a._resolveElementOptions(u[e], e), a.updateElement(u[e], e, t) }, _updateRadius: function () { var t = this, e = t.chart, i = e.chartArea, n = e.options, a = Math.min(i.right - i.left, i.bottom - i.top); e.outerRadius = Math.max(a / 2, 0), e.innerRadius = Math.max(n.cutoutPercentage ? e.outerRadius / 100 * n.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, i) { var n = this, a = n.chart, o = n.getDataset(), r = a.options, s = r.animation, l = a.scale, d = a.data.labels, u = l.xCenter, h = l.yCenter, c = r.startAngle, f = t.hidden ? 0 : l.getDistanceFromCenterForValue(o.data[e]), g = n._starts[e], p = g + (t.hidden ? 0 : n._angles[e]), m = s.animateScale ? 0 : l.getDistanceFromCenterForValue(o.data[e]), v = t._options || {}; ut.extend(t, { _datasetIndex: n.index, _index: e, _scale: l, _model: { backgroundColor: v.backgroundColor, borderColor: v.borderColor, borderWidth: v.borderWidth, borderAlign: v.borderAlign, x: u, y: h, innerRadius: 0, outerRadius: i ? m : f, startAngle: i && s.animateRotate ? c : g, endAngle: i && s.animateRotate ? c : p, label: ut.valueAtIndexOrDefault(d, e, d[e]) } }), t.pivot() }, countVisibleElements: function () { var t = this.getDataset(), e = this.getMeta(), i = 0; return ut.each(e.data, function (e, n) { isNaN(t.data[n]) || e.hidden || i++ }), i }, setHoverStyle: function (t) { var e = t._model, i = t._options, n = ut.getHoverColor, a = ut.valueOrDefault; t.$previousStyle = { backgroundColor: e.backgroundColor, borderColor: e.borderColor, borderWidth: e.borderWidth }, e.backgroundColor = a(i.hoverBackgroundColor, n(i.backgroundColor)), e.borderColor = a(i.hoverBorderColor, n(i.borderColor)), e.borderWidth = a(i.hoverBorderWidth, i.borderWidth) }, _resolveElementOptions: function (t, e) { var i, n, a, o = this.chart, r = this.getDataset(), s = t.custom || {}, l = o.options.elements.arc, d = {}, u = { chart: o, dataIndex: e, dataset: r, datasetIndex: this.index }, h = ["backgroundColor", "borderColor", "borderWidth", "borderAlign", "hoverBackgroundColor", "hoverBorderColor", "hoverBorderWidth"]; for (i = 0, n = h.length; i < n; ++i)d[a = h[i]] = ae([s[a], r[a], l[a]], u, e); return d }, _computeAngle: function (t) { var e = this, i = this.getMeta().count, n = e.getDataset(), a = e.getMeta(); if (isNaN(n.data[t]) || a.data[t].hidden) return 0; var o = { chart: e.chart, dataIndex: t, dataset: n, datasetIndex: e.index }; return ae([e.chart.options.elements.arc.angle, 2 * Math.PI / i], o, t) } }); st._set("pie", ut.clone(st.doughnut)), st._set("pie", { cutoutPercentage: 0 }); var re = $t, se = ut.valueOrDefault, le = ut.options.resolve; st._set("radar", { scale: { type: "radialLinear" }, elements: { line: { tension: 0 } } }); var de = Mt.extend({ datasetElementType: Wt.Line, dataElementType: Wt.Point, linkScales: ut.noop, update: function (t) { var e, i, n = this, a = n.getMeta(), o = a.dataset, r = a.data || [], s = n.chart.scale, l = n.getDataset(); for (void 0 !== l.tension && void 0 === l.lineTension && (l.lineTension = l.tension), o._scale = s, o._datasetIndex = n.index, o._children = r, o._loop = !0, o._model = n._resolveLineOptions(o), o.pivot(), e = 0, i = r.length; e < i; ++e)n.updateElement(r[e], e, t); for (n.updateBezierControlPoints(), e = 0, i = r.length; e < i; ++e)r[e].pivot() }, updateElement: function (t, e, i) { var n = this, a = t.custom || {}, o = n.getDataset(), r = n.chart.scale, s = r.getPointPositionForValue(e, o.data[e]), l = n._resolvePointOptions(t, e), d = n.getMeta().dataset._model, u = i ? r.xCenter : s.x, h = i ? r.yCenter : s.y; t._scale = r, t._options = l, t._datasetIndex = n.index, t._index = e, t._model = { x: u, y: h, skip: a.skip || isNaN(u) || isNaN(h), radius: l.radius, pointStyle: l.pointStyle, rotation: l.rotation, backgroundColor: l.backgroundColor, borderColor: l.borderColor, borderWidth: l.borderWidth, tension: se(a.tension, d ? d.tension : 0), hitRadius: l.hitRadius } }, _resolvePointOptions: function (t, e) { var i, n, a, o = this.chart, r = o.data.datasets[this.index], s = t.custom || {}, l = o.options.elements.point, d = {}, u = { chart: o, dataIndex: e, dataset: r, datasetIndex: this.index }, h = { backgroundColor: "pointBackgroundColor", borderColor: "pointBorderColor", borderWidth: "pointBorderWidth", hitRadius: "pointHitRadius", hoverBackgroundColor: "pointHoverBackgroundColor", hoverBorderColor: "pointHoverBorderColor", hoverBorderWidth: "pointHoverBorderWidth", hoverRadius: "pointHoverRadius", pointStyle: "pointStyle", radius: "pointRadius", rotation: "pointRotation" }, c = Object.keys(h); for (i = 0, n = c.length; i < n; ++i)d[a = c[i]] = le([s[a], r[h[a]], r[a], l[a]], u, e); return d }, _resolveLineOptions: function (t) { var e, i, n, a = this.chart, o = a.data.datasets[this.index], r = t.custom || {}, s = a.options.elements.line, l = {}, d = ["backgroundColor", "borderWidth", "borderColor", "borderCapStyle", "borderDash", "borderDashOffset", "borderJoinStyle", "fill"]; for (e = 0, i = d.length; e < i; ++e)l[n = d[e]] = le([r[n], o[n], s[n]]); return l.tension = se(o.lineTension, s.tension), l }, updateBezierControlPoints: function () { var t, e, i, n, a = this.getMeta(), o = this.chart.chartArea, r = a.data || []; function s(t, e, i) { return Math.max(Math.min(t, i), e) } for (t = 0, e = r.length; t < e; ++t)i = r[t]._model, n = ut.splineCurve(ut.previousItem(r, t, !0)._model, i, ut.nextItem(r, t, !0)._model, i.tension), i.controlPointPreviousX = s(n.previous.x, o.left, o.right), i.controlPointPreviousY = s(n.previous.y, o.top, o.bottom), i.controlPointNextX = s(n.next.x, o.left, o.right), i.controlPointNextY = s(n.next.y, o.top, o.bottom) }, setHoverStyle: function (t) { var e = t._model, i = t._options, n = ut.getHoverColor; t.$previousStyle = { backgroundColor: e.backgroundColor, borderColor: e.borderColor, borderWidth: e.borderWidth, radius: e.radius }, e.backgroundColor = se(i.hoverBackgroundColor, n(i.backgroundColor)), e.borderColor = se(i.hoverBorderColor, n(i.borderColor)), e.borderWidth = se(i.hoverBorderWidth, i.borderWidth), e.radius = se(i.hoverRadius, i.radius) } }); st._set("scatter", { hover: { mode: "single" }, scales: { xAxes: [{ id: "x-axis-1", type: "linear", position: "bottom" }], yAxes: [{ id: "y-axis-1", type: "linear", position: "left" }] }, showLines: !1, tooltips: { callbacks: { title: function () { return "" }, label: function (t) { return "(" + t.xLabel + ", " + t.yLabel + ")" } } } }); var ue = { bar: Yt, bubble: Kt, doughnut: $t, horizontalBar: Jt, line: ne, polarArea: oe, pie: re, radar: de, scatter: ne }; function he(t, e) { return t.native ? { x: t.x, y: t.y } : ut.getRelativePosition(t, e) } function ce(t, e) { var i, n, a, o, r; for (n = 0, o = t.data.datasets.length; n < o; ++n)if (t.isDatasetVisible(n)) for (a = 0, r = (i = t.getDatasetMeta(n)).data.length; a < r; ++a) { var s = i.data[a]; s._view.skip || e(s) } } function fe(t, e) { var i = []; return ce(t, function (t) { t.inRange(e.x, e.y) && i.push(t) }), i } function ge(t, e, i, n) { var a = Number.POSITIVE_INFINITY, o = []; return ce(t, function (t) { if (!i || t.inRange(e.x, e.y)) { var r = t.getCenterPoint(), s = n(e, r); s < a ? (o = [t], a = s) : s === a && o.push(t) } }), o } function pe(t) { var e = -1 !== t.indexOf("x"), i = -1 !== t.indexOf("y"); return function (t, n) { var a = e ? Math.abs(t.x - n.x) : 0, o = i ? Math.abs(t.y - n.y) : 0; return Math.sqrt(Math.pow(a, 2) + Math.pow(o, 2)) } } function me(t, e, i) { var n = he(e, t); i.axis = i.axis || "x"; var a = pe(i.axis), o = i.intersect ? fe(t, n) : ge(t, n, !1, a), r = []; return o.length ? (t.data.datasets.forEach(function (e, i) { if (t.isDatasetVisible(i)) { var n = t.getDatasetMeta(i).data[o[0]._index]; n && !n._view.skip && r.push(n) } }), r) : [] } var ve = { modes: { single: function (t, e) { var i = he(e, t), n = []; return ce(t, function (t) { if (t.inRange(i.x, i.y)) return n.push(t), n }), n.slice(0, 1) }, label: me, index: me, dataset: function (t, e, i) { var n = he(e, t); i.axis = i.axis || "xy"; var a = pe(i.axis), o = i.intersect ? fe(t, n) : ge(t, n, !1, a); return o.length > 0 && (o = t.getDatasetMeta(o[0]._datasetIndex).data), o }, "x-axis": function (t, e) { return me(t, e, { intersect: !1 }) }, point: function (t, e) { return fe(t, he(e, t)) }, nearest: function (t, e, i) { var n = he(e, t); i.axis = i.axis || "xy"; var a = pe(i.axis); return ge(t, n, i.intersect, a) }, x: function (t, e, i) { var n = he(e, t), a = [], o = !1; return ce(t, function (t) { t.inXRange(n.x) && a.push(t), t.inRange(n.x, n.y) && (o = !0) }), i.intersect && !o && (a = []), a }, y: function (t, e, i) { var n = he(e, t), a = [], o = !1; return ce(t, function (t) { t.inYRange(n.y) && a.push(t), t.inRange(n.x, n.y) && (o = !0) }), i.intersect && !o && (a = []), a } } }; function be(t, e) { return ut.where(t, function (t) { return t.position === e }) } function xe(t, e) { t.forEach(function (t, e) { return t._tmpIndex_ = e, t }), t.sort(function (t, i) { var n = e ? i : t, a = e ? t : i; return n.weight === a.weight ? n._tmpIndex_ - a._tmpIndex_ : n.weight - a.weight }), t.forEach(function (t) { delete t._tmpIndex_ }) } function ye(t, e) { ut.each(t, function (t) { e[t.position] += t.isHorizontal() ? t.height : t.width }) } st._set("global", { layout: { padding: { top: 0, right: 0, bottom: 0, left: 0 } } }); var ke = { defaults: {}, addBox: function (t, e) { t.boxes || (t.boxes = []), e.fullWidth = e.fullWidth || !1, e.position = e.position || "top", e.weight = e.weight || 0, t.boxes.push(e) }, removeBox: function (t, e) { var i = t.boxes ? t.boxes.indexOf(e) : -1; -1 !== i && t.boxes.splice(i, 1) }, configure: function (t, e, i) { for (var n, a = ["fullWidth", "position", "weight"], o = a.length, r = 0; r < o; ++r)n = a[r], i.hasOwnProperty(n) && (e[n] = i[n]) }, update: function (t, e, i) { if (t) { var n = t.options.layout || {}, a = ut.options.toPadding(n.padding), o = a.left, r = a.right, s = a.top, l = a.bottom, d = be(t.boxes, "left"), u = be(t.boxes, "right"), h = be(t.boxes, "top"), c = be(t.boxes, "bottom"), f = be(t.boxes, "chartArea"); xe(d, !0), xe(u, !1), xe(h, !0), xe(c, !1); var g, p = d.concat(u), m = h.concat(c), v = p.concat(m), b = e - o - r, x = i - s - l, y = (e - b / 2) / p.length, k = b, w = x, M = { top: s, left: o, bottom: l, right: r }, _ = []; ut.each(v, function (t) { var e, i = t.isHorizontal(); i ? (e = t.update(t.fullWidth ? b : k, x / 2), w -= e.height) : (e = t.update(y, w), k -= e.width), _.push({ horizontal: i, width: e.width, box: t }) }), g = function (t) { var e = 0, i = 0, n = 0, a = 0; return ut.each(t, function (t) { if (t.getPadding) { var o = t.getPadding(); e = Math.max(e, o.top), i = Math.max(i, o.left), n = Math.max(n, o.bottom), a = Math.max(a, o.right) } }), { top: e, left: i, bottom: n, right: a } }(v), ut.each(p, T), ye(p, M), ut.each(m, T), ye(m, M), ut.each(p, function (t) { var e = ut.findNextWhere(_, function (e) { return e.box === t }), i = { left: 0, right: 0, top: M.top, bottom: M.bottom }; e && t.update(e.width, w, i) }), ye(v, M = { top: s, left: o, bottom: l, right: r }); var C = Math.max(g.left - M.left, 0); M.left += C, M.right += Math.max(g.right - M.right, 0); var S = Math.max(g.top - M.top, 0); M.top += S, M.bottom += Math.max(g.bottom - M.bottom, 0); var P = i - M.top - M.bottom, I = e - M.left - M.right; I === k && P === w || (ut.each(p, function (t) { t.height = P }), ut.each(m, function (t) { t.fullWidth || (t.width = I) }), w = P, k = I); var A = o + C, D = s + S; ut.each(d.concat(h), F), A += k, D += w, ut.each(u, F), ut.each(c, F), t.chartArea = { left: M.left, top: M.top, right: M.left + k, bottom: M.top + w }, ut.each(f, function (e) { e.left = t.chartArea.left, e.top = t.chartArea.top, e.right = t.chartArea.right, e.bottom = t.chartArea.bottom, e.update(k, w) }) } function T(t) { var e = ut.findNextWhere(_, function (e) { return e.box === t }); if (e) if (e.horizontal) { var i = { left: Math.max(M.left, g.left), right: Math.max(M.right, g.right), top: 0, bottom: 0 }; t.update(t.fullWidth ? b : k, x / 2, i) } else t.update(e.width, w) } function F(t) { t.isHorizontal() ? (t.left = t.fullWidth ? o : M.left, t.right = t.fullWidth ? e - r : M.left + k, t.top = D, t.bottom = D + t.height, D = t.bottom) : (t.left = A, t.right = A + t.width, t.top = M.top, t.bottom = M.top + w, A = t.right) } } }; var we, Me = (we = Object.freeze({ 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}" })) && we.default || we, _e = "$chartjs", Ce = "chartjs-size-monitor", Se = "chartjs-render-monitor", Pe = "chartjs-render-animation", Ie = ["animationstart", "webkitAnimationStart"], Ae = { touchstart: "mousedown", touchmove: "mousemove", touchend: "mouseup", pointerenter: "mouseenter", pointerdown: "mousedown", pointermove: "mousemove", pointerup: "mouseup", pointerleave: "mouseout", pointerout: "mouseout" }; function De(t, e) { var i = ut.getStyle(t, e), n = i && i.match(/^(\d+)(\.\d+)?px$/); return n ? Number(n[1]) : void 0 } var Te = !!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 Fe(t, e, i) { t.addEventListener(e, i, Te) } function Le(t, e, i) { t.removeEventListener(e, i, Te) } function Re(t, e, i, n, a) { return { type: t, chart: e, native: a || null, x: void 0 !== i ? i : null, y: void 0 !== n ? n : null } } function Oe(t) { var e = document.createElement("div"); return e.className = t || "", e } function ze(t, e, i) { var n, a, o, r, s = t[_e] || (t[_e] = {}), l = s.resizer = function (t) { var e = Oe(Ce), i = Oe(Ce + "-expand"), n = Oe(Ce + "-shrink"); i.appendChild(Oe()), n.appendChild(Oe()), e.appendChild(i), e.appendChild(n), e._reset = function () { i.scrollLeft = 1e6, i.scrollTop = 1e6, n.scrollLeft = 1e6, n.scrollTop = 1e6 }; var a = function () { e._reset(), t() }; return Fe(i, "scroll", a.bind(i, "expand")), Fe(n, "scroll", a.bind(n, "shrink")), e }((n = function () { if (s.resizer) { var n = i.options.maintainAspectRatio && t.parentNode, a = n ? n.clientWidth : 0; e(Re("resize", i)), n && n.clientWidth < a && i.canvas && e(Re("resize", i)) } }, o = !1, r = [], function () { r = Array.prototype.slice.call(arguments), a = a || this, o || (o = !0, ut.requestAnimFrame.call(window, function () { o = !1, n.apply(a, r) })) })); !function (t, e) { var i = t[_e] || (t[_e] = {}), n = i.renderProxy = function (t) { t.animationName === Pe && e() }; ut.each(Ie, function (e) { Fe(t, e, n) }), i.reflow = !!t.offsetParent, t.classList.add(Se) }(t, function () { if (s.resizer) { var e = t.parentNode; e && e !== l.parentNode && e.insertBefore(l, e.firstChild), l._reset() } }) } function Be(t) { var e = t[_e] || {}, i = e.resizer; delete e.resizer, function (t) { var e = t[_e] || {}, i = e.renderProxy; i && (ut.each(Ie, function (e) { Le(t, e, i) }), delete e.renderProxy), t.classList.remove(Se) }(t), i && i.parentNode && i.parentNode.removeChild(i) } var Ne = { disableCSSInjection: !1, _enabled: "undefined" != typeof window && "undefined" != typeof document, _ensureLoaded: function () { var t, e, i; this._loaded || (this._loaded = !0, this.disableCSSInjection || (e = Me, i = (t = this)._style || document.createElement("style"), t._style || (t._style = i, e = "/* Chart.js */\n" + e, i.setAttribute("type", "text/css"), document.getElementsByTagName("head")[0].appendChild(i)), i.appendChild(document.createTextNode(e)))) }, acquireContext: function (t, e) { "string" == typeof t ? t = document.getElementById(t) : t.length && (t = t[0]), t && t.canvas && (t = t.canvas); var i = t && t.getContext && t.getContext("2d"); return this._ensureLoaded(), i && i.canvas === t ? (function (t, e) { var i = t.style, n = t.getAttribute("height"), a = t.getAttribute("width"); if (t[_e] = { initial: { height: n, width: a, style: { display: i.display, height: i.height, width: i.width } } }, i.display = i.display || "block", null === a || "" === a) { var o = De(t, "width"); void 0 !== o && (t.width = o) } if (null === n || "" === n) if ("" === t.style.height) t.height = t.width / (e.options.aspectRatio || 2); else { var r = De(t, "height"); void 0 !== o && (t.height = r) } }(t, e), i) : null }, releaseContext: function (t) { var e = t.canvas; if (e[_e]) { var i = e[_e].initial;["height", "width"].forEach(function (t) { var n = i[t]; ut.isNullOrUndef(n) ? e.removeAttribute(t) : e.setAttribute(t, n) }), ut.each(i.style || {}, function (t, i) { e.style[i] = t }), e.width = e.width, delete e[_e] } }, addEventListener: function (t, e, i) { var n = t.canvas; if ("resize" !== e) { var a = i[_e] || (i[_e] = {}); Fe(n, e, (a.proxies || (a.proxies = {}))[t.id + "_" + e] = function (e) { i(function (t, e) { var i = Ae[t.type] || t.type, n = ut.getRelativePosition(t, e); return Re(i, e, n.x, n.y, t) }(e, t)) }) } else ze(n, i, t) }, removeEventListener: function (t, e, i) { var n = t.canvas; if ("resize" !== e) { var a = ((i[_e] || {}).proxies || {})[t.id + "_" + e]; a && Le(n, e, a) } else Be(n) } }; ut.addEvent = Fe, ut.removeEvent = Le; var We = Ne._enabled ? Ne : { acquireContext: function (t) { return t && t.canvas && (t = t.canvas), t && t.getContext("2d") || null } }, Ve = ut.extend({ initialize: function () { }, acquireContext: function () { }, releaseContext: function () { }, addEventListener: function () { }, removeEventListener: function () { } }, We); st._set("global", { plugins: {} }); var Ee = { _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 i = e.indexOf(t); -1 !== i && e.splice(i, 1) }), this._cacheId++ }, clear: function () { this._plugins = [], this._cacheId++ }, count: function () { return this._plugins.length }, getAll: function () { return this._plugins }, notify: function (t, e, i) { var n, a, o, r, s, l = this.descriptors(t), d = l.length; for (n = 0; n < d; ++n)if ("function" == typeof (s = (o = (a = l[n]).plugin)[e]) && ((r = [t].concat(i || [])).push(a.options), !1 === s.apply(o, r))) return !1; return !0 }, descriptors: function (t) { var e = t.$plugins || (t.$plugins = {}); if (e.id === this._cacheId) return e.descriptors; var i = [], n = [], a = t && t.config || {}, o = a.options && a.options.plugins || {}; return this._plugins.concat(a.plugins || []).forEach(function (t) { if (-1 === i.indexOf(t)) { var e = t.id, a = o[e]; !1 !== a && (!0 === a && (a = ut.clone(st.global.plugins[e])), i.push(t), n.push({ plugin: t, options: a || {} })) } }), e.descriptors = n, e.id = this._cacheId, n }, _invalidate: function (t) { delete t.$plugins } }, He = { constructors: {}, defaults: {}, registerScaleType: function (t, e, i) { this.constructors[t] = e, this.defaults[t] = ut.clone(i) }, getScaleConstructor: function (t) { return this.constructors.hasOwnProperty(t) ? this.constructors[t] : void 0 }, getScaleDefaults: function (t) { return this.defaults.hasOwnProperty(t) ? ut.merge({}, [st.scale, this.defaults[t]]) : {} }, updateScaleDefaults: function (t, e) { this.defaults.hasOwnProperty(t) && (this.defaults[t] = ut.extend(this.defaults[t], e)) }, addScalesToLayout: function (t) { ut.each(t.scales, function (e) { e.fullWidth = e.options.fullWidth, e.position = e.options.position, e.weight = e.options.weight, ke.addBox(t, e) }) } }, je = ut.valueOrDefault; st._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: ut.noop, title: function (t, e) { var i = "", n = e.labels, a = n ? n.length : 0; if (t.length > 0) { var o = t[0]; o.label ? i = o.label : o.xLabel ? i = o.xLabel : a > 0 && o.index < a && (i = n[o.index]) } return i }, afterTitle: ut.noop, beforeBody: ut.noop, beforeLabel: ut.noop, label: function (t, e) { var i = e.datasets[t.datasetIndex].label || ""; return i && (i += ": "), ut.isNullOrUndef(t.value) ? i += t.yLabel : i += t.value, i }, labelColor: function (t, e) { var i = e.getDatasetMeta(t.datasetIndex).data[t.index]._view; return { borderColor: i.borderColor, backgroundColor: i.backgroundColor } }, labelTextColor: function () { return this._options.bodyFontColor }, afterLabel: ut.noop, afterBody: ut.noop, beforeFooter: ut.noop, footer: ut.noop, afterFooter: ut.noop } } }); var qe = { average: function (t) { if (!t.length) return !1; var e, i, n = 0, a = 0, o = 0; for (e = 0, i = t.length; e < i; ++e) { var r = t[e]; if (r && r.hasValue()) { var s = r.tooltipPosition(); n += s.x, a += s.y, ++o } } return { x: n / o, y: a / o } }, nearest: function (t, e) { var i, n, a, o = e.x, r = e.y, s = Number.POSITIVE_INFINITY; for (i = 0, n = t.length; i < n; ++i) { var l = t[i]; if (l && l.hasValue()) { var d = l.getCenterPoint(), u = ut.distanceBetweenPoints(e, d); u < s && (s = u, a = l) } } if (a) { var h = a.tooltipPosition(); o = h.x, r = h.y } return { x: o, y: r } } }; function Ye(t, e) { return e && (ut.isArray(e) ? Array.prototype.push.apply(t, e) : t.push(e)), t } function Ue(t) { return ("string" == typeof t || t instanceof String) && t.indexOf("\n") > -1 ? t.split("\n") : t } function Xe(t) { var e = st.global; return { xPadding: t.xPadding, yPadding: t.yPadding, xAlign: t.xAlign, yAlign: t.yAlign, bodyFontColor: t.bodyFontColor, _bodyFontFamily: je(t.bodyFontFamily, e.defaultFontFamily), _bodyFontStyle: je(t.bodyFontStyle, e.defaultFontStyle), _bodyAlign: t.bodyAlign, bodyFontSize: je(t.bodyFontSize, e.defaultFontSize), bodySpacing: t.bodySpacing, titleFontColor: t.titleFontColor, _titleFontFamily: je(t.titleFontFamily, e.defaultFontFamily), _titleFontStyle: je(t.titleFontStyle, e.defaultFontStyle), titleFontSize: je(t.titleFontSize, e.defaultFontSize), _titleAlign: t.titleAlign, titleSpacing: t.titleSpacing, titleMarginBottom: t.titleMarginBottom, footerFontColor: t.footerFontColor, _footerFontFamily: je(t.footerFontFamily, e.defaultFontFamily), _footerFontStyle: je(t.footerFontStyle, e.defaultFontStyle), footerFontSize: je(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 Ke(t, e) { return "center" === e ? t.x + t.width / 2 : "right" === e ? t.x + t.width - t.xPadding : t.x + t.xPadding } function Ge(t) { return Ye([], Ue(t)) } var Ze = pt.extend({ initialize: function () { this._model = Xe(this._options), this._lastActive = [] }, getTitle: function () { var t = this._options.callbacks, e = t.beforeTitle.apply(this, arguments), i = t.title.apply(this, arguments), n = t.afterTitle.apply(this, arguments), a = []; return a = Ye(a, Ue(e)), a = Ye(a, Ue(i)), a = Ye(a, Ue(n)) }, getBeforeBody: function () { return Ge(this._options.callbacks.beforeBody.apply(this, arguments)) }, getBody: function (t, e) { var i = this, n = i._options.callbacks, a = []; return ut.each(t, function (t) { var o = { before: [], lines: [], after: [] }; Ye(o.before, Ue(n.beforeLabel.call(i, t, e))), Ye(o.lines, n.label.call(i, t, e)), Ye(o.after, Ue(n.afterLabel.call(i, t, e))), a.push(o) }), a }, getAfterBody: function () { return Ge(this._options.callbacks.afterBody.apply(this, arguments)) }, getFooter: function () { var t = this._options.callbacks, e = t.beforeFooter.apply(this, arguments), i = t.footer.apply(this, arguments), n = t.afterFooter.apply(this, arguments), a = []; return a = Ye(a, Ue(e)), a = Ye(a, Ue(i)), a = Ye(a, Ue(n)) }, update: function (t) { var e, i, n, a, o, r, s, l, d, u, h = this, c = h._options, f = h._model, g = h._model = Xe(c), p = h._active, m = h._data, v = { xAlign: f.xAlign, yAlign: f.yAlign }, b = { x: f.x, y: f.y }, x = { width: f.width, height: f.height }, y = { x: f.caretX, y: f.caretY }; if (p.length) { g.opacity = 1; var k = [], w = []; y = qe[c.position].call(h, p, h._eventPosition); var M = []; for (e = 0, i = p.length; e < i; ++e)M.push((n = p[e], a = void 0, o = void 0, r = void 0, s = void 0, l = void 0, d = void 0, u = void 0, a = n._xScale, o = n._yScale || n._scale, r = n._index, s = n._datasetIndex, l = n._chart.getDatasetMeta(s).controller, d = l._getIndexScale(), u = l._getValueScale(), { xLabel: a ? a.getLabelForIndex(r, s) : "", yLabel: o ? o.getLabelForIndex(r, s) : "", label: d ? "" + d.getLabelForIndex(r, s) : "", value: u ? "" + u.getLabelForIndex(r, s) : "", index: r, datasetIndex: s, x: n._model.x, y: n._model.y })); c.filter && (M = M.filter(function (t) { return c.filter(t, m) })), c.itemSort && (M = M.sort(function (t, e) { return c.itemSort(t, e, m) })), ut.each(M, function (t) { k.push(c.callbacks.labelColor.call(h, t, h._chart)), w.push(c.callbacks.labelTextColor.call(h, t, h._chart)) }), g.title = h.getTitle(M, m), g.beforeBody = h.getBeforeBody(M, m), g.body = h.getBody(M, m), g.afterBody = h.getAfterBody(M, m), g.footer = h.getFooter(M, m), g.x = y.x, g.y = y.y, g.caretPadding = c.caretPadding, g.labelColors = k, g.labelTextColors = w, g.dataPoints = M, x = function (t, e) { var i = t._chart.ctx, n = 2 * e.yPadding, a = 0, o = e.body, r = o.reduce(function (t, e) { return t + e.before.length + e.lines.length + e.after.length }, 0); r += e.beforeBody.length + e.afterBody.length; var s = e.title.length, l = e.footer.length, d = e.titleFontSize, u = e.bodyFontSize, h = e.footerFontSize; n += s * d, n += s ? (s - 1) * e.titleSpacing : 0, n += s ? e.titleMarginBottom : 0, n += r * u, n += r ? (r - 1) * e.bodySpacing : 0, n += l ? e.footerMarginTop : 0, n += l * h, n += l ? (l - 1) * e.footerSpacing : 0; var c = 0, f = function (t) { a = Math.max(a, i.measureText(t).width + c) }; return i.font = ut.fontString(d, e._titleFontStyle, e._titleFontFamily), ut.each(e.title, f), i.font = ut.fontString(u, e._bodyFontStyle, e._bodyFontFamily), ut.each(e.beforeBody.concat(e.afterBody), f), c = e.displayColors ? u + 2 : 0, ut.each(o, function (t) { ut.each(t.before, f), ut.each(t.lines, f), ut.each(t.after, f) }), c = 0, i.font = ut.fontString(h, e._footerFontStyle, e._footerFontFamily), ut.each(e.footer, f), { width: a += 2 * e.xPadding, height: n } }(this, g), b = function (t, e, i, n) { var a = t.x, o = t.y, r = t.caretSize, s = t.caretPadding, l = t.cornerRadius, d = i.xAlign, u = i.yAlign, h = r + s, c = l + s; return "right" === d ? a -= e.width : "center" === d && ((a -= e.width / 2) + e.width > n.width && (a = n.width - e.width), a < 0 && (a = 0)), "top" === u ? o += h : o -= "bottom" === u ? e.height + h : e.height / 2, "center" === u ? "left" === d ? a += h : "right" === d && (a -= h) : "left" === d ? a -= c : "right" === d && (a += c), { x: a, y: o } }(g, x, v = function (t, e) { var i, n, a, o, r, s = t._model, l = t._chart, d = t._chart.chartArea, u = "center", h = "center"; s.y < e.height ? h = "top" : s.y > l.height - e.height && (h = "bottom"); var c = (d.left + d.right) / 2, f = (d.top + d.bottom) / 2; "center" === h ? (i = function (t) { return t <= c }, n = function (t) { return t > c }) : (i = function (t) { return t <= e.width / 2 }, n = function (t) { return t >= l.width - e.width / 2 }), a = function (t) { return t + e.width + s.caretSize + s.caretPadding > l.width }, o = function (t) { return t - e.width - s.caretSize - s.caretPadding < 0 }, r = function (t) { return t <= f ? "top" : "bottom" }, i(s.x) ? (u = "left", a(s.x) && (u = "center", h = r(s.y))) : n(s.x) && (u = "right", o(s.x) && (u = "center", h = r(s.y))); var g = t._options; return { xAlign: g.xAlign ? g.xAlign : u, yAlign: g.yAlign ? g.yAlign : h } }(this, x), h._chart) } else g.opacity = 0; return g.xAlign = v.xAlign, g.yAlign = v.yAlign, g.x = b.x, g.y = b.y, g.width = x.width, g.height = x.height, g.caretX = y.x, g.caretY = y.y, h._model = g, t && c.custom && c.custom.call(h, g), h }, drawCaret: function (t, e) { var i = this._chart.ctx, n = this._view, a = this.getCaretPosition(t, e, n); i.lineTo(a.x1, a.y1), i.lineTo(a.x2, a.y2), i.lineTo(a.x3, a.y3) }, getCaretPosition: function (t, e, i) { var n, a, o, r, s, l, d = i.caretSize, u = i.cornerRadius, h = i.xAlign, c = i.yAlign, f = t.x, g = t.y, p = e.width, m = e.height; if ("center" === c) s = g + m / 2, "left" === h ? (a = (n = f) - d, o = n, r = s + d, l = s - d) : (a = (n = f + p) + d, o = n, r = s - d, l = s + d); else if ("left" === h ? (n = (a = f + u + d) - d, o = a + d) : "right" === h ? (n = (a = f + p - u - d) - d, o = a + d) : (n = (a = i.caretX) - d, o = a + d), "top" === c) s = (r = g) - d, l = r; else { s = (r = g + m) + d, l = r; var v = o; o = n, n = v } return { x1: n, x2: a, x3: o, y1: r, y2: s, y3: l } }, drawTitle: function (t, e, i) { var n = e.title; if (n.length) { t.x = Ke(e, e._titleAlign), i.textAlign = e._titleAlign, i.textBaseline = "top"; var a, o, r = e.titleFontSize, s = e.titleSpacing; for (i.fillStyle = e.titleFontColor, i.font = ut.fontString(r, e._titleFontStyle, e._titleFontFamily), a = 0, o = n.length; a < o; ++a)i.fillText(n[a], t.x, t.y), t.y += r + s, a + 1 === n.length && (t.y += e.titleMarginBottom - s) } }, drawBody: function (t, e, i) { var n, a = e.bodyFontSize, o = e.bodySpacing, r = e._bodyAlign, s = e.body, l = e.displayColors, d = e.labelColors, u = 0, h = l ? Ke(e, "left") : 0; i.textAlign = r, i.textBaseline = "top", i.font = ut.fontString(a, e._bodyFontStyle, e._bodyFontFamily), t.x = Ke(e, r); var c = function (e) { i.fillText(e, t.x + u, t.y), t.y += a + o }; i.fillStyle = e.bodyFontColor, ut.each(e.beforeBody, c), u = l && "right" !== r ? "center" === r ? a / 2 + 1 : a + 2 : 0, ut.each(s, function (o, r) { n = e.labelTextColors[r], i.fillStyle = n, ut.each(o.before, c), ut.each(o.lines, function (o) { l && (i.fillStyle = e.legendColorBackground, i.fillRect(h, t.y, a, a), i.lineWidth = 1, i.strokeStyle = d[r].borderColor, i.strokeRect(h, t.y, a, a), i.fillStyle = d[r].backgroundColor, i.fillRect(h + 1, t.y + 1, a - 2, a - 2), i.fillStyle = n), c(o) }), ut.each(o.after, c) }), u = 0, ut.each(e.afterBody, c), t.y -= o }, drawFooter: function (t, e, i) { var n = e.footer; n.length && (t.x = Ke(e, e._footerAlign), t.y += e.footerMarginTop, i.textAlign = e._footerAlign, i.textBaseline = "top", i.fillStyle = e.footerFontColor, i.font = ut.fontString(e.footerFontSize, e._footerFontStyle, e._footerFontFamily), ut.each(n, function (n) { i.fillText(n, t.x, t.y), t.y += e.footerFontSize + e.footerSpacing })) }, drawBackground: function (t, e, i, n) { i.fillStyle = e.backgroundColor, i.strokeStyle = e.borderColor, i.lineWidth = e.borderWidth; var a = e.xAlign, o = e.yAlign, r = t.x, s = t.y, l = n.width, d = n.height, u = e.cornerRadius; i.beginPath(), i.moveTo(r + u, s), "top" === o && this.drawCaret(t, n), i.lineTo(r + l - u, s), i.quadraticCurveTo(r + l, s, r + l, s + u), "center" === o && "right" === a && this.drawCaret(t, n), i.lineTo(r + l, s + d - u), i.quadraticCurveTo(r + l, s + d, r + l - u, s + d), "bottom" === o && this.drawCaret(t, n), i.lineTo(r + u, s + d), i.quadraticCurveTo(r, s + d, r, s + d - u), "center" === o && "left" === a && this.drawCaret(t, n), i.lineTo(r, s + u), i.quadraticCurveTo(r, s, r + u, s), i.closePath(), i.fill(), e.borderWidth > 0 && i.stroke() }, draw: function () { var t = this._chart.ctx, e = this._view; if (0 !== e.opacity) { var i = { width: e.width, height: e.height }, n = { x: e.x, y: e.y }, a = 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 = a, this.drawBackground(n, e, t, i), n.y += e.yPadding, this.drawTitle(n, e, t), this.drawBody(n, e, t), this.drawFooter(n, e, t), t.restore()) } }, handleEvent: function (t) { var e, i = this, n = i._options; return i._lastActive = i._lastActive || [], "mouseout" === t.type ? i._active = [] : i._active = i._chart.getElementsAtEventForMode(t, n.mode, n), (e = !ut.arrayEquals(i._active, i._lastActive)) && (i._lastActive = i._active, (n.enabled || n.custom) && (i._eventPosition = { x: t.x, y: t.y }, i.update(!0), i.pivot())), e } }), $e = qe, Je = Ze; Je.positioners = $e; var Qe = ut.valueOrDefault; function ti() { return ut.merge({}, [].slice.call(arguments), { merger: function (t, e, i, n) { if ("xAxes" === t || "yAxes" === t) { var a, o, r, s = i[t].length; for (e[t] || (e[t] = []), a = 0; a < s; ++a)r = i[t][a], o = Qe(r.type, "xAxes" === t ? "category" : "linear"), a >= e[t].length && e[t].push({}), !e[t][a].type || r.type && r.type !== e[t][a].type ? ut.merge(e[t][a], [He.getScaleDefaults(o), r]) : ut.merge(e[t][a], r) } else ut._merger(t, e, i, n) } }) } function ei() { return ut.merge({}, [].slice.call(arguments), { merger: function (t, e, i, n) { var a = e[t] || {}, o = i[t]; "scales" === t ? e[t] = ti(a, o) : "scale" === t ? e[t] = ut.merge(a, [He.getScaleDefaults(o.type), o]) : ut._merger(t, e, i, n) } }) } function ii(t) { return "top" === t || "bottom" === t } st._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 ni = function (t, e) { return this.construct(t, e), this }; ut.extend(ni.prototype, { construct: function (t, e) { var i = this; e = function (t) { var e = (t = t || {}).data = t.data || {}; return e.datasets = e.datasets || [], e.labels = e.labels || [], t.options = ei(st.global, st[t.type], t.options || {}), t }(e); var n = Ve.acquireContext(t, e), a = n && n.canvas, o = a && a.height, r = a && a.width; i.id = ut.uid(), i.ctx = n, i.canvas = a, i.config = e, i.width = r, i.height = o, i.aspectRatio = o ? r / o : null, i.options = e.options, i._bufferedRender = !1, i.chart = i, i.controller = i, ni.instances[i.id] = i, Object.defineProperty(i, "data", { get: function () { return i.config.data }, set: function (t) { i.config.data = t } }), n && a ? (i.initialize(), i.update()) : console.error("Failed to create chart: can't acquire context from the given item") }, initialize: function () { var t = this; return Ee.notify(t, "beforeInit"), ut.retinaScale(t, t.options.devicePixelRatio), t.bindEvents(), t.options.responsive && t.resize(!0), t.ensureScalesHaveIDs(), t.buildOrUpdateScales(), t.initToolTip(), Ee.notify(t, "afterInit"), t }, clear: function () { return ut.canvas.clear(this), this }, stop: function () { return bt.cancelAnimation(this), this }, resize: function (t) { var e = this, i = e.options, n = e.canvas, a = i.maintainAspectRatio && e.aspectRatio || null, o = Math.max(0, Math.floor(ut.getMaximumWidth(n))), r = Math.max(0, Math.floor(a ? o / a : ut.getMaximumHeight(n))); if ((e.width !== o || e.height !== r) && (n.width = e.width = o, n.height = e.height = r, n.style.width = o + "px", n.style.height = r + "px", ut.retinaScale(e, i.devicePixelRatio), !t)) { var s = { width: o, height: r }; Ee.notify(e, "resize", [s]), i.onResize && i.onResize(e, s), e.stop(), e.update({ duration: i.responsiveAnimationDuration }) } }, ensureScalesHaveIDs: function () { var t = this.options, e = t.scales || {}, i = t.scale; ut.each(e.xAxes, function (t, e) { t.id = t.id || "x-axis-" + e }), ut.each(e.yAxes, function (t, e) { t.id = t.id || "y-axis-" + e }), i && (i.id = i.id || "scale") }, buildOrUpdateScales: function () { var t = this, e = t.options, i = t.scales || {}, n = [], a = Object.keys(i).reduce(function (t, e) { return t[e] = !1, t }, {}); e.scales && (n = n.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 && n.push({ options: e.scale, dtype: "radialLinear", isDefault: !0, dposition: "chartArea" }), ut.each(n, function (e) { var n = e.options, o = n.id, r = Qe(n.type, e.dtype); ii(n.position) !== ii(e.dposition) && (n.position = e.dposition), a[o] = !0; var s = null; if (o in i && i[o].type === r) (s = i[o]).options = n, s.ctx = t.ctx, s.chart = t; else { var l = He.getScaleConstructor(r); if (!l) return; s = new l({ id: o, type: r, options: n, ctx: t.ctx, chart: t }), i[s.id] = s } s.mergeTicksOptions(), e.isDefault && (t.scale = s) }), ut.each(a, function (t, e) { t || delete i[e] }), t.scales = i, He.addScalesToLayout(this) }, buildOrUpdateControllers: function () { var t = this, e = []; return ut.each(t.data.datasets, function (i, n) { var a = t.getDatasetMeta(n), o = i.type || t.config.type; if (a.type && a.type !== o && (t.destroyDatasetMeta(n), a = t.getDatasetMeta(n)), a.type = o, a.controller) a.controller.updateIndex(n), a.controller.linkScales(); else { var r = ue[a.type]; if (void 0 === r) throw new Error('"' + a.type + '" is not a chart type.'); a.controller = new r(t, n), e.push(a.controller) } }, t), e }, resetElements: function () { var t = this; ut.each(t.data.datasets, function (e, i) { t.getDatasetMeta(i).controller.reset() }, t) }, reset: function () { this.resetElements(), this.tooltip.initialize() }, update: function (t) { var e, i, n = this; if (t && "object" == typeof t || (t = { duration: t, lazy: arguments[1] }), i = (e = n).options, ut.each(e.scales, function (t) { ke.removeBox(e, t) }), i = ei(st.global, st[e.config.type], i), e.options = e.config.options = i, e.ensureScalesHaveIDs(), e.buildOrUpdateScales(), e.tooltip._options = i.tooltips, e.tooltip.initialize(), Ee._invalidate(n), !1 !== Ee.notify(n, "beforeUpdate")) { n.tooltip._data = n.data; var a = n.buildOrUpdateControllers(); ut.each(n.data.datasets, function (t, e) { n.getDatasetMeta(e).controller.buildOrUpdateElements() }, n), n.updateLayout(), n.options.animation && n.options.animation.duration && ut.each(a, function (t) { t.reset() }), n.updateDatasets(), n.tooltip.initialize(), n.lastActive = [], Ee.notify(n, "afterUpdate"), n._bufferedRender ? n._bufferedRequest = { duration: t.duration, easing: t.easing, lazy: t.lazy } : n.render(t) } }, updateLayout: function () { !1 !== Ee.notify(this, "beforeLayout") && (ke.update(this, this.width, this.height), Ee.notify(this, "afterScaleUpdate"), Ee.notify(this, "afterLayout")) }, updateDatasets: function () { if (!1 !== Ee.notify(this, "beforeDatasetsUpdate")) { for (var t = 0, e = this.data.datasets.length; t < e; ++t)this.updateDataset(t); Ee.notify(this, "afterDatasetsUpdate") } }, updateDataset: function (t) { var e = this.getDatasetMeta(t), i = { meta: e, index: t }; !1 !== Ee.notify(this, "beforeDatasetUpdate", [i]) && (e.controller.update(), Ee.notify(this, "afterDatasetUpdate", [i])) }, render: function (t) { var e = this; t && "object" == typeof t || (t = { duration: t, lazy: arguments[1] }); var i = e.options.animation, n = Qe(t.duration, i && i.duration), a = t.lazy; if (!1 !== Ee.notify(e, "beforeRender")) { var o = function (t) { Ee.notify(e, "afterRender"), ut.callback(i && i.onComplete, [t], e) }; if (i && n) { var r = new vt({ numSteps: n / 16.66, easing: t.easing || i.easing, render: function (t, e) { var i = ut.easing.effects[e.easing], n = e.currentStep, a = n / e.numSteps; t.draw(i(a), a, n) }, onAnimationProgress: i.onProgress, onAnimationComplete: o }); bt.addAnimation(e, r, n, a) } else e.draw(), o(new vt({ numSteps: 0, chart: e })); return e } }, draw: function (t) { var e = this; e.clear(), ut.isNullOrUndef(t) && (t = 1), e.transition(t), e.width <= 0 || e.height <= 0 || !1 !== Ee.notify(e, "beforeDraw", [t]) && (ut.each(e.boxes, function (t) { t.draw(e.chartArea) }, e), e.drawDatasets(t), e._drawTooltip(t), Ee.notify(e, "afterDraw", [t])) }, transition: function (t) { for (var e = 0, i = (this.data.datasets || []).length; e < i; ++e)this.isDatasetVisible(e) && this.getDatasetMeta(e).controller.transition(t); this.tooltip.transition(t) }, drawDatasets: function (t) { var e = this; if (!1 !== Ee.notify(e, "beforeDatasetsDraw", [t])) { for (var i = (e.data.datasets || []).length - 1; i >= 0; --i)e.isDatasetVisible(i) && e.drawDataset(i, t); Ee.notify(e, "afterDatasetsDraw", [t]) } }, drawDataset: function (t, e) { var i = this.getDatasetMeta(t), n = { meta: i, index: t, easingValue: e }; !1 !== Ee.notify(this, "beforeDatasetDraw", [n]) && (i.controller.draw(e), Ee.notify(this, "afterDatasetDraw", [n])) }, _drawTooltip: function (t) { var e = this.tooltip, i = { tooltip: e, easingValue: t }; !1 !== Ee.notify(this, "beforeTooltipDraw", [i]) && (e.draw(), Ee.notify(this, "afterTooltipDraw", [i])) }, getElementAtEvent: function (t) { return ve.modes.single(this, t) }, getElementsAtEvent: function (t) { return ve.modes.label(this, t, { intersect: !0 }) }, getElementsAtXAxis: function (t) { return ve.modes["x-axis"](this, t, { intersect: !0 }) }, getElementsAtEventForMode: function (t, e, i) { var n = ve.modes[e]; return "function" == typeof n ? n(this, t, i) : [] }, getDatasetAtEvent: function (t) { return ve.modes.dataset(this, t, { intersect: !0 }) }, getDatasetMeta: function (t) { var e = this.data.datasets[t]; e._meta || (e._meta = {}); var i = e._meta[this.id]; return i || (i = e._meta[this.id] = { type: null, data: [], dataset: null, controller: null, hidden: null, xAxisID: null, yAxisID: null }), i }, getVisibleDatasetCount: function () { for (var t = 0, e = 0, i = this.data.datasets.length; e < i; ++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, i = this.data.datasets[t], n = i._meta && i._meta[e]; n && (n.controller.destroy(), delete i._meta[e]) }, destroy: function () { var t, e, i = this, n = i.canvas; for (i.stop(), t = 0, e = i.data.datasets.length; t < e; ++t)i.destroyDatasetMeta(t); n && (i.unbindEvents(), ut.canvas.clear(i), Ve.releaseContext(i.ctx), i.canvas = null, i.ctx = null), Ee.notify(i, "destroy"), delete ni.instances[i.id] }, toBase64Image: function () { return this.canvas.toDataURL.apply(this.canvas, arguments) }, initToolTip: function () { var t = this; t.tooltip = new Je({ _chart: t, _chartInstance: t, _data: t.data, _options: t.options.tooltips }, t) }, bindEvents: function () { var t = this, e = t._listeners = {}, i = function () { t.eventHandler.apply(t, arguments) }; ut.each(t.options.events, function (n) { Ve.addEventListener(t, n, i), e[n] = i }), t.options.responsive && (i = function () { t.resize() }, Ve.addEventListener(t, "resize", i), e.resize = i) }, unbindEvents: function () { var t = this, e = t._listeners; e && (delete t._listeners, ut.each(e, function (e, i) { Ve.removeEventListener(t, i, e) })) }, updateHoverStyle: function (t, e, i) { var n, a, o, r = i ? "setHoverStyle" : "removeHoverStyle"; for (a = 0, o = t.length; a < o; ++a)(n = t[a]) && this.getDatasetMeta(n._datasetIndex).controller[r](n) }, eventHandler: function (t) { var e = this, i = e.tooltip; if (!1 !== Ee.notify(e, "beforeEvent", [t])) { e._bufferedRender = !0, e._bufferedRequest = null; var n = e.handleEvent(t); i && (n = i._start ? i.handleEvent(t) : n | i.handleEvent(t)), Ee.notify(e, "afterEvent", [t]); var a = e._bufferedRequest; return a ? e.render(a) : n && !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, i = this, n = i.options || {}, a = n.hover; return i.lastActive = i.lastActive || [], "mouseout" === t.type ? i.active = [] : i.active = i.getElementsAtEventForMode(t, a.mode, a), ut.callback(n.onHover || n.hover.onHover, [t.native, i.active], i), "mouseup" !== t.type && "click" !== t.type || n.onClick && n.onClick.call(i, t.native, i.active), i.lastActive.length && i.updateHoverStyle(i.lastActive, a.mode, !1), i.active.length && a.mode && i.updateHoverStyle(i.active, a.mode, !0), e = !ut.arrayEquals(i.active, i.lastActive), i.lastActive = i.active, e } }), ni.instances = {}; var ai = ni; ni.Controller = ni, ni.types = {}, ut.configMerge = ei, ut.scaleMerge = ti; function oi() { throw new Error("This method is not implemented: either no adapter can be found or an incomplete integration was provided.") } function ri(t) { this.options = t || {} } ut.extend(ri.prototype, { formats: oi, parse: oi, format: oi, add: oi, diff: oi, startOf: oi, endOf: oi, _create: function (t) { return t } }), ri.override = function (t) { ut.extend(ri.prototype, t) }; var si = { _date: ri }, li = { formatters: { values: function (t) { return ut.isArray(t) ? t : "" + t }, linear: function (t, e, i) { var n = i.length > 3 ? i[2] - i[1] : i[1] - i[0]; Math.abs(n) > 1 && t !== Math.floor(t) && (n = t - Math.floor(t)); var a = ut.log10(Math.abs(n)), o = ""; if (0 !== t) if (Math.max(Math.abs(i[0]), Math.abs(i[i.length - 1])) < 1e-4) { var r = ut.log10(Math.abs(t)); o = t.toExponential(Math.floor(r) - Math.floor(a)) } else { var s = -1 * Math.floor(a); s = Math.max(Math.min(s, 20), 0), o = t.toFixed(s) } else o = "0"; return o }, logarithmic: function (t, e, i) { var n = t / Math.pow(10, Math.floor(ut.log10(t))); return 0 === t ? "0" : 1 === n || 2 === n || 5 === n || 0 === e || e === i.length - 1 ? t.toExponential() : "" } } }, di = ut.valueOrDefault, ui = ut.valueAtIndexOrDefault; function hi(t) { var e, i, n = []; for (e = 0, i = t.length; e < i; ++e)n.push(t[e].label); return n } function ci(t, e, i) { return ut.isArray(e) ? ut.longestText(t, i, e) : t.measureText(e).width } st._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: li.formatters.values, minor: {}, major: {} } }); var fi = pt.extend({ getPadding: function () { return { left: this.paddingLeft || 0, top: this.paddingTop || 0, right: this.paddingRight || 0, bottom: this.paddingBottom || 0 } }, getTicks: function () { return this._ticks }, mergeTicksOptions: function () { var t = this.options.ticks; for (var e in !1 === t.minor && (t.minor = { display: !1 }), !1 === t.major && (t.major = { display: !1 }), t) "major" !== e && "minor" !== e && (void 0 === t.minor[e] && (t.minor[e] = t[e]), void 0 === t.major[e] && (t.major[e] = t[e])) }, beforeUpdate: function () { ut.callback(this.options.beforeUpdate, [this]) }, update: function (t, e, i) { var n, a, o, r, s, l, d = this; for (d.beforeUpdate(), d.maxWidth = t, d.maxHeight = e, d.margins = ut.extend({ left: 0, right: 0, top: 0, bottom: 0 }, i), d._maxLabelLines = 0, d.longestLabelWidth = 0, d.longestTextCache = d.longestTextCache || {}, d.beforeSetDimensions(), d.setDimensions(), d.afterSetDimensions(), d.beforeDataLimits(), d.determineDataLimits(), d.afterDataLimits(), d.beforeBuildTicks(), s = d.buildTicks() || [], s = d.afterBuildTicks(s) || s, d.beforeTickToLabelConversion(), o = d.convertTicksToLabels(s) || d.ticks, d.afterTickToLabelConversion(), d.ticks = o, n = 0, a = o.length; n < a; ++n)r = o[n], (l = s[n]) ? l.label = r : s.push(l = { label: r, major: !1 }); return d._ticks = s, d.beforeCalculateTickRotation(), d.calculateTickRotation(), d.afterCalculateTickRotation(), d.beforeFit(), d.fit(), d.afterFit(), d.afterUpdate(), d.minSize }, afterUpdate: function () { ut.callback(this.options.afterUpdate, [this]) }, beforeSetDimensions: function () { ut.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 () { ut.callback(this.options.afterSetDimensions, [this]) }, beforeDataLimits: function () { ut.callback(this.options.beforeDataLimits, [this]) }, determineDataLimits: ut.noop, afterDataLimits: function () { ut.callback(this.options.afterDataLimits, [this]) }, beforeBuildTicks: function () { ut.callback(this.options.beforeBuildTicks, [this]) }, buildTicks: ut.noop, afterBuildTicks: function (t) { var e = this; return ut.isArray(t) && t.length ? ut.callback(e.options.afterBuildTicks, [e, t]) : (e.ticks = ut.callback(e.options.afterBuildTicks, [e, e.ticks]) || e.ticks, t) }, beforeTickToLabelConversion: function () { ut.callback(this.options.beforeTickToLabelConversion, [this]) }, convertTicksToLabels: function () { var t = this.options.ticks; this.ticks = this.ticks.map(t.userCallback || t.callback, this) }, afterTickToLabelConversion: function () { ut.callback(this.options.afterTickToLabelConversion, [this]) }, beforeCalculateTickRotation: function () { ut.callback(this.options.beforeCalculateTickRotation, [this]) }, calculateTickRotation: function () { var t = this, e = t.ctx, i = t.options.ticks, n = hi(t._ticks), a = ut.options._parseFont(i); e.font = a.string; var o = i.minRotation || 0; if (n.length && t.options.display && t.isHorizontal()) for (var r, s = ut.longestText(e, a.string, n, t.longestTextCache), l = s, d = t.getPixelForTick(1) - t.getPixelForTick(0) - 6; l > d && o < i.maxRotation;) { var u = ut.toRadians(o); if (r = Math.cos(u), Math.sin(u) * s > t.maxHeight) { o--; break } o++, l = r * s } t.labelRotation = o }, afterCalculateTickRotation: function () { ut.callback(this.options.afterCalculateTickRotation, [this]) }, beforeFit: function () { ut.callback(this.options.beforeFit, [this]) }, fit: function () { var t = this, e = t.minSize = { width: 0, height: 0 }, i = hi(t._ticks), n = t.options, a = n.ticks, o = n.scaleLabel, r = n.gridLines, s = t._isVisible(), l = n.position, d = t.isHorizontal(), u = ut.options._parseFont, h = u(a), c = n.gridLines.tickMarkLength; if (e.width = d ? t.isFullWidth() ? t.maxWidth - t.margins.left - t.margins.right : t.maxWidth : s && r.drawTicks ? c : 0, e.height = d ? s && r.drawTicks ? c : 0 : t.maxHeight, o.display && s) { var f = u(o), g = ut.options.toPadding(o.padding), p = f.lineHeight + g.height; d ? e.height += p : e.width += p } if (a.display && s) { var m = ut.longestText(t.ctx, h.string, i, t.longestTextCache), v = ut.numberOfLabelLines(i), b = .5 * h.size, x = t.options.ticks.padding; if (t._maxLabelLines = v, t.longestLabelWidth = m, d) { var y = ut.toRadians(t.labelRotation), k = Math.cos(y), w = Math.sin(y) * m + h.lineHeight * v + b; e.height = Math.min(t.maxHeight, e.height + w + x), t.ctx.font = h.string; var M, _, C = ci(t.ctx, i[0], h.string), S = ci(t.ctx, i[i.length - 1], h.string), P = t.getPixelForTick(0) - t.left, I = t.right - t.getPixelForTick(i.length - 1); 0 !== t.labelRotation ? (M = "bottom" === l ? k * C : k * b, _ = "bottom" === l ? k * b : k * S) : (M = C / 2, _ = S / 2), t.paddingLeft = Math.max(M - P, 0) + 3, t.paddingRight = Math.max(_ - I, 0) + 3 } else a.mirror ? m = 0 : m += x + b, e.width = Math.min(t.maxWidth, e.width + m), t.paddingTop = h.size / 2, t.paddingBottom = h.size / 2 } t.handleMargins(), t.width = e.width, t.height = e.height }, handleMargins: function () { var t = this; t.margins && (t.paddingLeft = Math.max(t.paddingLeft - t.margins.left, 0), t.paddingTop = Math.max(t.paddingTop - t.margins.top, 0), t.paddingRight = Math.max(t.paddingRight - t.margins.right, 0), t.paddingBottom = Math.max(t.paddingBottom - t.margins.bottom, 0)) }, afterFit: function () { ut.callback(this.options.afterFit, [this]) }, isHorizontal: function () { return "top" === this.options.position || "bottom" === this.options.position }, isFullWidth: function () { return this.options.fullWidth }, getRightValue: function (t) { if (ut.isNullOrUndef(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 }, getLabelForIndex: ut.noop, getPixelForValue: ut.noop, getValueForPixel: ut.noop, getPixelForTick: function (t) { var e = this, i = e.options.offset; if (e.isHorizontal()) { var n = (e.width - (e.paddingLeft + e.paddingRight)) / Math.max(e._ticks.length - (i ? 0 : 1), 1), a = n * t + e.paddingLeft; i && (a += n / 2); var o = e.left + a; return o += e.isFullWidth() ? e.margins.left : 0 } var r = e.height - (e.paddingTop + e.paddingBottom); return e.top + t * (r / (e._ticks.length - 1)) }, getPixelForDecimal: function (t) { var e = this; if (e.isHorizontal()) { var i = (e.width - (e.paddingLeft + e.paddingRight)) * t + e.paddingLeft, n = e.left + i; return n += e.isFullWidth() ? e.margins.left : 0 } return e.top + t * e.height }, 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, i, n = this, a = n.isHorizontal(), o = n.options.ticks.minor, r = t.length, s = !1, l = o.maxTicksLimit, d = n._tickSize() * (r - 1), u = a ? n.width - (n.paddingLeft + n.paddingRight) : n.height - (n.paddingTop + n.PaddingBottom), h = []; for (d > u && (s = 1 + Math.floor(d / u)), r > l && (s = Math.max(s, 1 + Math.floor(r / l))), e = 0; e < r; e++)i = t[e], s > 1 && e % s > 0 && delete i.label, h.push(i); return h }, _tickSize: function () { var t = this, e = t.isHorizontal(), i = t.options.ticks.minor, n = ut.toRadians(t.labelRotation), a = Math.abs(Math.cos(n)), o = Math.abs(Math.sin(n)), r = i.autoSkipPadding || 0, s = t.longestLabelWidth + r || 0, l = ut.options._parseFont(i), d = t._maxLabelLines * l.lineHeight + r || 0; return e ? d * a > s * o ? s / a : d / o : d * o < s * a ? d / a : s / o }, _isVisible: function () { var t, e, i, n = this.chart, a = this.options.display; if ("auto" !== a) return !!a; for (t = 0, e = n.data.datasets.length; t < e; ++t)if (n.isDatasetVisible(t) && ((i = n.getDatasetMeta(t)).xAxisID === this.id || i.yAxisID === this.id)) return !0; return !1 }, draw: function (t) { var e = this, i = e.options; if (e._isVisible()) { var n, a, o, r = e.chart, s = e.ctx, l = st.global.defaultFontColor, d = i.ticks.minor, u = i.ticks.major || d, h = i.gridLines, c = i.scaleLabel, f = i.position, g = 0 !== e.labelRotation, p = d.mirror, m = e.isHorizontal(), v = ut.options._parseFont, b = d.display && d.autoSkip ? e._autoSkip(e.getTicks()) : e.getTicks(), x = di(d.fontColor, l), y = v(d), k = y.lineHeight, w = di(u.fontColor, l), M = v(u), _ = d.padding, C = d.labelOffset, S = h.drawTicks ? h.tickMarkLength : 0, P = di(c.fontColor, l), I = v(c), A = ut.options.toPadding(c.padding), D = ut.toRadians(e.labelRotation), T = [], F = h.drawBorder ? ui(h.lineWidth, 0, 0) : 0, L = ut._alignPixel; "top" === f ? (n = L(r, e.bottom, F), a = e.bottom - S, o = n - F / 2) : "bottom" === f ? (n = L(r, e.top, F), a = n + F / 2, o = e.top + S) : "left" === f ? (n = L(r, e.right, F), a = e.right - S, o = n - F / 2) : (n = L(r, e.left, F), a = n + F / 2, o = e.left + S); if (ut.each(b, function (n, s) { if (!ut.isNullOrUndef(n.label)) { var l, d, u, c, v, b, x, y, w, M, P, I, A, R, O, z, B = n.label; s === e.zeroLineIndex && i.offset === h.offsetGridLines ? (l = h.zeroLineWidth, d = h.zeroLineColor, u = h.zeroLineBorderDash || [], c = h.zeroLineBorderDashOffset || 0) : (l = ui(h.lineWidth, s), d = ui(h.color, s), u = h.borderDash || [], c = h.borderDashOffset || 0); var N = ut.isArray(B) ? B.length : 1, W = function (t, e, i) { var n = t.getPixelForTick(e); return i && (1 === t.getTicks().length ? n -= t.isHorizontal() ? Math.max(n - t.left, t.right - n) : Math.max(n - t.top, t.bottom - n) : n -= 0 === e ? (t.getPixelForTick(1) - n) / 2 : (n - t.getPixelForTick(e - 1)) / 2), n }(e, s, h.offsetGridLines); if (m) { var V = S + _; W < e.left - 1e-7 && (d = "rgba(0,0,0,0)"), v = x = w = P = L(r, W, l), b = a, y = o, A = e.getPixelForTick(s) + C, "top" === f ? (M = L(r, t.top, F) + F / 2, I = t.bottom, O = ((g ? 1 : .5) - N) * k, z = g ? "left" : "center", R = e.bottom - V) : (M = t.top, I = L(r, t.bottom, F) - F / 2, O = (g ? 0 : .5) * k, z = g ? "right" : "center", R = e.top + V) } else { var E = (p ? 0 : S) + _; W < e.top - 1e-7 && (d = "rgba(0,0,0,0)"), v = a, x = o, b = y = M = I = L(r, W, l), R = e.getPixelForTick(s) + C, O = (1 - N) * k / 2, "left" === f ? (w = L(r, t.left, F) + F / 2, P = t.right, z = p ? "left" : "right", A = e.right - E) : (w = t.left, P = L(r, t.right, F) - F / 2, z = p ? "right" : "left", A = e.left + E) } T.push({ tx1: v, ty1: b, tx2: x, ty2: y, x1: w, y1: M, x2: P, y2: I, labelX: A, labelY: R, glWidth: l, glColor: d, glBorderDash: u, glBorderDashOffset: c, rotation: -1 * D, label: B, major: n.major, textOffset: O, textAlign: z }) } }), ut.each(T, function (t) { var e = t.glWidth, i = t.glColor; if (h.display && e && i && (s.save(), s.lineWidth = e, s.strokeStyle = i, s.setLineDash && (s.setLineDash(t.glBorderDash), s.lineDashOffset = t.glBorderDashOffset), s.beginPath(), h.drawTicks && (s.moveTo(t.tx1, t.ty1), s.lineTo(t.tx2, t.ty2)), h.drawOnChartArea && (s.moveTo(t.x1, t.y1), s.lineTo(t.x2, t.y2)), s.stroke(), s.restore()), d.display) { s.save(), s.translate(t.labelX, t.labelY), s.rotate(t.rotation), s.font = t.major ? M.string : y.string, s.fillStyle = t.major ? w : x, s.textBaseline = "middle", s.textAlign = t.textAlign; var n = t.label, a = t.textOffset; if (ut.isArray(n)) for (var o = 0; o < n.length; ++o)s.fillText("" + n[o], 0, a), a += k; else s.fillText(n, 0, a); s.restore() } }), c.display) { var R, O, z = 0, B = I.lineHeight / 2; if (m) R = e.left + (e.right - e.left) / 2, O = "bottom" === f ? e.bottom - B - A.bottom : e.top + B + A.top; else { var N = "left" === f; R = N ? e.left + B + A.top : e.right - B - A.top, O = e.top + (e.bottom - e.top) / 2, z = N ? -.5 * Math.PI : .5 * Math.PI } s.save(), s.translate(R, O), s.rotate(z), s.textAlign = "center", s.textBaseline = "middle", s.fillStyle = P, s.font = I.string, s.fillText(c.labelString, 0, 0), s.restore() } if (F) { var W, V, E, H, j = F, q = ui(h.lineWidth, b.length - 1, 0); m ? (W = L(r, e.left, j) - j / 2, V = L(r, e.right, q) + q / 2, E = H = n) : (E = L(r, e.top, j) - j / 2, H = L(r, e.bottom, q) + q / 2, W = V = n), s.lineWidth = F, s.strokeStyle = ui(h.color, 0), s.beginPath(), s.moveTo(W, E), s.lineTo(V, H), s.stroke() } } } }), gi = fi.extend({ getLabels: function () { var t = this.chart.data; return this.options.labels || (this.isHorizontal() ? t.xLabels : t.yLabels) || t.labels }, determineDataLimits: function () { var t, e = this, i = e.getLabels(); e.minIndex = 0, e.maxIndex = i.length - 1, void 0 !== e.options.ticks.min && (t = i.indexOf(e.options.ticks.min), e.minIndex = -1 !== t ? t : e.minIndex), void 0 !== e.options.ticks.max && (t = i.indexOf(e.options.ticks.max), e.maxIndex = -1 !== t ? t : e.maxIndex), e.min = i[e.minIndex], e.max = i[e.maxIndex] }, buildTicks: function () { var t = this, e = t.getLabels(); t.ticks = 0 === t.minIndex && t.maxIndex === e.length - 1 ? e : e.slice(t.minIndex, t.maxIndex + 1) }, getLabelForIndex: function (t, e) { var i = this, n = i.chart; return n.getDatasetMeta(e).controller._getValueScaleId() === i.id ? i.getRightValue(n.data.datasets[e].data[t]) : i.ticks[t - i.minIndex] }, getPixelForValue: function (t, e) { var i, n = this, a = n.options.offset, o = Math.max(n.maxIndex + 1 - n.minIndex - (a ? 0 : 1), 1); if (null != t && (i = n.isHorizontal() ? t.x : t.y), void 0 !== i || void 0 !== t && isNaN(e)) { t = i || t; var r = n.getLabels().indexOf(t); e = -1 !== r ? r : e } if (n.isHorizontal()) { var s = n.width / o, l = s * (e - n.minIndex); return a && (l += s / 2), n.left + l } var d = n.height / o, u = d * (e - n.minIndex); return a && (u += d / 2), n.top + u }, getPixelForTick: function (t) { return this.getPixelForValue(this.ticks[t], t + this.minIndex, null) }, getValueForPixel: function (t) { var e = this, i = e.options.offset, n = Math.max(e._ticks.length - (i ? 0 : 1), 1), a = e.isHorizontal(), o = (a ? e.width : e.height) / n; return t -= a ? e.left : e.top, i && (t -= o / 2), (t <= 0 ? 0 : Math.round(t / o)) + e.minIndex }, getBasePixel: function () { return this.bottom } }), pi = { position: "bottom" }; gi._defaults = pi; var mi = ut.noop, vi = ut.isNullOrUndef; var bi = fi.extend({ getRightValue: function (t) { return "string" == typeof t ? +t : fi.prototype.getRightValue.call(this, t) }, handleTickRangeOptions: function () { var t = this, e = t.options.ticks; if (e.beginAtZero) { var i = ut.sign(t.min), n = ut.sign(t.max); i < 0 && n < 0 ? t.max = 0 : i > 0 && n > 0 && (t.min = 0) } var a = 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)), a !== o && t.min >= t.max && (a ? 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, i = e.stepSize, n = e.maxTicksLimit; return i ? t = Math.ceil(this.max / i) - Math.floor(this.min / i) + 1 : (t = this._computeTickLimit(), n = n || 11), n && (t = Math.min(n, t)), t }, _computeTickLimit: function () { return Number.POSITIVE_INFINITY }, handleDirectionalChanges: mi, buildTicks: function () { var t = this, e = t.options.ticks, i = t.getTickLimit(), n = { maxTicks: i = Math.max(2, i), min: e.min, max: e.max, precision: e.precision, stepSize: ut.valueOrDefault(e.fixedStepSize, e.stepSize) }, a = t.ticks = function (t, e) { var i, n, a, o, r = [], s = t.stepSize, l = s || 1, d = t.maxTicks - 1, u = t.min, h = t.max, c = t.precision, f = e.min, g = e.max, p = ut.niceNum((g - f) / d / l) * l; if (p < 1e-14 && vi(u) && vi(h)) return [f, g]; (o = Math.ceil(g / p) - Math.floor(f / p)) > d && (p = ut.niceNum(o * p / d / l) * l), s || vi(c) ? i = Math.pow(10, ut._decimalPlaces(p)) : (i = Math.pow(10, c), p = Math.ceil(p * i) / i), n = Math.floor(f / p) * p, a = Math.ceil(g / p) * p, s && (!vi(u) && ut.almostWhole(u / p, p / 1e3) && (n = u), !vi(h) && ut.almostWhole(h / p, p / 1e3) && (a = h)), o = (a - n) / p, o = ut.almostEquals(o, Math.round(o), p / 1e3) ? Math.round(o) : Math.ceil(o), n = Math.round(n * i) / i, a = Math.round(a * i) / i, r.push(vi(u) ? n : u); for (var m = 1; m < o; ++m)r.push(Math.round((n + m * p) * i) / i); return r.push(vi(h) ? a : h), r }(n, t); t.handleDirectionalChanges(), t.max = ut.max(a), t.min = ut.min(a), e.reverse ? (a.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), fi.prototype.convertTicksToLabels.call(t) } }), xi = { position: "left", ticks: { callback: li.formatters.linear } }, yi = bi.extend({ determineDataLimits: function () { var t = this, e = t.options, i = t.chart, n = i.data.datasets, a = t.isHorizontal(); function o(e) { return a ? e.xAxisID === t.id : e.yAxisID === t.id } t.min = null, t.max = null; var r = e.stacked; if (void 0 === r && ut.each(n, function (t, e) { if (!r) { var n = i.getDatasetMeta(e); i.isDatasetVisible(e) && o(n) && void 0 !== n.stack && (r = !0) } }), e.stacked || r) { var s = {}; ut.each(n, function (n, a) { var r = i.getDatasetMeta(a), l = [r.type, void 0 === e.stacked && void 0 === r.stack ? a : "", r.stack].join("."); void 0 === s[l] && (s[l] = { positiveValues: [], negativeValues: [] }); var d = s[l].positiveValues, u = s[l].negativeValues; i.isDatasetVisible(a) && o(r) && ut.each(n.data, function (i, n) { var a = +t.getRightValue(i); isNaN(a) || r.data[n].hidden || (d[n] = d[n] || 0, u[n] = u[n] || 0, e.relativePoints ? d[n] = 100 : a < 0 ? u[n] += a : d[n] += a) }) }), ut.each(s, function (e) { var i = e.positiveValues.concat(e.negativeValues), n = ut.min(i), a = ut.max(i); t.min = null === t.min ? n : Math.min(t.min, n), t.max = null === t.max ? a : Math.max(t.max, a) }) } else ut.each(n, function (e, n) { var a = i.getDatasetMeta(n); i.isDatasetVisible(n) && o(a) && ut.each(e.data, function (e, i) { var n = +t.getRightValue(e); isNaN(n) || a.data[i].hidden || (null === t.min ? t.min = n : n < t.min && (t.min = n), null === t.max ? t.max = n : n > t.max && (t.max = n)) }) }); t.min = isFinite(t.min) && !isNaN(t.min) ? t.min : 0, t.max = isFinite(t.max) && !isNaN(t.max) ? t.max : 1, this.handleTickRangeOptions() }, _computeTickLimit: function () { var t; return this.isHorizontal() ? Math.ceil(this.width / 40) : (t = ut.options._parseFont(this.options.ticks), Math.ceil(this.height / t.lineHeight)) }, handleDirectionalChanges: function () { this.isHorizontal() || this.ticks.reverse() }, getLabelForIndex: function (t, e) { return +this.getRightValue(this.chart.data.datasets[e].data[t]) }, getPixelForValue: function (t) { var e = this, i = e.start, n = +e.getRightValue(t), a = e.end - i; return e.isHorizontal() ? e.left + e.width / a * (n - i) : e.bottom - e.height / a * (n - i) }, getValueForPixel: function (t) { var e = this, i = e.isHorizontal(), n = i ? e.width : e.height, a = (i ? t - e.left : e.bottom - t) / n; return e.start + (e.end - e.start) * a }, getPixelForTick: function (t) { return this.getPixelForValue(this.ticksAsNumbers[t]) } }), ki = xi; yi._defaults = ki; var wi = ut.valueOrDefault; var Mi = { position: "left", ticks: { callback: li.formatters.logarithmic } }; function _i(t, e) { return ut.isFinite(t) && t >= 0 ? t : e } var Ci = fi.extend({ determineDataLimits: function () { var t = this, e = t.options, i = t.chart, n = i.data.datasets, a = t.isHorizontal(); function o(e) { return a ? e.xAxisID === t.id : e.yAxisID === t.id } t.min = null, t.max = null, t.minNotZero = null; var r = e.stacked; if (void 0 === r && ut.each(n, function (t, e) { if (!r) { var n = i.getDatasetMeta(e); i.isDatasetVisible(e) && o(n) && void 0 !== n.stack && (r = !0) } }), e.stacked || r) { var s = {}; ut.each(n, function (n, a) { var r = i.getDatasetMeta(a), l = [r.type, void 0 === e.stacked && void 0 === r.stack ? a : "", r.stack].join("."); i.isDatasetVisible(a) && o(r) && (void 0 === s[l] && (s[l] = []), ut.each(n.data, function (e, i) { var n = s[l], a = +t.getRightValue(e); isNaN(a) || r.data[i].hidden || a < 0 || (n[i] = n[i] || 0, n[i] += a) })) }), ut.each(s, function (e) { if (e.length > 0) { var i = ut.min(e), n = ut.max(e); t.min = null === t.min ? i : Math.min(t.min, i), t.max = null === t.max ? n : Math.max(t.max, n) } }) } else ut.each(n, function (e, n) { var a = i.getDatasetMeta(n); i.isDatasetVisible(n) && o(a) && ut.each(e.data, function (e, i) { var n = +t.getRightValue(e); isNaN(n) || a.data[i].hidden || n < 0 || (null === t.min ? t.min = n : n < t.min && (t.min = n), null === t.max ? t.max = n : n > t.max && (t.max = n), 0 !== n && (null === t.minNotZero || n < t.minNotZero) && (t.minNotZero = n)) }) }); this.handleTickRangeOptions() }, handleTickRangeOptions: function () { var t = this, e = t.options.ticks; t.min = _i(e.min, t.min), t.max = _i(e.max, t.max), t.min === t.max && (0 !== t.min && null !== t.min ? (t.min = Math.pow(10, Math.floor(ut.log10(t.min)) - 1), t.max = Math.pow(10, Math.floor(ut.log10(t.max)) + 1)) : (t.min = 1, t.max = 10)), null === t.min && (t.min = Math.pow(10, Math.floor(ut.log10(t.max)) - 1)), null === t.max && (t.max = 0 !== t.min ? Math.pow(10, Math.floor(ut.log10(t.min)) + 1) : 10), null === t.minNotZero && (t.min > 0 ? t.minNotZero = t.min : t.max < 1 ? t.minNotZero = Math.pow(10, Math.floor(ut.log10(t.max))) : t.minNotZero = 1) }, buildTicks: function () { var t = this, e = t.options.ticks, i = !t.isHorizontal(), n = { min: _i(e.min), max: _i(e.max) }, a = t.ticks = function (t, e) { var i, n, a = [], o = wi(t.min, Math.pow(10, Math.floor(ut.log10(e.min)))), r = Math.floor(ut.log10(e.max)), s = Math.ceil(e.max / Math.pow(10, r)); 0 === o ? (i = Math.floor(ut.log10(e.minNotZero)), n = Math.floor(e.minNotZero / Math.pow(10, i)), a.push(o), o = n * Math.pow(10, i)) : (i = Math.floor(ut.log10(o)), n = Math.floor(o / Math.pow(10, i))); var l = i < 0 ? Math.pow(10, Math.abs(i)) : 1; do { a.push(o), 10 == ++n && (n = 1, l = ++i >= 0 ? 1 : l), o = Math.round(n * Math.pow(10, i) * l) / l } while (i < r || i === r && n < s); var d = wi(t.max, o); return a.push(d), a }(n, t); t.max = ut.max(a), t.min = ut.min(a), e.reverse ? (i = !i, t.start = t.max, t.end = t.min) : (t.start = t.min, t.end = t.max), i && a.reverse() }, convertTicksToLabels: function () { this.tickValues = this.ticks.slice(), fi.prototype.convertTicksToLabels.call(this) }, getLabelForIndex: function (t, e) { return +this.getRightValue(this.chart.data.datasets[e].data[t]) }, getPixelForTick: function (t) { return this.getPixelForValue(this.tickValues[t]) }, _getFirstTickValue: function (t) { var e = Math.floor(ut.log10(t)); return Math.floor(t / Math.pow(10, e)) * Math.pow(10, e) }, getPixelForValue: function (t) { var e, i, n, a, o, r = this, s = r.options.ticks, l = s.reverse, d = ut.log10, u = r._getFirstTickValue(r.minNotZero), h = 0; return t = +r.getRightValue(t), l ? (n = r.end, a = r.start, o = -1) : (n = r.start, a = r.end, o = 1), r.isHorizontal() ? (e = r.width, i = l ? r.right : r.left) : (e = r.height, o *= -1, i = l ? r.top : r.bottom), t !== n && (0 === n && (e -= h = wi(s.fontSize, st.global.defaultFontSize), n = u), 0 !== t && (h += e / (d(a) - d(n)) * (d(t) - d(n))), i += o * h), i }, getValueForPixel: function (t) { var e, i, n, a, o = this, r = o.options.ticks, s = r.reverse, l = ut.log10, d = o._getFirstTickValue(o.minNotZero); if (s ? (i = o.end, n = o.start) : (i = o.start, n = o.end), o.isHorizontal() ? (e = o.width, a = s ? o.right - t : t - o.left) : (e = o.height, a = s ? t - o.top : o.bottom - t), a !== i) { if (0 === i) { var u = wi(r.fontSize, st.global.defaultFontSize); a -= u, e -= u, i = d } a *= l(n) - l(i), a /= e, a = Math.pow(10, l(i) + a) } return a } }), Si = Mi; Ci._defaults = Si; var Pi = ut.valueOrDefault, Ii = ut.valueAtIndexOrDefault, Ai = ut.options.resolve, Di = { 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: li.formatters.linear }, pointLabels: { display: !0, fontSize: 10, callback: function (t) { return t } } }; function Ti(t) { var e = t.options; return e.angleLines.display || e.pointLabels.display ? t.chart.data.labels.length : 0 } function Fi(t) { var e = t.ticks; return e.display && t.display ? Pi(e.fontSize, st.global.defaultFontSize) + 2 * e.backdropPaddingY : 0 } function Li(t, e, i, n, a) { return t === n || t === a ? { start: e - i / 2, end: e + i / 2 } : t < n || t > a ? { start: e - i, end: e } : { start: e, end: e + i } } function Ri(t) { return 0 === t || 180 === t ? "center" : t < 180 ? "left" : "right" } function Oi(t, e, i, n) { var a, o, r = i.y + n / 2; if (ut.isArray(e)) for (a = 0, o = e.length; a < o; ++a)t.fillText(e[a], i.x, r), r += n; else t.fillText(e, i.x, r) } function zi(t, e, i) { 90 === t || 270 === t ? i.y -= e.h / 2 : (t > 270 || t < 90) && (i.y -= e.h) } function Bi(t) { return ut.isNumber(t) ? t : 0 } var Ni = bi.extend({ setDimensions: function () { var t = this; t.width = t.maxWidth, t.height = t.maxHeight, t.paddingTop = Fi(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, i = Number.POSITIVE_INFINITY, n = Number.NEGATIVE_INFINITY; ut.each(e.data.datasets, function (a, o) { if (e.isDatasetVisible(o)) { var r = e.getDatasetMeta(o); ut.each(a.data, function (e, a) { var o = +t.getRightValue(e); isNaN(o) || r.data[a].hidden || (i = Math.min(o, i), n = Math.max(o, n)) }) } }), t.min = i === Number.POSITIVE_INFINITY ? 0 : i, t.max = n === Number.NEGATIVE_INFINITY ? 0 : n, t.handleTickRangeOptions() }, _computeTickLimit: function () { return Math.ceil(this.drawingArea / Fi(this.options)) }, convertTicksToLabels: function () { var t = this; bi.prototype.convertTicksToLabels.call(t), t.pointLabels = t.chart.data.labels.map(t.options.pointLabels.callback, t) }, 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, i, n, a = ut.options._parseFont(t.options.pointLabels), o = { l: 0, r: t.width, t: 0, b: t.height - t.paddingTop }, r = {}; t.ctx.font = a.string, t._pointLabelSizes = []; var s, l, d, u = Ti(t); for (e = 0; e < u; e++) { n = t.getPointPosition(e, t.drawingArea + 5), s = t.ctx, l = a.lineHeight, d = t.pointLabels[e] || "", i = ut.isArray(d) ? { w: ut.longestText(s, s.font, d), h: d.length * l } : { w: s.measureText(d).width, h: l }, t._pointLabelSizes[e] = i; var h = t.getIndexAngle(e), c = ut.toDegrees(h) % 360, f = Li(c, n.x, i.w, 0, 180), g = Li(c, n.y, i.h, 90, 270); f.start < o.l && (o.l = f.start, r.l = h), f.end > o.r && (o.r = f.end, r.r = h), g.start < o.t && (o.t = g.start, r.t = h), g.end > o.b && (o.b = g.end, r.b = h) } t.setReductions(t.drawingArea, o, r) }(this) : this.setCenterPoint(0, 0, 0, 0) }, setReductions: function (t, e, i) { var n = this, a = e.l / Math.sin(i.l), o = Math.max(e.r - n.width, 0) / Math.sin(i.r), r = -e.t / Math.cos(i.t), s = -Math.max(e.b - (n.height - n.paddingTop), 0) / Math.cos(i.b); a = Bi(a), o = Bi(o), r = Bi(r), s = Bi(s), n.drawingArea = Math.min(Math.floor(t - (a + o) / 2), Math.floor(t - (r + s) / 2)), n.setCenterPoint(a, o, r, s) }, setCenterPoint: function (t, e, i, n) { var a = this, o = a.width - e - a.drawingArea, r = t + a.drawingArea, s = i + a.drawingArea, l = a.height - a.paddingTop - n - a.drawingArea; a.xCenter = Math.floor((r + o) / 2 + a.left), a.yCenter = Math.floor((s + l) / 2 + a.top + a.paddingTop) }, getIndexAngle: function (t) { return t * (2 * Math.PI / Ti(this)) + (this.chart.options && this.chart.options.startAngle ? this.chart.options.startAngle : 0) * Math.PI * 2 / 360 }, getDistanceFromCenterForValue: function (t) { var e = this; if (null === t) return 0; var i = e.drawingArea / (e.max - e.min); return e.options.ticks.reverse ? (e.max - t) * i : (t - e.min) * i }, getPointPosition: function (t, e) { var i = this.getIndexAngle(t) - Math.PI / 2; return { x: Math.cos(i) * e + this.xCenter, y: Math.sin(i) * e + this.yCenter } }, getPointPositionForValue: function (t, e) { return this.getPointPosition(t, this.getDistanceFromCenterForValue(e)) }, getBasePosition: function () { var t = this.min, e = this.max; return this.getPointPositionForValue(0, this.beginAtZero ? 0 : t < 0 && e < 0 ? e : t > 0 && e > 0 ? t : 0) }, draw: function () { var t = this, e = t.options, i = e.gridLines, n = e.ticks; if (e.display) { var a = t.ctx, o = this.getIndexAngle(0), r = ut.options._parseFont(n); (e.angleLines.display || e.pointLabels.display) && function (t) { var e = t.ctx, i = t.options, n = i.angleLines, a = i.gridLines, o = i.pointLabels, r = Pi(n.lineWidth, a.lineWidth), s = Pi(n.color, a.color), l = Fi(i); e.save(), e.lineWidth = r, e.strokeStyle = s, e.setLineDash && (e.setLineDash(Ai([n.borderDash, a.borderDash, []])), e.lineDashOffset = Ai([n.borderDashOffset, a.borderDashOffset, 0])); var d = t.getDistanceFromCenterForValue(i.ticks.reverse ? t.min : t.max), u = ut.options._parseFont(o); e.font = u.string, e.textBaseline = "middle"; for (var h = Ti(t) - 1; h >= 0; h--) { if (n.display && r && s) { var c = t.getPointPosition(h, d); e.beginPath(), e.moveTo(t.xCenter, t.yCenter), e.lineTo(c.x, c.y), e.stroke() } if (o.display) { var f = 0 === h ? l / 2 : 0, g = t.getPointPosition(h, d + f + 5), p = Ii(o.fontColor, h, st.global.defaultFontColor); e.fillStyle = p; var m = t.getIndexAngle(h), v = ut.toDegrees(m); e.textAlign = Ri(v), zi(v, t._pointLabelSizes[h], g), Oi(e, t.pointLabels[h] || "", g, u.lineHeight) } } e.restore() }(t), ut.each(t.ticks, function (e, s) { if (s > 0 || n.reverse) { var l = t.getDistanceFromCenterForValue(t.ticksAsNumbers[s]); if (i.display && 0 !== s && function (t, e, i, n) { var a, o = t.ctx, r = e.circular, s = Ti(t), l = Ii(e.color, n - 1), d = Ii(e.lineWidth, n - 1); if ((r || s) && l && d) { if (o.save(), o.strokeStyle = l, o.lineWidth = d, o.setLineDash && (o.setLineDash(e.borderDash || []), o.lineDashOffset = e.borderDashOffset || 0), o.beginPath(), r) o.arc(t.xCenter, t.yCenter, i, 0, 2 * Math.PI); else { a = t.getPointPosition(0, i), o.moveTo(a.x, a.y); for (var u = 1; u < s; u++)a = t.getPointPosition(u, i), o.lineTo(a.x, a.y) } o.closePath(), o.stroke(), o.restore() } }(t, i, l, s), n.display) { var d = Pi(n.fontColor, st.global.defaultFontColor); if (a.font = r.string, a.save(), a.translate(t.xCenter, t.yCenter), a.rotate(o), n.showLabelBackdrop) { var u = a.measureText(e).width; a.fillStyle = n.backdropColor, a.fillRect(-u / 2 - n.backdropPaddingX, -l - r.size / 2 - n.backdropPaddingY, u + 2 * n.backdropPaddingX, r.size + 2 * n.backdropPaddingY) } a.textAlign = "center", a.textBaseline = "middle", a.fillStyle = d, a.fillText(e, 0, -l), a.restore() } } }) } } }), Wi = Di; Ni._defaults = Wi; var Vi = ut.valueOrDefault, Ei = Number.MIN_SAFE_INTEGER || -9007199254740991, Hi = Number.MAX_SAFE_INTEGER || 9007199254740991, ji = { millisecond: { common: !0, size: 1, steps: [1, 2, 5, 10, 20, 50, 100, 250, 500] }, second: { common: !0, size: 1e3, steps: [1, 2, 5, 10, 15, 30] }, minute: { common: !0, size: 6e4, steps: [1, 2, 5, 10, 15, 30] }, hour: { common: !0, size: 36e5, steps: [1, 2, 3, 6, 12] }, day: { common: !0, size: 864e5, steps: [1, 2, 5] }, week: { common: !1, size: 6048e5, steps: [1, 2, 3, 4] }, month: { common: !0, size: 2628e6, steps: [1, 2, 3] }, quarter: { common: !1, size: 7884e6, steps: [1, 2, 3, 4] }, year: { common: !0, size: 3154e7 } }, qi = Object.keys(ji); function Yi(t, e) { return t - e } function Ui(t) { var e, i, n, a = {}, o = []; for (e = 0, i = t.length; e < i; ++e)a[n = t[e]] || (a[n] = !0, o.push(n)); return o } function Xi(t, e, i, n) { var a = function (t, e, i) { for (var n, a, o, r = 0, s = t.length - 1; r >= 0 && r <= s;) { if (a = t[(n = r + s >> 1) - 1] || null, o = t[n], !a) return { lo: null, hi: o }; if (o[e] < i) r = n + 1; else { if (!(a[e] > i)) return { lo: a, hi: o }; s = n - 1 } } return { lo: o, hi: null } }(t, e, i), o = a.lo ? a.hi ? a.lo : t[t.length - 2] : t[0], r = a.lo ? a.hi ? a.hi : t[t.length - 1] : t[1], s = r[e] - o[e], l = s ? (i - o[e]) / s : 0, d = (r[n] - o[n]) * l; return o[n] + d } function Ki(t, e) { var i = t._adapter, n = t.options.time, a = n.parser, o = a || n.format, r = e; return "function" == typeof a && (r = a(r)), ut.isFinite(r) || (r = "string" == typeof o ? i.parse(r, o) : i.parse(r)), null !== r ? +r : (a || "function" != typeof o || (r = o(e), ut.isFinite(r) || (r = i.parse(r))), r) } function Gi(t, e) { if (ut.isNullOrUndef(e)) return null; var i = t.options.time, n = Ki(t, t.getRightValue(e)); return null === n ? n : (i.round && (n = +t._adapter.startOf(n, i.round)), n) } function Zi(t) { for (var e = qi.indexOf(t) + 1, i = qi.length; e < i; ++e)if (ji[qi[e]].common) return qi[e] } function $i(t, e, i, n) { var a, o = t._adapter, r = t.options, s = r.time, l = s.unit || function (t, e, i, n) { var a, o, r, s = qi.length; for (a = qi.indexOf(t); a < s - 1; ++a)if (r = (o = ji[qi[a]]).steps ? o.steps[o.steps.length - 1] : Hi, o.common && Math.ceil((i - e) / (r * o.size)) <= n) return qi[a]; return qi[s - 1] }(s.minUnit, e, i, n), d = Zi(l), u = Vi(s.stepSize, s.unitStepSize), h = "week" === l && s.isoWeekday, c = r.ticks.major.enabled, f = ji[l], g = e, p = i, m = []; for (u || (u = function (t, e, i, n) { var a, o, r, s = e - t, l = ji[i], d = l.size, u = l.steps; if (!u) return Math.ceil(s / (n * d)); for (a = 0, o = u.length; a < o && (r = u[a], !(Math.ceil(s / (d * r)) <= n)); ++a); return r }(e, i, l, n)), h && (g = +o.startOf(g, "isoWeek", h), p = +o.startOf(p, "isoWeek", h)), g = +o.startOf(g, h ? "day" : l), (p = +o.startOf(p, h ? "day" : l)) < i && (p = +o.add(p, 1, l)), a = g, c && d && !h && !s.round && (a = +o.startOf(a, d), a = +o.add(a, ~~((g - a) / (f.size * u)) * u, l)); a < p; a = +o.add(a, u, l))m.push(+a); return m.push(+a), m } var Ji = fi.extend({ initialize: function () { this.mergeTicksOptions(), fi.prototype.initialize.call(this) }, update: function () { var t = this.options, e = t.time || (t.time = {}), i = this._adapter = new si._date(t.adapters.date); return e.format && console.warn("options.time.format is deprecated and replaced by options.time.parser."), ut.mergeIf(e.displayFormats, i.formats()), fi.prototype.update.apply(this, arguments) }, getRightValue: function (t) { return t && void 0 !== t.t && (t = t.t), fi.prototype.getRightValue.call(this, t) }, determineDataLimits: function () { var t, e, i, n, a, o, r = this, s = r.chart, l = r._adapter, d = r.options.time, u = d.unit || "day", h = Hi, c = Ei, f = [], g = [], p = [], m = s.data.labels || []; for (t = 0, i = m.length; t < i; ++t)p.push(Gi(r, m[t])); for (t = 0, i = (s.data.datasets || []).length; t < i; ++t)if (s.isDatasetVisible(t)) if (a = s.data.datasets[t].data, ut.isObject(a[0])) for (g[t] = [], e = 0, n = a.length; e < n; ++e)o = Gi(r, a[e]), f.push(o), g[t][e] = o; else { for (e = 0, n = p.length; e < n; ++e)f.push(p[e]); g[t] = p.slice(0) } else g[t] = []; p.length && (p = Ui(p).sort(Yi), h = Math.min(h, p[0]), c = Math.max(c, p[p.length - 1])), f.length && (f = Ui(f).sort(Yi), h = Math.min(h, f[0]), c = Math.max(c, f[f.length - 1])), h = Gi(r, d.min) || h, c = Gi(r, d.max) || c, h = h === Hi ? +l.startOf(Date.now(), u) : h, c = c === Ei ? +l.endOf(Date.now(), u) + 1 : c, r.min = Math.min(h, c), r.max = Math.max(h + 1, c), r._horizontal = r.isHorizontal(), r._table = [], r._timestamps = { data: f, datasets: g, labels: p } }, buildTicks: function () { var t, e, i, n = this, a = n.min, o = n.max, r = n.options, s = r.time, l = [], d = []; switch (r.ticks.source) { case "data": l = n._timestamps.data; break; case "labels": l = n._timestamps.labels; break; case "auto": default: l = $i(n, a, o, n.getLabelCapacity(a)) }for ("ticks" === r.bounds && l.length && (a = l[0], o = l[l.length - 1]), a = Gi(n, s.min) || a, o = Gi(n, s.max) || o, t = 0, e = l.length; t < e; ++t)(i = l[t]) >= a && i <= o && d.push(i); return n.min = a, n.max = o, n._unit = s.unit || function (t, e, i, n, a) { var o, r; for (o = qi.length - 1; o >= qi.indexOf(i); o--)if (r = qi[o], ji[r].common && t._adapter.diff(a, n, r) >= e.length) return r; return qi[i ? qi.indexOf(i) : 0] }(n, d, s.minUnit, n.min, n.max), n._majorUnit = Zi(n._unit), n._table = function (t, e, i, n) { if ("linear" === n || !t.length) return [{ time: e, pos: 0 }, { time: i, pos: 1 }]; var a, o, r, s, l, d = [], u = [e]; for (a = 0, o = t.length; a < o; ++a)(s = t[a]) > e && s < i && u.push(s); for (u.push(i), a = 0, o = u.length; a < o; ++a)l = u[a + 1], r = u[a - 1], s = u[a], void 0 !== r && void 0 !== l && Math.round((l + r) / 2) === s || d.push({ time: s, pos: a / (o - 1) }); return d }(n._timestamps.data, a, o, r.distribution), n._offsets = function (t, e, i, n, a) { var o, r, s = 0, l = 0; return a.offset && e.length && (a.time.min || (o = Xi(t, "time", e[0], "pos"), s = 1 === e.length ? 1 - o : (Xi(t, "time", e[1], "pos") - o) / 2), a.time.max || (r = Xi(t, "time", e[e.length - 1], "pos"), l = 1 === e.length ? r : (r - Xi(t, "time", e[e.length - 2], "pos")) / 2)), { start: s, end: l } }(n._table, d, 0, 0, r), r.ticks.reverse && d.reverse(), function (t, e, i) { var n, a, o, r, s = []; for (n = 0, a = e.length; n < a; ++n)o = e[n], r = !!i && o === +t._adapter.startOf(o, i), s.push({ value: o, major: r }); return s }(n, d, n._majorUnit) }, getLabelForIndex: function (t, e) { var i = this, n = i._adapter, a = i.chart.data, o = i.options.time, r = a.labels && t < a.labels.length ? a.labels[t] : "", s = a.datasets[e].data[t]; return ut.isObject(s) && (r = i.getRightValue(s)), o.tooltipFormat ? n.format(Ki(i, r), o.tooltipFormat) : "string" == typeof r ? r : n.format(Ki(i, r), o.displayFormats.datetime) }, tickFormatFunction: function (t, e, i, n) { var a = this._adapter, o = this.options, r = o.time.displayFormats, s = r[this._unit], l = this._majorUnit, d = r[l], u = +a.startOf(t, l), h = o.ticks.major, c = h.enabled && l && d && t === u, f = a.format(t, n || (c ? d : s)), g = c ? h : o.ticks.minor, p = Vi(g.callback, g.userCallback); return p ? p(f, e, i) : f }, convertTicksToLabels: function (t) { var e, i, n = []; for (e = 0, i = t.length; e < i; ++e)n.push(this.tickFormatFunction(t[e].value, e, t)); return n }, getPixelForOffset: function (t) { var e = this, i = e.options.ticks.reverse, n = e._horizontal ? e.width : e.height, a = e._horizontal ? i ? e.right : e.left : i ? e.bottom : e.top, o = Xi(e._table, "time", t, "pos"), r = n * (e._offsets.start + o) / (e._offsets.start + 1 + e._offsets.end); return i ? a - r : a + r }, getPixelForValue: function (t, e, i) { var n = null; if (void 0 !== e && void 0 !== i && (n = this._timestamps.datasets[i][e]), null === n && (n = Gi(this, t)), null !== n) return this.getPixelForOffset(n) }, 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, i = e._horizontal ? e.width : e.height, n = e._horizontal ? e.left : e.top, a = (i ? (t - n) / i : 0) * (e._offsets.start + 1 + e._offsets.start) - e._offsets.end, o = Xi(e._table, "pos", a, "time"); return e._adapter._create(o) }, getLabelWidth: function (t) { var e = this.options.ticks, i = this.ctx.measureText(t).width, n = ut.toRadians(e.maxRotation), a = Math.cos(n), o = Math.sin(n); return i * a + Vi(e.fontSize, st.global.defaultFontSize) * o }, getLabelCapacity: function (t) { var e = this, i = e.options.time.displayFormats.millisecond, n = e.tickFormatFunction(t, 0, [], i), a = e.getLabelWidth(n), o = e.isHorizontal() ? e.width : e.height, r = Math.floor(o / a); return r > 0 ? r : 1 } }), Qi = { position: "bottom", distribution: "linear", bounds: "data", adapters: {}, time: { parser: !1, format: !1, unit: !1, round: !1, displayFormat: !1, isoWeekday: !1, minUnit: "millisecond", displayFormats: {} }, ticks: { autoSkip: !1, source: "auto", major: { enabled: !1 } } }; Ji._defaults = Qi; var tn = { category: gi, linear: yi, logarithmic: Ci, radialLinear: Ni, time: Ji }, en = { 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" }; si._date.override("function" == typeof t ? { _id: "moment", formats: function () { return en }, parse: function (e, i) { return "string" == typeof e && "string" == typeof i ? e = t(e, i) : e instanceof t || (e = t(e)), e.isValid() ? e.valueOf() : null }, format: function (e, i) { return t(e).format(i) }, add: function (e, i, n) { return t(e).add(i, n).valueOf() }, diff: function (e, i, n) { return t.duration(t(e).diff(t(i))).as(n) }, startOf: function (e, i, n) { return e = t(e), "isoWeek" === i ? e.isoWeekday(n).valueOf() : e.startOf(i).valueOf() }, endOf: function (e, i) { return t(e).endOf(i).valueOf() }, _create: function (e) { return t(e) } } : {}), st._set("global", { plugins: { filler: { propagate: !0 } } }); var nn = { dataset: function (t) { var e = t.fill, i = t.chart, n = i.getDatasetMeta(e), a = n && i.isDatasetVisible(e) && n.dataset._children || [], o = a.length || 0; return o ? function (t, e) { return e < o && a[e]._view || null } : null }, boundary: function (t) { var e = t.boundary, i = e ? e.x : null, n = e ? e.y : null; return function (t) { return { x: null === i ? t.x : i, y: null === n ? t.y : n } } } }; function an(t, e, i) { var n, a = t._model || {}, o = a.fill; if (void 0 === o && (o = !!a.backgroundColor), !1 === o || null === o) return !1; if (!0 === o) return "origin"; if (n = parseFloat(o, 10), isFinite(n) && Math.floor(n) === n) return "-" !== o[0] && "+" !== o[0] || (n = e + n), !(n === e || n < 0 || n >= i) && n; 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 on(t) { var e, i = t.el._model || {}, n = t.el._scale || {}, a = t.fill, o = null; if (isFinite(a)) return null; if ("start" === a ? o = void 0 === i.scaleBottom ? n.bottom : i.scaleBottom : "end" === a ? o = void 0 === i.scaleTop ? n.top : i.scaleTop : void 0 !== i.scaleZero ? o = i.scaleZero : n.getBasePosition ? o = n.getBasePosition() : n.getBasePixel && (o = n.getBasePixel()), null != o) { if (void 0 !== o.x && void 0 !== o.y) return o; if (ut.isFinite(o)) return { x: (e = n.isHorizontal()) ? o : null, y: e ? null : o } } return null } function rn(t, e, i) { var n, a = t[e].fill, o = [e]; if (!i) return a; for (; !1 !== a && -1 === o.indexOf(a);) { if (!isFinite(a)) return a; if (!(n = t[a])) return !1; if (n.visible) return a; o.push(a), a = n.fill } return !1 } function sn(t) { var e = t.fill, i = "dataset"; return !1 === e ? null : (isFinite(e) || (i = "boundary"), nn[i](t)) } function ln(t) { return t && !t.skip } function dn(t, e, i, n, a) { var o; if (n && a) { for (t.moveTo(e[0].x, e[0].y), o = 1; o < n; ++o)ut.canvas.lineTo(t, e[o - 1], e[o]); for (t.lineTo(i[a - 1].x, i[a - 1].y), o = a - 1; o > 0; --o)ut.canvas.lineTo(t, i[o], i[o - 1], !0) } } var un = { id: "filler", afterDatasetsUpdate: function (t, e) { var i, n, a, o, r = (t.data.datasets || []).length, s = e.propagate, l = []; for (n = 0; n < r; ++n)o = null, (a = (i = t.getDatasetMeta(n)).dataset) && a._model && a instanceof Wt.Line && (o = { visible: t.isDatasetVisible(n), fill: an(a, n, r), chart: t, el: a }), i.$filler = o, l.push(o); for (n = 0; n < r; ++n)(o = l[n]) && (o.fill = rn(l, n, s), o.boundary = on(o), o.mapper = sn(o)) }, beforeDatasetDraw: function (t, e) { var i = e.meta.$filler; if (i) { var n = t.ctx, a = i.el, o = a._view, r = a._children || [], s = i.mapper, l = o.backgroundColor || st.global.defaultColor; s && l && r.length && (ut.canvas.clipArea(n, t.chartArea), function (t, e, i, n, a, o) { var r, s, l, d, u, h, c, f = e.length, g = n.spanGaps, p = [], m = [], v = 0, b = 0; for (t.beginPath(), r = 0, s = f + !!o; r < s; ++r)u = i(d = e[l = r % f]._view, l, n), h = ln(d), c = ln(u), h && c ? (v = p.push(d), b = m.push(u)) : v && b && (g ? (h && p.push(d), c && m.push(u)) : (dn(t, p, m, v, b), v = b = 0, p = [], m = [])); dn(t, p, m, v, b), t.closePath(), t.fillStyle = a, t.fill() }(n, r, s, o, l, a._loop), ut.canvas.unclipArea(n)) } } }, hn = ut.noop, cn = ut.valueOrDefault; function fn(t, e) { return t.usePointStyle && t.boxWidth > e ? e : t.boxWidth } st._set("global", { legend: { display: !0, position: "top", fullWidth: !0, reverse: !1, weight: 1e3, onClick: function (t, e) { var i = e.datasetIndex, n = this.chart, a = n.getDatasetMeta(i); a.hidden = null === a.hidden ? !n.data.datasets[i].hidden : null, n.update() }, onHover: null, onLeave: null, labels: { boxWidth: 40, padding: 10, generateLabels: function (t) { var e = t.data; return ut.isArray(e.datasets) ? e.datasets.map(function (e, i) { return { text: e.label, fillStyle: ut.isArray(e.backgroundColor) ? e.backgroundColor[0] : e.backgroundColor, hidden: !t.isDatasetVisible(i), lineCap: e.borderCapStyle, lineDash: e.borderDash, lineDashOffset: e.borderDashOffset, lineJoin: e.borderJoinStyle, lineWidth: e.borderWidth, strokeStyle: e.borderColor, pointStyle: e.pointStyle, datasetIndex: i } }, this) : [] } } }, legendCallback: function (t) { var e = []; e.push('<ul class="' + t.id + '-legend">'); for (var i = 0; i < t.data.datasets.length; i++)e.push('<li><span style="background-color:' + t.data.datasets[i].backgroundColor + '"></span>'), t.data.datasets[i].label && e.push(t.data.datasets[i].label), e.push("</li>"); return e.push("</ul>"), e.join("") } }); var gn = pt.extend({ initialize: function (t) { ut.extend(this, t), this.legendHitBoxes = [], this._hoveredItem = null, this.doughnutMode = !1 }, beforeUpdate: hn, update: function (t, e, i) { var n = this; return n.beforeUpdate(), n.maxWidth = t, n.maxHeight = e, n.margins = i, n.beforeSetDimensions(), n.setDimensions(), n.afterSetDimensions(), n.beforeBuildLabels(), n.buildLabels(), n.afterBuildLabels(), n.beforeFit(), n.fit(), n.afterFit(), n.afterUpdate(), n.minSize }, afterUpdate: hn, beforeSetDimensions: hn, 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: hn, beforeBuildLabels: hn, buildLabels: function () { var t = this, e = t.options.labels || {}, i = ut.callback(e.generateLabels, [t.chart], t) || []; e.filter && (i = i.filter(function (i) { return e.filter(i, t.chart.data) })), t.options.reverse && i.reverse(), t.legendItems = i }, afterBuildLabels: hn, beforeFit: hn, fit: function () { var t = this, e = t.options, i = e.labels, n = e.display, a = t.ctx, o = ut.options._parseFont(i), r = o.size, s = t.legendHitBoxes = [], l = t.minSize, d = t.isHorizontal(); if (d ? (l.width = t.maxWidth, l.height = n ? 10 : 0) : (l.width = n ? 10 : 0, l.height = t.maxHeight), n) if (a.font = o.string, d) { var u = t.lineWidths = [0], h = 0; a.textAlign = "left", a.textBaseline = "top", ut.each(t.legendItems, function (t, e) { var n = fn(i, r) + r / 2 + a.measureText(t.text).width; (0 === e || u[u.length - 1] + n + i.padding > l.width) && (h += r + i.padding, u[u.length - (e > 0 ? 0 : 1)] = i.padding), s[e] = { left: 0, top: 0, width: n, height: r }, u[u.length - 1] += n + i.padding }), l.height += h } else { var c = i.padding, f = t.columnWidths = [], g = i.padding, p = 0, m = 0, v = r + c; ut.each(t.legendItems, function (t, e) { var n = fn(i, r) + r / 2 + a.measureText(t.text).width; e > 0 && m + v > l.height - c && (g += p + i.padding, f.push(p), p = 0, m = 0), p = Math.max(p, n), m += v, s[e] = { left: 0, top: 0, width: n, height: r } }), g += p, f.push(p), l.width += g } t.width = l.width, t.height = l.height }, afterFit: hn, isHorizontal: function () { return "top" === this.options.position || "bottom" === this.options.position }, draw: function () { var t = this, e = t.options, i = e.labels, n = st.global, a = n.defaultColor, o = n.elements.line, r = t.width, s = t.lineWidths; if (e.display) { var l, d = t.ctx, u = cn(i.fontColor, n.defaultFontColor), h = ut.options._parseFont(i), c = h.size; d.textAlign = "left", d.textBaseline = "middle", d.lineWidth = .5, d.strokeStyle = u, d.fillStyle = u, d.font = h.string; var f = fn(i, c), g = t.legendHitBoxes, p = t.isHorizontal(); l = p ? { x: t.left + (r - s[0]) / 2 + i.padding, y: t.top + i.padding, line: 0 } : { x: t.left + i.padding, y: t.top + i.padding, line: 0 }; var m = c + i.padding; ut.each(t.legendItems, function (n, u) { var h = d.measureText(n.text).width, v = f + c / 2 + h, b = l.x, x = l.y; p ? u > 0 && b + v + i.padding > t.left + t.minSize.width && (x = l.y += m, l.line++, b = l.x = t.left + (r - s[l.line]) / 2 + i.padding) : u > 0 && x + m > t.top + t.minSize.height && (b = l.x = b + t.columnWidths[l.line] + i.padding, x = l.y = t.top + i.padding, l.line++), function (t, i, n) { if (!(isNaN(f) || f <= 0)) { d.save(); var r = cn(n.lineWidth, o.borderWidth); if (d.fillStyle = cn(n.fillStyle, a), d.lineCap = cn(n.lineCap, o.borderCapStyle), d.lineDashOffset = cn(n.lineDashOffset, o.borderDashOffset), d.lineJoin = cn(n.lineJoin, o.borderJoinStyle), d.lineWidth = r, d.strokeStyle = cn(n.strokeStyle, a), d.setLineDash && d.setLineDash(cn(n.lineDash, o.borderDash)), e.labels && e.labels.usePointStyle) { var s = f * Math.SQRT2 / 2, l = t + f / 2, u = i + c / 2; ut.canvas.drawPoint(d, n.pointStyle, s, l, u) } else 0 !== r && d.strokeRect(t, i, f, c), d.fillRect(t, i, f, c); d.restore() } }(b, x, n), g[u].left = b, g[u].top = x, function (t, e, i, n) { var a = c / 2, o = f + a + t, r = e + a; d.fillText(i.text, o, r), i.hidden && (d.beginPath(), d.lineWidth = 2, d.moveTo(o, r), d.lineTo(o + n, r), d.stroke()) }(b, x, n, h), p ? l.x += v + i.padding : l.y += m }) } }, _getLegendItemAt: function (t, e) { var i, n, a, o = this; if (t >= o.left && t <= o.right && e >= o.top && e <= o.bottom) for (a = o.legendHitBoxes, i = 0; i < a.length; ++i)if (t >= (n = a[i]).left && t <= n.left + n.width && e >= n.top && e <= n.top + n.height) return o.legendItems[i]; return null }, handleEvent: function (t) { var e, i = this, n = i.options, a = "mouseup" === t.type ? "click" : t.type; if ("mousemove" === a) { if (!n.onHover && !n.onLeave) return } else { if ("click" !== a) return; if (!n.onClick) return } e = i._getLegendItemAt(t.x, t.y), "click" === a ? e && n.onClick && n.onClick.call(i, t.native, e) : (n.onLeave && e !== i._hoveredItem && (i._hoveredItem && n.onLeave.call(i, t.native, i._hoveredItem), i._hoveredItem = e), n.onHover && e && n.onHover.call(i, t.native, e)) } }); function pn(t, e) { var i = new gn({ ctx: t.ctx, options: e, chart: t }); ke.configure(t, i, e), ke.addBox(t, i), t.legend = i } var mn = { id: "legend", _element: gn, beforeInit: function (t) { var e = t.options.legend; e && pn(t, e) }, beforeUpdate: function (t) { var e = t.options.legend, i = t.legend; e ? (ut.mergeIf(e, st.global.legend), i ? (ke.configure(t, i, e), i.options = e) : pn(t, e)) : i && (ke.removeBox(t, i), delete t.legend) }, afterEvent: function (t, e) { var i = t.legend; i && i.handleEvent(e) } }, vn = ut.noop; st._set("global", { title: { display: !1, fontStyle: "bold", fullWidth: !0, padding: 10, position: "top", text: "", weight: 2e3 } }); var bn = pt.extend({ initialize: function (t) { ut.extend(this, t), this.legendHitBoxes = [] }, beforeUpdate: vn, update: function (t, e, i) { var n = this; return n.beforeUpdate(), n.maxWidth = t, n.maxHeight = e, n.margins = i, n.beforeSetDimensions(), n.setDimensions(), n.afterSetDimensions(), n.beforeBuildLabels(), n.buildLabels(), n.afterBuildLabels(), n.beforeFit(), n.fit(), n.afterFit(), n.afterUpdate(), n.minSize }, afterUpdate: vn, beforeSetDimensions: vn, 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: vn, beforeBuildLabels: vn, buildLabels: vn, afterBuildLabels: vn, beforeFit: vn, fit: function () { var t = this, e = t.options, i = e.display, n = t.minSize, a = ut.isArray(e.text) ? e.text.length : 1, o = ut.options._parseFont(e), r = i ? a * o.lineHeight + 2 * e.padding : 0; t.isHorizontal() ? (n.width = t.maxWidth, n.height = r) : (n.width = r, n.height = t.maxHeight), t.width = n.width, t.height = n.height }, afterFit: vn, isHorizontal: function () { var t = this.options.position; return "top" === t || "bottom" === t }, draw: function () { var t = this, e = t.ctx, i = t.options; if (i.display) { var n, a, o, r = ut.options._parseFont(i), s = r.lineHeight, l = s / 2 + i.padding, d = 0, u = t.top, h = t.left, c = t.bottom, f = t.right; e.fillStyle = ut.valueOrDefault(i.fontColor, st.global.defaultFontColor), e.font = r.string, t.isHorizontal() ? (a = h + (f - h) / 2, o = u + l, n = f - h) : (a = "left" === i.position ? h + l : f - l, o = u + (c - u) / 2, n = c - u, d = Math.PI * ("left" === i.position ? -.5 : .5)), e.save(), e.translate(a, o), e.rotate(d), e.textAlign = "center", e.textBaseline = "middle"; var g = i.text; if (ut.isArray(g)) for (var p = 0, m = 0; m < g.length; ++m)e.fillText(g[m], 0, p, n), p += s; else e.fillText(g, 0, 0, n); e.restore() } } }); function xn(t, e) { var i = new bn({ ctx: t.ctx, options: e, chart: t }); ke.configure(t, i, e), ke.addBox(t, i), t.titleBlock = i } var yn = {}, kn = un, wn = mn, Mn = { id: "title", _element: bn, beforeInit: function (t) { var e = t.options.title; e && xn(t, e) }, beforeUpdate: function (t) { var e = t.options.title, i = t.titleBlock; e ? (ut.mergeIf(e, st.global.title), i ? (ke.configure(t, i, e), i.options = e) : xn(t, e)) : i && (ke.removeBox(t, i), delete t.titleBlock) } }; for (var _n in yn.filler = kn, yn.legend = wn, yn.title = Mn, ai.helpers = ut, function () { function t(t, e, i) { var n; return "string" == typeof t ? (n = parseInt(t, 10), -1 !== t.indexOf("%") && (n = n / 100 * e.parentNode[i])) : n = t, n } function e(t) { return null != t && "none" !== t } function i(i, n, a) { var o = document.defaultView, r = ut._getParentNode(i), s = o.getComputedStyle(i)[n], l = o.getComputedStyle(r)[n], d = e(s), u = e(l), h = Number.POSITIVE_INFINITY; return d || u ? Math.min(d ? t(s, i, a) : h, u ? t(l, r, a) : h) : "none" } ut.where = function (t, e) { if (ut.isArray(t) && Array.prototype.filter) return t.filter(e); var i = []; return ut.each(t, function (t) { e(t) && i.push(t) }), i }, ut.findIndex = Array.prototype.findIndex ? function (t, e, i) { return t.findIndex(e, i) } : function (t, e, i) { i = void 0 === i ? t : i; for (var n = 0, a = t.length; n < a; ++n)if (e.call(i, t[n], n, t)) return n; return -1 }, ut.findNextWhere = function (t, e, i) { ut.isNullOrUndef(i) && (i = -1); for (var n = i + 1; n < t.length; n++) { var a = t[n]; if (e(a)) return a } }, ut.findPreviousWhere = function (t, e, i) { ut.isNullOrUndef(i) && (i = t.length); for (var n = i - 1; n >= 0; n--) { var a = t[n]; if (e(a)) return a } }, ut.isNumber = function (t) { return !isNaN(parseFloat(t)) && isFinite(t) }, ut.almostEquals = function (t, e, i) { return Math.abs(t - e) < i }, ut.almostWhole = function (t, e) { var i = Math.round(t); return i - e < t && i + e > t }, ut.max = function (t) { return t.reduce(function (t, e) { return isNaN(e) ? t : Math.max(t, e) }, Number.NEGATIVE_INFINITY) }, ut.min = function (t) { return t.reduce(function (t, e) { return isNaN(e) ? t : Math.min(t, e) }, Number.POSITIVE_INFINITY) }, ut.sign = Math.sign ? function (t) { return Math.sign(t) } : function (t) { return 0 == (t = +t) || isNaN(t) ? t : t > 0 ? 1 : -1 }, ut.log10 = Math.log10 ? function (t) { return Math.log10(t) } : function (t) { var e = Math.log(t) * Math.LOG10E, i = Math.round(e); return t === Math.pow(10, i) ? i : e }, ut.toRadians = function (t) { return t * (Math.PI / 180) }, ut.toDegrees = function (t) { return t * (180 / Math.PI) }, ut._decimalPlaces = function (t) { if (ut.isFinite(t)) { for (var e = 1, i = 0; Math.round(t * e) / e !== t;)e *= 10, i++; return i } }, ut.getAngleFromPoint = function (t, e) { var i = e.x - t.x, n = e.y - t.y, a = Math.sqrt(i * i + n * n), o = Math.atan2(n, i); return o < -.5 * Math.PI && (o += 2 * Math.PI), { angle: o, distance: a } }, ut.distanceBetweenPoints = function (t, e) { return Math.sqrt(Math.pow(e.x - t.x, 2) + Math.pow(e.y - t.y, 2)) }, ut.aliasPixel = function (t) { return t % 2 == 0 ? 0 : .5 }, ut._alignPixel = function (t, e, i) { var n = t.currentDevicePixelRatio, a = i / 2; return Math.round((e - a) * n) / n + a }, ut.splineCurve = function (t, e, i, n) { var a = t.skip ? e : t, o = e, r = i.skip ? e : i, s = Math.sqrt(Math.pow(o.x - a.x, 2) + Math.pow(o.y - a.y, 2)), l = Math.sqrt(Math.pow(r.x - o.x, 2) + Math.pow(r.y - o.y, 2)), d = s / (s + l), u = l / (s + l), h = n * (d = isNaN(d) ? 0 : d), c = n * (u = isNaN(u) ? 0 : u); return { previous: { x: o.x - h * (r.x - a.x), y: o.y - h * (r.y - a.y) }, next: { x: o.x + c * (r.x - a.x), y: o.y + c * (r.y - a.y) } } }, ut.EPSILON = Number.EPSILON || 1e-14, ut.splineCurveMonotone = function (t) { var e, i, n, a, o, r, s, l, d, u = (t || []).map(function (t) { return { model: t._model, deltaK: 0, mK: 0 } }), h = u.length; for (e = 0; e < h; ++e)if (!(n = u[e]).model.skip) { if (i = e > 0 ? u[e - 1] : null, (a = e < h - 1 ? u[e + 1] : null) && !a.model.skip) { var c = a.model.x - n.model.x; n.deltaK = 0 !== c ? (a.model.y - n.model.y) / c : 0 } !i || i.model.skip ? n.mK = n.deltaK : !a || a.model.skip ? n.mK = i.deltaK : this.sign(i.deltaK) !== this.sign(n.deltaK) ? n.mK = 0 : n.mK = (i.deltaK + n.deltaK) / 2 } for (e = 0; e < h - 1; ++e)n = u[e], a = u[e + 1], n.model.skip || a.model.skip || (ut.almostEquals(n.deltaK, 0, this.EPSILON) ? n.mK = a.mK = 0 : (o = n.mK / n.deltaK, r = a.mK / n.deltaK, (l = Math.pow(o, 2) + Math.pow(r, 2)) <= 9 || (s = 3 / Math.sqrt(l), n.mK = o * s * n.deltaK, a.mK = r * s * n.deltaK))); for (e = 0; e < h; ++e)(n = u[e]).model.skip || (i = e > 0 ? u[e - 1] : null, a = e < h - 1 ? u[e + 1] : null, i && !i.model.skip && (d = (n.model.x - i.model.x) / 3, n.model.controlPointPreviousX = n.model.x - d, n.model.controlPointPreviousY = n.model.y - d * n.mK), a && !a.model.skip && (d = (a.model.x - n.model.x) / 3, n.model.controlPointNextX = n.model.x + d, n.model.controlPointNextY = n.model.y + d * n.mK)) }, ut.nextItem = function (t, e, i) { return i ? e >= t.length - 1 ? t[0] : t[e + 1] : e >= t.length - 1 ? t[t.length - 1] : t[e + 1] }, ut.previousItem = function (t, e, i) { return i ? e <= 0 ? t[t.length - 1] : t[e - 1] : e <= 0 ? t[0] : t[e - 1] }, ut.niceNum = function (t, e) { var i = Math.floor(ut.log10(t)), n = t / Math.pow(10, i); return (e ? n < 1.5 ? 1 : n < 3 ? 2 : n < 7 ? 5 : 10 : n <= 1 ? 1 : n <= 2 ? 2 : n <= 5 ? 5 : 10) * Math.pow(10, i) }, ut.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) }, ut.getRelativePosition = function (t, e) { var i, n, a = t.originalEvent || t, o = t.target || t.srcElement, r = o.getBoundingClientRect(), s = a.touches; s && s.length > 0 ? (i = s[0].clientX, n = s[0].clientY) : (i = a.clientX, n = a.clientY); var l = parseFloat(ut.getStyle(o, "padding-left")), d = parseFloat(ut.getStyle(o, "padding-top")), u = parseFloat(ut.getStyle(o, "padding-right")), h = parseFloat(ut.getStyle(o, "padding-bottom")), c = r.right - r.left - l - u, f = r.bottom - r.top - d - h; return { x: i = Math.round((i - r.left - l) / c * o.width / e.currentDevicePixelRatio), y: n = Math.round((n - r.top - d) / f * o.height / e.currentDevicePixelRatio) } }, ut.getConstraintWidth = function (t) { return i(t, "max-width", "clientWidth") }, ut.getConstraintHeight = function (t) { return i(t, "max-height", "clientHeight") }, ut._calculatePadding = function (t, e, i) { return (e = ut.getStyle(t, e)).indexOf("%") > -1 ? i * parseInt(e, 10) / 100 : parseInt(e, 10) }, ut._getParentNode = function (t) { var e = t.parentNode; return e && "[object ShadowRoot]" === e.toString() && (e = e.host), e }, ut.getMaximumWidth = function (t) { var e = ut._getParentNode(t); if (!e) return t.clientWidth; var i = e.clientWidth, n = i - ut._calculatePadding(e, "padding-left", i) - ut._calculatePadding(e, "padding-right", i), a = ut.getConstraintWidth(t); return isNaN(a) ? n : Math.min(n, a) }, ut.getMaximumHeight = function (t) { var e = ut._getParentNode(t); if (!e) return t.clientHeight; var i = e.clientHeight, n = i - ut._calculatePadding(e, "padding-top", i) - ut._calculatePadding(e, "padding-bottom", i), a = ut.getConstraintHeight(t); return isNaN(a) ? n : Math.min(n, a) }, ut.getStyle = function (t, e) { return t.currentStyle ? t.currentStyle[e] : document.defaultView.getComputedStyle(t, null).getPropertyValue(e) }, ut.retinaScale = function (t, e) { var i = t.currentDevicePixelRatio = e || "undefined" != typeof window && window.devicePixelRatio || 1; if (1 !== i) { var n = t.canvas, a = t.height, o = t.width; n.height = a * i, n.width = o * i, t.ctx.scale(i, i), n.style.height || n.style.width || (n.style.height = a + "px", n.style.width = o + "px") } }, ut.fontString = function (t, e, i) { return e + " " + t + "px " + i }, ut.longestText = function (t, e, i, n) { var a = (n = n || {}).data = n.data || {}, o = n.garbageCollect = n.garbageCollect || []; n.font !== e && (a = n.data = {}, o = n.garbageCollect = [], n.font = e), t.font = e; var r = 0; ut.each(i, function (e) { null != e && !0 !== ut.isArray(e) ? r = ut.measureText(t, a, o, r, e) : ut.isArray(e) && ut.each(e, function (e) { null == e || ut.isArray(e) || (r = ut.measureText(t, a, o, r, e)) }) }); var s = o.length / 2; if (s > i.length) { for (var l = 0; l < s; l++)delete a[o[l]]; o.splice(0, s) } return r }, ut.measureText = function (t, e, i, n, a) { var o = e[a]; return o || (o = e[a] = t.measureText(a).width, i.push(a)), o > n && (n = o), n }, ut.numberOfLabelLines = function (t) { var e = 1; return ut.each(t, function (t) { ut.isArray(t) && t.length > e && (e = t.length) }), e }, ut.color = X ? function (t) { return t instanceof CanvasGradient && (t = st.global.defaultColor), X(t) } : function (t) { return console.error("Color.js not found!"), t }, ut.getHoverColor = function (t) { return t instanceof CanvasPattern || t instanceof CanvasGradient ? t : ut.color(t).saturate(.5).darken(.1).rgbString() } }(), ai._adapters = si, ai.Animation = vt, ai.animationService = bt, ai.controllers = ue, ai.DatasetController = Mt, ai.defaults = st, ai.Element = pt, ai.elements = Wt, ai.Interaction = ve, ai.layouts = ke, ai.platform = Ve, ai.plugins = Ee, ai.Scale = fi, ai.scaleService = He, ai.Ticks = li, ai.Tooltip = Je, ai.helpers.each(tn, function (t, e) { ai.scaleService.registerScaleType(e, t, t._defaults) }), yn) yn.hasOwnProperty(_n) && ai.plugins.register(yn[_n]); ai.platform.initialize(); var Cn = ai; return "undefined" != typeof window && (window.Chart = ai), ai.Chart = ai, ai.Legend = yn.legend._element, ai.Title = yn.title._element, ai.pluginService = ai.plugins, ai.PluginBase = ai.Element.extend({}), ai.canvasHelpers = ai.helpers.canvas, ai.layoutService = ai.layouts, ai.LinearScaleBase = bi, ai.helpers.each(["Bar", "Bubble", "Doughnut", "Line", "PolarArea", "Radar", "Scatter"], function (t) { ai[t] = function (e, i) { return new ai(e, ai.helpers.merge(i || {}, { type: t.charAt(0).toLowerCase() + t.slice(1) })) } }), Cn });
/*! jquery.classycountdown v1.0.1
* https://github.com/ArsenBespalov/jquery.classycountdown */
!function (d) { d.fn.ClassyCountdown = function (o, e) { var t, n, s, a, l, f = d(this), g = !1, i = { end: void 0, now: d.now(), labels: !0, labelsOptions: { lang: { days: "Days", hours: "Hours", minutes: "Minutes", seconds: "Seconds" }, style: "font-size: 0.5em;" }, style: { element: "", labels: !1, textResponsive: .5, days: { gauge: { thickness: .02, bgColor: "rgba(0, 0, 0, 0)", fgColor: "rgba(0, 0, 0, 1)", lineCap: "butt" }, textCSS: "" }, hours: { gauge: { thickness: .02, bgColor: "rgba(0, 0, 0, 0)", fgColor: "rgba(0, 0, 0, 1)", lineCap: "butt" }, textCSS: "" }, minutes: { gauge: { thickness: .02, bgColor: "rgba(0, 0, 0, 0)", fgColor: "rgba(0, 0, 0, 1)", lineCap: "butt" }, textCSS: "" }, seconds: { gauge: { thickness: .02, bgColor: "rgba(0, 0, 0, 0)", fgColor: "rgba(0, 0, 0, 1)", lineCap: "butt" }, textCSS: "" } }, onEndCallback: function () { } }; function r() { t = Math.floor(l / 864e5), n = Math.floor(l % 86400 / 3600), s = Math.floor(l % 86400 % 3600 / 60), a = Math.floor(l % 86400 % 3600 % 60 % 60) } function C() { l--, r(), l <= 0 && (g || (g = !0, i.onEndCallback()), a = s = n = t = 0), f.find(".ClassyCountdown-days input").val(365 - t).trigger("change"), f.find(".ClassyCountdown-hours input").val(24 - n).trigger("change"), f.find(".ClassyCountdown-minutes input").val(60 - s).trigger("change"), f.find(".ClassyCountdown-seconds input").val(60 - a).trigger("change"), f.find(".ClassyCountdown-days .ClassyCountdown-value > div").html(t), f.find(".ClassyCountdown-hours .ClassyCountdown-value > div").html(n), f.find(".ClassyCountdown-minutes .ClassyCountdown-value > div").html(s), f.find(".ClassyCountdown-seconds .ClassyCountdown-value > div").html(a) } function u() { f.find(".ClassyCountdown-wrapper > div").each(function () { d(this).css("height", d(this).width() + "px") }), i.style.textResponsive && f.find(".ClassyCountdown-value").css("font-size", Math.floor(f.find("> div").eq(0).width() * i.style.textResponsive / 10) + "px"), f.find(".ClassyCountdown-value").each(function () { d(this).css("margin-top", Math.floor(0 - parseInt(d(this).height()) / 2) + "px") }), f.find(".ClassyCountdown-days input").trigger("change"), f.find(".ClassyCountdown-hours input").trigger("change"), f.find(".ClassyCountdown-minutes input").trigger("change"), f.find(".ClassyCountdown-seconds input").trigger("change") } o.theme && (i = d.extend(!0, i, function (o) { switch (o) { case "flat-colors": return { labels: !0, style: { element: "", textResponsive: .5, days: { gauge: { thickness: .01, bgColor: "rgba(0,0,0,0.05)", fgColor: "#1abc9c" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" }, hours: { gauge: { thickness: .01, bgColor: "rgba(0,0,0,0.05)", fgColor: "#2980b9" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" }, minutes: { gauge: { thickness: .01, bgColor: "rgba(0,0,0,0.05)", fgColor: "#8e44ad" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" }, seconds: { gauge: { thickness: .01, bgColor: "rgba(0,0,0,0.05)", fgColor: "#f39c12" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" } } }; case "flat-colors-wide": return { labels: !0, style: { element: "", textResponsive: .5, days: { gauge: { thickness: .03, bgColor: "rgba(0,0,0,0.05)", fgColor: "#1abc9c" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" }, hours: { gauge: { thickness: .03, bgColor: "rgba(0,0,0,0.05)", fgColor: "#2980b9" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" }, minutes: { gauge: { thickness: .03, bgColor: "rgba(0,0,0,0.05)", fgColor: "#8e44ad" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" }, seconds: { gauge: { thickness: .03, bgColor: "rgba(0,0,0,0.05)", fgColor: "#f39c12" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" } } }; case "flat-colors-very-wide": return { labels: !0, style: { element: "", textResponsive: .5, days: { gauge: { thickness: .1, bgColor: "rgba(255,255,255,.3)", fgColor: "#1abc9c" }, textCSS: "font-weight:600;color:#fff;" }, hours: { gauge: { thickness: .1, bgColor: "rgba(255,255,255,.3)", fgColor: "#2980b9" }, textCSS: "font-weight:600;color:#fff;" }, minutes: { gauge: { thickness: .1, bgColor: "rgba(255,255,255,.3)", fgColor: "#8e44ad" }, textCSS: "font-weight:600;color:#fff;" }, seconds: { gauge: { thickness: .1, bgColor: "rgba(255,255,255,.3)", fgColor: "#f39c12" }, textCSS: "font-weight:600;color:#fff;" } } }; case "flat-colors-black": return { labels: !0, style: { element: "", textResponsive: .5, days: { gauge: { thickness: .25, bgColor: "rgba(0,0,0,0.05)", fgColor: "#1abc9c", lineCap: "round" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" }, hours: { gauge: { thickness: .25, bgColor: "rgba(0,0,0,0.05)", fgColor: "#2980b9", lineCap: "round" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" }, minutes: { gauge: { thickness: .25, bgColor: "rgba(0,0,0,0.05)", fgColor: "#8e44ad", lineCap: "round" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" }, seconds: { gauge: { thickness: .25, bgColor: "rgba(0,0,0,0.05)", fgColor: "#f39c12", lineCap: "round" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" } } }; case "black": return { labels: !0, style: { element: "", textResponsive: .5, days: { gauge: { thickness: .01, bgColor: "rgba(0,0,0,0.05)", fgColor: "#222" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" }, hours: { gauge: { thickness: .01, bgColor: "rgba(0,0,0,0.05)", fgColor: "#222" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" }, minutes: { gauge: { thickness: .01, bgColor: "rgba(0,0,0,0.05)", fgColor: "#222" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" }, seconds: { gauge: { thickness: .01, bgColor: "rgba(0,0,0,0.05)", fgColor: "#222" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" } } }; case "black-wide": return { labels: !0, style: { element: "", textResponsive: .5, days: { gauge: { thickness: .03, bgColor: "rgba(0,0,0,0.05)", fgColor: "#222" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" }, hours: { gauge: { thickness: .03, bgColor: "rgba(0,0,0,0.05)", fgColor: "#222" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" }, minutes: { gauge: { thickness: .03, bgColor: "rgba(0,0,0,0.05)", fgColor: "#222" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" }, seconds: { gauge: { thickness: .03, bgColor: "rgba(0,0,0,0.05)", fgColor: "#222" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" } } }; case "black-very-wide": return { labels: !0, style: { element: "", textResponsive: .5, days: { gauge: { thickness: .17, bgColor: "rgba(0,0,0,0.05)", fgColor: "#222" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" }, hours: { gauge: { thickness: .17, bgColor: "rgba(0,0,0,0.05)", fgColor: "#222" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" }, minutes: { gauge: { thickness: .17, bgColor: "rgba(0,0,0,0.05)", fgColor: "#222" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" }, seconds: { gauge: { thickness: .17, bgColor: "rgba(0,0,0,0.05)", fgColor: "#222" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" } } }; case "black-black": return { labels: !0, style: { element: "", textResponsive: .5, days: { gauge: { thickness: .25, bgColor: "rgba(0,0,0,0.05)", fgColor: "#222", lineCap: "round" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" }, hours: { gauge: { thickness: .25, bgColor: "rgba(0,0,0,0.05)", fgColor: "#222", lineCap: "round" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" }, minutes: { gauge: { thickness: .25, bgColor: "rgba(0,0,0,0.05)", fgColor: "#222", lineCap: "round" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" }, seconds: { gauge: { thickness: .25, bgColor: "rgba(0,0,0,0.05)", fgColor: "#222", lineCap: "round" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#34495e;" } } }; case "white": return { labels: !0, style: { element: "", textResponsive: .5, days: { gauge: { thickness: .03, bgColor: "rgba(255,255,255,0.05)", fgColor: "#fff" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#fff;" }, hours: { gauge: { thickness: .03, bgColor: "rgba(255,255,255,0.05)", fgColor: "#fff" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#fff;" }, minutes: { gauge: { thickness: .03, bgColor: "rgba(255,255,255,0.05)", fgColor: "#fff" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#fff;" }, seconds: { gauge: { thickness: .03, bgColor: "rgba(255,255,255,0.05)", fgColor: "#fff" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#fff;" } } }; case "white-wide": return { labels: !0, style: { element: "", textResponsive: .5, days: { gauge: { thickness: .06, bgColor: "rgba(255,255,255,0.05)", fgColor: "#fff" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#fff;" }, hours: { gauge: { thickness: .06, bgColor: "rgba(255,255,255,0.05)", fgColor: "#fff" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#fff;" }, minutes: { gauge: { thickness: .06, bgColor: "rgba(255,255,255,0.05)", fgColor: "#fff" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#fff;" }, seconds: { gauge: { thickness: .06, bgColor: "rgba(255,255,255,0.05)", fgColor: "#fff" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#fff;" } } }; case "white-very-wide": return { labels: !0, style: { element: "", textResponsive: .5, days: { gauge: { thickness: .16, bgColor: "rgba(255,255,255,0.05)", fgColor: "#fff" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#fff;" }, hours: { gauge: { thickness: .16, bgColor: "rgba(255,255,255,0.05)", fgColor: "#fff" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#fff;" }, minutes: { gauge: { thickness: .16, bgColor: "rgba(255,255,255,0.05)", fgColor: "#fff" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#fff;" }, seconds: { gauge: { thickness: .16, bgColor: "rgba(255,255,255,0.05)", fgColor: "#fff" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#fff;" } } }; case "white-black": return { labels: !0, style: { element: "", textResponsive: .5, days: { gauge: { thickness: .25, bgColor: "rgba(255,255,255,0.05)", fgColor: "#fff", lineCap: "round" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#fff;" }, hours: { gauge: { thickness: .25, bgColor: "rgba(255,255,255,0.05)", fgColor: "#fff", lineCap: "round" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#fff;" }, minutes: { gauge: { thickness: .25, bgColor: "rgba(255,255,255,0.05)", fgColor: "#fff", lineCap: "round" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#fff;" }, seconds: { gauge: { thickness: .25, bgColor: "rgba(255,255,255,0.05)", fgColor: "#fff", lineCap: "round" }, textCSS: "font-family:'Open Sans';font-weight:300;color:#fff;" } } } } }(o.theme))), i = d.extend(!0, i, o), function () { f.append('<div class="ClassyCountdown-wrapper"><div class="ClassyCountdown-days"><input type="text" /><span class="ClassyCountdown-value"><div></div><span></span></span></div><div class="ClassyCountdown-hours"><input type="text" /><span class="ClassyCountdown-value"><div></div><span></span></span></div><div class="ClassyCountdown-minutes"><input type="text" /><span class="ClassyCountdown-value"><div></div><span></span></span></div><div class="ClassyCountdown-seconds"><input type="text" /><span class="ClassyCountdown-value"><div></div><span></span></span></div></div>'), f.find(".ClassyCountdown-days input").knob(d.extend({ width: "100%", displayInput: !1, readOnly: !0, max: 365 }, i.style.days.gauge)), f.find(".ClassyCountdown-hours input").knob(d.extend({ width: "100%", displayInput: !1, readOnly: !0, max: 24 }, i.style.hours.gauge)), f.find(".ClassyCountdown-minutes input").knob(d.extend({ width: "100%", displayInput: !1, readOnly: !0, max: 60 }, i.style.minutes.gauge)), f.find(".ClassyCountdown-seconds input").knob(d.extend({ width: "100%", displayInput: !1, readOnly: !0, max: 60 }, i.style.seconds.gauge)), f.find(".ClassyCountdown-wrapper > div").attr("style", i.style.element), f.find(".ClassyCountdown-days .ClassyCountdown-value").attr("style", i.style.days.textCSS), f.find(".ClassyCountdown-hours .ClassyCountdown-value").attr("style", i.style.hours.textCSS), f.find(".ClassyCountdown-minutes .ClassyCountdown-value").attr("style", i.style.minutes.textCSS), f.find(".ClassyCountdown-seconds .ClassyCountdown-value").attr("style", i.style.seconds.textCSS), f.find(".ClassyCountdown-value").each(function () { d(this).css("margin-top", Math.floor(0 - parseInt(d(this).height()) / 2) + "px") }), i.labels && (f.find(".ClassyCountdown-days .ClassyCountdown-value > span").html(i.labelsOptions.lang.days), f.find(".ClassyCountdown-hours .ClassyCountdown-value > span").html(i.labelsOptions.lang.hours), f.find(".ClassyCountdown-minutes .ClassyCountdown-value > span").html(i.labelsOptions.lang.minutes), f.find(".ClassyCountdown-seconds .ClassyCountdown-value > span").html(i.labelsOptions.lang.seconds), f.find(".ClassyCountdown-value > span").attr("style", i.labelsOptions.style)); l = i.end - i.now, r() }(), C(), setInterval(C, 1e3), function () { f.find(".ClassyCountdown-wrapper > div").each(function () { d(this).css("height", d(this).width() + "px") }), i.style.textResponsive && (f.find(".ClassyCountdown-value").css("font-size", Math.floor(f.find("> div").eq(0).width() * i.style.textResponsive / 10) + "px"), f.find(".ClassyCountdown-value").each(function () { d(this).css("margin-top", Math.floor(0 - parseInt(d(this).height()) / 2) + "px") })); d(window).trigger("resize"), d(window).resize(d.throttle(50, u)) }() } }(jQuery);
/**
* Downward compatible, touchable dial
*
* Version: 1.2.11
* Requires: jQuery v1.7+
*
* Copyright (c) 2012 Anthony Terrien
* Under MIT License (http://www.opensource.org/licenses/mit-license.php)
*
* Thanks to vor, eskimoblood, spiffistan, FabrizioC
*/
(function (e) { if (typeof exports === "object") { module.exports = e(require("jquery")) } else if (typeof define === "function" && define.amd) { define(["jquery"], e) } else { e(jQuery) } })(function (e) { "use strict"; var t = {}, n = Math.max, r = Math.min; t.c = {}; t.c.d = e(document); t.c.t = function (e) { return e.originalEvent.touches.length - 1 }; t.o = function () { var n = this; this.o = null; this.$ = null; this.i = null; this.g = null; this.v = null; this.cv = null; this.x = 0; this.y = 0; this.w = 0; this.h = 0; this.$c = null; this.c = null; this.t = 0; this.isInit = false; this.fgColor = null; this.pColor = null; this.dH = null; this.cH = null; this.eH = null; this.rH = null; this.scale = 1; this.relative = false; this.relativeWidth = false; this.relativeHeight = false; this.$div = null; this.run = function () { var t = function (e, t) { var r; for (r in t) { n.o[r] = t[r] } n._carve().init(); n._configure()._draw() }; if (this.$.data("kontroled")) return; this.$.data("kontroled", true); this.extend(); this.o = e.extend({ min: this.$.data("min") !== undefined ? this.$.data("min") : 0, max: this.$.data("max") !== undefined ? this.$.data("max") : 100, stopper: true, readOnly: this.$.data("readonly") || this.$.attr("readonly") === "readonly", cursor: this.$.data("cursor") === true && 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: this.$.data("displayinput") == null || 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: false, step: this.$.data("step") || 1, rotation: this.$.data("rotation"), draw: null, change: null, cancel: null, release: null, format: function (e) { return e }, parse: function (e) { return parseFloat(e) } }, this.o); this.o.flip = this.o.rotation === "anticlockwise" || this.o.rotation === "acw"; if (!this.o.inputColor) { this.o.inputColor = this.o.fgColor } if (this.$.is("fieldset")) { this.v = {}; this.i = this.$.find("input"); this.i.each(function (t) { var r = e(this); n.i[t] = r; n.v[t] = n.o.parse(r.val()); r.bind("change blur", function () { var e = {}; e[t] = r.val(); n.val(n._validate(e)) }) }); this.$.find("legend").remove() } else { this.i = this.$; this.v = this.o.parse(this.$.val()); this.v === "" && (this.v = this.o.min); this.$.bind("change blur", function () { n.val(n._validate(n.o.parse(n.$.val()))) }) } !this.o.displayInput && this.$.hide(); this.$c = e(document.createElement("canvas")).attr({ width: this.o.width, height: this.o.height }); this.$div = e('<div style="' + (this.o.inline ? "display:inline;" : "") + "width:" + this.o.width + "px;height:" + this.o.height + "px;" + '"></div>'); this.$.wrap(this.$div).before(this.$c); this.$div = this.$.parent(); if (typeof G_vmlCanvasManager !== "undefined") { G_vmlCanvasManager.initElement(this.$c[0]) } this.c = this.$c[0].getContext ? this.$c[0].getContext("2d") : null; if (!this.c) { throw { name: "CanvasNotSupportedException", message: "Canvas not supported. Please use excanvas on IE8.0.", toString: function () { return this.name + ": " + this.message } } } 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(); if (this.v instanceof Object) { this.cv = {}; this.copy(this.v, this.cv) } else { this.cv = this.v } this.$.bind("configure", t).parent().bind("configure", t); this._listen()._configure()._xy().init(); this.isInit = true; this.$.val(this.o.format(this.v)); this._draw(); return this }; this._carve = function () { if (this.relative) { var e = this.relativeWidth ? this.$div.parent().width() * parseInt(this.o.width) / 100 : this.$div.parent().width(), t = this.relativeHeight ? this.$div.parent().height() * parseInt(this.o.height) / 100 : this.$div.parent().height(); this.w = this.h = Math.min(e, t) } else { this.w = this.o.width; this.h = this.o.height } this.$div.css({ width: this.w + "px", height: this.h + "px" }); this.$c.attr({ width: this.w, height: this.h }); if (this.scale !== 1) { 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) } return this }; this._draw = function () { var e = true; n.g = n.c; n.clear(); n.dH && (e = n.dH()); e !== false && n.draw() }; this._touch = function (e) { var r = function (e) { var t = n.xy2val(e.originalEvent.touches[n.t].pageX, e.originalEvent.touches[n.t].pageY); if (t == n.cv) return; if (n.cH && n.cH(t) === false) return; n.change(n._validate(t)); n._draw() }; this.t = t.c.t(e); r(e); t.c.d.bind("touchmove.k", r).bind("touchend.k", function () { t.c.d.unbind("touchmove.k touchend.k"); n.val(n.cv) }); return this }; this._mouse = function (e) { var r = function (e) { var t = n.xy2val(e.pageX, e.pageY); if (t == n.cv) return; if (n.cH && n.cH(t) === false) return; n.change(n._validate(t)); n._draw() }; r(e); t.c.d.bind("mousemove.k", r).bind("keyup.k", function (e) { if (e.keyCode === 27) { t.c.d.unbind("mouseup.k mousemove.k keyup.k"); if (n.eH && n.eH() === false) return; n.cancel() } }).bind("mouseup.k", function (e) { t.c.d.unbind("mousemove.k mouseup.k keyup.k"); n.val(n.cv) }); return this }; this._xy = function () { var e = this.$c.offset(); this.x = e.left; this.y = e.top; return this }; this._listen = function () { if (!this.o.readOnly) { this.$c.bind("mousedown", function (e) { e.preventDefault(); n._xy()._mouse(e) }).bind("touchstart", function (e) { e.preventDefault(); n._xy()._touch(e) }); this.listen() } else { this.$.attr("readonly", "readonly") } if (this.relative) { e(window).resize(e.debounce(50, function () { n._carve().init(); n._draw() })) } return this }; this._configure = function () { if (this.o.draw) this.dH = this.o.draw; if (this.o.change) this.cH = this.o.change; if (this.o.cancel) this.eH = this.o.cancel; if (this.o.release) this.rH = this.o.release; if (this.o.displayPrevious) { this.pColor = this.h2rgba(this.o.fgColor, "0.4"); this.fgColor = this.h2rgba(this.o.fgColor, "0.6") } else { this.fgColor = this.o.fgColor } return this }; this._clear = function () { this.$c[0].width = this.$c[0].width }; this._validate = function (e) { var t = ~~((e < 0 ? -.5 : .5) + e / this.o.step) * this.o.step; return Math.round(t * 100) / 100 }; this.listen = function () { }; this.extend = function () { }; this.init = function () { }; this.change = function (e) { }; this.val = function (e) { }; this.xy2val = function (e, t) { }; this.draw = function () { }; this.clear = function () { this._clear() }; this.h2rgba = function (e, t) { var n; e = e.substring(1, 7); n = [parseInt(e.substring(0, 2), 16), parseInt(e.substring(2, 4), 16), parseInt(e.substring(4, 6), 16)]; return "rgba(" + n[0] + "," + n[1] + "," + n[2] + "," + t + ")" }; this.copy = function (e, t) { for (var n in e) { t[n] = e[n] } } }; t.Dial = function () { t.o.call(this); this.startAngle = null; this.xy = null; this.radius = null; this.lineWidth = null; this.cursorExt = null; this.w2 = null; this.PI2 = 2 * Math.PI; this.extend = function () { this.o = e.extend({ bgColor: this.$.data("bgcolor") || "#EEEEEE", angleOffset: this.$.data("angleoffset") || 0, angleArc: this.$.data("anglearc") || 360, inline: true }, this.o) }; this.val = function (e, t) { if (null != e) { e = this.o.parse(e); if (t !== false && e != this.v && this.rH && this.rH(e) === false) { return } this.cv = this.o.stopper ? n(r(e, this.o.max), this.o.min) : e; this.v = this.cv; this.$.val(this.o.format(this.v)); this._draw() } else { return this.v } }; this.xy2val = function (e, t) { var i, s; i = Math.atan2(e - (this.x + this.w2), -(t - this.y - this.w2)) - this.angleOffset; if (this.o.flip) { i = this.angleArc - i - this.PI2 } if (this.angleArc != this.PI2 && i < 0 && i > -.5) { i = 0 } else if (i < 0) { i += this.PI2 } s = i * (this.o.max - this.o.min) / this.angleArc + this.o.min; this.o.stopper && (s = n(r(s, this.o.max), this.o.min)); return s }; this.listen = function () { var t = this, i, s, o = function (e) { e.preventDefault(); var o = e.originalEvent, u = o.detail || o.wheelDeltaX, a = o.detail || o.wheelDeltaY, f = t._validate(t.o.parse(t.$.val())) + (u > 0 || a > 0 ? t.o.step : u < 0 || a < 0 ? -t.o.step : 0); f = n(r(f, t.o.max), t.o.min); t.val(f, false); if (t.rH) { clearTimeout(i); i = setTimeout(function () { t.rH(f); i = null }, 100); if (!s) { s = setTimeout(function () { if (i) t.rH(f); s = null }, 200) } } }, u, a, f = 1, l = { 37: -t.o.step, 38: t.o.step, 39: t.o.step, 40: -t.o.step }; this.$.bind("keydown", function (i) { var s = i.keyCode; if (s >= 96 && s <= 105) { s = i.keyCode = s - 48 } u = parseInt(String.fromCharCode(s)); if (isNaN(u)) { s !== 13 && s !== 8 && s !== 9 && s !== 189 && (s !== 190 || t.$.val().match(/\./)) && i.preventDefault(); if (e.inArray(s, [37, 38, 39, 40]) > -1) { i.preventDefault(); var o = t.o.parse(t.$.val()) + l[s] * f; t.o.stopper && (o = n(r(o, t.o.max), t.o.min)); t.change(t._validate(o)); t._draw(); a = window.setTimeout(function () { f *= 2 }, 30) } } }).bind("keyup", function (e) { if (isNaN(u)) { if (a) { window.clearTimeout(a); a = null; f = 1; t.val(t.$.val()) } } else { t.$.val() > t.o.max && t.$.val(t.o.max) || t.$.val() < t.o.min && t.$.val(t.o.min) } }); this.$c.bind("mousewheel DOMMouseScroll", o); this.$.bind("mousewheel DOMMouseScroll", o) }; this.init = function () { if (this.v < this.o.min || this.v > this.o.max) { this.v = this.o.min } this.$.val(this.v); this.w2 = this.w / 2; this.cursorExt = this.o.cursor / 100; this.xy = this.w2 * this.scale; this.lineWidth = this.xy * this.o.thickness; this.lineCap = this.o.lineCap; this.radius = this.xy - this.lineWidth / 2; this.o.angleOffset && (this.o.angleOffset = isNaN(this.o.angleOffset) ? 0 : this.o.angleOffset); this.o.angleArc && (this.o.angleArc = isNaN(this.o.angleArc) ? this.PI2 : this.o.angleArc); this.angleOffset = this.o.angleOffset * Math.PI / 180; this.angleArc = this.o.angleArc * Math.PI / 180; this.startAngle = 1.5 * Math.PI + this.angleOffset; this.endAngle = 1.5 * Math.PI + this.angleOffset + this.angleArc; var e = n(String(Math.abs(this.o.max)).length, String(Math.abs(this.o.min)).length, 2) + 2; this.o.displayInput && this.i.css({ width: (this.w / 2 + 4 >> 0) + "px", height: (this.w / 3 >> 0) + "px", position: "absolute", "vertical-align": "middle", "margin-top": (this.w / 3 >> 0) + "px", "margin-left": "-" + (this.w * 3 / 4 + 2 >> 0) + "px", border: 0, background: "none", font: this.o.fontWeight + " " + (this.w / e >> 0) + "px " + this.o.font, "text-align": "center", color: this.o.inputColor || this.o.fgColor, padding: "0px", "-webkit-appearance": "none" }) || this.i.css({ width: "0px", visibility: "hidden" }) }; this.change = function (e) { this.cv = e; this.$.val(this.o.format(e)) }; this.angle = function (e) { return (e - this.o.min) * this.angleArc / (this.o.max - this.o.min) }; this.arc = function (e) { var t, n; e = this.angle(e); if (this.o.flip) { t = this.endAngle + 1e-5; n = t - e - 1e-5 } else { t = this.startAngle - 1e-5; n = t + e + 1e-5 } this.o.cursor && (t = n - this.cursorExt) && (n = n + this.cursorExt); return { s: t, e: n, d: this.o.flip && !this.o.cursor } }; this.draw = function () { var e = this.g, t = this.arc(this.cv), n, r = 1; e.lineWidth = this.lineWidth; e.lineCap = this.lineCap; if (this.o.bgColor !== "none") { e.beginPath(); e.strokeStyle = this.o.bgColor; e.arc(this.xy, this.xy, this.radius, this.endAngle - 1e-5, this.startAngle + 1e-5, true); e.stroke() } if (this.o.displayPrevious) { n = this.arc(this.v); e.beginPath(); e.strokeStyle = this.pColor; e.arc(this.xy, this.xy, this.radius, n.s, n.e, n.d); e.stroke(); r = this.cv == this.v } e.beginPath(); e.strokeStyle = r ? this.o.fgColor : this.fgColor; e.arc(this.xy, this.xy, this.radius, t.s, t.e, t.d); e.stroke() }; this.cancel = function () { this.val(this.v) } }; e.fn.dial = e.fn.knob = function (n) { return this.each(function () { var r = new t.Dial; r.o = n; r.$ = e(this); r.run() }).parent() } });
/*
* jQuery throttle / debounce - v1.1 - 3/7/2010
* http://benalman.com/projects/jquery-throttle-debounce-plugin/
*
* Copyright (c) 2010 "Cowboy" Ben Alman
* Dual licensed under the MIT and GPL licenses.
* http://benalman.com/about/license/
*/
(function (b, c) { var $ = b.jQuery || b.Cowboy || (b.Cowboy = {}), a; $.throttle = a = function (e, f, j, i) { var h, d = 0; if (typeof f !== "boolean") { i = j; j = f; f = c } function g() { var o = this, m = +new Date() - d, n = arguments; function l() { d = +new Date(); j.apply(o, n) } function k() { h = c } if (i && !h) { l() } h && clearTimeout(h); if (i === c && m > e) { l() } else { if (f !== true) { h = setTimeout(i ? k : l, i === c ? e - m : e) } } } if ($.guid) { g.guid = j.guid = j.guid || $.guid++ } return g }; $.debounce = function (d, e, f) { return f === c ? a(d, e, false) : a(d, f, e !== false) } })(this);
/* -----------------------------------------------
/* Author : Vincent Garreau - vincentgarreau.com
/* MIT license: http://opensource.org/licenses/MIT
/* Demo / Generator : vincentgarreau.com/particles.js
/* GitHub : github.com/VincentGarreau/particles.js
/* How to use? : Check the GitHub README
/* v2.0.0
/* ----------------------------------------------- */
function hexToRgb(e) { var a = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; e = e.replace(a, function (e, a, t, i) { return a + a + t + t + i + i }); var t = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e); return t ? { r: parseInt(t[1], 16), g: parseInt(t[2], 16), b: parseInt(t[3], 16) } : null } function clamp(e, a, t) { return Math.min(Math.max(e, a), t) } function isInArray(e, a) { return a.indexOf(e) > -1 } var pJS = function (e, a) { var t = document.querySelector("#" + e + " > .particles-js-canvas-el"); this.pJS = { canvas: { el: t, w: t.offsetWidth, h: t.offsetHeight }, particles: { number: { value: 400, density: { enable: !0, value_area: 800 } }, color: { value: "#fff" }, shape: { type: "circle", stroke: { width: 0, color: "#ff0000" }, polygon: { nb_sides: 5 }, image: { src: "", width: 100, height: 100 } }, opacity: { value: 1, random: !1, anim: { enable: !1, speed: 2, opacity_min: 0, sync: !1 } }, size: { value: 20, random: !1, anim: { enable: !1, speed: 20, size_min: 0, sync: !1 } }, line_linked: { enable: !0, distance: 100, color: "#fff", opacity: 1, width: 1 }, move: { enable: !0, speed: 2, direction: "none", random: !1, straight: !1, out_mode: "out", bounce: !1, attract: { enable: !1, rotateX: 3e3, rotateY: 3e3 } }, array: [] }, interactivity: { detect_on: "canvas", events: { onhover: { enable: !0, mode: "grab" }, onclick: { enable: !0, mode: "push" }, resize: !0 }, modes: { grab: { distance: 100, line_linked: { opacity: 1 } }, bubble: { distance: 200, size: 80, duration: .4 }, repulse: { distance: 200, duration: .4 }, push: { particles_nb: 4 }, remove: { particles_nb: 2 } }, mouse: {} }, retina_detect: !1, fn: { interact: {}, modes: {}, vendors: {} }, tmp: {} }; var i = this.pJS; a && Object.deepExtend(i, a), i.tmp.obj = { size_value: i.particles.size.value, size_anim_speed: i.particles.size.anim.speed, move_speed: i.particles.move.speed, line_linked_distance: i.particles.line_linked.distance, line_linked_width: i.particles.line_linked.width, mode_grab_distance: i.interactivity.modes.grab.distance, mode_bubble_distance: i.interactivity.modes.bubble.distance, mode_bubble_size: i.interactivity.modes.bubble.size, mode_repulse_distance: i.interactivity.modes.repulse.distance }, i.fn.retinaInit = function () { i.retina_detect && window.devicePixelRatio > 1 ? (i.canvas.pxratio = window.devicePixelRatio, i.tmp.retina = !0) : (i.canvas.pxratio = 1, i.tmp.retina = !1), i.canvas.w = i.canvas.el.offsetWidth * i.canvas.pxratio, i.canvas.h = i.canvas.el.offsetHeight * i.canvas.pxratio, i.particles.size.value = i.tmp.obj.size_value * i.canvas.pxratio, i.particles.size.anim.speed = i.tmp.obj.size_anim_speed * i.canvas.pxratio, i.particles.move.speed = i.tmp.obj.move_speed * i.canvas.pxratio, i.particles.line_linked.distance = i.tmp.obj.line_linked_distance * i.canvas.pxratio, i.interactivity.modes.grab.distance = i.tmp.obj.mode_grab_distance * i.canvas.pxratio, i.interactivity.modes.bubble.distance = i.tmp.obj.mode_bubble_distance * i.canvas.pxratio, i.particles.line_linked.width = i.tmp.obj.line_linked_width * i.canvas.pxratio, i.interactivity.modes.bubble.size = i.tmp.obj.mode_bubble_size * i.canvas.pxratio, i.interactivity.modes.repulse.distance = i.tmp.obj.mode_repulse_distance * i.canvas.pxratio }, i.fn.canvasInit = function () { i.canvas.ctx = i.canvas.el.getContext("2d") }, i.fn.canvasSize = function () { i.canvas.el.width = i.canvas.w, i.canvas.el.height = i.canvas.h, i && i.interactivity.events.resize && window.addEventListener("resize", function () { i.canvas.w = i.canvas.el.offsetWidth, i.canvas.h = i.canvas.el.offsetHeight, i.tmp.retina && (i.canvas.w *= i.canvas.pxratio, i.canvas.h *= i.canvas.pxratio), i.canvas.el.width = i.canvas.w, i.canvas.el.height = i.canvas.h, i.particles.move.enable || (i.fn.particlesEmpty(), i.fn.particlesCreate(), i.fn.particlesDraw(), i.fn.vendors.densityAutoParticles()), i.fn.vendors.densityAutoParticles() }) }, i.fn.canvasPaint = function () { i.canvas.ctx.fillRect(0, 0, i.canvas.w, i.canvas.h) }, i.fn.canvasClear = function () { i.canvas.ctx.clearRect(0, 0, i.canvas.w, i.canvas.h) }, i.fn.particle = function (e, a, t) { if (this.radius = (i.particles.size.random ? Math.random() : 1) * i.particles.size.value, i.particles.size.anim.enable && (this.size_status = !1, this.vs = i.particles.size.anim.speed / 100, i.particles.size.anim.sync || (this.vs = this.vs * Math.random())), this.x = t ? t.x : Math.random() * i.canvas.w, this.y = t ? t.y : Math.random() * i.canvas.h, this.x > i.canvas.w - 2 * this.radius ? this.x = this.x - this.radius : this.x < 2 * this.radius && (this.x = this.x + this.radius), this.y > i.canvas.h - 2 * this.radius ? this.y = this.y - this.radius : this.y < 2 * this.radius && (this.y = this.y + this.radius), i.particles.move.bounce && i.fn.vendors.checkOverlap(this, t), this.color = {}, "object" == typeof e.value) if (e.value instanceof Array) { var s = e.value[Math.floor(Math.random() * i.particles.color.value.length)]; this.color.rgb = hexToRgb(s) } else void 0 != e.value.r && void 0 != e.value.g && void 0 != e.value.b && (this.color.rgb = { r: e.value.r, g: e.value.g, b: e.value.b }), void 0 != e.value.h && void 0 != e.value.s && void 0 != e.value.l && (this.color.hsl = { h: e.value.h, s: e.value.s, l: e.value.l }); else "random" == e.value ? this.color.rgb = { r: Math.floor(256 * Math.random()) + 0, g: Math.floor(256 * Math.random()) + 0, b: Math.floor(256 * Math.random()) + 0 } : "string" == typeof e.value && (this.color = e, this.color.rgb = hexToRgb(this.color.value)); this.opacity = (i.particles.opacity.random ? Math.random() : 1) * i.particles.opacity.value, i.particles.opacity.anim.enable && (this.opacity_status = !1, this.vo = i.particles.opacity.anim.speed / 100, i.particles.opacity.anim.sync || (this.vo = this.vo * Math.random())); var n = {}; switch (i.particles.move.direction) { case "top": n = { x: 0, y: -1 }; break; case "top-right": n = { x: .5, y: -.5 }; break; case "right": n = { x: 1, y: -0 }; break; case "bottom-right": n = { x: .5, y: .5 }; break; case "bottom": n = { x: 0, y: 1 }; break; case "bottom-left": n = { x: -.5, y: 1 }; break; case "left": n = { x: -1, y: 0 }; break; case "top-left": n = { x: -.5, y: -.5 }; break; default: n = { x: 0, y: 0 } }i.particles.move.straight ? (this.vx = n.x, this.vy = n.y, i.particles.move.random && (this.vx = this.vx * Math.random(), this.vy = this.vy * Math.random())) : (this.vx = n.x + Math.random() - .5, this.vy = n.y + Math.random() - .5), this.vx_i = this.vx, this.vy_i = this.vy; var r = i.particles.shape.type; if ("object" == typeof r) { if (r instanceof Array) { var c = r[Math.floor(Math.random() * r.length)]; this.shape = c } } else this.shape = r; if ("image" == this.shape) { var o = i.particles.shape; this.img = { src: o.image.src, ratio: o.image.width / o.image.height }, this.img.ratio || (this.img.ratio = 1), "svg" == i.tmp.img_type && void 0 != i.tmp.source_svg && (i.fn.vendors.createSvgImg(this), i.tmp.pushing && (this.img.loaded = !1)) } }, i.fn.particle.prototype.draw = function () { function e() { i.canvas.ctx.drawImage(r, a.x - t, a.y - t, 2 * t, 2 * t / a.img.ratio) } var a = this; if (void 0 != a.radius_bubble) var t = a.radius_bubble; else var t = a.radius; if (void 0 != a.opacity_bubble) var s = a.opacity_bubble; else var s = a.opacity; if (a.color.rgb) var n = "rgba(" + a.color.rgb.r + "," + a.color.rgb.g + "," + a.color.rgb.b + "," + s + ")"; else var n = "hsla(" + a.color.hsl.h + "," + a.color.hsl.s + "%," + a.color.hsl.l + "%," + s + ")"; switch (i.canvas.ctx.fillStyle = n, i.canvas.ctx.beginPath(), a.shape) { case "circle": i.canvas.ctx.arc(a.x, a.y, t, 0, 2 * Math.PI, !1); break; case "edge": i.canvas.ctx.rect(a.x - t, a.y - t, 2 * t, 2 * t); break; case "triangle": i.fn.vendors.drawShape(i.canvas.ctx, a.x - t, a.y + t / 1.66, 2 * t, 3, 2); break; case "polygon": i.fn.vendors.drawShape(i.canvas.ctx, a.x - t / (i.particles.shape.polygon.nb_sides / 3.5), a.y - t / .76, 2.66 * t / (i.particles.shape.polygon.nb_sides / 3), i.particles.shape.polygon.nb_sides, 1); break; case "star": i.fn.vendors.drawShape(i.canvas.ctx, a.x - 2 * t / (i.particles.shape.polygon.nb_sides / 4), a.y - t / 1.52, 2 * t * 2.66 / (i.particles.shape.polygon.nb_sides / 3), i.particles.shape.polygon.nb_sides, 2); break; case "image": if ("svg" == i.tmp.img_type) var r = a.img.obj; else var r = i.tmp.img_obj; r && e() }i.canvas.ctx.closePath(), i.particles.shape.stroke.width > 0 && (i.canvas.ctx.strokeStyle = i.particles.shape.stroke.color, i.canvas.ctx.lineWidth = i.particles.shape.stroke.width, i.canvas.ctx.stroke()), i.canvas.ctx.fill() }, i.fn.particlesCreate = function () { for (var e = 0; e < i.particles.number.value; e++)i.particles.array.push(new i.fn.particle(i.particles.color, i.particles.opacity.value)) }, i.fn.particlesUpdate = function () { for (var e = 0; e < i.particles.array.length; e++) { var a = i.particles.array[e]; if (i.particles.move.enable) { var t = i.particles.move.speed / 2; a.x += a.vx * t, a.y += a.vy * t } if (i.particles.opacity.anim.enable && (1 == a.opacity_status ? (a.opacity >= i.particles.opacity.value && (a.opacity_status = !1), a.opacity += a.vo) : (a.opacity <= i.particles.opacity.anim.opacity_min && (a.opacity_status = !0), a.opacity -= a.vo), a.opacity < 0 && (a.opacity = 0)), i.particles.size.anim.enable && (1 == a.size_status ? (a.radius >= i.particles.size.value && (a.size_status = !1), a.radius += a.vs) : (a.radius <= i.particles.size.anim.size_min && (a.size_status = !0), a.radius -= a.vs), a.radius < 0 && (a.radius = 0)), "bounce" == i.particles.move.out_mode) var s = { x_left: a.radius, x_right: i.canvas.w, y_top: a.radius, y_bottom: i.canvas.h }; else var s = { x_left: -a.radius, x_right: i.canvas.w + a.radius, y_top: -a.radius, y_bottom: i.canvas.h + a.radius }; switch (a.x - a.radius > i.canvas.w ? (a.x = s.x_left, a.y = Math.random() * i.canvas.h) : a.x + a.radius < 0 && (a.x = s.x_right, a.y = Math.random() * i.canvas.h), a.y - a.radius > i.canvas.h ? (a.y = s.y_top, a.x = Math.random() * i.canvas.w) : a.y + a.radius < 0 && (a.y = s.y_bottom, a.x = Math.random() * i.canvas.w), i.particles.move.out_mode) { case "bounce": a.x + a.radius > i.canvas.w ? a.vx = -a.vx : a.x - a.radius < 0 && (a.vx = -a.vx), a.y + a.radius > i.canvas.h ? a.vy = -a.vy : a.y - a.radius < 0 && (a.vy = -a.vy) }if (isInArray("grab", i.interactivity.events.onhover.mode) && i.fn.modes.grabParticle(a), (isInArray("bubble", i.interactivity.events.onhover.mode) || isInArray("bubble", i.interactivity.events.onclick.mode)) && i.fn.modes.bubbleParticle(a), (isInArray("repulse", i.interactivity.events.onhover.mode) || isInArray("repulse", i.interactivity.events.onclick.mode)) && i.fn.modes.repulseParticle(a), i.particles.line_linked.enable || i.particles.move.attract.enable) for (var n = e + 1; n < i.particles.array.length; n++) { var r = i.particles.array[n]; i.particles.line_linked.enable && i.fn.interact.linkParticles(a, r), i.particles.move.attract.enable && i.fn.interact.attractParticles(a, r), i.particles.move.bounce && i.fn.interact.bounceParticles(a, r) } } }, i.fn.particlesDraw = function () { i.canvas.ctx.clearRect(0, 0, i.canvas.w, i.canvas.h), i.fn.particlesUpdate(); for (var e = 0; e < i.particles.array.length; e++) { var a = i.particles.array[e]; a.draw() } }, i.fn.particlesEmpty = function () { i.particles.array = [] }, i.fn.particlesRefresh = function () { cancelRequestAnimFrame(i.fn.checkAnimFrame), cancelRequestAnimFrame(i.fn.drawAnimFrame), i.tmp.source_svg = void 0, i.tmp.img_obj = void 0, i.tmp.count_svg = 0, i.fn.particlesEmpty(), i.fn.canvasClear(), i.fn.vendors.start() }, i.fn.interact.linkParticles = function (e, a) { var t = e.x - a.x, s = e.y - a.y, n = Math.sqrt(t * t + s * s); if (n <= i.particles.line_linked.distance) { var r = i.particles.line_linked.opacity - n / (1 / i.particles.line_linked.opacity) / i.particles.line_linked.distance; if (r > 0) { var c = i.particles.line_linked.color_rgb_line; i.canvas.ctx.strokeStyle = "rgba(" + c.r + "," + c.g + "," + c.b + "," + r + ")", i.canvas.ctx.lineWidth = i.particles.line_linked.width, i.canvas.ctx.beginPath(), i.canvas.ctx.moveTo(e.x, e.y), i.canvas.ctx.lineTo(a.x, a.y), i.canvas.ctx.stroke(), i.canvas.ctx.closePath() } } }, i.fn.interact.attractParticles = function (e, a) { var t = e.x - a.x, s = e.y - a.y, n = Math.sqrt(t * t + s * s); if (n <= i.particles.line_linked.distance) { var r = t / (1e3 * i.particles.move.attract.rotateX), c = s / (1e3 * i.particles.move.attract.rotateY); e.vx -= r, e.vy -= c, a.vx += r, a.vy += c } }, i.fn.interact.bounceParticles = function (e, a) { var t = e.x - a.x, i = e.y - a.y, s = Math.sqrt(t * t + i * i), n = e.radius + a.radius; n >= s && (e.vx = -e.vx, e.vy = -e.vy, a.vx = -a.vx, a.vy = -a.vy) }, i.fn.modes.pushParticles = function (e, a) { i.tmp.pushing = !0; for (var t = 0; e > t; t++)i.particles.array.push(new i.fn.particle(i.particles.color, i.particles.opacity.value, { x: a ? a.pos_x : Math.random() * i.canvas.w, y: a ? a.pos_y : Math.random() * i.canvas.h })), t == e - 1 && (i.particles.move.enable || i.fn.particlesDraw(), i.tmp.pushing = !1) }, i.fn.modes.removeParticles = function (e) { i.particles.array.splice(0, e), i.particles.move.enable || i.fn.particlesDraw() }, i.fn.modes.bubbleParticle = function (e) { function a() { e.opacity_bubble = e.opacity, e.radius_bubble = e.radius } function t(a, t, s, n, c) { if (a != t) if (i.tmp.bubble_duration_end) { if (void 0 != s) { var o = n - p * (n - a) / i.interactivity.modes.bubble.duration, l = a - o; d = a + l, "size" == c && (e.radius_bubble = d), "opacity" == c && (e.opacity_bubble = d) } } else if (r <= i.interactivity.modes.bubble.distance) { if (void 0 != s) var v = s; else var v = n; if (v != a) { var d = n - p * (n - a) / i.interactivity.modes.bubble.duration; "size" == c && (e.radius_bubble = d), "opacity" == c && (e.opacity_bubble = d) } } else "size" == c && (e.radius_bubble = void 0), "opacity" == c && (e.opacity_bubble = void 0) } if (i.interactivity.events.onhover.enable && isInArray("bubble", i.interactivity.events.onhover.mode)) { var s = e.x - i.interactivity.mouse.pos_x, n = e.y - i.interactivity.mouse.pos_y, r = Math.sqrt(s * s + n * n), c = 1 - r / i.interactivity.modes.bubble.distance; if (r <= i.interactivity.modes.bubble.distance) { if (c >= 0 && "mousemove" == i.interactivity.status) { if (i.interactivity.modes.bubble.size != i.particles.size.value) if (i.interactivity.modes.bubble.size > i.particles.size.value) { var o = e.radius + i.interactivity.modes.bubble.size * c; o >= 0 && (e.radius_bubble = o) } else { var l = e.radius - i.interactivity.modes.bubble.size, o = e.radius - l * c; o > 0 ? e.radius_bubble = o : e.radius_bubble = 0 } if (i.interactivity.modes.bubble.opacity != i.particles.opacity.value) if (i.interactivity.modes.bubble.opacity > i.particles.opacity.value) { var v = i.interactivity.modes.bubble.opacity * c; v > e.opacity && v <= i.interactivity.modes.bubble.opacity && (e.opacity_bubble = v) } else { var v = e.opacity - (i.particles.opacity.value - i.interactivity.modes.bubble.opacity) * c; v < e.opacity && v >= i.interactivity.modes.bubble.opacity && (e.opacity_bubble = v) } } } else a(); "mouseleave" == i.interactivity.status && a() } else if (i.interactivity.events.onclick.enable && isInArray("bubble", i.interactivity.events.onclick.mode)) { if (i.tmp.bubble_clicking) { var s = e.x - i.interactivity.mouse.click_pos_x, n = e.y - i.interactivity.mouse.click_pos_y, r = Math.sqrt(s * s + n * n), p = ((new Date).getTime() - i.interactivity.mouse.click_time) / 1e3; p > i.interactivity.modes.bubble.duration && (i.tmp.bubble_duration_end = !0), p > 2 * i.interactivity.modes.bubble.duration && (i.tmp.bubble_clicking = !1, i.tmp.bubble_duration_end = !1) } i.tmp.bubble_clicking && (t(i.interactivity.modes.bubble.size, i.particles.size.value, e.radius_bubble, e.radius, "size"), t(i.interactivity.modes.bubble.opacity, i.particles.opacity.value, e.opacity_bubble, e.opacity, "opacity")) } }, i.fn.modes.repulseParticle = function (e) { function a() { var a = Math.atan2(d, p); if (e.vx = u * Math.cos(a), e.vy = u * Math.sin(a), "bounce" == i.particles.move.out_mode) { var t = { x: e.x + e.vx, y: e.y + e.vy }; t.x + e.radius > i.canvas.w ? e.vx = -e.vx : t.x - e.radius < 0 && (e.vx = -e.vx), t.y + e.radius > i.canvas.h ? e.vy = -e.vy : t.y - e.radius < 0 && (e.vy = -e.vy) } } if (i.interactivity.events.onhover.enable && isInArray("repulse", i.interactivity.events.onhover.mode) && "mousemove" == i.interactivity.status) { var t = e.x - i.interactivity.mouse.pos_x, s = e.y - i.interactivity.mouse.pos_y, n = Math.sqrt(t * t + s * s), r = { x: t / n, y: s / n }, c = i.interactivity.modes.repulse.distance, o = 100, l = clamp(1 / c * (-1 * Math.pow(n / c, 2) + 1) * c * o, 0, 50), v = { x: e.x + r.x * l, y: e.y + r.y * l }; "bounce" == i.particles.move.out_mode ? (v.x - e.radius > 0 && v.x + e.radius < i.canvas.w && (e.x = v.x), v.y - e.radius > 0 && v.y + e.radius < i.canvas.h && (e.y = v.y)) : (e.x = v.x, e.y = v.y) } else if (i.interactivity.events.onclick.enable && isInArray("repulse", i.interactivity.events.onclick.mode)) if (i.tmp.repulse_finish || (i.tmp.repulse_count++, i.tmp.repulse_count == i.particles.array.length && (i.tmp.repulse_finish = !0)), i.tmp.repulse_clicking) { var c = Math.pow(i.interactivity.modes.repulse.distance / 6, 3), p = i.interactivity.mouse.click_pos_x - e.x, d = i.interactivity.mouse.click_pos_y - e.y, m = p * p + d * d, u = -c / m * 1; c >= m && a() } else 0 == i.tmp.repulse_clicking && (e.vx = e.vx_i, e.vy = e.vy_i) }, i.fn.modes.grabParticle = function (e) { if (i.interactivity.events.onhover.enable && "mousemove" == i.interactivity.status) { var a = e.x - i.interactivity.mouse.pos_x, t = e.y - i.interactivity.mouse.pos_y, s = Math.sqrt(a * a + t * t); if (s <= i.interactivity.modes.grab.distance) { var n = i.interactivity.modes.grab.line_linked.opacity - s / (1 / i.interactivity.modes.grab.line_linked.opacity) / i.interactivity.modes.grab.distance; if (n > 0) { var r = i.particles.line_linked.color_rgb_line; i.canvas.ctx.strokeStyle = "rgba(" + r.r + "," + r.g + "," + r.b + "," + n + ")", i.canvas.ctx.lineWidth = i.particles.line_linked.width, i.canvas.ctx.beginPath(), i.canvas.ctx.moveTo(e.x, e.y), i.canvas.ctx.lineTo(i.interactivity.mouse.pos_x, i.interactivity.mouse.pos_y), i.canvas.ctx.stroke(), i.canvas.ctx.closePath() } } } }, i.fn.vendors.eventsListeners = function () { "window" == i.interactivity.detect_on ? i.interactivity.el = window : i.interactivity.el = i.canvas.el, (i.interactivity.events.onhover.enable || i.interactivity.events.onclick.enable) && (i.interactivity.el.addEventListener("mousemove", function (e) { if (i.interactivity.el == window) var a = e.clientX, t = e.clientY; else var a = e.offsetX || e.clientX, t = e.offsetY || e.clientY; i.interactivity.mouse.pos_x = a, i.interactivity.mouse.pos_y = t, i.tmp.retina && (i.interactivity.mouse.pos_x *= i.canvas.pxratio, i.interactivity.mouse.pos_y *= i.canvas.pxratio), i.interactivity.status = "mousemove" }), i.interactivity.el.addEventListener("mouseleave", function (e) { i.interactivity.mouse.pos_x = null, i.interactivity.mouse.pos_y = null, i.interactivity.status = "mouseleave" })), i.interactivity.events.onclick.enable && i.interactivity.el.addEventListener("click", function () { if (i.interactivity.mouse.click_pos_x = i.interactivity.mouse.pos_x, i.interactivity.mouse.click_pos_y = i.interactivity.mouse.pos_y, i.interactivity.mouse.click_time = (new Date).getTime(), i.interactivity.events.onclick.enable) switch (i.interactivity.events.onclick.mode) { case "push": i.particles.move.enable ? i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb, i.interactivity.mouse) : 1 == i.interactivity.modes.push.particles_nb ? i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb, i.interactivity.mouse) : i.interactivity.modes.push.particles_nb > 1 && i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb); break; case "remove": i.fn.modes.removeParticles(i.interactivity.modes.remove.particles_nb); break; case "bubble": i.tmp.bubble_clicking = !0; break; case "repulse": i.tmp.repulse_clicking = !0, i.tmp.repulse_count = 0, i.tmp.repulse_finish = !1, setTimeout(function () { i.tmp.repulse_clicking = !1 }, 1e3 * i.interactivity.modes.repulse.duration) } }) }, i.fn.vendors.densityAutoParticles = function () { if (i.particles.number.density.enable) { var e = i.canvas.el.width * i.canvas.el.height / 1e3; i.tmp.retina && (e /= 2 * i.canvas.pxratio); var a = e * i.particles.number.value / i.particles.number.density.value_area, t = i.particles.array.length - a; 0 > t ? i.fn.modes.pushParticles(Math.abs(t)) : i.fn.modes.removeParticles(t) } }, i.fn.vendors.checkOverlap = function (e, a) { for (var t = 0; t < i.particles.array.length; t++) { var s = i.particles.array[t], n = e.x - s.x, r = e.y - s.y, c = Math.sqrt(n * n + r * r); c <= e.radius + s.radius && (e.x = a ? a.x : Math.random() * i.canvas.w, e.y = a ? a.y : Math.random() * i.canvas.h, i.fn.vendors.checkOverlap(e)) } }, i.fn.vendors.createSvgImg = function (e) { var a = i.tmp.source_svg, t = /#([0-9A-F]{3,6})/gi, s = a.replace(t, function (a, t, i, s) { if (e.color.rgb) var n = "rgba(" + e.color.rgb.r + "," + e.color.rgb.g + "," + e.color.rgb.b + "," + e.opacity + ")"; else var n = "hsla(" + e.color.hsl.h + "," + e.color.hsl.s + "%," + e.color.hsl.l + "%," + e.opacity + ")"; return n }), n = new Blob([s], { type: "image/svg+xml;charset=utf-8" }), r = window.URL || window.webkitURL || window, c = r.createObjectURL(n), o = new Image; o.addEventListener("load", function () { e.img.obj = o, e.img.loaded = !0, r.revokeObjectURL(c), i.tmp.count_svg++ }), o.src = c }, i.fn.vendors.destroypJS = function () { cancelAnimationFrame(i.fn.drawAnimFrame), t.remove(), pJSDom = null }, i.fn.vendors.drawShape = function (e, a, t, i, s, n) { var r = s * n, c = s / n, o = 180 * (c - 2) / c, l = Math.PI - Math.PI * o / 180; e.save(), e.beginPath(), e.translate(a, t), e.moveTo(0, 0); for (var v = 0; r > v; v++)e.lineTo(i, 0), e.translate(i, 0), e.rotate(l); e.fill(), e.restore() }, i.fn.vendors.exportImg = function () { window.open(i.canvas.el.toDataURL("image/png"), "_blank") }, i.fn.vendors.loadImg = function (e) { if (i.tmp.img_error = void 0, "" != i.particles.shape.image.src) if ("svg" == e) { var a = new XMLHttpRequest; a.open("GET", i.particles.shape.image.src), a.onreadystatechange = function (e) { 4 == a.readyState && (200 == a.status ? (i.tmp.source_svg = e.currentTarget.response, i.fn.vendors.checkBeforeDraw()) : (console.log("Error pJS - Image not found"), i.tmp.img_error = !0)) }, a.send() } else { var t = new Image; t.addEventListener("load", function () { i.tmp.img_obj = t, i.fn.vendors.checkBeforeDraw() }), t.src = i.particles.shape.image.src } else console.log("Error pJS - No image.src"), i.tmp.img_error = !0 }, i.fn.vendors.draw = function () { "image" == i.particles.shape.type ? "svg" == i.tmp.img_type ? i.tmp.count_svg >= i.particles.number.value ? (i.fn.particlesDraw(), i.particles.move.enable ? i.fn.drawAnimFrame = requestAnimFrame(i.fn.vendors.draw) : cancelRequestAnimFrame(i.fn.drawAnimFrame)) : i.tmp.img_error || (i.fn.drawAnimFrame = requestAnimFrame(i.fn.vendors.draw)) : void 0 != i.tmp.img_obj ? (i.fn.particlesDraw(), i.particles.move.enable ? i.fn.drawAnimFrame = requestAnimFrame(i.fn.vendors.draw) : cancelRequestAnimFrame(i.fn.drawAnimFrame)) : i.tmp.img_error || (i.fn.drawAnimFrame = requestAnimFrame(i.fn.vendors.draw)) : (i.fn.particlesDraw(), i.particles.move.enable ? i.fn.drawAnimFrame = requestAnimFrame(i.fn.vendors.draw) : cancelRequestAnimFrame(i.fn.drawAnimFrame)) }, i.fn.vendors.checkBeforeDraw = function () { "image" == i.particles.shape.type ? "svg" == i.tmp.img_type && void 0 == i.tmp.source_svg ? i.tmp.checkAnimFrame = requestAnimFrame(check) : (cancelRequestAnimFrame(i.tmp.checkAnimFrame), i.tmp.img_error || (i.fn.vendors.init(), i.fn.vendors.draw())) : (i.fn.vendors.init(), i.fn.vendors.draw()) }, i.fn.vendors.init = function () { i.fn.retinaInit(), i.fn.canvasInit(), i.fn.canvasSize(), i.fn.canvasPaint(), i.fn.particlesCreate(), i.fn.vendors.densityAutoParticles(), i.particles.line_linked.color_rgb_line = hexToRgb(i.particles.line_linked.color) }, i.fn.vendors.start = function () { isInArray("image", i.particles.shape.type) ? (i.tmp.img_type = i.particles.shape.image.src.substr(i.particles.shape.image.src.length - 3), i.fn.vendors.loadImg(i.tmp.img_type)) : i.fn.vendors.checkBeforeDraw() }, i.fn.vendors.eventsListeners(), i.fn.vendors.start() }; Object.deepExtend = function (e, a) { for (var t in a) a[t] && a[t].constructor && a[t].constructor === Object ? (e[t] = e[t] || {}, arguments.callee(e[t], a[t])) : e[t] = a[t]; return e }, window.requestAnimFrame = function () { return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (e) { window.setTimeout(e, 1e3 / 60) } }(), window.cancelRequestAnimFrame = function () { return window.cancelAnimationFrame || window.webkitCancelRequestAnimationFrame || window.mozCancelRequestAnimationFrame || window.oCancelRequestAnimationFrame || window.msCancelRequestAnimationFrame || clearTimeout }(), window.pJSDom = [], window.particlesJS = function (e, a) { "string" != typeof e && (a = e, e = "particles-js"), e || (e = "particles-js"); var t = document.getElementById(e), i = "particles-js-canvas-el", s = t.getElementsByClassName(i); if (s.length) for (; s.length > 0;)t.removeChild(s[0]); var n = document.createElement("canvas"); n.className = i, n.style.width = "100%", n.style.height = "100%"; var r = document.getElementById(e).appendChild(n); null != r && pJSDom.push(new pJS(e, a)) }, window.particlesJS.load = function (e, a, t) { var i = new XMLHttpRequest; i.open("GET", a), i.onreadystatechange = function (a) { if (4 == i.readyState) if (200 == i.status) { var s = JSON.parse(a.currentTarget.response); window.particlesJS(e, s), t && t() } else console.log("Error pJS - XMLHttpRequest status: " + i.status), console.log("Error pJS - File config not found") }, i.send() };
/**
* Spotlight.js v0.7.8
* Copyright 2019-2021 Nextapps GmbH
* Author: Thomas Wilkerling
* Licence: Apache-2.0
* https://github.com/nextapps-de/spotlight
*/
(function () {
'use strict'; Object.assign || (Object.assign = function (a, b) { for (var c = Object.keys(b), e = 0, f; e < c.length; e++)f = c[e], a[f] = b[f]; return a }); Element.prototype.closest || (Element.prototype.closest = function (a) { a = a.substring(1); for (var b = this; b && 1 === b.nodeType;) { if (b.classList.contains(a)) return b; b = b.parentElement } return null }); function d(a, b, c) { a.classList[c ? "add" : "remove"](b) } function g(a, b, c) { c = "" + c; a["_s_" + b] !== c && (a.style.setProperty(b, c), a["_s_" + b] = c) } var aa = 0; function ba(a, b) { b && (g(a, "transition", "none"), b()); aa || (aa = a.clientTop && 0); b && g(a, "transition", "") } function h(a, b, c, e) { k(!0, a, b, c, e) } function k(a, b, c, e, f) { b[(a ? "add" : "remove") + "EventListener"](c, e, f || !1 === f ? f : !0) } function ca(a, b) { a.stopPropagation(); b && a.preventDefault() } function l(a, b) { g(a, "display", b ? "" : "none") }
function da(a, b) { g(a, "visibility", b ? "" : "hidden") } function m(a, b) { g(a, "transition", b ? "" : "none") }; var n = "theme download play page close autofit zoom-in zoom-out prev next fullscreen".split(" "), ea = { page: 1, close: 1, autofit: 1, "zoom-in": 1, "zoom-out": 1, prev: 1, next: 1, fullscreen: 1 }; var p = document.createElement("div"); p.id = "spotlight"; p.innerHTML = "<div class=spl-spinner></div><div class=spl-track><div class=spl-scene><div class=spl-pane></div></div></div><div class=spl-header><div class=spl-page> </div></div><div class=spl-progress></div><div class=spl-footer><div class=spl-title> </div><div class=spl-description> </div><div class=spl-button> </div></div><div class=spl-prev></div><div class=spl-next></div>"; var fa = {}, ha = document.createElement("video"); function ia(a, b, c, e) { if ("node" !== e) for (var f = Object.keys(c), A = 0, w; A < f.length; A++)if (w = f[A], 3 < w.length && 0 === w.indexOf("src")) if ("video" === e) { var F = fa[w]; if (F) { if (0 < F) { var Ea = c[w]; break } } else if (ha.canPlayType("video/" + w.substring(3).replace("-", "").toLowerCase())) { fa[w] = 1; Ea = c[w]; break } else fa[w] = -1 } else if (F = parseInt(w.substring(4), 10)) if (F = Math.abs(b - F), !hb || F < hb) { var hb = F; Ea = c[w] } return Ea || c.src || c.href || a.src || a.href }; var q = {}, ja = navigator.connection, ka = window.devicePixelRatio || 1, r, t, la, ma, u, na, oa, pa, v, qa, ra, sa, x, y, z, B, C, D, ta, E, G, ua, va, wa, xa, ya, za, H, Aa, Ba, Ca, Da, I, Fa, Ga, Ha, Ia, J, K, L, M, N, Ja = document.createElement("img"), Ka, La, Ma, Na, Oa, Pa, Qa, Ra, Sa, Ta, Ua, O, Va, P, Q, R, S, Wa, T, Xa; h(document, "click", Ya);
function Za() {
function a(c) { return q[c] = (p || document).getElementsByClassName("spl-" + c)[0] } if (!K) {
K = document.body; Ka = a("scene"); La = a("header"); Ma = a("footer"); Na = a("title"); Oa = a("description"); Pa = a("button"); Qa = a("prev"); Ra = a("next"); Ta = a("page"); O = a("progress"); Va = a("spinner"); M = [a("pane")]; U("close", $a); K[T = "requestFullscreen"] || K[T = "msRequestFullscreen"] || K[T = "webkitRequestFullscreen"] || K[T = "mozRequestFullscreen"] || (T = ""); T ? (Xa = T.replace("request", "exit").replace("mozRequest", "mozCancel").replace("Request",
"Exit"), Sa = U("fullscreen", ab)) : n.pop(); U("autofit", V); U("zoom-in", bb); U("zoom-out", cb); U("theme", db); Ua = U("play", W); U("download", eb); h(Qa, "click", fb); h(Ra, "click", gb); var b = a("track"); h(b, "mousedown", ib); h(b, "mousemove", jb); h(b, "mouseleave", kb); h(b, "mouseup", kb); h(b, "touchstart", ib, { passive: !1 }); h(b, "touchmove", jb, { passive: !0 }); h(b, "touchend", kb); h(Pa, "click", function () { Da ? Da(z, D) : Ca && (location.href = Ca) })
}
}
function U(a, b) { var c = document.createElement("div"); c.className = "spl-" + a; h(c, "click", b); La.appendChild(c); return q[a] = c } function Ya(a) { var b = a.target.closest(".spotlight"); if (b) { ca(a, !0); a = b.closest(".spotlight-group"); C = (a || document).getElementsByClassName("spotlight"); for (var c = 0; c < C.length; c++)if (C[c] === b) { E = a && a.dataset; lb(c + 1); break } } }
function lb(a) { if (B = C.length) { K || Za(); va && va(a); for (var b = M[0], c = b.parentNode, e = M.length; e < B; e++) { var f = b.cloneNode(!1); g(f, "left", 100 * e + "%"); c.appendChild(f); M[e] = f } L || (K.appendChild(p), mb()); z = a || 1; m(Ka); nb(!0); T && l(Sa, 0 < screen.availHeight - window.innerHeight); history.pushState({ spl: 1 }, ""); history.pushState({ spl: 2 }, ""); m(p, !0); d(K, "hide-scrollbars", !0); d(p, "show", !0); ob(!0); mb(); X(); H && W(!0, !0) } } function Y(a, b) { a = D[a]; return "undefined" !== typeof a ? (a = "" + a, "false" !== a && (a || b)) : b }
function pb(a) { a ? ba(N, pb) : (m(Ka, Ia), g(N, "opacity", Ha ? 0 : 1), qb(Ga && .8), J && d(N, J, !0)) }
function rb(a) {
L = M[a - 1]; N = L.firstChild; z = a; if (N) x && V(), ya && d(N, ya, !0), pb(!0), J && d(N, J), Ha && g(N, "opacity", 1), Ga && g(N, "transform", ""), g(N, "visibility", "visible"), Q && (Ja.src = Q), H && sb(R); else {
var b = P.media, c = Y("spinner", !0); if ("video" === b) tb(c, !0), N = document.createElement("video"), N.onloadedmetadata = function () { N === this && (N.onerror = null, N.width = N.videoWidth, N.height = N.videoHeight, ub(), tb(c), rb(a)) }, N.poster = D.poster, N.preload = Ba ? "auto" : "metadata", N.controls = Y("controls", !0), N.autoplay = D.autoplay, N.h = Y("inline"),
N.muted = Y("muted"), N.src = P.src, L.appendChild(N); else { if ("node" === b) { N = P.src; "string" === typeof N && (N = document.querySelector(N)); N && (N.g || (N.g = N.parentNode), ub(), L.appendChild(N), rb(a)); return } tb(c, !0); N = document.createElement("img"); N.onload = function () { N === this && (N.onerror = null, tb(c), rb(a), ub()) }; N.src = P.src; L.appendChild(N) } N && (c || g(N, "visibility", "visible"), N.onerror = function () { N === this && (vb(N), d(Va, "error", !0), tb(c)) })
}
} function tb(a, b) { a && d(Va, "spin", b) }
function wb() { return document.fullscreen || document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement } function xb() { mb(); N && ub(); if (T) { var a = wb(); d(Sa, "on", a); a || l(Sa, 0 < screen.availHeight - window.innerHeight) } } function mb() { u = p.clientWidth; na = p.clientHeight } function ub() { oa = N.clientWidth; pa = N.clientHeight } function qb(a) { g(N, "transform", "translate(-50%, -50%) scale(" + (a || v) + ")") } function Z(a, b) { g(L, "transform", a || b ? "translate(" + a + "px, " + b + "px)" : "") }
function yb(a, b, c) { b ? ba(Ka, function () { yb(a, !1, c) }) : g(Ka, "transform", "translateX(" + (100 * -a + (c || 0)) + "%)") } function ob(a) { k(a, window, "keydown", zb); k(a, window, "wheel", Ab); k(a, window, "resize", xb); k(a, window, "popstate", Bb) } function Bb(a) { L && a.state.spl && $a(!0) } function zb(a) { if (L) { var b = !1 !== D["zoom-in"]; switch (a.keyCode) { case 8: b && V(); break; case 27: $a(); break; case 32: H && W(); break; case 37: fb(); break; case 39: gb(); break; case 38: case 107: case 187: b && bb(); break; case 40: case 109: case 189: b && cb() } } }
function Ab(a) { L && !1 !== D["zoom-in"] && (a = a.deltaY, 0 > .5 * (0 > a ? 1 : a ? -1 : 0) ? cb() : bb()) } function W(a, b) { ("boolean" === typeof a ? a : !R) === !R && (R = R ? clearTimeout(R) : 1, d(Ua, "on", R), b || sb(R)) } function sb(a) { ua && (ba(O, function () { g(O, "transition-duration", ""); g(O, "transform", "") }), a && (g(O, "transition-duration", Fa + "s"), g(O, "transform", "translateX(0)"))); a && (R = setTimeout(gb, 1E3 * Fa)) } function X() { za && (Wa = Date.now() + 2950, S || (d(p, "menu", !0), Cb(3E3))) }
function Cb(a) { S = setTimeout(function () { var b = Date.now(); b >= Wa ? (d(p, "menu"), S = 0) : Cb(Wa - b) }, a) } function Db(a) { "boolean" === typeof a && (S = a ? S : 0); S ? (S = clearTimeout(S), d(p, "menu")) : X() } function ib(a) { ca(a, !0); qa = !0; ra = !1; var b = a.touches; b && (b = b[0]) && (a = b); sa = oa * v <= u; la = a.pageX; ma = a.pageY; m(L) } function kb(a) { ca(a); if (qa) { if (ra) { if (sa && ra) { var b = (a = r < -(u / 7) && (z < B || G)) || r > u / 7 && (1 < z || G); if (a || b) yb(z - 1, !0, r / u * 100), a && gb() || b && fb(); r = 0; Z() } m(L, !0) } else Db(); qa = !1 } }
function jb(a) { ca(a); if (qa) { var b = a.touches; b && (b = b[0]) && (a = b); b = (oa * v - u) / 2; r -= la - (la = a.pageX); sa || (r > b ? r = b : r < -b && (r = -b), pa * v > na && (b = (pa * v - na) / 2, t -= ma - (ma = a.pageY), t > b ? t = b : t < -b && (t = -b))); ra = !0; Z(r, t) } else X() } function ab(a) { var b = wb(); if ("boolean" !== typeof a || a !== !!b) if (b) document[Xa](); else p[T]() } function db(a) { "string" !== typeof a && (a = y ? "" : Aa || "white"); y !== a && (y && d(p, y), a && d(p, a, !0), y = a) }
function V(a) { "boolean" === typeof a && (x = !a); x = 1 === v && !x; d(N, "autofit", x); g(N, "transform", ""); v = 1; t = r = 0; ub(); m(L); Z() } function bb() { var a = v / .65; 50 >= a && (x && V(), r /= .65, t /= .65, Z(r, t), Eb(a)) } function cb() { var a = .65 * v; x && V(); 1 <= a && (1 === a ? r = t = 0 : (r *= .65, t *= .65), Z(r, t), Eb(a)) } function Eb(a) { v = a || 1; qb() } function eb() { var a = K, b = document.createElement("a"), c = N.src; b.href = c; b.download = c.substring(c.lastIndexOf("/") + 1); a.appendChild(b); b.click(); a.removeChild(b) }
function $a(a) { setTimeout(function () { K.removeChild(p); L = N = P = D = E = C = va = wa = xa = Da = null }, 200); d(K, "hide-scrollbars"); d(p, "show"); ab(!1); ob(); history.go(!0 === a ? -1 : -2); Q && (Ja.src = ""); R && W(); N && vb(N); S && (S = clearTimeout(S)); y && db(); I && d(p, I); xa && xa() } function vb(a) { if (a.g) a.g.appendChild(a), a.g = null; else { var b = a.parentNode; b && b.removeChild(a); a.src = a.onerror = "" } } function fb(a) { a && X(); if (1 < B) { if (1 < z) return Fb(z - 1); if (G) return yb(B, !0), Fb(B) } }
function gb(a) { a && X(); if (1 < B) { if (z < B) return Fb(z + 1); if (G) return yb(-1, !0), Fb(1); R && W() } } function Fb(a) { if (a !== z) { R ? (clearTimeout(R), sb()) : X(); var b = a > z; z = a; nb(b); return !0 } }
function Gb(a) {
var b = C[z - 1], c = b; D = {}; E && Object.assign(D, E); Object.assign(D, c.dataset || c); ta = D.media; Da = D.onclick; Aa = D.theme; I = D["class"]; za = Y("autohide", !0); G = Y("infinite"); ua = Y("progress", !0); H = Y("autoslide"); Ba = Y("preload", !0); Ca = D.buttonHref; Fa = H && parseFloat(H) || 7; y || Aa && db(Aa); I && d(p, I, !0); I && ba(p); if (c = D.control) { c = "string" === typeof c ? c.split(",") : c; for (var e = 0; e < n.length; e++)D[n[e]] = !1; for (e = 0; e < c.length; e++) { var f = c[e].trim(); "zoom" === f ? D["zoom-in"] = D["zoom-out"] = !0 : D[f] = !0 } } c = D.animation;
Ga = Ha = Ia = !c; J = !1; if (c) for (c = "string" === typeof c ? c.split(",") : c, e = 0; e < c.length; e++)f = c[e].trim(), "scale" === f ? Ga = !0 : "fade" === f ? Ha = !0 : "slide" === f ? Ia = !0 : f && (J = f); ya = D.fit; e = ja && ja.downlink; c = Math.max(na, u) * ka; e && 1200 * e < c && (c = 1200 * e); var A; P = { media: ta, src: ia(b, c, D, ta), title: Y("title", b.alt || b.title || (A = b.firstElementChild) && (A.alt || A.title)) }; Q && (Ja.src = Q = ""); Ba && a && (b = C[z]) && (a = b.dataset || b, (A = a.media) && "image" !== A || (Q = ia(b, c, a, A))); for (b = 0; b < n.length; b++)a = n[b], l(q[a], Y(a, ea[a]))
}
function nb(a) { t = r = 0; v = 1; if (N) if (N.onerror) vb(N); else { var b = N; setTimeout(function () { b && N !== b && (vb(b), b = null) }, 650); pb(); Z() } Gb(a); yb(z - 1); d(Va, "error"); rb(z); m(L); Z(); a = P.title; var c = Y("description"), e = Y("button"), f = a || c || e; f && (a && (Na.firstChild.nodeValue = a), c && (Oa.firstChild.nodeValue = c), e && (Pa.firstChild.nodeValue = e), l(Na, a), l(Oa, c), l(Pa, e), g(Ma, "transform", "all" === za ? "" : "none")); za || d(p, "menu", !0); da(Ma, f); da(Qa, G || 1 < z); da(Ra, G || z < B); Ta.firstChild.nodeValue = 1 < B ? z + " / " + B : ""; wa && wa(z, D) }; window.Spotlight = { init: Za, theme: db, fullscreen: ab, download: eb, autofit: V, next: gb, prev: fb, goto: Fb, close: $a, zoom: Eb, menu: Db, show: function (a, b, c) { C = a; b && (E = b, va = b.onshow, wa = b.onchange, xa = b.onclose, c = c || b.index); lb(c) }, play: W, addControl: U, removeControl: function (a) { var b = q[a]; b && (La.removeChild(b), q[a] = null) } };
}).call(this);