5 urlErrorParamsEnabled: !0
10 O(e.objectMaxDepth) && (u.objectMaxDepth = c(e.objectMaxDepth) ? e.objectMaxDepth : NaN), O(e.urlErrorParamsEnabled) && Ae(e.urlErrorParamsEnabled) && (u.urlErrorParamsEnabled = e.urlErrorParamsEnabled)
19 var l = "https://errors.angularjs.org/1.7.9/",
20 e = l.replace(".", "\\.") + "[\\s\\S]*",
21 c = new RegExp(e, "g");
23 var e, t, n = arguments[0],
25 i = "[" + (a ? a + ":" : "") + n + "] ",
26 o = Re(arguments, 2).map(function(e) {
27 return Ye(e, u.objectMaxDepth)
29 if (i += r.replace(/\{\d+\}/g, function(e) {
30 var t = +e.slice(1, -1);
31 return t < o.length ? o[t].replace(c, "") : e
32 }), i += "\n" + l + (a ? a + "/" : "") + n, u.urlErrorParamsEnabled)
33 for (t = 0, e = "?"; t < o.length; t++, e = "&") i += e + "p" + t + "=" + encodeURIComponent(o[t]);
37 var fe, he, t, v, o = /^\/(.+)\/([a-z]*)$/,
39 pe = Object.prototype.hasOwnProperty,
41 return Ce(e) ? e.toLowerCase() : e
44 return Ce(e) ? e.toUpperCase() : e
49 ge = Object.prototype.toString,
50 h = Object.getPrototypeOf,
52 y = de.angular || (de.angular = {}),
56 if (null == e || x(e)) return !1;
57 if (ke(e) || Ce(e) || he && e instanceof he) return !0;
58 var t = "length" in Object(e) && e.length;
59 return E(t) && (0 <= t && t - 1 in e || "function" == typeof e.item)
62 function ve(e, t, n) {
66 for (r in e) "prototype" !== r && "length" !== r && "name" !== r && e.hasOwnProperty(r) && t.call(n, e[r], r, e);
67 else if (ke(e) || R(e)) {
68 var o = "object" != typeof e;
69 for (r = 0, i = e.length; r < i; r++)(o || r in e) && t.call(n, e[r], r, e)
70 } else if (e.forEach && e.forEach !== ve) e.forEach(t, n, e);
72 for (r in e) t.call(n, e[r], r, e);
73 else if ("function" == typeof e.hasOwnProperty)
74 for (r in e) e.hasOwnProperty(r) && t.call(n, e[r], r, e);
76 for (r in e) pe.call(e, r) && t.call(n, e[r], r, e);
81 for (var r = Object.keys(e).sort(), i = 0; i < r.length; i++) t.call(n, e[r[i]], r[i]);
86 return function(e, t) {
96 t ? e.$$hashKey = t : delete e.$$hashKey
100 for (var r = e.$$hashKey, i = 0, o = t.length; i < o; ++i) {
103 for (var s = Object.keys(a), l = 0, c = s.length; l < c; l++) {
106 n && Ee(d) ? C(d) ? e[u] = new Date(d.valueOf()) : k(d) ? e[u] = new RegExp(d) : d.nodeName ? e[u] = d.cloneNode(!0) : P(d) ? e[u] = d.clone() : "__proto__" !== u && (Ee(e[u]) || (e[u] = ke(d) ? [] : {}), g(e[u], [d], !0)) : e[u] = d
113 return g(e, a.call(arguments, 1), !1)
117 return g(e, a.call(arguments, 1), !0)
121 return parseInt(e, 10)
123 fe = de.document.documentMode;
124 var S = Number.isNaN || function(e) {
129 return be(Object.create(e), t)
145 return Te(e.toString) && e.toString !== ge
157 return null !== e && "object" == typeof e
161 return null !== e && "object" == typeof e && !h(e)
165 return "string" == typeof e
169 return "number" == typeof e
173 return "[object Date]" === ge.call(e)
177 return Array.isArray(e) || e instanceof Array
181 switch (ge.call(e)) {
182 case "[object Error]":
183 case "[object Exception]":
184 case "[object DOMException]":
187 return e instanceof Error
192 return "function" == typeof e
196 return "[object RegExp]" === ge.call(e)
200 return e && e.window === e
204 return e && e.$evalAsync && e.$watch
208 return "boolean" == typeof e
212 return e && Te(e.then)
214 _e.$inject = [], $e.$inject = [];
215 var N = /^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array]$/;
216 var Se = function(e) {
217 return Ce(e) ? e.trim() : e
220 return e.replace(/([-()[\]{}+?*.$^|,:#<!\\])/g, "\\$1").replace(/\x08/g, "\\x08")
224 return !(!e || !(e.nodeName || e.prop && e.attr && e.find))
228 return me(e.nodeName || e[0] && e[0].nodeName)
232 return -1 !== Array.prototype.indexOf.call(e, t)
236 var n = e.indexOf(t);
237 return 0 <= n && e.splice(n, 1), n
240 function j(e, n, t) {
243 if (t = c(t) ? t : NaN, n) {
244 if ((i = n) && E(i.length) && N.test(ge.call(i)) || (r = n, "[object ArrayBuffer]" === ge.call(r))) throw p("cpta", "Can't copy! TypedArray destination cannot be mutated.");
245 if (e === n) throw p("cpi", "Can't copy! Source and destination are identical.");
246 return ke(n) ? n.length = 0 : ve(n, function(e, t) {
247 "$$hashKey" !== t && delete n[t]
248 }), o.push(e), a.push(n), s(e, n, t)
252 function s(e, t, n) {
253 if (--n < 0) return "...";
254 var r, i = t.$$hashKey;
256 for (var o = 0, a = e.length; o < a; o++) t.push(l(e[o], n));
258 for (r in e) t[r] = l(e[r], n);
259 else if (e && "function" == typeof e.hasOwnProperty)
260 for (r in e) e.hasOwnProperty(r) && (t[r] = l(e[r], n));
262 for (r in e) pe.call(e, r) && (t[r] = l(e[r], n));
267 if (!Ee(e)) return e;
268 var n = o.indexOf(e);
269 if (-1 !== n) return a[n];
270 if (x(e) || Me(e)) throw p("cpws", "Can't copy! Making copies of Window or Scope instances is not supported.");
273 switch (ge.call(e)) {
274 case "[object Int8Array]":
275 case "[object Int16Array]":
276 case "[object Int32Array]":
277 case "[object Float32Array]":
278 case "[object Float64Array]":
279 case "[object Uint8Array]":
280 case "[object Uint8ClampedArray]":
281 case "[object Uint16Array]":
282 case "[object Uint32Array]":
283 return new e.constructor(l(e.buffer), e.byteOffset, e.length);
284 case "[object ArrayBuffer]":
285 if (e.slice) return e.slice(0);
286 var t = new ArrayBuffer(e.byteLength);
287 return new Uint8Array(t).set(new Uint8Array(e)), t;
288 case "[object Boolean]":
289 case "[object Number]":
290 case "[object String]":
291 case "[object Date]":
292 return new e.constructor(e.valueOf());
293 case "[object RegExp]":
294 var n = new RegExp(e.source, e.toString().match(/[^/]*$/)[0]);
295 return n.lastIndex = e.lastIndex, n;
296 case "[object Blob]":
297 return new e.constructor([e], {
301 if (Te(e.cloneNode)) return e.cloneNode(!0)
303 return void 0 === i && (i = ke(e) ? [] : Object.create(h(e)), r = !0), o.push(e), a.push(i), r ? s(e, i, t) : i
308 return e === t || e != e && t != t
312 if (e === t) return !0;
313 if (null === e || null === t) return !1;
314 if (e != e && t != t) return !0;
315 var n, r, i, o = typeof e;
316 if (o === typeof t && "object" === o) {
318 if (C(e)) return !!C(t) && Ne(e.getTime(), t.getTime());
319 if (k(e)) return !!k(t) && e.toString() === t.toString();
320 if (Me(e) || Me(t) || x(e) || x(t) || ke(t) || C(t) || k(t)) return !1;
321 for (r in i = Fe(), e)
322 if ("$" !== r.charAt(0) && !Te(e[r])) {
323 if (!Ie(e[r], t[r])) return !1;
326 if (!(r in i) && "$" !== r.charAt(0) && O(t[r]) && !Te(t[r])) return !1;
329 if (!ke(t)) return !1;
330 if ((n = e.length) === t.length) {
331 for (r = 0; r < n; r++)
332 if (!Ie(e[r], t[r])) return !1;
340 var e = de.document.querySelector("[ng-csp]") || de.document.querySelector("[data-ng-csp]");
342 var t = e.getAttribute("ng-csp") || e.getAttribute("data-ng-csp");
344 noUnsafeEval: !t || -1 !== t.indexOf("no-unsafe-eval"),
345 noInlineStyle: !t || -1 !== t.indexOf("no-inline-style")
348 noUnsafeEval: function() {
350 return new Function(""), !1
361 if (O(F.name_)) return F.name_;
362 var e, t, n, r, i = J.length;
363 for (t = 0; t < i; ++t)
364 if (n = J[t], e = de.document.querySelector("[" + n.replace(":", "\\:") + "jq]")) {
365 r = e.getAttribute(n + "jq");
370 function q(e, t, n) {
371 return e.concat(a.call(t, n))
375 return a.call(e, t || 0)
379 var n = 2 < arguments.length ? Re(arguments, 2) : [];
380 return !Te(t) || t instanceof RegExp ? t : n.length ? function() {
381 return arguments.length ? t.apply(e, q(n, arguments, 0)) : t.apply(e, n)
383 return arguments.length ? t.apply(e, arguments) : t.call(e)
389 return "string" == typeof e && "$" === e.charAt(0) && "$" === e.charAt(1) ? n = void 0 : x(t) ? n = "$WINDOW" : t && de.document === t ? n = "$DOCUMENT" : Me(t) && (n = "$SCOPE"), n
393 if (!we(e)) return E(t) || (t = t ? 2 : null), JSON.stringify(e, U, t)
397 return Ce(e) ? JSON.parse(e) : e
402 e = e.replace(z, "");
403 var n = Date.parse("Jan 01, 1970 00:00:00 " + e) / 6e4;
408 return (e = new Date(e.getTime())).setMinutes(e.getMinutes() + t), e
411 function G(e, t, n) {
413 var r = e.getTimezoneOffset();
414 return Y(e, n * (W(t, r) - r))
418 e = he(e).clone().empty();
419 var t = he("<div></div>").append(e).html();
421 return e[0].nodeType === Ue ? me(t) : t.match(/^(<[^>]+>)/)[1].replace(/^<([\w-]+)/, function(e, t) {
431 return decodeURIComponent(e)
437 return ve((e || "").split("&"), function(e) {
439 e && (n = e = e.replace(/\+/g, "%20"), -1 !== (t = e.indexOf("=")) && (n = e.substring(0, t), r = e.substring(t + 1)), O(n = K(n)) && (r = !O(r) || K(r), pe.call(i, n) ? ke(i[n]) ? i[n].push(r) : i[n] = [i[n], r] : i[n] = r))
444 return Q(e, !0).replace(/%26/gi, "&").replace(/%3D/gi, "=").replace(/%2B/gi, "+")
448 return encodeURIComponent(e).replace(/%40/gi, "@").replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%3B/gi, ";").replace(/%20/g, t ? "%20" : "+")
450 var J = ["ng-", "data-ng-", "ng:", "x-ng-"];
451 var ee = function(n) {
452 var e = n.currentScript;
454 if (!(e instanceof de.HTMLScriptElement || e instanceof de.SVGScriptElement)) return !1;
455 var t = e.attributes;
456 return [t.getNamedItem("src"), t.getNamedItem("href"), t.getNamedItem("xlink:href")].every(function(e) {
458 if (!e.value) return !1;
459 var t = n.createElement("a");
460 if (t.href = e.value, n.location.origin === t.origin) return !0;
461 switch (t.protocol) {
477 if (ve(J, function(e) {
479 !i && r.hasAttribute && r.hasAttribute(t) && (o = (i = r).getAttribute(t))
480 }), ve(J, function(e) {
481 var t, n = e + "app";
482 !i && (t = r.querySelector("[" + n.replace(":", "\\:") + "]")) && (o = (i = t).getAttribute(n))
484 if (!ee) return void de.console.error("AngularJS: disabling automatic bootstrap. <script> protocol indicates an extension, document.location.href does not match.");
485 t.strictDi = null !== function(e, t) {
486 var n, r, i = J.length;
487 for (r = 0; r < i; ++r)
488 if (n = J[r] + t, Ce(n = e.getAttribute(n))) return n;
490 }(i, "strict-di"), e(i, o ? [o] : [], t)
494 function ne(n, r, i) {
500 if ((n = he(n)).injector()) {
501 var e = n[0] === de.document ? "document" : He(n);
502 throw p("btstrpd", "App already bootstrapped with this element '{0}'", e.replace(/</, "<").replace(/>/, ">"))
503 }(r = r || []).unshift(["$provide", function(e) {
504 e.value("$rootElement", n)
505 }]), i.debugInfoEnabled && r.push(["$compileProvider", function(e) {
506 e.debugInfoEnabled(!0)
507 }]), r.unshift("ng");
508 var t = Xt(r, i.strictDi);
509 return t.invoke(["$rootScope", "$rootElement", "$compile", "$injector", function(e, t, n, r) {
510 e.$apply(function() {
511 t.data("$injector", r), n(t)(e)
515 e = /^NG_ENABLE_DEBUG_INFO!/,
516 o = /^NG_DEFER_BOOTSTRAP!/;
517 if (de && e.test(de.name) && (i.debugInfoEnabled = !0, de.name = de.name.replace(e, "")), de && !o.test(de.name)) return t();
518 de.name = de.name.replace(o, ""), y.resumeBootstrap = function(e) {
519 return ve(e, function(e) {
522 }, Te(y.resumeDeferredBootstrap) && y.resumeDeferredBootstrap()
526 de.name = "NG_ENABLE_DEBUG_INFO!" + de.name, de.location.reload()
530 var t = y.element(e).injector();
531 if (!t) throw p("test", "no injector found for element argument to getTestability");
532 return t.get("$$testability")
537 return n = n || "_", e.replace(oe, function(e, t) {
538 return (t ? n : "") + e.toLowerCase()
543 function Le(e, t, n) {
544 if (!e) throw p("areq", "Argument '{0}' is {1}", t || "?", n || "required");
548 function se(e, t, n) {
549 return n && ke(e) && (e = e[e.length - 1]), Le(Te(e), t, "not a function, got " + (e && "object" == typeof e ? e.constructor.name || "Object" : typeof e)), e
553 if ("hasOwnProperty" === e) throw p("badname", "hasOwnProperty is not a valid {0} name", t)
557 for (var t, n = e[0], r = e[e.length - 1], i = 1; n !== r && (n = n.nextSibling); i++)(t || e[i] !== n) && (t || (t = he(a.call(e, 0, i))), t.push(n));
562 return Object.create(null)
566 if (null == e) return "";
574 e = !$(e) || ke(e) || C(e) ? V(e) : e.toString()
587 for (var n = 0, r = e.length; n < r; n++) t[n] = e[n]
589 for (var i in t = t || {}, e) "$" === i.charAt(0) && "$" === i.charAt(1) || (t[i] = e[i]);
594 return "function" == typeof e ? e.toString().replace(/ \{[\s\S]*$/, "") : we(e) ? "undefined" : "string" != typeof e ? (n = e, i = [], c(r = t) && (n = y.copy(n, null, r)), JSON.stringify(n, function(e, t) {
595 if (Ee(t = U(e, t))) {
596 if (0 <= i.indexOf(t)) return "...";
608 codeName: "pollution-eradication"
610 ft.expando = "ng339";
611 var Ke = ft.cache = {},
613 ft._data = function(e) {
614 return this.cache[e[this.expando]] || {}
616 var Xe = /-([a-z])/g,
619 mouseleave: "mouseout",
620 mouseenter: "mouseover"
625 return t.toUpperCase()
629 return e.replace(Xe, tt)
631 var rt = /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,
634 at = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,
636 option: [1, '<select multiple="multiple">', "</select>"],
637 thead: [1, "<table>", "</table>"],
638 col: [2, "<table><colgroup>", "</colgroup></table>"],
639 tr: [2, "<table><tbody>", "</tbody></table>"],
640 td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
641 _default: [0, "", ""]
650 return t === qe || !t || t === Be
654 var n, r, i, o, a = t.createDocumentFragment(),
656 if (lt(e)) s.push(t.createTextNode(e));
658 for (n = a.appendChild(t.createElement("div")), r = (ot.exec(e) || ["", ""])[1].toLowerCase(), i = st[r] || st._default, n.innerHTML = i[1] + e.replace(at, "<$1></$2>") + i[2], o = i[0]; o--;) n = n.lastChild;
659 s = q(s, n.childNodes), (n = a.firstChild).textContent = ""
661 return a.textContent = "", a.innerHTML = "", ve(s, function(e) {
665 st.optgroup = st.option, st.tbody = st.tfoot = st.colgroup = st.caption = st.thead, st.th = st.td;
666 var dt = de.Node.prototype.contains || function(e) {
667 return !!(16 & this.compareDocumentPosition(e))
671 if (e instanceof ft) return e;
673 if (Ce(e) && (e = Se(e), t = !0), !(this instanceof ft)) {
674 if (t && "<" !== e.charAt(0)) throw et("nosel", "Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");
677 t ? Ct(this, (n = e, r = r || de.document, (i = rt.exec(n)) ? [r.createElement(i[1])] : (i = ut(n, r)) ? i.childNodes : [])) : Te(e) ? At(e) : Ct(this, e)
681 return e.cloneNode(!0)
685 !t && ct(e) && he.cleanData([e]), e.querySelectorAll && he.cleanData(e.querySelectorAll("*"))
690 for (t in e) return !1;
699 i && !mt(i) || r && !mt(r) || (delete Ke[t], e.ng339 = void 0)
702 function vt(n, e, r, t) {
703 if (O(t)) throw et("offargs", "jqLite#off() does not support the `selector` argument");
709 var s = function(e) {
711 O(r) && Oe(t || [], r), O(r) && t && 0 < t.length || (n.removeEventListener(e, a), delete o[e])
713 ve(e.split(" "), function(e) {
714 s(e), Je[e] && s(Je[e])
717 for (e in o) "$destroy" !== e && n.removeEventListener(e, a), delete o[e];
725 r && (t ? delete r.data[t] : r.data = {}, gt(e))
731 return t && !r && (e.ng339 = n = ++Ze, r = Ke[n] = {
738 function _t(e, t, n) {
741 o = !i && t && !Ee(t),
748 if (o) return l && l[nt(t)];
749 for (r in t) l[nt(r)] = t[r]
755 return !!e.getAttribute && -1 < (" " + (e.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ").indexOf(" " + t + " ")
759 if (t && e.setAttribute) {
760 var n = (" " + (e.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " "),
762 ve(t.split(" "), function(e) {
763 e = Se(e), r = r.replace(" " + e + " ", " ")
764 }), r !== n && e.setAttribute("class", Se(r))
769 if (t && e.setAttribute) {
770 var n = (" " + (e.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " "),
772 ve(t.split(" "), function(e) {
773 e = Se(e), -1 === r.indexOf(" " + e + " ") && (r += e + " ")
774 }), r !== n && e.setAttribute("class", Se(r))
780 if (t.nodeType) e[e.length++] = t;
783 if ("number" == typeof n && t.window !== t) {
785 for (var r = 0; r < n; r++) e[e.length++] = t[r]
786 } else e[e.length++] = t
791 return xt(e, "$" + (t || "ngController") + "Controller")
794 function xt(e, t, n) {
795 e.nodeType === Be && (e = e.documentElement);
796 for (var r = ke(t) ? t : [t]; e;) {
797 for (var i = 0, o = r.length; i < o; i++)
798 if (O(n = he.data(e, r[i]))) return n;
799 e = e.parentNode || e.nodeType === ze && e.host
804 for (pt(e, !0); e.firstChild;) e.removeChild(e.firstChild)
809 var n = e.parentNode;
810 n && n.removeChild(e)
815 de.document.removeEventListener("DOMContentLoaded", t), de.removeEventListener("load", t), e()
817 "complete" === de.document.readyState ? de.setTimeout(e) : (de.document.addEventListener("DOMContentLoaded", t), de.addEventListener("load", t))
819 var St = ft.prototype = {
821 toString: function() {
823 return ve(this, function(e) {
825 }), "[" + t.join(", ") + "]"
828 return he(0 <= e ? this[e] : this[this.length + e])
836 ve("multiple,selected,checked,disabled,readOnly,required,open".split(","), function(e) {
840 ve("input,select,option,textarea,button,form,details".split(","), function(e) {
844 ngMinlength: "minlength",
845 ngMaxlength: "maxlength",
848 ngPattern: "pattern",
853 var n = Dt[t.toLowerCase()];
854 return n && Ot[De(e)] && n
857 function Rt(e, t, n) {
861 function Pt(e, t, n) {
862 var r = t.relatedTarget;
863 r && (r === e || dt.call(e, r)) || n.call(e, t)
867 this.$get = function() {
869 hasClass: function(e, t) {
870 return e.attr && (e = e[0]), $t(e, t)
872 addClass: function(e, t) {
873 return e.attr && (e = e[0]), Et(e, t)
875 removeClass: function(e, t) {
876 return e.attr && (e = e[0]), wt(e, t)
883 var n = e && e.$$hashKey;
884 if (n) return "function" == typeof n && (n = e.$$hashKey()), n;
886 return n = "function" === r || "object" === r && null !== e ? e.$$hashKey = r + ":" + (t || l)() : r + ":" + e
891 hasData: function(e) {
892 for (var t in Ke[e.ng339]) return !0;
895 cleanData: function(e) {
896 for (var t = 0, n = e.length; t < n; t++) bt(e[t]), vt(e[t])
904 return he.data(e, "$scope") || xt(e.parentNode || e, ["$isolateScope", "$scope"])
906 isolateScope: function(e) {
907 return he.data(e, "$isolateScope") || he.data(e, "$isolateScopeNoTemplate")
910 injector: function(e) {
911 return xt(e, "$injector")
913 removeAttr: function(e, t) {
917 css: function(e, t, n) {
918 if (t = nt(t.replace(Qe, "ms-")), !O(n)) return e.style[t];
921 attr: function(e, t, n) {
922 var r, i = e.nodeType;
923 if (i !== Ue && 2 !== i && i !== Ve && e.getAttribute) {
926 if (!O(n)) return r = e.getAttribute(t), a && null !== r && (r = o), null === r ? void 0 : r;
927 null === n || !1 === n && a ? e.removeAttribute(t) : e.setAttribute(t, a ? o : n)
930 prop: function(e, t, n) {
931 if (!O(n)) return e[t];
935 return e.$dv = "", e;
940 return n === qe || n === Ue ? e.textContent : ""
945 val: function(e, t) {
947 if (e.multiple && "select" === De(e)) {
949 return ve(e.options, function(e) {
950 e.selected && n.push(e.value || e.text)
957 html: function(e, t) {
958 if (we(t)) return e.innerHTML;
959 pt(e, !0), e.innerHTML = t
963 ft.prototype[e] = function(e, t) {
964 var n, r, i = this.length;
965 if (c !== Tt && we(2 === c.length && c !== $t && c !== kt ? e : t)) {
967 for (n = 0; n < i; n++)
968 if (c === _t) c(this[n], e);
970 for (r in e) c(this[n], r, e[r]);
973 for (var o = c.$dv, a = we(o) ? Math.min(i, 1) : i, s = 0; s < a; s++) {
974 var l = c(this[s], e, t);
979 for (n = 0; n < i; n++) c(this[n], e, t);
984 on: function(i, e, o, t) {
985 if (O(t)) throw et("onargs", "jqLite#on() does not support the `selector` or `eventData` parameters");
987 var s, l, n, r = yt(i, !0),
990 c || (c = r.handle = (l = a, (n = function(e, t) {
991 e.isDefaultPrevented = function() {
992 return e.defaultPrevented
994 var n = l[t || e.type],
995 r = n ? n.length : 0;
997 if (we(e.immediatePropagationStopped)) {
998 var i = e.stopImmediatePropagation;
999 e.stopImmediatePropagation = function() {
1000 e.immediatePropagationStopped = !0, e.stopPropagation && e.stopPropagation(), i && i.call(e)
1003 e.isImmediatePropagationStopped = function() {
1004 return !0 === e.immediatePropagationStopped
1006 var o = n.specialHandlerWrapper || Rt;
1007 1 < r && (n = We(n));
1008 for (var a = 0; a < r; a++) e.isImmediatePropagationStopped() || o(s, e, n[a])
1010 }).elem = s = i, n));
1011 for (var u = 0 <= e.indexOf(" ") ? e.split(" ") : [e], d = u.length, f = function(e, t, n) {
1013 r || ((r = a[e] = []).specialHandlerWrapper = t, "$destroy" === e || n || i.addEventListener(e, c)), r.push(o)
1014 }; d--;) e = u[d], Je[e] ? (f(Je[e], Pt), f(e, void 0, !0)) : f(e)
1018 one: function(t, n, r) {
1019 (t = he(t)).on(n, function e() {
1020 t.off(n, r), t.off(n, e)
1023 replaceWith: function(t, e) {
1024 var n, r = t.parentNode;
1025 pt(t), ve(new ft(e), function(e) {
1026 n ? r.insertBefore(e, n.nextSibling) : r.replaceChild(e, t), n = e
1029 children: function(e) {
1031 return ve(e.childNodes, function(e) {
1032 e.nodeType === qe && t.push(e)
1035 contents: function(e) {
1036 return e.contentDocument || e.childNodes || []
1038 append: function(e, t) {
1040 if (n === qe || n === ze)
1041 for (var r = 0, i = (t = new ft(t)).length; r < i; r++) {
1046 prepend: function(t, e) {
1047 if (t.nodeType === qe) {
1048 var n = t.firstChild;
1049 ve(new ft(e), function(e) {
1050 t.insertBefore(e, n)
1054 wrap: function(e, t) {
1056 n = e, r = he(t).eq(0).clone()[0], (i = n.parentNode) && i.replaceChild(r, n), r.appendChild(n)
1059 detach: function(e) {
1062 after: function(e, t) {
1066 for (var i = 0, o = (t = new ft(t)).length; i < o; i++) {
1068 r.insertBefore(a, n.nextSibling), n = a
1073 toggleClass: function(n, e, r) {
1074 e && ve(e.split(" "), function(e) {
1076 we(t) && (t = !$t(n, e)), (t ? Et : wt)(n, e)
1079 parent: function(e) {
1080 var t = e.parentNode;
1081 return t && t.nodeType !== ze ? t : null
1084 return e.nextElementSibling
1086 find: function(e, t) {
1087 return e.getElementsByTagName ? e.getElementsByTagName(t) : []
1090 triggerHandler: function(t, e, n) {
1091 var r, i, o, a = e.type || e,
1096 preventDefault: function() {
1097 this.defaultPrevented = !0
1099 isDefaultPrevented: function() {
1100 return !0 === this.defaultPrevented
1102 stopImmediatePropagation: function() {
1103 this.immediatePropagationStopped = !0
1105 isImmediatePropagationStopped: function() {
1106 return !0 === this.immediatePropagationStopped
1108 stopPropagation: _e,
1111 }, e.type && (r = be(r, e)), i = We(c), o = n ? [r].concat(n) : [r], ve(i, function(e) {
1112 r.isImmediatePropagationStopped() || e.apply(t, o)
1116 ft.prototype[e] = function(e, t, n) {
1117 for (var r, i = 0, o = this.length; i < o; i++) we(r) ? O(r = a(this[i], e, t, n)) && (r = he(r)) : Ct(r, a(this[i], e, t, n));
1118 return O(r) ? r : this
1120 }), ft.prototype.bind = ft.prototype.on, ft.prototype.unbind = ft.prototype.off;
1121 var Lt = Object.create(null);
1124 this._keys = [], this._values = [], this._lastKey = NaN, this._lastIndex = -1
1128 return e !== this._lastKey && (this._lastKey = e, this._lastIndex = this._keys.indexOf(e)), this._lastIndex
1130 _transformKey: function(e) {
1131 return S(e) ? Lt : e
1134 e = this._transformKey(e);
1135 var t = this._idx(e);
1136 if (-1 !== t) return this._values[t]
1139 return e = this._transformKey(e), -1 !== this._idx(e)
1141 set: function(e, t) {
1142 e = this._transformKey(e);
1143 var n = this._idx(e); - 1 === n && (n = this._lastIndex = this._keys.length), this._keys[n] = e, this._values[n] = t
1145 delete: function(e) {
1146 e = this._transformKey(e);
1147 var t = this._idx(e);
1148 return -1 !== t && (this._keys.splice(t, 1), this._values.splice(t, 1), this._lastKey = NaN, this._lastIndex = -1, !0)
1153 this.$get = [function() {
1158 Bt = /^[^(]*\(\s*([^)]*)\)/m,
1160 Wt = /^\s*(_?)(\S+?)\1\s*$/,
1161 Yt = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,
1162 Gt = M("$injector");
1165 return Function.prototype.toString.call(e)
1169 var t = Kt(e).replace(Yt, "");
1170 return t.match(Vt) || t.match(Bt)
1183 service: f(function(e, t) {
1184 return p(e, ["$injector", function(e) {
1185 return e.instantiate(t)
1188 value: f(function(e, t) {
1189 return p(e, D(t), !1)
1191 constant: f(function(e, t) {
1192 le(e, "constant"), u[e] = t, n[e] = t
1194 decorator: function(e, t) {
1195 var n = l.get(e + a),
1197 n.$get = function() {
1198 var e = d.invoke(r, n);
1199 return d.invoke(t, null, {
1206 l = u.$injector = g(u, function(e, t) {
1207 throw y.isString(t) && s.push(t), Gt("unpr", "Unknown provider: {0}", s.join(" <- "))
1210 t = g(n, function(e, t) {
1211 var n = l.get(e + a, t);
1212 return d.invoke(n.$get, n, void 0, e)
1215 u["$injector" + a] = {
1217 }, d.modules = l.modules = Fe();
1219 return (d = t.get("$injector")).strictDi = c, ve(r, function(e) {
1221 }), d.loadNewModules = function(e) {
1222 ve(m(e), function(e) {
1228 return function(e, t) {
1229 if (!Ee(e)) return n(e, t);
1235 if (le(e, "service"), (Te(t) || ke(t)) && (t = l.instantiate(t)), !t.$get) throw Gt("pget", "Provider '{0}' must define $get factory method.", e);
1239 function p(e, t, n) {
1241 $get: !1 !== n ? (r = e, i = t, function() {
1242 var e = d.invoke(i, this);
1243 if (we(e)) throw Gt("undef", "Provider '{0}' must return a value from $get factory method.", r);
1251 Le(we(e) || ke(e), "modulesToLoad", "not an array");
1253 return ve(e, function(t) {
1257 Ce(t) ? (n = v(t), d.modules[t] = n, r = r.concat(m(n.requires)).concat(n._runBlocks), e(n._invokeQueue), e(n._configBlocks)) : Te(t) ? r.push(l.invoke(t)) : ke(t) ? r.push(l.invoke(t)) : se(t, "module")
1259 throw ke(t) && (t = t[t.length - 1]), e.message && e.stack && -1 === e.stack.indexOf(e.message) && (e = e.message + "\n" + e.stack), Gt("modulerr", "Failed to instantiate module {0} due to:\n{1}", t, e.stack || e.message || e)
1265 for (t = 0, n = e.length; t < n; t++) {
1268 i[r[1]].apply(i, r[2])
1276 if (n.hasOwnProperty(t)) {
1277 if (n[t] === i) throw Gt("cdep", "Circular dependency found: {0}", t + " <- " + s.join(" <- "));
1281 return s.unshift(t), n[t] = i, n[t] = r(t, e), n[t]
1283 throw n[t] === i && delete n[t], e
1289 function o(e, t, n) {
1290 for (var r = [], i = Xt.$$annotate(e, c, n), o = 0, a = i.length; o < a; o++) {
1292 if ("string" != typeof s) throw Gt("itkn", "Incorrect injection token! Expected service name as string, got {0}", s);
1293 r.push(t && t.hasOwnProperty(s) ? t[s] : l(s, n))
1298 invoke: function(e, t, n, r) {
1299 "string" == typeof n && (r = n, n = null);
1301 return ke(e) && (e = e[e.length - 1]),
1303 if (fe || "function" != typeof e) return !1;
1304 var t = e.$$ngIsClass;
1305 return Ae(t) || (t = e.$$ngIsClass = /^class\b/.test(Kt(e))), t
1306 }(e) ? (i.unshift(null), new(Function.prototype.bind.apply(e, i))) : e.apply(t, i)
1308 instantiate: function(e, t, n) {
1309 var r = ke(e) ? e[e.length - 1] : e,
1311 return i.unshift(null), new(Function.prototype.bind.apply(r, i))
1314 annotate: Xt.$$annotate,
1316 return u.hasOwnProperty(e + a) || n.hasOwnProperty(e)
1324 this.disableAutoScrolling = function() {
1326 }, this.$get = ["$window", "$location", "$rootScope", function(r, i, o) {
1332 var t = function() {
1337 e = "fixed" !== r.getComputedStyle(t).position ? 0 : t.getBoundingClientRect().bottom
1338 } else E(e) || (e = 0);
1342 var n = e.getBoundingClientRect().top;
1343 r.scrollBy(0, n - t)
1345 } else r.scrollTo(0, 0)
1350 (e = Ce(e) ? e : E(e) ? e.toString() : i.hash()) ? (t = a.getElementById(e)) ? s(t): (n = a.getElementsByName(e), r = null, Array.prototype.some.call(n, function(e) {
1351 if ("a" === De(e)) return r = e, !0
1352 }), (t = r) ? s(t) : "top" === e && s(null)): s(null)
1354 return e && o.$watch(function() {
1358 e === t && "" === e || (n = function() {
1360 }, "complete" === (r = r || de).document.readyState ? r.setTimeout(n) : he(r).on("load", n))
1364 Xt.$$annotate = function(e, t, n) {
1366 if ("function" == typeof e) {
1367 if (!(r = e.$inject)) {
1368 if (r = [], e.length) {
1369 if (t) throw Ce(n) && n || (n = e.name || ((o = Zt(e)) ? "function(" + (o[1] || "").replace(/[\s\r\n]+/, " ") + ")" : "fn")), Gt("strictdi", "{0} is not using explicit annotation and cannot be invoked in strict mode", n);
1370 ve(Zt(e)[1].split(zt), function(e) {
1371 e.replace(Wt, function(e, t, n) {
1378 } else ke(e) ? (se(e[i = e.length - 1], "fn"), r = e.slice(0, i)) : se(e, "fn", !0);
1381 var Jt = M("$animate"),
1386 return e || t ? e ? t ? (ke(e) && (e = e.join(" ")), ke(t) && (t = t.join(" ")), e + " " + t) : e : t : ""
1390 return Ee(e) ? e : {}
1392 var on = function() {
1398 this.$get = ["$$AnimateRunner", "$rootScope", function(d, f) {
1404 push: function(e, t, n, r) {
1405 var i, o, a, s, l, c;
1406 r && r(), (n = n || {}).from && e.css(n.from), n.to && e.css(n.to), (n.addClass || n.removeClass) && (i = e, o = n.addClass, a = n.removeClass, s = m.get(i) || {}, l = h(s, o, !0), c = h(s, a, !1), (l || c) && (m.set(i, s), g.push(i), 1 === g.length && f.$$postDigest(p)));
1408 return u.complete(), u
1412 function h(t, e, n) {
1414 return e && ve(e = Ce(e) ? e.split(" ") : ke(e) ? e : [], function(e) {
1415 e && (r = !0, t[e] = n)
1423 var n = function(e) {
1424 Ce(e) && (e = e.split(" "));
1426 return ve(e, function(e) {
1427 e.length && (t[e] = !0)
1432 ve(t, function(e, t) {
1433 e !== !!n[t] && (e ? r += (r.length ? " " : "") + t : i += (i.length ? " " : "") + t)
1434 }), ve(e, function(e) {
1435 r && Et(e, r), i && wt(e, i)
1442 sn = ["$provide", function(r) {
1446 this.$$registeredAnimations = Object.create(null), this.register = function(e, t) {
1447 if (e && "." !== e.charAt(0)) throw Jt("notcsel", "Expecting class selector starting with '.' got '{0}'.", e);
1448 var n = e + "-animation";
1449 i.$$registeredAnimations[e.substr(1)] = n, r.factory(n, t)
1450 }, this.customFilter = function(e) {
1451 return 1 === arguments.length && (n = Te(e) ? e : null), n
1452 }, this.classNameFilter = function(e) {
1453 if (1 === arguments.length && ((t = e instanceof RegExp ? e : null) && new RegExp("[(\\s|\\/)]" + tn + "[(\\s|\\/)]").test(t.toString()))) throw t = null, Jt("nongcls", '$animateProvider.classNameFilter(regex) prohibits accepting a regex value which matches/contains the "{0}" CSS class.', tn);
1455 }, this.$get = ["$$animateQueue", function(o) {
1456 function i(e, t, n) {
1458 var r = function(e) {
1459 for (var t = 0; t < e.length; t++) {
1461 if (n.nodeType === en) return n
1464 !r || r.parentNode || r.previousElementSibling || (n = null)
1466 n ? n.after(e) : t.prepend(e)
1473 cancel: function(e) {
1474 e.cancel && e.cancel()
1476 enter: function(e, t, n, r) {
1477 return t = t && he(t), n = n && he(n), i(e, t = t || n.parent(), n), o.push(e, "enter", rn(r))
1479 move: function(e, t, n, r) {
1480 return t = t && he(t), n = n && he(n), i(e, t = t || n.parent(), n), o.push(e, "move", rn(r))
1482 leave: function(e, t) {
1483 return o.push(e, "leave", rn(t), function() {
1487 addClass: function(e, t, n) {
1488 return (n = rn(n)).addClass = nn(n.addclass, t), o.push(e, "addClass", n)
1490 removeClass: function(e, t, n) {
1491 return (n = rn(n)).removeClass = nn(n.removeClass, t), o.push(e, "removeClass", n)
1493 setClass: function(e, t, n, r) {
1494 return (r = rn(r)).addClass = nn(r.addClass, t), r.removeClass = nn(r.removeClass, n), o.push(e, "setClass", r)
1496 animate: function(e, t, n, r, i) {
1497 return (i = rn(i)).from = i.from ? be(i.from, t) : t, i.to = i.to ? be(i.to, n) : n, r = r || "ng-inline-animate", i.tempClasses = nn(i.tempClasses, r), o.push(e, "animate", i)
1503 this.$get = ["$$rAF", function(t) {
1507 n.push(e), 1 < n.length || t(function() {
1508 for (var e = 0; e < n.length; e++) n[e]();
1514 return r(function() {
1524 this.$get = ["$q", "$sniffer", "$$animateAsyncRun", "$$isDocumentHidden", "$timeout", function(t, e, n, r, i) {
1528 this._doneCallbacks = [], this._tick = function(e) {
1529 r() ? i(e, 0, !1) : t(e)
1532 return o.chain = function(e, n) {
1535 if (r === e.length) return void n(!0);
1537 !1 !== e ? (r++, t()) : n(!1)
1540 }, o.all = function(t, n) {
1545 i = i && e, ++r === t.length && n(i)
1551 setHost: function(e) {
1555 2 === this._state ? e() : this._doneCallbacks.push(e)
1558 getPromise: function() {
1559 if (!this.promise) {
1561 this.promise = t(function(t, n) {
1562 e.done(function(e) {
1563 !1 === e ? n() : t()
1569 then: function(e, t) {
1570 return this.getPromise().then(e, t)
1572 catch: function(e) {
1573 return this.getPromise().catch(e)
1575 finally: function(e) {
1576 return this.getPromise().finally(e)
1579 this.host.pause && this.host.pause()
1581 resume: function() {
1582 this.host.resume && this.host.resume()
1585 this.host.end && this.host.end(), this._resolve(!0)
1587 cancel: function() {
1588 this.host.cancel && this.host.cancel(), this._resolve(!1)
1590 complete: function(e) {
1592 0 === t._state && (t._state = 1, t._tick(function() {
1596 _resolve: function(t) {
1597 2 !== this._state && (ve(this._doneCallbacks, function(e) {
1599 }), this._doneCallbacks.length = 0, this._state = 2)
1605 this.$get = ["$$rAF", "$q", "$$AnimateRunner", function(a, e, s) {
1606 return function(e, t) {
1608 n.$$prepared || (n = j(n)), n.cleanupStyles && (n.from = n.to = null), n.from && (e.css(n.from), n.from = null);
1616 return a(function() {
1618 n.addClass && (e.addClass(n.addClass), n.addClass = null);
1619 n.removeClass && (e.removeClass(n.removeClass), n.removeClass = null);
1620 n.to && (e.css(n.to), n.to = null)
1621 }(), r || i.complete(), r = !0
1628 function dn(s, e, t, l, n) {
1636 c.isMock = !1, c.$$completeOutstandingRequest = a.completeTask, c.$$incOutstandingRequestCount = a.incTaskCount, c.notifyWhenNoOutstandingRequests = a.notifyWhenNoPendingTasks;
1637 var f, h, p = u.href,
1640 v = l.history ? function() {
1645 w(), c.url = function(e, t, n) {
1646 if (we(n) && (n = null), u !== s.location && (u = s.location), d !== s.history && (d = s.history), e) {
1648 if (e = fi(e).href, p === e && (!l.history || r)) return c;
1649 var i = p && cr(p) === cr(e);
1650 return p = e, h = n, !l.history || i && r ? (i || (g = e), t ? u.replace(e) : i ? u.hash = -1 === (a = (o = e).indexOf("#")) ? "" : o.substr(a) : u.href = e, u.href !== e && (g = e)) : (d[t ? "replaceState" : "pushState"](n, "", e), w()), g && (g = e), c
1652 return (g || u.href).replace(/#$/, "");
1654 }, c.state = function() {
1666 Ie(f = we(f = v()) ? null : f, $) && (f = $), h = $ = f
1671 w(), p === c.url() && e === f || (p = c.url(), h = f, ve(b, function(e) {
1675 c.onUrlChange = function(e) {
1676 return y || (l.history && he(s).on("popstate", _), he(s).on("hashchange", _), y = !0), b.push(e), e
1677 }, c.$$applicationDestroyed = function() {
1678 he(s).off("hashchange popstate", _)
1679 }, c.$$checkUrlChange = E, c.baseHref = function() {
1680 var e = m.attr("href");
1681 return e ? e.replace(/^(https?:)?\/\/[^/]*/, "") : ""
1682 }, c.defer = function(e, t, n) {
1684 return t = t || 0, n = n || a.DEFAULT_TASK_TYPE, a.incTaskCount(n), r = i(function() {
1685 delete o[r], a.completeTask(e, n)
1687 }, c.defer.cancel = function(e) {
1688 if (o.hasOwnProperty(e)) {
1690 return delete o[e], r(e), a.completeTask(_e, t), !0
1697 this.$get = ["$window", "$log", "$sniffer", "$document", "$$taskTrackerFactory", function(e, t, n, r, i) {
1698 return new dn(e, r, t, n, i)
1703 this.$get = function() {
1707 if (e in d) throw M("$cacheFactory")("iid", "CacheId '{0}' is already taken!", e);
1713 o = t && t.capacity || Number.MAX_VALUE,
1718 put: function(e, t) {
1720 if (o < Number.MAX_VALUE) c(a[e] || (a[e] = {
1723 return e in i || n++, i[e] = t, o < n && this.remove(l.key), t
1727 if (o < Number.MAX_VALUE) {
1734 remove: function(e) {
1735 if (o < Number.MAX_VALUE) {
1738 t === s && (s = t.p), t === l && (l = t.n), u(t.n, t.p), delete a[e]
1740 e in i && (delete i[e], n--)
1742 removeAll: function() {
1743 i = Fe(), n = 0, a = Fe(), s = l = null
1745 destroy: function() {
1746 a = r = i = null, delete d[e]
1756 e !== s && (l ? l === e && (l = e.n) : l = e, u(e.n, e.p), u(e, s), (s = e).n = null)
1760 e !== t && (e && (e.p = t), t && (t.n = e))
1763 return e.info = function() {
1765 return ve(d, function(e, t) {
1768 }, e.get = function(e) {
1775 this.$get = ["$cacheFactory", function(e) {
1776 return e("templates")
1779 var mn = M("$compile");
1780 var gn = new function() {};
1785 B = /^\s*directive:\s*([\w-]+)\s+(.*)$/,
1786 ue = /(([\w-]+)(?::([^;]+))?;?)/,
1790 for (t = 0; t < r.length; t++) n[r[t]] = !0;
1792 }("ngSrc,ngSrcset,src,srcset"),
1793 b = /^(?:(\^\^?)?(\?)?(\^\^?)?)?/,
1794 _ = /^(on[a-z]+|formaction)$/,
1797 function r(e, r, i) {
1798 var o = /^([@&]|[=<](\*?))(\??)\s*([\w$]*)$/,
1800 return ve(e, function(e, t) {
1801 if ((e = e.trim()) in s) a[t] = s[e];
1804 if (!n) throw mn("iscp", "Invalid {3} for directive '{0}'. Definition: {... {1}: '{2}' ...}", r, t, e, i ? "controller bindings definition" : "isolate scope definition");
1807 collection: "*" === n[2],
1808 optional: "?" === n[3],
1810 }, n[4] && (s[e] = a[t])
1818 bindToController: null
1820 if (Ee(e.scope) && (!0 === e.bindToController ? (n.bindToController = r(e.scope, t, !0), n.isolateScope = {}) : n.isolateScope = r(e.scope, t, !1)), Ee(e.bindToController) && (n.bindToController = r(e.bindToController, t, !0)), n.bindToController && !e.controller) throw mn("noctrl", "Cannot bind to controller without directive '{0}'s controller.", t);
1823 this.directive = function e(l, t) {
1824 return Le(l, "name"), le(l, "directive"), Ce(l) ? (! function(e) {
1825 var t = e.charAt(0);
1826 if (!t || t !== me(t)) throw mn("baddir", "Directive/Component name '{0}' is invalid. The first character must be a lowercase letter", e);
1827 if (e !== e.trim()) throw mn("baddir", "Directive/Component name '{0}' is invalid. The name should not contain leading or trailing whitespaces", e)
1828 }(l), Le(t, "directiveFactory"), p.hasOwnProperty(l) || (p[l] = [], n.factory(l + m, ["$injector", "$exceptionHandler", function(o, a) {
1830 return ve(p[l], function(e, t) {
1832 var n = o.invoke(e);
1835 } : !n.compile && n.link && (n.compile = D(n.link)), n.priority = n.priority || 0, n.index = t, n.name = n.name || l, n.require = (!ke(i = (r = n).require || r.controller && r.name) && Ee(i) && ve(i, function(e, t) {
1837 e.substring(n[0].length) || (i[t] = n[0] + t)
1838 }), i), n.restrict = function(e, t) {
1839 if (e && (!Ce(e) || !/[EACM]/.test(e))) throw mn("badrestrict", "Restrict property '{0}' of directive '{1}' is invalid", e, t);
1841 }(n.restrict, l), n.$$moduleName = e.$$moduleName, s.push(n)
1847 }])), p[l].push(t)) : ve(l, A(e)), this
1848 }, this.component = function e(t, i) {
1849 if (!Ce(t)) return ve(t, A(Pe(this, e))), this;
1850 var o = i.controller || function() {};
1854 return Te(n) || ke(n) ? function(e, t) {
1855 return r.invoke(n, this, {
1861 var t = i.template || i.templateUrl ? i.template : "",
1864 controllerAs: function(e, t) {
1865 if (t && Ce(t)) return t;
1870 }(i.controller) || i.controllerAs || "$ctrl",
1872 templateUrl: e(i.templateUrl),
1873 transclude: i.transclude,
1875 bindToController: i.bindings || {},
1879 return ve(i, function(e, t) {
1880 "$" === t.charAt(0) && (n[t] = e)
1883 return ve(i, function(e, t) {
1884 "$" === t.charAt(0) && (n[t] = e, Te(o) && (o[t] = e))
1885 }), n.$inject = ["$injector"], this.directive(t, n)
1886 }, this.aHrefSanitizationWhitelist = function(e) {
1887 return O(e) ? (t.aHrefSanitizationWhitelist(e), this) : t.aHrefSanitizationWhitelist()
1888 }, this.imgSrcSanitizationWhitelist = function(e) {
1889 return O(e) ? (t.imgSrcSanitizationWhitelist(e), this) : t.imgSrcSanitizationWhitelist()
1892 E = !(this.debugInfoEnabled = function(e) {
1893 return O(e) ? (w = e, this) : w
1895 this.strictComponentBindingsEnabled = function(e) {
1896 return O(e) ? (E = e, this) : E
1899 this.onChangesTtl = function(e) {
1900 return arguments.length ? (C = e, this) : C
1903 this.commentDirectivesEnabled = function(e) {
1904 return arguments.length ? (k = e, this) : k
1907 this.cssClassDirectivesEnabled = function(e) {
1908 return arguments.length ? (x = e, this) : x
1911 this.addPropertySecurityContext = function(e, t, n) {
1912 var r = e.toLowerCase() + "|" + t.toLowerCase();
1913 if (r in T && T[r] !== n) throw mn("ctxoverride", "Property context '{0}.{1}' already set to '{2}', cannot override to '{3}'.", e, t, T[r], n);
1914 return T[r] = n, this
1919 T[e.toLowerCase()] = t
1922 e(Gr.HTML, ["iframe|srcdoc", "*|innerHTML", "*|outerHTML"]), e(Gr.CSS, ["*|style"]), e(Gr.URL, ["area|href", "area|ping", "a|href", "a|ping", "blockquote|cite", "body|background", "del|cite", "input|src", "ins|cite", "q|cite"]), e(Gr.MEDIA_URL, ["audio|src", "img|src", "img|srcset", "source|src", "source|srcset", "track|src", "video|src", "video|poster"]), e(Gr.RESOURCE_URL, ["*|formAction", "applet|code", "applet|codebase", "base|href", "embed|src", "frame|src", "form|action", "head|profile", "html|manifest", "iframe|src", "link|href", "media|src", "object|codebase", "object|data", "script|src"])
1923 }(), this.$get = ["$injector", "$interpolate", "$exceptionHandler", "$templateRequest", "$parse", "$controller", "$rootScope", "$sce", "$animate", function(h, A, z, e, S, W, D, f, i) {
1925 c = de.document.createElement("div"),
1932 if (!--t) throw o = void 0, mn("infchng", "{0} $onChanges() iterations reached. Aborting!\n", C);
1933 D.$apply(function() {
1934 for (var e = 0, t = o.length; e < t; ++e) try {
1948 if (!Ce(e)) throw mn("srcset", 'Can\'t pass trusted values to `{0}`: "{1}"', t, e.toString());
1949 for (var n = "", r = Se(e), i = /\s/.test(r) ? /(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/ : /(,)/, o = r.split(i), a = Math.floor(o.length / 2), s = 0; s < a; s++) {
1951 n += f.getTrustedMediaUrl(Se(o[l])), n += " " + Se(o[l + 1])
1953 var c = Se(o[2 * s]).split(/\s/);
1954 return n += f.getTrustedMediaUrl(Se(c[0])), 2 === c.length && (n += " " + Se(c[1])), n
1959 var n, r, i, o = Object.keys(t);
1960 for (n = 0, r = o.length; n < r; n++) this[i = o[n]] = t[i]
1961 } else this.$attr = {};
1972 $addClass: function(e) {
1973 e && 0 < e.length && i.addClass(this.$$element, e)
1975 $removeClass: function(e) {
1976 e && 0 < e.length && i.removeClass(this.$$element, e)
1978 $updateClass: function(e, t) {
1980 n && n.length && i.addClass(this.$$element, n);
1982 r && r.length && i.removeClass(this.$$element, r)
1984 $set: function(e, t, n, r) {
1985 var i = It(this.$$element[0], e),
1988 i ? (this.$$element.prop(e, t), r = i) : o && (this[o] = t, a = o), this[e] = t, r ? this.$attr[e] = r : (r = this.$attr[e]) || (this.$attr[e] = r = je(e, "-")), "img" === De(this.$$element) && "srcset" === e && (this[e] = t = u(t, "$set('srcset', value)")), !1 !== n && (null === t || we(t) ? this.$$element.removeAttr(r) : l.test(r) ? i && !1 === t ? this.$$element.removeAttr(r) : this.$$element.attr(r, t) : function(e, t, n) {
1989 c.innerHTML = "<span " + t + ">";
1990 var r = c.firstChild.attributes,
1992 r.removeNamedItem(i.name), i.value = n, e.attributes.setNamedItem(i)
1993 }(this.$$element[0], r, t));
1994 var s = this.$$observers;
1995 s && ve(s[a], function(e) {
2003 $observe: function(e, t) {
2005 r = n.$$observers || (n.$$observers = Fe()),
2006 i = r[e] || (r[e] = []);
2007 return i.push(t), D.$evalAsync(function() {
2008 i.$$inter || !n.hasOwnProperty(e) || we(n[e]) || t(n[e])
2015 var n = A.startSymbol(),
2017 G = "{{" === n && "}}" === r ? $e : function(e) {
2018 return e.replace(/\{\{/g, n).replace(/}}/g, r)
2020 I = /^ng(Attr|Prop|On)([A-Z].*)$/,
2022 return K.$$addBindingInfo = w ? function(e, t) {
2023 var n = e.data("$binding") || [];
2024 ke(t) ? n = n.concat(t) : n.push(t), e.data("$binding", n)
2025 } : _e, K.$$addBindingClass = w ? function(e) {
2027 } : _e, K.$$addScopeInfo = w ? function(e, t, n, r) {
2028 var i = n ? r ? "$isolateScopeNoTemplate" : "$isolateScope" : "$scope";
2030 } : _e, K.$$addScopeClass = w ? function(e, t) {
2031 M(e, t ? "ng-isolate-scope" : "ng-scope")
2032 } : _e, K.$$createComment = function(e, t) {
2034 return w && (n = " " + (e || "") + ": ", t && (n += t + " ")), de.document.createComment(n)
2037 function K(u, e, t, n, d) {
2038 u instanceof he || (u = he(u));
2039 var f = P(u, e, u, t, n, d);
2040 K.$$addScopeClass(u);
2042 return function(e, t, n) {
2043 if (!u) throw mn("multilink", "This element has already been linked.");
2044 Le(e, "scope"), d && d.needsNewScope && (e = e.$parent.$new());
2045 var r, i, o, a = (n = n || {}).parentBoundTranscludeFn,
2046 s = n.transcludeControllers,
2047 l = n.futureParentElement;
2048 if (a && a.$$boundTransclude && (a = a.$$boundTransclude), h || (i = (r = l) && r[0], h = i && "foreignobject" !== De(i) && ge.call(i).match(/SVG/) ? "svg" : "html"), o = "html" !== h ? he(oe(h, he("<div></div>").append(u).html())) : t ? St.clone.call(u) : u, s)
2049 for (var c in s) o.data("$" + c + "Controller", s[c].instance);
2050 return K.$$addScopeInfo(o, e), t && t(o, e), f && f(e, o, o, a), t || (u = f = null), o
2054 function P(e, p, t, n, r, i) {
2055 for (var o, a, s, l, c, u, m, g = [], d = ke(e) || e instanceof he, f = 0; f < e.length; f++) o = new Y, 11 === fe && v(e, f, d), (s = (a = Z(e[f], [], o, 0 === f ? n : void 0, r)).length ? j(a, e[f], o, p, t, null, [], [], i) : null) && s.scope && K.$$addScopeClass(o.$$element), c = s && s.terminal || !(l = e[f].childNodes) || !l.length ? null : P(l, s ? (s.transcludeOnThisElement || !s.templateOnThisElement) && s.transclude : p), (s || c) && (g.push(f, s, c), u = !0, m = m || s), i = null;
2056 return u ? function(e, t, n, r) {
2057 var i, o, a, s, l, c, u, d, f;
2060 for (f = new Array(h), l = 0; l < g.length; l += 3) u = g[l], f[u] = t[u]
2062 for (l = 0, c = g.length; l < c;) a = f[g[l++]], i = g[l++], o = g[l++], i ? (i.scope ? (s = e.$new(), K.$$addScopeInfo(he(a), s)) : s = e, d = i.transcludeOnThisElement ? H(e, i.transclude, r) : !i.templateOnThisElement && r ? r : !r && p ? H(e, p) : null, i(o, s, a, n, d)) : o && o(e, a.childNodes, void 0, r)
2066 function v(e, t, n) {
2069 if (i.nodeType === Ue)
2071 (r = o ? i.nextSibling : e[t + 1]) && r.nodeType === Ue;) i.nodeValue = i.nodeValue + r.nodeValue, r.parentNode && r.parentNode.removeChild(r), n && r === e[t + 1] && e.splice(t + 1, 1)
2074 function H(o, a, s) {
2075 function e(e, t, n, r, i) {
2076 return e || ((e = o.$new(!1, i)).$$transcluded = !0), a(e, t, {
2077 parentBoundTranscludeFn: s,
2078 transcludeControllers: n,
2079 futureParentElement: r
2082 var t = e.$$slots = Fe();
2083 for (var n in a.$$slots) a.$$slots[n] ? t[n] = H(o, a.$$slots[n], s) : t[n] = null;
2087 function Z(e, t, n, r, i) {
2088 var o, a, s, l, c, u, d, f, h = e.nodeType,
2092 L(t, $n(a = De(e)), "E", r, i);
2093 for (var m, g, v, b, y, _ = e.attributes, $ = 0, w = _ && _.length; $ < w; $++) {
2099 g = (m = _[$]).name, b = m.value, (y = (v = $n(g.toLowerCase())).match(I)) ? (x = "Attr" === y[1], T = "Prop" === y[1], M = "On" === y[1], g = g.replace(yn, "").toLowerCase().substr(4 + y[1].length).replace(/_(.)/g, function(e, t) {
2100 return t.toUpperCase()
2101 })) : (E = v.match(R)) && F(E[1]) && (k = (C = g).substr(0, g.length - 5) + "end", g = g.substr(0, g.length - 6)), T || M ? (n[v] = b, p[v] = m.name, T ? U(e, t, v, g) : (d = v, f = g, t.push(Uo(S, D, z, d, f, !1)))) : (p[v = $n(g.toLowerCase())] = g, !x && n.hasOwnProperty(v) || (n[v] = b, It(e, v) && (n[v] = !0)), V(e, t, b, v, x), L(t, v, "A", r, i, C, k))
2103 if ("input" === a && "hidden" === e.getAttribute("type") && e.setAttribute("autocomplete", "off"), !N) break;
2104 if (Ee(s = e.className) && (s = s.animVal), Ce(s) && "" !== s)
2105 for (; o = ue.exec(s);) L(t, v = $n(o[2]), "C", r, i) && (n[v] = Se(o[3])), s = s.substr(o.index + o[0].length);
2108 l = t, c = e.nodeValue, (u = A(c, !0)) && l.push({
2110 compile: function(e) {
2113 return r && K.$$addBindingClass(t),
2116 r || K.$$addBindingClass(n), K.$$addBindingInfo(n, u.expressions), e.$watch(u, function(e) {
2125 ! function(e, t, n, r, i) {
2127 var o = B.exec(e.nodeValue);
2130 L(t, a, "M", r, i) && (n[a] = Se(o[2]))
2138 function X(e, t, n) {
2141 if (t && e.hasAttribute && e.hasAttribute(t))
2143 if (!e) throw mn("uterdir", "Unterminated attribute, found '{0}' but no matching '{1}' found.", t, n);
2144 e.nodeType === qe && (e.hasAttribute(t) && i++, e.hasAttribute(n) && i--), r.push(e), e = e.nextSibling
2150 function Q(o, a, s) {
2151 return function(e, t, n, r, i) {
2152 return t = X(t[0], a, s), o(e, t, n, r, i)
2156 function J(e, t, n, r, i, o) {
2158 return e ? K(t, n, r, i, o) : function() {
2159 return a || (a = K(t, n, r, i, o), t = n = o = null), a.apply(this, arguments)
2163 function j(e, _, $, t, n, r, w, E, i) {
2165 for (var o, a, s, l, c, u = -Number.MAX_VALUE, C = i.newScopeDirective, k = i.controllerDirectives, x = i.newIsolateScopeDirective, T = i.templateDirective, d = i.nonTlbTranscludeDirective, f = !1, h = !1, M = i.hasElementTranscludeDirective, p = $.$$element = he(_), m = r, g = t, v = !1, b = !1, y = 0, A = e.length; y < A; y++) {
2166 var S = (o = e[y]).$$start,
2168 if (S && (p = X(_, S, D)), s = void 0, u > o.priority) break;
2169 if ((c = o.scope) && (o.templateUrl || (Ee(c) ? (ie("new/isolated scope", x || C, o, p), x = o) : ie("new/isolated scope", x, o, p)), C = C || o), a = o.name, !v && (o.replace && (o.templateUrl || o.template) || o.transclude && !o.$$tlb)) {
2170 for (var O, N = y + 1; O = e[N++];)
2171 if (O.transclude && !O.$$tlb || O.replace && (O.templateUrl || O.template)) {
2176 if (!o.templateUrl && o.controller && (k = k || Fe(), ie("'" + a + "' controller", k[a], o, p), k[a] = o), c = o.transclude)
2177 if (f = !0, o.$$tlb || (ie("transclusion", d, o, p), d = o), "element" === c) M = !0, u = o.priority, s = p, p = $.$$element = he(K.$$createComment(a, $[a])), _ = p[0], ae(n, Re(s), _), g = J(b, s, t, u, m && m.name, {
2178 nonTlbTranscludeDirective: d
2183 s = de.document.createDocumentFragment();
2186 for (var H in ve(c, function(e, t) {
2187 var n = "?" === e.charAt(0);
2188 e = n ? e.substring(1) : e, R[e] = t, I[t] = null, P[t] = n
2189 }), ve(p.contents(), function(e) {
2190 var t = R[$n(De(e))];
2191 t ? (P[t] = !0, I[t] = I[t] || de.document.createDocumentFragment(), I[t].appendChild(e)) : s.appendChild(e)
2192 }), ve(P, function(e, t) {
2193 if (!e) throw mn("reqslot", "Required transclusion slot `{0}` was not filled.", t)
2196 var j = he(I[H].childNodes);
2198 } s = he(s.childNodes)
2199 } else s = he(ht(_)).contents();
2200 p.empty(), (g = J(b, s, t, void 0, void 0, {
2201 needsNewScope: o.$$isolateScope || o.$$newScope
2204 if (h = !0, ie("template", T, o, p), c = Te((T = o).template) ? o.template(p, $) : o.template, c = G(c), o.replace) {
2205 if (m = o, s = lt(c) ? [] : En(oe(o.templateNamespace, Se(c))), _ = s[0], 1 !== s.length || _.nodeType !== qe) throw mn("tplrt", "Template for directive '{0}' must have exactly one root element. {1}", a, "");
2211 q = e.splice(y + 1, e.length - (y + 1));
2212 (x || C) && te(F, x, C), e = e.concat(F).concat(q), ne($, L), A = e.length
2214 if (o.templateUrl) h = !0, ie("template", T, o, p), (T = o).replace && (m = o), B = re(e.splice(y, e.length - y), p, $, n, f && g, w, E, {
2215 controllerDirectives: k,
2216 newScopeDirective: C !== o && C,
2217 newIsolateScopeDirective: x,
2218 templateDirective: T,
2219 nonTlbTranscludeDirective: d
2221 else if (o.compile) try {
2222 l = o.compile(p, $, g);
2223 var U = o.$$originalDirective || o;
2224 Te(l) ? V(null, Pe(U, l), S, D) : l && V(Pe(U, l.pre), Pe(U, l.post), S, D)
2228 o.terminal && (B.terminal = !0, u = Math.max(u, o.priority))
2230 return B.scope = C && !0 === C.scope, B.transcludeOnThisElement = f, B.templateOnThisElement = h, B.transclude = g, i.hasElementTranscludeDirective = M, B;
2232 function V(e, t, n, r) {
2233 e && (n && (e = Q(e, n, r)), e.require = o.require, e.directiveName = a, (x === o || o.$$isolateScope) && (e = se(e, {
2235 })), w.push(e)), t && (n && (t = Q(t, n, r)), t.require = o.require, t.directiveName = a, (x === o || o.$$isolateScope) && (t = se(t, {
2240 function B(e, t, n, r, a) {
2241 var i, o, s, l, c, u, d, f, h, p;
2242 for (var m in _ === n ? f = (h = $).$$element : h = new Y(f = he(n), $), c = t, x ? l = t.$new(!0) : C && (c = t.$parent), a && ((d = function(e, t, n, r) {
2244 Me(e) || (r = n, n = t, t = e, e = void 0);
2246 n || (n = M ? f.parent() : f); {
2247 if (!r) return a(e, t, i, n, y);
2248 var o = a.$$slots[r];
2249 if (o) return o(e, t, i, n, y);
2250 if (we(o)) throw mn("noslot", 'No parent directive that requires a transclusion with slot name "{0}". Element: {1}', r, He(f))
2252 }).$$boundTransclude = a, d.isSlotFilled = function(e) {
2253 return !!a.$$slots[e]
2254 }), k && (u = function(e, t, n, r, i, o, a) {
2259 $scope: c === a || c.$$isolateScope ? i : o,
2265 "@" === d && (d = t[c.name]);
2266 var f = W(d, u, !0, c.controllerAs);
2267 s[c.name] = f, e.data("$" + c.name + "Controller", f.instance)
2270 }(f, h, d, k, l, t, x)), x && (K.$$addScopeInfo(f, l, !0, !(T && (T === x || T === x.$$originalDirective))), K.$$addScopeClass(f, !0), l.$$isolateBindings = x.$$isolateBindings, (p = ce(t, h, l, l.$$isolateBindings, x)).removeWatches && l.$on("$destroy", p.removeWatches)), u) {
2273 b = g.$$bindings.bindToController;
2274 v.instance = v(), f.data("$" + g.name + "Controller", v.instance), v.bindingInfo = ce(c, h, v.instance, b, g)
2276 for (ve(k, function(e, t) {
2278 e.bindToController && !ke(n) && Ee(n) && be(u[t].instance, ee(t, n, f, u))
2279 }), ve(u, function(e) {
2281 if (Te(t.$onChanges)) try {
2282 t.$onChanges(e.bindingInfo.initialChanges)
2286 if (Te(t.$onInit)) try {
2291 Te(t.$doCheck) && (c.$watch(function() {
2293 }), t.$doCheck()), Te(t.$onDestroy) && c.$on("$destroy", function() {
2296 }), i = 0, o = w.length; i < o; i++) le(s = w[i], s.isolateScope ? l : t, f, h, s.require && ee(s.directiveName, s.require, f, u), d);
2298 for (x && (x.template || null === x.templateUrl) && (y = l), e && e(y, n.childNodes, void 0, a), i = E.length - 1; 0 <= i; i--) le(s = E[i], s.isolateScope ? l : t, f, h, s.require && ee(s.directiveName, s.require, f, u), d);
2301 Te(t.$postLink) && t.$postLink()
2306 function ee(n, e, r, i) {
2310 a = e.substring(t[0].length),
2313 if ("^^" === s ? r = r.parent() : o = (o = i && i[a]) && o.instance, !o) {
2314 var c = "$" + a + "Controller";
2315 o = "^^" === s && r[0] && r[0].nodeType === Be ? null : s ? r.inheritedData(c) : r.data(c)
2317 if (!o && !l) throw mn("ctreq", "Controller '{0}', required by directive '{1}', can't be found!", a, n)
2320 for (var u = 0, d = e.length; u < d; u++) o[u] = ee(n, e[u], r, i)
2321 } else Ee(e) && (o = {}, ve(e, function(e, t) {
2322 o[t] = ee(n, e, r, i)
2327 function te(e, t, n) {
2328 for (var r = 0, i = e.length; r < i; r++) e[r] = ye(e[r], {
2334 function L(e, t, n, r, i, o, a) {
2335 if (t === i) return null;
2337 if (p.hasOwnProperty(t))
2338 for (var l, c = h.get(t + m), u = 0, d = c.length; u < d; u++)
2339 if (l = c[u], (we(r) || r > l.priority) && -1 !== l.restrict.indexOf(n)) {
2340 if (o && (l = ye(l, {
2343 })), !l.$$bindings) {
2344 var f = l.$$bindings = $(l, l.name);
2345 Ee(f.isolateScope) && (l.$$isolateBindings = f.isolateScope)
2352 if (p.hasOwnProperty(e))
2353 for (var t = h.get(e + m), n = 0, r = t.length; n < r; n++)
2354 if (t[n].multiElement) return !0;
2361 ve(n, function(e, t) {
2362 "$" !== t.charAt(0) && (r[t] && r[t] !== e && (e.length ? e += ("style" === t ? ";" : " ") + r[t] : e = r[t]), n.$set(t, e, !0, i[t]))
2363 }), ve(r, function(e, t) {
2364 n.hasOwnProperty(t) || "$" === t.charAt(0) || (n[t] = e, "class" !== t && "style" !== t && (o[t] = i[t]))
2368 function re(f, h, p, m, g, v, b, y) {
2376 $$originalDirective: C
2378 x = Te(C.templateUrl) ? C.templateUrl(h, p) : C.templateUrl,
2379 T = C.templateNamespace;
2380 return h.empty(), e(x).then(function(e) {
2382 if (e = G(e), C.replace) {
2383 if (r = lt(e) ? [] : En(oe(T, Se(e))), n = r[0], 1 !== r.length || n.nodeType !== qe) throw mn("tplrt", "Template for directive '{0}' must have exactly one root element. {1}", C.name, x);
2387 var o = Z(n, [], t);
2388 Ee(C.scope) && te(o, !0), f = o.concat(f), ne(p, t)
2389 } else n = E, h.html(e);
2390 for (f.unshift(k), _ = j(f, n, p, g, h, C, v, b, y), ve(m, function(e, t) {
2391 e === n && (m[t] = h[0])
2392 }), $ = P(h[0].childNodes, g); w.length;) {
2398 if (!a.$$destroyed) {
2400 var d = s.className;
2401 y.hasElementTranscludeDirective && C.replace || (u = ht(n)), ae(l, he(s), u), M(he(u), d)
2403 i = _.transcludeOnThisElement ? H(a, _.transclude, c) : c, _($, a, u, m, i)
2407 }).catch(function(e) {
2410 function(e, t, n, r, i) {
2412 t.$$destroyed || (w ? w.push(t, n, r, o) : (_.transcludeOnThisElement && (o = H(t, _.transclude, i)), _($, t, n, r, o)))
2417 var n = t.priority - e.priority;
2418 return 0 !== n ? n : e.name !== t.name ? e.name < t.name ? -1 : 1 : e.index - t.index
2421 function ie(e, t, n, r) {
2423 return e ? " (module: " + e + ")" : ""
2425 if (t) throw mn("multidir", "Multiple directives [{0}{1}, {2}{3}] asking for {4} on: {5}", t.name, i(t.$$moduleName), n.name, i(n.$$moduleName), e, He(r))
2429 switch (e = me(e || "html")) {
2432 var n = de.document.createElement("div");
2433 return n.innerHTML = "<" + e + ">" + t + "</" + e + ">", n.childNodes[0].childNodes;
2440 return u(f.valueOf(e), "ng-prop-srcset")
2443 function U(e, t, n, o) {
2444 if (_.test(o)) throw mn("nodomevents", "Property bindings for HTML DOM event properties are disallowed");
2445 var r, i, a = De(e),
2446 s = (r = a, i = o.toLowerCase(), T[r + "|" + i] || T["*|" + i]),
2448 "srcset" !== o || "img" !== a && "source" !== a ? s && (l = f.getTrusted.bind(f, s)) : l = d, t.push({
2450 compile: function(e, t) {
2452 i = S(t[n], function(e) {
2456 pre: function(t, n) {
2468 function V(e, t, o, a, n) {
2469 var r, i, s = De(e),
2470 l = (r = s, "srcdoc" === (i = a) ? f.HTML : "src" === i || "ngSrc" === i ? -1 === ["img", "video", "audio", "source", "track"].indexOf(r) ? f.RESOURCE_URL : f.MEDIA_URL : "xlinkHref" === i ? "image" === r ? f.MEDIA_URL : "a" === r ? f.URL : f.RESOURCE_URL : "form" === r && "action" === i || "base" === r && "href" === i || "link" === r && "href" === i ? f.RESOURCE_URL : "a" !== r || "href" !== i && "ngHref" !== i ? void 0 : f.URL),
2475 if ("multiple" === a && "select" === s) throw mn("selmulti", "Binding to the 'multiple' attribute is not supported. Element: {0}", He(e));
2476 if (_.test(a)) throw mn("nodomevents", "Interpolations for HTML DOM event attributes are disallowed");
2479 compile: function() {
2481 pre: function(e, t, n) {
2482 var r = n.$$observers || (n.$$observers = Fe()),
2484 i !== o && (d = i && A(i, !0, l, u), o = i), d && (n[a] = d(e), (r[a] || (r[a] = [])).$$inter = !0, (n.$$observers && n.$$observers[a].$$scope || e).$watch(d, function(e, t) {
2485 "class" === a && e !== t ? n.$updateClass(e, t) : n.$set(a, e)
2494 function ae(e, t, n) {
2499 for (r = 0, i = e.length; r < i; r++)
2502 for (var l = r, c = l + a - 1, u = e.length; l < u; l++, c++) c < u ? e[l] = e[c] : delete e[l];
2503 e.length -= a - 1, e.context === o && (e.context = n);
2505 } s && s.replaceChild(n, o);
2506 var d = de.document.createDocumentFragment();
2507 for (r = 0; r < a; r++) d.appendChild(t[r]);
2508 for (he.hasData(o) && (he.data(n, he.data(o)), he(o).off("$destroy")), he.cleanData(d.querySelectorAll("*")), r = 1; r < a; r++) delete t[r];
2509 t[0] = n, t.length = 1
2513 return be(function() {
2514 return e.apply(null, arguments)
2518 function le(e, t, n, r, i, o) {
2527 if (E) throw mn("missingattr", "Attribute '{0}' of '{1}' is non-optional and must be set!", e, t)
2530 function ce(f, h, p, e, m) {
2534 function b(e, t, n) {
2535 Te(p.$onChanges) && !Ne(t, n) && (o || (f.$$postDigest(a), o = []), r || (r = {}, o.push(i)), r[e] && (n = r[e].previousValue), r[e] = new bn(n, t))
2539 p.$onChanges(r), r = void 0
2541 return ve(e, function(e, n) {
2542 var t, r, i, o, a, s = e.attrName,
2546 l || pe.call(h, s) || (y(s, m.name), p[n] = h[s] = void 0), a = h.$observe(s, function(e) {
2547 if (Ce(e) || Ae(e)) {
2549 b(n, e, t), p[n] = e
2551 }), h.$$observers[s].$$scope = f, Ce(t = h[s]) ? p[n] = A(t)(f) : Ae(t) && (p[n] = t), v[n] = new bn(gn, p[n]), g.push(a);
2554 if (!pe.call(h, s)) {
2556 y(s, m.name), h[s] = void 0
2558 if (l && !h[s]) break;
2559 r = S(h[s]), o = r.literal ? Ie : Ne, i = r.assign || function() {
2560 throw t = p[n] = r(f), mn("nonassign", "Expression '{0}' in attribute '{1}' used with directive '{2}' is non-assignable!", h[s], s, m.name)
2562 var c = function(e) {
2563 return o(e, p[n]) || (o(e, t) ? i(f, e = p[n]) : p[n] = e), t = e
2565 c.$stateful = !0, a = e.collection ? f.$watchCollection(h[s], c) : f.$watch(S(h[s], c), null, r.literal), g.push(a);
2568 if (!pe.call(h, s)) {
2570 y(s, m.name), h[s] = void 0
2572 if (l && !h[s]) break;
2573 var u = (r = S(h[s])).literal,
2575 v[n] = new bn(gn, p[n]), a = f[e.collection ? "$watchCollection" : "$watch"](r, function(e, t) {
2577 if (t === d || u && Ie(t, d)) return;
2580 b(n, e, t), p[n] = e
2584 if (l || pe.call(h, s) || y(s, m.name), (r = h.hasOwnProperty(s) ? S(h[s]) : _e) === _e && l) break;
2585 p[n] = function(e) {
2591 removeWatches: g.length && function() {
2592 for (var e = 0, t = g.length; e < t; ++e) g[e]()
2600 this.previousValue = e, this.currentValue = t
2602 vn.$inject = ["$provide", "$$sanitizeUriProvider"], bn.prototype.isFirstChange = function() {
2603 return this.previousValue === gn
2605 var yn = /^((?:x|data)[:\-_])/i,
2609 return e.replace(yn, "").replace(_n, function(e, t, n) {
2610 return n ? t.toUpperCase() : t
2618 e: for (var o = 0; o < r.length; o++) {
2619 for (var a = r[o], s = 0; s < i.length; s++)
2620 if (a === i[s]) continue e;
2621 n += (0 < n.length ? " " : "") + a
2627 var t = (e = he(e)).length;
2628 if (t <= 1) return e;
2631 (n.nodeType === Ve || n.nodeType === Ue && "" === n.nodeValue.trim()) && r.call(e, t, 1)
2635 var Cn = M("$controller"),
2636 kn = /^(\S+)(\s+as\s+([\w$]+))?$/;
2640 this.has = function(e) {
2641 return d.hasOwnProperty(e)
2642 }, this.register = function(e, t) {
2643 le(e, "controller"), Ee(e) ? be(d, e) : d[e] = t
2644 }, this.$get = ["$injector", function(c) {
2645 return function(t, n, e, r) {
2647 if (e = !0 === e, r && Ce(r) && (s = r), Ce(t)) {
2648 if (!(o = t.match(kn))) throw Cn("ctrlfmt", "Badly formed controller string '{0}'. Must match `__name__ as __id__` or `__name__`.", t);
2649 if (a = o[1], s = s || o[3], !(t = d.hasOwnProperty(a) ? d[a] : function(e, t, n) {
2651 for (var r, i = t.split("."), o = e, a = i.length, s = 0; s < a; s++) r = i[s], e && (e = (o = e)[r]);
2652 return !n && Te(e) ? Pe(o, e) : e
2653 }(n.$scope, a, !0))) throw Cn("ctrlreg", "The controller with the name '{0}' is not registered.", a);
2657 var l = (ke(t) ? t[t.length - 1] : t).prototype;
2658 return i = Object.create(l || null), s && u(n, s, i, a || t.name), be(function() {
2659 var e = c.invoke(t, i, n, a);
2660 return e !== i && (Ee(e) || Te(e)) && (i = e, s && u(n, s, i, a || t.name)), i
2666 return i = c.instantiate(t, n, a), s && u(n, s, i, a || t.name), i
2669 function u(e, t, n, r) {
2670 if (!e || !Ee(e.$scope)) throw M("$controller")("noscp", "Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.", r, t);
2677 this.$get = ["$window", function(e) {
2678 return he(e.document)
2683 this.$get = ["$document", "$rootScope", function(e, t) {
2690 return e.on("visibilitychange", i), t.$on("$destroy", function() {
2691 e.off("visibilitychange", i)
2700 this.$get = ["$log", function(n) {
2701 return function(e, t) {
2702 n.error.apply(n, arguments)
2706 var Sn = function() {
2707 this.$get = ["$document", function(t) {
2708 return function(e) {
2709 return e ? !e.nodeType && e instanceof he && (e = e[0]) : e = t[0].body, e.offsetWidth + 1
2713 Dn = "application/json",
2715 "Content-Type": Dn + ";charset=utf-8"
2717 Nn = /^\[|^\{(?!\{)/,
2726 return Ee(e) ? C(e) ? e.toISOString() : V(e) : e
2730 this.$get = function() {
2731 return function(e) {
2734 return s(e, function(e, t) {
2735 null === e || we(e) || Te(e) || (ke(e) ? ve(e, function(e) {
2736 n.push(Q(t) + "=" + Q(Hn(e)))
2737 }) : n.push(Q(t) + "=" + Q(Hn(e))))
2744 this.$get = function() {
2745 return function(e) {
2748 return function n(e, r, i) {
2749 ke(e) ? ve(e, function(e, t) {
2750 n(e, r + "[" + (Ee(e) ? t : "") + "]")
2751 }) : Ee(e) && !C(e) ? s(e, function(e, t) {
2752 n(e, r + (i ? "" : "[") + t + (i ? "" : "]"))
2753 }) : (Te(e) && (e = e()), t.push(Q(r) + "=" + (null == e ? "" : Q(Hn(e)))))
2754 }(e, "", !0), t.join("&")
2761 var n = t.replace(Rn, "").trim();
2763 var r = e("Content-Type"),
2764 i = r && 0 === r.indexOf(Dn);
2765 if (i || (a = (o = n).match(Nn)) && In[a[0]].test(o)) try {
2769 throw Pn("baddata", 'Data must be a valid JSON object. Received: "{0}". Parse error: "{1}"', t, e)
2781 e && (n[e] = n[e] ? n[e] + ", " + t : t)
2783 return Ce(e) ? ve(e.split("\n"), function(e) {
2784 t = e.indexOf(":"), r(me(Se(e.substr(0, t))), Se(e.substr(t + 1)))
2785 }) : Ee(e) && ve(e, function(e, t) {
2792 return function(e) {
2793 if (r || (r = qn(n)), e) {
2795 return void 0 === t && (t = null), t
2801 function Vn(t, n, r, e) {
2802 return Te(e) ? e(t, n, r) : (ve(e, function(e) {
2808 return 200 <= e && e < 300
2812 var C = this.defaults = {
2813 transformResponse: [Fn],
2814 transformRequest: [function(e) {
2815 return Ee(e) && (r = e, "[object File]" !== ge.call(r)) && (n = e, "[object Blob]" !== ge.call(n)) && (t = e, "[object FormData]" !== ge.call(t)) ? V(e) : e;
2820 Accept: "application/json, text/plain, */*"
2826 xsrfCookieName: "XSRF-TOKEN",
2827 xsrfHeaderName: "X-XSRF-TOKEN",
2828 paramSerializer: "$httpParamSerializer",
2829 jsonpCallbackParam: "callback"
2832 this.useApplyAsync = function(e) {
2833 return O(e) ? (k = !!e, this) : k
2835 var t = this.interceptors = [],
2836 r = this.xsrfWhitelistedOrigins = [];
2837 this.$get = ["$browser", "$httpBackend", "$$cookieReader", "$cacheFactory", "$rootScope", "$q", "$injector", "$sce", function(s, g, v, e, b, y, l, _) {
2839 C.paramSerializer = Ce(C.paramSerializer) ? l.get(C.paramSerializer) : C.paramSerializer;
2842 c.unshift(Ce(e) ? l.get(e) : l.invoke(e))
2844 var n, w = (n = [ui].concat(r.map(fi)), function(e) {
2846 return n.some(hi.bind(null, t))
2850 if (!Ee(e)) throw M("$http")("badreq", "Http request configuration must be an object. Received: {0}", e);
2851 if (!Ce(_.valueOf(e.url))) throw M("$http")("badreq", "Http request configuration url must be a string or a $sce trusted object. Received: {0}", e.url);
2854 transformRequest: C.transformRequest,
2855 transformResponse: C.transformResponse,
2856 paramSerializer: C.paramSerializer,
2857 jsonpCallbackParam: C.jsonpCallbackParam
2859 n.headers = function(e) {
2860 var t, n, r, i = C.headers,
2861 o = be({}, e.headers);
2862 i = be({}, i.common, i[me(e.method)]);
2864 for (r in n = me(t), o)
2865 if (me(r) === n) continue e;
2868 return a = o, s = We(e), c = {}, ve(a, function(e, t) {
2869 Te(e) ? null != (l = e(s)) && (c[t] = l) : c[t] = e
2872 }(e), n.method = f(n.method), n.paramSerializer = Ce(n.paramSerializer) ? l.get(n.paramSerializer) : n.paramSerializer, s.$$incOutstandingRequestCount("$http");
2876 return ve(c, function(e) {
2877 (e.request || e.requestError) && t.unshift(e.request, e.requestError), (e.response || e.responseError) && r.push(e.response, e.responseError)
2878 }), i = (i = o(i = (i = o(i, t)).then(function(e) {
2880 t = Vn(e.data, Un(n), void 0, e.transformRequest);
2881 we(t) && ve(n, function(e, t) {
2882 "content-type" === me(t) && delete n[t]
2884 we(e.withCredentials) && !we(C.withCredentials) && (e.withCredentials = C.withCredentials);
2885 return function(o, e) {
2886 var a, t, s = y.defer(),
2889 i = "jsonp" === me(o.method),
2891 i ? l = _.getTrustedResourceUrl(l) : Ce(l) || (l = _.valueOf(l));
2892 c = l, u = o.paramSerializer(o.params), 0 < u.length && (c += (-1 === c.indexOf("?") ? "?" : "&") + u), l = c, i && (l = function(n, r) {
2893 var e = n.split("?");
2894 if (2 < e.length) throw Pn("badjsonp", 'Illegal use more than one "?", in url, "{1}"', n);
2895 return ve(Z(e[1]), function(e, t) {
2896 if ("JSON_CALLBACK" === e) throw Pn("badjsonp", 'Illegal use of JSON_CALLBACK in url, "{0}"', n);
2897 if (t === r) throw Pn("badjsonp", 'Illegal use of callback param, "{0}", in url, "{1}"', r, n)
2898 }), n += (-1 === n.indexOf("?") ? "?" : "&") + r + "=JSON_CALLBACK"
2899 }(l, o.jsonpCallbackParam));
2901 E.pendingRequests.push(o), n.then(m, m), !o.cache && !C.cache || !1 === o.cache || "GET" !== o.method && "JSONP" !== o.method || (a = Ee(o.cache) ? o.cache : Ee(C.cache) ? C.cache : $);
2902 a && (O(t = a.get(l)) ? T(t) ? t.then(p, p) : ke(t) ? h(t[1], t[0], We(t[2]), t[3], t[4]) : h(t, 200, {}, "OK", "complete") : a.put(l, n));
2904 var d = w(o.url) ? v()[o.xsrfCookieName || C.xsrfCookieName] : void 0;
2905 d && (r[o.xsrfHeaderName || C.xsrfHeaderName] = d), g(o.method, l, e, function(e, t, n, r, i) {
2906 a && (Bn(e) ? a.put(l, [e, t, qn(n), r, i]) : a.remove(l));
2911 k ? b.$applyAsync(o) : (o(), b.$$phase || b.$apply())
2912 }, r, o.timeout, o.withCredentials, o.responseType, f(o.eventHandlers), f(o.uploadEventHandlers))
2919 return ve(e, function(n, e) {
2920 t[e] = function(e) {
2924 k ? b.$applyAsync(t) : b.$$phase ? t() : b.$apply(t)
2930 function h(e, t, n, r, i) {
2931 (Bn(t = -1 <= t ? t : 0) ? s.resolve : s.reject)({
2942 h(e.data, e.status, We(e.headers()), e.statusText, e.xhrStatus)
2946 var e = E.pendingRequests.indexOf(o); - 1 !== e && E.pendingRequests.splice(e, 1)
2949 }), r)).finally(function() {
2950 s.$$completeOutstandingRequest(_e, "$http")
2954 for (var n = 0, r = t.length; n < r;) {
2959 return t.length = 0, e
2964 return t.data = Vn(e.data, e.headers, e.status, n.transformResponse), Bn(e.status) ? t : y.reject(t)
2967 return E.pendingRequests = [],
2969 ve(arguments, function(n) {
2970 E[n] = function(e, t) {
2971 return E(be({}, t || {}, {
2977 }("get", "delete", "head", "jsonp"),
2979 ve(arguments, function(r) {
2980 E[r] = function(e, t, n) {
2981 return E(be({}, n || {}, {
2988 }("post", "put", "patch"), E.defaults = C, E
2993 this.$get = function() {
2995 return new de.XMLHttpRequest
3001 this.$get = ["$browser", "$jsonpCallbacks", "$document", "$xhrFactory", function(e, t, n, r) {
3002 return b = r, y = (v = e).defer, _ = t, $ = n[0],
3003 function(e, r, t, i, n, o, a, s, l, c) {
3004 if (r = r || v.url(), "jsonp" === me(e)) var u = _.createCallback(r),
3005 d = function(e, r, i) {
3006 e = e.replace("JSON_CALLBACK", r);
3007 var o = $.createElement("script"),
3009 return o.type = "text/javascript", o.src = e, o.async = !0, a = function(e) {
3010 o.removeEventListener("load", a), o.removeEventListener("error", a), $.body.removeChild(o), o = null;
3013 e && ("load" !== e.type || _.wasCalled(r) || (e = {
3015 }), n = e.type, t = "error" === e.type ? 404 : 200), i && i(t, n)
3016 }, o.addEventListener("load", a), o.addEventListener("error", a), $.body.appendChild(o), a
3017 }(r, u, function(e, t) {
3018 var n = 200 === e && _.getResponse(u);
3019 g(i, e, n, "", t, "complete"), _.removeCallback(u)
3024 if (f.open(e, r, !0), ve(n, function(e, t) {
3025 O(e) && f.setRequestHeader(t, e)
3026 }), f.onload = function() {
3027 var e = f.statusText || "",
3028 t = "response" in f ? f.response : f.responseText,
3029 n = 1223 === f.status ? 204 : f.status;
3030 0 === n && (n = t ? 200 : "file" === fi(r).protocol ? 404 : 0), g(i, n, t, f.getAllResponseHeaders(), e, "complete")
3031 }, f.onerror = function() {
3032 g(i, -1, null, null, "", "error")
3033 }, f.ontimeout = function() {
3034 g(i, -1, null, null, "", "timeout")
3035 }, f.onabort = function() {
3036 g(i, -1, null, null, "", h ? "timeout" : "abort")
3037 }, ve(l, function(e, t) {
3038 f.addEventListener(t, e)
3039 }), ve(c, function(e, t) {
3040 f.upload.addEventListener(t, e)
3041 }), a && (f.withCredentials = !0), s) try {
3044 if ("json" !== s) throw e
3046 f.send(we(t) ? null : t)
3048 if (0 < o) var p = y(function() {
3051 else T(o) && o.then(function() {
3052 m(O(o.$$timeoutId) ? "timeout" : "abort")
3056 h = "timeout" === e, d && d(), f && f.abort()
3059 function g(e, t, n, r, i, o) {
3060 O(p) && y.cancel(p), d = f = null, e(t, n, r, i, o)
3066 var Gn = y.$interpolateMinErr = M("$interpolate");
3071 this.startSymbol = function(e) {
3072 return e ? (x = e, this) : x
3073 }, this.endSymbol = function(e) {
3074 return e ? (T = e, this) : T
3075 }, this.$get = ["$parse", "$exceptionHandler", "$sce", function(y, _, $) {
3078 t = new RegExp(x.replace(/./g, e), "g"),
3079 n = new RegExp(T.replace(/./g, e), "g");
3086 return e.replace(t, x).replace(n, T)
3089 function k(e, t, n, r) {
3090 var i = e.$watch(function(e) {
3096 function r(i, e, r, o) {
3097 var a = r === $.URL || r === $.MEDIA_URL;
3098 if (!i.length || -1 === i.indexOf(x)) {
3101 a && (t = $.getTrusted(r, t));
3103 return n.exp = i, n.expressions = [], n.$$watchDelegate = k, n
3106 for (var s, l, c, u, d, f = 0, h = [], p = i.length, m = [], g = []; f < p;) {
3107 if (-1 === (s = i.indexOf(x, f)) || -1 === (l = i.indexOf(T, s + w))) {
3108 f !== p && m.push(C(i.substring(f)));
3111 f !== s && m.push(C(i.substring(f, s))), u = i.substring(s + w, l), h.push(u), f = l + E, g.push(m.length), m.push("")
3113 d = 1 === m.length && 1 === g.length;
3114 var v = a && d ? void 0 : function(e) {
3116 return e = r && !a ? $.getTrusted(r, e) : $.valueOf(e), o && !O(e) ? e : ue(e)
3121 if (c = h.map(function(e) {
3123 }), !e || h.length) {
3124 var b = function(e) {
3125 for (var t = 0, n = h.length; t < n; t++) {
3126 if (o && we(e[t])) return;
3129 return a ? $.getTrusted(r, d ? m[0] : m.join("")) : (r && 1 < m.length && Gn.throwNoconcat(i), m.join(""))
3131 return be(function(e) {
3136 for (; t < n; t++) r[t] = c[t](e);
3144 $$watchDelegate: function(r, i) {
3146 return r.$watchGroup(c, function(e, t) {
3148 i.call(this, n, e !== t ? o : n, r), o = n
3154 return r.startSymbol = function() {
3156 }, r.endSymbol = function() {
3161 Gn.throwNoconcat = function(e) {
3162 throw Gn("noconcat", "Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce", e)
3163 }, Gn.interr = function(e, t) {
3164 return Gn("interr", "Can't interpolate: {0}\n{1}", e, t.toString())
3166 var Zn = M("$interval");
3169 this.$get = ["$$intervalFactory", "$window", function(e, i) {
3172 i.clearInterval(e), delete o[e]
3174 t = e(function(e, t, n) {
3175 var r = i.setInterval(e, t);
3178 return t.cancel = function(e) {
3180 if (!e.hasOwnProperty("$$intervalId")) throw Zn("badprom", "`$interval.cancel()` called with a promise that was not generated by `$interval()`.");
3181 if (!o.hasOwnProperty(e.$$intervalId)) return !1;
3182 var t = e.$$intervalId,
3184 return Vr(n.promise), n.reject("canceled"), r(t), !0
3190 this.$get = ["$browser", "$q", "$$q", "$rootScope", function(h, p, m, g) {
3191 return function(d, f) {
3192 return function(e, t, n, r) {
3193 var i = 4 < arguments.length,
3194 o = i ? Re(arguments, 4) : [],
3197 l = (s ? m : p).defer(),
3201 i ? e.apply(null, o) : e(a)
3203 return n = O(n) ? n : 0, c.$$intervalId = d(function() {
3204 s ? h.defer(u) : g.$evalAsync(u), l.notify(a++), 0 < n && n <= a && (l.resolve(a), f(c.$$intervalId)), s || g.$apply()
3210 var Jn = function() {
3211 this.$get = function() {
3212 var o = y.callbacks,
3215 createCallback: function(e) {
3216 var t, n = "_" + (o.$$counter++).toString(36),
3217 r = "angular.callbacks." + n,
3218 i = ((t = function(e) {
3219 t.data = e, t.called = !0
3221 return a[r] = o[n] = i, r
3223 wasCalled: function(e) {
3226 getResponse: function(e) {
3229 removeCallback: function(e) {
3231 delete o[t.id], delete a[e]
3236 er = /^([^?#]*)(\?([^#]*))?(#(.*))?$/,
3242 nr = M("$location");
3244 function rr(e, t, n) {
3245 var r, i = (r = [], ve(t, function(e, t) {
3246 ke(e) ? ve(e, function(e) {
3247 r.push(Q(t, !0) + (!0 === e ? "" : "=" + Q(e, !0)))
3248 }) : r.push(Q(t, !0) + (!0 === e ? "" : "=" + Q(e, !0)))
3249 }), r.length ? r.join("&") : ""),
3250 o = n ? "#" + X(n) : "";
3251 return function(e) {
3252 for (var t = e.split("/"), n = t.length; n--;) t[n] = X(t[n].replace(/%2F/g, "/"));
3254 }(e) + (i ? "?" + i : "") + o
3259 t.$$protocol = n.protocol, t.$$host = n.hostname, t.$$port = _(n.port) || tr[n.protocol] || null
3261 var or = /^\s*[\\/]{2,}/;
3263 function ar(e, t, n) {
3264 if (or.test(e)) throw nr("badpath", 'Invalid url "{0}".', e);
3265 var r = "/" !== e.charAt(0);
3268 o = r && "/" === i.pathname.charAt(0) ? i.pathname.substring(1) : i.pathname;
3269 t.$$path = function(e, t) {
3270 for (var n = e.split("/"), r = n.length; r--;) n[r] = decodeURIComponent(n[r]), t && (n[r] = n[r].replace(/\//g, "%2F"));
3272 }(o, n), t.$$search = Z(i.search), t.$$hash = decodeURIComponent(i.hash), t.$$path && "/" !== t.$$path.charAt(0) && (t.$$path = "/" + t.$$path)
3276 return e.slice(0, t.length) === t
3280 if (sr(t, e)) return t.substr(e.length)
3284 var t = e.indexOf("#");
3285 return -1 === t ? e : e.substr(0, t)
3288 function ur(o, a, s) {
3289 this.$$html5 = !0, s = s || "", ir(o, this), this.$$parse = function(e) {
3291 if (!Ce(t)) throw nr("ipthprfx", 'Invalid url "{0}", missing path prefix "{1}".', e, a);
3292 ar(t, this, !0), this.$$path || (this.$$path = "/"), this.$$compose()
3293 }, this.$$normalizeUrl = function(e) {
3294 return a + e.substr(1)
3295 }, this.$$parseLinkUrl = function(e, t) {
3296 return t && "#" === t[0] ? (this.hash(t.slice(1)), !0) : (O(n = lr(o, e)) ? (r = n, i = s && O(n = lr(s, n)) ? a + (lr("/", n) || n) : o + r) : O(n = lr(a, e)) ? i = a + n : a === e + "/" && (i = a), i && this.$$parse(i), !!i);
3301 function dr(r, i, o) {
3302 ir(r, this), this.$$parse = function(e) {
3303 var t, n = lr(r, e) || lr(i, e);
3304 we(n) || "#" !== n.charAt(0) ? this.$$html5 ? t = n : (t = "", we(n) && (r = e, this.replace())) : we(t = lr(o, n)) && (t = n), ar(t, this, !1), this.$$path = function(e, t, n) {
3305 var r, i = /^\/[A-Z]:(\/.*)/;
3306 sr(t, n) && (t = t.replace(n, ""));
3307 if (i.exec(t)) return e;
3308 return (r = i.exec(e)) ? r[1] : e
3309 }(this.$$path, t, r), this.$$compose()
3310 }, this.$$normalizeUrl = function(e) {
3311 return r + (e ? o + e : "")
3312 }, this.$$parseLinkUrl = function(e, t) {
3313 return cr(r) === cr(e) && (this.$$parse(e), !0)
3317 function fr(i, o, a) {
3318 this.$$html5 = !0, dr.apply(this, arguments), this.$$parseLinkUrl = function(e, t) {
3319 return t && "#" === t[0] ? (this.hash(t.slice(1)), !0) : (i === cr(e) ? n = e : (r = lr(o, e)) ? n = i + a + r : o === e + "/" && (n = o), n && this.$$parse(n), !!n);
3321 }, this.$$normalizeUrl = function(e) {
3329 $$compose: function() {
3330 this.$$url = rr(this.$$path, this.$$search, this.$$hash), this.$$absUrl = this.$$normalizeUrl(this.$$url), this.$$urlUpdatedByLocation = !0
3332 absUrl: pr("$$absUrl"),
3334 if (we(e)) return this.$$url;
3336 return (t[1] || "" === e) && this.path(decodeURIComponent(t[1])), (t[2] || t[1] || "" === e) && this.search(t[3] || ""), this.hash(t[5] || ""), this
3338 protocol: pr("$$protocol"),
3341 path: mr("$$path", function(e) {
3342 return "/" === (e = null !== e ? e.toString() : "").charAt(0) ? e : "/" + e
3344 search: function(n, e) {
3345 switch (arguments.length) {
3347 return this.$$search;
3349 if (Ce(n) || E(n)) n = n.toString(), this.$$search = Z(n);
3351 if (!Ee(n)) throw nr("isrcharg", "The first argument of the `$location#search()` call must be a string or an object.");
3352 ve(n = j(n, {}), function(e, t) {
3353 null == e && delete n[t]
3354 }), this.$$search = n
3358 we(e) || null === e ? delete this.$$search[n] : this.$$search[n] = e
3360 return this.$$compose(), this
3362 hash: mr("$$hash", function(e) {
3363 return null !== e ? e.toString() : ""
3365 replace: function() {
3366 return this.$$replace = !0, this
3377 return function(e) {
3378 return we(e) ? this[t] : (this[t] = n(e), this.$$compose(), this)
3389 this.hashPrefix = function(e) {
3390 return O(e) ? (v = e, this) : v
3391 }, this.html5Mode = function(e) {
3392 return Ae(e) ? (b.enabled = e, this) : Ee(e) ? (Ae(e.enabled) && (b.enabled = e.enabled), Ae(e.requireBase) && (b.requireBase = e.requireBase), (Ae(e.rewriteLinks) || Ce(e.rewriteLinks)) && (b.rewriteLinks = e.rewriteLinks), this) : b
3393 }, this.$get = ["$rootScope", "$browser", "$sniffer", "$rootElement", "$window", function(s, l, c, o, e) {
3394 var u, t, n, r, i = l.baseHref(),
3397 if (!i && b.requireBase) throw nr("nobase", "$location in HTML5 mode requires a <base> tag to be present!");
3398 n = (r = a).substring(0, r.indexOf("/", r.indexOf("//") + 2)) + (i || "/"), t = c.history ? ur : fr
3399 } else n = cr(a), t = dr;
3400 var d, f = (d = n).substr(0, cr(d).lastIndexOf("/") + 1);
3401 (u = new t(n, f, "#" + v)).$$parseLinkUrl(a, a), u.$$state = l.state();
3402 var h = /^\s*(javascript|mailto):/i;
3404 function p(e, t, n) {
3408 l.url(e, t, n), u.$$state = l.state()
3410 throw u.url(r), u.$$state = i, e
3413 o.on("click", function(e) {
3414 var t = b.rewriteLinks;
3415 if (t && !e.ctrlKey && !e.metaKey && !e.shiftKey && 2 !== e.which && 2 !== e.button) {
3416 for (var n = he(e.target);
3418 if (n[0] === o[0] || !(n = n.parent())[0]) return;
3419 if (!Ce(t) || !we(n.attr(t))) {
3420 var r = n.prop("href"),
3421 i = n.attr("href") || n.attr("xlink:href");
3422 Ee(r) && "[object SVGAnimatedString]" === r.toString() && (r = fi(r.animVal).href), h.test(r) || !r || n.attr("target") || e.isDefaultPrevented() || u.$$parseLinkUrl(r, i) && (e.preventDefault(), u.absUrl() !== l.url() && s.$apply())
3425 }), u.absUrl() !== a && l.url(u.absUrl(), !0);
3427 return l.onUrlChange(function(r, i) {
3428 sr(r, f) ? (s.$evalAsync(function() {
3429 var e, t = u.absUrl(),
3431 u.$$parse(r), u.$$state = i, e = s.$broadcast("$locationChangeStart", r, t, i, n).defaultPrevented, u.absUrl() === r && (e ? (u.$$parse(t), p(t, !1, u.$$state = n)) : (m = !1, g(t, n)))
3432 }), s.$$phase || s.$digest()) : e.location.href = r
3433 }), s.$watch(function() {
3434 if (m || u.$$urlUpdatedByLocation) {
3435 u.$$urlUpdatedByLocation = !1;
3440 o = !((t = n) === (a = e) || fi(t).href === fi(a).href) || u.$$html5 && c.history && r !== u.$$state;
3441 (m || o) && (m = !1, s.$evalAsync(function() {
3443 t = s.$broadcast("$locationChangeStart", e, n, u.$$state, r).defaultPrevented;
3444 u.absUrl() === e && (t ? (u.$$parse(n), u.$$state = r) : (o && p(e, i, r === u.$$state ? null : u.$$state), g(n, r)))
3452 s.$broadcast("$locationChangeSuccess", u.absUrl(), e, u.$$state, t)
3460 this.debugEnabled = function(e) {
3461 return O(e) ? (r = e, this) : r
3462 }, this.$get = ["$window", function(n) {
3463 var e, i = fe || /\bEdge\//.test(n.navigator && n.navigator.userAgent);
3469 debug: (e = t("debug"), function() {
3470 r && e.apply(o, arguments)
3475 var t = n.console || {},
3476 r = t[e] || t.log || _e;
3479 return ve(arguments, function(e) {
3481 n.push((xe(t = e) && (t.stack && i ? t = t.message && -1 === t.stack.indexOf(t.message) ? "Error: " + t.message + "\n" + t.stack : t.stack : t.sourceURL && (t = t.message + "\n" + t.sourceURL + ":" + t.line)), t))
3482 }), Function.prototype.apply.call(r, t, n)
3487 ve([fr, dr, ur], function(t) {
3488 t.prototype = Object.create(hr), t.prototype.state = function(e) {
3489 if (!arguments.length) return this.$$state;
3490 if (t !== ur || !this.$$html5) throw nr("nostate", "History API state support is available only in HTML5 mode and only in browsers supporting HTML5 History API");
3491 return this.$$state = we(e) ? null : e, this.$$urlUpdatedByLocation = !0, this
3494 var br = M("$parse"),
3495 yr = {}.constructor.prototype.valueOf;
3501 ve("+ - * / % === !== == != < > <= >= && || ! = |".split(" "), function(e) {
3519 for (this.text = e, this.index = 0, this.tokens = []; this.index < this.text.length;) {
3520 var t = this.text.charAt(this.index);
3521 if ('"' === t || "'" === t) this.readString(t);
3522 else if (this.isNumber(t) || "." === t && this.isNumber(this.peek())) this.readNumber();
3523 else if (this.isIdentifierStart(this.peekMultichar())) this.readIdent();
3524 else if (this.is(t, "(){}[].,;:?")) this.tokens.push({
3528 else if (this.isWhitespace(t)) this.index++;
3530 var n = t + this.peek(),
3531 r = n + this.peek(2),
3536 var s = a ? r : o ? n : t;
3541 }), this.index += s.length
3542 } else this.throwError("Unexpected next character ", this.index, this.index + 1)
3547 is: function(e, t) {
3548 return -1 !== t.indexOf(e)
3552 return this.index + t < this.text.length && this.text.charAt(this.index + t)
3554 isNumber: function(e) {
3555 return "0" <= e && e <= "9" && "string" == typeof e
3557 isWhitespace: function(e) {
3558 return " " === e || "\r" === e || "\t" === e || "\n" === e || "\v" === e || " " === e
3560 isIdentifierStart: function(e) {
3561 return this.options.isIdentifierStart ? this.options.isIdentifierStart(e, this.codePointAt(e)) : this.isValidIdentifierStart(e)
3563 isValidIdentifierStart: function(e) {
3564 return "a" <= e && e <= "z" || "A" <= e && e <= "Z" || "_" === e || "$" === e
3566 isIdentifierContinue: function(e) {
3567 return this.options.isIdentifierContinue ? this.options.isIdentifierContinue(e, this.codePointAt(e)) : this.isValidIdentifierContinue(e)
3569 isValidIdentifierContinue: function(e, t) {
3570 return this.isValidIdentifierStart(e, t) || this.isNumber(e)
3572 codePointAt: function(e) {
3573 return 1 === e.length ? e.charCodeAt(0) : (e.charCodeAt(0) << 10) + e.charCodeAt(1) - 56613888
3575 peekMultichar: function() {
3576 var e = this.text.charAt(this.index),
3579 var n = e.charCodeAt(0),
3580 r = t.charCodeAt(0);
3581 return 55296 <= n && n <= 56319 && 56320 <= r && r <= 57343 ? e + t : e
3583 isExpOperator: function(e) {
3584 return "-" === e || "+" === e || this.isNumber(e)
3586 throwError: function(e, t, n) {
3587 n = n || this.index;
3588 var r = O(t) ? "s " + t + "-" + this.index + " [" + this.text.substring(t, n) + "]" : " " + n;
3589 throw br("lexerr", "Lexer Error: {0} at column{1} in expression [{2}].", e, r, this.text)
3591 readNumber: function() {
3592 for (var e = "", t = this.index; this.index < this.text.length;) {
3593 var n = me(this.text.charAt(this.index));
3594 if ("." === n || this.isNumber(n)) e += n;
3596 var r = this.peek();
3597 if ("e" === n && this.isExpOperator(r)) e += n;
3598 else if (this.isExpOperator(n) && r && this.isNumber(r) && "e" === e.charAt(e.length - 1)) e += n;
3600 if (!this.isExpOperator(n) || r && this.isNumber(r) || "e" !== e.charAt(e.length - 1)) break;
3601 this.throwError("Invalid exponent")
3613 readIdent: function() {
3615 for (this.index += this.peekMultichar().length; this.index < this.text.length;) {
3616 var t = this.peekMultichar();
3617 if (!this.isIdentifierContinue(t)) break;
3618 this.index += t.length
3622 text: this.text.slice(e, this.index),
3626 readString: function(e) {
3629 for (var n = "", r = e, i = !1; this.index < this.text.length;) {
3630 var o = this.text.charAt(this.index);
3633 var a = this.text.substring(this.index + 1, this.index + 5);
3634 a.match(/[\da-f]{4}/i) || this.throwError("Invalid unicode escape [\\u" + a + "]"), this.index += 4, n += String.fromCharCode(parseInt(a, 16))
3639 } else if ("\\" === o) i = !0;
3641 if (o === e) return this.index++, void this.tokens.push({
3651 this.throwError("Unterminated quote", t)
3654 var Cr = function(e, t) {
3655 this.lexer = e, this.options = t
3659 return void 0 !== e ? e : t
3663 return void 0 === e ? t : void 0 === t ? e : e + t
3665 Cr.Program = "Program", Cr.ExpressionStatement = "ExpressionStatement", Cr.AssignmentExpression = "AssignmentExpression", Cr.ConditionalExpression = "ConditionalExpression", Cr.LogicalExpression = "LogicalExpression", Cr.BinaryExpression = "BinaryExpression", Cr.UnaryExpression = "UnaryExpression", Cr.CallExpression = "CallExpression", Cr.MemberExpression = "MemberExpression", Cr.Identifier = "Identifier", Cr.Literal = "Literal", Cr.ArrayExpression = "ArrayExpression", Cr.Property = "Property", Cr.ObjectExpression = "ObjectExpression", Cr.ThisExpression = "ThisExpression", Cr.LocalsExpression = "LocalsExpression", Cr.NGValueParameter = "NGValueParameter", Cr.prototype = {
3667 this.text = e, this.tokens = this.lexer.lex(e);
3668 var t = this.program();
3669 return 0 !== this.tokens.length && this.throwError("is an unexpected token", this.tokens[0]), t
3671 program: function() {
3673 if (0 < this.tokens.length && !this.peek("}", ")", ";", "]") && e.push(this.expressionStatement()), !this.expect(";")) return {
3678 expressionStatement: function() {
3680 type: Cr.ExpressionStatement,
3681 expression: this.filterChain()
3684 filterChain: function() {
3685 for (var e = this.expression(); this.expect("|");) e = this.filter(e);
3688 expression: function() {
3689 return this.assignment()
3691 assignment: function() {
3692 var e = this.ternary();
3693 if (this.expect("=")) {
3694 if (!Dr(e)) throw br("lval", "Trying to assign a value to a non l-value");
3696 type: Cr.AssignmentExpression,
3698 right: this.assignment(),
3704 ternary: function() {
3705 var e, t, n = this.logicalOR();
3706 return this.expect("?") && (e = this.expression(), this.consume(":")) ? (t = this.expression(), {
3707 type: Cr.ConditionalExpression,
3713 logicalOR: function() {
3714 for (var e = this.logicalAND(); this.expect("||");) e = {
3715 type: Cr.LogicalExpression,
3718 right: this.logicalAND()
3722 logicalAND: function() {
3723 for (var e = this.equality(); this.expect("&&");) e = {
3724 type: Cr.LogicalExpression,
3727 right: this.equality()
3731 equality: function() {
3732 for (var e, t = this.relational(); e = this.expect("==", "!=", "===", "!==");) t = {
3733 type: Cr.BinaryExpression,
3736 right: this.relational()
3740 relational: function() {
3741 for (var e, t = this.additive(); e = this.expect("<", ">", "<=", ">=");) t = {
3742 type: Cr.BinaryExpression,
3745 right: this.additive()
3749 additive: function() {
3750 for (var e, t = this.multiplicative(); e = this.expect("+", "-");) t = {
3751 type: Cr.BinaryExpression,
3754 right: this.multiplicative()
3758 multiplicative: function() {
3759 for (var e, t = this.unary(); e = this.expect("*", "/", "%");) t = {
3760 type: Cr.BinaryExpression,
3769 return (e = this.expect("+", "-", "!")) ? {
3770 type: Cr.UnaryExpression,
3773 argument: this.unary()
3776 primary: function() {
3778 for (this.expect("(") ? (e = this.filterChain(), this.consume(")")) : this.expect("[") ? e = this.arrayDeclaration() : this.expect("{") ? e = this.object() : this.selfReferential.hasOwnProperty(this.peek().text) ? e = j(this.selfReferential[this.consume().text]) : this.options.literals.hasOwnProperty(this.peek().text) ? e = {
3780 value: this.options.literals[this.consume().text]
3781 } : this.peek().identifier ? e = this.identifier() : this.peek().constant ? e = this.constant() : this.throwError("not a primary expression", this.peek()); t = this.expect("(", "[", ".");) "(" === t.text ? (e = {
3782 type: Cr.CallExpression,
3784 arguments: this.parseArguments()
3785 }, this.consume(")")) : "[" === t.text ? (e = {
3786 type: Cr.MemberExpression,
3788 property: this.expression(),
3790 }, this.consume("]")) : "." === t.text ? e = {
3791 type: Cr.MemberExpression,
3793 property: this.identifier(),
3795 } : this.throwError("IMPOSSIBLE");
3798 filter: function(e) {
3799 for (var t = [e], n = {
3800 type: Cr.CallExpression,
3801 callee: this.identifier(),
3804 }; this.expect(":");) t.push(this.expression());
3807 parseArguments: function() {
3809 if (")" !== this.peekToken().text)
3810 for (; e.push(this.filterChain()), this.expect(","););
3813 identifier: function() {
3814 var e = this.consume();
3815 return e.identifier || this.throwError("is not a valid identifier", e), {
3816 type: Cr.Identifier,
3820 constant: function() {
3823 value: this.consume().value
3826 arrayDeclaration: function() {
3828 if ("]" !== this.peekToken().text)
3830 if (this.peek("]")) break;
3831 e.push(this.expression())
3832 } while (this.expect(","));
3833 return this.consume("]"), {
3834 type: Cr.ArrayExpression,
3838 object: function() {
3840 if ("}" !== this.peekToken().text)
3842 if (this.peek("}")) break;
3846 }, this.peek().constant ? (e.key = this.constant(), e.computed = !1, this.consume(":"), e.value = this.expression()) : this.peek().identifier ? (e.key = this.identifier(), e.computed = !1, this.peek(":") ? (this.consume(":"), e.value = this.expression()) : e.value = e.key) : this.peek("[") ? (this.consume("["), e.key = this.expression(), this.consume("]"), e.computed = !0, this.consume(":"), e.value = this.expression()) : this.throwError("invalid key", this.peek()), t.push(e)
3847 } while (this.expect(","));
3848 return this.consume("}"), {
3849 type: Cr.ObjectExpression,
3853 throwError: function(e, t) {
3854 throw br("syntax", "Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].", t.text, e, t.index + 1, this.text, this.text.substring(t.index))
3856 consume: function(e) {
3857 if (0 === this.tokens.length) throw br("ueoe", "Unexpected end of expression: {0}", this.text);
3858 var t = this.expect(e);
3859 return t || this.throwError("is unexpected, expecting [" + e + "]", this.peek()), t
3861 peekToken: function() {
3862 if (0 === this.tokens.length) throw br("ueoe", "Unexpected end of expression: {0}", this.text);
3863 return this.tokens[0]
3865 peek: function(e, t, n, r) {
3866 return this.peekAhead(0, e, t, n, r)
3868 peekAhead: function(e, t, n, r, i) {
3869 if (this.tokens.length > e) {
3870 var o = this.tokens[e],
3872 if (a === t || a === n || a === r || a === i || !t && !n && !r && !i) return o
3876 expect: function(e, t, n, r) {
3877 var i = this.peek(e, t, n, r);
3878 return !!i && (this.tokens.shift(), i)
3882 type: Cr.ThisExpression
3885 type: Cr.LocalsExpression
3892 function Ar(e, t, n) {
3893 var r, i, o, a, s, l = e.isPure = function(e, t) {
3895 case Cr.MemberExpression:
3896 if (e.computed) return !1;
3898 case Cr.UnaryExpression:
3900 case Cr.BinaryExpression:
3901 return "+" !== e.operator && Tr;
3902 case Cr.CallExpression:
3905 return void 0 === t ? Mr : t
3909 r = !0, ve(e.body, function(e) {
3910 Ar(e.expression, t, l), r = r && e.expression.constant
3914 e.constant = !0, e.toWatch = [];
3916 case Cr.UnaryExpression:
3917 Ar(e.argument, t, l), e.constant = e.argument.constant, e.toWatch = e.argument.toWatch;
3919 case Cr.BinaryExpression:
3920 Ar(e.left, t, l), Ar(e.right, t, l), e.constant = e.left.constant && e.right.constant, e.toWatch = e.left.toWatch.concat(e.right.toWatch);
3922 case Cr.LogicalExpression:
3923 Ar(e.left, t, l), Ar(e.right, t, l), e.constant = e.left.constant && e.right.constant, e.toWatch = e.constant ? [] : [e];
3925 case Cr.ConditionalExpression:
3926 Ar(e.test, t, l), Ar(e.alternate, t, l), Ar(e.consequent, t, l), e.constant = e.test.constant && e.alternate.constant && e.consequent.constant, e.toWatch = e.constant ? [] : [e];
3929 e.constant = !1, e.toWatch = [e];
3931 case Cr.MemberExpression:
3932 Ar(e.object, t, l), e.computed && Ar(e.property, t, l), e.constant = e.object.constant && (!e.computed || e.property.constant), e.toWatch = e.constant ? [] : [e];
3934 case Cr.CallExpression:
3935 o = !!e.filter && (a = t, s = e.callee.name, !a(s).$stateful), r = o, i = [], ve(e.arguments, function(e) {
3936 Ar(e, t, l), r = r && e.constant, i.push.apply(i, e.toWatch)
3937 }), e.constant = r, e.toWatch = o ? i : [e];
3939 case Cr.AssignmentExpression:
3940 Ar(e.left, t, l), Ar(e.right, t, l), e.constant = e.left.constant && e.right.constant, e.toWatch = [e];
3942 case Cr.ArrayExpression:
3943 r = !0, i = [], ve(e.elements, function(e) {
3944 Ar(e, t, l), r = r && e.constant, i.push.apply(i, e.toWatch)
3945 }), e.constant = r, e.toWatch = i;
3947 case Cr.ObjectExpression:
3948 r = !0, i = [], ve(e.properties, function(e) {
3949 Ar(e.value, t, l), r = r && e.value.constant, i.push.apply(i, e.value.toWatch), e.computed && (Ar(e.key, t, !1), r = r && e.key.constant, i.push.apply(i, e.key.toWatch))
3950 }), e.constant = r, e.toWatch = i;
3952 case Cr.ThisExpression:
3953 case Cr.LocalsExpression:
3954 e.constant = !1, e.toWatch = []
3959 if (1 === e.length) {
3960 var t = e[0].expression,
3962 return 1 !== n.length ? n : n[0] !== t ? n : void 0
3967 return e.type === Cr.Identifier || e.type === Cr.MemberExpression
3971 if (1 === e.body.length && Dr(e.body[0].expression)) return {
3972 type: Cr.AssignmentExpression,
3973 left: e.body[0].expression,
3975 type: Cr.NGValueParameter
3989 function Rr(e, t, n) {
3990 this.ast = new Cr(e, n), this.astCompiler = n.csp ? new Ir(t) : new Nr(t)
3994 return Te(e.valueOf) ? e.valueOf() : yr.call(e)
4005 this.addLiteral = function(e, t) {
4007 }, this.setIdentifierFns = function(e, t) {
4008 return s = e, l = t, this
4009 }, this.$get = ["$filter", function(i) {
4011 csp: L().noUnsafeEval,
4013 isIdentifierStart: Te(s) && s,
4014 isIdentifierContinue: Te(l) && l
4016 return e.$$getAst = function(e) {
4017 return new Rr(new Er(o), i, o).getAst(e).ast
4024 if (e = e.trim(), !(n = c[r = e])) n = new Rr(new Er(o), i, o).parse(e), c[r] = p(n);
4033 function f(e, t, n) {
4034 return null == e || null == t ? e === t : !("object" == typeof e && "object" == typeof(e = Pr(e)) && !n) && (e === t || e != e && t != t)
4037 function t(e, t, n, o, r) {
4038 var a, s = o.inputs;
4039 if (1 === s.length) {
4041 return s = s[0], e.$watch(function(e) {
4043 return f(t, i, s.isPure) || (a = o(e, void 0, void 0, [t]), i = t && Pr(t)), a
4046 for (var l = [], c = [], u = 0, d = s.length; u < d; u++) l[u] = f, c[u] = null;
4047 return e.$watch(function(e) {
4048 for (var t = !1, n = 0, r = s.length; n < r; n++) {
4050 (t || (t = !f(i, l[n], s[n].isPure))) && (c[n] = i, l[n] = i && Pr(i))
4052 return t && (a = o(e, void 0, void 0, c)), a
4056 function n(e, t, n, r, i) {
4057 var o, a, s = r.literal ? h : O,
4058 l = r.$$intercepted || r,
4059 c = r.$$interceptor || $e,
4060 u = r.inputs && !l.inputs;
4061 return f.literal = r.literal, f.constant = r.constant, f.inputs = r.inputs, p(f), o = e.$watch(f, t, n, i);
4067 function f(e, t, n, r) {
4068 return a = u && r ? r[0] : l(e, t, n, r), s(a) && e.$$postDigest(d), c(a)
4074 return ve(e, function(e) {
4079 function r(e, t, n, r) {
4080 var i = e.$watch(function(e) {
4087 return e.constant ? e.$$watchDelegate = r : e.oneTime ? e.$$watchDelegate = n : e.inputs && (e.$$watchDelegate = t), e
4092 o.$$interceptor && (a = function(t, n) {
4096 return e.$stateful = t.$stateful || n.$stateful, e.$$pure = t.$$pure && n.$$pure, e
4097 }(o.$$interceptor, a), o = o.$$intercepted);
4099 e = function(e, t, n, r) {
4100 var i = s && r ? r[0] : o(e, t, n, r);
4103 return e.$$intercepted = o, e.$$interceptor = a, e.literal = o.literal, e.oneTime = o.oneTime, e.constant = o.constant, a.$stateful || (s = !o.inputs, e.inputs = o.inputs ? o.inputs : [o], a.$$pure || (e.inputs = e.inputs.map(function(t) {
4104 return t.isPure === Mr ? function(e) {
4114 this.$get = ["$rootScope", "$exceptionHandler", function(t, e) {
4115 return Fr(function(e) {
4118 }], this.errorOnUnhandledRejections = function(e) {
4119 return O(e) ? (n = e, this) : n
4125 this.$get = ["$browser", "$exceptionHandler", function(t, e) {
4126 return Fr(function(e) {
4129 }], this.errorOnUnhandledRejections = function(e) {
4130 return O(e) ? (n = e, this) : n
4134 function Fr(a, s, l) {
4135 var n = M("$q", TypeError),
4144 var t = this.promise = new o;
4145 this.resolve = function(e) {
4147 }, this.reject = function(e) {
4149 }, this.notify = function(e) {
4161 for (; !c && r.length;) {
4165 var t = "Possibly unhandled rejection: " + Ye(e.value);
4166 xe(e.value) ? s(e.value, t) : s(t)
4172 !l || e.pending || 2 !== e.status || qr(e) || (0 === c && 0 === r.length && a(u), r.push(e)), !e.processScheduled && e.pending && (e.processScheduled = !0, ++c, a(function() {
4175 r = e.pending, e.processScheduled = !1, e.pending = void 0;
4177 for (var i = 0, o = r.length; i < o; ++i) {
4178 Ur(e), n = r[i][0], t = r[i][e.status];
4180 Te(t) ? f(n, t(e.value)) : 1 === e.status ? f(n, e.value) : h(n, e.value)
4182 h(n, e), e && !0 === e.$$passToExceptionHandler && s(e)
4186 --c, l && 0 === c && a(u)
4193 e.$$state.status || (t === e ? p(e, n("qcycle", "Expected promise to be resolved with value other than itself '{0}'", t)) : function t(n, e) {
4197 (Ee(e) || Te(e)) && (r = e.then), Te(r) ? (n.$$state.status = -1, r.call(e, o, a, s)) : (n.$$state.value = e, n.$$state.status = 1, d(n.$$state))
4203 i || (i = !0, t(n, e))
4207 i || (i = !0, p(n, e))
4217 e.$$state.status || p(e, t)
4221 e.$$state.value = t, e.$$state.status = 2, d(e.$$state)
4225 var o = e.$$state.pending;
4226 e.$$state.status <= 0 && o && o.length && a(function() {
4227 for (var e, t, n = 0, r = o.length; n < r; n++) {
4228 t = o[n][0], e = o[n][3];
4230 m(t, Te(e) ? e(i) : i)
4243 function v(e, t, n) {
4250 return T(r) ? r.then(function() {
4255 function b(e, t, n, r) {
4257 return f(i, e), i.then(t, n, r)
4260 then: function(e, t, n) {
4261 if (we(e) && we(t) && we(n)) return this;
4263 return this.$$state.pending = this.$$state.pending || [], this.$$state.pending.push([r, e, t, n]), 0 < this.$$state.status && d(this.$$state), r
4265 catch: function(e) {
4266 return this.then(null, e)
4268 finally: function(t, e) {
4269 return this.then(function(e) {
4279 if (!Te(e)) throw n("norslvr", "Expected resolverFn, got '{0}'", e);
4281 return e(function(e) {
4287 return t.prototype = o.prototype, t.defer = i, t.reject = g, t.when = b, t.resolve = y, t.all = function(e) {
4290 i = ke(e) ? [] : {};
4291 return ve(e, function(e, t) {
4292 r++, b(e).then(function(e) {
4293 i[t] = e, --r || f(n, i)
4297 }), 0 === r && f(n, i), n
4298 }, t.race = function(e) {
4300 return ve(e, function(e) {
4301 b(e).then(t.resolve, t.reject)
4315 e.$$state && Ur(e.$$state)
4319 this.$get = ["$window", "$timeout", function(e, n) {
4320 var r = e.requestAnimationFrame || e.webkitRequestAnimationFrame,
4321 i = e.cancelAnimationFrame || e.webkitCancelAnimationFrame || e.webkitCancelRequestAnimationFrame,
4323 o = t ? function(e) {
4329 var t = n(e, 16.66, !1);
4334 return o.supported = t, o
4340 k = M("$rootScope"),
4343 this.digestTtl = function(e) {
4344 return arguments.length && (C = e), C
4345 }, this.$get = ["$exceptionHandler", "$parse", "$browser", function(h, p, m) {
4347 e.currentScope.$$destroyed = !0
4351 this.$id = l(), this.$$phase = this.$parent = this.$$watchers = this.$$nextSibling = this.$$prevSibling = this.$$childHead = this.$$childTail = null, (this.$root = this).$$destroyed = !1, this.$$suspended = !1, this.$$listeners = {}, this.$$listenerCount = {}, this.$$watchersCount = 0, this.$$isolateBindings = null
4355 $new: function(e, t) {
4357 return t = t || this, e ? (n = new i).$root = this.$root : (this.$$ChildScope || (this.$$ChildScope = function(e) {
4359 this.$$watchers = this.$$nextSibling = this.$$childHead = this.$$childTail = null, this.$$listeners = {}, this.$$listenerCount = {}, this.$$watchersCount = 0, this.$id = l(), this.$$ChildScope = null, this.$$suspended = !1
4361 return t.prototype = e, t
4362 }(this)), n = new this.$$ChildScope), n.$parent = t, n.$$prevSibling = t.$$childTail, t.$$childHead ? (t.$$childTail.$$nextSibling = n, t.$$childTail = n) : t.$$childHead = t.$$childTail = n, (e || t !== this) && n.$on("$destroy", r), n
4364 $watch: function(e, t, n, r) {
4367 if (i.$$watchDelegate) return i.$$watchDelegate(this, o, n, i, e);
4377 return x = null, s || ((s = a.$$watchers = []).$$digestWatchIndex = -1), s.unshift(l), s.$$digestWatchIndex++, c(this, 1),
4380 0 <= e && (c(a, -1), e < s.$$digestWatchIndex && s.$$digestWatchIndex--), x = null
4383 $watchGroup: function(t, r) {
4384 var i = new Array(t.length),
4385 o = new Array(t.length),
4392 return s.$evalAsync(function() {
4399 if (1 === t.length) return this.$watch(t[0], function(e, t, n) {
4400 o[0] = e, i[0] = t, r(o, e === t ? o : i, n)
4406 n ? (n = !1, r(o, o, s)) : r(o, i, s)
4408 for (var e = 0; e < t.length; e++) i[e] = o[e]
4411 return ve(t, function(e, t) {
4412 var n = s.$watch(e, function(e) {
4413 o[t] = e, l || (l = !0, s.$evalAsync(c))
4418 for (; a.length;) a.shift()()
4421 $watchCollection: function(e, n) {
4422 h.$$pure = p(e).literal, h.$stateful = !h.$$pure;
4423 var a, s, r, i = this,
4437 s !== c && (f = (s = c).length = 0, l++), t = a.length, f !== t && (l++, s.length = f = t);
4438 for (var o = 0; o < t; o++) i = s[o], r = a[o], i != i && r != r || i === r || (l++, s[o] = r)
4440 for (n in s !== u && (s = u = {}, f = 0, l++), t = 0, a) pe.call(a, n) && (t++, r = a[n], i = s[n], n in s ? i != i && r != r || i === r || (l++, s[n] = r) : (f++, s[n] = r, l++));
4442 for (n in l++, s) pe.call(a, n) || (f--, delete s[n])
4444 else s !== a && (s = a, l++);
4448 return this.$watch(t, function() {
4449 if (d ? (d = !1, n(a, a, i)) : n(a, r, i), o)
4452 r = new Array(a.length);
4453 for (var e = 0; e < a.length; e++) r[e] = a[e]
4455 for (var t in r = {}, a) pe.call(a, t) && (r[t] = a[t]);
4459 $digest: function() {
4460 var e, t, n, r, i, o, a, s, l, c = C,
4461 u = v.length ? g : this,
4463 _("$digest"), m.$$checkUrlChange(), this === g && null !== T && (m.defer.cancel(T), E()), x = null;
4466 for (var f = 0; f < v.length; f++) {
4468 (0, (l = v[f]).fn)(l.scope, l.locals)
4476 if (r = !a.$$suspended && a.$$watchers)
4477 for (r.$$digestWatchIndex = r.length; r.$$digestWatchIndex--;) try {
4478 if (e = r[r.$$digestWatchIndex])
4479 if ((t = (0, e.get)(a)) === (n = e.last) || (e.eq ? Ie(t, n) : S(t) && S(n))) {
4484 } else i = !0, (x = e).last = e.eq ? j(t, null) : t, (0, e.fn)(t, n === w ? t : n, a), c < 5 && (d[s = 4 - c] || (d[s] = []), d[s].push({
4485 msg: Te(e.exp) ? "fn: " + (e.exp.name || e.exp.toString()) : e.exp,
4492 if (!(o = !a.$$suspended && a.$$watchersCount && a.$$childHead || a !== u && a.$$nextSibling))
4493 for (; a !== u && !(o = a.$$nextSibling);) a = a.$parent
4495 if ((i || v.length) && !c--) throw $(), k("infdig", "{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}", C, d)
4496 } while (i || v.length);
4497 for ($(); y < b.length;) try {
4502 b.length = y = 0, m.$$checkUrlChange()
4504 $suspend: function() {
4505 this.$$suspended = !0
4507 $isSuspended: function() {
4508 return this.$$suspended
4510 $resume: function() {
4511 this.$$suspended = !1
4513 $destroy: function() {
4514 if (!this.$$destroyed) {
4515 var e = this.$parent;
4516 for (var t in this.$broadcast("$destroy"), this.$$destroyed = !0, this === g && m.$$applicationDestroyed(), c(this, -this.$$watchersCount), this.$$listenerCount) o(this, this.$$listenerCount[t], t);
4517 e && e.$$childHead === this && (e.$$childHead = this.$$nextSibling), e && e.$$childTail === this && (e.$$childTail = this.$$prevSibling), this.$$prevSibling && (this.$$prevSibling.$$nextSibling = this.$$nextSibling), this.$$nextSibling && (this.$$nextSibling.$$prevSibling = this.$$prevSibling), this.$destroy = this.$digest = this.$apply = this.$evalAsync = this.$applyAsync = _e, this.$on = this.$watch = this.$watchGroup = function() {
4519 }, this.$$listeners = {}, this.$$nextSibling = null,
4521 9 === fe && (t.$$childHead && e(t.$$childHead), t.$$nextSibling && e(t.$$nextSibling)), t.$parent = t.$$nextSibling = t.$$prevSibling = t.$$childHead = t.$$childTail = t.$root = t.$$watchers = null
4525 $eval: function(e, t) {
4526 return p(e)(this, t)
4528 $evalAsync: function(e, t) {
4529 g.$$phase || v.length || m.defer(function() {
4530 v.length && g.$digest()
4531 }, null, "$evalAsync"), v.push({
4537 $$postDigest: function(e) {
4540 $apply: function(e) {
4544 return this.$eval(e)
4558 $applyAsync: function(e) {
4560 e && n.push(function() {
4562 }), e = p(e), null === T && (T = m.defer(function() {
4564 }, null, "$applyAsync"))
4566 $on: function(t, n) {
4567 var r = this.$$listeners[t];
4568 r || (this.$$listeners[t] = r = []), r.push(n);
4569 for (var e = this; e.$$listenerCount[t] || (e.$$listenerCount[t] = 0), e.$$listenerCount[t]++, e = e.$parent;);
4572 var e = r.indexOf(n); - 1 !== e && (delete r[e], o(i, 1, t))
4575 $emit: function(e, t) {
4576 var n, r, i, o = [],
4582 stopPropagation: function() {
4585 preventDefault: function() {
4586 l.defaultPrevented = !0
4588 defaultPrevented: !1
4590 c = q([l], arguments, 1);
4592 for (n = a.$$listeners[e] || o, l.currentScope = a, r = 0, i = n.length; r < i; r++)
4597 } else n.splice(r, 1), r--, i--;
4601 return l.currentScope = null, l
4603 $broadcast: function(e, t) {
4610 preventDefault: function() {
4611 o.defaultPrevented = !0
4613 defaultPrevented: !1
4615 if (!n.$$listenerCount[e]) return o;
4616 for (var a, s, l, c = q([o], arguments, 1); r = i;) {
4617 for (s = 0, l = (a = (o.currentScope = r).$$listeners[e] || []).length; s < l; s++)
4622 } else a.splice(s, 1), s--, l--;
4623 if (!(i = r.$$listenerCount[e] && r.$$childHead || r !== n && r.$$nextSibling))
4624 for (; r !== n && !(i = r.$$nextSibling);) r = r.$parent
4626 return o.currentScope = null, o
4630 v = g.$$asyncQueue = [],
4631 b = g.$$postDigestQueue = [],
4632 n = g.$$applyAsyncQueue = [],
4637 if (g.$$phase) throw k("inprog", "{0} already in progress", g.$$phase);
4646 for (; e.$$watchersCount += t, e = e.$parent;);
4649 function o(e, t, n) {
4650 for (; e.$$listenerCount[n] -= t, 0 === e.$$listenerCount[n] && delete e.$$listenerCount[n], e = e.$parent;);
4656 for (; n.length;) try {
4667 var i = /^\s*(https?|s?ftp|mailto|tel|file):/,
4668 o = /^\s*((https?|ftp|file|blob):|data:image\/)/;
4669 this.aHrefSanitizationWhitelist = function(e) {
4670 return O(e) ? (i = e, this) : i
4671 }, this.imgSrcSanitizationWhitelist = function(e) {
4672 return O(e) ? (o = e, this) : o
4673 }, this.$get = function() {
4674 return function(e, t) {
4676 r = fi(e && e.trim()).href;
4677 return "" === r || r.match(n) ? e : "unsafe:" + r
4682 compile: function(e) {
4698 }, Ar(e, i.$filter);
4700 if (this.stage = "assign", t = Or(e)) {
4701 this.state.computing = "assign";
4702 var r = this.nextId();
4703 this.recurse(t, r), this.return_(r), n = "fn.assign=" + this.generateFunction("assign", "s,v,l")
4706 i.stage = "inputs", ve(o, function(e, t) {
4712 }, i.state.computing = n;
4714 i.recurse(e, r), i.return_(r), i.state.inputs.push({
4718 }), this.state.computing = "fn", this.stage = "main", this.recurse(e);
4719 var a = '"' + this.USE + " " + this.STRICT + '";\n' + this.filterPrefix() + "var fn=" + this.generateFunction("fn", "s,l,a,i") + n + this.watchFns() + "return fn;",
4720 s = new Function("$filter", "getStringValue", "ifDefined", "plus", a)(this.$filter, _r, kr, xr);
4721 return this.state = this.stage = void 0, s
4725 watchFns: function() {
4727 e = this.state.inputs,
4729 return ve(e, function(e) {
4730 t.push("var " + e.name + "=" + n.generateFunction(e.name, "s")), e.isPure && t.push(e.name, ".isPure=" + JSON.stringify(e.isPure) + ";")
4731 }), e.length && t.push("fn.inputs=[" + e.map(function(e) {
4733 }).join(",") + "];"), t.join("")
4735 generateFunction: function(e, t) {
4736 return "function(" + t + "){" + this.varsPrefix(e) + this.body(e) + "};"
4738 filterPrefix: function() {
4741 return ve(this.state.filters, function(e, t) {
4742 n.push(e + "=$filter(" + r.escape(t) + ")")
4743 }), n.length ? "var " + n.join(",") + ";" : ""
4745 varsPrefix: function(e) {
4746 return this.state[e].vars.length ? "var " + this.state[e].vars.join(",") + ";" : ""
4749 return this.state[e].body.join("")
4751 recurse: function(n, t, e, r, i, o) {
4752 var a, s, l, c, u, d = this;
4753 if (r = r || _e, !o && O(n.watchId)) return t = t || this.nextId(), void this.if_("i", this.lazyAssign(t, this.computedMember("i", n.watchId)), this.lazyRecurse(n, t, e, r, i, !0));
4756 ve(n.body, function(e, t) {
4757 d.recurse(e.expression, void 0, void 0, function(e) {
4759 }), t !== n.body.length - 1 ? d.current().body.push(s, ";") : d.return_(s)
4763 c = this.escape(n.value), this.assign(t, c), r(t || c);
4765 case Cr.UnaryExpression:
4766 this.recurse(n.argument, void 0, void 0, function(e) {
4768 }), c = n.operator + "(" + this.ifDefined(s, 0) + ")", this.assign(t, c), r(c);
4770 case Cr.BinaryExpression:
4771 this.recurse(n.left, void 0, void 0, function(e) {
4773 }), this.recurse(n.right, void 0, void 0, function(e) {
4775 }), c = "+" === n.operator ? this.plus(a, s) : "-" === n.operator ? this.ifDefined(a, 0) + n.operator + this.ifDefined(s, 0) : "(" + a + ")" + n.operator + "(" + s + ")", this.assign(t, c), r(c);
4777 case Cr.LogicalExpression:
4778 t = t || this.nextId(), d.recurse(n.left, t), d.if_("&&" === n.operator ? t : d.not(t), d.lazyRecurse(n.right, t)), r(t);
4780 case Cr.ConditionalExpression:
4781 t = t || this.nextId(), d.recurse(n.test, t), d.if_(t, d.lazyRecurse(n.alternate, t), d.lazyRecurse(n.consequent, t)), r(t);
4784 t = t || this.nextId(), e && (e.context = "inputs" === d.stage ? "s" : this.assign(this.nextId(), this.getHasOwnProperty("l", n.name) + "?l:s"), e.computed = !1, e.name = n.name), d.if_("inputs" === d.stage || d.not(d.getHasOwnProperty("l", n.name)), function() {
4785 d.if_("inputs" === d.stage || "s", function() {
4786 i && 1 !== i && d.if_(d.isNull(d.nonComputedMember("s", n.name)), d.lazyAssign(d.nonComputedMember("s", n.name), "{}")), d.assign(t, d.nonComputedMember("s", n.name))
4788 }, t && d.lazyAssign(t, d.nonComputedMember("l", n.name))), r(t);
4790 case Cr.MemberExpression:
4791 a = e && (e.context = this.nextId()) || this.nextId(), t = t || this.nextId(), d.recurse(n.object, a, void 0, function() {
4792 d.if_(d.notNull(a), function() {
4793 n.computed ? (s = d.nextId(), d.recurse(n.property, s), d.getStringValue(s), i && 1 !== i && d.if_(d.not(d.computedMember(a, s)), d.lazyAssign(d.computedMember(a, s), "{}")), c = d.computedMember(a, s), d.assign(t, c), e && (e.computed = !0, e.name = s)) : (i && 1 !== i && d.if_(d.isNull(d.nonComputedMember(a, n.property.name)), d.lazyAssign(d.nonComputedMember(a, n.property.name), "{}")), c = d.nonComputedMember(a, n.property.name), d.assign(t, c), e && (e.computed = !1, e.name = n.property.name))
4795 d.assign(t, "undefined")
4799 case Cr.CallExpression:
4800 t = t || this.nextId(), n.filter ? (s = d.filter(n.callee.name), l = [], ve(n.arguments, function(e) {
4802 d.recurse(e, t), l.push(t)
4803 }), c = s + "(" + l.join(",") + ")", d.assign(t, c), r(t)) : (s = d.nextId(), a = {}, l = [], d.recurse(n.callee, s, a, function() {
4804 d.if_(d.notNull(s), function() {
4805 ve(n.arguments, function(e) {
4806 d.recurse(e, n.constant ? void 0 : d.nextId(), void 0, function(e) {
4809 }), c = a.name ? d.member(a.context, a.name, a.computed) + "(" + l.join(",") + ")" : s + "(" + l.join(",") + ")", d.assign(t, c)
4811 d.assign(t, "undefined")
4815 case Cr.AssignmentExpression:
4816 s = this.nextId(), a = {}, this.recurse(n.left, void 0, a, function() {
4817 d.if_(d.notNull(a.context), function() {
4818 d.recurse(n.right, s), c = d.member(a.context, a.name, a.computed) + n.operator + s, d.assign(t, c), r(t || c)
4822 case Cr.ArrayExpression:
4823 l = [], ve(n.elements, function(e) {
4824 d.recurse(e, n.constant ? void 0 : d.nextId(), void 0, function(e) {
4827 }), c = "[" + l.join(",") + "]", this.assign(t, c), r(t || c);
4829 case Cr.ObjectExpression:
4830 u = !(l = []), ve(n.properties, function(e) {
4831 e.computed && (u = !0)
4832 }), u ? (t = t || this.nextId(), this.assign(t, "{}"), ve(n.properties, function(e) {
4833 e.computed ? (a = d.nextId(), d.recurse(e.key, a)) : a = e.key.type === Cr.Identifier ? e.key.name : "" + e.key.value, s = d.nextId(), d.recurse(e.value, s), d.assign(d.member(t, a, e.computed), s)
4834 })) : (ve(n.properties, function(t) {
4835 d.recurse(t.value, n.constant ? void 0 : d.nextId(), void 0, function(e) {
4836 l.push(d.escape(t.key.type === Cr.Identifier ? t.key.name : "" + t.key.value) + ":" + e)
4838 }), c = "{" + l.join(",") + "}", this.assign(t, c)), r(t || c);
4840 case Cr.ThisExpression:
4841 this.assign(t, "s"), r(t || "s");
4843 case Cr.LocalsExpression:
4844 this.assign(t, "l"), r(t || "l");
4846 case Cr.NGValueParameter:
4847 this.assign(t, "v"), r(t || "v")
4850 getHasOwnProperty: function(e, t) {
4851 var n = e + "." + t,
4852 r = this.current().own;
4853 return r.hasOwnProperty(n) || (r[n] = this.nextId(!1, e + "&&(" + this.escape(t) + " in " + e + ")")), r[n]
4855 assign: function(e, t) {
4856 if (e) return this.current().body.push(e, "=", t, ";"), e
4858 filter: function(e) {
4859 return this.state.filters.hasOwnProperty(e) || (this.state.filters[e] = this.nextId(!0)), this.state.filters[e]
4861 ifDefined: function(e, t) {
4862 return "ifDefined(" + e + "," + this.escape(t) + ")"
4864 plus: function(e, t) {
4865 return "plus(" + e + "," + t + ")"
4867 return_: function(e) {
4868 this.current().body.push("return ", e, ";")
4870 if_: function(e, t, n) {
4873 var r = this.current().body;
4874 r.push("if(", e, "){"), t(), r.push("}"), n && (r.push("else{"), n(), r.push("}"))
4878 return "!(" + e + ")"
4880 isNull: function(e) {
4883 notNull: function(e) {
4886 nonComputedMember: function(e, t) {
4887 return /^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(t) ? e + "." + t : e + '["' + t.replace(/[^$_a-zA-Z0-9]/g, this.stringEscapeFn) + '"]'
4889 computedMember: function(e, t) {
4890 return e + "[" + t + "]"
4892 member: function(e, t, n) {
4893 return n ? this.computedMember(e, t) : this.nonComputedMember(e, t)
4895 getStringValue: function(e) {
4896 this.assign(e, "getStringValue(" + e + ")")
4898 lazyRecurse: function(e, t, n, r, i, o) {
4901 a.recurse(e, t, n, r, i, o)
4904 lazyAssign: function(e, t) {
4910 stringEscapeRegex: /[^ a-zA-Z0-9]/g,
4911 stringEscapeFn: function(e) {
4912 return "\\u" + ("0000" + e.charCodeAt(0).toString(16)).slice(-4)
4914 escape: function(e) {
4915 if (Ce(e)) return "'" + e.replace(this.stringEscapeRegex, this.stringEscapeFn) + "'";
4916 if (E(e)) return e.toString();
4917 if (!0 === e) return "true";
4918 if (!1 === e) return "false";
4919 if (null === e) return "null";
4920 if (void 0 === e) return "undefined";
4921 throw br("esc", "IMPOSSIBLE")
4923 nextId: function(e, t) {
4924 var n = "v" + this.state.nextId++;
4925 return e || this.current().vars.push(n + (t ? "=" + t : "")), n
4927 current: function() {
4928 return this.state[this.state.computing]
4931 compile: function(e) {
4933 Ar(e, i.$filter), (t = Or(e)) && (r = this.recurse(t));
4934 var o, n = Sr(e.body);
4935 n && (o = [], ve(n, function(e, t) {
4936 var n = i.recurse(e);
4937 n.isPure = e.isPure, e.input = n, o.push(n), e.watchId = t
4940 ve(e.body, function(e) {
4941 a.push(i.recurse(e.expression))
4943 var s = 0 === e.body.length ? _e : 1 === e.body.length ? a[0] : function(t, n) {
4945 return ve(a, function(e) {
4949 return r && (s.assign = function(e, t, n) {
4951 }), o && (s.inputs = o), s
4953 recurse: function(e, l, t) {
4954 var a, c, u, n = this;
4955 if (e.input) return this.inputs(e.input, e.watchId);
4958 return this.value(e.value, l);
4959 case Cr.UnaryExpression:
4960 return c = this.recurse(e.argument), this["unary" + e.operator](c, l);
4961 case Cr.BinaryExpression:
4962 case Cr.LogicalExpression:
4963 return a = this.recurse(e.left), c = this.recurse(e.right), this["binary" + e.operator](a, c, l);
4964 case Cr.ConditionalExpression:
4965 return this["ternary?:"](this.recurse(e.test), this.recurse(e.alternate), this.recurse(e.consequent), l);
4967 return n.identifier(e.name, l, t);
4968 case Cr.MemberExpression:
4969 return a = this.recurse(e.object, !1, !!t), e.computed || (c = e.property.name), e.computed && (c = this.recurse(e.property)), e.computed ? this.computedMember(a, c, l, t) : this.nonComputedMember(a, c, l, t);
4970 case Cr.CallExpression:
4971 return u = [], ve(e.arguments, function(e) {
4972 u.push(n.recurse(e))
4973 }), e.filter && (c = this.$filter(e.callee.name)), e.filter || (c = this.recurse(e.callee, !0)), e.filter ? function(e, t, n, r) {
4974 for (var i = [], o = 0; o < u.length; ++o) i.push(u[o](e, t, n, r));
4975 var a = c.apply(void 0, i, r);
4981 } : function(e, t, n, r) {
4982 var i, o = c(e, t, n, r);
4983 if (null != o.value) {
4984 for (var a = [], s = 0; s < u.length; ++s) a.push(u[s](e, t, n, r));
4985 i = o.value.apply(o.context, a)
4991 case Cr.AssignmentExpression:
4992 return a = this.recurse(e.left, !0, 1), c = this.recurse(e.right),
4993 function(e, t, n, r) {
4994 var i = a(e, t, n, r),
4996 return i.context[i.name] = o, l ? {
5000 case Cr.ArrayExpression:
5001 return u = [], ve(e.elements, function(e) {
5002 u.push(n.recurse(e))
5004 function(e, t, n, r) {
5005 for (var i = [], o = 0; o < u.length; ++o) i.push(u[o](e, t, n, r));
5010 case Cr.ObjectExpression:
5011 return u = [], ve(e.properties, function(e) {
5012 e.computed ? u.push({
5013 key: n.recurse(e.key),
5015 value: n.recurse(e.value)
5017 key: e.key.type === Cr.Identifier ? e.key.name : "" + e.key.value,
5019 value: n.recurse(e.value)
5022 function(e, t, n, r) {
5023 for (var i = {}, o = 0; o < u.length; ++o) u[o].computed ? i[u[o].key(e, t, n, r)] = u[o].value(e, t, n, r) : i[u[o].key] = u[o].value(e, t, n, r);
5028 case Cr.ThisExpression:
5029 return function(e) {
5034 case Cr.LocalsExpression:
5035 return function(e, t) {
5040 case Cr.NGValueParameter:
5041 return function(e, t, n) {
5048 "unary+": function(o, a) {
5049 return function(e, t, n, r) {
5050 var i = o(e, t, n, r);
5051 return i = O(i) ? +i : 0, a ? {
5056 "unary-": function(o, a) {
5057 return function(e, t, n, r) {
5058 var i = o(e, t, n, r);
5059 return i = O(i) ? -i : -0, a ? {
5064 "unary!": function(o, a) {
5065 return function(e, t, n, r) {
5066 var i = !o(e, t, n, r);
5072 "binary+": function(o, a, s) {
5073 return function(e, t, n, r) {
5074 var i = xr(o(e, t, n, r), a(e, t, n, r));
5080 "binary-": function(s, l, c) {
5081 return function(e, t, n, r) {
5082 var i = s(e, t, n, r),
5084 a = (O(i) ? i : 0) - (O(o) ? o : 0);
5090 "binary*": function(o, a, s) {
5091 return function(e, t, n, r) {
5092 var i = o(e, t, n, r) * a(e, t, n, r);
5098 "binary/": function(o, a, s) {
5099 return function(e, t, n, r) {
5100 var i = o(e, t, n, r) / a(e, t, n, r);
5106 "binary%": function(o, a, s) {
5107 return function(e, t, n, r) {
5108 var i = o(e, t, n, r) % a(e, t, n, r);
5114 "binary===": function(o, a, s) {
5115 return function(e, t, n, r) {
5116 var i = o(e, t, n, r) === a(e, t, n, r);
5122 "binary!==": function(o, a, s) {
5123 return function(e, t, n, r) {
5124 var i = o(e, t, n, r) !== a(e, t, n, r);
5130 "binary==": function(o, a, s) {
5131 return function(e, t, n, r) {
5132 var i = o(e, t, n, r) == a(e, t, n, r);
5138 "binary!=": function(o, a, s) {
5139 return function(e, t, n, r) {
5140 var i = o(e, t, n, r) != a(e, t, n, r);
5146 "binary<": function(o, a, s) {
5147 return function(e, t, n, r) {
5148 var i = o(e, t, n, r) < a(e, t, n, r);
5154 "binary>": function(o, a, s) {
5155 return function(e, t, n, r) {
5156 var i = o(e, t, n, r) > a(e, t, n, r);
5162 "binary<=": function(o, a, s) {
5163 return function(e, t, n, r) {
5164 var i = o(e, t, n, r) <= a(e, t, n, r);
5170 "binary>=": function(o, a, s) {
5171 return function(e, t, n, r) {
5172 var i = o(e, t, n, r) >= a(e, t, n, r);
5178 "binary&&": function(o, a, s) {
5179 return function(e, t, n, r) {
5180 var i = o(e, t, n, r) && a(e, t, n, r);
5186 "binary||": function(o, a, s) {
5187 return function(e, t, n, r) {
5188 var i = o(e, t, n, r) || a(e, t, n, r);
5194 "ternary?:": function(o, a, s, l) {
5195 return function(e, t, n, r) {
5196 var i = o(e, t, n, r) ? a(e, t, n, r) : s(e, t, n, r);
5202 value: function(e, t) {
5211 identifier: function(a, s, l) {
5212 return function(e, t, n, r) {
5213 var i = t && a in t ? t : e;
5214 l && 1 !== l && i && null == i[a] && (i[a] = {});
5215 var o = i ? i[a] : void 0;
5223 computedMember: function(s, l, c, u) {
5224 return function(e, t, n, r) {
5225 var i, o, a = s(e, t, n, r);
5226 return null != a && (i = _r(i = l(e, t, n, r)), u && 1 !== u && a && !a[i] && (a[i] = {}), o = a[i]), c ? {
5233 nonComputedMember: function(a, s, l, c) {
5234 return function(e, t, n, r) {
5235 var i = a(e, t, n, r);
5236 c && 1 !== c && i && null == i[s] && (i[s] = {});
5237 var o = null != i ? i[s] : void 0;
5245 inputs: function(i, o) {
5246 return function(e, t, n, r) {
5247 return r ? r[o] : i(e, t, n)
5252 parse: function(e) {
5253 var t, n = this.getAst(e),
5254 r = this.astCompiler.compile(n.ast);
5255 return r.literal = 0 === (t = n.ast).body.length || 1 === t.body.length && (t.body[0].expression.type === Cr.Literal || t.body[0].expression.type === Cr.ArrayExpression || t.body[0].expression.type === Cr.ObjectExpression), r.constant = n.ast.constant, r.oneTime = n.oneTime, r
5257 getAst: function(e) {
5259 return ":" === (e = e.trim()).charAt(0) && ":" === e.charAt(1) && (t = !0, e = e.substring(2)), {
5260 ast: this.ast.ast(e),
5269 MEDIA_URL: "mediaUrl",
5271 RESOURCE_URL: "resourceUrl",
5277 return e.replace(Kr, tt)
5282 return O(e) && ve(e, function(e) {
5283 t.push(function(e) {
5284 if ("self" === e) return e;
5286 if (-1 < e.indexOf("***")) throw Yr("iwcard", "Illegal sequence *** in string matcher. String: {0}", e);
5287 return e = I(e).replace(/\\\*\\\*/g, ".*").replace(/\\\*/g, "[^:/.?&;]*"), new RegExp("^" + e + "$")
5289 if (k(e)) return new RegExp("^" + e.source + "$");
5290 throw Yr("imatcher", 'Matchers may only be "self", string patterns or RegExp objects')
5296 this.SCE_CONTEXTS = Gr;
5299 this.resourceUrlWhitelist = function(e) {
5300 return arguments.length && (s = Xr(e)), s
5301 }, this.resourceUrlBlacklist = function(e) {
5302 return arguments.length && (l = Xr(e)), l
5303 }, this.$get = ["$injector", "$$sanitizeUri", function(e, r) {
5304 var i = function(e) {
5305 throw Yr("unsafe", "Attempting to use an unsafe value in a safe context.")
5309 return "self" === e ? hi(t, ui) || hi(t, de.document.baseURI ? de.document.baseURI : (li || ((li = de.document.createElement("a")).href = ".", li = li.cloneNode(!1)), li.href)) : !!e.exec(t.href)
5313 var t = function(e) {
5314 this.$$unwrapTrustedValue = function() {
5318 return e && (t.prototype = new e), t.prototype.valueOf = function() {
5319 return this.$$unwrapTrustedValue()
5320 }, t.prototype.toString = function() {
5321 return this.$$unwrapTrustedValue().toString()
5324 e.has("$sanitize") && (i = e.get("$sanitize"));
5327 return a[Gr.HTML] = t(n), a[Gr.CSS] = t(n), a[Gr.MEDIA_URL] = t(n), a[Gr.URL] = t(a[Gr.MEDIA_URL]), a[Gr.JS] = t(n), a[Gr.RESOURCE_URL] = t(a[Gr.URL]), {
5328 trustAs: function(e, t) {
5329 var n = a.hasOwnProperty(e) ? a[e] : null;
5330 if (!n) throw Yr("icontext", "Attempted to trust a value in invalid context. Context: {0}; Value: {1}", e, t);
5331 if (null === t || we(t) || "" === t) return t;
5332 if ("string" != typeof t) throw Yr("itype", "Attempted to trust a non-string value in a content requiring a string: Context: {0}", e);
5335 getTrusted: function(e, t) {
5336 if (null === t || we(t) || "" === t) return t;
5337 var n = a.hasOwnProperty(e) ? a[e] : null;
5338 if (n && t instanceof n) return t.$$unwrapTrustedValue();
5339 if (Te(t.$$unwrapTrustedValue) && (t = t.$$unwrapTrustedValue()), e === Gr.MEDIA_URL || e === Gr.URL) return r(t.toString(), e === Gr.MEDIA_URL);
5340 if (e === Gr.RESOURCE_URL) {
5342 var t, n, r = fi(e.toString()),
5344 for (t = 0, n = s.length; t < n; t++)
5349 for (t = 0, n = l.length; t < n; t++)
5355 throw Yr("insecurl", "Blocked loading resource from url not allowed by $sceDelegate policy. URL: {0}", t.toString())
5357 if (e === Gr.HTML) return i(t);
5358 throw Yr("unsafe", "Attempting to use an unsafe value in a safe context.")
5360 valueOf: function(e) {
5361 return e instanceof n ? e.$$unwrapTrustedValue() : e
5369 this.enabled = function(e) {
5370 return arguments.length && (t = !!e), t
5371 }, this.$get = ["$parse", "$sceDelegate", function(r, e) {
5372 if (t && fe < 8) throw Yr("iequirks", "Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks mode. You can fix this by adding the text <!doctype html> to the top of your HTML document. See http://docs.angularjs.org/api/ng.$sce for more information.");
5374 i.isEnabled = function() {
5376 }, i.trustAs = e.trustAs, i.getTrusted = e.getTrusted, i.valueOf = e.valueOf, t || (i.trustAs = i.getTrusted = function(e, t) {
5378 }, i.valueOf = $e), i.parseAs = function(t, e) {
5380 return n.literal && n.constant ? n : r(e, function(e) {
5381 return i.getTrusted(t, e)
5387 return ve(Gr, function(t, e) {
5389 i[Zr("parse_as_" + n)] = function(e) {
5391 }, i[Zr("get_trusted_" + n)] = function(e) {
5393 }, i[Zr("trust_as_" + n)] = function(e) {
5401 this.$get = ["$window", "$document", function(e, t) {
5403 r = !(!(e.nw && e.nw.process) && e.chrome && (e.chrome.app && e.chrome.app.runtime || !e.chrome.app && e.chrome.runtime && e.chrome.runtime.id)) && e.history && e.history.pushState,
5404 i = _((/android (\d+)/.exec(me((e.navigator || {}).userAgent)) || [])[1]),
5405 o = /Boxee/i.test((e.navigator || {}).userAgent),
5407 s = a.body && a.body.style,
5410 return s && (l = !!("transition" in s || "webkitTransition" in s), c = !!("animation" in s || "webkitAnimation" in s)), {
5411 history: !(!r || i < 4 || o),
5412 hasEvent: function(e) {
5413 if ("input" === e && fe) return !1;
5415 var t = a.createElement("div");
5416 n[e] = "on" + e in t
5429 this.$get = D(function(e) {
5437 c = this.ALL_TASKS_TYPE = "$$all$$",
5438 u = this.DEFAULT_TASK_TYPE = "$$default$$";
5446 for (var t = r.length - 1; 0 <= t; --t) {
5448 if (n.type === e) return r.splice(t, 1), n.cb
5451 this.completeTask = function(e, t) {
5456 l[a = (a = t) || u] && (l[a]--, l[c]--);
5460 for (var i, o = r ? f : d; i = o(t);) try {
5467 }, this.incTaskCount = function(e) {
5468 l[e = e || u] = (l[e] || 0) + 1, l[c] = (l[c] || 0) + 1
5469 }, this.notifyWhenNoPendingTasks = function(e, t) {
5470 l[t = t || c] ? r.push({
5476 var ri = M("$templateRequest");
5480 this.httpOptions = function(e) {
5481 return e ? (c = e, this) : c
5482 }, this.$get = ["$exceptionHandler", "$templateCache", "$http", "$q", "$sce", function(r, i, o, a, s) {
5484 l.totalPendingRequests++, Ce(t) && !we(i.get(t)) || (t = s.getTrustedResourceUrl(t));
5485 var e = o.defaults && o.defaults.transformResponse;
5486 return ke(e) ? e = e.filter(function(e) {
5488 }) : e === Fn && (e = null), o.get(t, be({
5490 transformResponse: e
5491 }, c)).finally(function() {
5492 l.totalPendingRequests--
5493 }).then(function(e) {
5494 return i.put(t, e.data)
5496 n || (e = ri("tpload", "Failed to load template: {0} (HTTP status: {1} {2})", t, e.status, e.statusText), r(e));
5500 return l.totalPendingRequests = 0, l
5505 this.$get = ["$rootScope", "$browser", "$location", function(t, n, r) {
5507 findBindings: function(e, n, r) {
5508 var t = e.getElementsByClassName("ng-binding"),
5510 return ve(t, function(t) {
5511 var e = y.element(t).data("$binding");
5512 e && ve(e, function(e) {
5513 r ? new RegExp("(^|\\s)" + I(n) + "(\\s|\\||$)").test(e) && i.push(t) : -1 !== e.indexOf(n) && i.push(t)
5517 findModels: function(e, t, n) {
5518 for (var r = ["ng-", "data-ng-", "ng\\:"], i = 0; i < r.length; ++i) {
5519 var o = "[" + r[i] + "model" + (n ? "=" : "*=") + '"' + t + '"]',
5520 a = e.querySelectorAll(o);
5521 if (a.length) return a
5524 getLocation: function() {
5527 setLocation: function(e) {
5528 e !== r.url() && (r.url(e), t.$digest())
5530 whenStable: function(e) {
5531 n.notifyWhenNoOutstandingRequests(e)
5537 var ai = M("$timeout");
5540 this.$get = ["$rootScope", "$browser", "$q", "$$q", "$exceptionHandler", function(l, c, u, d, f) {
5543 function e(e, t, n) {
5544 Te(e) || (n = t, t = e, e = _e);
5545 var r, i = Re(arguments, 3),
5547 a = (o ? d : u).defer(),
5549 return r = c.defer(function() {
5551 a.resolve(e.apply(null, i))
5555 delete h[s.$$timeoutId]
5558 }, t, "$timeout"), s.$$timeoutId = r, h[r] = a, s
5560 return e.cancel = function(e) {
5562 if (!e.hasOwnProperty("$$timeoutId")) throw ai("badprom", "`$timeout.cancel()` called with a promise that was not generated by `$timeout()`.");
5563 if (!h.hasOwnProperty(e.$$timeoutId)) return !1;
5564 var t = e.$$timeoutId,
5566 return Vr(n.promise), n.reject("canceled"), delete h[t], c.defer.cancel(t)
5570 var li, ci = de.document.createElement("a"),
5571 ui = fi(de.location.href);
5572 ci.href = "http://[::1]";
5573 var di = "[::1]" === ci.hostname;
5576 if (!Ce(e)) return e;
5578 fe && (ci.setAttribute("href", t), t = ci.href), ci.setAttribute("href", t);
5579 var n = ci.hostname;
5580 return !di && -1 < n.indexOf(":") && (n = "[" + n + "]"), {
5582 protocol: ci.protocol ? ci.protocol.replace(/:$/, "") : "",
5584 search: ci.search ? ci.search.replace(/^\?/, "") : "",
5585 hash: ci.hash ? ci.hash.replace(/^#/, "") : "",
5588 pathname: "/" === ci.pathname.charAt(0) ? ci.pathname : "/" + ci.pathname
5593 return e = fi(e), t = fi(t), e.protocol === t.protocol && e.host === t.host
5607 return decodeURIComponent(t)
5613 var e, t, n, r, i, o = function(e) {
5615 return e.cookie || ""
5621 for (e = (l = o).split("; "), s = {}, n = 0; n < e.length; n++) 0 < (r = (t = e[n]).indexOf("=")) && (i = c(t.substring(0, r)), we(s[i]) && (s[i] = c(t.substring(r + 1))));
5636 return ve(e, function(e, t) {
5640 return r.factory(e + i, t)
5642 this.register = o, this.$get = ["$injector", function(t) {
5643 return function(e) {
5646 }], o("currency", Ci), o("date", Pi), o("filter", bi), o("json", Hi), o("limitTo", Fi), o("lowercase", ji), o("number", ki), o("orderBy", Ui), o("uppercase", Li)
5650 return function(e, t, n, r) {
5652 if (null == e) return e;
5653 throw M("filter")("notarray", "Expected array but received: {0}", e)
5656 switch (r = r || "$", _i(t)) {
5666 i = function(t, n, r, i) {
5667 var o = Ee(t) && r in t;
5668 !0 === n ? n = Ie : Te(n) || (n = function(e, t) {
5669 return !we(e) && (null === e || null === t ? e === t : !(Ee(t) || Ee(e) && !$(e)) && (e = me("" + e), t = me("" + t), -1 !== e.indexOf(t)))
5671 return function(e) {
5672 return o && !Ee(e) ? yi(e, t[r], n, r, !1) : yi(e, t, n, r, i)
5679 return Array.prototype.filter.call(e, i)
5683 function yi(e, t, n, r, i, o) {
5686 if ("string" === s && "!" === t.charAt(0)) return !yi(e, t.substring(1), n, r, i);
5687 if (ke(e)) return e.some(function(e) {
5688 return yi(e, t, n, r, i)
5695 if (l.charAt && "$" !== l.charAt(0) && yi(e[l], t, n, r, !0)) return !0;
5696 return !o && yi(e, t, n, r, !1)
5698 if ("object" !== s) return n(e, t);
5701 if (!Te(c) && !we(c)) {
5703 if (!yi(u ? e : e[l], c, n, r, u, u)) return !1
5715 return null === e ? "null" : typeof e
5717 mi.$inject = ["$document"], vi.$inject = ["$provide"];
5723 var i = e.NUMBER_FORMATS;
5724 return function(e, t, n) {
5725 we(t) && (t = i.CURRENCY_SYM), we(n) && (n = i.PATTERNS[1].maxFrac);
5726 var r = t ? /\u00A4/g : /\s*\u00A4\s*/g;
5727 return null == e ? e : xi(e, i.PATTERNS[1], i.GROUP_SEP, i.DECIMAL_SEP, n).replace(r, t)
5732 var n = e.NUMBER_FORMATS;
5733 return function(e, t) {
5734 return null == e ? e : xi(e, n.PATTERNS[0], n.GROUP_SEP, n.DECIMAL_SEP, t)
5738 function xi(e, t, n, r, i) {
5739 if (!Ce(e) && !E(e) || isNaN(e)) return "";
5740 var o, a = !isFinite(e),
5742 l = Math.abs(e) + "",
5746 (function(e, t, n, r) {
5749 a = (t = we(t) ? Math.min(Math.max(n, o), r) : +t) + e.i,
5752 i.splice(Math.max(e.i, a));
5753 for (var l = a; l < i.length; l++) i[l] = 0
5755 o = Math.max(0, o), e.i = 1, i.length = Math.max(1, a = t + 1), i[0] = 0;
5756 for (var c = 1; c < a; c++) i[c] = 0
5760 for (var u = 0; a < u; u--) i.unshift(0), e.i++;
5763 for (; o < Math.max(0, t); o++) i.push(0);
5764 var d = i.reduceRight(function(e, t, n, r) {
5765 return t += e, r[n] = t % 10, Math.floor(t / 10)
5767 d && (i.unshift(d), e.i++)
5768 })(o = function(e) {
5769 var t, n, r, i, o, a = 0;
5770 for (-1 < (n = e.indexOf(wi)) && (e = e.replace(wi, "")), 0 < (r = e.search(/e/i)) ? (n < 0 && (n = r), n += +e.slice(r + 1), e = e.substring(0, r)) : n < 0 && (n = e.length), r = 0; e.charAt(r) === Ei; r++);
5771 if (r === (o = e.length)) t = [0], n = 1;
5773 for (o--; e.charAt(o) === Ei;) o--;
5774 for (n -= r, t = [], i = 0; r <= o; r++, i++) t[i] = +e.charAt(r)
5776 return $i < n && (t = t.splice(0, $i - 1), a = n - 1, n = 1), {
5781 }(l), i, t.minFrac, t.maxFrac);
5786 for (s = u.reduce(function(e, t) {
5788 }, !0); d < 0;) u.unshift(0), d++;
5789 0 < d ? h = u.splice(d, u.length) : (h = u, u = [0]);
5791 for (u.length >= t.lgSize && p.unshift(u.splice(-t.lgSize, u.length).join("")); u.length > t.gSize;) p.unshift(u.splice(-t.gSize, u.length).join(""));
5792 u.length && p.unshift(u.join("")), c = p.join(n), h.length && (c += r + h.join("")), f && (c += "e+" + f)
5794 return e < 0 && !s ? t.negPre + c + t.negSuf : t.posPre + c + t.posSuf
5797 function Ti(e, t, n, r) {
5799 for ((e < 0 || r && e <= 0) && (r ? e = 1 - e : (e = -e, i = "-")), e = "" + e; e.length < t;) e = Ei + e;
5800 return n && (e = e.substr(e.length - t)), i + e
5803 function Mi(n, r, i, o, a) {
5806 var t = e["get" + n]();
5807 return (0 < i || -i < t) && (t += i), 0 === t && -12 === i && (t = 12), Ti(t, r, o, a)
5811 function Ai(r, i, o) {
5812 return function(e, t) {
5813 var n = e["get" + r]();
5814 return t[f((o ? "STANDALONE" : "") + (i ? "SHORT" : "") + r)][n]
5819 var t = new Date(e, 0, 1).getDay();
5820 return new Date(e, 0, (t <= 4 ? 5 : 12) - t)
5824 return function(e) {
5825 var t, n = Si(e.getFullYear()),
5826 r = +(t = e, new Date(t.getFullYear(), t.getMonth(), t.getDate() + (4 - t.getDay()))) - +n;
5827 return Ti(1 + Math.round(r / 6048e5), i)
5832 return e.getFullYear() <= 0 ? t.ERAS[0] : t.ERAS[1]
5834 Ci.$inject = ["$locale"];
5836 yyyy: Mi("FullYear", 4, 0, !(ki.$inject = ["$locale"]), !0),
5837 yy: Mi("FullYear", 2, 0, !0, !0),
5838 y: Mi("FullYear", 1, 0, !1, !0),
5840 MMM: Ai("Month", !0),
5841 MM: Mi("Month", 2, 1),
5842 M: Mi("Month", 1, 1),
5843 LLLL: Ai("Month", !1, !0),
5848 hh: Mi("Hours", 2, -12),
5849 h: Mi("Hours", 1, -12),
5850 mm: Mi("Minutes", 2),
5851 m: Mi("Minutes", 1),
5852 ss: Mi("Seconds", 2),
5853 s: Mi("Seconds", 1),
5854 sss: Mi("Milliseconds", 3),
5858 return e.getHours() < 12 ? t.AMPMS[0] : t.AMPMS[1]
5860 Z: function(e, t, n) {
5862 i = 0 <= r ? "+" : "";
5863 return i += Ti(Math[0 < r ? "floor" : "ceil"](r / 60), 2) + Ti(Math.abs(r % 60), 2)
5870 GGGG: function(e, t) {
5871 return e.getFullYear() <= 0 ? t.ERANAMES[0] : t.ERANAMES[1]
5874 Ii = /((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))([\s\S]*)/,
5878 var d = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;
5879 return function(t, e, n) {
5882 if (e = e || "mediumDate", e = l.DATETIME_FORMATS[e] || e, Ce(t) && (t = Ri.test(t) ? _(t) : function(e) {
5884 if (t = e.match(d)) {
5885 var n = new Date(0),
5888 o = t[8] ? n.setUTCFullYear : n.setFullYear,
5889 a = t[8] ? n.setUTCHours : n.setHours;
5890 t[9] && (r = _(t[9] + t[10]), i = _(t[9] + t[11])), o.call(n, _(t[1]), _(t[2]) - 1, _(t[3]));
5891 var s = _(t[4] || 0) - r,
5892 l = _(t[5] || 0) - i,
5894 u = Math.round(1e3 * parseFloat("0." + (t[7] || 0)));
5895 return a.call(n, s, l, c, u), n
5898 }(t)), E(t) && (t = new Date(t)), !C(t) || !isFinite(t.getTime())) return t;
5899 for (; e;) e = (i = Ii.exec(e)) ? (a = q(a, i, 1)).pop() : (a.push(e), null);
5900 var s = t.getTimezoneOffset();
5901 return n && (s = W(n, s), t = G(t, n, !0)), ve(a, function(e) {
5902 r = Ni[e], o += r ? r(t, l.DATETIME_FORMATS, s) : "''" === e ? "'" : e.replace(/(^'|'$)/g, "").replace(/''/g, "'")
5908 return function(e, t) {
5909 return we(t) && (t = 2), V(e, t)
5912 Pi.$inject = ["$locale"];
5917 return function(e, t, n) {
5918 return t = Math.abs(Number(t)) === 1 / 0 ? Number(t) : _(t), S(t) ? e : (E(e) && (e = e.toString()), R(e) ? (n = (n = !n || isNaN(n) ? 0 : _(n)) < 0 ? Math.max(0, e.length + n) : n, 0 <= t ? qi(e, n, n + t) : 0 === n ? qi(e, t, e.length) : qi(e, Math.max(0, n + t), n)) : e)
5922 function qi(e, t, n) {
5923 return Ce(e) ? e.slice(t, n) : a.call(e, t, n)
5927 return function(e, t, n, r) {
5928 if (null == e) return e;
5929 if (!R(e)) throw M("orderBy")("notarray", "Expected array but received: {0}", e);
5930 ke(t) || (t = [t]), 0 === t.length && (t = ["+"]);
5931 var o = t.map(function(e) {
5935 else if (Ce(e) && ("+" !== e.charAt(0) && "-" !== e.charAt(0) || (t = "-" === e.charAt(0) ? -1 : 1, e = e.substring(1)), "" !== e && (n = l(e)).constant)) {
5948 i = Array.prototype.map.call(e, function(t, n) {
5956 predicateValues: o.map(function(e) {
5957 return function(e, t) {
5959 null === e ? n = "null" : "object" === n && (e = function(e) {
5960 if (Te(e.valueOf) && c(e = e.valueOf())) return e;
5961 if ($(e) && c(e = e.toString())) return e;
5973 return i.sort(function(e, t) {
5974 for (var n = 0, r = o.length; n < r; n++) {
5975 var i = s(e.predicateValues[n], t.predicateValues[n]);
5976 if (i) return i * o[n].descending * a
5978 return (s(e.tieBreaker, t.tieBreaker) || u(e.tieBreaker, t.tieBreaker)) * a
5979 }), e = i.map(function(e) {
6002 "string" === r ? (o = o.toLowerCase(), a = a.toLowerCase()) : "object" === r && (Ee(o) && (o = e.index), Ee(a) && (a = t.index)), o !== a && (n = o < a ? -1 : 1)
6003 } else n = "undefined" === r ? 1 : "undefined" === i ? -1 : "null" === r ? 1 : "null" === i ? -1 : r < i ? -1 : 1;
6009 return Te(e) && (e = {
6011 }), e.restrict = e.restrict || "AC", D(e)
6013 Ui.$inject = ["$parse"];
6016 compile: function(e, t) {
6017 if (!t.href && !t.xlinkHref) return function(e, t) {
6018 if ("a" === t[0].nodeName.toLowerCase()) {
6019 var n = "[object SVGAnimatedString]" === ge.call(t.prop("href")) ? "xlink:href" : "href";
6020 t.on("click", function(e) {
6021 t.attr(n) || e.preventDefault()
6028 ve(Dt, function(e, r) {
6029 if ("multiple" !== e) {
6030 var i = $n("ng-" + r),
6032 "checked" === e && (t = function(e, t, n) {
6033 n.ngModel !== n[i] && o(e, 0, n)
6034 }), zi[i] = function() {
6043 function o(e, t, n) {
6044 e.$watch(n[i], function(e) {
6048 }), ve(Nt, function(e, i) {
6049 zi[i] = function() {
6052 link: function(e, t, n) {
6053 if ("ngPattern" === i && "/" === n.ngPattern.charAt(0)) {
6054 var r = n.ngPattern.match(o);
6055 if (r) return void n.$set("ngPattern", new RegExp(r[1], r[2]))
6057 e.$watch(n[i], function(e) {
6063 }), ve(["src", "srcset", "href"], function(a) {
6064 var s = $n("ng-" + a);
6065 zi[s] = ["$sce", function(o) {
6068 link: function(e, t, n) {
6071 "href" === a && "[object SVGAnimatedString]" === ge.call(t.prop("href")) && (i = "xlinkHref", n.$attr[i] = "xlink:href", r = null), n.$set(s, o.getTrustedMediaUrl(n[s])), n.$observe(s, function(e) {
6072 e ? (n.$set(i, e), fe && r && t.prop(r, n[i])) : "href" === a && n.$set(i, null)
6080 $getControls: D([]),
6081 $$renameControl: function(e, t) {
6092 Gi = "ng-submitted";
6094 function Ki(e, t, n, r, i) {
6095 this.$$controls = [], this.$error = {}, this.$$success = {}, this.$pending = void 0, this.$name = i(t.name || t.ngForm || "")(n), this.$dirty = !1, this.$pristine = !0, this.$valid = !0, this.$invalid = !1, this.$submitted = !1, this.$$parentForm = Wi, this.$$element = e, this.$$animate = r, Ji(this)
6097 Ki.$inject = ["$element", "$attrs", "$scope", "$animate", "$interpolate"], Ki.prototype = {
6098 $rollbackViewValue: function() {
6099 ve(this.$$controls, function(e) {
6100 e.$rollbackViewValue()
6103 $commitViewValue: function() {
6104 ve(this.$$controls, function(e) {
6105 e.$commitViewValue()
6108 $addControl: function(e) {
6109 le(e.$name, "input"), this.$$controls.push(e), e.$name && (this[e.$name] = e), e.$$parentForm = this
6111 $getControls: function() {
6112 return We(this.$$controls)
6114 $$renameControl: function(e, t) {
6116 this[n] === e && delete this[n], (this[t] = e).$name = t
6118 $removeControl: function(n) {
6119 n.$name && this[n.$name] === n && delete this[n.$name], ve(this.$pending, function(e, t) {
6120 this.$setValidity(t, null, n)
6121 }, this), ve(this.$error, function(e, t) {
6122 this.$setValidity(t, null, n)
6123 }, this), ve(this.$$success, function(e, t) {
6124 this.$setValidity(t, null, n)
6125 }, this), Oe(this.$$controls, n), n.$$parentForm = Wi
6127 $setDirty: function() {
6128 this.$$animate.removeClass(this.$$element, Zo), this.$$animate.addClass(this.$$element, Xo), this.$dirty = !0, this.$pristine = !1, this.$$parentForm.$setDirty()
6130 $setPristine: function() {
6131 this.$$animate.setClass(this.$$element, Zo, Xo + " " + Gi), this.$dirty = !1, this.$pristine = !0, this.$submitted = !1, ve(this.$$controls, function(e) {
6135 $setUntouched: function() {
6136 ve(this.$$controls, function(e) {
6140 $setSubmitted: function() {
6141 for (var e = this; e.$$parentForm && e.$$parentForm !== Wi;) e = e.$$parentForm;
6144 $$setSubmitted: function() {
6145 this.$$animate.addClass(this.$$element, Gi), this.$submitted = !0, ve(this.$$controls, function(e) {
6146 e.$$setSubmitted && e.$$setSubmitted()
6151 set: function(e, t, n) {
6153 r ? -1 === r.indexOf(n) && r.push(n) : e[t] = [n]
6155 unset: function(e, t, n) {
6157 r && (Oe(r, n), 0 === r.length && delete e[t])
6160 var Zi = function(n) {
6161 return ["$timeout", "$parse", function(l, t) {
6164 restrict: n ? "EAC" : "E",
6165 require: ["form", "^^?form"],
6167 compile: function(e, t) {
6168 e.addClass(Zo).addClass(Go);
6169 var s = t.name ? "name" : !(!n || !t.ngForm) && "ngForm";
6171 pre: function(t, e, n, r) {
6173 if (!("action" in n)) {
6174 var o = function(e) {
6175 t.$apply(function() {
6176 i.$commitViewValue(), i.$setSubmitted()
6177 }), e.preventDefault()
6179 e[0].addEventListener("submit", o), e.on("$destroy", function() {
6181 e[0].removeEventListener("submit", o)
6184 }(r[1] || i.$$parentForm).$addControl(i);
6185 var a = s ? c(i.$name) : _e;
6186 s && (a(t, i), n.$observe(s, function(e) {
6187 i.$name !== e && (a(t, void 0), i.$$parentForm.$$renameControl(i, e), (a = c(i.$name))(t, i))
6188 })), e.on("$destroy", function() {
6189 i.$$parentForm.$removeControl(i), a(t, void 0), be(i, Wi)
6197 return "" === e ? t('this[""]').assign : t(e).assign || _e
6205 e.$$classCache = {}, e.$$classCache[Ko] = !(e.$$classCache[Go] = e.$$element.hasClass(Go))
6213 function a(e, t, n) {
6214 n && !e.$$classCache[t] ? (e.$$animate.addClass(e.$$element, t), e.$$classCache[t] = !0) : !n && e.$$classCache[t] && (e.$$animate.removeClass(e.$$element, t), e.$$classCache[t] = !1)
6217 function s(e, t, n) {
6218 t = t ? "-" + je(t, "-") : "", a(e, Go + t, !0 === n), a(e, Ko + t, !1 === n)
6220 t.prototype.$setValidity = function(e, t, n) {
6222 we(t) ? function(e, t, n, r) {
6223 e[t] || (e[t] = {});
6225 }(this, "$pending", e, n) : function(e, t, n, r) {
6226 e[t] && o(e[t], n, r);
6227 to(e[t]) && (e[t] = void 0)
6228 }(this, "$pending", e, n), Ae(t) ? t ? (o(this.$error, e, n), i(this.$$success, e, n)) : (i(this.$error, e, n), o(this.$$success, e, n)) : (o(this.$error, e, n), o(this.$$success, e, n)), this.$pending ? (a(this, Yi, !0), this.$valid = this.$invalid = void 0, s(this, "", null)) : (a(this, Yi, !1), this.$valid = to(this.$error), this.$invalid = !this.$valid, s(this, "", this.$valid)), s(this, e, r = this.$pending && this.$pending[e] ? void 0 : !this.$error[e] && (!!this.$$success[e] || null)), this.$$parentForm.$setValidity(e, r, this)
6235 if (e.hasOwnProperty(t)) return !1;
6238 var no = /^\d{4,}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+(?:[+-][0-2]\d:[0-5]\d|Z)$/,
6239 ro = /^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i,
6240 io = /^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/,
6241 oo = /^\s*(-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,
6242 ao = /^(\d{4,})-(\d{2})-(\d{2})$/,
6243 so = /^(\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,
6244 lo = /^(\d{4,})-W(\d\d)$/,
6245 co = /^(\d{4,})-(\d\d)$/,
6246 uo = /^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,
6247 fo = "keydown wheel mousedown",
6249 ve("date,datetime-local,month,time,week".split(","), function(e) {
6253 text: function(e, t, n, r, i, o) {
6254 go(e, t, n, r, i, o), mo(r)
6256 date: bo("date", ao, vo(ao, ["yyyy", "MM", "dd"]), "yyyy-MM-dd"),
6257 "datetime-local": bo("datetimelocal", so, vo(so, ["yyyy", "MM", "dd", "HH", "mm", "ss", "sss"]), "yyyy-MM-ddTHH:mm:ss.sss"),
6258 time: bo("time", uo, vo(uo, ["HH", "mm", "ss", "sss"]), "HH:mm:ss.sss"),
6259 week: bo("week", lo, function(e, t) {
6273 return t && (o = t.getHours(), a = t.getMinutes(), s = t.getSeconds(), l = t.getMilliseconds()), new Date(r, 0, c.getDate() + u, o, a, s, l)
6278 month: bo("month", co, vo(co, ["yyyy", "MM"]), "yyyy-MM"),
6279 number: function(e, t, n, r, i, o, a, s) {
6281 if (yo(e, t, n, r, "number"), _o(r), go(e, t, n, r, i, o), O(n.min) || n.ngMin) {
6282 var c = n.min || s(n.ngMin)(e);
6283 l = $o(c), r.$validators.min = function(e, t) {
6284 return r.$isEmpty(t) || we(l) || l <= t
6285 }, n.$observe("min", function(e) {
6286 e !== c && (l = $o(e), c = e, r.$validate())
6289 if (O(n.max) || n.ngMax) {
6290 var u = n.max || s(n.ngMax)(e),
6292 r.$validators.max = function(e, t) {
6293 return r.$isEmpty(t) || we(d) || t <= d
6294 }, n.$observe("max", function(e) {
6295 e !== u && (d = $o(e), u = e, r.$validate())
6298 if (O(n.step) || n.ngStep) {
6299 var f = n.step || s(n.ngStep)(e),
6301 r.$validators.step = function(e, t) {
6302 return r.$isEmpty(t) || we(h) || Co(t, l || 0, h)
6303 }, n.$observe("step", function(e) {
6304 e !== f && (h = $o(e), f = e, r.$validate())
6308 url: function(e, t, n, r, i, o) {
6309 go(e, t, n, r, i, o), mo(r), r.$validators.url = function(e, t) {
6311 return r.$isEmpty(n) || ro.test(n)
6314 email: function(e, t, n, r, i, o) {
6315 go(e, t, n, r, i, o), mo(r), r.$validators.email = function(e, t) {
6317 return r.$isEmpty(n) || io.test(n)
6320 radio: function(e, n, r, i) {
6321 var o = !r.ngTrim || "false" !== Se(r.ngTrim);
6322 we(r.name) && n.attr("name", l());
6323 n.on("change", function(e) {
6325 n[0].checked && (t = r.value, o && (t = Se(t)), i.$setViewValue(t, e && e.type))
6326 }), i.$render = function() {
6328 o && (e = Se(e)), n[0].checked = e === i.$viewValue
6329 }, r.$observe("value", i.$render)
6331 range: function(e, r, i, n, t, o) {
6332 yo(e, r, i, n, "range"), _o(n), go(e, r, i, n, t, o);
6333 var a = n.$$hasNativeValidators && "range" === r[0].type,
6335 l = a ? 100 : void 0,
6342 n.$render = a && O(u.rangeUnderflow) && O(u.rangeOverflow) ? function() {
6343 p(), n.$setViewValue(r.val())
6344 } : p, d && (s = $o(i.min), n.$validators.min = a ? function() {
6346 } : function(e, t) {
6347 return n.$isEmpty(t) || we(s) || s <= t
6348 }, m("min", function(e) {
6349 if (s = $o(e), S(n.$modelValue)) return;
6352 t < s && (t = s, r.val(t)), n.$setViewValue(t)
6353 } else n.$validate()
6355 f && (l = $o(i.max), n.$validators.max = a ? function() {
6357 } : function(e, t) {
6358 return n.$isEmpty(t) || we(l) || t <= l
6359 }, m("max", function(e) {
6360 if (l = $o(e), S(n.$modelValue)) return;
6363 l < t && (r.val(l), t = l < s ? s : l), n.$setViewValue(t)
6364 } else n.$validate()
6366 h && (c = $o(i.step), n.$validators.step = a ? function() {
6367 return !u.stepMismatch
6368 } : function(e, t) {
6369 return n.$isEmpty(t) || we(c) || Co(t, s || 0, c)
6370 }, m("step", function(e) {
6371 if (c = $o(e), S(n.$modelValue)) return;
6372 a ? n.$viewValue !== r.val() && n.$setViewValue(r.val()) : n.$validate()
6378 i.$observe(e, function(e) {
6383 checkbox: function(e, t, n, r, i, o, a, s) {
6384 var l = ko(s, e, "ngTrueValue", n.ngTrueValue, !0),
6385 c = ko(s, e, "ngFalseValue", n.ngFalseValue, !1);
6386 t.on("change", function(e) {
6387 r.$setViewValue(t[0].checked, e && e.type)
6388 }), r.$render = function() {
6389 t[0].checked = r.$viewValue
6390 }, r.$isEmpty = function(e) {
6392 }, r.$formatters.push(function(e) {
6394 }), r.$parsers.push(function(e) {
6406 t.$formatters.push(function(e) {
6407 return t.$isEmpty(e) ? e : e.toString()
6411 function go(e, r, i, o, t, a) {
6412 var s, l = me(r[0].type);
6415 r.on("compositionstart", function() {
6417 }), r.on("compositionupdate", function(e) {
6418 (we(e.data) || "" === e.data) && (c = !1)
6419 }), r.on("compositionend", function() {
6423 var u = function(e) {
6424 if (s && (a.defer.cancel(s), s = null), !c) {
6427 "password" === l || i.ngTrim && "false" === i.ngTrim || (t = Se(t)), (o.$viewValue !== t || "" === t && o.$$hasNativeValidators) && o.$setViewValue(t, n)
6430 if (t.hasEvent("input")) r.on("input", u);
6432 var n = function(e, t, n) {
6433 s || (s = a.defer(function() {
6434 s = null, t && t.value === n || u(e)
6437 r.on("keydown", function(e) {
6439 91 === t || 15 < t && t < 19 || 37 <= t && t <= 40 || n(e, this, this.value)
6440 }), t.hasEvent("paste") && r.on("paste cut drop", n)
6442 r.on("change", u), ho[l] && o.$$hasNativeValidators && l === i.type && r.on(fo, function(e) {
6447 s = a.defer(function() {
6448 s = null, t.badInput === n && t.typeMismatch === r || u(e)
6451 }), o.$render = function() {
6452 var e = o.$isEmpty(o.$viewValue) ? "" : o.$viewValue;
6453 r.val() !== e && r.val(e)
6458 return function(e, t) {
6462 if ('"' === e.charAt(0) && '"' === e.charAt(e.length - 1) && (e = e.substring(1, e.length - 1)), no.test(e)) return new Date(e);
6463 if (o.lastIndex = 0, n = o.exec(e)) {
6464 n.shift(), r = t ? {
6465 yyyy: t.getFullYear(),
6466 MM: t.getMonth() + 1,
6471 sss: t.getMilliseconds() / 1e3
6480 }, ve(n, function(e, t) {
6481 t < a.length && (r[a[t]] = +e)
6483 var i = new Date(r.yyyy, r.MM - 1, r.dd, r.HH, r.mm, r.ss || 0, 1e3 * r.sss || 0);
6484 return r.yyyy < 100 && i.setFullYear(r.yyyy), i
6491 function bo(b, y, _, $) {
6492 return function(e, t, n, i, r, o, a, s) {
6493 yo(e, t, n, i, b), go(0, t, n, i, r, o);
6494 var l, c, u = "time" === b || "datetimelocal" === b;
6495 if (i.$parsers.push(function(e) {
6496 return i.$isEmpty(e) ? null : y.test(e) ? v(e, l) : void(i.$$parserName = b)
6497 }), i.$formatters.push(function(e) {
6498 if (e && !C(e)) throw na("datefmt", "Expected `{0}` to be a date", e);
6501 var t = i.$options.getOption("timezone");
6502 return t && (l = G(l, c = t, !0)),
6505 u && Ce(i.$options.getOption("timeSecondsFormat")) && (n = $.replace("ss.sss", i.$options.getOption("timeSecondsFormat")).replace(/:$/, ""));
6506 var r = a("date")(e, n, t);
6507 u && i.$options.getOption("timeStripZeroSeconds") && (r = r.replace(/(?::00)?(?:\.000)?$/, ""));
6511 return c = l = null, ""
6512 }), O(n.min) || n.ngMin) {
6513 var d = n.min || s(n.ngMin)(e),
6515 i.$validators.min = function(e) {
6516 return !m(e) || we(f) || _(e) >= f
6517 }, n.$observe("min", function(e) {
6518 e !== d && (f = g(e), d = e, i.$validate())
6521 if (O(n.max) || n.ngMax) {
6522 var h = n.max || s(n.ngMax)(e),
6524 i.$validators.max = function(e) {
6525 return !m(e) || we(p) || _(e) <= p
6526 }, n.$observe("max", function(e) {
6527 e !== h && (p = g(e), h = e, i.$validate())
6532 return e && !(e.getTime && e.getTime() != e.getTime())
6536 return O(e) && !C(e) ? v(e) || void 0 : e
6540 var n = i.$options.getOption("timezone");
6541 c && c !== n && (t = Y(t, W(c)));
6543 return !isNaN(r) && n && (r = G(r, n)), r
6548 function yo(e, n, t, r, i) {
6550 (r.$$hasNativeValidators = Ee(o.validity)) && r.$parsers.push(function(e) {
6551 var t = n.prop(d) || {};
6552 if (!t.badInput && !t.typeMismatch) return e;
6558 t.$parsers.push(function(e) {
6559 return t.$isEmpty(e) ? null : oo.test(e) ? parseFloat(e) : void(t.$$parserName = "number")
6560 }), t.$formatters.push(function(e) {
6561 if (!t.$isEmpty(e)) {
6562 if (!E(e)) throw na("numfmt", "Expected `{0}` to be a number", e);
6570 return O(e) && !E(e) && (e = parseFloat(e)), S(e) ? void 0 : e
6574 return (0 | e) === e
6578 var t = e.toString(),
6580 if (-1 !== n) return t.length - n - 1;
6581 if (-1 < e && e < 1) {
6582 var r = /e-(\d+)$/.exec(t);
6583 if (r) return Number(r[1])
6588 function Co(e, t, n) {
6594 var s = i ? Eo(r) : 0,
6597 u = Math.max(s, l, c),
6598 d = Math.pow(10, u);
6599 r *= d, t *= d, n *= d, i && (r = Math.round(r)), o && (t = Math.round(t)), a && (n = Math.round(n))
6601 return (r - t) % n == 0
6604 function ko(e, t, n, r, i) {
6607 if (!(o = e(r)).constant) throw na("constexpr", "Expected constant expression for `{0}`, but saw `{1}`.", n, r);
6612 var xo = ["$browser", "$sniffer", "$filter", "$parse", function(i, o, a, s) {
6615 require: ["?ngModel"],
6617 pre: function(e, t, n, r) {
6618 r[0] && (po[me(n.type)] || po.text)(e, t, n, r[0], o, i, a, s)
6628 return this.getAttribute("value") || ""
6631 this.setAttribute("value", e)
6637 compile: function(e, t) {
6638 if ("hidden" === me(t.type)) return {
6639 pre: function(e, t, n, r) {
6641 i.parentNode && i.parentNode.insertBefore(i, i.nextSibling), Object.defineProperty && Object.defineProperty(i, "value", o)
6647 Mo = /^(true|false|\d+)$/,
6649 function r(e, t, n) {
6650 var r = O(n) ? n : 9 === fe ? "" : null;
6651 e.prop("value", r), t.$set("value", n)
6656 compile: function(e, t) {
6657 return Mo.test(t.ngValue) ? function(e, t, n) {
6658 r(t, n, e.$eval(n.ngValue))
6659 } : function(e, t, n) {
6660 e.$watch(n.ngValue, function(e) {
6667 So = ["$compile", function(r) {
6670 compile: function(e) {
6671 return r.$$addBindingClass(e),
6673 r.$$addBindingInfo(t, n.ngBind), t = t[0], e.$watch(n.ngBind, function(e) {
6674 t.textContent = ue(e)
6680 Do = ["$interpolate", "$compile", function(i, o) {
6682 compile: function(e) {
6683 return o.$$addBindingClass(e),
6685 var r = i(t.attr(n.$attr.ngBindTemplate));
6686 o.$$addBindingInfo(t, r.expressions), t = t[0], n.$observe("ngBindTemplate", function(e) {
6687 t.textContent = we(e) ? "" : e
6693 Oo = ["$sce", "$parse", "$compile", function(o, n, a) {
6696 compile: function(e, t) {
6697 var r = n(t.ngBindHtml),
6698 i = n(t.ngBindHtml, function(e) {
6701 return a.$$addBindingClass(e),
6703 a.$$addBindingInfo(n, e.ngBindHtml), t.$watch(i, function() {
6705 n.html(o.getTrustedHtml(e) || "")
6714 link: function(e, t, n, r) {
6715 r.$viewChangeListeners.push(function() {
6723 return i = "ngClass" + i, ["$parse", function(n) {
6726 link: function(e, t, l) {
6727 var c, r = t.data("$classCounts"),
6732 return ve(e, function(e) {
6733 (0 < t || r[e]) && (r[e] = (r[e] || 0) + t, r[e] === +(0 < t) && n.push(e))
6736 r || (r = Fe(), t.data("$classCounts", r)), "ngClass" !== i && (o || (o = n("$index", function(e) {
6738 })), e.$watch(o, function(e) {
6739 e === f ? (n = d(p(n = c), 1), l.$addClass(n)) : (t = d(p(t = c), -1), l.$removeClass(t));
6743 })), e.$watch(n(l[i], a), function(e) {
6744 u === f && (t = e, n = p(c), r = p(t), i = h(n, r), o = h(r, n), a = d(i, -1), s = d(o, 1), l.$addClass(s), l.$removeClass(a));
6745 var t, n, r, i, o, a, s;
6753 if (!e || !e.length) return [];
6754 if (!t || !t.length) return e;
6756 e: for (var r = 0; r < e.length; r++) {
6757 for (var i = e[r], o = 0; o < t.length; o++)
6758 if (i === t[o]) continue e;
6765 return e && e.split(" ")
6771 return ke(t) ? e = t.map(a).join(" ") : Ee(t) ? e = Object.keys(t).filter(function(e) {
6773 }).join(" ") : Ce(t) || (e = t + ""), e
6776 var Ro = Io("", !0),
6780 compile: function(e, t) {
6781 t.$set("ngCloak", void 0), e.removeClass("ng-cloak")
6798 function Uo(n, i, o, a, s, l) {
6801 compile: function(e, t) {
6803 return function(n, e) {
6804 e.on(s, function(e) {
6805 var t = function() {
6811 if (l) n.$evalAsync(t);
6822 ve("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "), function(r) {
6823 var i = $n("ng-" + r);
6824 Fo[i] = ["$parse", "$rootScope", "$exceptionHandler", function(e, t, n) {
6825 return Uo(e, t, n, i, r, qo[r])
6828 var Vo = ["$animate", "$compile", function(l, c) {
6831 transclude: "element",
6836 link: function(e, n, r, t, i) {
6838 e.$watch(r.ngIf, function(e) {
6839 e ? a || i(function(e, t) {
6840 a = t, e[e.length++] = c.$$createComment("end ngIf", r.ngIf), o = {
6842 }, l.enter(e, n.parent(), n)
6843 }) : (s && (s.remove(), s = null), a && (a.$destroy(), a = null), o && (s = ce(o.clone), l.leave(s).done(function(e) {
6844 !1 !== e && (s = null)
6850 Bo = ["$templateRequest", "$anchorScroll", "$animate", function(g, v, b) {
6855 transclude: "element",
6857 compile: function(e, t) {
6858 var n = t.ngInclude || t.src,
6861 return function(a, s, e, l, c) {
6864 t && (t.remove(), t = null), u && (u.$destroy(), u = null), d && (b.leave(d).done(function(e) {
6865 !1 !== e && (t = null)
6866 }), t = d, d = null)
6868 a.$watch(n, function(r) {
6869 var i = function(e) {
6870 !1 === e || !O(m) || m && !a.$eval(m) || v()
6873 r ? (g(r, !0).then(function(e) {
6874 if (!a.$$destroyed && o === f) {
6877 var n = c(t, function(e) {
6878 h(), b.enter(e, null, s).done(i)
6880 d = n, (u = t).$emit("$includeContentLoaded", r), a.$eval(p)
6883 a.$$destroyed || o === f && (h(), a.$emit("$includeContentError", r))
6884 }), a.$emit("$includeContentRequested", r)) : (h(), l.template = null)
6890 zo = ["$compile", function(i) {
6894 require: "ngInclude",
6895 link: function(e, t, n, r) {
6896 if (ge.call(t[0]).match(/SVG/)) return t.empty(), void i(ut(r.template, de.document).childNodes)(e, function(e) {
6899 futureParentElement: t
6901 t.html(r.template), i(t.contents())(e)
6907 compile: function() {
6909 pre: function(e, t, n) {
6920 link: function(e, t, n, r) {
6921 var i = n.ngList || ", ",
6922 o = "false" !== n.ngTrim,
6924 r.$parsers.push(function(e) {
6927 return e && ve(e.split(a), function(e) {
6928 e && t.push(o ? Se(e) : e)
6931 }), r.$formatters.push(function(e) {
6932 if (ke(e)) return e.join(i)
6933 }), r.$isEmpty = function(e) {
6934 return !e || !e.length
6943 Qo = "ng-untouched",
6946 ta = "ng-not-empty",
6949 function ra(e, t, n, r, i, o, a, s, l) {
6951 this.$viewValue = Number.NaN, this.$modelValue = Number.NaN, this.$$rawModelValue = void 0, this.$validators = {}, this.$asyncValidators = {}, this.$parsers = [], this.$formatters = [], this.$viewChangeListeners = [], this.$untouched = !0, this.$touched = !1, this.$pristine = !0, this.$dirty = !1, this.$valid = !0, this.$invalid = !1, this.$error = {}, this.$$success = {}, this.$pending = void 0, this.$name = l(n.name || "", !1)(e), this.$$parentForm = Wi, this.$options = ia, this.$$updateEvents = "", this.$$updateEventHandler = this.$$updateEventHandler.bind(this), this.$$parsedNgModel = i(n.ngModel), this.$$parsedNgModelAssign = this.$$parsedNgModel.assign, this.$$ngModelGet = this.$$parsedNgModel, this.$$ngModelSet = this.$$parsedNgModelAssign, this.$$pendingDebounce = null, this.$$parserValid = void 0, this.$$parserName = "parse", this.$$currentValidationRunId = 0, this.$$scope = e, this.$$rootScope = e.$root, this.$$attr = n, this.$$element = r, this.$$animate = o, this.$$timeout = a, this.$$parse = i, this.$$q = s, this.$$exceptionHandler = t, Ji(this), (c = this).$$scope.$watch(function(e) {
6952 var t = c.$$ngModelGet(e);
6953 return t === c.$modelValue || c.$modelValue != c.$modelValue && t != t || c.$$setModelValue(t), t
6956 ra.$inject = ["$scope", "$exceptionHandler", "$attrs", "$element", "$parse", "$animate", "$timeout", "$q", "$interpolate"], ra.prototype = {
6957 $$initGetterSetters: function() {
6958 if (this.$options.getOption("getterSetter")) {
6959 var n = this.$$parse(this.$$attr.ngModel + "()"),
6960 r = this.$$parse(this.$$attr.ngModel + "($$$p)");
6961 this.$$ngModelGet = function(e) {
6962 var t = this.$$parsedNgModel(e);
6963 return Te(t) && (t = n(e)), t
6964 }, this.$$ngModelSet = function(e, t) {
6965 Te(this.$$parsedNgModel(e)) ? r(e, {
6967 }) : this.$$parsedNgModelAssign(e, t)
6969 } else if (!this.$$parsedNgModel.assign) throw na("nonassign", "Expression '{0}' is non-assignable. Element: {1}", this.$$attr.ngModel, He(this.$$element))
6972 $isEmpty: function(e) {
6973 return we(e) || "" === e || null === e || e != e
6975 $$updateEmptyClasses: function(e) {
6976 this.$isEmpty(e) ? (this.$$animate.removeClass(this.$$element, ta), this.$$animate.addClass(this.$$element, ea)) : (this.$$animate.removeClass(this.$$element, ea), this.$$animate.addClass(this.$$element, ta))
6978 $setPristine: function() {
6979 this.$dirty = !1, this.$pristine = !0, this.$$animate.removeClass(this.$$element, Xo), this.$$animate.addClass(this.$$element, Zo)
6981 $setDirty: function() {
6982 this.$dirty = !0, this.$pristine = !1, this.$$animate.removeClass(this.$$element, Zo), this.$$animate.addClass(this.$$element, Xo), this.$$parentForm.$setDirty()
6984 $setUntouched: function() {
6985 this.$touched = !1, this.$untouched = !0, this.$$animate.setClass(this.$$element, Qo, Jo)
6987 $setTouched: function() {
6988 this.$touched = !0, this.$untouched = !1, this.$$animate.setClass(this.$$element, Jo, Qo)
6990 $rollbackViewValue: function() {
6991 this.$$timeout.cancel(this.$$pendingDebounce), this.$viewValue = this.$$lastCommittedViewValue, this.$render()
6993 $validate: function() {
6994 if (!S(this.$modelValue)) {
6995 var e = this.$$lastCommittedViewValue,
6996 t = this.$$rawModelValue,
6998 r = this.$modelValue,
6999 i = this.$options.getOption("allowInvalid"),
7001 this.$$runValidators(t, e, function(e) {
7002 i || n === e || (o.$modelValue = e ? t : void 0, o.$modelValue !== r && o.$$writeModelToScope())
7006 $$runValidators: function(r, i, t) {
7007 this.$$currentValidationRunId++;
7008 var o, a, s, n = this.$$currentValidationRunId,
7011 var e = l.$$parserName; {
7012 if (!we(l.$$parserValid)) return l.$$parserValid || (ve(l.$validators, function(e, t) {
7014 }), ve(l.$asyncValidators, function(e, t) {
7016 })), c(e, l.$$parserValid), l.$$parserValid;
7020 })() ? (o = !0, ve(l.$validators, function(e, t) {
7021 var n = Boolean(e(r, i));
7023 }), o || (ve(l.$asyncValidators, function(e, t) {
7025 }), 0) ? (a = [], s = !0, ve(l.$asyncValidators, function(e, t) {
7027 if (!T(n)) throw na("nopromise", "Expected asynchronous validator to return a promise but got '{0}' instead.", n);
7028 c(t, void 0), a.push(n.then(function() {
7033 }), a.length ? l.$$q.all(a).then(function() {
7035 }, _e) : e(!0)) : e(!1)) : e(!1);
7038 n === l.$$currentValidationRunId && l.$setValidity(e, t)
7042 n === l.$$currentValidationRunId && t(e)
7045 $commitViewValue: function() {
7046 var e = this.$viewValue;
7047 this.$$timeout.cancel(this.$$pendingDebounce), (this.$$lastCommittedViewValue !== e || "" === e && this.$$hasNativeValidators) && (this.$$updateEmptyClasses(e), this.$$lastCommittedViewValue = e, this.$pristine && this.$setDirty(), this.$$parseAndValidate())
7049 $$parseAndValidate: function() {
7050 var t = this.$$lastCommittedViewValue,
7052 if (this.$$parserValid = !we(t) || void 0, this.$setValidity(this.$$parserName, null), this.$$parserName = "parse", this.$$parserValid)
7053 for (var e = 0; e < this.$parsers.length; e++)
7054 if (we(t = this.$parsers[e](t))) {
7055 this.$$parserValid = !1;
7057 } S(this.$modelValue) && (this.$modelValue = this.$$ngModelGet(this.$$scope));
7058 var r = this.$modelValue,
7059 i = this.$options.getOption("allowInvalid");
7062 n.$modelValue !== r && n.$$writeModelToScope()
7064 this.$$rawModelValue = t, i && (this.$modelValue = t, o()), this.$$runValidators(t, this.$$lastCommittedViewValue, function(e) {
7065 i || (n.$modelValue = e ? t : void 0, o())
7068 $$writeModelToScope: function() {
7069 this.$$ngModelSet(this.$$scope, this.$modelValue), ve(this.$viewChangeListeners, function(e) {
7073 this.$$exceptionHandler(e)
7077 $setViewValue: function(e, t) {
7078 this.$viewValue = e, this.$options.getOption("updateOnDefault") && this.$$debounceViewValueCommit(t)
7080 $$debounceViewValueCommit: function(e) {
7081 var t = this.$options.getOption("debounce");
7082 E(t[e]) ? t = t[e] : E(t.default) && -1 === this.$options.getOption("updateOn").indexOf(e) ? t = t.default : E(t["*"]) && (t = t["*"]), this.$$timeout.cancel(this.$$pendingDebounce);
7084 0 < t ? this.$$pendingDebounce = this.$$timeout(function() {
7085 n.$commitViewValue()
7086 }, t) : this.$$rootScope.$$phase ? this.$commitViewValue() : this.$$scope.$apply(function() {
7087 n.$commitViewValue()
7090 $overrideModelOptions: function(e) {
7091 this.$options = this.$options.createChild(e), this.$$setUpdateOnEvents()
7093 $processModelValue: function() {
7094 var e = this.$$format();
7095 this.$viewValue !== e && (this.$$updateEmptyClasses(e), this.$viewValue = this.$$lastCommittedViewValue = e, this.$render(), this.$$runValidators(this.$modelValue, this.$viewValue, _e))
7097 $$format: function() {
7098 for (var e = this.$formatters, t = e.length, n = this.$modelValue; t--;) n = e[t](n);
7101 $$setModelValue: function(e) {
7102 this.$modelValue = this.$$rawModelValue = e, this.$$parserValid = void 0, this.$processModelValue()
7104 $$setUpdateOnEvents: function() {
7105 this.$$updateEvents && this.$$element.off(this.$$updateEvents, this.$$updateEventHandler), this.$$updateEvents = this.$options.getOption("updateOn"), this.$$updateEvents && this.$$element.on(this.$$updateEvents, this.$$updateEventHandler)
7107 $$updateEventHandler: function(e) {
7108 this.$$debounceViewValueCommit(e && e.type)
7112 set: function(e, t) {
7115 unset: function(e, t) {
7119 var ia, oa = ["$rootScope", function(a) {
7122 require: ["ngModel", "^?form", "^?ngModelOptions"],
7125 compile: function(e) {
7126 return e.addClass(Zo).addClass(Qo).addClass(Go), {
7127 pre: function(e, t, n, r) {
7129 o = r[1] || i.$$parentForm,
7131 a && (i.$options = a.$options), i.$$initGetterSetters(), o.$addControl(i), n.$observe("name", function(e) {
7132 i.$name !== e && i.$$parentForm.$$renameControl(i, e)
7133 }), e.$on("$destroy", function() {
7134 i.$$parentForm.$removeControl(i)
7137 post: function(e, t, n, r) {
7143 i.$$setUpdateOnEvents(), t.on("blur", function() {
7144 i.$touched || (a.$$phase ? e.$evalAsync(o) : e.$apply(o))
7151 aa = /(\s+|^)default(\s+|$)/;
7157 getOption: function(e) {
7158 return this.$$options[e]
7160 createChild: function(n) {
7162 return ve(n = be({}, n), function(e, t) {
7163 "$inherit" === e ? "*" === t ? r = !0 : (n[t] = this.$$options[t], "updateOn" === t && (n.updateOnDefault = this.$$options.updateOnDefault)) : "updateOn" === t && (n.updateOnDefault = !1, n[t] = Se(e.replace(aa, function() {
7164 return n.updateOnDefault = !0, " "
7166 }, this), r && (delete n["*"], ca(n, this.$$options)), ca(n, ia.$$options), new sa(n)
7170 updateOnDefault: !0,
7176 var la = function() {
7178 this.$$attrs = e, this.$$scope = t
7180 return e.$inject = ["$attrs", "$scope"], e.prototype = {
7181 $onInit: function() {
7182 var e = this.parentCtrl ? this.parentCtrl.$options : ia,
7183 t = this.$$scope.$eval(this.$$attrs.ngModelOptions);
7184 this.$options = e.createChild(t)
7190 parentCtrl: "?^^ngModelOptions"
7192 bindToController: !0,
7198 ve(e, function(e, t) {
7199 O(n[t]) || (n[t] = e)
7206 da = M("ngOptions"),
7207 fa = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+disable\s+when\s+([\s\S]+?))?\s+for\s+(?:([$\w][$\w]*)|(?:\(\s*([$\w][$\w]*)\s*,\s*([$\w][$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,
7208 ha = ["$compile", "$document", "$parse", function(g, v, C) {
7209 var b = de.document.createElement("option"),
7210 y = de.document.createElement("optgroup");
7214 require: ["select", "ngModel"],
7216 pre: function(e, t, n, r) {
7217 r[0].registerOption = _e
7219 post: function(e, a, t, n) {
7220 for (var s = n[0], l = n[1], c = t.multiple, r = 0, i = a.children(), o = i.length; r < o; r++)
7221 if ("" === i[r].value) {
7222 s.hasEmptyOption = !0, s.emptyOption = i.eq(r);
7225 var u, d = !!s.emptyOption;
7226 he(b.cloneNode(!1)).val("?");
7227 var f = function(e, t, f) {
7228 var d = e.match(fa);
7229 if (!d) throw da("iexp", "Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}", e, He(t));
7230 var n = d[5] || d[7],
7232 i = / as /.test(d[0]) && d[1],
7234 o = C(d[2] ? d[1] : n),
7237 m = h ? function(e, t) {
7242 g = function(e, t) {
7243 return m(e, $(e, t))
7245 v = C(d[2] || d[1]),
7250 $ = r ? function(e, t) {
7251 return s[r] = t, s[n] = e, s
7256 function w(e, t, n, r, i) {
7257 this.selectValue = e, this.viewValue = t, this.label = n, this.group = r, this.disabled = i
7262 if (!r && R(e)) t = e;
7264 for (var n in t = [], e) e.hasOwnProperty(n) && "$" !== n.charAt(0) && t.push(n);
7270 getWatchables: C(_, function(e) {
7271 for (var t = [], n = E(e = e || []), r = n.length, i = 0; i < r; i++) {
7272 var o = e === n ? i : n[i],
7276 if (t.push(l), d[2] || d[1]) {
7287 getOptions: function() {
7288 for (var e = [], t = {}, n = _(f) || [], r = E(n), i = r.length, o = 0; o < i; o++) {
7289 var a = n === r ? o : r[o],
7294 d = new w(u, c, v(f, l), b(f, l), y(f, l));
7300 getOptionFromViewValue: function(e) {
7303 getViewValueFromOption: function(e) {
7304 return h ? j(e.viewValue) : e.viewValue
7309 }(t.ngOptions, a, e),
7310 h = v[0].createDocumentFragment();
7313 var n, r, i = b.cloneNode(!1);
7314 t.appendChild(i), r = i, ((n = e).element = r).disabled = n.disabled, n.label !== r.label && (r.label = n.label, r.textContent = n.label), r.value = n.selectValue
7318 var t = u.getOptionFromViewValue(e),
7320 return n && !n.selected && (n.selected = !0), t
7322 s.generateUnknownOptionValue = function(e) {
7324 }, c ? (s.writeValue = function(e) {
7326 var t = e && e.map(m) || [];
7327 u.items.forEach(function(e) {
7328 e.element.selected && !H(t, e) && (e.element.selected = !1)
7331 }, s.readValue = function() {
7332 var e = a.val() || [],
7334 return ve(e, function(e) {
7335 var t = u.selectValueMap[e];
7336 t && !t.disabled && n.push(u.getViewValueFromOption(t))
7338 }, f.trackBy && e.$watchCollection(function() {
7339 if (ke(l.$viewValue)) return l.$viewValue.map(function(e) {
7340 return f.getTrackByValue(e)
7344 })) : (s.writeValue = function(e) {
7346 var t = a[0].options[a[0].selectedIndex],
7347 n = u.getOptionFromViewValue(e);
7348 t && t.removeAttribute("selected"), n ? (a[0].value !== n.selectValue && (s.removeUnknownOption(), a[0].value = n.selectValue, n.element.selected = !0), n.element.setAttribute("selected", "selected")) : s.selectUnknownOrEmptyOption(e)
7350 }, s.readValue = function() {
7351 var e = u.selectValueMap[a.val()];
7352 return e && !e.disabled ? (s.unselectEmptyOption(), s.removeUnknownOption(), u.getViewValueFromOption(e)) : null
7353 }, f.trackBy && e.$watch(function() {
7354 return f.getTrackByValue(l.$viewValue)
7357 })), d && (g(s.emptyOption)(e), a.prepend(s.emptyOption), s.emptyOption[0].nodeType === Ve ? (s.hasEmptyOption = !1, s.registerOption = function(e, t) {
7358 "" === t.val() && (s.hasEmptyOption = !0, s.emptyOption = t, s.emptyOption.removeClass("ng-scope"), l.$render(), t.on("$destroy", function() {
7359 var e = s.$isEmptyOptionSelected();
7360 s.hasEmptyOption = !1, s.emptyOption = void 0, e && l.$render()
7362 }) : s.emptyOption.removeClass("ng-scope")), e.$watchCollection(f.getWatchables, function() {
7363 var e = u && s.readValue();
7365 for (var t = u.items.length - 1; 0 <= t; t--) {
7367 O(n.group) ? Mt(n.element.parentNode) : Mt(n.element)
7371 if (u.items.forEach(function(e) {
7373 O(e.group) ? ((t = r[e.group]) || (t = y.cloneNode(!1), h.appendChild(t), t.label = null === e.group ? "null" : e.group, r[e.group] = t), p(e, t)) : p(e, h)
7374 }), a[0].appendChild(h), l.$render(), !l.$isEmpty(e)) {
7375 var i = s.readValue(),
7377 (o ? Ie(e, i) : e === i) || (l.$setViewValue(i), l.$render())
7384 pa = ["$locale", "$interpolate", "$log", function(p, m, g) {
7386 b = /^when(Minus)?(.+)$/;
7388 link: function(i, o, a) {
7390 l = a.$attr.when && o.attr(a.$attr.when),
7392 u = i.$eval(l) || {},
7394 t = m.startSymbol(),
7396 r = t + e + "-" + c + n,
7402 ve(a, function(e, t) {
7405 var r = (n[1] ? "-" : "") + me(n[2]);
7406 u[r] = o.attr(a.$attr[t])
7408 }), ve(u, function(e, t) {
7409 d[t] = m(e.replace(v, r))
7410 }), i.$watch(e, function(e) {
7411 var t = parseFloat(e),
7413 if (n || t in u || (t = p.pluralCat(t - c)), !(t === s || n && S(s))) {
7416 we(r) ? (null != e && g.debug("ngPluralize: no rule defined for '" + t + "' in " + l), f = _e, h()) : f = i.$watch(r, h), s = t
7423 ga = ["$parse", function(t) {
7427 compile: function(e, i) {
7430 s = a.assign || function() {
7431 throw ma("nonassign", 'Expression in ngRef="{0}" is non-assignable!', i.ngRef)
7433 return function(e, t, n) {
7435 if (n.hasOwnProperty("ngRefRead")) {
7436 if ("$element" === n.ngRefRead) r = t;
7437 else if (!(r = t.data("$" + n.ngRefRead + "Controller"))) throw ma("noctrl", 'The controller for ngRefRead="{0}" could not be found on ngRef="{1}"', n.ngRefRead, i.ngRef)
7438 } else r = t.data("$" + o + "Controller");
7439 s(e, r = r || t), t.on("$destroy", function() {
7440 a(e) === r && s(e, null)
7446 va = ["$parse", "$animate", "$compile", function(s, A, l) {
7447 var S = "$$NG_REMOVED",
7449 O = function(e, t, n, r, i, o, a) {
7450 e[n] = r, i && (e[i] = o), e.$index = t, e.$first = 0 === t, e.$last = t === a - 1, e.$middle = !(e.$first || e.$last), e.$odd = !(e.$even = 0 == (1 & t))
7452 N = function(e, t, n) {
7455 I = function(e, t) {
7461 transclude: "element",
7465 compile: function(e, t) {
7467 E = l.$$createComment("end ngRepeat", w),
7468 n = w.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);
7469 if (!n) throw D("iexp", "Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.", w);
7474 if (!(n = r.match(/^(?:(\s*[$\w]+)|\(\s*([$\w]+)\s*,\s*([$\w]+)\s*\))$/))) throw D("iidexp", "'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.", r);
7475 var k, x = n[3] || n[1],
7477 if (C && (!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(C) || /^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(C))) throw D("badident", "alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.", C);
7483 k = function(e, t, n, r) {
7484 return T && (M[T] = t), M[x] = n, M.$index = r, a(e, M)
7487 return function(b, y, e, t, _) {
7489 b.$watchCollection(i, function(e) {
7490 var r, t, n, i, o, a, s, l, c, u, d, f, h, p = y[0],
7492 if (C && (b[C] = e), R(e)) c = e, l = k || N;
7494 for (var g in l = k || I, c = [], e) pe.call(e, g) && "$" !== g.charAt(0) && c.push(g);
7495 for (i = c.length, d = new Array(i), r = 0; r < i; r++)
7496 if (o = e === c ? r : c[r], a = e[o], s = l(b, o, a, r), $[s]) u = $[s], delete $[s], m[s] = u, d[r] = u;
7498 if (m[s]) throw ve(d, function(e) {
7499 e && e.scope && ($[e.id] = e)
7500 }), D("dupes", "Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}", w, s, a);
7506 } for (var v in M && (M[x] = void 0), $) {
7507 if (f = ce((u = $[v]).clone), A.leave(f), f[0].parentNode)
7508 for (r = 0, t = f.length; r < t; r++) f[r][S] = !0;
7511 for (r = 0; r < i; r++)
7512 if (o = e === c ? r : c[r], a = e[o], (u = d[r]).scope) {
7514 (n = n.nextSibling) && n[S];);
7515 u.clone[0] !== n && A.move(ce(u.clone), null, p), p = (h = u).clone[h.clone.length - 1], O(u.scope, r, x, a, T, o, i)
7516 } else _(function(e, t) {
7518 var n = E.cloneNode(!1);
7519 e[e.length++] = n, A.enter(e, null, p), p = n, u.clone = e, m[u.id] = u, O(u.scope, r, x, a, T, o, i)
7528 ya = "ng-hide-animate",
7529 _a = ["$animate", function(r) {
7533 link: function(e, t, n) {
7534 e.$watch(n.ngShow, function(e) {
7535 r[e ? "removeClass" : "addClass"](t, ba, {
7542 $a = ["$animate", function(r) {
7546 link: function(e, t, n) {
7547 e.$watch(n.ngHide, function(e) {
7548 r[e ? "addClass" : "removeClass"](t, ba, {
7555 wa = Vi(function(e, n, t) {
7556 e.$watchCollection(t.ngStyle, function(e, t) {
7557 t && e !== t && ve(t, function(e, t) {
7562 Ea = ["$animate", "$compile", function(u, d) {
7564 require: "ngSwitch",
7565 controller: ["$scope", function() {
7568 link: function(e, t, n, i) {
7569 var r = n.ngSwitch || n.on,
7574 c = function(t, n) {
7575 return function(e) {
7576 !1 !== e && t.splice(n, 1)
7579 e.$watch(r, function(e) {
7580 for (var t, n; s.length;) u.cancel(s.pop());
7581 for (t = 0, n = l.length; t < n; ++t) {
7582 var r = ce(a[t].clone);
7583 l[t].$destroy(), (s[t] = u.leave(r)).done(c(s, t))
7585 a.length = 0, l.length = 0, (o = i.cases["!" + e] || i.cases["?"]) && ve(o, function(i) {
7586 i.transclude(function(e, t) {
7589 e[e.length++] = d.$$createComment("end ngSwitchWhen");
7593 a.push(r), u.enter(e, n.parent(), n)
7601 transclude: "element",
7603 require: "^ngSwitch",
7605 link: function(e, t, n, r, i) {
7606 ve(n.ngSwitchWhen.split(n.ngSwitchWhenSeparator).sort().filter(function(e, t, n) {
7607 return n[t - 1] !== e
7609 r.cases["!" + e] = r.cases["!" + e] || [], r.cases["!" + e].push({
7617 transclude: "element",
7619 require: "^ngSwitch",
7621 link: function(e, t, n, r, i) {
7622 r.cases["?"] = r.cases["?"] || [], r.cases["?"].push({
7628 xa = M("ngTransclude"),
7629 Ta = ["$compile", function(t) {
7632 compile: function(e) {
7633 var s = t(e.contents());
7635 function(e, n, t, r, i) {
7636 if (!i) throw xa("orphan", "Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}", He(n));
7637 t.ngTransclude === t.$attr.ngTransclude && (t.ngTransclude = "");
7638 var o = t.ngTransclude || t.ngTranscludeSlot;
7646 e.length && function(e) {
7647 for (var t = 0, n = e.length; t < n; t++) {
7649 if (r.nodeType !== Ue || r.nodeValue.trim()) return !0
7651 }(e) ? n.append(e) : (a(), t.$destroy())
7652 }, null, o), o && !i.isSlotFilled(o) && a()
7657 Ma = ["$templateCache", function(i) {
7661 compile: function(e, t) {
7662 if ("text/ng-template" === t.type) {
7676 e.prop("selected", t), e.attr("selected", t)
7678 var Da = ["$element", "$scope", function(i, t) {
7681 s.selectValueMap = {}, s.ngModelCtrl = Aa, s.multiple = !1, s.unknownOption = he(de.document.createElement("option")), s.hasEmptyOption = !1, s.emptyOption = void 0, s.renderUnknownOption = function(e) {
7682 var t = s.generateUnknownOptionValue(e);
7683 s.unknownOption.val(t), i.prepend(s.unknownOption), Sa(s.unknownOption, !0), i.val(t)
7684 }, s.updateUnknownOption = function(e) {
7685 var t = s.generateUnknownOptionValue(e);
7686 s.unknownOption.val(t), Sa(s.unknownOption, !0), i.val(t)
7687 }, s.generateUnknownOptionValue = function(e) {
7688 return "? " + jt(e) + " ?"
7689 }, s.removeUnknownOption = function() {
7690 s.unknownOption.parent() && s.unknownOption.remove()
7691 }, s.selectEmptyOption = function() {
7692 s.emptyOption && (i.val(""), Sa(s.emptyOption, !0))
7693 }, s.unselectEmptyOption = function() {
7694 s.hasEmptyOption && Sa(s.emptyOption, !1)
7695 }, t.$on("$destroy", function() {
7696 s.renderUnknownOption = _e
7697 }), s.readValue = function() {
7699 t = e in s.selectValueMap ? s.selectValueMap[e] : e;
7700 return s.hasOption(t) ? t : null
7701 }, s.writeValue = function(e) {
7702 var t = i[0].options[i[0].selectedIndex];
7703 if (t && Sa(he(t), !1), s.hasOption(e)) {
7704 s.removeUnknownOption();
7706 i.val(n in s.selectValueMap ? n : e);
7707 var r = i[0].options[i[0].selectedIndex];
7709 } else s.selectUnknownOrEmptyOption(e)
7710 }, s.addOption = function(e, t) {
7711 if (t[0].nodeType !== Ve) {
7712 le(e, '"option value"'), "" === e && (s.hasEmptyOption = !0, s.emptyOption = t);
7713 var n = r.get(e) || 0;
7714 r.set(e, n + 1), l()
7716 }, s.removeOption = function(e) {
7718 t && (1 === t ? (r.delete(e), "" === e && (s.hasEmptyOption = !1, s.emptyOption = void 0)) : r.set(e, t - 1))
7719 }, s.hasOption = function(e) {
7721 }, s.$hasEmptyOption = function() {
7722 return s.hasEmptyOption
7723 }, s.$isUnknownOptionSelected = function() {
7724 return i[0].options[0] === s.unknownOption[0]
7725 }, s.$isEmptyOptionSelected = function() {
7726 return s.hasEmptyOption && i[0].options[i[0].selectedIndex] === s.emptyOption[0]
7728 var e = !(s.selectUnknownOrEmptyOption = function(e) {
7729 null == e && s.emptyOption ? (s.removeUnknownOption(), s.selectEmptyOption()) : s.unknownOption.parent().length ? s.updateUnknownOption(e) : s.renderUnknownOption(e)
7733 e || (e = !0, t.$$postDigest(function() {
7734 e = !1, s.ngModelCtrl.$render()
7740 n || (n = !0, t.$$postDigest(function() {
7741 t.$$destroyed || (n = !1, s.ngModelCtrl.$setViewValue(s.readValue()), e && s.ngModelCtrl.$render())
7744 s.registerOption = function(e, r, i, t, n) {
7746 i.$attr.ngValue ? i.$observe("value", function(e) {
7747 var t, n = r.prop("selected");
7748 O(a) && (s.removeOption(o), delete s.selectValueMap[a], t = !0), a = jt(e), o = e, s.selectValueMap[a] = e, s.addOption(e, r), r.attr("value", a), t && n && c()
7749 }) : t ? i.$observe("value", function(e) {
7752 var n = r.prop("selected");
7753 O(o) && (s.removeOption(o), t = !0), o = e, s.addOption(e, r), t && n && c()
7754 }) : n ? e.$watch(n, function(e, t) {
7756 var n = r.prop("selected");
7757 t !== e && s.removeOption(t), s.addOption(e, r), t && n && c()
7758 }) : s.addOption(i.value, r);
7759 i.$observe("disabled", function(e) {
7760 ("true" === e || e && r.prop("selected")) && (s.multiple ? c(!0) : (s.ngModelCtrl.$setViewValue(null), s.ngModelCtrl.$render()))
7761 }), r.on("$destroy", function() {
7762 var e = s.readValue(),
7764 s.removeOption(t), l(), (s.multiple && e && -1 !== e.indexOf(t) || e === t) && c(!0)
7771 require: ["select", "?ngModel"],
7775 pre: function(e, t, n, r) {
7778 if (!o) return void(i.registerOption = _e);
7779 if (i.ngModelCtrl = o, t.on("change", function() {
7780 i.removeUnknownOption(), e.$apply(function() {
7781 o.$setViewValue(i.readValue())
7784 i.multiple = !0, i.readValue = function() {
7786 return ve(t.find("option"), function(e) {
7787 if (e.selected && !e.disabled) {
7789 n.push(t in i.selectValueMap ? i.selectValueMap[t] : t)
7792 }, i.writeValue = function(r) {
7793 ve(t.find("option"), function(e) {
7794 var t = !!r && (H(r, e.value) || H(r, i.selectValueMap[e.value])),
7796 t !== n && Sa(he(e), t)
7800 e.$watch(function() {
7801 s !== o.$viewValue || Ie(a, o.$viewValue) || (a = We(o.$viewValue), o.$render()), s = o.$viewValue
7802 }), o.$isEmpty = function(e) {
7803 return !e || 0 === e.length
7807 post: function(e, t, n, r) {
7811 i.$render = function() {
7812 o.writeValue(i.$viewValue)
7818 Na = ["$interpolate", function(n) {
7822 compile: function(e, t) {
7824 return O(t.ngValue) || (O(t.value) ? a = n(t.value, !0) : (s = n(e.text(), !0)) || t.$set("value", e.text())),
7826 var r = "$selectController",
7828 o = i.data(r) || i.parent().data(r);
7829 o && o.registerOption(e, t, n, a, s)
7834 Ia = ["$parse", function(o) {
7837 require: "?ngModel",
7838 link: function(e, t, n, r) {
7840 var i = n.hasOwnProperty("required") || o(n.ngRequired)(e);
7841 n.ngRequired || (n.required = !0), r.$validators.required = function(e, t) {
7842 return !i || !r.$isEmpty(t)
7843 }, n.$observe("required", function(e) {
7844 i !== e && (i = e, r.$validate())
7850 Ra = ["$parse", function(n) {
7853 require: "?ngModel",
7854 compile: function(e, t) {
7856 return t.ngPattern && (a = t.ngPattern, s = "/" === t.ngPattern.charAt(0) && o.test(t.ngPattern) ? function() {
7858 } : n(t.ngPattern)),
7859 function(e, n, t, r) {
7862 t.ngPattern ? i = s(e) : a = t.pattern;
7863 var o = ja(i, a, n);
7864 t.$observe("pattern", function(e) {
7866 o = ja(e, a, n), (t && t.toString()) !== (o && o.toString()) && r.$validate()
7867 }), r.$validators.pattern = function(e, t) {
7868 return r.$isEmpty(t) || we(o) || o.test(t)
7875 Pa = ["$parse", function(a) {
7878 require: "?ngModel",
7879 link: function(e, t, n, r) {
7881 var i = n.maxlength || a(n.ngMaxlength)(e),
7883 n.$observe("maxlength", function(e) {
7884 i !== e && (o = La(e), i = e, r.$validate())
7885 }), r.$validators.maxlength = function(e, t) {
7886 return o < 0 || r.$isEmpty(t) || t.length <= o
7892 Ha = ["$parse", function(a) {
7895 require: "?ngModel",
7896 link: function(e, t, n, r) {
7898 var i = n.minlength || a(n.ngMinlength)(e),
7900 n.$observe("minlength", function(e) {
7901 i !== e && (o = La(e) || -1, i = e, r.$validate())
7902 }), r.$validators.minlength = function(e, t) {
7903 return r.$isEmpty(t) || t.length >= o
7910 function ja(e, t, n) {
7912 if (Ce(e) && (e = new RegExp("^" + e + "$")), !e.test) throw M("ngPattern")("noregexp", "Expected {0} to be a RegExp but was {1}. Element: {2}", t, e, He(n));
7919 return S(t) ? -1 : t
7921 de.angular.bootstrap ? de.console && console.log("WARNING: Tried to load AngularJS more than once.") : (! function() {
7925 (t = we(e) ? de.jQuery : e ? de[e] : void 0) && t.fn.on ? be((he = t).fn, {
7927 isolateScope: St.isolateScope,
7928 controller: St.controller,
7929 injector: St.injector,
7930 inheritedData: St.inheritedData
7931 }) : he = ft, i = he.cleanData, he.cleanData = function(e) {
7932 for (var t, n, r = 0; null != (n = e[r]); r++)(t = (he._data(n) || {}).events) && t.$destroy && he(n).triggerHandler("$destroy");
7934 }, y.element = he, ae = !0
7937 errorHandlingConfig: e,
7965 reloadWithDebugInfo: re,
7968 $$encodeUriSegment: X,
7969 $$encodeUriQuery: Q,
7973 }), (v = function(e) {
7974 var d = M("$injector"),
7977 function t(e, t, n) {
7978 return e[t] || (e[t] = n())
7980 var n = t(e, "angular", Object);
7981 return n.$$minErr = n.$$minErr || M, t(n, "module", function() {
7983 return function(s, l, c) {
7985 return function(e, t) {
7986 if ("hasOwnProperty" === e) throw f("badname", "hasOwnProperty is not a valid {0} name", t)
7987 }(s, "module"), l && e.hasOwnProperty(s) && (e[s] = null), t(e, s, function() {
7988 if (!l) throw d("nomod", "Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.", s);
7992 n = r("$injector", "invoke", "push", e),
7999 if (!Ee(e)) throw f("aobj", "Argument '{0}' must be an object", "value");
8006 provider: i("$provide", "provider"),
8007 factory: i("$provide", "factory"),
8008 service: i("$provide", "service"),
8009 value: r("$provide", "value"),
8010 constant: r("$provide", "constant", "unshift"),
8011 decorator: i("$provide", "decorator", e),
8012 animation: i("$animateProvider", "register"),
8013 filter: i("$filterProvider", "register"),
8014 controller: i("$controllerProvider", "register"),
8015 directive: i("$compileProvider", "directive"),
8016 component: i("$compileProvider", "component"),
8019 return t.push(e), this
8022 return c && n(c), a;
8024 function r(e, t, n, r) {
8025 return r || (r = o),
8027 return r[n || "push"]([e, t, arguments]), a
8031 function i(n, r, i) {
8032 return i || (i = o),
8034 return t && Te(t) && (t.$$moduleName = s), i.push([n, r, arguments]), a
8040 }(de))("ng", ["ngLocale"], ["$provide", function(e) {
8043 }), e.provider("$compile", vn).directive({
8072 ngSwitchDefault: ka,
8091 }).directive(zi).directive(Fo), e.provider({
8097 $$AnimateRunner: cn,
8098 $$animateAsyncRun: ln,
8103 $$isDocumentHidden: Mn,
8104 $exceptionHandler: An,
8109 $$intervalFactory: Qn,
8111 $httpParamSerializer: jn,
8112 $httpParamSerializerJQLike: Ln,
8115 $jsonpCallbacks: Jn,
8125 $$taskTrackerFactory: ti,
8127 $templateRequest: ii,
8137 angularVersion: "1.7.9"
8138 }), y.module("ngLocale", [], ["$provide", function(e) {
8141 e.value("$locale", {
8143 AMPMS: ["AM", "PM"],
8144 DAY: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
8145 ERANAMES: ["Before Christ", "Anno Domini"],
8148 MONTH: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
8149 SHORTDAY: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
8150 SHORTMONTH: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
8151 STANDALONEMONTH: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
8152 WEEKENDRANGE: [5, 6],
8153 fullDate: "EEEE, MMMM d, y",
8154 longDate: "MMMM d, y",
8155 medium: "MMM d, y h:mm:ss a",
8156 mediumDate: "MMM d, y",
8157 mediumTime: "h:mm:ss a",
8158 short: "M/d/yy h:mm a",
8159 shortDate: "M/d/yy",
8190 pluralCat: function(e, t) {
8192 r = function(e, t) {
8194 void 0 === i && (i = Math.min((n = e, -1 == (r = (n += "").indexOf(".")) ? 0 : n.length - r - 1), 3));
8195 var o = Math.pow(10, i);
8201 return 1 == n && 0 == r.v ? i : o
8204 }]), he(function() {
8207 }(window), !window.angular.$$csp().noInlineStyle && window.angular.element(document.head).prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}</style>'),
8209 "object" == typeof exports && "undefined" != typeof module ? t(exports, require("angular")) : "function" == typeof define && define.amd ? define(["exports", "angular"], t) : t((e = e || self)["@uirouter/angularjs"] = {}, e.angular)
8210 }(this, function(m, e) {
8212 $r.$inject = ["state"];
8214 E = e && e.module ? e : t;
8217 var e = [].slice.apply(arguments, [1]),
8219 return function e(t) {
8220 return t.length >= r ? n.apply(null, t) : function() {
8221 return e(t.concat([].slice.apply(arguments)))
8230 for (var e = r, t = n[r].apply(this, arguments); e--;) t = n[e].call(this, t);
8236 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
8237 return n.apply(null, [].slice.call(arguments).reverse())
8239 var y = function(t) {
8240 return function(e) {
8244 v = c(function(e, t, n) {
8245 return n && n[e] === t
8248 return l.apply(null, e.split(".").map(y))
8252 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
8253 return !n.apply(null, e)
8259 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
8260 return n.apply(null, e) && r.apply(null, e)
8266 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
8267 return n.apply(null, e) || r.apply(null, e)
8270 var u = function(n) {
8271 return function(e) {
8272 return e.reduce(function(e, t) {
8278 return function(e) {
8279 return e.reduce(function(e, t) {
8285 return function(e) {
8286 return null != e && e.constructor === t || e instanceof t
8290 return function(e) {
8301 return function(e) {
8302 return e[t].apply(e, n)
8307 return function(e) {
8308 for (var t = 0; t < n.length; t++)
8309 if (n[t][0](e)) return n[t][1](e)
8312 var s = Object.prototype.toString,
8314 return function(e) {
8315 return typeof e === t
8328 return null !== e && "object" == typeof e
8332 return "[object Date]" === s.call(e)
8335 return "[object RegExp]" === s.call(e)
8339 if (S(e) && e.length) {
8340 var t = e.slice(0, -1),
8342 return !(t.filter(d(M)).length || n.filter(d(x)).length)
8346 var I = r(A, l(y("then"), x)),
8347 R = function(r, e) {
8348 return e.reduce(function(e, t) {
8349 return e[t] = (n = r + "." + t + "()", function() {
8350 throw new Error("No implementation for " + n + ". The framework specific code did not implement this method.")
8359 H = "object" == typeof self && self.self === self && self || "object" == typeof global && global.global === global && global || void 0,
8360 j = H.angular || {},
8361 L = j.fromJson || JSON.parse.bind(JSON),
8362 F = j.toJson || JSON.stringify.bind(JSON),
8363 q = j.forEach || function(t, n, e) {
8364 if (S(t)) return t.forEach(n, e);
8365 Object.keys(t).forEach(function(e) {
8369 U = Object.assign || Me,
8378 function W(t, r, n, e, i) {
8379 void 0 === i && (i = !1);
8380 var o = function(e) {
8381 return t()[e].bind(n())
8383 return (e = e || Object.keys(t())).reduce(function(e, t) {
8385 return e[t] = i ? (n = t, function() {
8386 return r[n] = o(n), r[n].apply(null, arguments)
8390 var Y = function(e, t) {
8391 return U(Object.create(e), t)
8396 return -1 !== e.indexOf(t)
8401 var n = e.indexOf(t);
8402 return 0 <= n && e.splice(n, 1), e
8409 var ee = function(t) {
8410 return t.slice().forEach(function(e) {
8411 "function" == typeof e && e(), Z(t, e)
8416 for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
8417 var r = U.apply(void 0, [{}].concat(t.reverse()));
8418 return U(r, ie(e || {}, Object.keys(r)))
8420 var ne = function(e, t) {
8426 for (var r in e.path) {
8427 if (e.path[r] !== t.path[r]) break;
8435 for (var r in e) - 1 !== t.indexOf(r) && (n[r] = e[r]);
8440 return Object.keys(n).filter(d(G(e))).reduce(function(e, t) {
8441 return e[t] = n[t], e
8452 i = t ? function(e) {
8454 } : function(e, t) {
8457 return q(e, function(e, t) {
8464 return q(e, function(e, t) {
8465 r || n(e, t) && (r = e)
8470 function ue(e, n, r) {
8471 return r = r || (S(e) ? [] : {}), q(e, function(e, t) {
8472 return r[t] = n(e, t)
8475 var de = function(t) {
8476 return Object.keys(t).map(function(e) {
8480 fe = function(e, t) {
8483 he = function(e, t) {
8486 pe = function(e, t) {
8489 me = function(e, t) {
8490 return S(t) ? e.concat(t.reduce(me, [])) : ge(e, t)
8496 var ve = function(e, t) {
8497 return G(e, t) ? e : ge(e, t)
8500 return e.reduce(pe, [])
8503 return e.reduce(me, [])
8509 return void 0 === r && (r = "assert failure"),
8512 if (!t) throw new Error(x(r) ? r(e) : r);
8516 var Ee = function(t) {
8517 return Object.keys(t).map(function(e) {
8523 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
8524 if (0 === e.length) return [];
8525 for (var n = e.reduce(function(e, t) {
8526 return Math.min(t.length, e)
8527 }, 9007199254740991), r = [], i = function(t) {
8533 r.push([e[0][t], e[1][t]]);
8536 r.push([e[0][t], e[1][t], e[2][t]]);
8539 r.push([e[0][t], e[1][t], e[2][t], e[3][t]]);
8542 r.push(e.map(function(e) {
8546 }, o = 0; o < n; o++) i(o);
8552 if (S(t) && (n = t[0], r = t[1]), !M(n)) throw new Error("invalid parameters to applyPairs");
8557 return e.length && e[e.length - 1] || void 0
8561 return t && Object.keys(t).forEach(function(e) {
8563 }), t || (t = {}), U(t, e)
8567 for (var t = 1; t < arguments.length; t++) {
8568 var n = arguments[t];
8570 for (var r = Object.keys(n), i = 0; i < r.length; i++) e[r[i]] = n[r[i]]
8576 if (e === t) return !0;
8577 if (null === e || null === t) return !1;
8578 if (e != e && t != t) return !0;
8580 if (n !== typeof t || "object" !== n) return !1;
8581 var r, i, o = [e, t];
8582 if (u(S)(o)) return i = t, (r = e).length === i.length && Ce(r, i).reduce(function(e, t) {
8583 return e && Ae(t[0], t[1])
8585 if (u(D)(o)) return e.getTime() === t.getTime();
8586 if (u(O)(o)) return e.toString() === t.toString();
8587 if (u(x)(o)) return !0;
8588 if ([x, S, D, O].map(f).reduce(function(e, t) {
8593 if (!Ae(e[s], t[s])) return !1;
8597 if (!a[s]) return !1;
8600 var Se, De = function(e) {
8601 return e.catch(function(e) {
8606 return De(P.$q.reject(e))
8610 this.text = e, this.glob = e.split(".");
8611 var t = this.text.split(".").map(function(e) {
8612 return "**" === e ? "(?:|(?:\\.[^.]*)*)" : "*" === e ? "\\.[^.]*" : "\\." + e
8614 this.regexp = new RegExp("^" + t + "$")
8616 return t.is = function(e) {
8617 return !!/[!,*]+/.exec(e)
8618 }, t.fromString = function(e) {
8619 return t.is(e) ? new t(e) : null
8620 }, t.prototype.matches = function(e) {
8621 return this.regexp.test("." + e)
8626 void 0 === e && (e = []), void 0 === t && (t = null), this._items = e, this._limit = t, this._evictListeners = [], this.onEvict = Q(this._evictListeners)
8628 return e.prototype.enqueue = function(e) {
8629 var t = this._items;
8630 return t.push(e), this._limit && t.length > this._limit && this.evict(), e
8631 }, e.prototype.evict = function() {
8632 var t = this._items.shift();
8633 return this._evictListeners.forEach(function(e) {
8636 }, e.prototype.dequeue = function() {
8637 if (this.size()) return this._items.splice(0, 1)[0]
8638 }, e.prototype.clear = function() {
8639 var e = this._items;
8640 return this._items = [], e
8641 }, e.prototype.size = function() {
8642 return this._items.length
8643 }, e.prototype.remove = function(e) {
8644 var t = this._items.indexOf(e);
8645 return -1 < t && this._items.splice(t, 1)[0]
8646 }, e.prototype.peekTail = function() {
8647 return this._items[this._items.length - 1]
8648 }, e.prototype.peekHead = function() {
8649 if (this.size()) return this._items[0]
8652 (Se = m.RejectType || (m.RejectType = {}))[Se.SUPERSEDED = 2] = "SUPERSEDED", Se[Se.ABORTED = 3] = "ABORTED", Se[Se.INVALID = 4] = "INVALID", Se[Se.IGNORED = 5] = "IGNORED", Se[Se.ERROR = 6] = "ERROR";
8655 function r(e, t, n) {
8656 this.$id = Re++, this.type = e, this.message = t, this.detail = n
8658 return r.isRejectionPromise = function(e) {
8659 return e && "function" == typeof e.then && h(r)(e._transitionRejection)
8660 }, r.superseded = function(e, t) {
8661 var n = new r(m.RejectType.SUPERSEDED, "The transition has been superseded by a different transition", e);
8662 return t && t.redirected && (n.redirected = !0), n
8663 }, r.redirected = function(e) {
8664 return r.superseded(e, {
8667 }, r.invalid = function(e) {
8668 return new r(m.RejectType.INVALID, "This transition is invalid", e)
8669 }, r.ignored = function(e) {
8670 return new r(m.RejectType.IGNORED, "The transition was ignored", e)
8671 }, r.aborted = function(e) {
8672 return new r(m.RejectType.ABORTED, "The transition has been aborted", e)
8673 }, r.errored = function(e) {
8674 return new r(m.RejectType.ERROR, "The transition errored", e)
8675 }, r.normalize = function(e) {
8676 return h(r)(e) ? e : r.errored(e)
8677 }, r.prototype.toString = function() {
8678 var e, t = (e = this.detail) && e.toString !== Object.prototype.toString ? e.toString() : Be(e);
8679 return "Transition Rejection($id: " + this.$id + " type: " + this.type + ", message: " + this.message + ", detail: " + t + ")"
8680 }, r.prototype.toPromise = function() {
8681 return U(Oe(this), {
8682 _transitionRejection: this
8688 return t.length <= e ? t : t.substr(0, e - 3) + "..."
8692 for (; t.length < e;) t += " ";
8697 return e.replace(/^([A-Z])/, function(e) {
8698 return e.toLowerCase()
8699 }).replace(/([A-Z])/g, function(e) {
8700 return "-" + e.toLowerCase()
8706 n = t.match(/^(function [^ ]+\([^)]*\))/),
8709 return i && r.match(/function \(/) ? "function " + i + r.substr(9) : r
8713 var t = S(e) ? e.slice(-1)[0] : e;
8714 return t && t.toString() || "undefined"
8716 var Ue = Pe.isRejectionPromise,
8718 [_, p("undefined")],
8720 [I, p("[Promise]")],
8722 return e._transitionRejection.toString()
8725 return A(e) && !S(e) && e.constructor !== Object && x(e.toString)
8738 if (-1 !== t.indexOf(e)) return "[circular ref]";
8743 return _(e) ? n(e) : JSON.stringify(e, function(e, t) {
8745 }).replace(/\\"/g, '"')
8747 var ze = function(n) {
8748 return function(e) {
8749 if (!e) return ["", ""];
8750 var t = e.indexOf(n);
8751 return -1 === t ? [e, ""] : [e.substr(0, t), e.substr(t + 1)]
8754 We = new RegExp("^(?:[a-z]+:)?//[^/]+/"),
8756 return e.replace(/\/[^/]*$/, "")
8762 return e ? e.replace(/^#/, "") : ""
8766 var t = new RegExp("(" + e + ")", "g");
8767 return function(e) {
8768 return e.split(t).filter(B)
8773 return M(xe(e)) && M(t) ? e.slice(0, -1).concat(xe(e) + t) : ge(e, t)
8777 if (!e) return "ui-view (defunct)";
8778 var t = e.creationContext ? e.creationContext.name || "(root)" : "(none)";
8779 return "[ui-view#" + e.id + " " + e.$type + ":" + e.fqn + " (" + e.name + "@" + t + ")]"
8783 return T(e) ? m.Category[e] : m.Category[m.Category[e]]
8785 var nt, rt = Function.prototype.bind.call(console.log, console),
8786 it = x(console.table) ? console.table.bind(console) : rt.bind(console);
8787 (nt = m.Category || (m.Category = {}))[nt.RESOLVE = 0] = "RESOLVE", nt[nt.TRANSITION = 1] = "TRANSITION", nt[nt.HOOK = 2] = "HOOK", nt[nt.UIVIEW = 3] = "UIVIEW", nt[nt.VIEWCONFIG = 4] = "VIEWCONFIG";
8789 at = C("router.$id"),
8791 return "Transition #" + ot(e) + "-" + at(e)
8795 this._enabled = {}, this.approximateDigests = 0
8797 return e.prototype._set = function(t, e) {
8799 e.length || (e = Object.keys(m.Category).map(function(e) {
8800 return parseInt(e, 10)
8801 }).filter(function(e) {
8803 }).map(function(e) {
8804 return m.Category[e]
8805 })), e.map(tt).forEach(function(e) {
8806 return n._enabled[e] = t
8808 }, e.prototype.enable = function() {
8809 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
8811 }, e.prototype.disable = function() {
8812 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
8814 }, e.prototype.enabled = function(e) {
8815 return !!this._enabled[tt(e)]
8816 }, e.prototype.traceTransitionStart = function(e) {
8817 this.enabled(m.Category.TRANSITION) && console.log(st(e) + ": Started -> " + Be(e))
8818 }, e.prototype.traceTransitionIgnored = function(e) {
8819 this.enabled(m.Category.TRANSITION) && console.log(st(e) + ": Ignored <> " + Be(e))
8820 }, e.prototype.traceHookInvocation = function(e, t, n) {
8821 if (this.enabled(m.Category.HOOK)) {
8822 var r = C("traceData.hookType")(n) || "internal",
8823 i = C("traceData.context.state.name")(n) || C("traceData.context")(n) || "unknown",
8824 o = Fe(e.registeredHook.callback);
8825 console.log(st(t) + ": Hook -> " + r + " context: " + i + ", " + He(200, o))
8827 }, e.prototype.traceHookResult = function(e, t, n) {
8828 this.enabled(m.Category.HOOK) && console.log(st(t) + ": <- Hook returned: " + He(200, Be(e)))
8829 }, e.prototype.traceResolvePath = function(e, t, n) {
8830 this.enabled(m.Category.RESOLVE) && console.log(st(n) + ": Resolving " + e + " (" + t + ")")
8831 }, e.prototype.traceResolvableResolved = function(e, t) {
8832 this.enabled(m.Category.RESOLVE) && console.log(st(t) + ": <- Resolved " + e + " to: " + He(200, Be(e.data)))
8833 }, e.prototype.traceError = function(e, t) {
8834 this.enabled(m.Category.TRANSITION) && console.log(st(t) + ": <- Rejected " + Be(t) + ", reason: " + e)
8835 }, e.prototype.traceSuccess = function(e, t) {
8836 this.enabled(m.Category.TRANSITION) && console.log(st(t) + ": <- Success " + Be(t) + ", final state: " + e.name)
8837 }, e.prototype.traceUIViewEvent = function(e, t, n) {
8838 void 0 === n && (n = ""), this.enabled(m.Category.UIVIEW) && console.log("ui-view: " + je(30, e) + " " + et(t) + n)
8839 }, e.prototype.traceUIViewConfigUpdated = function(e, t) {
8840 this.enabled(m.Category.UIVIEW) && this.traceUIViewEvent("Updating", e, " with ViewConfig from context='" + t + "'")
8841 }, e.prototype.traceUIViewFill = function(e, t) {
8842 this.enabled(m.Category.UIVIEW) && this.traceUIViewEvent("Fill", e, " with: " + He(200, t))
8843 }, e.prototype.traceViewSync = function(e) {
8844 if (this.enabled(m.Category.VIEWCONFIG)) {
8845 var a = "uiview component fqn",
8846 t = e.map(function(e) {
8847 var t, n = e.uiView,
8850 o = r && r.viewDecl.$context.name + ": (" + r.viewDecl.$name + ")";
8851 return (t = {})[a] = i, t["view config state (view name)"] = o, t
8852 }).sort(function(e, t) {
8853 return (e[a] || "").localeCompare(t[a] || "")
8857 }, e.prototype.traceViewServiceEvent = function(e, t) {
8859 this.enabled(m.Category.VIEWCONFIG) && console.log("VIEWCONFIG: " + e + " " + (r = (n = t).viewDecl, i = r.$context.name || "(root)", "[View#" + n.$id + " from '" + i + "' state]: target ui-view: '" + r.$uiViewName + "@" + r.$uiViewContextAnchor + "'"))
8860 }, e.prototype.traceViewServiceUIViewEvent = function(e, t) {
8861 this.enabled(m.Category.VIEWCONFIG) && console.log("VIEWCONFIG: " + e + " " + et(t))
8867 this.pattern = /.*/, this.inherit = !0, U(this, e)
8869 return e.prototype.is = function(e, t) {
8871 }, e.prototype.encode = function(e, t) {
8873 }, e.prototype.decode = function(e, t) {
8875 }, e.prototype.equals = function(e, t) {
8877 }, e.prototype.$subPattern = function() {
8878 var e = this.pattern.toString();
8879 return e.substr(1, e.length - 2)
8880 }, e.prototype.toString = function() {
8881 return "{ParamType:" + this.name + "}"
8882 }, e.prototype.$normalize = function(e) {
8883 return this.is(e) ? e : this.decode(e)
8884 }, e.prototype.$asArray = function(e, t) {
8885 if (!e) return this;
8886 if ("auto" === e && !t) throw new Error("'auto' array mode is for query parameters only");
8887 return new dt(this, e)
8895 return S(e) ? e : k(e) ? [e] : []
8899 return function(e) {
8900 if (S(e) && 0 === e.length) return e;
8901 var t = ue(a(e), n);
8902 return !0 === r ? 0 === se(t, function(e) {
8904 }).length : function(e) {
8909 return "auto" === i ? e[0] : e;
8918 return function(e, t) {
8921 if (n.length !== r.length) return !1;
8922 for (var i = 0; i < n.length; i++)
8923 if (!o(n[i], r[i])) return !1;
8926 } ["encode", "decode", "equals", "$normalize"].forEach(function(e) {
8927 var t = r[e].bind(r),
8928 n = "equals" === e ? l : s;
8936 is: s(r.is.bind(r), !0),
8940 var ft, ht = Object.prototype.hasOwnProperty,
8942 return 0 === ["value", "type", "squash", "array", "dynamic"].filter(ht.bind(e || {})).length
8945 function mt(e, t, n) {
8946 var r = !1 === n.reloadOnSearch && t === m.DefType.SEARCH || void 0,
8947 i = le([n.dynamic, r], k),
8957 } : e, t.__cacheable = !0;
8958 var n = N(e.value) ? e.value : t;
8962 }(n && n.params && n.params[e]);
8964 }(ft = m.DefType || (m.DefType = {}))[ft.PATH = 0] = "PATH", ft[ft.SEARCH = 1] = "SEARCH", ft[ft.CONFIG = 2] = "CONFIG";
8965 var gt, vt = function() {
8966 function r(e, t, n, r, i) {
8967 var o = mt(e, n, i);
8968 t = function(e, t, n, r, i) {
8969 if (e.type && t && "string" !== t.name) throw new Error("Param '" + r + "' has two type configurations.");
8970 if (e.type && t && "string" === t.name && i.type(e.type)) return i.type(e.type);
8972 if (e.type) return e.type instanceof ut ? e.type : i.type(e.type);
8973 var o = n === m.DefType.CONFIG ? "any" : n === m.DefType.PATH ? "path" : n === m.DefType.SEARCH ? "query" : "string";
8975 }(o, t, n, e, r.paramTypes);
8976 var a, s, l = (a = {
8977 array: n === m.DefType.SEARCH && "auto"
8978 }, s = e.match(/\[\]$/) ? {
8980 } : {}, U(a, s, o).array);
8981 t = l ? t.$asArray(l, n === m.DefType.SEARCH) : t;
8982 var c = void 0 !== o.value || n === m.DefType.SEARCH,
8983 u = k(o.dynamic) ? !!o.dynamic : !!t.dynamic,
8984 d = k(o.raw) ? !!o.raw : !!t.raw,
8985 f = function(e, t, n) {
8987 if (!t || !1 === r) return !1;
8988 if (!k(r) || null == r) return n;
8989 if (!0 === r || M(r)) return r;
8990 throw new Error("Invalid squash policy: '" + r + "'. Valid policies: false, true, or arbitrary string")
8991 }(o, c, r.defaultSquashPolicy()),
8992 h = function(e, t, n, r) {
8995 to: n || t ? void 0 : ""
8998 to: n || t ? void 0 : ""
9000 o = S(e.replace) ? e.replace : [];
9005 var a = ue(o, y("from"));
9006 return se(i, function(e) {
9007 return -1 === a.indexOf(e.from)
9010 p = k(o.inherit) ? !!o.inherit : !!t.inherit;
9025 return r.values = function(e, t) {
9026 void 0 === t && (t = {});
9027 for (var n = {}, r = 0, i = e; r < i.length; r++) {
9029 n[o.id] = o.value(t[o.id])
9032 }, r.changed = function(e, t, n) {
9033 return void 0 === t && (t = {}), void 0 === n && (n = {}), e.filter(function(e) {
9034 return !e.type.equals(t[e.id], n[e.id])
9036 }, r.equals = function(e, t, n) {
9037 return void 0 === t && (t = {}), void 0 === n && (n = {}), 0 === r.changed(e, t, n).length
9038 }, r.validates = function(e, t) {
9039 return void 0 === t && (t = {}), e.map(function(e) {
9040 return e.validates(t[e.id])
9042 }, r.prototype.isDefaultValue = function(e) {
9043 return this.isOptional && this.type.equals(this.value(), e)
9044 }, r.prototype.value = function(e) {
9046 return e = function(e) {
9047 for (var t = 0, n = i.replace; t < n.length; t++) {
9049 if (r.from === e) return r.to
9052 }(e), _(e) ? function() {
9053 if (i._defaultValueCache) return i._defaultValueCache.defaultValue;
9054 if (!P.$injector) throw new Error("Injectable functions cannot be called at configuration time");
9055 var e = P.$injector.invoke(i.config.$$fn);
9056 if (null != e && !i.type.is(e)) throw new Error("Default value (" + e + ") for parameter '" + i.id + "' is not an instance of ParamType (" + i.type.name + ")");
9057 return i.config.$$fn.__cacheable && (i._defaultValueCache = {
9060 }() : this.type.$normalize(e)
9061 }, r.prototype.isSearch = function() {
9062 return this.location === m.DefType.SEARCH
9063 }, r.prototype.validates = function(e) {
9064 if ((_(e) || null === e) && this.isOptional) return !0;
9065 var t = this.type.$normalize(e);
9066 if (!this.type.is(t)) return !1;
9067 var n = this.type.encode(t);
9068 return !(M(n) && !this.type.pattern.exec(n))
9069 }, r.prototype.toString = function() {
9070 return "{Param:" + this.id + " " + this.type + " squash: '" + this.squash + "' optional: " + this.isOptional + "}"
9075 this.enqueue = !0, this.typeQueue = [], this.defaultTypes = ie(e.prototype, ["hash", "string", "query", "path", "int", "bool", "date", "json", "any"]);
9076 this.types = Y(ue(this.defaultTypes, function(e, t) {
9082 return e.prototype.dispose = function() {
9084 }, e.prototype.type = function(e, t, n) {
9085 if (!k(t)) return this.types[e];
9086 if (this.types.hasOwnProperty(e)) throw new Error("A type named '" + e + "' has already been defined.");
9087 return this.types[e] = new ut(U({
9089 }, t)), n && (this.typeQueue.push({
9092 }), this.enqueue || this._flushTypeQueue()), this
9093 }, e.prototype._flushTypeQueue = function() {
9094 for (; this.typeQueue.length;) {
9095 var e = this.typeQueue.shift();
9096 if (e.pattern) throw new Error("You cannot override a type's .pattern at runtime.");
9097 U(this.types[e.name], P.$injector.invoke(e.def))
9102 var t = function(e) {
9103 return null != e ? e.toString() : e
9110 equals: function(e, t) {
9115 }, U(bt.prototype, {
9125 decode: function(e) {
9126 return parseInt(e, 10)
9129 return !w(e) && this.decode(e.toString()) === e
9134 encode: function(e) {
9137 decode: function(e) {
9138 return 0 !== parseInt(e, 10)
9144 encode: function(e) {
9145 return this.is(e) ? [e.getFullYear(), ("0" + (e.getMonth() + 1)).slice(-2), ("0" + e.getDate()).slice(-2)].join("-") : void 0
9147 decode: function(e) {
9148 if (this.is(e)) return e;
9149 var t = this.capture.exec(e);
9150 return t ? new Date(t[1], t[2] - 1, t[3]) : void 0
9153 return e instanceof Date && !isNaN(e.valueOf())
9155 equals: function(n, r) {
9156 return ["getFullYear", "getMonth", "getDate"].reduce(function(e, t) {
9157 return e && n[t]() === r[t]()
9160 pattern: /[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,
9161 capture: /([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/
9179 var yt = function() {
9181 void 0 === e && (e = {}), U(this, e)
9183 return e.prototype.$inherit = function(e, t, n) {
9184 var r, i = re(t, n),
9188 if (i[s] && i[s].params && (r = Object.keys(i[s].params)).length)
9189 for (var l in r) 0 <= a.indexOf(r[l]) || (a.push(r[l]), o[r[l]] = this[r[l]]);
9195 if (e instanceof r) {
9197 this.state = t.state, this.paramSchema = t.paramSchema.slice(), this.paramValues = U({}, t.paramValues), this.resolvables = t.resolvables.slice(), this.views = t.views && t.views.slice()
9200 this.state = n, this.paramSchema = n.parameters({
9202 }), this.paramValues = {}, this.resolvables = n.resolvables.map(function(e) {
9207 return r.prototype.clone = function() {
9209 }, r.prototype.applyRawParams = function(r) {
9210 return this.paramValues = this.paramSchema.reduce(function(e, t) {
9211 return ke(e, [(n = t).id, n.value(r[n.id])]);
9214 }, r.prototype.parameter = function(e) {
9215 return le(this.paramSchema, v("id", e))
9216 }, r.prototype.equals = function(e, t) {
9217 var n = this.diff(e, t);
9218 return n && 0 === n.length
9219 }, r.prototype.diff = function(e, t) {
9220 if (this.state !== e.state) return !1;
9221 var n = t ? t(this) : this.paramSchema;
9222 return vt.changed(n, this.paramValues, e.paramValues)
9223 }, r.clone = function(e) {
9228 function r(e, t, n, r) {
9229 this._stateRegistry = e, this._identifier = t, this._identifier = t, this._params = U({}, n || {}), this._options = U({}, r || {}), this._definition = e.matcher.find(t, this._options.relative)
9231 return r.prototype.name = function() {
9232 return this._definition && this._definition.name || this._identifier
9233 }, r.prototype.identifier = function() {
9234 return this._identifier
9235 }, r.prototype.params = function() {
9237 }, r.prototype.$state = function() {
9238 return this._definition
9239 }, r.prototype.state = function() {
9240 return this._definition && this._definition.self
9241 }, r.prototype.options = function() {
9242 return this._options
9243 }, r.prototype.exists = function() {
9244 return !(!this._definition || !this._definition.self)
9245 }, r.prototype.valid = function() {
9246 return !this.error()
9247 }, r.prototype.error = function() {
9248 var e = this.options().relative;
9249 if (this._definition || !e) return this._definition ? this._definition.self ? void 0 : "State '" + this.name() + "' has an invalid definition" : "No such state '" + this.name() + "'";
9250 var t = e.name ? e.name : e;
9251 return "Could not resolve '" + this.name() + "' from state '" + t + "'"
9252 }, r.prototype.toString = function() {
9253 return "'" + this.name() + "'" + Be(this.params())
9254 }, r.prototype.withState = function(e) {
9255 return new r(this._stateRegistry, e, this._params, this._options)
9256 }, r.prototype.withParams = function(e, t) {
9257 void 0 === t && (t = !1);
9258 var n = t ? e : U({}, this._params, e);
9259 return new r(this._stateRegistry, this._identifier, n, this._options)
9260 }, r.prototype.withOptions = function(e, t) {
9261 void 0 === t && (t = !1);
9262 var n = t ? e : U({}, this._options, e);
9263 return new r(this._stateRegistry, this._identifier, this._params, n)
9264 }, r.isDef = function(e) {
9265 return e && e.state && (M(e.state) || M(e.state.name))
9270 return f.makeTargetState = function(e, t) {
9271 var n = xe(t).state;
9272 return new $t(e, n, t.map(y("paramValues")).reduce(ne, {}), {})
9273 }, f.buildPath = function(e) {
9275 return e.$state().path.map(function(e) {
9276 return new _t(e).applyRawParams(t)
9278 }, f.buildToPath = function(e, t) {
9279 var n = f.buildPath(t);
9280 return t.options().inherit ? f.inheritParams(e, n, Object.keys(t.params())) : n
9281 }, f.applyViewConfigs = function(i, o, t) {
9282 o.filter(function(e) {
9283 return G(t, e.state)
9284 }).forEach(function(t) {
9285 var e = de(t.state.views || {}),
9286 n = f.subPath(o, function(e) {
9289 r = e.map(function(e) {
9290 return i.createViewConfig(n, e)
9292 t.views = r.reduce(pe, [])
9294 }, f.inheritParams = function(l, e, c) {
9295 void 0 === c && (c = []);
9296 var u = l.map(function(e) {
9297 return e.paramSchema
9298 }).reduce(pe, []).filter(function(e) {
9301 return e.map(function(e) {
9302 var t = U({}, e && e.paramValues),
9305 var r, i, o, a = oe((r = l, i = e.state, o = le(r, v("state", i)), U({}, o && o.paramValues) || {}), u),
9307 return new _t(e.state).applyRawParams(s)
9309 }, f.treeChanges = function(e, r, t) {
9310 for (var n, i, o, a, s, l, c = Math.min(e.length, r.length), u = 0; u < c && e[u].state !== t && (n = e[u], i = r[u], n.equals(i, f.nonDynamicParams));) u++;
9311 a = (o = e).slice(0, u), s = o.slice(u);
9312 var d = a.map(function(e, t) {
9314 return n.paramValues = r[t].paramValues, n
9316 return l = r.slice(u), {
9320 retainedWithToParams: d,
9324 }, f.matching = function(e, t, i) {
9326 return Ce(e, t).reduce(function(e, t) {
9329 return (o = o || !n.equals(r, i)) ? e : e.concat(n)
9331 }, f.equals = function(e, t, n) {
9332 return e.length === t.length && f.matching(e, t, n).length === e.length
9333 }, f.subPath = function(e, t) {
9336 return -1 === r ? void 0 : e.slice(0, r + 1)
9337 }, f.nonDynamicParams = function(e) {
9338 return e.state.parameters({
9340 }).filter(function(e) {
9343 }, f.paramValues = function(e) {
9344 return e.reduce(function(e, t) {
9345 return U(e, t.paramValues)
9365 function a(e, t, n, r, i) {
9366 if (this.resolved = !1, this.promise = void 0, e instanceof a) U(this, e);
9368 if (w(e)) throw new Error("new Resolvable(): token argument is required");
9369 if (!x(t)) throw new Error("new Resolvable(): resolveFn argument must be a function");
9370 this.token = e, this.policy = r, this.resolveFn = t, this.deps = n || [], this.data = i, this.resolved = void 0 !== i, this.promise = this.resolved ? P.$q.when(this.data) : void 0
9371 } else if (A(e) && e.token && (e.hasOwnProperty("resolveFn") || e.hasOwnProperty("data"))) {
9373 return new a(o.token, o.resolveFn, o.deps, o.policy, o.data)
9376 return a.prototype.getPolicy = function(e) {
9377 var t = this.policy || {},
9378 n = e && e.resolvePolicy || {};
9380 when: t.when || n.when || Ct.when,
9381 async: t.async || n.async || Ct.async
9383 }, a.prototype.resolve = function(t, n) {
9386 i = t.findNode(this),
9388 a = this.getPolicy(o).async,
9390 return this.promise = e.when().then(function() {
9391 return e.all(t.getDependencies(r).map(function(e) {
9394 }).then(function(e) {
9395 return r.resolveFn.apply(null, e)
9396 }).then(s).then(function(e) {
9397 return r.data = e, r.resolved = !0, r.resolveFn = null, ct.traceResolvableResolved(r, n), r.data
9399 }, a.prototype.get = function(e, t) {
9400 return this.promise || this.resolve(e, t)
9401 }, a.prototype.toString = function() {
9402 return "Resolvable(token: " + Be(this.token) + ", requires: [" + this.deps.map(Be) + "])"
9403 }, a.prototype.clone = function() {
9405 }, a.fromData = function(e, t) {
9406 return new a(e, function() {
9412 Tt = [xt.EAGER, xt.LAZY],
9414 At = "Native Injector",
9419 return e.prototype.getTokens = function() {
9420 return this._path.reduce(function(e, t) {
9421 return e.concat(t.resolvables.map(function(e) {
9424 }, []).reduce(ve, [])
9425 }, e.prototype.getResolvable = function(t) {
9426 return xe(this._path.map(function(e) {
9427 return e.resolvables
9428 }).reduce(pe, []).filter(function(e) {
9429 return e.token === t
9431 }, e.prototype.getPolicy = function(e) {
9432 var t = this.findNode(e);
9433 return e.getPolicy(t.state)
9434 }, e.prototype.subContext = function(t) {
9435 return new e(wt.subPath(this._path, function(e) {
9436 return e.state === t
9438 }, e.prototype.addResolvables = function(e, t) {
9439 var n = le(this._path, v("state", t)),
9440 r = e.map(function(e) {
9443 n.resolvables = n.resolvables.filter(function(e) {
9444 return -1 === r.indexOf(e.token)
9446 }, e.prototype.resolvePath = function(e, s) {
9448 void 0 === e && (e = "LAZY");
9449 var c = (G(Tt, e) ? e : "LAZY") === Et.when.EAGER ? Mt : Tt;
9450 ct.traceResolvePath(this._path, e, s);
9451 var u = function(t, n) {
9452 return function(e) {
9453 return G(t, l.getPolicy(e)[n])
9456 t = this._path.reduce(function(e, t) {
9457 var n = t.resolvables.filter(u(c, "when")),
9458 r = n.filter(u(["NOWAIT"], "async")),
9459 i = n.filter(d(u(["NOWAIT"], "async"))),
9460 o = l.subContext(t.state),
9462 return t.get(o, s).then(function(e) {
9469 return r.forEach(a), e.concat(i.map(a))
9472 }, e.prototype.injector = function() {
9473 return this._injector || (this._injector = new Dt(this))
9474 }, e.prototype.findNode = function(t) {
9475 return le(this._path, function(e) {
9476 return G(e.resolvables, t)
9478 }, e.prototype.getDependencies = function(t) {
9480 n = this.findNode(t),
9481 i = (wt.subPath(this._path, function(e) {
9483 }) || this._path).reduce(function(e, t) {
9484 return e.concat(t.resolvables)
9485 }, []).filter(function(e) {
9488 return t.deps.map(function(t) {
9489 var e = i.filter(function(e) {
9490 return e.token === t
9492 if (e.length) return xe(e);
9493 var n = r.injector().getNative(t);
9494 if (_(n)) throw new Error("Could not find Dependency Injection token: " + Be(t));
9495 return new kt(t, function() {
9503 this.context = e, this.native = this.get(At) || P.$injector
9505 return e.prototype.get = function(e) {
9506 var t = this.context.getResolvable(e);
9508 if ("NOWAIT" === this.context.getPolicy(t).async) return t.get(this.context);
9509 if (!t.resolved) throw new Error("Resolvable async .get() not complete:" + Be(t.token));
9512 return this.getNative(e)
9513 }, e.prototype.getAsync = function(e) {
9514 var t = this.context.getResolvable(e);
9515 return t ? t.get(this.context) : P.$q.when(this.native.get(e))
9516 }, e.prototype.getNative = function(e) {
9517 return this.native && this.native.get(e)
9526 return e.self.$$state = function() {
9532 return e.parent && e.parent.data && (e.data = e.self.data = Y(e.parent.data, e.data)), e.data
9534 var Rt = function(a, s) {
9535 return function(e) {
9537 if (t && t.url && t.name && t.name.match(/\.\*\*$/)) {
9539 Te(t, n), n.url += "{remainder:any}", t = n
9543 if (!M(e)) return !1;
9544 var t = "^" === e.charAt(0);
9546 val: t ? e.substring(1) : e,
9550 o = i ? a.compile(i.val, {
9553 if (!o) return null;
9554 if (!a.isMatcher(o)) throw new Error("Invalid url '" + o + "' in state '" + e + "'");
9555 return i && i.root ? o : (r && r.navigable || s()).url.append(o)
9560 return e.parent ? e.parent.path.concat(e) : [e]
9564 var t = e.parent ? U({}, e.parent.includes) : {};
9565 return t[e.name] = !0, t
9569 var t, n, r = function(e) {
9570 return e.provide || e.token
9573 [y("resolveFn"), function(e) {
9574 return new kt(r(e), e.resolveFn, e.deps, e.policy)
9576 [y("useFactory"), function(e) {
9577 return new kt(r(e), e.useFactory, e.deps || e.dependencies, e.policy)
9579 [y("useClass"), function(e) {
9580 return new kt(r(e), function() {
9581 return new e.useClass
9584 [y("useValue"), function(e) {
9585 return new kt(r(e), function() {
9587 }, [], e.policy, e.useValue)
9589 [y("useExisting"), function(e) {
9590 return new kt(r(e), B, [e.useExisting], e.policy)
9594 [l(y("val"), M), function(e) {
9595 return new kt(e.token, B, [e.val], e.policy)
9597 [l(y("val"), S), function(e) {
9598 return new kt(e.token, xe(e.val), e.val.slice(0, -1), e.policy)
9600 [l(y("val"), x), function(e) {
9601 return new kt(e.token, e.val, (t = e.val, n = P.$injector, t.$inject || n && n.annotate(t, n.strictDi) || "deferred"), e.policy);
9606 [h(kt), function(e) {
9610 return !(!e.token || !e.resolveFn)
9613 return !(!e.provide && !e.token || !(e.useValue || e.useFactory || e.useExisting || e.useClass))
9616 return !!(e && e.val && (M(e.val) || S(e.val) || x(e.val)))
9618 [p(!0), function(e) {
9619 throw new Error("Invalid resolve value: " + Be(e))
9623 return (S(s) ? s : (t = s, n = e.resolvePolicy || {}, Object.keys(t || {}).map(function(e) {
9632 var Lt, Ft, qt = function() {
9640 return "" === e.name
9645 parent: [function(e) {
9646 return a(e) ? null : t.find(i.parentName(e)) || o()
9650 navigable: [(n = a, function(e) {
9651 return !n(e) && e.url ? e : e.parent ? e.parent.navigable : null
9653 params: [(r = e.paramFactory, function(n) {
9654 var e = n.url && n.url.parameters({
9657 t = de(ce(oe(n.params || {}, e.map(y("id"))), function(e, t) {
9658 return r.fromConfig(t, null, n.self)
9660 return e.concat(t).map(function(e) {
9670 return e.prototype.builder = function(e, t) {
9671 var n = this.builders,
9673 return M(e) && !k(t) ? 1 < r.length ? r : r[0] : M(e) && x(t) ? (n[e] = r, n[e].push(t), function() {
9674 return n[e].splice(n[e].indexOf(t, 1)) && null
9676 }, e.prototype.build = function(e) {
9677 var t = this.matcher,
9679 r = this.parentName(e);
9680 if (r && !t.find(r, void 0, !1)) return null;
9682 if (n.hasOwnProperty(i)) {
9683 var o = n[i].reduce(function(t, n) {
9684 return function(e) {
9690 }, e.prototype.parentName = function(e) {
9691 var t = e.name || "",
9693 if ("**" === n.pop() && n.pop(), n.length) {
9694 if (e.parent) throw new Error("States that specify the 'parent:' property should not have a '.' in their name (" + t + ")");
9697 return e.parent ? M(e.parent) ? e.parent : e.parent.name : ""
9698 }, e.prototype.name = function(e) {
9700 if (-1 !== t.indexOf(".") || !e.parent) return t;
9701 var n = M(e.parent) ? e.parent : e.parent.name;
9702 return n ? n + "." + t : t
9707 return n.create(e || {})
9709 return n.create = function(e) {
9710 e = n.isStateClass(e) ? new e : e;
9711 var t = Y(Y(e, n.prototype));
9712 return e.$$state = function() {
9714 }, t.self = e, t.__stateObjectCache = {
9715 nameGlob: Ne.fromString(t.name)
9717 }, n.prototype.is = function(e) {
9718 return this === e || this.self === e || this.fqn() === e
9719 }, n.prototype.fqn = function() {
9720 if (!(this.parent && this.parent instanceof this.constructor)) return this.name;
9721 var e = this.parent.fqn();
9722 return e ? e + "." + this.name : this.name
9723 }, n.prototype.root = function() {
9724 return this.parent && this.parent.root() || this
9725 }, n.prototype.parameters = function(t) {
9726 return ((t = te(t, {
9729 })).inherit && this.parent && this.parent.parameters() || []).concat(de(this.params)).filter(function(e) {
9730 return !t.matchingKeys || t.matchingKeys.hasOwnProperty(e.id)
9732 }, n.prototype.parameter = function(e, t) {
9733 return void 0 === t && (t = {}), this.url && this.url.parameter(e, t) || le(de(this.params), v("id", e)) || t.inherit && this.parent && this.parent.parameter(e)
9734 }, n.prototype.toString = function() {
9736 }, n.isStateClass = function(e) {
9737 return x(e) && !0 === e.__uiRouterState
9738 }, n.isState = function(e) {
9739 return A(e.__stateObjectCache)
9746 return e.prototype.isRelative = function(e) {
9747 return 0 === (e = e || "").indexOf(".") || 0 === e.indexOf("^")
9748 }, e.prototype.find = function(e, t, n) {
9749 if (void 0 === n && (n = !0), e || "" === e) {
9752 this.isRelative(i) && (i = this.resolvePath(i, t));
9753 var o = this._states[i];
9754 if (o && (r || !(r || o !== e && o.self !== e))) return o;
9756 var a = de(this._states).filter(function(e) {
9757 return e.__stateObjectCache.nameGlob && e.__stateObjectCache.nameGlob.matches(i)
9759 return 1 < a.length && console.log("stateMatcher.find: Found multiple matches for " + i + " using glob: ", a.map(function(e) {
9764 }, e.prototype.resolvePath = function(e, t) {
9765 if (!t) throw new Error("No reference point given for path '" + e + "'");
9766 for (var n = this.find(t), r = e.split("."), i = r.length, o = 0, a = n; o < i; o++)
9767 if ("" !== r[o] || 0 !== o) {
9768 if ("^" !== r[o]) break;
9769 if (!a.parent) throw new Error("Path '" + e + "' not valid for state '" + n.name + "'");
9772 var s = r.slice(o).join(".");
9773 return a.name + (a.name && s ? "." : "") + s
9777 function e(e, t, n, r) {
9778 this.router = e, this.states = t, this.builder = n, this.listeners = r, this.queue = []
9780 return e.prototype.dispose = function() {
9782 }, e.prototype.register = function(e) {
9786 if (!M(r)) throw new Error("State must have a valid name");
9787 if (this.states.hasOwnProperty(r) || G(t.map(y("name")), r)) throw new Error("State '" + r + "' is already defined");
9788 return t.push(n), this.flush(), n
9789 }, e.prototype.flush = function() {
9790 for (var t = this, e = this.queue, n = this.states, r = this.builder, i = [], o = [], a = {}, s = function(e) {
9791 return t.states.hasOwnProperty(e) && t.states[e]
9793 i.length && t.listeners.forEach(function(e) {
9794 return e("registered", i.map(function(e) {
9805 if (h && h.name === u) throw new Error("State '" + u + "' is already defined");
9806 var p = s(u + ".**");
9807 p && this.router.stateRegistry.deregister(p), n[u] = c, this.attachRoute(c), 0 <= f && o.splice(f, 1), i.push(c)
9810 if (a[u] = e.length, 0 <= f && m === e.length) return e.push(c), l(), n;
9811 f < 0 && o.push(c), e.push(c)
9815 }, e.prototype.attachRoute = function(e) {
9816 if (!e.abstract && e.url) {
9817 var t = this.router.urlService.rules;
9818 t.rule(t.urlRuleFactory.create(e))
9824 this.router = e, this.states = {}, this.listeners = [], this.matcher = new Vt(this.states), this.builder = new qt(this.matcher, e.urlMatcherFactory), this.stateQueue = new Bt(e, this.states, this.builder, this.listeners), this._registerRoot()
9826 return e.prototype._registerRoot = function() {
9827 (this._root = this.stateQueue.register({
9839 })).navigable = null
9840 }, e.prototype.dispose = function() {
9842 this.stateQueue.dispose(), this.listeners = [], this.get().forEach(function(e) {
9843 return t.get(e) && t.deregister(e)
9845 }, e.prototype.onStatesChanged = function(e) {
9846 return this.listeners.push(e),
9848 Z(this.listeners)(e)
9850 }, e.prototype.root = function() {
9852 }, e.prototype.register = function(e) {
9853 return this.stateQueue.register(e)
9854 }, e.prototype._deregisterTree = function(e) {
9856 r = this.get().map(function(e) {
9860 var e = r.filter(function(e) {
9861 return -1 !== t.indexOf(e.parent)
9863 return 0 === e.length ? e : e.concat(i(e))
9866 o = [e].concat(t).reverse();
9867 return o.forEach(function(e) {
9868 var t = n.router.urlService.rules;
9869 t.rules().filter(v("state", e)).forEach(function(e) {
9870 return t.removeRule(e)
9871 }), delete n.states[e.name]
9873 }, e.prototype.deregister = function(e) {
9874 var t = this.get(e);
9875 if (!t) throw new Error("Can't deregister state; not found: " + e);
9876 var n = this._deregisterTree(t.$$state());
9877 return this.listeners.forEach(function(e) {
9878 return e("deregistered", n.map(function(e) {
9882 }, e.prototype.get = function(e, t) {
9884 if (0 === arguments.length) return Object.keys(this.states).map(function(e) {
9885 return n.states[e].self
9887 var r = this.matcher.find(e, t);
9888 return r && r.self || null
9889 }, e.prototype.decorator = function(e, t) {
9890 return this.builder.builder(e, t)
9893 (Lt = m.TransitionHookPhase || (m.TransitionHookPhase = {}))[Lt.CREATE = 0] = "CREATE", Lt[Lt.BEFORE = 1] = "BEFORE", Lt[Lt.RUN = 2] = "RUN", Lt[Lt.SUCCESS = 3] = "SUCCESS", Lt[Lt.ERROR = 4] = "ERROR", (Ft = m.TransitionHookScope || (m.TransitionHookScope = {}))[Ft.TRANSITION = 0] = "TRANSITION", Ft[Ft.STATE = 1] = "STATE";
9901 function o(e, t, n, r) {
9903 this.transition = e, this.stateContext = t, this.registeredHook = n, this.options = r, this.isSuperseded = function() {
9904 return i.type.hookPhase === m.TransitionHookPhase.RUN && !i.options.transition.isActive()
9905 }, this.options = te(r, Wt), this.type = n.eventType
9907 return o.chain = function(e, t) {
9908 return e.reduce(function(e, t) {
9909 return e.then(function() {
9910 return t.invokeHook()
9912 }, t || P.$q.when())
9913 }, o.invokeHooks = function(e, t) {
9914 for (var n = 0; n < e.length; n++) {
9915 var r = e[n].invokeHook();
9917 var i = e.slice(n + 1);
9918 return o.chain(i, r).then(t)
9922 }, o.runAllHooks = function(e) {
9923 e.forEach(function(e) {
9924 return e.invokeHook()
9926 }, o.prototype.logError = function(e) {
9927 this.transition.router.stateService.defaultErrorHandler()(e)
9928 }, o.prototype.invokeHook = function() {
9930 n = this.registeredHook;
9931 if (!n._deregistered) {
9932 var e = this.getNotCurrentRejection();
9934 var r = this.options;
9935 ct.traceHookInvocation(this, this.transition, r);
9936 var i = function(e) {
9937 return n.eventType.getErrorHandler(t)(e)
9940 return n.eventType.getResultHandler(t)(e)
9943 var a = n.callback.call(r.bind, t.transition, t.stateContext);
9944 return !this.type.synchronous && I(a) ? a.catch(function(e) {
9945 return Pe.normalize(e).toPromise()
9946 }).then(o, i) : o(a)
9948 return i(Pe.normalize(e))
9950 n.invokeLimit && ++n.invokeCount >= n.invokeLimit && n.deregister()
9953 }, o.prototype.handleHookResult = function(e) {
9955 n = this.getNotCurrentRejection();
9956 return n || (I(e) ? e.then(function(e) {
9957 return t.handleHookResult(e)
9958 }) : (ct.traceHookResult(e, this.transition, this.options), !1 === e ? Pe.aborted("Hook aborted transition").toPromise() : h($t)(e) ? Pe.redirected(e).toPromise() : void 0))
9959 }, o.prototype.getNotCurrentRejection = function() {
9960 var e = this.transition.router;
9961 return e._disposed ? Pe.aborted("UIRouter instance #" + e.$id + " has been stopped (disposed)").toPromise() : this.transition._aborted ? Pe.aborted().toPromise() : this.isSuperseded() ? Pe.superseded(this.options.current()).toPromise() : void 0
9962 }, o.prototype.toString = function() {
9963 var e = this.options,
9964 t = this.registeredHook;
9965 return (C("traceData.hookType")(e) || "internal") + " context: " + (C("traceData.context.state.name")(e) || C("traceData.context")(e) || "unknown") + ", " + He(200, qe(t.callback))
9966 }, o.HANDLE_RESULT = function(t) {
9967 return function(e) {
9968 return t.handleHookResult(e)
9970 }, o.LOG_REJECTED_RESULT = function(t) {
9971 return function(e) {
9972 I(e) && e.catch(function(e) {
9973 return t.logError(Pe.normalize(e))
9976 }, o.LOG_ERROR = function(t) {
9977 return function(e) {
9978 return t.logError(e)
9980 }, o.REJECT_ERROR = function(e) {
9981 return function(e) {
9984 }, o.THROW_ERROR = function(e) {
9985 return function(e) {
9991 function Gt(e, t, n) {
9992 var i = M(t) ? [t] : t;
9993 return !!(x(i) ? i : function(e) {
9994 for (var t = i, n = 0; n < t.length; n++) {
9995 var r = new Ne(t[n]);
9996 if (r && r.matches(e.name) || !r && t[n] === e.name) return !0
10001 var Kt = function() {
10002 function e(e, t, n, r, i, o) {
10003 void 0 === o && (o = {}), this.tranSvc = e, this.eventType = t, this.callback = n, this.matchCriteria = r, this.removeHookFromRegistry = i, this.invokeCount = 0, this._deregistered = !1, this.priority = o.priority || 0, this.bind = o.bind || null, this.invokeLimit = o.invokeLimit
10005 return e.prototype._matchingNodes = function(e, t, n) {
10006 if (!0 === t) return e;
10007 var r = e.filter(function(e) {
10008 return Gt(e.state, t, n)
10010 return r.length ? r : null
10011 }, e.prototype._getDefaultMatchCriteria = function() {
10012 return ce(this.tranSvc._pluginapi._getPathTypes(), function() {
10015 }, e.prototype._getMatchingNodes = function(o, a) {
10017 l = U(this._getDefaultMatchCriteria(), this.matchCriteria);
10018 return de(this.tranSvc._pluginapi._getPathTypes()).reduce(function(e, t) {
10019 var n = t.scope === m.TransitionHookScope.STATE,
10020 r = o[t.name] || [],
10021 i = n ? r : [xe(r)];
10022 return e[t.name] = s._matchingNodes(i, l[t.name], a), e
10024 }, e.prototype.matches = function(e, t) {
10025 var n = this._getMatchingNodes(e, t);
10026 return de(n).every(B) ? n : null
10027 }, e.prototype.deregister = function() {
10028 this.removeHookFromRegistry(this), this._deregistered = !0
10032 function Zt(e, i, o) {
10033 var a = (e._registeredHooks = e._registeredHooks || {})[o.name] = [],
10036 function t(e, t, n) {
10037 void 0 === n && (n = {});
10038 var r = new Kt(i, o, t, e, s, n);
10039 return a.push(r), r.deregister.bind(r)
10041 return e[o.name] = t
10043 var Xt = function() {
10045 this.transition = e
10047 return e.prototype.buildHooksForPhase = function(e) {
10049 return this.transition.router.transitionService._pluginapi._getEvents(e).map(function(e) {
10050 return t.buildHooks(e)
10051 }).reduce(pe, []).filter(B)
10052 }, e.prototype.buildHooks = function(o) {
10053 var a = this.transition,
10054 e = a.treeChanges(),
10055 t = this.getMatchingHooks(o, e, a);
10059 current: a.options().current
10061 return t.map(function(i) {
10062 return i.matches(e, a)[o.criteriaMatchPath.name].map(function(e) {
10070 n = o.criteriaMatchPath.scope === m.TransitionHookScope.STATE ? e.state.self : null,
10071 r = new Yt(a, n, i, t);
10078 }).reduce(pe, []).sort(function(i) {
10079 void 0 === i && (i = !1);
10080 return function(e, t) {
10081 var n = i ? -1 : 1,
10082 r = (e.node.state.path.length - t.node.state.path.length) * n;
10083 return 0 !== r ? r : t.hook.priority - e.hook.priority
10085 }(o.reverseSort)).map(function(e) {
10086 return e.transitionHook
10088 }, e.prototype.getMatchingHooks = function(t, n, r) {
10089 var e = t.hookPhase === m.TransitionHookPhase.CREATE,
10090 i = this.transition.router.transitionService;
10091 return (e ? [i] : [this.transition, i]).map(function(e) {
10092 return e.getHooks(t.name)
10093 }).filter(_e(S, "broken event named: " + t.name)).reduce(pe, []).filter(function(e) {
10094 return e.matches(n, r)
10098 var Qt = y("self"),
10100 function t(e, t, n) {
10102 if (this._deferred = P.$q.defer(), this.promise = this._deferred.promise, this._registeredHooks = {}, this._hookBuilder = new Xt(this), this.isActive = function() {
10103 return r.router.globals.transition === r
10104 }, this.router = n, !(this._targetState = t).valid()) throw new Error(t.error());
10105 this._options = U({
10107 }, t.options()), this.$id = n.transitionService._transitionCount++;
10108 var i = wt.buildToPath(e, t);
10109 this._treeChanges = wt.treeChanges(e, i, this._options.reloadState), this.createTransitionHookRegFns();
10110 var o = this._hookBuilder.buildHooksForPhase(m.TransitionHookPhase.CREATE);
10111 Yt.invokeHooks(o, function() {
10113 }), this.applyViewConfigs(n)
10115 return t.prototype.onBefore = function(e, t, n) {}, t.prototype.onStart = function(e, t, n) {}, t.prototype.onExit = function(e, t, n) {}, t.prototype.onRetain = function(e, t, n) {}, t.prototype.onEnter = function(e, t, n) {}, t.prototype.onFinish = function(e, t, n) {}, t.prototype.onSuccess = function(e, t, n) {}, t.prototype.onError = function(e, t, n) {}, t.prototype.createTransitionHookRegFns = function() {
10117 this.router.transitionService._pluginapi._getEvents().filter(function(e) {
10118 return e.hookPhase !== m.TransitionHookPhase.CREATE
10119 }).forEach(function(e) {
10120 return Zt(t, t.router.transitionService, e)
10122 }, t.prototype.getHooks = function(e) {
10123 return this._registeredHooks[e]
10124 }, t.prototype.applyViewConfigs = function(e) {
10125 var t = this._treeChanges.entering.map(function(e) {
10128 wt.applyViewConfigs(e.transitionService.$view, this._treeChanges.to, t)
10129 }, t.prototype.$from = function() {
10130 return xe(this._treeChanges.from).state
10131 }, t.prototype.$to = function() {
10132 return xe(this._treeChanges.to).state
10133 }, t.prototype.from = function() {
10134 return this.$from().self
10135 }, t.prototype.to = function() {
10136 return this.$to().self
10137 }, t.prototype.targetState = function() {
10138 return this._targetState
10139 }, t.prototype.is = function(e) {
10140 return e instanceof t ? this.is({
10142 from: e.$from().name
10143 }) : !(e.to && !Gt(this.$to(), e.to, this) || e.from && !Gt(this.$from(), e.from, this))
10144 }, t.prototype.params = function(e) {
10145 return void 0 === e && (e = "to"), Object.freeze(this._treeChanges[e].map(y("paramValues")).reduce(ne, {}))
10146 }, t.prototype.paramsChanged = function() {
10147 var e = this.params("from"),
10148 n = this.params("to"),
10149 t = [].concat(this._treeChanges.to).concat(this._treeChanges.from).map(function(e) {
10150 return e.paramSchema
10151 }).reduce(me, []).reduce(ve, []);
10152 return vt.changed(t, e, n).reduce(function(e, t) {
10153 return e[t.id] = n[t.id], e
10155 }, t.prototype.injector = function(t, e) {
10156 void 0 === e && (e = "to");
10157 var n = this._treeChanges[e];
10158 return t && (n = wt.subPath(n, function(e) {
10159 return e.state === t || e.state.name === t
10160 })), new St(n).injector()
10161 }, t.prototype.getResolveTokens = function(e) {
10162 return void 0 === e && (e = "to"), new St(this._treeChanges[e]).getTokens()
10163 }, t.prototype.addResolvable = function(e, t) {
10164 void 0 === t && (t = ""), e = h(kt)(e) ? e : new kt(e);
10165 var n = "string" == typeof t ? t : t.name,
10166 r = this._treeChanges.to,
10167 i = le(r, function(e) {
10168 return e.state.name === n
10170 new St(r).addResolvables([e], i.state)
10171 }, t.prototype.redirectedFrom = function() {
10172 return this._options.redirectedFrom || null
10173 }, t.prototype.originalTransition = function() {
10174 var e = this.redirectedFrom();
10175 return e && e.originalTransition() || this
10176 }, t.prototype.options = function() {
10177 return this._options
10178 }, t.prototype.entering = function() {
10179 return ue(this._treeChanges.entering, y("state")).map(Qt)
10180 }, t.prototype.exiting = function() {
10181 return ue(this._treeChanges.exiting, y("state")).map(Qt).reverse()
10182 }, t.prototype.retained = function() {
10183 return ue(this._treeChanges.retained, y("state")).map(Qt)
10184 }, t.prototype.views = function(e, t) {
10185 void 0 === e && (e = "entering");
10186 var n = this._treeChanges[e];
10187 return (n = t ? n.filter(v("state", t)) : n).map(y("views")).filter(B).reduce(pe, [])
10188 }, t.prototype.treeChanges = function(e) {
10189 return e ? this._treeChanges[e] : this._treeChanges
10190 }, t.prototype.redirect = function(e) {
10191 for (var t = 1, n = this; null != (n = n.redirectedFrom());)
10192 if (20 < ++t) throw new Error("Too many consecutive Transition redirects (20+)");
10194 redirectedFrom: this,
10197 "url" === this.options().source && !1 !== e.options().location && (r.location = "replace");
10198 var i = U({}, this.options(), e.options(), r);
10199 e = e.withOptions(i, !0);
10200 var o, a = this.router.transitionService.create(this._treeChanges.from, e),
10201 s = this._treeChanges.entering,
10202 l = a._treeChanges.entering;
10203 return wt.matching(l, s, wt.nonDynamicParams).filter(d((o = e.options().reloadState, function(e) {
10204 return o && e.state.includes[o.name]
10205 }))).forEach(function(e, t) {
10206 e.resolvables = s[t].resolvables
10208 }, t.prototype._changedParams = function() {
10209 var e = this._treeChanges;
10210 if (!this._options.reload && (!e.exiting.length && !e.entering.length && e.to.length === e.from.length && !Ce(e.to, e.from).map(function(e) {
10211 return e[0].state !== e[1].state
10212 }).reduce(he, !1))) {
10213 var t = e.to.map(function(e) {
10214 return e.paramSchema
10216 n = [e.to, e.from].map(function(e) {
10217 return e.map(function(e) {
10218 return e.paramValues
10221 return Ce(t, n[0], n[1]).map(function(e) {
10225 return vt.changed(t, n, r)
10228 }, t.prototype.dynamic = function() {
10229 var e = this._changedParams();
10230 return !!e && e.map(function(e) {
10233 }, t.prototype.ignored = function() {
10234 return !!this._ignoredReason()
10235 }, t.prototype._ignoredReason = function() {
10236 var e = this.router.globals.transition,
10237 r = this._options.reloadState,
10238 t = function(e, t) {
10239 if (e.length !== t.length) return !1;
10240 var n = wt.matching(e, t);
10241 return e.length === n.filter(function(e) {
10242 return !r || !e.state.includes[r.name]
10245 n = this.treeChanges(),
10246 i = e && e.treeChanges();
10247 return i && t(i.to, n.to) && t(i.exiting, n.exiting) ? "SameAsPending" : 0 === n.exiting.length && 0 === n.entering.length && t(n.from, n.to) ? "SameAsCurrent" : void 0
10248 }, t.prototype.run = function() {
10250 n = Yt.runAllHooks,
10252 return t._hookBuilder.buildHooksForPhase(e)
10254 e = r(m.TransitionHookPhase.BEFORE);
10255 return Yt.invokeHooks(e, function() {
10256 var e = t.router.globals;
10257 return e.lastStartedTransitionId = t.$id, e.transition = t, e.transitionHistory.enqueue(t), ct.traceTransitionStart(t), P.$q.when(void 0)
10258 }).then(function() {
10259 var e = r(m.TransitionHookPhase.RUN);
10260 return Yt.invokeHooks(e, function() {
10261 return P.$q.when(void 0)
10263 }).then(function() {
10264 ct.traceSuccess(t.$to(), t), t.success = !0, t._deferred.resolve(t.to()), n(r(m.TransitionHookPhase.SUCCESS))
10266 ct.traceError(e, t), t.success = !1, t._deferred.reject(e), t._error = e, n(r(m.TransitionHookPhase.ERROR))
10268 }, t.prototype.valid = function() {
10269 return !this.error() || void 0 !== this.success
10270 }, t.prototype.abort = function() {
10271 _(this.success) && (this._aborted = !0)
10272 }, t.prototype.error = function() {
10273 var e = this.$to();
10274 if (e.self.abstract) return Pe.invalid("Cannot transition to abstract state '" + e.name + "'");
10275 var t = e.parameters(),
10277 r = t.filter(function(e) {
10278 return !e.validates(n[e.id])
10281 var i = r.map(function(e) {
10282 return "[" + e.id + ":" + Be(n[e.id]) + "]"
10284 o = "The following parameter values are not valid for state '" + e.name + "': " + i;
10285 return Pe.invalid(o)
10287 return !1 === this.success ? this._error : void 0
10288 }, t.prototype.toString = function() {
10289 var e = this.from(),
10292 return null !== e["#"] && void 0 !== e["#"] ? e : oe(e, ["#"])
10294 return "Transition#" + this.$id + "( '" + (A(e) ? e.name : e) + "'" + Be(n(this._treeChanges.from.map(y("paramValues")).reduce(ne, {}))) + " -> " + (this.valid() ? "" : "(X) ") + "'" + (A(t) ? t.name : t) + "'" + Be(n(this.params())) + " )"
10298 function en(e, t) {
10300 r = e.replace(/[\\\[\]\^$*+?.()|{}]/g, "\\$&");
10302 switch (t.squash) {
10304 n = ["(", ")" + (t.isOptional ? "?" : "")];
10307 r = r.replace(/\/$/, ""), n = ["(?:/(", ")|/)?"];
10310 n = ["(" + t.squash + "|", ")?"]
10312 return r + n[0] + t.type.pattern.source + n[1]
10320 caseInsensitive: !0
10323 function g(o, a, e, t) {
10327 }, this._children = [], this._params = [], this._segments = [], this._compiled = [], this.config = t = te(t, nn), this.pattern = o;
10328 for (var n, r, i, l = /([:*])([\w\[\]]+)|\{([\w\[\]]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g, c = /([:]?)([\w\[\].-]+)|\{([\w\[\].-]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g, u = [], d = 0, f = function(e) {
10329 if (!g.nameValidator.test(e)) throw new Error("Invalid parameter name '" + e + "' in pattern '" + o + "'");
10330 if (le(s._params, v("id", e))) throw new Error("Duplicate parameter name '" + e + "' in pattern '" + o + "'")
10331 }, h = function(e, t) {
10332 var n, r = e[2] || e[3],
10333 i = t ? e[4] : e[4] || ("*" === e[1] ? "[\\s\\S]*" : null);
10337 segment: o.substring(d, e.index),
10338 type: i ? a.type(i) || (n = i, Y(a.type(t ? "query" : "path"), {
10339 pattern: new RegExp(n, s.config.caseInsensitive ? "i" : void 0)
10343 (n = l.exec(o)) && !(0 <= (r = h(n, !1)).segment.indexOf("?"));) f(r.id), this._params.push(e.fromPath(r.id, r.type, t.state)), this._segments.push(r.segment), u.push([r.segment, xe(this._params)]), d = l.lastIndex;
10344 var p = (i = o.substring(d)).indexOf("?");
10346 var m = i.substring(p);
10347 if (i = i.substring(0, p), 0 < m.length)
10348 for (d = 0; n = c.exec(m);) f((r = h(n, !0)).id), this._params.push(e.fromSearch(r.id, r.type, t.state)), d = l.lastIndex
10350 this._segments.push(i), this._compiled = u.map(function(e) {
10351 return en.apply(null, e)
10354 return g.encodeDashes = function(e) {
10355 return encodeURIComponent(e).replace(/-/g, function(e) {
10356 return "%5C%" + e.charCodeAt(0).toString(16).toUpperCase()
10358 }, g.pathSegmentsAndParams = function(e) {
10359 return Ce(e._segments, e._params.filter(function(e) {
10360 return e.location === m.DefType.PATH
10361 }).concat(void 0)).reduce(pe, []).filter(function(e) {
10362 return "" !== e && k(e)
10364 }, g.queryParams = function(e) {
10365 return e._params.filter(function(e) {
10366 return e.location === m.DefType.SEARCH
10368 }, g.compare = function(e, t) {
10369 var n = function(e) {
10370 return e._cache.weights = e._cache.weights || (t = e, t._cache.segments = t._cache.segments || t._cache.path.map(g.pathSegmentsAndParams).reduce(pe, []).reduce(Je, []).map(function(e) {
10371 return M(e) ? tn(e) : e
10372 }).reduce(pe, [])).map(function(e) {
10373 return "/" === e ? 1 : M(e) ? 2 : e instanceof vt ? 3 : void 0
10379 ! function(e, t, n) {
10380 for (var r = Math.max(e.length, t.length); e.length < r;) e.push(n);
10381 for (; t.length < r;) t.push(n)
10383 var o, a, s = Ce(r, i);
10384 for (a = 0; a < s.length; a++)
10385 if (0 !== (o = s[a][0] - s[a][1])) return o;
10387 }, g.prototype.append = function(e) {
10388 return this._children.push(e), e._cache = {
10389 path: this._cache.path.concat(e),
10393 }, g.prototype.isRoot = function() {
10394 return this._cache.path[0] === this
10395 }, g.prototype.toString = function() {
10396 return this.pattern
10397 }, g.prototype.exec = function(e, r, t, n) {
10399 void 0 === r && (r = {});
10400 var o, a, s, l = (o = this._cache, a = "pattern", s = function() {
10401 return new RegExp(["^", be(i._cache.path.map(y("_compiled"))).join(""), !1 === i.config.strict ? "/?" : "", "$"].join(""), i.config.caseInsensitive ? "i" : void 0)
10402 }, o[a] = o[a] || s()).exec(e);
10403 if (!l) return null;
10404 var c, u = this.parameters(),
10405 d = u.filter(function(e) {
10406 return !e.isSearch()
10408 f = u.filter(function(e) {
10409 return e.isSearch()
10411 h = this._cache.path.map(function(e) {
10412 return e._segments.length - 1
10413 }).reduce(function(e, t) {
10417 if (h !== l.length - 1) throw new Error("Unbalanced capture group in route '" + this.pattern + "'");
10418 for (var m = 0; m < h; m++) {
10419 for (var g = d[m], v = l[m + 1], b = 0; b < g.replace.length; b++) g.replace[b].from === v && (v = g.replace[b].to);
10420 v && !0 === g.array && (void 0, v = ue(ue((c = function(e) {
10421 return e.split("").reverse().join("")
10422 })(v).split(/-(?!\\)/), c), function(e) {
10423 return e.replace(/\\-/g, "-")
10424 }).reverse()), k(v) && (v = g.type.decode(v)), p[g.id] = g.value(v)
10426 return f.forEach(function(e) {
10427 for (var t = r[e.id], n = 0; n < e.replace.length; n++) e.replace[n].from === t && (t = e.replace[n].to);
10428 k(t) && (t = e.type.decode(t)), p[e.id] = e.value(t)
10429 }), t && (p["#"] = t), p
10430 }, g.prototype.parameters = function(e) {
10431 return void 0 === e && (e = {}), !1 === e.inherit ? this._params : be(this._cache.path.map(function(e) {
10434 }, g.prototype.parameter = function(r, e) {
10436 void 0 === e && (e = {});
10437 var t = this._cache.parent;
10438 return function() {
10439 for (var e = 0, t = i._params; e < t.length; e++) {
10441 if (n.id === r) return n
10443 }() || !1 !== e.inherit && t && t.parameter(r, e) || null
10444 }, g.prototype.validates = function(r) {
10445 return r = r || {}, this.parameters().filter(function(e) {
10446 return r.hasOwnProperty(e.id)
10447 }).map(function(e) {
10448 return n = r[(t = e).id], !t || t.validates(n);
10451 }, g.prototype.format = function(a) {
10452 void 0 === a && (a = {});
10453 var e = this._cache.path,
10454 t = e.map(g.pathSegmentsAndParams).reduce(pe, []).map(function(e) {
10455 return M(e) ? e : r(e)
10457 n = e.map(g.queryParams).reduce(pe, []).map(r);
10458 if (t.concat(n).filter(function(e) {
10459 return !1 === e.isValid
10460 }).length) return null;
10463 var t = e.value(a[e.id]),
10464 n = e.validates(t),
10465 r = e.isDefaultValue(t),
10466 i = !!r && e.squash,
10467 o = e.type.encode(t);
10477 var i = t.reduce(function(e, t) {
10478 if (M(t)) return e + t;
10482 return !0 === n ? e.match(/\/$/) ? e.slice(0, -1) : e : M(n) ? e + n : !1 !== n ? e : null == r ? e : S(r) ? e + ue(r, g.encodeDashes).join("-") : i.raw ? e + r : e + encodeURIComponent(r)
10484 o = n.map(function(e) {
10488 i = e.isDefaultValue;
10489 if (!(null == r || i && !1 !== n) && (S(r) || (r = [r]), 0 !== r.length)) return t.raw || (r = ue(r, encodeURIComponent)), r.map(function(e) {
10490 return t.id + "=" + e
10492 }).filter(B).reduce(pe, []).join("&");
10493 return i + (o ? "?" + o : "") + (a["#"] ? "#" + a["#"] : "")
10494 }, g.nameValidator = /^\w+([-.]+\w+)*(?:\[\])?$/, g
10497 return (on = Object.assign || function(e) {
10498 for (var t, n = 1, r = arguments.length; n < r; n++)
10499 for (var i in t = arguments[n]) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
10501 }).apply(this, arguments)
10507 return e.prototype.fromConfig = function(e, t, n) {
10508 return new vt(e, t, m.DefType.CONFIG, this.router.urlService.config, n)
10509 }, e.prototype.fromPath = function(e, t, n) {
10510 return new vt(e, t, m.DefType.PATH, this.router.urlService.config, n)
10511 }, e.prototype.fromSearch = function(e, t, n) {
10512 return new vt(e, t, m.DefType.SEARCH, this.router.urlService.config, n)
10518 this.router = e, this.paramFactory = new an(this.router), this.caseInsensitive = function(e) {
10519 return r.router.urlService.config.caseInsensitive(e)
10520 }, this.defaultSquashPolicy = function(e) {
10521 return r.router.urlService.config.defaultSquashPolicy(e)
10522 }, this.strictMode = function(e) {
10523 return r.router.urlService.config.strictMode(e)
10524 }, this.type = function(e, t, n) {
10525 return r.router.urlService.config.type(e, t, n) || r
10531 return e.prototype.compile = function(e, t) {
10532 var n = this.router.urlService.config,
10533 r = t && !t.state && t.params;
10540 strict: n._isStrictMode,
10541 caseInsensitive: n._isCaseInsensitive
10543 return new rn(e, n.paramTypes, this.paramFactory, U(i, t))
10544 }, e.prototype.isMatcher = function(n) {
10545 if (!A(n)) return !1;
10547 return q(rn.prototype, function(e, t) {
10548 x(e) && (r = r && k(n[t]) && x(n[t]))
10550 }, e.prototype.$get = function() {
10551 var e = this.router.urlService.config;
10552 return e.paramTypes.enqueue = !1, e.paramTypes._flushTypeQueue(), this
10559 return e.prototype.compile = function(e) {
10560 return this.router.urlMatcherFactory.compile(e)
10561 }, e.prototype.create = function(e, t) {
10566 return i(n.compile(e))
10568 [h(rn), function(e) {
10569 return n.fromUrlMatcher(e, t)
10572 return n.fromState(e, n.router)
10574 [h(RegExp), function(e) {
10575 return n.fromRegExp(e, t)
10578 return new cn(e, t)
10582 if (!o) throw new Error("invalid 'what' in when()");
10584 }, e.prototype.fromUrlMatcher = function(n, t) {
10586 M(t) && (t = this.router.urlMatcherFactory.compile(t)), h(rn)(t) && (e = function(e) {
10591 matchPriority: function(t) {
10592 var e = n.parameters().filter(function(e) {
10593 return e.isOptional
10595 return e.length ? e.filter(function(e) {
10597 }).length / e.length : 1e-6
10601 return U(new cn(function(e) {
10602 var t = n.exec(e.path, e.search, e.hash);
10603 return n.validates(t) && t
10605 }, e.prototype.fromState = function(r, i) {
10610 return U(this.fromUrlMatcher(r.url, function(e) {
10611 var t = i.stateService,
10613 t.href(r, e) !== t.href(n.current, n.params) && t.transitionTo(r, e, {
10618 }, e.prototype.fromRegExp = function(t, e) {
10619 if (t.global || t.sticky) throw new Error("Rule RegExp must not be global or sticky");
10620 var n = M(e) ? function(n) {
10621 return e.replace(/\$(\$|\d{1,2})/, function(e, t) {
10622 return n["$" === t ? 0 : Number(t)]
10629 return U(new cn(function(e) {
10630 return t.exec(e.path)
10632 }, e.isUrlRule = function(t) {
10633 return t && ["type", "match", "handler"].every(function(e) {
10638 cn = function(e, t) {
10640 this.match = e, this.type = "RAW", this.matchPriority = function(e) {
10642 }, this.handler = t || B
10644 var un, dn = function() {
10647 this.router = e, this.sync = function(e) {
10648 return r.router.urlService.sync(e)
10649 }, this.listen = function(e) {
10650 return r.router.urlService.listen(e)
10651 }, this.deferIntercept = function(e) {
10652 return r.router.urlService.deferIntercept(e)
10653 }, this.match = function(e) {
10654 return r.router.urlService.match(e)
10655 }, this.initial = function(e) {
10656 return r.router.urlService.rules.initial(e)
10657 }, this.otherwise = function(e) {
10658 return r.router.urlService.rules.otherwise(e)
10659 }, this.removeRule = function(e) {
10660 return r.router.urlService.rules.removeRule(e)
10661 }, this.rule = function(e) {
10662 return r.router.urlService.rules.rule(e)
10663 }, this.rules = function() {
10664 return r.router.urlService.rules.rules()
10665 }, this.sort = function(e) {
10666 return r.router.urlService.rules.sort(e)
10667 }, this.when = function(e, t, n) {
10668 return r.router.urlService.rules.when(e, t, n)
10669 }, this.urlRuleFactory = new ln(e)
10671 return e.prototype.update = function(e) {
10672 var t = this.router.locationService;
10673 e ? this.location = t.url() : t.url() !== this.location && t.url(this.location, !0)
10674 }, e.prototype.push = function(e, t, n) {
10675 var r = n && !!n.replace;
10676 this.router.urlService.url(e.format(t || {}), r)
10677 }, e.prototype.href = function(e, t, n) {
10678 var r = e.format(t);
10679 if (null == r) return null;
10683 var i, o, a, s, l = this.router.urlService.config,
10685 if (c || null === r || (r = "#" + l.hashPrefix() + r), i = r, o = c, a = n.absolute, r = "/" === (s = l.baseHref()) ? i : o ? Ye(s) + i : a ? s.slice(1) + i : i, !n.absolute || !r) return r;
10686 var u = !c && r ? "/" : "",
10688 f = 80 === d || 443 === d ? "" : ":" + d;
10689 return [l.protocol(), "://", l.host(), f, u, r].join("")
10690 }, Object.defineProperty(e.prototype, "interceptDeferred", {
10692 return this.router.urlService.interceptDeferred
10701 this.router = e, this._uiViews = [], this._viewConfigs = [], this._viewConfigFactories = {}, this._listeners = [], this._pluginapi = {
10702 _rootViewContext: this._rootViewContext.bind(this),
10703 _viewConfigFactory: this._viewConfigFactory.bind(this),
10704 _registeredUIView: function(t) {
10705 return le(n._uiViews, function(e) {
10706 return n.router.$id + "." + e.id === t
10709 _registeredUIViews: function() {
10712 _activeViewConfigs: function() {
10713 return n._viewConfigs
10715 _onSync: function(e) {
10716 return n._listeners.push(e),
10718 return Z(n._listeners, e)
10723 return l.normalizeUIViewTarget = function(e, t) {
10724 void 0 === t && (t = "");
10725 var n = t.split("@"),
10726 r = n[0] || "$default",
10727 i = M(n[1]) ? n[1] : "^",
10728 o = /^(\^(?:\.\^)*)\.(.*$)/.exec(r);
10729 o && (i = o[1], r = o[2]), "!" === r.charAt(0) && (r = r.substr(1), i = "");
10730 /^(\^(?:\.\^)*)$/.exec(i) ? i = i.split(".").reduce(function(e, t) {
10732 }, e).name : "." === i && (i = e.name);
10735 uiViewContextAnchor: i
10737 }, l.prototype._rootViewContext = function(e) {
10738 return this._rootContext = e || this._rootContext
10739 }, l.prototype._viewConfigFactory = function(e, t) {
10740 this._viewConfigFactories[e] = t
10741 }, l.prototype.createViewConfig = function(e, t) {
10742 var n = this._viewConfigFactories[t.$type];
10743 if (!n) throw new Error("ViewService: No view config factory registered for type " + t.$type);
10745 return S(r) ? r : [r]
10746 }, l.prototype.deactivateViewConfig = function(e) {
10747 ct.traceViewServiceEvent("<- Removing", e), Z(this._viewConfigs, e)
10748 }, l.prototype.activateViewConfig = function(e) {
10749 ct.traceViewServiceEvent("-> Registering", e), this._viewConfigs.push(e)
10750 }, l.prototype.sync = function() {
10752 r = this._uiViews.map(function(e) {
10757 for (var t = e.viewDecl.$context, n = 0; ++n && t.parent;) t = t.parent;
10760 var o = c(function(e, t, n, r) {
10761 return t * (e(n) - e(r))
10763 e = this._uiViews.sort(o(function(e) {
10764 var t = function(e) {
10765 return e && e.parent ? t(e.parent) + 1 : 1
10767 return 1e4 * e.fqn.split(".").length + t(e.creationContext)
10768 }, 1)).map(function(e) {
10769 var t = n._viewConfigs.filter(l.matches(r, e));
10770 return 1 < t.length && t.sort(o(i, -1)), {
10775 t = e.map(function(e) {
10776 return e.viewConfig
10778 a = this._viewConfigs.filter(function(e) {
10780 }).map(function(e) {
10786 e.forEach(function(e) {
10787 -1 !== n._uiViews.indexOf(e.uiView) && e.uiView.configUpdated(e.viewConfig)
10789 var s = e.concat(a);
10790 this._listeners.forEach(function(e) {
10792 }), ct.traceViewSync(s)
10793 }, l.prototype.registerUIView = function(t) {
10794 ct.traceViewServiceUIViewEvent("-> Registering", t);
10795 var e = this._uiViews;
10796 return e.filter(function(e) {
10797 return e.fqn === t.fqn && e.$type === t.$type
10798 }).length && ct.traceViewServiceUIViewEvent("!!!! duplicate uiView named:", t), e.push(t), this.sync(),
10800 -1 !== e.indexOf(t) ? (ct.traceViewServiceUIViewEvent("<- Deregistering", t), Z(e)(t)) : ct.traceViewServiceUIViewEvent("Tried removing non-registered uiView", t)
10802 }, l.prototype.available = function() {
10803 return this._uiViews.map(y("fqn"))
10804 }, l.prototype.active = function() {
10805 return this._uiViews.filter(y("$config")).map(y("name"))
10806 }, l.matches = function(s, l) {
10807 return function(e) {
10808 if (l.$type !== e.viewDecl.$type) return !1;
10809 var t = e.viewDecl,
10810 n = t.$uiViewName.split("."),
10811 r = l.fqn.split(".");
10812 if (!V(n, r.slice(0 - n.length))) return !1;
10813 var i = 1 - n.length || void 0,
10814 o = r.slice(0, i).join("."),
10815 a = s[o].creationContext;
10816 return t.$uiViewContextAnchor === (a && a.name)
10822 this.params = new yt, this.lastStartedTransitionId = -1, this.transitionHistory = new Ie([], 1), this.successfulTransitions = new Ie([], 1)
10824 return e.prototype.dispose = function() {
10825 this.transitionHistory.clear(), this.successfulTransitions.clear(), this.transition = null
10830 if (!(x(e) || M(e) || h($t)(e) || $t.isDef(e))) throw new Error("'handler' must be a string, function, TargetState, or have a state: 'newtarget' property");
10831 return x(e) ? e : p(e)
10833 un = function(e, t) {
10834 var n, r, i, o, a, s, l, c, u = (n = e, (t.priority || 0) - (n.priority || 0));
10835 return 0 !== u ? u : (r = t, 0 !== (u = ((i = {
10841 })[e.type] || 0) - (i[r.type] || 0)) ? u : (a = t, 0 !== (u = (o = e).urlMatcher && a.urlMatcher ? rn.compare(o.urlMatcher, a.urlMatcher) : 0) ? u : (l = t, (c = {
10844 })[(s = e).type] && c[l.type] ? 0 : (s.$id || 0) - (l.$id || 0))))
10846 var mn = function() {
10848 this.router = e, this._sortFn = un, this._rules = [], this._id = 0, this.urlRuleFactory = new ln(e)
10850 return e.prototype.dispose = function(e) {
10851 this._rules = [], delete this._otherwiseFn
10852 }, e.prototype.initial = function(e) {
10854 this.rule(this.urlRuleFactory.create(function(e, t) {
10855 return 0 === t.globals.transitionHistory.size() && !!/^\/?$/.exec(e.path)
10857 }, e.prototype.otherwise = function(e) {
10859 this._otherwiseFn = this.urlRuleFactory.create(p(!0), t), this._sorted = !1
10860 }, e.prototype.removeRule = function(e) {
10862 }, e.prototype.rule = function(e) {
10864 if (!ln.isUrlRule(e)) throw new Error("invalid rule");
10865 return e.$id = this._id++, e.priority = e.priority || 0, this._rules.push(e), this._sorted = !1,
10867 return t.removeRule(e)
10869 }, e.prototype.rules = function() {
10870 return this.ensureSorted(), this._rules.concat(this._otherwiseFn ? [this._otherwiseFn] : [])
10871 }, e.prototype.sort = function(e) {
10872 for (var t = this.stableSort(this._rules, this._sortFn = e || this._sortFn), n = 0, r = 0; r < t.length; r++) t[r]._group = n, r < t.length - 1 && 0 !== this._sortFn(t[r], t[r + 1]) && n++;
10873 this._rules = t, this._sorted = !0
10874 }, e.prototype.ensureSorted = function() {
10875 this._sorted || this.sort()
10876 }, e.prototype.stableSort = function(e, r) {
10877 var t = e.map(function(e, t) {
10883 return t.sort(function(e, t) {
10884 var n = r(e.elem, t.elem);
10885 return 0 === n ? e.idx - t.idx : n
10886 }), t.map(function(e) {
10889 }, e.prototype.when = function(e, t, n) {
10890 var r = this.urlRuleFactory.create(e, t);
10891 return k(n && n.priority) && (r.priority = n.priority), this.rule(r), r
10897 this.router = e, this.paramTypes = new bt, this._isCaseInsensitive = !1, this._isStrictMode = !0, this._defaultSquashPolicy = !1, this.dispose = function() {
10898 return t.paramTypes.dispose()
10899 }, this.baseHref = function() {
10900 return t.router.locationConfig.baseHref()
10901 }, this.hashPrefix = function(e) {
10902 return t.router.locationConfig.hashPrefix(e)
10903 }, this.host = function() {
10904 return t.router.locationConfig.host()
10905 }, this.html5Mode = function() {
10906 return t.router.locationConfig.html5Mode()
10907 }, this.port = function() {
10908 return t.router.locationConfig.port()
10909 }, this.protocol = function() {
10910 return t.router.locationConfig.protocol()
10913 return e.prototype.caseInsensitive = function(e) {
10914 return this._isCaseInsensitive = k(e) ? e : this._isCaseInsensitive
10915 }, e.prototype.defaultSquashPolicy = function(e) {
10916 if (k(e) && !0 !== e && !1 !== e && !M(e)) throw new Error("Invalid squash policy: " + e + ". Valid policies: false, true, arbitrary-string");
10917 return this._defaultSquashPolicy = k(e) ? e : this._defaultSquashPolicy
10918 }, e.prototype.strictMode = function(e) {
10919 return this._isStrictMode = k(e) ? e : this._isStrictMode
10920 }, e.prototype.type = function(e, t, n) {
10921 var r = this.paramTypes.type(e, t, n);
10922 return k(t) ? this : r
10928 this.router = e, this.interceptDeferred = !1, this.rules = new mn(this.router), this.config = new gn(this.router), this.url = function(e, t, n) {
10929 return r.router.locationService.url(e, t, n)
10930 }, this.path = function() {
10931 return r.router.locationService.path()
10932 }, this.search = function() {
10933 return r.router.locationService.search()
10934 }, this.hash = function() {
10935 return r.router.locationService.hash()
10936 }, this.onChange = function(e) {
10937 return r.router.locationService.onChange(e)
10940 return e.prototype.dispose = function() {
10941 this.listen(!1), this.rules.dispose()
10942 }, e.prototype.parts = function() {
10945 search: this.search(),
10948 }, e.prototype.sync = function(e) {
10949 if (!e || !e.defaultPrevented) {
10950 var t = this.router,
10952 r = t.stateService,
10955 search: n.search(),
10961 return n.url(e, !0)
10963 [$t.isDef, function(e) {
10964 return r.go(e.state, e.params, e.options)
10966 [h($t), function(e) {
10967 return r.go(e.state(), e.params(), e.options())
10969 ])(o && o.rule.handler(o.match, i, this.router))
10971 }, e.prototype.listen = function(e) {
10973 if (!1 !== e) return this._stopListeningFn = this._stopListeningFn || this.router.urlService.onChange(function(e) {
10976 this._stopListeningFn && this._stopListeningFn(), delete this._stopListeningFn
10977 }, e.prototype.deferIntercept = function(e) {
10978 void 0 === e && (e = !0), this.interceptDeferred = e
10979 }, e.prototype.match = function(e) {
10986 for (var n, r, i, o = this.rules.rules(), a = 0; a < o.length && (!n || n.rule._group === o[a]._group); a++) {
10987 var s = (r = o[a], void 0, (i = r.match(e, t.router)) && {
10990 weight: r.matchPriority(i)
10992 n = !n || s && s.weight > n.weight ? s : n
10998 yn = R("LocationServices", ["url", "path", "search", "hash", "onChange"]),
10999 _n = R("LocationConfig", ["port", "protocol", "host", "baseHref", "html5Mode", "hashPrefix"]),
11002 void 0 === e && (e = yn), void 0 === t && (t = _n), this.locationService = e, this.locationConfig = t, this.$id = bn++, this._disposed = !1, this._disposables = [], this.trace = ct, this.viewService = new fn(this), this.globals = new hn, this.transitionService = new Vn(this), this.urlMatcherFactory = new sn(this), this.urlRouter = new dn(this), this.urlService = new vn(this), this.stateRegistry = new zt(this), this.stateService = new Bn(this), this._plugins = {}, this.viewService._pluginapi._rootViewContext(this.stateRegistry.root()), this.globals.$current = this.stateRegistry.root(), this.globals.current = this.globals.$current.self, this.disposable(this.globals), this.disposable(this.stateService), this.disposable(this.stateRegistry), this.disposable(this.transitionService), this.disposable(this.urlService), this.disposable(e), this.disposable(t)
11004 return e.prototype.disposable = function(e) {
11005 this._disposables.push(e)
11006 }, e.prototype.dispose = function(e) {
11008 e && x(e.dispose) ? e.dispose(this) : (this._disposed = !0, this._disposables.slice().forEach(function(e) {
11010 "function" == typeof e.dispose && e.dispose(t), Z(t._disposables, e)
11013 }, e.prototype.plugin = function(e, t) {
11014 void 0 === t && (t = {});
11015 var n = new e(this, t);
11016 if (!n.name) throw new Error("Required property `name` missing on plugin: " + n);
11017 return this._disposables.push(n), this._plugins[n.name] = n
11018 }, e.prototype.getPlugin = function(e) {
11019 return e ? this._plugins[e] : de(this._plugins)
11024 t.addResolvable(kt.fromData($n, t.router), ""), t.addResolvable(kt.fromData(Jt, t), ""), t.addResolvable(kt.fromData("$transition$", t), ""), t.addResolvable(kt.fromData("$stateParams", t.params()), ""), t.entering().forEach(function(e) {
11025 t.addResolvable(kt.fromData("$state$", e), e)
11028 var En = G(["$transition$", Jt]),
11030 var t = de(e.treeChanges()).reduce(pe, []).reduce(ve, []),
11032 return En(e.token) ? kt.fromData(e.token, null) : e
11034 t.forEach(function(e) {
11035 e.resolvables = e.resolvables.map(n)
11039 var e = t.to().redirectTo;
11041 var n = t.router.stateService;
11042 return x(e) ? P.$q.when(e(t)).then(r) : r(e)
11046 if (e) return e instanceof $t ? e : M(e) ? n.target(e, t.params(), t.options()) : e.state || e.params ? n.target(e.state || t.to(), e.params || t.params(), t.options()) : void 0
11051 return function(e, t) {
11052 return (0, t.$$state()[n])(e, t)
11055 var Tn = xn("onExit"),
11056 Mn = xn("onRetain"),
11057 An = xn("onEnter"),
11059 return new St(e.treeChanges().to).resolvePath("EAGER", e).then(z)
11061 Dn = function(e, t) {
11062 return new St(e.treeChanges().to).subContext(t.$$state()).resolvePath("LAZY", e).then(z)
11065 return new St(e.treeChanges().to).resolvePath("LAZY", e).then(z)
11069 n = e.views("entering");
11070 if (n.length) return t.all(n.map(function(e) {
11071 return t.when(e.load())
11075 var t = e.views("entering"),
11076 n = e.views("exiting");
11077 if (t.length || n.length) {
11078 var r = e.router.viewService;
11079 n.forEach(function(e) {
11080 return r.deactivateViewConfig(e)
11081 }), t.forEach(function(e) {
11082 return r.activateViewConfig(e)
11087 var t = e.router.globals,
11089 t.transition === e && (t.transition = null)
11091 e.onSuccess({}, function() {
11092 t.successfulTransitions.enqueue(e), t.$current = e.$to(), t.current = t.$current.self, Te(e.params(), t.params)
11095 }), e.promise.then(n, n)
11098 var t = e.options(),
11099 n = e.router.stateService,
11100 r = e.router.urlRouter;
11101 if ("url" !== t.source && t.location && n.$current.navigable) {
11103 replace: "replace" === t.location
11105 r.push(n.$current.navigable.url, n.params, i)
11111 var e = a.entering().filter(function(e) {
11112 return !!e.$$state().lazyLoad
11113 }).map(function(e) {
11116 return P.$q.all(e).then(function() {
11117 if ("url" !== a.originalTransition().options().source) {
11118 var e = a.targetState();
11119 return s.stateService.target(e.identifier(), e.params(), e.options())
11121 var t = s.urlService,
11122 n = t.match(t.parts()),
11124 if (r && "STATE" === r.type) {
11127 return s.stateService.target(i, o, a.options())
11129 s.urlService.sync()
11133 function jn(t, n) {
11134 var r = n.$$state().lazyLoad,
11137 e = r._promise = P.$q.when(r(t, n)).then(function(e) {
11138 e && Array.isArray(e.states) && e.states.forEach(function(e) {
11139 return t.router.stateRegistry.register(e)
11142 }).then(function(e) {
11143 return delete n.lazyLoad, delete n.$$state().lazyLoad, delete r._promise, e
11145 return delete r._promise, P.$q.reject(e)
11150 var Ln = function(e, t, n, r, i, o, a, s) {
11151 void 0 === i && (i = !1), void 0 === o && (o = Yt.HANDLE_RESULT), void 0 === a && (a = Yt.REJECT_ERROR), void 0 === s && (s = !1), this.name = e, this.hookPhase = t, this.hookOrder = n, this.criteriaMatchPath = r, this.reverseSort = i, this.getResultHandler = o, this.getErrorHandler = a, this.synchronous = s
11155 var t = e._ignoredReason();
11157 ct.traceTransitionIgnored(e);
11158 var n = e.router.globals.transition;
11159 return "SameAsCurrent" === t && n && n.abort(), Pe.ignored().toPromise()
11164 if (!e.valid()) throw new Error(e.error().toString())
11173 current: function() {
11180 this._transitionCount = 0, this._eventTypes = [], this._registeredHooks = {}, this._criteriaPaths = {}, this._router = e, this.$view = e.viewService, this._deregisterHookFns = {}, this._pluginapi = W(p(this), {}, p(this), ["_definePathType", "_defineEvent", "_getPathTypes", "_getEvents", "getHooks"]), this._defineCorePaths(), this._defineCoreEvents(), this._registerCoreTransitionHooks(), e.globals.successfulTransitions.onEvict(Cn)
11182 return e.prototype.onCreate = function(e, t, n) {}, e.prototype.onBefore = function(e, t, n) {}, e.prototype.onStart = function(e, t, n) {}, e.prototype.onExit = function(e, t, n) {}, e.prototype.onRetain = function(e, t, n) {}, e.prototype.onEnter = function(e, t, n) {}, e.prototype.onFinish = function(e, t, n) {}, e.prototype.onSuccess = function(e, t, n) {}, e.prototype.onError = function(e, t, n) {}, e.prototype.dispose = function(e) {
11183 de(this._registeredHooks).forEach(function(t) {
11184 return t.forEach(function(e) {
11185 e._deregistered = !0, Z(t, e)
11188 }, e.prototype.create = function(e, t) {
11189 return new Jt(e, t, this._router)
11190 }, e.prototype._defineCoreEvents = function() {
11191 var e = m.TransitionHookPhase,
11193 n = this._criteriaPaths;
11194 this._defineEvent("onCreate", e.CREATE, 0, n.to, !1, t.LOG_REJECTED_RESULT, t.THROW_ERROR, !0), this._defineEvent("onBefore", e.BEFORE, 0, n.to), this._defineEvent("onStart", e.RUN, 0, n.to), this._defineEvent("onExit", e.RUN, 100, n.exiting, !0), this._defineEvent("onRetain", e.RUN, 200, n.retained), this._defineEvent("onEnter", e.RUN, 300, n.entering), this._defineEvent("onFinish", e.RUN, 400, n.to), this._defineEvent("onSuccess", e.SUCCESS, 0, n.to, !1, t.LOG_REJECTED_RESULT, t.LOG_ERROR, !0), this._defineEvent("onError", e.ERROR, 0, n.to, !1, t.LOG_REJECTED_RESULT, t.LOG_ERROR, !0)
11195 }, e.prototype._defineCorePaths = function() {
11196 var e = m.TransitionHookScope.STATE,
11197 t = m.TransitionHookScope.TRANSITION;
11198 this._definePathType("to", t), this._definePathType("from", t), this._definePathType("exiting", e), this._definePathType("retained", e), this._definePathType("entering", e)
11199 }, e.prototype._defineEvent = function(e, t, n, r, i, o, a, s) {
11200 void 0 === i && (i = !1), void 0 === o && (o = Yt.HANDLE_RESULT), void 0 === a && (a = Yt.REJECT_ERROR), void 0 === s && (s = !1);
11201 var l = new Ln(e, t, n, r, i, o, a, s);
11202 this._eventTypes.push(l), Zt(this, this, l)
11203 }, e.prototype._getEvents = function(t) {
11204 return (k(t) ? this._eventTypes.filter(function(e) {
11205 return e.hookPhase === t
11206 }) : this._eventTypes.slice()).sort(function(e, t) {
11207 var n = e.hookPhase - t.hookPhase;
11208 return 0 === n ? e.hookOrder - t.hookOrder : n
11210 }, e.prototype._definePathType = function(e, t) {
11211 this._criteriaPaths[e] = {
11215 }, e.prototype._getPathTypes = function() {
11216 return this._criteriaPaths
11217 }, e.prototype.getHooks = function(e) {
11218 return this._registeredHooks[e]
11219 }, e.prototype._registerCoreTransitionHooks = function() {
11220 var e = this._deregisterHookFns;
11221 e.addCoreResolves = this.onCreate({}, wn), e.ignored = this.onBefore({}, Fn, {
11223 }), e.invalid = this.onBefore({}, qn, {
11225 }), e.redirectTo = this.onStart({
11227 return !!e.redirectTo
11229 }, kn), e.onExit = this.onExit({
11230 exiting: function(e) {
11233 }, Tn), e.onRetain = this.onRetain({
11234 retained: function(e) {
11235 return !!e.onRetain
11237 }, Mn), e.onEnter = this.onEnter({
11238 entering: function(e) {
11241 }, An), e.eagerResolve = this.onStart({}, Sn, {
11243 }), e.lazyResolve = this.onEnter({
11247 }), e.resolveAll = this.onFinish({}, On, {
11249 }), e.loadViews = this.onFinish({}, Nn), e.activateViews = this.onSuccess({}, In), e.updateGlobals = this.onCreate({}, Rn), e.updateUrl = this.onSuccess({}, Pn, {
11251 }), e.lazyLoad = this.onBefore({
11252 entering: function(e) {
11253 return !!e.lazyLoad
11260 this.router = e, this.invalidCallbacks = [], this._defaultErrorHandler = function(e) {
11261 e instanceof Error && e.stack ? (console.error(e), console.error(e.stack)) : e instanceof Pe ? (console.error(e.toString()), e.detail && e.detail.stack && console.error(e.detail.stack)) : console.error(e)
11263 var t = Object.keys(n.prototype).filter(d(G(["current", "$current", "params", "transition"])));
11264 W(p(n.prototype), this, p(this), t)
11266 return Object.defineProperty(n.prototype, "transition", {
11268 return this.router.globals.transition
11272 }), Object.defineProperty(n.prototype, "params", {
11274 return this.router.globals.params
11278 }), Object.defineProperty(n.prototype, "current", {
11280 return this.router.globals.current
11284 }), Object.defineProperty(n.prototype, "$current", {
11286 return this.router.globals.$current
11290 }), n.prototype.dispose = function() {
11291 this.defaultErrorHandler(z), this.invalidCallbacks = []
11292 }, n.prototype._handleInvalidTargetState = function(e, n) {
11294 i = wt.makeTargetState(this.router.stateRegistry, e),
11295 t = this.router.globals,
11297 return t.transitionHistory.peekTail()
11300 s = new Ie(this.invalidCallbacks.slice()),
11301 l = new St(e).injector(),
11303 if (e instanceof $t) {
11305 return (t = r.target(t.identifier(), t.params(), t.options())).valid() ? o() !== a ? Pe.superseded().toPromise() : r.transitionTo(t.identifier(), t.params(), t.options()) : Pe.invalid(t.error()).toPromise()
11308 return function t() {
11309 var e = s.dequeue();
11310 return void 0 === e ? Pe.invalid(n.error()).toPromise() : P.$q.when(e(n, i, l)).then(c).then(function(e) {
11314 }, n.prototype.onInvalid = function(e) {
11315 return this.invalidCallbacks.push(e),
11317 Z(this.invalidCallbacks)(e)
11319 }, n.prototype.reload = function(e) {
11320 return this.transitionTo(this.current, this.params, {
11321 reload: !k(e) || e,
11325 }, n.prototype.go = function(e, t, n) {
11327 relative: this.$current,
11330 return this.transitionTo(e, t, r)
11331 }, n.prototype.target = function(e, t, n) {
11332 if (void 0 === n && (n = {}), A(n.reload) && !n.reload.name) throw new Error("Invalid reload state object");
11333 var r = this.router.stateRegistry;
11334 if (n.reloadState = !0 === n.reload ? r.root() : r.matcher.find(n.reload, n.relative), n.reload && !n.reloadState) throw new Error("No such reload state '" + (M(n.reload) ? n.reload : n.reload.name) + "'");
11335 return new $t(this.router.stateRegistry, e, t, n)
11336 }, n.prototype.getCurrentPath = function() {
11338 t = this.router.globals.successfulTransitions.peekTail();
11339 return t ? t.treeChanges().to : [new _t(e.router.stateRegistry.root())]
11340 }, n.prototype.transitionTo = function(e, t, n) {
11342 void 0 === t && (t = {}), void 0 === n && (n = {});
11343 var a = this.router,
11347 current: function() {
11348 return s.transition
11351 var r = this.target(e, t, n),
11352 i = this.getCurrentPath();
11353 if (!r.exists()) return this._handleInvalidTargetState(i, r);
11354 if (!r.valid()) return Oe(r.error());
11355 var l = function(i) {
11356 return function(e) {
11357 if (e instanceof Pe) {
11358 var t = a.globals.lastStartedTransitionId <= i.$id;
11359 if (e.type === m.RejectType.IGNORED) return t && a.urlRouter.update(), P.$q.when(s.current);
11361 if (e.type === m.RejectType.SUPERSEDED && e.redirected && n instanceof $t) {
11362 var r = i.redirect(n);
11363 return r.run().catch(l(r))
11365 if (e.type === m.RejectType.ABORTED) return t && a.urlRouter.update(), P.$q.reject(e)
11367 return o.defaultErrorHandler()(e), P.$q.reject(e)
11370 c = this.router.transitionService.create(i, r),
11371 u = c.run().catch(l(c));
11372 return De(u), U(u, {
11375 }, n.prototype.is = function(e, t, n) {
11377 relative: this.$current
11379 var r = this.router.stateRegistry.matcher.find(e, n.relative);
11381 if (this.$current !== r) return !1;
11383 var i = r.parameters({
11387 return vt.equals(i, vt.values(i, t), this.params)
11389 }, n.prototype.includes = function(e, t, n) {
11391 relative: this.$current
11393 var r = M(e) && Ne.fromString(e);
11395 if (!r.matches(this.$current.name)) return !1;
11396 e = this.$current.name
11398 var i = this.router.stateRegistry.matcher.find(e, n.relative),
11399 o = this.$current.includes;
11401 if (!k(o[i.name])) return !1;
11403 var a = i.parameters({
11407 return vt.equals(a, vt.values(a, t), this.params)
11409 }, n.prototype.href = function(e, t, n) {
11414 relative: this.$current
11416 var r = this.router.stateRegistry.matcher.find(e, n.relative);
11417 if (!k(r)) return null;
11418 n.inherit && (t = this.params.$inherit(t, this.$current, r));
11419 var i = r && n.lossy ? r.navigable : r;
11420 return i && void 0 !== i.url && null !== i.url ? this.router.urlRouter.href(i.url, t, {
11421 absolute: n.absolute
11423 }, n.prototype.defaultErrorHandler = function(e) {
11424 return this._defaultErrorHandler = e || this._defaultErrorHandler
11425 }, n.prototype.get = function(e, t) {
11426 var n = this.router.stateRegistry;
11427 return 0 === arguments.length ? n.get() : n.get(e, t || this.$current)
11428 }, n.prototype.lazyLoad = function(e, t) {
11429 var n = this.get(e);
11430 if (!n || !n.lazyLoad) throw new Error("Can not lazy load " + e);
11431 var r = this.getCurrentPath(),
11432 i = wt.makeTargetState(this.router.stateRegistry, r);
11433 return jn(t = t || this.router.transitionService.create(r, i), n)
11437 when: function(n) {
11438 return new Promise(function(e, t) {
11442 reject: function(n) {
11443 return new Promise(function(e, t) {
11447 defer: function() {
11449 return n.promise = new Promise(function(e, t) {
11450 n.resolve = e, n.reject = t
11454 if (S(e)) return Promise.all(e);
11456 var t = Object.keys(e).map(function(t) {
11457 return e[t].then(function(e) {
11464 return zn.all(t).then(function(e) {
11465 return e.reduce(function(e, t) {
11466 return e[t.key] = t.val, e
11473 Yn = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,
11480 return null != Kn.get(e)
11482 invoke: function(e, t, n) {
11483 var r = U({}, Wn, n || {}),
11484 i = Kn.annotate(e),
11485 o = _e(function(e) {
11486 return r.hasOwnProperty(e)
11488 return "DI can't find injectable: '" + e + "'"
11490 a = i.filter(o).map(function(e) {
11493 return x(e) ? e.apply(t, a) : e.slice(-1)[0].apply(t, a)
11495 annotate: function(e) {
11496 if (!N(e)) throw new Error("Not an injectable function: " + e);
11497 if (e && e.$inject) return e.$inject;
11498 if (S(e)) return e.slice(0, -1);
11499 var t = e.toString().replace(Yn, "");
11500 return t.slice(t.indexOf("(") + 1, t.indexOf(")")).match(Gn) || []
11503 Zn = function(e, t) {
11506 return e.hasOwnProperty(n) ? S(e[n]) ? e[n].push(r) : e[n] = [e[n], r] : e[n] = r, e
11509 return e.split("&").filter(B).map(Ze).reduce(Zn, {})
11513 var t = function(e) {
11527 var Jn = function(e) {
11531 i = Object.keys(n).map(function(t) {
11533 return (S(e) ? e : [e]).map(function(e) {
11536 }).reduce(pe, []).join("&");
11537 return t + (i ? "?" + i : "") + (r ? "#" + r : "")
11540 function er(r, i, o, a) {
11541 return function(e) {
11542 var t = e.locationService = new o(e),
11543 n = e.locationConfig = new a(e, i);
11548 dispose: function(e) {
11549 e.dispose(t), e.dispose(n)
11554 var tr, nr, rr, ir = function() {
11557 this.fireAfterUpdate = t, this._listeners = [], this._listener = function(t) {
11558 return n._listeners.forEach(function(e) {
11561 }, this.hash = function() {
11562 return Qn(n._get()).hash
11563 }, this.path = function() {
11564 return Qn(n._get()).path
11565 }, this.search = function() {
11566 return Xn(Qn(n._get()).search)
11567 }, this._location = H.location, this._history = H.history
11569 return e.prototype.url = function(t, e) {
11570 return void 0 === e && (e = !0), k(t) && t !== this._get() && (this._set(null, null, t, e), this.fireAfterUpdate && this._listeners.forEach(function(e) {
11575 }, e.prototype.onChange = function(e) {
11577 return this._listeners.push(e),
11579 return Z(t._listeners, e)
11581 }, e.prototype.dispose = function(e) {
11582 ee(this._listeners)
11585 or = (tr = function(e, t) {
11586 return (tr = Object.setPrototypeOf || {
11589 instanceof Array && function(e, t) {
11591 } || function(e, t) {
11592 for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n])
11594 }, function(e, t) {
11596 this.constructor = e
11598 tr(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t.prototype, new n)
11602 var t = n.call(this, e, !1) || this;
11603 return H.addEventListener("hashchange", t._listener, !1), t
11605 return or(e, n), e.prototype._get = function() {
11606 return Xe(this._location.hash)
11607 }, e.prototype._set = function(e, t, n, r) {
11608 this._location.hash = n
11609 }, e.prototype.dispose = function(e) {
11610 n.prototype.dispose.call(this, e), H.removeEventListener("hashchange", this._listener)
11613 sr = (nr = function(e, t) {
11614 return (nr = Object.setPrototypeOf || {
11617 instanceof Array && function(e, t) {
11619 } || function(e, t) {
11620 for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n])
11622 }, function(e, t) {
11624 this.constructor = e
11626 nr(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t.prototype, new n)
11630 return t.call(this, e, !0) || this
11632 return sr(e, t), e.prototype._get = function() {
11634 }, e.prototype._set = function(e, t, n, r) {
11638 cr = (rr = function(e, t) {
11639 return (rr = Object.setPrototypeOf || {
11642 instanceof Array && function(e, t) {
11644 } || function(e, t) {
11645 for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n])
11647 }, function(e, t) {
11649 this.constructor = e
11651 rr(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t.prototype, new n)
11655 var t = n.call(this, e, !0) || this;
11656 return t._config = e.urlService.config, H.addEventListener("popstate", t._listener, !1), t
11658 return cr(e, n), e.prototype._getBasePrefix = function() {
11659 return Ye(this._config.baseHref())
11660 }, e.prototype._get = function() {
11661 var e = this._location,
11665 r = Ke(r)[1], n = Ge(n)[1];
11666 var i = this._getBasePrefix(),
11667 o = t === this._config.baseHref(),
11668 a = t.substr(0, i.length) === i;
11669 return (t = o ? "/" : a ? t.substring(i.length) : t) + (r ? "?" + r : "") + (n ? "#" + n : "")
11670 }, e.prototype._set = function(e, t, n, r) {
11671 var i = this._getBasePrefix(),
11672 o = n && "/" !== n[0] ? "/" : "",
11673 a = "" === n || "/" === n ? this._config.baseHref() : i + o + n;
11674 r ? this._history.replaceState(e, t, a) : this._history.pushState(e, t, a)
11675 }, e.prototype.dispose = function(e) {
11676 n.prototype.dispose.call(this, e), H.removeEventListener("popstate", this._listener)
11681 this.dispose = z, this._baseHref = "", this._port = 80, this._protocol = "http", this._host = "localhost", this._hashPrefix = "", this.port = function() {
11683 }, this.protocol = function() {
11685 }, this.host = function() {
11687 }, this.baseHref = function() {
11689 }, this.html5Mode = function() {
11691 }, this.hashPrefix = function(e) {
11692 return k(e) ? t._hashPrefix = e : t._hashPrefix
11697 void 0 === t && (t = !1), this._isHtml5 = t, this._baseHref = void 0, this._hashPrefix = ""
11699 return e.prototype.port = function() {
11700 return location.port ? Number(location.port) : "https" === this.protocol() ? 443 : 80
11701 }, e.prototype.protocol = function() {
11702 return location.protocol.replace(/:/g, "")
11703 }, e.prototype.host = function() {
11704 return location.hostname
11705 }, e.prototype.html5Mode = function() {
11706 return this._isHtml5
11707 }, e.prototype.hashPrefix = function(e) {
11708 return k(e) ? this._hashPrefix = e : this._hashPrefix
11709 }, e.prototype.baseHref = function(e) {
11710 return k(e) && (this._baseHref = e), _(this._baseHref) && (this._baseHref = this.getBaseHref()), this._baseHref
11711 }, e.prototype.getBaseHref = function() {
11712 var e = document.getElementsByTagName("base")[0];
11713 return e && e.href ? e.href.replace(/^([^/:]*:)?\/\/[^/]*/, "") : this._isHtml5 ? "/" : location.pathname || "/"
11714 }, e.prototype.dispose = function() {}, e
11718 return P.$injector = Kn, {
11719 name: "vanilla.services",
11722 dispose: function() {
11727 var pr = er("vanilla.hashBangLocation", !1, ar, fr),
11728 mr = er("vanilla.pushStateLocation", !0, ur, fr),
11729 gr = er("vanilla.memoryLocation", !1, lr, dr),
11732 return e.prototype.dispose = function(e) {}, e
11734 br = Object.freeze({
11743 createProxyFunctions: W,
11771 assertPredicate: _e,
11780 silenceUncaughtInPromise: De,
11781 silentRejection: Oe,
11804 isNullOrUndefined: w,
11818 functionToString: Fe,
11821 beforeAfterSubstr: ze,
11823 stripLastPathElement: Ye,
11829 joinNeighborsR: Je,
11844 resolvePolicies: Et,
11845 defaultResolvePolicy: Ct,
11847 NATIVE_INJECTOR_TOKEN: At,
11848 ResolveContext: St,
11849 resolvablesBuilder: jt,
11853 StateQueueManager: Bt,
11857 get TransitionHookPhase() {
11858 return m.TransitionHookPhase
11860 get TransitionHookScope() {
11861 return m.TransitionHookScope
11865 RegisteredHook: Kt,
11868 return m.RejectType
11872 TransitionHook: Yt,
11873 TransitionEventType: Ln,
11874 defaultTransOpts: Un,
11875 TransitionService: Vn,
11880 UrlMatcherFactory: sn,
11882 UrlRuleFactory: ln,
11886 UIRouterGlobals: hn,
11890 BaseLocationServices: ir,
11891 HashLocationService: ar,
11892 MemoryLocationService: lr,
11893 PushStateLocationService: ur,
11894 MemoryLocationConfig: dr,
11895 BrowserLocationConfig: fr,
11896 keyValsToObjectR: Zn,
11900 locationPluginFactory: er,
11901 servicesPlugin: hr,
11902 hashLocationPlugin: pr,
11903 pushStateLocationPlugin: mr,
11904 memoryLocationPlugin: gr,
11905 UIRouterPluginBase: vr
11910 return function(e, t) {
11911 return n = n || P.$injector.get("$templateFactory"), [new Er(e, t, n)]
11914 var _r = function(e, n) {
11915 return e.reduce(function(e, t) {
11916 return e || k(n[t])
11921 if (!r.parent) return {};
11922 var i = ["component", "bindings", "componentProvider"],
11923 o = ["templateProvider", "templateUrl", "template", "notify", "async"].concat(["controller", "controllerProvider", "controllerAs", "resolveAs"]),
11925 if (k(r.views) && _r(e, r)) throw new Error("State '" + r.name + "' has a 'views' object. It cannot also have \"view properties\" at the state level. Move the following properties into a view (in the 'views' object): " + e.filter(function(e) {
11932 return q(t, function(e, t) {
11933 if (t = t || "$default", M(e) && (e = {
11935 }), e = U({}, e), _r(i, e) && _r(o, e)) throw new Error("Cannot combine: " + i.join("|") + " with: " + o.join("|") + " in stateview: '" + t + "@" + r.name + "'");
11936 e.resolveAs = e.resolveAs || "$resolve", e.$type = "ng1", e.$context = r, e.$name = t;
11937 var n = fn.normalizeUIViewTarget(e.$context, e.$name);
11938 e.$uiViewName = n.uiViewName, e.$uiViewContextAnchor = n.uiViewContextAnchor, a[t] = e
11943 function e(e, t, n) {
11945 this.path = e, this.viewDecl = t, this.factory = n, this.$id = wr++, this.loaded = !1, this.getTemplate = function(e, t) {
11946 return r.component ? r.factory.makeComponentTemplate(e, t, r.component, r.viewDecl.bindings) : r.template
11949 return e.prototype.load = function() {
11952 n = new St(this.path),
11953 r = this.path.reduce(function(e, t) {
11954 return U(e, t.paramValues)
11957 template: e.when(this.factory.fromConfig(this.viewDecl, r, n)),
11958 controller: e.when(this.getController(n))
11960 return e.all(i).then(function(e) {
11961 return ct.traceViewServiceEvent("Loaded", t), t.controller = e.controller, U(t, e.template), t
11963 }, e.prototype.getController = function(e) {
11964 var t = this.viewDecl.controllerProvider;
11965 if (!N(t)) return this.viewDecl.controller;
11966 var n = P.$injector.annotate(t),
11967 r = S(t) ? xe(t) : t;
11968 return new kt("", r, n).get(e)
11974 this._useHttp = E.version.minor < 3, this.$get = ["$http", "$templateCache", "$injector", function(e, t, n) {
11975 return r.$templateRequest = n.has && n.has("$templateRequest") && n.get("$templateRequest"), r.$http = e, r.$templateCache = t, r
11978 return e.prototype.useHttpService = function(e) {
11980 }, e.prototype.fromConfig = function(e, t, n) {
11981 var r = function(e) {
11982 return P.$q.when(e).then(function(e) {
11989 return P.$q.when(e).then(function(e) {
11995 return k(e.template) ? r(this.fromString(e.template, t)) : k(e.templateUrl) ? r(this.fromUrl(e.templateUrl, t)) : k(e.templateProvider) ? r(this.fromProvider(e.templateProvider, t, n)) : k(e.component) ? i(e.component) : k(e.componentProvider) ? i(this.fromComponentProvider(e.componentProvider, t, n)) : r("<ui-view></ui-view>")
11996 }, e.prototype.fromString = function(e, t) {
11997 return x(e) ? e(t) : e
11998 }, e.prototype.fromUrl = function(e, t) {
11999 return x(e) && (e = e(t)), null == e ? null : this._useHttp ? this.$http.get(e, {
12000 cache: this.$templateCache,
12002 Accept: "text/html"
12004 }).then(function(e) {
12006 }) : this.$templateRequest(e)
12007 }, e.prototype.fromProvider = function(e, t, n) {
12008 var r = P.$injector.annotate(e),
12009 i = S(e) ? xe(e) : e;
12010 return new kt("", i, r).get(n)
12011 }, e.prototype.fromComponentProvider = function(e, t, n) {
12012 var r = P.$injector.annotate(e),
12013 i = S(e) ? xe(e) : e;
12014 return new kt("", i, r).get(n)
12015 }, e.prototype.makeComponentTemplate = function(l, c, e, u) {
12017 var d = 3 <= E.version.minor ? "::" : "",
12020 return /^(x|data)-/.exec(t) ? "x-" + t : t
12023 var t = P.$injector.get(e + "Directive");
12024 if (!t || !t.length) throw new Error("Unable to find component named '" + e + "'");
12025 return t.map(kr).reduce(pe, [])
12026 }(e).map(function(e) {
12030 if (l.attr(r) && !u[t]) return r + "='" + l.attr(r) + "'";
12032 if ("@" === n) return r + "='{{" + d + "$resolve." + i + "}}'";
12033 if ("&" !== n) return r + "='" + d + "$resolve." + i + "'";
12034 var o = c.getResolvable(i),
12036 s = a && P.$injector.annotate(a) || [];
12037 return r + "='$resolve." + i + (S(a) ? "[" + (a.length - 1) + "]" : "") + "(" + s.join(",") + ")'"
12040 return "<" + n + " " + t + "></" + n + ">"
12043 var kr = function(e) {
12044 return A(e.bindToController) ? xr(e.bindToController) : xr(e.scope)
12047 return Object.keys(t || {}).map(function(e) {
12048 return [e, /^([=<@&])[?]?(.*)/.exec(t[e])]
12049 }).filter(function(e) {
12050 return k(e) && S(e[1])
12051 }).map(function(e) {
12053 name: e[1][2] || e[0],
12060 this.stateRegistry = e, this.stateService = t, W(p(n.prototype), this, p(this))
12062 return n.prototype.decorator = function(e, t) {
12063 return this.stateRegistry.decorator(e, t) || this
12064 }, n.prototype.state = function(e, t) {
12065 return A(e) ? t = e : t.name = e, this.stateRegistry.register(t), this
12066 }, n.prototype.onInvalid = function(e) {
12067 return this.stateService.onInvalid(e)
12071 return function(e, t) {
12073 o = "onExit" === n ? "from" : "to";
12074 return i ? function(e, t) {
12075 var n = new St(e.treeChanges(o)).subContext(t.$$state()),
12080 return P.$injector.invoke(i, this, r)
12086 this._urlListeners = [], this.$locationProvider = e;
12088 W(t, this, t, ["hashPrefix"])
12090 return e.monkeyPatchPathParameterType = function(e) {
12091 var t = e.urlMatcherFactory.type("path");
12092 t.encode = function(e) {
12093 return null != e ? e.toString().replace(/(~|\/)/g, function(e) {
12099 }, t.decode = function(e) {
12100 return null != e ? e.toString().replace(/(~~|~2F)/g, function(e) {
12107 }, e.prototype.dispose = function() {}, e.prototype.onChange = function(e) {
12109 return this._urlListeners.push(e),
12111 return Z(t._urlListeners)(e)
12113 }, e.prototype.html5Mode = function() {
12114 var e = this.$locationProvider.html5Mode();
12115 return (e = A(e) ? e.enabled : e) && this.$sniffer.history
12116 }, e.prototype.baseHref = function() {
12117 return this._baseHref || (this._baseHref = this.$browser.baseHref() || this.$window.location.pathname)
12118 }, e.prototype.url = function(e, t, n) {
12119 return void 0 === t && (t = !1), k(e) && this.$location.url(e), t && this.$location.replace(), n && this.$location.state(n), this.$location.url()
12120 }, e.prototype._runtimeServices = function(e, t, n, r, i) {
12122 this.$location = t, this.$sniffer = n, this.$browser = r, this.$window = i, e.$on("$locationChangeSuccess", function(t) {
12123 return o._urlListeners.forEach(function(e) {
12128 W(a, this, a, ["replace", "path", "search", "hash"]), W(a, this, a, ["port", "protocol", "host"])
12135 return n.injectableHandler = function(t, n) {
12136 return function(e) {
12137 return P.$injector.invoke(n, null, {
12139 $stateParams: t.globals.params
12142 }, n.prototype.$get = function() {
12143 var e = this.router.urlService;
12144 return this.router.urlRouter.update(!0), e.interceptDeferred || e.listen(), this.router.urlRouter
12145 }, n.prototype.rule = function(e) {
12147 if (!x(e)) throw new Error("'rule' must be a function");
12148 var n = new cn(function() {
12149 return e(P.$injector, t.router.locationService)
12151 return this.router.urlService.rules.rule(n), this
12152 }, n.prototype.otherwise = function(e) {
12154 n = this.router.urlService.rules;
12155 if (M(e)) n.otherwise(e);
12157 if (!x(e)) throw new Error("'rule' must be a string or function");
12158 n.otherwise(function() {
12159 return e(P.$injector, t.router.locationService)
12163 }, n.prototype.when = function(e, t) {
12164 return (S(t) || x(t)) && (t = n.injectableHandler(this.router, t)), this.router.urlService.rules.when(e, t), this
12165 }, n.prototype.deferIntercept = function(e) {
12166 this.router.urlService.deferIntercept(e)
12169 E.module("ui.router.angular1", []);
12170 var Dr = E.module("ui.router.init", ["ng"]),
12171 Or = E.module("ui.router.util", ["ui.router.init"]),
12172 Nr = E.module("ui.router.router", ["ui.router.util"]),
12173 Ir = E.module("ui.router.state", ["ui.router.router", "ui.router.util", "ui.router.angular1"]),
12174 Rr = E.module("ui.router", ["ui.router.init", "ui.router.state", "ui.router.angular1"]),
12175 Pr = (E.module("ui.router.compat", ["ui.router"]), null);
12178 (Pr = this.router = new $n).stateProvider = new Tr(Pr.stateRegistry, Pr.stateService), Pr.stateRegistry.decorator("views", $r), Pr.stateRegistry.decorator("onExit", Mr("onExit")), Pr.stateRegistry.decorator("onRetain", Mr("onRetain")), Pr.stateRegistry.decorator("onEnter", Mr("onEnter")), Pr.viewService._pluginapi._viewConfigFactory("ng1", yr());
12179 var s = Pr.locationService = Pr.locationConfig = new Ar(e);
12181 function t(e, t, n, r, i, o, a) {
12182 return s._runtimeServices(i, e, r, t, n), delete Pr.router, delete Pr.$get, Pr
12184 return Ar.monkeyPatchPathParameterType(Pr), ((Pr.router = Pr).$get = t).$inject = ["$location", "$browser", "$window", "$sniffer", "$rootScope", "$http", "$templateCache"], Pr
12186 Hr.$inject = ["$locationProvider"];
12187 var jr = function(n) {
12188 return ["$uiRouterProvider", function(e) {
12189 var t = e.router[n];
12190 return t.$get = function() {
12196 function Lr(t, e, n) {
12197 if (P.$injector = t, P.$q = e, !t.hasOwnProperty("strictDi")) try {
12198 t.invoke(["checkStrictDi", function(e) {}])
12200 t.strictDi = !!/strict mode/.exec(e && e.toString())
12202 n.stateRegistry.get().map(function(e) {
12203 return e.$$state().resolvables
12204 }).reduce(pe, []).filter(function(e) {
12205 return "deferred" === e.deps
12206 }).forEach(function(e) {
12207 return e.deps = t.annotate(e.resolveFn, t.strictDi)
12210 Lr.$inject = ["$injector", "$q", "$uiRouter"];
12213 e.$watch(function() {
12214 ct.approximateDigests++
12217 Fr.$inject = ["$rootScope"], Dr.provider("$uiRouter", Hr), Nr.provider("$urlRouter", ["$uiRouterProvider", function(e) {
12218 return e.urlRouterProvider = new Sr(e)
12219 }]), Or.provider("$urlService", jr("urlService")), Or.provider("$urlMatcherFactory", ["$uiRouterProvider", function() {
12220 return Pr.urlMatcherFactory
12221 }]), Or.provider("$templateFactory", function() {
12223 }), Ir.provider("$stateRegistry", jr("stateRegistry")), Ir.provider("$uiRouterGlobals", jr("globals")), Ir.provider("$transitions", jr("transitionService")), Ir.provider("$state", ["$uiRouterProvider", function() {
12224 return U(Pr.stateProvider, {
12226 return Pr.stateService
12229 }]), Ir.factory("$stateParams", ["$uiRouter", function(e) {
12230 return e.globals.params
12231 }]), Rr.factory("$view", function() {
12232 return Pr.viewService
12233 }), Rr.service("$trace", function() {
12235 }), Rr.run(Fr), Or.run(["$urlMatcherFactory", function(e) {}]), Ir.run(["$state", function(e) {}]), Nr.run(["$urlRouter", function(e) {}]), Dr.run(Lr);
12236 var qr, Ur, Vr, Br, zr = function(n) {
12237 return n.getTokens().filter(M).map(function(e) {
12238 var t = n.getResolvable(e);
12239 return [e, "NOWAIT" === n.getPolicy(t).async ? t.promise : t.data]
12244 var t, n = e.match(/^\s*({[^}]*})\s*$/);
12245 if (n && (e = "(" + n[1] + ")"), !(t = e.replace(/\n/g, " ").match(/^\s*([^(]*?)\s*(\((.*)\))?\s*$/)) || 4 !== t.length) throw new Error("Invalid state ref '" + e + "'");
12247 state: t[1] || null,
12248 paramExpr: t[3] || null
12253 var t = e.parent().inheritedData("$uiView"),
12254 n = C("$cfg.path")(t);
12255 return n ? xe(n).state.name : void 0
12258 function Gr(e, t, n) {
12259 var r, i = n.uiState || e.current.name,
12261 relative: Yr(t) || r.$current,
12264 }), n.uiStateOpts || {}),
12265 a = e.href(i, n.uiStateParams, o);
12268 uiStateParams: n.uiStateParams,
12275 var t = "[object SVGAnimatedString]" === Object.prototype.toString.call(e.prop("href")),
12276 n = "FORM" === e[0].nodeName;
12278 attr: n ? "action" : t ? "xlink:href" : "href",
12279 isAnchor: "A" === e.prop("tagName").toUpperCase(),
12284 function Zr(o, a, s, l, c) {
12285 return function(e) {
12286 var t = e.which || e.button,
12288 if (!(1 < t || e.ctrlKey || e.metaKey || e.shiftKey || o.attr("target"))) {
12289 var r = s(function() {
12290 o.attr("disabled") || a.go(n.uiState, n.uiStateParams, n.uiStateOpts)
12292 e.preventDefault();
12293 var i = l.isAnchor && !n.href ? 1 : 0;
12294 e.preventDefault = function() {
12295 i-- <= 0 && s.cancel(r)
12301 function Xr(i, e, o, t) {
12303 t && (a = t.events), S(a) || (a = ["click"]);
12304 for (var n = i.on ? "on" : "bind", r = 0, s = a; r < s.length; r++) {
12308 e.$on("$destroy", function() {
12309 for (var e = i.off ? "off" : "unbind", t = 0, n = a; t < n.length; t++) {
12317 var e = function(e, t, n) {
12318 return r.is(e, t, n)
12320 return e.$stateful = !0, e
12324 var e = function(e, t, n) {
12325 return r.includes(e, t, n)
12327 return e.$stateful = !0, e
12330 function ei(m, g, v, e, b, t) {
12331 var y = C("viewDecl.controllerAs"),
12332 _ = C("viewDecl.resolveAs");
12336 compile: function(e) {
12340 var e = n.data("$uiView");
12341 if (!e) return n.html(p), void m(n.contents())(t);
12342 var r = e.$cfg || {
12346 i = r.path && new St(r.path);
12347 n.html(r.getTemplate(n, i) || p), ct.traceUIViewFill(e.$uiView, n.html());
12348 var o = m(n.contents()),
12354 var u = g(a, U({}, c, {
12358 s && (t[s] = u, t[s][l] = c), n.data("$ngControllerController", u), n.children().data("$ngControllerController", u), ri(b, v, u, t, r)
12360 if (M(r.component)) var d = Le(r.component),
12361 f = new RegExp("^(x-|data-)?" + d + "$", "i"),
12362 h = t.$watch(function() {
12363 var e = [].slice.call(n[0].children).filter(function(e) {
12364 return e && e.tagName && f.exec(e.tagName)
12366 return e && E.element(e).data("$" + r.component + "Controller")
12368 e && (ri(b, v, e, t, r), h())
12375 qr = ["$uiRouter", "$timeout", function(f, h) {
12376 var p = f.stateService;
12379 require: ["?^uiSrefActive", "?^uiSrefActiveEq"],
12380 link: function(e, t, n, r) {
12392 s && s(), a && (s = a.$$addStateInfo(e.uiState, e.uiStateParams)), null != e.href && n.$set(o.attr, e.href)
12394 l.uiState = u.state, l.uiStateOpts = n.uiSrefOpts ? e.$eval(n.uiSrefOpts) : {}, u.paramExpr && (e.$watch(u.paramExpr, function(e) {
12395 l.uiStateParams = U({}, e), d()
12396 }, !0), l.uiStateParams = U({}, e.$eval(u.paramExpr))), d(), e.$on("$destroy", f.stateRegistry.onStatesChanged(d)), e.$on("$destroy", f.transitionService.onSuccess({}, d)), o.clickable && (i = Zr(t, p, h, o, c), Xr(t, e, i, l.uiStateOpts))
12399 }], Ur = ["$uiRouter", "$timeout", function(h, p) {
12400 var m = h.stateService;
12403 require: ["?^uiSrefActive", "?^uiSrefActiveEq"],
12404 link: function(n, e, r, t) {
12412 u = ["uiState", "uiStateParams", "uiStateOpts"],
12413 d = u.reduce(function(e, t) {
12419 s && s(), a && (s = a.$$addStateInfo(e.uiState, e.uiStateParams)), null != e.href && r.$set(o.attr, e.href)
12421 u.forEach(function(t) {
12422 l[t] = r[t] ? n.$eval(r[t]) : null, r.$observe(t, function(e) {
12423 d[t](), d[t] = n.$watch(e, function(e) {
12427 }), f(), n.$on("$destroy", h.stateRegistry.onStatesChanged(f)), n.$on("$destroy", h.transitionService.onSuccess({}, f)), o.clickable && (i = Zr(e, m, p, o, c), Xr(e, n, i, l.uiStateOpts))
12430 }], Vr = ["$state", "$stateParams", "$interpolate", "$uiRouter", function(p, e, m, g) {
12433 controller: ["$scope", "$element", "$attrs", function(s, l, e) {
12434 var c, r, t, n, i, u = [];
12435 c = m(e.uiSrefActiveEq || "", !1)(s);
12437 r = s.$eval(e.uiSrefActive)
12441 e.promise.then(h, z)
12449 A(e) && (u = [], q(e, function(e, t) {
12450 var n = function(e, t) {
12452 f(n.state, s.$eval(n.paramExpr), t)
12454 M(e) ? n(e, t) : S(e) && q(e, function(e) {
12460 function f(e, t, n) {
12462 state: p.get(e, Yr(l)) || {
12475 var t = function(e) {
12476 return e.split(/\s/).filter(B)
12479 return e.map(function(e) {
12480 return e.activeClass
12481 }).map(t).reduce(pe, [])
12483 n = e(u).concat(t(c)).reduce(ve, []),
12484 r = e(u.filter(function(e) {
12485 return p.includes(e.state.name, e.params)
12487 i = !!u.filter(function(e) {
12488 return p.is(e.state.name, e.params)
12489 }).length ? t(c) : [],
12490 o = r.concat(i).reduce(ve, []),
12491 a = n.filter(function(e) {
12494 s.$evalAsync(function() {
12495 o.forEach(function(e) {
12496 return l.addClass(e)
12497 }), a.forEach(function(e) {
12498 return l.removeClass(e)
12502 d(r = r || m(e.uiSrefActive || "", !1)(s)), this.$$addStateInfo = function(e, t) {
12503 if (!(A(r) && 0 < u.length)) {
12504 var n = f(e, t, r);
12507 }, s.$on("$destroy", (t = g.stateRegistry.onStatesChanged(a), n = g.transitionService.onStart({}, o), i = s.$on("$stateChangeSuccess", h), function() {
12509 })), g.globals.transition && o(g.globals.transition), h()
12512 }], E.module("ui.router.state").directive("uiSref", qr).directive("uiSrefActive", Vr).directive("uiSrefActiveEq", Vr).directive("uiState", Ur), Qr.$inject = ["$state"], Jr.$inject = ["$state"], E.module("ui.router.state").filter("isState", Qr).filter("includedByState", Jr), Br = ["$view", "$animate", "$uiViewScroll", "$interpolate", "$q", function(i, o, b, y, _) {
12516 $context: i._pluginapi._rootViewContext()
12526 transclude: "element",
12527 compile: function(e, t, v) {
12528 return function(a, s, e) {
12529 var l, c, u, d, t, f = e.onload || "",
12532 enter: function(e, t, n) {
12533 2 < E.version.minor ? o.enter(e, null, t).then(n) : o.enter(e, null, t, n)
12535 leave: function(e, t) {
12536 2 < E.version.minor ? o.leave(e).then(t) : o.leave(e, t)
12539 n = s.inheritedData("$uiView") || $,
12540 m = y(e.uiView || e.name || "")(a) || "$default",
12545 fqn: n.$uiView.fqn ? n.$uiView.fqn + "." + m : m,
12547 configUpdated: function(e) {
12548 if (e && !(e instanceof Er)) return;
12549 if (t = d, n = e, t === n) return;
12551 ct.traceUIViewConfigUpdated(g, e && e.viewDecl && e.viewDecl.$context), r(d = e)
12553 get creationContext() {
12554 var e = C("$cfg.viewDecl.$context")(n),
12555 t = C("$uiView.creationContext")(n);
12569 $animEnter: n.promise,
12570 $animLeave: r.promise,
12573 t.$emit("$viewContentLoading", m), c = v(t, function(e) {
12574 e.data("$uiViewAnim", o), e.data("$uiView", i), p.enter(e, s, function() {
12575 n.resolve(), u && u.$emit("$viewContentAnimationEnded"), (k(h) && !h || a.$eval(h)) && b(e)
12578 if (l && (ct.traceUIViewEvent("Removing (previous) el", l.data("$uiView")), l.remove(), l = null), u && (ct.traceUIViewEvent("Destroying scope", g), u.$destroy(), u = null), c) {
12579 var e = c.data("$uiViewAnim");
12580 ct.traceUIViewEvent("Animate out", e), p.leave(c, function() {
12581 e.$$animLeave.resolve(), l = null
12582 }), l = c, c = null
12585 }), (u = t).$emit("$viewContentLoaded", e || d), u.$eval(f)
12587 ct.traceUIViewEvent("Linking", g), s.data("$uiView", {
12589 }), r(), t = i.registerUIView(g), a.$on("$destroy", function() {
12590 ct.traceUIViewEvent("Destroying/Unregistering", g), t()
12596 }], ei.$inject = ["$compile", "$controller", "$transitions", "$view", "$q", "$timeout"];
12597 var ti = "function" == typeof E.module("ui.router").component,
12600 function ri(r, e, c, t, n) {
12601 !x(c.$onInit) || (n.viewDecl.component || n.viewDecl.componentProvider) && ti || c.$onInit();
12602 var u = xe(n.path).state.self,
12606 if (x(c.uiOnParamsChanged)) {
12607 var d = new St(n.path).getResolvable("$transition$").data;
12608 t.$on("$destroy", e.onSuccess({}, function(e) {
12609 if (e !== d && -1 === e.exiting().indexOf(u)) {
12610 var n = e.params("to"),
12611 r = e.params("from"),
12613 return e.paramSchema
12615 i = e.treeChanges("to").map(t).reduce(pe, []),
12616 o = e.treeChanges("from").map(t).reduce(pe, []),
12617 a = i.filter(function(e) {
12618 var t = o.indexOf(e);
12619 return -1 === t || !o[t].type.equals(n[e.id], r[e.id])
12622 var s = a.map(function(e) {
12625 l = se(n, function(e, t) {
12626 return -1 !== s.indexOf(t)
12628 c.uiOnParamsChanged(l, e)
12633 if (x(c.uiCanExit)) {
12635 a = "_uiCanExitIds",
12637 return !!e && (e[a] && !0 === e[a][o] || s(e.redirectedFrom()))
12642 t.$on("$destroy", e.onBefore(l, function(e) {
12643 var t, n = e[a] = e[a] || {};
12644 return s(e) || (t = r.when(c.uiCanExit(e))).then(function(e) {
12645 return n[o] = !1 !== e
12650 E.module("ui.router.state").directive("uiView", Br), E.module("ui.router.state").directive("uiView", ei), E.module("ui.router.state").provider("$uiViewScroll", function() {
12652 this.useAnchorScroll = function() {
12654 }, this.$get = ["$anchorScroll", "$timeout", function(e, t) {
12655 return n ? e : function(e) {
12656 return t(function() {
12657 e[0].scrollIntoView()
12662 m.$injector = Kn, m.$q = zn, m.BaseLocationServices = ir, m.BaseUrlRule = cn, m.BrowserLocationConfig = fr, m.Glob = Ne, m.HashLocationService = ar, m.HookBuilder = Xt, m.MemoryLocationConfig = dr, m.MemoryLocationService = lr, m.NATIVE_INJECTOR_TOKEN = At, m.Ng1ViewConfig = Er, m.Param = vt, m.ParamFactory = an, m.ParamType = ut, m.ParamTypes = bt, m.PathNode = _t, m.PathUtils = wt, m.PushStateLocationService = ur, m.Queue = Ie, m.RegisteredHook = Kt, m.Rejection = Pe, m.Resolvable = kt, m.ResolveContext = St, m.StateBuilder = qt, m.StateMatcher = Vt, m.StateObject = Ut, m.StateParams = yt, m.StateProvider = Tr, m.StateQueueManager = Bt, m.StateRegistry = zt, m.StateService = Bn, m.TargetState = $t, m.Trace = lt, m.Transition = Jt, m.TransitionEventType = Ln, m.TransitionHook = Yt, m.TransitionService = Vn, m.UIRouter = $n, m.UIRouterGlobals = hn, m.UIRouterPluginBase = vr, m.UrlConfig = gn, m.UrlMatcher = rn, m.UrlMatcherFactory = sn, m.UrlRouter = dn, m.UrlRouterProvider = Sr, m.UrlRuleFactory = ln, m.UrlRules = mn, m.UrlService = vn, m.ViewService = fn, m._extend = Me, m._inArray = K, m._pushTo = J, m._removeFrom = X, m.all = u, m.allTrueR = fe, m.ancestors = re, m.and = r, m.any = f, m.anyTrueR = he, m.applyPairs = ke, m.arrayTuples = Ce, m.assertFn = we, m.assertMap = $e, m.assertPredicate = _e, m.beforeAfterSubstr = ze, m.buildUrl = Jn, m.compose = n, m.copy = Te, m.core = br, m.createProxyFunctions = W, m.curry = c, m.default = "ui.router", m.defaultResolvePolicy = Ct, m.defaultTransOpts = Un, m.defaults = te, m.deregAll = ee, m.eq = o, m.equals = V, m.extend = U, m.filter = se, m.find = le, m.flatten = ye, m.flattenR = me, m.fnToString = qe, m.forEach = q, m.fromJson = L, m.functionToString = Fe, m.getLocals = zr, m.getNg1ViewConfigFactory = yr, m.getParams = Xn, m.hashLocationPlugin = pr, m.hostRegex = We, m.identity = B, m.inArray = G, m.inherit = Y, m.invoke = a, m.is = h, m.isArray = S, m.isDate = D, m.isDefined = k, m.isFunction = x, m.isInjectable = N, m.isNull = $, m.isNullOrUndefined = w, m.isNumber = T, m.isObject = A, m.isPromise = I, m.isRegExp = O, m.isString = M, m.isUndefined = _, m.joinNeighborsR = Je, m.kebobString = Le, m.keyValsToObjectR = Zn, m.locationPluginFactory = er, m.makeEvent = Zt, m.makeStub = R, m.map = ue, m.mapObj = ce, m.matchState = Gt, m.maxLength = He, m.memoryLocationPlugin = gr, m.mergeR = ne, m.ng1ViewsBuilder = $r, m.noop = z, m.not = d, m.omit = oe, m.or = i, m.padString = je, m.pairs = Ee, m.parse = C, m.parseUrl = Qn, m.pattern = g, m.pick = ie, m.pipe = l, m.pluck = ae, m.prop = y, m.propEq = v, m.pushR = ge, m.pushStateLocationPlugin = mr, m.pushTo = Q, m.removeFrom = Z, m.resolvablesBuilder = jt, m.resolvePolicies = Et, m.root = H, m.services = P, m.servicesPlugin = hr, m.silenceUncaughtInPromise = De, m.silentRejection = Oe, m.splitEqual = Ze, m.splitHash = Ge, m.splitOnDelim = Qe, m.splitQuery = Ke, m.stringify = Be, m.stripLastPathElement = Ye, m.tail = xe, m.toJson = F, m.trace = ct, m.trimHashVal = Xe, m.uniqR = ve, m.unnest = be, m.unnestR = pe, m.val = p, m.values = de, m.watchDigests = Fr, Object.defineProperty(m, "__esModule", {
12667 var na, ra = "Expected a function",
12668 ia = "__lodash_hash_undefined__",
12669 oa = "__lodash_placeholder__",
12670 aa = 9007199254740991,
12678 ["curryRight", 16],
12681 ["partialRight", 64],
12684 ua = "[object Arguments]",
12685 da = "[object Array]",
12686 fa = "[object Boolean]",
12687 ha = "[object Date]",
12688 pa = "[object Error]",
12689 ma = "[object Function]",
12690 ga = "[object GeneratorFunction]",
12691 va = "[object Map]",
12692 ba = "[object Number]",
12693 ya = "[object Object]",
12694 _a = "[object Promise]",
12695 $a = "[object RegExp]",
12696 wa = "[object Set]",
12697 Ea = "[object String]",
12698 Ca = "[object Symbol]",
12699 ka = "[object WeakMap]",
12700 xa = "[object ArrayBuffer]",
12701 Ta = "[object DataView]",
12702 Ma = "[object Float32Array]",
12703 Aa = "[object Float64Array]",
12704 Sa = "[object Int8Array]",
12705 Da = "[object Int16Array]",
12706 Oa = "[object Int32Array]",
12707 Na = "[object Uint8Array]",
12708 Ia = "[object Uint8ClampedArray]",
12709 Ra = "[object Uint16Array]",
12710 Pa = "[object Uint32Array]",
12711 Ha = /\b__p \+= '';/g,
12712 ja = /\b(__p \+=) '' \+/g,
12713 La = /(__e\(.*?\)|\b__t\)) \+\n'';/g,
12714 Fa = /&(?:amp|lt|gt|quot|#39);/g,
12716 Ua = RegExp(Fa.source),
12717 Va = RegExp(qa.source),
12718 Ba = /<%-([\s\S]+?)%>/g,
12719 za = /<%([\s\S]+?)%>/g,
12720 Wa = /<%=([\s\S]+?)%>/g,
12721 Ya = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
12723 Ka = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,
12724 Za = /[\\^$.*+?()[\]{}|]/g,
12725 Xa = RegExp(Za.source),
12729 ts = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
12730 ns = /\{\n\/\* \[wrapped with (.+)\] \*/,
12732 is = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,
12734 as = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,
12736 ls = /^[-+]0x[0-9a-f]+$/i,
12738 us = /^\[object .+?Constructor\]$/,
12739 ds = /^0o[0-7]+$/i,
12740 fs = /^(?:0|[1-9]\d*)$/,
12741 hs = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,
12743 ms = /['\n\r\u2028\u2029\\]/g,
12744 e = "\\ud800-\\udfff",
12745 t = "\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",
12746 n = "\\u2700-\\u27bf",
12747 r = "a-z\\xdf-\\xf6\\xf8-\\xff",
12748 i = "A-Z\\xc0-\\xd6\\xd8-\\xde",
12749 o = "\\ufe0e\\ufe0f",
12750 a = "\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",
12757 h = "[^" + e + a + u + n + r + i + "]",
12758 p = "\\ud83c[\\udffb-\\udfff]",
12759 m = "[^" + e + "]",
12760 g = "(?:\\ud83c[\\udde6-\\uddff]){2}",
12761 v = "[\\ud800-\\udbff][\\udc00-\\udfff]",
12763 y = "(?:" + f + "|" + h + ")",
12764 _ = "(?:" + b + "|" + h + ")",
12765 $ = "(?:['’](?:d|ll|m|re|s|t|ve))?",
12766 w = "(?:['’](?:D|LL|M|RE|S|T|VE))?",
12767 E = "(?:" + c + "|" + p + ")" + "?",
12768 C = "[" + o + "]?",
12769 k = C + E + ("(?:\\u200d(?:" + [m, g, v].join("|") + ")" + C + E + ")*"),
12770 x = "(?:" + [d, g, v].join("|") + ")" + k,
12771 T = "(?:" + [m + c + "?", c, g, v, s].join("|") + ")",
12772 gs = RegExp("['’]", "g"),
12773 vs = RegExp(c, "g"),
12774 M = RegExp(p + "(?=" + p + ")|" + T + k, "g"),
12775 bs = RegExp([b + "?" + f + "+" + $ + "(?=" + [l, b, "$"].join("|") + ")", _ + "+" + w + "(?=" + [l, b + y, "$"].join("|") + ")", b + "?" + y + "+" + $, b + "+" + w, "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", u, x].join("|"), "g"),
12776 A = RegExp("[\\u200d" + e + t + o + "]"),
12777 ys = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,
12778 _s = ["Array", "Buffer", "DataView", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array", "Int16Array", "Int32Array", "Map", "Math", "Object", "Promise", "RegExp", "Set", "String", "Symbol", "TypeError", "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap", "_", "clearTimeout", "isFinite", "parseInt", "setTimeout"],
12781 ws[Ma] = ws[Aa] = ws[Sa] = ws[Da] = ws[Oa] = ws[Na] = ws[Ia] = ws[Ra] = ws[Pa] = !0, ws[ua] = ws[da] = ws[xa] = ws[fa] = ws[Ta] = ws[ha] = ws[pa] = ws[ma] = ws[va] = ws[ba] = ws[ya] = ws[$a] = ws[wa] = ws[Ea] = ws[ka] = !1;
12783 Es[ua] = Es[da] = Es[xa] = Es[Ta] = Es[fa] = Es[ha] = Es[Ma] = Es[Aa] = Es[Sa] = Es[Da] = Es[Oa] = Es[va] = Es[ba] = Es[ya] = Es[$a] = Es[wa] = Es[Ea] = Es[Ca] = Es[Na] = Es[Ia] = Es[Ra] = Es[Pa] = !0, Es[pa] = Es[ma] = Es[ka] = !1;
12794 D = "object" == typeof global && global && global.Object === Object && global,
12795 O = "object" == typeof self && self && self.Object === Object && self,
12796 xs = D || O || Function("return this")(),
12797 N = "object" == typeof exports && exports && !exports.nodeType && exports,
12798 I = N && "object" == typeof module && module && !module.nodeType && module,
12799 Ts = I && I.exports === N,
12800 R = Ts && D.process,
12803 var e = I && I.require && I.require("util").types;
12804 return e || R && R.binding && R.binding("util")
12807 Ms = P && P.isArrayBuffer,
12808 As = P && P.isDate,
12810 Ds = P && P.isRegExp,
12812 Ns = P && P.isTypedArray;
12814 function Is(e, t, n) {
12815 switch (n.length) {
12819 return e.call(t, n[0]);
12821 return e.call(t, n[0], n[1]);
12823 return e.call(t, n[0], n[1], n[2])
12825 return e.apply(t, n)
12828 function Rs(e, t, n, r) {
12829 for (var i = -1, o = null == e ? 0 : e.length; ++i < o;) {
12836 function Ps(e, t) {
12837 for (var n = -1, r = null == e ? 0 : e.length; ++n < r && !1 !== t(e[n], n, e););
12841 function Hs(e, t) {
12842 for (var n = null == e ? 0 : e.length; n-- && !1 !== t(e[n], n, e););
12846 function js(e, t) {
12847 for (var n = -1, r = null == e ? 0 : e.length; ++n < r;)
12848 if (!t(e[n], n, e)) return !1;
12852 function Ls(e, t) {
12853 for (var n = -1, r = null == e ? 0 : e.length, i = 0, o = []; ++n < r;) {
12855 t(a, n, e) && (o[i++] = a)
12860 function Fs(e, t) {
12861 return !!(null == e ? 0 : e.length) && -1 < Ks(e, t, 0)
12864 function qs(e, t, n) {
12865 for (var r = -1, i = null == e ? 0 : e.length; ++r < i;)
12866 if (n(t, e[r])) return !0;
12870 function Us(e, t) {
12871 for (var n = -1, r = null == e ? 0 : e.length, i = Array(r); ++n < r;) i[n] = t(e[n], n, e);
12875 function Vs(e, t) {
12876 for (var n = -1, r = t.length, i = e.length; ++n < r;) e[i + n] = t[n];
12880 function Bs(e, t, n, r) {
12882 o = null == e ? 0 : e.length;
12883 for (r && o && (n = e[++i]); ++i < o;) n = t(n, e[i], i, e);
12887 function zs(e, t, n, r) {
12888 var i = null == e ? 0 : e.length;
12889 for (r && i && (n = e[--i]); i--;) n = t(n, e[i], i, e);
12893 function Ws(e, t) {
12894 for (var n = -1, r = null == e ? 0 : e.length; ++n < r;)
12895 if (t(e[n], n, e)) return !0;
12898 var H = Js("length");
12900 function Ys(e, r, t) {
12902 return t(e, function(e, t, n) {
12903 if (r(e, t, n)) return i = t, !1
12907 function Gs(e, t, n, r) {
12908 for (var i = e.length, o = n + (r ? 1 : -1); r ? o-- : ++o < i;)
12909 if (t(e[o], o, e)) return o;
12913 function Ks(e, t, n) {
12914 return t == t ? function(e, t, n) {
12918 if (e[r] === t) return r;
12920 }(e, t, n) : Gs(e, Xs, n)
12923 function Zs(e, t, n, r) {
12924 for (var i = n - 1, o = e.length; ++i < o;)
12925 if (r(e[i], t)) return i;
12933 function Qs(e, t) {
12934 var n = null == e ? 0 : e.length;
12935 return n ? tl(e, t) / n : sa
12939 return function(e) {
12940 return null == e ? na : e[t]
12945 return function(e) {
12946 return null == t ? na : t[e]
12950 function el(e, r, i, o, t) {
12951 return t(e, function(e, t, n) {
12952 i = o ? (o = !1, e) : r(i, e, t, n)
12956 function tl(e, t) {
12957 for (var n, r = -1, i = e.length; ++r < i;) {
12959 o !== na && (n = n === na ? o : n + o)
12964 function nl(e, t) {
12965 for (var n = -1, r = Array(e); ++n < e;) r[n] = t(n);
12970 return function(e) {
12975 function il(t, e) {
12976 return Us(e, function(e) {
12981 function ol(e, t) {
12985 function al(e, t) {
12986 for (var n = -1, r = e.length; ++n < r && -1 < Ks(t, e[n], 0););
12990 function sl(e, t) {
12991 for (var n = e.length; n-- && -1 < Ks(t, e[n], 0););
13205 return e.forEach(function(e, t) {
13210 function hl(t, n) {
13211 return function(e) {
13216 function pl(e, t) {
13217 for (var n = -1, r = e.length, i = 0, o = []; ++n < r;) {
13219 a !== t && a !== oa || (e[n] = oa, o[i++] = n)
13227 return e.forEach(function(e) {
13233 return dl(e) ? function(e) {
13234 var t = M.lastIndex = 0;
13235 for (; M.test(e);) ++t;
13241 return dl(e) ? e.match(M) || [] : e.split("")
13250 var yl = function e(t) {
13251 var n, M = (t = null == t ? xs : yl.defaults(xs.Object(), t, yl.pick(xs, _s))).Array,
13263 l = t["__core-js_shared__"],
13265 k = d.hasOwnProperty,
13267 h = (n = /[^.]+$/.exec(l && l.keys && l.keys.IE_PROTO || "")) ? "Symbol(src)_1." + n : "",
13271 y = v("^" + c.call(k).replace(Za, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"),
13272 _ = Ts ? t.Buffer : na,
13275 E = _ ? _.allocUnsafe : na,
13276 x = hl(C.getPrototypeOf, C),
13278 S = d.propertyIsEnumerable,
13280 O = $ ? $.isConcatSpreadable : na,
13281 N = $ ? $.iterator : na,
13282 I = $ ? $.toStringTag : na,
13285 var e = Fn(C, "defineProperty");
13286 return e({}, "", {}), e
13289 P = t.clearTimeout !== xs.clearTimeout && t.clearTimeout,
13290 H = r && r.now !== xs.Date.now && r.now,
13291 j = t.setTimeout !== xs.setTimeout && t.setTimeout,
13294 q = C.getOwnPropertySymbols,
13295 U = _ ? _.isBuffer : na,
13305 Q = Fn(t, "DataView"),
13307 ee = Fn(t, "Promise"),
13309 ne = Fn(t, "WeakMap"),
13310 re = Fn(C, "create"),
13318 de = $ ? $.prototype : na,
13319 fe = de ? de.valueOf : na,
13320 he = de ? de.toString : na;
13323 if (Di(e) && !_i(e) && !(e instanceof be)) {
13324 if (e instanceof ve) return e;
13325 if (k.call(e, "__wrapped__")) return mr(e)
13329 var me = function() {
13331 return function(e) {
13332 if (!Si(e)) return {};
13333 if (T) return T(e);
13336 return n.prototype = na, t
13342 function ve(e, t) {
13343 this.__wrapped__ = e, this.__actions__ = [], this.__chain__ = !!t, this.__index__ = 0, this.__values__ = na
13347 this.__wrapped__ = e, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, this.__iteratees__ = [], this.__takeCount__ = la, this.__views__ = []
13352 n = null == e ? 0 : e.length;
13353 for (this.clear(); ++t < n;) {
13355 this.set(r[0], r[1])
13361 n = null == e ? 0 : e.length;
13362 for (this.clear(); ++t < n;) {
13364 this.set(r[0], r[1])
13370 n = null == e ? 0 : e.length;
13371 for (this.clear(); ++t < n;) {
13373 this.set(r[0], r[1])
13379 n = null == e ? 0 : e.length;
13380 for (this.__data__ = new $e; ++t < n;) this.add(e[t])
13384 var t = this.__data__ = new _e(e);
13388 function Ce(e, t) {
13391 i = !n && !r && Ci(e),
13392 o = !n && !r && !i && Li(e),
13393 a = n || r || i || o,
13394 s = a ? nl(e.length, u) : [],
13396 for (var c in e) !t && !k.call(e, c) || a && ("length" == c || i && ("offset" == c || "parent" == c) || o && ("buffer" == c || "byteLength" == c || "byteOffset" == c) || Yn(c, l)) || s.push(c);
13402 return t ? e[wt(0, t - 1)] : na
13405 function xe(e, t) {
13406 return cr(rn(e), Re(t, 0, e.length))
13413 function Me(e, t, n) {
13414 (n === na || gi(e[t], n)) && (n !== na || t in e) || Ne(e, t, n)
13417 function Ae(e, t, n) {
13419 k.call(e, t) && gi(r, n) && (n !== na || t in e) || Ne(e, t, n)
13422 function Se(e, t) {
13423 for (var n = e.length; n--;)
13424 if (gi(e[n][0], t)) return n;
13428 function De(e, r, i, o) {
13429 return Fe(e, function(e, t, n) {
13434 function Oe(e, t) {
13435 return e && on(t, so(t), e)
13438 function Ne(e, t, n) {
13439 "__proto__" == t && R ? R(e, t, {
13447 function Ie(e, t) {
13448 for (var n = -1, r = t.length, i = M(r), o = null == e; ++n < r;) i[n] = o ? na : no(e, t[n]);
13452 function Re(e, t, n) {
13453 return e == e && (n !== na && (e = e <= n ? e : n), t !== na && (e = t <= e ? e : t)), e
13456 function Pe(n, r, i, e, t, o) {
13460 if (i && (a = t ? i(n, e, t, o) : i(n)), a !== na) return a;
13461 if (!Si(n)) return n;
13462 var u, d, f, h, p, m, g, v, b, y = _i(n);
13464 if (v = (g = n).length, b = new g.constructor(v), v && "string" == typeof g[0] && k.call(g, "index") && (b.index = g.index, b.input = g.input), a = b, !s) return rn(n, a)
13467 $ = _ == ma || _ == ga;
13468 if (Ci(n)) return Xt(n, s);
13469 if (_ == ya || _ == ua || $ && !t) {
13470 if (a = l || $ ? {} : zn(n), !s) return l ? (m = f = n, h = (p = a) && on(m, lo(m), p), on(f, Un(f), h)) : (d = Oe(a, u = n), on(u, qn(u), d))
13472 if (!Es[_]) return t ? n : {};
13473 a = function(e, t, n) {
13474 var r, i, o, a, s, l = e.constructor;
13482 return a = e, s = n ? Qt(a.buffer) : a.buffer, new a.constructor(s, a.byteOffset, a.byteLength);
13499 return (o = new(i = e).constructor(i.source, ss.exec(i))).lastIndex = i.lastIndex, o;
13503 return r = e, fe ? C(fe.call(r)) : {}
13511 o.set(n, a), Pi(n) ? n.forEach(function(e) {
13512 a.add(Pe(e, r, i, e, n, o))
13513 }) : Oi(n) && n.forEach(function(e, t) {
13514 a.set(t, Pe(e, r, i, t, n, o))
13516 var E = y ? na : (c ? l ? Nn : On : l ? lo : so)(n);
13517 return Ps(E || n, function(e, t) {
13518 E && (e = n[t = e]), Ae(a, t, Pe(e, r, i, t, n, o))
13522 function He(e, t, n) {
13524 if (null == e) return !r;
13525 for (e = C(e); r--;) {
13529 if (a === na && !(i in e) || !o(a)) return !1
13534 function je(e, t, n) {
13535 if ("function" != typeof e) throw new A(ra);
13536 return or(function() {
13541 function Le(e, t, n, r) {
13549 n && (t = Us(t, rl(n))), r ? (o = qs, a = !1) : 200 <= t.length && (o = ol, a = !1, t = new we(t));
13550 e: for (; ++i < s;) {
13552 d = null == n ? u : n(u);
13553 if (u = r || 0 !== u ? u : 0, a && d == d) {
13554 for (var f = c; f--;)
13555 if (t[f] === d) continue e;
13557 } else o(t, d, r) || l.push(u)
13561 pe.templateSettings = {
13569 }, (pe.prototype = ge.prototype).constructor = pe, (ve.prototype = me(ge.prototype)).constructor = ve, (be.prototype = me(ge.prototype)).constructor = be, ye.prototype.clear = function() {
13570 this.__data__ = re ? re(null) : {}, this.size = 0
13571 }, ye.prototype.delete = function(e) {
13572 var t = this.has(e) && delete this.__data__[e];
13573 return this.size -= t ? 1 : 0, t
13574 }, ye.prototype.get = function(e) {
13575 var t = this.__data__;
13578 return n === ia ? na : n
13580 return k.call(t, e) ? t[e] : na
13581 }, ye.prototype.has = function(e) {
13582 var t = this.__data__;
13583 return re ? t[e] !== na : k.call(t, e)
13584 }, ye.prototype.set = function(e, t) {
13585 var n = this.__data__;
13586 return this.size += this.has(e) ? 0 : 1, n[e] = re && t === na ? ia : t, this
13587 }, _e.prototype.clear = function() {
13588 this.__data__ = [], this.size = 0
13589 }, _e.prototype.delete = function(e) {
13590 var t = this.__data__,
13592 return !(n < 0 || (n == t.length - 1 ? t.pop() : D.call(t, n, 1), --this.size, 0))
13593 }, _e.prototype.get = function(e) {
13594 var t = this.__data__,
13596 return n < 0 ? na : t[n][1]
13597 }, _e.prototype.has = function(e) {
13598 return -1 < Se(this.__data__, e)
13599 }, _e.prototype.set = function(e, t) {
13600 var n = this.__data__,
13602 return r < 0 ? (++this.size, n.push([e, t])) : n[r][1] = t, this
13603 }, $e.prototype.clear = function() {
13604 this.size = 0, this.__data__ = {
13609 }, $e.prototype.delete = function(e) {
13610 var t = jn(this, e).delete(e);
13611 return this.size -= t ? 1 : 0, t
13612 }, $e.prototype.get = function(e) {
13613 return jn(this, e).get(e)
13614 }, $e.prototype.has = function(e) {
13615 return jn(this, e).has(e)
13616 }, $e.prototype.set = function(e, t) {
13617 var n = jn(this, e),
13619 return n.set(e, t), this.size += n.size == r ? 0 : 1, this
13620 }, we.prototype.add = we.prototype.push = function(e) {
13621 return this.__data__.set(e, ia), this
13622 }, we.prototype.has = function(e) {
13623 return this.__data__.has(e)
13624 }, Ee.prototype.clear = function() {
13625 this.__data__ = new _e, this.size = 0
13626 }, Ee.prototype.delete = function(e) {
13627 var t = this.__data__,
13629 return this.size = t.size, n
13630 }, Ee.prototype.get = function(e) {
13631 return this.__data__.get(e)
13632 }, Ee.prototype.has = function(e) {
13633 return this.__data__.has(e)
13634 }, Ee.prototype.set = function(e, t) {
13635 var n = this.__data__;
13636 if (n instanceof _e) {
13637 var r = n.__data__;
13638 if (!J || r.length < 199) return r.push([e, t]), this.size = ++n.size, this;
13639 n = this.__data__ = new $e(r)
13641 return n.set(e, t), this.size = n.size, this
13646 function Ue(e, r) {
13648 return Fe(e, function(e, t, n) {
13649 return i = !!r(e, t, n)
13653 function Ve(e, t, n) {
13654 for (var r = -1, i = e.length; ++r < i;) {
13657 if (null != a && (s === na ? a == a && !ji(a) : n(a, s))) var s = a,
13663 function Be(e, r) {
13665 return Fe(e, function(e, t, n) {
13666 r(e, t, n) && i.push(e)
13670 function ze(e, t, n, r, i) {
13673 for (n || (n = Wn), i || (i = []); ++o < a;) {
13675 0 < t && n(s) ? 1 < t ? ze(s, t - 1, n, r, i) : Vs(i, s) : r || (i[i.length] = s)
13682 function Ge(e, t) {
13683 return e && We(e, t, so)
13686 function Ke(e, t) {
13687 return e && Ye(e, t, so)
13690 function Ze(t, e) {
13691 return Ls(e, function(e) {
13696 function Xe(e, t) {
13697 for (var n = 0, r = (t = Yt(t, e)).length; null != e && n < r;) e = e[hr(t[n++])];
13698 return n && n == r ? e : na
13701 function Qe(e, t, n) {
13703 return _i(e) ? r : Vs(r, n(e))
13707 return null == e ? e === na ? "[object Undefined]" : "[object Null]" : I && I in C(e) ? function(e) {
13708 var t = k.call(e, I),
13715 return r && (t ? e[I] = n : delete e[I]), i
13716 }(e) : (t = e, p.call(t));
13720 function et(e, t) {
13724 function tt(e, t) {
13725 return null != e && k.call(e, t)
13728 function nt(e, t) {
13729 return null != e && t in C(e)
13732 function rt(e, t, n) {
13733 for (var r = n ? qs : Fs, i = e[0].length, o = e.length, a = o, s = M(o), l = 1 / 0, c = []; a--;) {
13735 a && t && (u = Us(u, rl(t))), l = Y(u.length, l), s[a] = !n && (t || 120 <= i && 120 <= u.length) ? new we(a && u) : na
13740 e: for (; ++d < i && c.length < l;) {
13743 if (h = n || 0 !== h ? h : 0, !(f ? ol(f, p) : r(c, p, n))) {
13744 for (a = o; --a;) {
13746 if (!(m ? ol(m, p) : r(e[a], p, n))) continue e
13748 f && f.push(p), c.push(h)
13754 function it(e, t, n) {
13755 var r = null == (e = nr(e, t = Yt(t, e))) ? e : e[hr(xr(t))];
13756 return null == r ? na : Is(r, e, n)
13760 return Di(e) && Je(e) == ua
13763 function at(e, t, n, r, i) {
13764 return e === t || (null == e || null == t || !Di(e) && !Di(t) ? e != e && t != t : function(e, t, n, r, i, o) {
13767 l = a ? da : Vn(e),
13768 c = s ? da : Vn(t),
13769 u = (l = l == ua ? ya : l) == ya,
13770 d = (c = c == ua ? ya : c) == ya,
13773 if (!Ci(t)) return !1;
13776 if (f && !u) return o || (o = new Ee), a || Li(e) ? Sn(e, t, n, r, i, o) : function(e, t, n, r, i, o, a) {
13779 if (e.byteLength != t.byteLength || e.byteOffset != t.byteOffset) return !1;
13780 e = e.buffer, t = t.buffer;
13782 return !(e.byteLength != t.byteLength || !o(new w(e), new w(t)));
13788 return e.name == t.name && e.message == t.message;
13791 return e == t + "";
13796 if (s || (s = ml), e.size != t.size && !l) return !1;
13798 if (c) return c == t;
13799 r |= 2, a.set(e, t);
13800 var u = Sn(s(e), s(t), r, i, o, a);
13801 return a.delete(e), u;
13803 if (fe) return fe.call(e) == fe.call(t)
13806 }(e, t, l, n, r, i, o);
13808 var h = u && k.call(e, "__wrapped__"),
13809 p = d && k.call(t, "__wrapped__");
13811 var m = h ? e.value() : e,
13812 g = p ? t.value() : t;
13813 return o || (o = new Ee), i(m, g, n, r, o)
13816 return !!f && (o || (o = new Ee), function(e, t, n, r, i, o) {
13821 if (l != c && !a) return !1;
13822 for (var u = l; u--;) {
13824 if (!(a ? d in t : k.call(t, d))) return !1
13827 if (f && o.get(t)) return f == t;
13829 o.set(e, t), o.set(t, e);
13830 for (var p = a; ++u < l;) {
13834 if (r) var v = a ? r(g, m, d, t, e, o) : r(m, g, d, e, t, o);
13835 if (!(v === na ? m === g || i(m, g, n, r, o) : v)) {
13839 p || (p = "constructor" == d)
13842 var b = e.constructor,
13844 b != y && "constructor" in e && "constructor" in t && !("function" == typeof b && b instanceof b && "function" == typeof y && y instanceof y) && (h = !1)
13846 return o.delete(e), o.delete(t), h
13847 }(e, t, n, r, i, o))
13848 }(e, t, n, r, at, i))
13851 function st(e, t, n, r) {
13855 if (null == e) return !o;
13856 for (e = C(e); i--;) {
13858 if (a && s[2] ? s[1] !== e[s[0]] : !(s[0] in e)) return !1
13861 var l = (s = n[i])[0],
13865 if (c === na && !(l in e)) return !1
13868 if (r) var f = r(c, u, l, e, t, d);
13869 if (!(f === na ? at(u, c, 3, r, d) : f)) return !1
13876 return !(!Si(e) || (t = e, h && h in t)) && (Ti(e) ? y : us).test(pr(e));
13881 return "function" == typeof e ? e : null == e ? Io : "object" == typeof e ? _i(e) ? mt(e[0], e[1]) : pt(e) : Vo(e)
13885 if (!Qn(e)) return z(e);
13887 for (var n in C(e)) k.call(e, n) && "constructor" != n && t.push(n);
13892 if (!Si(e)) return function(e) {
13895 for (var n in C(e)) t.push(n);
13900 for (var r in e)("constructor" != r || !t && k.call(e, r)) && n.push(r);
13904 function ft(e, t) {
13908 function ht(e, r) {
13910 o = wi(e) ? M(e.length) : [];
13911 return Fe(e, function(e, t, n) {
13912 o[++i] = r(e, t, n)
13918 return 1 == n.length && n[0][2] ? er(n[0][0], n[0][1]) : function(e) {
13919 return e === t || st(e, t, n)
13923 function mt(n, r) {
13924 return Kn(n) && Jn(r) ? er(hr(n), r) : function(e) {
13926 return t === na && t === r ? ro(e, n) : at(r, t, 3)
13930 function gt(r, i, o, a, s) {
13931 r !== i && We(i, function(e, t) {
13932 if (s || (s = new Ee), Si(e)) ! function(e, t, n, r, i, o, a) {
13936 if (c) return Me(e, n, c);
13937 var u = o ? o(s, l, n + "", e, t, a) : na,
13942 p = !f && !h && Li(l);
13943 u = l, f || h || p ? u = _i(s) ? s : Ei(s) ? rn(s) : h ? Xt(l, !(d = !1)) : p ? Jt(l, !(d = !1)) : [] : Ii(l) || yi(l) ? yi(u = s) ? u = Yi(s) : Si(s) && !Ti(s) || (u = zn(l)) : d = !1
13945 d && (a.set(l, u), i(u, l, r, o, a), a.delete(l)), Me(e, n, u)
13946 }(r, i, t, o, gt, a, s);
13948 var n = a ? a(rr(r, t), e, t + "", r, i, s) : na;
13949 n === na && (n = e), Me(r, t, n)
13954 function vt(e, t) {
13956 if (n) return Yn(t += t < 0 ? n : 0, n) ? e[t] : na
13959 function bt(e, r, n) {
13961 return r = Us(r.length ? r : [Io], rl(Hn())),
13964 for (e.sort(t); n--;) e[n] = e[n].value;
13966 }(ht(e, function(t, e, n) {
13968 criteria: Us(r, function(e) {
13974 }), function(e, t) {
13975 return function(e, t, n) {
13976 for (var r = -1, i = e.criteria, o = t.criteria, a = i.length, s = n.length; ++r < a;) {
13977 var l = en(i[r], o[r]);
13979 if (s <= r) return l;
13981 return l * ("desc" == c ? -1 : 1)
13984 return e.index - t.index
13989 function yt(e, t, n) {
13990 for (var r = -1, i = t.length, o = {}; ++r < i;) {
13993 n(s, a) && Tt(o, Yt(a, e), s)
13998 function _t(e, t, n, r) {
13999 var i = r ? Zs : Ks,
14003 for (e === t && (t = rn(t)), n && (s = Us(e, rl(n))); ++o < a;)
14004 for (var l = 0, c = t[o], u = n ? n(c) : c; - 1 < (l = i(s, u, l, r));) s !== e && D.call(s, l, 1), D.call(e, l, 1);
14008 function $t(e, t) {
14009 for (var n = e ? t.length : 0, r = n - 1; n--;) {
14011 if (n == r || i !== o) {
14013 Yn(i) ? D.call(e, i, 1) : Lt(e, i)
14019 function wt(e, t) {
14020 return e + F(Z() * (t - e + 1))
14023 function Et(e, t) {
14025 if (!e || t < 1 || aa < t) return n;
14026 for (; t % 2 && (n += e), (t = F(t / 2)) && (e += e), t;);
14030 function Ct(e, t) {
14031 return ar(tr(e, t, Io), e + "")
14038 function xt(e, t) {
14040 return cr(n, Re(t, 0, n.length))
14043 function Tt(e, t, n, r) {
14044 if (!Si(e)) return e;
14045 for (var i = -1, o = (t = Yt(t, e)).length, a = o - 1, s = e; null != s && ++i < o;) {
14050 (c = r ? r(u, l, s) : na) === na && (c = Si(u) ? u : Yn(t[i + 1]) ? [] : {})
14052 Ae(s, l, c), s = s[l]
14056 var Mt = ie ? function(e, t) {
14057 return ie.set(e, t), e
14059 At = R ? function(e, t) {
14060 return R(e, "toString", {
14072 function Dt(e, t, n) {
14075 t < 0 && (t = i < -t ? 0 : i + t), (n = i < n ? i : n) < 0 && (n += i), i = n < t ? 0 : n - t >>> 0, t >>>= 0;
14076 for (var o = M(i); ++r < i;) o[r] = e[r + t];
14080 function Ot(e, r) {
14082 return Fe(e, function(e, t, n) {
14083 return !(i = r(e, t, n))
14087 function Nt(e, t, n) {
14089 i = null == e ? r : e.length;
14090 if ("number" == typeof t && t == t && i <= 2147483647) {
14092 var o = r + i >>> 1,
14094 null !== a && !ji(a) && (n ? a <= t : a < t) ? r = o + 1 : i = o
14098 return It(e, t, Io, n)
14101 function It(e, t, n, r) {
14103 for (var i = 0, o = null == e ? 0 : e.length, a = t != t, s = null === t, l = ji(t), c = t === na; i < o;) {
14104 var u = F((i + o) / 2),
14110 if (a) var g = r || p;
14111 else g = c ? p && (r || f) : s ? p && f && (r || !h) : l ? p && f && !h && (r || !m) : !h && !m && (r ? d <= t : d < t);
14112 g ? i = u + 1 : o = u
14114 return Y(o, 4294967294)
14117 function Rt(e, t) {
14118 for (var n = -1, r = e.length, i = 0, o = []; ++n < r;) {
14121 if (!n || !gi(s, l)) {
14123 o[i++] = 0 === a ? 0 : a
14130 return "number" == typeof e ? e : ji(e) ? sa : +e
14134 if ("string" == typeof e) return e;
14135 if (_i(e)) return Us(e, Ht) + "";
14136 if (ji(e)) return he ? he.call(e) : "";
14138 return "0" == t && 1 / e == -1 / 0 ? "-0" : t
14141 function jt(e, t, n) {
14148 if (n) a = !1, i = qs;
14149 else if (200 <= o) {
14150 var c = t ? null : Cn(e);
14151 if (c) return ml(c);
14152 a = !1, i = ol, l = new we
14153 } else l = t ? [] : s;
14154 e: for (; ++r < o;) {
14157 if (u = n || 0 !== u ? u : 0, a && d == d) {
14158 for (var f = l.length; f--;)
14159 if (l[f] === d) continue e;
14160 t && l.push(d), s.push(u)
14161 } else i(l, d, n) || (l !== s && l.push(d), s.push(u))
14166 function Lt(e, t) {
14167 return null == (e = nr(e, t = Yt(t, e))) || delete e[hr(xr(t))]
14170 function Ft(e, t, n, r) {
14171 return Tt(e, t, n(Xe(e, t)), r)
14174 function qt(e, t, n, r) {
14175 for (var i = e.length, o = r ? i : -1;
14176 (r ? o-- : ++o < i) && t(e[o], o, e););
14177 return n ? Dt(e, r ? 0 : o, r ? o + 1 : i) : Dt(e, r ? o + 1 : 0, r ? i : o)
14180 function Ut(e, t) {
14182 return n instanceof be && (n = n.value()), Bs(t, function(e, t) {
14183 return t.func.apply(t.thisArg, Vs([e], t.args))
14187 function Vt(e, t, n) {
14189 if (r < 2) return r ? jt(e[0]) : [];
14190 for (var i = -1, o = M(r); ++i < r;)
14191 for (var a = e[i], s = -1; ++s < r;) s != i && (o[i] = Le(o[i] || a, e[s], t, n));
14192 return jt(ze(o, 1), t, n)
14195 function Bt(e, t, n) {
14196 for (var r = -1, i = e.length, o = t.length, a = {}; ++r < i;) {
14197 var s = r < o ? t[r] : na;
14204 return Ei(e) ? e : []
14208 return "function" == typeof e ? e : Io
14211 function Yt(e, t) {
14212 return _i(e) ? e : Kn(e, t) ? [e] : fr(Gi(e))
14216 function Kt(e, t, n) {
14218 return n = n === na ? r : n, !t && r <= n ? e : Dt(e, t, n)
14220 var Zt = P || function(e) {
14221 return xs.clearTimeout(e)
14224 function Xt(e, t) {
14225 if (t) return e.slice();
14227 r = E ? E(n) : new e.constructor(n);
14228 return e.copy(r), r
14232 var t = new e.constructor(e.byteLength);
14233 return new w(t).set(new w(e)), t
14236 function Jt(e, t) {
14237 var n = t ? Qt(e.buffer) : e.buffer;
14238 return new e.constructor(n, e.byteOffset, e.length)
14241 function en(e, t) {
14251 if (!s && !c && !o && t < e || o && a && l && !s && !c || r && a && l || !n && l || !i) return 1;
14252 if (!r && !o && !c && e < t || c && n && i && !r && !o || s && n && i || !a && i || !l) return -1
14257 function tn(e, t, n, r) {
14258 for (var i = -1, o = e.length, a = n.length, s = -1, l = t.length, c = W(o - a, 0), u = M(l + c), d = !r; ++s < l;) u[s] = t[s];
14259 for (; ++i < a;)(d || i < o) && (u[n[i]] = e[i]);
14260 for (; c--;) u[s++] = e[i++];
14264 function nn(e, t, n, r) {
14265 for (var i = -1, o = e.length, a = -1, s = n.length, l = -1, c = t.length, u = W(o - s, 0), d = M(u + c), f = !r; ++i < u;) d[i] = e[i];
14266 for (var h = i; ++l < c;) d[h + l] = t[l];
14267 for (; ++a < s;)(f || i < o) && (d[h + n[a]] = e[i++]);
14271 function rn(e, t) {
14274 for (t || (t = M(r)); ++n < r;) t[n] = e[n];
14278 function on(e, t, n, r) {
14281 for (var o = -1, a = t.length; ++o < a;) {
14283 l = r ? r(n[s], e[s], s, n, e) : na;
14284 l === na && (l = e[s]), i ? Ne(n, s, l) : Ae(n, s, l)
14289 function an(i, o) {
14290 return function(e, t) {
14291 var n = _i(e) ? Rs : De,
14293 return n(e, i, Hn(t, 2), r)
14298 return Ct(function(e, t) {
14301 i = 1 < r ? t[r - 1] : na,
14302 o = 2 < r ? t[2] : na;
14303 for (i = 3 < s.length && "function" == typeof i ? (r--, i) : na, o && Gn(t[0], t[1], o) && (i = r < 3 ? na : i, r = 1), e = C(e); ++n < r;) {
14311 function ln(o, a) {
14312 return function(e, t) {
14313 if (null == e) return e;
14314 if (!wi(e)) return o(e, t);
14315 for (var n = e.length, r = a ? n : -1, i = C(e);
14316 (a ? r-- : ++r < n) && !1 !== t(i[r], r, i););
14322 return function(e, t, n) {
14323 for (var r = -1, i = C(e), o = n(e), a = o.length; a--;) {
14324 var s = o[l ? a : ++r];
14325 if (!1 === t(i[s], s, i)) break
14332 return function(e) {
14333 var t = dl(e = Gi(e)) ? vl(e) : na,
14334 n = t ? t[0] : e.charAt(0),
14335 r = t ? Kt(t, 1).join("") : e.slice(1);
14341 return function(e) {
14342 return Bs(Mo(_o(e).replace(gs, "")), t, "")
14347 return function() {
14349 switch (e.length) {
14353 return new r(e[0]);
14355 return new r(e[0], e[1]);
14357 return new r(e[0], e[1], e[2]);
14359 return new r(e[0], e[1], e[2], e[3]);
14361 return new r(e[0], e[1], e[2], e[3], e[4]);
14363 return new r(e[0], e[1], e[2], e[3], e[4], e[5]);
14365 return new r(e[0], e[1], e[2], e[3], e[4], e[5], e[6])
14367 var t = me(r.prototype),
14369 return Si(n) ? n : t
14374 return function(e, t, n) {
14378 e = so(e), t = function(e) {
14379 return i(r[e], e, r)
14382 var o = a(e, t, n);
14383 return -1 < o ? r[i ? e[o] : o] : na
14388 return Dn(function(i) {
14391 t = ve.prototype.thru;
14392 for (l && i.reverse(); e--;) {
14394 if ("function" != typeof n) throw new A(ra);
14395 if (t && !a && "wrapper" == Rn(n)) var a = new ve([], !0)
14397 for (e = a ? e : o; ++e < o;) {
14398 var r = Rn(n = i[e]),
14399 s = "wrapper" == r ? In(n) : na;
14400 a = s && Zn(s[0]) && 424 == s[1] && !s[4].length && 1 == s[9] ? a[Rn(s[0])].apply(a, s[3]) : 1 == n.length && Zn(n) ? a[r]() : a.thru(n)
14402 return function() {
14405 if (a && 1 == e.length && _i(t)) return a.plant(t).value();
14406 for (var n = 0, r = o ? i[n].apply(this, e) : t; ++n < o;) r = i[n].call(this, r);
14412 function mn(c, u, d, f, h, p, m, g, v, b) {
14418 C = $ ? na : fn(c);
14419 return function e() {
14420 for (var t = arguments.length, n = M(t), r = t; r--;) n[r] = arguments[r];
14421 if (w) var i = Pn(e),
14422 o = function(e, t) {
14423 for (var n = e.length, r = 0; n--;) e[n] === t && ++r;
14426 if (f && (n = tn(n, f, h, w)), p && (n = nn(n, p, m, w)), t -= o, w && t < b) {
14428 return wn(c, u, mn, e.placeholder, d, n, a, g, v, b - t)
14430 var s = _ ? d : this,
14432 return t = n.length, g ? n = function(e, t) {
14433 for (var n = e.length, r = Y(t.length, n), i = rn(e); r--;) {
14435 e[r] = Yn(o, n) ? i[o] : na
14438 }(n, g) : E && 1 < t && n.reverse(), y && v < t && (n.length = v), this && this !== xs && this instanceof e && (l = C || fn(l)), l.apply(s, n)
14442 function gn(a, s) {
14443 return function(e, t) {
14444 return n = e, r = a, i = s(t), o = {}, Ge(n, function(e, t, n) {
14451 function vn(r, i) {
14452 return function(e, t) {
14454 if (e === na && t === na) return i;
14455 if (e !== na && (n = e), t !== na) {
14456 if (n === na) return t;
14457 t = "string" == typeof e || "string" == typeof t ? (e = Ht(e), Ht(t)) : (e = Pt(e), Pt(t)), n = r(e, t)
14464 return Dn(function(e) {
14465 return e = Us(e, rl(Hn())), Ct(function(t) {
14467 return r(e, function(e) {
14474 function yn(e, t) {
14475 var n = (t = t === na ? " " : Ht(t)).length;
14476 if (n < 2) return n ? Et(t, e) : t;
14477 var r = Et(t, L(e / gl(t)));
14478 return dl(t) ? Kt(vl(r), 0, e).join("") : r.slice(0, e)
14482 return function(e, t, n) {
14483 return n && "number" != typeof n && Gn(e, t, n) && (t = n = na), e = Vi(e), t === na ? (t = e, e = 0) : t = Vi(t),
14484 function(e, t, n, r) {
14485 for (var i = -1, o = W(L((t - e) / (n || 1)), 0), a = M(o); o--;) a[r ? o : ++i] = e, e += n;
14487 }(e, t, n = n === na ? e < t ? 1 : -1 : Vi(n), r)
14492 return function(e, t) {
14493 return "string" == typeof e && "string" == typeof t || (e = Wi(e), t = Wi(t)), n(e, t)
14497 function wn(e, t, n, r, i, o, a, s, l, c) {
14499 t |= u ? 32 : 64, 4 & (t &= ~(u ? 64 : 32)) || (t &= -4);
14500 var d = [e, t, i, u ? o : na, u ? a : na, u ? na : o, u ? na : a, s, l, c],
14501 f = n.apply(na, d);
14502 return Zn(e) && ir(f, d), f.placeholder = r, sr(f, e, t)
14507 return function(e, t) {
14508 if (e = Wi(e), (t = null == t ? 0 : Y(Bi(t), 292)) && V(e)) {
14509 var n = (Gi(e) + "e").split("e");
14510 return +((n = (Gi(r(n[0] + "e" + (+n[1] + t))) + "e").split("e"))[0] + "e" + (+n[1] - t))
14515 var Cn = te && 1 / ml(new te([, -0]))[1] == 1 / 0 ? function(e) {
14520 return function(e) {
14521 var t, n, r, i, o = Vn(e);
14522 return o == va ? fl(e) : o == wa ? (t = e, n = -1, r = Array(t.size), t.forEach(function(e) {
14524 }), r) : Us(a(i = e), function(e) {
14530 function xn(e, t, n, r, i, o, a, s) {
14532 if (!l && "function" != typeof e) throw new A(ra);
14533 var c = r ? r.length : 0;
14534 if (c || (t &= -97, r = i = na), a = a === na ? a : W(Bi(a), 0), s = s === na ? s : Bi(s), c -= i ? i.length : 0, 64 & t) {
14539 var f, h, p, m, g, v, b, y, _, $, w, E, C, k = l ? na : In(e),
14540 x = [e, t, n, r, i, u, d, o, a, s];
14541 if (k && function(e, t) {
14546 a = 128 == r && 8 == n || 128 == r && 256 == n && e[7].length <= t[8] || 384 == r && t[7].length <= t[8] && 8 == n;
14548 1 & r && (e[2] = t[2], i |= 1 & n ? 0 : 4);
14552 e[3] = l ? tn(l, s, t[4]) : s, e[4] = l ? pl(e[3], oa) : t[4]
14553 }(s = t[5]) && (l = e[5], e[5] = l ? nn(l, s, t[6]) : s, e[6] = l ? pl(e[5], oa) : t[6]), (s = t[7]) && (e[7] = s), 128 & r && (e[8] = null == e[8] ? t[8] : Y(e[8], t[8])), null == e[9] && (e[9] = t[9]), e[0] = t[0], e[1] = i
14555 }(x, k), e = x[0], t = x[1], n = x[2], r = x[3], i = x[4], !(s = x[9] = x[9] === na ? l ? 0 : e.length : W(x[9] - c, 0)) && 24 & t && (t &= -25), t && 1 != t) T = 8 == t || 16 == t ? (b = t, y = s, _ = fn(v = e), function e() {
14556 for (var t = arguments.length, n = M(t), r = t, i = Pn(e); r--;) n[r] = arguments[r];
14557 var o = t < 3 && n[0] !== i && n[t - 1] !== i ? [] : pl(n, i);
14558 return (t -= o.length) < y ? wn(v, b, mn, e.placeholder, na, n, o, na, na, y - t) : Is(this && this !== xs && this instanceof e ? _ : v, this, n)
14559 }) : 32 != t && 33 != t || i.length ? mn.apply(na, x) : (h = n, p = r, m = 1 & t, g = fn(f = e), function e() {
14560 for (var t = -1, n = arguments.length, r = -1, i = p.length, o = M(i + n), a = this && this !== xs && this instanceof e ? g : f; ++r < i;) o[r] = p[r];
14561 for (; n--;) o[r++] = arguments[++t];
14562 return Is(a, m ? h : this, o)
14564 else var T = (w = n, E = 1 & t, C = fn($ = e), function e() {
14565 return (this && this !== xs && this instanceof e ? C : $).apply(E ? w : this, arguments)
14567 return sr((k ? Mt : ir)(T, x), e, t)
14570 function Tn(e, t, n, r) {
14571 return e === na || gi(e, d[n]) && !k.call(r, n) ? t : e
14574 function Mn(e, t, n, r, i, o) {
14575 return Si(e) && Si(t) && (o.set(t, e), gt(e, t, na, Mn, o), o.delete(t)), e
14579 return Ii(e) ? na : e
14582 function Sn(e, t, n, r, i, o) {
14586 if (s != l && !(a && s < l)) return !1;
14588 if (c && o.get(t)) return c == t;
14591 f = 2 & n ? new we : na;
14592 for (o.set(e, t), o.set(t, e); ++u < s;) {
14595 if (r) var m = a ? r(p, h, u, t, e, o) : r(h, p, u, e, t, o);
14602 if (!Ws(t, function(e, t) {
14603 if (!ol(f, t) && (h === e || i(h, e, n, r, o))) return f.push(t)
14608 } else if (h !== p && !i(h, p, n, r, o)) {
14613 return o.delete(e), o.delete(t), d
14617 return ar(tr(e, na, $r), e + "")
14621 return Qe(e, so, qn)
14625 return Qe(e, lo, Un)
14627 var In = ie ? function(e) {
14632 for (var t = e.name + "", n = oe[t], r = k.call(oe, t) ? n.length : 0; r--;) {
14635 if (null == o || o == e) return i.name
14641 return (k.call(pe, "placeholder") ? pe : e).placeholder
14645 var e = pe.iteratee || Ro;
14646 return e = e === Ro ? ct : e, arguments.length ? e(arguments[0], arguments[1]) : e
14649 function jn(e, t) {
14650 var n, r, i = e.__data__;
14651 return ("string" == (r = typeof(n = t)) || "number" == r || "symbol" == r || "boolean" == r ? "__proto__" !== n : null === n) ? i["string" == typeof t ? "string" : "hash"] : i.map
14655 for (var t = so(e), n = t.length; n--;) {
14658 t[n] = [r, i, Jn(i)]
14663 function Fn(e, t) {
14664 var n, r, i = (r = t, null == (n = e) ? na : n[r]);
14665 return lt(i) ? i : na
14667 var qn = q ? function(t) {
14668 return null == t ? [] : (t = C(t), Ls(q(t), function(e) {
14669 return S.call(t, e)
14672 Un = q ? function(e) {
14673 for (var t = []; e;) Vs(t, qn(e)), e = x(e);
14678 function Bn(e, t, n) {
14679 for (var r = -1, i = (t = Yt(t, e)).length, o = !1; ++r < i;) {
14681 if (!(o = null != e && n(e, a))) break;
14684 return o || ++r != i ? o : !!(i = null == e ? 0 : e.length) && Ai(i) && Yn(a, i) && (_i(e) || yi(e))
14688 return "function" != typeof e.constructor || Qn(e) ? {} : me(x(e))
14692 return _i(e) || yi(e) || !!(O && e && e[O])
14695 function Yn(e, t) {
14697 return !!(t = null == t ? aa : t) && ("number" == n || "symbol" != n && fs.test(e)) && -1 < e && e % 1 == 0 && e < t
14700 function Gn(e, t, n) {
14701 if (!Si(n)) return !1;
14703 return !!("number" == r ? wi(n) && Yn(t, n.length) : "string" == r && t in n) && gi(n[t], e)
14706 function Kn(e, t) {
14707 if (_i(e)) return !1;
14709 return !("number" != n && "symbol" != n && "boolean" != n && null != e && !ji(e)) || Ga.test(e) || !Ya.test(e) || null != t && e in C(t)
14715 if ("function" != typeof n || !(t in be.prototype)) return !1;
14716 if (e === n) return !0;
14718 return !!r && e === r[0]
14719 }(Q && Vn(new Q(new ArrayBuffer(1))) != Ta || J && Vn(new J) != va || ee && Vn(ee.resolve()) != _a || te && Vn(new te) != wa || ne && Vn(new ne) != ka) && (Vn = function(e) {
14721 n = t == ya ? e.constructor : na,
14722 r = n ? pr(n) : "";
14723 if (r) switch (r) {
14737 var Xn = l ? Ti : Yo;
14740 var t = e && e.constructor;
14741 return e === ("function" == typeof t && t.prototype || d)
14745 return e == e && !Si(e)
14748 function er(t, n) {
14749 return function(e) {
14750 return null != e && e[t] === n && (n !== na || t in C(e))
14754 function tr(o, a, s) {
14755 return a = W(a === na ? o.length - 1 : a, 0),
14757 for (var e = arguments, t = -1, n = W(e.length - a, 0), r = M(n); ++t < n;) r[t] = e[a + t];
14759 for (var i = M(a + 1); ++t < a;) i[t] = e[t];
14760 return i[a] = s(r), Is(o, this, i)
14764 function nr(e, t) {
14765 return t.length < 2 ? e : Xe(e, Dt(t, 0, -1))
14768 function rr(e, t) {
14769 if (("constructor" !== t || "function" != typeof e[t]) && "__proto__" != t) return e[t]
14772 or = j || function(e, t) {
14773 return xs.setTimeout(e, t)
14777 function sr(e, t, n) {
14778 var r, i, o, a = t + "";
14779 return ar(e, function(e, t) {
14783 return t[r] = (1 < n ? "& " : "") + t[r], t = t.join(2 < n ? ", " : " "), e.replace(ts, "{\n/* [wrapped with " + t + "] */\n")
14784 }(a, (o = a.match(ns), r = o ? o[1].split(rs) : [], i = n, Ps(ca, function(e) {
14785 var t = "_." + e[0];
14786 i & e[1] && !Fs(r, t) && r.push(t)
14793 return function() {
14796 if (i = e, 0 < t) {
14797 if (800 <= ++r) return arguments[0]
14799 return n.apply(na, arguments)
14803 function cr(e, t) {
14807 for (t = t === na ? r : t; ++n < t;) {
14810 e[o] = e[n], e[n] = a
14812 return e.length = t, e
14814 var ur, dr, fr = (dr = (ur = ui(function(e) {
14816 return 46 === e.charCodeAt(0) && i.push(""), e.replace(Ka, function(e, t, n, r) {
14817 i.push(n ? r.replace(os, "$1") : t || e)
14820 return 500 === dr.size && dr.clear(), e
14824 if ("string" == typeof e || ji(e)) return e;
14826 return "0" == t && 1 / e == -1 / 0 ? "-0" : t
14842 if (e instanceof be) return e.clone();
14843 var t = new ve(e.__wrapped__, e.__chain__);
14844 return t.__actions__ = rn(e.__actions__), t.__index__ = e.__index__, t.__values__ = e.__values__, t
14846 var gr = Ct(function(e, t) {
14847 return Ei(e) ? Le(e, ze(t, 1, Ei, !0)) : []
14849 vr = Ct(function(e, t) {
14851 return Ei(n) && (n = na), Ei(e) ? Le(e, ze(t, 1, Ei, !0), Hn(n, 2)) : []
14853 br = Ct(function(e, t) {
14855 return Ei(n) && (n = na), Ei(e) ? Le(e, ze(t, 1, Ei, !0), na, n) : []
14858 function yr(e, t, n) {
14859 var r = null == e ? 0 : e.length;
14861 var i = null == n ? 0 : Bi(n);
14862 return i < 0 && (i = W(r + i, 0)), Gs(e, Hn(t, 3), i)
14865 function _r(e, t, n) {
14866 var r = null == e ? 0 : e.length;
14869 return n !== na && (i = Bi(n), i = n < 0 ? W(r + i, 0) : Y(i, r - 1)), Gs(e, Hn(t, 3), i, !0)
14873 return null != e && e.length ? ze(e, 1) : []
14877 return e && e.length ? e[0] : na
14879 var Er = Ct(function(e) {
14881 return t.length && t[0] === e[0] ? rt(t) : []
14883 Cr = Ct(function(e) {
14886 return t === xr(n) ? t = na : n.pop(), n.length && n[0] === e[0] ? rt(n, Hn(t, 2)) : []
14888 kr = Ct(function(e) {
14891 return (t = "function" == typeof t ? t : na) && n.pop(), n.length && n[0] === e[0] ? rt(n, na, t) : []
14895 var t = null == e ? 0 : e.length;
14896 return t ? e[t - 1] : na
14900 function Mr(e, t) {
14901 return e && e.length && t && t.length ? _t(e, t) : e
14903 var Ar = Dn(function(e, t) {
14904 var n = null == e ? 0 : e.length,
14906 return $t(e, Us(t, function(e) {
14907 return Yn(e, n) ? +e : e
14912 return null == e ? e : X.call(e)
14914 var Dr = Ct(function(e) {
14915 return jt(ze(e, 1, Ei, !0))
14917 Or = Ct(function(e) {
14919 return Ei(t) && (t = na), jt(ze(e, 1, Ei, !0), Hn(t, 2))
14921 Nr = Ct(function(e) {
14923 return t = "function" == typeof t ? t : na, jt(ze(e, 1, Ei, !0), na, t)
14927 if (!t || !t.length) return [];
14929 return t = Ls(t, function(e) {
14930 if (Ei(e)) return n = W(e.length, n), !0
14931 }), nl(n, function(e) {
14932 return Us(t, Js(e))
14936 function Rr(e, t) {
14937 if (!e || !e.length) return [];
14939 return null == t ? n : Us(n, function(e) {
14940 return Is(t, na, e)
14943 var Pr = Ct(function(e, t) {
14944 return Ei(e) ? Le(e, t) : []
14946 Hr = Ct(function(e) {
14947 return Vt(Ls(e, Ei))
14949 jr = Ct(function(e) {
14951 return Ei(t) && (t = na), Vt(Ls(e, Ei), Hn(t, 2))
14953 Lr = Ct(function(e) {
14955 return t = "function" == typeof t ? t : na, Vt(Ls(e, Ei), na, t)
14958 var qr = Ct(function(e) {
14960 n = 1 < t ? e[t - 1] : na;
14961 return n = "function" == typeof n ? (e.pop(), n) : na, Rr(e, n)
14966 return t.__chain__ = !0, t
14969 function Vr(e, t) {
14972 var Br = Dn(function(t) {
14975 r = this.__wrapped__,
14979 return !(1 < n || this.__actions__.length) && r instanceof be && Yn(e) ? ((r = r.slice(e, +e + (n ? 1 : 0))).__actions__.push({
14983 }), new ve(r, this.__chain__).thru(function(e) {
14984 return n && !e.length && e.push(na), e
14987 var zr = an(function(e, t, n) {
14988 k.call(e, n) ? ++e[n] : Ne(e, n, 1)
14993 function Gr(e, t) {
14994 return (_i(e) ? Ps : Fe)(e, Hn(t, 3))
14997 function Kr(e, t) {
14998 return (_i(e) ? Hs : qe)(e, Hn(t, 3))
15000 var Zr = an(function(e, t, n) {
15001 k.call(e, n) ? e[n].push(t) : Ne(e, n, [t])
15003 var Xr = Ct(function(e, t, n) {
15005 i = "function" == typeof t,
15006 o = wi(e) ? M(e.length) : [];
15007 return Fe(e, function(e) {
15008 o[++r] = i ? Is(t, e, n) : it(e, t, n)
15011 Qr = an(function(e, t, n) {
15015 function Jr(e, t) {
15016 return (_i(e) ? Us : ht)(e, Hn(t, 3))
15018 var ei = an(function(e, t, n) {
15019 e[n ? 0 : 1].push(t)
15026 var ti = Ct(function(e, t) {
15027 if (null == e) return [];
15029 return 1 < n && Gn(e, t[0], t[1]) ? t = [] : 2 < n && Gn(t[0], t[1], t[2]) && (t = [t[0]]), bt(e, ze(t, 1), [])
15031 ni = H || function() {
15032 return xs.Date.now()
15035 function ri(e, t, n) {
15036 return t = n ? na : t, t = e && null == t ? e.length : t, xn(e, 128, na, na, na, na, t)
15039 function ii(e, t) {
15041 if ("function" != typeof t) throw new A(ra);
15044 return 0 < --e && (n = t.apply(this, arguments)), e <= 1 && (t = na), n
15047 var oi = Ct(function(e, t, n) {
15050 var i = pl(n, Pn(oi));
15053 return xn(e, r, t, n, i)
15055 ai = Ct(function(e, t, n) {
15058 var i = pl(n, Pn(ai));
15061 return xn(t, r, e, n, i)
15064 function si(r, i, e) {
15065 var o, a, s, l, c, u, d = 0,
15069 if ("function" != typeof r) throw new A(ra);
15074 return o = a = na, d = e, l = r.apply(n, t)
15079 return u === na || i <= t || t < 0 || h && s <= e - d
15083 var e, t, n = ni();
15084 if (m(n)) return v(n);
15085 c = or(g, (t = i - ((e = n) - u), h ? Y(t, s - (e - d)) : t))
15089 return c = na, t && o ? p(e) : (o = a = na, l)
15095 if (o = arguments, a = this, u = t, n) {
15096 if (c === na) return d = e = u, c = or(g, i), f ? p(e) : l;
15097 if (h) return Zt(c), c = or(g, i), p(u)
15099 return c === na && (c = or(g, i)), l
15101 return i = Wi(i) || 0, Si(e) && (f = !!e.leading, s = (h = "maxWait" in e) ? W(Wi(e.maxWait) || 0, i) : s, t = "trailing" in e ? !!e.trailing : t), n.cancel = function() {
15102 c !== na && Zt(c), d = 0, o = u = a = c = na
15103 }, n.flush = function() {
15104 return c === na ? l : v(ni())
15107 var li = Ct(function(e, t) {
15110 ci = Ct(function(e, t, n) {
15111 return je(e, Wi(t) || 0, n)
15114 function ui(i, o) {
15115 if ("function" != typeof i || null != o && "function" != typeof o) throw new A(ra);
15116 var a = function() {
15118 t = o ? o.apply(this, e) : e[0],
15120 if (n.has(t)) return n.get(t);
15121 var r = i.apply(this, e);
15122 return a.cache = n.set(t, r) || n, r
15124 return a.cache = new(ui.Cache || $e), a
15128 if ("function" != typeof t) throw new A(ra);
15129 return function() {
15131 switch (e.length) {
15133 return !t.call(this);
15135 return !t.call(this, e[0]);
15137 return !t.call(this, e[0], e[1]);
15139 return !t.call(this, e[0], e[1], e[2])
15141 return !t.apply(this, e)
15145 var fi = Gt(function(r, i) {
15146 var o = (i = 1 == i.length && _i(i[0]) ? Us(i[0], rl(Hn())) : Us(ze(i, 1), rl(Hn()))).length;
15147 return Ct(function(e) {
15148 for (var t = -1, n = Y(e.length, o); ++t < n;) e[t] = i[t].call(this, e[t]);
15149 return Is(r, this, e)
15152 hi = Ct(function(e, t) {
15153 var n = pl(t, Pn(hi));
15154 return xn(e, 32, na, t, n)
15156 pi = Ct(function(e, t) {
15157 var n = pl(t, Pn(pi));
15158 return xn(e, 64, na, t, n)
15160 mi = Dn(function(e, t) {
15161 return xn(e, 256, na, na, na, t)
15164 function gi(e, t) {
15165 return e === t || e != e && t != t
15168 bi = $n(function(e, t) {
15171 yi = ot(function() {
15173 }()) ? ot : function(e) {
15174 return Di(e) && k.call(e, "callee") && !S.call(e, "callee")
15177 $i = Ms ? rl(Ms) : function(e) {
15178 return Di(e) && Je(e) == xa
15182 return null != e && Ai(e.length) && !Ti(e)
15186 return Di(e) && wi(e)
15189 ki = As ? rl(As) : function(e) {
15190 return Di(e) && Je(e) == ha
15194 if (!Di(e)) return !1;
15196 return t == pa || "[object DOMException]" == t || "string" == typeof e.message && "string" == typeof e.name && !Ii(e)
15200 if (!Si(e)) return !1;
15202 return t == ma || t == ga || "[object AsyncFunction]" == t || "[object Proxy]" == t
15206 return "number" == typeof e && e == Bi(e)
15210 return "number" == typeof e && -1 < e && e % 1 == 0 && e <= aa
15215 return null != e && ("object" == t || "function" == t)
15219 return null != e && "object" == typeof e
15221 var Oi = Ss ? rl(Ss) : function(e) {
15222 return Di(e) && Vn(e) == va
15226 return "number" == typeof e || Di(e) && Je(e) == ba
15230 if (!Di(e) || Je(e) != ya) return !1;
15232 if (null === t) return !0;
15233 var n = k.call(t, "constructor") && t.constructor;
15234 return "function" == typeof n && n instanceof n && c.call(n) == m
15236 var Ri = Ds ? rl(Ds) : function(e) {
15237 return Di(e) && Je(e) == $a
15239 var Pi = Os ? rl(Os) : function(e) {
15240 return Di(e) && Vn(e) == wa
15244 return "string" == typeof e || !_i(e) && Di(e) && Je(e) == Ea
15248 return "symbol" == typeof e || Di(e) && Je(e) == Ca
15250 var Li = Ns ? rl(Ns) : function(e) {
15251 return Di(e) && Ai(e.length) && !!ws[Je(e)]
15254 qi = $n(function(e, t) {
15260 if (wi(e)) return Hi(e) ? vl(e) : rn(e);
15261 if (N && e[N]) return function(e) {
15262 for (var t, n = []; !(t = e.next()).done;) n.push(t.value);
15266 return (t == va ? fl : t == wa ? ml : vo)(e)
15270 return e ? (e = Wi(e)) !== 1 / 0 && e !== -1 / 0 ? e == e ? e : 0 : 17976931348623157e292 * (e < 0 ? -1 : 1) : 0 === e ? e : 0
15276 return t == t ? n ? t - n : t : 0
15280 return e ? Re(Bi(e), 0, la) : 0
15284 if ("number" == typeof e) return e;
15285 if (ji(e)) return sa;
15287 var t = "function" == typeof e.valueOf ? e.valueOf() : e;
15288 e = Si(t) ? t + "" : t
15290 if ("string" != typeof e) return 0 === e ? e : +e;
15291 e = e.replace(Qa, "");
15292 var n = cs.test(e);
15293 return n || ds.test(e) ? ks(e.slice(2), n ? 2 : 8) : ls.test(e) ? sa : +e
15297 return on(e, lo(e))
15301 return null == e ? "" : Ht(e)
15303 var Ki = sn(function(e, t) {
15304 if (Qn(t) || wi(t)) on(t, so(t), e);
15306 for (var n in t) k.call(t, n) && Ae(e, n, t[n])
15308 Zi = sn(function(e, t) {
15311 Xi = sn(function(e, t, n, r) {
15314 Qi = sn(function(e, t, n, r) {
15318 var eo = Ct(function(e, t) {
15322 i = 2 < r ? t[2] : na;
15323 for (i && Gn(t[0], t[1], i) && (r = 1); ++n < r;)
15324 for (var o = t[n], a = lo(o), s = -1, l = a.length; ++s < l;) {
15327 (u === na || gi(u, d[c]) && !k.call(e, c)) && (e[c] = o[c])
15331 to = Ct(function(e) {
15332 return e.push(na, Mn), Is(uo, na, e)
15335 function no(e, t, n) {
15336 var r = null == e ? na : Xe(e, t);
15337 return r === na ? n : r
15340 function ro(e, t) {
15341 return null != e && Bn(e, t, nt)
15343 var io = gn(function(e, t, n) {
15344 null != t && "function" != typeof t.toString && (t = p.call(t)), e[t] = n
15346 oo = gn(function(e, t, n) {
15347 null != t && "function" != typeof t.toString && (t = p.call(t)), k.call(e, t) ? e[t].push(n) : e[t] = [n]
15352 return wi(e) ? Ce(e) : ut(e)
15356 return wi(e) ? Ce(e, !0) : dt(e)
15358 var co = sn(function(e, t, n) {
15361 uo = sn(function(e, t, n, r) {
15364 fo = Dn(function(t, e) {
15366 if (null == t) return n;
15368 e = Us(e, function(e) {
15369 return e = Yt(e, t), r || (r = 1 < e.length), e
15370 }), on(t, Nn(t), n), r && (n = Pe(n, 7, An));
15371 for (var i = e.length; i--;) Lt(n, e[i]);
15374 var ho = Dn(function(e, t) {
15375 return null == e ? {} : yt(n = e, t, function(e, t) {
15381 function po(e, n) {
15382 if (null == e) return {};
15383 var t = Us(Nn(e), function(e) {
15386 return n = Hn(n), yt(e, t, function(e, t) {
15394 return null == e ? [] : il(e, so(e))
15396 var bo = dn(function(e, t, n) {
15397 return t = t.toLowerCase(), e + (n ? yo(t) : t)
15401 return To(Gi(e).toLowerCase())
15405 return (e = Gi(e)) && e.replace(hs, ll).replace(vs, "")
15407 var $o = dn(function(e, t, n) {
15408 return e + (n ? "-" : "") + t.toLowerCase()
15410 wo = dn(function(e, t, n) {
15411 return e + (n ? " " : "") + t.toLowerCase()
15413 Eo = un("toLowerCase");
15414 var Co = dn(function(e, t, n) {
15415 return e + (n ? "_" : "") + t.toLowerCase()
15417 var ko = dn(function(e, t, n) {
15418 return e + (n ? " " : "") + To(t)
15420 var xo = dn(function(e, t, n) {
15421 return e + (n ? " " : "") + t.toUpperCase()
15423 To = un("toUpperCase");
15425 function Mo(e, t, n) {
15426 return e = Gi(e), (t = n ? na : t) === na ? (r = e, ys.test(r) ? e.match(bs) || [] : e.match(is) || []) : e.match(t) || [];
15429 var Ao = Ct(function(e, t) {
15431 return Is(e, na, t)
15433 return xi(e) ? e : new i(e)
15436 So = Dn(function(t, e) {
15437 return Ps(e, function(e) {
15438 e = hr(e), Ne(t, e, oi(t[e], t))
15443 return function() {
15455 return ct("function" == typeof e ? e : Pe(e, 1))
15457 var Po = Ct(function(t, n) {
15458 return function(e) {
15462 Ho = Ct(function(t, n) {
15463 return function(e) {
15468 function jo(r, t, e) {
15471 null != e || Si(t) && (i.length || !n.length) || (e = t, t = r, r = this, i = Ze(t, so(t)));
15472 var o = !(Si(e) && "chain" in e && !e.chain),
15474 return Ps(i, function(e) {
15476 r[e] = n, a && (r.prototype[e] = function() {
15477 var e = this.__chain__;
15479 var t = r(this.__wrapped__);
15480 return (t.__actions__ = rn(this.__actions__)).push({
15484 }), t.__chain__ = e, t
15486 return n.apply(r, Vs([this.value()], arguments))
15497 return Kn(e) ? Js(hr(e)) : (t = e, function(e) {
15512 var Go = vn(function(e, t) {
15516 Zo = vn(function(e, t) {
15520 var Qo, Jo = vn(function(e, t) {
15524 ta = vn(function(e, t) {
15527 return pe.after = function(e, t) {
15528 if ("function" != typeof t) throw new A(ra);
15531 if (--e < 1) return t.apply(this, arguments)
15533 }, pe.ary = ri, pe.assign = Ki, pe.assignIn = Zi, pe.assignInWith = Xi, pe.assignWith = Qi, pe.at = Ji, pe.before = ii, pe.bind = oi, pe.bindAll = So, pe.bindKey = ai, pe.castArray = function() {
15534 if (!arguments.length) return [];
15535 var e = arguments[0];
15536 return _i(e) ? e : [e]
15537 }, pe.chain = Ur, pe.chunk = function(e, t, n) {
15538 t = (n ? Gn(e, t, n) : t === na) ? 1 : W(Bi(t), 0);
15539 var r = null == e ? 0 : e.length;
15540 if (!r || t < 1) return [];
15541 for (var i = 0, o = 0, a = M(L(r / t)); i < r;) a[o++] = Dt(e, i, i += t);
15543 }, pe.compact = function(e) {
15544 for (var t = -1, n = null == e ? 0 : e.length, r = 0, i = []; ++t < n;) {
15549 }, pe.concat = function() {
15550 var e = arguments.length;
15552 for (var t = M(e - 1), n = arguments[0], r = e; r--;) t[r - 1] = arguments[r];
15553 return Vs(_i(n) ? rn(n) : [n], ze(t, 1))
15554 }, pe.cond = function(r) {
15555 var i = null == r ? 0 : r.length,
15557 return r = i ? Us(r, function(e) {
15558 if ("function" != typeof e[1]) throw new A(ra);
15559 return [t(e[0]), e[1]]
15560 }) : [], Ct(function(e) {
15561 for (var t = -1; ++t < i;) {
15563 if (Is(n[0], this, e)) return Is(n[1], this, e)
15566 }, pe.conforms = function(e) {
15567 return t = Pe(e, 1), n = so(t),
15572 }, pe.constant = Do, pe.countBy = zr, pe.create = function(e, t) {
15574 return null == t ? n : Oe(n, t)
15575 }, pe.curry = function e(t, n, r) {
15576 var i = xn(t, 8, na, na, na, na, na, n = r ? na : n);
15577 return i.placeholder = e.placeholder, i
15578 }, pe.curryRight = function e(t, n, r) {
15579 var i = xn(t, 16, na, na, na, na, na, n = r ? na : n);
15580 return i.placeholder = e.placeholder, i
15581 }, pe.debounce = si, pe.defaults = eo, pe.defaultsDeep = to, pe.defer = li, pe.delay = ci, pe.difference = gr, pe.differenceBy = vr, pe.differenceWith = br, pe.drop = function(e, t, n) {
15582 var r = null == e ? 0 : e.length;
15583 return r ? Dt(e, (t = n || t === na ? 1 : Bi(t)) < 0 ? 0 : t, r) : []
15584 }, pe.dropRight = function(e, t, n) {
15585 var r = null == e ? 0 : e.length;
15586 return r ? Dt(e, 0, (t = r - (t = n || t === na ? 1 : Bi(t))) < 0 ? 0 : t) : []
15587 }, pe.dropRightWhile = function(e, t) {
15588 return e && e.length ? qt(e, Hn(t, 3), !0, !0) : []
15589 }, pe.dropWhile = function(e, t) {
15590 return e && e.length ? qt(e, Hn(t, 3), !0) : []
15591 }, pe.fill = function(e, t, n, r) {
15592 var i = null == e ? 0 : e.length;
15593 return i ? (n && "number" != typeof n && Gn(e, t, n) && (n = 0, r = i), function(e, t, n, r) {
15595 for ((n = Bi(n)) < 0 && (n = i < -n ? 0 : i + n), (r = r === na || i < r ? i : Bi(r)) < 0 && (r += i), r = r < n ? 0 : zi(r); n < r;) e[n++] = t;
15597 }(e, t, n, r)) : []
15598 }, pe.filter = function(e, t) {
15599 return (_i(e) ? Ls : Be)(e, Hn(t, 3))
15600 }, pe.flatMap = function(e, t) {
15601 return ze(Jr(e, t), 1)
15602 }, pe.flatMapDeep = function(e, t) {
15603 return ze(Jr(e, t), 1 / 0)
15604 }, pe.flatMapDepth = function(e, t, n) {
15605 return n = n === na ? 1 : Bi(n), ze(Jr(e, t), n)
15606 }, pe.flatten = $r, pe.flattenDeep = function(e) {
15607 return null != e && e.length ? ze(e, 1 / 0) : []
15608 }, pe.flattenDepth = function(e, t) {
15609 return null != e && e.length ? ze(e, t = t === na ? 1 : Bi(t)) : []
15610 }, pe.flip = function(e) {
15612 }, pe.flow = Oo, pe.flowRight = No, pe.fromPairs = function(e) {
15613 for (var t = -1, n = null == e ? 0 : e.length, r = {}; ++t < n;) {
15618 }, pe.functions = function(e) {
15619 return null == e ? [] : Ze(e, so(e))
15620 }, pe.functionsIn = function(e) {
15621 return null == e ? [] : Ze(e, lo(e))
15622 }, pe.groupBy = Zr, pe.initial = function(e) {
15623 return null != e && e.length ? Dt(e, 0, -1) : []
15624 }, pe.intersection = Er, pe.intersectionBy = Cr, pe.intersectionWith = kr, pe.invert = io, pe.invertBy = oo, pe.invokeMap = Xr, pe.iteratee = Ro, pe.keyBy = Qr, pe.keys = so, pe.keysIn = lo, pe.map = Jr, pe.mapKeys = function(e, r) {
15626 return r = Hn(r, 3), Ge(e, function(e, t, n) {
15627 Ne(i, r(e, t, n), e)
15629 }, pe.mapValues = function(e, r) {
15631 return r = Hn(r, 3), Ge(e, function(e, t, n) {
15632 Ne(i, t, r(e, t, n))
15634 }, pe.matches = function(e) {
15635 return pt(Pe(e, 1))
15636 }, pe.matchesProperty = function(e, t) {
15637 return mt(e, Pe(t, 1))
15638 }, pe.memoize = ui, pe.merge = co, pe.mergeWith = uo, pe.method = Po, pe.methodOf = Ho, pe.mixin = jo, pe.negate = di, pe.nthArg = function(t) {
15639 return t = Bi(t), Ct(function(e) {
15642 }, pe.omit = fo, pe.omitBy = function(e, t) {
15643 return po(e, di(Hn(t)))
15644 }, pe.once = function(e) {
15646 }, pe.orderBy = function(e, t, n, r) {
15647 return null == e ? [] : (_i(t) || (t = null == t ? [] : [t]), _i(n = r ? na : n) || (n = null == n ? [] : [n]), bt(e, t, n))
15648 }, pe.over = Fo, pe.overArgs = fi, pe.overEvery = qo, pe.overSome = Uo, pe.partial = hi, pe.partialRight = pi, pe.partition = ei, pe.pick = ho, pe.pickBy = po, pe.property = Vo, pe.propertyOf = function(t) {
15649 return function(e) {
15650 return null == t ? na : Xe(t, e)
15652 }, pe.pull = Tr, pe.pullAll = Mr, pe.pullAllBy = function(e, t, n) {
15653 return e && e.length && t && t.length ? _t(e, t, Hn(n, 2)) : e
15654 }, pe.pullAllWith = function(e, t, n) {
15655 return e && e.length && t && t.length ? _t(e, t, na, n) : e
15656 }, pe.pullAt = Ar, pe.range = Bo, pe.rangeRight = zo, pe.rearg = mi, pe.reject = function(e, t) {
15657 return (_i(e) ? Ls : Be)(e, di(Hn(t, 3)))
15658 }, pe.remove = function(e, t) {
15660 if (!e || !e.length) return n;
15664 for (t = Hn(t, 3); ++r < o;) {
15666 t(a, r, e) && (n.push(a), i.push(r))
15669 }, pe.rest = function(e, t) {
15670 if ("function" != typeof e) throw new A(ra);
15671 return Ct(e, t = t === na ? t : Bi(t))
15672 }, pe.reverse = Sr, pe.sampleSize = function(e, t, n) {
15673 return t = (n ? Gn(e, t, n) : t === na) ? 1 : Bi(t), (_i(e) ? xe : xt)(e, t)
15674 }, pe.set = function(e, t, n) {
15675 return null == e ? e : Tt(e, t, n)
15676 }, pe.setWith = function(e, t, n, r) {
15677 return r = "function" == typeof r ? r : na, null == e ? e : Tt(e, t, n, r)
15678 }, pe.shuffle = function(e) {
15679 return (_i(e) ? Te : St)(e)
15680 }, pe.slice = function(e, t, n) {
15681 var r = null == e ? 0 : e.length;
15682 return r ? (n = n && "number" != typeof n && Gn(e, t, n) ? (t = 0, r) : (t = null == t ? 0 : Bi(t), n === na ? r : Bi(n)), Dt(e, t, n)) : []
15683 }, pe.sortBy = ti, pe.sortedUniq = function(e) {
15684 return e && e.length ? Rt(e) : []
15685 }, pe.sortedUniqBy = function(e, t) {
15686 return e && e.length ? Rt(e, Hn(t, 2)) : []
15687 }, pe.split = function(e, t, n) {
15688 return n && "number" != typeof n && Gn(e, t, n) && (t = n = na), (n = n === na ? la : n >>> 0) ? (e = Gi(e)) && ("string" == typeof t || null != t && !Ri(t)) && !(t = Ht(t)) && dl(e) ? Kt(vl(e), 0, n) : e.split(t, n) : []
15689 }, pe.spread = function(r, i) {
15690 if ("function" != typeof r) throw new A(ra);
15691 return i = null == i ? 0 : W(Bi(i), 0), Ct(function(e) {
15694 return t && Vs(n, t), Is(r, this, n)
15696 }, pe.tail = function(e) {
15697 var t = null == e ? 0 : e.length;
15698 return t ? Dt(e, 1, t) : []
15699 }, pe.take = function(e, t, n) {
15700 return e && e.length ? Dt(e, 0, (t = n || t === na ? 1 : Bi(t)) < 0 ? 0 : t) : []
15701 }, pe.takeRight = function(e, t, n) {
15702 var r = null == e ? 0 : e.length;
15703 return r ? Dt(e, (t = r - (t = n || t === na ? 1 : Bi(t))) < 0 ? 0 : t, r) : []
15704 }, pe.takeRightWhile = function(e, t) {
15705 return e && e.length ? qt(e, Hn(t, 3), !1, !0) : []
15706 }, pe.takeWhile = function(e, t) {
15707 return e && e.length ? qt(e, Hn(t, 3)) : []
15708 }, pe.tap = function(e, t) {
15710 }, pe.throttle = function(e, t, n) {
15713 if ("function" != typeof e) throw new A(ra);
15714 return Si(n) && (r = "leading" in n ? !!n.leading : r, i = "trailing" in n ? !!n.trailing : i), si(e, t, {
15719 }, pe.thru = Vr, pe.toArray = Ui, pe.toPairs = mo, pe.toPairsIn = go, pe.toPath = function(e) {
15720 return _i(e) ? Us(e, hr) : ji(e) ? [e] : rn(fr(Gi(e)))
15721 }, pe.toPlainObject = Yi, pe.transform = function(e, r, i) {
15723 n = t || Ci(e) || Li(e);
15724 if (r = Hn(r, 4), null == i) {
15725 var o = e && e.constructor;
15726 i = n ? t ? new o : [] : Si(e) && Ti(o) ? me(x(e)) : {}
15728 return (n ? Ps : Ge)(e, function(e, t, n) {
15729 return r(i, e, t, n)
15731 }, pe.unary = function(e) {
15733 }, pe.union = Dr, pe.unionBy = Or, pe.unionWith = Nr, pe.uniq = function(e) {
15734 return e && e.length ? jt(e) : []
15735 }, pe.uniqBy = function(e, t) {
15736 return e && e.length ? jt(e, Hn(t, 2)) : []
15737 }, pe.uniqWith = function(e, t) {
15738 return t = "function" == typeof t ? t : na, e && e.length ? jt(e, na, t) : []
15739 }, pe.unset = function(e, t) {
15740 return null == e || Lt(e, t)
15741 }, pe.unzip = Ir, pe.unzipWith = Rr, pe.update = function(e, t, n) {
15742 return null == e ? e : Ft(e, t, Wt(n))
15743 }, pe.updateWith = function(e, t, n, r) {
15744 return r = "function" == typeof r ? r : na, null == e ? e : Ft(e, t, Wt(n), r)
15745 }, pe.values = vo, pe.valuesIn = function(e) {
15746 return null == e ? [] : il(e, lo(e))
15747 }, pe.without = Pr, pe.words = Mo, pe.wrap = function(e, t) {
15748 return hi(Wt(t), e)
15749 }, pe.xor = Hr, pe.xorBy = jr, pe.xorWith = Lr, pe.zip = Fr, pe.zipObject = function(e, t) {
15750 return Bt(e || [], t || [], Ae)
15751 }, pe.zipObjectDeep = function(e, t) {
15752 return Bt(e || [], t || [], Tt)
15753 }, pe.zipWith = qr, pe.entries = mo, pe.entriesIn = go, pe.extend = Zi, pe.extendWith = Xi, jo(pe, pe), pe.add = Go, pe.attempt = Ao, pe.camelCase = bo, pe.capitalize = yo, pe.ceil = Ko, pe.clamp = function(e, t, n) {
15754 return n === na && (n = t, t = na), n !== na && (n = (n = Wi(n)) == n ? n : 0), t !== na && (t = (t = Wi(t)) == t ? t : 0), Re(Wi(e), t, n)
15755 }, pe.clone = function(e) {
15757 }, pe.cloneDeep = function(e) {
15759 }, pe.cloneDeepWith = function(e, t) {
15760 return Pe(e, 5, t = "function" == typeof t ? t : na)
15761 }, pe.cloneWith = function(e, t) {
15762 return Pe(e, 4, t = "function" == typeof t ? t : na)
15763 }, pe.conformsTo = function(e, t) {
15764 return null == t || He(e, t, so(t))
15765 }, pe.deburr = _o, pe.defaultTo = function(e, t) {
15766 return null == e || e != e ? t : e
15767 }, pe.divide = Zo, pe.endsWith = function(e, t, n) {
15768 e = Gi(e), t = Ht(t);
15770 i = n = n === na ? r : Re(Bi(n), 0, r);
15771 return 0 <= (n -= t.length) && e.slice(n, i) == t
15772 }, pe.eq = gi, pe.escape = function(e) {
15773 return (e = Gi(e)) && Va.test(e) ? e.replace(qa, cl) : e
15774 }, pe.escapeRegExp = function(e) {
15775 return (e = Gi(e)) && Xa.test(e) ? e.replace(Za, "\\$&") : e
15776 }, pe.every = function(e, t, n) {
15777 var r = _i(e) ? js : Ue;
15778 return n && Gn(e, t, n) && (t = na), r(e, Hn(t, 3))
15779 }, pe.find = Wr, pe.findIndex = yr, pe.findKey = function(e, t) {
15780 return Ys(e, Hn(t, 3), Ge)
15781 }, pe.findLast = Yr, pe.findLastIndex = _r, pe.findLastKey = function(e, t) {
15782 return Ys(e, Hn(t, 3), Ke)
15783 }, pe.floor = Xo, pe.forEach = Gr, pe.forEachRight = Kr, pe.forIn = function(e, t) {
15784 return null == e ? e : We(e, Hn(t, 3), lo)
15785 }, pe.forInRight = function(e, t) {
15786 return null == e ? e : Ye(e, Hn(t, 3), lo)
15787 }, pe.forOwn = function(e, t) {
15788 return e && Ge(e, Hn(t, 3))
15789 }, pe.forOwnRight = function(e, t) {
15790 return e && Ke(e, Hn(t, 3))
15791 }, pe.get = no, pe.gt = vi, pe.gte = bi, pe.has = function(e, t) {
15792 return null != e && Bn(e, t, tt)
15793 }, pe.hasIn = ro, pe.head = wr, pe.identity = Io, pe.includes = function(e, t, n, r) {
15794 e = wi(e) ? e : vo(e), n = n && !r ? Bi(n) : 0;
15796 return n < 0 && (n = W(i + n, 0)), Hi(e) ? n <= i && -1 < e.indexOf(t, n) : !!i && -1 < Ks(e, t, n)
15797 }, pe.indexOf = function(e, t, n) {
15798 var r = null == e ? 0 : e.length;
15800 var i = null == n ? 0 : Bi(n);
15801 return i < 0 && (i = W(r + i, 0)), Ks(e, t, i)
15802 }, pe.inRange = function(e, t, n) {
15803 return t = Vi(t), n === na ? (n = t, t = 0) : n = Vi(n), e = Wi(e), (r = e) >= Y(i = t, o = n) && r < W(i, o);
15805 }, pe.invoke = ao, pe.isArguments = yi, pe.isArray = _i, pe.isArrayBuffer = $i, pe.isArrayLike = wi, pe.isArrayLikeObject = Ei, pe.isBoolean = function(e) {
15806 return !0 === e || !1 === e || Di(e) && Je(e) == fa
15807 }, pe.isBuffer = Ci, pe.isDate = ki, pe.isElement = function(e) {
15808 return Di(e) && 1 === e.nodeType && !Ii(e)
15809 }, pe.isEmpty = function(e) {
15810 if (null == e) return !0;
15811 if (wi(e) && (_i(e) || "string" == typeof e || "function" == typeof e.splice || Ci(e) || Li(e) || yi(e))) return !e.length;
15813 if (t == va || t == wa) return !e.size;
15814 if (Qn(e)) return !ut(e).length;
15816 if (k.call(e, n)) return !1;
15818 }, pe.isEqual = function(e, t) {
15820 }, pe.isEqualWith = function(e, t, n) {
15821 var r = (n = "function" == typeof n ? n : na) ? n(e, t) : na;
15822 return r === na ? at(e, t, na, n) : !!r
15823 }, pe.isError = xi, pe.isFinite = function(e) {
15824 return "number" == typeof e && V(e)
15825 }, pe.isFunction = Ti, pe.isInteger = Mi, pe.isLength = Ai, pe.isMap = Oi, pe.isMatch = function(e, t) {
15826 return e === t || st(e, t, Ln(t))
15827 }, pe.isMatchWith = function(e, t, n) {
15828 return n = "function" == typeof n ? n : na, st(e, t, Ln(t), n)
15829 }, pe.isNaN = function(e) {
15830 return Ni(e) && e != +e
15831 }, pe.isNative = function(e) {
15832 if (Xn(e)) throw new i("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");
15834 }, pe.isNil = function(e) {
15836 }, pe.isNull = function(e) {
15838 }, pe.isNumber = Ni, pe.isObject = Si, pe.isObjectLike = Di, pe.isPlainObject = Ii, pe.isRegExp = Ri, pe.isSafeInteger = function(e) {
15839 return Mi(e) && -aa <= e && e <= aa
15840 }, pe.isSet = Pi, pe.isString = Hi, pe.isSymbol = ji, pe.isTypedArray = Li, pe.isUndefined = function(e) {
15842 }, pe.isWeakMap = function(e) {
15843 return Di(e) && Vn(e) == ka
15844 }, pe.isWeakSet = function(e) {
15845 return Di(e) && "[object WeakSet]" == Je(e)
15846 }, pe.join = function(e, t) {
15847 return null == e ? "" : B.call(e, t)
15848 }, pe.kebabCase = $o, pe.last = xr, pe.lastIndexOf = function(e, t, n) {
15849 var r = null == e ? 0 : e.length;
15852 return n !== na && (i = (i = Bi(n)) < 0 ? W(r + i, 0) : Y(i, r - 1)), t == t ? function(e, t, n) {
15853 for (var r = n + 1; r--;)
15854 if (e[r] === t) return r;
15856 }(e, t, i) : Gs(e, Xs, i, !0)
15857 }, pe.lowerCase = wo, pe.lowerFirst = Eo, pe.lt = Fi, pe.lte = qi, pe.max = function(e) {
15858 return e && e.length ? Ve(e, Io, et) : na
15859 }, pe.maxBy = function(e, t) {
15860 return e && e.length ? Ve(e, Hn(t, 2), et) : na
15861 }, pe.mean = function(e) {
15863 }, pe.meanBy = function(e, t) {
15864 return Qs(e, Hn(t, 2))
15865 }, pe.min = function(e) {
15866 return e && e.length ? Ve(e, Io, ft) : na
15867 }, pe.minBy = function(e, t) {
15868 return e && e.length ? Ve(e, Hn(t, 2), ft) : na
15869 }, pe.stubArray = Wo, pe.stubFalse = Yo, pe.stubObject = function() {
15871 }, pe.stubString = function() {
15873 }, pe.stubTrue = function() {
15875 }, pe.multiply = Jo, pe.nth = function(e, t) {
15876 return e && e.length ? vt(e, Bi(t)) : na
15877 }, pe.noConflict = function() {
15878 return xs._ === this && (xs._ = b), this
15879 }, pe.noop = Lo, pe.now = ni, pe.pad = function(e, t, n) {
15881 var r = (t = Bi(t)) ? gl(e) : 0;
15882 if (!t || t <= r) return e;
15883 var i = (t - r) / 2;
15884 return yn(F(i), n) + e + yn(L(i), n)
15885 }, pe.padEnd = function(e, t, n) {
15887 var r = (t = Bi(t)) ? gl(e) : 0;
15888 return t && r < t ? e + yn(t - r, n) : e
15889 }, pe.padStart = function(e, t, n) {
15891 var r = (t = Bi(t)) ? gl(e) : 0;
15892 return t && r < t ? yn(t - r, n) + e : e
15893 }, pe.parseInt = function(e, t, n) {
15894 return n || null == t ? t = 0 : t && (t = +t), K(Gi(e).replace(Ja, ""), t || 0)
15895 }, pe.random = function(e, t, n) {
15896 if (n && "boolean" != typeof n && Gn(e, t, n) && (t = n = na), n === na && ("boolean" == typeof t ? (n = t, t = na) : "boolean" == typeof e && (n = e, e = na)), e === na && t === na ? (e = 0, t = 1) : (e = Vi(e), t === na ? (t = e, e = 0) : t = Vi(t)), t < e) {
15900 if (n || e % 1 || t % 1) {
15902 return Y(e + i * (t - e + Cs("1e-" + ((i + "").length - 1))), t)
15905 }, pe.reduce = function(e, t, n) {
15906 var r = _i(e) ? Bs : el,
15907 i = arguments.length < 3;
15908 return r(e, Hn(t, 4), n, i, Fe)
15909 }, pe.reduceRight = function(e, t, n) {
15910 var r = _i(e) ? zs : el,
15911 i = arguments.length < 3;
15912 return r(e, Hn(t, 4), n, i, qe)
15913 }, pe.repeat = function(e, t, n) {
15914 return t = (n ? Gn(e, t, n) : t === na) ? 1 : Bi(t), Et(Gi(e), t)
15915 }, pe.replace = function() {
15918 return e.length < 3 ? t : t.replace(e[1], e[2])
15919 }, pe.result = function(e, t, n) {
15921 i = (t = Yt(t, e)).length;
15922 for (i || (i = 1, e = na); ++r < i;) {
15923 var o = null == e ? na : e[hr(t[r])];
15924 o === na && (r = i, o = n), e = Ti(o) ? o.call(e) : o
15927 }, pe.round = ea, pe.runInContext = e, pe.sample = function(e) {
15928 return (_i(e) ? ke : kt)(e)
15929 }, pe.size = function(e) {
15930 if (null == e) return 0;
15931 if (wi(e)) return Hi(e) ? gl(e) : e.length;
15933 return t == va || t == wa ? e.size : ut(e).length
15934 }, pe.snakeCase = Co, pe.some = function(e, t, n) {
15935 var r = _i(e) ? Ws : Ot;
15936 return n && Gn(e, t, n) && (t = na), r(e, Hn(t, 3))
15937 }, pe.sortedIndex = function(e, t) {
15939 }, pe.sortedIndexBy = function(e, t, n) {
15940 return It(e, t, Hn(n, 2))
15941 }, pe.sortedIndexOf = function(e, t) {
15942 var n = null == e ? 0 : e.length;
15945 if (r < n && gi(e[r], t)) return r
15948 }, pe.sortedLastIndex = function(e, t) {
15949 return Nt(e, t, !0)
15950 }, pe.sortedLastIndexBy = function(e, t, n) {
15951 return It(e, t, Hn(n, 2), !0)
15952 }, pe.sortedLastIndexOf = function(e, t) {
15953 if (null != e && e.length) {
15954 var n = Nt(e, t, !0) - 1;
15955 if (gi(e[n], t)) return n
15958 }, pe.startCase = ko, pe.startsWith = function(e, t, n) {
15959 return e = Gi(e), n = null == n ? 0 : Re(Bi(n), 0, e.length), t = Ht(t), e.slice(n, n + t.length) == t
15960 }, pe.subtract = ta, pe.sum = function(e) {
15961 return e && e.length ? tl(e, Io) : 0
15962 }, pe.sumBy = function(e, t) {
15963 return e && e.length ? tl(e, Hn(t, 2)) : 0
15964 }, pe.template = function(a, e, t) {
15965 var n = pe.templateSettings;
15966 t && Gn(a, e, t) && (e = na), a = Gi(a), e = Xi({}, e, n, Tn);
15967 var s, l, r = Xi({}, e.imports, n.imports, Tn),
15971 u = e.interpolate || ps,
15973 f = v((e.escape || ps).source + "|" + u.source + "|" + (u === Wa ? as : ps).source + "|" + (e.evaluate || ps).source + "|$", "g"),
15974 h = "//# sourceURL=" + (k.call(e, "sourceURL") ? (e.sourceURL + "").replace(/[\r\n]/g, " ") : "lodash.templateSources[" + ++$s + "]") + "\n";
15975 a.replace(f, function(e, t, n, r, i, o) {
15976 return n || (n = r), d += a.slice(c, o).replace(ms, ul), t && (s = !0, d += "' +\n__e(" + t + ") +\n'"), i && (l = !0, d += "';\n" + i + ";\n__p += '"), n && (d += "' +\n((__t = (" + n + ")) == null ? '' : __t) +\n'"), c = o + e.length, e
15978 var p = k.call(e, "variable") && e.variable;
15979 p || (d = "with (obj) {\n" + d + "\n}\n"), d = (l ? d.replace(Ha, "") : d).replace(ja, "$1").replace(La, "$1;"), d = "function(" + (p || "obj") + ") {\n" + (p ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (s ? ", __e = _.escape" : "") + (l ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + d + "return __p\n}";
15980 var m = Ao(function() {
15981 return g(i, h + "return " + d).apply(na, o)
15983 if (m.source = d, xi(m)) throw m;
15985 }, pe.times = function(e, t) {
15986 if ((e = Bi(e)) < 1 || aa < e) return [];
15989 t = Hn(t), e -= la;
15990 for (var i = nl(r, t); ++n < e;) t(n);
15992 }, pe.toFinite = Vi, pe.toInteger = Bi, pe.toLength = zi, pe.toLower = function(e) {
15993 return Gi(e).toLowerCase()
15994 }, pe.toNumber = Wi, pe.toSafeInteger = function(e) {
15995 return e ? Re(Bi(e), -aa, aa) : 0 === e ? e : 0
15996 }, pe.toString = Gi, pe.toUpper = function(e) {
15997 return Gi(e).toUpperCase()
15998 }, pe.trim = function(e, t, n) {
15999 if ((e = Gi(e)) && (n || t === na)) return e.replace(Qa, "");
16000 if (!e || !(t = Ht(t))) return e;
16003 return Kt(r, al(r, i), sl(r, i) + 1).join("")
16004 }, pe.trimEnd = function(e, t, n) {
16005 if ((e = Gi(e)) && (n || t === na)) return e.replace(es, "");
16006 if (!e || !(t = Ht(t))) return e;
16008 return Kt(r, 0, sl(r, vl(t)) + 1).join("")
16009 }, pe.trimStart = function(e, t, n) {
16010 if ((e = Gi(e)) && (n || t === na)) return e.replace(Ja, "");
16011 if (!e || !(t = Ht(t))) return e;
16013 return Kt(r, al(r, vl(t))).join("")
16014 }, pe.truncate = function(e, t) {
16018 var i = "separator" in t ? t.separator : i;
16019 n = "length" in t ? Bi(t.length) : n, r = "omission" in t ? Ht(t.omission) : r
16021 var o = (e = Gi(e)).length;
16026 if (o <= n) return e;
16028 if (s < 1) return r;
16029 var l = a ? Kt(a, 0, s).join("") : e.slice(0, s);
16030 if (i === na) return l + r;
16031 if (a && (s += l.length - s), Ri(i)) {
16032 if (e.slice(s).search(i)) {
16034 for (i.global || (i = v(i.source, Gi(ss.exec(i)) + "g")), i.lastIndex = 0; c = i.exec(u);) var d = c.index;
16035 l = l.slice(0, d === na ? s : d)
16037 } else if (e.indexOf(Ht(i), s) != s) {
16038 var f = l.lastIndexOf(i); - 1 < f && (l = l.slice(0, f))
16041 }, pe.unescape = function(e) {
16042 return (e = Gi(e)) && Ua.test(e) ? e.replace(Fa, bl) : e
16043 }, pe.uniqueId = function(e) {
16046 }, pe.upperCase = xo, pe.upperFirst = To, pe.each = Gr, pe.eachRight = Kr, pe.first = wr, jo(pe, (Qo = {}, Ge(pe, function(e, t) {
16047 k.call(pe.prototype, t) || (Qo[t] = e)
16050 }), pe.VERSION = "4.17.15", Ps(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(e) {
16051 pe[e].placeholder = pe
16052 }), Ps(["drop", "take"], function(n, r) {
16053 be.prototype[n] = function(e) {
16054 e = e === na ? 1 : W(Bi(e), 0);
16055 var t = this.__filtered__ && !r ? new be(this) : this.clone();
16056 return t.__filtered__ ? t.__takeCount__ = Y(e, t.__takeCount__) : t.__views__.push({
16058 type: n + (t.__dir__ < 0 ? "Right" : "")
16060 }, be.prototype[n + "Right"] = function(e) {
16061 return this.reverse()[n](e).reverse()
16063 }), Ps(["filter", "map", "takeWhile"], function(e, t) {
16065 r = 1 == n || 3 == n;
16066 be.prototype[e] = function(e) {
16067 var t = this.clone();
16068 return t.__iteratees__.push({
16069 iteratee: Hn(e, 3),
16071 }), t.__filtered__ = t.__filtered__ || r, t
16073 }), Ps(["head", "last"], function(e, t) {
16074 var n = "take" + (t ? "Right" : "");
16075 be.prototype[e] = function() {
16076 return this[n](1).value()[0]
16078 }), Ps(["initial", "tail"], function(e, t) {
16079 var n = "drop" + (t ? "" : "Right");
16080 be.prototype[e] = function() {
16081 return this.__filtered__ ? new be(this) : this[n](1)
16083 }), be.prototype.compact = function() {
16084 return this.filter(Io)
16085 }, be.prototype.find = function(e) {
16086 return this.filter(e).head()
16087 }, be.prototype.findLast = function(e) {
16088 return this.reverse().find(e)
16089 }, be.prototype.invokeMap = Ct(function(t, n) {
16090 return "function" == typeof t ? new be(this) : this.map(function(e) {
16093 }), be.prototype.reject = function(e) {
16094 return this.filter(di(Hn(e)))
16095 }, be.prototype.slice = function(e, t) {
16098 return n.__filtered__ && (0 < e || t < 0) ? new be(n) : (e < 0 ? n = n.takeRight(-e) : e && (n = n.drop(e)), t !== na && (n = (t = Bi(t)) < 0 ? n.dropRight(-t) : n.take(t - e)), n)
16099 }, be.prototype.takeRightWhile = function(e) {
16100 return this.reverse().takeWhile(e).reverse()
16101 }, be.prototype.toArray = function() {
16102 return this.take(la)
16103 }, Ge(be.prototype, function(d, e) {
16104 var f = /^(?:filter|find|map|reject)|While$/.test(e),
16105 h = /^(?:head|last)$/.test(e),
16106 p = pe[h ? "take" + ("last" == e ? "Right" : "") : e],
16107 m = h || /^find/.test(e);
16108 p && (pe.prototype[e] = function() {
16109 var e = this.__wrapped__,
16110 n = h ? [1] : arguments,
16111 t = e instanceof be,
16115 var t = p.apply(pe, Vs([e], n));
16116 return h && a ? t[0] : t
16118 i && f && "function" == typeof r && 1 != r.length && (t = i = !1);
16119 var a = this.__chain__,
16120 s = !!this.__actions__.length,
16123 if (m || !i) return l && c ? d.apply(this, n) : (u = this.thru(o), l ? h ? u.value()[0] : u.value() : u);
16124 e = c ? e : new be(this);
16125 var u = d.apply(e, n);
16126 return u.__actions__.push({
16132 }), Ps(["pop", "push", "shift", "sort", "splice", "unshift"], function(e) {
16134 r = /^(?:push|sort|unshift)$/.test(e) ? "tap" : "thru",
16135 i = /^(?:pop|shift)$/.test(e);
16136 pe.prototype[e] = function() {
16138 if (!i || this.__chain__) return this[r](function(e) {
16139 return n.apply(_i(e) ? e : [], t)
16141 var e = this.value();
16142 return n.apply(_i(e) ? e : [], t)
16144 }), Ge(be.prototype, function(e, t) {
16147 var r = n.name + "";
16148 k.call(oe, r) || (oe[r] = []), oe[r].push({
16153 }), oe[mn(na, 2).name] = [{
16156 }], be.prototype.clone = function() {
16157 var e = new be(this.__wrapped__);
16158 return e.__actions__ = rn(this.__actions__), e.__dir__ = this.__dir__, e.__filtered__ = this.__filtered__, e.__iteratees__ = rn(this.__iteratees__), e.__takeCount__ = this.__takeCount__, e.__views__ = rn(this.__views__), e
16159 }, be.prototype.reverse = function() {
16160 if (this.__filtered__) {
16161 var e = new be(this);
16162 e.__dir__ = -1, e.__filtered__ = !0
16163 } else(e = this.clone()).__dir__ *= -1;
16165 }, be.prototype.value = function() {
16166 var e = this.__wrapped__.value(),
16170 i = n ? e.length : 0,
16171 o = function(e, t, n) {
16172 for (var r = -1, i = n.length; ++r < i;) {
16193 }(0, i, this.__views__),
16198 u = this.__iteratees__,
16201 h = Y(l, this.__takeCount__);
16202 if (!n || !r && i == l && h == l) return Ut(e, this.__actions__);
16204 e: for (; l-- && f < h;) {
16205 for (var m = -1, g = e[c += t]; ++m < d;) {
16212 if (1 == y) continue e;
16219 }, pe.prototype.at = Br, pe.prototype.chain = function() {
16221 }, pe.prototype.commit = function() {
16222 return new ve(this.value(), this.__chain__)
16223 }, pe.prototype.next = function() {
16224 this.__values__ === na && (this.__values__ = Ui(this.value()));
16225 var e = this.__index__ >= this.__values__.length;
16228 value: e ? na : this.__values__[this.__index__++]
16230 }, pe.prototype.plant = function(e) {
16231 for (var t, n = this; n instanceof ge;) {
16233 r.__index__ = 0, r.__values__ = na, t ? i.__wrapped__ = r : t = r;
16237 return i.__wrapped__ = e, t
16238 }, pe.prototype.reverse = function() {
16239 var e = this.__wrapped__;
16240 if (e instanceof be) {
16242 return this.__actions__.length && (t = new be(this)), (t = t.reverse()).__actions__.push({
16246 }), new ve(t, this.__chain__)
16248 return this.thru(Sr)
16249 }, pe.prototype.toJSON = pe.prototype.valueOf = pe.prototype.value = function() {
16250 return Ut(this.__wrapped__, this.__actions__)
16251 }, pe.prototype.first = pe.prototype.head, N && (pe.prototype[N] = function() {
16255 "function" == typeof define && "object" == typeof define.amd && define.amd ? (xs._ = yl, define(function() {
16257 })) : I ? ((I.exports = yl)._ = yl, N._ = yl) : xs._ = yl
16260 var T = t.isDefined,
16268 t.module("LocalStorageModule", []).provider("localStorageService", function() {
16269 this.prefix = "ls", this.storageType = "localStorage", this.cookie = {
16273 }, this.defaultToCookie = !0, this.notify = {
16276 }, this.setPrefix = function(e) {
16277 return this.prefix = e, this
16278 }, this.setStorageType = function(e) {
16279 return this.storageType = e, this
16280 }, this.setDefaultToCookie = function(e) {
16281 return this.defaultToCookie = !!e, this
16282 }, this.setStorageCookie = function(e, t, n) {
16283 return this.cookie.expiry = e, this.cookie.path = t, this.cookie.secure = n, this
16284 }, this.setStorageCookieDomain = function(e) {
16285 return this.cookie.domain = e, this
16286 }, this.setNotify = function(e, t) {
16287 return this.notify = {
16291 }, this.$get = ["$rootScope", "$window", "$document", "$parse", "$timeout", function(l, o, c, a, n) {
16297 c ? c[0] && (c = c[0]) : c = document, "." !== d.substr(-1) && (d = d ? d + "." : "");
16298 var p = function(e) {
16302 return e.replace(new RegExp("^" + d, "g"), "")
16305 return 0 === e.indexOf(d)
16309 var e = h in o && null !== o[h],
16310 t = p("__" + Math.round(1e7 * Math.random()));
16311 return e && ((s = o[h]).setItem(t, ""), s.removeItem(t)), e
16313 return u.defaultToCookie && (h = "cookie"), l.$broadcast("LocalStorageModule.notification.error", e.message), !1
16317 v = function(t, n, e) {
16320 if (x(e), n = M(n) ? null : I(n), !g && u.defaultToCookie || "cookie" === u.storageType) return g || l.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), i.setItem && l.$broadcast("LocalStorageModule.notification.setitem", {
16323 storageType: "cookie"
16326 s && s.setItem(p(t), n), i.setItem && l.$broadcast("LocalStorageModule.notification.setitem", {
16329 storageType: u.storageType
16332 return l.$broadcast("LocalStorageModule.notification.error", e.message), $(t, n)
16339 b = function(e, t) {
16342 if (x(t), !g && u.defaultToCookie || "cookie" === u.storageType) return g || l.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), w(e);
16343 var r = s ? s.getItem(p(e)) : null;
16344 if (!r || "null" === r) return null;
16346 return JSON.parse(r)
16358 for (1 <= arguments.length && ("localStorage" === arguments[arguments.length - 1] || "sessionStorage" === arguments[arguments.length - 1]) && (r = 1, x(arguments[arguments.length - 1])), t = 0; t < arguments.length - r; t++)
16359 if (n = arguments[t], !g && u.defaultToCookie || "cookie" === u.storageType) g || l.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), i.removeItem && l.$broadcast("LocalStorageModule.notification.removeitem", {
16361 storageType: "cookie"
16364 s.removeItem(p(n)), i.removeItem && l.$broadcast("LocalStorageModule.notification.removeitem", {
16366 storageType: u.storageType
16369 l.$broadcast("LocalStorageModule.notification.error", e.message), E(n)
16377 return o.navigator.cookieEnabled || "cookie" in c && (0 < c.cookie.length || -1 < (c.cookie = "test").indexOf.call(c.cookie, "test"))
16379 return l.$broadcast("LocalStorageModule.notification.error", e.message), !1
16382 $ = function(e, t, n, r) {
16383 if (M(t)) return !1;
16384 if ((D(t) || S(t)) && (t = I(t)), !_) return l.$broadcast("LocalStorageModule.notification.error", "COOKIES_NOT_SUPPORTED"), !1;
16389 if (null === t ? (o.setTime(o.getTime() + -864e5), i = "; expires=" + o.toGMTString(), t = "") : A(n) && 0 !== n ? (o.setTime(o.getTime() + 24 * n * 60 * 60 * 1e3), i = "; expires=" + o.toGMTString()) : 0 !== f.expiry && (o.setTime(o.getTime() + 24 * f.expiry * 60 * 60 * 1e3), i = "; expires=" + o.toGMTString()), e) {
16390 var s = "; path=" + f.path;
16391 f.domain && (a = "; domain=" + f.domain), "boolean" == typeof r ? !0 === r && (a += "; secure") : !0 === f.secure && (a += "; secure"), c.cookie = p(e) + "=" + encodeURIComponent(t) + i + s + a
16394 return l.$broadcast("LocalStorageModule.notification.error", e.message), !1
16399 if (!_) return l.$broadcast("LocalStorageModule.notification.error", "COOKIES_NOT_SUPPORTED"), !1;
16400 for (var t = c.cookie && c.cookie.split(";") || [], n = 0; n < t.length; n++) {
16402 " " === r.charAt(0);) r = r.substring(1, r.length);
16403 if (0 === r.indexOf(p(e) + "=")) {
16404 var i = decodeURIComponent(r.substring(d.length + e.length + 1, r.length));
16406 var o = JSON.parse(i);
16407 return "number" == typeof o ? i : o
16419 for (var e = null, t = d.length, n = c.cookie.split(";"), r = 0; r < n.length; r++) {
16421 " " === e.charAt(0);) e = e.substring(1, e.length);
16422 var i = e.substring(t, e.indexOf("="));
16430 return e && h !== e && (h = e, g = t()), g
16434 if (e || (e = o.event), i.setItem && O(e.key) && m(e.key)) {
16437 l.$broadcast("LocalStorageModule.notification.changed", {
16439 newvalue: e.newValue,
16440 storageType: u.storageType
16445 g && (o.addEventListener ? (o.addEventListener("storage", e, !1), l.$on("$destroy", function() {
16446 o.removeEventListener("storage", e)
16447 })) : o.attachEvent && (o.attachEvent("onstorage", e), l.$on("$destroy", function() {
16448 o.detachEvent("onstorage", e)
16454 setPrefix: function(e) {
16460 keys: function(e) {
16463 if (x(e), !g) return l.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), [];
16467 if (i.substr(0, n) === d) try {
16468 r.push(i.substr(n))
16470 return l.$broadcast("LocalStorageModule.notification.error", e.Description), []
16478 clearAll: function(e, t) {
16482 var r = d ? new RegExp("^" + d) : new RegExp,
16483 i = e ? new RegExp(e) : new RegExp;
16484 if (!g && u.defaultToCookie || "cookie" === u.storageType) return g || l.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), C();
16485 if (!g && !u.defaultToCookie) return !1;
16488 if (r.test(a) && i.test(a.substr(o))) try {
16491 return l.$broadcast("LocalStorageModule.notification.error", e.message), C()
16498 bind: function(e, t, n, r, i) {
16499 var o = b(r = r || t, i);
16500 return null === o && T(n) ? o = n : S(o) && S(n) && (o = N(o, n)), a(t).assign(e, o), e.$watch(t, function(e) {
16506 length: function(e) {
16510 for (var n = 0, r = o[h], i = 0; i < r.length; i++) 0 === r.key(i).indexOf(d) && n++;
16516 defaultToCookie: this.defaultToCookie,
16528 }(window, window.angular),
16531 var U = s.$$minErr("$resource"),
16532 l = /^(\.[a-zA-Z_$@][0-9a-zA-Z_$@]*)+$/;
16535 if (null == (n = t) || "" === n || "hasOwnProperty" === n || !l.test("." + n)) throw U("badmember", 'Dotted member path "@{0}" is invalid.', t);
16536 for (var n, r = t.split("."), i = 0, o = r.length; i < o && s.isDefined(e); i++) {
16538 e = null !== e ? e[a] : void 0
16544 for (var t in n = n || {}, s.forEach(n, function(e, t) {
16546 }), e) !e.hasOwnProperty(t) || "$" === t.charAt(0) && "$" === t.charAt(1) || (n[t] = e[t]);
16549 s.module("ngResource", ["ng"]).info({
16550 angularVersion: "1.7.9"
16551 }).provider("$resource", function() {
16552 var f = /^https?:\/\/\[[^\]]*][^/]*/,
16555 stripTrailingSlashes: !0,
16575 }, this.$get = ["$http", "$log", "$q", "$timeout", function(N, r, I, R) {
16584 u = s.$$encodeUriQuery,
16585 d = s.$$encodeUriSegment;
16588 this.template = e, this.defaults = j({}, a.defaults, t), this.urlParams = {}
16590 return o.prototype = {
16591 setUrlParams: function(n, r, e) {
16592 var i, o, a = this,
16593 s = e || a.template,
16595 l = a.urlParams = Object.create(null);
16596 H(s.split(/\W/), function(e) {
16597 if ("hasOwnProperty" === e) throw U("badname", "hasOwnProperty is not a valid parameter name.");
16598 !new RegExp("^\\d+$").test(e) && e && new RegExp("(^|[^\\\\]):" + e + "(\\W|$)").test(s) && (l[e] = {
16599 isQueryParamValue: new RegExp("\\?.*=:" + e + "(?:\\W|$)").test(s)
16601 }), s = (s = s.replace(/\\:/g, ":")).replace(f, function(e) {
16603 }), r = r || {}, H(a.urlParams, function(e, t) {
16604 i = r.hasOwnProperty(t) ? r[t] : a.defaults[t], s = c(i) && null !== i ? (o = e.isQueryParamValue ? u(i, !0) : d(i), s.replace(new RegExp(":" + t + "(\\W|$)", "g"), function(e, t) {
16606 })) : s.replace(new RegExp("(/?):" + t + "(\\W|$)", "g"), function(e, t, n) {
16607 return "/" === n.charAt(0) ? n : t + n
16609 }), a.defaults.stripTrailingSlashes && (s = s.replace(/\/+$/, "") || "/"), s = s.replace(/\/\.(?=\w+($|\?))/, "."), n.url = t + s.replace(/\/(\\|%5C)\./, "/."), H(r, function(e, t) {
16610 a.urlParams[t] || (n.params = n.params || {}, n.params[t] = e)
16614 function(e, A, t, n) {
16615 var S = new o(e, n);
16624 return t = j({}, a.defaults.actions, t), O.prototype.toJSON = function() {
16625 var e = j({}, this);
16626 return delete e.$promise, delete e.$resolved, delete e.$cancelRequest, e
16627 }, H(t, function(C, k) {
16628 var x = !0 === C.hasBody || !1 !== C.hasBody && /^(POST|PUT|PATCH)$/i.test(C.method),
16630 M = c(C.cancellable) ? C.cancellable : S.defaults.cancellable;
16631 T && !i(T) && (r.debug("ngResource:\n Only numeric values are allowed as `timeout`.\n Promises are not supported in $resource, because the same value would be used for multiple requests. If you are looking for a way to cancel requests, you should use the `cancellable` option."), delete C.timeout, T = null), O[k] = function(e, t, n, r) {
16632 var i, o, a, s = {};
16633 switch (arguments.length) {
16639 s = e, i = t, o = n;
16648 q(e) ? o = e : x ? i = e : s = e;
16653 throw U("badargs", "Expected up to 4 arguments [params, data, success, error], got {0} arguments", arguments.length)
16655 var l, c, u, d, f, h, p = this instanceof O,
16656 m = p ? i : C.isArray ? [] : new O(i),
16658 v = C.interceptor && C.interceptor.request || void 0,
16659 b = C.interceptor && C.interceptor.requestError || void 0,
16660 y = C.interceptor && C.interceptor.response || D,
16661 _ = C.interceptor && C.interceptor.responseError || I.reject,
16662 $ = o ? function(e) {
16663 o(e, u.headers, u.status, u.statusText)
16666 H(C, function(e, t) {
16673 case "interceptor":
16674 case "cancellable":
16676 }), !p && M && (l = I.defer(), g.timeout = l.promise, T && (c = R(l.resolve, T))), x && (g.data = i), S.setUrlParams(g, j({}, (d = i, f = C.params || {}, h = {}, f = j({}, A, f), H(f, function(e, t) {
16677 q(e) && (e = e(d)), h[t] = e && e.charAt && "@" === e.charAt(0) ? V(d, e.substr(1)) : e
16678 }), h), s), C.url);
16679 var E = I.resolve(g).then(v).catch(b).then(N);
16680 return (E = (E = E.then(function(e) {
16683 if (F(t) !== !!C.isArray) throw U("badcfg", "Error in resource configuration for action `{0}`. Expected response to contain an {1} but got an {2} (Request: {3} {4})", k, C.isArray ? "array" : "object", F(t) ? "array" : "object", g.method, g.url);
16684 if (C.isArray) m.length = 0, H(t, function(e) {
16685 "object" == typeof e ? m.push(new O(e)) : m.push(e)
16688 var n = m.$promise;
16689 B(t, m), m.$promise = n
16692 return e.resource = m, y(u = e)
16694 return e.resource = m, _(u = e)
16695 })).finally(function() {
16696 m.$resolved = !0, !p && M && (m.$cancelRequest = P, R.cancel(c), l = c = g.timeout = null)
16697 })).then($, w), p ? E : (m.$promise = E, m.$resolved = !1, M && (m.$cancelRequest = function(e) {
16698 E.catch(P), null !== l && l.resolve(e)
16700 }, O.prototype["$" + k] = function(e, t, n) {
16701 q(e) && (n = t, t = e, e = {});
16702 var r = O[k].call(this, e, this, t, n);
16703 return r.$promise || r
16709 }(window, window.angular),
16711 "object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : e.moment = t()
16712 }(this, function() {
16717 return e.apply(null, arguments)
16721 return e instanceof Array || "[object Array]" === Object.prototype.toString.call(e)
16725 return null != e && "[object Object]" === Object.prototype.toString.call(e)
16729 return void 0 === e
16733 return "number" == typeof e || "[object Number]" === Object.prototype.toString.call(e)
16737 return e instanceof Date || "[object Date]" === Object.prototype.toString.call(e)
16742 for (n = 0; n < e.length; ++n) r.push(t(e[n], n));
16747 return Object.prototype.hasOwnProperty.call(e, t)
16751 for (var n in t) p(t, n) && (e[n] = t[n]);
16752 return p(t, "toString") && (e.toString = t.toString), p(t, "valueOf") && (e.valueOf = t.valueOf), e
16755 function g(e, t, n, r) {
16756 return Tt(e, t, n, r, !0).utc()
16760 return null == e._pf && (e._pf = {
16767 invalidMonth: null,
16769 userInvalidated: !1,
16771 parsedDateParts: [],
16774 weekdayMismatch: !1
16779 if (null == e._isValid) {
16781 n = i.call(t.parsedDateParts, function(e) {
16784 r = !isNaN(e._d.getTime()) && t.overflow < 0 && !t.empty && !t.invalidMonth && !t.invalidWeekday && !t.weekdayMismatch && !t.nullInput && !t.invalidFormat && !t.userInvalidated && (!t.meridiem || t.meridiem && n);
16785 if (e._strict && (r = r && 0 === t.charsLeftOver && 0 === t.unusedTokens.length && void 0 === t.bigHour), null != Object.isFrozen && Object.isFrozen(e)) return r;
16793 return null != e ? m(v(t), e) : v(t).userInvalidated = !0, t
16795 i = Array.prototype.some ? Array.prototype.some : function(e) {
16796 for (var t = Object(this), n = t.length >>> 0, r = 0; r < n; r++)
16797 if (r in t && e.call(this, t[r], r, t)) return !0;
16800 var o = f.momentProperties = [];
16804 if (c(t._isAMomentObject) || (e._isAMomentObject = t._isAMomentObject), c(t._i) || (e._i = t._i), c(t._f) || (e._f = t._f), c(t._l) || (e._l = t._l), c(t._strict) || (e._strict = t._strict), c(t._tzm) || (e._tzm = t._tzm), c(t._isUTC) || (e._isUTC = t._isUTC), c(t._offset) || (e._offset = t._offset), c(t._pf) || (e._pf = v(t)), c(t._locale) || (e._locale = t._locale), 0 < o.length)
16805 for (n = 0; n < o.length; n++) c(i = t[r = o[n]]) || (e[r] = i);
16811 _(this, e), this._d = new Date(null != e._d ? e._d.getTime() : NaN), this.isValid() || (this._d = new Date(NaN)), !1 === t && (t = !0, f.updateOffset(this), t = !1)
16815 return e instanceof $ || null != e && null != e._isAMomentObject
16819 return e < 0 ? Math.ceil(e) || 0 : Math.floor(e)
16825 return 0 !== t && isFinite(t) && (n = E(t)), n
16828 function a(e, t, n) {
16829 var r, i = Math.min(e.length, t.length),
16830 o = Math.abs(e.length - t.length),
16832 for (r = 0; r < i; r++)(n && e[r] !== t[r] || !n && C(e[r]) !== C(t[r])) && a++;
16837 !1 === f.suppressDeprecationWarnings && "undefined" != typeof console && console.warn && console.warn("Deprecation warning: " + e)
16842 return m(function() {
16843 if (null != f.deprecationHandler && f.deprecationHandler(null, i), a) {
16844 for (var e, t = [], n = 0; n < arguments.length; n++) {
16845 if (e = "", "object" == typeof arguments[n]) {
16846 for (var r in e += "\n[" + n + "] ", arguments[0]) e += r + ": " + arguments[0][r] + ", ";
16848 } else e = arguments[n];
16851 k(i + "\nArguments: " + Array.prototype.slice.call(t).join("") + "\n" + (new Error).stack), a = !1
16853 return o.apply(this, arguments)
16859 null != f.deprecationHandler && f.deprecationHandler(e, t), x[e] || (k(t), x[e] = !0)
16863 return e instanceof Function || "[object Function]" === Object.prototype.toString.call(e)
16867 var n, r = m({}, e);
16868 for (n in t) p(t, n) && (l(e[n]) && l(t[n]) ? (r[n] = {}, m(r[n], e[n]), m(r[n], t[n])) : null != t[n] ? r[n] = t[n] : delete r[n]);
16869 for (n in e) p(e, n) && !p(t, n) && l(e[n]) && (r[n] = m({}, r[n]));
16874 null != e && this.set(e)
16876 f.suppressDeprecationWarnings = !1, f.deprecationHandler = null, r = Object.keys ? Object.keys : function(e) {
16878 for (t in e) p(e, t) && n.push(t);
16884 var n = e.toLowerCase();
16885 D[n] = D[n + "s"] = D[t] = e
16889 return "string" == typeof e ? D[e] || D[e.toLowerCase()] : void 0
16894 for (n in e) p(e, n) && (t = N(n)) && (r[t] = e[n]);
16903 function H(e, t, n) {
16904 var r = "" + Math.abs(e),
16906 return (0 <= e ? n ? "+" : "" : "-") + Math.pow(10, Math.max(0, i)).toString().substr(1) + r
16908 var j = /(\[[^\[]*\])|(\\)?([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,
16909 L = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
16913 function U(e, t, n, r) {
16915 "string" == typeof r && (i = function() {
16917 }), e && (q[e] = i), t && (q[t[0]] = function() {
16918 return H(i.apply(this, arguments), t[1], t[2])
16919 }), n && (q[n] = function() {
16920 return this.localeData().ordinal(i.apply(this, arguments), e)
16925 return e.isValid() ? (t = B(t, e.localeData()), F[t] = F[t] || function(r) {
16926 var e, i, t, o = r.match(j);
16927 for (e = 0, i = o.length; e < i; e++) q[o[e]] ? o[e] = q[o[e]] : o[e] = (t = o[e]).match(/\[[\s\S]/) ? t.replace(/^\[|\]$/g, "") : t.replace(/\\/g, "");
16928 return function(e) {
16930 for (t = 0; t < i; t++) n += M(o[t]) ? o[t].call(e, r) : o[t];
16933 }(t), F[t](e)) : e.localeData().invalidDate()
16940 return t.longDateFormat(e) || e
16942 for (L.lastIndex = 0; 0 <= n && L.test(e);) e = e.replace(L, r), L.lastIndex = 0, n -= 1;
16952 Q = /\d\d\d\d\d\d?/,
16955 te = /[+-]?\d{1,6}/,
16958 ie = /Z|[+-]\d\d:?\d\d/gi,
16959 oe = /Z|[+-]\d\d(?::?\d\d)?/gi,
16960 ae = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,
16963 function le(e, n, r) {
16964 se[e] = M(n) ? n : function(e, t) {
16965 return e && r ? r : n
16969 function ce(e, t) {
16970 return p(se, e) ? se[e](t._strict, t._locale) : new RegExp(ue(e.replace("\\", "").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function(e, t, n, r, i) {
16971 return t || n || r || i
16976 return e.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&")
16980 function fe(e, n) {
16982 for ("string" == typeof e && (e = [e]), u(n) && (r = function(e, t) {
16984 }), t = 0; t < e.length; t++) de[e[t]] = r
16987 function he(e, i) {
16988 fe(e, function(e, t, n, r) {
16989 n._w = n._w || {}, i(e, n._w, n, r)
17003 return Ce(e) ? 366 : 365
17007 return e % 4 == 0 && e % 100 != 0 || e % 400 == 0
17009 U("Y", 0, 0, function() {
17010 var e = this.year();
17011 return e <= 9999 ? "" + e : "+" + e
17012 }), U(0, ["YY", 2], 0, function() {
17013 return this.year() % 100
17014 }), U(0, ["YYYY", 4], 0, "year"), U(0, ["YYYYY", 5], 0, "year"), U(0, ["YYYYYY", 6, !0], 0, "year"), O("year", "y"), P("year", 1), le("Y", re), le("YY", Z, W), le("YYYY", ee, G), le("YYYYY", te, K), le("YYYYYY", te, K), fe(["YYYYY", "YYYYYY"], pe), fe("YYYY", function(e, t) {
17015 t[pe] = 2 === e.length ? f.parseTwoDigitYear(e) : C(e)
17016 }), fe("YY", function(e, t) {
17017 t[pe] = f.parseTwoDigitYear(e)
17018 }), fe("Y", function(e, t) {
17019 t[pe] = parseInt(e, 10)
17020 }), f.parseTwoDigitYear = function(e) {
17021 return C(e) + (68 < C(e) ? 1900 : 2e3)
17023 var ke, xe = Te("FullYear", !0);
17025 function Te(t, n) {
17026 return function(e) {
17027 return null != e ? (Ae(this, t, e), f.updateOffset(this, n), this) : Me(this, t)
17031 function Me(e, t) {
17032 return e.isValid() ? e._d["get" + (e._isUTC ? "UTC" : "") + t]() : NaN
17035 function Ae(e, t, n) {
17036 e.isValid() && !isNaN(n) && ("FullYear" === t && Ce(e.year()) && 1 === e.month() && 29 === e.date() ? e._d["set" + (e._isUTC ? "UTC" : "") + t](n, e.month(), Se(n, e.month())) : e._d["set" + (e._isUTC ? "UTC" : "") + t](n))
17039 function Se(e, t) {
17040 if (isNaN(e) || isNaN(t)) return NaN;
17041 var n, r = (t % (n = 12) + n) % n;
17042 return e += (t - r) / 12, 1 === r ? Ce(e) ? 29 : 28 : 31 - r % 7 % 2
17044 ke = Array.prototype.indexOf ? Array.prototype.indexOf : function(e) {
17046 for (t = 0; t < this.length; ++t)
17047 if (this[t] === e) return t;
17049 }, U("M", ["MM", 2], "Mo", function() {
17050 return this.month() + 1
17051 }), U("MMM", 0, 0, function(e) {
17052 return this.localeData().monthsShort(this, e)
17053 }), U("MMMM", 0, 0, function(e) {
17054 return this.localeData().months(this, e)
17055 }), O("month", "M"), P("month", 8), le("M", Z), le("MM", Z, W), le("MMM", function(e, t) {
17056 return t.monthsShortRegex(e)
17057 }), le("MMMM", function(e, t) {
17058 return t.monthsRegex(e)
17059 }), fe(["M", "MM"], function(e, t) {
17061 }), fe(["MMM", "MMMM"], function(e, t, n, r) {
17062 var i = n._locale.monthsParse(e, r, n._strict);
17063 null != i ? t[me] = i : v(n).invalidMonth = e
17065 var De = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
17066 Oe = "January_February_March_April_May_June_July_August_September_October_November_December".split("_");
17067 var Ne = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");
17069 function Ie(e, t) {
17071 if (!e.isValid()) return e;
17072 if ("string" == typeof t)
17073 if (/^\d+$/.test(t)) t = C(t);
17074 else if (!u(t = e.localeData().monthsParse(t))) return e;
17075 return n = Math.min(e.date(), Se(e.year(), t)), e._d["set" + (e._isUTC ? "UTC" : "") + "Month"](t, n), e
17079 return null != e ? (Ie(this, e), f.updateOffset(this, !0), this) : Me(this, "Month")
17086 return t.length - e.length
17091 for (t = 0; t < 12; t++) n = g([2e3, t]), r.push(this.monthsShort(n, "")), i.push(this.months(n, "")), o.push(this.months(n, "")), o.push(this.monthsShort(n, ""));
17092 for (r.sort(e), i.sort(e), o.sort(e), t = 0; t < 12; t++) r[t] = ue(r[t]), i[t] = ue(i[t]);
17093 for (t = 0; t < 24; t++) o[t] = ue(o[t]);
17094 this._monthsRegex = new RegExp("^(" + o.join("|") + ")", "i"), this._monthsShortRegex = this._monthsRegex, this._monthsStrictRegex = new RegExp("^(" + i.join("|") + ")", "i"), this._monthsShortStrictRegex = new RegExp("^(" + r.join("|") + ")", "i")
17099 if (e < 100 && 0 <= e) {
17100 var n = Array.prototype.slice.call(arguments);
17101 n[0] = e + 400, t = new Date(Date.UTC.apply(null, n)), isFinite(t.getUTCFullYear()) && t.setUTCFullYear(e)
17102 } else t = new Date(Date.UTC.apply(null, arguments));
17106 function Fe(e, t, n) {
17108 return -((7 + Le(e, 0, r).getUTCDay() - t) % 7) + r - 1
17111 function qe(e, t, n, r, i) {
17112 var o, a, s = 1 + 7 * (t - 1) + (7 + n - r) % 7 + Fe(e, r, i);
17113 return a = s <= 0 ? Ee(o = e - 1) + s : s > Ee(e) ? (o = e + 1, s - Ee(e)) : (o = e, s), {
17119 function Ue(e, t, n) {
17120 var r, i, o = Fe(e.year(), t, n),
17121 a = Math.floor((e.dayOfYear() - o - 1) / 7) + 1;
17122 return a < 1 ? r = a + Ve(i = e.year() - 1, t, n) : a > Ve(e.year(), t, n) ? (r = a - Ve(e.year(), t, n), i = e.year() + 1) : (i = e.year(), r = a), {
17128 function Ve(e, t, n) {
17129 var r = Fe(e, t, n),
17130 i = Fe(e + 1, t, n);
17131 return (Ee(e) - r + i) / 7
17133 U("w", ["ww", 2], "wo", "week"), U("W", ["WW", 2], "Wo", "isoWeek"), O("week", "w"), O("isoWeek", "W"), P("week", 5), P("isoWeek", 5), le("w", Z), le("ww", Z, W), le("W", Z), le("WW", Z, W), he(["w", "ww", "W", "WW"], function(e, t, n, r) {
17134 t[r.substr(0, 1)] = C(e)
17137 function Be(e, t) {
17138 return e.slice(t, 7).concat(e.slice(0, t))
17140 U("d", 0, "do", "day"), U("dd", 0, 0, function(e) {
17141 return this.localeData().weekdaysMin(this, e)
17142 }), U("ddd", 0, 0, function(e) {
17143 return this.localeData().weekdaysShort(this, e)
17144 }), U("dddd", 0, 0, function(e) {
17145 return this.localeData().weekdays(this, e)
17146 }), U("e", 0, 0, "weekday"), U("E", 0, 0, "isoWeekday"), O("day", "d"), O("weekday", "e"), O("isoWeekday", "E"), P("day", 11), P("weekday", 11), P("isoWeekday", 11), le("d", Z), le("e", Z), le("E", Z), le("dd", function(e, t) {
17147 return t.weekdaysMinRegex(e)
17148 }), le("ddd", function(e, t) {
17149 return t.weekdaysShortRegex(e)
17150 }), le("dddd", function(e, t) {
17151 return t.weekdaysRegex(e)
17152 }), he(["dd", "ddd", "dddd"], function(e, t, n, r) {
17153 var i = n._locale.weekdaysParse(e, r, n._strict);
17154 null != i ? t.d = i : v(n).invalidWeekday = e
17155 }), he(["d", "e", "E"], function(e, t, n, r) {
17158 var ze = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");
17159 var We = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");
17160 var Ye = "Su_Mo_Tu_We_Th_Fr_Sa".split("_");
17167 return t.length - e.length
17169 var t, n, r, i, o, a = [],
17173 for (t = 0; t < 7; t++) n = g([2e3, 1]).day(t), r = this.weekdaysMin(n, ""), i = this.weekdaysShort(n, ""), o = this.weekdays(n, ""), a.push(r), s.push(i), l.push(o), c.push(r), c.push(i), c.push(o);
17174 for (a.sort(e), s.sort(e), l.sort(e), c.sort(e), t = 0; t < 7; t++) s[t] = ue(s[t]), l[t] = ue(l[t]), c[t] = ue(c[t]);
17175 this._weekdaysRegex = new RegExp("^(" + c.join("|") + ")", "i"), this._weekdaysShortRegex = this._weekdaysRegex, this._weekdaysMinRegex = this._weekdaysRegex, this._weekdaysStrictRegex = new RegExp("^(" + l.join("|") + ")", "i"), this._weekdaysShortStrictRegex = new RegExp("^(" + s.join("|") + ")", "i"), this._weekdaysMinStrictRegex = new RegExp("^(" + a.join("|") + ")", "i")
17179 return this.hours() % 12 || 12
17182 function Je(e, t) {
17183 U(e, 0, 0, function() {
17184 return this.localeData().meridiem(this.hours(), this.minutes(), t)
17188 function et(e, t) {
17189 return t._meridiemParse
17191 U("H", ["HH", 2], 0, "hour"), U("h", ["hh", 2], 0, Qe), U("k", ["kk", 2], 0, function() {
17192 return this.hours() || 24
17193 }), U("hmm", 0, 0, function() {
17194 return "" + Qe.apply(this) + H(this.minutes(), 2)
17195 }), U("hmmss", 0, 0, function() {
17196 return "" + Qe.apply(this) + H(this.minutes(), 2) + H(this.seconds(), 2)
17197 }), U("Hmm", 0, 0, function() {
17198 return "" + this.hours() + H(this.minutes(), 2)
17199 }), U("Hmmss", 0, 0, function() {
17200 return "" + this.hours() + H(this.minutes(), 2) + H(this.seconds(), 2)
17201 }), Je("a", !0), Je("A", !1), O("hour", "h"), P("hour", 13), le("a", et), le("A", et), le("H", Z), le("h", Z), le("k", Z), le("HH", Z, W), le("hh", Z, W), le("kk", Z, W), le("hmm", X), le("hmmss", Q), le("Hmm", X), le("Hmmss", Q), fe(["H", "HH"], ve), fe(["k", "kk"], function(e, t, n) {
17203 t[ve] = 24 === r ? 0 : r
17204 }), fe(["a", "A"], function(e, t, n) {
17205 n._isPm = n._locale.isPM(e), n._meridiem = e
17206 }), fe(["h", "hh"], function(e, t, n) {
17207 t[ve] = C(e), v(n).bigHour = !0
17208 }), fe("hmm", function(e, t, n) {
17209 var r = e.length - 2;
17210 t[ve] = C(e.substr(0, r)), t[be] = C(e.substr(r)), v(n).bigHour = !0
17211 }), fe("hmmss", function(e, t, n) {
17212 var r = e.length - 4,
17214 t[ve] = C(e.substr(0, r)), t[be] = C(e.substr(r, 2)), t[ye] = C(e.substr(i)), v(n).bigHour = !0
17215 }), fe("Hmm", function(e, t, n) {
17216 var r = e.length - 2;
17217 t[ve] = C(e.substr(0, r)), t[be] = C(e.substr(r))
17218 }), fe("Hmmss", function(e, t, n) {
17219 var r = e.length - 4,
17221 t[ve] = C(e.substr(0, r)), t[be] = C(e.substr(r, 2)), t[ye] = C(e.substr(i))
17223 var tt, nt = Te("Hours", !0),
17226 sameDay: "[Today at] LT",
17227 nextDay: "[Tomorrow at] LT",
17228 nextWeek: "dddd [at] LT",
17229 lastDay: "[Yesterday at] LT",
17230 lastWeek: "[Last] dddd [at] LT",
17237 LL: "MMMM D, YYYY",
17238 LLL: "MMMM D, YYYY h:mm A",
17239 LLLL: "dddd, MMMM D, YYYY h:mm A"
17241 invalidDate: "Invalid date",
17243 dayOfMonthOrdinalParse: /\d{1,2}/,
17247 s: "a few seconds",
17269 meridiemParse: /[ap]\.?m?\.?/i
17275 return e ? e.toLowerCase().replace("_", "-") : e
17280 if (!it[e] && "undefined" != typeof module && module && module.exports) try {
17281 t = tt._abbr, require("./locale/" + e), lt(t)
17286 function lt(e, t) {
17288 return e && ((n = c(t) ? ut(e) : ct(e, t)) ? tt = n : "undefined" != typeof console && console.warn && console.warn("Locale " + e + " not found. Did you forget to load it?")), tt._abbr
17291 function ct(e, t) {
17292 if (null === t) return delete it[e], null;
17294 if (t.abbr = e, null != it[e]) T("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."), r = it[e]._config;
17295 else if (null != t.parentLocale)
17296 if (null != it[t.parentLocale]) r = it[t.parentLocale]._config;
17298 if (null == (n = st(t.parentLocale))) return ot[t.parentLocale] || (ot[t.parentLocale] = []), ot[t.parentLocale].push({
17303 } return it[e] = new S(A(r, t)), ot[e] && ot[e].forEach(function(e) {
17304 ct(e.name, e.config)
17310 if (e && e._locale && e._locale._abbr && (e = e._locale._abbr), !e) return tt;
17312 if (t = st(e)) return t;
17315 return function(e) {
17316 for (var t, n, r, i, o = 0; o < e.length;) {
17317 for (t = (i = at(e[o]).split("-")).length, n = (n = at(e[o + 1])) ? n.split("-") : null; 0 < t;) {
17318 if (r = st(i.slice(0, t).join("-"))) return r;
17319 if (n && n.length >= t && a(i, n, !0) >= t - 1) break;
17330 return n && -2 === v(e).overflow && (t = n[me] < 0 || 11 < n[me] ? me : n[ge] < 1 || n[ge] > Se(n[pe], n[me]) ? ge : n[ve] < 0 || 24 < n[ve] || 24 === n[ve] && (0 !== n[be] || 0 !== n[ye] || 0 !== n[_e]) ? ve : n[be] < 0 || 59 < n[be] ? be : n[ye] < 0 || 59 < n[ye] ? ye : n[_e] < 0 || 999 < n[_e] ? _e : -1, v(e)._overflowDayOfYear && (t < pe || ge < t) && (t = ge), v(e)._overflowWeeks && -1 === t && (t = $e), v(e)._overflowWeekday && -1 === t && (t = we), v(e).overflow = t), e
17333 function ft(e, t, n) {
17334 return null != e ? e : null != t ? t : n
17338 var t, n, r, i, o, a = [];
17341 for (s = e, l = new Date(f.now()), r = s._useUTC ? [l.getUTCFullYear(), l.getUTCMonth(), l.getUTCDate()] : [l.getFullYear(), l.getMonth(), l.getDate()], e._w && null == e._a[ge] && null == e._a[me] && function(e) {
17342 var t, n, r, i, o, a, s, l;
17343 if (null != (t = e._w).GG || null != t.W || null != t.E) o = 1, a = 4, n = ft(t.GG, e._a[pe], Ue(Mt(), 1, 4).year), r = ft(t.W, 1), ((i = ft(t.E, 1)) < 1 || 7 < i) && (l = !0);
17345 o = e._locale._week.dow, a = e._locale._week.doy;
17346 var c = Ue(Mt(), o, a);
17347 n = ft(t.gg, e._a[pe], c.year), r = ft(t.w, c.week), null != t.d ? ((i = t.d) < 0 || 6 < i) && (l = !0) : null != t.e ? (i = t.e + o, (t.e < 0 || 6 < t.e) && (l = !0)) : i = o
17349 r < 1 || r > Ve(n, o, a) ? v(e)._overflowWeeks = !0 : null != l ? v(e)._overflowWeekday = !0 : (s = qe(n, r, i, o, a), e._a[pe] = s.year, e._dayOfYear = s.dayOfYear)
17350 }(e), null != e._dayOfYear && (o = ft(e._a[pe], r[pe]), (e._dayOfYear > Ee(o) || 0 === e._dayOfYear) && (v(e)._overflowDayOfYear = !0), n = Le(o, 0, e._dayOfYear), e._a[me] = n.getUTCMonth(), e._a[ge] = n.getUTCDate()), t = 0; t < 3 && null == e._a[t]; ++t) e._a[t] = a[t] = r[t];
17351 for (; t < 7; t++) e._a[t] = a[t] = null == e._a[t] ? 2 === t ? 1 : 0 : e._a[t];
17352 24 === e._a[ve] && 0 === e._a[be] && 0 === e._a[ye] && 0 === e._a[_e] && (e._nextDay = !0, e._a[ve] = 0), e._d = (e._useUTC ? Le : function(e, t, n, r, i, o, a) {
17354 return e < 100 && 0 <= e ? (s = new Date(e + 400, t, n, r, i, o, a), isFinite(s.getFullYear()) && s.setFullYear(e)) : s = new Date(e, t, n, r, i, o, a), s
17355 }).apply(null, a), i = e._useUTC ? e._d.getUTCDay() : e._d.getDay(), null != e._tzm && e._d.setUTCMinutes(e._d.getUTCMinutes() - e._tzm), e._nextDay && (e._a[ve] = 24), e._w && void 0 !== e._w.d && e._w.d !== i && (v(e).weekdayMismatch = !0)
17358 var pt = /^\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)?)?$/,
17359 mt = /^\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)?)?$/,
17360 gt = /Z|[+-]\d\d(?::?\d\d)?/,
17362 ["YYYYYY-MM-DD", /[+-]\d{6}-\d\d-\d\d/],
17363 ["YYYY-MM-DD", /\d{4}-\d\d-\d\d/],
17364 ["GGGG-[W]WW-E", /\d{4}-W\d\d-\d/],
17365 ["GGGG-[W]WW", /\d{4}-W\d\d/, !1],
17366 ["YYYY-DDD", /\d{4}-\d{3}/],
17367 ["YYYY-MM", /\d{4}-\d\d/, !1],
17368 ["YYYYYYMMDD", /[+-]\d{10}/],
17369 ["YYYYMMDD", /\d{8}/],
17370 ["GGGG[W]WWE", /\d{4}W\d{3}/],
17371 ["GGGG[W]WW", /\d{4}W\d{2}/, !1],
17372 ["YYYYDDD", /\d{7}/]
17375 ["HH:mm:ss.SSSS", /\d\d:\d\d:\d\d\.\d+/],
17376 ["HH:mm:ss,SSSS", /\d\d:\d\d:\d\d,\d+/],
17377 ["HH:mm:ss", /\d\d:\d\d:\d\d/],
17378 ["HH:mm", /\d\d:\d\d/],
17379 ["HHmmss.SSSS", /\d\d\d\d\d\d\.\d+/],
17380 ["HHmmss,SSSS", /\d\d\d\d\d\d,\d+/],
17381 ["HHmmss", /\d\d\d\d\d\d/],
17382 ["HHmm", /\d\d\d\d/],
17385 yt = /^\/?Date\((\-?\d+)/i;
17388 var t, n, r, i, o, a, s = e._i,
17389 l = pt.exec(s) || mt.exec(s);
17391 for (v(e).iso = !0, t = 0, n = vt.length; t < n; t++)
17392 if (vt[t][1].exec(l[1])) {
17393 i = vt[t][0], r = !1 !== vt[t][2];
17395 } if (null == i) return void(e._isValid = !1);
17397 for (t = 0, n = bt.length; t < n; t++)
17398 if (bt[t][1].exec(l[3])) {
17399 o = (l[2] || " ") + bt[t][0];
17401 } if (null == o) return void(e._isValid = !1)
17403 if (!r && null != o) return void(e._isValid = !1);
17405 if (!gt.exec(l[4])) return void(e._isValid = !1);
17408 e._f = i + (o || "") + (a || ""), kt(e)
17409 } else e._isValid = !1
17411 var $t = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;
17413 function wt(e, t, n, r, i, o) {
17414 var a = [function(e) {
17415 var t = parseInt(e, 10); {
17416 if (t <= 49) return 2e3 + t;
17417 if (t <= 999) return 1900 + t
17420 }(e), Ne.indexOf(t), parseInt(n, 10), parseInt(r, 10), parseInt(i, 10)];
17421 return o && a.push(parseInt(o, 10)), a
17437 var t, n, r, i = $t.exec(e._i.replace(/\([^)]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").replace(/^\s\s*/, "").replace(/\s\s*$/, ""));
17439 var o = wt(i[4], i[3], i[2], i[5], i[6], i[7]);
17440 if (t = i[1], n = o, r = e, t && We.indexOf(t) !== new Date(n[0], n[1], n[2]).getDay() && (v(r).weekdayMismatch = !0, !(r._isValid = !1))) return;
17441 e._a = o, e._tzm = function(e, t, n) {
17442 if (e) return Et[e];
17444 var r = parseInt(n, 10),
17446 return (r - i) / 100 * 60 + i
17447 }(i[8], i[9], i[10]), e._d = Le.apply(null, e._a), e._d.setUTCMinutes(e._d.getUTCMinutes() - e._tzm), v(e).rfc2822 = !0
17448 } else e._isValid = !1
17452 if (e._f !== f.ISO_8601)
17453 if (e._f !== f.RFC_2822) {
17454 e._a = [], v(e).empty = !0;
17455 var t, n, r, i, o, a, s, l, c = "" + e._i,
17458 for (r = B(e._f, e._locale).match(j) || [], t = 0; t < r.length; t++) i = r[t], (n = (c.match(ce(i, e)) || [])[0]) && (0 < (o = c.substr(0, c.indexOf(n))).length && v(e).unusedInput.push(o), c = c.slice(c.indexOf(n) + n.length), d += n.length), q[i] ? (n ? v(e).empty = !1 : v(e).unusedTokens.push(i), a = i, l = e, null != (s = n) && p(de, a) && de[a](s, l._a, l, a)) : e._strict && !n && v(e).unusedTokens.push(i);
17459 v(e).charsLeftOver = u - d, 0 < c.length && v(e).unusedInput.push(c), e._a[ve] <= 12 && !0 === v(e).bigHour && 0 < e._a[ve] && (v(e).bigHour = void 0), v(e).parsedDateParts = e._a.slice(0), v(e).meridiem = e._meridiem, e._a[ve] = function(e, t, n) {
17461 if (null == n) return t;
17462 return null != e.meridiemHour ? e.meridiemHour(t, n) : (null != e.isPM && ((r = e.isPM(n)) && t < 12 && (t += 12), r || 12 !== t || (t = 0)), t)
17463 }(e._locale, e._a[ve], e._meridiem), ht(e), dt(e)
17469 var t, n, r, i, o = e._i,
17471 return e._locale = e._locale || ut(e._l), null === o || void 0 === a && "" === o ? y({
17473 }) : ("string" == typeof o && (e._i = o = e._locale.preparse(o)), w(o) ? new $(dt(o)) : (d(o) ? e._d = o : s(a) ? function(e) {
17475 if (0 === e._f.length) return v(e).invalidFormat = !0, e._d = new Date(NaN);
17476 for (i = 0; i < e._f.length; i++) o = 0, t = _({}, e), null != e._useUTC && (t._useUTC = e._useUTC), t._f = e._f[i], kt(t), b(t) && (o += v(t).charsLeftOver, o += 10 * v(t).unusedTokens.length, v(t).score = o, (null == r || o < r) && (r = o, n = t));
17478 }(e) : a ? kt(e) : c(n = (t = e)._i) ? t._d = new Date(f.now()) : d(n) ? t._d = new Date(n.valueOf()) : "string" == typeof n ? (r = t, null === (i = yt.exec(r._i)) ? (_t(r), !1 === r._isValid && (delete r._isValid, Ct(r), !1 === r._isValid && (delete r._isValid, f.createFromInputFallback(r)))) : r._d = new Date(+i[1])) : s(n) ? (t._a = h(n.slice(0), function(e) {
17479 return parseInt(e, 10)
17480 }), ht(t)) : l(n) ? function(e) {
17483 e._a = h([t.year, t.month, t.day || t.date, t.hour, t.minute, t.second, t.millisecond], function(e) {
17484 return e && parseInt(e, 10)
17487 }(t) : u(n) ? t._d = new Date(n) : f.createFromInputFallback(t), b(e) || (e._d = null), e))
17490 function Tt(e, t, n, r, i) {
17492 return !0 !== n && !1 !== n || (r = n, n = void 0), (l(e) && function(e) {
17493 if (Object.getOwnPropertyNames) return 0 === Object.getOwnPropertyNames(e).length;
17496 if (e.hasOwnProperty(t)) return !1;
17498 }(e) || s(e) && 0 === e.length) && (e = void 0), a._isAMomentObject = !0, a._useUTC = a._isUTC = i, a._l = n, a._i = e, a._f = t, a._strict = r, (o = new $(dt(xt(a))))._nextDay && (o.add(1, "d"), o._nextDay = void 0), o
17501 function Mt(e, t, n, r) {
17502 return Tt(e, t, n, r, !1)
17504 f.createFromInputFallback = n("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(e) {
17505 e._d = new Date(e._i + (e._useUTC ? " UTC" : ""))
17506 }), f.ISO_8601 = function() {}, f.RFC_2822 = function() {};
17507 var At = n("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/", function() {
17508 var e = Mt.apply(null, arguments);
17509 return this.isValid() && e.isValid() ? e < this ? this : e : y()
17511 St = n("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/", function() {
17512 var e = Mt.apply(null, arguments);
17513 return this.isValid() && e.isValid() ? this < e ? this : e : y()
17516 function Dt(e, t) {
17518 if (1 === t.length && s(t[0]) && (t = t[0]), !t.length) return Mt();
17519 for (n = t[0], r = 1; r < t.length; ++r) t[r].isValid() && !t[r][e](n) || (n = t[r]);
17522 var Ot = ["year", "quarter", "month", "week", "day", "hour", "minute", "second", "millisecond"];
17527 r = t.quarter || 0,
17529 o = t.week || t.isoWeek || 0,
17534 u = t.millisecond || 0;
17535 this._isValid = function(e) {
17537 if (-1 === ke.call(Ot, t) || null != e[t] && isNaN(e[t])) return !1;
17538 for (var n = !1, r = 0; r < Ot.length; ++r)
17541 parseFloat(e[Ot[r]]) !== C(e[Ot[r]]) && (n = !0)
17543 }(t), this._milliseconds = +u + 1e3 * c + 6e4 * l + 1e3 * s * 60 * 60, this._days = +a + 7 * o, this._months = +i + 3 * r + 12 * n, this._data = {}, this._locale = ut(), this._bubble()
17547 return e instanceof Nt
17551 return e < 0 ? -1 * Math.round(-1 * e) : Math.round(e)
17554 function Pt(e, n) {
17555 U(e, 0, 0, function() {
17556 var e = this.utcOffset(),
17558 return e < 0 && (e = -e, t = "-"), t + H(~~(e / 60), 2) + n + H(~~e % 60, 2)
17561 Pt("Z", ":"), Pt("ZZ", ""), le("Z", oe), le("ZZ", oe), fe(["Z", "ZZ"], function(e, t, n) {
17562 n._useUTC = !0, n._tzm = jt(oe, e)
17564 var Ht = /([\+\-]|\d\d)/gi;
17566 function jt(e, t) {
17567 var n = (t || "").match(e);
17568 if (null === n) return null;
17569 var r = ((n[n.length - 1] || []) + "").match(Ht) || ["-", 0, 0],
17570 i = 60 * r[1] + C(r[2]);
17571 return 0 === i ? 0 : "+" === r[0] ? i : -i
17574 function Lt(e, t) {
17576 return t._isUTC ? (n = t.clone(), r = (w(e) || d(e) ? e.valueOf() : Mt(e).valueOf()) - n.valueOf(), n._d.setTime(n._d.valueOf() + r), f.updateOffset(n, !1), n) : Mt(e).local()
17580 return 15 * -Math.round(e._d.getTimezoneOffset() / 15)
17584 return !!this.isValid() && (this._isUTC && 0 === this._offset)
17586 f.updateOffset = function() {};
17587 var Ut = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,
17588 Vt = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
17590 function Bt(e, t) {
17591 var n, r, i, o = e,
17593 return It(e) ? o = {
17594 ms: e._milliseconds,
17597 } : u(e) ? (o = {}, t ? o[t] = e : o.milliseconds = e) : (a = Ut.exec(e)) ? (n = "-" === a[1] ? -1 : 1, o = {
17603 ms: C(Rt(1e3 * a[_e])) * n
17604 }) : (a = Vt.exec(e)) ? (n = "-" === a[1] ? -1 : 1, o = {
17612 }) : null == o ? o = {} : "object" == typeof o && ("from" in o || "to" in o) && (i = function(e, t) {
17614 if (!e.isValid() || !t.isValid()) return {
17618 t = Lt(t, e), e.isBefore(t) ? n = Wt(e, t) : ((n = Wt(t, e)).milliseconds = -n.milliseconds, n.months = -n.months);
17620 }(Mt(o.from), Mt(o.to)), (o = {}).ms = i.milliseconds, o.M = i.months), r = new Nt(o), It(e) && p(e, "_locale") && (r._locale = e._locale), r
17623 function zt(e, t) {
17624 var n = e && parseFloat(e.replace(",", "."));
17625 return (isNaN(n) ? 0 : n) * t
17628 function Wt(e, t) {
17630 return n.months = t.month() - e.month() + 12 * (t.year() - e.year()), e.clone().add(n.months, "M").isAfter(t) && --n.months, n.milliseconds = +t - +e.clone().add(n.months, "M"), n
17633 function Yt(r, i) {
17634 return function(e, t) {
17636 return null === t || isNaN(+t) || (T(i, "moment()." + i + "(period, number) is deprecated. Please use moment()." + i + "(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."), n = e, e = t, t = n), Gt(this, Bt(e = "string" == typeof e ? +e : e, t), r), this
17640 function Gt(e, t, n, r) {
17641 var i = t._milliseconds,
17644 e.isValid() && (r = null == r || r, a && Ie(e, Me(e, "Month") + a * n), o && Ae(e, "Date", Me(e, "Date") + o * n), i && e._d.setTime(e._d.valueOf() + i * n), r && f.updateOffset(e, o || a))
17646 Bt.fn = Nt.prototype, Bt.invalid = function() {
17649 var Kt = Yt(1, "add"),
17650 Zt = Yt(-1, "subtract");
17652 function Xt(e, t) {
17653 var n = 12 * (t.year() - e.year()) + (t.month() - e.month()),
17654 r = e.clone().add(n, "months");
17655 return -(n + (t - r < 0 ? (t - r) / (r - e.clone().add(n - 1, "months")) : (t - r) / (e.clone().add(n + 1, "months") - r))) || 0
17660 return void 0 === e ? this._locale._abbr : (null != (t = ut(e)) && (this._locale = t), this)
17662 f.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ", f.defaultFormatUtc = "YYYY-MM-DDTHH:mm:ss[Z]";
17663 var Jt = n("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.", function(e) {
17664 return void 0 === e ? this.localeData() : this.locale(e)
17668 return this._locale
17670 var tn = 126227808e5;
17672 function nn(e, t) {
17673 return (e % t + t) % t
17676 function rn(e, t, n) {
17677 return e < 100 && 0 <= e ? new Date(e + 400, t, n) - tn : new Date(e, t, n).valueOf()
17680 function on(e, t, n) {
17681 return e < 100 && 0 <= e ? Date.UTC(e + 400, t, n) - tn : Date.UTC(e, t, n)
17684 function an(e, t) {
17685 U(0, [e, e.length], 0, t)
17688 function sn(e, t, n, r, i) {
17690 return null == e ? Ue(this, r, i).year : ((o = Ve(e, r, i)) < t && (t = o), function(e, t, n, r, i) {
17691 var o = qe(e, t, n, r, i),
17692 a = Le(o.year, 0, o.dayOfYear);
17693 return this.year(a.getUTCFullYear()), this.month(a.getUTCMonth()), this.date(a.getUTCDate()), this
17694 }.call(this, e, t, n, r, i))
17696 U(0, ["gg", 2], 0, function() {
17697 return this.weekYear() % 100
17698 }), U(0, ["GG", 2], 0, function() {
17699 return this.isoWeekYear() % 100
17700 }), an("gggg", "weekYear"), an("ggggg", "weekYear"), an("GGGG", "isoWeekYear"), an("GGGGG", "isoWeekYear"), O("weekYear", "gg"), O("isoWeekYear", "GG"), P("weekYear", 1), P("isoWeekYear", 1), le("G", re), le("g", re), le("GG", Z, W), le("gg", Z, W), le("GGGG", ee, G), le("gggg", ee, G), le("GGGGG", te, K), le("ggggg", te, K), he(["gggg", "ggggg", "GGGG", "GGGGG"], function(e, t, n, r) {
17701 t[r.substr(0, 2)] = C(e)
17702 }), he(["gg", "GG"], function(e, t, n, r) {
17703 t[r] = f.parseTwoDigitYear(e)
17704 }), U("Q", 0, "Qo", "quarter"), O("quarter", "Q"), P("quarter", 7), le("Q", z), fe("Q", function(e, t) {
17705 t[me] = 3 * (C(e) - 1)
17706 }), U("D", ["DD", 2], "Do", "date"), O("date", "D"), P("date", 9), le("D", Z), le("DD", Z, W), le("Do", function(e, t) {
17707 return e ? t._dayOfMonthOrdinalParse || t._ordinalParse : t._dayOfMonthOrdinalParseLenient
17708 }), fe(["D", "DD"], ge), fe("Do", function(e, t) {
17709 t[ge] = C(e.match(Z)[0])
17711 var ln = Te("Date", !0);
17712 U("DDD", ["DDDD", 3], "DDDo", "dayOfYear"), O("dayOfYear", "DDD"), P("dayOfYear", 4), le("DDD", J), le("DDDD", Y), fe(["DDD", "DDDD"], function(e, t, n) {
17713 n._dayOfYear = C(e)
17714 }), U("m", ["mm", 2], 0, "minute"), O("minute", "m"), P("minute", 14), le("m", Z), le("mm", Z, W), fe(["m", "mm"], be);
17715 var cn = Te("Minutes", !1);
17716 U("s", ["ss", 2], 0, "second"), O("second", "s"), P("second", 15), le("s", Z), le("ss", Z, W), fe(["s", "ss"], ye);
17717 var un, dn = Te("Seconds", !1);
17718 for (U("S", 0, 0, function() {
17719 return ~~(this.millisecond() / 100)
17720 }), U(0, ["SS", 2], 0, function() {
17721 return ~~(this.millisecond() / 10)
17722 }), U(0, ["SSS", 3], 0, "millisecond"), U(0, ["SSSS", 4], 0, function() {
17723 return 10 * this.millisecond()
17724 }), U(0, ["SSSSS", 5], 0, function() {
17725 return 100 * this.millisecond()
17726 }), U(0, ["SSSSSS", 6], 0, function() {
17727 return 1e3 * this.millisecond()
17728 }), U(0, ["SSSSSSS", 7], 0, function() {
17729 return 1e4 * this.millisecond()
17730 }), U(0, ["SSSSSSSS", 8], 0, function() {
17731 return 1e5 * this.millisecond()
17732 }), U(0, ["SSSSSSSSS", 9], 0, function() {
17733 return 1e6 * this.millisecond()
17734 }), O("millisecond", "ms"), P("millisecond", 16), le("S", J, z), le("SS", J, W), le("SSS", J, Y), un = "SSSS"; un.length <= 9; un += "S") le(un, ne);
17736 function fn(e, t) {
17737 t[_e] = C(1e3 * ("0." + e))
17739 for (un = "S"; un.length <= 9; un += "S") fe(un, fn);
17740 var hn = Te("Milliseconds", !1);
17741 U("z", 0, 0, "zoneAbbr"), U("zz", 0, 0, "zoneName");
17742 var pn = $.prototype;
17747 pn.add = Kt, pn.calendar = function(e, t) {
17749 r = Lt(n, this).startOf("day"),
17750 i = f.calendarFormat(this, r) || "sameElse",
17751 o = t && (M(t[i]) ? t[i].call(this, n) : t[i]);
17752 return this.format(o || this.localeData().calendar(i, this, Mt(n)))
17753 }, pn.clone = function() {
17755 }, pn.diff = function(e, t, n) {
17757 if (!this.isValid()) return NaN;
17758 if (!(r = Lt(e, this)).isValid()) return NaN;
17759 switch (i = 6e4 * (r.utcOffset() - this.utcOffset()), t = N(t)) {
17761 o = Xt(this, r) / 12;
17767 o = Xt(this, r) / 3;
17770 o = (this - r) / 1e3;
17773 o = (this - r) / 6e4;
17776 o = (this - r) / 36e5;
17779 o = (this - r - i) / 864e5;
17782 o = (this - r - i) / 6048e5;
17787 return n ? o : E(o)
17788 }, pn.endOf = function(e) {
17790 if (void 0 === (e = N(e)) || "millisecond" === e || !this.isValid()) return this;
17791 var n = this._isUTC ? on : rn;
17794 t = n(this.year() + 1, 0, 1) - 1;
17797 t = n(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;
17800 t = n(this.year(), this.month() + 1, 1) - 1;
17803 t = n(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;
17806 t = n(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;
17810 t = n(this.year(), this.month(), this.date() + 1) - 1;
17813 t = this._d.valueOf(), t += 36e5 - nn(t + (this._isUTC ? 0 : 6e4 * this.utcOffset()), 36e5) - 1;
17816 t = this._d.valueOf(), t += 6e4 - nn(t, 6e4) - 1;
17819 t = this._d.valueOf(), t += 1e3 - nn(t, 1e3) - 1
17821 return this._d.setTime(t), f.updateOffset(this, !0), this
17822 }, pn.format = function(e) {
17823 e || (e = this.isUtc() ? f.defaultFormatUtc : f.defaultFormat);
17824 var t = V(this, e);
17825 return this.localeData().postformat(t)
17826 }, pn.from = function(e, t) {
17827 return this.isValid() && (w(e) && e.isValid() || Mt(e).isValid()) ? Bt({
17830 }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate()
17831 }, pn.fromNow = function(e) {
17832 return this.from(Mt(), e)
17833 }, pn.to = function(e, t) {
17834 return this.isValid() && (w(e) && e.isValid() || Mt(e).isValid()) ? Bt({
17837 }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate()
17838 }, pn.toNow = function(e) {
17839 return this.to(Mt(), e)
17840 }, pn.get = function(e) {
17841 return M(this[e = N(e)]) ? this[e]() : this
17842 }, pn.invalidAt = function() {
17843 return v(this).overflow
17844 }, pn.isAfter = function(e, t) {
17845 var n = w(e) ? e : Mt(e);
17846 return !(!this.isValid() || !n.isValid()) && ("millisecond" === (t = N(t) || "millisecond") ? this.valueOf() > n.valueOf() : n.valueOf() < this.clone().startOf(t).valueOf())
17847 }, pn.isBefore = function(e, t) {
17848 var n = w(e) ? e : Mt(e);
17849 return !(!this.isValid() || !n.isValid()) && ("millisecond" === (t = N(t) || "millisecond") ? this.valueOf() < n.valueOf() : this.clone().endOf(t).valueOf() < n.valueOf())
17850 }, pn.isBetween = function(e, t, n, r) {
17851 var i = w(e) ? e : Mt(e),
17852 o = w(t) ? t : Mt(t);
17853 return !!(this.isValid() && i.isValid() && o.isValid()) && ("(" === (r = r || "()")[0] ? this.isAfter(i, n) : !this.isBefore(i, n)) && (")" === r[1] ? this.isBefore(o, n) : !this.isAfter(o, n))
17854 }, pn.isSame = function(e, t) {
17855 var n, r = w(e) ? e : Mt(e);
17856 return !(!this.isValid() || !r.isValid()) && ("millisecond" === (t = N(t) || "millisecond") ? this.valueOf() === r.valueOf() : (n = r.valueOf(), this.clone().startOf(t).valueOf() <= n && n <= this.clone().endOf(t).valueOf()))
17857 }, pn.isSameOrAfter = function(e, t) {
17858 return this.isSame(e, t) || this.isAfter(e, t)
17859 }, pn.isSameOrBefore = function(e, t) {
17860 return this.isSame(e, t) || this.isBefore(e, t)
17861 }, pn.isValid = function() {
17863 }, pn.lang = Jt, pn.locale = Qt, pn.localeData = en, pn.max = St, pn.min = At, pn.parsingFlags = function() {
17864 return m({}, v(this))
17865 }, pn.set = function(e, t) {
17866 if ("object" == typeof e)
17867 for (var n = function(e) {
17869 for (var n in e) t.push({
17873 return t.sort(function(e, t) {
17874 return e.priority - t.priority
17876 }(e = I(e)), r = 0; r < n.length; r++) this[n[r].unit](e[n[r].unit]);
17877 else if (M(this[e = N(e)])) return this[e](t);
17879 }, pn.startOf = function(e) {
17881 if (void 0 === (e = N(e)) || "millisecond" === e || !this.isValid()) return this;
17882 var n = this._isUTC ? on : rn;
17885 t = n(this.year(), 0, 1);
17888 t = n(this.year(), this.month() - this.month() % 3, 1);
17891 t = n(this.year(), this.month(), 1);
17894 t = n(this.year(), this.month(), this.date() - this.weekday());
17897 t = n(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));
17901 t = n(this.year(), this.month(), this.date());
17904 t = this._d.valueOf(), t -= nn(t + (this._isUTC ? 0 : 6e4 * this.utcOffset()), 36e5);
17907 t = this._d.valueOf(), t -= nn(t, 6e4);
17910 t = this._d.valueOf(), t -= nn(t, 1e3)
17912 return this._d.setTime(t), f.updateOffset(this, !0), this
17913 }, pn.subtract = Zt, pn.toArray = function() {
17914 return [this.year(), this.month(), this.date(), this.hour(), this.minute(), this.second(), this.millisecond()]
17915 }, pn.toObject = function() {
17917 years: this.year(),
17918 months: this.month(),
17920 hours: this.hours(),
17921 minutes: this.minutes(),
17922 seconds: this.seconds(),
17923 milliseconds: this.milliseconds()
17925 }, pn.toDate = function() {
17926 return new Date(this.valueOf())
17927 }, pn.toISOString = function(e) {
17928 if (!this.isValid()) return null;
17930 n = t ? this.clone().utc() : this;
17931 return n.year() < 0 || 9999 < n.year() ? V(n, t ? "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYYYY-MM-DD[T]HH:mm:ss.SSSZ") : M(Date.prototype.toISOString) ? t ? this.toDate().toISOString() : new Date(this.valueOf() + 60 * this.utcOffset() * 1e3).toISOString().replace("Z", V(n, "Z")) : V(n, t ? "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYY-MM-DD[T]HH:mm:ss.SSSZ")
17932 }, pn.inspect = function() {
17933 if (!this.isValid()) return "moment.invalid(/* " + this._i + " */)";
17936 this.isLocal() || (e = 0 === this.utcOffset() ? "moment.utc" : "moment.parseZone", t = "Z");
17937 var n = "[" + e + '("]',
17938 r = 0 <= this.year() && this.year() <= 9999 ? "YYYY" : "YYYYYY",
17940 return this.format(n + r + "-MM-DD[T]HH:mm:ss.SSS" + i)
17941 }, pn.toJSON = function() {
17942 return this.isValid() ? this.toISOString() : null
17943 }, pn.toString = function() {
17944 return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")
17945 }, pn.unix = function() {
17946 return Math.floor(this.valueOf() / 1e3)
17947 }, pn.valueOf = function() {
17948 return this._d.valueOf() - 6e4 * (this._offset || 0)
17949 }, pn.creationData = function() {
17953 locale: this._locale,
17954 isUTC: this._isUTC,
17955 strict: this._strict
17957 }, pn.year = xe, pn.isLeapYear = function() {
17958 return Ce(this.year())
17959 }, pn.weekYear = function(e) {
17960 return sn.call(this, e, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy)
17961 }, pn.isoWeekYear = function(e) {
17962 return sn.call(this, e, this.isoWeek(), this.isoWeekday(), 1, 4)
17963 }, pn.quarter = pn.quarters = function(e) {
17964 return null == e ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (e - 1) + this.month() % 3)
17965 }, pn.month = Re, pn.daysInMonth = function() {
17966 return Se(this.year(), this.month())
17967 }, pn.week = pn.weeks = function(e) {
17968 var t = this.localeData().week(this);
17969 return null == e ? t : this.add(7 * (e - t), "d")
17970 }, pn.isoWeek = pn.isoWeeks = function(e) {
17971 var t = Ue(this, 1, 4).week;
17972 return null == e ? t : this.add(7 * (e - t), "d")
17973 }, pn.weeksInYear = function() {
17974 var e = this.localeData()._week;
17975 return Ve(this.year(), e.dow, e.doy)
17976 }, pn.isoWeeksInYear = function() {
17977 return Ve(this.year(), 1, 4)
17978 }, pn.date = ln, pn.day = pn.days = function(e) {
17979 if (!this.isValid()) return null != e ? this : NaN;
17980 var t, n, r = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
17981 return null != e ? (t = e, n = this.localeData(), e = "string" != typeof t ? t : isNaN(t) ? "number" == typeof(t = n.weekdaysParse(t)) ? t : null : parseInt(t, 10), this.add(e - r, "d")) : r
17982 }, pn.weekday = function(e) {
17983 if (!this.isValid()) return null != e ? this : NaN;
17984 var t = (this.day() + 7 - this.localeData()._week.dow) % 7;
17985 return null == e ? t : this.add(e - t, "d")
17986 }, pn.isoWeekday = function(e) {
17987 if (!this.isValid()) return null != e ? this : NaN;
17988 if (null == e) return this.day() || 7;
17989 var t, n, r = (t = e, n = this.localeData(), "string" == typeof t ? n.weekdaysParse(t) % 7 || 7 : isNaN(t) ? null : t);
17990 return this.day(this.day() % 7 ? r : r - 7)
17991 }, pn.dayOfYear = function(e) {
17992 var t = Math.round((this.clone().startOf("day") - this.clone().startOf("year")) / 864e5) + 1;
17993 return null == e ? t : this.add(e - t, "d")
17994 }, pn.hour = pn.hours = nt, pn.minute = pn.minutes = cn, pn.second = pn.seconds = dn, pn.millisecond = pn.milliseconds = hn, pn.utcOffset = function(e, t, n) {
17995 var r, i = this._offset || 0;
17996 if (!this.isValid()) return null != e ? this : NaN;
17997 if (null == e) return this._isUTC ? i : Ft(this);
17998 if ("string" == typeof e) {
17999 if (null === (e = jt(oe, e))) return this
18000 } else Math.abs(e) < 16 && !n && (e *= 60);
18001 return !this._isUTC && t && (r = Ft(this)), this._offset = e, this._isUTC = !0, null != r && this.add(r, "m"), i !== e && (!t || this._changeInProgress ? Gt(this, Bt(e - i, "m"), 1, !1) : this._changeInProgress || (this._changeInProgress = !0, f.updateOffset(this, !0), this._changeInProgress = null)), this
18002 }, pn.utc = function(e) {
18003 return this.utcOffset(0, e)
18004 }, pn.local = function(e) {
18005 return this._isUTC && (this.utcOffset(0, e), this._isUTC = !1, e && this.subtract(Ft(this), "m")), this
18006 }, pn.parseZone = function() {
18007 if (null != this._tzm) this.utcOffset(this._tzm, !1, !0);
18008 else if ("string" == typeof this._i) {
18009 var e = jt(ie, this._i);
18010 null != e ? this.utcOffset(e) : this.utcOffset(0, !0)
18013 }, pn.hasAlignedHourOffset = function(e) {
18014 return !!this.isValid() && (e = e ? Mt(e).utcOffset() : 0, (this.utcOffset() - e) % 60 == 0)
18015 }, pn.isDST = function() {
18016 return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset()
18017 }, pn.isLocal = function() {
18018 return !!this.isValid() && !this._isUTC
18019 }, pn.isUtcOffset = function() {
18020 return !!this.isValid() && this._isUTC
18021 }, pn.isUtc = qt, pn.isUTC = qt, pn.zoneAbbr = function() {
18022 return this._isUTC ? "UTC" : ""
18023 }, pn.zoneName = function() {
18024 return this._isUTC ? "Coordinated Universal Time" : ""
18025 }, pn.dates = n("dates accessor is deprecated. Use date instead.", ln), pn.months = n("months accessor is deprecated. Use month instead", Re), pn.years = n("years accessor is deprecated. Use year instead", xe), pn.zone = n("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/", function(e, t) {
18026 return null != e ? ("string" != typeof e && (e = -e), this.utcOffset(e, t), this) : -this.utcOffset()
18027 }), pn.isDSTShifted = n("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information", function() {
18028 if (!c(this._isDSTShifted)) return this._isDSTShifted;
18030 if (_(e, this), (e = xt(e))._a) {
18031 var t = e._isUTC ? g(e._a) : Mt(e._a);
18032 this._isDSTShifted = this.isValid() && 0 < a(e._a, t.toArray())
18033 } else this._isDSTShifted = !1;
18034 return this._isDSTShifted
18036 var gn = S.prototype;
18038 function vn(e, t, n, r) {
18044 function bn(e, t, n) {
18045 if (u(e) && (t = e, e = void 0), e = e || "", null != t) return vn(e, t, n, "month");
18047 for (r = 0; r < 12; r++) i[r] = vn(e, r, n, "month");
18051 function yn(e, t, n, r) {
18052 t = ("boolean" == typeof e ? u(t) && (n = t, t = void 0) : (t = e, e = !1, u(n = t) && (n = t, t = void 0)), t || "");
18054 a = e ? o._week.dow : 0;
18055 if (null != n) return vn(t, (n + a) % 7, r, "day");
18057 for (i = 0; i < 7; i++) s[i] = vn(t, (i + a) % 7, r, "day");
18060 gn.calendar = function(e, t, n) {
18061 var r = this._calendar[e] || this._calendar.sameElse;
18062 return M(r) ? r.call(t, n) : r
18063 }, gn.longDateFormat = function(e) {
18064 var t = this._longDateFormat[e],
18065 n = this._longDateFormat[e.toUpperCase()];
18066 return t || !n ? t : (this._longDateFormat[e] = n.replace(/MMMM|MM|DD|dddd/g, function(e) {
18068 }), this._longDateFormat[e])
18069 }, gn.invalidDate = function() {
18070 return this._invalidDate
18071 }, gn.ordinal = function(e) {
18072 return this._ordinal.replace("%d", e)
18073 }, gn.preparse = mn, gn.postformat = mn, gn.relativeTime = function(e, t, n, r) {
18074 var i = this._relativeTime[n];
18075 return M(i) ? i(e, t, n, r) : i.replace(/%d/i, e)
18076 }, gn.pastFuture = function(e, t) {
18077 var n = this._relativeTime[0 < e ? "future" : "past"];
18078 return M(n) ? n(t) : n.replace(/%s/i, t)
18079 }, gn.set = function(e) {
18081 for (n in e) M(t = e[n]) ? this[n] = t : this["_" + n] = t;
18082 this._config = e, this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + "|" + /\d{1,2}/.source)
18083 }, gn.months = function(e, t) {
18084 return e ? s(this._months) ? this._months[e.month()] : this._months[(this._months.isFormat || De).test(t) ? "format" : "standalone"][e.month()] : s(this._months) ? this._months : this._months.standalone
18085 }, gn.monthsShort = function(e, t) {
18086 return e ? s(this._monthsShort) ? this._monthsShort[e.month()] : this._monthsShort[De.test(t) ? "format" : "standalone"][e.month()] : s(this._monthsShort) ? this._monthsShort : this._monthsShort.standalone
18087 }, gn.monthsParse = function(e, t, n) {
18089 if (this._monthsParseExact) return function(e, t, n) {
18090 var r, i, o, a = e.toLocaleLowerCase();
18091 if (!this._monthsParse)
18092 for (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = [], r = 0; r < 12; ++r) o = g([2e3, r]), this._shortMonthsParse[r] = this.monthsShort(o, "").toLocaleLowerCase(), this._longMonthsParse[r] = this.months(o, "").toLocaleLowerCase();
18093 return n ? "MMM" === t ? -1 !== (i = ke.call(this._shortMonthsParse, a)) ? i : null : -1 !== (i = ke.call(this._longMonthsParse, a)) ? i : null : "MMM" === t ? -1 !== (i = ke.call(this._shortMonthsParse, a)) ? i : -1 !== (i = ke.call(this._longMonthsParse, a)) ? i : null : -1 !== (i = ke.call(this._longMonthsParse, a)) ? i : -1 !== (i = ke.call(this._shortMonthsParse, a)) ? i : null
18094 }.call(this, e, t, n);
18095 for (this._monthsParse || (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = []), r = 0; r < 12; r++) {
18096 if (i = g([2e3, r]), n && !this._longMonthsParse[r] && (this._longMonthsParse[r] = new RegExp("^" + this.months(i, "").replace(".", "") + "$", "i"), this._shortMonthsParse[r] = new RegExp("^" + this.monthsShort(i, "").replace(".", "") + "$", "i")), n || this._monthsParse[r] || (o = "^" + this.months(i, "") + "|^" + this.monthsShort(i, ""), this._monthsParse[r] = new RegExp(o.replace(".", ""), "i")), n && "MMMM" === t && this._longMonthsParse[r].test(e)) return r;
18097 if (n && "MMM" === t && this._shortMonthsParse[r].test(e)) return r;
18098 if (!n && this._monthsParse[r].test(e)) return r
18100 }, gn.monthsRegex = function(e) {
18101 return this._monthsParseExact ? (p(this, "_monthsRegex") || je.call(this), e ? this._monthsStrictRegex : this._monthsRegex) : (p(this, "_monthsRegex") || (this._monthsRegex = He), this._monthsStrictRegex && e ? this._monthsStrictRegex : this._monthsRegex)
18102 }, gn.monthsShortRegex = function(e) {
18103 return this._monthsParseExact ? (p(this, "_monthsRegex") || je.call(this), e ? this._monthsShortStrictRegex : this._monthsShortRegex) : (p(this, "_monthsShortRegex") || (this._monthsShortRegex = Pe), this._monthsShortStrictRegex && e ? this._monthsShortStrictRegex : this._monthsShortRegex)
18104 }, gn.week = function(e) {
18105 return Ue(e, this._week.dow, this._week.doy).week
18106 }, gn.firstDayOfYear = function() {
18107 return this._week.doy
18108 }, gn.firstDayOfWeek = function() {
18109 return this._week.dow
18110 }, gn.weekdays = function(e, t) {
18111 var n = s(this._weekdays) ? this._weekdays : this._weekdays[e && !0 !== e && this._weekdays.isFormat.test(t) ? "format" : "standalone"];
18112 return !0 === e ? Be(n, this._week.dow) : e ? n[e.day()] : n
18113 }, gn.weekdaysMin = function(e) {
18114 return !0 === e ? Be(this._weekdaysMin, this._week.dow) : e ? this._weekdaysMin[e.day()] : this._weekdaysMin
18115 }, gn.weekdaysShort = function(e) {
18116 return !0 === e ? Be(this._weekdaysShort, this._week.dow) : e ? this._weekdaysShort[e.day()] : this._weekdaysShort
18117 }, gn.weekdaysParse = function(e, t, n) {
18119 if (this._weekdaysParseExact) return function(e, t, n) {
18120 var r, i, o, a = e.toLocaleLowerCase();
18121 if (!this._weekdaysParse)
18122 for (this._weekdaysParse = [], this._shortWeekdaysParse = [], this._minWeekdaysParse = [], r = 0; r < 7; ++r) o = g([2e3, 1]).day(r), this._minWeekdaysParse[r] = this.weekdaysMin(o, "").toLocaleLowerCase(), this._shortWeekdaysParse[r] = this.weekdaysShort(o, "").toLocaleLowerCase(), this._weekdaysParse[r] = this.weekdays(o, "").toLocaleLowerCase();
18123 return n ? "dddd" === t ? -1 !== (i = ke.call(this._weekdaysParse, a)) ? i : null : "ddd" === t ? -1 !== (i = ke.call(this._shortWeekdaysParse, a)) ? i : null : -1 !== (i = ke.call(this._minWeekdaysParse, a)) ? i : null : "dddd" === t ? -1 !== (i = ke.call(this._weekdaysParse, a)) ? i : -1 !== (i = ke.call(this._shortWeekdaysParse, a)) ? i : -1 !== (i = ke.call(this._minWeekdaysParse, a)) ? i : null : "ddd" === t ? -1 !== (i = ke.call(this._shortWeekdaysParse, a)) ? i : -1 !== (i = ke.call(this._weekdaysParse, a)) ? i : -1 !== (i = ke.call(this._minWeekdaysParse, a)) ? i : null : -1 !== (i = ke.call(this._minWeekdaysParse, a)) ? i : -1 !== (i = ke.call(this._weekdaysParse, a)) ? i : -1 !== (i = ke.call(this._shortWeekdaysParse, a)) ? i : null
18124 }.call(this, e, t, n);
18125 for (this._weekdaysParse || (this._weekdaysParse = [], this._minWeekdaysParse = [], this._shortWeekdaysParse = [], this._fullWeekdaysParse = []), r = 0; r < 7; r++) {
18126 if (i = g([2e3, 1]).day(r), n && !this._fullWeekdaysParse[r] && (this._fullWeekdaysParse[r] = new RegExp("^" + this.weekdays(i, "").replace(".", "\\.?") + "$", "i"), this._shortWeekdaysParse[r] = new RegExp("^" + this.weekdaysShort(i, "").replace(".", "\\.?") + "$", "i"), this._minWeekdaysParse[r] = new RegExp("^" + this.weekdaysMin(i, "").replace(".", "\\.?") + "$", "i")), this._weekdaysParse[r] || (o = "^" + this.weekdays(i, "") + "|^" + this.weekdaysShort(i, "") + "|^" + this.weekdaysMin(i, ""), this._weekdaysParse[r] = new RegExp(o.replace(".", ""), "i")), n && "dddd" === t && this._fullWeekdaysParse[r].test(e)) return r;
18127 if (n && "ddd" === t && this._shortWeekdaysParse[r].test(e)) return r;
18128 if (n && "dd" === t && this._minWeekdaysParse[r].test(e)) return r;
18129 if (!n && this._weekdaysParse[r].test(e)) return r
18131 }, gn.weekdaysRegex = function(e) {
18132 return this._weekdaysParseExact ? (p(this, "_weekdaysRegex") || Xe.call(this), e ? this._weekdaysStrictRegex : this._weekdaysRegex) : (p(this, "_weekdaysRegex") || (this._weekdaysRegex = Ge), this._weekdaysStrictRegex && e ? this._weekdaysStrictRegex : this._weekdaysRegex)
18133 }, gn.weekdaysShortRegex = function(e) {
18134 return this._weekdaysParseExact ? (p(this, "_weekdaysRegex") || Xe.call(this), e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) : (p(this, "_weekdaysShortRegex") || (this._weekdaysShortRegex = Ke), this._weekdaysShortStrictRegex && e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex)
18135 }, gn.weekdaysMinRegex = function(e) {
18136 return this._weekdaysParseExact ? (p(this, "_weekdaysRegex") || Xe.call(this), e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) : (p(this, "_weekdaysMinRegex") || (this._weekdaysMinRegex = Ze), this._weekdaysMinStrictRegex && e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex)
18137 }, gn.isPM = function(e) {
18138 return "p" === (e + "").toLowerCase().charAt(0)
18139 }, gn.meridiem = function(e, t, n) {
18140 return 11 < e ? n ? "pm" : "PM" : n ? "am" : "AM"
18142 dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
18143 ordinal: function(e) {
18145 return e + (1 === C(e % 100 / 10) ? "th" : 1 === t ? "st" : 2 === t ? "nd" : 3 === t ? "rd" : "th")
18147 }), f.lang = n("moment.lang is deprecated. Use moment.locale instead.", lt), f.langData = n("moment.langData is deprecated. Use moment.localeData instead.", ut);
18150 function $n(e, t, n, r) {
18152 return e._milliseconds += r * i._milliseconds, e._days += r * i._days, e._months += r * i._months, e._bubble()
18156 return e < 0 ? Math.floor(e) : Math.ceil(e)
18160 return 4800 * e / 146097
18164 return 146097 * e / 4800
18168 return function() {
18183 return function() {
18184 return this.isValid() ? this._data[e] : NaN
18187 var Pn = Rn("milliseconds"),
18188 Hn = Rn("seconds"),
18189 jn = Rn("minutes"),
18194 var Vn = Math.round,
18206 return (0 < e) - (e < 0) || +e
18210 if (!this.isValid()) return this.localeData().invalidDate();
18211 var e, t, n = zn(this._milliseconds) / 1e3,
18212 r = zn(this._days),
18213 i = zn(this._months);
18214 t = E((e = E(n / 60)) / 60), n %= 60, e %= 60;
18220 u = n ? n.toFixed(3).replace(/\.?0+$/, "") : "",
18221 d = this.asSeconds();
18222 if (!d) return "P0D";
18223 var f = d < 0 ? "-" : "",
18224 h = Wn(this._months) !== Wn(d) ? "-" : "",
18225 p = Wn(this._days) !== Wn(d) ? "-" : "",
18226 m = Wn(this._milliseconds) !== Wn(d) ? "-" : "";
18227 return f + "P" + (o ? h + o + "Y" : "") + (a ? h + a + "M" : "") + (s ? p + s + "D" : "") + (l || c || u ? "T" : "") + (l ? m + l + "H" : "") + (c ? m + c + "M" : "") + (u ? m + u + "S" : "")
18229 var Gn = Nt.prototype;
18230 return Gn.isValid = function() {
18231 return this._isValid
18232 }, Gn.abs = function() {
18233 var e = this._data;
18234 return this._milliseconds = _n(this._milliseconds), this._days = _n(this._days), this._months = _n(this._months), e.milliseconds = _n(e.milliseconds), e.seconds = _n(e.seconds), e.minutes = _n(e.minutes), e.hours = _n(e.hours), e.months = _n(e.months), e.years = _n(e.years), this
18235 }, Gn.add = function(e, t) {
18236 return $n(this, e, t, 1)
18237 }, Gn.subtract = function(e, t) {
18238 return $n(this, e, t, -1)
18239 }, Gn.as = function(e) {
18240 if (!this.isValid()) return NaN;
18241 var t, n, r = this._milliseconds;
18242 if ("month" === (e = N(e)) || "quarter" === e || "year" === e) switch (t = this._days + r / 864e5, n = this._months + En(t), e) {
18249 } else switch (t = this._days + Math.round(Cn(this._months)), e) {
18251 return t / 7 + r / 6048e5;
18253 return t + r / 864e5;
18255 return 24 * t + r / 36e5;
18257 return 1440 * t + r / 6e4;
18259 return 86400 * t + r / 1e3;
18260 case "millisecond":
18261 return Math.floor(864e5 * t) + r;
18263 throw new Error("Unknown unit " + e)
18265 }, Gn.asMilliseconds = xn, Gn.asSeconds = Tn, Gn.asMinutes = Mn, Gn.asHours = An, Gn.asDays = Sn, Gn.asWeeks = Dn, Gn.asMonths = On, Gn.asQuarters = Nn, Gn.asYears = In, Gn.valueOf = function() {
18266 return this.isValid() ? this._milliseconds + 864e5 * this._days + this._months % 12 * 2592e6 + 31536e6 * C(this._months / 12) : NaN
18267 }, Gn._bubble = function() {
18268 var e, t, n, r, i, o = this._milliseconds,
18272 return 0 <= o && 0 <= a && 0 <= s || o <= 0 && a <= 0 && s <= 0 || (o += 864e5 * wn(Cn(s) + a), s = a = 0), l.milliseconds = o % 1e3, e = E(o / 1e3), l.seconds = e % 60, t = E(e / 60), l.minutes = t % 60, n = E(t / 60), l.hours = n % 24, s += i = E(En(a += E(n / 24))), a -= wn(Cn(i)), r = E(s / 12), s %= 12, l.days = a, l.months = s, l.years = r, this
18273 }, Gn.clone = function() {
18275 }, Gn.get = function(e) {
18276 return e = N(e), this.isValid() ? this[e + "s"]() : NaN
18277 }, Gn.milliseconds = Pn, Gn.seconds = Hn, Gn.minutes = jn, Gn.hours = Ln, Gn.days = Fn, Gn.weeks = function() {
18278 return E(this.days() / 7)
18279 }, Gn.months = qn, Gn.years = Un, Gn.humanize = function(e) {
18280 if (!this.isValid()) return this.localeData().invalidDate();
18281 var t, n, r, i, o, a, s, l, c, u, d, f = this.localeData(),
18282 h = (n = !e, r = f, i = Bt(t = this).abs(), o = Vn(i.as("s")), a = Vn(i.as("m")), s = Vn(i.as("h")), l = Vn(i.as("d")), c = Vn(i.as("M")), u = Vn(i.as("y")), (d = o <= Bn.ss && ["s", o] || o < Bn.s && ["ss", o] || a <= 1 && ["m"] || a < Bn.m && ["mm", a] || s <= 1 && ["h"] || s < Bn.h && ["hh", s] || l <= 1 && ["d"] || l < Bn.d && ["dd", l] || c <= 1 && ["M"] || c < Bn.M && ["MM", c] || u <= 1 && ["y"] || ["yy", u])[2] = n, d[3] = 0 < +t, d[4] = r, function(e, t, n, r, i) {
18283 return i.relativeTime(t || 1, !!n, e, r)
18285 return e && (h = f.pastFuture(+this, h)), f.postformat(h)
18286 }, Gn.toISOString = Yn, Gn.toString = Yn, Gn.toJSON = Yn, Gn.locale = Qt, Gn.localeData = en, Gn.toIsoString = n("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)", Yn), Gn.lang = Jt, U("X", 0, 0, "unix"), U("x", 0, 0, "valueOf"), le("x", re), le("X", /[+-]?\d+(\.\d{1,3})?/), fe("X", function(e, t, n) {
18287 n._d = new Date(1e3 * parseFloat(e, 10))
18288 }), fe("x", function(e, t, n) {
18289 n._d = new Date(C(e))
18290 }), f.version = "2.24.0", e = Mt, f.fn = pn, f.min = function() {
18291 return Dt("isBefore", [].slice.call(arguments, 0))
18292 }, f.max = function() {
18293 return Dt("isAfter", [].slice.call(arguments, 0))
18294 }, f.now = function() {
18295 return Date.now ? Date.now() : +new Date
18296 }, f.utc = g, f.unix = function(e) {
18298 }, f.months = function(e, t) {
18299 return bn(e, t, "months")
18300 }, f.isDate = d, f.locale = lt, f.invalid = y, f.duration = Bt, f.isMoment = w, f.weekdays = function(e, t, n) {
18301 return yn(e, t, n, "weekdays")
18302 }, f.parseZone = function() {
18303 return Mt.apply(null, arguments).parseZone()
18304 }, f.localeData = ut, f.isDuration = It, f.monthsShort = function(e, t) {
18305 return bn(e, t, "monthsShort")
18306 }, f.weekdaysMin = function(e, t, n) {
18307 return yn(e, t, n, "weekdaysMin")
18308 }, f.defineLocale = ct, f.updateLocale = function(e, t) {
18311 null != (r = st(e)) && (i = r._config), (n = new S(t = A(i, t))).parentLocale = it[e], it[e] = n, lt(e)
18312 } else null != it[e] && (null != it[e].parentLocale ? it[e] = it[e].parentLocale : null != it[e] && delete it[e]);
18314 }, f.locales = function() {
18316 }, f.weekdaysShort = function(e, t, n) {
18317 return yn(e, t, n, "weekdaysShort")
18318 }, f.normalizeUnits = N, f.relativeTimeRounding = function(e) {
18319 return void 0 === e ? Vn : "function" == typeof e && (Vn = e, !0)
18320 }, f.relativeTimeThreshold = function(e, t) {
18321 return void 0 !== Bn[e] && (void 0 === t ? Bn[e] : (Bn[e] = t, "s" === e && (Bn.ss = t - 1), !0))
18322 }, f.calendarFormat = function(e, t) {
18323 var n = e.diff(t, "days", !0);
18324 return n < -6 ? "sameElse" : n < -1 ? "lastWeek" : n < 0 ? "lastDay" : n < 1 ? "sameDay" : n < 2 ? "nextDay" : n < 7 ? "nextWeek" : "sameElse"
18325 }, f.prototype = pn, f.HTML5_FMT = {
18326 DATETIME_LOCAL: "YYYY-MM-DDTHH:mm",
18327 DATETIME_LOCAL_SECONDS: "YYYY-MM-DDTHH:mm:ss",
18328 DATETIME_LOCAL_MS: "YYYY-MM-DDTHH:mm:ss.SSS",
18329 DATE: "YYYY-MM-DD",
18331 TIME_SECONDS: "HH:mm:ss",
18332 TIME_MS: "HH:mm:ss.SSS",
18333 WEEK: "GGGG-[W]WW",
18339 "object" == typeof module && "object" == typeof module.exports ? module.exports = e.document ? t(e, !0) : function(e) {
18340 if (!e.document) throw new Error("jQuery requires a window with a document");
18343 }("undefined" != typeof window ? window : this, function(E, e) {
18347 r = Object.getPrototypeOf,
18354 g = n.hasOwnProperty,
18356 c = a.call(Object),
18359 return "function" == typeof e && "number" != typeof e.nodeType
18362 return null != e && e === e.window
18371 function _(e, t, n) {
18372 var r, i, o = (n = n || C).createElement("script");
18374 for (r in u)(i = t[r] || t.getAttribute && t.getAttribute(r)) && o.setAttribute(r, i);
18375 n.head.appendChild(o).parentNode.removeChild(o)
18379 return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? n[o.call(e)] || "object" : typeof e
18381 var k = function(e, t) {
18382 return new k.fn.init(e, t)
18384 d = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
18387 var t = !!e && "length" in e && e.length,
18389 return !b(e) && !y(e) && ("array" === n || 0 === t || "number" == typeof t && 0 < t && t - 1 in e)
18391 k.fn = k.prototype = {
18395 toArray: function() {
18396 return s.call(this)
18399 return null == e ? s.call(this) : e < 0 ? this[e + this.length] : this[e]
18401 pushStack: function(e) {
18402 var t = k.merge(this.constructor(), e);
18403 return t.prevObject = this, t
18405 each: function(e) {
18406 return k.each(this, e)
18409 return this.pushStack(k.map(this, function(e, t) {
18410 return n.call(e, t, e)
18413 slice: function() {
18414 return this.pushStack(s.apply(this, arguments))
18416 first: function() {
18423 var t = this.length,
18424 n = +e + (e < 0 ? t : 0);
18425 return this.pushStack(0 <= n && n < t ? [this[n]] : [])
18428 return this.prevObject || this.constructor()
18433 }, k.extend = k.fn.extend = function() {
18434 var e, t, n, r, i, o, a = arguments[0] || {},
18436 l = arguments.length,
18438 for ("boolean" == typeof a && (c = a, a = arguments[s] || {}, s++), "object" == typeof a || b(a) || (a = {}), s === l && (a = this, s--); s < l; s++)
18439 if (null != (e = arguments[s]))
18440 for (t in e) r = e[t], "__proto__" !== t && a !== r && (c && r && (k.isPlainObject(r) || (i = Array.isArray(r))) ? (n = a[t], o = i && !Array.isArray(n) ? [] : i || k.isPlainObject(n) ? n : {}, i = !1, a[t] = k.extend(c, o, r)) : void 0 !== r && (a[t] = r));
18443 expando: "jQuery" + ("3.4.1" + Math.random()).replace(/\D/g, ""),
18445 error: function(e) {
18448 noop: function() {},
18449 isPlainObject: function(e) {
18451 return !(!e || "[object Object]" !== o.call(e)) && (!(t = r(e)) || "function" == typeof(n = g.call(t, "constructor") && t.constructor) && a.call(n) === c)
18453 isEmptyObject: function(e) {
18455 for (t in e) return !1;
18458 globalEval: function(e, t) {
18460 nonce: t && t.nonce
18463 each: function(e, t) {
18466 for (n = e.length; r < n && !1 !== t.call(e[r], r, e[r]); r++);
18469 if (!1 === t.call(e[r], r, e[r])) break;
18472 trim: function(e) {
18473 return null == e ? "" : (e + "").replace(d, "")
18475 makeArray: function(e, t) {
18477 return null != e && (f(Object(e)) ? k.merge(n, "string" == typeof e ? [e] : e) : l.call(n, e)), n
18479 inArray: function(e, t, n) {
18480 return null == t ? -1 : i.call(t, e, n)
18482 merge: function(e, t) {
18483 for (var n = +t.length, r = 0, i = e.length; r < n; r++) e[i++] = t[r];
18484 return e.length = i, e
18486 grep: function(e, t, n) {
18487 for (var r = [], i = 0, o = e.length, a = !n; i < o; i++) !t(e[i], i) !== a && r.push(e[i]);
18490 map: function(e, t, n) {
18494 for (r = e.length; o < r; o++) null != (i = t(e[o], o, n)) && a.push(i);
18496 for (o in e) null != (i = t(e[o], o, n)) && a.push(i);
18497 return m.apply([], a)
18501 }), "function" == typeof Symbol && (k.fn[Symbol.iterator] = t[Symbol.iterator]), k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function(e, t) {
18502 n["[object " + t + "]"] = t.toLowerCase()
18504 var h = function(n) {
18505 var e, h, _, o, i, p, d, m, $, l, c, w, E, a, C, g, s, u, v, k = "sizzle" + 1 * new Date,
18513 A = function(e, t) {
18514 return e === t && (c = !0), 0
18516 S = {}.hasOwnProperty,
18522 R = function(e, t) {
18523 for (var n = 0, r = e.length; n < r; n++)
18524 if (e[n] === t) return n;
18527 P = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
18528 H = "[\\x20\\t\\r\\n\\f]",
18529 j = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
18530 L = "\\[" + H + "*(" + j + ")(?:" + H + "*([*^$|!~]?=)" + H + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + j + "))|)" + H + "*\\]",
18531 F = ":(" + j + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + L + ")*)|.*)\\)|)",
18532 q = new RegExp(H + "+", "g"),
18533 U = new RegExp("^" + H + "+|((?:^|[^\\\\])(?:\\\\.)*)" + H + "+$", "g"),
18534 V = new RegExp("^" + H + "*," + H + "*"),
18535 B = new RegExp("^" + H + "*([>+~]|" + H + ")" + H + "*"),
18536 z = new RegExp(H + "|>"),
18538 Y = new RegExp("^" + j + "$"),
18540 ID: new RegExp("^#(" + j + ")"),
18541 CLASS: new RegExp("^\\.(" + j + ")"),
18542 TAG: new RegExp("^(" + j + "|[*])"),
18543 ATTR: new RegExp("^" + L),
18544 PSEUDO: new RegExp("^" + F),
18545 CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + H + "*(even|odd|(([+-]|)(\\d*)n|)" + H + "*(?:([+-]|)" + H + "*(\\d+)|))" + H + "*\\)|)", "i"),
18546 bool: new RegExp("^(?:" + P + ")$", "i"),
18547 needsContext: new RegExp("^" + H + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + H + "*((?:-\\d)?\\d*)" + H + "*\\)|)(?=[^-]|$)", "i")
18550 Z = /^(?:input|select|textarea|button)$/i,
18552 Q = /^[^{]+\{\s*\[native \w/,
18553 J = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
18555 te = new RegExp("\\\\([\\da-f]{1,6}" + H + "?|(" + H + ")|.)", "ig"),
18556 ne = function(e, t, n) {
18557 var r = "0x" + t - 65536;
18558 return r != r || n ? t : r < 0 ? String.fromCharCode(r + 65536) : String.fromCharCode(r >> 10 | 55296, 1023 & r | 56320)
18560 re = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
18561 ie = function(e, t) {
18562 return t ? "\0" === e ? "�" : e.slice(0, -1) + "\\" + e.charCodeAt(e.length - 1).toString(16) + " " : "\\" + e
18567 ae = _e(function(e) {
18568 return !0 === e.disabled && "fieldset" === e.nodeName.toLowerCase()
18574 N.apply(t = I.call(b.childNodes), b.childNodes), t[b.childNodes.length].nodeType
18577 apply: t.length ? function(e, t) {
18578 O.apply(e, I.call(t))
18579 } : function(e, t) {
18580 for (var n = e.length, r = 0; e[n++] = t[r++];);
18586 function se(t, e, n, r) {
18587 var i, o, a, s, l, c, u, d = e && e.ownerDocument,
18588 f = e ? e.nodeType : 9;
18589 if (n = n || [], "string" != typeof t || !t || 1 !== f && 9 !== f && 11 !== f) return n;
18590 if (!r && ((e ? e.ownerDocument || e : b) !== E && w(e), e = e || E, C)) {
18591 if (11 !== f && (l = J.exec(t)))
18594 if (!(a = e.getElementById(i))) return n;
18595 if (a.id === i) return n.push(a), n
18596 } else if (d && (a = d.getElementById(i)) && v(e, a) && a.id === i) return n.push(a), n
18598 if (l[2]) return N.apply(n, e.getElementsByTagName(t)), n;
18599 if ((i = l[3]) && h.getElementsByClassName && e.getElementsByClassName) return N.apply(n, e.getElementsByClassName(i)), n
18600 } if (h.qsa && !M[t + " "] && (!g || !g.test(t)) && (1 !== f || "object" !== e.nodeName.toLowerCase())) {
18601 if (u = t, d = e, 1 === f && z.test(t)) {
18602 for ((s = e.getAttribute("id")) ? s = s.replace(re, ie) : e.setAttribute("id", s = k), o = (c = p(t)).length; o--;) c[o] = "#" + s + " " + ye(c[o]);
18603 u = c.join(","), d = ee.test(t) && ve(e.parentNode) || e
18606 return N.apply(n, d.querySelectorAll(u)), n
18610 s === k && e.removeAttribute("id")
18614 return m(t.replace(U, "$1"), e, n, r)
18619 return function e(t, n) {
18620 return r.push(t + " ") > _.cacheLength && delete e[r.shift()], e[t + " "] = n
18625 return e[k] = !0, e
18629 var t = E.createElement("fieldset");
18635 t.parentNode && t.parentNode.removeChild(t), t = null
18639 function de(e, t) {
18640 for (var n = e.split("|"), r = n.length; r--;) _.attrHandle[n[r]] = t
18643 function fe(e, t) {
18645 r = n && 1 === e.nodeType && 1 === t.nodeType && e.sourceIndex - t.sourceIndex;
18648 for (; n = n.nextSibling;)
18649 if (n === t) return -1;
18654 return function(e) {
18655 return "input" === e.nodeName.toLowerCase() && e.type === t
18660 return function(e) {
18661 var t = e.nodeName.toLowerCase();
18662 return ("input" === t || "button" === t) && e.type === n
18667 return function(e) {
18668 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
18673 return ce(function(o) {
18674 return o = +o, ce(function(e, t) {
18675 for (var n, r = a([], e.length, o), i = r.length; i--;) e[n = r[i]] && (e[n] = !(t[n] = e[n]))
18681 return e && void 0 !== e.getElementsByTagName && e
18683 for (e in h = se.support = {}, i = se.isXML = function(e) {
18684 var t = e.namespaceURI,
18685 n = (e.ownerDocument || e).documentElement;
18686 return !K.test(t || n && n.nodeName || "HTML")
18687 }, w = se.setDocument = function(e) {
18688 var t, n, r = e ? e.ownerDocument || e : b;
18689 return r !== E && 9 === r.nodeType && r.documentElement && (a = (E = r).documentElement, C = !i(E), b !== E && (n = E.defaultView) && n.top !== n && (n.addEventListener ? n.addEventListener("unload", oe, !1) : n.attachEvent && n.attachEvent("onunload", oe)), h.attributes = ue(function(e) {
18690 return e.className = "i", !e.getAttribute("className")
18691 }), h.getElementsByTagName = ue(function(e) {
18692 return e.appendChild(E.createComment("")), !e.getElementsByTagName("*").length
18693 }), h.getElementsByClassName = Q.test(E.getElementsByClassName), h.getById = ue(function(e) {
18694 return a.appendChild(e).id = k, !E.getElementsByName || !E.getElementsByName(k).length
18695 }), h.getById ? (_.filter.ID = function(e) {
18696 var t = e.replace(te, ne);
18697 return function(e) {
18698 return e.getAttribute("id") === t
18700 }, _.find.ID = function(e, t) {
18701 if (void 0 !== t.getElementById && C) {
18702 var n = t.getElementById(e);
18703 return n ? [n] : []
18705 }) : (_.filter.ID = function(e) {
18706 var n = e.replace(te, ne);
18707 return function(e) {
18708 var t = void 0 !== e.getAttributeNode && e.getAttributeNode("id");
18709 return t && t.value === n
18711 }, _.find.ID = function(e, t) {
18712 if (void 0 !== t.getElementById && C) {
18713 var n, r, i, o = t.getElementById(e);
18715 if ((n = o.getAttributeNode("id")) && n.value === e) return [o];
18716 for (i = t.getElementsByName(e), r = 0; o = i[r++];)
18717 if ((n = o.getAttributeNode("id")) && n.value === e) return [o]
18721 }), _.find.TAG = h.getElementsByTagName ? function(e, t) {
18722 return void 0 !== t.getElementsByTagName ? t.getElementsByTagName(e) : h.qsa ? t.querySelectorAll(e) : void 0
18723 } : function(e, t) {
18726 o = t.getElementsByTagName(e);
18727 if ("*" !== e) return o;
18728 for (; n = o[i++];) 1 === n.nodeType && r.push(n);
18730 }, _.find.CLASS = h.getElementsByClassName && function(e, t) {
18731 if (void 0 !== t.getElementsByClassName && C) return t.getElementsByClassName(e)
18732 }, s = [], g = [], (h.qsa = Q.test(E.querySelectorAll)) && (ue(function(e) {
18733 a.appendChild(e).innerHTML = "<a id='" + k + "'></a><select id='" + k + "-\r\\' msallowcapture=''><option selected=''></option></select>", e.querySelectorAll("[msallowcapture^='']").length && g.push("[*^$]=" + H + "*(?:''|\"\")"), e.querySelectorAll("[selected]").length || g.push("\\[" + H + "*(?:value|" + P + ")"), e.querySelectorAll("[id~=" + k + "-]").length || g.push("~="), e.querySelectorAll(":checked").length || g.push(":checked"), e.querySelectorAll("a#" + k + "+*").length || g.push(".#.+[+~]")
18734 }), ue(function(e) {
18735 e.innerHTML = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";
18736 var t = E.createElement("input");
18737 t.setAttribute("type", "hidden"), e.appendChild(t).setAttribute("name", "D"), e.querySelectorAll("[name=d]").length && g.push("name" + H + "*[*^$|!~]?="), 2 !== e.querySelectorAll(":enabled").length && g.push(":enabled", ":disabled"), a.appendChild(e).disabled = !0, 2 !== e.querySelectorAll(":disabled").length && g.push(":enabled", ":disabled"), e.querySelectorAll("*,:x"), g.push(",.*:")
18738 })), (h.matchesSelector = Q.test(u = a.matches || a.webkitMatchesSelector || a.mozMatchesSelector || a.oMatchesSelector || a.msMatchesSelector)) && ue(function(e) {
18739 h.disconnectedMatch = u.call(e, "*"), u.call(e, "[s!='']:x"), s.push("!=", F)
18740 }), g = g.length && new RegExp(g.join("|")), s = s.length && new RegExp(s.join("|")), t = Q.test(a.compareDocumentPosition), v = t || Q.test(a.contains) ? function(e, t) {
18741 var n = 9 === e.nodeType ? e.documentElement : e,
18742 r = t && t.parentNode;
18743 return e === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r)))
18744 } : function(e, t) {
18746 for (; t = t.parentNode;)
18747 if (t === e) return !0;
18749 }, A = t ? function(e, t) {
18750 if (e === t) return c = !0, 0;
18751 var n = !e.compareDocumentPosition - !t.compareDocumentPosition;
18752 return n || (1 & (n = (e.ownerDocument || e) === (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !h.sortDetached && t.compareDocumentPosition(e) === n ? e === E || e.ownerDocument === b && v(b, e) ? -1 : t === E || t.ownerDocument === b && v(b, t) ? 1 : l ? R(l, e) - R(l, t) : 0 : 4 & n ? -1 : 1)
18753 } : function(e, t) {
18754 if (e === t) return c = !0, 0;
18760 if (!i || !o) return e === E ? -1 : t === E ? 1 : i ? -1 : o ? 1 : l ? R(l, e) - R(l, t) : 0;
18761 if (i === o) return fe(e, t);
18762 for (n = e; n = n.parentNode;) a.unshift(n);
18763 for (n = t; n = n.parentNode;) s.unshift(n);
18764 for (; a[r] === s[r];) r++;
18765 return r ? fe(a[r], s[r]) : a[r] === b ? -1 : s[r] === b ? 1 : 0
18767 }, se.matches = function(e, t) {
18768 return se(e, null, null, t)
18769 }, se.matchesSelector = function(e, t) {
18770 if ((e.ownerDocument || e) !== E && w(e), h.matchesSelector && C && !M[t + " "] && (!s || !s.test(t)) && (!g || !g.test(t))) try {
18771 var n = u.call(e, t);
18772 if (n || h.disconnectedMatch || e.document && 11 !== e.document.nodeType) return n
18776 return 0 < se(t, E, null, [e]).length
18777 }, se.contains = function(e, t) {
18778 return (e.ownerDocument || e) !== E && w(e), v(e, t)
18779 }, se.attr = function(e, t) {
18780 (e.ownerDocument || e) !== E && w(e);
18781 var n = _.attrHandle[t.toLowerCase()],
18782 r = n && S.call(_.attrHandle, t.toLowerCase()) ? n(e, t, !C) : void 0;
18783 return void 0 !== r ? r : h.attributes || !C ? e.getAttribute(t) : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
18784 }, se.escape = function(e) {
18785 return (e + "").replace(re, ie)
18786 }, se.error = function(e) {
18787 throw new Error("Syntax error, unrecognized expression: " + e)
18788 }, se.uniqueSort = function(e) {
18792 if (c = !h.detectDuplicates, l = !h.sortStable && e.slice(0), e.sort(A), c) {
18793 for (; t = e[i++];) t === e[i] && (r = n.push(i));
18794 for (; r--;) e.splice(n[r], 1)
18797 }, o = se.getText = function(e) {
18802 if (1 === i || 9 === i || 11 === i) {
18803 if ("string" == typeof e.textContent) return e.textContent;
18804 for (e = e.firstChild; e; e = e.nextSibling) n += o(e)
18805 } else if (3 === i || 4 === i) return e.nodeValue
18807 for (; t = e[r++];) n += o(t);
18809 }, (_ = se.selectors = {
18824 dir: "previousSibling",
18828 dir: "previousSibling"
18832 ATTR: function(e) {
18833 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)
18835 CHILD: function(e) {
18836 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
18838 PSEUDO: function(e) {
18839 var t, n = !e[6] && e[2];
18840 return G.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && W.test(n) && (t = p(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))
18845 var t = e.replace(te, ne).toLowerCase();
18846 return "*" === e ? function() {
18849 return e.nodeName && e.nodeName.toLowerCase() === t
18852 CLASS: function(e) {
18853 var t = f[e + " "];
18854 return t || (t = new RegExp("(^|" + H + ")" + e + "(" + H + "|$)")) && f(e, function(e) {
18855 return t.test("string" == typeof e.className && e.className || void 0 !== e.getAttribute && e.getAttribute("class") || "")
18858 ATTR: function(n, r, i) {
18859 return function(e) {
18860 var t = se.attr(e, n);
18861 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(q, " ") + " ").indexOf(i) : "|=" === r && (t === i || t.slice(0, i.length + 1) === i + "-"))
18864 CHILD: function(p, e, t, m, g) {
18865 var v = "nth" !== p.slice(0, 3),
18866 b = "last" !== p.slice(-4),
18867 y = "of-type" === e;
18868 return 1 === m && 0 === g ? function(e) {
18869 return !!e.parentNode
18870 } : function(e, t, n) {
18871 var r, i, o, a, s, l, c = v !== b ? "nextSibling" : "previousSibling",
18873 d = y && e.nodeName.toLowerCase(),
18879 for (a = e; a = a[c];)
18880 if (y ? a.nodeName.toLowerCase() === d : 1 === a.nodeType) return !1;
18881 l = c = "only" === p && !l && "nextSibling"
18885 if (l = [b ? u.firstChild : u.lastChild], b && f) {
18886 for (h = (s = (r = (i = (o = (a = u)[k] || (a[k] = {}))[a.uniqueID] || (o[a.uniqueID] = {}))[p] || [])[0] === x && r[1]) && r[2], a = s && u.childNodes[s]; a = ++s && a && a[c] || (h = s = 0) || l.pop();)
18887 if (1 === a.nodeType && ++h && a === e) {
18891 } else if (f && (h = s = (r = (i = (o = (a = e)[k] || (a[k] = {}))[a.uniqueID] || (o[a.uniqueID] = {}))[p] || [])[0] === x && r[1]), !1 === h)
18893 (a = ++s && a && a[c] || (h = s = 0) || l.pop()) && ((y ? a.nodeName.toLowerCase() !== d : 1 !== a.nodeType) || !++h || (f && ((i = (o = a[k] || (a[k] = {}))[a.uniqueID] || (o[a.uniqueID] = {}))[p] = [x, h]), a !== e)););
18894 return (h -= g) === m || h % m == 0 && 0 <= h / m
18898 PSEUDO: function(e, o) {
18899 var t, a = _.pseudos[e] || _.setFilters[e.toLowerCase()] || se.error("unsupported pseudo: " + e);
18900 return a[k] ? a(o) : 1 < a.length ? (t = [e, e, "", o], _.setFilters.hasOwnProperty(e.toLowerCase()) ? ce(function(e, t) {
18901 for (var n, r = a(e, o), i = r.length; i--;) e[n = R(e, r[i])] = !(t[n] = r[i])
18908 not: ce(function(e) {
18911 s = d(e.replace(U, "$1"));
18912 return s[k] ? ce(function(e, t, n, r) {
18913 for (var i, o = s(e, null, r, []), a = e.length; a--;)(i = o[a]) && (e[a] = !(t[a] = i))
18914 }) : function(e, t, n) {
18915 return r[0] = e, s(r, null, n, i), r[0] = null, !i.pop()
18918 has: ce(function(t) {
18919 return function(e) {
18920 return 0 < se(t, e).length
18923 contains: ce(function(t) {
18924 return t = t.replace(te, ne),
18926 return -1 < (e.textContent || o(e)).indexOf(t)
18929 lang: ce(function(n) {
18930 return Y.test(n || "") || se.error("unsupported lang: " + n), n = n.replace(te, ne).toLowerCase(),
18934 if (t = C ? e.lang : e.getAttribute("xml:lang") || e.getAttribute("lang")) return (t = t.toLowerCase()) === n || 0 === t.indexOf(n + "-")
18935 } while ((e = e.parentNode) && 1 === e.nodeType);
18939 target: function(e) {
18940 var t = n.location && n.location.hash;
18941 return t && t.slice(1) === e.id
18943 root: function(e) {
18946 focus: function(e) {
18947 return e === E.activeElement && (!E.hasFocus || E.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
18951 checked: function(e) {
18952 var t = e.nodeName.toLowerCase();
18953 return "input" === t && !!e.checked || "option" === t && !!e.selected
18955 selected: function(e) {
18956 return e.parentNode && e.parentNode.selectedIndex, !0 === e.selected
18958 empty: function(e) {
18959 for (e = e.firstChild; e; e = e.nextSibling)
18960 if (e.nodeType < 6) return !1;
18963 parent: function(e) {
18964 return !_.pseudos.empty(e)
18966 header: function(e) {
18967 return X.test(e.nodeName)
18969 input: function(e) {
18970 return Z.test(e.nodeName)
18972 button: function(e) {
18973 var t = e.nodeName.toLowerCase();
18974 return "input" === t && "button" === e.type || "button" === t
18976 text: function(e) {
18978 return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase())
18980 first: ge(function() {
18983 last: ge(function(e, t) {
18986 eq: ge(function(e, t, n) {
18987 return [n < 0 ? n + t : n]
18989 even: ge(function(e, t) {
18990 for (var n = 0; n < t; n += 2) e.push(n);
18993 odd: ge(function(e, t) {
18994 for (var n = 1; n < t; n += 2) e.push(n);
18997 lt: ge(function(e, t, n) {
18998 for (var r = n < 0 ? n + t : t < n ? t : n; 0 <= --r;) e.push(r);
19001 gt: ge(function(e, t, n) {
19002 for (var r = n < 0 ? n + t : n; ++r < t;) e.push(r);
19006 }).pseudos.nth = _.pseudos.eq, {
19012 }) _.pseudos[e] = he(e);
19016 }) _.pseudos[e] = pe(e);
19021 for (var t = 0, n = e.length, r = ""; t < n; t++) r += e[t].value;
19025 function _e(s, e, t) {
19029 d = t && "parentNode" === u,
19031 return e.first ? function(e, t, n) {
19033 if (1 === e.nodeType || d) return s(e, t, n);
19035 } : function(e, t, n) {
19036 var r, i, o, a = [x, f];
19039 if ((1 === e.nodeType || d) && s(e, t, n)) return !0
19042 if (1 === e.nodeType || d)
19043 if (i = (o = e[k] || (e[k] = {}))[e.uniqueID] || (o[e.uniqueID] = {}), c && c === e.nodeName.toLowerCase()) e = e[l] || e;
19045 if ((r = i[u]) && r[0] === x && r[1] === f) return a[2] = r[2];
19046 if ((i[u] = a)[2] = s(e, t, n)) return !0
19052 return 1 < i.length ? function(e, t, n) {
19053 for (var r = i.length; r--;)
19054 if (!i[r](e, t, n)) return !1;
19059 function we(e, t, n, r, i) {
19060 for (var o, a = [], s = 0, l = e.length, c = null != t; s < l; s++)(o = e[s]) && (n && !n(o, r, i) || (a.push(o), c && t.push(s)));
19064 function Ee(h, p, m, g, v, e) {
19065 return g && !g[k] && (g = Ee(g)), v && !v[k] && (v = Ee(v, e)), ce(function(e, t, n, r) {
19066 var i, o, a, s = [],
19069 u = e || function(e, t, n) {
19070 for (var r = 0, i = t.length; r < i; r++) se(e, t[r], n);
19072 }(p || "*", n.nodeType ? [n] : n, []),
19073 d = !h || !e && p ? u : we(u, s, h, n, r),
19074 f = m ? v || (e ? h : c || g) ? [] : t : d;
19075 if (m && m(d, f, n, r), g)
19076 for (i = we(f, l), g(i, [], n, r), o = i.length; o--;)(a = i[o]) && (f[l[o]] = !(d[l[o]] = a));
19080 for (i = [], o = f.length; o--;)(a = f[o]) && i.push(d[o] = a);
19081 v(null, f = [], i, r)
19083 for (o = f.length; o--;)(a = f[o]) && -1 < (i = v ? R(e, a) : s[o]) && (e[i] = !(t[i] = a))
19085 } else f = we(f === t ? f.splice(c, f.length) : f), v ? v(null, t, f, r) : N.apply(t, f)
19090 for (var i, t, n, r = e.length, o = _.relative[e[0].type], a = o || _.relative[" "], s = o ? 1 : 0, l = _e(function(e) {
19092 }, a, !0), c = _e(function(e) {
19093 return -1 < R(i, e)
19094 }, a, !0), u = [function(e, t, n) {
19095 var r = !o && (n || t !== $) || ((i = t).nodeType ? l(e, t, n) : c(e, t, n));
19098 if (t = _.relative[e[s].type]) u = [_e($e(u), t)];
19100 if ((t = _.filter[e[s].type].apply(null, e[s].matches))[k]) {
19101 for (n = ++s; n < r && !_.relative[e[n].type]; n++);
19102 return Ee(1 < s && $e(u), 1 < s && ye(e.slice(0, s - 1).concat({
19103 value: " " === e[s - 2].type ? "*" : ""
19104 })).replace(U, "$1"), t, s < n && Ce(e.slice(s, n)), n < r && Ce(e = e.slice(n)), n < r && ye(e))
19109 return be.prototype = _.filters = _.pseudos, _.setFilters = new be, p = se.tokenize = function(e, t) {
19110 var n, r, i, o, a, s, l, c = y[e + " "];
19111 if (c) return t ? 0 : c.slice(0);
19112 for (a = e, s = [], l = _.preFilter; a;) {
19113 for (o in n && !(r = V.exec(a)) || (r && (a = a.slice(r[0].length) || a), s.push(i = [])), n = !1, (r = B.exec(a)) && (n = r.shift(), i.push({
19115 type: r[0].replace(U, " ")
19116 }), a = a.slice(n.length)), _.filter) !(r = G[o].exec(a)) || l[o] && !(r = l[o](r)) || (n = r.shift(), i.push({
19120 }), a = a.slice(n.length));
19123 return t ? a.length : a ? se.error(e) : y(e, s).slice(0)
19124 }, d = se.compile = function(e, t) {
19125 var n, g, v, b, y, r, i = [],
19129 for (t || (t = p(e)), n = t.length; n--;)(a = Ce(t[n]))[k] ? i.push(a) : o.push(a);
19130 (a = T(e, (g = o, b = 0 < (v = i).length, y = 0 < g.length, r = function(e, t, n, r, i) {
19131 var o, a, s, l = 0,
19136 h = e || y && _.find.TAG("*", i),
19137 p = x += null == f ? 1 : Math.random() || .1,
19139 for (i && ($ = t === E || t || i); c !== m && null != (o = h[c]); c++) {
19141 for (a = 0, t || o.ownerDocument === E || (w(o), n = !C); s = g[a++];)
19142 if (s(o, t || E, n)) {
19147 b && ((o = !s && o) && l--, e && u.push(o))
19149 if (l += c, b && c !== l) {
19150 for (a = 0; s = v[a++];) s(u, d, t, n);
19153 for (; c--;) u[c] || d[c] || (d[c] = D.call(r));
19156 N.apply(r, d), i && !e && 0 < d.length && 1 < l + v.length && se.uniqueSort(r)
19158 return i && (x = p, $ = f), u
19159 }, b ? ce(r) : r))).selector = e
19162 }, m = se.select = function(e, t, n, r) {
19163 var i, o, a, s, l, c = "function" == typeof e && e,
19164 u = !r && p(e = c.selector || e);
19165 if (n = n || [], 1 === u.length) {
19166 if (2 < (o = u[0] = u[0].slice(0)).length && "ID" === (a = o[0]).type && 9 === t.nodeType && C && _.relative[o[1].type]) {
19167 if (!(t = (_.find.ID(a.matches[0].replace(te, ne), t) || [])[0])) return n;
19168 c && (t = t.parentNode), e = e.slice(o.shift().value.length)
19170 for (i = G.needsContext.test(e) ? 0 : o.length; i-- && (a = o[i], !_.relative[s = a.type]);)
19171 if ((l = _.find[s]) && (r = l(a.matches[0].replace(te, ne), ee.test(o[0].type) && ve(t.parentNode) || t))) {
19172 if (o.splice(i, 1), !(e = r.length && ye(o))) return N.apply(n, r), n;
19176 return (c || d(e, u))(r, t, !C, n, !t || ee.test(e) && ve(t.parentNode) || t), n
19177 }, h.sortStable = k.split("").sort(A).join("") === k, h.detectDuplicates = !!c, w(), h.sortDetached = ue(function(e) {
19178 return 1 & e.compareDocumentPosition(E.createElement("fieldset"))
19179 }), ue(function(e) {
19180 return e.innerHTML = "<a href='#'></a>", "#" === e.firstChild.getAttribute("href")
19181 }) || de("type|href|height|width", function(e, t, n) {
19182 if (!n) return e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2)
19183 }), h.attributes && ue(function(e) {
19184 return e.innerHTML = "<input/>", e.firstChild.setAttribute("value", ""), "" === e.firstChild.getAttribute("value")
19185 }) || de("value", function(e, t, n) {
19186 if (!n && "input" === e.nodeName.toLowerCase()) return e.defaultValue
19187 }), ue(function(e) {
19188 return null == e.getAttribute("disabled")
19189 }) || de(P, function(e, t, n) {
19191 if (!n) return !0 === e[t] ? t.toLowerCase() : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
19194 k.find = h, k.expr = h.selectors, k.expr[":"] = k.expr.pseudos, k.uniqueSort = k.unique = h.uniqueSort, k.text = h.getText, k.isXMLDoc = h.isXML, k.contains = h.contains, k.escapeSelector = h.escape;
19195 var p = function(e, t, n) {
19196 for (var r = [], i = void 0 !== n;
19197 (e = e[t]) && 9 !== e.nodeType;)
19198 if (1 === e.nodeType) {
19199 if (i && k(e).is(n)) break;
19203 w = function(e, t) {
19204 for (var n = []; e; e = e.nextSibling) 1 === e.nodeType && e !== t && n.push(e);
19207 x = k.expr.match.needsContext;
19210 return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
19212 var M = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;
19214 function A(e, n, r) {
19215 return b(n) ? k.grep(e, function(e, t) {
19216 return !!n.call(e, t, e) !== r
19217 }) : n.nodeType ? k.grep(e, function(e) {
19218 return e === n !== r
19219 }) : "string" != typeof n ? k.grep(e, function(e) {
19220 return -1 < i.call(n, e) !== r
19221 }) : k.filter(n, e, r)
19223 k.filter = function(e, t, n) {
19225 return n && (e = ":not(" + e + ")"), 1 === t.length && 1 === r.nodeType ? k.find.matchesSelector(r, e) ? [r] : [] : k.find.matches(e, k.grep(t, function(e) {
19226 return 1 === e.nodeType
19229 find: function(e) {
19230 var t, n, r = this.length,
19232 if ("string" != typeof e) return this.pushStack(k(e).filter(function() {
19233 for (t = 0; t < r; t++)
19234 if (k.contains(i[t], this)) return !0
19236 for (n = this.pushStack([]), t = 0; t < r; t++) k.find(e, i[t], n);
19237 return 1 < r ? k.uniqueSort(n) : n
19239 filter: function(e) {
19240 return this.pushStack(A(this, e || [], !1))
19243 return this.pushStack(A(this, e || [], !0))
19246 return !!A(this, "string" == typeof e && x.test(e) ? k(e) : e || [], !1).length
19249 var S, D = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;
19250 (k.fn.init = function(e, t, n) {
19252 if (!e) return this;
19253 if (n = n || S, "string" != typeof e) return e.nodeType ? (this[0] = e, this.length = 1, this) : b(e) ? void 0 !== n.ready ? n.ready(e) : e(k) : k.makeArray(e, this);
19254 if (!(r = "<" === e[0] && ">" === e[e.length - 1] && 3 <= e.length ? [null, e, null] : D.exec(e)) || !r[1] && t) return !t || t.jquery ? (t || n).find(e) : this.constructor(t).find(e);
19256 if (t = t instanceof k ? t[0] : t, k.merge(this, k.parseHTML(r[1], t && t.nodeType ? t.ownerDocument || t : C, !0)), M.test(r[1]) && k.isPlainObject(t))
19257 for (r in t) b(this[r]) ? this[r](t[r]) : this.attr(r, t[r]);
19260 return (i = C.getElementById(r[2])) && (this[0] = i, this.length = 1), this
19261 }).prototype = k.fn, S = k(C);
19262 var O = /^(?:parents|prev(?:Until|All))/,
19272 (e = e[t]) && 1 !== e.nodeType;);
19277 var t = k(e, this),
19279 return this.filter(function() {
19280 for (var e = 0; e < n; e++)
19281 if (k.contains(this, t[e])) return !0
19284 closest: function(e, t) {
19288 a = "string" != typeof e && k(e);
19291 for (n = this[r]; n && n !== t; n = n.parentNode)
19292 if (n.nodeType < 11 && (a ? -1 < a.index(n) : 1 === n.nodeType && k.find.matchesSelector(n, e))) {
19295 } return this.pushStack(1 < o.length ? k.uniqueSort(o) : o)
19297 index: function(e) {
19298 return e ? "string" == typeof e ? i.call(k(e), this[0]) : i.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
19300 add: function(e, t) {
19301 return this.pushStack(k.uniqueSort(k.merge(this.get(), k(e, t))))
19303 addBack: function(e) {
19304 return this.add(null == e ? this.prevObject : this.prevObject.filter(e))
19307 parent: function(e) {
19308 var t = e.parentNode;
19309 return t && 11 !== t.nodeType ? t : null
19311 parents: function(e) {
19312 return p(e, "parentNode")
19314 parentsUntil: function(e, t, n) {
19315 return p(e, "parentNode", n)
19317 next: function(e) {
19318 return I(e, "nextSibling")
19320 prev: function(e) {
19321 return I(e, "previousSibling")
19323 nextAll: function(e) {
19324 return p(e, "nextSibling")
19326 prevAll: function(e) {
19327 return p(e, "previousSibling")
19329 nextUntil: function(e, t, n) {
19330 return p(e, "nextSibling", n)
19332 prevUntil: function(e, t, n) {
19333 return p(e, "previousSibling", n)
19335 siblings: function(e) {
19336 return w((e.parentNode || {}).firstChild, e)
19338 children: function(e) {
19339 return w(e.firstChild)
19341 contents: function(e) {
19342 return void 0 !== e.contentDocument ? e.contentDocument : (T(e, "template") && (e = e.content || e), k.merge([], e.childNodes))
19344 }, function(r, i) {
19345 k.fn[r] = function(e, t) {
19346 var n = k.map(this, i, e);
19347 return "Until" !== r.slice(-5) && (t = e), t && "string" == typeof t && (n = k.filter(t, n)), 1 < this.length && (N[r] || k.uniqueSort(n), O.test(r) && n.reverse()), this.pushStack(n)
19350 var R = /[^\x20\t\r\n\f]+/g;
19360 function j(e, t, n, r) {
19363 e && b(i = e.promise) ? i.call(e).done(t).fail(n) : e && b(i = e.then) ? i.call(e, t, n) : t.apply(void 0, [e].slice(r))
19365 n.apply(void 0, [e])
19368 k.Callbacks = function(r) {
19370 r = "string" == typeof r ? (e = r, n = {}, k.each(e.match(R) || [], function(e, t) {
19372 }), n) : k.extend({}, r);
19373 var i, t, o, a, s = [],
19377 for (a = a || r.once, o = i = !0; l.length; c = -1)
19378 for (t = l.shift(); ++c < s.length;) !1 === s[c].apply(t[0], t[1]) && r.stopOnFalse && (c = s.length, t = !1);
19379 r.memory || (t = !1), i = !1, a && (s = t ? [] : "")
19383 return s && (t && !i && (c = s.length - 1, l.push(t)), function n(e) {
19384 k.each(e, function(e, t) {
19385 b(t) ? r.unique && d.has(t) || s.push(t) : t && t.length && "string" !== $(t) && n(t)
19387 }(arguments), t && !i && u()), this
19389 remove: function() {
19390 return k.each(arguments, function(e, t) {
19391 for (var n; - 1 < (n = k.inArray(t, s, n));) s.splice(n, 1), n <= c && c--
19395 return e ? -1 < k.inArray(e, s) : 0 < s.length
19397 empty: function() {
19398 return s && (s = []), this
19400 disable: function() {
19401 return a = l = [], s = t = "", this
19403 disabled: function() {
19407 return a = l = [], t || i || (s = t = ""), this
19409 locked: function() {
19412 fireWith: function(e, t) {
19413 return a || (t = [e, (t = t || []).slice ? t.slice() : t], l.push(t), i || u()), this
19416 return d.fireWith(this, arguments), this
19418 fired: function() {
19424 Deferred: function(e) {
19426 ["notify", "progress", k.Callbacks("memory"), k.Callbacks("memory"), 2],
19427 ["resolve", "done", k.Callbacks("once memory"), k.Callbacks("once memory"), 0, "resolved"],
19428 ["reject", "fail", k.Callbacks("once memory"), k.Callbacks("once memory"), 1, "rejected"]
19432 state: function() {
19435 always: function() {
19436 return s.done(arguments).fail(arguments), this
19438 catch: function(e) {
19439 return a.then(null, e)
19443 return k.Deferred(function(r) {
19444 k.each(o, function(e, t) {
19445 var n = b(i[t[4]]) && i[t[4]];
19446 s[t[1]](function() {
19447 var e = n && n.apply(this, arguments);
19448 e && b(e.promise) ? e.promise().progress(r.notify).done(r.resolve).fail(r.reject) : r[t[0] + "With"](this, n ? [e] : arguments)
19453 then: function(t, n, r) {
19456 function c(i, o, a, s) {
19457 return function() {
19463 if ((e = a.apply(n, r)) === o.promise()) throw new TypeError("Thenable self-resolution");
19464 t = e && ("object" == typeof e || "function" == typeof e) && e.then, b(t) ? s ? t.call(e, c(l, o, P, s), c(l, o, H, s)) : (l++, t.call(e, c(l, o, P, s), c(l, o, H, s), c(l, o, P, o.notifyWith))) : (a !== P && (n = void 0, r = [e]), (s || o.resolveWith)(n, r))
19467 t = s ? e : function() {
19471 k.Deferred.exceptionHook && k.Deferred.exceptionHook(e, t.stackTrace), l <= i + 1 && (a !== H && (n = void 0, r = [e]), o.rejectWith(n, r))
19474 i ? t() : (k.Deferred.getStackHook && (t.stackTrace = k.Deferred.getStackHook()), E.setTimeout(t))
19477 return k.Deferred(function(e) {
19478 o[0][3].add(c(0, e, b(r) ? r : P, e.notifyWith)), o[1][3].add(c(0, e, b(t) ? t : P)), o[2][3].add(c(0, e, b(n) ? n : H))
19481 promise: function(e) {
19482 return null != e ? k.extend(e, a) : a
19486 return k.each(o, function(e, t) {
19489 a[t[1]] = n.add, r && n.add(function() {
19491 }, 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() {
19492 return s[t[0] + "With"](this === s ? void 0 : this, arguments), this
19493 }, s[t[0] + "With"] = n.fireWith
19494 }), a.promise(s), e && e.call(s, s), s
19496 when: function(e) {
19497 var n = arguments.length,
19500 i = s.call(arguments),
19503 return function(e) {
19504 r[t] = this, i[t] = 1 < arguments.length ? s.call(arguments) : e, --n || o.resolveWith(r, i)
19507 if (n <= 1 && (j(e, o.done(a(t)).resolve, o.reject, !n), "pending" === o.state() || b(i[t] && i[t].then))) return o.then();
19508 for (; t--;) j(i[t], a(t), o.reject);
19512 var L = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
19513 k.Deferred.exceptionHook = function(e, t) {
19514 E.console && E.console.warn && e && L.test(e.name) && E.console.warn("jQuery.Deferred exception: " + e.message, e.stack, t)
19515 }, k.readyException = function(e) {
19516 E.setTimeout(function() {
19520 var F = k.Deferred();
19523 C.removeEventListener("DOMContentLoaded", q), E.removeEventListener("load", q), k.ready()
19525 k.fn.ready = function(e) {
19526 return F.then(e).catch(function(e) {
19527 k.readyException(e)
19532 ready: function(e) {
19533 (!0 === e ? --k.readyWait : k.isReady) || (k.isReady = !0) !== e && 0 < --k.readyWait || F.resolveWith(C, [k])
19535 }), k.ready.then = F.then, "complete" === C.readyState || "loading" !== C.readyState && !C.documentElement.doScroll ? E.setTimeout(k.ready) : (C.addEventListener("DOMContentLoaded", q), E.addEventListener("load", q));
19536 var U = function(e, t, n, r, i, o, a) {
19540 if ("object" === $(n))
19541 for (s in i = !0, n) U(e, t, s, n[s], !0, o, a);
19542 else if (void 0 !== r && (i = !0, b(r) || (a = !0), c && (t = a ? (t.call(e, r), null) : (c = t, function(e, t, n) {
19543 return c.call(k(e), n)
19545 for (; s < l; s++) t(e[s], n, a ? r : r.call(e[s], s, t(e[s], n)));
19546 return i ? e : c ? t.call(e) : l ? t(e[0], n) : o
19552 return t.toUpperCase()
19556 return e.replace(V, "ms-").replace(B, z)
19558 var Y = function(e) {
19559 return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType
19563 this.expando = k.expando + G.uid++
19565 G.uid = 1, G.prototype = {
19566 cache: function(e) {
19567 var t = e[this.expando];
19568 return t || (t = {}, Y(e) && (e.nodeType ? e[this.expando] = t : Object.defineProperty(e, this.expando, {
19573 set: function(e, t, n) {
19574 var r, i = this.cache(e);
19575 if ("string" == typeof t) i[W(t)] = n;
19577 for (r in t) i[W(r)] = t[r];
19580 get: function(e, t) {
19581 return void 0 === t ? this.cache(e) : e[this.expando] && e[this.expando][W(t)]
19583 access: function(e, t, n) {
19584 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)
19586 remove: function(e, t) {
19587 var n, r = e[this.expando];
19588 if (void 0 !== r) {
19589 if (void 0 !== t) {
19590 n = (t = Array.isArray(t) ? t.map(W) : (t = W(t)) in r ? [t] : t.match(R) || []).length;
19591 for (; n--;) delete r[t[n]]
19592 }(void 0 === t || k.isEmptyObject(r)) && (e.nodeType ? e[this.expando] = void 0 : delete e[this.expando])
19595 hasData: function(e) {
19596 var t = e[this.expando];
19597 return void 0 !== t && !k.isEmptyObject(t)
19602 X = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
19605 function J(e, t, n) {
19607 if (void 0 === n && 1 === e.nodeType)
19608 if (r = "data-" + t.replace(Q, "-$&").toLowerCase(), "string" == typeof(n = e.getAttribute(r))) {
19610 n = "true" === (i = n) || "false" !== i && ("null" === i ? null : i === +i + "" ? +i : X.test(i) ? JSON.parse(i) : i)
19617 hasData: function(e) {
19618 return Z.hasData(e) || K.hasData(e)
19620 data: function(e, t, n) {
19621 return Z.access(e, t, n)
19623 removeData: function(e, t) {
19626 _data: function(e, t, n) {
19627 return K.access(e, t, n)
19629 _removeData: function(e, t) {
19633 data: function(n, e) {
19634 var t, r, i, o = this[0],
19635 a = o && o.attributes;
19636 if (void 0 !== n) return "object" == typeof n ? this.each(function() {
19638 }) : U(this, function(e) {
19640 if (o && void 0 === e) return void 0 !== (t = Z.get(o, n)) ? t : void 0 !== (t = J(o, n)) ? t : void 0;
19641 this.each(function() {
19644 }, null, e, 1 < arguments.length, null, !0);
19645 if (this.length && (i = Z.get(o), 1 === o.nodeType && !K.get(o, "hasDataAttrs"))) {
19646 for (t = a.length; t--;) a[t] && 0 === (r = a[t].name).indexOf("data-") && (r = W(r.slice(5)), J(o, r, i[r]));
19647 K.set(o, "hasDataAttrs", !0)
19651 removeData: function(e) {
19652 return this.each(function() {
19657 queue: function(e, t, n) {
19659 if (e) return t = (t || "fx") + "queue", r = K.get(e, t), n && (!r || Array.isArray(n) ? r = K.access(e, t, k.makeArray(n)) : r.push(n)), r || []
19661 dequeue: function(e, t) {
19663 var n = k.queue(e, t),
19666 o = k._queueHooks(e, t);
19667 "inprogress" === i && (i = n.shift(), r--), i && ("fx" === t && n.unshift("inprogress"), delete o.stop, i.call(e, function() {
19669 }, o)), !r && o && o.empty.fire()
19671 _queueHooks: function(e, t) {
19672 var n = t + "queueHooks";
19673 return K.get(e, n) || K.access(e, n, {
19674 empty: k.Callbacks("once memory").add(function() {
19675 K.remove(e, [t + "queue", n])
19680 queue: function(t, n) {
19682 return "string" != typeof t && (n = t, t = "fx", e--), arguments.length < e ? k.queue(this[0], t) : void 0 === n ? this : this.each(function() {
19683 var e = k.queue(this, t, n);
19684 k._queueHooks(this, t), "fx" === t && "inprogress" !== e[0] && k.dequeue(this, t)
19687 dequeue: function(e) {
19688 return this.each(function() {
19692 clearQueue: function(e) {
19693 return this.queue(e || "fx", [])
19695 promise: function(e, t) {
19701 --r || i.resolveWith(o, [o])
19703 for ("string" != typeof e && (t = e, e = void 0), e = e || "fx"; a--;)(n = K.get(o[a], e + "queueHooks")) && n.empty && (r++, n.empty.add(s));
19704 return s(), i.promise(t)
19707 var ee = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
19708 te = new RegExp("^(?:([+-])=|)(" + ee + ")([a-z%]*)$", "i"),
19709 ne = ["Top", "Right", "Bottom", "Left"],
19710 re = C.documentElement,
19712 return k.contains(e.ownerDocument, e)
19717 re.getRootNode && (ie = function(e) {
19718 return k.contains(e.ownerDocument, e) || e.getRootNode(oe) === e.ownerDocument
19720 var ae = function(e, t) {
19721 return "none" === (e = t || e).style.display || "" === e.style.display && ie(e) && "none" === k.css(e, "display")
19723 se = function(e, t, n, r) {
19725 for (o in t) a[o] = e.style[o], e.style[o] = t[o];
19726 for (o in i = n.apply(e, r || []), t) e.style[o] = a[o];
19730 function le(e, t, n, r) {
19732 s = r ? function() {
19735 return k.css(e, t, "")
19738 c = n && n[3] || (k.cssNumber[t] ? "" : "px"),
19739 u = e.nodeType && (k.cssNumber[t] || "px" !== c && +l) && te.exec(k.css(e, t));
19740 if (u && u[3] !== c) {
19741 for (l /= 2, c = c || u[3], u = +l || 1; a--;) k.style(e, t, u + c), (1 - o) * (1 - (o = s() / l || .5)) <= 0 && (a = 0), u /= o;
19742 u *= 2, k.style(e, t, u + c), n = n || []
19744 return n && (u = +u || +l || 0, i = n[1] ? u + (n[1] + 1) * n[2] : +n[2], r && (r.unit = c, r.start = u, r.end = i)), i
19748 function ue(e, t) {
19749 for (var n, r, i, o, a, s, l, c = [], u = 0, d = e.length; u < d; u++)(r = e[u]).style && (n = r.style.display, t ? ("none" === n && (c[u] = K.get(r, "display") || null, c[u] || (r.style.display = "")), "" === r.style.display && ae(r) && (c[u] = (l = a = o = void 0, a = (i = r).ownerDocument, s = i.nodeName, (l = ce[s]) || (o = a.body.appendChild(a.createElement(s)), l = k.css(o, "display"), o.parentNode.removeChild(o), "none" === l && (l = "block"), ce[s] = l)))) : "none" !== n && (c[u] = "none", K.set(r, "display", n)));
19750 for (u = 0; u < d; u++) null != c[u] && (e[u].style.display = c[u]);
19755 return ue(this, !0)
19760 toggle: function(e) {
19761 return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function() {
19762 ae(this) ? k(this).show() : k(this).hide()
19766 var de = /^(?:checkbox|radio)$/i,
19767 fe = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i,
19768 he = /^$|^module$|\/(?:java|ecma)script/i,
19770 option: [1, "<select multiple='multiple'>", "</select>"],
19771 thead: [1, "<table>", "</table>"],
19772 col: [2, "<table><colgroup>", "</colgroup></table>"],
19773 tr: [2, "<table><tbody>", "</tbody></table>"],
19774 td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
19775 _default: [0, "", ""]
19778 function me(e, t) {
19780 return n = void 0 !== e.getElementsByTagName ? e.getElementsByTagName(t || "*") : void 0 !== e.querySelectorAll ? e.querySelectorAll(t || "*") : [], void 0 === t || t && T(e, t) ? k.merge([e], n) : n
19783 function ge(e, t) {
19784 for (var n = 0, r = e.length; n < r; n++) K.set(e[n], "globalEval", !t || K.get(t[n], "globalEval"))
19786 pe.optgroup = pe.option, pe.tbody = pe.tfoot = pe.colgroup = pe.caption = pe.thead, pe.th = pe.td;
19787 var ve, be, ye = /<|&#?\w+;/;
19789 function _e(e, t, n, r, i) {
19790 for (var o, a, s, l, c, u, d = t.createDocumentFragment(), f = [], h = 0, p = e.length; h < p; h++)
19791 if ((o = e[h]) || 0 === o)
19792 if ("object" === $(o)) k.merge(f, o.nodeType ? [o] : o);
19793 else if (ye.test(o)) {
19794 for (a = a || d.appendChild(t.createElement("div")), s = (fe.exec(o) || ["", ""])[1].toLowerCase(), l = pe[s] || pe._default, a.innerHTML = l[1] + k.htmlPrefilter(o) + l[2], u = l[0]; u--;) a = a.lastChild;
19795 k.merge(f, a.childNodes), (a = d.firstChild).textContent = ""
19796 } else f.push(t.createTextNode(o));
19797 for (d.textContent = "", h = 0; o = f[h++];)
19798 if (r && -1 < k.inArray(o, r)) i && i.push(o);
19799 else if (c = ie(o), a = me(d.appendChild(o), "script"), c && ge(a), n)
19800 for (u = 0; o = a[u++];) he.test(o.type || "") && n.push(o);
19803 ve = C.createDocumentFragment().appendChild(C.createElement("div")), (be = C.createElement("input")).setAttribute("type", "radio"), be.setAttribute("checked", "checked"), be.setAttribute("name", "t"), ve.appendChild(be), v.checkClone = ve.cloneNode(!0).cloneNode(!0).lastChild.checked, ve.innerHTML = "<textarea>x</textarea>", v.noCloneChecked = !!ve.cloneNode(!0).lastChild.defaultValue;
19805 we = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
19806 Ee = /^([^.]*)(?:\.(.+)|)/;
19816 function xe(e, t) {
19817 return e === function() {
19819 return C.activeElement
19821 }() == ("focus" === t)
19824 function Te(e, t, n, r, i, o) {
19826 if ("object" == typeof t) {
19827 for (s in "string" != typeof n && (r = r || n, n = void 0), t) Te(e, s, n, r, t[s], o);
19830 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 = ke;
19831 else if (!i) return e;
19832 return 1 === o && (a = i, (i = function(e) {
19833 return k().off(e), a.apply(this, arguments)
19834 }).guid = a.guid || (a.guid = k.guid++)), e.each(function() {
19835 k.event.add(this, t, i, r, n)
19839 function Me(e, i, o) {
19840 o ? (K.set(e, i, !1), k.event.add(e, i, {
19842 handler: function(e) {
19843 var t, n, r = K.get(this, i);
19844 if (1 & e.isTrigger && this[i]) {
19845 if (r.length)(k.event.special[i] || {}).delegateType && e.stopPropagation();
19846 else if (r = s.call(arguments), K.set(this, i, r), t = o(this, i), this[i](), r !== (n = K.get(this, i)) || t ? K.set(this, i, !1) : n = {}, r !== n) return e.stopImmediatePropagation(), e.preventDefault(), n.value
19847 } else r.length && (K.set(this, i, {
19848 value: k.event.trigger(k.extend(r[0], k.Event.prototype), r.slice(1), this)
19849 }), e.stopImmediatePropagation())
19851 })) : void 0 === K.get(e, i) && k.event.add(e, i, Ce)
19855 add: function(t, e, n, r, i) {
19856 var o, a, s, l, c, u, d, f, h, p, m, g = K.get(t);
19858 for (n.handler && (n = (o = n).handler, i = o.selector), i && k.find.matchesSelector(re, i), n.guid || (n.guid = k.guid++), (l = g.events) || (l = g.events = {}), (a = g.handle) || (a = g.handle = function(e) {
19859 return void 0 !== k && k.event.triggered !== e.type ? k.event.dispatch.apply(t, arguments) : void 0
19860 }), c = (e = (e || "").match(R) || [""]).length; c--;) h = m = (s = Ee.exec(e[c]) || [])[1], p = (s[2] || "").split(".").sort(), h && (d = k.event.special[h] || {}, h = (i ? d.delegateType : d.bindType) || h, d = k.event.special[h] || {}, u = k.extend({
19867 needsContext: i && k.expr.match.needsContext.test(i),
19868 namespace: p.join(".")
19869 }, o), (f = l[h]) || ((f = l[h] = []).delegateCount = 0, d.setup && !1 !== d.setup.call(t, r, p, a) || t.addEventListener && t.addEventListener(h, a)), d.add && (d.add.call(t, u), u.handler.guid || (u.handler.guid = n.guid)), i ? f.splice(f.delegateCount++, 0, u) : f.push(u), k.event.global[h] = !0)
19871 remove: function(e, t, n, r, i) {
19872 var o, a, s, l, c, u, d, f, h, p, m, g = K.hasData(e) && K.get(e);
19873 if (g && (l = g.events)) {
19874 for (c = (t = (t || "").match(R) || [""]).length; c--;)
19875 if (h = m = (s = Ee.exec(t[c]) || [])[1], p = (s[2] || "").split(".").sort(), h) {
19876 for (d = k.event.special[h] || {}, f = l[h = (r ? d.delegateType : d.bindType) || h] || [], s = s[2] && new RegExp("(^|\\.)" + p.join("\\.(?:.*\\.|)") + "(\\.|$)"), a = o = f.length; o--;) u = f[o], !i && m !== u.origType || n && n.guid !== u.guid || s && !s.test(u.namespace) || r && r !== u.selector && ("**" !== r || !u.selector) || (f.splice(o, 1), u.selector && f.delegateCount--, d.remove && d.remove.call(e, u));
19877 a && !f.length && (d.teardown && !1 !== d.teardown.call(e, p, g.handle) || k.removeEvent(e, h, g.handle), delete l[h])
19879 for (h in l) k.event.remove(e, h + t[c], n, r, !0);
19880 k.isEmptyObject(l) && K.remove(e, "handle events")
19883 dispatch: function(e) {
19884 var t, n, r, i, o, a, s = k.event.fix(e),
19885 l = new Array(arguments.length),
19886 c = (K.get(this, "events") || {})[s.type] || [],
19887 u = k.event.special[s.type] || {};
19888 for (l[0] = s, t = 1; t < arguments.length; t++) l[t] = arguments[t];
19889 if (s.delegateTarget = this, !u.preDispatch || !1 !== u.preDispatch.call(this, s)) {
19890 for (a = k.event.handlers.call(this, s, c), t = 0;
19891 (i = a[t++]) && !s.isPropagationStopped();)
19892 for (s.currentTarget = i.elem, n = 0;
19893 (o = i.handlers[n++]) && !s.isImmediatePropagationStopped();) s.rnamespace && !1 !== o.namespace && !s.rnamespace.test(o.namespace) || (s.handleObj = o, s.data = o.data, void 0 !== (r = ((k.event.special[o.origType] || {}).handle || o.handler).apply(i.elem, l)) && !1 === (s.result = r) && (s.preventDefault(), s.stopPropagation()));
19894 return u.postDispatch && u.postDispatch.call(this, s), s.result
19897 handlers: function(e, t) {
19898 var n, r, i, o, a, s = [],
19899 l = t.delegateCount,
19901 if (l && c.nodeType && !("click" === e.type && 1 <= e.button))
19902 for (; c !== this; c = c.parentNode || this)
19903 if (1 === c.nodeType && ("click" !== e.type || !0 !== c.disabled)) {
19904 for (o = [], a = {}, n = 0; n < l; n++) void 0 === a[i = (r = t[n]).selector + " "] && (a[i] = r.needsContext ? -1 < k(i, this).index(c) : k.find(i, this, null, [c]).length), a[i] && o.push(r);
19905 o.length && s.push({
19909 } return c = this, l < t.length && s.push({
19911 handlers: t.slice(l)
19914 addProp: function(t, e) {
19915 Object.defineProperty(k.Event.prototype, t, {
19918 get: b(e) ? function() {
19919 if (this.originalEvent) return e(this.originalEvent)
19921 if (this.originalEvent) return this.originalEvent[t]
19924 Object.defineProperty(this, t, {
19934 return e[k.expando] ? e : new k.Event(e)
19941 setup: function(e) {
19943 return de.test(t.type) && t.click && T(t, "input") && Me(t, "click", Ce), !1
19945 trigger: function(e) {
19947 return de.test(t.type) && t.click && T(t, "input") && Me(t, "click"), !0
19949 _default: function(e) {
19951 return de.test(t.type) && t.click && T(t, "input") && K.get(t, "click") || T(t, "a")
19955 postDispatch: function(e) {
19956 void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result)
19960 }, k.removeEvent = function(e, t, n) {
19961 e.removeEventListener && e.removeEventListener(t, n)
19962 }, k.Event = function(e, t) {
19963 if (!(this instanceof k.Event)) return new k.Event(e, t);
19964 e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && !1 === e.returnValue ? Ce : ke, this.target = e.target && 3 === e.target.nodeType ? e.target.parentNode : e.target, this.currentTarget = e.currentTarget, this.relatedTarget = e.relatedTarget) : this.type = e, t && k.extend(this, t), this.timeStamp = e && e.timeStamp || Date.now(), this[k.expando] = !0
19965 }, k.Event.prototype = {
19966 constructor: k.Event,
19967 isDefaultPrevented: ke,
19968 isPropagationStopped: ke,
19969 isImmediatePropagationStopped: ke,
19971 preventDefault: function() {
19972 var e = this.originalEvent;
19973 this.isDefaultPrevented = Ce, e && !this.isSimulated && e.preventDefault()
19975 stopPropagation: function() {
19976 var e = this.originalEvent;
19977 this.isPropagationStopped = Ce, e && !this.isSimulated && e.stopPropagation()
19979 stopImmediatePropagation: function() {
19980 var e = this.originalEvent;
19981 this.isImmediatePropagationStopped = Ce, e && !this.isSimulated && e.stopImmediatePropagation(), this.stopPropagation()
19987 changedTouches: !0,
20014 which: function(e) {
20016 return null == e.which && $e.test(e.type) ? null != e.charCode ? e.charCode : e.keyCode : !e.which && void 0 !== t && we.test(e.type) ? 1 & t ? 1 : 2 & t ? 3 : 4 & t ? 2 : 0 : e.which
20018 }, k.event.addProp), k.each({
20021 }, function(e, t) {
20022 k.event.special[e] = {
20023 setup: function() {
20024 return Me(this, e, xe), !1
20026 trigger: function() {
20027 return Me(this, e), !0
20032 mouseenter: "mouseover",
20033 mouseleave: "mouseout",
20034 pointerenter: "pointerover",
20035 pointerleave: "pointerout"
20036 }, function(e, i) {
20037 k.event.special[e] = {
20040 handle: function(e) {
20041 var t, n = e.relatedTarget,
20043 return n && (n === this || k.contains(this, n)) || (e.type = r.origType, t = r.handler.apply(this, arguments), e.type = i), t
20047 on: function(e, t, n, r) {
20048 return Te(this, e, t, n, r)
20050 one: function(e, t, n, r) {
20051 return Te(this, e, t, n, r, 1)
20053 off: function(e, t, n) {
20055 if (e && e.preventDefault && e.handleObj) return r = e.handleObj, k(e.delegateTarget).off(r.namespace ? r.origType + "." + r.namespace : r.origType, r.selector, r.handler), this;
20056 if ("object" != typeof e) return !1 !== t && "function" != typeof t || (n = t, t = void 0), !1 === n && (n = ke), this.each(function() {
20057 k.event.remove(this, e, n, t)
20059 for (i in e) this.off(i, t, e[i]);
20063 var Ae = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
20064 Se = /<script|<style|<link/i,
20065 De = /checked\s*(?:[^=]|=\s*.checked.)/i,
20066 Oe = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
20068 function Ne(e, t) {
20069 return T(e, "table") && T(11 !== t.nodeType ? t : t.firstChild, "tr") && k(e).children("tbody")[0] || e
20073 return e.type = (null !== e.getAttribute("type")) + "/" + e.type, e
20077 return "true/" === (e.type || "").slice(0, 5) ? e.type = e.type.slice(5) : e.removeAttribute("type"), e
20080 function Pe(e, t) {
20081 var n, r, i, o, a, s, l, c;
20082 if (1 === t.nodeType) {
20083 if (K.hasData(e) && (o = K.access(e), a = K.set(t, o), c = o.events))
20084 for (i in delete a.handle, a.events = {}, c)
20085 for (n = 0, r = c[i].length; n < r; n++) k.event.add(t, i, c[i][n]);
20086 Z.hasData(e) && (s = Z.access(e), l = k.extend({}, s), Z.set(t, l))
20090 function He(n, r, i, o) {
20091 r = m.apply([], r);
20092 var e, t, a, s, l, c, u = 0,
20097 if (p || 1 < d && "string" == typeof h && !v.checkClone && De.test(h)) return n.each(function(e) {
20099 p && (r[0] = h.call(this, e, t.html())), He(t, r, i, o)
20101 if (d && (t = (e = _e(r, n[0].ownerDocument, !1, n, o)).firstChild, 1 === e.childNodes.length && (e = t), t || o)) {
20102 for (s = (a = k.map(me(e, "script"), Ie)).length; u < d; u++) l = e, u !== f && (l = k.clone(l, !0, !0), s && k.merge(a, me(l, "script"))), i.call(n[u], l, u);
20104 for (c = a[a.length - 1].ownerDocument, k.map(a, Re), u = 0; u < s; u++) l = a[u], he.test(l.type || "") && !K.access(l, "globalEval") && k.contains(c, l) && (l.src && "module" !== (l.type || "").toLowerCase() ? k._evalUrl && !l.noModule && k._evalUrl(l.src, {
20105 nonce: l.nonce || l.getAttribute("nonce")
20106 }) : _(l.textContent.replace(Oe, ""), l, c))
20111 function je(e, t, n) {
20112 for (var r, i = t ? k.filter(t, e) : e, o = 0; null != (r = i[o]); o++) n || 1 !== r.nodeType || k.cleanData(me(r)), r.parentNode && (n && ie(r) && ge(me(r, "script")), r.parentNode.removeChild(r));
20116 htmlPrefilter: function(e) {
20117 return e.replace(Ae, "<$1></$2>")
20119 clone: function(e, t, n) {
20120 var r, i, o, a, s, l, c, u = e.cloneNode(!0),
20122 if (!(v.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || k.isXMLDoc(e)))
20123 for (a = me(u), r = 0, i = (o = me(e)).length; r < i; r++) s = o[r], l = a[r], void 0, "input" === (c = l.nodeName.toLowerCase()) && de.test(s.type) ? l.checked = s.checked : "input" !== c && "textarea" !== c || (l.defaultValue = s.defaultValue);
20126 for (o = o || me(e), a = a || me(u), r = 0, i = o.length; r < i; r++) Pe(o[r], a[r]);
20128 return 0 < (a = me(u, "script")).length && ge(a, !d && me(e, "script")), u
20130 cleanData: function(e) {
20131 for (var t, n, r, i = k.event.special, o = 0; void 0 !== (n = e[o]); o++)
20133 if (t = n[K.expando]) {
20135 for (r in t.events) i[r] ? k.event.remove(n, r) : k.removeEvent(n, r, t.handle);
20136 n[K.expando] = void 0
20138 n[Z.expando] && (n[Z.expando] = void 0)
20142 detach: function(e) {
20143 return je(this, e, !0)
20145 remove: function(e) {
20148 text: function(e) {
20149 return U(this, function(e) {
20150 return void 0 === e ? k.text(this) : this.empty().each(function() {
20151 1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = e)
20153 }, null, e, arguments.length)
20155 append: function() {
20156 return He(this, arguments, function(e) {
20157 1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || Ne(this, e).appendChild(e)
20160 prepend: function() {
20161 return He(this, arguments, function(e) {
20162 if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
20163 var t = Ne(this, e);
20164 t.insertBefore(e, t.firstChild)
20168 before: function() {
20169 return He(this, arguments, function(e) {
20170 this.parentNode && this.parentNode.insertBefore(e, this)
20173 after: function() {
20174 return He(this, arguments, function(e) {
20175 this.parentNode && this.parentNode.insertBefore(e, this.nextSibling)
20178 empty: function() {
20179 for (var e, t = 0; null != (e = this[t]); t++) 1 === e.nodeType && (k.cleanData(me(e, !1)), e.textContent = "");
20182 clone: function(e, t) {
20183 return e = null != e && e, t = null == t ? e : t, this.map(function() {
20184 return k.clone(this, e, t)
20187 html: function(e) {
20188 return U(this, function(e) {
20189 var t = this[0] || {},
20192 if (void 0 === e && 1 === t.nodeType) return t.innerHTML;
20193 if ("string" == typeof e && !Se.test(e) && !pe[(fe.exec(e) || ["", ""])[1].toLowerCase()]) {
20194 e = k.htmlPrefilter(e);
20196 for (; n < r; n++) 1 === (t = this[n] || {}).nodeType && (k.cleanData(me(t, !1)), t.innerHTML = e);
20200 t && this.empty().append(e)
20201 }, null, e, arguments.length)
20203 replaceWith: function() {
20205 return He(this, arguments, function(e) {
20206 var t = this.parentNode;
20207 k.inArray(this, n) < 0 && (k.cleanData(me(this)), t && t.replaceChild(e, this))
20211 appendTo: "append",
20212 prependTo: "prepend",
20213 insertBefore: "before",
20214 insertAfter: "after",
20215 replaceAll: "replaceWith"
20216 }, function(e, a) {
20217 k.fn[e] = function(e) {
20218 for (var t, n = [], r = k(e), i = r.length - 1, o = 0; o <= i; o++) t = o === i ? this : this.clone(!0), k(r[o])[a](t), l.apply(n, t.get());
20219 return this.pushStack(n)
20222 var Le = new RegExp("^(" + ee + ")(?!px)[a-z%]+$", "i"),
20224 var t = e.ownerDocument.defaultView;
20225 return t && t.opener || (t = E), t.getComputedStyle(e)
20227 qe = new RegExp(ne.join("|"), "i");
20229 function Ue(e, t, n) {
20230 var r, i, o, a, s = e.style;
20231 return (n = n || Fe(e)) && ("" !== (a = n.getPropertyValue(t) || n[t]) || ie(e) || (a = k.style(e, t)), !v.pixelBoxStyles() && Le.test(a) && qe.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
20234 function Ve(e, t) {
20237 if (!e()) return (this.get = t).apply(this, arguments);
20244 s.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(s).appendChild(l);
20245 var e = E.getComputedStyle(l);
20246 n = "1%" !== e.top, a = 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(s), l = null
20251 return Math.round(parseFloat(e))
20253 var n, r, i, o, a, s = C.createElement("div"),
20254 l = C.createElement("div");
20255 l.style && (l.style.backgroundClip = "content-box", l.cloneNode(!0).style.backgroundClip = "", v.clearCloneStyle = "content-box" === l.style.backgroundClip, k.extend(v, {
20256 boxSizingReliable: function() {
20259 pixelBoxStyles: function() {
20262 pixelPosition: function() {
20265 reliableMarginLeft: function() {
20268 scrollboxSize: function() {
20273 var Be = ["Webkit", "Moz", "ms"],
20274 ze = C.createElement("div").style,
20278 var t = k.cssProps[e] || We[e];
20279 return t || (e in ze ? e : We[e] = function(e) {
20280 for (var t = e[0].toUpperCase() + e.slice(1), n = Be.length; n--;)
20281 if ((e = Be[n] + t) in ze) return e
20284 var Ge = /^(none|table(?!-c[ea]).+)/,
20287 position: "absolute",
20288 visibility: "hidden",
20292 letterSpacing: "0",
20296 function Qe(e, t, n) {
20297 var r = te.exec(t);
20298 return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : t
20301 function Je(e, t, n, r, i, o) {
20302 var a = "width" === t ? 1 : 0,
20305 if (n === (r ? "border" : "content")) return 0;
20306 for (; a < 4; a += 2) "margin" === n && (l += k.css(e, n + ne[a], !0, i)), r ? ("content" === n && (l -= k.css(e, "padding" + ne[a], !0, i)), "margin" !== n && (l -= k.css(e, "border" + ne[a] + "Width", !0, i))) : (l += k.css(e, "padding" + ne[a], !0, i), "padding" !== n ? l += k.css(e, "border" + ne[a] + "Width", !0, i) : s += k.css(e, "border" + ne[a] + "Width", !0, i));
20307 return !r && 0 <= o && (l += Math.max(0, Math.ceil(e["offset" + t[0].toUpperCase() + t.slice(1)] - o - l - s - .5)) || 0), l
20310 function et(e, t, n) {
20312 i = (!v.boxSizingReliable() || n) && "border-box" === k.css(e, "boxSizing", !1, r),
20315 s = "offset" + t[0].toUpperCase() + t.slice(1);
20320 return (!v.boxSizingReliable() && i || "auto" === a || !parseFloat(a) && "inline" === k.css(e, "display", !1, r)) && e.getClientRects().length && (i = "border-box" === k.css(e, "boxSizing", !1, r), (o = s in e) && (a = e[s])), (a = parseFloat(a) || 0) + Je(e, t, n || (i ? "border" : "content"), o, r, a) + "px"
20323 function tt(e, t, n, r, i) {
20324 return new tt.prototype.init(e, t, n, r, i)
20329 get: function(e, t) {
20331 var n = Ue(e, "opacity");
20332 return "" === n ? "1" : n
20338 animationIterationCount: !0,
20347 gridColumnStart: !0,
20360 style: function(e, t, n, r) {
20361 if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
20362 var i, o, a, s = W(t),
20365 if (l || (t = Ye(s)), a = k.cssHooks[t] || k.cssHooks[s], void 0 === n) return a && "get" in a && void 0 !== (i = a.get(e, !1, r)) ? i : c[t];
20366 "string" === (o = typeof n) && (i = te.exec(n)) && i[1] && (n = le(e, t, i), o = "number"), null != n && n == n && ("number" !== o || l || (n += i && i[3] || (k.cssNumber[s] ? "" : "px")), v.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (c[t] = "inherit"), a && "set" in a && void 0 === (n = a.set(e, n, r)) || (l ? c.setProperty(t, n) : c[t] = n))
20369 css: function(e, t, n, r) {
20370 var i, o, a, s = W(t);
20371 return Ke.test(t) || (t = Ye(s)), (a = k.cssHooks[t] || k.cssHooks[s]) && "get" in a && (i = a.get(e, !0, n)), void 0 === i && (i = Ue(e, t, r)), "normal" === i && t in Xe && (i = Xe[t]), "" === n || n ? (o = parseFloat(i), !0 === n || isFinite(o) ? o || 0 : i) : i
20373 }), k.each(["height", "width"], function(e, l) {
20375 get: function(e, t, n) {
20376 if (t) return !Ge.test(k.css(e, "display")) || e.getClientRects().length && e.getBoundingClientRect().width ? et(e, l, n) : se(e, Ze, function() {
20380 set: function(e, t, n) {
20382 o = !v.scrollboxSize() && "absolute" === i.position,
20383 a = (o || n) && "border-box" === k.css(e, "boxSizing", !1, i),
20384 s = n ? Je(e, l, n, a, i) : 0;
20385 return a && o && (s -= Math.ceil(e["offset" + l[0].toUpperCase() + l.slice(1)] - parseFloat(i[l]) - Je(e, l, "border", !1, i) - .5)), s && (r = te.exec(t)) && "px" !== (r[3] || "px") && (e.style[l] = t, t = k.css(e, l)), Qe(0, t, s)
20388 }), k.cssHooks.marginLeft = Ve(v.reliableMarginLeft, function(e, t) {
20389 if (t) return (parseFloat(Ue(e, "marginLeft")) || e.getBoundingClientRect().left - se(e, {
20392 return e.getBoundingClientRect().left
20398 }, function(i, o) {
20399 k.cssHooks[i + o] = {
20400 expand: function(e) {
20401 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];
20404 }, "margin" !== i && (k.cssHooks[i + o].set = Qe)
20406 css: function(e, t) {
20407 return U(this, function(e, t, n) {
20410 if (Array.isArray(t)) {
20411 for (r = Fe(e), i = t.length; a < i; a++) o[t[a]] = k.css(e, t[a], !1, r);
20414 return void 0 !== n ? k.style(e, t, n) : k.css(e, t)
20415 }, e, t, 1 < arguments.length)
20417 }), ((k.Tween = tt).prototype = {
20419 init: function(e, t, n, r, i, o) {
20420 this.elem = e, this.prop = n, this.easing = i || k.easing._default, this.options = t, this.start = this.now = this.cur(), this.end = r, this.unit = o || (k.cssNumber[n] ? "" : "px")
20423 var e = tt.propHooks[this.prop];
20424 return e && e.get ? e.get(this) : tt.propHooks._default.get(this)
20427 var t, n = tt.propHooks[this.prop];
20428 return this.options.duration ? this.pos = t = k.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) : tt.propHooks._default.set(this), this
20430 }).init.prototype = tt.prototype, (tt.propHooks = {
20434 return 1 !== e.elem.nodeType || null != e.elem[e.prop] && null == e.elem.style[e.prop] ? e.elem[e.prop] : (t = k.css(e.elem, e.prop, "")) && "auto" !== t ? t : 0
20437 k.fx.step[e.prop] ? k.fx.step[e.prop](e) : 1 !== e.elem.nodeType || !k.cssHooks[e.prop] && null == e.elem.style[Ye(e.prop)] ? e.elem[e.prop] = e.now : k.style(e.elem, e.prop, e.now + e.unit)
20440 }).scrollTop = tt.propHooks.scrollLeft = {
20442 e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
20445 linear: function(e) {
20448 swing: function(e) {
20449 return .5 - Math.cos(e * Math.PI) / 2
20452 }, k.fx = tt.prototype.init, k.fx.step = {};
20453 var nt, rt, it, ot, at = /^(?:toggle|show|hide)$/,
20454 st = /queueHooks$/;
20457 rt && (!1 === C.hidden && E.requestAnimationFrame ? E.requestAnimationFrame(lt) : E.setTimeout(lt, k.fx.interval), k.fx.tick())
20461 return E.setTimeout(function() {
20463 }), nt = Date.now()
20466 function ut(e, t) {
20471 for (t = t ? 1 : 0; r < 4; r += 2 - t) i["margin" + (n = ne[r])] = i["padding" + n] = e;
20472 return t && (i.opacity = i.width = e), i
20475 function dt(e, t, n) {
20476 for (var r, i = (ft.tweeners[t] || []).concat(ft.tweeners["*"]), o = 0, a = i.length; o < a; o++)
20477 if (r = i[o].call(n, t, e)) return r
20480 function ft(o, e, t) {
20482 i = ft.prefilters.length,
20483 s = k.Deferred().always(function() {
20488 for (var e = nt || ct(), t = Math.max(0, c.startTime + c.duration - e), n = 1 - (t / c.duration || 0), r = 0, i = c.tweens.length; r < i; r++) c.tweens[r].run(n);
20489 return s.notifyWith(o, [c, n, t]), n < 1 && i ? t : (i || s.notifyWith(o, [c, 1, 0]), s.resolveWith(o, [c]), !1)
20493 props: k.extend({}, e),
20494 opts: k.extend(!0, {
20496 easing: k.easing._default
20498 originalProperties: e,
20499 originalOptions: t,
20500 startTime: nt || ct(),
20501 duration: t.duration,
20503 createTween: function(e, t) {
20504 var n = k.Tween(o, c.opts, e, t, c.opts.specialEasing[e] || c.opts.easing);
20505 return c.tweens.push(n), n
20507 stop: function(e) {
20509 n = e ? c.tweens.length : 0;
20510 if (a) return this;
20511 for (a = !0; t < n; t++) c.tweens[t].run(1);
20512 return e ? (s.notifyWith(o, [c, 1, 0]), s.resolveWith(o, [c, e])) : s.rejectWith(o, [c, e]), this
20516 for (! function(e, t) {
20519 if (i = t[r = W(n)], o = e[n], Array.isArray(o) && (i = o[1], o = e[n] = o[0]), n !== r && (e[r] = o, delete e[n]), (a = k.cssHooks[r]) && "expand" in a)
20520 for (n in o = a.expand(o), delete e[r], o) n in e || (e[n] = o[n], t[n] = i);
20522 }(u, c.opts.specialEasing); r < i; r++)
20523 if (n = ft.prefilters[r].call(c, o, u, c.opts)) return b(n.stop) && (k._queueHooks(c.elem, c.opts.queue).stop = n.stop.bind(n)), n;
20524 return k.map(u, dt, c), b(c.opts.start) && c.opts.start.call(o, c), c.progress(c.opts.progress).done(c.opts.done, c.opts.complete).fail(c.opts.fail).always(c.opts.always), k.fx.timer(k.extend(l, {
20527 queue: c.opts.queue
20530 k.Animation = k.extend(ft, {
20532 "*": [function(e, t) {
20533 var n = this.createTween(e, t);
20534 return le(n.elem, e, te.exec(t), n), n
20537 tweener: function(e, t) {
20538 for (var n, r = 0, i = (e = b(e) ? (t = e, ["*"]) : e.match(R)).length; r < i; r++) n = e[r], ft.tweeners[n] = ft.tweeners[n] || [], ft.tweeners[n].unshift(t)
20540 prefilters: [function(e, t, n) {
20541 var r, i, o, a, s, l, c, u, d = "width" in t || "height" in t,
20545 m = e.nodeType && ae(e),
20546 g = K.get(e, "fxshow");
20547 for (r in n.queue || (null == (a = k._queueHooks(e, "fx")).unqueued && (a.unqueued = 0, s = a.empty.fire, a.empty.fire = function() {
20549 }), a.unqueued++, f.always(function() {
20550 f.always(function() {
20551 a.unqueued--, k.queue(e, "fx").length || a.empty.fire()
20554 if (i = t[r], at.test(i)) {
20555 if (delete t[r], o = o || "toggle" === i, i === (m ? "hide" : "show")) {
20556 if ("show" !== i || !g || void 0 === g[r]) continue;
20559 h[r] = g && g[r] || k.style(e, r)
20560 } if ((l = !k.isEmptyObject(t)) || !k.isEmptyObject(h))
20561 for (r in d && 1 === e.nodeType && (n.overflow = [p.overflow, p.overflowX, p.overflowY], null == (c = g && g.display) && (c = K.get(e, "display")), "none" === (u = k.css(e, "display")) && (c ? u = c : (ue([e], !0), c = e.style.display || c, u = k.css(e, "display"), ue([e]))), ("inline" === u || "inline-block" === u && null != c) && "none" === k.css(e, "float") && (l || (f.done(function() {
20563 }), null == c && (u = p.display, c = "none" === u ? "" : u)), p.display = "inline-block")), n.overflow && (p.overflow = "hidden", f.always(function() {
20564 p.overflow = n.overflow[0], p.overflowX = n.overflow[1], p.overflowY = n.overflow[2]
20565 })), l = !1, h) l || (g ? "hidden" in g && (m = g.hidden) : g = K.access(e, "fxshow", {
20567 }), o && (g.hidden = !m), m && ue([e], !0), f.done(function() {
20568 for (r in m || ue([e]), K.remove(e, "fxshow"), h) k.style(e, r, h[r])
20569 })), l = dt(m ? g[r] : 0, r, f), r in g || (g[r] = l.start, m && (l.end = l.start, l.start = 0))
20571 prefilter: function(e, t) {
20572 t ? ft.prefilters.unshift(e) : ft.prefilters.push(e)
20574 }), k.speed = function(e, t, n) {
20575 var r = e && "object" == typeof e ? k.extend({}, e) : {
20576 complete: n || !n && t || b(e) && e,
20578 easing: n && t || t && !b(t) && t
20580 return k.fx.off ? r.duration = 0 : "number" != typeof r.duration && (r.duration in k.fx.speeds ? r.duration = k.fx.speeds[r.duration] : r.duration = k.fx.speeds._default), null != r.queue && !0 !== r.queue || (r.queue = "fx"), r.old = r.complete, r.complete = function() {
20581 b(r.old) && r.old.call(this), r.queue && k.dequeue(this, r.queue)
20584 fadeTo: function(e, t, n, r) {
20585 return this.filter(ae).css("opacity", 0).show().end().animate({
20589 animate: function(t, e, n, r) {
20590 var i = k.isEmptyObject(t),
20591 o = k.speed(e, n, r),
20593 var e = ft(this, k.extend({}, t), o);
20594 (i || K.get(this, "finish")) && e.stop(!0)
20596 return a.finish = a, i || !1 === o.queue ? this.each(a) : this.queue(o.queue, a)
20598 stop: function(i, e, o) {
20599 var a = function(e) {
20601 delete e.stop, t(o)
20603 return "string" != typeof i && (o = e, e = i, i = void 0), e && !1 !== i && this.queue(i || "fx", []), this.each(function() {
20605 t = null != i && i + "queueHooks",
20608 if (t) r[t] && r[t].stop && a(r[t]);
20610 for (t in r) r[t] && r[t].stop && st.test(t) && a(r[t]);
20611 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));
20612 !e && o || k.dequeue(this, i)
20615 finish: function(a) {
20616 return !1 !== a && (a = a || "fx"), this.each(function() {
20617 var e, t = K.get(this),
20618 n = t[a + "queue"],
20619 r = t[a + "queueHooks"],
20621 o = n ? n.length : 0;
20622 for (t.finish = !0, k.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));
20623 for (e = 0; e < o; e++) n[e] && n[e].finish && n[e].finish.call(this);
20627 }), k.each(["toggle", "show", "hide"], function(e, r) {
20629 k.fn[r] = function(e, t, n) {
20630 return null == e || "boolean" == typeof e ? i.apply(this, arguments) : this.animate(ut(r, !0), e, t, n)
20633 slideDown: ut("show"),
20634 slideUp: ut("hide"),
20635 slideToggle: ut("toggle"),
20645 }, function(e, r) {
20646 k.fn[e] = function(e, t, n) {
20647 return this.animate(r, e, t, n)
20649 }), k.timers = [], k.fx.tick = function() {
20652 for (nt = Date.now(); t < n.length; t++)(e = n[t])() || n[t] !== e || n.splice(t--, 1);
20653 n.length || k.fx.stop(), nt = void 0
20654 }, k.fx.timer = function(e) {
20655 k.timers.push(e), k.fx.start()
20656 }, k.fx.interval = 13, k.fx.start = function() {
20657 rt || (rt = !0, lt())
20658 }, k.fx.stop = function() {
20664 }, k.fn.delay = function(r, e) {
20665 return r = k.fx && k.fx.speeds[r] || r, e = e || "fx", this.queue(e, function(e, t) {
20666 var n = E.setTimeout(e, r);
20667 t.stop = function() {
20671 }, it = C.createElement("input"), ot = C.createElement("select").appendChild(C.createElement("option")), it.type = "checkbox", v.checkOn = "" !== it.value, v.optSelected = ot.selected, (it = C.createElement("input")).value = "t", it.type = "radio", v.radioValue = "t" === it.value;
20672 var ht, pt = k.expr.attrHandle;
20674 attr: function(e, t) {
20675 return U(this, k.attr, e, t, 1 < arguments.length)
20677 removeAttr: function(e) {
20678 return this.each(function() {
20679 k.removeAttr(this, e)
20683 attr: function(e, t, n) {
20684 var r, i, o = e.nodeType;
20685 if (3 !== o && 8 !== o && 2 !== o) return void 0 === e.getAttribute ? k.prop(e, t, n) : (1 === o && k.isXMLDoc(e) || (i = k.attrHooks[t.toLowerCase()] || (k.expr.match.bool.test(t) ? ht : void 0)), void 0 !== n ? null === n ? void k.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 = k.find.attr(e, t)) ? void 0 : r)
20689 set: function(e, t) {
20690 if (!v.radioValue && "radio" === t && T(e, "input")) {
20692 return e.setAttribute("type", t), n && (e.value = n), t
20697 removeAttr: function(e, t) {
20699 i = t && t.match(R);
20700 if (i && 1 === e.nodeType)
20701 for (; n = i[r++];) e.removeAttribute(n)
20704 set: function(e, t, n) {
20705 return !1 === t ? k.removeAttr(e, n) : e.setAttribute(n, n), n
20707 }, k.each(k.expr.match.bool.source.match(/\w+/g), function(e, t) {
20708 var a = pt[t] || k.find.attr;
20709 pt[t] = function(e, t, n) {
20710 var r, i, o = t.toLowerCase();
20711 return n || (i = pt[o], pt[o] = r, r = null != a(e, t, n) ? o : null, pt[o] = i), r
20714 var mt = /^(?:input|select|textarea|button)$/i,
20715 gt = /^(?:a|area)$/i;
20718 return (e.match(R) || []).join(" ")
20722 return e.getAttribute && e.getAttribute("class") || ""
20726 return Array.isArray(e) ? e : "string" == typeof e && e.match(R) || []
20729 prop: function(e, t) {
20730 return U(this, k.prop, e, t, 1 < arguments.length)
20732 removeProp: function(e) {
20733 return this.each(function() {
20734 delete this[k.propFix[e] || e]
20738 prop: function(e, t, n) {
20739 var r, i, o = e.nodeType;
20740 if (3 !== o && 8 !== o && 2 !== o) return 1 === o && k.isXMLDoc(e) || (t = k.propFix[t] || t, i = k.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]
20745 var t = k.find.attr(e, "tabindex");
20746 return t ? parseInt(t, 10) : mt.test(e.nodeName) || gt.test(e.nodeName) && e.href ? 0 : -1
20754 }), v.optSelected || (k.propHooks.selected = {
20756 var t = e.parentNode;
20757 return t && t.parentNode && t.parentNode.selectedIndex, null
20760 var t = e.parentNode;
20761 t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex)
20763 }), k.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function() {
20764 k.propFix[this.toLowerCase()] = this
20766 addClass: function(t) {
20767 var e, n, r, i, o, a, s, l = 0;
20768 if (b(t)) return this.each(function(e) {
20769 k(this).addClass(t.call(this, e, bt(this)))
20771 if ((e = yt(t)).length)
20772 for (; n = this[l++];)
20773 if (i = bt(n), r = 1 === n.nodeType && " " + vt(i) + " ") {
20774 for (a = 0; o = e[a++];) r.indexOf(" " + o + " ") < 0 && (r += o + " ");
20775 i !== (s = vt(r)) && n.setAttribute("class", s)
20778 removeClass: function(t) {
20779 var e, n, r, i, o, a, s, l = 0;
20780 if (b(t)) return this.each(function(e) {
20781 k(this).removeClass(t.call(this, e, bt(this)))
20783 if (!arguments.length) return this.attr("class", "");
20784 if ((e = yt(t)).length)
20785 for (; n = this[l++];)
20786 if (i = bt(n), r = 1 === n.nodeType && " " + vt(i) + " ") {
20787 for (a = 0; o = e[a++];)
20788 for (; - 1 < r.indexOf(" " + o + " ");) r = r.replace(" " + o + " ", " ");
20789 i !== (s = vt(r)) && n.setAttribute("class", s)
20792 toggleClass: function(i, t) {
20794 a = "string" === o || Array.isArray(i);
20795 return "boolean" == typeof t && a ? t ? this.addClass(i) : this.removeClass(i) : b(i) ? this.each(function(e) {
20796 k(this).toggleClass(i.call(this, e, bt(this), t), t)
20797 }) : this.each(function() {
20800 for (t = 0, n = k(this), r = yt(i); e = r[t++];) n.hasClass(e) ? n.removeClass(e) : n.addClass(e);
20801 else void 0 !== i && "boolean" !== o || ((e = bt(this)) && K.set(this, "__className__", e), this.setAttribute && this.setAttribute("class", e || !1 === i ? "" : K.get(this, "__className__") || ""))
20804 hasClass: function(e) {
20806 for (t = " " + e + " "; n = this[r++];)
20807 if (1 === n.nodeType && -1 < (" " + vt(bt(n)) + " ").indexOf(t)) return !0;
20814 var r, e, i, t = this[0];
20815 return arguments.length ? (i = b(n), this.each(function(e) {
20817 1 === this.nodeType && (null == (t = i ? n.call(this, e, k(this).val()) : n) ? t = "" : "number" == typeof t ? t += "" : Array.isArray(t) && (t = k.map(t, function(e) {
20818 return null == e ? "" : e + ""
20819 })), (r = k.valHooks[this.type] || k.valHooks[this.nodeName.toLowerCase()]) && "set" in r && void 0 !== r.set(this, t, "value") || (this.value = t))
20820 })) : t ? (r = k.valHooks[t.type] || k.valHooks[t.nodeName.toLowerCase()]) && "get" in r && void 0 !== (e = r.get(t, "value")) ? e : "string" == typeof(e = t.value) ? e.replace(_t, "") : null == e ? "" : e : void 0
20826 var t = k.find.attr(e, "value");
20827 return null != t ? t : vt(k.text(e))
20832 var t, n, r, i = e.options,
20833 o = e.selectedIndex,
20834 a = "select-one" === e.type,
20836 l = a ? o + 1 : i.length;
20837 for (r = o < 0 ? l : a ? o : 0; r < l; r++)
20838 if (((n = i[r]).selected || r === o) && !n.disabled && (!n.parentNode.disabled || !T(n.parentNode, "optgroup"))) {
20839 if (t = k(n).val(), a) return t;
20843 set: function(e, t) {
20844 for (var n, r, i = e.options, o = k.makeArray(t), a = i.length; a--;)((r = i[a]).selected = -1 < k.inArray(k.valHooks.option.get(r), o)) && (n = !0);
20845 return n || (e.selectedIndex = -1), o
20849 }), k.each(["radio", "checkbox"], function() {
20850 k.valHooks[this] = {
20851 set: function(e, t) {
20852 if (Array.isArray(t)) return e.checked = -1 < k.inArray(k(e).val(), t)
20854 }, v.checkOn || (k.valHooks[this].get = function(e) {
20855 return null === e.getAttribute("value") ? "on" : e.value
20857 }), v.focusin = "onfocusin" in E;
20858 var $t = /^(?:focusinfocus|focusoutblur)$/,
20860 e.stopPropagation()
20862 k.extend(k.event, {
20863 trigger: function(e, t, n, r) {
20864 var i, o, a, s, l, c, u, d, f = [n || C],
20865 h = g.call(e, "type") ? e.type : e,
20866 p = g.call(e, "namespace") ? e.namespace.split(".") : [];
20867 if (o = d = a = n = n || C, 3 !== n.nodeType && 8 !== n.nodeType && !$t.test(h + k.event.triggered) && (-1 < h.indexOf(".") && (h = (p = h.split(".")).shift(), p.sort()), l = h.indexOf(":") < 0 && "on" + h, (e = e[k.expando] ? e : new k.Event(h, "object" == typeof e && e)).isTrigger = r ? 2 : 3, e.namespace = p.join("."), e.rnamespace = e.namespace ? new RegExp("(^|\\.)" + p.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, e.result = void 0, e.target || (e.target = n), t = null == t ? [e] : k.makeArray(t, [e]), u = k.event.special[h] || {}, r || !u.trigger || !1 !== u.trigger.apply(n, t))) {
20868 if (!r && !u.noBubble && !y(n)) {
20869 for (s = u.delegateType || h, $t.test(s + h) || (o = o.parentNode); o; o = o.parentNode) f.push(o), a = o;
20870 a === (n.ownerDocument || C) && f.push(a.defaultView || a.parentWindow || E)
20873 (o = f[i++]) && !e.isPropagationStopped();) d = o, e.type = 1 < i ? s : u.bindType || h, (c = (K.get(o, "events") || {})[e.type] && K.get(o, "handle")) && c.apply(o, t), (c = l && o[l]) && c.apply && Y(o) && (e.result = c.apply(o, t), !1 === e.result && e.preventDefault());
20874 return e.type = h, r || e.isDefaultPrevented() || u._default && !1 !== u._default.apply(f.pop(), t) || !Y(n) || l && b(n[h]) && !y(n) && ((a = n[l]) && (n[l] = null), k.event.triggered = h, e.isPropagationStopped() && d.addEventListener(h, wt), n[h](), e.isPropagationStopped() && d.removeEventListener(h, wt), k.event.triggered = void 0, a && (n[l] = a)), e.result
20877 simulate: function(e, t, n) {
20878 var r = k.extend(new k.Event, n, {
20882 k.event.trigger(r, null, t)
20885 trigger: function(e, t) {
20886 return this.each(function() {
20887 k.event.trigger(e, t, this)
20890 triggerHandler: function(e, t) {
20892 if (n) return k.event.trigger(e, t, n, !0)
20894 }), v.focusin || k.each({
20897 }, function(n, r) {
20898 var i = function(e) {
20899 k.event.simulate(r, e.target, k.event.fix(e))
20901 k.event.special[r] = {
20902 setup: function() {
20903 var e = this.ownerDocument || this,
20904 t = K.access(e, r);
20905 t || e.addEventListener(n, i, !0), K.access(e, r, (t || 0) + 1)
20907 teardown: function() {
20908 var e = this.ownerDocument || this,
20909 t = K.access(e, r) - 1;
20910 t ? K.access(e, r, t) : (e.removeEventListener(n, i, !0), K.remove(e, r))
20914 var Et = E.location,
20917 k.parseXML = function(e) {
20919 if (!e || "string" != typeof e) return null;
20921 t = (new E.DOMParser).parseFromString(e, "text/xml")
20925 return t && !t.getElementsByTagName("parsererror").length || k.error("Invalid XML: " + e), t
20929 Mt = /^(?:submit|button|image|reset|file)$/i,
20930 At = /^(?:input|select|textarea|keygen)/i;
20932 function St(n, e, r, i) {
20934 if (Array.isArray(e)) k.each(e, function(e, t) {
20935 r || xt.test(n) ? i(n, t) : St(n + "[" + ("object" == typeof t && null != t ? e : "") + "]", t, r, i)
20937 else if (r || "object" !== $(e)) i(n, e);
20939 for (t in e) St(n + "[" + t + "]", e[t], r, i)
20941 k.param = function(e, t) {
20943 i = function(e, t) {
20944 var n = b(t) ? t() : t;
20945 r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(null == n ? "" : n)
20947 if (null == e) return "";
20948 if (Array.isArray(e) || e.jquery && !k.isPlainObject(e)) k.each(e, function() {
20949 i(this.name, this.value)
20952 for (n in e) St(n, e[n], t, i);
20955 serialize: function() {
20956 return k.param(this.serializeArray())
20958 serializeArray: function() {
20959 return this.map(function() {
20960 var e = k.prop(this, "elements");
20961 return e ? k.makeArray(e) : this
20962 }).filter(function() {
20964 return this.name && !k(this).is(":disabled") && At.test(this.nodeName) && !Mt.test(e) && (this.checked || !de.test(e))
20965 }).map(function(e, t) {
20966 var n = k(this).val();
20967 return null == n ? null : Array.isArray(n) ? k.map(n, function(e) {
20970 value: e.replace(Tt, "\r\n")
20974 value: n.replace(Tt, "\r\n")
20981 Nt = /([?&])_=[^&]*/,
20982 It = /^(.*?):[ \t]*([^\r\n]*)$/gm,
20983 Rt = /^(?:GET|HEAD)$/,
20987 Lt = "*/".concat("*"),
20988 Ft = C.createElement("a");
20991 return function(e, t) {
20992 "string" != typeof e && (t = e, e = "*");
20994 i = e.toLowerCase().match(R) || [];
20996 for (; n = i[r++];) "+" === n[0] ? (n = n.slice(1) || "*", (o[n] = o[n] || []).unshift(t)) : (o[n] = o[n] || []).push(t)
21000 function Ut(t, i, o, a) {
21006 return s[e] = !0, k.each(t[e] || [], function(e, t) {
21007 var n = t(i, o, a);
21008 return "string" != typeof n || l || s[n] ? l ? !(r = n) : void 0 : (i.dataTypes.unshift(n), c(n), !1)
21011 return c(i.dataTypes[0]) || !s["*"] && c("*")
21014 function Vt(e, t) {
21015 var n, r, i = k.ajaxSettings.flatOptions || {};
21016 for (n in t) void 0 !== t[n] && ((i[n] ? e : r || (r = {}))[n] = t[n]);
21017 return r && k.extend(!0, e, r), e
21019 Ft.href = Et.href, k.extend({
21026 isLocal: /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),
21030 contentType: "application/x-www-form-urlencoded; charset=UTF-8",
21033 text: "text/plain",
21035 xml: "application/xml, text/xml",
21036 json: "application/json, text/javascript"
21044 xml: "responseXML",
21045 text: "responseText",
21046 json: "responseJSON"
21051 "text json": JSON.parse,
21052 "text xml": k.parseXML
21059 ajaxSetup: function(e, t) {
21060 return t ? Vt(Vt(e, k.ajaxSettings), t) : Vt(k.ajaxSettings, e)
21062 ajaxPrefilter: qt(Ht),
21063 ajaxTransport: qt(jt),
21064 ajax: function(e, t) {
21065 "object" == typeof e && (t = e, e = void 0), t = t || {};
21066 var u, d, f, n, h, r, p, m, i, o, g = k.ajaxSetup({}, t),
21067 v = g.context || g,
21068 b = g.context && (v.nodeType || v.jquery) ? k(v) : k.event,
21070 _ = k.Callbacks("once memory"),
21071 $ = g.statusCode || {},
21077 getResponseHeader: function(e) {
21081 for (n = {}; t = It.exec(f);) n[t[1].toLowerCase() + " "] = (n[t[1].toLowerCase() + " "] || []).concat(t[2]);
21082 t = n[e.toLowerCase() + " "]
21084 return null == t ? null : t.join(", ")
21086 getAllResponseHeaders: function() {
21087 return p ? f : null
21089 setRequestHeader: function(e, t) {
21090 return null == p && (e = s[e.toLowerCase()] = s[e.toLowerCase()] || e, a[e] = t), this
21092 overrideMimeType: function(e) {
21093 return null == p && (g.mimeType = e), this
21095 statusCode: function(e) {
21098 if (p) w.always(e[w.status]);
21100 for (t in e) $[t] = [$[t], e[t]];
21103 abort: function(e) {
21105 return u && u.abort(t), c(0, t), this
21108 if (y.promise(w), g.url = ((e || g.url || Et.href) + "").replace(Pt, Et.protocol + "//"), g.type = t.method || t.type || g.method || g.type, g.dataTypes = (g.dataType || "*").toLowerCase().match(R) || [""], null == g.crossDomain) {
21109 r = C.createElement("a");
21111 r.href = g.url, r.href = r.href, g.crossDomain = Ft.protocol + "//" + Ft.host != r.protocol + "//" + r.host
21116 if (g.data && g.processData && "string" != typeof g.data && (g.data = k.param(g.data, g.traditional)), Ut(Ht, g, t, w), p) return w;
21117 for (i in (m = k.event && g.global) && 0 == k.active++ && k.event.trigger("ajaxStart"), g.type = g.type.toUpperCase(), g.hasContent = !Rt.test(g.type), d = g.url.replace(Ot, ""), g.hasContent ? g.data && g.processData && 0 === (g.contentType || "").indexOf("application/x-www-form-urlencoded") && (g.data = g.data.replace(Dt, "+")) : (o = g.url.slice(d.length), g.data && (g.processData || "string" == typeof g.data) && (d += (kt.test(d) ? "&" : "?") + g.data, delete g.data), !1 === g.cache && (d = d.replace(Nt, "$1"), o = (kt.test(d) ? "&" : "?") + "_=" + Ct++ + o), g.url = d + o), g.ifModified && (k.lastModified[d] && w.setRequestHeader("If-Modified-Since", k.lastModified[d]), k.etag[d] && w.setRequestHeader("If-None-Match", k.etag[d])), (g.data && g.hasContent && !1 !== g.contentType || t.contentType) && w.setRequestHeader("Content-Type", g.contentType), w.setRequestHeader("Accept", g.dataTypes[0] && g.accepts[g.dataTypes[0]] ? g.accepts[g.dataTypes[0]] + ("*" !== g.dataTypes[0] ? ", " + Lt + "; q=0.01" : "") : g.accepts["*"]), g.headers) w.setRequestHeader(i, g.headers[i]);
21118 if (g.beforeSend && (!1 === g.beforeSend.call(v, w, g) || p)) return w.abort();
21119 if (l = "abort", _.add(g.complete), w.done(g.success), w.fail(g.error), u = Ut(jt, g, t, w)) {
21120 if (w.readyState = 1, m && b.trigger("ajaxSend", [w, g]), p) return w;
21121 g.async && 0 < g.timeout && (h = E.setTimeout(function() {
21125 p = !1, u.send(a, c)
21130 } else c(-1, "No Transport");
21132 function c(e, t, n, r) {
21133 var i, o, a, s, l, c = t;
21134 p || (p = !0, h && E.clearTimeout(h), u = void 0, f = r || "", w.readyState = 0 < e ? 4 : 0, i = 200 <= e && e < 300 || 304 === e, n && (s = function(e, t, n) {
21135 for (var r, i, o, a, s = e.contents, l = e.dataTypes;
21136 "*" === l[0];) l.shift(), void 0 === r && (r = e.mimeType || t.getResponseHeader("Content-Type"));
21139 if (s[i] && s[i].test(r)) {
21142 } if (l[0] in n) o = l[0];
21145 if (!l[0] || e.converters[i + " " + l[0]]) {
21153 if (o) return o !== l[0] && l.unshift(o), n[o]
21154 }(g, w, n)), s = function(e, t, n, r) {
21155 var i, o, a, s, l, c = {},
21156 u = e.dataTypes.slice();
21158 for (a in e.converters) c[a.toLowerCase()] = e.converters[a];
21159 for (o = u.shift(); o;)
21160 if (e.responseFields[o] && (n[e.responseFields[o]] = t), !l && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)), l = o, o = u.shift())
21161 if ("*" === o) o = l;
21162 else if ("*" !== l && l !== o) {
21163 if (!(a = c[l + " " + o] || c["* " + o]))
21165 if ((s = i.split(" "))[1] === o && (a = c[l + " " + s[0]] || c["* " + s[0]])) {
21166 !0 === a ? a = c[i] : !0 !== c[i] && (o = s[0], u.unshift(s[1]));
21169 if (a && e.throws) t = a(t);
21174 state: "parsererror",
21175 error: a ? e : "No conversion from " + l + " to " + o
21183 }(g, s, w, i), i ? (g.ifModified && ((l = w.getResponseHeader("Last-Modified")) && (k.lastModified[d] = l), (l = w.getResponseHeader("etag")) && (k.etag[d] = l)), 204 === e || "HEAD" === g.type ? c = "nocontent" : 304 === e ? c = "notmodified" : (c = s.state, o = s.data, i = !(a = s.error))) : (a = c, !e && c || (c = "error", e < 0 && (e = 0))), w.status = e, w.statusText = (t || c) + "", i ? y.resolveWith(v, [o, c, w]) : y.rejectWith(v, [w, c, a]), w.statusCode($), $ = void 0, m && b.trigger(i ? "ajaxSuccess" : "ajaxError", [w, g, i ? o : a]), _.fireWith(v, [w, c]), m && (b.trigger("ajaxComplete", [w, g]), --k.active || k.event.trigger("ajaxStop")))
21187 getJSON: function(e, t, n) {
21188 return k.get(e, t, n, "json")
21190 getScript: function(e, t) {
21191 return k.get(e, void 0, t, "script")
21193 }), k.each(["get", "post"], function(e, i) {
21194 k[i] = function(e, t, n, r) {
21195 return b(t) && (r = r || n, n = t, t = void 0), k.ajax(k.extend({
21201 }, k.isPlainObject(e) && e))
21203 }), k._evalUrl = function(e, t) {
21207 dataType: "script",
21212 "text script": function() {}
21214 dataFilter: function(e) {
21219 wrapAll: function(e) {
21221 return this[0] && (b(e) && (e = e.call(this[0])), t = k(e, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && t.insertBefore(this[0]), t.map(function() {
21222 for (var e = this; e.firstElementChild;) e = e.firstElementChild;
21224 }).append(this)), this
21226 wrapInner: function(n) {
21227 return b(n) ? this.each(function(e) {
21228 k(this).wrapInner(n.call(this, e))
21229 }) : this.each(function() {
21232 t.length ? t.wrapAll(n) : e.append(n)
21235 wrap: function(t) {
21237 return this.each(function(e) {
21238 k(this).wrapAll(n ? t.call(this, e) : t)
21241 unwrap: function(e) {
21242 return this.parent(e).not("body").each(function() {
21243 k(this).replaceWith(this.childNodes)
21246 }), k.expr.pseudos.hidden = function(e) {
21247 return !k.expr.pseudos.visible(e)
21248 }, k.expr.pseudos.visible = function(e) {
21249 return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length)
21250 }, k.ajaxSettings.xhr = function() {
21252 return new E.XMLHttpRequest
21259 zt = k.ajaxSettings.xhr();
21260 v.cors = !!zt && "withCredentials" in zt, v.ajax = zt = !!zt, k.ajaxTransport(function(i) {
21262 if (v.cors || zt && !i.crossDomain) return {
21263 send: function(e, t) {
21264 var n, r = i.xhr();
21265 if (r.open(i.type, i.url, i.async, i.username, i.password), i.xhrFields)
21266 for (n in i.xhrFields) r[n] = i.xhrFields[n];
21267 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]);
21269 return function() {
21270 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 ? {
21273 text: r.responseText
21274 }, r.getAllResponseHeaders()))
21276 }, r.onload = o(), a = r.onerror = r.ontimeout = o("error"), void 0 !== r.onabort ? r.onabort = a : r.onreadystatechange = function() {
21277 4 === r.readyState && E.setTimeout(function() {
21282 r.send(i.hasContent && i.data || null)
21287 abort: function() {
21291 }), k.ajaxPrefilter(function(e) {
21292 e.crossDomain && (e.contents.script = !1)
21295 script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
21298 script: /\b(?:java|ecma)script\b/
21301 "text script": function(e) {
21302 return k.globalEval(e), e
21305 }), k.ajaxPrefilter("script", function(e) {
21306 void 0 === e.cache && (e.cache = !1), e.crossDomain && (e.type = "GET")
21307 }), k.ajaxTransport("script", function(n) {
21309 if (n.crossDomain || n.scriptAttrs) return {
21310 send: function(e, t) {
21311 r = k("<script>").attr(n.scriptAttrs || {}).prop({
21312 charset: n.scriptCharset,
21314 }).on("load error", i = function(e) {
21315 r.remove(), i = null, e && t("error" === e.type ? 404 : 200, e.type)
21316 }), C.head.appendChild(r[0])
21318 abort: function() {
21324 Gt = /(=)\?(?=&|$)|\?\?/;
21327 jsonpCallback: function() {
21328 var e = Yt.pop() || k.expando + "_" + Ct++;
21329 return this[e] = !0, e
21331 }), k.ajaxPrefilter("json jsonp", function(e, t, n) {
21332 var r, i, o, a = !1 !== e.jsonp && (Gt.test(e.url) ? "url" : "string" == typeof e.data && 0 === (e.contentType || "").indexOf("application/x-www-form-urlencoded") && Gt.test(e.data) && "data");
21333 if (a || "jsonp" === e.dataTypes[0]) return r = e.jsonpCallback = b(e.jsonpCallback) ? e.jsonpCallback() : e.jsonpCallback, a ? e[a] = e[a].replace(Gt, "$1" + r) : !1 !== e.jsonp && (e.url += (kt.test(e.url) ? "&" : "?") + e.jsonp + "=" + r), e.converters["script json"] = function() {
21334 return o || k.error(r + " was not called"), o[0]
21335 }, e.dataTypes[0] = "json", i = E[r], E[r] = function() {
21337 }, n.always(function() {
21338 void 0 === i ? k(E).removeProp(r) : E[r] = i, e[r] && (e.jsonpCallback = t.jsonpCallback, Yt.push(r)), o && b(i) && i(o[0]), o = i = void 0
21340 }), v.createHTMLDocument = ((Wt = C.implementation.createHTMLDocument("").body).innerHTML = "<form></form><form></form>", 2 === Wt.childNodes.length), k.parseHTML = function(e, t, n) {
21341 return "string" != typeof e ? [] : ("boolean" == typeof t && (n = t, t = !1), t || (v.createHTMLDocument ? ((r = (t = C.implementation.createHTMLDocument("")).createElement("base")).href = C.location.href, t.head.appendChild(r)) : t = C), o = !n && [], (i = M.exec(e)) ? [t.createElement(i[1])] : (i = _e([e], t, o), o && o.length && k(o).remove(), k.merge([], i.childNodes)));
21343 }, k.fn.load = function(e, t, n) {
21344 var r, i, o, a = this,
21345 s = e.indexOf(" ");
21346 return -1 < s && (r = vt(e.slice(s)), e = e.slice(0, s)), b(t) ? (n = t, t = void 0) : t && "object" == typeof t && (i = "POST"), 0 < a.length && k.ajax({
21351 }).done(function(e) {
21352 o = arguments, a.html(r ? k("<div>").append(k.parseHTML(e)).find(r) : e)
21353 }).always(n && function(e, t) {
21354 a.each(function() {
21355 n.apply(this, o || [e.responseText, t, e])
21358 }, k.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(e, t) {
21359 k.fn[t] = function(e) {
21360 return this.on(t, e)
21362 }), k.expr.pseudos.animated = function(t) {
21363 return k.grep(k.timers, function(e) {
21364 return t === e.elem
21367 setOffset: function(e, t, n) {
21368 var r, i, o, a, s, l, c = k.css(e, "position"),
21371 "static" === c && (e.style.position = "relative"), s = u.offset(), o = k.css(e, "top"), l = k.css(e, "left"), i = ("absolute" === c || "fixed" === c) && -1 < (o + l).indexOf("auto") ? (a = (r = u.position()).top, r.left) : (a = parseFloat(o) || 0, parseFloat(l) || 0), b(t) && (t = t.call(e, n, k.extend({}, s))), null != t.top && (d.top = t.top - s.top + a), null != t.left && (d.left = t.left - s.left + i), "using" in t ? t.using.call(e, d) : u.css(d)
21374 offset: function(t) {
21375 if (arguments.length) return void 0 === t ? this : this.each(function(e) {
21376 k.offset.setOffset(this, t, e)
21378 var e, n, r = this[0];
21379 return r ? r.getClientRects().length ? (e = r.getBoundingClientRect(), n = r.ownerDocument.defaultView, {
21380 top: e.top + n.pageYOffset,
21381 left: e.left + n.pageXOffset
21387 position: function() {
21389 var e, t, n, r = this[0],
21394 if ("fixed" === k.css(r, "position")) t = r.getBoundingClientRect();
21396 for (t = this.offset(), n = r.ownerDocument, e = r.offsetParent || n.documentElement; e && (e === n.body || e === n.documentElement) && "static" === k.css(e, "position");) e = e.parentNode;
21397 e && e !== r && 1 === e.nodeType && ((i = k(e).offset()).top += k.css(e, "borderTopWidth", !0), i.left += k.css(e, "borderLeftWidth", !0))
21400 top: t.top - i.top - k.css(r, "marginTop", !0),
21401 left: t.left - i.left - k.css(r, "marginLeft", !0)
21405 offsetParent: function() {
21406 return this.map(function() {
21407 for (var e = this.offsetParent; e && "static" === k.css(e, "position");) e = e.offsetParent;
21412 scrollLeft: "pageXOffset",
21413 scrollTop: "pageYOffset"
21414 }, function(t, i) {
21415 var o = "pageYOffset" === i;
21416 k.fn[t] = function(e) {
21417 return U(this, function(e, t, n) {
21419 if (y(e) ? r = e : 9 === e.nodeType && (r = e.defaultView), void 0 === n) return r ? r[i] : e[t];
21420 r ? r.scrollTo(o ? r.pageXOffset : n, o ? n : r.pageYOffset) : e[t] = n
21421 }, t, e, arguments.length)
21423 }), k.each(["top", "left"], function(e, n) {
21424 k.cssHooks[n] = Ve(v.pixelPosition, function(e, t) {
21425 if (t) return t = Ue(e, n), Le.test(t) ? k(e).position()[n] + "px" : t
21430 }, function(a, s) {
21432 padding: "inner" + a,
21435 }, function(r, o) {
21436 k.fn[o] = function(e, t) {
21437 var n = arguments.length && (r || "boolean" != typeof e),
21438 i = r || (!0 === e || !0 === t ? "margin" : "border");
21439 return U(this, function(e, t, n) {
21441 return y(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 ? k.css(e, t, i) : k.style(e, t, n, i)
21442 }, s, n ? e : void 0, n)
21445 }), k.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) {
21446 k.fn[n] = function(e, t) {
21447 return 0 < arguments.length ? this.on(n, null, e, t) : this.trigger(n)
21450 hover: function(e, t) {
21451 return this.mouseenter(e).mouseleave(t || e)
21454 bind: function(e, t, n) {
21455 return this.on(e, null, t, n)
21457 unbind: function(e, t) {
21458 return this.off(e, null, t)
21460 delegate: function(e, t, n, r) {
21461 return this.on(t, e, n, r)
21463 undelegate: function(e, t, n) {
21464 return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n)
21466 }), k.proxy = function(e, t) {
21468 if ("string" == typeof t && (n = e[t], t = e, e = n), b(e)) return r = s.call(arguments, 2), (i = function() {
21469 return e.apply(t || this, r.concat(s.call(arguments)))
21470 }).guid = e.guid = e.guid || k.guid++, i
21471 }, k.holdReady = function(e) {
21472 e ? k.readyWait++ : k.ready(!0)
21473 }, k.isArray = Array.isArray, k.parseJSON = JSON.parse, k.nodeName = T, k.isFunction = b, k.isWindow = y, k.camelCase = W, k.type = $, k.now = Date.now, k.isNumeric = function(e) {
21475 return ("number" === t || "string" === t) && !isNaN(e - parseFloat(e))
21476 }, "function" == typeof define && define.amd && define("jquery", [], function() {
21481 return k.noConflict = function(e) {
21482 return E.$ === k && (E.$ = Zt), e && E.jQuery === k && (E.jQuery = Kt), k
21483 }, e || (E.jQuery = E.$ = k), k
21485 function(t, a, e) {
21488 var o = t.navigator.msPointerEnabled;
21490 on: function(e, t) {
21491 e = e.toLowerCase(), this.events.hasOwnProperty(e) || (this.events[e] = []), this.events[e].push(t)
21493 off: function(e, t) {
21495 void 0 !== e ? (e = e.toLowerCase(), void 0 !== t ? this.events.hasOwnProperty(e) && (n = this.events[e], r = t, -1 < (i = n.indexOf(r)) && n.splice(i, 1)) : delete this.events[e]) : this.events = {}
21497 fire: function(e, t) {
21498 t = Array.prototype.slice.call(arguments), e = e.toLowerCase();
21500 return this.events.hasOwnProperty(e) && f(this.events[e], function(e) {
21501 n = !1 === e.apply(this, t.slice(1)) || n
21502 }, this), "catchall" != e && (t.unshift("catchAll"), n = !1 === this.fire.apply(this, t) || n), !n
21504 webkitReadDataTransfer: function(e) {
21506 r = e.dataTransfer.items.length,
21510 e.relativePath = t.substring(1), n.push(e), a()
21518 0 == --r && t.addFiles(n, e)
21520 f(e.dataTransfer.items, function(e) {
21521 var t = e.webkitGetAsEntry();
21522 t ? t.isFile ? i(e.getAsFile(), t.fullPath) : function n(t) {
21523 t.readEntries(function(e) {
21524 e.length ? (r += e.length, f(e, function(e) {
21526 var t = e.fullPath;
21527 e.file(function(e) {
21530 } else e.isDirectory && n(e.createReader())
21533 }(t.createReader()) : a()
21536 generateUniqueIdentifier: function(e) {
21537 var t = this.opts.generateUniqueIdentifier;
21538 if ("function" == typeof t) return t(e);
21539 var n = e.relativePath || e.webkitRelativePath || e.fileName || e.name;
21540 return e.size + "-" + n.replace(/[^0-9a-zA-Z_-]/gim, "")
21542 uploadNextChunk: function(e) {
21544 if (this.opts.prioritizeFirstAndLastChunk && (f(this.files, function(e) {
21545 return !e.paused && e.chunks.length && "pending" === e.chunks[0].status() ? (e.chunks[0].send(), !(t = !0)) : !e.paused && 1 < e.chunks.length && "pending" === e.chunks[e.chunks.length - 1].status() ? (e.chunks[e.chunks.length - 1].send(), !(t = !0)) : void 0
21547 if (f(this.files, function(e) {
21548 if (e.paused || f(e.chunks, function(e) {
21549 if ("pending" === e.status()) return e.send(), !(t = !0)
21553 return f(this.files, function(e) {
21554 if (!e.isComplete()) return !(n = !0)
21555 }), n || e || u(function() {
21556 this.fire("complete")
21559 assignBrowse: function(e, r, i, o) {
21560 e instanceof Element && (e = [e]), f(e, function(e) {
21562 "INPUT" === e.tagName && "file" === e.type ? n = e : ((n = a.createElement("input")).setAttribute("type", "file"), d(n.style, {
21563 visibility: "hidden",
21564 position: "absolute",
21567 }), e.appendChild(n), e.addEventListener("click", function() {
21569 }, !1)), this.opts.singleFile || i || n.setAttribute("multiple", "multiple"), r && n.setAttribute("webkitdirectory", "webkitdirectory"), f(o, function(e, t) {
21570 n.setAttribute(t, e)
21573 n.addEventListener("change", function(e) {
21574 e.target.value && (t.addFiles(e.target.files, e), e.target.value = "")
21578 assignDrop: function(e) {
21579 void 0 === e.length && (e = [e]), f(e, function(e) {
21580 e.addEventListener("dragover", this.preventEvent, !1), e.addEventListener("dragenter", this.preventEvent, !1), e.addEventListener("drop", this.onDrop, !1)
21583 unAssignDrop: function(e) {
21584 void 0 === e.length && (e = [e]), f(e, function(e) {
21585 e.removeEventListener("dragover", this.preventEvent), e.removeEventListener("dragenter", this.preventEvent), e.removeEventListener("drop", this.onDrop)
21588 isUploading: function() {
21590 return f(this.files, function(e) {
21591 if (e.isUploading()) return !(t = !0)
21594 _shouldUploadNext: function() {
21597 r = this.opts.simultaneousUploads;
21598 return f(this.files, function(e) {
21599 f(e.chunks, function(e) {
21600 if ("uploading" === e.status() && r <= ++t) return n = !1
21604 upload: function() {
21605 var e = this._shouldUploadNext();
21607 this.fire("uploadStart");
21608 for (var t = !1, n = 1; n <= this.opts.simultaneousUploads - e; n++) t = this.uploadNextChunk(!0) || t;
21609 t || u(function() {
21610 this.fire("complete")
21614 resume: function() {
21615 f(this.files, function(e) {
21616 e.isComplete() || e.resume()
21619 pause: function() {
21620 f(this.files, function(e) {
21624 cancel: function() {
21625 for (var e = this.files.length - 1; 0 <= e; e--) this.files[e].cancel()
21627 progress: function() {
21630 return f(this.files, function(e) {
21631 t += e.progress() * e.size, n += e.size
21632 }), 0 < n ? t / n : 0
21634 addFile: function(e, t) {
21635 this.addFiles([e], t)
21637 addFiles: function(e, r) {
21640 if ((!o || o && 0 < e.size) && (e.size % 4096 != 0 || "." !== e.name && "." !== e.fileName)) {
21641 var t = this.generateUniqueIdentifier(e);
21642 if (this.opts.allowDuplicateUploads || !this.getFromUniqueIdentifier(t)) {
21643 var n = new s(this, e, t);
21644 this.fire("fileAdded", n, r) && i.push(n)
21647 }, this), this.fire("filesAdded", i, r) && (f(i, function(e) {
21648 this.opts.singleFile && 0 < this.files.length && this.removeFile(this.files[0]), this.files.push(e)
21649 }, this), this.fire("filesSubmitted", i, r))
21651 removeFile: function(e) {
21652 for (var t = this.files.length - 1; 0 <= t; t--) this.files[t] === e && (this.files.splice(t, 1), e.abort(), this.fire("fileRemoved", e))
21654 getFromUniqueIdentifier: function(t) {
21656 return f(this.files, function(e) {
21657 e.uniqueIdentifier === t && (n = e)
21660 getSize: function() {
21662 return f(this.files, function(e) {
21666 sizeUploaded: function() {
21668 return f(this.files, function(e) {
21669 t += e.sizeUploaded()
21672 timeRemaining: function() {
21675 return f(this.files, function(e) {
21676 e.paused || e.error || (t += e.size - e.sizeUploaded(), n += e.averageSpeed)
21677 }), t && !n ? Number.POSITIVE_INFINITY : t || n ? Math.floor(t / n) : 0
21680 measureSpeed: function() {
21681 var e = Date.now() - this._lastProgressCallback;
21683 var t = this.flowObj.opts.speedSmoothingFactor,
21684 n = this.sizeUploaded();
21685 this.currentSpeed = Math.max((n - this._prevUploadedSize) / e * 1e3, 0), this.averageSpeed = t * this.currentSpeed + (1 - t) * this.averageSpeed, this._prevUploadedSize = n
21688 chunkEvent: function(e, t, n) {
21691 if (Date.now() - this._lastProgressCallback < this.flowObj.opts.progressCallbacksInterval) break;
21692 this.measureSpeed(), this.flowObj.fire("fileProgress", this, e), this.flowObj.fire("progress"), this._lastProgressCallback = Date.now();
21695 this.error = !0, this.abort(!0), this.flowObj.fire("fileError", this, n, e), this.flowObj.fire("error", n, this, e);
21698 if (this.error) return;
21699 this.measureSpeed(), this.flowObj.fire("fileProgress", this, e), this.flowObj.fire("progress"), this._lastProgressCallback = Date.now(), this.isComplete() && (this.currentSpeed = 0, this.averageSpeed = 0, this.flowObj.fire("fileSuccess", this, n, e));
21702 this.flowObj.fire("fileRetry", this, e)
21705 pause: function() {
21706 this.paused = !0, this.abort()
21708 resume: function() {
21709 this.paused = !1, this.flowObj.upload()
21711 abort: function(e) {
21712 this.currentSpeed = 0, this.averageSpeed = 0;
21713 var t = this.chunks;
21714 e && (this.chunks = []), f(t, function(e) {
21715 "uploading" === e.status() && (e.abort(), this.flowObj.uploadNextChunk())
21718 cancel: function() {
21719 this.flowObj.removeFile(this)
21721 retry: function() {
21722 this.bootstrap(), this.flowObj.upload()
21724 bootstrap: function() {
21725 "function" == typeof this.flowObj.opts.initFileFn && this.flowObj.opts.initFileFn(this), this.abort(!0), this.error = !1, this._prevProgress = 0;
21726 for (var e = this.flowObj.opts.forceChunkSize ? Math.ceil : Math.floor, t = Math.max(e(this.size / this.flowObj.opts.chunkSize), 1), n = 0; n < t; n++) this.chunks.push(new l(this.flowObj, this, n))
21728 progress: function() {
21729 if (this.error) return 1;
21730 if (1 === this.chunks.length) return this._prevProgress = Math.max(this._prevProgress, this.chunks[0].progress()), this._prevProgress;
21732 f(this.chunks, function(e) {
21733 t += e.progress() * (e.endByte - e.startByte)
21735 var e = t / this.size;
21736 return this._prevProgress = Math.max(this._prevProgress, .9999 < e ? 1 : e), this._prevProgress
21738 isUploading: function() {
21740 return f(this.chunks, function(e) {
21741 if ("uploading" === e.status()) return !(t = !0)
21744 isComplete: function() {
21746 return f(this.chunks, function(e) {
21747 var t = e.status();
21748 if ("pending" === t || "uploading" === t || "reading" === t || 1 === e.preprocessState || 1 === e.readState) return !(n = !0)
21751 sizeUploaded: function() {
21753 return f(this.chunks, function(e) {
21754 t += e.sizeUploaded()
21757 timeRemaining: function() {
21758 if (this.paused || this.error) return 0;
21759 var e = this.size - this.sizeUploaded();
21760 return e && !this.averageSpeed ? Number.POSITIVE_INFINITY : e || this.averageSpeed ? Math.floor(e / this.averageSpeed) : 0
21762 getType: function() {
21763 return this.file.type && this.file.type.split("/")[1]
21765 getExtension: function() {
21766 return this.name.substr(2 + (~-this.name.lastIndexOf(".") >>> 0)).toLowerCase()
21769 getParams: function() {
21771 flowChunkNumber: this.offset + 1,
21772 flowChunkSize: this.flowObj.opts.chunkSize,
21773 flowCurrentChunkSize: this.endByte - this.startByte,
21774 flowTotalSize: this.fileObj.size,
21775 flowIdentifier: this.fileObj.uniqueIdentifier,
21776 flowFilename: this.fileObj.name,
21777 flowRelativePath: this.fileObj.relativePath,
21778 flowTotalChunks: this.fileObj.chunks.length
21781 getTarget: function(e, t) {
21782 return 0 == t.length ? e : (e.indexOf("?") < 0 ? e += "?" : e += "&", e + t.join("&"))
21785 this.xhr = new XMLHttpRequest, this.xhr.addEventListener("load", this.testHandler, !1), this.xhr.addEventListener("error", this.testHandler, !1);
21786 var e = c(this.flowObj.opts.testMethod, this.fileObj, this),
21787 t = this.prepareXhrRequest(e, !0);
21790 preprocessFinished: function() {
21791 this.endByte = this.computeEndByte(), this.preprocessState = 2, this.send()
21793 readFinished: function(e) {
21794 this.readState = 2, this.bytes = e, this.send()
21797 var e = this.flowObj.opts.preprocess,
21798 t = this.flowObj.opts.readFileFn;
21799 if ("function" == typeof e) switch (this.preprocessState) {
21801 return this.preprocessState = 1, void e(this);
21805 switch (this.readState) {
21807 return this.readState = 1, void t(this.fileObj, this.startByte, this.endByte, this.fileObj.file.type, this);
21811 if (!this.flowObj.opts.testChunks || this.tested) {
21812 this.loaded = 0, this.total = 0, this.pendingRetry = !1, this.xhr = new XMLHttpRequest, this.xhr.upload.addEventListener("progress", this.progressHandler, !1), this.xhr.addEventListener("load", this.doneHandler, !1), this.xhr.addEventListener("error", this.doneHandler, !1);
21813 var n = c(this.flowObj.opts.uploadMethod, this.fileObj, this),
21814 r = this.prepareXhrRequest(n, !1, this.flowObj.opts.method, this.bytes);
21818 abort: function() {
21820 this.xhr = null, e && e.abort()
21822 status: function(e) {
21823 return 1 === this.readState ? "reading" : this.pendingRetry || 1 === this.preprocessState ? "uploading" : this.xhr ? this.xhr.readyState < 4 ? "uploading" : -1 < this.flowObj.opts.successStatuses.indexOf(this.xhr.status) ? "success" : -1 < this.flowObj.opts.permanentErrors.indexOf(this.xhr.status) || !e && this.retries >= this.flowObj.opts.maxChunkRetries ? "error" : (this.abort(), "pending") : "pending"
21825 message: function() {
21826 return this.xhr ? this.xhr.responseText : ""
21828 progress: function() {
21829 if (this.pendingRetry) return 0;
21830 var e = this.status();
21831 return "success" === e || "error" === e ? 1 : "pending" === e ? 0 : 0 < this.total ? this.loaded / this.total : 0
21833 sizeUploaded: function() {
21834 var e = this.endByte - this.startByte;
21835 return "success" !== this.status() && (e = this.progress() * e), e
21837 prepareXhrRequest: function(e, t, n, r) {
21838 var i = c(this.flowObj.opts.query, this.fileObj, this, t);
21839 i = d(i || {}, this.getParams());
21840 var o = c(this.flowObj.opts.target, this.fileObj, this, t),
21842 if ("GET" === e || "octet" === n) {
21844 f(i, function(e, t) {
21845 s.push([encodeURIComponent(t), encodeURIComponent(e)].join("="))
21846 }), o = this.getTarget(o, s), a = r || null
21847 } else a = new FormData, f(i, function(e, t) {
21849 }), void 0 !== r && a.append(this.flowObj.opts.fileParameterName, r, this.fileObj.file.name);
21850 return this.xhr.open(e, o, !0), this.xhr.withCredentials = this.flowObj.opts.withCredentials, f(c(this.flowObj.opts.headers, this.fileObj, this, t), function(e, t) {
21851 this.xhr.setRequestHeader(t, e)
21854 }, r.evalOpts = c, r.extend = d, r.each = f, r.FlowFile = s, r.FlowChunk = l, r.version = "2.13.2", "object" == typeof module && module && "object" == typeof module.exports ? module.exports = r : (t.Flow = r, "function" == typeof define && define.amd && define("flow", [], function() {
21857 } else console.warn("Flowjs needs window and document objects to work");
21860 if (this.support = !("undefined" == typeof File || "undefined" == typeof Blob || "undefined" == typeof FileList || !Blob.prototype.slice && !Blob.prototype.webkitSlice && !Blob.prototype.mozSlice), this.support) {
21861 this.supportDirectory = /Chrome/.test(t.navigator.userAgent) || /Firefox/.test(t.navigator.userAgent) || /Edge/.test(t.navigator.userAgent), this.files = [], this.defaults = {
21862 chunkSize: 1048576,
21863 forceChunkSize: !1,
21864 simultaneousUploads: 3,
21866 fileParameterName: "file",
21867 progressCallbacksInterval: 500,
21868 speedSmoothingFactor: .1,
21871 withCredentials: !1,
21873 method: "multipart",
21875 uploadMethod: "POST",
21876 prioritizeFirstAndLastChunk: !1,
21877 allowDuplicateUploads: !1,
21880 generateUniqueIdentifier: null,
21881 maxChunkRetries: 0,
21882 chunkRetryInterval: null,
21883 permanentErrors: [404, 413, 415, 500, 501],
21884 successStatuses: [200, 201, 202],
21885 onDropStopPropagation: !1,
21888 }, this.opts = {}, this.events = {};
21890 this.onDrop = function(e) {
21891 n.opts.onDropStopPropagation && e.stopPropagation(), e.preventDefault();
21892 var t = e.dataTransfer;
21893 t.items && t.items[0] && t.items[0].webkitGetAsEntry ? n.webkitReadDataTransfer(e) : n.addFiles(t.files, e)
21894 }, this.preventEvent = function(e) {
21896 }, this.opts = r.extend({}, this.defaults, e || {})
21900 function s(e, t, n) {
21901 this.flowObj = e, this.bytes = null, this.file = t, this.name = t.fileName || t.name, this.size = t.size, this.relativePath = t.relativePath || t.webkitRelativePath || this.name, this.uniqueIdentifier = void 0 === n ? e.generateUniqueIdentifier(t) : n, this.chunks = [], this.paused = !1, this.error = !1, this.averageSpeed = 0, this.currentSpeed = 0, this._lastProgressCallback = Date.now(), this._prevUploadedSize = 0, this._prevProgress = 0, this.bootstrap()
21904 function i(e, t, n, r, i) {
21906 e.file.slice ? o = "slice" : e.file.mozSlice ? o = "mozSlice" : e.file.webkitSlice && (o = "webkitSlice"), i.readFinished(e.file[o](t, n, r))
21909 function l(e, t, n) {
21910 this.flowObj = e, this.fileObj = t, this.offset = n, this.tested = !1, this.retries = 0, this.pendingRetry = !1, this.preprocessState = 0, this.readState = 0, this.loaded = 0, this.total = 0, this.chunkSize = this.flowObj.opts.chunkSize, this.startByte = this.offset * this.chunkSize, this.computeEndByte = function() {
21911 var e = Math.min(this.fileObj.size, (this.offset + 1) * this.chunkSize);
21912 return this.fileObj.size - e < this.chunkSize && !this.flowObj.opts.forceChunkSize && (e = this.fileObj.size), e
21913 }, this.endByte = this.computeEndByte(), this.xhr = null;
21915 this.event = function(e, t) {
21916 (t = Array.prototype.slice.call(arguments)).unshift(r), r.fileObj.chunkEvent.apply(r.fileObj, t)
21917 }, this.progressHandler = function(e) {
21918 e.lengthComputable && (r.loaded = e.loaded, r.total = e.total), r.event("progress", e)
21919 }, this.testHandler = function(e) {
21920 var t = r.status(!0);
21921 "error" === t ? (r.event(t, r.message()), r.flowObj.uploadNextChunk()) : "success" === t ? (r.tested = !0, r.event(t, r.message()), r.flowObj.uploadNextChunk()) : r.fileObj.paused || (r.tested = !0, r.send())
21922 }, this.doneHandler = function(e) {
21923 var t = r.status();
21924 if ("success" === t || "error" === t) delete this.data, r.event(t, r.message()), r.flowObj.uploadNextChunk();
21926 r.event("retry", r.message()), r.pendingRetry = !0, r.abort(), r.retries++;
21927 var n = r.flowObj.opts.chunkRetryInterval;
21928 null !== n ? setTimeout(function() {
21936 return "function" == typeof e && (t = Array.prototype.slice.call(arguments), e = e.apply(null, t.slice(1))), e
21940 setTimeout(e.bind(t), 0)
21944 return f(arguments, function(e) {
21945 e !== n && f(e, function(e, t) {
21951 function f(e, t, n) {
21954 if (void 0 !== e.length) {
21955 for (r = 0; r < e.length; r++)
21956 if (!1 === t.call(n, e[r], r)) return
21959 if (e.hasOwnProperty(r) && !1 === t.call(n, e[r], r)) return
21961 }("undefined" != typeof window && window, "undefined" != typeof document && document), angular.module("flow.provider", []).provider("flowFactory", function() {
21963 this.defaults = {}, this.factory = function(e) {
21965 }, this.events = [], this.on = function(e, t) {
21966 this.events.push([e, t])
21967 }, this.$get = function() {
21968 var n = this.factory,
21972 create: function(e) {
21973 var t = n(angular.extend({}, r, e));
21974 return angular.forEach(i, function(e) {
21980 }), angular.module("flow.init", ["flow.provider"]).controller("flowCtrl", ["$scope", "$attrs", "$parse", "flowFactory", function(r, e, t, n) {
21981 var i = angular.extend({}, r.$eval(e.flowInit)),
21982 o = r.$eval(e.flowObject) || n.create(i),
21984 var t = Array.prototype.slice.call(arguments);
21986 var n = r.$broadcast.apply(r, ["flow::" + e, o].concat(t));
21993 } [e] && r.$applyAsync(), n.defaultPrevented) return !1
21995 o.on("catchAll", a), r.$on("$destroy", function() {
21996 o.off("catchAll", a)
21997 }), r.$flow = o, e.hasOwnProperty("flowName") && (t(e.flowName).assign(r, o), r.$on("$destroy", function() {
21998 t(e.flowName).assign(r)
22000 }]).directive("flowInit", [function() {
22003 controller: "flowCtrl"
22005 }]), angular.module("flow.btn", ["flow.init"]).directive("flowBtn", [function() {
22009 require: "^flowInit",
22010 link: function(e, t, n) {
22011 var r = n.hasOwnProperty("flowDirectory"),
22012 i = n.hasOwnProperty("flowSingleFile"),
22013 o = n.hasOwnProperty("flowAttrs") && e.$eval(n.flowAttrs);
22014 e.$flow.assignBrowse(t, r, i, o)
22017 }]), angular.module("flow.dragEvents", ["flow.init"]).directive("flowPreventDrop", function() {
22020 link: function(e, t, n) {
22021 t.bind("drop dragover", function(e) {
22026 }).directive("flowDragEnter", ["$timeout", function(l) {
22029 link: function(i, e, o) {
22031 e.bind("dragover", function(e) {
22033 (n = !1, r = (t = e).dataTransfer || t.originalEvent.dataTransfer, angular.forEach(r && r.types, function(e) {
22034 "Files" === e && (n = !0)
22035 }), n) && (s || (i.$apply(o.flowDragEnter), s = !0), l.cancel(a), e.preventDefault())
22036 }), e.bind("dragleave drop", function(e) {
22037 l.cancel(a), a = l(function() {
22038 i.$eval(o.flowDragLeave), a = null, s = !1
22043 }]), angular.module("flow.drop", ["flow.init"]).directive("flowDrop", function() {
22046 require: "^flowInit",
22047 link: function(t, n, e) {
22049 t.$flow.assignDrop(n)
22051 e.flowDropEnabled ? t.$watch(e.flowDropEnabled, function(e) {
22052 e ? r() : t.$flow.unAssignDrop(n)
22059 var n = s.module("flow.events", ["flow.init"]);
22061 fileSuccess: ["$file", "$message"],
22062 fileProgress: ["$file"],
22063 fileAdded: ["$file", "$event"],
22064 filesAdded: ["$files", "$event"],
22065 filesSubmitted: ["$files", "$event"],
22066 fileRetry: ["$file"],
22067 fileRemoved: ["$file"],
22068 fileError: ["$file", "$message"],
22072 error: ["$message", "$file"]
22073 }, function(o, e) {
22074 var t, a = "flow" + ((t = e).charAt(0).toUpperCase() + t.slice(1));
22075 "flowUploadStart" == a && (a = "flowUploadStarted"), n.directive(a, [function() {
22077 require: "^flowInit",
22078 controller: ["$scope", "$attrs", function(t, i) {
22079 t.$on("flow::" + e, function() {
22080 var n = Array.prototype.slice.call(arguments),
22082 if (t.$flow === n.shift()) {
22084 s.forEach(o, function(e, t) {
22086 }), !1 === t.$eval(i[a], r) && e.preventDefault()
22093 }(angular), angular.module("flow.img", ["flow.init"]).directive("flowImg", [function() {
22096 require: "^flowInit",
22097 link: function(n, e, r) {
22099 n.$watch(t, function(e) {
22101 var t = new FileReader;
22102 t.readAsDataURL(e.file), t.onload = function(e) {
22103 n.$apply(function() {
22104 r.$set("src", e.target.result)
22111 }]), angular.module("flow.transfers", ["flow.init"]).directive("flowTransfers", [function() {
22114 require: "^flowInit",
22115 link: function(e) {
22116 e.transfers = e.$flow.files
22119 }]), angular.module("flow", ["flow.provider", "flow.init", "flow.events", "flow.btn", "flow.drop", "flow.transfers", "flow.img", "flow.dragEvents"]),
22122 var x, T, M, A, S, D, O, N, I, R, P = k.$$minErr("$sanitize");
22123 k.module("ngSanitize", []).provider("$sanitize", function() {
22126 this.$get = ["$$sanitizeUri", function(n) {
22127 return t = !0, r && T(f, u),
22130 return I(e, R(t, function(e, t) {
22131 return !/^unsafe:/.test(n(e, t))
22134 }], this.enableSvg = function(e) {
22135 return S(e) ? (r = e, this) : r
22136 }, this.addValidElements = function(e) {
22137 return t || (A(e) && (e = {
22139 }), y(u, e.svgElements), y(s, e.htmlVoidElements), y(f, e.htmlVoidElements), y(f, e.htmlElements)), this
22140 }, this.addValidAttrs = function(e) {
22141 return t || T(g, b(e, !0)), this
22142 }, x = k.bind, T = k.extend, M = k.forEach, A = k.isArray, S = k.isDefined, D = k.$$lowercase, O = k.noop, I = function(e, t) {
22143 null == e ? e = "" : "string" != typeof e && (e = "" + e);
22148 if (0 === r) throw P("uinput", "Failed to sanitize html because the input is unstable");
22149 r--, e = n.innerHTML, n = _(e)
22150 } while (e !== n.innerHTML);
22151 for (var i = n.firstChild; i;) {
22152 switch (i.nodeType) {
22154 t.start(i.nodeName.toLowerCase(), $(i.attributes));
22157 t.chars(i.textContent)
22160 if (!((o = i.firstChild) || (1 === i.nodeType && t.end(i.nodeName.toLowerCase()), o = E("nextSibling", i))))
22161 for (; null == o && (i = E("parentNode", i)) !== n;) o = E("nextSibling", i), 1 === i.nodeType && t.end(i.nodeName.toLowerCase());
22164 for (; i = n.firstChild;) n.removeChild(i)
22165 }, R = function(e, o) {
22169 start: function(i, e) {
22170 i = D(i), !t && d[i] && (t = i), t || !0 !== f[i] || (a("<"), a(i), M(e, function(e, t) {
22172 r = "img" === i && "src" === n || "background" === n;
22173 !0 !== g[n] || !0 === h[n] && !o(e, r) || (a(" "), a(t), a('="'), a(w(e)), a('"'))
22177 e = D(e), t || !0 !== f[e] || !0 === s[e] || (a("</"), a(e), a(">")), e == t && (t = !1)
22179 chars: function(e) {
22183 }, N = C.Node.prototype.contains || function(e) {
22184 return !!(16 & this.compareDocumentPosition(e))
22186 var n = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
22187 i = /([^#-~ |!])/g,
22188 s = v("area,br,col,hr,img,wbr"),
22189 e = v("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),
22192 l = T({}, e, v("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul")),
22193 c = T({}, o, v("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),
22194 u = v("circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,radialGradient,rect,stop,svg,switch,text,title,tspan"),
22195 d = v("script,style"),
22196 f = T({}, s, l, c, a),
22197 h = v("background,cite,href,longdesc,src,xlink:href,xml:base"),
22198 p = v("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,valign,value,vspace,width"),
22199 m = v("accent-height,accumulate,additive,alphabetic,arabic-form,ascent,baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan", !0),
22200 g = T({}, h, m, p);
22203 return b(e.split(","), t)
22208 for (n = 0; n < e.length; n++) r[t ? D(e[n]) : e[n]] = !0;
22213 t && t.length && T(e, b(t))
22215 var _ = function(r, t) {
22217 if (!t || !t.implementation) throw P("noinert", "Can't create an inert html document");
22218 var n = ((e = t.implementation.createHTMLDocument("inert")).documentElement || e.getDocumentElement()).querySelector("body");
22219 return n.innerHTML = '<svg><g onload="this.parentNode.remove()"></g></svg>', n.querySelector("svg") ? (n.innerHTML = '<svg><p><style><img src="</style><img src=x onerror=alert(1)//">', n.querySelector("svg img") ? function(e) {
22220 e = "<remove></remove>" + e;
22222 var t = (new r.DOMParser).parseFromString(e, "text/html").body;
22223 return t.firstChild.remove(), t
22228 return n.innerHTML = e, t.documentMode && function e(t) {
22230 if (t.nodeType === C.Node.ELEMENT_NODE)
22231 for (var n = t.attributes, r = 0, i = n.length; r < i; r++) {
22233 a = o.name.toLowerCase();
22234 "xmlns:ns1" !== a && 0 !== a.lastIndexOf("ns1:", 0) || (t.removeAttributeNode(o), r--, i--)
22236 var s = t.firstChild;
22237 s && e(s), t = E("nextSibling", t)
22241 e = "<remove></remove>" + e;
22247 var t = new r.XMLHttpRequest;
22248 t.responseType = "document", t.open("GET", "data:text/html;charset=utf-8," + e, !1), t.send(null);
22249 var n = t.response.body;
22250 return n.firstChild.remove(), n
22255 for (var t = {}, n = 0, r = e.length; n < r; n++) {
22257 t[i.name] = i.value
22263 return e.replace(/&/g, "&").replace(n, function(e) {
22264 return "&#" + (1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320) + 65536) + ";"
22265 }).replace(i, function(e) {
22266 return "&#" + e.charCodeAt(0) + ";"
22267 }).replace(/</g, "<").replace(/>/g, ">")
22272 if (n && N.call(t, n)) throw P("elclob", "Failed to sanitize html because the element is clobbered: {0}", t.outerHTML || t.outerText);
22276 angularVersion: "1.7.9"
22277 }), k.module("ngSanitize").filter("linky", ["$sanitize", function(d) {
22278 var f = /((s?ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,
22280 p = k.$$minErr("linky"),
22285 return function(e, i, t) {
22286 if (null == e || "" === e) return e;
22287 if (!b(e)) throw p("notstring", "Expected string but received: {0}", e);
22288 for (var n, r, o, a = g(t) ? t : v(t) ? function() {
22292 }, s = e, l = []; n = s.match(f);) r = n[0], n[2] || n[4] || (r = (n[3] ? "http://" : "mailto:") + r), o = n.index, c(s.substr(0, o)), u(r, n[0].replace(h, "")), s = s.substring(o + n[0].length);
22293 return c(s), d(l.join(""));
22297 e && l.push((t = e, R(n = [], O).chars(t), n.join("")))
22302 for (n in l.push("<a "), r) l.push(n + '="' + r[n] + '" ');
22303 !m(i) || "target" in r || l.push('target="', i, '" '), l.push('href="', e.replace(/"/g, """), '">'), c(t), l.push("</a>")
22307 }(window, window.angular),
22310 angular.module("ngEmbed", ["ngSanitize"]).filter("embed", ["$sce", function(l) {
22329 class: "wondering",
22345 class: "thumbsup2",
22361 class: "thumbs-up",
22377 class: "heart-broken",
22381 class: "heart-broken",
22404 u = ["bowtie", "smile", "laughing", "blush", "smiley", "relaxed", "smirk", "heart_eyes", "kissing_heart", "kissing_closed_eyes", "flushed", "relieved", "satisfied", "grin", "wink", "stuck_out_tongue_winking_eye", "stuck_out_tongue_closed_eyes", "grinning", "kissing", "winky_face", "kissing_smiling_eyes", "stuck_out_tongue", "sleeping", "worried", "frowning", "anguished", "open_mouth", "grimacing", "confused", "hushed", "expressionless", "unamused", "sweat_smile", "sweat", "wow", "disappointed_relieved", "weary", "pensive", "disappointed", "confounded", "fearful", "cold_sweat", "persevere", "cry", "sob", "joy", "astonished", "scream", "neckbeard", "tired_face", "angry", "rage", "triumph", "sleepy", "yum", "mask", "sunglasses", "dizzy_face", "imp", "smiling_imp", "neutral_face", "no_mouth", "innocent", "alien", "yellow_heart", "blue_heart", "purple_heart", "heart", "green_heart", "broken_heart", "heartbeat", "heartpulse", "two_hearts", "revolving_hearts", "cupid", "sparkling_heart", "sparkles", "star", "star2", "dizzy", "boom", "collision", "anger", "exclamation", "question", "grey_exclamation", "grey_question", "zzz", "dash", "sweat_drops", "notes", "musical_note", "fire", "hankey", "poop", "shit", "\\+1", "thumbsup", "-1", "thumbsdown", "ok_hand", "punch", "facepunch", "fist", "v", "wave", "hand", "raised_hand", "open_hands", "point_up", "point_down", "point_left", "point_right", "raised_hands", "pray", "point_up_2", "clap", "muscle", "metal", "fu", "walking", "runner", "running", "couple", "family", "two_men_holding_hands", "two_women_holding_hands", "dancer", "dancers", "ok_woman", "no_good", "information_desk_person", "raising_hand", "bride_with_veil", "person_with_pouting_face", "person_frowning", "bow", "couplekiss", "couple_with_heart", "massage", "haircut", "nail_care", "boy", "girl", "woman", "man", "baby", "older_woman", "older_man", "person_with_blond_hair", "man_with_gua_pi_mao", "man_with_turban", "construction_worker", "cop", "angel", "princess", "smiley_cat", "smile_cat", "heart_eyes_cat", "kissing_cat", "smirk_cat", "scream_cat", "crying_cat_face", "joy_cat", "pouting_cat", "japanese_ogre", "japanese_goblin", "see_no_evil", "hear_no_evil", "speak_no_evil", "guardsman", "skull", "feet", "lips", "kiss", "droplet", "ear", "eyes", "nose", "tongue", "love_letter", "bust_in_silhouette", "busts_in_silhouette", "speech_balloon", "thought_balloon", "feelsgood", "finnadie", "goberserk", "godmode", "hurtrealbad", "rage1", "rage2", "rage3", "rage4", "suspect", "trollface", "sunny", "umbrella", "cloud", "snowflake", "snowman", "zap", "cyclone", "foggy", "ocean", "cat", "dog", "mouse", "hamster", "rabbit", "wolf", "frog", "tiger", "koala", "bear", "pig", "pig_nose", "cow", "boar", "monkey_face", "monkey", "horse", "racehorse", "camel", "sheep", "elephant", "panda_face", "snake", "bird", "baby_chick", "hatched_chick", "hatching_chick", "chicken", "penguin", "turtle", "bug", "honeybee", "ant", "beetle", "snail", "octopus", "tropical_fish", "fish", "whale", "whale2", "dolphin", "cow2", "ram", "rat", "water_buffalo", "tiger2", "rabbit2", "dragon", "goat", "rooster", "dog2", "pig2", "mouse2", "ox", "dragon_face", "blowfish", "crocodile", "dromedary_camel", "leopard", "cat2", "poodle", "paw_prints", "bouquet", "cherry_blossom", "tulip", "four_leaf_clover", "rose", "sunflower", "hibiscus", "maple_leaf", "leaves", "fallen_leaf", "herb", "mushroom", "cactus", "palm_tree", "evergreen_tree", "deciduous_tree", "chestnut", "seedling", "blossom", "ear_of_rice", "shell", "globe_with_meridians", "sun_with_face", "full_moon_with_face", "new_moon_with_face", "new_moon", "waxing_crescent_moon", "first_quarter_moon", "waxing_gibbous_moon", "full_moon", "waning_gibbous_moon", "last_quarter_moon", "waning_crescent_moon", "last_quarter_moon_with_face", "first_quarter_moon_with_face", "moon", "earth_africa", "earth_americas", "earth_asia", "volcano", "milky_way", "partly_sunny", "octocat", "squirrel", "bamboo", "gift_heart", "dolls", "school_satchel", "mortar_board", "flags", "fireworks", "sparkler", "wind_chime", "rice_scene", "jack_o_lantern", "ghost", "santa", "christmas_tree", "gift", "bell", "no_bell", "tanabata_tree", "tada", "confetti_ball", "balloon", "crystal_ball", "cd", "dvd", "floppy_disk", "camera", "video_camera", "movie_camera", "computer", "tv", "iphone", "phone", "telephone", "telephone_receiver", "pager", "fax", "minidisc", "vhs", "sound", "speaker", "mute", "loudspeaker", "mega", "hourglass", "hourglass_flowing_sand", "alarm_clock", "watch", "radio", "satellite", "loop", "mag", "mag_right", "unlock", "lock", "lock_with_ink_pen", "closed_lock_with_key", "key", "bulb", "flashlight", "high_brightness", "low_brightness", "electric_plug", "battery", "calling", "email", "mailbox", "postbox", "bath", "bathtub", "shower", "toilet", "wrench", "nut_and_bolt", "hammer", "seat", "moneybag", "yen", "dollar", "pound", "euro", "credit_card", "money_with_wings", "e-mail", "inbox_tray", "outbox_tray", "envelope", "incoming_envelope", "postal_horn", "mailbox_closed", "mailbox_with_mail", "mailbox_with_no_mail", "door", "smoking", "bomb", "gun", "hocho", "pill", "syringe", "page_facing_up", "page_with_curl", "bookmark_tabs", "bar_chart", "chart_with_upwards_trend", "chart_with_downwards_trend", "scroll", "clipboard", "calendar", "date", "card_index", "file_folder", "open_file_folder", "scissors", "pushpin", "paperclip", "black_nib", "pencil2", "straight_ruler", "triangular_ruler", "closed_book", "green_book", "blue_book", "orange_book", "notebook", "notebook_with_decorative_cover", "ledger", "books", "bookmark", "name_badge", "microscope", "telescope", "newspaper", "football", "basketball", "soccer", "baseball", "tennis", "8ball", "rugby_football", "bowling", "golf", "mountain_bicyclist", "bicyclist", "horse_racing", "snowboarder", "swimmer", "surfer", "ski", "spades", "hearts", "clubs", "diamonds", "gem", "ring", "trophy", "musical_score", "musical_keyboard", "violin", "space_invader", "video_game", "black_joker", "flower_playing_cards", "game_die", "dart", "mahjong", "clapper", "memo", "pencil", "book", "art", "microphone", "headphones", "trumpet", "saxophone", "guitar", "shoe", "sandal", "high_heel", "lipstick", "boot", "shirt", "tshirt", "necktie", "womans_clothes", "dress", "running_shirt_with_sash", "jeans", "kimono", "bikini", "ribbon", "tophat", "crown", "womans_hat", "mans_shoe", "closed_umbrella", "briefcase", "handbag", "pouch", "purse", "eyeglasses", "fishing_pole_and_fish", "coffee", "tea", "sake", "baby_bottle", "beer", "beers", "cocktail", "tropical_drink", "wine_glass", "fork_and_knife", "pizza", "hamburger", "fries", "poultry_leg", "meat_on_bone", "spaghetti", "curry", "fried_shrimp", "bento", "sushi", "fish_cake", "rice_ball", "rice_cracker", "rice", "ramen", "stew", "oden", "dango", "egg", "bread", "doughnut", "custard", "icecream", "ice_cream", "shaved_ice", "birthday", "cake", "cookie", "chocolate_bar", "candy", "lollipop", "honey_pot", "apple", "green_apple", "tangerine", "lemon", "cherries", "grapes", "watermelon", "strawberry", "peach", "melon", "banana", "pear", "pineapple", "sweet_potato", "eggplant", "tomato", "corn", "house", "house_with_garden", "school", "office", "post_office", "hospital", "bank", "convenience_store", "love_hotel", "hotel", "wedding", "church", "department_store", "european_post_office", "city_sunrise", "city_sunset", "japanese_castle", "european_castle", "tent", "factory", "tokyo_tower", "japan", "mount_fuji", "sunrise_over_mountains", "sunrise", "stars", "themoreyouknow", "tmyk", "statue_of_liberty", "bridge_at_night", "carousel_horse", "rainbow", "ferris_wheel", "fountain", "roller_coaster", "ship", "speedboat", "boat", "sailboat", "rowboat", "anchor", "rocket", "airplane", "helicopter", "steam_locomotive", "tram", "mountain_railway", "bike", "aerial_tramway", "suspension_railway", "mountain_cableway", "tractor", "blue_car", "oncoming_automobile", "car", "red_car", "taxi", "oncoming_taxi", "articulated_lorry", "bus", "oncoming_bus", "rotating_light", "police_car", "oncoming_police_car", "fire_engine", "ambulance", "minibus", "truck", "train", "station", "train2", "bullettrain_front", "bullettrain_side", "light_rail", "monorail", "railway_car", "trolleybus", "ticket", "fuelpump", "vertical_traffic_light", "traffic_light", "warning", "construction", "beginner", "atm", "slot_machine", "busstop", "barber", "hotsprings", "checkered_flag", "crossed_flags", "izakaya_lantern", "moyai", "circus_tent", "performing_arts", "round_pushpin", "triangular_flag_on_post", "jp", "kr", "cn", "us", "fr", "es", "it", "ru", "gb", "uk", "de", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "keycap_ten", "1234", "zero", "hash", "symbols", "arrow_backward", "arrow_down", "arrow_forward", "arrow_left", "capital_abcd", "abcd", "abc", "arrow_lower_left", "arrow_lower_right", "arrow_right", "arrow_up", "arrow_upper_left", "arrow_upper_right", "arrow_double_down", "arrow_double_up", "arrow_down_small", "arrow_heading_down", "arrow_heading_up", "leftwards_arrow_with_hook", "arrow_right_hook", "left_right_arrow", "arrow_up_down", "arrow_up_small", "arrows_clockwise", "arrows_counterclockwise", "rewind", "fast_forward", "information_source", "ok", "twisted_rightwards_arrows", "repeat", "repeat_one", "new", "top", "up", "cool", "free", "ng", "cinema", "koko", "signal_strength", "u5272", "u5408", "u55b6", "u6307", "u6708", "u6709", "u6e80", "u7121", "u7533", "u7a7a", "u7981", "sa", "restroom", "mens", "womens", "baby_symbol", "no_smoking", "parking", "wheelchair", "metro", "baggage_claim", "accept", "wc", "potable_water", "put_litter_in_its_place", "secret", "congratulations", "m", "passport_control", "left_luggage", "customs", "ideograph_advantage", "cl", "sos", "id", "no_entry_sign", "underage", "no_mobile_phones", "do_not_litter", "non-potable_water", "no_bicycles", "no_pedestrians", "children_crossing", "no_entry", "eight_spoked_asterisk", "eight_pointed_black_star", "heart_decoration", "vs", "vibration_mode", "mobile_phone_off", "chart", "currency_exchange", "aries", "taurus", "gemini", "cancer", "leo", "virgo", "libra", "scorpius", "sagittarius", "capricorn", "aquarius", "pisces", "ophiuchus", "six_pointed_star", "negative_squared_cross_mark", "a", "b", "ab", "o2", "diamond_shape_with_a_dot_inside", "recycle", "end", "on", "soon", "clock1", "clock130", "clock10", "clock1030", "clock11", "clock1130", "clock12", "clock1230", "clock2", "clock230", "clock3", "clock330", "clock4", "clock430", "clock5", "clock530", "clock6", "clock630", "clock7", "clock730", "clock8", "clock830", "clock9", "clock930", "heavy_dollar_sign", "copyright", "registered", "tm", "x", "heavy_exclamation_mark", "bangbang", "interrobang", "o", "heavy_multiplication_x", "heavy_plus_sign", "heavy_minus_sign", "heavy_division_sign", "white_flower", "100", "heavy_check_mark", "ballot_box_with_check", "radio_button", "link", "curly_loop", "wavy_dash", "part_alternation_mark", "trident", "black_square", "white_square", "white_check_mark", "black_square_button", "white_square_button", "black_circle", "white_circle", "red_circle", "large_blue_circle", "large_blue_diamond", "large_orange_diamond", "small_blue_diamond", "small_orange_diamond", "small_red_triangle", "small_red_triangle_down", "shipit"];
22405 return function(e, t) {
22410 linkTarget: "_self"
22412 if (function n(r) {
22413 return angular.forEach(arguments, function(e) {
22414 e !== r && angular.forEach(e, function(e, t) {
22415 r[t] && r[t].constructor && r[t].constructor === Object ? n(r[t], e) : r[t] = e
22418 }(n, t), null != e) {
22419 if ("object" == typeof e) return e;
22420 var r, i, o, a, s = {
22425 return angular.isNumber(e) || (e = e.toString()), e = e.replace(/[&<>]/g, function(e) {
22427 }), n.fontSmiley && (r = e.split(" "), angular.forEach(c, function(e) {
22428 for (var t = 0; t < r.length; t++) r[t] === e.text && (r[t] = '<i class="ne-emoticon" title="' + e.text + '">&#x' + e.code + "</i>")
22429 }), e = r.join(" ")), n.emoji && (i = e, o = new RegExp(":(" + u.join("|") + "):", "g"), e = i.replace(o, function(e, t) {
22430 return "<i class='emoticon emoticon-" + t + "' title=':" + t + ":'></i>"
22431 })), n.link && (a = /^[a-z]+\:\/\//i, e = e.replace(/\b(?:(https?|ftp|file):\/\/|www\.)[-A-Z0-9+()&@$#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]/gi, function(e) {
22433 return a.test(e) || (t = "http://" + e), "cordova" == n.linkTarget ? '<a href="#" onclick="window.open(\'' + t + "', '_system', 'location=yes')\" >" + e + "</a>" : '<a href="' + t + '" target="' + n.linkTarget + '">' + e + "</a>"
22434 })), l.trustAsHtml(e)
22437 }]).directive("ngEmbed", ["$filter", "$sce", "$http", "$timeout", "$templateCache", function(w, E, C, k, e) {
22438 return e.put("", '<div ng-bind-html="neText"></div> <div class="ne-video" ng-if="video.host" class="fade"> <div class="ne-video-preview" ng-hide="nePlayVideo || !options.video.details"> <div class="ne-video-thumb" ng-click="nePlayVideo=!nePlayVideo"> <img ng-src="{{video.thumbnail}}" alt=""/> <i class="fa fa-play-circle-o"></i> </div> <div class="ne-video-detail"> <div class="ne-video-title"> <a ng-href="{{video.url}}">{{video.title}}</a> </div> <div class="ne-video-desc"> {{video.description}} </div> <div class="ne-video-stats"> <span><i class="fa fa-eye"></i> {{video.views}}</span> <span><i class="fa fa-heart"></i> {{video.likes}}</span> </div> </div> </div> <div class="ne-video-player" ng-if="nePlayVideo || !(options.video.details)"> <iframe ng-src="{{video.embedSrc}}" frameBorder="0" width="{{video.width}}" height="{{video.height}}" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe> </div> </div> <div class="ne-video" ng-if="video.basic"> <div class="ne-video-player"> <div class="player"> <video ng-src="{{video.basic}}" controls></video> </div> </div> </div> <div ng-init="neImageLong=false" ng-class="{false:\'ne-image\', true:\'ne-image ne-image-long\'}[neImageLong]" ng-if="image.url"> <div class="ne-image-wrapper"> <img ng-src="{{image.url}}" ng-click="neImageLong=!neImageLong" alt=""/> </div> </div> <div class="ne-pdf" ng-if="pdf.url"> <div class="ne-pdf-preview" ng-hide="neShowPdf"> <div class="ne-pdf-icon"> <i class="fa fa-file-pdf-o"></i> </div> <div class="ne-pdf-detail" > <div class="ne-pdf-title"> <a href="">{{pdf.url}}</a> </div> <div class="ne-pdf-view"> <button><i class="fa fa-download"></i> <a ng-href="{{pdf.url}}" target="_blank">Download</a></button> <button ng-click="neShowPdf=!neShowPdf"><i class="fa fa-eye"></i> View PDF</button> </div> </div> </div> <div class="ne-pdf-viewer" ng-if="neShowPdf" ng-show="neShowPdf"> <iframe ng-src="{{pdf.url}}" frameBorder="0"></iframe> </div> </div> <div class="ne-audio" ng-if="audio.url"> <audio ng-src="{{audio.url}}" controls></audio> </div> <div ng-if="tweets" ng-repeat="tweet in tweets"> <div ng-bind-html="tweet"></div> </div> <div ng-if="videoServices" class="ne-video" ng-repeat="v in videoServices"> <div class="ne-video-player"> <div class="player"> <div ng-bind-html="v"></div> </div> </div> </div> <div ng-if="audioServices" class="ne-audio" ng-repeat="a in audioServices"> <div ng-bind-html="a"></div> </div> <div ng-if="codeServices" class="ne-embed" ng-repeat="c in codeServices"> <div ng-bind-html="c"></div> </div> <div ng-if="gist" class="ne-gist" ng-repeat="g in gist"> <ne-gist id="{{g}}"></ne-gist> </div>'), {
22441 templateUrl: function(e, t) {
22442 return t.embedTemplateUrl || ""
22444 link: function(s, e, t) {
22445 var n = s.$eval(t.embedData),
22446 r = s.$eval(t.embedOptions);
22447 s.video = {}, s.image = {}, s.pdf = {}, s.audio = {}, s.videoServices = [], s.audioServices = [], s.codeServices = [];
22452 linkTarget: "_self",
22457 embed: !(s.gist = [])
22474 thumbnailQuality: "medium"
22485 dailymotionEmbed: !0,
22489 soundCloudEmbed: !0,
22490 soundCloudOptions: {
22492 themeColor: "f50000",
22503 codepenHeight: 300,
22505 jsfiddleHeight: 300,
22509 githubgistEmbed: !0,
22514 return angular.forEach(arguments, function(e) {
22515 e !== r && angular.forEach(e, function(e, t) {
22516 r[t] && r[t].constructor && r[t].constructor === Object ? n(r[t], e) : r[t] = e
22519 }(i, r), String.prototype.trunc = function(e, t) {
22520 var n = this.length > e,
22521 r = n ? this.substr(0, e - 1) : this;
22522 return r = t && n ? r.substr(0, r.lastIndexOf(" ")) : r, n ? r + "..." : r
22523 }, Array.prototype.getUnique = function() {
22524 for (var e = {}, t = [], n = 0, r = this.length; n < r; ++n) e.hasOwnProperty(this[n]) || (t.push(this[n]), e[this[n]] = 1);
22528 calcDimensions: function(e) {
22533 return t.width = e.video.width, t.height = e.video.height, e.video.height && e.video.width || (e.video.height ? t.width = e.video.height / 390 * 640 : e.video.width ? t.height = t.width / 640 * 390 : (t.width = 640, t.height = 390)), t
22535 embed: function(e, r) {
22536 if (e.match(/https?:\/\/(?:[0-9A-Z-]+\.)?(?:youtu\.be\/|youtube\.com(?:\/embed\/|\/v\/|\/watch\?v=|\/ytscreeningroom\?v=|\/feeds\/api\/videos\/|\/user\S*[^\w\-\s]|\S*[^\w\-\s]))([\w\-]{11})[?=&+%\w-]*/gi)) {
22537 var i = this.calcDimensions(r);
22538 return s.video.id = RegExp.$1, r.video.details ? C.get("https://www.googleapis.com/youtube/v3/videos?id=" + RegExp.$1 + "&key=" + r.gdevAuth + "&part=snippet,statistics").success(function(e) {
22539 var t = void 0 === r.video.autoPlay || !0 === r.video.autoPlay ? "?autoplay=1" : "?autoplay=0",
22541 s.video.host = "youtube", s.video.title = n.snippet.title, s.video.thumbnail = n.snippet.thumbnails.medium.url, s.video.description = n.snippet.description.trunc(250, !0).replace(/\n/g, " ").replace(/ /g, " "), s.video.rawDescription = n.snippet.description, s.video.views = n.statistics.viewCount, s.video.likes = n.statistics.likeCount, s.video.uploader = n.snippet.channelTitle, s.video.uploaderPage = "https://www.youtube.com/channel/" + n.snippet.channelId, s.video.uploadDate = n.snippet.publishedAt, s.video.url = E.trustAsResourceUrl("https://www.youtube.com/watch?v=" + n.id), s.video.embedSrc = E.trustAsResourceUrl("https://www.youtube.com/embed/" + s.video.id + t), s.video.width = i.width, s.video.height = i.height
22542 }) : (s.video.width = i.width, s.video.height = i.height, s.video.host = "youtube", s.video.embedSrc = E.trustAsResourceUrl("https://www.youtube.com/embed/" + RegExp.$1 + "?autoplay=0")), e
22544 if (e.match(/https?:\/\/(?:www\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|)(\d+)(?:$|\/|\?)*/gi)) {
22545 var n = this.calcDimensions(r);
22546 s.video.id = RegExp.$3, r.video.details ? C.get("https://vimeo.com/api/v2/video/" + RegExp.$3 + ".json").success(function(e) {
22547 var t = void 0 === r.video.autoPlay || !0 === r.video.autoPlay ? "&autoplay=1" : "&autoplay=0";
22548 s.video.host = "vimeo", s.video.title = e[0].title, s.video.rawDescription = e[0].description.replace(/\n/g, "<br/>").replace(/ /g, "<br/>"), s.video.description = e[0].description.replace(/((<|<)br\s*\/*(>|>)\r\n)/g, " ").trunc(250, !0), s.video.thumbnail = e[0].thumbnail_medium, s.video.views = e[0].stats_number_of_plays, s.video.likes = e[0].stats_number_of_likes, s.video.uploader = e[0].user_name, s.video.uploaderPage = e[0].user_url, s.video.uploadDate = e[0].uploadDate, s.video.url = e[0].url, s.video.embedSrc = E.trustAsResourceUrl("//player.vimeo.com/video/" + e[0].id + "?title=0&byline=0&portrait=0" + t), s.video.width = n.width, s.video.height = n.height
22549 }) : (s.video.width = n.width, s.video.height = n.height, s.video.host = "vimeo", s.video.embedSrc = E.trustAsResourceUrl("//player.vimeo.com/video/" + RegExp.$3 + "?title=0&byline=0&portrait=0&autoplay=0"))
22553 embedBasic: function(e) {
22554 return e.match(/((?:https?):\/\/\S*\.(?:ogv|webm|mp4))/gi) && (s.video.basic = E.trustAsResourceUrl(RegExp.$1)), e
22556 twitchtvEmbed: function(e, t) {
22557 var n = /www.twitch.tv\/[a-zA_Z0-9_]+/gi,
22558 r = e.match(n) ? e.match(n).getUnique() : null,
22559 i = l.calcDimensions(t);
22561 for (var o = 0; o < r.length;) {
22562 var a = E.trustAsHtml('<object bgcolor="#000000" data="//www-cdn.jtvnw.net/swflibs/TwitchPlayer.swf" height="' + i.height + '" id="clip_embed_player_flash" type="application/x-shockwave-flash" width="' + i.width + '"><param name="movie" value="http://www-cdn.jtvnw.net/swflibs/TwitchPlayer.swf" /><param name="allowScriptAccess" value="always" /><param name="allowNetworking" value="all" /><param name="allowFullScreen" value="true" /><param name="flashvars" value="channel=' + r[o].split("/")[1] + '&auto_play=false" /></object>');
22563 s.videoServices.push(a), o++
22567 dailymotionEmbed: function(e, t) {
22568 var n = /dailymotion.com\/video\/[a-zA-Z0-9-_]+/gi,
22569 r = e.match(n) ? e.match(n).getUnique() : null,
22570 i = l.calcDimensions(t);
22572 for (var o = 0; o < r.length;) {
22573 var a = E.trustAsHtml('<iframe src="http://www.dailymotion.com/embed/video/' + r[o].split("/")[2] + '" height="' + i.height + '" width="' + i.width + '"></iframe>');
22574 s.videoServices.push(a), o++
22578 tedEmbed: function(e, t) {
22579 var n = /ted.com\/talks\/[a-zA-Z0-9_]+/gi,
22580 r = e.match(n) ? e.match(n).getUnique() : null,
22581 i = l.calcDimensions(t);
22583 for (var o = 0; o < r.length;) {
22584 var a = E.trustAsHtml('<iframe src="https://embed.ted.com/talks/' + r[o].split("/")[2] + '.html" height="' + i.height + '" width="' + i.width + '"></iframe>');
22585 s.videoServices.push(a), o++
22589 dotsubEmbed: function(e, t) {
22590 var n = /dotsub.com\/view\/[a-zA-Z0-9-]+/gi,
22591 r = e.match(n) ? e.match(n).getUnique() : null,
22592 i = l.calcDimensions(t);
22594 for (var o = 0; o < r.length;) {
22595 var a = E.trustAsHtml('<iframe src="https://dotsub.com/media/' + r[o].split("/")[2] + '/embed/" width="' + i.width + '" height="' + i.height + '"></iframe>');
22596 s.videoServices.push(a), o++
22600 liveleakEmbed: function(e, t) {
22601 var n = /liveleak.com\/view\?i=[a-zA-Z0-9_]+/gi,
22602 r = e.match(n) ? e.match(n).getUnique() : null,
22603 i = l.calcDimensions(t);
22605 for (var o = 0; o < r.length;) {
22606 var a = E.trustAsHtml('<iframe src="http://www.liveleak.com/e/' + r[o].split("=")[1] + '" height="' + i.height + '" width="' + i.width + '"></iframe></div>');
22607 s.videoServices.push(a), o++
22613 return e.match(/((?:https?):\/\/\S*\.(?:wav|mp3|ogg))/gi) && (s.audio.url = E.trustAsResourceUrl(RegExp.$1)), e
22615 a = function(e, t) {
22616 var n = /soundcloud.com\/[a-zA-Z0-9-_]+\/[a-zA-Z0-9-_]+/gi,
22617 r = e.match(n) ? e.match(n).getUnique() : null;
22619 for (var i = 0; i < r.length;) {
22620 var o = E.trustAsHtml('<iframe height="160" scrolling="no" src="https://w.soundcloud.com/player/?url=https://' + r[i] + "&auto_play=" + t.soundCloudOptions.autoPlay + "&hide_related=" + t.soundCloudOptions.hideRelated + "&show_comments=" + t.soundCloudOptions.showComments + "&show_user=" + t.soundCloudOptions.showUser + "&show_reposts=" + t.soundCloudOptions.showReposts + "&visual=" + t.soundCloudOptions.visual + "&download=" + t.soundCloudOptions.download + "&color=" + t.soundCloudOptions.themeColor + "&theme_color=" + t.soundCloudOptions.themeColor + '"></iframe>');
22621 s.videoServices.push(o), i++
22626 var t = /spotify.com\/track\/[a-zA-Z0-9_]+/gi,
22627 n = e.match(t) ? e.match(t).getUnique() : null;
22629 for (var r = 0; r < n.length;) {
22630 var i = E.trustAsHtml('<iframe src="https://embed.spotify.com/?uri=spotify:track:' + n[r].split("/")[2] + '" height="80"></iframe>');
22631 s.audioServices.push(i), r++
22636 return e.match(/((?:https?):\/\/\S*\.(?:gif|jpg|jpeg|tiff|png|svg|webp))/gi) && (s.image.url = RegExp.$1), e
22639 return e = e.replace(/(`+)(\s|[a-z]+)\s*([\s\S]*?[^`])\s*\1(?!`)/gm, function(e, t, n, r) {
22641 i = (i = (i = i.replace(/^([ \t]*)/g, "")).replace(/[ \t]*$/g, "")).replace(/:\/\//g, "~P");
22643 return n && o.push(n), '<pre><code class="ne-code hljs ' + n + '">' + hljs.highlightAuto(i, o).value + "</code></pre>"
22647 return e.match(/((?:https?):\/\/\S*\.(?:pdf|PDF))/gi) && (s.pdf.url = E.trustAsResourceUrl(RegExp.$1)), e
22649 h = function(e, t) {
22650 if (!window.twttr) throw new ReferenceError("twttr is not defined. Load http://platform.twitter.com/widgets.js");
22651 var n = /https:\/\/twitter\.com\/\w+\/\w+\/\d+/gi,
22652 r = e.match(n) ? e.match(n).getUnique() : null;
22653 if (s.tweets = [], r)
22654 for (var i = 0; i < r.length;) {
22655 var o = "https://api.twitter.com/1/statuses/oembed.json?omit_script=true&callback=JSON_CALLBACK&url=" + r[i] + "&maxwidth=" + t.tweetOptions.maxWidth + "&hide_media=" + t.tweetOptions.hideMedia + "&hide_thread=" + t.tweetOptions.hideThread + "&align=" + t.tweetOptions.align + "&lang=" + t.tweetOptions.lang;
22656 C.jsonp(o).success(function(e) {
22657 s.tweets.push(e.html), s.tweets.length == r.length && k(function() {
22658 twttr.widgets.load()
22664 p = function(e, t) {
22665 var n = /http:\/\/codepen.io\/([A-Za-z0-9_]+)\/pen\/([A-Za-z0-9_]+)/gi,
22666 r = e.match(n) ? e.match(n).getUnique() : null;
22668 for (var i = 0; i < r.length;) {
22669 var o = E.trustAsHtml('<iframe scrolling="no" height="' + t.codepenHeight + '" src="' + r[i].replace(/\/pen\//, "/embed/") + "/?height=" + t.codepenHeight + '" frameborder="no" allowtransparency="true" allowfullscreen="true"></iframe>');
22670 s.codeServices.push(o), i++
22674 m = function(e, t) {
22675 var n = /jsfiddle.net\/[a-zA-Z0-9_]+\/[a-zA-Z0-9_]+/gi,
22676 r = e.match(n) ? e.match(n).getUnique() : null;
22678 for (var i = 0; i < r.length;) {
22679 var o = E.trustAsHtml('<iframe height="' + t.jsfiddleHeight + '" src="http://' + r[i] + '/embedded"></iframe>');
22680 s.codeServices.push(o), i++
22684 g = function(e, t) {
22685 var n = /jsbin.com\/[a-zA-Z0-9_]+\/[0-9_]+/gi,
22686 r = e.match(n) ? e.match(n).getUnique() : null;
22688 for (var i = 0; i < r.length;) {
22689 var o = E.trustAsHtml('<iframe height="' + t.jsbinHeight + '" class="jsbin-embed foo" src="http://' + r[i] + '/embed?html,js,output">Simple Animation Tests</iframe>');
22690 s.codeServices.push(o), i++
22694 v = function(e, t) {
22695 var n = /plnkr.co\/edit\/[a-zA-Z0-9\?=]+/gi,
22696 r = e.match(n) ? e.match(n).getUnique() : null;
22698 for (var i = 0; i < r.length;) {
22699 var o = -1 === r[i].indexOf("?") ? r[i].split("/")[2] : r[i].split("/")[2].split("?")[0],
22700 a = E.trustAsHtml('<iframe class="ne-plunker" src="http://embed.plnkr.co/' + o + '" height="' + t.jsbinHeight + '"></iframe>');
22701 s.codeServices.push(a), i++
22706 var t = /gist.github.com\/[a-zA-Z0-9_-]+\/([a-zA-Z0-9]+)/g,
22707 n = e.match(t) ? e.match(t).getUnique() : null;
22709 for (var r = 0; r < n.length;) s.gist.push(n[r].split("/")[2]), r++;
22712 y = function(e, t) {
22713 var n = /ideone.com\/[a-zA-Z0-9]{6}/gi,
22714 r = e.match(n) ? e.match(n).getUnique() : null;
22716 for (var i = 0; i < r.length;) {
22717 var o = E.trustAsHtml('<iframe src="http://ideone.com/embed/' + r[i].split("/")[1] + '" height="' + t.ideoneHeight + '"></iframe>');
22718 s.codeServices.push(o), i++
22722 if (i.code.highlight) {
22723 if (!window.hljs) throw new ReferenceError("hlsj (Highlight JS is not defined.");
22724 n = d(n), k(function() {
22725 i.code.lineNumbers && angular.element(".ne-code").each(function() {
22727 t = $(this).text().split("\n").length,
22728 n = $("<ul/>").addClass("pre-numbering");
22729 for (angular.element(this).addClass("has-numbering").parent().append(n); e <= t; e++) n.append(angular.element("<li/>").text(e))
22733 var _ = w("embed")(n, i).$$unwrapTrustedValue();
22734 if (i.video.embed) {
22735 if (!i.gdevAuth) throw "Youtube authentication key is required to get data from youtube.";
22738 _ = i.basicVideo ? l.embedBasic(_) : _, _ = i.audio.embed ? o(_) : _, _ = i.image.embed ? u(_) : _, _ = i.pdf.embed ? f(_) : _, _ = i.tweetEmbed ? h(_, i) : _, _ = i.twitchtvEmbed ? l.twitchtvEmbed(_, i) : _, _ = i.dailymotionEmbed ? l.dailymotionEmbed(_, i) : _, _ = i.tedEmbed ? l.tedEmbed(_, i) : _, _ = i.dotsubEmbed ? l.dotsubEmbed(_, i) : _, _ = i.liveleakEmbed ? l.liveleakEmbed(_, i) : _, _ = i.soundCloudEmbed ? a(_, i) : _, _ = i.spotifyEmbed ? c(_) : _, _ = i.codepenEmbed ? p(_, i) : _, _ = i.jsfiddleEmbed ? m(_, i) : _, _ = i.jsbinEmbed ? g(_, i) : _, _ = i.plunkerEmbed ? v(_, i) : _, _ = i.githubgistEmbed ? b(_, i) : _, _ = i.ideoneEmbed ? y(_, i) : _, s.neText = E.trustAsHtml(_)
22741 }]).directive("neGist", function() {
22745 template: "<div></div>",
22746 link: function(e, t, n) {
22748 i = document.createElement("iframe");
22749 i.setAttribute("width", "100%"), i.setAttribute("frameborder", "0"), i.id = "gist-" + r, t[0].appendChild(i);
22750 var o = '<html><head><base target="_parent"><style>table{font-size:12px;}</style></head><body onload="parent.document.getElementById(\'' + i.id + '\').style.height=document.body.scrollHeight + \'px\'" style="margin:10px 0;"><script type="text/javascript">!function(){"use strict";window.retargetLinks=function(){ var gists=document.getElementsByClassName("gist");for(var i=0,links;i<gists.length;i++){links=gists[i].getElementsByTagName("a");for(var j=0;j<links.length;j++){ links[j].setAttribute("target","_blank");}}}}();<\/script><script type="text/javascript" src="https://gist.github.com/' + r + '.js" onload="retargetLinks()"><\/script></body></html>',
22752 i.contentDocument ? a = i.contentDocument : i.contentWindow && (a = i.contentWindow.document), a.open(), a.writeln(o), a.close()
22759 var re, ie, oe, ae, Z = 1,
22764 X = "$$ngAnimateChildren";
22765 ie = void 0 === f.ontransitionend && void 0 !== f.onwebkittransitionend ? ("-webkit-", re = "WebkitTransition", "webkitTransitionEnd transitionend") : (re = "transition", "transitionend"), ae = void 0 === f.onanimationend && void 0 !== f.onwebkitanimationend ? ("-webkit-", oe = "WebkitAnimation", "webkitAnimationEnd animationend") : (oe = "animation", "animationend");
22766 var i = "Duration",
22767 ue = "TimingFunction",
22773 a = e.$$minErr("ng");
22775 function h(e, t, n) {
22776 if (!e) throw a("areq", "Argument '{0}' is {1}", t || "?", n || "required");
22781 return e || t ? e ? t ? (Se(e) && (e = e.join(" ")), Se(t) && (t = t.join(" ")), e + " " + t) : e : t : ""
22784 function fe(e, n, r) {
22786 return e = Se(e) ? e : e && De(e) && e.length ? e.split(/\s+/) : [], Ae(e, function(e, t) {
22787 e && 0 < e.length && (i += 0 < t ? " " : "", i += r ? n + e : e + n)
22792 if (e instanceof Ne) switch (e.length) {
22796 if (e[0].nodeType === Z) return e;
22801 if (e.nodeType === Z) return Ne(e)
22805 if (!e[0]) return e;
22806 for (var t = 0; t < e.length; t++) {
22808 if (n.nodeType === Z) return n
22813 return function(e, t) {
22814 var n, r, i, o, a, s;
22815 t.addClass && (n = l, r = e, i = t.addClass, Ae(r, function(e) {
22817 }), t.addClass = null), t.removeClass && (o = l, a = e, s = t.removeClass, Ae(a, function(e) {
22818 o.removeClass(e, s)
22819 }), t.removeClass = null)
22824 if (!(e = e || {}).$$prepared) {
22825 var t = e.domOperation || Ie;
22826 e.domOperation = function() {
22827 e.$$domOperationFired = !0, t(), t = Ie
22828 }, e.$$prepared = !0
22833 function pe(e, t) {
22837 function me(e, t) {
22838 t.from && (e.css(t.from), t.from = null)
22841 function ge(e, t) {
22842 t.to && (e.css(t.to), t.to = null)
22845 function J(e, t, n) {
22846 var r = t.options || {},
22847 i = n.options || {},
22848 o = (r.addClass || "") + " " + (i.addClass || ""),
22849 a = (r.removeClass || "") + " " + (i.removeClass || ""),
22850 s = function(i, e, t) {
22852 i = r(i), e = r(e), Ae(e, function(e, t) {
22854 }), t = r(t), Ae(t, function(e, t) {
22855 n[t] = 1 === n[t] ? null : -1
22863 De(e) && (e = e.split(" "));
22865 return Ae(e, function(e) {
22866 e.length && (t[e] = !0)
22869 return Ae(n, function(e, t) {
22871 1 === e ? (n = "addClass", r = !i[t] || i[t + le]) : -1 === e && (n = "removeClass", r = i[t] || i[t + se]), r && (o[n].length && (o[n] += " "), o[n] += t)
22873 }(e.attr("class"), o, a);
22874 i.preparationClasses && (r.preparationClasses = ee(i.preparationClasses, r.preparationClasses), delete i.preparationClasses);
22875 var l = r.domOperation !== Ie ? r.domOperation : null;
22876 return m(r, i), l && (r.domOperation = l), s.addClass ? r.addClass = s.addClass : r.addClass = null, s.removeClass ? r.removeClass = s.removeClass : r.removeClass = null, t.addClass = r.addClass, t.removeClass = r.removeClass, r
22880 return e instanceof Ne ? e[0] : e
22883 function be(e, t) {
22884 var n = t ? "paused" : "",
22886 return ye(e, [r, n]), [r, n]
22889 function ye(e, t) {
22895 function ee(e, t) {
22896 return e ? t ? e + " " + t : e : t
22898 var _e = function(e, t) {
22899 var n = t ? "-" + t + "s" : "";
22900 return ye(e, [r, n]), [r, n]
22902 s = ["$interpolate", function(o) {
22904 link: function(e, t, n) {
22905 var r = n.ngAnimateChildren;
22908 e = "on" === e || "true" === e, t.data(X, e)
22910 De(r) && 0 === r.length ? t.data(X, !0) : (i(o(r)(e)), n.$observe("ngAnimateChildren", i))
22914 $e = "$$animateCss",
22916 transitionDuration: t,
22917 transitionDelay: r,
22918 transitionProperty: re + "Property",
22919 animationDuration: de,
22921 animationIterationCount: oe + "IterationCount"
22924 transitionDuration: t,
22925 transitionDelay: r,
22926 animationDuration: de,
22930 function Ee(e, t) {
22931 return [t ? n : r, e + "s"]
22934 function Ce(e, t, n) {
22935 var a = Object.create(null),
22936 s = e.getComputedStyle(t) || {};
22937 return Ae(n, function(e, t) {
22938 var n, r, i = s[e];
22940 var o = i.charAt(0);
22941 ("-" === o || "+" === o || 0 <= o) && (n = 0, r = i.split(/\s*,\s*/), Ae(r, function(e) {
22942 "s" === e.charAt(e.length - 1) && (e = e.substring(0, e.length - 1)), e = parseFloat(e) || 0, n = n ? Math.max(e, n) : e
22943 }), i = n), 0 === i && (i = null), a[t] = i
22949 return 0 === e || null != e
22952 function xe(e, t) {
22955 return t ? n += i : r += " linear all", [n, r]
22958 function Te(t, n, e) {
22959 Ae(e, function(e) {
22960 t[e] = te(t[e]) ? t[e] : n.style.getPropertyValue(e)
22963 var Me, m, Ae, Se, te, g, $, ne, De, Oe, Ne, Ie, c = ["$animateProvider", function(e) {
22964 this.$get = ["$window", "$$jqLite", "$$AnimateRunner", "$timeout", "$$animateCache", "$$forceReflow", "$sniffer", "$$rAFScheduler", "$$animateQueue", function(Y, G, K, Z, X, n, Q, t, J) {
22969 r.push(e), t.waitUntilQuiet(function() {
22971 for (var e = n(), t = 0; t < r.length; t++) r[t](e);
22976 function ne(e, t, n, r) {
22977 var i = function(e, t, n, r, i) {
22979 o || "infinite" === (o = Ce(Y, e, i)).animationIterationCount && (o.animationIterationCount = 1);
22980 var a = r || 0 < o.transitionDuration || 0 < o.animationDuration;
22981 return X.put(n, o, a), o
22983 o = i.animationDelay,
22984 a = i.transitionDelay;
22985 return i.maxDelay = o && a ? Math.max(o, a) : o || a, i.maxDuration = Math.max(i.animationDuration * i.animationIterationCount, i.transitionDuration), i
22987 return function(c, e) {
22989 u.$$prepared || (u = he(Me(u)));
22992 if (!f || !f.parentNode || !J.enabled()) return B();
22993 var t, n, h, o, a, r, i, p, m, g, v, b, y = [],
22994 s = (c.attr("class"), n = {}, (t = u) && (t.to || t.from) && (n.to = t.to, n.from = t.from), n),
22996 if (0 === u.duration || !Q.animations && !Q.transitions) return B();
22997 var $ = u.event && Se(u.event) ? u.event.join(" ") : u.event,
22998 l = $ && u.structural,
23001 l ? w = fe($, ce, !0) : $ && (w = $), u.addClass && (E += fe(u.addClass, se)), u.removeClass && (E.length && (E += " "), E += fe(u.removeClass, le)), u.applyClassesEarly && E.length && ee(c, u);
23002 var C = [w, E].join(" ").trim(),
23003 k = s.to && 0 < Object.keys(s.to).length;
23004 if (!(0 < (u.keyframeStyle || "").length) && !k && !C) return B();
23005 var x, T, M = X.cacheKey(f, $, u.addClass, u.removeClass);
23006 if (X.containsCachedAnimationWithoutDuration(M)) return C = null, B();
23007 if (0 < u.stagger) {
23008 var A = parseFloat(u.stagger);
23010 transitionDelay: A,
23012 transitionDuration: 0,
23013 animationDuration: 0
23015 } else x = function(e, t, n, r) {
23016 var i, o = "stagger-" + n;
23017 if (0 < X.count(n) && !(i = X.get(o))) {
23018 var a = fe(t, "-stagger");
23019 G.addClass(e, a), (i = Ce(Y, e, r)).animationDuration = Math.max(i.animationDuration, 0), i.transitionDuration = Math.max(i.transitionDuration, 0), G.removeClass(e, a), X.put(o, i, !0)
23023 if (u.$$skipPreparationClasses || G.addClass(c, C), u.transitionStyle) {
23024 var S = [re, u.transitionStyle];
23025 ye(f, S), y.push(S)
23027 if (0 <= u.duration) {
23028 T = 0 < f.style[re].length;
23029 var D = xe(u.duration, T);
23030 ye(f, D), y.push(D)
23032 if (u.keyframeStyle) {
23033 var O = [oe, u.keyframeStyle];
23034 ye(f, O), y.push(O)
23036 var N = x ? 0 <= u.staggerIndex ? u.staggerIndex : X.count(M) : 0,
23038 I && !u.skipBlocking && _e(f, 9999);
23039 var R = ne(f, 0, M, !l),
23041 p = Math.max(P, 0), g = R.maxDuration;
23043 if (H.hasTransitions = 0 < R.transitionDuration, H.hasAnimations = 0 < R.animationDuration, H.hasTransitionAll = H.hasTransitions && "all" === R.transitionProperty, H.applyTransitionDuration = k && (H.hasTransitions && !H.hasTransitionAll || H.hasAnimations && !H.hasTransitions), H.applyAnimationDuration = u.duration && H.hasAnimations, H.applyTransitionDelay = ke(u.delay) && (H.applyTransitionDuration || H.hasTransitions), H.applyAnimationDelay = ke(u.delay) && H.hasAnimations, H.recalculateTimingStyles = 0 < E.length, (H.applyTransitionDuration || H.applyAnimationDuration) && (g = u.duration ? parseFloat(u.duration) : g, H.applyTransitionDuration && (H.hasTransitions = !0, R.transitionDuration = g, T = 0 < f.style[re + "Property"].length, y.push(xe(g, T))), H.applyAnimationDuration && (H.hasAnimations = !0, R.animationDuration = g, y.push([de, g + "s"]))), 0 === g && !H.recalculateTimingStyles) return B();
23044 var j, L = fe(C, "-active");
23045 null != u.delay && ("boolean" != typeof u.delay && (j = parseFloat(u.delay), p = Math.max(j, 0)), H.applyTransitionDelay && y.push(Ee(j)), H.applyAnimationDelay && y.push(Ee(j, !0)));
23046 return null == u.duration && 0 < R.transitionDuration && (H.recalculateTimingStyles = H.recalculateTimingStyles || I), m = 1e3 * p, v = 1e3 * g, u.skipBlocking || (H.blockTransition = 0 < R.transitionDuration, H.blockKeyframeAnimation = 0 < R.animationDuration && 0 < x.animationDelay && 0 === x.animationDuration), u.from && (u.cleanupStyles && Te(d, f, Object.keys(u.from)), me(c, u)), H.blockTransition || H.blockKeyframeAnimation ? V(g) : u.skipBlocking || _e(f, !1), {
23049 start: function() {
23050 if (!h) return r = new K(i = {
23068 if (!(h || a && o)) {
23069 o = !(h = !0), C && !u.$$skipPreparationClasses && G.removeClass(c, C), L && G.removeClass(c, L), be(f, !1), _e(f, !1), Ae(y, function(e) {
23071 }), ee(c, u), pe(c, u), Object.keys(d).length && Ae(d, function(e, t) {
23072 e ? f.style.setProperty(t, e) : f.style.removeProperty(t)
23073 }), u.onDone && u.onDone(), _ && _.length && c.off(_.join(" "), z);
23074 var t = c.data($e);
23075 t && (Z.cancel(t[0].timer), c.removeData($e)), r && r.complete(!e)
23080 H.blockTransition && _e(f, e), H.blockKeyframeAnimation && be(f, !!e)
23089 start: function() {
23097 e.stopPropagation();
23098 var t = e.originalEvent || e;
23099 if (t.target === f) {
23100 var n = t.$manualTimeStamp || Date.now(),
23101 r = parseFloat(t.elapsedTime.toFixed(3));
23102 Math.max(n - b, 0) >= m && g <= r && (a = !0, U())
23108 if (f.parentNode) {
23109 var e = function(e) {
23110 if (a) o && e && (o = !1, U());
23111 else if (o = !e, R.animationDuration) {
23113 o ? y.push(t) : (r = t, i = (n = y).indexOf(r), 0 <= r && n.splice(i, 1))
23117 t = 0 < N && (R.transitionDuration && 0 === x.transitionDuration || R.animationDuration && 0 === x.animationDuration) && Math.max(x.animationDelay, x.transitionDelay);
23118 t ? Z(n, Math.floor(t * N * 1e3), !1) : n(), i.resume = function() {
23120 }, i.pause = function() {
23127 if (V(!1), Ae(y, function(e) {
23131 }), ee(c, u), G.addClass(c, L), H.recalculateTimingStyles) {
23132 if (f.getAttribute("class") + " " + C, M = X.cacheKey(f, $, u.addClass, u.removeClass), R = ne(f, 0, M, !1), P = R.maxDelay, p = Math.max(P, 0), 0 === (g = R.maxDuration)) return void U();
23133 H.hasTransitions = 0 < R.transitionDuration, H.hasAnimations = 0 < R.animationDuration
23135 if (H.applyAnimationDelay && (P = "boolean" != typeof u.delay && ke(u.delay) ? parseFloat(u.delay) : P, p = Math.max(P, 0), R.animationDelay = P, j = Ee(P, !0), y.push(j), f.style[j[0]] = j[1]), m = 1e3 * p, v = 1e3 * g, u.easing) {
23136 var e, t = u.easing;
23137 H.hasTransitions && (e = re + ue, y.push([e, t]), f.style[e] = t), H.hasAnimations && (e = oe + ue, y.push([e, t]), f.style[e] = t)
23139 R.transitionDuration && _.push(ie), R.animationDuration && _.push(ae), b = Date.now();
23140 var n = m + 1.5 * v,
23142 i = c.data($e) || [],
23146 (o = r > a.expectedEndTime) ? Z.cancel(a.timer): i.push(U)
23149 var s = Z(l, n, !1);
23153 }, i.push(U), c.data($e, i)
23155 _.length && c.on(_.join(" "), z), u.to && (u.cleanupStyles && Te(d, f, Object.keys(u.to)), ge(c, u))
23160 var e = c.data($e);
23162 for (var t = 1; t < e.length; t++) e[t]();
23170 u = ["$$animationProvider", function(e) {
23171 e.drivers.push("$$animateCssDriver");
23172 var y = "ng-animate-shim",
23173 _ = "ng-anchor-out";
23174 this.$get = ["$animateCss", "$rootScope", "$$AnimateRunner", "$rootElement", "$sniffer", "$$jqLite", "$document", function(h, e, p, t, n, r, i) {
23175 if (!n.animations && !n.transitions) return Ie;
23176 var o, m = i[0].body,
23178 g = Ne((o = a).parentNode && 11 === o.parentNode.nodeType || m.contains(a) ? a : m);
23179 return function(e) {
23180 return e.from && e.to ? function(e, t, n, r) {
23184 if (Ae(r, function(e) {
23185 var t = function(e, t, i) {
23186 var o = Ne(ve(t).cloneNode(!0)),
23188 t.addClass(y), i.addClass(y), o.addClass("ng-anchor"), g.append(o);
23189 var r, n, s = (n = h(o, {
23193 })).$$willAnimate ? n : null;
23194 if (!s && !(r = d())) return f();
23197 start: function() {
23198 var e, t = l.start();
23199 return t.done(function() {
23200 if (t = null, !r && (r = d())) return (t = r.start()).done(function() {
23201 t = null, f(), e.complete()
23217 r = ve(e).getBoundingClientRect();
23218 return Ae(["width", "height", "top", "left"], function(e) {
23227 n[e] = Math.floor(t) + "px"
23232 return e.attr("class") || ""
23241 addClass: "ng-anchor-in " + t,
23242 removeClass: _ + " " + n,
23245 return r.$$willAnimate ? r : null
23249 o.remove(), t.removeClass(y), i.removeClass(y)
23253 }), !i && !o && 0 === a.length) return;
23255 start: function() {
23257 i && t.push(i.start()), o && t.push(o.start()), Ae(a, function(e) {
23264 return p.all(t, function(e) {
23269 Ae(t, function(e) {
23275 }(e.from, e.to, e.classes, e.anchors) : s(e)
23279 return e.replace(/\bng-\S+\b/g, "")
23283 return De(e) && (e = e.split(" ")), De(t) && (t = t.split(" ")), e.filter(function(e) {
23284 return -1 === t.indexOf(e)
23290 n = e.options || {};
23291 e.structural && (n.event = e.event, n.structural = !0, n.applyClassesEarly = !0, "leave" === e.event && (n.onDone = n.domOperation)), n.preparationClasses && (n.event = ee(n.event, n.preparationClasses));
23293 return r.$$willAnimate ? r : null
23297 d = ["$animateProvider", function(_) {
23298 this.$get = ["$injector", "$$AnimateRunner", "$$jqLite", function(v, b, e) {
23300 return function(e, t, n, r) {
23302 3 === arguments.length && ne(n) && (r = n, n = null), r = he(r), n || (n = e.attr("class") || "", r.addClass && (n += " " + r.addClass), r.removeClass && (n += " " + r.removeClass));
23303 var o, a, s, l, c, u = r.addClass,
23306 e = Se(e) ? e : e.split(" ");
23307 for (var t = [], n = {}, r = 0; r < e.length; r++) {
23309 o = _.$$registeredAnimations[i];
23310 o && !n[i] && (t.push(v.get(o)), n[i] = !0)
23314 f.length && (s = "leave" === t ? (l = "leave", "afterLeave") : (l = "before" + t.charAt(0).toUpperCase() + t.substr(1), t), "enter" !== t && "move" !== t && (o = g(e, t, r, f, l)), a = g(e, t, r, f, s));
23315 if (o || a) return {
23318 return c ? c.end() : (p(), (c = new b).complete(!0)), c
23320 start: function() {
23325 return o && e.push(function(e) {
23327 }), e.length ? e.push(function(e) {
23329 }) : h(), a && e.push(function(e) {
23335 cancel: function() {
23338 }), b.chain(e, n), c;
23345 i || ((t || Ie)(e), n(e))
23351 r.domOperation(), y(e, r)
23355 i = !0, h(), pe(e, r)
23358 function m(a, s, l, e, t) {
23360 return Ae(e, function(e) {
23362 o && n.push(function() {
23365 r || (r = !0, (n || Ie)(e), t.complete(!e))
23371 cancel: function() {
23374 }), n = function(e, t, n, r, i) {
23378 o = [t, r.from, r.to, i];
23386 case "removeClass":
23393 var a = e.apply(e, o);
23395 if ($(a.start) && (a = a.start()), a instanceof b) a.done(i);
23396 else if ($(a)) return a;
23398 }(o, a, s, l, function(e) {
23405 function g(e, t, n, r, i) {
23406 var o, a, s = m(e, t, n, r, i);
23407 0 === s.length && ("beforeSetClass" === i ? (o = m(e, "removeClass", n, r, "beforeRemoveClass"), a = m(e, "addClass", n, r, "beforeAddClass")) : "setClass" === i && (o = m(e, "removeClass", n, r, "removeClass"), a = m(e, "addClass", n, r, "addClass")), o && (s = s.concat(o)), a && (s = s.concat(a)));
23408 if (0 !== s.length) return function(e) {
23410 return s.length && Ae(s, function(e) {
23412 }), n.length ? b.all(n, e) : e(),
23414 Ae(n, function(e) {
23415 t ? e.cancel() : e.end()
23423 v = ["$$animationProvider", function(e) {
23424 e.drivers.push("$$animateJsDriver"), this.$get = ["$$animateJs", "$$AnimateRunner", function(o, a) {
23425 return function(e) {
23426 if (e.from && e.to) {
23429 if (!r && !i) return;
23431 start: function() {
23433 r && e.push(r.start()), i && e.push(i.start()), a.all(e, function(e) {
23443 return function() {
23444 Ae(e, function(e) {
23460 return o(t, n, i, r)
23464 Re = "data-ng-animate",
23465 Pe = "$ngAnimatePin",
23466 b = ["$animateProvider", function(d) {
23476 addClass: e.addClass,
23477 removeClass: e.removeClass,
23485 var n = function(e) {
23486 if (!e) return null;
23487 var t = e.split(r),
23488 n = Object.create(null);
23489 return Ae(t, function(e) {
23493 return e.split(r).some(function(e) {
23499 function G(e, t, n) {
23500 return i[e].some(function(e) {
23506 var n = 0 < (e.addClass || "").length,
23507 r = 0 < (e.removeClass || "").length;
23508 return t ? n && r : n || r
23510 i.join.push(function(e, t) {
23511 return !e.structural && K(e)
23512 }), i.skip.push(function(e, t) {
23513 return !e.structural && !K(e)
23514 }), i.skip.push(function(e, t) {
23515 return "leave" === t.event && e.structural
23516 }), i.skip.push(function(e, t) {
23517 return t.structural && 2 === t.state && !e.structural
23518 }), i.cancel.push(function(e, t) {
23519 return t.structural && e.structural
23520 }), i.cancel.push(function(e, t) {
23521 return 2 === t.state && e.structural
23522 }), i.cancel.push(function(e, t) {
23523 if (t.structural) return !1;
23524 var n = e.addClass,
23528 return !(Oe(n) && Oe(r) || Oe(i) && Oe(o)) && (a(n, o) || a(r, i))
23529 }), this.$get = ["$$rAF", "$rootScope", "$rootElement", "$document", "$$Map", "$$animation", "$$AnimateRunner", "$templateRequest", "$$jqLite", "$$forceReflow", "$$isDocumentHidden", function(M, A, S, D, e, O, N, t, n, r, I) {
23537 var o = A.$watch(function() {
23538 return 0 === t.totalPendingRequests
23540 e && (o(), A.$$postDigest(function() {
23541 A.$$postDigest(function() {
23542 null === H && (H = !0)
23546 j = Object.create(null),
23547 a = d.customFilter(),
23548 s = d.classNameFilter(),
23553 F = s ? function(e, t) {
23554 var n = [e.getAttribute("class"), t.addClass, t.removeClass].join(" ");
23562 var V = f.Node.prototype.contains || function(e) {
23563 return this === e || !!(16 & this.compareDocumentPosition(e))
23566 function c(e, t, n) {
23568 return e.filter(function(e) {
23569 return !(e.node === r && (!n || e.callback === n))
23574 "close" !== e || t.parentNode || u.off(t)
23577 on: function(e, t, n) {
23579 j[e] = j[e] || [], j[e].push({
23582 }), Ne(t).on("$destroy", function() {
23583 R.get(r) || u.off(e, t, n)
23586 off: function(e, t, n) {
23587 if (1 !== arguments.length || De(e)) {
23589 r && (j[e] = 1 === arguments.length ? null : c(r, t, n))
23591 for (var i in t = e, j) j[i] = c(j[i], t)
23593 pin: function(e, t) {
23594 h(g(e), "element", "not an element"), h(g(t), "parentElement", "not an element"), e.data(Pe, t)
23596 push: function(e, t, n, r) {
23597 return (n = n || {}).domOperation = r,
23598 function(i, o, e) {
23602 d = u && u.parentNode;
23605 t = (n = !1, function(e) {
23606 n ? e() : A.$$postDigest(function() {
23611 Se(a.addClass) && (a.addClass = a.addClass.join(" "));
23612 a.addClass && !De(a.addClass) && (a.addClass = null);
23613 Se(a.removeClass) && (a.removeClass = a.removeClass.join(" "));
23614 a.removeClass && !De(a.removeClass) && (a.removeClass = null);
23615 a.from && !ne(a.from) && (a.from = null);
23616 a.to && !ne(a.to) && (a.to = null);
23617 if (!(H && u && L(u, o, e) && F(u, a))) return T(), s;
23618 var l = 0 <= ["enter", "move", "leave"].indexOf(o),
23621 h = !f && R.get(u) || {},
23623 f || p && 1 === h.state || (f = ! function(e, t, n) {
23624 var r, i = D[0].body,
23626 a = e === i || "HTML" === e.nodeName,
23630 u = Ne.data(e, Pe);
23632 for (; t && (s || (s = t === o), t.nodeType === Z);) {
23633 var d = R.get(t) || {};
23636 if (!0 === f && !1 !== c) {
23639 }!1 === f && (c = !1), l = d.structural
23641 if (Oe(r) || !0 === r) {
23642 var h = Ne.data(t, X);
23645 if (l && !1 === r) break;
23646 if (a || (a = t === i), a && s) break;
23647 t = s || !(u = Ne.data(t, Pe)) ? t.parentNode : ve(u)
23649 return (!l || r) && !0 !== c && s && a
23651 if (f) return r && x(s, o, "start", Y(a)), T(), r && x(s, o, "close", Y(a)), s;
23652 l && (m = u.querySelectorAll("[" + Re + "]"), Ae(m, function(e) {
23653 var t = parseInt(e.getAttribute(Re), 10),
23655 if (n) switch (t) {
23667 addClass: a.addClass,
23668 removeClass: a.removeClass,
23674 var v = G("skip", g, h);
23675 if (v) return 2 === h.state ? (T(), s) : (J(c, h, g), h.runner);
23676 var b = G("cancel", g, h);
23678 if (2 === h.state) h.runner.end();
23680 if (!h.structural) return J(c, h, g), h.runner;
23684 var y = G("join", g, h);
23686 if (2 !== h.state) return _ = c, w = a, E = "", ($ = l ? o : null) && (E = fe($, ce, !0)), w.addClass && (E = ee(E, fe(w.addClass, se))), w.removeClass && (E = ee(E, fe(w.removeClass, le))), E.length && (w.preparationClasses = E, _.addClass(E)), o = g.event = h.event, a = J(c, h, g), h.runner;
23692 var C = g.structural;
23693 C || (C = "animate" === g.event && 0 < Object.keys(g.options.to || {}).length || K(g));
23694 if (!C) return T(), z(u), s;
23695 var k = (h.counter || 0) + 1;
23696 return g.counter = k, W(u, 1, g), A.$$postDigest(function() {
23701 var n = 0 < (c.parent() || []).length && ("animate" === e.event || e.structural || K(e));
23702 if (t || e.counter !== k || !n) return t && (q(c, a), pe(c, a)), (t || l && e.event !== o) && (a.domOperation(), s.end()), void(n || z(u));
23703 o = !e.structural && K(e, !0) ? "setClass" : e.event, W(u, 2);
23704 var r = O(c, o, e.options);
23705 s.setHost(r), x(s, o, "start", Y(a)), r.done(function(e) {
23708 t && t.counter === k && z(u), x(s, o, "close", Y(a))
23712 function x(e, a, s, l) {
23714 var t, n, r, i, e, o = (t = d, n = u, i = [], (e = j[r = a]) && Ae(e, function(e) {
23715 V.call(e.node, n) ? i.push(e.callback) : "leave" === r && V.call(e.node, t) && i.push(e.callback)
23717 o.length ? M(function() {
23718 Ae(o, function(e) {
23722 }), e.progress(a, s, l)
23727 t = c, (n = a).preparationClasses && (t.removeClass(n.preparationClasses), n.preparationClasses = null), n.activeClasses && (t.removeClass(n.activeClasses), n.activeClasses = null), q(c, a), pe(c, a), a.domOperation(), s.complete(!e)
23731 enabled: function(e, t) {
23732 var n = arguments.length;
23733 if (0 === n) t = !!H;
23736 1 === n ? t = !P.get(r) : (P.has(r) || Ne(e).on("$destroy", i), P.set(r, !t))
23737 } else t = H = !!e;
23744 e.removeAttribute(Re), R.delete(e)
23747 function W(e, t, n) {
23748 (n = n || {}).state = t, e.setAttribute(Re, t);
23750 i = r ? m(r, n) : n;
23755 y = ["$animateProvider", function(e) {
23756 var y = "ng-animate-ref",
23757 _ = this.drivers = [],
23758 $ = "$$animationRunner",
23759 w = "$$animatePrepareClasses";
23764 this.$get = ["$$jqLite", "$rootScope", "$injector", "$$AnimateRunner", "$$Map", "$$rAFScheduler", "$$animateCache", function(d, c, f, h, p, m, g) {
23767 return function(t, n, u) {
23769 var e = 0 <= ["enter", "move", "leave"].indexOf(n),
23774 cancel: function() {
23778 if (!_.length) return l(), r;
23779 var i, o = k(t.attr("class"), k(u.addClass, u.removeClass)),
23781 return a && (o += " " + a, u.tempClasses = null), e && t.data(w, "ng-" + n + "-prepare"), i = r, t.data($, i), v.push({
23787 beforeStart: function() {
23788 a = (a ? a + " " : "") + C, d.addClass(t, a);
23790 e && (d.removeClass(t, e), e = null)
23793 }), t.on("$destroy", s), 1 < v.length || c.$$postDigest(function() {
23795 Ae(v, function(e) {
23796 E(e.element) ? t.push(e) : e.close()
23798 var e = function(u) {
23801 Ae(u, function(e, n) {
23802 var t, r, i, o = e.element,
23805 l = 0 <= ["enter", "move"].indexOf(s),
23806 c = e.structural ? (r = (t = a).hasAttribute(y) ? [t] : t.querySelectorAll("[ng-animate-ref]"), i = [], Ae(r, function(e) {
23807 var t = e.getAttribute(y);
23808 t && t.length && i.push(e)
23811 var u = l ? "to" : "from";
23812 Ae(c, function(e) {
23813 var t = e.getAttribute(y);
23814 f[t] = f[t] || {}, f[t][u] = {
23823 return Ae(f, function(e, t) {
23827 var i = u[n.animationID],
23828 o = u[r.animationID],
23829 a = n.animationID.toString();
23833 beforeStart: function() {
23834 i.beforeStart(), o.beforeStart()
23836 close: function() {
23837 i.close(), o.close()
23839 classes: function(e, t) {
23840 e = e.split(" "), t = t.split(" ");
23841 for (var n = [], r = 0; r < e.length; r++) {
23843 if ("ng-" !== i.substring(0, 3))
23844 for (var o = 0; o < t.length; o++)
23851 }(i.classes, o.classes),
23856 s.classes.length ? d.push(s) : (d.push(i), d.push(o))
23858 p[a].anchors.push({
23863 var l = n ? n.animationID : r.animationID,
23865 h[c] || (h[c] = !0, d.push(u[l]))
23870 Ae(e, function(i) {
23871 var e = i.from ? i.from.element : i.element,
23873 t = (t ? t + " " : "") + C;
23874 var o = g.cacheKey(e[0], i.event, t, u.removeClass);
23879 var e, t = i.close;
23880 if (g.containsCachedAnimationWithoutDuration(o)) t();
23882 if (i.beforeStart(), E(i.anchors ? i.from.element || i.to.element : i.element)) {
23883 var n = function(e) {
23884 for (var t = _.length - 1; 0 <= t; t--) {
23895 r.done(function(e) {
23899 e.from && e.to ? (t(e.from.element), t(e.to.element)) : t(e.element);
23911 for (var r = function(e) {
23916 for (t = 0; t < e.length; t++) {
23918 o.set(n.domNode, e[t] = {
23919 domNode: n.domNode,
23920 element: n.element,
23925 for (t = 0; t < e.length; t++) a(e[t]);
23926 return function(e) {
23929 for (t = 0; t < e.children.length; t++) r.push(e.children[t]);
23933 for (t = 0; t < r.length; t++) {
23935 i <= 0 && (i = o, o = 0, n.push(a), a = []), a.push(s), s.children.forEach(function(e) {
23939 return a.length && n.push(a), n
23943 if (e.processed) return e;
23945 var t, n = e.domNode,
23947 for (o.set(n, e); r;) {
23948 if (t = o.get(r)) {
23949 t.processed || (t = a(t));
23954 return (t || i).children.push(e), e
23956 }(n), i = 0; i < r.length; i++)
23957 for (var o = r[i], a = 0; a < o.length; a++) {
23960 if (r[i][a] = s.fn, 0 !== i) {
23962 c && d.addClass(l, c)
23963 } else l.removeData(w)
23970 !e || "leave" === n && u.$$domOperationFired || e.end()
23974 t.off("$destroy", s), t.removeData($), b(t, u), pe(t, u), u.domOperation(), a && d.removeClass(t, a), r.complete(!e)
23979 e.module("ngAnimate", [], function() {
23980 Ie = e.noop, Me = e.copy, m = e.extend, Ne = e.element, Ae = e.forEach, Se = e.isArray, De = e.isString, ne = e.isObject, Oe = e.isUndefined, te = e.isDefined, $ = e.isFunction, g = e.isElement
23982 angularVersion: "1.7.9"
23983 }).directive("ngAnimateSwap", ["$animate", function(s) {
23986 transclude: "element",
23989 link: function(e, n, t, r, i) {
23991 e.$watchCollection(t.ngAnimateSwap || t.for, function(e) {
23992 o && s.leave(o), a && (a.$destroy(), a = null), (e || 0 === e) && i(function(e, t) {
23993 o = e, a = t, s.enter(e, null, n)
23998 }]).directive("ngAnimateChildren", s).factory("$$rAFScheduler", ["$$rAF", function(n) {
24002 r = r.concat(e), o()
24004 return r = e.queue = [], e.waitUntilQuiet = function(e) {
24005 i && i(), i = n(function() {
24012 for (var e = r.shift(), t = 0; t < e.length; t++) e[t]();
24013 i || n(function() {
24018 }]).provider("$$animateQueue", b).provider("$$animateCache", function() {
24019 var a = "$$ngAnimateParentKey",
24021 r = Object.create(null);
24022 this.$get = [function() {
24024 cacheKey: function(e, t, n, r) {
24025 var i = e.parentNode,
24026 o = [i[a] || (i[a] = ++s), t, e.getAttribute("class")];
24027 return n && o.push(n), r && o.push(r), o.join(" ")
24029 containsCachedAnimationWithoutDuration: function(e) {
24031 return t && !t.isValid || !1
24033 flush: function() {
24034 r = Object.create(null)
24036 count: function(e) {
24038 return t ? t.total : 0
24042 return t && t.value
24044 put: function(e, t, n) {
24045 r[e] ? (r[e].total++, r[e].value = t) : r[e] = {
24053 }).provider("$$animation", y).provider("$animateCss", c).provider("$$animateCssDriver", u).provider("$$animateJs", d).provider("$$animateJsDriver", v)
24054 }(window, window.angular),
24057 var h = "ngAriaDisable",
24058 n = t.module("ngAria", ["ng"]).info({
24059 angularVersion: "1.7.9"
24060 }).provider("$aria", function() {
24071 bindRoleForClick: !0
24074 function e(i, o, a, s) {
24075 return function(e, t, n) {
24076 if (!n.hasOwnProperty(h)) {
24077 var r = n.$normalize(o);
24078 !l[r] || c(t, a) || n[r] || e.$watch(n[i], function(e) {
24079 e = s ? !e : !!e, t.attr(o, e)
24084 this.config = function(e) {
24086 }, this.$get = function() {
24088 config: function(e) {
24095 o = ["BUTTON", "A", "INPUT", "TEXTAREA", "SELECT", "DETAILS", "SUMMARY"],
24096 c = function(e, t) {
24097 if (-1 !== t.indexOf(e[0].nodeName)) return !0
24099 n.directive("ngShow", ["$aria", function(e) {
24100 return e.$$watchExpr("ngShow", "aria-hidden", [], !0)
24101 }]).directive("ngHide", ["$aria", function(e) {
24102 return e.$$watchExpr("ngHide", "aria-hidden", [], !1)
24103 }]).directive("ngValue", ["$aria", function(e) {
24104 return e.$$watchExpr("ngValue", "aria-checked", o, !1)
24105 }]).directive("ngChecked", ["$aria", function(e) {
24106 return e.$$watchExpr("ngChecked", "aria-checked", o, !1)
24107 }]).directive("ngReadonly", ["$aria", function(e) {
24108 return e.$$watchExpr("ngReadonly", "aria-readonly", o, !1)
24109 }]).directive("ngRequired", ["$aria", function(e) {
24110 return e.$$watchExpr("ngRequired", "aria-required", o, !1)
24111 }]).directive("ngModel", ["$aria", function(u) {
24112 function d(e, t, n, r) {
24113 return u.config(t) && !n.attr(e) && (r || !c(n, o)) && ("hidden" !== n.attr("type") || "INPUT" !== n[0].nodeName)
24117 return !t.attr("role") && t.attr("type") === e && !c(t, o)
24121 require: "ngModel",
24123 compile: function(e, t) {
24124 if (!t.hasOwnProperty(h)) {
24125 var n, r, i, c = (r = (n = t).type, i = n.role, "checkbox" === (r || i) || "menuitemcheckbox" === i ? "checkbox" : "radio" === (r || i) || "menuitemradio" === i ? "radio" : "range" === r || "progressbar" === i || "slider" === i ? "range" : "");
24127 post: function(e, n, r, i) {
24128 var t = d("tabindex", "tabindex", n, !1);
24131 return i.$modelValue
24136 f(c, n) && n.attr("role", c), d("aria-checked", "ariaChecked", n, !1) && e.$watch(o, "radio" === c ? function(e) {
24137 var t = r.value == i.$viewValue;
24138 n.attr("aria-checked", t)
24140 n.attr("aria-checked", !i.$isEmpty(i.$viewValue))
24141 }), t && n.attr("tabindex", 0);
24144 if (f(c, n) && n.attr("role", "slider"), u.config("ariaValue")) {
24145 var a = !n.attr("aria-valuemin") && (r.hasOwnProperty("min") || r.hasOwnProperty("ngMin")),
24146 s = !n.attr("aria-valuemax") && (r.hasOwnProperty("max") || r.hasOwnProperty("ngMax")),
24147 l = !n.attr("aria-valuenow");
24148 a && r.$observe("min", function(e) {
24149 n.attr("aria-valuemin", e)
24150 }), s && r.$observe("max", function(e) {
24151 n.attr("aria-valuemax", e)
24152 }), l && e.$watch(o, function(e) {
24153 n.attr("aria-valuenow", e)
24156 t && n.attr("tabindex", 0)
24157 }!r.hasOwnProperty("ngRequired") && i.$validators.required && d("aria-required", "ariaRequired", n, !1) && r.$observe("required", function() {
24158 n.attr("aria-required", !!r.required)
24159 }), d("aria-invalid", "ariaInvalid", n, !0) && e.$watch(function() {
24162 n.attr("aria-invalid", !!e)
24169 }]).directive("ngDisabled", ["$aria", function(e) {
24170 return e.$$watchExpr("ngDisabled", "aria-disabled", o, !1)
24171 }]).directive("ngMessages", function() {
24174 require: "?ngMessages",
24175 link: function(e, t, n, r) {
24176 n.hasOwnProperty(h) || t.attr("aria-live") || t.attr("aria-live", "assertive")
24179 }).directive("ngClick", ["$aria", "$parse", function(i, n) {
24182 compile: function(e, t) {
24183 if (!t.hasOwnProperty(h)) {
24184 var r = n(t.ngClick);
24185 return function(n, e, t) {
24186 c(e, o) || (i.config("bindRoleForClick") && !e.attr("role") && e.attr("role", "button"), i.config("tabindex") && !e.attr("tabindex") && e.attr("tabindex", 0), !i.config("bindKeydown") || t.ngKeydown || t.ngKeypress || t.ngKeyup || e.on("keydown", function(e) {
24187 var t = e.which || e.keyCode;
24188 13 !== t && 32 !== t || (-1 !== o.indexOf(e.target.nodeName) || e.target.isContentEditable || e.preventDefault(), n.$apply(function() {
24198 }]).directive("ngDblclick", ["$aria", function(r) {
24199 return function(e, t, n) {
24200 n.hasOwnProperty(h) || !r.config("tabindex") || t.attr("tabindex") || c(t, o) || t.attr("tabindex", 0)
24203 }(window, window.angular),
24209 return ["$animate", function(f) {
24212 transclude: "element",
24215 require: "^^ngMessages",
24216 link: function(e, r, t, i, n) {
24217 var o, a, s, l, c, u;
24219 o = r[0], s = t.ngMessage || t.when;
24220 var d = function(e) {
24221 a = e ? p(e) ? e : e.split(/[\s,]+/) : null, i.reRender()
24223 (l = t.ngMessageExp || t.whenExp) ? (d(e.$eval(l)), e.$watchCollection(l, d)) : d(s)
24225 i.register(o, u = {
24226 test: function(e) {
24227 return function(e, t) {
24228 if (e) return p(e) ? 0 <= e.indexOf(t) : e.hasOwnProperty(t)
24231 attach: function() {
24232 c || n(function(e, t) {
24233 f.enter(e, null, r);
24234 var n = (c = e).$$attachId = i.getAttachId();
24235 c.on("$destroy", function() {
24236 c && c.$$attachId === n && (i.deregister(o, h), u.detach()), t.$destroy()
24240 detach: function() {
24243 c = null, f.leave(e)
24246 }, h), e.$on("$destroy", function() {
24253 t.module("ngMessages", [], function() {
24254 w = t.forEach, p = t.isArray, l = t.isString, c = t.element
24256 angularVersion: "1.7.9"
24257 }).directive("ngMessages", ["$animate", function(b) {
24258 var y = "ng-inactive";
24260 require: "ngMessages",
24262 controller: ["$element", "$scope", "$attrs", function(f, h, p) {
24266 this.getAttachId = function() {
24269 var g, v, o = this.messages = {};
24272 for (var n = t, r = []; n && n !== e;) {
24273 var i = n.$$ngMessageNode;
24274 if (i && i.length) return o[i];
24275 n.childNodes.length && -1 === r.indexOf(n) ? (r.push(n), n = n.childNodes[n.childNodes.length - 1]) : n.previousSibling ? n = n.previousSibling : (n = n.parentNode, r.push(n))
24278 this.render = function(e) {
24279 g = !1, v = e = e || {};
24280 for (var t = _(h, p.ngMessagesMultiple) || _(h, p.multiple), n = [], r = {}, i = 0, o = m.head, a = !1, s = 0; null != o;) {
24284 a || w(e, function(e, t) {
24285 if ($(e) && !c && (i++, l.test(t))) {
24287 r[t] = !0, c = !0, l.attach()
24289 }), c ? a = !t : n.push(l), o = o.next
24294 var u = n.length !== s,
24295 d = m.default && !u && 0 < i;
24296 d ? m.default.attach() : m.default && m.default.detach(), u || d ? b.setClass(f, "ng-active", y) : b.setClass(f, y, "ng-active")
24297 }, h.$watchCollection(p.ngMessages || p.for, m.render), this.reRender = function() {
24298 g || (g = !0, h.$evalAsync(function() {
24299 g && v && m.render(v)
24301 }, this.register = function(e, t, n) {
24302 if (n) m.default = t;
24304 var r = i.toString();
24308 function(e, t, n) {
24312 i ? (r.next = i.next, i.next = r) : (r.next = m.head, m.head = r)
24314 }(f[0], e, r), e.$$ngMessageNode = r, i++
24317 }, this.deregister = function(e, t) {
24318 if (t) delete m.default;
24320 var n = e.$$ngMessageNode;
24321 delete e.$$ngMessageNode,
24322 function(e, t, n) {
24326 i ? i.next = r.next : m.head = r.next
24327 }(f[0], e, n), delete o[n]
24335 return l(t) && 0 === t.length || $(e.$eval(t))
24339 return l(e) ? e.length : !!e
24341 }]).directive("ngMessagesInclude", ["$templateRequest", "$document", "$compile", function(i, o, a) {
24344 require: "^^ngMessages",
24345 link: function(t, n, e) {
24346 var r = e.ngMessagesInclude || e.src;
24347 i(r).then(function(e) {
24348 t.$$destroyed || (l(e) && !e.trim() ? s(n, r) : a(e)(t, function(e) {
24349 n.after(e), s(n, r)
24356 var n = a.$$createComment ? a.$$createComment("ngMessagesInclude", t) : o[0].createComment(" ngMessagesInclude: " + t + " "),
24358 e.after(r), e.remove()
24360 }]).directive("ngMessage", n()).directive("ngMessageExp", n()).directive("ngMessageDefault", n(!0))
24361 }(window, window.angular),
24362 function(F, de, fe) {
24364 de.module("ngMaterial", ["ng", "ngAnimate", "ngAria", "material.core", "material.core.animate", "material.core.gestures", "material.core.interaction", "material.core.layout", "material.core.meta", "material.core.theming.palette", "material.core.theming", "material.components.autocomplete", "material.components.backdrop", "material.components.bottomSheet", "material.components.button", "material.components.card", "material.components.checkbox", "material.components.chips", "material.components.colors", "material.components.content", "material.components.datepicker", "material.components.dialog", "material.components.divider", "material.components.fabActions", "material.components.fabShared", "material.components.fabSpeedDial", "material.components.fabToolbar", "material.components.gridList", "material.components.icon", "material.components.input", "material.components.list", "material.components.menu", "material.components.menuBar", "material.components.navBar", "material.components.panel", "material.components.progressCircular", "material.components.progressLinear", "material.components.radioButton", "material.components.select", "material.components.showHide", "material.components.sidenav", "material.components.slider", "material.components.sticky", "material.components.subheader", "material.components.swipe", "material.components.switch", "material.components.tabs", "material.components.toast", "material.components.toolbar", "material.components.tooltip", "material.components.truncate", "material.components.virtualRepeat", "material.components.whiteframe"]),
24367 if (t.has("$swipe")) {
24368 e.warn("You are using the ngTouch module. \nAngularJS Material already has mobile click, tap, and swipe support... \nngTouch is not supported with AngularJS Material!")
24373 e.decorator("$$rAF", ["$delegate", n]), e.decorator("$q", ["$delegate", r]), t.theme("default").primaryPalette("indigo").accentPalette("pink").warnPalette("deep-orange").backgroundPalette("grey")
24377 return o.throttle = function(e) {
24379 return function() {
24380 t = arguments, i = this, r = e, n || (n = !0, o(function() {
24381 r.apply(i, Array.prototype.slice.call(t)), n = !1
24388 return e.resolve || (e.resolve = e.when), e
24390 e.$inject = ["$log", "$injector"], t.$inject = ["$provide", "$mdThemingProvider"], n.$inject = ["$delegate"], r.$inject = ["$delegate"], de.module("material.core", ["ngAnimate", "material.core.animate", "material.core.layout", "material.core.interaction", "material.core.gestures", "material.core.theming"]).config(t).run(e)
24397 pre: function(e, t, n) {
24398 var r = n.mdAutoFocus || n.mdAutofocus || n.mdSidenavFocus;
24399 i(o(r)(e)), r && e.$watch(r, i);
24402 de.isUndefined(e) && (e = !0), t.toggleClass("md-autofocus", !!e)
24408 e.$inject = ["$parse"], de.module("material.core").directive("mdAutofocus", e).directive("mdAutoFocus", e).directive("mdSidenavFocus", e)
24409 }(), de.module("material.core").factory("$mdColorUtil", function() {
24411 rgbaToHex: function(e) {
24412 return ((e = e.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i)) && 4 === e.length ? "#" + ("0" + parseInt(e[1], 10).toString(16)).slice(-2) + ("0" + parseInt(e[2], 10).toString(16)).slice(-2) + ("0" + parseInt(e[3], 10).toString(16)).slice(-2) : "").toUpperCase()
24414 hexToRgba: function(e) {
24415 var t = "#" === e[0] ? e.substr(1) : e,
24417 r = t.substr(0, n),
24418 i = t.substr(n, n),
24419 o = t.substr(2 * n);
24420 return 1 === n && (r += r, i += i, o += o), "rgba(" + parseInt(r, 16) + "," + parseInt(i, 16) + "," + parseInt(o, 16) + ",0.1)"
24422 rgbToRgba: function(e) {
24423 return e.replace(")", ", 0.1)").replace("(", "a(")
24425 rgbaToRgb: function(e) {
24426 return e ? e.replace("rgba", "rgb").replace(/,[^),]+\)/, ")") : "rgb(0,0,0)"
24429 }), de.module("material.core").factory("$mdConstant", function() {
24430 var i = document.createElement("div"),
24432 var t, n, r = /^(Moz|webkit|ms)(?=[A-Z])/;
24434 if (n = r.exec(t)) return n[0]
24436 e = /webkit/i.test(o),
24437 a = /([:\-_]+(.))/g;
24440 var t = o + "-" + e,
24441 n = t.replace(a, function(e, t, n, r) {
24442 return r ? n.toUpperCase() : n
24444 r = n.charAt(0).toLowerCase() + n.substring(1);
24445 return s(i, e) ? e : s(i, n) ? n : s(i, r) ? r : e
24449 return de.isDefined(e.style[t])
24452 isInputKey: function(e) {
24453 return 31 <= e.keyCode && e.keyCode <= 90
24455 isNumPadKey: function(e) {
24456 return 3 === e.location && 97 <= e.keyCode && e.keyCode <= 105
24458 isMetaKey: function(e) {
24459 return 91 <= e.keyCode && e.keyCode <= 93
24461 isFnLockKey: function(e) {
24462 return 112 <= e.keyCode && e.keyCode <= 145
24464 isNavigationKey: function(e) {
24465 var t = r.KEY_CODE,
24466 n = [t.SPACE, t.ENTER, t.UP_ARROW, t.DOWN_ARROW];
24467 return -1 != n.indexOf(e.keyCode)
24469 hasModifierKey: function(e) {
24470 return e.ctrlKey || e.metaKey || e.altKey
24472 ELEMENT_MAX_PIXELS: 1533917,
24473 BEFORE_NG_ARIA: 210,
24493 TRANSITIONEND: "transitionend" + (e ? " webkitTransitionEnd" : ""),
24494 ANIMATIONEND: "animationend" + (e ? " webkitAnimationEnd" : ""),
24495 TRANSFORM: t("transform"),
24496 TRANSFORM_ORIGIN: t("transformOrigin"),
24497 TRANSITION: t("transition"),
24498 TRANSITION_DURATION: t("transitionDuration"),
24499 ANIMATION_PLAY_STATE: t("animationPlayState"),
24500 ANIMATION_DURATION: t("animationDuration"),
24501 ANIMATION_NAME: t("animationName"),
24502 ANIMATION_TIMING: t("animationTimingFunction"),
24503 ANIMATION_DIRECTION: t("animationDirection")
24506 xs: "(max-width: 599px)",
24507 "gt-xs": "(min-width: 600px)",
24508 sm: "(min-width: 600px) and (max-width: 959px)",
24509 "gt-sm": "(min-width: 960px)",
24510 md: "(min-width: 960px) and (max-width: 1279px)",
24511 "gt-md": "(min-width: 1280px)",
24512 lg: "(min-width: 1280px) and (max-width: 1919px)",
24513 "gt-lg": "(min-width: 1920px)",
24514 xl: "(min-width: 1920px)",
24515 landscape: "(orientation: landscape)",
24516 portrait: "(orientation: portrait)",
24519 MEDIA_PRIORITY: ["xl", "gt-lg", "lg", "gt-md", "md", "gt-sm", "sm", "gt-xs", "xs", "landscape", "portrait", "print"]
24525 var l = function() {
24528 e && !de.isArray(e) && (e = Array.prototype.slice.call(e)), s = !!s;
24531 items: function() {
24532 return [].concat(c)
24534 count: function() {
24540 itemAt: function(e) {
24541 return u(e) ? c[e] : null
24543 findBy: function(t, n) {
24544 return c.filter(function(e) {
24548 add: function(e, t) {
24550 de.isNumber(t) || (t = c.length);
24551 return c.splice(t, 0, e), d(e)
24553 remove: function(e) {
24554 t(e) && c.splice(d(e), 1)
24558 next: de.bind(null, n, !1),
24559 previous: de.bind(null, n, !0),
24560 hasPrevious: function(e) {
24561 return !!e && u(d(e) - 1)
24563 hasNext: function(e) {
24564 return !!e && u(d(e) + 1)
24569 return c.length && -1 < e && e < c.length
24573 return c.indexOf(e)
24577 return e && -1 < d(e)
24581 return c.length ? c[0] : null
24585 return c.length ? c[c.length - 1] : null
24588 function n(e, t, n, r) {
24590 for (var i = d(t);;) {
24591 if (!u(i)) return null;
24592 var o = i + (e ? -1 : 1),
24594 if (u(o) ? a = c[o] : s && (o = d(a = e ? h() : f())), null === a || o === r) return null;
24595 if (n(a)) return a;
24596 de.isUndefined(r) && (r = o), i = o
24600 de.module("material.core").config(["$provide", function(e) {
24601 e.decorator("$mdUtil", ["$delegate", function(e) {
24602 return e.iterator = t, e
24607 function e(a, t, i) {
24612 return e.getResponsiveAttribute = function(e, t) {
24613 for (var n = 0; n < a.MEDIA_PRIORITY.length; n++) {
24614 var r = a.MEDIA_PRIORITY[n];
24615 if (s[o[r]].matches) {
24616 var i = u(e, t + "-" + r);
24617 if (e[i]) return e[i]
24621 }, e.getQuery = function(e) {
24623 }, e.watchResponsiveAttributes = function(e, r, i) {
24625 return e.forEach(function(e) {
24627 for (var n in de.isDefined(r[t]) && o.push(r.$observe(t, de.bind(void 0, i, null))), a.MEDIA) t = u(r, e + "-" + n), de.isDefined(r[t]) && o.push(r.$observe(t, de.bind(void 0, i, n)))
24630 o.forEach(function(e) {
24638 de.isUndefined(n) && (n = o[e] = (t = e, a.MEDIA[t] || ("(" !== t.charAt(0) ? "(" + t + ")" : t)));
24640 return de.isUndefined(r) && (r = function(e) {
24642 t || (t = s[e] = i.matchMedia(e));
24643 return t.addListener(c), l[t.media] = !!t.matches
24648 t.$evalAsync(function() {
24649 l[e.media] = !!e.matches
24654 return n[t] || (n[t] = e.$normalize(t))
24657 e.$inject = ["$mdConstant", "$rootScope", "$window"], de.module("material.core").factory("$mdMedia", e)
24661 var r = ["data", "x"];
24662 return e ? t ? n(e) : i(e) : {
24665 hasAttribute: function(e, t) {
24666 if (!(e = o(e))) return !1;
24667 for (var n = i(t), r = 0; r < n.length; r++)
24668 if (e.hasAttribute(n[r])) return !0;
24671 removeAttribute: function(t, e) {
24672 if (!(t = o(t))) return;
24673 i(e).forEach(function(e) {
24674 t.removeAttribute(e)
24680 return (n = de.isArray(n) ? n : [n]).forEach(function(t) {
24681 r.forEach(function(e) {
24682 n.push(e + "-" + t)
24688 return i(e = de.isArray(e) ? e : [e]).map(function(e) {
24689 return "[" + e + "]"
24694 if ((e = e[0] || e).nodeType) return e
24697 de.module("material.core").config(["$provide", function(e) {
24698 e.decorator("$mdUtil", ["$delegate", function(e) {
24699 return e.prefixer = t, e
24704 e.$inject = ["$document", "$timeout", "$compile", "$rootScope", "$$mdAnimate", "$interpolate", "$log", "$rootElement", "$window", "$$rAF"];
24707 function e(l, s, n, a, e, t, o, r, c, d) {
24708 var i = t.startSymbol(),
24710 f = "{{" === i && "}}" === u;
24711 document.contains || (document.contains = function(e) {
24712 return document.body.contains(e)
24714 var h = function(e, t, n) {
24716 if (e && e.length) {
24717 var i = c.getComputedStyle(e[0]);
24718 r = de.isDefined(i[t]) && (!n || i[t] == n)
24724 return e ? -1 < String(e).indexOf("px") || -1 < String(e).indexOf("%") ? e : e + "px" : "0"
24728 now: F.performance && F.performance.now ? de.bind(F.performance, F.performance.now) : Date.now || function() {
24729 return (new Date).getTime()
24731 getModelOption: function(e, t) {
24733 var n = e.$options;
24734 return n.getOption ? n.getOption(t) : n[t]
24737 isRtl: function(e) {
24738 switch (de.isDefined(e) && e.hasOwnProperty("dir") && e.dir) {
24744 return "rtl" === l[0].dir || "rtl" === l[0].body.dir
24746 bidi: function(e, t, n, r) {
24747 var i = !this.isRtl();
24748 if (0 == arguments.length) return i ? "ltr" : "rtl";
24749 var o = de.element(e);
24750 i && de.isDefined(n) ? o.css(t, p(n)) : !i && de.isDefined(r) && o.css(t, p(r))
24752 bidiProperty: function(e, t, n, r) {
24753 var i = !this.isRtl(),
24755 i && de.isDefined(t) ? (o.css(t, p(r)), o.css(n, "")) : !i && de.isDefined(n) && (o.css(n, p(r)), o.css(t, ""))
24757 clientRect: function(e, t, n) {
24759 t = g(t || r.offsetParent || document.body);
24760 var i = r.getBoundingClientRect(),
24761 o = n ? t.getBoundingClientRect() : {
24768 left: i.left - o.left,
24769 top: i.top - o.top,
24774 offsetRect: function(e, t) {
24775 return m.clientRect(e, t, !0)
24777 nodesToArray: function(e) {
24779 for (var t = [], n = 0; n < e.length; ++n) t.push(e.item(n));
24782 getViewportTop: function() {
24783 return m.disableScrollAround._count && m.disableScrollAround._viewPortTop ? m.disableScrollAround._viewPortTop : c.scrollY || c.pageYOffset || 0
24785 findFocusTarget: function(e, t) {
24786 var n, r = this.prefixer("md-autofocus", !0);
24787 return (n = i(e, t || r)) || t == r || (n = i(e, this.prefixer("md-auto-focus", !0))) || (n = i(e, r)), n;
24790 var n, r = e[0].querySelectorAll(t);
24791 return r && r.length && r.length && de.forEach(r, function(e) {
24792 (e = de.element(e)).hasClass("md-autofocus") && (n = e)
24796 disableScrollAround: function(e, t, n) {
24797 if (n = n || {}, m.disableScrollAround._count = Math.max(0, m.disableScrollAround._count || 0), m.disableScrollAround._count++, m.disableScrollAround._restoreScroll) return m.disableScrollAround._restoreScroll;
24800 var e = l[0].documentElement,
24801 t = e.style.cssText || "",
24802 n = s.style.cssText || "",
24803 r = m.getViewportTop();
24804 m.disableScrollAround._viewPortTop = r;
24805 var i = s.clientWidth,
24806 o = s.scrollHeight > s.clientHeight + 1,
24807 a = 0 < e.scrollTop ? e : s;
24808 o && de.element(s).css({
24813 s.clientWidth < i && (s.style.overflow = "hidden");
24814 return function() {
24815 s.style.cssText = n, e.style.cssText = t, a.scrollTop = r
24818 i = function(e, t) {
24819 var n, r = de.element(e || s);
24820 t.disableScrollMask ? n = r : (n = de.element('<div class="md-scroll-mask"> <div class="md-scroll-mask-bar"></div></div>'), r.append(n));
24825 return n.on("wheel", i), n.on("touchmove", i),
24827 n.off("wheel"), n.off("touchmove"), !t.disableScrollMask && n[0].parentNode && n[0].parentNode.removeChild(n[0])
24830 return m.disableScrollAround._restoreScroll = function() {
24831 --m.disableScrollAround._count <= 0 && (delete m.disableScrollAround._viewPortTop, r(), i(), delete m.disableScrollAround._restoreScroll)
24834 enableScrolling: function() {
24835 var e = this.disableScrollAround._restoreScroll;
24838 floatingScrollbars: function() {
24839 if (this.floatingScrollbars.cached === fe) {
24840 var e = de.element("<div><div></div></div>").css({
24843 position: "absolute",
24845 "overflow-y": "scroll"
24847 e.children().css("height", "60px"), l[0].body.appendChild(e[0]), this.floatingScrollbars.cached = e[0].offsetWidth == e[0].childNodes[0].offsetWidth, e.remove()
24849 return this.floatingScrollbars.cached
24851 forceFocus: function(e) {
24853 document.addEventListener("click", function e(t) {
24854 t.target === n && t.$focus && (n.focus(), t.stopImmediatePropagation(), t.preventDefault(), n.removeEventListener("click", e))
24856 var t = document.createEvent("MouseEvents");
24857 t.initMouseEvent("click", !1, !0, F, {}, 0, 0, 0, 0, !1, !1, !1, !1, 0, null), t.$material = !0, t.$focus = !0, n.dispatchEvent(t)
24859 createBackdrop: function(e, t) {
24860 return n(m.supplant('<md-backdrop class="{0}">', [t]))(e)
24862 supplant: function(e, o, t) {
24863 return t = t || /\{([^{}]*)\}/g, e.replace(t, function(t, e) {
24864 var n = e.split("."),
24867 for (var i in n) n.hasOwnProperty(i) && (r = r[n[i]])
24871 return "string" == typeof r || "number" == typeof r ? r : t
24874 fakeNgModel: function() {
24877 $setTouched: de.noop,
24878 $setViewValue: function(e) {
24879 this.$viewValue = e, this.$render(e), this.$viewChangeListeners.forEach(function(e) {
24883 $isEmpty: function(e) {
24884 return 0 === ("" + e).length
24888 $viewChangeListeners: [],
24892 debounce: function(n, r, i, o) {
24894 return function() {
24896 t = Array.prototype.slice.call(arguments);
24897 s.cancel(a), a = s(function() {
24898 a = fe, n.apply(e, t)
24902 throttle: function(n, r) {
24904 return function() {
24907 (!i || r < t - i) && (n.apply(this, e), i = t)
24910 time: function(e) {
24912 return e(), m.now() - t
24914 valueOnUse: function(e, t, n) {
24916 i = Array.prototype.slice.call(arguments),
24917 o = 3 < i.length ? i.slice(3) : [];
24918 Object.defineProperty(e, t, {
24920 return null === r && (r = n.apply(e, o)), r
24924 nextUid: function() {
24927 disconnectScope: function(e) {
24928 if (e && e.$root !== e && !e.$$destroyed) {
24930 e.$$disconnected = !0, t.$$childHead === e && (t.$$childHead = e.$$nextSibling), t.$$childTail === e && (t.$$childTail = e.$$prevSibling), e.$$prevSibling && (e.$$prevSibling.$$nextSibling = e.$$nextSibling), e.$$nextSibling && (e.$$nextSibling.$$prevSibling = e.$$prevSibling), e.$$nextSibling = e.$$prevSibling = null
24933 reconnectScope: function(e) {
24934 if (e && e.$root !== e && e.$$disconnected) {
24937 t.$$disconnected = !1, t.$$prevSibling = n.$$childTail, n.$$childHead ? (n.$$childTail.$$nextSibling = t, n.$$childTail = t) : n.$$childHead = n.$$childTail = t
24940 getClosest: function(e, t, n) {
24941 if (de.isString(t)) {
24942 var r = t.toUpperCase();
24944 return e.nodeName.toUpperCase() === r
24947 if (e instanceof de.element && (e = e[0]), n && (e = e.parentNode), !e) return null;
24950 } while (e = e.parentNode);
24953 elementContains: function(t, n) {
24954 return (F.Node && F.Node.prototype && Node.prototype.contains ? de.bind(t, t.contains) : de.bind(t, function(e) {
24955 return t === n || !!(16 & this.compareDocumentPosition(e))
24958 extractElementByName: function(e, r, t, n) {
24960 return !i && n && o.warn(m.supplant("Unable to find node '{0}' in element '{1}'.", [r, e[0].outerHTML])), de.element(i || e);
24963 return function(e) {
24965 for (var t = 0, n = e.length; t < n; t++)
24966 if (e[t].nodeName.toLowerCase() === r) return e[t];
24968 }(e) || (t ? function(e) {
24971 for (var n = 0, r = e.length; n < r; n++) {
24974 for (var o = 0, a = i.childNodes.length; o < a; o++) t = t || s([i.childNodes[o]])
24980 initOptionalProperties: function(r, i, o) {
24981 o = o || {}, de.forEach(r.$$isolateBindings, function(e, t) {
24982 if (e.optional && de.isUndefined(r[t])) {
24983 var n = de.isDefined(i[e.attrName]);
24984 r[t] = de.isDefined(o[t]) ? o[t] : n
24988 nextTick: function(e, t, n) {
24989 var r = m.nextTick,
24995 }), null == t && (t = !0), r.digest = r.digest || t, r.queue = o, i || (r.timeout = s(function() {
24998 r.queue = [], r.timeout = null, r.digest = !1, e.forEach(function(e) {
24999 e.scope && e.scope.$$destroyed || e.callback()
25000 }), t && a.$digest()
25003 processTemplate: function(e) {
25004 return f ? e : e && de.isString(e) ? e.replace(/\{\{/g, i).replace(/}}/g, u) : e
25006 getParentWithPointerEvents: function(e) {
25007 for (var t = e.parent(); h(t, "pointer-events", "none");) t = t.parent();
25010 getNearestContentElement: function(e) {
25011 for (var t = e.parent()[0]; t && t !== r[0] && t !== document.body && "MD-CONTENT" !== t.nodeName.toUpperCase();) t = t.parentNode;
25014 checkStickySupport: function() {
25015 var e, t = de.element("<div>");
25016 l[0].body.appendChild(t[0]);
25017 for (var n = ["sticky", "-webkit-sticky"], r = 0; r < n.length; ++r)
25022 }), t.css("position") == n[r]) {
25025 } return t.remove(), e
25027 parseAttributeBoolean: function(e, t) {
25028 return "" === e || !!e && (!1 === t || "false" !== e && "0" !== e)
25030 hasComputedStyle: h,
25031 isParentFormSubmitted: function(e) {
25032 var t = m.getClosest(e, "form"),
25033 n = t ? de.element(t).controller("form") : null;
25034 return !!n && n.$submitted
25036 animateScrollTo: function(i, o, a) {
25037 var s = i.scrollTop,
25042 var t = (n = a || 1e3, r = m.now() - u, function(e, t, n, r) {
25043 if (r < e) return t + n;
25044 var i = (e /= r) * e;
25045 return t + n * (i * e * -2 + 3 * i)
25049 (c ? t < o : o < t) && d(e)
25052 uniq: function(e) {
25053 if (e) return e.filter(function(e, t, n) {
25054 return n.indexOf(e) === t
25057 getInnerHTML: function(e) {
25058 var t = new XMLSerializer;
25059 return Array.prototype.map.call(e.childNodes, function(e) {
25060 return t.serializeToString(e)
25063 getOuterHTML: function(e) {
25064 return (new XMLSerializer).serializeToString(e)
25066 msie: F.document.documentMode
25068 return m.dom.animator = e(m), m;
25074 de.module("material.core").factory("$mdUtil", e), de.element.prototype.focus = de.element.prototype.focus || function() {
25075 return this.length && this[0].focus(), this
25076 }, de.element.prototype.blur = de.element.prototype.blur || function() {
25077 return this.length && this[0].blur(), this
25079 }(), de.module("material.core").factory("$$mdAnimate", ["$q", "$timeout", "$mdConstant", "$animateCss", function(n, i, a, s) {
25080 return function(e) {
25081 return r = e, t = n, l = i, c = a, o = s, u = {
25082 translate3d: function(t, n, e, r) {
25086 addClass: r.transitionInClass,
25087 removeClass: r.transitionOutClass,
25088 duration: r.duration
25089 }).start().then(function() {
25096 addClass: r.transitionOutClass,
25097 removeClass: r.transitionInClass,
25098 duration: r.duration
25102 waitTransitionEnd: function(o, a) {
25104 return t(function(t, e) {
25106 ("0s" == (n = (n = (a = a || {}).cachedTransitionStyles) || F.getComputedStyle(o[0])).transitionDuration || !n.transition && !n.transitionProperty) && (s = 0);
25107 var r = l(i, a.timeout || s);
25110 e && e.target !== o[0] || (e && l.cancel(r), o.off(c.CSS.TRANSITIONEND, i), t())
25112 o.on(c.CSS.TRANSITIONEND, i)
25115 calculateTransformValues: function(e, t) {
25116 var n, r, i = t.element,
25119 var a = i ? u.clientRect(i) || (n = e ? e.parent() : null, (r = n ? n.parent() : null) ? u.clientRect(r) : null) : u.copyRect(o),
25120 s = u.copyRect(e[0].getBoundingClientRect()),
25121 l = u.centerPointFor(s),
25122 c = u.centerPointFor(a);
25124 centerX: c.x - l.x,
25125 centerY: c.y - l.y,
25126 scaleX: Math.round(100 * Math.min(.5, a.width / s.width)) / 100,
25127 scaleY: Math.round(100 * Math.min(.5, a.height / s.height)) / 100
25137 calculateZoomToOrigin: function(e, t) {
25138 var n = de.bind(null, r.supplant, "translate3d( {centerX}px, {centerY}px, 0 ) scale( {scaleX}, {scaleY} )");
25139 return n(u.calculateTransformValues(e, t))
25141 calculateSlideToOrigin: function(e, t) {
25142 var n = de.bind(null, r.supplant, "translate3d( {centerX}px, {centerY}px, 0 )");
25143 return n(u.calculateTransformValues(e, t))
25145 toCss: function(e) {
25147 return de.forEach(e, function(e, t) {
25148 if (!de.isUndefined(e))
25149 if (0 <= "left top right bottom width height x y min-width min-height max-width max-height".indexOf(t)) r[t] = e + "px";
25152 n(t, c.CSS.TRANSITION, e);
25155 n(t, c.CSS.TRANSFORM, e);
25157 case "transformOrigin":
25158 n(t, c.CSS.TRANSFORM_ORIGIN, e);
25165 function n(e, t, n) {
25166 de.forEach(t.split(" "), function(e) {
25171 toTransformCss: function(t, e, n) {
25173 return de.forEach(c.CSS.TRANSFORM.split(" "), function(e) {
25175 }), e && (n = n || "all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1) !important", r.transition = n), r
25177 copyRect: function(t, n) {
25178 return t ? (n = n || {}, de.forEach("left top right bottom width height".split(" "), function(e) {
25179 n[e] = Math.round(t[e])
25180 }), n.width = n.width || n.right - n.left, n.height = n.height || n.bottom - n.top, n) : null
25182 clientRect: function(e) {
25183 var t, n = de.element(e)[0].getBoundingClientRect();
25184 return (t = n) && 0 < t.width && 0 < t.height ? u.copyRect(n) : null
25186 centerPointFor: function(e) {
25188 x: Math.round(e.left + e.width / 2),
25189 y: Math.round(e.top + e.height / 2)
25196 var r, t, l, c, o, u
25198 }]), 4 <= de.version.minor ? de.module("material.core.animate", []) : function() {
25199 var k = de.forEach,
25200 x = de.isDefined(document.documentElement.style.WebkitAppearance),
25201 T = x ? "-webkit-" : "",
25202 M = (x ? "webkitTransitionEnd " : "") + "transitionend",
25203 A = (x ? "webkitAnimationEnd " : "") + "animationend",
25204 e = ["$q", "$$rAFMutex", function(t, n) {
25206 this.setHost(e), this._doneCallbacks = [], this._runInAnimationFrame = n(), this._state = 0
25208 return e.prototype = {
25209 setHost: function(e) {
25210 this.host = e || {}
25212 done: function(e) {
25213 2 === this._state ? e() : this._doneCallbacks.push(e)
25216 getPromise: function() {
25217 if (!this.promise) {
25219 this.promise = t(function(t, n) {
25220 e.done(function(e) {
25221 !1 === e ? n() : t()
25225 return this.promise
25227 then: function(e, t) {
25228 return this.getPromise().then(e, t)
25230 catch: function(e) {
25231 return this.getPromise().catch(e)
25233 finally: function(e) {
25234 return this.getPromise().finally(e)
25236 pause: function() {
25237 this.host.pause && this.host.pause()
25239 resume: function() {
25240 this.host.resume && this.host.resume()
25243 this.host.end && this.host.end(), this._resolve(!0)
25245 cancel: function() {
25246 this.host.cancel && this.host.cancel(), this._resolve(!1)
25248 complete: function(e) {
25250 0 === t._state && (t._state = 1, t._runInAnimationFrame(function() {
25254 _resolve: function(t) {
25255 2 !== this._state && (k(this._doneCallbacks, function(e) {
25257 }), this._doneCallbacks.length = 0, this._state = 2)
25259 }, e.all = function(t, n) {
25264 i = i && e, ++r === t.length && n(i)
25273 return e.replace(/-[a-z]/g, function(e) {
25274 return e.charAt(1).toUpperCase()
25277 de.module("material.core.animate", []).factory("$$forceReflow", ["$document", function(e) {
25278 return function() {
25279 return e[0].body.clientWidth + 1
25281 }]).factory("$$AnimateRunner", e).factory("$$rAFMutex", ["$$rAF", function(n) {
25282 return function() {
25284 return n(function() {
25291 }]).factory("$animateCss", ["$window", "$$rAF", "$$AnimateRunner", "$$forceReflow", "$$jqLite", "$timeout", "$animate", function(p, o, a, m, n, g, s) {
25293 t.addClass && (n.addClass(e, t.addClass), t.addClass = null), t.removeClass && (n.removeClass(e, t.removeClass), t.removeClass = null)
25298 n = (e || "").split(/\s*,\s*/);
25299 return k(n, function(e) {
25300 "s" == e.charAt(e.length - 1) && (e = e.substring(0, e.length - 1)), e = parseFloat(e) || 0, t = t ? Math.max(e, t) : e
25306 t.from && (e.css(t.from), t.from = null)
25310 t.to && (e.css(t.to), t.to = null)
25314 for (var t = 0; t < e.length; t++)
25315 if (1 === e[t].nodeType) return e[t]
25320 r = S(T + "transition-delay");
25321 n.style[r] = t ? "-9999s" : ""
25323 return function(r, l) {
25326 e = u && s.enabled(),
25329 e && (l.transitionStyle && c.push([T + "transition", l.transitionStyle]), l.keyframeStyle && c.push([T + "animation", l.keyframeStyle]), l.delay && c.push([T + "transition-delay", l.delay + "s"]), l.duration && c.push([T + "transition-duration", l.duration + "s"]), t = l.keyframeStyle || l.to && (0 < l.duration || l.transitionStyle), n = !!l.addClass || !!l.removeClass, C(r, !0));
25330 var d = e && (t || n);
25335 start: function() {
25337 return e = function() {
25338 if (C(r, !1), !d) return s();
25344 var e = function(e) {
25346 n = p.getComputedStyle(t),
25347 r = b(n[c("transitionDuration")]),
25348 i = b(n[c("animationDuration")]),
25349 o = b(n[c("transitionDelay")]),
25350 a = b(n[c("animationDelay")]);
25351 i *= parseInt(n[c("animationIterationCount")], 10) || 1;
25352 var s = Math.max(i, r),
25353 l = Math.max(a, o);
25357 animationDuration: i,
25358 transitionDuration: r,
25364 return x ? "Webkit" + e.charAt(0).toUpperCase() + e.substr(1) : e
25367 if (0 === e.duration) return s();
25369 l.easing && (e.transitionDuration && t.push([T + "transition-timing-function", l.easing]), e.animationDuration && t.push([T + "animation-timing-function", l.easing])), l.delay && e.animationDelay && t.push([T + "animation-delay", l.delay + "s"]), l.duration && e.animationDuration && t.push([T + "animation-duration", l.duration + "s"]), k(t, function(e) {
25372 u.style[S(t)] = n, c.push(e)
25374 var i = 1e3 * e.delay,
25378 f = [], e.transitionDuration && f.push(M), e.animationDuration && f.push(A), f = f.join(" "), h = function(e) {
25379 e.stopPropagation();
25380 var t = e.originalEvent || e,
25381 n = t.timeStamp || Date.now(),
25382 r = parseFloat(t.elapsedTime.toFixed(3));
25383 Math.max(n - a, 0) >= i && o <= r && s()
25384 }, r.on(f, h), w(r, l), g(s, i + 1.5 * n, !1)
25385 }, y && y(), _.push(e), y = o(function() {
25387 for (var e = m(), t = 0; t < _.length; t++) _[t](e);
25393 if (!i) return i = !0, f && h && r.off(f, h), v(r, l), $(e = r, t = l), w(e, t), k(c, function(e) {
25394 u.style[S(e[0])] = ""
25395 }), n.complete(!0), n
25403 function o(r, i, l, o) {
25404 var a = this.showWarnings;
25408 expectWithText: function(e, t) {
25409 var n = u(e) || ""; - 1 < n.indexOf(o.startSymbol()) ? c(e, t, function() {
25413 expectWithoutText: function(e, t) {
25414 var n = u(e); - 1 < n.indexOf(o.startSymbol()) || n || s(e, t, n)
25418 parentHasAriaLabel: function e(t, n) {
25420 var r = de.element(t)[0] || t;
25421 if (!r.parentNode) return !1;
25422 if (i(r.parentNode)) return !0;
25424 if (n) return e(r.parentNode, n);
25428 if (!d(e)) return !1;
25429 if (e.hasAttribute("role")) switch (e.getAttribute("role").toLowerCase()) {
25441 case "presentation":
25448 switch (e.tagName.toLowerCase()) {
25501 case "presentation":
25532 function s(e, t, n) {
25533 var r = de.element(e)[0] || e;
25534 !r || r.hasAttribute(t) && 0 !== r.getAttribute(t).length || function(e, t) {
25535 var n = e.hasChildNodes(),
25538 for (var i = e.childNodes, o = 0; o < i.length; o++) {
25540 1 === a.nodeType && a.hasAttribute(t) && (void 0, "none" !== ((s = a).currentStyle ? s.currentStyle : l.getComputedStyle(s)).display && (r = !0))
25544 }(r, t) || ((n = de.isString(n) ? n.trim() : "").length ? e.attr(t, n) : a && i.warn('ARIA: Attribute "', t, '", required for accessibility, is missing on node:', r))
25547 function c(e, t, n) {
25555 for (var e, n = document.createTreeWalker(t, NodeFilter.SHOW_TEXT, null, !1), r = ""; e = n.nextNode();) i(e) || (r += e.textContent);
25556 return r.trim() || "";
25559 for (; e.parentNode && (e = e.parentNode) !== t;)
25560 if (e.getAttribute && "true" === e.getAttribute("aria-hidden")) return !0
25565 var t = de.element(e)[0] || e;
25566 return !!t.hasAttribute && (t.hasAttribute("aria-label") || t.hasAttribute("aria-labelledby") || t.hasAttribute("aria-describedby"))
25569 o.$inject = ["$$rAF", "$log", "$window", "$interpolate"], de.module("material.core").provider("$mdAria", function() {
25574 disableWarnings: function() {
25575 i.showWarnings = !1
25577 $get: ["$$rAF", "$log", "$window", "$interpolate", function(e, t, n, r) {
25578 return o.apply(i, arguments)
25587 function s(e, t, n, r, i) {
25588 this.$q = e, this.$templateRequest = t, this.$injector = n, this.$compile = r, this.$controller = i
25590 this.respectPreAssignBindingsEnabled = function(e) {
25591 return de.isDefined(e) ? (a = e, this) : a
25592 }, this.$get = ["$q", "$templateRequest", "$injector", "$compile", "$controller", function(e, t, n, r, i) {
25593 return new s(e, t, n, r, i)
25594 }], s.prototype.compile = function(e) {
25595 return e.contentElement ? this._prepareContentElement(e) : this._compileTemplate(e)
25596 }, s.prototype._prepareContentElement = function(e) {
25597 var t = this._fetchContentElement(e);
25598 return this.$q.resolve({
25599 element: t.element,
25600 cleanup: t.restore,
25606 }, s.prototype._compileTemplate = function(r) {
25609 t = r.template || "",
25610 n = de.extend({}, r.resolve),
25611 o = de.extend({}, r.locals),
25612 a = r.transformTemplate || de.identity;
25613 return de.forEach(n, function(e, t) {
25614 de.isString(e) ? n[t] = i.$injector.get(e) : n[t] = i.$injector.invoke(e)
25615 }), de.extend(n, o), n.$$ngTemplate = e ? this.$templateRequest(e) : this.$q.when(t), this.$q.all(n).then(function(e) {
25616 var t = a(e.$$ngTemplate, r),
25617 n = r.element || de.element("<div>").html(t.trim()).contents();
25618 return i._compileElement(e, n, r)
25620 }, s.prototype._compileElement = function(r, i, o) {
25622 s = this.$compile(i),
25625 cleanup: i.remove.bind(i),
25627 link: function(e) {
25628 if (r.$scope = e, o.controller) {
25629 var t = de.extend({}, r, {
25632 n = a._createController(o, t, r);
25633 i.data("$ngControllerController", n), i.children().data("$ngControllerController", n), l.controller = n
25639 }, s.prototype._createController = function(e, t, n) {
25641 if (!a || ("function" == typeof o.preAssignBindingsEnabled ? o.preAssignBindingsEnabled() : 1 === de.version.major && de.version.minor < 6)) {
25642 var i = this.$controller(e.controller, t, !0);
25643 e.bindToController && de.extend(i.instance, n), r = i()
25644 } else r = this.$controller(e.controller, t), e.bindToController && de.extend(r, n);
25645 return e.controllerAs && (t.$scope[e.controllerAs] = r), de.isFunction(r.$onInit) && r.$onInit(), r
25646 }, s.prototype._fetchContentElement = function(e) {
25647 var t = e.contentElement,
25649 return n = de.isString(t) ? r(t = document.querySelector(t)) : (t = t[0] || t, document.contains(t) ? r(t) : function() {
25650 t.parentNode && t.parentNode.removeChild(t)
25652 element: de.element(t),
25657 var t = e.parentNode,
25658 n = e.nextElementSibling;
25659 return function() {
25660 n ? t.insertBefore(e, n) : t.appendChild(e)
25665 de.module("material.core").provider("$mdCompiler", e), e.$inject = ["$compileProvider"]
25668 i.$inject = ["$$MdGestureHandler", "$$rAF", "$timeout"];
25671 c = !(p.$inject = ["$mdGesture", "$$MdGestureHandler"]),
25675 if (F.navigator) var e = F.navigator.userAgent || F.navigator.vendor || F.opera,
25676 f = e.match(/ipad|iphone|ipod/i),
25677 h = e.match(/android/i);
25681 function i(r, e, n) {
25682 var i = function() {
25683 for (var e = document.createElement("div"), t = ["", "webkit", "Moz", "MS", "ms", "o"], n = 0; n < t.length; n++) {
25685 i = r ? r + "TouchAction" : "touchAction";
25686 if (de.isDefined(e.style[i])) return i
25689 t = void 0 !== F.jQuery && de.element === F.jQuery,
25691 handler: function(e, t) {
25693 return de.extend(n, t), s[e] = n, o
25695 register: function(e, t, n) {
25696 var r = s[t.replace(/^\$md./, "")];
25697 if (r) return r.registerElement(e, n);
25698 throw new Error("Failed to register element with handler " + t + ". Available handlers: " + Object.keys(s).join(", "))
25702 isHijackingClicks: (f || h) && !t && !c
25706 return function(e, t) {
25707 t.distance < this.state.options.maxDistance && this.dispatchEvent(e, n, t)
25710 return o.isHijackingClicks && (o.handler("click", {
25715 }), o.handler("focus", {
25719 onEnd: function(e, t) {
25720 t.distance < this.state.options.maxDistance && _(e.target) && (this.dispatchEvent(e, "focus", t), e.target.focus())
25722 }), o.handler("mouseup", {
25726 onEnd: a("mouseup")
25727 }), o.handler("mousedown", {
25728 onStart: function(e) {
25729 this.dispatchEvent(e, "mousedown")
25731 })), o.handler("press", {
25732 onStart: function(e, t) {
25733 this.dispatchEvent(e, "$md.pressdown")
25735 onEnd: function(e, t) {
25736 this.dispatchEvent(e, "$md.pressup")
25738 }).handler("hold", {
25743 onCancel: function() {
25744 n.cancel(this.state.timeout)
25746 onStart: function(e, t) {
25747 if (!this.state.registeredParent) return this.cancel();
25751 }, this.state.timeout = n(de.bind(this, function() {
25752 this.dispatchEvent(e, "$md.hold"), this.cancel()
25753 }), this.state.options.delay, !1)
25755 onMove: function(e, t) {
25756 i || "touchmove" !== e.type || e.preventDefault();
25757 var n = this.state.pos.x - t.x,
25758 r = this.state.pos.y - t.y;
25759 Math.sqrt(n * n + r * r) > this.options.maxDistance && this.cancel()
25761 onEnd: function() {
25764 }).handler("drag", {
25768 cancelMultiplier: 1.5
25770 onSetup: function(e, t) {
25771 i && (this.oldTouchAction = e[0].style[i], e[0].style[i] = t.horizontal ? "pan-y" : "pan-x")
25773 onCleanup: function(e) {
25774 this.oldTouchAction && (e[0].style[i] = this.oldTouchAction)
25776 onStart: function(e) {
25777 this.state.registeredParent || this.cancel()
25779 onMove: function(e, t) {
25781 i || "touchmove" !== e.type || e.preventDefault(), this.state.dragPointer ? this.dispatchDragMove(e) : (r = this.state.options.horizontal ? (n = Math.abs(t.distanceX) > this.state.options.minDistance, Math.abs(t.distanceY) > this.state.options.minDistance * this.state.options.cancelMultiplier) : (n = Math.abs(t.distanceY) > this.state.options.minDistance, Math.abs(t.distanceX) > this.state.options.minDistance * this.state.options.cancelMultiplier), n ? (this.state.dragPointer = m(e), b(e, this.state.dragPointer), this.dispatchEvent(e, "$md.dragstart", this.state.dragPointer)) : r && this.cancel())
25783 dispatchDragMove: e.throttle(function(e) {
25784 this.state.isRunning && (b(e, this.state.dragPointer), this.dispatchEvent(e, "$md.drag", this.state.dragPointer))
25786 onEnd: function(e, t) {
25787 this.state.dragPointer && (b(e, this.state.dragPointer), this.dispatchEvent(e, "$md.dragend", this.state.dragPointer))
25789 }).handler("swipe", {
25794 onEnd: function(e, t) {
25796 Math.abs(t.velocityX) > this.state.options.minVelocity && Math.abs(t.distanceX) > this.state.options.minDistance ? (n = "left" == t.directionX ? "$md.swipeleft" : "$md.swiperight", this.dispatchEvent(e, n)) : Math.abs(t.velocityY) > this.state.options.minVelocity && Math.abs(t.distanceY) > this.state.options.minDistance && (n = "up" == t.directionY ? "$md.swipeup" : "$md.swipedown", this.dispatchEvent(e, n))
25802 this.name = e, this.state = {}
25807 !d && e.isHijackingClicks && (document.addEventListener("click", function(e) {
25809 t = f ? de.isDefined(e.webkitForce) && 0 === e.webkitForce : 0 === e.clientX && 0 === e.clientY;
25810 t || e.$material || e.isIonicTap || v(e) ? (u = null, "label" === e.target.tagName.toLowerCase() && (u = {
25813 })) : (e.preventDefault(), e.stopPropagation(), u = null)
25814 }, !0), document.addEventListener("mouseup", t, !0), document.addEventListener("mousedown", t, !0), document.addEventListener("focus", t, !0), d = !0);
25815 de.element(document).on("mousedown touchstart pointerdown", function(e) {
25817 var t = +Date.now();
25818 if (r && !g(e, r) && t - r.endTime < 1500) return;
25819 o = m(e), n("start", e)
25820 }).on("mousemove touchmove pointermove", function(e) {
25821 if (!o || !g(e, o)) return;
25822 b(e, o), n("move", e)
25823 }).on("mouseup mouseleave touchend touchcancel pointerup pointercancel", function(e) {
25824 if (!o || !g(e, o)) return;
25825 b(e, o), o.endTime = +Date.now(), "pointercancel" !== e.type && n("end", e);
25827 }).on("$$mdGestureReset", function() {
25833 !e.clientX && !e.clientY || e.$material || e.isIonicTap || v(e) || "mousedown" === e.type && (_(e.target) || _(document.activeElement)) || (e.preventDefault(), e.stopPropagation())
25838 for (var r in s)(n = s[r]) instanceof i && ("start" === e && n.cancel(), n[e](t, o))
25845 startTime: +Date.now(),
25847 type: e.type.charAt(0)
25849 return n.startX = n.x = t.pageX, n.startY = n.y = t.pageY, n
25853 return e && t && e.type.charAt(0) === t.type
25857 return u && u.x === e.x && u.y === e.y
25864 t.distanceX = r - t.startX, t.distanceY = i - t.startY, t.distance = Math.sqrt(t.distanceX * t.distanceX + t.distanceY * t.distanceY), t.directionX = 0 < t.distanceX ? "right" : t.distanceX < 0 ? "left" : "", t.directionY = 0 < t.distanceY ? "down" : t.distanceY < 0 ? "up" : "", t.duration = +Date.now() - t.startTime, t.velocityX = t.distanceX / t.duration, t.velocityY = t.distanceY / t.duration
25868 return (e = e.originalEvent || e).touches && e.touches[0] || e.changedTouches && e.changedTouches[0] || e
25872 return !!e && "-1" !== e.getAttribute("tabindex") && !e.hasAttribute("disabled") && (e.hasAttribute("tabindex") || e.hasAttribute("href") || e.isContentEditable || -1 !== ["INPUT", "SELECT", "BUTTON", "TEXTAREA", "VIDEO", "AUDIO"].indexOf(e.nodeName))
25874 de.module("material.core.gestures", []).provider("$mdGesture", t).factory("$$MdGestureHandler", function() {
25875 var e = void 0 !== F.jQuery && de.element === F.jQuery;
25876 return n.prototype = {
25878 dispatchEvent: e ? function(e, t, n) {
25880 var r = new de.element.Event(t);
25881 r.$material = !0, r.pointer = n, r.srcEvent = e, de.extend(r, {
25888 ctrlKey: e.ctrlKey,
25890 shiftKey: e.shiftKey,
25892 }), de.element(n.target).trigger(r)
25893 } : function(e, t, n) {
25895 n = n || o, "click" === t || "mouseup" === t || "mousedown" === t ? "function" == typeof F.MouseEvent ? r = new MouseEvent(t, {
25898 screenX: Number(e.screenX),
25899 screenY: Number(e.screenY),
25900 clientX: Number(n.x),
25901 clientY: Number(n.y),
25902 ctrlKey: e.ctrlKey,
25904 shiftKey: e.shiftKey,
25905 metaKey: e.metaKey,
25907 buttons: e.buttons,
25908 relatedTarget: e.relatedTarget || null
25909 }) : (r = document.createEvent("MouseEvents")).initMouseEvent(t, !0, !0, F, e.detail, n.x, n.y, n.x, n.y, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget || null) : "function" == typeof F.CustomEvent ? r = new CustomEvent(t, {
25913 }) : (r = document.createEvent("CustomEvent")).initCustomEvent(t, !0, !0, {}), r.$material = !0, r.pointer = n, r.srcEvent = e, n.target.dispatchEvent(r)
25916 onCleanup: de.noop,
25921 start: function(e, t) {
25922 if (!this.state.isRunning) {
25923 var n = this.getNearestParent(e.target),
25924 r = n && n.$mdGesture[this.name] || {};
25927 options: de.extend({}, this.options, r),
25928 registeredParent: n
25929 }, this.onStart(e, t)
25932 move: function(e, t) {
25933 this.state.isRunning && this.onMove(e, t)
25935 end: function(e, t) {
25936 this.state.isRunning && (this.state.isRunning = !1, this.onEnd(e, t))
25938 cancel: function(e, t) {
25939 this.onCancel(e, t), this.state = {}
25941 getNearestParent: function(e) {
25942 for (var t = e; t;) {
25943 if ((t.$mdGesture || {})[this.name]) return t;
25948 registerElement: function(e, t) {
25950 return e[0].$mdGesture = e[0].$mdGesture || {}, e[0].$mdGesture[this.name] = t || {}, e.on("$destroy", r), n.onSetup(e, t || {}), r;
25953 delete e[0].$mdGesture[n.name], e.off("$destroy", r), n.onCleanup(e, t || {})
25957 }).run(p), t.prototype = {
25958 disableAll: function() {
25961 skipClickHijack: function() {
25964 setMaxClickDistance: function(e) {
25967 $get: ["$$MdGestureHandler", "$$rAF", "$timeout", function(e, t, n) {
25968 return new i(e, t, n)
25973 function e(e, t, n) {
25974 this.$timeout = e, this.$mdUtil = t, this.$rootScope = n, this.pointerEvent = "MSPointerEvent" in F ? "MSPointerDown" : "PointerEvent" in F ? "pointerdown" : null, this.bodyElement = de.element(document.body), this.isBuffering = !1, this.bufferTimeout = null, this.lastInteractionType = null, this.lastInteractionTime = null, this.inputHandler = this.onInputEvent.bind(this), this.bufferedInputHandler = this.onBufferInputEvent.bind(this), this.inputEventMap = {
25975 keydown: "keyboard",
25976 mousedown: "mouse",
25977 mouseenter: "mouse",
25978 touchstart: "touch",
25979 pointerdown: "pointer",
25980 MSPointerDown: "pointer"
25981 }, this.iePointerMap = {
25985 }, this.initializeEvents(), this.$rootScope.$on("$destroy", this.deregister.bind(this))
25987 e.$inject = ["$timeout", "$mdUtil", "$rootScope"], de.module("material.core.interaction", []).service("$mdInteraction", e), e.prototype.deregister = function() {
25988 this.bodyElement.off("keydown mousedown", this.inputHandler), "ontouchstart" in document.documentElement && this.bodyElement.off("touchstart", this.bufferedInputHandler), this.pointerEvent && this.bodyElement.off(this.pointerEvent, this.inputHandler)
25989 }, e.prototype.initializeEvents = function() {
25990 this.bodyElement.on("keydown mousedown", this.inputHandler), "ontouchstart" in document.documentElement && this.bodyElement.on("touchstart", this.bufferedInputHandler), this.pointerEvent && this.bodyElement.on(this.pointerEvent, this.inputHandler)
25991 }, e.prototype.onInputEvent = function(e) {
25992 if (!this.isBuffering) {
25993 var t = this.inputEventMap[e.type];
25994 "pointer" === t && (t = this.iePointerMap[e.pointerType] || e.pointerType), this.lastInteractionType = t, this.lastInteractionTime = this.$mdUtil.now()
25996 }, e.prototype.onBufferInputEvent = function(e) {
25997 this.$timeout.cancel(this.bufferTimeout), this.onInputEvent(e), this.isBuffering = !0, this.bufferTimeout = this.$timeout(function() {
25998 this.isBuffering = !1
25999 }.bind(this), 650, !1)
26000 }, e.prototype.getLastInteractionType = function() {
26001 return this.lastInteractionType
26002 }, e.prototype.isUserInvoked = function(e) {
26003 var t = de.isNumber(e) ? e : 15;
26004 return this.lastInteractionTime >= this.$mdUtil.now() - t
26006 }(), de.module("material.core").provider("$$interimElement", function() {
26007 return t.$inject = ["$document", "$q", "$rootScope", "$timeout", "$rootElement", "$animate", "$mdUtil", "$mdCompiler", "$mdTheming", "$injector", "$exceptionHandler"], e.$get = t, e;
26010 e.$inject = ["$$interimElement", "$injector"];
26011 var n = ["onHide", "onShow", "onRemove"],
26017 setDefaults: function(e) {
26018 return c.optionsFactory = e.options, c.methods = (e.methods || []).concat(n), r
26020 addPreset: function(e, t) {
26021 if ((t = t || {}).methods = t.methods || [], t.options = t.options || function() {
26023 }, /^cancel|hide|show$/.test(e)) throw new Error("Preset '" + e + "' in " + i + " is reserved!");
26024 if (-1 < t.methods.indexOf("_options")) throw new Error("Method '_options' in " + i + " is reserved!");
26025 return c.presets[e] = {
26026 methods: t.methods.concat(n),
26027 optionsFactory: t.options,
26028 argOption: t.argOption
26031 addMethod: function(e, t) {
26036 return r.addPreset("build", {
26037 methods: ["controller", "controllerAs", "resolve", "multiple", "template", "templateUrl", "themable", "transformTemplate", "parent", "contentElement"]
26045 show: function(e) {
26046 return (e = e || {})._options && (e = e._options), n.show(de.extend({}, t, e))
26048 destroy: function(e) {
26049 return n.destroy(e)
26052 return a = c.methods || [], t = l(c.optionsFactory, {}), de.forEach(o, function(e, t) {
26054 }), de.forEach(c.presets, function(t, n) {
26055 var r = l(t.optionsFactory, {}),
26056 e = (t.methods || []).concat(a);
26059 this._options = de.extend({}, r, e)
26063 }), de.forEach(e, function(t) {
26064 i.prototype[t] = function(e) {
26065 return this._options[t] = e, this
26068 var o = "show" + n.charAt(0).toUpperCase() + n.slice(1);
26069 s[o] = function(e) {
26074 s[n] = function(e) {
26075 return arguments.length && t.argOption && !de.isObject(e) && !de.isArray(e) ? (new i)[t.argOption](e) : new i(e)
26081 return n[i] = s, r.invoke(e || function() {
26088 function t(d, f, t, h, p, r, n, m, g, l, c) {
26089 return function() {
26094 show: function(e) {
26095 var t = new s((e = e || {}) || {}),
26096 n = e.multiple ? f.resolve() : f.all(i);
26097 e.multiple || (n = n.then(function() {
26098 var e = o.concat(a.map(u.cancel));
26101 var r = n.then(function() {
26102 return t.show().then(function() {
26104 }).catch(function(e) {
26106 }).finally(function() {
26107 i.splice(i.indexOf(r), 1)
26110 return i.push(r), t.deferred.promise.catch(function(e) {
26111 return e instanceof Error && c(e), e
26112 }), t.deferred.promise
26114 hide: e(function(n, r) {
26115 return (r = r || {}).closeAll ? f.all(a.slice().reverse().map(e)) : r.closeTo !== fe ? f.all(a.slice(r.closeTo).map(e)) : e(a[a.length - 1]);
26118 if (!e) return f.when(n);
26119 var t = e.remove(n, !1, r || {}).catch(function(e) {
26121 }).finally(function() {
26122 o.splice(o.indexOf(t), 1)
26124 return a.splice(a.indexOf(e), 1), o.push(t), e.deferred.promise
26127 cancel: e(function(e, t) {
26129 if (!n) return f.when(e);
26130 var r = n.remove(e, !0, t || {}).catch(function(e) {
26132 }).finally(function() {
26133 o.splice(o.indexOf(r), 1)
26135 return o.push(r), n.deferred.promise.catch(de.noop)
26137 destroy: function(e) {
26138 var t = e ? null : a.shift(),
26139 n = de.element(e).length && de.element(e)[0].parentNode;
26141 var r = a.filter(function(e) {
26142 return e.options.element[0] === n
26144 r.length && (t = r[0], a.splice(a.indexOf(t), 1))
26146 return t ? t.remove(!1, !1, {
26154 return function() {
26156 return a.length ? t.apply(u, e) : i.length ? i[0].finally(function() {
26157 return t.apply(u, e)
26158 }) : f.when("No interim elements currently showing up.")
26163 var o, s, e, l = f.when(!0);
26164 return (e = (e = a) || {}).template && (e.template = n.processTemplate(e.template)), a = de.extend({
26166 cancelAutoHide: de.noop,
26167 scope: e.scope || t.$new(e.isolateScope),
26168 onShow: function(e, t, n) {
26169 return r.enter(t, n.parent)
26171 onRemove: function(e, t) {
26172 return t && r.leave(t) || f.when()
26176 deferred: f.defer(),
26178 return f(function(t, n) {
26182 o.deferred.reject(e), n(e)
26184 a.onCompiling && a.onCompiling(a), (r = a, (r.skipCompile ? null : m.compile(r)) || f(function(e) {
26191 })).then(function(e) {
26192 s = function(e, t) {
26193 de.extend(e.locals, t);
26194 var n, r, i, o, a = e.link(t.scope);
26195 return t.element = a, t.parent = (n = a, o = (r = t).parent, ((o = de.isFunction(o) ? o(r.scope, n, r) : de.isString(o) ? de.element(d[0].querySelector(o)) : de.element(o)) || {}).length ? o : (p[0] && p[0].querySelector && (i = p[0].querySelector(":not(svg) > body")), i || (i = p[0]), "#comment" == i.nodeName && (i = d[0].body), de.element(i))), t.themable && g(a), a
26196 }(e, a), a.cleanupElement = e.cleanup, l = function(r, i, e) {
26197 var t = i.onShowing || de.noop,
26198 o = i.onComplete || de.noop;
26200 t(i.scope, r, i, e)
26204 return f(function(n, t) {
26206 f.when(i.onShow(i.scope, r, i, e)).then(function() {
26208 o(i.scope, r, i), t = de.noop, a.hideDelay && (e = h(u.hide, a.hideDelay), t = function() {
26210 }), a.cancelAutoHide = function() {
26211 t(), a.cancelAutoHide = fe
26218 }(s, a, e.controller).then(t, i)
26222 remove: function(e, t, n) {
26223 return s ? ((a = de.extend(a || {}, n || {})).cancelAutoHide && a.cancelAutoHide(), a.element.triggerHandler("$mdInterimElementRemove"), !0 === a.$destroy ? c(a.element, a).then(function() {
26225 }) : (f.when(l).finally(function() {
26226 c(a.element, a).then(function() {
26229 }), o.deferred.promise)) : f.when(!1);
26232 o.deferred.resolve(e)
26236 o.deferred.reject(e)
26242 var o = i.onRemoving || de.noop;
26243 return f(function(e, t) {
26245 var n = f.when(i.onRemove(i.scope, r, i) || !0);
26246 o(r, n), i.$destroy ? (e(r), !i.preserveScope && i.scope && n.then(function() {
26248 })) : n.then(function() {
26249 !i.preserveScope && i.scope && i.scope.$destroy(), e(r)
26261 var s, c, u, l = /(-gt)?-(sm|md|lg|print)/g,
26263 f = ["grow", "initial", "auto", "none", "noshrink", "nogrow"],
26264 h = ["row", "column"],
26265 p = ["", "start", "center", "end", "stretch", "space-around", "space-between"],
26266 m = ["", "start", "center", "end", "stretch"],
26273 var e = !!document.querySelector("[md-layouts-disabled]");
26278 return g.enabled = !1, {
26285 return ["$mdUtil", "$interpolate", "$log", function(e, t, n) {
26286 return s = e, c = t, u = n, {
26288 compile: function(e, t) {
26290 return g.enabled && (w(r, k(r, t, ""), E(0, r, t)), i(0, e), n = i), n || de.noop
26301 var n = t.split("-");
26302 return ["$log", function(e) {
26303 return e.warn(t + "has been deprecated. Please use a `" + n[0] + "-gt-<xxx>` variant."), de.noop
26307 function $(e, t, n, r) {
26308 var i, o = n[0].nodeName.toLowerCase();
26309 switch (e.replace(l, "")) {
26311 "md-button" != o && "fieldset" != o || (i = "<" + o + " " + e + "></" + o + ">", r.warn(s.supplant("Markup '{0}' may not work as expected in IE Browsers. Consult '{1}' for details.", [i, "https://github.com/philipwalton/flexbugs#9-some-html-elements-cant-be-flex-containers"])))
26315 function w(e, t, n) {
26317 switch (e.replace(l, "")) {
26319 x(t, h) || (t = h[0]);
26322 x(t, f) || isNaN(t) && (t = "");
26324 case "flex-offset":
26326 t && !isNaN(+t) || (t = "0");
26328 case "layout-align":
26332 }, 0 !== (i = (i = t) || "").indexOf("-") && 0 !== i.indexOf(" ") || (i = "none" + i), (o = i.toLowerCase().trim().replace(d, "-").split("-")).length && "space" === o[0] && (o = [o[0] + "-" + o[1], o[2]]), 0 < o.length && (a.main = o[0] || a.main), 1 < o.length && (a.cross = o[1] || a.cross), p.indexOf(a.main) < 0 && (a.main = "start"), m.indexOf(a.cross) < 0 && (a.cross = "stretch"), a);
26333 t = s.supplant("{main}-{cross}", r);
26335 case "layout-padding":
26336 case "layout-margin":
26337 case "layout-fill":
26338 case "layout-wrap":
26339 case "layout-nowrap":
26342 null != t && (n || de.noop)(t)
26345 return t ? t.trim() : ""
26348 function E(e, t, n) {
26349 return function(e) {
26350 C(e) || (n[n.$normalize(t)] = e)
26355 return -1 < (e || "").indexOf(c.startSymbol())
26358 function k(e, t, n) {
26359 var r = t.$normalize(e);
26360 return t[r] ? t[r].trim().replace(d, "-") : n || null
26363 function x(t, e, n) {
26364 t = n && t ? t.replace(d, n) : t;
26366 return t && e.forEach(function(e) {
26367 e = n ? e.replace(d, n) : e, r = r || e === t
26370 var i, t = /^((?:x|data)[:\-_])/i,
26371 n = /([:\-_]+(.))/g,
26372 e = ["layout", "flex", "flex-order", "flex-offset", "layout-align"],
26373 o = ["show", "hide", "layout-padding", "layout-margin"];
26376 return e.replace(t, "").replace(n, function(e, t, n, r) {
26377 return r ? n.toUpperCase() : n
26380 de.forEach(["", "xs", "gt-xs", "sm", "gt-sm", "md", "gt-md", "lg", "gt-lg", "xl", "print"], function(n) {
26381 de.forEach(e, function(e) {
26382 var t = n ? e + "-" + n : e;
26383 r.directive(a(t), function(l) {
26384 return ["$mdUtil", "$interpolate", "$log", function(e, t, n) {
26385 return s = e, c = t, u = n, {
26387 compile: function(e, t) {
26389 return g.enabled && ($(l, 0, e, u), w(l, k(l, t, ""), E(0, l, t)), n = r), n || de.noop
26394 function r(e, t, n) {
26395 var r, i, o, a = (r = t, i = l, function(e) {
26396 var t = w(i, e || "");
26397 de.isDefined(t) && (o && r.removeClass(o), o = t ? i + "-" + t.trim().replace(d, "-") : i, r.addClass(o))
26399 s = n.$observe(n.$normalize(l), a);
26400 a(k(l, n, "")), e.$on("$destroy", function() {
26405 }), de.forEach(o, function(e) {
26406 var t = n ? e + "-" + n : e;
26407 r.directive(a(t), y(t))
26409 }), r.provider("$$mdLayout", function() {
26412 validateAttributeValue: w,
26413 validateAttributeUsage: $,
26414 disableLayouts: function(e) {
26415 g.enabled = !0 !== e
26418 }).directive("mdLayoutCss", b).directive("ngCloak", (i = "ng-cloak", ["$timeout", function(n) {
26422 compile: function(e) {
26423 return g.enabled ? (e.addClass(i), function(e, t) {
26430 }])).directive("layoutWrap", y("layout-wrap")).directive("layoutNowrap", y("layout-nowrap")).directive("layoutNoWrap", y("layout-no-wrap")).directive("layoutFill", y("layout-fill")).directive("layoutLtMd", _("layout-lt-md")).directive("layoutLtLg", _("layout-lt-lg")).directive("flexLtMd", _("flex-lt-md")).directive("flexLtLg", _("flex-lt-lg")).directive("layoutAlignLtMd", _("layout-align-lt-md")).directive("layoutAlignLtLg", _("layout-align-lt-lg")).directive("flexOrderLtMd", _("flex-order-lt-md")).directive("flexOrderLtLg", _("flex-order-lt-lg")).directive("offsetLtMd", _("flex-offset-lt-md")).directive("offsetLtLg", _("flex-offset-lt-lg")).directive("hideLtMd", _("hide-lt-md")).directive("hideLtLg", _("hide-lt-lg")).directive("showLtMd", _("show-lt-md")).directive("showLtLg", _("show-lt-lg")).config(v)
26431 }(de.module("material.core.layout", ["ng"]))
26435 this._$timeout = e, this._liveElement = this._createLiveElement(), this._announceTimeout = 100
26437 e.$inject = ["$timeout"], de.module("material.core").service("$mdLiveAnnouncer", e), e.prototype.announce = function(e, t) {
26438 t || (t = "polite");
26440 n._liveElement.textContent = "", n._liveElement.setAttribute("aria-live", t), n._$timeout(function() {
26441 n._liveElement.textContent = e
26442 }, n._announceTimeout, !1)
26443 }, e.prototype._createLiveElement = function() {
26444 var e = document.createElement("div");
26445 return e.classList.add("md-visually-hidden"), e.setAttribute("role", "status"), e.setAttribute("aria-atomic", "true"), e.setAttribute("aria-live", "polite"), document.body.appendChild(e), e
26447 }(), de.module("material.core.meta", []).provider("$$mdMeta", function() {
26448 var r = de.element(document.head),
26452 if (i[e]) return !0;
26453 var t = document.getElementsByName(e)[0];
26454 return !!t && (i[e] = de.element(t), !0)
26457 setMeta: function(e, t) {
26458 if (o(e), i[e]) i[e].attr("content", t);
26460 var n = de.element('<meta name="' + e + '" content="' + t + '"/>');
26461 r.append(n), i[e] = n
26463 return function() {
26464 i[e].attr("content", ""), i[e].remove(), delete i[e]
26467 getMeta: function(e) {
26468 if (!o(e)) throw Error("$$mdMeta: could not find a meta tag with the name '" + e + "'");
26469 return i[e].attr("content")
26472 return de.extend({}, e, {
26483 notFoundError: function(e, t) {
26484 n.error((t || "") + "No instance found for handle", e)
26486 getInstances: function() {
26490 if (!s(e)) return null;
26492 for (t = 0, n = o.length; t < n; t++)
26493 if ((r = o[t]).$$mdHandle === e) return r;
26496 register: function(t, e) {
26497 return e ? (t.$$mdHandle = e, o.push(t), (n = a[e]) && (n.forEach(function(e) {
26499 }), delete a[e]), function() {
26500 var e = o.indexOf(t); - 1 !== e && o.splice(e, 1)
26504 when: function(e) {
26508 return n ? t.resolve(n) : (a[e] === fe && (a[e] = []), a[e].push(t)), t.promise
26510 return r.reject("Invalid `md-component-id` value.")
26515 return e && "" !== e
26518 e.$inject = ["$log", "$q"], de.module("material.core").factory("$mdComponentRegistry", e)
26523 attach: function(e, t, n) {
26525 return n = de.extend((r = t).hasClass("md-icon-button") ? {
26526 isMenuItem: r.hasClass("md-menu-item"),
26530 isMenuItem: r.hasClass("md-menu-item"),
26532 }, n), i.attach(e, t, n)
26536 e.$inject = ["$mdInkRipple"], de.module("material.core").factory("$mdButtonInkRipple", e)
26541 attach: function(e, t, n) {
26542 return r.attach(e, t, de.extend({
26550 e.$inject = ["$mdInkRipple"], de.module("material.core").factory("$mdCheckboxInkRipple", e)
26555 attach: function(e, t, n) {
26556 return r.attach(e, t, de.extend({
26565 e.$inject = ["$mdInkRipple"], de.module("material.core").factory("$mdListInkRipple", e)
26568 o.$inject = ["$scope", "$element", "rippleOptions", "$window", "$timeout", "$mdUtil", "$mdColorUtil"], e.$inject = ["$mdButtonInkRipple", "$mdCheckboxInkRipple"], de.module("material.core").provider("$mdInkRipple", function() {
26571 disableInkRipple: function() {
26574 $get: ["$injector", function(r) {
26576 attach: function(e, t, n) {
26577 return i || t.controller("mdNoInk") ? de.noop : r.instantiate(o, {
26586 }).directive("mdInkRipple", e).directive("mdNoInk", n).directive("mdNoBar", n).directive("mdNoStretch", n);
26590 controller: de.noop,
26591 link: function(e, t, n) {
26592 n.hasOwnProperty("mdInkRippleCheckbox") ? i.attach(e, t) : r.attach(e, t)
26597 function o(e, t, n, r, i, o, a) {
26598 this.$window = r, this.$timeout = i, this.$mdUtil = o, this.$mdColorUtil = a, this.$scope = e, this.$element = t, this.options = n, this.mousedown = !1, this.ripples = [], this.timeout = null, this.lastRipple = null, o.valueOnUse(this, "container", this.createContainer), this.$element.addClass("md-ink-ripple"), (t.controller("mdInkRipple") || {}).createRipple = de.bind(this, this.createRipple), (t.controller("mdInkRipple") || {}).setColor = de.bind(this, this.color), this.bindEvents()
26602 (e.mousedown || e.lastRipple) && (e.mousedown = !1, e.$mdUtil.nextTick(de.bind(e, t), !1))
26607 controller: de.noop
26610 o.prototype.color = function(e) {
26611 var t, n, r = this;
26612 return de.isDefined(e) && (r._color = r._parseColor(e)), r._color || r._parseColor(r.inkRipple()) || r._parseColor((t = r.options && r.options.colorElement ? r.options.colorElement : [], (n = t.length ? t[0] : r.$element[0]) ? r.$window.getComputedStyle(n).color : "rgb(0,0,0)"))
26613 }, o.prototype.calculateColor = function() {
26614 return this.color()
26615 }, o.prototype._parseColor = function(e, t) {
26617 var n = this.$mdColorUtil;
26618 if (e) return 0 === e.indexOf("rgba") ? e.replace(/\d?\.?\d*\s*\)\s*$/, (.1 * t).toString() + ")") : 0 === e.indexOf("rgb") ? n.rgbToRgba(e) : 0 === e.indexOf("#") ? n.hexToRgba(e) : void 0
26619 }, o.prototype.bindEvents = function() {
26620 this.$element.on("mousedown", de.bind(this, this.handleMousedown)), this.$element.on("mouseup touchend", de.bind(this, this.handleMouseup)), this.$element.on("mouseleave", de.bind(this, this.handleMouseup)), this.$element.on("touchmove", de.bind(this, this.handleTouchmove))
26621 }, o.prototype.handleMousedown = function(e) {
26622 if (!this.mousedown)
26623 if (e.hasOwnProperty("originalEvent") && (e = e.originalEvent), this.mousedown = !0, this.options.center) this.createRipple(this.container.prop("clientWidth") / 2, this.container.prop("clientWidth") / 2);
26624 else if (e.srcElement !== this.$element[0]) {
26625 var t = this.$element[0].getBoundingClientRect(),
26626 n = e.clientX - t.left,
26627 r = e.clientY - t.top;
26628 this.createRipple(n, r)
26629 } else this.createRipple(e.offsetX, e.offsetY)
26630 }, o.prototype.handleMouseup = function() {
26631 this.$timeout(function() {
26632 t(this, this.clearRipples)
26634 }, o.prototype.handleTouchmove = function() {
26635 t(this, this.deleteRipples)
26636 }, o.prototype.deleteRipples = function() {
26637 for (var e = 0; e < this.ripples.length; e++) this.ripples[e].remove()
26638 }, o.prototype.clearRipples = function() {
26639 for (var e = 0; e < this.ripples.length; e++) this.fadeInComplete(this.ripples[e])
26640 }, o.prototype.createContainer = function() {
26641 var e = de.element('<div class="md-ripple-container"></div>');
26642 return this.$element.append(e), e
26643 }, o.prototype.clearTimeout = function() {
26644 this.timeout && (this.$timeout.cancel(this.timeout), this.timeout = null)
26645 }, o.prototype.isRippleAllowed = function() {
26646 var e = this.$element[0];
26648 if (!e.tagName || "BODY" === e.tagName) break;
26649 if (e && de.isFunction(e.hasAttribute)) {
26650 if (e.hasAttribute("disabled")) return !1;
26651 if ("false" === this.inkRipple() || "0" === this.inkRipple()) return !1
26653 } while (e = e.parentNode);
26655 }, o.prototype.inkRipple = function() {
26656 return this.$element.attr("md-ink-ripple")
26657 }, o.prototype.createRipple = function(e, t) {
26658 if (this.isRippleAllowed()) {
26659 var n, r, i, o = this,
26660 a = o.$mdColorUtil,
26661 s = de.element('<div class="md-ripple"></div>'),
26662 l = this.$element.prop("clientWidth"),
26663 c = this.$element.prop("clientHeight"),
26664 u = 2 * Math.max(Math.abs(l - e), e),
26665 d = 2 * Math.max(Math.abs(c - t), t),
26666 f = (n = this.options.fitRipple, r = u, i = d, n ? Math.max(r, i) : Math.sqrt(Math.pow(r, 2) + Math.pow(i, 2))),
26667 h = this.calculateColor();
26671 background: "black",
26674 backgroundColor: a.rgbaToRgb(h),
26675 borderColor: a.rgbaToRgb(h)
26676 }), this.lastRipple = s, this.clearTimeout(), this.timeout = this.$timeout(function() {
26677 o.clearTimeout(), o.mousedown || o.fadeInComplete(s)
26678 }, 157.5, !1), this.options.dimBackground && this.container.css({
26680 }), this.container.append(s), this.ripples.push(s), s.addClass("md-ripple-placed"), this.$mdUtil.nextTick(function() {
26681 s.addClass("md-ripple-scaled md-ripple-active"), o.$timeout(function() {
26686 }, o.prototype.fadeInComplete = function(e) {
26687 this.lastRipple === e && (this.timeout || this.mousedown) || this.removeRipple(e)
26688 }, o.prototype.removeRipple = function(e) {
26690 this.ripples.indexOf(e) < 0 || (this.ripples.splice(this.ripples.indexOf(e), 1), e.removeClass("md-ripple-active"), e.addClass("md-ripple-remove"), 0 === this.ripples.length && this.container.css({
26691 backgroundColor: ""
26692 }), this.$timeout(function() {
26693 t.fadeOutComplete(e)
26695 }, o.prototype.fadeOutComplete = function(e) {
26696 e.remove(), this.lastRipple = null
26702 attach: function(e, t, n) {
26703 return r.attach(e, t, de.extend({
26712 e.$inject = ["$mdInkRipple"], de.module("material.core").factory("$mdTabInkRipple", e)
26713 }(), de.module("material.core.theming.palette", []).constant("$mdColorPalette", {
26729 contrastDefaultColor: "light",
26730 contrastDarkColors: "50 100 200 300 A100",
26731 contrastStrongLightColors: "400 500 600 700 A200 A400 A700"
26748 contrastDefaultColor: "light",
26749 contrastDarkColors: "50 100 200 A100",
26750 contrastStrongLightColors: "500 600 A200 A400 A700"
26767 contrastDefaultColor: "light",
26768 contrastDarkColors: "50 100 200 A100",
26769 contrastStrongLightColors: "300 400 A200 A400 A700"
26786 contrastDefaultColor: "light",
26787 contrastDarkColors: "50 100 200 A100",
26788 contrastStrongLightColors: "300 400 A200"
26805 contrastDefaultColor: "light",
26806 contrastDarkColors: "50 100 200 A100",
26807 contrastStrongLightColors: "300 400 A200 A400"
26824 contrastDefaultColor: "light",
26825 contrastDarkColors: "50 100 200 300 400 A100",
26826 contrastStrongLightColors: "500 600 700 A200 A400 A700"
26843 contrastDefaultColor: "dark",
26844 contrastLightColors: "600 700 800 900 A700",
26845 contrastStrongLightColors: "600 700 800 A700"
26862 contrastDefaultColor: "dark",
26863 contrastLightColors: "700 800 900",
26864 contrastStrongLightColors: "700 800 900"
26881 contrastDefaultColor: "dark",
26882 contrastLightColors: "500 600 700 800 900",
26883 contrastStrongLightColors: "500 600 700"
26900 contrastDefaultColor: "dark",
26901 contrastLightColors: "500 600 700 800 900",
26902 contrastStrongLightColors: "500 600 700"
26919 contrastDefaultColor: "dark",
26920 contrastLightColors: "700 800 900",
26921 contrastStrongLightColors: "700 800 900"
26938 contrastDefaultColor: "dark",
26939 contrastLightColors: "900",
26940 contrastStrongLightColors: "900"
26957 contrastDefaultColor: "dark"
26974 contrastDefaultColor: "dark"
26991 contrastDefaultColor: "dark",
26992 contrastLightColors: "800 900",
26993 contrastStrongLightColors: "800 900"
27010 contrastDefaultColor: "light",
27011 contrastDarkColors: "50 100 200 300 400 A100 A200",
27012 contrastStrongLightColors: "500 600 700 800 900 A400 A700"
27029 contrastDefaultColor: "light",
27030 contrastDarkColors: "50 100 200 A100 A200",
27031 contrastStrongLightColors: "300 400"
27048 contrastDefaultColor: "dark",
27049 contrastLightColors: "600 700 800 900 A200 A400 A700"
27066 contrastDefaultColor: "light",
27067 contrastDarkColors: "50 100 200 300 A100 A200",
27068 contrastStrongLightColors: "400 500 700"
27073 var t = !!document.querySelector("[md-themes-disabled]");
27074 e.disableTheming(t)
27076 e.$inject = ["$mdThemingProvider"], n.$inject = ["$mdTheming", "$interpolate", "$parse", "$mdUtil", "$q", "$log"], r.$inject = ["$mdTheming"], t.$inject = ["$mdColorPalette", "$$mdMetaProvider"], i.$inject = ["$injector", "$mdTheming"], y.module("material.core.theming", ["material.core.theming.palette", "material.core.meta"]).directive("mdTheme", n).directive("mdThemable", r).directive("mdThemesDisabled", function() {
27077 return $.disableTheming = !0, {
27081 }).provider("$mdTheming", t).config(e).run(i);
27085 1: "rgba(0,0,0,0.87)",
27086 2: "rgba(0,0,0,0.54)",
27087 3: "rgba(0,0,0,0.38)",
27088 4: "rgba(0,0,0,0.12)"
27092 1: "rgba(255,255,255,1.0)",
27093 2: "rgba(255,255,255,0.7)",
27094 3: "rgba(255,255,255,0.5)",
27095 4: "rgba(255,255,255,0.12)"
27097 u = "1px 1px 0px rgba(0,0,0,0.4), -1px -1px 0px rgba(0,0,0,0.4)",
27099 d = k("rgba(0,0,0,0.87)"),
27100 f = k("rgba(255,255,255,0.87)"),
27101 h = k("rgb(255,255,255)"),
27102 g = ["primary", "accent", "warn", "background"],
27126 g.forEach(function(e) {
27133 v[e] || (v[e] = t), b[e] || (b[e] = t)
27135 var _ = ["50", "100", "200", "300", "400", "500", "600", "700", "800", "900", "A100", "A200", "A400", "A700"],
27137 disableTheming: !1,
27138 generateOnDemand: !1,
27139 registeredStyles: [],
27144 a.$inject = ["$rootScope", "$mdUtil", "$q", "$log"];
27149 var t = function(e) {
27150 var t, n, r, i = (e = y.isObject(e) ? e : {}).theme || "default",
27151 o = e.hue || "800",
27152 a = p[e.palette] || p[d[i].colors[e.palette || "primary"].name],
27153 s = y.isObject(a[o]) ? a[o].hex : a[o];
27154 return "#" !== s.substr(0, 1) && (s = "#" + s), t = s, n = l.setMeta("theme-color", t), r = l.setMeta("msapplication-navbutton-color", t),
27160 definePalette: function(e, t) {
27161 return t = t || {}, p[e] = r(e, t), n
27163 extendPalette: function(e, t) {
27164 return r(e, y.extend({}, p[e] || {}, t))
27167 configuration: function() {
27168 return y.extend({}, $, {
27170 alwaysWatchTheme: f,
27171 registeredStyles: [].concat($.registeredStyles)
27174 disableTheming: function(e) {
27175 $.disableTheming = y.isUndefined(e) || !!e
27177 registerStyles: function(e) {
27178 $.registeredStyles.push(e)
27180 setNonce: function(e) {
27183 generateThemesOnDemand: function(e) {
27184 $.generateOnDemand = e
27186 setDefaultTheme: function(e) {
27189 alwaysWatchTheme: function(e) {
27192 enableBrowserColor: t,
27194 _LIGHT_DEFAULT_HUES: v,
27195 _DARK_DEFAULT_HUES: b,
27203 var n = _.filter(function(e) {
27206 if (n.length) throw new Error("Missing colors %1 in palette %2!".replace("%1", n.join(", ")).replace("%2", e));
27211 if (d[e]) return d[e];
27212 var n = "string" == typeof(t = t || "default") ? d[t] : t,
27214 return n && y.forEach(n.colors, function(e, t) {
27217 hues: y.extend({}, e.hues)
27226 if ((e = 0 === arguments.length || !!e) !== a.isDark) {
27227 a.isDark = e, a.foregroundPalette = a.isDark ? c : s, a.foregroundShadow = a.isDark ? u : m;
27228 var t = a.isDark ? b : v,
27229 o = a.isDark ? v : b;
27230 return y.forEach(t, function(e, t) {
27231 var n = a.colors[t],
27234 for (var i in n.hues) n.hues[i] === r[i] && (n.hues[i] = e[i])
27238 a.name = e, a.colors = {}, (a.dark = t)(!1), g.forEach(function(r) {
27239 var i = (a.isDark ? b : v)[r];
27240 a[r + "Palette"] = function(t, e) {
27241 var n = a.colors[r] = {
27243 hues: y.extend({}, i, e)
27245 return Object.keys(n.hues).forEach(function(e) {
27246 if (!i[e]) throw new Error("Invalid hue name '%1' in theme %2's %3 color %4. Available hue names: %4".replace("%1", e).replace("%2", a.name).replace("%3", t).replace("%4", Object.keys(i).join(", ")))
27247 }), Object.keys(n.hues).map(function(e) {
27249 }).forEach(function(e) {
27250 if (-1 == _.indexOf(e)) throw new Error("Invalid hue value '%1' in theme %2's %3 color %4. Available hue values: %5".replace("%1", e).replace("%2", a.name).replace("%3", r).replace("%4", t).replace("%5", _.join(", ")))
27252 }, a[r + "Color"] = function() {
27253 var e = Array.prototype.slice.call(arguments);
27254 return console.warn("$mdThemingProviderTheme." + r + "Color() has been deprecated. Use $mdThemingProviderTheme." + r + "Palette() instead."), a[r + "Palette"].apply(a, e)
27259 function a(n, l, r, c) {
27260 var i = function(e, t) {
27261 t === fe && (t = e, e = fe), e === fe && (e = n), i.inherit(t, t)
27263 return Object.defineProperty(i, "THEMES", {
27265 return y.extend({}, d)
27267 }), Object.defineProperty(i, "PALETTES", {
27269 return y.extend({}, p)
27271 }), Object.defineProperty(i, "ALWAYS_WATCH", {
27275 }), i.inherit = function(n, e) {
27276 var r = e.controller("mdTheme") || n.data("$mdThemeController"),
27278 if (s(r && r.$mdTheme || ("default" === h ? "" : h)), r) {
27279 var i = f || r.$shouldWatch || l.parseAttributeBoolean(n.attr("md-theme-watch"));
27280 if (i || r.isAsyncTheme) {
27281 var o = function() {
27284 a = r.registerChanges(function(e) {
27287 t ? t.$on("$destroy", o) : n.on("$destroy", o)
27293 u(e) || c.warn("Attempted to use unregistered theme '" + e + "'. Register it with $mdThemingProvider.theme().");
27294 var t = n.data("$mdThemeName");
27295 t && n.removeClass("md-" + t + "-theme"), n.addClass("md-" + e + "-theme"), n.data("$mdThemeName", e), r && n.data("$mdThemeController", r)
27298 }, i.registered = u, i.defaultTheme = function() {
27300 }, i.generateTheme = function(e) {
27301 C(d[e], e, $.nonce)
27302 }, i.defineTheme = function(e, t) {
27305 return t.primary && n.primaryPalette(t.primary, t.primaryHues), t.accent && n.accentPalette(t.accent, t.accentHues), t.warn && n.warnPalette(t.warn, t.warnHues), t.background && n.backgroundPalette(t.background, t.backgroundHues), t.dark && n.dark(), this.generateTheme(e), r.resolve(e)
27306 }, i.setBrowserColor = t, i;
27309 return e === fe || "" === e || i.THEMES[e] !== fe
27314 function n(h, p, m, g, v, b) {
27318 pre: function(t, e, n) {
27320 i = p.startSymbol(),
27322 a = n.mdTheme.trim(),
27323 s = a.substr(0, i.length) === i && a.lastIndexOf(o) === a.length - o.length,
27324 l = "::" === n.mdTheme.split(i).join("").split(o).join("").trim().substr(0, "::".length),
27326 var e = p(n.mdTheme)(t);
27327 return m(e)(t) || e
27330 isAsyncTheme: y.isFunction(c()) || y.isFunction(c().then),
27331 registerChanges: function(t, e) {
27332 return e && (t = y.bind(e, t)), r.push(t),
27334 var e = r.indexOf(t); - 1 < e && r.splice(e, 1)
27337 $setTheme: function(e) {
27338 h.registered(e) || b.warn("attempted to use unregistered theme '" + e + "'"), u.$mdTheme = e;
27339 for (var t = r.length; t--;) r[t](e)
27341 $shouldWatch: g.parseAttributeBoolean(e.attr("md-theme-watch")) || h.ALWAYS_WATCH || s && !l
27343 e.data("$mdThemeController", u);
27344 var d = function(e) {
27345 if ("string" == typeof e) return u.$setTheme(e);
27346 v.when(y.isFunction(e) ? e() : e).then(function(e) {
27351 var f = t.$watch(c, function(e) {
27352 e && (d(e), u.$shouldWatch || f())
27363 function w(s, e, t) {
27365 if (!p[(e.colors[t] || {}).name]) throw new Error("You supplied an invalid color palette for theme %1's %2 palette. Available palettes: %3".replace("%1", e.name).replace("%2", t).replace("%3", Object.keys(p).join(", ")))
27366 }(s, e), t = t.replace(/THEME_NAME/g, s.name);
27367 var n = new RegExp("\\.md-" + s.name + "-theme", "g");
27368 t = t.replace(/'?"?\{\{\s*([a-zA-Z]+)-(A?\d+|hue-[0-3]|shadow|default)-?(\d\.?\d*)?(contrast)?\s*\}\}'?"?/g, function(e, t, n, r, i) {
27369 return "foreground" === t ? "shadow" == n ? s.foregroundShadow : s.foregroundPalette[n] || s.foregroundPalette[1] : (0 !== n.indexOf("hue") && "default" !== n || (n = s.colors[t].hues[n]), x((p[s.colors[t].name][n] || "")[i ? "contrast" : "value"], r))
27371 var r = new RegExp("('|\")?{{\\s*([a-zA-Z]+)-(color|contrast)-?(\\d\\.?\\d*)?\\s*}}(\"|')?", "g"),
27373 return y.forEach(["default", "hue-1", "hue-2", "hue-3"], function(a) {
27374 var e = t.replace(r, function(e, t, n, r, i) {
27375 var o = s.colors[n];
27376 return x(p[o.name][o.hues[a]]["color" === r ? "value" : "contrast"], i)
27378 "default" !== a && (e = e.replace(n, ".md-" + s.name + "-theme.md-" + a)), "default" == s.name && (e = e.replace(/((?:\s|>|\.|\w|-|:|\(|\)|\[|\]|"|'|=)*)\.md-default-theme((?:\s|>|\.|\w|-|:|\(|\)|\[|\]|"|'|=)*)/g, function(e, t, n) {
27379 return e + ", " + t + n
27386 var n = document.head,
27387 r = n ? n.firstElementChild : null,
27388 i = !$.disableTheming && e.has("$MD_THEME_CSS") ? e.get("$MD_THEME_CSS") : "";
27389 if (i += $.registeredStyles.join(""), r && 0 !== i.length) {
27390 y.forEach(p, function(r, e) {
27391 var i = r.contrastDefaultColor,
27392 o = r.contrastLightColors || [],
27393 a = r.contrastStrongLightColors || [],
27394 s = r.contrastDarkColors || [];
27395 "string" == typeof o && (o = o.split(" ")), "string" == typeof a && (a = a.split(" ")), "string" == typeof s && (s = s.split(" ")), delete r.contrastDefaultColor, delete r.contrastLightColors, delete r.contrastStrongLightColors, delete r.contrastDarkColors, y.forEach(r, function(e, t) {
27396 if (!y.isObject(e)) {
27398 if (!n) throw new Error("Color %1, in palette %2's hue %3, is invalid. Hex or rgb(a) color expected.".replace("%1", e).replace("%2", r.name).replace("%3", t));
27402 contrast: "light" === i ? -1 < s.indexOf(t) ? d : -1 < a.indexOf(t) ? h : f : -1 < o.indexOf(t) ? -1 < a.indexOf(t) ? h : f : d
27407 var o = i.split(/\}(?!(\}|'|"|;))/).filter(function(e) {
27408 return e && e.trim().length
27409 }).map(function(e) {
27410 return e.trim() + "}"
27412 g.forEach(function(e) {
27414 }), o.forEach(function(e) {
27415 for (var t, n = 0; t = g[n]; n++)
27416 if (-1 < e.indexOf(".md-" + t)) return E[t] += e;
27417 for (n = 0; t = g[n]; n++)
27418 if (-1 < e.indexOf(t)) return E[t] += e;
27420 }), $.generateOnDemand || y.forEach(t.THEMES, function(e) {
27421 l[e.name] || "default" !== t.defaultTheme() && "default" === e.name || C(e, e.name, $.nonce)
27426 function C(i, e, o) {
27427 var a = document.head,
27428 s = a ? a.firstElementChild : null;
27429 l[e] || (g.forEach(function(e) {
27430 for (var t = w(i, e, E[e]); t.length;) {
27433 var r = document.createElement("style");
27434 r.setAttribute("md-theme-style", ""), o && r.setAttribute("nonce", o), r.appendChild(document.createTextNode(n)), a.insertBefore(r, s)
27437 }), l[i.name] = !0)
27441 if (y.isArray(e) && 3 == e.length) return e;
27442 if (/^rgb/.test(e)) return e.replace(/(^\s*rgba?\(|\)\s*$)/g, "").split(",").map(function(e, t) {
27443 return 3 == t ? parseFloat(e, 10) : parseInt(e, 10)
27445 if ("#" == e.charAt(0) && (e = e.substring(1)), /^([a-fA-F0-9]{3}){1,2}$/g.test(e)) {
27446 var t = e.length / 3,
27447 n = e.substr(0, t),
27448 r = e.substr(t, t),
27449 i = e.substr(2 * t);
27450 return 1 === t && (n += n, r += r, i += i), [parseInt(n, 16), parseInt(r, 16), parseInt(i, 16)]
27455 return e ? (4 == e.length && (e = y.copy(e), t ? e.pop() : t = e.pop()), t && ("number" == typeof t || "string" == typeof t && t.length) ? "rgba(" + e.join(",") + "," + t + ")" : "rgb(" + e.join(",") + ")") : "rgb('0,0,0')"
27457 }(F.angular), de.module("material.components.autocomplete", ["material.core", "material.components.icon", "material.components.virtualRepeat"]),
27459 e.$inject = ["$scope", "$element", "$mdUtil", "$mdConstant", "$mdTheming", "$window", "$animate", "$rootElement", "$attrs", "$q", "$log", "$mdLiveAnnouncer"], de.module("material.components.autocomplete").controller("MdAutocompleteCtrl", e);
27467 function e(h, p, m, t, n, e, r, i, g, s, o, a) {
27468 var l, c, u, d = this,
27469 f = h.itemsExpr.split(/ in /i),
27479 x = m.debounce(function() {
27483 d.documentElement = de.element(document.documentElement), l = "hidden", c = function(e, t) {
27484 !e && t ? (D(), Q(!0, A.Count | A.Selected), b && (m.disableScrollAround(b.ul), C = function(e) {
27488 return e.on("wheel", t), e.on("touchmove", t),
27490 e.off("wheel", t), e.off("touchmove", t)
27492 }(de.element(b.wrap)), d.documentElement.on("click", I))) : e && !t && (d.documentElement.off("click", I), m.enableScrolling(), C && (C(), C = null))
27493 }, u = !0, Object.defineProperty(d, l, {
27501 }), d.scope = h, d.parent = h.$parent, d.itemName = f[0], d.matches = [], d.loading = !1, d.hidden = !0, d.index = null, d.id = m.nextUid(), d.isDisabled = null, d.isRequired = null, d.isReadonly = null, d.hasNotFound = !1, d.selectedMessage = h.selectedMessage || "selected", d.keydown = function(e) {
27502 switch (e.keyCode) {
27503 case t.KEY_CODE.DOWN_ARROW:
27504 if (d.loading || W()) return;
27505 e.stopPropagation(), e.preventDefault(), d.index = Math.min(d.index + 1, d.matches.length - 1), J(), Q(!1, A.Selected);
27507 case t.KEY_CODE.UP_ARROW:
27508 if (d.loading || W()) return;
27509 e.stopPropagation(), e.preventDefault(), d.index = d.index < 0 ? d.matches.length - 1 : Math.max(0, d.index - 1), J(), Q(!1, A.Selected);
27511 case t.KEY_CODE.TAB:
27512 if (R(), d.hidden || d.loading || d.index < 0 || d.matches.length < 1) return;
27515 case t.KEY_CODE.ENTER:
27516 if (d.hidden || d.loading || d.index < 0 || d.matches.length < 1) return;
27518 e.stopImmediatePropagation(), e.preventDefault(), K(d.index);
27520 case t.KEY_CODE.ESCAPE:
27521 if (e.preventDefault(), !(B("blur") || !d.hidden || d.loading || B("clear") && h.searchText)) return;
27522 e.stopPropagation(), Z(), h.searchText && B("clear") && X(), d.hidden = !0, B("blur") && function(e) {
27527 }, d.blur = function(e) {
27528 w = !1, _ || (d.hidden = U(), ie("ngBlur", {
27531 }, d.focus = function(e) {
27532 w = !0, V() && G() && ne();
27533 d.hidden = U(), ie("ngFocus", {
27536 }, d.clear = function(e) {
27537 e && e.stopPropagation();
27539 }, d.select = K, d.listEnter = function() {
27541 }, d.listLeave = R, d.mouseUp = function() {
27543 }, d.getCurrentDisplayValue = Y, d.registerSelectedItemWatcher = function(e) {
27544 -1 === $.indexOf(e) && $.push(e)
27545 }, d.unregisterSelectedItemWatcher = function(e) {
27546 var t = $.indexOf(e); - 1 !== t && $.splice(t, 1)
27547 }, d.notFoundVisible = te, d.loadingIsVisible = function() {
27548 return d.loading && !W()
27549 }, d.positionDropdown = D;
27554 return m.initOptionalProperties(h, g, {
27556 selectedItem: null,
27558 disableVirtualRepeat: !1
27559 }), n(p), M = parseInt(h.delay, 10) || 0, g.$observe("disabled", function(e) {
27560 d.isDisabled = m.parseAttributeBoolean(e, !1)
27561 }), g.$observe("required", function(e) {
27562 d.isRequired = m.parseAttributeBoolean(e, !1)
27563 }), g.$observe("readonly", function(e) {
27564 d.isReadonly = m.parseAttributeBoolean(e, !1)
27565 }), h.$watch("searchText", M ? m.debounce(H, M) : H), h.$watch("selectedItem", P), de.element(e).on("resize", x), h.$on("$destroy", N), void m.nextTick(function() {
27569 for (e = p; e.length && (t = e.attr("md-autocomplete-snap"), !de.isDefined(t)); e = e.parent());
27570 if (e.length) return {
27572 wrap: "width" === t.toLowerCase() ? e[0] : p.find("md-autocomplete-wrap")[0]
27574 var n = p.find("md-autocomplete-wrap")[0];
27581 scrollContainer: p[0].querySelector(".md-virtual-repeat-container, .md-standard-list-container"),
27582 scroller: p[0].querySelector(".md-virtual-repeat-scroller, .md-standard-list-scroller"),
27583 ul: p.find("ul")[0],
27584 input: p.find("input")[0],
27587 root: document.body
27588 }).li = b.ul.getElementsByTagName("li"), b.$ = function(e) {
27590 for (var n in e) e.hasOwnProperty(n) && (t[n] = de.element(e[n]));
27592 }(b), T = b.scrollContainer.classList.contains("md-standard-list-container") ? ce : ue, k = b.$.input.controller("ngModel"), b.$.root.length && (n(b.$.scrollContainer), b.$.scrollContainer.detach(), b.$.root.append(b.$.scrollContainer), r.pin && r.pin(b.$.scrollContainer, i)), h.autofocus && p.on("focus", O), h.inputAriaDescribedBy && b.input.setAttribute("aria-describedby", h.inputAriaDescribedBy), h.floatingLabel || (h.inputAriaLabel ? b.input.setAttribute("aria-label", h.inputAriaLabel) : h.inputAriaLabelledBy ? b.input.setAttribute("aria-labelledby", h.inputAriaLabelledBy) : h.placeholder && b.input.setAttribute("aria-label", h.placeholder))
27596 h.requireMatch && k && k.$setValidity("md-require-match", !!h.selectedItem || !h.searchText)
27600 if (!b) return m.nextTick(D, !1, h);
27601 var e, t = (h.dropdownItems || ae) * oe,
27602 n = b.wrap.getBoundingClientRect(),
27603 r = b.snap.getBoundingClientRect(),
27604 i = b.root.getBoundingClientRect(),
27605 o = r.bottom - i.top,
27606 a = i.bottom - r.top,
27607 s = n.left - i.left,
27611 t = p.find("md-input-container");
27613 var n = t.find("input");
27614 e = t.prop("offsetHeight"), e -= n.prop("offsetTop"), e -= n.prop("offsetHeight"), e += t.prop("offsetTop")
27618 u = h.dropdownPosition,
27619 d = i.bottom - r.bottom - se + m.getViewportTop(),
27621 u || (u = t < d ? "bottom" : t < f ? "top" : d < f ? "top" : "bottom"), g.mdFloatingLabel && (s += le, l -= 2 * le), e = {
27623 minWidth: l + "px",
27624 maxWidth: Math.max(n.right - i.left, i.right - n.left) - se + "px"
27625 }, "top" === u ? (e.top = "auto", e.bottom = a + "px", e.maxHeight = Math.min(t, f) + "px") : (d = i.bottom - n.bottom - se + m.getViewportTop(), e.top = o - c + "px", e.bottom = "auto", e.maxHeight = Math.min(t, d) + "px"), b.$.scrollContainer.css(e), m.nextTick(function() {
27626 var e = b.scrollContainer.getBoundingClientRect(),
27628 e.right > i.right && (t.left = n.right - e.width + "px");
27629 b.$.scrollContainer.css(t)
27638 if (d.hidden || m.enableScrolling(), de.element(e).off("resize", x), b) {
27639 de.forEach(["ul", "scroller", "scrollContainer", "input"], function(e) {
27650 w || d.hidden || b.input.focus(), _ = !1, d.hidden = U()
27654 S(), r ? L(r).then(function(e) {
27656 h.searchText = e, t = r, n = i, $.forEach(function(e) {
27659 }) : i && h.searchText && L(i).then(function(e) {
27660 de.isString(h.searchText) && e.toString().toLowerCase() === h.searchText.toLowerCase() && (h.searchText = "")
27661 }), r !== i && de.isFunction(h.itemChange) && h.itemChange(F(h.selectedItem))
27665 d.index = h.autoselect ? 0 : -1, t !== n && (S(), L(h.selectedItem).then(function(e) {
27666 t !== e && (h.selectedItem = null, t !== n && de.isFunction(h.textChange) && h.textChange(), G() ? ne() : (q(!(d.matches = [])), Q(!0, A.Count)))
27671 return de.isNumber(h.minLength) ? h.minLength : 1
27675 return s.when((t = e, (t && h.itemText ? h.itemText(F(t)) : null) || e)).then(function(e) {
27676 return e && !de.isString(e) && o.warn("md-autocomplete: Could not resolve display value to a string. Please check the `md-item-text` attribute."), e
27684 return d.itemName && (t[d.itemName] = e), t
27688 d.loading !== e && (d.loading = e), d.hidden = U()
27692 return ! function() {
27694 if (d.isReadonly) return !1;
27695 if (!V()) return !1
27697 return G() && z() || te()
27702 return !(d.loading && !z()) && (!W() && !!w)
27706 return !h.escapeOptions || -1 !== h.escapeOptions.toLowerCase().indexOf(e)
27710 return !!d.matches.length
27714 return !!d.scope.selectedItem
27718 return L(d.matches[d.index])
27722 return (h.searchText || "").length >= j()
27726 m.nextTick(function() {
27727 L(d.matches[e]).then(function(e) {
27728 var t = b.$.input.controller("ngModel");
27729 a.announce(e + " " + d.selectedMessage, "assertive"), t.$setViewValue(e), t.$render()
27730 }).finally(function() {
27731 h.selectedItem = d.matches[e], q(!1)
27737 d.index = 0, d.matches = []
27741 q(!0), h.searchText = "";
27742 var e = document.createEvent("CustomEvent");
27743 e.initCustomEvent("change", !0, !0, {
27745 }), b.input.dispatchEvent(e), b.input.blur(), h.searchText = "", b.input.focus()
27749 var n = e ? "polite" : "assertive",
27751 t & A.Selected && -1 !== d.index && r.push(Y()), t & A.Count && r.push(s.resolve(function() {
27752 switch (d.matches.length) {
27754 return "There are no matches available.";
27756 return "There is 1 match available.";
27758 return "There are " + d.matches.length + " matches available."
27760 }())), s.all(r).then(function(e) {
27761 a.announce(e.join(" "), n)
27766 var e, t, n, r, i, o, a, s, l, c;
27767 b.li[0] && (T === ce ? (o = b.li[d.index] || b.li[0], a = b.scrollContainer.offsetHeight, s = o && o.offsetTop || 0, l = s + o.clientHeight, c = b.scrollContainer.scrollTop, s < c ? ee(s) : c + a < l && ee(l - a)) : (e = b.li[0].offsetHeight, t = e * d.index, n = t + e, r = b.scroller.clientHeight, i = b.scroller.scrollTop, t < i ? ee(t) : i + r < n && ee(n - r)))
27771 T === ce ? b.scrollContainer.scrollTop = e : b.$.scrollContainer.controller("mdVirtualRepeatContainer").scrollTo(e)
27775 var e = (d.scope.searchText || "").length;
27776 return d.hasNotFound && !z() && (!d.loading || 0 !== E) && e >= j() && (w || _) && !W()
27780 var e = h.searchText || "",
27781 t = e.toLowerCase();
27782 !h.noCache && y[t] ? re(y[t]) : function(t) {
27783 var e = h.$parent.$eval(v),
27784 n = t.toLowerCase(),
27789 y[n] = e, (t || "") === (h.searchText || "") && re(e)
27791 r ? o(e) : i && (a = e, a && (a = s.when(a), E++, q(!0), m.nextTick(function() {
27792 a.then(o).finally(function() {
27797 }(e), d.hidden = U()
27802 d.matches = e, d.hidden = U(), d.loading && q(!1), h.selectOnMatch && (n = h.searchText, t = d.matches, r = t[0], 1 === t.length && L(r).then(function(e) {
27804 h.matchInsensitive && !t && (t = n.toLowerCase() === e.toLowerCase()), t && K(0)
27805 })), D(), Q(!0, A.Count)
27808 function ie(e, t) {
27809 g[e] && h.$parent.$eval(g[e], t || {})
27816 t = ["standard", u];
27819 return e ? (e = e.toLowerCase(), -1 < t.indexOf(e) ? e : u) : u
27822 controller: "MdAutocompleteCtrl",
27823 controllerAs: "$mdAutocompleteCtrl",
27825 inputName: "@mdInputName",
27826 inputMinlength: "@mdInputMinlength",
27827 inputMaxlength: "@mdInputMaxlength",
27828 searchText: "=?mdSearchText",
27829 selectedItem: "=?mdSelectedItem",
27830 itemsExpr: "@mdItems",
27831 itemText: "&mdItemText",
27832 placeholder: "@placeholder",
27833 inputAriaDescribedBy: "@?inputAriaDescribedby",
27834 inputAriaLabelledBy: "@?inputAriaLabelledby",
27835 inputAriaLabel: "@?inputAriaLabel",
27836 noCache: "=?mdNoCache",
27837 requireMatch: "=?mdRequireMatch",
27838 selectOnMatch: "=?mdSelectOnMatch",
27839 matchInsensitive: "=?mdMatchCaseInsensitive",
27840 itemChange: "&?mdSelectedItemChange",
27841 textChange: "&?mdSearchTextChange",
27842 minLength: "=?mdMinLength",
27843 delay: "=?mdDelay",
27844 autofocus: "=?mdAutofocus",
27845 floatingLabel: "@?mdFloatingLabel",
27846 autoselect: "=?mdAutoselect",
27847 menuClass: "@?mdMenuClass",
27848 menuContainerClass: "@?mdMenuContainerClass",
27849 inputClass: "@?mdInputClass",
27850 inputId: "@?mdInputId",
27851 escapeOptions: "@?mdEscapeOptions",
27852 dropdownItems: "=?mdDropdownItems",
27853 dropdownPosition: "@?mdDropdownPosition",
27854 clearButton: "=?mdClearButton",
27855 selectedMessage: "@?mdSelectedMessage",
27858 compile: function(e, n) {
27859 var r = e.find("input");
27860 return ["md-select-on-focus", "md-no-asterisk", "ng-trim", "ng-pattern"].forEach(function(e) {
27861 var t = n[n.$normalize(e)];
27862 null !== t && r.attr(e, t)
27864 function(e, t, n, r) {
27865 r.hasNotFound = !!t.attr("md-has-not-found"), de.isDefined(n.mdClearButton) || e.floatingLabel || (e.clearButton = !0), e.mdMode = d(n.mdMode), t.on("click", function(e) {
27866 e.stopPropagation()
27870 template: function(n, e) {
27871 var t, r, i = (t = n.find("md-not-found").detach(), (r = t.length ? t.html() : "") ? '<li ng-if="$mdAutocompleteCtrl.notFoundVisible()" md-autocomplete-parent-scope>' + r + "</li>" : ""),
27873 var e = n.find("md-item-template").detach(),
27874 t = e.length ? e.html() : n.html();
27875 e.length || n.empty();
27876 return "<md-autocomplete-parent-scope md-autocomplete-replace>" + t + "</md-autocomplete-parent-scope>"
27880 return i && n.attr("md-has-not-found", !0), n.attr("tabindex", "-1"), " <md-autocomplete-wrap ng-class=\"{ 'md-whiteframe-z1': !floatingLabel, 'md-menu-showing': !$mdAutocompleteCtrl.hidden, 'md-show-clear-button': !!clearButton }\"> " + (e.mdFloatingLabel ? ' <md-input-container ng-if="floatingLabel"> <label>{{floatingLabel}}</label> <input type="search" ' + (null != s ? 'tabindex="' + s + '"' : "") + ' id="{{ inputId || \'fl-input-\' + $mdAutocompleteCtrl.id }}" name="{{inputName}}" ng-class="::inputClass" autocomplete="off" ng-required="$mdAutocompleteCtrl.isRequired" ng-readonly="$mdAutocompleteCtrl.isReadonly" ng-minlength="inputMinlength" ng-maxlength="inputMaxlength" ng-disabled="$mdAutocompleteCtrl.isDisabled" ng-model="$mdAutocompleteCtrl.scope.searchText" ng-model-options="{ allowInvalid: true }" ng-keydown="$mdAutocompleteCtrl.keydown($event)" ng-blur="$mdAutocompleteCtrl.blur($event)" ng-focus="$mdAutocompleteCtrl.focus($event)" aria-label="{{floatingLabel}}" aria-autocomplete="list" role="combobox" aria-haspopup="true" aria-expanded="{{!$mdAutocompleteCtrl.hidden}}" aria-owns="ul-{{$mdAutocompleteCtrl.id}}" ng-attr-aria-activedescendant="{{$mdAutocompleteCtrl.index >= 0 ? \'selected_option\' : undefined}}"> <div md-autocomplete-parent-scope md-autocomplete-replace>' + a + "</div> </md-input-container>" : ' <input type="search" ' + (null != s ? 'tabindex="' + s + '"' : "") + ' id="{{ inputId || \'input-\' + $mdAutocompleteCtrl.id }}" name="{{inputName}}" ng-class="::inputClass" ng-if="!floatingLabel" autocomplete="off" ng-required="$mdAutocompleteCtrl.isRequired" ng-disabled="$mdAutocompleteCtrl.isDisabled" ng-readonly="$mdAutocompleteCtrl.isReadonly" ng-minlength="inputMinlength" ng-maxlength="inputMaxlength" ng-model="$mdAutocompleteCtrl.scope.searchText" ng-keydown="$mdAutocompleteCtrl.keydown($event)" ng-blur="$mdAutocompleteCtrl.blur($event)" ng-focus="$mdAutocompleteCtrl.focus($event)" placeholder="{{placeholder}}" aria-label="{{placeholder}}" aria-autocomplete="list" role="combobox" aria-haspopup="true" aria-expanded="{{!$mdAutocompleteCtrl.hidden}}" aria-owns="ul-{{$mdAutocompleteCtrl.id}}" ng-attr-aria-activedescendant="{{$mdAutocompleteCtrl.index >= 0 ? \'selected_option\' : undefined}}">') + ' <button type="button" aria-label="Clear Input" tabindex="-1" ng-if="clearButton && $mdAutocompleteCtrl.scope.searchText" ng-click="$mdAutocompleteCtrl.clear($event)"><md-icon md-svg-src="' + c.mdClose + '"></md-icon></button> <md-progress-linear class="' + (e.mdFloatingLabel ? "md-inline" : "") + '" ng-if="$mdAutocompleteCtrl.loadingIsVisible()" md-mode="indeterminate"></md-progress-linear> ' + function(e, t) {
27881 if (e = e ? " " + e : "", l(t)) return ' <div ng-hide="$mdAutocompleteCtrl.hidden" class="md-standard-list-container md-autocomplete-suggestions-container md-whiteframe-z1' + e + '" ng-class="{ \'md-not-found\': $mdAutocompleteCtrl.notFoundVisible() }" role="presentation"> <div class="md-standard-list-scroller" role="presentation">';
27882 return ' <md-virtual-repeat-container md-auto-shrink md-auto-shrink-min="1" ng-hide="$mdAutocompleteCtrl.hidden" class="md-virtual-repeat-container md-autocomplete-suggestions-container md-whiteframe-z1' + e + '" ng-class="{ \'md-not-found\': $mdAutocompleteCtrl.notFoundVisible() }" role="presentation">'
27883 }(e.mdMenuContainerClass, e.mdMode) + ' <ul class="md-autocomplete-suggestions" ng-class="::menuClass" id="ul-{{$mdAutocompleteCtrl.id}}" ng-mouseenter="$mdAutocompleteCtrl.listEnter()" ng-mouseleave="$mdAutocompleteCtrl.listLeave()" ng-mouseup="$mdAutocompleteCtrl.mouseUp()" role="listbox"> <li ' + (l(e.mdMode) ? "ng-repeat" : "md-virtual-repeat") + ' ="item in $mdAutocompleteCtrl.matches" ng-class="{ selected: $index === $mdAutocompleteCtrl.index }" ng-attr-id="{{$index === $mdAutocompleteCtrl.index ? \'selected_option\' : undefined}}" ng-click="$mdAutocompleteCtrl.select($index)" role="option" aria-setsize="{{$mdAutocompleteCtrl.matches.length}}" aria-posinset="{{$index+1}}" aria-selected="{{$index === $mdAutocompleteCtrl.index ? true : false}}" md-extra-name="$mdAutocompleteCtrl.itemName"> ' + o + " </li>" + i + " </ul> " + (l(e.mdMode) ? " </div> </div> </div>" : "</md-virtual-repeat-container>") + " </md-autocomplete-wrap>";
27891 e.$inject = ["$$mdSvgRegistry"], de.module("material.components.autocomplete").directive("mdAutocomplete", e)
27897 compile: function(e, t, c) {
27898 return function(n, t, e) {
27899 var r, i, o = n.$mdAutocompleteCtrl,
27900 a = o.parent.$new(),
27904 a[t] = n[e], n.$watch(e, function(e) {
27905 u.nextTick(function() {
27910 l("$index", "$index"), l("item", s), i = r = !1, n.$watch(function() {
27911 i || r || (r = !0, n.$$postDigest(function() {
27912 i || a.$digest(), r = i = !1
27914 }), a.$watch(function() {
27916 }), c(a, function(e) {
27922 transclude: "element"
27925 e.$inject = ["$compile", "$mdUtil"], de.module("material.components.autocomplete").directive("mdAutocompleteParentScope", e)
27928 function e(e, t, n) {
27929 this.$scope = e, this.$element = t, this.$attrs = n, this.regex = null
27931 e.$inject = ["$scope", "$element", "$attrs"], de.module("material.components.autocomplete").controller("MdHighlightCtrl", e), e.prototype.init = function(t, n) {
27932 this.flags = this.$attrs.mdHighlightFlags || "", this.unregisterFn = this.$scope.$watch(function(e) {
27937 }.bind(this), this.onRender.bind(this), !0), this.$element.on("$destroy", this.unregisterFn)
27938 }, e.prototype.onRender = function(e, t) {
27939 var n = e.contentText;
27940 null !== this.regex && e.term === t.term || (this.regex = this.createRegex(e.term, this.flags)), e.term ? this.applyRegex(n) : this.$element.text(n)
27941 }, e.prototype.applyRegex = function(e) {
27942 var t = this.resolveTokens(e);
27943 this.$element.empty(), t.forEach(function(e) {
27945 var t = de.element('<span class="highlight">').text(e.text);
27946 this.$element.append(t)
27947 } else this.$element.append(document.createTextNode(e))
27949 }, e.prototype.resolveTokens = function(r) {
27952 return r.replace(this.regex, function(e, t) {
27956 }), n = t + e.length
27960 var n = r.slice(e, t);
27963 }, e.prototype.createRegex = function(e, t) {
27966 i = this.sanitizeRegex(e);
27967 return 0 <= t.indexOf("^") && (n = "^"), 0 <= t.indexOf("$") && (r = "$"), new RegExp(n + i + r, t.replace(/[$^]/g, ""))
27968 }, e.prototype.sanitizeRegex = function(e) {
27969 return e && e.toString().replace(/[\\^$*+?.()|{}[\]]/g, "\\$&")
27976 controller: "MdHighlightCtrl",
27977 compile: function(e, t) {
27978 var i = r(t.mdHighlightText),
27980 return function(e, t, n, r) {
27986 e.$inject = ["$interpolate", "$parse"], de.module("material.components.autocomplete").directive("mdHighlightText", e)
27987 }(), de.module("material.components.backdrop", ["material.core"]).directive("mdBackdrop", ["$mdTheming", "$mdUtil", "$animate", "$rootElement", "$window", "$log", "$$rAF", "$document", function(s, l, t, n, c, u, d, f) {
27990 link: function(r, i, e) {
27994 var e = parseInt(o.height, 10) + Math.abs(parseInt(o.top, 10));
27995 i.css("height", e + "px")
27997 t.pin && t.pin(i, n), d(function() {
27998 if ("fixed" === (o = c.getComputedStyle(f[0].body)).position) {
27999 var e = l.debounce(function() {
28000 o = c.getComputedStyle(f[0].body), a()
28002 a(), de.element(c).on("resize", e), r.$on("$destroy", function() {
28003 de.element(c).off("resize", e)
28006 var t = i.parent();
28008 "BODY" === t[0].nodeName && i.css("position", "fixed");
28009 var n = c.getComputedStyle(t[0]);
28010 "static" === n.position && u.warn("<md-backdrop> may not work properly in a scrolled, static-positioned parent container."), s.inherit(i, t)
28020 link: function(e, t) {
28021 t.addClass("_md"), e.$on("$destroy", function() {
28029 t.$inject = ["$animate", "$mdConstant", "$mdUtil", "$mdTheming", "$mdBottomSheet", "$rootElement", "$mdGesture", "$log"];
28032 return e("$mdBottomSheet").setDefaults({
28033 methods: ["disableParentScroll", "escapeToClose", "clickOutsideToClose"],
28037 function t(i, a, s, o, l, c, u, d) {
28041 onShow: function(e, t, n, r) {
28042 if ((t = s.extractElementByName(t, "md-bottom-sheet")).attr("tabindex", "-1"), t.hasClass("ng-cloak")) {
28043 d.warn("$mdBottomSheet: using `<md-bottom-sheet ng-cloak>` will affect the bottom-sheet opening animations.", t[0])
28045 n.isLockedOpen ? (n.clickOutsideToClose = !1, n.escapeToClose = !1) : n.cleanupGestures = function(r, e) {
28046 var t = u.register(e, "drag", {
28049 return e.on("$md.dragstart", n).on("$md.drag", i).on("$md.dragend", o),
28051 t(), e.off("$md.dragstart", n), e.off("$md.drag", i), e.off("$md.dragend", o)
28055 r.css(a.CSS.TRANSITION_DURATION, "0ms")
28059 var t = e.pointer.distanceY;
28060 t < 5 && (t = Math.max(-p, t / 2)), r.css(a.CSS.TRANSFORM, "translate3d(0," + (p + t) + "px,0)")
28064 if (0 < e.pointer.distanceY && (20 < e.pointer.distanceY || Math.abs(e.pointer.velocityY) > h)) {
28065 var t = r.prop("offsetHeight") - e.pointer.distanceY,
28066 n = Math.min(t / e.pointer.velocityY * .75, 500);
28067 r.css(a.CSS.TRANSITION_DURATION, n + "ms"), s.nextTick(l.cancel, !0)
28068 } else r.css(a.CSS.TRANSITION_DURATION, ""), r.css(a.CSS.TRANSFORM, "")
28071 n.disableBackdrop || ((f = s.createBackdrop(e, "md-bottom-sheet-backdrop md-opaque"))[0].tabIndex = -1, n.clickOutsideToClose && f.on("click", function() {
28072 s.nextTick(l.cancel, !0)
28073 }), o.inherit(f, n.parent), i.enter(f, n.parent, null));
28074 o.inherit(t, n.parent), n.disableParentScroll && (n.restoreScroll = s.disableScrollAround(t, n.parent));
28075 return i.enter(t, n.parent, f).then(function() {
28076 var e = s.findFocusTarget(t) || de.element(t[0].querySelector("button") || t[0].querySelector("a") || t[0].querySelector(s.prefixer("ng-click", !0))) || f;
28077 n.escapeToClose && (n.rootElementKeyupCallback = function(e) {
28078 e.keyCode === a.KEY_CODE.ESCAPE && s.nextTick(l.cancel, !0)
28079 }, c.on("keyup", n.rootElementKeyupCallback), e && e.focus())
28082 onRemove: function(e, t, n) {
28083 n.disableBackdrop || i.leave(f);
28084 return i.leave(t).then(function() {
28085 n.disableParentScroll && (n.restoreScroll(), delete n.restoreScroll), n.cleanupGestures && n.cleanupGestures()
28088 disableBackdrop: !1,
28090 clickOutsideToClose: !0,
28091 disableParentScroll: !0,
28096 e.$inject = ["$mdBottomSheet"], t.$inject = ["$$interimElementProvider"], de.module("material.components.bottomSheet", ["material.core", "material.components.backdrop"]).directive("mdBottomSheet", e).provider("$mdBottomSheet", t)
28102 link: function(e, t) {
28108 function t(r, i, o, a) {
28113 template: function(e, t) {
28115 if (s(t)) return '<a class="md-button" ng-transclude></a>';
28116 var n = void 0 === t.type ? "button" : t.type;
28117 return '<button class="md-button" type="' + n + '" ng-transclude></button>'
28120 link: function(e, t, n) {
28121 i(t), r.attach(e, t), o.expectWithoutText(t, "aria-label"), s(n) && de.isDefined(n.ngDisabled) && !t.hasClass("_md-nav-button") && e.$watch(n.ngDisabled, function(e) {
28122 t.attr("tabindex", e ? -1 : 0)
28124 t.on("click", function(e) {
28125 !0 === n.disabled && (e.preventDefault(), e.stopImmediatePropagation())
28126 }), t.hasClass("md-no-focus") || (t.on("focus", function() {
28127 a.isUserInvoked() && "keyboard" !== a.getLastInteractionType() || t.addClass("md-focused")
28128 }), t.on("blur", function() {
28129 t.removeClass("md-focused")
28135 return de.isDefined(e.href) || de.isDefined(e.ngHref) || de.isDefined(e.ngLink) || de.isDefined(e.uiSref)
28138 t.$inject = ["$mdButtonInkRipple", "$mdTheming", "$mdAria", "$mdInteraction"], e.$inject = ["$mdTheming"], de.module("material.components.button", ["material.core"]).directive("mdButton", t).directive("a", e)
28144 link: function(e, t, n) {
28145 t.addClass("_md"), r(t)
28149 e.$inject = ["$mdTheming"], de.module("material.components.card", ["material.core"]).directive("mdCard", e)
28152 function e(p, m, g, v, b, y) {
28156 require: ["^?mdInputContainer", "?ngModel", "?^form"],
28157 priority: g.BEFORE_NG_ARIA,
28158 template: '<div class="md-container" md-ink-ripple md-ink-ripple-checkbox><div class="md-icon"></div></div><div ng-transclude class="md-label"></div>',
28159 compile: function(e, t) {
28160 return t.$set("tabindex", t.tabindex || "0"), t.$set("type", "checkbox"), t.$set("role", t.type), {
28161 pre: function(e, t) {
28162 t.on("click", function(e) {
28163 this.hasAttribute("disabled") && e.stopImmediatePropagation()
28166 post: function(e, i, n, t) {
28167 var r, o, a, s, l = t[0],
28168 c = t[1] || b.fakeNgModel(),
28171 var d = l.isErrorGetter || function() {
28172 return c.$invalid && (c.$touched || u && u.$submitted)
28174 l.input = i, e.$watch(d, l.setInvalid)
28178 i[0].hasAttribute("disabled") || e.skipToggle || e.$apply(function() {
28179 var e = n.ngChecked && n.ngClick ? n.checked : !c.$viewValue;
28180 c.$setViewValue(e, t && t.type), c.$render()
28185 (r = !1 !== e) && i.attr("aria-checked", "mixed"), i.toggleClass("md-indeterminate", r)
28187 v(i), i.children().on("focus", function() {
28189 }), b.parseAttributeBoolean(n.mdIndeterminate) && (h(), e.$watch(n.mdIndeterminate, h)), n.ngChecked && e.$watch(e.$eval.bind(e, n.ngChecked), function(e) {
28190 c.$setViewValue(e), c.$render()
28191 }), o = "ngDisabled", a = "tabindex", s = {
28194 }, n[o] && e.$watch(n[o], function(e) {
28195 s[e] && i.attr(a, s[e])
28196 }), m.expectWithText(i, "aria-label"), p.link.pre(e, {
28199 }, n, [c]), i.on("click", f).on("keypress", function(e) {
28200 var t, n, r = e.which || e.keyCode;
28201 switch (e.preventDefault(), r) {
28202 case g.KEY_CODE.SPACE:
28203 i.addClass("md-focused"), f(e);
28205 case g.KEY_CODE.ENTER:
28206 (n = b.getClosest(e.target, "form")) && (t = n.querySelector('button[type="submit"]:enabled, input[type="submit"]:enabled')) && t.click()
28208 }).on("focus", function() {
28209 "keyboard" === y.getLastInteractionType() && i.addClass("md-focused")
28210 }).on("blur", function() {
28211 i.removeClass("md-focused")
28212 }), c.$render = function() {
28213 i.toggleClass("md-checked", !!c.$viewValue && !r)
28220 e.$inject = ["inputDirective", "$mdAria", "$mdConstant", "$mdTheming", "$mdUtil", "$mdInteraction"], de.module("material.components.checkbox", ["material.core"]).directive("mdCheckbox", e)
28221 }(), de.module("material.components.chips", ["material.core", "material.components.autocomplete"]),
28223 function e(e, t, n, r, i) {
28224 this.$scope = e, this.$element = t, this.$mdConstant = n, this.$timeout = r, this.$mdUtil = i, this.isEditing = !1, this.parentController = fe, this.enableChipEdit = !1
28226 e.$inject = ["$scope", "$element", "$mdConstant", "$timeout", "$mdUtil"], de.module("material.components.chips").controller("MdChipCtrl", e), e.prototype.init = function(e) {
28227 this.parentController = e, this.enableChipEdit = this.parentController.enableChipEdit, this.enableChipEdit && (this.$element.on("keydown", this.chipKeyDown.bind(this)), this.$element.on("dblclick", this.chipMouseDoubleClick.bind(this)), this.getChipContent().addClass("_md-chip-content-edit-is-enabled"))
28228 }, e.prototype.getChipContent = function() {
28229 var e = this.$element[0].getElementsByClassName("md-chip-content");
28230 return de.element(e[0])
28231 }, e.prototype.getContentElement = function() {
28232 var e = de.element(this.getChipContent().children()[0]);
28233 return e && 0 !== e.length || (e = de.element(this.getChipContent().contents()[0])), e
28234 }, e.prototype.getChipIndex = function() {
28235 return parseInt(this.$element.attr("index"))
28236 }, e.prototype.goOutOfEditMode = function() {
28237 if (this.isEditing) {
28238 this.isEditing = !1, this.$element.removeClass("_md-chip-editing"), this.getChipContent()[0].contentEditable = "false";
28239 var e = this.getChipIndex(),
28240 t = this.getContentElement().text();
28241 t ? (this.parentController.updateChipContents(e, t), this.$mdUtil.nextTick(function() {
28242 this.parentController.selectedChip === e && this.parentController.focusChip(e)
28243 }.bind(this))) : this.parentController.removeChipAndFocusInput(e)
28245 }, e.prototype.selectNodeContents = function(e) {
28247 document.body.createTextRange ? ((t = document.body.createTextRange()).moveToElementText(e), t.select()) : F.getSelection && (n = F.getSelection(), (t = document.createRange()).selectNodeContents(e), n.removeAllRanges(), n.addRange(t))
28248 }, e.prototype.goInEditMode = function() {
28249 this.isEditing = !0, this.$element.addClass("_md-chip-editing"), this.getChipContent()[0].contentEditable = "true", this.getChipContent().on("blur", function() {
28250 this.goOutOfEditMode()
28251 }.bind(this)), this.selectNodeContents(this.getChipContent()[0])
28252 }, e.prototype.chipKeyDown = function(e) {
28253 this.isEditing || e.keyCode !== this.$mdConstant.KEY_CODE.ENTER && e.keyCode !== this.$mdConstant.KEY_CODE.SPACE ? this.isEditing && e.keyCode === this.$mdConstant.KEY_CODE.ENTER && (e.preventDefault(), this.goOutOfEditMode()) : (e.preventDefault(), this.goInEditMode())
28254 }, e.prototype.chipMouseDoubleClick = function() {
28255 this.enableChipEdit && !this.isEditing && this.goInEditMode()
28259 function e(s, e, t, l) {
28262 require: ["^?mdChips", "mdChip"],
28263 link: function(e, t, n, r) {
28266 a = de.element(t[0].querySelector(".md-chip-content"));
28267 s(t), i && (o.init(i), a.on("blur", function() {
28268 i.resetSelectedChip(), i.$scope.$applyAsync()
28271 i && i.shouldFocusLastChip && i.focusLastChipThenInput()
28274 controller: "MdChipCtrl"
28277 e.$inject = ["$mdTheming", "$mdUtil", "$compile", "$timeout"], de.module("material.components.chips").directive("mdChip", e)
28283 require: "^mdChips",
28285 link: function(t, e, n, r) {
28286 e.on("click", function(e) {
28287 t.$apply(function() {
28288 r.removeChip(t.$$replacedScope.$index)
28293 "aria-hidden": "true"
28294 }), e.find("button").attr("tabindex", "-1")
28299 e.$inject = ["$timeout"], de.module("material.components.chips").directive("mdChipRemove", e)
28306 link: function(e, t, n) {
28307 var r = e.$parent.$mdChipsCtrl,
28308 i = r.parent.$new(!1, r.parent);
28309 i.$$replacedScope = e, i.$chip = e.$chip, i.$index = e.$index;
28310 var o = (i.$mdChipsCtrl = r).$scope.$eval(n.mdChipTransclude);
28311 t.html(o), a(t.contents())(i)
28316 e.$inject = ["$compile"], de.module("material.components.chips").directive("mdChipTransclude", e)
28319 e.$inject = ["$scope", "$attrs", "$mdConstant", "$log", "$element", "$timeout", "$mdUtil", "$mdLiveAnnouncer", "$exceptionHandler"];
28322 function e(e, t, n, r, i, o, a, s, l) {
28323 this.$timeout = o, this.$mdConstant = n, this.$scope = e, this.parent = e.$parent, this.$mdUtil = a, this.$log = r, this.$mdLiveAnnouncer = s, this.$exceptionHandler = l, this.$element = i, this.$attrs = t, this.ngModelCtrl = null, this.userInputNgModelCtrl = null, this.autocompleteCtrl = null, this.userInputElement = null, this.items = [], this.selectedChip = -1, this.enableChipEdit = a.parseAttributeBoolean(t.mdEnableChipEdit), this.addOnBlur = a.parseAttributeBoolean(t.mdAddOnBlur), this.inputAriaLabel = "Chips input.", this.containerHint = "Chips container. Use arrow keys to select chips.", this.containerEmptyHint = "Chips container. Enter the text area, then type text, and press enter to add a chip.", this.deleteHint = "Press delete to remove this chip.", this.deleteButtonLabel = "Remove", this.chipBuffer = "", this.useTransformChip = !1, this.useOnAdd = !1, this.useOnRemove = !1, this.wrapperId = "", this.contentIds = [], this.ariaTabIndex = null, this.chipAppendDelay = c, this.deRegister = [], this.addedMessage = "added", this.removedMessage = "removed", this.init()
28325 de.module("material.components.chips").controller("MdChipsCtrl", e), e.prototype.init = function() {
28327 this.wrapperId = "_md-chips-wrapper-" + this.$mdUtil.nextUid(), this.$element.attr("ng-model") || this.setupStaticChips(), this.deRegister.push(this.$scope.$watchCollection("$mdChipsCtrl.items", function() {
28328 t.setupInputAria(), t.setupWrapperAria()
28329 })), this.deRegister.push(this.$attrs.$observe("mdChipAppendDelay", function(e) {
28330 t.chipAppendDelay = parseInt(e) || c
28332 }, e.prototype.$onDestroy = function() {
28333 for (var e; e = this.deRegister.pop();) e.call(this)
28334 }, e.prototype.setupInputAria = function() {
28335 var e = this.$element.find("input");
28336 e && (e.attr("role", "textbox"), e.attr("aria-multiline", !0), this.inputAriaDescribedBy && e.attr("aria-describedby", this.inputAriaDescribedBy), this.inputAriaLabelledBy ? (e.attr("aria-labelledby", this.inputAriaLabelledBy), e.removeAttr("aria-label")) : e.attr("aria-label", this.inputAriaLabel))
28337 }, e.prototype.setupWrapperAria = function() {
28339 t = this.$element.find("md-chips-wrap");
28340 this.items && this.items.length ? (t.attr("role", "listbox"), this.contentIds = this.items.map(function() {
28341 return e.wrapperId + "-chip-" + e.$mdUtil.nextUid()
28342 }), t.attr("aria-owns", this.contentIds.join(" ")), t.attr("aria-label", this.containerHint)) : (t.removeAttr("role"), t.removeAttr("aria-owns"), t.attr("aria-label", this.containerEmptyHint))
28343 }, e.prototype.setupStaticChips = function() {
28344 var e, t, n = this,
28345 r = this.$element.find("md-chips-wrap");
28346 this.$timeout(function() {
28347 for (r.attr("role", "list"), t = r[0].children, e = 0; e < t.length; e++) t[e].setAttribute("role", "listitem"), t[e].setAttribute("aria-setsize", t.length);
28348 n.inputAriaDescribedBy && r.attr("aria-describedby", n.inputAriaDescribedBy), n.inputAriaLabelledBy ? (r.attr("aria-labelledby", n.inputAriaLabelledBy), r.removeAttr("aria-label")) : r.attr("aria-label", n.inputAriaLabel)
28350 }, e.prototype.inputKeydown = function(e) {
28351 var t = this.getChipBuffer();
28352 if (!(this.autocompleteCtrl && e.isDefaultPrevented && e.isDefaultPrevented())) {
28353 if (e.keyCode === this.$mdConstant.KEY_CODE.BACKSPACE) {
28354 if (0 !== this.getCursorPosition(e.target)) return;
28355 return e.preventDefault(), e.stopPropagation(), void(this.items.length && this.selectAndFocusChipSafe(this.items.length - 1))
28357 if ((!this.separatorKeys || this.separatorKeys.length < 1) && (this.separatorKeys = [this.$mdConstant.KEY_CODE.ENTER]), -1 !== this.separatorKeys.indexOf(e.keyCode)) {
28358 if (this.autocompleteCtrl && this.requireMatch || !t) return;
28359 if (e.preventDefault(), this.hasMaxChipsReached()) return;
28360 return this.appendChip(t.trim()), this.resetChipBuffer(), !1
28363 }, e.prototype.getCursorPosition = function(t) {
28365 if (t.selectionStart === t.selectionEnd) return t.selectionStart
28367 if (!t.value) return 0
28369 }, e.prototype.updateChipContents = function(e, t) {
28370 0 <= e && e < this.items.length && (this.items[e] = t, this.updateNgModel(!0))
28371 }, e.prototype.isEditingChip = function() {
28372 return !!this.$element[0].querySelector("._md-chip-editing")
28373 }, e.prototype._isChipObject = function(e) {
28374 return de.isObject(e)
28375 }, e.prototype.isRemovable = function() {
28376 return !!this.ngModelCtrl && (this.readonly ? this.removable : !de.isDefined(this.removable) || this.removable)
28377 }, e.prototype.chipKeydown = function(e) {
28378 if (!this.getChipBuffer() && !this.isEditingChip()) switch (e.keyCode) {
28379 case this.$mdConstant.KEY_CODE.BACKSPACE:
28380 case this.$mdConstant.KEY_CODE.DELETE:
28381 if (this.selectedChip < 0) return;
28382 if (e.preventDefault(), !this.isRemovable()) return;
28383 this.removeAndSelectAdjacentChip(this.selectedChip, e);
28385 case this.$mdConstant.KEY_CODE.LEFT_ARROW:
28386 e.preventDefault(), (this.selectedChip < 0 || this.readonly && 0 === this.selectedChip) && (this.selectedChip = this.items.length), this.items.length && this.selectAndFocusChipSafe(this.selectedChip - 1);
28388 case this.$mdConstant.KEY_CODE.RIGHT_ARROW:
28389 e.preventDefault(), this.selectAndFocusChipSafe(this.selectedChip + 1);
28391 case this.$mdConstant.KEY_CODE.ESCAPE:
28392 case this.$mdConstant.KEY_CODE.TAB:
28393 if (this.selectedChip < 0) return;
28394 e.preventDefault(), this.onFocus()
28396 }, e.prototype.getPlaceholder = function() {
28397 return this.items && this.items.length && ("" === this.secondaryPlaceholder || this.secondaryPlaceholder) ? this.secondaryPlaceholder : this.placeholder
28398 }, e.prototype.removeAndSelectAdjacentChip = function(e, t) {
28400 r = n.getAdjacentChipIndex(e);
28401 this.$element[0].querySelector("md-chips-wrap"), this.$element[0].querySelector('md-chip[index="' + e + '"]');
28402 n.removeChip(e, t), n.$timeout(function() {
28403 n.$timeout(function() {
28404 n.selectAndFocusChipSafe(r)
28407 }, e.prototype.resetSelectedChip = function() {
28408 this.selectedChip = -1, this.ariaTabIndex = null
28409 }, e.prototype.getAdjacentChipIndex = function(e) {
28410 var t = this.items.length - 1;
28411 return 0 === t ? -1 : e === t ? e - 1 : e
28412 }, e.prototype.appendChip = function(t) {
28413 if (this.shouldFocusLastChip = !this.addOnBlur, this.useTransformChip && this.transformChip) {
28414 var e = this.transformChip({
28417 de.isDefined(e) && (t = e)
28419 if (de.isObject(t) && this.items.some(function(e) {
28420 return de.equals(t, e)
28422 if (!(null == t || this.items.indexOf(t) + 1)) {
28423 var n = this.items.push(t) - 1;
28424 this.updateNgModel();
28425 var r = de.isObject(t) ? "" : t;
28426 this.$mdLiveAnnouncer.announce(r + " " + this.addedMessage, "assertive"), this.useOnAdd && this.onAdd && this.onAdd({
28431 }, e.prototype.useTransformChipExpression = function() {
28432 this.useTransformChip = !0
28433 }, e.prototype.useOnAddExpression = function() {
28435 }, e.prototype.useOnRemoveExpression = function() {
28436 this.useOnRemove = !0
28437 }, e.prototype.useOnSelectExpression = function() {
28438 this.useOnSelect = !0
28439 }, e.prototype.getChipBuffer = function() {
28440 var e = this.userInputElement ? this.userInputNgModelCtrl ? this.userInputNgModelCtrl.$viewValue : this.userInputElement[0].value : this.chipBuffer;
28441 return de.isString(e) ? e : ""
28442 }, e.prototype.resetChipBuffer = function() {
28443 this.userInputElement ? this.userInputNgModelCtrl ? (this.userInputNgModelCtrl.$setViewValue(""), this.userInputNgModelCtrl.$render()) : this.userInputElement[0].value = "" : this.chipBuffer = ""
28444 }, e.prototype.hasMaxChipsReached = function() {
28445 return de.isString(this.maxChips) && (this.maxChips = parseInt(this.maxChips, 10) || 0), 0 < this.maxChips && this.items.length >= this.maxChips
28446 }, e.prototype.validateModel = function() {
28447 this.ngModelCtrl.$setValidity("md-max-chips", !this.hasMaxChipsReached()), this.ngModelCtrl.$validate()
28448 }, e.prototype.updateNgModel = function(e) {
28449 e || this.validateModel(), de.forEach(this.ngModelCtrl.$viewChangeListeners, function(e) {
28453 this.$exceptionHandler(e)
28456 }, e.prototype.removeChip = function(e, t) {
28457 var n = this.items.splice(e, 1);
28458 this.updateNgModel(), this.ngModelCtrl.$setDirty();
28459 var r = de.isObject(n[0]) ? "" : n[0];
28460 this.$mdLiveAnnouncer.announce(r + " " + this.removedMessage, "assertive"), n && n.length && this.useOnRemove && this.onRemove && this.onRemove({
28465 }, e.prototype.removeChipAndFocusInput = function(e, t) {
28466 this.removeChip(e, t), this.autocompleteCtrl ? (this.autocompleteCtrl.hidden = !0, this.$mdUtil.nextTick(this.onFocus.bind(this))) : this.onFocus()
28467 }, e.prototype.selectAndFocusChipSafe = function(e) {
28468 if (!this.items.length || -1 === e) return this.focusInput();
28469 if (e >= this.items.length) {
28470 if (!this.readonly) return this.onFocus();
28473 e = Math.max(e, 0), e = Math.min(e, this.items.length - 1), this.selectChip(e), this.focusChip(e)
28474 }, e.prototype.focusLastChipThenInput = function() {
28476 e.shouldFocusLastChip = !1, e.focusChip(this.items.length - 1), e.$timeout(function() {
28478 }, e.chipAppendDelay)
28479 }, e.prototype.focusInput = function() {
28480 this.selectChip(-1), this.onFocus()
28481 }, e.prototype.selectChip = function(e) {
28482 -1 <= e && e <= this.items.length ? (this.selectedChip = e, this.useOnSelect && this.onSelect && this.onSelect({
28483 $chip: this.items[e]
28484 })) : this.$log.warn("Selected Chip index out of bounds; ignoring.")
28485 }, e.prototype.selectAndFocusChip = function(e) {
28486 this.selectChip(e), -1 !== e && this.focusChip(e)
28487 }, e.prototype.focusChip = function(e) {
28488 var t = this.$element[0].querySelector('md-chip[index="' + e + '"] .md-chip-content');
28489 this.ariaTabIndex = e, t.focus()
28490 }, e.prototype.configureNgModel = function(e) {
28491 this.ngModelCtrl = e;
28493 e.$isEmpty = function(e) {
28494 return !e || 0 === e.length
28495 }, e.$render = function() {
28496 t.items = t.ngModelCtrl.$viewValue
28498 }, e.prototype.onFocus = function() {
28499 var e = this.$element[0].querySelector("input");
28500 e && e.focus(), this.resetSelectedChip()
28501 }, e.prototype.onInputFocus = function() {
28502 this.inputHasFocus = !0, this.setupInputAria(), this.resetSelectedChip()
28503 }, e.prototype.onInputBlur = function() {
28504 this.inputHasFocus = !1, this.shouldAddOnBlur() && (this.appendChip(this.getChipBuffer().trim()), this.resetChipBuffer())
28505 }, e.prototype.configureInput = function(e) {
28506 var t = e.controller("ngModel"),
28508 t && (this.deRegister.push(this.$scope.$watch(function() {
28511 e && n.ngModelCtrl.$setTouched()
28512 })), this.deRegister.push(this.$scope.$watch(function() {
28515 e && n.ngModelCtrl.$setDirty()
28517 }, e.prototype.configureUserInput = function(e) {
28518 var t = (this.userInputElement = e).controller("ngModel");
28519 t !== this.ngModelCtrl && (this.userInputNgModelCtrl = t);
28520 var n = this.$scope,
28522 i = function(e, t) {
28523 n.$evalAsync(de.bind(r, t, e))
28527 }).on("keydown", function(e) {
28528 i(e, r.inputKeydown)
28529 }).on("focus", function(e) {
28530 i(e, r.onInputFocus)
28531 }).on("blur", function(e) {
28532 i(e, r.onInputBlur)
28534 }, e.prototype.configureAutocomplete = function(e) {
28535 e && (this.autocompleteCtrl = e, this.$element.attr("container-empty-hint") || (this.containerEmptyHint = "Chips container with autocompletion. Enter the text area, type text to search, and then use the up and down arrow keys to select an option. Press enter to add the selected option as a chip.", this.setupWrapperAria()), e.registerSelectedItemWatcher(de.bind(this, function(e) {
28537 if (this.hasMaxChipsReached()) return;
28538 this.appendChip(e), this.resetChipBuffer()
28540 })), this.$element.find("input").on("focus", de.bind(this, this.onInputFocus)).on("blur", de.bind(this, this.onInputBlur)))
28541 }, e.prototype.shouldAddOnBlur = function() {
28542 this.validateModel();
28543 var e = this.getChipBuffer().trim(),
28544 t = this.ngModelCtrl.$isEmpty(this.ngModelCtrl.$modelValue) || this.ngModelCtrl.$valid,
28545 n = this.autocompleteCtrl && !this.autocompleteCtrl.hidden;
28546 return this.userInputNgModelCtrl && (t = t && this.userInputNgModelCtrl.$valid), this.addOnBlur && !this.requireMatch && e && t && !n
28547 }, e.prototype.hasFocus = function() {
28548 return this.inputHasFocus || 0 <= this.selectedChip
28549 }, e.prototype.contentIdFor = function(e) {
28550 return this.contentIds[e]
28554 r.$inject = ["$mdTheming", "$mdUtil", "$compile", "$log", "$timeout", "$$mdSvgRegistry"], de.module("material.components.chips").directive("mdChips", r);
28555 var e = ' <md-chips-wrap id="{{$mdChipsCtrl.wrapperId}}" tabindex="{{$mdChipsCtrl.readonly ? 0 : -1}}" ng-keydown="$mdChipsCtrl.chipKeydown($event)" ng-class="{ \'md-focused\': $mdChipsCtrl.hasFocus(), \'md-readonly\': !$mdChipsCtrl.ngModelCtrl || $mdChipsCtrl.readonly, \'md-removable\': $mdChipsCtrl.isRemovable() }" class="md-chips"> <md-chip ng-repeat="$chip in $mdChipsCtrl.items" index="{{$index}}" ng-class="{\'md-focused\': $mdChipsCtrl.selectedChip == $index, \'md-readonly\': !$mdChipsCtrl.ngModelCtrl || $mdChipsCtrl.readonly}"> <div class="md-chip-content" tabindex="{{$mdChipsCtrl.ariaTabIndex === $index ? 0 : -1}}" id="{{$mdChipsCtrl.contentIdFor($index)}}" role="option" aria-selected="{{$mdChipsCtrl.selectedChip === $index}}" aria-setsize="{{$mdChipsCtrl.items.length}}" aria-posinset="{{$index+1}}" ng-click="!$mdChipsCtrl.readonly && $mdChipsCtrl.focusChip($index)" aria-label="{{$mdChipsCtrl._isChipObject($chip) ? \'\' : $chip + \'. \'}}{{$mdChipsCtrl.isRemovable() ? \'\' + $mdChipsCtrl.deleteHint : \'\'}}" ng-focus="!$mdChipsCtrl.readonly && $mdChipsCtrl.selectChip($index)" md-chip-transclude="$mdChipsCtrl.chipContentsTemplate"></div> <div ng-if="$mdChipsCtrl.isRemovable()" class="md-chip-remove-container" tabindex="-1" md-chip-transclude="$mdChipsCtrl.chipRemoveTemplate"></div> </md-chip> <div class="md-chip-input-container" ng-if="!$mdChipsCtrl.readonly && $mdChipsCtrl.ngModelCtrl"> <div md-chip-transclude="$mdChipsCtrl.chipInputTemplate"></div> </div> </md-chips-wrap>',
28556 t = ' <input class="md-input" tabindex="0" aria-label="{{$mdChipsCtrl.inputAriaLabel}}" placeholder="{{$mdChipsCtrl.getPlaceholder()}}" ng-model="$mdChipsCtrl.chipBuffer" ng-focus="$mdChipsCtrl.onInputFocus()" ng-blur="$mdChipsCtrl.onInputBlur()" ng-keydown="$mdChipsCtrl.inputKeydown($event)">',
28557 n = " <span>{{$chip}}</span>",
28558 i = ' <button class="md-chip-remove" ng-if="$mdChipsCtrl.isRemovable()" ng-click="$mdChipsCtrl.removeChipAndFocusInput($$replacedScope.$index, $event)" type="button" tabindex="-1" aria-label="{{$mdChipsCtrl.deleteButtonLabel}}{{$mdChipsCtrl._isChipObject($chip) ? \'\' : \' \' + $chip}}"> <md-icon md-svg-src="{{$mdChipsCtrl.mdCloseIcon}}" aria-hidden="true"></md-icon> </button>';
28560 function r(f, h, p, r, m, g) {
28562 chips: h.processTemplate(e),
28563 input: h.processTemplate(t),
28564 default: h.processTemplate(n),
28565 remove: h.processTemplate(i)
28568 template: function(e, t) {
28569 return t.$mdUserTemplate = e.clone(), v.chips
28571 require: ["mdChips"],
28573 controller: "MdChipsCtrl",
28574 controllerAs: "$mdChipsCtrl",
28575 bindToController: !0,
28576 compile: function(e, a) {
28577 var n = a.$mdUserTemplate;
28578 a.$mdUserTemplate = null;
28579 var s = t("md-chips>md-chip-template"),
28580 l = t(h.prefixer().buildList("md-chip-remove").map(function(e) {
28581 return "md-chips>*[" + e + "]"
28582 }).join(",")) || v.remove,
28583 c = s || v.default,
28584 u = t("md-chips>md-autocomplete") || t("md-chips>input") || v.input,
28585 d = n.find("md-chip");
28586 n[0].querySelector("md-chip-template>*[md-chip-remove]") && r.warn("invalid placement of md-chip-remove within md-chip-template.");
28590 var t = n[0].querySelector(e);
28591 return t && t.outerHTML
28594 return function(e, t, n, r) {
28595 h.initOptionalProperties(e, a), f(t);
28597 if (s && (i.enableChipEdit = !1), i.chipContentsTemplate = c, i.chipRemoveTemplate = l, i.chipInputTemplate = u, i.mdCloseIcon = g.mdClose, t.attr({
28599 }).on("focus", function() {
28601 }).on("click", function() {
28602 i.readonly || -1 !== i.selectedChip || i.onFocus()
28603 }), a.ngModel && (i.configureNgModel(t.controller("ngModel")), n.mdTransformChip && i.useTransformChipExpression(), n.mdOnAppend && i.useOnAppendExpression(), n.mdOnAdd && i.useOnAddExpression(), n.mdOnRemove && i.useOnRemoveExpression(), n.mdOnSelect && i.useOnSelectExpression(), u !== v.input && e.$watch("$mdChipsCtrl.readonly", function(e) {
28604 e || h.nextTick(function() {
28605 if (0 === u.indexOf("<md-autocomplete")) {
28606 var e = t.find("md-autocomplete");
28607 i.configureAutocomplete(e.controller("mdAutocomplete"))
28609 i.configureUserInput(t.find("input"))
28611 }), h.nextTick(function() {
28612 var e = t.find("input");
28613 e && (i.configureInput(e), e.toggleClass("md-input", !0))
28614 })), 0 < d.length) {
28615 var o = p(d.clone())(e.$parent);
28617 t.find("md-chips-wrap").prepend(o)
28623 readonly: "=?readonly",
28624 removable: "=?mdRemovable",
28626 secondaryPlaceholder: "@?",
28627 maxChips: "@?mdMaxChips",
28628 transformChip: "&mdTransformChip",
28629 onAppend: "&?mdOnAppend",
28630 onAdd: "&?mdOnAdd",
28631 onRemove: "&?mdOnRemove",
28632 addedMessage: "@?mdAddedMessage",
28633 removedMessage: "@?mdRemovedMessage",
28634 onSelect: "&?mdOnSelect",
28635 inputAriaDescribedBy: "@?inputAriaDescribedby",
28636 inputAriaLabelledBy: "@?inputAriaLabelledby",
28637 inputAriaLabel: "@?",
28638 containerHint: "@?",
28639 containerEmptyHint: "@?",
28641 deleteButtonLabel: "@?",
28642 separatorKeys: "=?mdSeparatorKeys",
28643 requireMatch: "=?mdRequireMatch",
28644 chipAppendDelayString: "@?mdChipAppendDelay",
28651 function e(e, t, n) {
28652 this.$element = t, this.$attrs = e, this.$timeout = n, this.selectedItem = null, this.searchText = "", this.deRegister = [], this.init()
28654 e.$inject = ["$attrs", "$element", "$timeout"], de.module("material.components.chips").controller("MdContactChipsCtrl", e), e.prototype.init = function() {
28656 t = this.deRegister,
28658 this.$timeout(function() {
28659 t.push(n.find("md-chips").scope().$watchCollection("$mdChipsCtrl.items", function() {
28660 e.setupChipsAria(), e.setupAutocompleteAria()
28663 }, e.prototype.setupChipsAria = function() {
28664 var e = this.$element.find("md-chips"),
28665 t = e.controller("mdChips");
28666 this.removedMessage && (t.removedMessage = this.removedMessage), this.containerHint && (t.containerHint = this.containerHint), this.containerEmptyHint && (e.attr("container-empty-hint", this.containerEmptyHint), t.containerEmptyHint = this.containerEmptyHint), this.deleteHint && (t.deleteHint = this.deleteHint), this.inputAriaLabel && (t.inputAriaLabel = this.inputAriaLabel)
28667 }, e.prototype.setupAutocompleteAria = function() {
28668 var e = this.$element.find("md-chips-wrap").find("md-autocomplete").find("input");
28669 this.inputAriaDescribedBy && e.attr("aria-describedby", this.inputAriaDescribedBy), this.inputAriaLabelledBy && (e.removeAttr("aria-label"), e.attr("aria-labelledby", this.inputAriaLabelledBy))
28670 }, e.prototype.queryContact = function(e) {
28671 return this.contactQuery({
28674 }, e.prototype.inputKeydown = function(e) {
28675 if (this.separatorKeys && !(this.separatorKeys.indexOf(e.keyCode) < 0)) {
28676 e.stopPropagation(), e.preventDefault();
28677 var t = de.element(e.target).controller("mdAutocomplete");
28680 }, e.prototype.itemName = function(e) {
28681 return e[this.contactName]
28682 }, e.prototype.$onDestroy = function() {
28683 for (var e; e = this.deRegister.pop();) e.call(this)
28687 e.$inject = ["$mdTheming", "$mdUtil"], de.module("material.components.chips").directive("mdContactChips", e);
28688 var n = ' <md-chips class="md-contact-chips" ng-model="$mdContactChipsCtrl.contacts" ng-change="$mdContactChipsCtrl.ngChange($mdContactChipsCtrl.contacts)" md-require-match="$mdContactChipsCtrl.requireMatch" md-chip-append-delay="{{$mdContactChipsCtrl.chipAppendDelay}}" md-separator-keys="$mdContactChipsCtrl.separatorKeys" md-autocomplete-snap> <md-autocomplete md-menu-class="md-contact-chips-suggestions" md-selected-item="$mdContactChipsCtrl.selectedItem" md-search-text="$mdContactChipsCtrl.searchText" md-items="item in $mdContactChipsCtrl.queryContact($mdContactChipsCtrl.searchText)" md-item-text="$mdContactChipsCtrl.itemName(item)" md-no-cache="true" md-min-length="$mdContactChipsCtrl.minLength" md-autoselect ng-keydown="$mdContactChipsCtrl.inputKeydown($event)" placeholder="{{$mdContactChipsCtrl.contacts.length === 0 ? $mdContactChipsCtrl.placeholder : $mdContactChipsCtrl.secondaryPlaceholder}}"> <div class="md-contact-suggestion"> <img ng-src="{{item[$mdContactChipsCtrl.contactImage]}}" alt="{{item[$mdContactChipsCtrl.contactName]}}" ng-if="item[$mdContactChipsCtrl.contactImage]" /> <span class="md-contact-name" md-highlight-text="$mdContactChipsCtrl.searchText" md-highlight-flags="{{$mdContactChipsCtrl.highlightFlags}}"> {{item[$mdContactChipsCtrl.contactName]}} </span> <span class="md-contact-email" >{{item[$mdContactChipsCtrl.contactEmail]}}</span> </div> </md-autocomplete> <md-chip-template> <div class="md-contact-avatar"> <img ng-src="{{$chip[$mdContactChipsCtrl.contactImage]}}" alt="{{$chip[$mdContactChipsCtrl.contactName]}}" ng-if="$chip[$mdContactChipsCtrl.contactImage]" /> </div> <div class="md-contact-name"> {{$chip[$mdContactChipsCtrl.contactName]}} </div> </md-chip-template> </md-chips>';
28692 template: function(e, t) {
28696 controller: "MdContactChipsCtrl",
28697 controllerAs: "$mdContactChipsCtrl",
28698 bindToController: !0,
28699 compile: function(e, o) {
28700 return function(e, t, n, r) {
28702 s.initOptionalProperties(e, o), a(t), t.attr("tabindex", "-1"), n.$observe("mdChipAppendDelay", function(e) {
28703 i.chipAppendDelay = e
28708 contactQuery: "&mdContacts",
28710 secondaryPlaceholder: "@?",
28711 contactName: "@mdContactName",
28712 contactImage: "@mdContactImage",
28713 contactEmail: "@mdContactEmail",
28714 contacts: "=ngModel",
28716 requireMatch: "=?mdRequireMatch",
28717 minLength: "=?mdMinLength",
28718 highlightFlags: "@?mdHighlightFlags",
28719 chipAppendDelay: "@?mdChipAppendDelay",
28720 separatorKeys: "=?mdSeparatorKeys",
28721 removedMessage: "@?mdRemovedMessage",
28722 inputAriaDescribedBy: "@?inputAriaDescribedby",
28723 inputAriaLabelledBy: "@?inputAriaLabelledby",
28724 inputAriaLabel: "@?",
28725 containerHint: "@?",
28726 containerEmptyHint: "@?",
28733 t.$inject = ["$mdColors", "$mdUtil", "$log", "$parse"], e.$inject = ["$mdTheming", "$mdUtil", "$log"];
28734 var a = /^{((\s|,)*?["'a-zA-Z-]+?\s*?:\s*?('|")[a-zA-Z0-9-.]*('|"))+\s*}$/,
28737 function e(o, a, r) {
28738 return c = c || Object.keys(o.PALETTES), {
28739 applyThemeColors: function(e, t) {
28741 t && e.css((i = {}, o = (n = t).hasOwnProperty("color"), de.forEach(n, function(e, t) {
28743 r = -1 < t.indexOf("background");
28744 i[t] = s(n), r && !o && (i.color = s(n, !0))
28751 getThemeColor: function(e) {
28754 hasTheme: function(e) {
28755 return de.isDefined(o.THEMES[e.split("-")[0]])
28761 var n = o.PALETTES[e.palette][e.hue];
28762 return n = t ? n.contrast : n.value, a.supplant("rgba({0}, {1}, {2}, {3})", [n[0], n[1], n[2], n[3] || e.opacity])
28766 var t = e.split("-"),
28767 n = de.isDefined(o.THEMES[t[0]]) ? t.splice(0, 1)[0] : o.defaultTheme();
28770 palette: function(e, t) {
28771 var n = 1 < e.length && -1 !== c.indexOf(e[1]),
28772 r = e[0].replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
28773 if (n && (r = e[0] + "-" + e.splice(1, 1)), -1 === c.indexOf(r)) {
28774 var i = o.THEMES[t].colors[r];
28775 if (!i) throw new Error(a.supplant("mdColors: couldn't find '{palette}' in the palettes.", {
28782 hue: function(e, t) {
28783 var n = o.THEMES[t].colors;
28784 if ("hue" !== e[1]) return e[1] || n[e[0] in n ? e[0] : "primary"].hues.default;
28785 var r = parseInt(e.splice(2, 1)[0], 10);
28786 if (r < 1 || 3 < r) throw new Error(a.supplant("mdColors: 'hue-{hueNumber}' is not a valid hue, can be only 'hue-1', 'hue-2' and 'hue-3'", {
28789 if (e[1] = "hue-" + r, e[0] in n) return n[e[0]].hues[e[1]];
28790 throw new Error(a.supplant("mdColors: 'hue-x' can only be used with [{availableThemes}], but was used with '{usedTheme}'", {
28791 availableThemes: Object.keys(n).join(", "),
28800 function t(u, o, d, f) {
28803 require: ["^?mdTheme"],
28804 compile: function(e, i) {
28805 var c = function() {
28806 var e = i.mdColors,
28807 t = -1 < e.indexOf("::"),
28808 n = !!t || a.test(i.mdColors);
28809 i.mdColors = e.replace("::", "");
28810 var r = de.isDefined(i.mdColorsWatch);
28811 return !t && !n && (!r || o.parseAttributeBoolean(i.mdColorsWatch))
28813 return function(e, n, t, r) {
28817 "string" != typeof n && (n = ""), t.mdColors || (t.mdColors = "{}");
28818 var r = f(t.mdColors)(e);
28819 return i && Object.keys(r).forEach(function(e) {
28821 u.hasTheme(t) || (r[e] = (n || i.$mdTheme) + "-" + t)
28825 if (!de.equals(e, o)) {
28826 var t = Object.keys(o);
28827 o.background && !t.color && t.push("color"), t.forEach(function(e) {
28834 i && (l = i.registerChanges(function(e) {
28835 u.applyThemeColors(n, a(e))
28836 })), e.$on("$destroy", function() {
28840 c ? e.$watch(a, de.bind(this, u.applyThemeColors, n), !0) : u.applyThemeColors(n, a())
28848 de.module("material.components.colors", ["material.core"]).directive("mdColors", t).service("$mdColors", e)
28854 controller: ["$scope", "$element", function(e, t) {
28855 this.$scope = e, this.$element = t
28857 link: function(e, t) {
28859 t.addClass("_md"), r(t), e.$broadcast("$mdContentLoaded", t), n = t[0], de.element(n).on("$md.pressdown", function(e) {
28860 "t" === e.pointer.type && (e.$materialScrollFixed || (e.$materialScrollFixed = !0, 0 === n.scrollTop ? n.scrollTop = 1 : n.scrollHeight === n.scrollTop + n.offsetHeight && (n.scrollTop -= 1)))
28865 e.$inject = ["$mdTheming"], de.module("material.components.content", ["material.core"]).directive("mdContent", e)
28866 }(), de.module("material.components.datepicker", ["material.core", "material.components.icon", "material.components.virtualRepeat"]),
28868 e.$inject = ["$element", "$scope", "$$mdDateUtil", "$mdUtil", "$mdConstant", "$mdTheming", "$$rAF", "$attrs", "$mdDateLocale"], de.module("material.components.datepicker").directive("mdCalendar", function() {
28870 template: function(e, t) {
28871 var n = t.hasOwnProperty("ngIf") ? "" : 'ng-if="calendarCtrl.isInitialized"',
28872 r = '<div ng-switch="calendarCtrl.currentView" ' + n + '><md-calendar-year ng-switch-when="year"></md-calendar-year><md-calendar-month ng-switch-default></md-calendar-month></div>';
28876 minDate: "=mdMinDate",
28877 maxDate: "=mdMaxDate",
28878 dateFilter: "=mdDateFilter",
28880 _currentView: "@mdCurrentView"
28882 require: ["ngModel", "mdCalendar"],
28884 controllerAs: "calendarCtrl",
28885 bindToController: !0,
28886 link: function(e, t, n, r) {
28889 o.configureNgModel(i)
28899 function e(e, t, n, r, i, o, a, s, l) {
28900 o(e), this.$element = e, this.$scope = t, this.dateUtil = n, this.$mdUtil = r, this.keyCode = i.KEY_CODE, this.$$rAF = a, this.$mdDateLocale = l, this.today = this.dateUtil.createDateAtMidnight(), this.ngModelCtrl = null, this.SELECTED_DATE_CLASS = "md-calendar-selected-date", this.TODAY_CLASS = "md-calendar-date-today", this.FOCUSED_DATE_CLASS = "md-focus", this.id = d++, this.displayDate = null, this.selectedDate = null, this.firstRenderableDate = null, this.lastRenderableDate = null, this.isInitialized = !1, this.width = 0, this.scrollbarWidth = 0, s.tabindex || e.attr("tabindex", "-1");
28901 var c, u = de.bind(this, this.handleKeyEvent);
28902 (c = e.parent().hasClass("md-datepicker-calendar") ? de.element(document.body) : e).on("keydown", u), t.$on("$destroy", function() {
28903 c.off("keydown", u)
28904 }), 1 === de.version.major && de.version.minor <= 4 && this.$onInit()
28906 e.prototype.$onInit = function() {
28907 this._mode && t.hasOwnProperty(this._mode) ? (this.currentView = t[this._mode], this.mode = this._mode) : (this.currentView = this._currentView || "month", this.mode = null);
28908 var e = this.$mdDateLocale;
28909 this.minDate && this.minDate > e.firstRenderableDate ? this.firstRenderableDate = this.minDate : this.firstRenderableDate = e.firstRenderableDate, this.maxDate && this.maxDate < e.lastRenderableDate ? this.lastRenderableDate = this.maxDate : this.lastRenderableDate = e.lastRenderableDate
28910 }, e.prototype.configureNgModel = function(e) {
28912 t.ngModelCtrl = e, t.$mdUtil.nextTick(function() {
28913 t.isInitialized = !0
28914 }), e.$render = function() {
28915 var e = this.$viewValue;
28916 t.$scope.$broadcast("md-calendar-parent-changed", e), t.selectedDate || (t.selectedDate = e), t.displayDate || (t.displayDate = t.selectedDate || t.today)
28918 }, e.prototype.setNgModelValue = function(e) {
28919 var t = this.dateUtil.createDateAtMidnight(e);
28920 return this.focus(t), this.$scope.$emit("md-calendar-change", t), this.ngModelCtrl.$setViewValue(t), this.ngModelCtrl.$render(), t
28921 }, e.prototype.setCurrentView = function(e, t) {
28923 n.$mdUtil.nextTick(function() {
28924 n.currentView = e, t && (n.displayDate = de.isDate(t) ? t : new Date(t))
28926 }, e.prototype.focus = function(e) {
28927 if (this.dateUtil.isValidDate(e)) {
28928 var t = this.$element[0].querySelector("." + this.FOCUSED_DATE_CLASS);
28929 t && t.classList.remove(this.FOCUSED_DATE_CLASS);
28930 var n = this.getDateId(e, this.currentView),
28931 r = document.getElementById(n);
28932 r && (r.classList.add(this.FOCUSED_DATE_CLASS), r.focus(), this.displayDate = e)
28934 var i = this.$element[0].querySelector("[ng-switch]");
28937 }, e.prototype.changeSelectedDate = function(e) {
28938 var t = this.SELECTED_DATE_CLASS,
28939 n = this.$element[0].querySelector("." + t);
28940 if (n && (n.classList.remove(t), n.setAttribute("aria-selected", "false")), e) {
28941 var r = document.getElementById(this.getDateId(e, this.currentView));
28942 r && (r.classList.add(t), r.setAttribute("aria-selected", "true"))
28944 this.selectedDate = e
28945 }, e.prototype.getActionFromKeyEvent = function(e) {
28946 var t = this.keyCode;
28950 case t.RIGHT_ARROW:
28951 return "move-right";
28953 return "move-left";
28955 return e.metaKey ? "move-page-down" : "move-row-down";
28957 return e.metaKey ? "move-page-up" : "move-row-up";
28959 return "move-page-down";
28961 return "move-page-up";
28969 }, e.prototype.handleKeyEvent = function(t) {
28971 this.$scope.$apply(function() {
28972 if (t.which == n.keyCode.ESCAPE || t.which == n.keyCode.TAB) return n.$scope.$emit("md-calendar-close"), void(t.which == n.keyCode.TAB && t.preventDefault());
28973 var e = n.getActionFromKeyEvent(t);
28974 e && (t.preventDefault(), t.stopPropagation(), n.$scope.$broadcast("md-calendar-parent-action", e))
28976 }, e.prototype.hideVerticalScrollbar = function(r) {
28979 o = t.querySelector(".md-calendar-scroll-mask");
28982 var e = i.width || 340,
28983 t = i.scrollbarWidth,
28984 n = r.calendarScroller;
28985 o.style.width = e + "px", n.style.width = e + t + "px", n.style.paddingRight = t + "px"
28987 0 < i.width ? n() : i.$$rAF(function() {
28988 var e = r.calendarScroller;
28989 i.scrollbarWidth = e.offsetWidth - e.clientWidth, i.width = t.querySelector("table").offsetWidth, n()
28991 }, e.prototype.getDateId = function(e, t) {
28992 if (!t) throw new Error("A namespace for the date id has to be specified.");
28993 return ["md", this.id, t, e.getFullYear(), e.getMonth(), e.getDate()].join("-")
28994 }, e.prototype.updateVirtualRepeat = function() {
28995 var e = this.$scope,
28996 t = e.$on("$md-resize-enable", function() {
28997 e.$$phase || e.$apply(), t()
29002 t.$inject = ["$element", "$scope", "$animate", "$q", "$$mdDateUtil", "$mdDateLocale"], de.module("material.components.datepicker").directive("mdCalendarMonth", function() {
29004 template: '<table aria-hidden="true" class="md-calendar-day-header"><thead></thead></table><div class="md-calendar-scroll-mask"><md-virtual-repeat-container class="md-calendar-scroll-container" md-offset-size="' + (e - n) + '"><table role="grid" tabindex="0" class="md-calendar" aria-readonly="true"><tbody md-calendar-month-body role="rowgroup" md-virtual-repeat="i in monthCtrl.items" md-month-offset="$index" class="md-calendar-month" md-start-index="monthCtrl.getSelectedMonthIndex()" md-item-size="' + n + '"><tr aria-hidden="true" md-force-height="\'' + n + "px'\"></tr></tbody></table></md-virtual-repeat-container></div>",
29005 require: ["^^mdCalendar", "mdCalendarMonth"],
29007 controllerAs: "monthCtrl",
29008 bindToController: !0,
29009 link: function(e, t, n, r) {
29019 function t(e, t, n, r, i, o) {
29020 this.$element = e, this.$scope = t, this.$animate = n, this.$q = r, this.dateUtil = i, this.dateLocale = o, this.calendarScroller = e[0].querySelector(".md-virtual-repeat-scroller"), this.isInitialized = !1, this.isMonthTransitionInProgress = !1;
29022 this.cellClickHandler = function() {
29023 var e = i.getTimestampFromNode(this);
29024 a.$scope.$apply(function() {
29025 a.calendarCtrl.setNgModelValue(e)
29027 }, this.headerClickHandler = function() {
29028 a.calendarCtrl.setCurrentView("year", i.getTimestampFromNode(this))
29031 t.prototype.initialize = function(e) {
29033 length: this.dateUtil.getMonthDistance(e.firstRenderableDate, e.lastRenderableDate) + 2
29034 }, this.calendarCtrl = e, this.attachScopeListeners(), e.updateVirtualRepeat(), e.ngModelCtrl && e.ngModelCtrl.$render()
29035 }, t.prototype.getSelectedMonthIndex = function() {
29036 var e = this.calendarCtrl;
29037 return this.dateUtil.getMonthDistance(e.firstRenderableDate, e.displayDate || e.selectedDate || e.today)
29038 }, t.prototype.changeDisplayDate = function(e) {
29039 if (!this.isInitialized) return this.buildWeekHeader(), this.calendarCtrl.hideVerticalScrollbar(this), this.isInitialized = !0, this.$q.when();
29040 if (!this.dateUtil.isValidDate(e) || this.isMonthTransitionInProgress) return this.$q.when();
29041 this.isMonthTransitionInProgress = !0;
29042 var t = this.animateDateChange(e);
29043 this.calendarCtrl.displayDate = e;
29045 return t.then(function() {
29046 n.isMonthTransitionInProgress = !1
29048 }, t.prototype.animateDateChange = function(e) {
29049 if (this.dateUtil.isValidDate(e)) {
29050 var t = this.dateUtil.getMonthDistance(this.calendarCtrl.firstRenderableDate, e);
29051 this.calendarScroller.scrollTop = t * n
29053 return this.$q.when()
29054 }, t.prototype.buildWeekHeader = function() {
29055 for (var e = this.dateLocale.firstDayOfWeek, t = this.dateLocale.shortDays, n = document.createElement("tr"), r = 0; r < 7; r++) {
29056 var i = document.createElement("th");
29057 i.textContent = t[(r + e) % 7], n.appendChild(i)
29059 this.$element.find("thead").append(n)
29060 }, t.prototype.attachScopeListeners = function() {
29062 n.$scope.$on("md-calendar-parent-changed", function(e, t) {
29063 n.calendarCtrl.changeSelectedDate(t), n.changeDisplayDate(t)
29064 }), n.$scope.$on("md-calendar-parent-action", de.bind(this, this.handleKeyEvent))
29065 }, t.prototype.handleKeyEvent = function(e, t) {
29066 var n = this.calendarCtrl,
29068 if ("select" === t) n.setNgModelValue(r);
29074 i = o.incrementDays(r, 1);
29077 i = o.incrementDays(r, -1);
29079 case "move-page-down":
29080 i = o.incrementMonths(r, 1);
29082 case "move-page-up":
29083 i = o.incrementMonths(r, -1);
29085 case "move-row-down":
29086 i = o.incrementDays(r, 7);
29088 case "move-row-up":
29089 i = o.incrementDays(r, -7);
29092 i = o.getFirstDateOfMonth(r);
29095 i = o.getLastDateOfMonth(r)
29097 i && (i = this.dateUtil.clampDate(i, n.minDate, n.maxDate), this.changeDisplayDate(i).then(function() {
29105 var s = e('<md-icon md-svg-src="' + t.mdTabsArrow + '"></md-icon>')({})[0];
29107 require: ["^^mdCalendar", "^^mdCalendarMonth", "mdCalendarMonthBody"],
29109 offset: "=mdMonthOffset"
29112 controllerAs: "mdMonthBodyCtrl",
29113 bindToController: !0,
29114 link: function(e, t, n, r) {
29118 a.calendarCtrl = i, a.monthCtrl = o, a.arrowIcon = s.cloneNode(!0), e.$watch(function() {
29121 de.isNumber(e) && a.generateContent()
29127 function n(e, t, n) {
29128 this.$element = e, this.dateUtil = t, this.dateLocale = n, this.monthCtrl = null, this.calendarCtrl = null, this.offset = null, this.focusAfterAppend = null
29130 e.$inject = ["$compile", "$$mdSvgRegistry"], n.$inject = ["$element", "$$mdDateUtil", "$mdDateLocale"], de.module("material.components.datepicker").directive("mdCalendarMonthBody", e), n.prototype.generateContent = function() {
29131 var e = this.dateUtil.incrementMonths(this.calendarCtrl.firstRenderableDate, this.offset);
29132 this.$element.empty().append(this.buildCalendarForMonth(e)), this.focusAfterAppend && (this.focusAfterAppend.classList.add(this.calendarCtrl.FOCUSED_DATE_CLASS), this.focusAfterAppend.focus(), this.focusAfterAppend = null)
29133 }, n.prototype.buildDateCell = function(e) {
29134 var t = this.monthCtrl,
29135 n = this.calendarCtrl,
29136 r = document.createElement("td");
29137 if (r.tabIndex = -1, r.classList.add("md-calendar-date"), r.setAttribute("role", "gridcell"), e) {
29138 r.setAttribute("tabindex", "-1"), r.setAttribute("aria-label", this.dateLocale.longDateFormatter(e)), r.id = n.getDateId(e, "month"), r.setAttribute("data-timestamp", e.getTime()), this.dateUtil.isSameDay(e, n.today) && r.classList.add(n.TODAY_CLASS), this.dateUtil.isValidDate(n.selectedDate) && this.dateUtil.isSameDay(e, n.selectedDate) && (r.classList.add(n.SELECTED_DATE_CLASS), r.setAttribute("aria-selected", "true"));
29139 var i = this.dateLocale.dates[e.getDate()];
29140 if (this.isDateEnabled(e)) {
29141 var o = document.createElement("span");
29142 o.classList.add("md-calendar-date-selection-indicator"), o.textContent = i, r.appendChild(o), r.addEventListener("click", t.cellClickHandler), n.displayDate && this.dateUtil.isSameDay(e, n.displayDate) && (this.focusAfterAppend = r)
29143 } else r.classList.add("md-calendar-date-disabled"), r.textContent = i
29146 }, n.prototype.isDateEnabled = function(e) {
29147 return this.dateUtil.isDateWithinRange(e, this.calendarCtrl.minDate, this.calendarCtrl.maxDate) && (!de.isFunction(this.calendarCtrl.dateFilter) || this.calendarCtrl.dateFilter(e))
29148 }, n.prototype.buildDateRow = function(e) {
29149 var t = document.createElement("tr");
29150 return t.setAttribute("role", "row"), t.setAttribute("aria-label", this.dateLocale.weekNumberFormatter(e)), t
29151 }, n.prototype.buildCalendarForMonth = function(e) {
29152 var t = this.dateUtil.isValidDate(e) ? e : new Date,
29153 n = this.dateUtil.getFirstDateOfMonth(t),
29154 r = this.getLocaleDay_(n),
29155 i = this.dateUtil.getNumberOfDaysInMonth(t),
29156 o = document.createDocumentFragment(),
29158 s = this.buildDateRow(a);
29160 var l = this.offset === this.monthCtrl.items.length - 1,
29162 u = document.createElement("td"),
29163 d = document.createElement("span"),
29164 f = this.calendarCtrl;
29165 if (d.textContent = this.dateLocale.monthHeaderFormatter(t), u.appendChild(d), u.classList.add("md-calendar-month-label"), f.maxDate && n > f.maxDate ? u.classList.add("md-calendar-month-label-disabled") : f.mode || (u.addEventListener("click", this.monthCtrl.headerClickHandler), u.setAttribute("data-timestamp", n.getTime()), u.setAttribute("aria-label", this.dateLocale.monthFormatter(t)), u.classList.add("md-calendar-label-clickable"), u.appendChild(this.arrowIcon.cloneNode(!0))), r <= 2) {
29166 u.setAttribute("colspan", "7");
29167 var h = this.buildDateRow();
29168 if (h.appendChild(u), o.insertBefore(h, s), l) return o
29169 } else c = 3, u.setAttribute("colspan", "3"), s.appendChild(u);
29170 for (var p = c; p < r; p++) s.appendChild(this.buildDateCell());
29171 for (var m = r, g = n, v = 1; v <= i; v++) {
29174 m = 0, a++, s = this.buildDateRow(a), o.appendChild(s)
29177 var b = this.buildDateCell(g);
29178 s.appendChild(b), m++
29180 for (; s.childNodes.length < 7;) s.appendChild(this.buildDateCell());
29181 for (; o.childNodes.length < 6;) {
29182 for (var y = this.buildDateRow(), _ = 0; _ < 7; _++) y.appendChild(this.buildDateCell());
29186 }, n.prototype.getLocaleDay_ = function(e) {
29187 return (e.getDay() + (7 - this.dateLocale.firstDayOfWeek)) % 7
29191 e.$inject = ["$element", "$scope", "$animate", "$q", "$$mdDateUtil", "$mdUtil"], de.module("material.components.datepicker").directive("mdCalendarYear", function() {
29193 template: '<div class="md-calendar-scroll-mask"><md-virtual-repeat-container class="md-calendar-scroll-container"><table role="grid" tabindex="0" class="md-calendar" aria-readonly="true"><tbody md-calendar-year-body role="rowgroup" md-virtual-repeat="i in yearCtrl.items" md-year-offset="$index" class="md-calendar-year" md-start-index="yearCtrl.getFocusedYearIndex()" md-item-size="' + n + '"><tr aria-hidden="true" md-force-height="\'' + n + "px'\"></tr></tbody></table></md-virtual-repeat-container></div>",
29194 require: ["^^mdCalendar", "mdCalendarYear"],
29196 controllerAs: "yearCtrl",
29197 bindToController: !0,
29198 link: function(e, t, n, r) {
29207 function e(e, t, n, r, i, o) {
29208 this.$element = e, this.$scope = t, this.$animate = n, this.$q = r, this.dateUtil = i, this.calendarScroller = e[0].querySelector(".md-virtual-repeat-scroller"), this.isInitialized = !1, this.isMonthTransitionInProgress = !1, this.$mdUtil = o;
29210 this.cellClickHandler = function() {
29211 a.onTimestampSelected(i.getTimestampFromNode(this))
29214 e.prototype.initialize = function(e) {
29216 length: this.dateUtil.getYearDistance(e.firstRenderableDate, e.lastRenderableDate) + 1
29217 }, this.calendarCtrl = e, this.attachScopeListeners(), e.updateVirtualRepeat(), e.ngModelCtrl && e.ngModelCtrl.$render()
29218 }, e.prototype.getFocusedYearIndex = function() {
29219 var e = this.calendarCtrl;
29220 return this.dateUtil.getYearDistance(e.firstRenderableDate, e.displayDate || e.selectedDate || e.today)
29221 }, e.prototype.changeDate = function(e) {
29222 if (!this.isInitialized) return this.calendarCtrl.hideVerticalScrollbar(this), this.isInitialized = !0, this.$q.when();
29223 if (this.dateUtil.isValidDate(e) && !this.isMonthTransitionInProgress) {
29225 n = this.animateDateChange(e);
29226 return t.isMonthTransitionInProgress = !0, t.calendarCtrl.displayDate = e, n.then(function() {
29227 t.isMonthTransitionInProgress = !1
29230 }, e.prototype.animateDateChange = function(e) {
29231 if (this.dateUtil.isValidDate(e)) {
29232 var t = this.dateUtil.getYearDistance(this.calendarCtrl.firstRenderableDate, e);
29233 this.calendarScroller.scrollTop = t * n
29235 return this.$q.when()
29236 }, e.prototype.handleKeyEvent = function(e, t) {
29238 r = n.calendarCtrl,
29240 if ("select" === t) n.changeDate(i).then(function() {
29241 n.onTimestampSelected(i)
29248 o = a.incrementMonths(i, 1);
29251 o = a.incrementMonths(i, -1);
29253 case "move-row-down":
29254 o = a.incrementMonths(i, 6);
29256 case "move-row-up":
29257 o = a.incrementMonths(i, -6)
29260 var s = r.minDate ? a.getFirstDateOfMonth(r.minDate) : null,
29261 l = r.maxDate ? a.getFirstDateOfMonth(r.maxDate) : null;
29262 o = a.getFirstDateOfMonth(n.dateUtil.clampDate(o, s, l)), n.changeDate(o).then(function() {
29267 }, e.prototype.attachScopeListeners = function() {
29269 n.$scope.$on("md-calendar-parent-changed", function(e, t) {
29270 n.calendarCtrl.changeSelectedDate(t ? n.dateUtil.getFirstDateOfMonth(t) : t), n.changeDate(t)
29271 }), n.$scope.$on("md-calendar-parent-action", de.bind(n, n.handleKeyEvent))
29272 }, e.prototype.onTimestampSelected = function(e) {
29273 var t = this.calendarCtrl;
29274 t.mode ? this.$mdUtil.nextTick(function() {
29275 t.setNgModelValue(e)
29276 }) : t.setCurrentView("month", e)
29280 function e(e, t, n) {
29281 this.$element = e, this.dateUtil = t, this.dateLocale = n, this.calendarCtrl = null, this.yearCtrl = null, this.offset = null, this.focusAfterAppend = null
29283 e.$inject = ["$element", "$$mdDateUtil", "$mdDateLocale"], de.module("material.components.datepicker").directive("mdCalendarYearBody", function() {
29285 require: ["^^mdCalendar", "^^mdCalendarYear", "mdCalendarYearBody"],
29287 offset: "=mdYearOffset"
29290 controllerAs: "mdYearBodyCtrl",
29291 bindToController: !0,
29292 link: function(e, t, n, r) {
29296 a.calendarCtrl = i, a.yearCtrl = o, e.$watch(function() {
29299 de.isNumber(e) && a.generateContent()
29303 }), e.prototype.generateContent = function() {
29304 var e = this.dateUtil.incrementYears(this.calendarCtrl.firstRenderableDate, this.offset);
29305 this.$element.empty().append(this.buildCalendarForYear(e)), this.focusAfterAppend && (this.focusAfterAppend.classList.add(this.calendarCtrl.FOCUSED_DATE_CLASS), this.focusAfterAppend.focus(), this.focusAfterAppend = null)
29306 }, e.prototype.buildMonthCell = function(e, t) {
29307 var n = this.calendarCtrl,
29309 i = this.buildBlankCell(),
29310 o = new Date(e, t, 1);
29311 i.setAttribute("aria-label", this.dateLocale.monthFormatter(o)), i.id = n.getDateId(o, "year"), i.setAttribute("data-timestamp", String(o.getTime())), this.dateUtil.isSameMonthAndYear(o, n.today) && i.classList.add(n.TODAY_CLASS), this.dateUtil.isValidDate(n.selectedDate) && this.dateUtil.isSameMonthAndYear(o, n.selectedDate) && (i.classList.add(n.SELECTED_DATE_CLASS), i.setAttribute("aria-selected", "true"));
29312 var a = this.dateLocale.shortMonths[t];
29313 if (!this.dateUtil.isMonthWithinRange(o, n.minDate, n.maxDate) || de.isFunction(this.calendarCtrl.dateFilter) && !this.calendarCtrl.dateFilter(o)) i.classList.add("md-calendar-date-disabled"), i.textContent = a;
29315 var s = document.createElement("span");
29316 s.classList.add("md-calendar-date-selection-indicator"), s.textContent = a, i.appendChild(s), i.addEventListener("click", r.cellClickHandler), n.displayDate && this.dateUtil.isSameMonthAndYear(o, n.displayDate) && (this.focusAfterAppend = i)
29319 }, e.prototype.buildBlankCell = function() {
29320 var e = document.createElement("td");
29321 return e.tabIndex = -1, e.classList.add("md-calendar-date"), e.setAttribute("role", "gridcell"), e.setAttribute("tabindex", "-1"), e
29322 }, e.prototype.buildCalendarForYear = function(e) {
29323 var t, n = e.getFullYear(),
29324 r = document.createDocumentFragment(),
29325 i = document.createElement("tr"),
29326 o = document.createElement("td");
29327 for (o.className = "md-calendar-month-label", o.textContent = n, i.appendChild(o), t = 0; t < 6; t++) i.appendChild(this.buildMonthCell(n, t));
29329 var a = document.createElement("tr");
29330 for (a.appendChild(this.buildBlankCell()), t = 6; t < 12; t++) a.appendChild(this.buildMonthCell(n, t));
29331 return r.appendChild(a), r
29333 }(), de.module("material.components.datepicker").config(["$provide", function(e) {
29335 this.months = null, this.shortMonths = null, this.days = null, this.shortDays = null, this.dates = null, this.firstDayOfWeek = 0, this.formatDate = null, this.parseDate = null, this.monthHeaderFormatter = null, this.weekNumberFormatter = null, this.longDateFormatter = null, this.isDateComplete = null, this.msgCalendar = "", this.msgOpenCalendar = ""
29336 }(t.prototype.$get = function(e, i) {
29337 for (var t = e.DATETIME_FORMATS.SHORTDAY.map(function(e) {
29338 return e.substring(0, 1)
29339 }), n = Array(32), r = 1; r <= 31; r++) n[r] = r;
29340 var o = new Date(1880, 0, 1),
29341 a = new Date(o.getFullYear() + 250, 0, 1),
29343 months: this.months || e.DATETIME_FORMATS.MONTH,
29344 shortMonths: this.shortMonths || e.DATETIME_FORMATS.SHORTMONTH,
29345 days: this.days || e.DATETIME_FORMATS.DAY,
29346 shortDays: this.shortDays || t,
29347 dates: this.dates || n,
29348 firstDayOfWeek: this.firstDayOfWeek || 0,
29349 formatDate: this.formatDate || function(e, t) {
29351 var n = e.toLocaleTimeString(),
29353 return 0 !== e.getHours() || -1 === n.indexOf("11:") && -1 === n.indexOf("23:") || (r = new Date(e.getFullYear(), e.getMonth(), e.getDate(), 1, 0, 0)), i("date")(r, "M/d/yyyy", t)
29355 parseDate: this.parseDate || function(e) {
29358 isDateComplete: this.isDateComplete || function(e) {
29359 return e = e.trim(), /^(([a-zA-Z]{3,}|[0-9]{1,4})([ .,]+|[/-])){2}([a-zA-Z]{3,}|[0-9]{1,4})$/.test(e)
29361 monthHeaderFormatter: this.monthHeaderFormatter || function(e) {
29362 return s.shortMonths[e.getMonth()] + " " + e.getFullYear()
29364 monthFormatter: this.monthFormatter || function(e) {
29365 return s.months[e.getMonth()] + " " + e.getFullYear()
29367 weekNumberFormatter: this.weekNumberFormatter || function(e) {
29370 longDateFormatter: this.longDateFormatter || function(e) {
29371 return [s.days[e.getDay()], s.months[e.getMonth()], s.dates[e.getDate()], e.getFullYear()].join(" ")
29373 msgCalendar: this.msgCalendar || "Calendar",
29374 msgOpenCalendar: this.msgOpenCalendar || "Open calendar",
29375 firstRenderableDate: this.firstRenderableDate || o,
29376 lastRenderableDate: this.lastRenderableDate || a
29379 }).$inject = ["$locale", "$filter"], e.provider("$mdDateLocale", new t)
29380 }]), de.module("material.components.datepicker").factory("$$mdDateUtil", function() {
29382 getFirstDateOfMonth: n,
29383 getNumberOfDaysInMonth: i,
29384 getDateInNextMonth: r,
29385 getDateInPreviousMonth: o,
29386 isInNextMonth: function(e, t) {
29389 isInPreviousMonth: function(e, t) {
29393 getDateMidpoint: function(e, t) {
29394 return u((e.getTime() + t.getTime()) / 2)
29396 isSameMonthAndYear: a,
29397 getWeekOfMonth: function(e) {
29399 return Math.floor((t.getDay() + e.getDate() - 1) / 7)
29401 incrementDays: function(e, t) {
29402 return new Date(e.getFullYear(), e.getMonth(), e.getDate() + t)
29404 incrementMonths: s,
29405 getLastDateOfMonth: function(e) {
29406 return new Date(e.getFullYear(), e.getMonth(), i(e))
29408 isSameDay: function(e, t) {
29409 return e.getDate() == t.getDate() && a(e, t)
29411 getMonthDistance: function(e, t) {
29412 return 12 * (t.getFullYear() - e.getFullYear()) + (t.getMonth() - e.getMonth())
29415 setDateTimeToMidnight: c,
29416 createDateAtMidnight: u,
29417 isDateWithinRange: function(e, t, n) {
29419 i = l(t) ? u(t) : null,
29420 o = l(n) ? u(n) : null;
29421 return (!i || i <= r) && (!o || r <= o)
29423 incrementYears: function(e, t) {
29424 return s(e, 12 * t)
29426 getYearDistance: function(e, t) {
29427 return t.getFullYear() - e.getFullYear()
29429 clampDate: function(e, t, n) {
29431 return t && e < t && (r = new Date(t.getTime())), n && n < e && (r = new Date(n.getTime())), r
29433 getTimestampFromNode: function(e) {
29434 if (e && e.hasAttribute("data-timestamp")) return Number(e.getAttribute("data-timestamp"))
29436 isMonthWithinRange: function(e, t, n) {
29437 var r = e.getMonth(),
29438 i = e.getFullYear();
29439 return (!t || t.getFullYear() < i || t.getMonth() <= r) && (!n || n.getFullYear() > i || n.getMonth() >= r)
29444 return new Date(e.getFullYear(), e.getMonth(), 1)
29448 return new Date(e.getFullYear(), e.getMonth() + 1, 0).getDate()
29452 return new Date(e.getFullYear(), e.getMonth() + 1, 1)
29456 return new Date(e.getFullYear(), e.getMonth() - 1, 1)
29460 return e.getFullYear() === t.getFullYear() && e.getMonth() === t.getMonth()
29464 var n = new Date(e.getFullYear(), e.getMonth() + t, 1),
29466 return r < e.getDate() ? n.setDate(r) : n.setDate(e.getDate()), n
29470 return e && e.getTime && !isNaN(e.getTime())
29474 l(e) && e.setHours(0, 0, 0, 0)
29479 return c(t = de.isUndefined(e) ? new Date : new Date(e)), t
29483 function e(a, d, f, h) {
29485 template: function(e, t) {
29486 var n = t.mdHideIcons,
29487 r = t.ariaLabel || t.mdPlaceholder,
29488 i = "all" === n || "calendar" === n ? "" : '<md-button class="md-datepicker-button md-icon-button" type="button" tabindex="-1" aria-hidden="true" ng-click="ctrl.openCalendarPane($event)"><md-icon class="md-datepicker-calendar-icon" aria-label="md-calendar" md-svg-src="' + a.mdCalendar + '"></md-icon></md-button>',
29490 return "all" !== n && "triangle" !== n && (o = '<md-button type="button" md-no-ink class="md-datepicker-triangle-button md-icon-button" ng-click="ctrl.openCalendarPane($event)" aria-label="{{::ctrl.locale.msgOpenCalendar}}"><div class="md-datepicker-expand-triangle"></div></md-button>', e.addClass(s)), i + '<div class="md-datepicker-input-container" ng-class="{\'md-datepicker-focused\': ctrl.isFocused}"><input ' + (r ? 'aria-label="' + r + '" ' : "") + 'class="md-datepicker-input" aria-haspopup="dialog" ng-focus="ctrl.setFocused(true)" ng-blur="ctrl.setFocused(false)"> ' + o + '</div><div class="md-datepicker-calendar-pane md-whiteframe-z1" id="{{::ctrl.calendarPaneId}}"><div class="md-datepicker-input-mask"><div class="md-datepicker-input-mask-opaque"></div></div><div class="md-datepicker-calendar"><md-calendar role="dialog" aria-label="{{::ctrl.locale.msgCalendar}}" md-current-view="{{::ctrl.currentView}}" md-mode="{{::ctrl.mode}}" md-min-date="ctrl.minDate" md-max-date="ctrl.maxDate" md-date-filter="ctrl.dateFilter" ng-model="ctrl.date" ng-if="ctrl.isCalendarOpen"></md-calendar></div></div>'
29492 require: ["ngModel", "mdDatepicker", "?^mdInputContainer", "?^form"],
29494 minDate: "=mdMinDate",
29495 maxDate: "=mdMaxDate",
29496 placeholder: "@mdPlaceholder",
29497 currentView: "@mdCurrentView",
29499 dateFilter: "=mdDateFilter",
29500 isOpen: "=?mdIsOpen",
29501 debounceInterval: "=mdDebounceInterval",
29502 dateLocale: "=mdDateLocale"
29505 controllerAs: "ctrl",
29506 bindToController: !0,
29507 link: function(e, t, n, r) {
29512 l = d.parseAttributeBoolean(n.mdNoAsterisk);
29513 if (o.configureNgModel(i, a, h), a) {
29514 var c = t[0].querySelector(".md-errors-spacer");
29515 c && t.after(de.element("<div>").append(c)), a.setHasPlaceholder(n.mdPlaceholder), a.input = t, a.element.addClass(p).toggleClass(m, "calendar" !== n.mdHideIcons && "all" !== n.mdHideIcons), a.label ? l || n.$observe("required", function(e) {
29516 a.label.toggleClass("md-required", !!e)
29517 }) : f.expect(t, "aria-label", n.mdPlaceholder), e.$watch(a.isErrorGetter || function() {
29518 return i.$invalid && (i.$touched || s && s.$submitted)
29520 } else if (s) var u = e.$watch(function() {
29521 return s.$submitted
29523 e && (o.updateErrorState(), u())
29528 t.$inject = ["$scope", "$element", "$attrs", "$window", "$mdConstant", "$mdTheming", "$mdUtil", "$mdDateLocale", "$$mdDateUtil", "$$rAF", "$filter", "$timeout"], e.$inject = ["$$mdSvgRegistry", "$mdUtil", "$mdAria", "inputDirective"], de.module("material.components.datepicker").directive("mdDatepicker", e);
29529 var a = "md-datepicker-invalid",
29530 d = "md-datepicker-open",
29531 p = "_md-datepicker-floating-label",
29532 m = "_md-datepicker-has-calendar-icon",
29533 s = "_md-datepicker-has-triangle-icon",
29534 h = /ipad|iphone|ipod|android/i;
29536 function t(e, t, n, r, i, o, a, s, l, c, u, d) {
29537 this.$window = r, this.dateUtil = l, this.$mdConstant = i, this.$mdUtil = a, this.$$rAF = c, this.$mdDateLocale = s, this.$timeout = d, this.documentElement = de.element(document.documentElement), this.ngModelCtrl = null, this.inputElement = t[0].querySelector("input"), this.ngInputElement = de.element(this.inputElement), this.inputContainer = t[0].querySelector(".md-datepicker-input-container"), this.calendarPane = t[0].querySelector(".md-datepicker-calendar-pane"), this.calendarButton = t[0].querySelector(".md-datepicker-button"), this.inputMask = de.element(t[0].querySelector(".md-datepicker-input-mask-opaque")), this.$element = t, this.$attrs = n, this.$scope = e, this.date = null, this.isFocused = !1, this.isDisabled = fe, this.setDisabled(t[0].disabled || de.isString(n.disabled)), this.isCalendarOpen = !1, this.openOnFocus = n.hasOwnProperty("mdOpenOnFocus"), this.mdInputContainer = null, this.calendarPaneOpenedFrom = null, this.calendarPaneId = "md-date-pane-" + a.nextUid(), this.bodyClickHandler = de.bind(this, this.handleBodyClick), this.windowEventName = h.test(navigator.userAgent || navigator.vendor || F.opera) ? "orientationchange" : "resize", this.windowEventHandler = a.debounce(de.bind(this, this.closeCalendarPane), 100), this.windowBlurHandler = de.bind(this, this.handleWindowBlur), this.ngDateFilter = u("date"), this.leftMargin = 20, this.topMargin = null, n.tabindex ? (this.ngInputElement.attr("tabindex", n.tabindex), n.$set("tabindex", null)) : n.$set("tabindex", "-1"), n.$set("aria-owns", this.calendarPaneId), o(t), o(de.element(this.calendarPane));
29539 e.$on("$destroy", function() {
29540 f.detachCalendarPane()
29541 }), n.mdIsOpen && e.$watch("ctrl.isOpen", function(e) {
29542 e ? f.openCalendarPane({
29543 target: f.inputElement
29544 }) : f.closeCalendarPane()
29545 }), 1 === de.version.major && de.version.minor <= 4 && this.$onInit()
29547 t.prototype.$onInit = function() {
29548 this.locale = this.dateLocale ? de.extend({}, this.$mdDateLocale, this.dateLocale) : this.$mdDateLocale, this.installPropertyInterceptors(), this.attachChangeListeners(), this.attachInteractionListeners()
29549 }, t.prototype.configureNgModel = function(e, t, n) {
29550 this.ngModelCtrl = e, this.mdInputContainer = t, this.$attrs.$set("type", "date"), n[0].link.pre(this.$scope, {
29554 }, this.$attrs, [e]);
29556 r.ngModelCtrl.$formatters.push(function(e) {
29557 var t = de.isDefined(e) ? e : null;
29558 if (!(e instanceof Date) && (t = Date.parse(e), !isNaN(t) && de.isNumber(t) && (e = new Date(t)), e && !(e instanceof Date))) throw Error("The ng-model for md-datepicker must be a Date instance or a value that can be parsed into a date. Currently the model is of type: " + typeof e);
29559 return r.onExternalChange(e), e
29560 }), e.$viewChangeListeners.unshift(de.bind(this, this.updateErrorState));
29561 var i = r.$mdUtil.getModelOption(e, "updateOn");
29562 i && this.ngInputElement.on(i, de.bind(this.$element, this.$element.triggerHandler, i))
29563 }, t.prototype.attachChangeListeners = function() {
29565 n.$scope.$on("md-calendar-change", function(e, t) {
29566 n.setModelValue(t), n.onExternalChange(t), n.closeCalendarPane()
29567 }), n.ngInputElement.on("input", de.bind(n, n.resizeInputElement));
29568 var e = de.isDefined(this.debounceInterval) ? this.debounceInterval : 500;
29569 n.ngInputElement.on("input", n.$mdUtil.debounce(n.handleInputEvent, e, n))
29570 }, t.prototype.attachInteractionListeners = function() {
29573 r = this.$mdConstant.KEY_CODE;
29574 t.ngInputElement.on("keydown", function(e) {
29575 e.altKey && e.keyCode === r.DOWN_ARROW && (t.openCalendarPane(e), n.$digest())
29576 }), t.openOnFocus && (t.ngInputElement.on("focus", de.bind(t, t.openCalendarPane)), t.ngInputElement.on("click", function(e) {
29577 e.stopPropagation()
29578 }), t.ngInputElement.on("pointerdown", function(e) {
29579 e.target && e.target.setPointerCapture && e.target.setPointerCapture(e.pointerId)
29580 }), de.element(t.$window).on("blur", t.windowBlurHandler), n.$on("$destroy", function() {
29581 de.element(t.$window).off("blur", t.windowBlurHandler)
29582 })), n.$on("md-calendar-close", function() {
29583 t.closeCalendarPane()
29585 }, t.prototype.installPropertyInterceptors = function() {
29587 if (this.$attrs.ngDisabled) {
29588 var e = this.$scope.$parent;
29589 e && e.$watch(this.$attrs.ngDisabled, function(e) {
29593 Object.defineProperty(this, "placeholder", {
29595 return t.inputElement.placeholder
29598 t.inputElement.placeholder = e || ""
29601 }, t.prototype.setDisabled = function(e) {
29602 this.isDisabled = e, this.inputElement.disabled = e, this.calendarButton && (this.calendarButton.disabled = e)
29603 }, t.prototype.updateErrorState = function(e) {
29604 var t = e || this.date;
29605 if (this.clearErrorState(), this.dateUtil.isValidDate(t)) {
29606 if (t = this.dateUtil.createDateAtMidnight(t), this.dateUtil.isValidDate(this.minDate)) {
29607 var n = this.dateUtil.createDateAtMidnight(this.minDate);
29608 this.ngModelCtrl.$setValidity("mindate", n <= t)
29610 if (this.dateUtil.isValidDate(this.maxDate)) {
29611 var r = this.dateUtil.createDateAtMidnight(this.maxDate);
29612 this.ngModelCtrl.$setValidity("maxdate", t <= r)
29614 de.isFunction(this.dateFilter) && this.ngModelCtrl.$setValidity("filtered", this.dateFilter(t))
29615 } else this.ngModelCtrl.$setValidity("valid", null == t);
29616 var i = this.inputElement.value,
29617 o = this.locale.parseDate(i);
29618 !this.isInputValid(i, o) && this.ngModelCtrl.$valid && this.ngModelCtrl.$setValidity("valid", null == t), de.element(this.inputContainer).toggleClass(a, !this.ngModelCtrl.$valid)
29619 }, t.prototype.isInputValid = function(e, t) {
29620 return "" === e || this.dateUtil.isValidDate(t) && this.locale.isDateComplete(e) && this.isDateEnabled(t)
29621 }, t.prototype.clearErrorState = function() {
29622 this.inputContainer.classList.remove(a), ["mindate", "maxdate", "filtered", "valid"].forEach(function(e) {
29623 this.ngModelCtrl.$setValidity(e, !0)
29625 }, t.prototype.resizeInputElement = function() {
29626 this.inputElement.size = this.inputElement.value.length + 3
29627 }, t.prototype.handleInputEvent = function() {
29628 var e = this.inputElement.value,
29629 t = e ? this.locale.parseDate(e) : null;
29630 this.dateUtil.setDateTimeToMidnight(t), this.isInputValid(e, t) && (this.setModelValue(t), this.date = t), this.updateErrorState(t)
29631 }, t.prototype.isDateEnabled = function(e) {
29632 return this.dateUtil.isDateWithinRange(e, this.minDate, this.maxDate) && (!de.isFunction(this.dateFilter) || this.dateFilter(e))
29633 }, t.prototype.attachCalendarPane = function() {
29634 var e = this.calendarPane,
29636 e.style.transform = "", this.$element.addClass(d), this.mdInputContainer && this.mdInputContainer.element.addClass(d), de.element(t).addClass("md-datepicker-is-showing");
29637 var n = this.inputContainer.getBoundingClientRect(),
29638 r = t.getBoundingClientRect();
29639 (!this.topMargin || this.topMargin < 0) && (this.topMargin = (this.inputMask.parent().prop("clientHeight") - this.ngInputElement.prop("clientHeight")) / 2);
29640 var i = n.top - r.top - this.topMargin,
29641 o = n.left - r.left - this.leftMargin,
29642 a = r.top < 0 && 0 == document.body.scrollTop ? -r.top : document.body.scrollTop,
29643 s = r.left < 0 && 0 == document.body.scrollLeft ? -r.left : document.body.scrollLeft,
29644 l = a + this.$window.innerHeight,
29645 c = s + this.$window.innerWidth;
29646 if (this.inputMask.css({
29647 position: "absolute",
29648 left: this.leftMargin + "px",
29649 top: this.topMargin + "px",
29650 width: n.width - 1 + "px",
29651 height: n.height - 2 + "px"
29653 if (0 < c - 360) o = c - 360;
29656 var u = this.$window.innerWidth / 360;
29657 e.style.transform = "scale(" + u + ")"
29659 e.classList.add("md-datepicker-pos-adjusted")
29661 l < i + 368 && a < l - 368 && (i = l - 368, e.classList.add("md-datepicker-pos-adjusted")), e.style.left = o + "px", e.style.top = i + "px", document.body.appendChild(e), this.$$rAF(function() {
29662 e.classList.add("md-pane-open")
29664 }, t.prototype.detachCalendarPane = function() {
29665 this.$element.removeClass(d), this.mdInputContainer && this.mdInputContainer.element.removeClass(d), de.element(document.body).removeClass("md-datepicker-is-showing"), this.calendarPane.classList.remove("md-pane-open"), this.calendarPane.classList.remove("md-datepicker-pos-adjusted"), this.isCalendarOpen && this.$mdUtil.enableScrolling(), this.calendarPane.parentNode && this.calendarPane.parentNode.removeChild(this.calendarPane)
29666 }, t.prototype.openCalendarPane = function(e) {
29667 if (!this.isCalendarOpen && !this.isDisabled && !this.inputFocusedOnWindowBlur) {
29668 this.isCalendarOpen = this.isOpen = !0, this.calendarPaneOpenedFrom = e.target, this.$mdUtil.disableScrollAround(this.calendarPane), this.attachCalendarPane(), this.focusCalendar(), this.evalAttr("ngFocus");
29670 this.$mdUtil.nextTick(function() {
29671 t.documentElement.on("click touchstart", t.bodyClickHandler)
29672 }, !1), F.addEventListener(this.windowEventName, this.windowEventHandler)
29674 }, t.prototype.closeCalendarPane = function() {
29675 if (this.isCalendarOpen) {
29677 e.detachCalendarPane(), e.ngModelCtrl.$setTouched(), e.evalAttr("ngBlur"), e.documentElement.off("click touchstart", e.bodyClickHandler), F.removeEventListener(e.windowEventName, e.windowEventHandler), e.calendarPaneOpenedFrom.focus(), e.calendarPaneOpenedFrom = null, e.openOnFocus ? e.$timeout(t) : t()
29681 e.isCalendarOpen = e.isOpen = !1
29683 }, t.prototype.getCalendarCtrl = function() {
29684 return de.element(this.calendarPane.querySelector("md-calendar")).controller("mdCalendar")
29685 }, t.prototype.focusCalendar = function() {
29687 this.$mdUtil.nextTick(function() {
29688 e.getCalendarCtrl().focus()
29690 }, t.prototype.setFocused = function(e) {
29691 e || this.ngModelCtrl.$setTouched(), this.openOnFocus || this.evalAttr(e ? "ngFocus" : "ngBlur"), this.isFocused = e
29692 }, t.prototype.handleBodyClick = function(e) {
29693 this.isCalendarOpen && (this.$mdUtil.getClosest(e.target, "md-calendar") || this.closeCalendarPane(), this.$scope.$digest())
29694 }, t.prototype.handleWindowBlur = function() {
29695 this.inputFocusedOnWindowBlur = document.activeElement === this.inputElement
29696 }, t.prototype.evalAttr = function(e) {
29697 this.$attrs[e] && this.$scope.$parent.$eval(this.$attrs[e])
29698 }, t.prototype.setModelValue = function(e) {
29699 var t = this.$mdUtil.getModelOption(this.ngModelCtrl, "timezone");
29700 this.ngModelCtrl.$setViewValue(this.ngDateFilter(e, "yyyy-MM-dd", t))
29701 }, t.prototype.onExternalChange = function(e) {
29702 var t = this.$mdUtil.getModelOption(this.ngModelCtrl, "timezone");
29703 this.date = e, this.inputElement.value = this.locale.formatDate(e, t), this.mdInputContainer && this.mdInputContainer.setHasValue(!!e), this.resizeInputElement(), this.updateErrorState()
29707 function e(e, t, o) {
29710 link: function(r, i) {
29711 i.addClass("_md"), t(i), e(function() {
29712 var e, t = i[0].querySelector("md-dialog-content");
29715 i.toggleClass("md-content-overflow", t.scrollHeight > t.clientHeight)
29717 t && (e = t.getElementsByTagName("img"), n(), de.element(e).on("load", n)), r.$on("$destroy", function() {
29727 return n.$inject = ["$mdDialog", "$mdConstant"], r.$inject = ["$mdDialog", "$mdAria", "$mdUtil", "$mdConstant", "$animate", "$document", "$window", "$rootElement", "$log", "$injector", "$mdTheming", "$interpolate", "$mdInteraction"], e("$mdDialog").setDefaults({
29728 methods: ["disableParentScroll", "hasBackdrop", "clickOutsideToClose", "escapeToClose", "targetEvent", "closeTo", "openFrom", "parent", "fullscreen", "multiple"],
29730 }).addPreset("alert", {
29731 methods: ["title", "htmlContent", "textContent", "content", "ariaLabel", "ok", "theme", "css"],
29733 }).addPreset("confirm", {
29734 methods: ["title", "htmlContent", "textContent", "content", "ariaLabel", "ok", "cancel", "theme", "css"],
29736 }).addPreset("prompt", {
29737 methods: ["title", "htmlContent", "textContent", "initialValue", "content", "placeholder", "ariaLabel", "ok", "cancel", "theme", "css", "required"],
29743 template: ['<md-dialog md-theme="{{ dialog.theme || dialog.defaultTheme }}" aria-label="{{ dialog.ariaLabel }}" ng-class="dialog.css">', ' <md-dialog-content class="md-dialog-content" role="document" tabIndex="-1">', ' <h2 class="md-title">{{ dialog.title }}</h2>', ' <div ng-if="::dialog.mdHtmlContent" class="md-dialog-content-body" ', ' ng-bind-html="::dialog.mdHtmlContent"></div>', ' <div ng-if="::!dialog.mdHtmlContent" class="md-dialog-content-body">', " <p>{{::dialog.mdTextContent}}</p>", " </div>", ' <md-input-container md-no-float ng-if="::dialog.$type == \'prompt\'" class="md-prompt-input-container">', ' <input ng-keypress="dialog.keypress($event)" md-autofocus ng-model="dialog.result" placeholder="{{::dialog.placeholder}}" ng-required="dialog.required">', " </md-input-container>", " </md-dialog-content>", " <md-dialog-actions>", ' <md-button ng-if="dialog.$type === \'confirm\' || dialog.$type === \'prompt\'" ng-click="dialog.abort()" class="md-primary md-cancel-button">', " {{ dialog.cancel }}", " </md-button>", ' <md-button ng-click="dialog.hide()" class="md-primary md-confirm-button" md-autofocus="dialog.$type===\'alert\'" ng-disabled="dialog.required && !dialog.result">', " {{ dialog.ok }}", " </md-button>", " </md-dialog-actions>", "</md-dialog>"].join("").replace(/\s\s+/g, ""),
29745 controllerAs: "dialog",
29746 bindToController: !0
29751 this.$onInit = function() {
29752 var n = "prompt" == this.$type;
29753 n && this.initialValue && (this.result = this.initialValue), this.hide = function() {
29754 r.hide(!n || this.result)
29755 }, this.abort = function() {
29757 }, this.keypress = function(e) {
29758 var t = n && this.required && !de.isDefined(this.result);
29759 e.keyCode !== i.KEY_CODE.ENTER || t || r.hide(this.result)
29764 function r(f, l, h, p, c, u, m, d, g, a, t, s, v) {
29768 onCompiling: function(e) {
29769 e.defaultTheme = t.defaultTheme(),
29772 t.targetEvent && t.targetEvent.target && (e = de.element(t.targetEvent.target));
29773 var n = e && e.controller("mdTheme");
29774 if (t.hasTheme = !!n, !t.hasTheme) return;
29775 t.themeWatch = n.$shouldWatch;
29776 var r = t.theme || n.$mdTheme;
29777 r && (t.scope.theme = r);
29778 var i = n.registerChanges(function(e) {
29779 t.scope.theme = e, t.themeWatch || i()
29783 onShow: function(e, t, n, r) {
29784 de.element(u[0].body).addClass("md-dialog-is-showing");
29785 var i = t.find("md-dialog");
29786 if (i.hasClass("ng-cloak")) {
29787 g.warn("$mdDialog: using `<md-dialog ng-cloak>` will affect the dialog opening animations.", t[0])
29789 return function(e) {
29791 var n = de.element(e || {});
29792 if (n && n.length) {
29793 var r = de.isFunction(n[0].getBoundingClientRect);
29794 return de.extend(t || {}, {
29795 element: r ? n : fe,
29796 bounds: r ? n[0].getBoundingClientRect() : de.extend({}, {
29802 focus: de.bind(n, n.focus)
29808 return de.isString(e) && (e = u[0].querySelector(e)), de.element(e || t)
29810 e.origin = de.extend({
29814 }, e.origin || {}), e.parent = n(e.parent, d), e.closeTo = t(n(e.closeTo)), e.openFrom = t(n(e.openFrom)), e.targetEvent && (e.origin = t(e.targetEvent.target, e.origin), e.originInteraction = v.getLastInteractionType())
29817 var n = "alert" === t.$type ? "alertdialog" : "dialog",
29818 r = e.find("md-dialog-content"),
29820 o = "dialogContent_" + (i || h.nextUid());
29824 }), 0 === r.length && (r = e, i && (o = i)), r.attr("id", o), e.attr("aria-describedby", o), t.ariaLabel ? l.expect(e, "aria-label", t.ariaLabel) : l.expectAsync(e, "aria-label", function() {
29825 if (t.title) return t.title;
29826 var e = r.text().split(/\s+/);
29827 return 3 < e.length && (e = e.slice(0, 3).concat("...")), e.join(" ")
29828 }), (_ = document.createElement("div")).classList.add("md-dialog-focus-trap"), _.tabIndex = 0, $ = _.cloneNode(!1);
29829 var a = function() {
29832 _.addEventListener("focus", a), $.addEventListener("focus", a), e[0].parentNode.insertBefore(_, e[0]), e.after($)
29833 }(i, n), o = e, a = t, s = n, s.disableParentScroll && (s.restoreScroll = h.disableScrollAround(a, s.parent)), s.hasBackdrop && (s.backdrop = h.createBackdrop(o, "md-dialog-backdrop md-opaque"), c.enter(s.backdrop, s.parent)), s.hideBackdrop = function(e) {
29834 s.backdrop && (e ? s.backdrop.remove() : c.leave(s.backdrop)), s.disableParentScroll && (s.restoreScroll && s.restoreScroll(), delete s.restoreScroll), s.hideBackdrop = null
29837 var n = de.element(m),
29838 r = h.debounce(function() {
29843 var e = "alert" == t.$type ? f.hide : f.cancel;
29846 if (t.escapeToClose) {
29849 e.keyCode === p.KEY_CODE.ESCAPE && (e.stopImmediatePropagation(), e.preventDefault(), o())
29851 e.on("keydown", s), a.on("keydown", s), i.push(function() {
29852 e.off("keydown", s), a.off("keydown", s)
29855 if (n.on("resize", r), i.push(function() {
29857 }), t.clickOutsideToClose) {
29863 l === c[0] && e.target === c[0] && (e.stopPropagation(), e.preventDefault(), o())
29865 c.on("mousedown", u), c.on("mouseup", d), i.push(function() {
29866 c.off("mousedown", u), c.off("mouseup", d)
29869 t.deactivateListeners = function() {
29870 i.forEach(function(e) {
29872 }), t.deactivateListeners = null
29876 t.parent.append(e), t.reverseContainerStretch = b(e, t);
29877 var n = e.find("md-dialog"),
29878 r = h.dom.animator,
29879 i = r.calculateZoomToOrigin,
29881 transitionInClass: "md-transition-in",
29882 transitionOutClass: "md-transition-out"
29884 a = r.toTransformCss(i(n, t.openFrom || t.origin)),
29885 s = r.toTransformCss("");
29886 return n.toggleClass("md-dialog-fullscreen", !!t.fullscreen), r.translate3d(n, a, s, o).then(function(e) {
29887 return t.reverseAnimate = function() {
29888 return delete t.reverseAnimate, t.closeTo ? (o = {
29889 transitionInClass: "md-transition-out",
29890 transitionOutClass: "md-transition-in"
29891 }, a = s, s = r.toTransformCss(i(n, t.closeTo)), r.translate3d(n, a, s, o)) : e(s = r.toTransformCss(i(n, t.origin)))
29892 }, t.clearAnimate = function() {
29893 return delete t.clearAnimate, n.removeClass([o.transitionOutClass, o.transitionInClass].join(" ")), r.translate3d(n, s, r.toTransformCss(""), {})
29896 }(t, n).then(function() {
29901 for (var t = function(e) {
29902 for (var t = []; e.parentNode;) {
29903 if (e === document.body) return t;
29904 for (var n = e.parentNode.children, r = 0; r < n.length; r++) e === n[r] || y(n[r], ["SCRIPT", "STYLE"]) || n[r].hasAttribute("aria-live") || t.push(n[r]);
29908 }(e), n = 0; n < t.length; n++) t[n].setAttribute("aria-hidden", r)
29910 n(e[0]), t.unlockScreenReader = function() {
29911 r = !1, n(e[0]), t.unlockScreenReader = null
29913 }(t, n), t[0].querySelector(".md-actions") && g.warn("Using a class of md-actions is deprecated, please use <md-dialog-actions>."),
29915 if (n.focusOnOpen) {
29916 var e = h.findFocusTarget(t) || t[0].querySelector(".dialog-close, md-dialog-actions button:last-child") || i;
29923 onShowing: function(e, t, n, r) {
29925 var i = r.htmlContent || n.htmlContent || "",
29926 o = r.textContent || n.textContent || r.content || n.content || "";
29927 if (i && !a.has("$sanitize")) throw Error("The ngSanitize module must be loaded in order to use htmlContent.");
29928 if (i && o) throw Error("md-dialog cannot have both `htmlContent` and `textContent`");
29929 r.mdHtmlContent = i, r.mdTextContent = o
29932 onRemove: function(e, t, n) {
29933 n.deactivateListeners(), n.unlockScreenReader(), n.hideBackdrop(n.$destroy), _ && _.parentNode && _.parentNode.removeChild(_);
29934 $ && $.parentNode && $.parentNode.removeChild($);
29935 return n.$destroy ? i() : (r = n, r.reverseAnimate().then(function() {
29936 r.contentElement && r.clearAnimate()
29941 de.element(u[0].body).removeClass("md-dialog-is-showing"), n.contentElement && n.reverseContainerStretch(), n.cleanupElement(), n.$destroy || "keyboard" !== n.originInteraction || n.origin.focus()
29944 clickOutsideToClose: !1,
29950 disableParentScroll: !0,
29953 transformTemplate: function(e, t) {
29954 var n, r = s.startSymbol(),
29956 o = r + (t.themeWatch ? "" : "::") + "theme" + i;
29957 return '<div class="md-dialog-container" tabindex="-1" ' + (t.hasTheme ? 'md-theme="' + o + '"' : "") + ">" + (n = e, t.autoWrap && !/<\/md-dialog>/g.test(n) ? "<md-dialog>" + (n || "") + "</md-dialog>" : n || "") + "</div>"
29962 var n = "fixed" == m.getComputedStyle(u[0].body).position,
29963 r = t.backdrop ? m.getComputedStyle(t.backdrop[0]) : null,
29964 i = r ? Math.min(u[0].body.clientHeight, Math.ceil(Math.abs(parseInt(r.height, 10)))) : 0,
29967 height: e.css("height")
29969 a = Math.abs(t.parent[0].getBoundingClientRect().top);
29971 top: (n ? a : 0) + "px",
29972 height: i ? i + "px" : "100%"
29980 if (-1 !== t.indexOf(e.nodeName)) return !0
29984 e.$inject = ["$$rAF", "$mdTheming", "$mdDialog"], t.$inject = ["$$interimElementProvider"], de.module("material.components.dialog", ["material.core", "material.components.backdrop"]).directive("mdDialog", e).provider("$mdDialog", t)
29993 e.$inject = ["$mdTheming"], de.module("material.components.divider", ["material.core"]).directive("mdDivider", e)
29999 require: ["^?mdFabSpeedDial", "^?mdFabToolbar"],
30000 compile: function(e, t) {
30001 var n = e.children();
30002 r.prefixer().hasAttribute(n, "ng-repeat") ? n.addClass("md-fab-action-item") : n.wrap('<div class="md-fab-action-item">')
30006 e.$inject = ["$mdUtil"], de.module("material.components.fabActions", ["material.core"]).directive("mdFabActions", e)
30009 function e(t, o, a, s, l, i) {
30015 "click" == e.type && (n = (t = e).target, s.getClosest(n, "md-fab-trigger") && u.toggle(), r = t.target, s.getClosest(r, "md-fab-actions") && u.close()), "focusout" != e.type || c || (c = i(function() {
30017 }, 100, !1)), "focusin" == e.type && c && (i.cancel(c), c = null)
30021 u.currentActionIndex = -1
30025 0 < o[0].scrollHeight ? a.addClass(o, "_md-animations-ready").then(function() {
30026 o.removeClass("md-animations-waiting")
30027 }) : e < 10 && (i(f, 100), e += 1)
30031 o.off("keydown", m), de.element(document).off("click touchend", p)
30036 var t = s.getClosest(e.target, "md-fab-trigger"),
30037 n = s.getClosest(e.target, "md-fab-actions");
30038 t || n || u.close()
30044 case l.KEY_CODE.ESCAPE:
30045 return u.close(), e.preventDefault(), !1;
30046 case l.KEY_CODE.LEFT_ARROW:
30047 return i = e, "left" === u.direction ? v(i) : g(i), !1;
30048 case l.KEY_CODE.UP_ARROW:
30049 return r = e, "down" === u.direction ? g(r) : v(r), !1;
30050 case l.KEY_CODE.RIGHT_ARROW:
30051 return n = e, "left" === u.direction ? g(n) : v(n), !1;
30052 case l.KEY_CODE.DOWN_ARROW:
30053 return t = e, "up" === u.direction ? g(t) : v(t), !1
30067 var n, r = (n = b()[0].querySelectorAll(".md-fab-action-item"), de.forEach(n, function(e) {
30068 de.element(de.element(e).children()[0]).attr("tabindex", -1)
30070 u.currentActionIndex = u.currentActionIndex + t, u.currentActionIndex = Math.min(r.length - 1, u.currentActionIndex), u.currentActionIndex = Math.max(0, u.currentActionIndex);
30071 var i = de.element(r[u.currentActionIndex]).children()[0];
30072 de.element(i).attr("tabindex", 0), i.focus(), e.preventDefault(), e.stopImmediatePropagation()
30076 return o.find("md-fab-actions")
30078 u.open = function() {
30079 t.$evalAsync("vm.isOpen = true")
30080 }, u.close = function() {
30081 t.$evalAsync("vm.isOpen = false"), o.find("md-fab-trigger")[0].focus()
30082 }, u.toggle = function() {
30083 t.$evalAsync("vm.isOpen = !vm.isOpen")
30084 }, u.$onInit = function() {
30086 u.direction = u.direction || "down", u.isOpen = u.isOpen || !1, d(), o.addClass("md-animations-waiting"), e = ["click", "focusin", "focusout"], de.forEach(e, function(e) {
30088 }), t.$on("$destroy", function() {
30089 de.forEach(e, function(e) {
30092 }), t.$watch("vm.direction", function(e, t) {
30093 a.removeClass(o, "md-" + t), a.addClass(o, "md-" + e), d()
30094 }), t.$watch("vm.isOpen", function(e) {
30095 d(), r && i || (r = o.find("md-fab-trigger"), i = b()), e ? (o.on("keydown", m), s.nextTick(function() {
30096 de.element(document).on("click touchend", p)
30098 var t = e ? "md-is-open" : "",
30099 n = e ? "" : "md-is-open";
30100 r.attr("aria-haspopup", !0), r.attr("aria-expanded", e), i.attr("aria-hidden", !e), a.setClass(o, t, n)
30102 }, 1 === de.version.major && de.version.minor <= 4 && this.$onInit()
30104 e.$inject = ["$scope", "$element", "$animate", "$mdUtil", "$mdConstant", "$timeout"], de.module("material.components.fabShared", ["material.core"]).controller("MdFabController", e)
30107 e.$inject = ["$timeout"], t.$inject = ["$timeout"];
30116 if (!e.hasClass("md-animations-waiting") || e.hasClass("_md-animations-ready")) {
30118 l = e.controller("mdFabSpeedDial"),
30119 r = t.querySelectorAll(".md-fab-action-item"),
30120 c = t.querySelector("md-fab-trigger"),
30121 n = t.querySelector("._md-css-variables"),
30122 i = parseInt(F.getComputedStyle(n).zIndex);
30123 de.forEach(r, function(e, t) {
30125 n.transform = n.webkitTransform = "", n.transitionDelay = "", n.opacity = 1, n.zIndex = r.length - t + i
30126 }), c.style.zIndex = i + r.length + 1, l.isOpen || de.forEach(r, function(e, t) {
30127 var n, r, i = e.style,
30128 o = (c.clientHeight - e.clientHeight) / 2,
30129 a = (c.clientWidth - e.clientWidth) / 2;
30130 switch (l.direction) {
30132 n = e.scrollHeight * (t + 1) + o, r = "Y";
30135 n = -(e.scrollHeight * (t + 1) + o), r = "Y";
30138 n = e.scrollWidth * (t + 1) + a, r = "X";
30141 n = -(e.scrollWidth * (t + 1) + a), r = "X"
30143 var s = "translate" + r + "(" + n + "px)";
30144 i.transform = i.webkitTransform = s
30149 addClass: function(e, t, n) {
30150 e.hasClass("md-fling") ? (i(e), r(n)) : n()
30152 removeClass: function(e, t, n) {
30165 i = e.controller("mdFabSpeedDial"),
30166 o = t.querySelectorAll(".md-fab-action-item"),
30167 n = t.querySelector("._md-css-variables"),
30168 a = parseInt(F.getComputedStyle(n).zIndex);
30169 de.forEach(o, function(e, t) {
30172 n.opacity = i.isOpen ? 1 : 0, n.transform = n.webkitTransform = i.isOpen ? "scale(1)" : "scale(0)", n.transitionDelay = (i.isOpen ? r : o.length - r) + "ms", n.zIndex = o.length - t + a
30176 addClass: function(e, t, n) {
30179 removeClass: function(e, t, n) {
30184 de.module("material.components.fabSpeedDial", ["material.core", "material.components.fabShared", "material.components.fabActions"]).directive("mdFabSpeedDial", function() {
30188 direction: "@?mdDirection",
30191 bindToController: !0,
30192 controller: "MdFabController",
30193 controllerAs: "vm",
30194 link: function(e, t) {
30195 t.prepend('<div class="_md-css-variables"></div>')
30198 }).animation(".md-fling", e).animation(".md-scale", t).service("mdFabSpeedDialFlingAnimation", e).service("mdFabSpeedDialScaleAnimation", t)
30202 function r(e, t, n) {
30205 i = e.controller("mdFabToolbar"),
30206 o = r.querySelector(".md-fab-toolbar-background"),
30207 a = r.querySelector("md-fab-trigger button"),
30208 s = r.querySelector("md-toolbar"),
30209 l = r.querySelector("md-fab-trigger button md-icon"),
30210 c = e.find("md-fab-actions").children();
30212 var u = F.getComputedStyle(a).getPropertyValue("background-color"),
30214 f = (r.offsetHeight, d / a.offsetWidth * 2);
30215 o.style.backgroundColor = u, o.style.borderRadius = d + "px", i.isOpen ? (s.style.pointerEvents = "inherit", o.style.width = a.offsetWidth + "px", o.style.height = a.offsetHeight + "px", o.style.transform = "scale(" + f + ")", o.style.transitionDelay = "0ms", l && (l.style.transitionDelay = ".3s"), de.forEach(c, function(e, t) {
30216 e.style.transitionDelay = 25 * (c.length - t) + "ms"
30217 })) : (s.style.pointerEvents = "none", o.style.transform = "scale(1)", o.style.top = "0", e.hasClass("md-right") && (o.style.left = "0", o.style.right = null), e.hasClass("md-left") && (o.style.right = "0", o.style.left = null), o.style.transitionDelay = "200ms", l && (l.style.transitionDelay = "0ms"), de.forEach(c, function(e, t) {
30218 e.style.transitionDelay = 200 + 25 * t + "ms"
30224 addClass: function(e, t, n) {
30227 removeClass: function(e, t, n) {
30232 de.module("material.components.fabToolbar", ["material.core", "material.components.fabShared", "material.components.fabActions"]).directive("mdFabToolbar", function() {
30236 template: '<div class="md-fab-toolbar-wrapper"> <div class="md-fab-toolbar-content" ng-transclude></div></div>',
30238 direction: "@?mdDirection",
30241 bindToController: !0,
30242 controller: "MdFabController",
30243 controllerAs: "vm",
30244 link: function(e, t, n) {
30245 t.addClass("md-fab-toolbar"), t.find("md-fab-trigger").find("button").prepend('<div class="md-fab-toolbar-background"></div>')
30248 }).animation(".md-fab-toolbar", e).service("mdFabToolbarAnimation", e)
30251 function e(f, h, b, y, _) {
30258 link: function(o, a, p, t) {
30259 a.addClass("_md"), a.attr("role", "list"), t.layoutDelegate = function(e) {
30260 var r = [].filter.call(a.children(), function(e) {
30261 return "MD-GRID-TILE" == e.tagName && !e.$$mdDestroyed
30264 tileSpans: (t = r, [].map.call(t, function(e) {
30265 var t = de.element(e).controller("mdGridTile");
30267 row: parseInt(y.getResponsiveAttribute(t.$attrs, "md-rowspan"), 10) || 1,
30268 col: parseInt(y.getResponsiveAttribute(t.$attrs, "md-colspan"), 10) || 1
30271 colCount: function() {
30272 var e = parseInt(y.getResponsiveAttribute(p, "md-cols"), 10);
30273 if (isNaN(e)) throw "md-grid-list: md-cols attribute was not found, or contained a non-numeric value";
30277 rowHeight: function() {
30278 var e = y.getResponsiveAttribute(p, "md-row-height");
30279 if (!e) throw "md-grid-list: md-row-height attribute was not found";
30284 var t = e.split(":");
30285 return parseFloat(t[0]) / parseFloat(t[1]);
30290 gutter: d(y.getResponsiveAttribute(p, "md-gutter") || 1)
30293 if (!e && de.equals(i, s)) return;
30294 var n = b(i.colCount, i.tileSpans, r).map(function(e, n) {
30298 style: function(e, t, n, r, i) {
30306 }), o.paddingBottom = "";
30309 var a = 1 === e ? 0 : (e - 1) / e,
30317 o.height = "", o.paddingBottom = v({
30324 }(i.colCount, n, i.gutter, i.rowMode, i.rowHeight)
30326 tiles: e.map(function(e, t) {
30328 element: de.element(r[t]),
30329 style: function(e, t, n, r, i, o, a) {
30330 var s = 1 / n * 100,
30391 }), u.marginTop = g({
30398 var h = (r - 1) / r;
30400 share: d = 1 / r * 100,
30414 }(e.position, e.spans, i.colCount, n, i.gutter, i.rowMode, i.rowHeight)
30418 }).reflow().performance();
30425 var s, n = de.bind(t, t.invalidateLayout),
30427 for (var e in h.MEDIA) y(e), y.getQuery(h.MEDIA[e]).addListener(n);
30428 return y.watchResponsiveAttributes(["md-cols", "md-row-height", "md-gutter"], p, i)
30432 null == e ? t.invalidateLayout() : y(e) && t.invalidateLayout()
30434 o.$on("$destroy", function() {
30435 for (var e in t.layoutDelegate = de.noop, r(), h.MEDIA) y.getQuery(h.MEDIA[e]).removeListener(n)
30437 var l = f.startSymbol(),
30443 var m = f(e("share") + "% - (" + e("gutter") + " * " + e("gutterShare") + ")"),
30444 g = f("calc((" + e("unit") + " + " + e("gutter") + ") * " + e("offset") + ")"),
30445 v = f("calc((" + e("unit") + ") * " + e("span") + " + (" + e("span") + " - 1) * " + e("gutter") + ")");
30448 var e = y.getResponsiveAttribute(p, "md-row-height");
30449 if (!e) throw "md-grid-list: md-row-height attribute was not found";
30450 return "fit" == e ? "fit" : -1 !== e.indexOf(":") ? "ratio" : "fixed"
30454 return /\D$/.test(e) ? e : e + "px"
30461 this.layoutInvalidated = !1, this.tilesInvalidated = !1, this.$timeout_ = e.nextTick, this.layoutDelegate = de.noop
30466 return e.animateWith = function(e) {
30467 c = de.isFunction(e) ? e : t
30471 var n, r, i, o, a, s;
30472 return o = l.time(function() {
30473 r = function(i, e) {
30477 for (var e = [], t = 0; t < i; t++) e.push(0);
30481 positioning: e.map(function(e, t) {
30484 position: function(e, t) {
30485 if (e.col > i) throw "md-grid-list: Tile at position " + t + " has a colspan (" + e.col + ") that exceeds the column count (" + i + ")";
30488 for (; r - n < e.col;) i <= o ? l() : -1 !== (n = s.indexOf(0, o)) && -1 !== (r = u(n + 1)) ? o = r + 1 : (n = r = 0, l());
30489 return c(n, e.col, e.row), o = n + e.col, {
30496 rowCount: a + Math.max.apply(Math, s)
30500 a++, c(o = 0, i, -1)
30503 function c(e, t, n) {
30504 for (var r = e; r < e + t; r++) s[r] = Math.max(s[r] + n, 0)
30509 for (t = e; t < s.length; t++)
30510 if (0 !== s[t]) return t;
30511 if (t === s.length) return t
30515 layoutInfo: function() {
30519 return a = l.time(function() {
30520 var e = n.layoutInfo();
30521 i = t(e.positioning, e.rowCount)
30524 reflow: function(e) {
30525 return s = l.time(function() {
30526 (e || c)(i.grid, i.tiles)
30529 performance: function() {
30531 tileCount: t.length,
30535 totalTime: o + a + s
30542 e.element.css(e.style), t.forEach(function(e) {
30543 e.element.css(e.style)
30551 require: "^mdGridList",
30552 template: "<figure ng-transclude></figure>",
30555 controller: ["$attrs", function(e) {
30558 link: function(e, t, n, r) {
30559 t.attr("role", "listitem");
30560 var i = o.watchResponsiveAttributes(["md-colspan", "md-rowspan"], n, de.bind(r, r.invalidateLayout));
30561 r.invalidateTiles(), e.$on("$destroy", function() {
30562 t[0].$$mdDestroyed = !0, i(), r.invalidateLayout()
30563 }), de.isDefined(e.$parent.$index) && e.$watch(function() {
30564 return e.$parent.$index
30565 }, function(e, t) {
30566 e !== t && r.invalidateTiles()
30574 template: "<figcaption ng-transclude></figcaption>",
30578 t.$inject = ["$mdUtil"], n.$inject = ["$mdUtil"], e.$inject = ["$interpolate", "$mdConstant", "$mdGridLayout", "$mdMedia", "$mdUtil"], r.$inject = ["$mdMedia"], de.module("material.components.gridList", ["material.core"]).directive("mdGridList", e).directive("mdGridTile", r).directive("mdGridTileFooter", i).directive("mdGridTileHeader", i).factory("$mdGridLayout", n), t.prototype = {
30579 invalidateTiles: function() {
30580 this.tilesInvalidated = !0, this.invalidateLayout()
30582 invalidateLayout: function() {
30583 this.layoutInvalidated || (this.layoutInvalidated = !0, this.$timeout_(de.bind(this, this.layout)))
30585 layout: function() {
30587 this.layoutDelegate(this.tilesInvalidated)
30589 this.layoutInvalidated = !1, this.tilesInvalidated = !1
30593 }(), de.module("material.components.icon", ["material.core"]), de.module("material.components.icon").directive("mdIcon", ["$mdIcon", "$mdTheming", "$mdAria", "$sce", function(l, c, u, e) {
30596 link: function(e, t, n) {
30598 var r = n.mdFontIcon,
30599 i = l.fontSet(n.mdFontSet);
30600 n.mdSvgIcon || n.mdSvgSrc || (n.mdFontIcon && t.addClass("md-font " + n.mdFontIcon), t.addClass(i)), n.$observe("mdFontIcon", s), n.$observe("mdFontSet", s), t[0].getAttribute(n.$attr.mdSvgSrc);
30601 var o, a = n.$normalize(n.$attr.mdSvgIcon || n.$attr.mdSvgSrc || "");
30604 if (!n.mdSvgIcon && !n.mdSvgSrc) {
30605 n.mdFontIcon && (t.removeClass(r), t.addClass(n.mdFontIcon), r = n.mdFontIcon);
30606 var e = l.fontSet(n.mdFontSet);
30607 i !== e && (t.removeClass(i), t.addClass(e), i = e)
30610 n.role || (u.expect(t, "role", "img"), n.role = "img"), "img" !== n.role || n.ariaHidden || u.hasAriaLabel(t) || (n.alt ? u.expect(t, "aria-label", n.alt) : u.parentHasAriaLabel(t, 2) ? u.expect(t, "aria-hidden", "true") : (o = n.mdFontIcon || n.mdSvgIcon || t.text()) ? u.expect(t, "aria-label", o) : u.expect(t, "aria-hidden", "true")), a && n.$observe(a, function(e) {
30611 t.empty(), e && l(e).then(function(e) {
30612 t.empty(), t.append(e)
30619 a.$inject = ["config", "$templateRequest", "$q", "$log", "$mdUtil", "$sce"], de.module("material.components.icon").constant("$$mdSvgRegistry", {
30620 mdTabsArrow: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyICIvPjwvZz48L3N2Zz4=",
30621 mdClose: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwYXRoIGQ9Ik0xOSA2LjQxbC0xLjQxLTEuNDEtNS41OSA1LjU5LTUuNTktNS41OS0xLjQxIDEuNDEgNS41OSA1LjU5LTUuNTkgNS41OSAxLjQxIDEuNDEgNS41OS01LjU5IDUuNTkgNS41OSAxLjQxLTEuNDEtNS41OS01LjU5eiIvPjwvZz48L3N2Zz4=",
30622 mdCancel: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwYXRoIGQ9Ik0xMiAyYy01LjUzIDAtMTAgNC40Ny0xMCAxMHM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTAtNC40Ny0xMC0xMC0xMHptNSAxMy41OWwtMS40MSAxLjQxLTMuNTktMy41OS0zLjU5IDMuNTktMS40MS0xLjQxIDMuNTktMy41OS0zLjU5LTMuNTkgMS40MS0xLjQxIDMuNTkgMy41OSAzLjU5LTMuNTkgMS40MSAxLjQxLTMuNTkgMy41OSAzLjU5IDMuNTl6Ii8+PC9nPjwvc3ZnPg==",
30623 mdMenu: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0zLDZIMjFWOEgzVjZNMywxMUgyMVYxM0gzVjExTTMsMTZIMjFWMThIM1YxNloiIC8+PC9zdmc+",
30624 mdToggleArrow: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNDggNDgiPjxwYXRoIGQ9Ik0yNCAxNmwtMTIgMTIgMi44MyAyLjgzIDkuMTctOS4xNyA5LjE3IDkuMTcgMi44My0yLjgzeiIvPjxwYXRoIGQ9Ik0wIDBoNDh2NDhoLTQ4eiIgZmlsbD0ibm9uZSIvPjwvc3ZnPg==",
30625 mdCalendar: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==",
30626 mdChecked: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwYXRoIGQ9Ik05IDE2LjE3TDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MXoiLz48L2c+PC9zdmc+"
30627 }).provider("$mdIcon", e);
30629 defaultViewBoxSize: 24,
30630 defaultFontSet: "material-icons",
30637 this.url = e, this.viewBoxSize = t || o.defaultViewBoxSize
30640 function a(a, o, s, l, u, t) {
30643 n = /[-\w@:%+.~#?&//=]{2,}\.[a-z]{2,4}\b(\/[-\w@:%+.~#?&//=]*)?/i,
30644 d = /^data:image\/svg\+xml[\s*;\w\-=]*?(base64)?,(.*)$/i;
30645 return v.prototype = {
30646 clone: function() {
30647 return this.element.cloneNode(!0)
30649 prepare: function() {
30650 var e = this.config ? this.config.viewBoxSize : a.defaultViewBoxSize;
30655 preserveAspectRatio: "xMidYMid meet",
30656 viewBox: this.element.getAttribute("viewBox") || "0 0 " + e + " " + e,
30658 }, function(e, t) {
30659 this.element.setAttribute(t, e)
30662 }, e.fontSet = function(t) {
30663 if (de.isUndefined(t) || !t || !t.length) return a.defaultFontSet;
30665 return de.forEach(a.fontSets, function(e) {
30666 e.alias === t && (n = e.fontSet || n)
30671 return e = e || "", de.isString(e) || (e = t.getTrustedUrl(e)), r[e] ? s.when(i(r[e])) : n.test(e) || d.test(e) ? g(e).then(h(e)) : (-1 === e.indexOf(":") && (e = "$default:" + e), (a[e] ? p : m)(e).then(h(e)))
30675 var n, r, i, o, a = e.clone(),
30677 l = ["clip-path", "color-profile", "cursor", "fill", "filter", "href", "marker-start", "marker-mid", "marker-end", "mask", "stroke", "style", "vector-effect"],
30678 c = a.innerHTML === fe;
30679 if (!isFinite(Number(s))) throw new Error("Unsafe and unexpected non-number result from $mdUtil.nextUid().");
30680 return n = "_cache" + s, a.id && (a.id += n), de.forEach(a.querySelectorAll("[id]"), function(t) {
30681 for (r = "", i = 0; i < l.length; i++) r += "[" + l[i] + '="url(#' + t.id + ')"]', i + 1 < l.length && (r += ", ");
30682 de.forEach(a.querySelectorAll(r), function(e) {
30684 }), de.forEach(a.querySelectorAll("style"), function(e) {
30686 }), de.forEach(a.querySelectorAll("[*|href]:not([href])"), function(e) {
30687 (o = e.getAttribute("xlink:href")) && (o = o.replace("#" + t.id, "#" + t.id + n), e.setAttribute("xlink:href", o))
30692 function f(e, t, n, r) {
30694 if (!isFinite(Number(r))) throw new Error("Unsafe and unexpected non-number result for newUid.");
30695 o = "_cache" + r, n ? (i = (i = u.getOuterHTML(t)).replace("url(#" + e.id + ")", "url(#" + e.id + o + ")"), t.textContent = de.element(i)[0].innerHTML) : t.outerHTML = t.outerHTML.replace("url(#" + e.id + ")", "url(#" + e.id + o + ")")
30699 return function(e) {
30701 return r[n] = (t = e, de.isDefined(t.element) && de.isDefined(t.config) ? e : new v(e, a[n])), i(r[n])
30707 return g(t.url).then(function(e) {
30713 var e = r.substring(0, r.lastIndexOf(":")) || "$default",
30715 return i ? g(i.url).then(function(e) {
30716 var t = r.slice(r.lastIndexOf(":") + 1),
30717 n = e.querySelector("#" + t);
30718 return n ? new v(n, i) : o(r)
30722 var t = "icon " + e + " not found";
30723 return l.warn(t), s.reject(t || e)
30728 return d.test(e) ? (t = e, n = d.exec(t), i = /base64/i.test(t) ? F.atob(n[2]) : n[2], s.when(de.element(i)[0])) : (r = e, s(function(t, n) {
30729 o(r, !0).then(function(e) {
30730 c[r] || (c[r] = de.element("<div>").append(e)[0].querySelector("svg")), t(c[r])
30732 var t = de.isString(e) ? e : e.message || e.data || e.statusText;
30740 if (e && "symbol" === e.tagName.toLowerCase()) {
30741 var n = e.getAttribute("viewBox");
30742 e = e.innerHTML ? de.element('<svg xmlns="http://www.w3.org/2000/svg">').html(e.innerHTML)[0] : de.element('<svg xmlns="http://www.w3.org/2000/svg">').append(u.getInnerHTML(e))[0], n && e.setAttribute("viewBox", n)
30744 e && "svg" !== e.tagName.toLowerCase() && (e = de.element('<svg xmlns="http://www.w3.org/2000/svg">').append(e.cloneNode(!0))[0]), e.getAttribute("xmlns") || e.setAttribute("xmlns", "http://www.w3.org/2000/svg"), this.element = e, this.config = t, this.prepare()
30748 icon: function(e, t, n) {
30749 return -1 == e.indexOf(":") && (e = "$default:" + e), o[e] = new r(t, n), this
30751 iconSet: function(e, t, n) {
30752 return o[e] = new r(t, n), this
30754 defaultIconSet: function(e, t) {
30755 var n = "$default";
30756 return o[n] || (o[n] = new r(e, t)), o[n].viewBoxSize = t || o.defaultViewBoxSize, this
30758 defaultViewBoxSize: function(e) {
30759 return o.defaultViewBoxSize = e, this
30761 fontSet: function(e, t) {
30762 return o.fontSets.push({
30767 defaultFontSet: function(e) {
30768 return o.defaultFontSet = e || "", this
30770 defaultIconSize: function(e) {
30771 return o.defaultIconSize = e, this
30773 $get: ["$templateRequest", "$q", "$log", "$mdUtil", "$sce", function(e, t, n, r, i) {
30774 return a(o, e, t, n, r, i)
30779 t.$inject = ["$mdTheming", "$parse", "$$rAF"], n.$inject = ["$mdUtil", "$window", "$mdAria", "$timeout", "$mdGesture"], r.$inject = ["$animate", "$mdUtil"], i.$inject = ["$compile"], u.$inject = ["$mdUtil"], o.$inject = ["$document", "$timeout"], d.$inject = ["$$AnimateRunner", "$animateCss", "$mdUtil"], f.$inject = ["$$AnimateRunner", "$animateCss", "$mdUtil"], h.$inject = ["$$AnimateRunner", "$animateCss", "$mdUtil", "$log"];
30780 var e = de.module("material.components.input", ["material.core"]).directive("mdInputContainer", t).directive("label", function() {
30783 require: "^?mdInputContainer",
30784 link: function(e, t, n, r) {
30785 !r || n.mdNoFloat || t.hasClass("md-container-ignore") || (r.label = t, e.$on("$destroy", function() {
30790 }).directive("input", n).directive("textarea", n).directive("mdMaxlength", r).directive("placeholder", i).directive("ngMessages", function() {
30793 link: function(e, t, n, r) {
30795 t.toggleClass("md-input-messages-animation", !0), t.toggleClass("md-auto-hide", !0), ("false" == n.mdAutoHide || (i = n, c.some(function(e) {
30797 }))) && t.toggleClass("md-auto-hide", !1);
30800 require: "^^?mdInputContainer"
30802 }).directive("ngMessage", u).directive("ngMessageExp", u).directive("mdSelectOnFocus", o).animation(".md-input-invalid", d).animation(".md-input-messages-animation", f).animation(".md-input-message-animation", h);
30804 function t(i, o, a) {
30805 n.$inject = ["$scope", "$element", "$attrs", "$animate"];
30806 var e = ["INPUT", "TEXTAREA", "SELECT", "MD-SELECT"],
30807 t = e.reduce(function(e, t) {
30808 return e.concat(["md-icon ~ " + t, ".md-icon ~ " + t])
30810 s = e.reduce(function(e, t) {
30811 return e.concat([t + " ~ md-icon", t + " ~ .md-icon"])
30815 compile: function(e) {
30816 var n = e[0].querySelector(t),
30817 r = e[0].querySelector(s);
30818 return function(e, t) {
30819 i(t), (n || r) && a(function() {
30820 var e = t[0].querySelector("md-icon") || t[0].querySelector(".md-icon");
30821 n && e && t.addClass("md-icon-left"), r && e && t.addClass("md-icon-right")
30828 function n(e, t, n, r) {
30830 i.isErrorGetter = n.mdIsError && o(n.mdIsError), i.delegateClick = function() {
30832 }, i.element = t, i.setFocused = function(e) {
30833 t.toggleClass("md-input-focused", !!e)
30834 }, i.setHasValue = function(e) {
30835 t.toggleClass("md-input-has-value", !!e)
30836 }, i.setHasPlaceholder = function(e) {
30837 t.toggleClass("md-input-has-placeholder", !!e)
30838 }, i.setInvalid = function(e) {
30839 e ? r.addClass(t, "md-input-invalid") : r.removeClass(t, "md-input-invalid")
30840 }, e.$watch(function() {
30841 return i.label && i.input
30843 e && !i.label.attr("for") && i.label.attr("for", i.input.attr("id"))
30848 function n(v, b, u, y, _) {
30851 require: ["^?mdInputContainer", "?ngModel", "?^form"],
30852 link: function(d, f, h, e) {
30855 g = e[1] || v.fakeNgModel(),
30857 n = de.isDefined(h.readonly),
30858 r = v.parseAttributeBoolean(h.mdNoAsterisk),
30859 i = f[0].tagName.toLowerCase();
30861 if ("hidden" === h.type) return void f.attr("aria-hidden", "true");
30863 if (p.input[0].contains(f[0])) return;
30864 throw new Error("<md-input-container> can only have *one* <input>, <textarea> or <md-select> child element!")
30867 p.input = f, p.label && h.$observe("required", function(e) {
30868 p.label.toggleClass("md-required", e && !r)
30870 var o = de.element('<div class="md-errors-spacer">');
30872 var a = de.isString(h.placeholder) ? h.placeholder.trim() : "";
30873 p.label || a.length || u.expect(f, "aria-label");
30874 f.addClass("md-input"), f.attr("id") || f.attr("id", "input_" + v.nextUid());
30875 "input" === i && "number" === h.type && h.min && h.max && !h.step ? f.attr("step", "any") : "textarea" === i && function() {
30876 var t = !h.hasOwnProperty("mdNoAutogrow");
30878 if (!h.hasOwnProperty("mdNoResize")) {
30879 var e = de.element('<div class="md-resize-handle"></div>'),
30883 i = _.register(e, "drag", {
30886 f.wrap('<div class="md-resize-wrapper">').after(e), e.on("mousedown", o), r.on("$md.dragstart", a).on("$md.drag", s).on("$md.dragend", l), d.$on("$destroy", function() {
30887 e.off("mousedown", o).remove(), r.off("$md.dragstart", a).off("$md.drag", s).off("$md.dragend", l), i(), i = r = e = null
30892 e.preventDefault(), t = !0, e.clientY, n = parseFloat(f.css("height")) || f.prop("offsetHeight")
30896 t && (e.preventDefault(), c(), r.addClass("md-input-resized"))
30900 t && f.css("height", n + e.pointer.distanceY + "px")
30904 t && (t = !1, r.removeClass("md-input-resized"))
30907 var o = h.hasOwnProperty("rows") ? parseInt(h.rows) : NaN,
30908 a = h.hasOwnProperty("maxRows") ? parseInt(h.maxRows) : NaN,
30909 n = d.$on("md-resize-textarea", r),
30914 }, 10, !1), f.on("input", r), m && g.$formatters.push(i);
30915 o || f.attr("rows", 1);
30918 f.attr("rows", 1).css("height", "auto").addClass("md-no-flex");
30919 var e, t, n = (e = l.offsetHeight, t = l.scrollHeight - e, e + Math.max(t, 0));
30921 var r = f[0].style.padding || "";
30922 s = f.css("padding", 0).prop("offsetHeight"), f[0].style.padding = r
30924 if (o && s && (n = Math.max(n, s * o)), a && s) {
30926 i < n ? (f.attr("md-no-autogrow", ""), n = i) : f.removeAttr("md-no-autogrow")
30928 s && f.attr("rows", Math.round(n / s)), f.css("height", n + "px").removeClass("md-no-flex")
30932 return v.nextTick(r), e
30936 if (t && (t = !1, de.element(b).off("resize", r), n && n(), f.attr("md-no-autogrow", "").off("input", r), m)) {
30937 var e = g.$formatters.indexOf(i); - 1 < e && g.$formatters.splice(e, 1)
30940 if (de.element(b).on("resize", r), d.$on("$destroy", c), h.hasOwnProperty("mdDetectHidden")) {
30941 var e = (u = !1, function() {
30942 var e = 0 === l.offsetHeight;
30943 !1 === e && !0 === u && r(), u = e
30945 d.$watch(function() {
30946 return v.nextTick(e, !1), !0
30952 var s = p.isErrorGetter || function() {
30953 return g.$invalid && (g.$touched || t && t.$submitted)
30955 d.$watch(s, p.setInvalid), h.ngValue && h.$observe("value", c);
30956 g.$parsers.push(l), g.$formatters.push(l), f.on("input", c), n || f.on("focus", function(e) {
30957 v.nextTick(function() {
30960 }).on("blur", function(e) {
30961 v.nextTick(function() {
30962 p.setFocused(!1), c()
30967 return p.setHasValue(!g.$isEmpty(e)), e
30971 p.setHasValue(0 < f.val().length || (f[0].validity || {}).badInput)
30973 d.$on("$destroy", function() {
30974 p.setFocused(!1), p.setHasValue(!1), p.input = null
30983 require: ["ngModel", "^mdInputContainer"],
30984 link: function(e, r, t, n) {
30985 var i = parseInt(t.mdMaxlength);
30986 isNaN(i) && (i = -1);
30987 var o, a, s = n[0],
30989 c = !de.isDefined(t.ngTrim) || p.parseAttributeBoolean(t.ngTrim),
30990 u = "password" === t.type;
30993 return (e = c && !u && de.isString(e) ? e.trim() : e) !== fe && null !== e || (e = ""), String(e).length
30997 o && o.parent() && o.text(d(r.val()) + " / " + i)
30999 e.$watch(t.mdMaxlength, function(e) {
31001 }), s.$validators["md-maxlength"] = function(e, t) {
31002 if (!de.isNumber(i) || i < 0) return !0;
31004 var n = r.val() || t;
31005 return n !== fe && null !== n || (n = ""), n = c && !u && de.isString(n) ? n.trim() : n, String(n).length <= i
31006 }, s.$isEmpty = function(e) {
31008 }, p.nextTick(function() {
31009 a = de.element(l.element[0].querySelector(".md-errors-spacer")), o = de.element('<div class="md-char-counter">'), a.append(o), t.$observe("ngTrim", function(e) {
31010 c = !de.isDefined(e) || p.parseAttributeBoolean(e)
31011 }), e.$watch(t.mdMaxlength, function(e) {
31012 de.isNumber(e) && 0 < e ? (o.parent().length || h.enter(o, a), f()) : h.leave(o)
31022 require: "^^?mdInputContainer",
31025 pre: function(e, t, n, r) {
31027 var i = r.element.find("label"),
31028 o = r.element.attr("md-no-float");
31029 if (i && i.length || "" === o || e.$eval(o)) return void r.setHasPlaceholder(!0);
31030 if ("MD-SELECT" !== t[0].nodeName) {
31031 var a = de.element('<label ng-click="delegateClick()" tabindex="-1" aria-hidden="true">' + n.placeholder + "</label>");
31032 n.$set("placeholder", null), r.element.addClass("md-icon-float").prepend(a), s(a)(e)
31042 link: function(e, t, n) {
31043 if ("INPUT" !== t[0].nodeName && "TEXTAREA" !== t[0].nodeName) return;
31048 a[0].activeElement === t[0] && t[0].select(), r = !1
31053 r && e.preventDefault()
31055 t.on("focus", i).on("mouseup", o), e.$on("$destroy", function() {
31056 t.off("focus", i).off("mouseup", o)
31061 F._mdMocksIncluded && e.service("$$mdInput", function() {
31067 }).service("mdInputInvalidAnimation", d).service("mdInputMessagesAnimation", f).service("mdInputMessageAnimation", h);
31068 var a, s, l, c = ["ngIf", "ngShow", "ngHide", "ngSwitchWhen", "ngSwitchDefault"];
31073 compile: function(n) {
31075 else if (function() {
31077 for (; e = e.parentNode;)
31078 if (e.nodeType === Node.DOCUMENT_FRAGMENT_NODE) return !0;
31080 }()) return function(e, t) {
31085 return !!t.getClosest(e, "md-input-container")
31089 e.toggleClass("md-input-message-animation", !0)
31096 function d(e, t, n) {
31097 return y(e, t, n), {
31098 addClass: function(e, t, n) {
31104 function f(e, t, n) {
31105 return y(e, t, n), {
31106 enter: function(e, t) {
31109 leave: function(e, t) {
31112 addClass: function(e, t, n) {
31113 "ng-hide" == t ? m(e, n) : n()
31115 removeClass: function(e, t, n) {
31116 "ng-hide" == t ? p(e, n) : n()
31121 function h(e, t, n, r) {
31122 return y(e, t, n), {
31123 enter: function(e, t) {
31124 g(e).start().done(t)
31126 leave: function(e, t) {
31127 v(e).start().done(t)
31136 0 != i.length && 0 != o.length ? (de.forEach(o, function(e) {
31137 n = g(de.element(e)), r.push(n.start())
31138 }), a.all(r, t)) : t()
31145 0 != i.length && 0 != o.length ? (de.forEach(o, function(e) {
31146 n = v(de.element(e)), r.push(n.start())
31147 }), a.all(r, t)) : t()
31151 var t = parseInt(F.getComputedStyle(e[0]).height),
31152 n = parseInt(F.getComputedStyle(e[0]).marginTop),
31154 i = e.controller("mdInputContainer").element;
31155 return -t < n || r.hasClass("md-auto-hide") && !i.hasClass("md-input-invalid") ? s(e, {}) : s(e, {
31160 "margin-top": -t + "px"
31171 var t = e[0].offsetHeight,
31172 n = F.getComputedStyle(e[0]);
31173 return 0 === parseInt(n.opacity) ? s(e, {}) : s(e, {
31182 "margin-top": -t + "px"
31189 return e.hasClass("md-input-messages-animation") ? e : e.hasClass("md-input-message-animation") ? de.element(l.getClosest(e, function(e) {
31190 return e.classList.contains("md-input-messages-animation")
31191 })) : de.element(e[0].querySelector(".md-input-messages-animation"))
31194 function y(e, t, n) {
31195 a = e, s = t, l = n
31202 compile: function(e) {
31203 return e[0].setAttribute("role", "list"), t
31208 function t(f, h, p, m) {
31209 var g = ["md-checkbox", "md-switch", "md-menu"];
31212 controller: "MdListController",
31213 compile: function(o, a) {
31214 var e, i, t, n = o[0].querySelectorAll(".md-secondary"),
31216 if (o[0].setAttribute("role", "listitem"), a.ngClick || a.ngDblclick || a.ngHref || a.href || a.uiSref || a.ngAttrUiSref) c("button");
31217 else if (!o.hasClass("md-no-proxy")) {
31218 for (var s, l = 0; s = g[l]; ++l)
31219 if (i = o[0].querySelector(s)) {
31222 } e ? c("div") : o.addClass("md-no-proxy")
31226 if ("div" == e)(r = de.element('<div class="md-no-style md-list-item-inner">')).append(o.contents()), o.addClass("md-proxy-focus");
31228 r = de.element('<div class="md-button md-no-style"> <div class="md-list-item-inner"></div></div>');
31229 var t = de.element('<md-button class="md-no-style"></md-button>');
31230 u(o[0], t[0]), t.attr("aria-label") || t.attr("aria-label", f.getText(o)), o.hasClass("md-no-focus") && t.addClass("md-no-focus"), r.prepend(t), r.children().eq(1).append(o.contents()), o.addClass("_md-button-wrap")
31232 o[0].setAttribute("tabindex", "-1"), o.append(r)
31235 function u(t, n, e) {
31236 var r = p.prefixer(["ng-if", "ng-click", "ng-dblclick", "aria-label", "ng-disabled", "ui-sref", "href", "ng-href", "rel", "target", "ng-attr-ui-sref", "ui-sref-opts", "download"]);
31237 e && (r = r.concat(p.prefixer(e))), de.forEach(r, function(e) {
31238 t.hasAttribute(e) && (n.setAttribute(e, t.getAttribute(e)), t.removeAttribute(e))
31243 for (var t = e.attributes, n = 0; n < t.length; n++)
31244 if ("ngClick" === a.$normalize(t[n].name)) return !0;
31247 return t = de.element('<div class="md-secondary-container">'), de.forEach(n, function(e) {
31249 if (e && ("MD-BUTTON" != (r = e.nodeName.toUpperCase()) && "BUTTON" != r) && e.hasAttribute("ng-click")) {
31250 f.expect(e, "aria-label");
31251 var n = de.element('<md-button class="md-secondary md-icon-button">');
31252 u(e, n[0], ["ng-if", "ng-hide", "ng-show"]), e.setAttribute("tabindex", "-1"), n.append(e), e = n[0]
31255 !e || d(e) && (a.ngClick || (i = e, -1 == g.indexOf(i.nodeName.toLowerCase()))) || de.element(e).removeClass("md-secondary"), o.addClass("md-with-secondary"), t.append(e)
31259 for (var e, t, n = ["md-switch", "md-checkbox"], r = 0; t = n[r]; ++r)
31260 if ((e = o.find(t)[0]) && !e.hasAttribute("aria-label")) {
31261 var i = o.find("p")[0];
31263 e.setAttribute("aria-label", "Toggle " + i.textContent)
31265 }(), e && "MD-MENU" === i.nodeName && function() {
31266 var e = de.element(i),
31267 t = e.parent().hasClass("md-secondary-container") || i.parentNode.firstElementChild !== i,
31269 t && (n = "right");
31270 e.attr("md-position-mode") || e.attr("md-position-mode", n + " target");
31271 var r = e.children().eq(0);
31272 d(r[0]) || r.attr("ng-click", "$mdMenu.open($event)");
31273 r.attr("aria-label") || r.attr("aria-label", "Open List Menu")
31275 function(e, i, t, n) {
31278 o = i[0].firstElementChild,
31279 a = i.hasClass("_md-button-wrap") ? o.firstElementChild : o,
31281 l = i.hasClass("md-no-proxy");
31282 o && o.children && !s && !l && de.forEach(g, function(e) {
31283 de.forEach(o.querySelectorAll(e + ":not(.md-secondary)"), function(e) {
31286 }), (1 == r.length || s) && (i.addClass("md-clickable"), s || n.attachRipple(e, de.element(i[0].querySelector(".md-no-style")))), r.length && de.forEach(r, function(t) {
31287 t = de.element(t), e.mouseActive = !1, t.on("mousedown", function() {
31288 e.mouseActive = !0, m(function() {
31291 }).on("focus", function() {
31292 !1 === e.mouseActive && i.addClass("md-focused"), t.on("blur", function e() {
31293 i.removeClass("md-focused"), t.off("blur", e)
31297 var c = function(e) {
31298 if ("INPUT" != e.target.nodeName && "TEXTAREA" != e.target.nodeName && !e.target.isContentEditable) {
31299 var t = e.which || e.keyCode;
31300 t == h.KEY_CODE.SPACE && a && (a.click(), e.preventDefault(), e.stopPropagation())
31303 s || r.length || a && a.addEventListener("keypress", c);
31304 i.off("click"), i.off("keypress"), 1 == r.length && a && i.children().eq(0).on("click", function(t) {
31305 if (! function(e) {
31306 var t = ["md-slider"];
31307 if (!e.path) return -1 !== t.indexOf(e.target.tagName.toLowerCase());
31308 for (var n = e.path.indexOf(i.children()[0]), r = 0; r < n; r++)
31309 if (-1 !== t.indexOf(e.path[r].tagName.toLowerCase())) return !0
31311 var e = p.getClosest(t.target, "BUTTON");
31312 !e && a.contains(t.target) && de.forEach(r, function(e) {
31313 t.target === e || e.contains(t.target) || ("MD-MENU" === e.nodeName && (e = e.children[0]), de.element(e).triggerHandler("click"))
31317 e.$on("$destroy", function() {
31318 a && a.removeEventListener("keypress", c)
31325 function n(e, t, n) {
31326 this.attachRipple = function(e, t) {
31330 n.$inject = ["$scope", "$element", "$mdListInkRipple"], e.$inject = ["$mdTheming"], t.$inject = ["$mdAria", "$mdConstant", "$mdUtil", "$timeout"], de.module("material.components.list", ["material.core"]).controller("MdListController", n).directive("mdList", e).directive("mdListItem", t)
31331 }(), de.module("material.components.menu", ["material.core", "material.components.backdrop"]),
31333 function e(i, t, o, a, s, r, e, n, l) {
31334 var c, u, d = s.prefixer(),
31336 this.nestLevel = parseInt(t.mdNestLevel, 10) || 0, this.init = function(e, t) {
31337 t = t || {}, c = e, (u = o[0].querySelector(d.buildSelector(["ng-click", "ng-mouseenter"]))).setAttribute("aria-expanded", "false"), this.isInMenuBar = t.isInMenuBar, this.nestedMenus = s.nodesToArray(c[0].querySelectorAll(".md-nested-menu")), c.on("$mdInterimElementRemove", function() {
31338 f.isOpen = !1, s.nextTick(function() {
31339 f.onIsOpenChanged(f.isOpen)
31341 }), s.nextTick(function() {
31342 f.onIsOpenChanged(f.isOpen)
31344 var n = "menu_container_" + s.nextUid();
31345 c.attr("id", n), de.element(u).attr({
31347 "aria-haspopup": "true"
31348 }), a.$on("$destroy", de.bind(this, function() {
31349 this.disableHoverListener(), i.destroy()
31350 })), c.on("$destroy", function() {
31355 this.enableHoverListener = function() {
31356 m.push(e.$on("$mdMenuOpen", function(e, t) {
31357 c[0].contains(t[0]) && (f.currentlyOpenMenu = t.controller("mdMenu"), f.isAlreadyOpening = !1, f.currentlyOpenMenu.registerContainerProxy(f.triggerContainerProxy.bind(f)))
31358 })), m.push(e.$on("$mdMenuClose", function(e, t) {
31359 c[0].contains(t[0]) && (f.currentlyOpenMenu = fe)
31360 })), (p = de.element(s.nodesToArray(c[0].children[0].children))).on("mouseenter", f.handleMenuItemHover), p.on("mouseleave", f.handleMenuItemMouseLeave)
31361 }, this.disableHoverListener = function() {
31362 for (; m.length;) m.shift()();
31363 p && p.off("mouseenter", f.handleMenuItemHover), p && p.off("mouseleave", f.handleMenuItemMouseLeave)
31364 }, this.handleMenuItemHover = function(e) {
31365 if (!f.isAlreadyOpening) {
31366 var t = e.target.querySelector("md-menu") || s.getClosest(e.target, "MD-MENU");
31368 if (t && (t = de.element(t).controller("mdMenu")), f.currentlyOpenMenu && f.currentlyOpenMenu != t) {
31369 var e = f.nestLevel + 1;
31370 f.currentlyOpenMenu.close(!0, {
31372 }), f.isAlreadyOpening = !!t, t && t.open()
31373 } else t && !t.isOpen && t.open && (f.isAlreadyOpening = !!t, t && t.open())
31375 var n = e.currentTarget.querySelector(".md-button:not([disabled])");
31378 }, this.handleMenuItemMouseLeave = function() {
31379 h && (r.cancel(h), h = fe)
31380 }, this.open = function(e) {
31381 e && e.stopPropagation(), e && e.preventDefault(), f.isOpen || (f.enableHoverListener(), f.isOpen = !0, s.nextTick(function() {
31382 f.onIsOpenChanged(f.isOpen)
31383 }), (u = u || (e ? e.target : o[0])).setAttribute("aria-expanded", "true"), a.$emit("$mdMenuOpen", o), i.show({
31386 nestLevel: f.nestLevel,
31389 preserveElement: !0,
31391 }).finally(function() {
31392 u.setAttribute("aria-expanded", "false"), f.disableHoverListener()
31394 }, this.onIsOpenChanged = function(e) {
31395 e ? (c.attr("aria-hidden", "false"), o[0].classList.add("md-open"), de.forEach(f.nestedMenus, function(e) {
31396 e.classList.remove("md-open")
31397 })) : (c.attr("aria-hidden", "true"), o[0].classList.remove("md-open")), a.$mdMenuIsOpen = f.isOpen
31398 }, this.focusMenuContainer = function() {
31399 var e = c[0].querySelector(d.buildSelector(["md-menu-focus-target", "md-autofocus"]));
31400 e || (e = c[0].querySelector(".md-button:not([disabled])")), e.focus()
31401 }, this.registerContainerProxy = function(e) {
31402 this.containerProxy = e
31403 }, this.triggerContainerProxy = function(e) {
31404 this.containerProxy && this.containerProxy(e)
31405 }, this.destroy = function() {
31406 return f.isOpen ? i.destroy() : n.when(!1)
31407 }, this.close = function(e, t) {
31409 f.isOpen = !1, s.nextTick(function() {
31410 f.onIsOpenChanged(f.isOpen)
31412 var n = de.extend({}, t, {
31415 if (a.$emit("$mdMenuClose", o, n), i.hide(null, t), !e) {
31416 var r = f.restoreFocusTo || o.find("button")[0];
31417 r instanceof de.element && (r = r[0]), r && r.focus()
31420 }, this.positionMode = function() {
31421 var e = (t.mdPositionMode || "target").split(" ");
31422 return 1 === e.length && e.push(e[0]), {
31426 }, this.offsets = function() {
31427 var e = (t.mdOffset || "0 0").split(" ").map(parseFloat);
31428 if (2 === e.length) return {
31432 if (1 === e.length) return {
31436 throw Error("Invalid offsets specified. Please follow format <x, y> or <n>")
31440 }, a.$mdOpenMenu = de.bind(this, function() {
31441 return l.warn("mdMenu: The $mdOpenMenu method is deprecated. Please use `$mdMenu.open`."), this.open.apply(this, arguments)
31444 e.$inject = ["$mdMenu", "$attrs", "$element", "$scope", "$mdUtil", "$timeout", "$rootScope", "$q", "$log"], de.module("material.components.menu").controller("mdMenuCtrl", e)
31448 var s = "Invalid HTML for md-menu: ";
31451 require: ["mdMenu", "?^mdMenuBar"],
31452 controller: "mdMenuCtrl",
31454 compile: function(e) {
31455 e.addClass("md-menu");
31456 var t = e.children()[0],
31458 n.hasAttribute(t, "ng-click") || (t = t.querySelector(n.buildSelector(["ng-click", "ng-mouseenter"])) || t);
31459 var r = "MD-BUTTON" === t.nodeName || "BUTTON" === t.nodeName;
31460 t && r && !t.hasAttribute("type") && t.setAttribute("type", "button");
31461 if (!t) throw Error(s + "Expected the menu to have a trigger element.");
31462 if (2 !== e.children().length) throw Error(s + "Expected two children elements. The second element must have a `md-menu-content` element.");
31463 t && t.setAttribute("aria-haspopup", "true");
31464 var i = e[0].querySelectorAll("md-menu"),
31465 o = parseInt(e[0].getAttribute("md-nest-level"), 10) || 0;
31466 i && de.forEach(a.nodesToArray(i), function(e) {
31467 e.hasAttribute("md-position-mode") || e.setAttribute("md-position-mode", "cascade"), e.classList.add("_md-nested-menu"), e.setAttribute("md-nest-level", o + 1)
31473 function l(e, t, n, r) {
31476 a = de.element('<div class="_md md-open-menu-container md-whiteframe-z2"></div>'),
31477 s = t.children()[1];
31478 t.addClass("_md"), s.hasAttribute("role") || s.setAttribute("role", "menu"), a.append(s), t.on("$destroy", function() {
31480 }), t.append(a), a[0].style.display = "none", i.init(a, {
31485 e.$inject = ["$mdUtil"], de.module("material.components.menu").directive("mdMenu", e)
31489 t.$inject = ["$mdUtil", "$mdTheming", "$mdConstant", "$document", "$window", "$q", "$$rAF", "$animateCss", "$animate", "$log"];
31491 return e("$mdMenu").setDefaults({
31492 methods: ["target"],
31496 function t(w, c, u, E, C, d, f, h, p, m) {
31497 var k = w.prefixer(),
31498 g = w.dom.animator;
31501 onShow: function(a, n, s) {
31503 if (!s.target) throw Error("$mdMenu.show() expected a target to animate from in options.target");
31507 target: de.element(s.target),
31508 parent: de.element(s.parent),
31509 menuContentEl: de.element(n[0].querySelector("md-menu-content"))
31511 })(), s.menuContentEl[0] ? c.inherit(s.menuContentEl, s.target) : m.warn("$mdMenu: Menu elements should always contain a `md-menu-content` element,otherwise interactivity features will not work properly.", n);
31512 return s.cleanupResizing = (r = n, i = s, o = f.throttle(function() {
31513 if (!s.isRemoved) {
31517 }), C.addEventListener("resize", o), C.addEventListener("orientationchange", o), function() {
31518 C.removeEventListener("resize", o), C.removeEventListener("orientationchange", o)
31519 }), s.hideBackdrop = (e = a, t = s, t.nestLevel ? de.noop : (t.disableParentScroll && !w.getClosest(t.target, "MD-DIALOG") ? t.restoreScroll = w.disableScrollAround(t.element, t.parent) : t.disableParentScroll = !1, t.hasBackdrop && (t.backdrop = w.createBackdrop(e, "md-menu-backdrop md-click-catcher"), p.enter(t.backdrop, E[0].body)), function() {
31520 t.backdrop && t.backdrop.remove(), t.disableParentScroll && t.restoreScroll()
31521 })), (s.parent.append(n), n[0].style.display = "", d(function(e) {
31523 n.removeClass("md-leave"), h(n, {
31524 addClass: "md-active",
31530 })).then(function(e) {
31531 return s.alreadyOpen = !0, s.cleanupInteraction = function() {
31532 if (!s.menuContentEl[0]) return de.noop;
31533 s.menuContentEl.on("keydown", i), s.menuContentEl[0].addEventListener("click", o, !0);
31534 var e = s.menuContentEl[0].querySelector(k.buildSelector(["md-menu-focus-target", "md-autofocus"]));
31536 for (var t = s.menuContentEl[0].children.length, n = 0; n < t; n++) {
31537 var r = s.menuContentEl[0].children[n];
31538 if (e = r.querySelector(".md-button:not([disabled])")) break;
31539 if (r.firstElementChild && !r.firstElementChild.disabled) {
31540 e = r.firstElementChild;
31544 return e && e.focus(),
31546 s.menuContentEl.off("keydown", i), s.menuContentEl[0].removeEventListener("click", o, !0)
31551 switch (e.keyCode) {
31552 case u.KEY_CODE.ESCAPE:
31553 s.mdMenuCtrl.close(!1, {
31557 case u.KEY_CODE.TAB:
31558 s.mdMenuCtrl.close(!1, {
31562 case u.KEY_CODE.UP_ARROW:
31563 v(e, s.menuContentEl, s, -1) || s.nestLevel || s.mdMenuCtrl.triggerContainerProxy(e), t = !0;
31565 case u.KEY_CODE.DOWN_ARROW:
31566 v(e, s.menuContentEl, s, 1) || s.nestLevel || s.mdMenuCtrl.triggerContainerProxy(e), t = !0;
31568 case u.KEY_CODE.LEFT_ARROW:
31569 s.nestLevel ? s.mdMenuCtrl.close() : s.mdMenuCtrl.triggerContainerProxy(e), t = !0;
31571 case u.KEY_CODE.RIGHT_ARROW:
31572 var n = w.getClosest(e.target, "MD-MENU");
31573 n && n != s.parent[0] ? e.target.click() : s.mdMenuCtrl.triggerContainerProxy(e), t = !0
31575 t && (e.preventDefault(), e.stopImmediatePropagation())
31581 if (t == s.menuContentEl[0]) return;
31582 if ((r(t, ["ng-click", "ng-href", "ui-sref"]) || "BUTTON" == t.nodeName || "MD-BUTTON" == t.nodeName) && !r(t, ["md-prevent-menu-close"])) {
31583 var n = w.getClosest(t, "MD-MENU");
31584 t.hasAttribute("disabled") || n && n != s.parent[0] || a.$apply(function() {
31585 s.mdMenuCtrl.close(!0, {
31591 } while (t = t.parentNode);
31595 for (var n, r = 0; n = t[r]; ++r)
31596 if (k.hasAttribute(e, n)) return !0;
31600 }(), s.cleanupBackdrop = s.backdrop ? (s.backdrop.on("click", l), function() {
31601 s.backdrop.off("click", l)
31602 }) : de.noop, n.addClass("md-clickable"), e
31608 e.preventDefault(), e.stopPropagation(), a.$apply(function() {
31609 s.mdMenuCtrl.close(!0, {
31615 onRemove: function(e, n, r) {
31616 return r.cleanupInteraction(), r.cleanupBackdrop(), r.cleanupResizing(), r.hideBackdrop(), n.removeClass("md-clickable"), !0 === r.$destroy ? t() : h(n, {
31617 addClass: "md-leave"
31618 }).start().then(t);
31622 n.removeClass("md-active"), e = n, (t = r).preserveElement ? i(e).style.display = "none" : i(e).parentNode === i(t.parent) && i(t.parent).removeChild(i(e)), r.alreadyOpen = !1
31626 disableParentScroll: !0,
31633 function v(e, t, n, r) {
31634 for (var i, o = w.getClosest(e.target, "MD-MENU-ITEM"), a = w.nodesToArray(t[0].children), s = a.indexOf(o) + r; 0 <= s && s < a.length; s += r) {
31635 if (i = l(a[s].querySelector(".md-button"))) break
31641 if (e && -1 != e.getAttribute("tabindex")) return e.focus(), E[0].activeElement == e
31646 i = e[0].firstElementChild,
31647 o = i.getBoundingClientRect(),
31648 a = E[0].body.getBoundingClientRect(),
31649 s = C.getComputedStyle(i),
31650 l = t.target[0].querySelector(k.buildSelector("md-menu-origin")) || t.target[0],
31651 c = l.getBoundingClientRect(),
31654 top: Math.max(a.top, 0) + x,
31655 bottom: Math.max(a.bottom, Math.max(a.top, 0) + a.height) - x,
31670 h = t.mdMenuCtrl.positionMode();
31671 "target" !== h.top && "target" !== h.left && "target-right" !== h.left || (n = function() {
31672 for (var e = 0; e < i.children.length; ++e)
31673 if ("none" != C.getComputedStyle(i.children[e]).display) return i.children[e]
31674 }()) && (d = (n = (n = n.firstElementChild || n).querySelector(k.buildSelector("md-menu-align-target")) || n).getBoundingClientRect(), f = {
31675 top: parseFloat(r.style.top || 0),
31676 left: parseFloat(r.style.left || 0)
31682 p.top = f.top + c.top - d.top;
31685 p.top = c.top - parseFloat(s.paddingTop) - l.style.top;
31688 p.top = c.top + c.height;
31691 throw new Error('Invalid target mode "' + h.top + '" specified for md-menu on Y axis.')
31693 var g = w.isRtl(e);
31696 p.left = f.left + c.left - d.left, m += g ? "right" : "left";
31698 case "target-left":
31699 p.left = c.left, m += "left";
31701 case "target-right":
31702 p.left = c.right - o.width + (o.right - d.right), m += "right";
31705 var v = g ? c.left - o.width < u.left : c.right + o.width < u.right;
31706 p.left = v ? c.right - l.style.left : c.left - l.style.left - o.width, m += v ? "left" : "right";
31709 g ? (p.left = c.right - c.width, m += "left") : (p.left = c.right - o.width, m += "right");
31712 g ? (p.left = c.right - o.width, m += "right") : (p.left = c.left, m += "left");
31715 throw new Error('Invalid target mode "' + h.left + '" specified for md-menu on X axis.')
31717 var b, y = t.mdMenuCtrl.offsets();
31718 p.top += y.top, p.left += y.left, (b = p).top = Math.max(Math.min(b.top, u.bottom - r.offsetHeight), u.top), b.left = Math.max(Math.min(b.left, u.right - r.offsetWidth), u.left);
31719 var _ = Math.round(100 * Math.min(c.width / r.offsetWidth, 1)) / 100,
31720 $ = Math.round(100 * Math.min(c.height / r.offsetHeight, 1)) / 100;
31722 top: Math.round(p.top),
31723 left: Math.round(p.left),
31724 transform: t.alreadyOpen ? fe : w.supplant("scale({0},{1})", [_, $]),
31731 return e instanceof de.element && (e = e[0]), e
31734 e.$inject = ["$$interimElementProvider"], de.module("material.components.menu").provider("$mdMenu", e)
31735 }(), de.module("material.components.menuBar", ["material.core", "material.components.icon", "material.components.menu"]),
31737 e.$inject = ["$scope", "$rootScope", "$element", "$attrs", "$mdConstant", "$document", "$mdUtil", "$timeout"], de.module("material.components.menuBar").controller("MenuBarController", e);
31738 var c = ["handleKeyDown", "handleMenuHover", "scheduleOpenHoveredMenu", "cancelScheduledOpen"];
31740 function e(e, t, n, r, i, o, a, s) {
31741 this.$element = n, this.$attrs = r, this.$mdConstant = i, this.$mdUtil = a, this.$document = o, this.$scope = e, this.$rootScope = t, this.$timeout = s;
31743 de.forEach(c, function(e) {
31744 l[e] = de.bind(l, l[e])
31747 e.prototype.init = function() {
31748 var o = this.$element,
31753 o.on("keydown", this.handleKeyDown), this.parentToolbar = a.getClosest(o, "MD-TOOLBAR"), t.push(this.$rootScope.$on("$mdMenuOpen", function(e, t) {
31754 -1 != s.getMenus().indexOf(t[0]) && (o[0].classList.add("md-open"), t[0].classList.add("md-open"), s.currentlyOpenMenu = t.controller("mdMenu"), s.currentlyOpenMenu.registerContainerProxy(s.handleKeyDown), s.enableOpenOnHover())
31755 })), t.push(this.$rootScope.$on("$mdMenuClose", function(e, t, n) {
31756 var r = s.getMenus();
31757 if (-1 != r.indexOf(t[0]) && (o[0].classList.remove("md-open"), t[0].classList.remove("md-open")), o[0].contains(t[0])) {
31758 for (var i = t[0]; i && -1 == r.indexOf(i);) i = a.getClosest(i, "MD-MENU", !0);
31759 i && (n.skipFocus || i.querySelector("button:not([disabled])").focus(), s.currentlyOpenMenu = fe, s.disableOpenOnHover(), s.setKeyboardMode(!0))
31761 })), e.$on("$destroy", function() {
31762 for (s.disableOpenOnHover(); t.length;) t.shift()()
31763 }), this.setKeyboardMode(!0)
31764 }, e.prototype.setKeyboardMode = function(e) {
31765 e ? this.$element[0].classList.add("md-keyboard-mode") : this.$element[0].classList.remove("md-keyboard-mode")
31766 }, e.prototype.enableOpenOnHover = function() {
31767 if (!this.openOnHoverEnabled) {
31769 e.openOnHoverEnabled = !0, e.parentToolbar && (e.parentToolbar.classList.add("md-has-open-menu"), e.$mdUtil.nextTick(function() {
31770 de.element(e.parentToolbar).on("click", e.handleParentClick)
31771 }, !1)), de.element(e.getMenus()).on("mouseenter", e.handleMenuHover)
31773 }, e.prototype.handleMenuHover = function(e) {
31774 this.setKeyboardMode(!1), this.openOnHoverEnabled && this.scheduleOpenHoveredMenu(e)
31775 }, e.prototype.disableOpenOnHover = function() {
31776 this.openOnHoverEnabled && (this.openOnHoverEnabled = !1, this.parentToolbar && (this.parentToolbar.classList.remove("md-has-open-menu"), de.element(this.parentToolbar).off("click", this.handleParentClick)), de.element(this.getMenus()).off("mouseenter", this.handleMenuHover))
31777 }, e.prototype.scheduleOpenHoveredMenu = function(e) {
31778 var t = de.element(e.currentTarget).controller("mdMenu");
31779 this.setKeyboardMode(!1), this.scheduleOpenMenu(t)
31780 }, e.prototype.scheduleOpenMenu = function(e) {
31783 e != t.currentlyOpenMenu && (n.cancel(t.pendingMenuOpen), t.pendingMenuOpen = n(function() {
31784 t.pendingMenuOpen = fe, t.currentlyOpenMenu && t.currentlyOpenMenu.close(!0, {
31788 }, e.prototype.handleKeyDown = function(e) {
31789 var t, n, r, i = this.$mdConstant.KEY_CODE,
31790 o = this.currentlyOpenMenu,
31792 switch (this.setKeyboardMode(!0), e.keyCode) {
31794 o ? o.focusMenuContainer() : this.openFocusedMenu(), t = !0;
31797 o && o.close(), t = !0;
31800 n = this.focusMenu(-1), a && (r = de.element(n).controller("mdMenu"), this.scheduleOpenMenu(r)), t = !0;
31802 case i.RIGHT_ARROW:
31803 n = this.focusMenu(1), a && (r = de.element(n).controller("mdMenu"), this.scheduleOpenMenu(r)), t = !0
31805 t && (e && e.preventDefault && e.preventDefault(), e && e.stopImmediatePropagation && e.stopImmediatePropagation())
31806 }, e.prototype.focusMenu = function(e) {
31807 var t = this.getMenus(),
31808 n = this.getFocusedMenuIndex(); - 1 == n && (n = this.getOpenMenuIndex());
31810 if (-1 == n ? r = !(n = 0) : (e < 0 && 0 < n || 0 < e && n < t.length - e) && (n += e, r = !0), r) return t[n].querySelector("button").focus(), t[n]
31811 }, e.prototype.openFocusedMenu = function() {
31812 var e = this.getFocusedMenu();
31813 e && de.element(e).controller("mdMenu").open()
31814 }, e.prototype.getMenus = function() {
31815 var e = this.$element;
31816 return this.$mdUtil.nodesToArray(e[0].children).filter(function(e) {
31817 return "MD-MENU" == e.nodeName
31819 }, e.prototype.getFocusedMenu = function() {
31820 return this.getMenus()[this.getFocusedMenuIndex()]
31821 }, e.prototype.getFocusedMenuIndex = function() {
31822 var e = this.$mdUtil.getClosest(this.$document[0].activeElement, "MD-MENU");
31823 return e ? this.getMenus().indexOf(e) : -1
31824 }, e.prototype.getOpenMenuIndex = function() {
31825 for (var e = this.getMenus(), t = 0; t < e.length; ++t)
31826 if (e[t].classList.contains("md-open")) return t;
31828 }, e.prototype.handleParentClick = function(e) {
31829 var t = this.querySelector("md-menu.md-open");
31830 t && !t.contains(e.target) && de.element(t).controller("mdMenu").close(!0, {
31839 require: "mdMenuBar",
31840 controller: "MenuBarController",
31841 compile: function(e, t) {
31842 return t.ariaRole || e[0].setAttribute("role", "menubar"), de.forEach(e[0].children, function(e) {
31843 if ("MD-MENU" == e.nodeName) {
31844 e.hasAttribute("md-position-mode") || (e.setAttribute("md-position-mode", "left bottom"), e.querySelector("button, a, md-button").setAttribute("role", "menuitem"));
31845 var t = n.nodesToArray(e.querySelectorAll("md-menu-content"));
31846 de.forEach(t, function(e) {
31847 e.classList.add("md-menu-bar-menu"), e.classList.add("md-dense"), e.hasAttribute("width") || e.setAttribute("width", 5)
31850 }), e.find("md-menu-item").addClass("md-in-menu-bar"),
31851 function(e, t, n, r) {
31852 t.addClass("_md"), i(e, t), r.init()
31857 e.$inject = ["$mdUtil", "$mdTheming"], de.module("material.components.menuBar").directive("mdMenuBar", e)
31858 }(), de.module("material.components.menuBar").directive("mdMenuDivider", function() {
31861 compile: function(e, t) {
31862 t.role || e[0].setAttribute("role", "separator")
31867 function e(e, t, n) {
31868 this.$element = t, this.$attrs = n, this.$scope = e
31870 e.$inject = ["$scope", "$element", "$attrs"], de.module("material.components.menuBar").controller("MenuItemController", e), e.prototype.init = function(e) {
31871 var t = this.$element,
31873 this.ngModel = e, "checkbox" != n.type && "radio" != n.type || (this.mode = n.type, this.iconEl = t[0].children[0], this.buttonEl = t[0].children[1], e && this.initClickListeners())
31874 }, e.prototype.clearNgAria = function() {
31875 var t = this.$element[0];
31876 de.forEach(["role", "tabindex", "aria-invalid", "aria-checked"], function(e) {
31877 t.removeAttribute(e)
31879 }, e.prototype.initClickListeners = function() {
31884 i = (this.$element, this.mode);
31885 this.handleClick = de.bind(this, this.handleClick);
31886 var o = this.iconEl,
31887 a = de.element(this.buttonEl),
31888 s = this.handleClick;
31891 e ? a.off("click", s) : a.on("click", s)
31893 r.$observe("disabled", l), l(r.disabled), t.$render = function() {
31894 e.clearNgAria(), ! function() {
31896 if ("radio" != i) return t.$modelValue;
31897 var e = r.ngValue ? n.$eval(r.ngValue) : r.value;
31898 return t.$modelValue == e
31900 }() ? (o.style.display = "none", a.attr("aria-checked", "false")) : (o.style.display = "", a.attr("aria-checked", "true"))
31901 }, n.$$postDigest(t.$render)
31902 }, e.prototype.handleClick = function(e) {
31903 var t, n = this.mode,
31906 "checkbox" == n ? t = !r.$modelValue : "radio" == n && (t = i.ngValue ? this.$scope.$eval(i.ngValue) : i.value), r.$setViewValue(t), r.$render()
31910 function e(u, e, d) {
31912 controller: "MenuItemController",
31913 require: ["mdMenuItem", "?ngModel"],
31914 priority: e.BEFORE_NG_ARIA,
31915 compile: function(r, e) {
31916 var t, n, i = e.type,
31917 o = "md-in-menu-bar";
31918 if ("checkbox" !== i && "radio" !== i || !r.hasClass(o)) c("role", "menuitem", r[0].querySelector("md-button, button, a"));
31920 var a = r[0].textContent,
31921 s = de.element('<md-button type="button"></md-button>'),
31922 l = '<md-icon md-svg-src="' + d.mdChecked + '"></md-icon>';
31923 s.html(a), s.attr("tabindex", "0"), de.isDefined(e.mdPreventMenuClose) && s.attr("md-prevent-menu-close", e.mdPreventMenuClose), r.html(""), r.append(de.element(l)), r.append(s), r.addClass("md-indent").removeClass(o), c("role", "checkbox" === i ? "menuitemcheckbox" : "menuitemradio", s), t = "ng-disabled", n = u.prefixer(t), de.forEach(n, function(e) {
31924 if (r[0].hasAttribute(e)) {
31925 var t = r[0].getAttribute(e);
31926 s[0].setAttribute(e, t), r[0].removeAttribute(e)
31930 return function(e, t, n, r) {
31936 function c(e, t, n) {
31937 (n = n || r) instanceof de.element && (n = n[0]), n.hasAttribute(e) || n.setAttribute(e, t)
31942 e.$inject = ["$mdUtil", "$mdConstant", "$$mdSvgRegistry"], de.module("material.components.menuBar").directive("mdMenuItem", e)
31950 controllerAs: "ctrl",
31951 bindToController: !0,
31953 mdSelectedNavItem: "=?",
31955 navBarAriaLabel: "@?"
31957 template: '<div class="md-nav-bar"><nav role="navigation"><ul class="_md-nav-bar-list" ng-transclude role="tablist" ng-focus="ctrl.onFocus()" aria-label="{{ctrl.navBarAriaLabel}}"></ul></nav><md-nav-ink-bar ng-hide="ctrl.mdNoInkBar"></md-nav-ink-bar></div>',
31958 link: function(e, t, n, r) {
31959 o(t), r.navBarAriaLabel || i.expectAsync(t, "aria-label", de.noop)
31964 function t(e, t, n, r) {
31965 this._$timeout = n, this._$scope = t, this._$mdConstant = r, this.mdSelectedNavItem, this.navBarAriaLabel, this._navBarEl = e[0], this._inkbar;
31967 o = this._$scope.$watch(function() {
31968 return i._navBarEl.querySelectorAll("._md-nav-button").length
31970 0 < e && (i._initTabs(), o())
31974 function n(u, e, d, f) {
31977 require: ["mdNavItem", "^mdNavBar"],
31979 bindToController: !0,
31980 controllerAs: "ctrl",
31983 template: function(e, t) {
31984 var n, r, i = t.mdNavClick,
31988 if (1 < (i ? 1 : 0) + (o ? 1 : 0) + (a ? 1 : 0)) throw Error("Please do not specify more than one of the md-nav-click, md-nav-href, or md-nav-sref attributes per nav-item directive.");
31989 if (i !== fe && null !== i) n = 'ng-click="ctrl.mdNavClick()"';
31990 else if (o !== fe && null !== o) n = 'ng-href="{{ctrl.mdNavHref}}"';
31992 if (a === fe || null === a) throw Error("Please specify at least one of the md-nav-click, md-nav-href, or md-nav-sref attributes per nav-item directive.");
31993 n = 'ui-sref="{{ctrl.mdNavSref}}"'
31995 return n && (r = '<md-button class="_md-nav-button md-accent" ng-class="ctrl.getNgClassMap()" ng-blur="ctrl.setFocused(false)" ng-disabled="ctrl.disabled" tabindex="-1" role="tab" ng-attr-aria-label="{{ctrl.navItemAriaLabel ? ctrl.navItemAriaLabel : undefined}}" aria-selected="{{ctrl.isSelected()}}" ' + (s ? 'ui-sref-opts="{{ctrl.srefOpts}}" ' : "") + n + '><span ng-transclude class="_md-nav-button-text"></span></md-button>'), '<li class="md-nav-item" role="presentation">' + (r || "") + "</li>"
32003 navItemAriaLabel: "@?"
32005 link: function(n, r, i, o) {
32008 if (s = o[0], l = o[1], c = de.element(r[0].querySelector("._md-nav-button")), s.name || (s.name = de.element(r[0].querySelector("._md-nav-button-text")).text().trim()), c.on("keydown", function(e) {
32010 }), c.on("focus", function() {
32011 l.getFocusedTab() || l.onFocus()
32012 }), c.on("click", function() {
32013 l.mdSelectedNavItem = s.name, n.$apply()
32014 }), s.disabled = d.parseAttributeBoolean(i.disabled, !1), "MutationObserver" in f) {
32016 t = new MutationObserver(function(e) {
32017 d.nextTick(function() {
32018 s.disabled = d.parseAttributeBoolean(i[e[0].attributeName], !1)
32023 attributeFilter: ["disabled"]
32024 }), a = t.disconnect.bind(t)
32025 } else i.$observe("disabled", function(e) {
32026 s.disabled = d.parseAttributeBoolean(e, !1)
32028 s.navItemAriaLabel || u.expectWithText(c, "aria-label")
32029 }), n.$on("destroy", function() {
32030 c.off("keydown"), c.off("focus"), c.off("click"), a()
32037 this._$element = e, this.mdNavClick, this.mdNavHref, this.mdNavSref, this.srefOpts, this.name, this.navItemAriaLabel, this._selected = !1, this._focused = !1
32039 e.$inject = ["$mdAria", "$mdTheming"], t.$inject = ["$element", "$scope", "$timeout", "$mdConstant"], n.$inject = ["$mdAria", "$$rAF", "$mdUtil", "$window"], r.$inject = ["$element"], de.module("material.components.navBar", ["material.core"]).controller("MdNavBarController", t).directive("mdNavBar", e).controller("MdNavItemController", r).directive("mdNavItem", n), t.prototype._initTabs = function() {
32040 this._inkbar = de.element(this._navBarEl.querySelector("md-nav-ink-bar"));
32042 this._$timeout(function() {
32043 n._updateTabs(n.mdSelectedNavItem, fe)
32044 }), this._$scope.$watch("ctrl.mdSelectedNavItem", function(e, t) {
32045 n._$timeout(function() {
32046 n._updateTabs(e, t)
32049 }, t.prototype._updateTabs = function(e, t) {
32051 r = this._getTabs(),
32056 s = this._getTabByName(e),
32057 l = this._getTabByName(t);
32058 l && (l.setSelected(!1), o = r.indexOf(l)), s && (s.setSelected(!0), a = r.indexOf(s)), this._$timeout(function() {
32059 n._updateInkBarStyles(s, a, o), s && l && !i && n._moveFocus(l, s)
32062 }, t.prototype._updateInkBarStyles = function(e, t, n) {
32063 if (this._inkbar.toggleClass("_md-left", t < n).toggleClass("_md-right", n < t), this._inkbar.css({
32064 display: t < 0 ? "none" : ""
32066 var r = e.getButtonEl(),
32070 width: r.offsetWidth + "px"
32073 }, t.prototype._getTabs = function() {
32074 var e = Array.prototype.slice.call(this._navBarEl.querySelectorAll(".md-nav-item")).map(function(e) {
32075 return de.element(e).controller("mdNavItem")
32077 return e.indexOf(fe) ? e : null
32078 }, t.prototype._getTabByName = function(t) {
32079 return this._findTab(function(e) {
32080 return e.getName() === t
32082 }, t.prototype._getSelectedTab = function() {
32083 return this._findTab(function(e) {
32084 return e.isSelected()
32086 }, t.prototype.getFocusedTab = function() {
32087 return this._findTab(function(e) {
32088 return e.hasFocus()
32090 }, t.prototype._findTab = function(e, t) {
32091 var n = this._getTabs();
32092 t !== fe && null !== t || (t = 0);
32093 for (var r = t; r < n.length; r++)
32094 if (e(n[r])) return n[r];
32096 }, t.prototype._findTabReverse = function(e, t) {
32097 var n = this._getTabs();
32098 t !== fe && null !== t || (t = n.length - 1);
32099 for (var r = t; 0 <= r; r--)
32100 if (e(n[r])) return n[r];
32102 }, t.prototype.onFocus = function() {
32103 var e = this._getSelectedTab();
32104 e && e.setFocused(!0)
32105 }, t.prototype._moveFocus = function(e, t) {
32106 e.setFocused(!1), t.setFocused(!0)
32107 }, t.prototype._focusFirstTab = function() {
32108 if (this._getTabs()) {
32109 var e = this._findTab(function(e) {
32110 return e._isEnabled()
32112 e && this._moveFocus(this.getFocusedTab(), e)
32114 }, t.prototype._focusLastTab = function() {
32115 if (this._getTabs()) {
32116 var e = this._findTabReverse(function(e) {
32117 return e._isEnabled()
32119 e && this._moveFocus(this.getFocusedTab(), e)
32121 }, t.prototype._focusNextTab = function(e) {
32122 if (this._getTabs()) {
32123 var t = this._findTab(function(e) {
32124 return e._isEnabled()
32126 t ? this._moveFocus(this.getFocusedTab(), t) : this._focusFirstTab()
32128 }, t.prototype._focusPreviousTab = function(e) {
32129 if (this._getTabs()) {
32130 var t = this._findTabReverse(function(e) {
32131 return e._isEnabled()
32133 t ? this._moveFocus(this.getFocusedTab(), t) : this._focusLastTab()
32135 }, t.prototype.onKeydown = function(e) {
32136 var t = this._$mdConstant.KEY_CODE,
32137 n = this._getTabs(),
32138 r = this.getFocusedTab();
32140 var i = n.indexOf(r);
32141 switch (e.keyCode) {
32144 e.preventDefault(), this._focusPreviousTab(i);
32147 case t.RIGHT_ARROW:
32148 e.preventDefault(), this._focusNextTab(i);
32152 this._$timeout(function() {
32153 r.getButtonEl().click()
32157 e.preventDefault(), this._focusFirstTab();
32160 e.preventDefault(), this._focusLastTab()
32163 }, r.prototype.getNgClassMap = function() {
32165 "md-active": this._selected,
32166 "md-primary": this._selected,
32167 "md-unselected": !this._selected,
32168 "md-focused": this._focused
32170 }, r.prototype.getName = function() {
32172 }, r.prototype.getButtonEl = function() {
32173 return this._$element[0].querySelector("._md-nav-button")
32174 }, r.prototype.setSelected = function(e) {
32175 (this._selected = e) ? this.getButtonEl().setAttribute("tabindex", "0"): this.getButtonEl().setAttribute("tabindex", "-1")
32176 }, r.prototype.isSelected = function() {
32177 return this._selected
32178 }, r.prototype.setFocused = function(e) {
32179 (this._focused = e) && this.getButtonEl().focus()
32180 }, r.prototype.hasFocus = function() {
32181 return this._focused
32182 }, r.prototype._isEnabled = function() {
32183 return !this._$element.attr("disabled")
32187 s.$inject = ["presets", "$rootElement", "$rootScope", "$injector", "$window"], de.module("material.components.panel", ["material.core", "material.components.backdrop"]).provider("$mdPanel", function() {
32192 $get: ["$rootElement", "$rootScope", "$injector", "$window", function(e, t, n, r) {
32193 return new s(i, e, t, n, r)
32198 a = "_md-panel-hidden",
32199 n = de.element('<div class="_md-panel-focus-trap" tabindex="0"></div>'),
32203 if (!e || !t) throw new Error("mdPanelProvider: The panel preset definition is malformed. The name and preset object are required.");
32204 if (i.hasOwnProperty(e)) throw new Error("mdPanelProvider: The panel preset you have requested has already been defined.");
32205 delete t.id, delete t.position, delete t.animation, i[e] = t
32216 function s(e, t, n, r, i) {
32217 this._defaultConfigOptions = {
32218 bindToController: !0,
32219 clickOutsideToClose: !1,
32220 disableParentScroll: !1,
32225 propagateContainerEvents: !1,
32226 transformTemplate: de.bind(this, this._wrapTemplate),
32229 }, this._config = {}, this._presets = e, this._$rootElement = t, this._$rootScope = n, this._$injector = r, this._$window = i, this._$mdUtil = this._$injector.get("$mdUtil"), this._trackedPanels = {}, this._groups = Object.create(null), this.animation = c.animation, this.xPosition = p.xPosition, this.yPosition = p.yPosition, this.interceptorTypes = l.interceptorTypes, this.closeReasons = l.closeReasons, this.absPosition = p.absPosition
32233 this._$q = t.get("$q"), this._$mdCompiler = t.get("$mdCompiler"), this._$mdConstant = t.get("$mdConstant"), this._$mdUtil = t.get("$mdUtil"), this._$mdTheming = t.get("$mdTheming"), this._$rootScope = t.get("$rootScope"), this._$animate = t.get("$animate"), this._$mdPanel = t.get("$mdPanel"), this._$log = t.get("$log"), this._$window = t.get("$window"), this._$$rAF = t.get("$$rAF"), this.id = e.id, this.config = e, this.panelContainer, this.panelEl, this.isAttached = !1, this._removeListeners = [], this._topFocusTrap, this._bottomFocusTrap, this._backdropRef, this._restoreScroll = null, this._interceptors = Object.create(null), this._compilerCleanup = null, this._restoreCache = {
32240 this._$window = e.get("$window"), this._isRTL = e.get("$mdUtil").isRtl(), this._$mdConstant = e.get("$mdConstant"), this._absolute = !1, this._relativeToEl, this._top = "", this._bottom = "", this._left = "", this._right = "", this._translateX = [], this._translateY = [], this._positions = [], this._actualPosition
32244 this._$mdUtil = e.get("$mdUtil"), this._openFrom, this._closeTo, this._animationClass = "", this._openDuration, this._closeDuration, this._rawDuration
32248 var t = de.isString(e) ? document.querySelector(e) : e;
32249 return de.element(t)
32253 return de.isNumber(e) ? e + "px" : e
32255 s.prototype.create = function(e, t) {
32256 if ("string" == typeof e ? e = this._getPresetByName(e) : "object" != typeof e || !de.isUndefined(t) && t || (t = e, e = {}), e = e || {}, t = t || {}, de.isDefined(t.id) && this._trackedPanels[t.id]) {
32257 var n = this._trackedPanels[t.id];
32258 return de.extend(n.config, t), n
32260 this._config = de.extend({
32261 id: t.id || "panel_" + this._$mdUtil.nextUid(),
32262 scope: this._$rootScope.$new(!0),
32263 attachTo: this._$rootElement
32264 }, this._defaultConfigOptions, t, e);
32265 var r = new l(this._config, this._$injector);
32266 return this._trackedPanels[this._config.id] = r, this._config.groupName && (de.isString(this._config.groupName) && (this._config.groupName = [this._config.groupName]), de.forEach(this._config.groupName, function(e) {
32268 })), this._config.scope.$on("$destroy", de.bind(r, r.detach)), r
32269 }, s.prototype.open = function(e, t) {
32270 var n = this.create(e, t);
32271 return n.open().then(function() {
32274 }, s.prototype._getPresetByName = function(e) {
32275 if (!this._presets[e]) throw new Error("mdPanel: The panel preset configuration that you requested does not exist. Use the $mdPanelProvider to create a preset before requesting one.");
32276 return this._presets[e]
32277 }, s.prototype.newPanelPosition = function() {
32278 return new p(this._$injector)
32279 }, s.prototype.newPanelAnimation = function() {
32280 return new c(this._$injector)
32281 }, s.prototype.newPanelGroup = function(e, t) {
32282 if (!this._groups[e]) {
32286 maxOpen: 0 < (t = t || {}).maxOpen ? t.maxOpen : 1 / 0
32288 this._groups[e] = n
32290 return this._groups[e]
32291 }, s.prototype.setGroupMaxOpen = function(e, t) {
32292 if (!this._groups[e]) throw new Error("mdPanel: Group does not exist yet. Call newPanelGroup().");
32293 this._groups[e].maxOpen = t
32294 }, s.prototype._openCountExceedsMaxOpen = function(e) {
32295 if (this._groups[e]) {
32296 var t = this._groups[e];
32297 return 0 < t.maxOpen && t.openPanels.length > t.maxOpen
32300 }, s.prototype._closeFirstOpenedPanel = function(e) {
32301 this._groups[e].openPanels[0].close()
32302 }, s.prototype._wrapTemplate = function(e) {
32303 return '<div class="md-panel-outer-wrapper"> <div class="md-panel _md-panel-offscreen">' + (e || "") + "</div></div>"
32304 }, s.prototype._wrapContentElement = function(e) {
32305 var t = de.element('<div class="md-panel-outer-wrapper">');
32306 return e.addClass("md-panel _md-panel-offscreen"), t.append(e), t
32307 }, l.interceptorTypes = {
32309 }, l.prototype.open = function() {
32311 return this._$q(function(e, t) {
32312 var n = i._done(e, i),
32313 r = i._simpleBind(i.show, i);
32314 i.attach().then(r).then(function() {
32315 i.config.groupName && de.forEach(i.config.groupName, function(e) {
32316 i._$mdPanel._openCountExceedsMaxOpen(e) && i._$mdPanel._closeFirstOpenedPanel(e)
32318 }).then(n).catch(t)
32320 }, l.prototype.close = function(o) {
32322 return this._$q(function(r, i) {
32323 a._callInterceptors(l.interceptorTypes.CLOSE).then(function() {
32324 var e = a._done(r, a),
32325 t = a._simpleBind(a.detach, a),
32326 n = a.config.onCloseSuccess || de.noop;
32327 n = de.bind(a, n, a, o), a.hide().then(t).then(e).then(n).catch(i)
32330 }, l.prototype.attach = function() {
32331 if (this.isAttached && this.panelEl) return this._$q.when(this);
32333 return this._$q(function(e, t) {
32334 var n = i._done(e, i),
32335 r = i.config.onDomAdded || de.noop;
32336 i._$q.all([i._createBackdrop(), i._createPanel().then(function(e) {
32337 return i.isAttached = !0, i._addEventListeners(), e
32338 }).catch(t)]).then(r).then(n).catch(t)
32340 }, l.prototype.detach = function() {
32341 if (!this.isAttached) return this._$q.when(this);
32343 i = r.config.onDomRemoved || de.noop;
32344 return this._restoreScroll && (this._restoreScroll(), this._restoreScroll = null), this._$q(function(e, t) {
32345 var n = r._done(e, r);
32346 r._$q.all([(r._removeEventListeners(), r._topFocusTrap && r._topFocusTrap.parentNode && r._topFocusTrap.parentNode.removeChild(r._topFocusTrap), r._bottomFocusTrap && r._bottomFocusTrap.parentNode && r._bottomFocusTrap.parentNode.removeChild(r._bottomFocusTrap), r._restoreCache.classes && (r.panelEl[0].className = r._restoreCache.classes), r.panelEl[0].style.cssText = r._restoreCache.styles || "", r._compilerCleanup(), r.panelContainer.remove(), r.isAttached = !1, r._$q.when(r)), !r._backdropRef || r._backdropRef.detach()]).then(i).then(n).catch(t)
32348 }, l.prototype.destroy = function() {
32350 this.config.groupName && de.forEach(this.config.groupName, function(e) {
32351 t.removeFromGroup(e)
32352 }), this.config.scope.$destroy(), this.config.locals = null, this.config.onDomAdded = null, this.config.onDomRemoved = null, this.config.onRemoving = null, this.config.onOpenComplete = null, this._interceptors = null
32353 }, l.prototype.show = function() {
32354 if (!this.panelContainer) return this._$q(function(e, t) {
32355 t("mdPanel: Panel does not exist yet. Call open() or attach().")
32357 if (!this.panelContainer.hasClass(a)) return this._$q.when(this);
32359 return this._$q(function(e, t) {
32360 var n = i._done(e, i),
32361 r = i.config.onOpenComplete || de.noop;
32362 i._$q.all([i._backdropRef ? i._backdropRef.show() : i, (i.panelContainer.removeClass(a), i._animateOpen()).then(function() {
32364 }, t)]).then(r).then(function() {
32365 i.config.groupName && de.forEach(i.config.groupName, function(e) {
32366 i._$mdPanel._groups[e].openPanels.push(i)
32368 }).then(n).catch(t)
32370 }, l.prototype.hide = function() {
32371 if (!this.panelContainer) return this._$q(function(e, t) {
32372 t("mdPanel: Panel does not exist yet. Call open() or attach().")
32374 if (this.panelContainer.hasClass(a)) return this._$q.when(this);
32376 return this._$q(function(e, t) {
32377 var n = i._done(e, i),
32378 r = i.config.onRemoving || de.noop;
32379 i._$q.all([i._backdropRef ? i._backdropRef.hide() : i, i._animateClose().then(r).then(function() {
32380 i.panelContainer.addClass(a)
32381 }).then(function() {
32383 i.config.groupName && de.forEach(i.config.groupName, function(e) {
32384 e = i._$mdPanel._groups[e], -1 < (t = e.openPanels.indexOf(i)) && e.openPanels.splice(t, 1)
32386 }).then(function() {
32387 var e = i.config.origin;
32389 }).catch(t)]).then(n, t)
32391 }, l.prototype.addClass = function(e, t) {
32392 if (this._$log.warn("mdPanel: The addClass method is in the process of being deprecated. Full deprecation is scheduled for the AngularJS Material 1.2 release. To achieve the same results, use the panelContainer or panelEl JQLite elements that are referenced in MdPanelRef."), !this.panelContainer) throw new Error("mdPanel: Panel does not exist yet. Call open() or attach().");
32393 t || this.panelContainer.hasClass(e) ? t && !this.panelEl.hasClass(e) && this.panelEl.addClass(e) : this.panelContainer.addClass(e)
32394 }, l.prototype.removeClass = function(e, t) {
32395 if (this._$log.warn("mdPanel: The removeClass method is in the process of being deprecated. Full deprecation is scheduled for the AngularJS Material 1.2 release. To achieve the same results, use the panelContainer or panelEl JQLite elements that are referenced in MdPanelRef."), !this.panelContainer) throw new Error("mdPanel: Panel does not exist yet. Call open() or attach().");
32396 !t && this.panelContainer.hasClass(e) ? this.panelContainer.removeClass(e) : t && this.panelEl.hasClass(e) && this.panelEl.removeClass(e)
32397 }, l.prototype.toggleClass = function(e, t) {
32398 if (this._$log.warn("mdPanel: The toggleClass method is in the process of being deprecated. Full deprecation is scheduled for the AngularJS Material 1.2 release. To achieve the same results, use the panelContainer or panelEl JQLite elements that are referenced in MdPanelRef."), !this.panelContainer) throw new Error("mdPanel: Panel does not exist yet. Call open() or attach().");
32399 t ? this.panelEl.toggleClass(e) : this.panelContainer.toggleClass(e)
32400 }, l.prototype._compile = function() {
32402 return r._$mdCompiler.compile(r.config).then(function(e) {
32404 if (t.contentElement) {
32406 r._restoreCache.styles = n[0].style.cssText, r._restoreCache.classes = n[0].className, r.panelContainer = r._$mdPanel._wrapContentElement(n), r.panelEl = n
32407 } else r.panelContainer = e.link(t.scope), r.panelEl = de.element(r.panelContainer[0].querySelector(".md-panel"));
32408 return r._compilerCleanup = e.cleanup, u(r.config.attachTo).append(r.panelContainer), r
32410 }, l.prototype._createPanel = function() {
32412 return this._$q(function(e, t) {
32413 n.config.locals || (n.config.locals = {}), (n.config.locals.mdPanelRef = n)._compile().then(function() {
32414 n.config.disableParentScroll && (n._restoreScroll = n._$mdUtil.disableScrollAround(null, n.panelContainer, {
32415 disableScrollMask: !0
32416 })), n.config.panelClass && n.panelEl.addClass(n.config.panelClass), n.config.propagateContainerEvents && (n.panelContainer.css("pointer-events", "none"), n.panelEl.css("pointer-events", "all")), n._$animate.pin && n._$animate.pin(n.panelContainer, u(n.config.attachTo)), n._configureTrapFocus(), n._addStyles().then(function() {
32421 }, l.prototype._addStyles = function() {
32423 return this._$q(function(e) {
32424 n.panelContainer.css("z-index", n.config.zIndex), n.panelEl.css("z-index", n.config.zIndex + 1);
32425 var t = function() {
32426 n._setTheming(), n.panelEl.removeClass("_md-panel-offscreen"), n.panelContainer.addClass(a), e(n)
32428 if (n.config.fullscreen) return n.panelEl.addClass("_md-panel-fullscreen"), void t();
32429 n.config.position ? n._$rootScope.$$postDigest(function() {
32430 n._updatePosition(!0), n._setTheming(), e(n)
32433 }, l.prototype._setTheming = function() {
32434 this._$mdTheming(this.panelEl), this._$mdTheming(this.panelContainer)
32435 }, l.prototype.updatePosition = function(e) {
32436 if (!this.panelContainer) throw new Error("mdPanel: Panel does not exist yet. Call open() or attach().");
32437 this.config.position = e, this._updatePosition()
32438 }, l.prototype._updatePosition = function(e) {
32439 var t = this.config.position;
32440 t && (t._setPanelPosition(this.panelEl), e && (this.panelEl.removeClass("_md-panel-offscreen"), this.panelContainer.addClass(a)), this.panelEl.css(p.absPosition.TOP, t.getTop()), this.panelEl.css(p.absPosition.BOTTOM, t.getBottom()), this.panelEl.css(p.absPosition.LEFT, t.getLeft()), this.panelEl.css(p.absPosition.RIGHT, t.getRight()))
32441 }, l.prototype._focusOnOpen = function() {
32442 if (this.config.focusOnOpen) {
32444 this._$rootScope.$$postDigest(function() {
32445 (e._$mdUtil.findFocusTarget(e.panelEl) || e.panelEl).focus()
32448 }, l.prototype._createBackdrop = function() {
32449 if (this.config.hasBackdrop) {
32450 if (!this._backdropRef) {
32451 var e = this._$mdPanel.newPanelAnimation().openFrom(this.config.attachTo).withAnimation({
32452 open: "_md-opaque-enter",
32453 close: "_md-opaque-leave"
32455 this.config.animation && e.duration(this.config.animation._rawDuration);
32458 attachTo: this.config.attachTo,
32460 panelClass: "_md-panel-backdrop",
32461 zIndex: this.config.zIndex - 1
32463 this._backdropRef = this._$mdPanel.create(t)
32465 if (!this._backdropRef.isAttached) return this._backdropRef.attach()
32467 }, l.prototype._addEventListeners = function() {
32468 this._configureEscapeToClose(), this._configureClickOutsideToClose(), this._configureScrollListener()
32469 }, l.prototype._removeEventListeners = function() {
32470 this._removeListeners && this._removeListeners.forEach(function(e) {
32472 }), this._removeListeners = []
32473 }, l.prototype._configureEscapeToClose = function() {
32474 if (this.config.escapeToClose) {
32475 var e = u(this.config.attachTo),
32478 e.keyCode === t._$mdConstant.KEY_CODE.ESCAPE && (e.stopPropagation(), e.preventDefault(), t.close(l.closeReasons.ESCAPE))
32480 this.panelContainer.on("keydown", n), e.on("keydown", n), this._removeListeners.push(function() {
32481 t.panelContainer.off("keydown", n), e.off("keydown", n)
32484 }, l.prototype._configureClickOutsideToClose = function() {
32485 if (this.config.clickOutsideToClose) {
32486 var t, n = this.config.propagateContainerEvents ? de.element(document.body) : this.panelContainer,
32492 r.config.propagateContainerEvents ? t === r.panelEl[0] || r.panelEl[0].contains(t) || r.close() : t === n[0] && e.target === n[0] && (e.stopPropagation(), e.preventDefault(), r.close(l.closeReasons.CLICK_OUTSIDE))
32494 n.on("mousedown", e), n.on("mouseup", i), this._removeListeners.push(function() {
32495 n.off("mousedown", e), n.off("mouseup", i)
32498 }, l.prototype._configureScrollListener = function() {
32499 if (!this.config.disableParentScroll) {
32500 var e = de.bind(this, this._updatePosition),
32501 t = this._$$rAF.throttle(e),
32506 this._$window.addEventListener("scroll", r, !0), this._removeListeners.push(function() {
32507 n._$window.removeEventListener("scroll", r, !0)
32510 }, l.prototype._configureTrapFocus = function() {
32511 if (this.panelEl.attr("tabIndex", "-1"), this.config.trapFocus) {
32512 var e = this.panelEl;
32513 this._topFocusTrap = n.clone()[0], this._bottomFocusTrap = n.clone()[0];
32514 var t = function() {
32517 this._topFocusTrap.addEventListener("focus", t), this._bottomFocusTrap.addEventListener("focus", t), this._removeListeners.push(this._simpleBind(function() {
32518 this._topFocusTrap.removeEventListener("focus", t), this._bottomFocusTrap.removeEventListener("focus", t)
32519 }, this)), e[0].parentNode.insertBefore(this._topFocusTrap, e[0]), e.after(this._bottomFocusTrap)
32521 }, l.prototype.updateAnimation = function(e) {
32522 this.config.animation = e, this._backdropRef && this._backdropRef.config.animation.duration(e._rawDuration)
32523 }, l.prototype._animateOpen = function() {
32524 this.panelContainer.addClass("md-panel-is-showing");
32525 var n = this.config.animation;
32526 if (!n) return this.panelContainer.addClass("_md-panel-shown"), this._$q.when(this);
32528 return this._$q(function(e) {
32529 var t = r._done(e, r);
32530 n.animateOpen(r.panelEl).then(t, function() {
32531 r._$log.warn("mdPanel: MdPanel Animations failed. Showing panel without animating."), t()
32534 }, l.prototype._animateClose = function() {
32535 var n = this.config.animation;
32536 if (!n) return this.panelContainer.removeClass("md-panel-is-showing"), this.panelContainer.removeClass("_md-panel-shown"), this._$q.when(this);
32538 return this._$q(function(e) {
32539 var t = function() {
32540 r.panelContainer.removeClass("md-panel-is-showing"), e(r)
32542 n.animateClose(r.panelEl).then(t, function() {
32543 r._$log.warn("mdPanel: MdPanel Animations failed. Hiding panel without animating."), t()
32546 }, l.prototype.registerInterceptor = function(e, t) {
32548 if (de.isString(e) ? de.isFunction(t) || (n = "Interceptor callback must be a function, instead got " + typeof t) : n = "Interceptor type must be a string, instead got " + typeof e, n) throw new Error("MdPanel: " + n);
32549 var r = this._interceptors[e] = this._interceptors[e] || [];
32550 return -1 === r.indexOf(t) && r.push(t), this
32551 }, l.prototype.removeInterceptor = function(e, t) {
32552 var n = this._interceptors[e] ? this._interceptors[e].indexOf(t) : -1;
32553 return -1 < n && this._interceptors[e].splice(n, 1), this
32554 }, l.prototype.removeAllInterceptors = function(e) {
32555 return e ? this._interceptors[e] = [] : this._interceptors = Object.create(null), this
32556 }, l.prototype._callInterceptors = function(e) {
32559 return (r._interceptors && r._interceptors[e] || []).reduceRight(function(e, t) {
32560 var n = t && de.isFunction(t.then) ? t : null;
32561 return e.then(function() {
32570 }, l.prototype._simpleBind = function(t, n) {
32571 return function(e) {
32572 return t.apply(n, e)
32574 }, l.prototype._done = function(e, t) {
32575 return function() {
32578 }, l.prototype.addToGroup = function(e) {
32579 this._$mdPanel._groups[e] || this._$mdPanel.newPanelGroup(e);
32580 var t = this._$mdPanel._groups[e];
32581 t.panels.indexOf(this) < 0 && t.panels.push(this)
32582 }, l.prototype.removeFromGroup = function(e) {
32583 if (!this._$mdPanel._groups[e]) throw new Error("mdPanel: The group " + e + " does not exist.");
32584 var t = this._$mdPanel._groups[e],
32585 n = t.panels.indexOf(this); - 1 < n && t.panels.splice(n, 1)
32586 }, l.closeReasons = {
32587 CLICK_OUTSIDE: "clickOutsideToClose",
32588 ESCAPE: "escapeToClose"
32591 ALIGN_START: "align-start",
32592 ALIGN_END: "align-end",
32593 OFFSET_START: "offset-start",
32594 OFFSET_END: "offset-end"
32597 ALIGN_TOPS: "align-tops",
32598 ALIGN_BOTTOMS: "align-bottoms",
32601 }, p.absPosition = {
32606 }, p.viewportMargin = 8, p.prototype.absolute = function() {
32607 return this._absolute = !0, this
32608 }, p.prototype._setPosition = function(e, t) {
32609 if (e === p.absPosition.RIGHT || e === p.absPosition.LEFT) this._left = this._right = "";
32611 if (e !== p.absPosition.BOTTOM && e !== p.absPosition.TOP) {
32612 var n = Object.keys(p.absPosition).join().toLowerCase();
32613 throw new Error("mdPanel: Position must be one of " + n + ".")
32615 this._top = this._bottom = ""
32617 return this["_" + e] = de.isString(t) ? t : "0", this
32618 }, p.prototype.top = function(e) {
32619 return this._setPosition(p.absPosition.TOP, e)
32620 }, p.prototype.bottom = function(e) {
32621 return this._setPosition(p.absPosition.BOTTOM, e)
32622 }, p.prototype.start = function(e) {
32623 var t = this._isRTL ? p.absPosition.RIGHT : p.absPosition.LEFT;
32624 return this._setPosition(t, e)
32625 }, p.prototype.end = function(e) {
32626 var t = this._isRTL ? p.absPosition.LEFT : p.absPosition.RIGHT;
32627 return this._setPosition(t, e)
32628 }, p.prototype.left = function(e) {
32629 return this._setPosition(p.absPosition.LEFT, e)
32630 }, p.prototype.right = function(e) {
32631 return this._setPosition(p.absPosition.RIGHT, e)
32632 }, p.prototype.centerHorizontally = function() {
32633 return this._left = "50%", this._right = "", this._translateX = ["-50%"], this
32634 }, p.prototype.centerVertically = function() {
32635 return this._top = "50%", this._bottom = "", this._translateY = ["-50%"], this
32636 }, p.prototype.center = function() {
32637 return this.centerHorizontally().centerVertically()
32638 }, p.prototype.relativeTo = function(e) {
32639 return this._absolute = !1, this._relativeToEl = u(e), this
32640 }, p.prototype.addPanelPosition = function(e, t) {
32641 if (!this._relativeToEl) throw new Error("mdPanel: addPanelPosition can only be used with relative positioning. Set relativeTo first.");
32642 return this._validateXPosition(e), this._validateYPosition(t), this._positions.push({
32646 }, p.prototype._validateYPosition = function(e) {
32648 for (var t, n = Object.keys(p.yPosition), r = [], i = 0; t = n[i]; i++) {
32649 var o = p.yPosition[t];
32650 if (r.push(o), o === e) return
32652 throw new Error("mdPanel: Panel y position only accepts the following values:\n" + r.join(" | "))
32654 }, p.prototype._validateXPosition = function(e) {
32656 for (var t, n = Object.keys(p.xPosition), r = [], i = 0; t = n[i]; i++) {
32657 var o = p.xPosition[t];
32658 if (r.push(o), o === e) return
32660 throw new Error("mdPanel: Panel x Position only accepts the following values:\n" + r.join(" | "))
32662 }, p.prototype.withOffsetX = function(e) {
32663 return this._translateX.push(d(e)), this
32664 }, p.prototype.withOffsetY = function(e) {
32665 return this._translateY.push(d(e)), this
32666 }, p.prototype.getTop = function() {
32668 }, p.prototype.getBottom = function() {
32669 return this._bottom
32670 }, p.prototype.getLeft = function() {
32672 }, p.prototype.getRight = function() {
32674 }, p.prototype.getTransform = function() {
32675 return (this._reduceTranslateValues("translateX", this._translateX) + " " + this._reduceTranslateValues("translateY", this._translateY)).trim()
32676 }, p.prototype._setTransform = function(e) {
32677 return e.css(this._$mdConstant.CSS.TRANSFORM, this.getTransform())
32678 }, p.prototype._isOnscreen = function(e) {
32679 var t = parseInt(this.getLeft()),
32680 n = parseInt(this.getTop());
32681 if (this._translateX.length || this._translateY.length) {
32682 var r = function(e, t) {
32683 var n = getComputedStyle(e[0] || e)[t],
32684 r = n.indexOf("("),
32685 i = n.lastIndexOf(")"),
32690 if (-1 < r && -1 < i) {
32691 var a = n.substring(r + 1, i).split(", ").slice(-2);
32692 o.x = parseInt(a[0]), o.y = parseInt(a[1])
32695 }(e, this._$mdConstant.CSS.TRANSFORM);
32698 var i = t + e[0].offsetWidth,
32699 o = n + e[0].offsetHeight;
32700 return 0 <= t && 0 <= n && o <= this._$window.innerHeight && i <= this._$window.innerWidth
32701 }, p.prototype.getActualPosition = function() {
32702 return this._actualPosition
32703 }, p.prototype._reduceTranslateValues = function(n, e) {
32704 return e.map(function(e) {
32705 var t = de.isFunction(e) ? d(e(this)) : e;
32706 return n + "(" + t + ")"
32708 }, p.prototype._setPanelPosition = function(e) {
32709 if (e.removeClass("_md-panel-position-adjusted"), this._absolute) this._setTransform(e);
32711 if (this._actualPosition) return this._calculatePanelPosition(e, this._actualPosition), this._setTransform(e), void this._constrainToViewport(e);
32712 for (var t = 0; t < this._positions.length; t++)
32713 if (this._actualPosition = this._positions[t], this._calculatePanelPosition(e, this._actualPosition), this._setTransform(e), this._isOnscreen(e)) return;
32714 this._constrainToViewport(e)
32716 }, p.prototype._constrainToViewport = function(e) {
32717 var t = p.viewportMargin,
32720 if (this.getTop()) {
32721 var i = parseInt(this.getTop()),
32722 o = e[0].offsetHeight + i,
32723 a = this._$window.innerHeight;
32724 i < t ? this._top = t + "px" : a < o && (this._top = i - (o - a + t) + "px")
32726 if (this.getLeft()) {
32727 var s = parseInt(this.getLeft()),
32728 l = e[0].offsetWidth + s,
32729 c = this._$window.innerWidth;
32730 s < t ? this._left = t + "px" : c < l && (this._left = s - (l - c + t) + "px")
32732 e.toggleClass("_md-panel-position-adjusted", this._top !== n || this._left !== r)
32733 }, p.prototype._reverseXPosition = function(e) {
32734 if (e === p.xPosition.CENTER) return e;
32735 return -1 < e.indexOf("start") ? e.replace("start", "end") : e.replace("end", "start")
32736 }, p.prototype._bidi = function(e) {
32737 return this._isRTL ? this._reverseXPosition(e) : e
32738 }, p.prototype._calculatePanelPosition = function(e, t) {
32739 var n = e[0].getBoundingClientRect(),
32740 r = Math.max(n.width, e[0].clientWidth),
32741 i = Math.max(n.height, e[0].clientHeight),
32742 o = this._relativeToEl[0].getBoundingClientRect(),
32746 switch (this._bidi(t.x)) {
32747 case p.xPosition.OFFSET_START:
32748 this._left = a - r + "px";
32750 case p.xPosition.ALIGN_END:
32751 this._left = s - r + "px";
32753 case p.xPosition.CENTER:
32754 var c = a + .5 * l - .5 * r;
32755 this._left = c + "px";
32757 case p.xPosition.ALIGN_START:
32758 this._left = a + "px";
32760 case p.xPosition.OFFSET_END:
32761 this._left = s + "px"
32767 case p.yPosition.ABOVE:
32768 this._top = u - i + "px";
32770 case p.yPosition.ALIGN_BOTTOMS:
32771 this._top = d - i + "px";
32773 case p.yPosition.CENTER:
32774 var h = u + .5 * f - .5 * i;
32775 this._top = h + "px";
32777 case p.yPosition.ALIGN_TOPS:
32778 this._top = u + "px";
32780 case p.yPosition.BELOW:
32781 this._top = d + "px"
32784 SLIDE: "md-panel-animate-slide",
32785 SCALE: "md-panel-animate-scale",
32786 FADE: "md-panel-animate-fade"
32787 }, c.prototype.openFrom = function(e) {
32788 return e = e.target ? e.target : e, this._openFrom = this._getPanelAnimationTarget(e), this._closeTo || (this._closeTo = this._openFrom), this
32789 }, c.prototype.closeTo = function(e) {
32790 return this._closeTo = this._getPanelAnimationTarget(e), this
32791 }, c.prototype.duration = function(e) {
32792 return e && (de.isNumber(e) ? this._openDuration = this._closeDuration = t(e) : de.isObject(e) && (this._openDuration = t(e.open), this._closeDuration = t(e.close))), this._rawDuration = e, this;
32795 if (de.isNumber(e)) return e / 1e3
32797 }, c.prototype._getPanelAnimationTarget = function(e) {
32798 return de.isDefined(e.top) || de.isDefined(e.left) ? {
32804 } : this._getBoundingClientRect(u(e))
32805 }, c.prototype.withAnimation = function(e) {
32806 return this._animationClass = e, this
32807 }, c.prototype.animateOpen = function(e) {
32808 var t = this._$mdUtil.dom.animator;
32809 this._fixBounds(e);
32811 r = e[0].style.transform || "",
32812 i = t.toTransformCss(r),
32813 o = t.toTransformCss(r);
32814 switch (this._animationClass) {
32815 case c.animation.SLIDE:
32816 e.css("opacity", "1"), n = {
32817 transitionInClass: "_md-panel-animate-enter"
32819 var a = t.calculateSlideToOrigin(e, this._openFrom) || "";
32820 i = t.toTransformCss(a + " " + r);
32822 case c.animation.SCALE:
32824 transitionInClass: "_md-panel-animate-enter"
32826 var s = t.calculateZoomToOrigin(e, this._openFrom) || "";
32827 i = t.toTransformCss(r + " " + s);
32829 case c.animation.FADE:
32831 transitionInClass: "_md-panel-animate-enter"
32835 n = de.isString(this._animationClass) ? {
32836 transitionInClass: this._animationClass
32838 transitionInClass: this._animationClass.open,
32839 transitionOutClass: this._animationClass.close
32842 return n.duration = this._openDuration, t.translate3d(e, i, o, n)
32843 }, c.prototype.animateClose = function(e) {
32844 var t = this._$mdUtil.dom.animator,
32846 r = e[0].style.transform || "",
32847 i = t.toTransformCss(r),
32848 o = t.toTransformCss(r);
32849 switch (this._animationClass) {
32850 case c.animation.SLIDE:
32851 e.css("opacity", "1"), n = {
32852 transitionInClass: "_md-panel-animate-leave"
32854 var a = t.calculateSlideToOrigin(e, this._closeTo) || "";
32855 o = t.toTransformCss(a + " " + r);
32857 case c.animation.SCALE:
32859 transitionInClass: "_md-panel-animate-scale-out _md-panel-animate-leave"
32861 var s = t.calculateZoomToOrigin(e, this._closeTo) || "";
32862 o = t.toTransformCss(r + " " + s);
32864 case c.animation.FADE:
32866 transitionInClass: "_md-panel-animate-fade-out _md-panel-animate-leave"
32870 n = de.isString(this._animationClass) ? {
32871 transitionOutClass: this._animationClass
32873 transitionInClass: this._animationClass.close,
32874 transitionOutClass: this._animationClass.open
32877 return n.duration = this._closeDuration, t.translate3d(e, i, o, n)
32878 }, c.prototype._fixBounds = function(e) {
32879 var t = e[0].offsetWidth,
32880 n = e[0].offsetHeight;
32881 this._openFrom && null == this._openFrom.bounds.height && (this._openFrom.bounds.height = n), this._openFrom && null == this._openFrom.bounds.width && (this._openFrom.bounds.width = t), this._closeTo && null == this._closeTo.bounds.height && (this._closeTo.bounds.height = n), this._closeTo && null == this._closeTo.bounds.width && (this._closeTo.bounds.width = t)
32882 }, c.prototype._getBoundingClientRect = function(e) {
32883 if (e instanceof de.element) return {
32885 bounds: e[0].getBoundingClientRect()
32888 }(), de.module("material.components.progressCircular", ["material.core"]),
32890 function e(_, $, s, w, h, e) {
32891 var E = _.requestAnimationFrame || _.webkitRequestAnimationFrame || de.noop,
32892 p = _.cancelAnimationFrame || _.webkitCancelAnimationFrame || _.webkitCancelRequestAnimationFrame || de.noop,
32894 C = "indeterminate",
32895 k = "_md-progress-circular-disabled",
32896 x = "md-mode-indeterminate";
32904 template: '<svg xmlns="http://www.w3.org/2000/svg"><path fill="none"/></svg>',
32905 compile: function(e, t) {
32907 "aria-valuemin": 0,
32908 "aria-valuemax": 100,
32909 role: "progressbar"
32910 }), de.isUndefined(t.mdMode)) {
32911 var n = t.hasOwnProperty("value") ? m : C;
32912 t.$set("mdMode", n)
32913 } else t.$set("mdMode", t.mdMode.trim());
32918 function r(g, l, c) {
32919 var v, e, t = l[0],
32920 a = de.element(t.querySelector("svg")),
32921 b = de.element(t.querySelector("path")),
32922 n = $.startIndeterminate,
32923 r = $.endIndeterminate,
32927 function u(n, e, t, r, i, o) {
32931 c = S(g.mdDiameter),
32934 f = r || $.duration,
32935 h = -90 * (i || 0),
32939 b.attr("stroke-dashoffset", M(c, u, e, p)), b.attr("transform", "rotate(" + h + " " + c / 2 + " " + c / 2 + ")")
32941 e === n ? m(e) : v = E(function e() {
32942 var t = _.Math.max(0, _.Math.min(w.now() - s, f));
32943 m(d(t, n, l, f)), a === y && t < f && (v = E(e))
32948 u(n, r, $.easeFnIndeterminate, $.durationIndeterminate, i, 75), i = ++i % 4
32952 e || (e = h(o, $.durationIndeterminate, 0, !1), o(), l.addClass(x).removeAttr("aria-valuenow"))
32956 e && (h.cancel(e), e = null, l.removeClass(x))
32958 s(l), l.toggleClass(k, c.hasOwnProperty("disabled")), g.mdMode === C && d(), g.$on("$destroy", function() {
32960 }), g.$watchGroup(["value", "mdMode", function() {
32961 var e = t.disabled;
32962 return !0 === e || !1 === e ? e : de.isDefined(l.attr("disabled"))
32963 }], function(e, t) {
32968 if (r !== t[2] && l.toggleClass(k, !!r), r) f();
32969 else if (n !== m && n !== C && (n = C, c.$set("mdMode", n)), n === C) t[1] === m && (o = D(i = S(g.mdDiameter)), b.attr("d", T(i, o, !0)), b.attr("stroke-dasharray", (i - o) * _.Math.PI * .75)), d();
32973 f(), t[1] === C && (o = D(i = S(g.mdDiameter)), b.attr("d", T(i, o, !1)), b.attr("stroke-dasharray", (i - o) * _.Math.PI)), l.attr("aria-valuenow", a), u(s, a)
32975 }), g.$watch("mdDiameter", function(e) {
32984 a[0].setAttribute("viewBox", "0 0 " + t + " " + t), a.css(o).css("transform-origin", i + " " + i + " " + i), l.css(o), b.attr("stroke-width", n), b.attr("stroke-linecap", "square"), g.mdMode == C ? (b.attr("d", T(t, n, !0)), b.attr("stroke-dasharray", (t - n) * _.Math.PI * .75), b.attr("stroke-dashoffset", M(t, n, 1, 75))) : (b.attr("d", T(t, n, !1)), b.attr("stroke-dasharray", (t - n) * _.Math.PI), b.attr("stroke-dashoffset", M(t, n, 0, 100)), u(r, r))
32988 function T(e, t, n) {
32993 return "M" + o + "A" + a + "," + a + " 0 1 1 " + (i + "," + r) + (n ? "" : "A" + a + "," + a + " 0 0 1 " + o)
32996 function M(e, t, n, r) {
32997 return (e - t) * _.Math.PI * (3 * (r || 100) / 100 - n / 100)
33001 return _.Math.max(0, _.Math.min(e || 0, 100))
33005 var t = $.progressSize;
33007 var n = parseFloat(e);
33008 return e.lastIndexOf("%") === e.length - 1 && (n = n / 100 * t), n
33014 return $.strokeWidth / 100 * e
33017 e.$inject = ["$window", "$mdProgressCircular", "$mdTheming", "$mdUtil", "$interval", "$log"], de.module("material.components.progressCircular").directive("mdProgressCircular", e)
33018 }(), de.module("material.components.progressCircular").provider("$mdProgressCircular", function() {
33024 durationIndeterminate: 1333,
33025 startIndeterminate: 1,
33026 endIndeterminate: 149,
33027 easeFnIndeterminate: n,
33034 configure: function(e) {
33035 return t = de.extend(t, e || {})
33042 function e(e, t, n, r) {
33043 return n * e / r + t
33046 function n(e, t, n, r) {
33047 var i = (e /= r) * e,
33049 return t + n * (6 * o * i + -15 * i * i + 10 * o)
33053 function e(d, f, e) {
33054 var h = "determinate",
33055 p = "indeterminate",
33058 v = "_md-progress-linear-disabled";
33061 template: '<div class="md-container"><div class="md-dashed"></div><div class="md-bar md-bar1"></div><div class="md-bar md-bar2"></div></div>',
33062 compile: function(e, t, n) {
33063 return e.attr("aria-valuemin", 0), e.attr("aria-valuemax", 100), e.attr("role", "progressbar"), r
33067 function r(e, n, r) {
33070 var i = r.hasOwnProperty("disabled"),
33071 o = f.dom.animator.toCss,
33072 a = de.element(n[0].querySelector(".md-bar1")),
33073 s = de.element(n[0].querySelector(".md-bar2")),
33074 l = de.element(n[0].querySelector(".md-container"));
33077 var e = (r.mdMode || "").trim();
33078 if (e) switch (e) {
33092 var n = f.supplant("translateX({0}%) scale({1},1)", [(t - 100) / 2, t / 100]),
33096 de.element(e).css(r)
33099 n.attr("md-mode", c()).toggleClass(v, i),
33101 if (de.isUndefined(r.mdMode)) {
33102 var e = de.isDefined(r.value),
33104 n.attr("md-mode", t), r.mdMode = t
33106 }(), r.$observe("value", function(e) {
33108 n.attr("aria-valuenow", t), c() != g && u(s, t)
33109 }), r.$observe("mdBufferValue", function(e) {
33111 }), r.$observe("disabled", function(e) {
33112 i = !0 === e || !1 === e ? !!e : de.isDefined(e), n.toggleClass(v, i), l.toggleClass(t, !i)
33113 }), r.$observe("mdMode", function(e) {
33114 switch (t && l.removeClass(t), e) {
33119 l.addClass(t = "md-mode-" + e);
33122 l.addClass(t = "md-mode-" + p)
33128 return Math.max(0, Math.min(e || 0, 100))
33131 e.$inject = ["$mdTheming", "$mdUtil", "$log"], de.module("material.components.progressLinear", ["material.core"]).directive("mdProgressLinear", e)
33134 function e(s, l, c, u) {
33135 return e.prototype = {
33136 init: function(e) {
33137 this._ngModelCtrl = e, this._ngModelCtrl.$render = de.bind(this, this.render)
33140 this._radioButtonRenderFns.push(e)
33142 remove: function(e) {
33143 var t = this._radioButtonRenderFns.indexOf(e); - 1 !== t && this._radioButtonRenderFns.splice(t, 1)
33145 render: function() {
33146 this._radioButtonRenderFns.forEach(function(e) {
33150 setViewValue: function(e, t) {
33151 this._ngModelCtrl.$setViewValue(e, t), this.render()
33153 getViewValue: function() {
33154 return this._ngModelCtrl.$viewValue
33156 selectNext: function() {
33157 return t(this.$element, 1)
33159 selectPrevious: function() {
33160 return t(this.$element, -1)
33162 setActiveDescendant: function(e) {
33163 this.$element.attr("aria-activedescendant", e)
33165 isDisabled: function() {
33166 return this.$element[0].hasAttribute("disabled")
33170 controller: ["$element", e],
33171 require: ["mdRadioGroup", "?ngModel"],
33173 pre: function(t, r, e, n) {
33174 r.addClass("_md"), c(r);
33176 o = n[1] || s.fakeNgModel();
33179 r.hasClass("md-focused") || r.addClass("md-focused")
33181 i.init(o), t.mouseActive = !1, r.attr({
33182 role: "radiogroup",
33183 tabIndex: r.attr("tabindex") || "0"
33184 }).on("keydown", function(e) {
33185 var t = e.which || e.keyCode;
33186 if (t != l.KEY_CODE.ENTER && e.currentTarget != e.target) return;
33188 case l.KEY_CODE.LEFT_ARROW:
33189 case l.KEY_CODE.UP_ARROW:
33190 e.preventDefault(), i.selectPrevious(), a();
33192 case l.KEY_CODE.RIGHT_ARROW:
33193 case l.KEY_CODE.DOWN_ARROW:
33194 e.preventDefault(), i.selectNext(), a();
33196 case l.KEY_CODE.ENTER:
33197 var n = de.element(s.getClosest(r[0], "form"));
33198 0 < n.length && n.triggerHandler("submit")
33200 }).on("mousedown", function(e) {
33201 t.mouseActive = !0, u(function() {
33204 }).on("focus", function() {
33205 !1 === t.mouseActive && i.$element.addClass("md-focused")
33206 }).on("blur", function() {
33207 i.$element.removeClass("md-focused")
33214 this._radioButtonRenderFns = [], this.$element = e
33218 var n = s.iterator(e[0].querySelectorAll("md-radio-button"), !0);
33220 var r = e[0].querySelector("md-radio-button.md-checked"),
33221 i = n[t < 0 ? "previous" : "next"](r, function(e) {
33222 return !de.element(e).attr("disabled")
33224 de.element(i).triggerHandler("click")
33229 function t(c, u, d) {
33230 var f = "md-checked";
33233 require: "^mdRadioGroup",
33235 template: '<div class="md-container" md-ink-ripple md-ink-ripple-checkbox><div class="md-off"></div><div class="md-on"></div></div><div ng-transclude class="md-label"></div>',
33236 link: function(t, n, r, i) {
33238 d(n), e = n, e.attr({
33239 id: r.id || "radio_" + u.nextUid(),
33241 "aria-checked": "false"
33242 }), c.expectWithText(e, "aria-label"), r.ngValue ? u.nextTick(a, !1) : a();
33246 if (!i) throw "RadioButton: No RadioGroupController could be found.";
33247 i.add(l), r.$observe("value", l), n.on("click", s).on("$destroy", function() {
33253 n[0].hasAttribute("disabled") || i.isDisabled() || t.$apply(function() {
33254 i.setViewValue(r.value, e && e.type)
33259 var e = i.getViewValue() == r.value;
33260 e !== o && ("md-radio-group" !== n[0].parentNode.nodeName.toLowerCase() && n.parent().toggleClass(f, e), e && i.setActiveDescendant(n.attr("id")), o = e, n.attr("aria-checked", e).toggleClass(f, e))
33265 e.$inject = ["$mdUtil", "$mdConstant", "$mdTheming", "$timeout"], t.$inject = ["$mdAria", "$mdUtil", "$mdTheming"], de.module("material.components.radioButton", ["material.core"]).directive("mdRadioGroup", e).directive("mdRadioButton", t)
33268 e.$inject = ["$mdSelect", "$mdUtil", "$mdConstant", "$mdTheming", "$mdAria", "$parse", "$sce", "$injector"], t.$inject = ["$parse", "$mdUtil", "$mdConstant", "$mdTheming"], n.$inject = ["$mdButtonInkRipple", "$mdUtil", "$mdTheming"], r.$inject = ["$$interimElementProvider"];
33271 u = de.element('<div class="md-container"><div class="md-icon"></div></div>');
33273 function e(M, A, S, D, O, N, I, e) {
33274 var t = S.KEY_CODE;
33275 t.SPACE, t.ENTER, t.UP_ARROW, t.DOWN_ARROW;
33278 require: ["^?mdInputContainer", "mdSelect", "ngModel", "?^form"],
33279 compile: function(e, t) {
33280 var n = de.element("<md-select-value><span></span></md-select-value>");
33281 n.append('<span class="md-select-icon" aria-hidden="true"></span>'), n.addClass("md-select-value"), n[0].hasAttribute("id") || n.attr("id", "select_value_label_" + A.nextUid());
33282 var r = e.find("md-content");
33283 r.length || e.append(de.element("<md-content>").append(e.contents()));
33284 r.attr("role", "presentation"), t.mdOnOpen && (e.find("md-content").prepend(de.element('<div> <md-progress-circular md-mode="indeterminate" ng-if="$$loadingAsyncDone === false" md-diameter="25px"></md-progress-circular></div>')), e.find("md-option").attr("ng-show", "$$loadingAsyncDone"));
33286 var i = de.element('<select class="md-visually-hidden"></select>');
33289 "aria-hidden": "true",
33292 var o = e.find("md-option");
33293 de.forEach(o, function(e) {
33294 var t = de.element("<option>" + e.innerHTML + "</option>");
33295 e.hasAttribute("ng-value") ? t.attr("ng-value", e.getAttribute("ng-value")) : e.hasAttribute("value") && t.attr("value", e.getAttribute("value")), i.append(t)
33296 }), i.append('<option ng-value="' + t.ngModel + '" selected></option>'), e.parent().append(i)
33298 var T = A.parseAttributeBoolean(t.multiple),
33299 a = T ? "multiple" : "",
33300 s = '<div class="md-select-menu-container" aria-hidden="true" role="presentation"><md-select-menu role="presentation" {0}>{1}</md-select-menu></div>';
33301 s = A.supplant(s, [a, e.html()]), e.empty().append(n), e.append(s), t.tabindex || t.$set("tabindex", 0);
33302 return function(i, n, o, e) {
33303 var t, r, a, s, l, c = !0,
33308 p = n.find("md-select-value"),
33309 m = de.isDefined(o.readonly),
33310 g = A.parseAttributeBoolean(o.mdNoAsterisk);
33311 if (g && n.addClass("md-no-asterisk"), u) {
33312 var v = u.isErrorGetter || function() {
33313 return f.$invalid && (f.$touched || h && h.$submitted)
33315 if (u.input && n.find("md-select-header").find("input")[0] !== u.input[0]) throw new Error("<md-input-container> can only have *one* child <input>, <textarea> or <select> element!");
33316 u.input = n, u.label || O.expect(n, "aria-label", n.attr("placeholder")), i.$watch(v, u.setInvalid)
33318 if (a = de.element(n[0].querySelector(".md-select-menu-container")), s = i, o.mdContainerClass) {
33319 var e = a[0].getAttribute("class") + " " + o.mdContainerClass;
33320 a[0].setAttribute("class", e)
33321 }(l = a.find("md-select-menu").controller("mdSelectMenu")).init(f, o.ngModel), n.on("$destroy", function() {
33325 var b, y = f.$render;
33326 if (f.$render = function() {
33328 }, o.$observe("placeholder", f.$render), u && u.label && o.$observe("required", function(e) {
33329 u.label.toggleClass("md-required", e && !g)
33330 }), d.setLabelText = function(e) {
33331 d.setIsPlaceholder(!e);
33333 if (o.mdSelectedText && o.mdSelectedHtml) throw Error("md-select cannot have both `md-selected-text` and `md-selected-html`");
33334 if (o.mdSelectedText || o.mdSelectedHtml) e = N(o.mdSelectedText || o.mdSelectedHtml)(i), t = !0;
33336 var n = o.placeholder || (u && u.label ? u.label.text() : "");
33337 e = n || "", t = !0
33339 var r = p.children().eq(0);
33340 o.mdSelectedHtml ? r.html(I.getTrustedHtml(e)) : t ? r.text(e) : r.html(e)
33341 }, d.setIsPlaceholder = function(e) {
33342 e ? (p.addClass("md-select-placeholder"), u && u.label && u.label.addClass("md-placeholder")) : (p.removeClass("md-select-placeholder"), u && u.label && u.label.removeClass("md-placeholder"))
33344 n.on("focus", function(e) {
33345 u && u.setFocused(!0)
33346 }), n.on("blur", function(e) {
33347 c && (c = !1, s._mdSelectIsOpen && e.stopImmediatePropagation());
33348 u && u.setFocused(!1), C()
33353 a && (l = l || a.find("md-select-menu").controller("mdSelectMenu"), d.setLabelText(l.selectedLabels()))
33358 var e = l.selectedLabels({
33361 n.attr("aria-label", e.length ? r + ": " + e : r)
33364 d.triggerClose = function() {
33366 }, i.$$postDigest(function() {
33368 var e = n.attr("aria-label") || n.attr("placeholder");
33369 !e && u && u.label && (e = u.label.text());
33370 r = e, O.expect(n, "aria-label", e)
33372 }), i.$watch(function() {
33373 return l.selectedLabels()
33374 }, _), o.$observe("ngMultiple", function(e) {
33377 b = i.$watch(function() {
33379 }, function(e, t) {
33380 e === fe && t === fe || (e ? n.attr("multiple", "multiple") : n.removeAttr("multiple"), n.attr("aria-multiselectable", e ? "true" : "false"), a && (l.setMultiple(e), y = f.$render, f.$render = function() {
33384 }), o.$observe("disabled", function(e) {
33385 de.isString(e) && (e = !0), t !== fe && t === e || ((t = e) ? n.attr({
33386 "aria-disabled": "true"
33387 }).removeAttr("tabindex").off("click", x).off("keydown", k) : n.attr({
33388 tabindex: o.tabindex,
33389 "aria-disabled": "false"
33390 }).on("click", x).on("keydown", k))
33391 }), o.hasOwnProperty("disabled") || o.hasOwnProperty("ngDisabled") || (n.attr({
33392 "aria-disabled": "false"
33393 }), n.on("click", x), n.on("keydown", k));
33396 "aria-expanded": "false",
33397 "aria-multiselectable": T && !o.ngMultiple ? "true" : "false"
33399 n[0].hasAttribute("id") || (w.id = "select_" + A.nextUid());
33400 var E = "select_container_" + A.nextUid();
33403 A.nextTick(function() {
33404 u && u.setHasValue(0 < l.selectedLabels().length || (n[0].validity || {}).badInput)
33409 if (S.isNavigationKey(e)) e.preventDefault(), x();
33410 else if (L(e, S)) {
33411 e.preventDefault();
33412 var t = l.optNodeForKeyboardSearch(e);
33413 if (!t || t.hasAttribute("disabled")) return;
33414 var n = de.element(t).controller("mdOption");
33415 l.isMultiple || l.deselect(Object.keys(l.selected)[0]), l.select(n.hashKey, n.value), l.refreshViewValue()
33420 s._mdSelectIsOpen = !0, n.attr("aria-expanded", "true"), M.show({
33427 preserveElement: !0,
33429 loadingAsync: !!o.mdOnOpen && (i.$eval(o.mdOnOpen) || !0)
33430 }).finally(function() {
33431 s._mdSelectIsOpen = !1, n.attr("aria-expanded", "false"), f.$setTouched()
33434 a.attr("id", E), n.find("md-select-menu").length || (w["aria-owns"] = E), n.attr(w), i.$on("$destroy", function() {
33435 M.destroy().finally(function() {
33436 u && (u.setFocused(!1), u.setHasValue(!1), u.input = null), f.$setTouched()
33441 controller: function() {}
33445 function t(h, p, e, i) {
33448 require: ["mdSelectMenu"],
33449 scope: !(t.$inject = ["$scope", "$attrs", "$element"]),
33452 pre: function(o, e, t, n) {
33456 var t = p.getClosest(e.target, "md-option"),
33457 n = t && de.element(t).data("$mdOptionController");
33459 if (t.hasAttribute("disabled")) return e.stopImmediatePropagation(), !1;
33460 var r = a.hashGetter(n.value),
33461 i = de.isDefined(a.selected[r]);
33462 o.$apply(function() {
33463 a.isMultiple ? i ? a.deselect(r) : a.select(r, n.value) : i || (a.deselect(Object.keys(a.selected)[0]), a.select(r, n.value)), a.refreshViewValue()
33467 e.addClass("_md"), i(e), e.on("click", r), e.on("keypress", function(e) {
33468 13 != e.keyCode && 32 != e.keyCode || r(e)
33474 function t(o, e, i) {
33476 s.isMultiple = de.isDefined(e.multiple), s.selected = {}, s.options = {}, o.$watchCollection(function() {
33479 s.ngModel.$render()
33480 }), s.setMultiple = function(e) {
33482 if (a = a || t.$isEmpty, s.isMultiple = e, s.isMultiple) {
33485 n ? d() : p.nextTick(function() {
33489 t.$validators["md-multiple"] = i, t.$render = r, o.$watchCollection(s.modelBinding, function(e) {
33491 }), t.$isEmpty = function(e) {
33492 return !e || 0 === e.length
33494 } else delete t.$validators["md-multiple"], t.$render = f;
33497 return de.isArray(e || t || [])
33500 var r, l, c, u = "";
33503 var n = s.ngModel.$modelValue || s.ngModel.$viewValue || [];
33504 if (de.isArray(n)) {
33505 var e = Object.keys(s.selected),
33506 t = n.map(s.hashGetter);
33507 e.filter(function(e) {
33508 return -1 === t.indexOf(e)
33509 }).forEach(s.deselect), t.forEach(function(e, t) {
33516 var e = s.ngModel.$viewValue || s.ngModel.$modelValue;
33517 Object.keys(s.selected).forEach(s.deselect), s.select(s.hashGetter(e), e)
33519 s.optNodeForKeyboardSearch = function(e) {
33520 r && clearTimeout(r), r = setTimeout(function() {
33521 u = "", l = c = r = fe
33522 }, 300), u += e.key;
33523 var t = new RegExp("^" + u, "i");
33524 l || (l = i.find("md-option"), c = new Array(l.length), de.forEach(l, function(e, t) {
33525 c[t] = e.textContent.trim()
33527 for (var n = 0; n < c.length; ++n)
33528 if (t.test(c[n])) return l[n]
33529 }, s.init = function(e, t) {
33530 s.ngModel = e, s.modelBinding = t, s.ngModel.$isEmpty = function(e) {
33531 return !s.options[s.hashGetter(e)]
33533 var n = p.getModelOption(e, "trackBy");
33537 s.hashGetter = function(e, t) {
33538 return r.$value = e, i(t || o, r)
33540 } else s.hashGetter = function(e) {
33541 return de.isObject(e) ? "object_" + (e.$$mdSelectId || (e.$$mdSelectId = ++m)) : e
33543 s.setMultiple(s.isMultiple)
33544 }, s.selectedLabels = function(e) {
33545 var t, n = (e = e || {}).mode || "html",
33546 r = p.nodesToArray(i[0].querySelectorAll("md-option[selected]"));
33547 return r.length ? ("html" == n ? t = function(e) {
33548 if (e.hasAttribute("md-option-empty")) return "";
33549 var t = e.innerHTML,
33550 n = e.querySelector(".md-ripple-container");
33551 n && (t = t.replace(n.outerHTML, ""));
33552 var r = e.querySelector(".md-container");
33553 return r && (t = t.replace(r.outerHTML, "")), t
33554 } : "aria" == n && (t = function(e) {
33555 return e.hasAttribute("aria-label") ? e.getAttribute("aria-label") : e.textContent
33556 }), p.uniq(r.map(t)).join(", ")) : ""
33557 }, s.select = function(e, t) {
33558 var n = s.options[e];
33559 n && n.setSelected(!0), s.selected[e] = t
33560 }, s.deselect = function(e) {
33561 var t = s.options[e];
33562 t && t.setSelected(!1), delete s.selected[e]
33563 }, s.addOption = function(e, t) {
33564 if (de.isDefined(s.options[e])) throw new Error('Duplicate md-option values are not allowed in a select. Duplicate value "' + t.value + '" found.');
33565 s.options[e] = t, de.isDefined(s.selected[e]) && (s.select(e, t.value), de.isDefined(s.ngModel.$$rawModelValue) && s.hashGetter(s.ngModel.$$rawModelValue) === e && s.ngModel.$validate(), s.refreshViewValue())
33566 }, s.removeOption = function(e) {
33567 delete s.options[e]
33568 }, s.refreshViewValue = function() {
33570 for (var n in s.selected)(e = s.options[n]) ? t.push(e.value) : t.push(s.selected[n]);
33571 var r = p.getModelOption(s.ngModel, "trackBy"),
33572 i = s.isMultiple ? t : t[0],
33573 o = s.ngModel.$modelValue;
33574 (r ? de.equals(o, i) : o + "" === i) || (s.ngModel.$setViewValue(i), s.ngModel.$render())
33579 function n(r, i, c) {
33580 return e.$inject = ["$element"], {
33582 require: ["mdOption", "^^mdSelectMenu"],
33584 compile: function(e, t) {
33585 e.append(de.element('<div class="md-text">').append(e.contents())), e.attr("tabindex", t.tabindex || "0"), n = t, r = n.value, i = n.ngValue, r || i || e.attr("md-option-empty", "");
33591 function o(o, t, e, n) {
33595 function l(e, t, n) {
33596 if (s.hashGetter) {
33597 var r = s.hashGetter(t, o),
33598 i = s.hashGetter(e, o);
33599 a.hashKey = i, a.value = e, s.removeOption(r, a), s.addOption(i, a)
33600 } else n || o.$$postDigest(function() {
33604 c(t), s.isMultiple && (t.addClass("md-checkbox-enabled"), t.prepend(u.clone())), de.isDefined(e.ngValue) ? o.$watch(e.ngValue, l) : de.isDefined(e.value) ? l(e.value) : o.$watch(function() {
33605 return t.text().trim()
33606 }, l), e.$observe("disabled", function(e) {
33607 e ? t.attr("tabindex", "-1") : t.attr("tabindex", "0")
33608 }), o.$$postDigest(function() {
33609 e.$observe("selected", function(e) {
33610 de.isDefined(e) && ("string" == typeof e && (e = !0), e ? (s.isMultiple || s.deselect(Object.keys(s.selected)[0]), s.select(a.hashKey, a.value)) : s.deselect(a.hashKey), s.refreshViewValue())
33612 }), r.attach(o, t),
33616 "aria-selected": "false"
33618 t[0].hasAttribute("id") || (e.id = "select_option_" + i.nextUid());
33620 }(), o.$on("$destroy", function() {
33621 s.removeOption(a.hashKey, a)
33626 this.selected = !1, this.setSelected = function(e) {
33627 e && !this.selected ? t.attr({
33628 selected: "selected",
33629 "aria-selected": "true"
33630 }) : !e && this.selected && (t.removeAttr("selected"), t.attr("aria-selected", "false")), this.selected = e
33636 return t.$inject = ["$mdSelect", "$mdConstant", "$mdUtil", "$window", "$q", "$$rAF", "$animateCss", "$animate", "$document"], e("$mdSelect").setDefaults({
33637 methods: ["target"],
33641 function t(u, d, I, R, o, f, h, p, P) {
33642 var m = I.dom.animator,
33647 onShow: function(a, s, l) {
33648 return l.loadingAsync && !l.isRemoved && (a.$$loadingAsyncDone = !1, o.when(l.loadingAsync).then(function() {
33649 a.$$loadingAsyncDone = !0, delete l.loadingAsync
33650 }).then(function() {
33654 var n = s.find("md-select-menu");
33655 if (!t.target) throw new Error(I.supplant("$mdSelect.show() expected a target element in options.target but got '{0}'!", [t.target]));
33658 target: de.element(t.target),
33659 parent: de.element(t.parent),
33661 contentEl: s.find("md-content"),
33662 optionNodes: n[0].getElementsByTagName("md-option")
33664 }(0, l), l.hideBackdrop = (t = a, r = l, r.disableParentScroll && !I.getClosest(r.target, "MD-DIALOG") ? r.restoreScroll = I.disableScrollAround(r.element, r.parent) : r.disableParentScroll = !1, r.hasBackdrop && (r.backdrop = I.createBackdrop(t, "md-select-backdrop md-click-catcher"), p.enter(r.backdrop, P[0].body, null, {
33667 r.backdrop && r.backdrop.remove(), r.disableParentScroll && r.restoreScroll(), delete r.restoreScroll
33668 }), (n = s, e = l, e.parent !== n.parent() && n.parent().attr("aria-owns", n.attr("id")), n.parent().find("md-select-value").attr("aria-hidden", "true"), e.parent.append(n), o(function(e, t) {
33671 removeClass: "md-leave",
33673 }).start().then(i).then(e)
33677 })).then(function(e) {
33679 return s.attr("aria-hidden", "false"), l.alreadyOpen = !0, l.cleanupInteraction = function() {
33680 if (!l.isRemoved) {
33681 var r = l.selectEl,
33682 t = r.controller("mdSelectMenu") || {};
33683 return s.addClass("md-clickable"), l.backdrop && l.backdrop.on("click", e), r.on("keydown", n), r.on("click", o),
33685 l.backdrop && l.backdrop.off("click", e), r.off("keydown", n), r.off("click", o), s.removeClass("md-clickable"), l.isRemoved = !0
33690 e.preventDefault(), e.stopPropagation(), l.restoreFocus = !1, I.nextTick(u.hide, !0)
33694 switch (e.preventDefault(), e.stopPropagation(), e.keyCode) {
33696 return void i("prev");
33698 return void i("next");
33701 var t = I.getClosest(e.target, "md-option");
33702 t && (r.triggerHandler({
33705 }), e.preventDefault()), o(e);
33709 e.stopPropagation(), e.preventDefault(), l.restoreFocus = !0, I.nextTick(u.hide, !0);
33713 var n = r.controller("mdSelectMenu").optNodeForKeyboardSearch(e);
33714 l.focusedNode = n || l.focusedNode, n && n.focus()
33720 for (var t, n = I.nodesToArray(l.optionNodes), r = n.indexOf(l.focusedNode); - 1 === r ? r = 0 : "next" === e && r < n.length - 1 ? r++ : "prev" === e && 0 < r && r--, (t = n[r]).hasAttribute("disabled") && (t = fe), !t && r < n.length - 1 && 0 < r;);
33721 t && t.focus(), l.focusedNode = t
33725 if (!(i && "click" == i.type && i.currentTarget != r[0] || function() {
33727 if (i && 0 < i.currentTarget.children.length) {
33728 var t = i.currentTarget.children[0],
33729 n = t.scrollHeight > t.clientHeight;
33730 if (n && 0 < t.children.length) {
33731 var r = i.pageX - i.currentTarget.getBoundingClientRect().left;
33732 r > t.querySelector("md-option").offsetWidth && (e = !0)
33737 var e = I.getClosest(i.target, "md-option");
33738 e && e.hasAttribute && !e.hasAttribute("disabled") && (i.preventDefault(), i.stopPropagation(), t.isMultiple || (l.restoreFocus = !0, I.nextTick(function() {
33739 u.hide(t.ngModel.$viewValue)
33743 }(), l.cleanupResizing = (r = a, i = s, o = l, t = function() {
33744 if (!o.isRemoved) {
33745 var e = v(r, i, o),
33748 t.element.css(m.toCss(t.styles)), n.element.css(m.toCss(n.styles))
33750 }, (n = de.element(R)).on("resize", t), n.on("orientationchange", t), function() {
33751 n.off("resize", t), n.off("orientationchange", t)
33752 }), c(l.focusedNode), e
33753 }, l.hideBackdrop);
33758 return o(function(e) {
33759 if (l.isRemoved) return o.reject(!1);
33760 var t = v(a, s, l);
33761 t.container.element.css(m.toCss(t.container.styles)), t.dropDown.element.css(m.toCss(t.dropDown.styles)), f(function() {
33762 s.addClass("md-active"), t.dropDown.element.css(m.toCss({
33764 })), c(l.focusedNode), e()
33770 e && !e.hasAttribute("disabled") && e.focus()
33773 onRemove: function(e, t, n) {
33775 i = e.$on("$destroy", function() {
33778 return (n = n || {}).cleanupInteraction(), n.cleanupResizing(), n.hideBackdrop(), !0 === n.$destroy ? o() : (r = h(t, {
33779 addClass: "md-leave"
33780 })).start().then(o);
33783 i(), t.removeClass("md-active").attr("aria-hidden", "true").css({
33791 }), t.parent().find("md-select-value").removeAttr("aria-hidden"),
33793 var t = e.selectCtrl;
33795 var n = e.selectEl.controller("mdSelectMenu");
33796 t.setLabelText(n ? n.selectedLabels() : ""), t.triggerClose()
33798 }(n), !n.$destroy && n.restoreFocus && n.target.focus()
33802 disableParentScroll: !0
33805 function v(e, t, n) {
33806 var r, i, o = t[0],
33807 a = n.target[0].children[0],
33810 c = n.contentEl[0],
33811 u = s.getBoundingClientRect(),
33812 d = a.getBoundingClientRect(),
33816 bottom: u.height - j,
33817 right: u.width - j - (I.floatingScrollbars() ? 16 : 0)
33820 p = (d.left, d.left, d.width, f.bottom - (d.top + d.height)),
33821 m = u.width - 2 * j,
33822 g = l.querySelector("md-option[selected]"),
33823 v = l.getElementsByTagName("md-option"),
33824 b = l.getElementsByTagName("md-optgroup"),
33825 y = function(e, t) {
33828 var r = e[0].style.display;
33829 e[0].style.display = "block", n = t.scrollHeight > t.offsetHeight, e[0].style.display = r
33833 r = (i = n.loadingAsync) && de.isFunction(i.then) ? c.firstElementChild || c : g || (b.length ? b[0] : v.length ? v[0] : c.firstElementChild || c), c.offsetWidth > m ? c.style["max-width"] = m + "px" : c.style.maxWidth = null, y && l.classList.add("md-overflow");
33835 "MD-OPTGROUP" === (_.tagName || "").toUpperCase() && (r = _ = v[0] || c.firstElementChild || c), n.focusedNode = _, o.style.display = "block";
33836 var $, w, E, C, k, x, T = l.getBoundingClientRect(),
33838 left: $.offsetLeft,
33840 width: $.offsetWidth,
33841 height: $.offsetHeight
33849 var A = R.getComputedStyle(r);
33850 M.paddingLeft = parseInt(A.paddingLeft, 10) || 0, M.paddingRight = parseInt(A.paddingRight, 10) || 0
33853 var S = c.offsetHeight / 2;
33854 c.scrollTop = M.top + M.height / 2 - S, h < S ? c.scrollTop = Math.min(M.top, c.scrollTop + S - h) : p < S && (c.scrollTop = Math.max(M.top + M.height - T.height, c.scrollTop - S + p))
33856 w = d.left + M.left - M.paddingLeft + 2, E = Math.floor(d.top + d.height / 2 - M.height / 2 - M.top + c.scrollTop) + 2, C = M.left + d.width / 2 + "px " + (M.top + M.height / 2 - c.scrollTop) + "px 0px", k = Math.min(d.width + M.paddingLeft + M.paddingRight, m), x = F.getComputedStyle(a)["font-size"];
33857 var D = o.getBoundingClientRect(),
33858 O = Math.round(100 * Math.min(d.width / T.width, 1)) / 100,
33859 N = Math.round(100 * Math.min(d.height / T.height, 1)) / 100;
33862 element: de.element(o),
33864 left: Math.floor(H(f.left, w, f.right - D.width)),
33865 top: Math.floor(H(f.top, E, f.bottom - D.height)),
33871 element: de.element(l),
33873 transformOrigin: C,
33874 transform: n.alreadyOpen ? "" : I.supplant("scale({0},{1})", [O, N])
33881 function H(e, t, n) {
33882 return Math.max(e, Math.min(t, n))
33887 var n = String.fromCharCode(e.keyCode),
33888 r = e.keyCode <= 31;
33889 return n && n.length && !r && !t.isMetaKey(e) && !t.isFnLockKey(e) && !t.hasModifierKey(e)
33891 de.module("material.components.select", ["material.core", "material.components.backdrop"]).directive("mdSelect", e).directive("mdSelectMenu", t).directive("mdOption", n).directive("mdOptgroup", function() {
33894 compile: function(t, n) {
33895 t.parent().find("md-select-header").length || function() {
33896 var e = t.find("label");
33897 e.length || (e = de.element("<label>"), t.prepend(e));
33898 e.addClass("md-container-ignore"), e.attr("aria-hidden", "true"), n.label && e.text(n.label)
33902 }).directive("mdSelectHeader", function() {
33906 }).provider("$mdSelect", r)
33910 return ["$mdUtil", "$window", function(a, s) {
33914 link: function(r, i, t) {
33915 var o = r.$on("$md-resize-enable", function() {
33918 n = e.nodeType === s.Node.ELEMENT_NODE ? s.getComputedStyle(e) : {};
33919 r.$watch(t[l], function(e) {
33921 a.nextTick(function() {
33922 r.$broadcast("$md-resize")
33925 cachedTransitionStyles: n
33927 a.dom.animator.waitTransitionEnd(i, t).then(function() {
33928 r.$broadcast("$md-resize")
33937 de.module("material.components.showHide", ["material.core"]).directive("ngShow", e("ngShow", !0)).directive("ngHide", e("ngHide", !1))
33940 function e(r, l, c, i) {
33941 var u = "SideNav '{0}' is not available! Did you use md-component-id='{0}'?",
33943 find: function(e, t) {
33945 return n || t ? n : (i.error(l.supplant(u, [e || ""])), fe)
33949 return function(e, t) {
33950 if (de.isUndefined(e)) return d;
33951 var n, r, i, o, a = !0 === t,
33953 return !s && a ? d.waitFor(e) : !s && de.isUndefined(t) ? (n = d, r = e, i = function() {
33955 }, o = function() {
33956 return c.when(l.supplant(u, [r || ""]))
33964 then: function(e) {
33965 return f(r).then(e || de.noop)
33971 return r.when(e).catch(i.error)
33975 function t(r, b, i, y, _, $, e, w, E, C, k, x, T) {
33979 isOpen: "=?mdIsOpen"
33981 controller: "$mdSidenavController",
33982 compile: function(e) {
33983 return e.addClass("md-closed").attr("tabIndex", "-1"), t
33987 function t(o, a, e, t) {
33988 var s, l, c, u, d, f = null,
33991 n = w(e.mdIsLockedOpen),
33995 return e.keyCode === i.KEY_CODE.ESCAPE ? v(e) : C.when(!0)
33999 return e.preventDefault(), t.close()
34001 e.mdDisableScrollTarget && ((f = k[0].querySelector(e.mdDisableScrollTarget)) ? f = de.element(f) : E.warn(b.supplant('mdSidenav: couldn\'t find element matching selector "{selector}". Falling back to parent.', {
34002 selector: e.mdDisableScrollTarget
34003 }))), f || (f = a.parent()), e.hasOwnProperty("mdDisableBackdrop") || (l = b.createBackdrop(o, "md-sidenav-backdrop md-opaque ng-enter")), e.hasOwnProperty("mdDisableCloseEvents") && (c = !0), a.addClass("_md"), y(a), l && y.inherit(l, a), a.on("$destroy", function() {
34004 l && l.remove(), t.destroy()
34005 }), o.$on("$destroy", function() {
34007 }), o.$watch(function() {
34008 return n(o.$parent, {
34009 $media: function(e) {
34010 return E.warn("$media is deprecated for is-locked-open. Use $mdMedia instead."), r(e)
34014 }, function(e, t) {
34015 (o.isLockedOpen = e) === t ? a.toggleClass("md-locked-open", !!e) : $[e ? "addClass" : "removeClass"](a, "md-locked-open");
34016 l && l.toggleClass("md-locked-open", !!e)
34017 }), o.$watch("isOpen", function(e) {
34018 var t, n = b.findFocusTarget(a) || b.findFocusTarget(a, "[md-sidenav-focus]") || a,
34020 c || (r[e ? "on" : "off"]("keydown", g), l && l[e ? "on" : "off"]("click", v));
34021 t = function(e, t) {
34023 r = e[0].scrollTop;
34027 bottom: n.style.bottom,
34028 height: n.style.height
34033 height: e[0].clientHeight + "px"
34037 if (!t && d) return function() {
34038 n.style.top = d.top, n.style.bottom = d.bottom, n.style.height = d.height, l[0].style.top = null, l[0].style.bottom = null, l[0].style.height = null, d = null
34040 }(r, e), e && (h = k[0].activeElement, u = _.getLastInteractionType());
34041 return i = e, i && !s ? (s = f.css("overflow"), f.css("overflow", "hidden")) : de.isDefined(s) && (f.css("overflow", s), s = fe), p = C.all([e && l ? $.enter(l, r) : l ? $.leave(l) : C.when(!0), $[e ? "removeClass" : "addClass"](a, "md-closed")]).then(function() {
34042 o.isOpen && (T(function() {
34043 m.triggerHandler("resize")
34044 }), n && n.focus()), t && t()
34047 }), t.$toggleOpen = function(e) {
34048 return o.isOpen === e ? C.when(!0) : (o.isOpen && t.onCloseCb && t.onCloseCb(), C(function(t) {
34049 o.isOpen = e, b.nextTick(function() {
34050 p.then(function(e) {
34051 !o.isOpen && h && "keyboard" === u && (h.focus(), h = null), t(e)
34059 function n(t, e, n, r, i) {
34061 o.isOpen = function() {
34063 }, o.isLockedOpen = function() {
34064 return !!t.isLockedOpen
34065 }, o.onClose = function(e) {
34066 return o.onCloseCb = e, o
34067 }, o.open = function() {
34068 return o.$toggleOpen(!0)
34069 }, o.close = function() {
34070 return o.$toggleOpen(!1)
34071 }, o.toggle = function() {
34072 return o.$toggleOpen(!t.isOpen)
34073 }, o.$toggleOpen = function(e) {
34074 return r.when(t.isOpen = e)
34076 var a = e.mdComponentId,
34077 s = a && -1 < a.indexOf(i.startSymbol()),
34078 l = s ? i(a)(t.$parent) : a;
34079 o.destroy = n.register(o, l), s && e.$observe("mdComponentId", function(e) {
34080 e && e !== o.$$mdHandle && (o.destroy(), o.destroy = n.register(o, e))
34083 e.$inject = ["$mdComponentRegistry", "$mdUtil", "$q", "$log"], t.$inject = ["$mdMedia", "$mdUtil", "$mdConstant", "$mdTheming", "$mdInteraction", "$animate", "$compile", "$parse", "$log", "$q", "$document", "$window", "$$rAF"], n.$inject = ["$scope", "$attrs", "$mdComponentRegistry", "$q", "$interpolate"], de.module("material.components.sidenav", ["material.core", "material.components.backdrop"]).factory("$mdSidenav", e).directive("mdSidenav", t).directive("mdSidenavFocus", function() {
34086 require: "^mdSidenav",
34087 link: function(e, t, n, r) {}
34089 }).controller("$mdSidenavController", n)
34092 e.$inject = ["$$rAF", "$window", "$mdAria", "$mdUtil", "$mdConstant", "$mdTheming", "$mdGesture", "$parse", "$log", "$timeout"], de.module("material.components.slider", ["material.core"]).directive("mdSlider", e).directive("mdSliderContainer", function() {
34094 controller: function() {},
34095 compile: function(e) {
34096 var t = e.find("md-slider");
34098 var n = t.attr("md-vertical");
34099 return n !== fe && e.attr("md-vertical", ""), t.attr("flex") || t.attr("flex", ""),
34100 function(e, a, t, n) {
34102 a.children().attr("disabled", e), a.find("input").attr("disabled", e)
34105 var s, i = de.noop;
34106 t.disabled ? r(!0) : t.ngDisabled && (i = e.$watch(t.ngDisabled, function(e) {
34108 })), e.$on("$destroy", function() {
34110 }), n.fitInputWidthToTextLength = function(e) {
34111 var t = a[0].querySelector("md-input-container");
34113 var n = getComputedStyle(t),
34114 r = parseInt(n.minWidth),
34115 i = parseInt(n.paddingLeft) + parseInt(n.paddingRight);
34116 s = s || parseInt(n.maxWidth);
34117 var o = Math.max(s, r + i + r / 2 * e);
34118 t.style.maxWidth = o + "px"
34129 function e(B, z, i, W, Y, G, K, Z, X, Q) {
34132 require: ["?ngModel", "?^mdSliderContainer"],
34133 template: '<div class="md-slider-wrapper"><div class="md-slider-content"><div class="md-track-container"><div class="md-track"></div><div class="md-track md-track-fill"></div><div class="md-track-ticks"></div></div><div class="md-thumb-container"><div class="md-thumb"></div><div class="md-focus-thumb"></div><div class="md-focus-ring"></div><div class="md-sign"><span class="md-thumb-text"></span></div><div class="md-disabled-thumb"></div></div></div></div>',
34134 compile: function(e, t) {
34135 var n = de.element(e[0].getElementsByClassName("md-slider-wrapper")),
34136 r = t.tabindex || 0;
34137 n.attr("tabindex", r), (t.disabled || t.ngDisabled) && n.attr("tabindex", -1);
34138 return n.attr("role", "slider"), i.expect(e, "aria-label"), o
34142 function o(i, o, n, e) {
34145 $setViewValue: function(e) {
34146 this.$viewValue = e, this.$viewChangeListeners.forEach(function(e) {
34152 $viewChangeListeners: []
34155 s = (de.element(W.getClosest(o, "_md-slider-container", !0)), n.ngDisabled ? de.bind(null, Z(n.ngDisabled), i.$parent) : function() {
34156 return o[0].hasAttribute("disabled")
34158 t = de.element(o[0].querySelector(".md-thumb")),
34159 l = de.element(o[0].querySelector(".md-thumb-text")),
34161 u = de.element(o[0].querySelector(".md-track-container")),
34162 d = de.element(o[0].querySelector(".md-track-fill")),
34163 f = de.element(o[0].querySelector(".md-track-ticks")),
34164 h = de.element(o[0].getElementsByClassName("md-slider-wrapper")),
34165 p = (de.element(o[0].getElementsByClassName("md-slider-content")), W.throttle(D, 5e3)),
34166 m = de.isDefined(n.mdVertical),
34167 g = de.isDefined(n.mdDiscrete),
34168 v = de.isDefined(n.mdInvert);
34169 de.isDefined(n.min) ? n.$observe("min", x) : x(0), de.isDefined(n.max) ? n.$observe("max", T) : T(100), de.isDefined(n.step) ? n.$observe("step", M) : M(1), de.isDefined(n.round) ? n.$observe("round", A) : A(3);
34175 n.ngDisabled && i.$parent.$watch(n.ngDisabled, function() {
34176 o.attr("aria-disabled", !!s())
34177 }), K.register(h, "drag", {
34179 }), i.mouseActive = !1, h.on("keydown", function(e) {
34181 var t, n = Y.KEY_CODE;
34182 switch (e.keyCode) {
34185 e.preventDefault(), t = -$;
34188 case n.RIGHT_ARROW:
34189 e.preventDefault(), t = $;
34192 e.preventDefault(), t = -$ * J;
34195 e.preventDefault(), t = $ * J;
34198 e.preventDefault(), e.stopPropagation(), N(y);
34201 e.preventDefault(), e.stopPropagation(), N(_)
34203 t && (t = v ? -t : t, (e.metaKey || e.ctrlKey || e.altKey) && (t *= ee), e.preventDefault(), e.stopPropagation(), N(r.$viewValue + t))
34204 }).on("mousedown", function() {
34206 if (!g || s()) return;
34207 if (de.isUndefined($)) return;
34209 var e = "Slider step value must be greater than zero when in discrete mode";
34210 throw X.error(e), new Error(e)
34212 var t = Math.floor((_ - y) / $);
34213 E || (E = de.element("<canvas>").css("position", "absolute"), f.append(E), C = E[0].getContext("2d"));
34215 !r || r.height || r.width || (D(), r = S);
34216 E[0].width = r.width, E[0].height = r.height;
34217 for (var i = 0; i <= t; i++) {
34218 var o = z.getComputedStyle(f[0]);
34219 C.fillStyle = o.color || "black", n = Math.floor((m ? r.height : r.width) * (i / t)), C.fillRect(m ? 0 : n - 1, m ? n - 1 : 0, m ? r.width : 2, m ? 2 : r.height)
34221 })(), i.mouseActive = !0, h.removeClass("md-focused"), Q(function() {
34224 }).on("focus", function() {
34225 !1 === i.mouseActive && h.addClass("md-focused")
34226 }).on("blur", function() {
34227 h.removeClass("md-focused"), o.removeClass("md-active"),
34231 C.clearRect(0, 0, e.width, e.height)
34234 }).on("$md.pressdown", function(e) {
34236 o.addClass("md-active"), o[0].focus(), D();
34237 var t = P(H(U(q(m ? e.pointer.y : e.pointer.x))));
34238 i.$apply(function() {
34241 }).on("$md.pressup", function(e) {
34243 o.removeClass("md-dragging");
34244 var t = P(H(U(q(m ? e.pointer.y : e.pointer.x))));
34245 i.$apply(function() {
34248 }).on("$md.dragstart", function(e) {
34250 L = !0, e.stopPropagation(), o.addClass("md-dragging"), F(e)
34251 }).on("$md.drag", function(e) {
34253 e.stopPropagation(), F(e)
34254 }).on("$md.dragend", function(e) {
34256 e.stopPropagation(), L = !1
34257 }), setTimeout(b, 0);
34258 var y, _, $, w, E, C, k = B.throttle(b);
34261 y = parseFloat(e), r.$viewValue = P(r.$modelValue, y, _), h.attr("aria-valuemin", e), b()
34265 _ = parseFloat(e), r.$viewValue = P(r.$modelValue, y, _), h.attr("aria-valuemax", e), b()
34273 w = P(parseInt(e), 0, 6)
34275 de.element(z).on("resize", k), i.$on("$destroy", function() {
34276 de.element(z).off("resize", k)
34277 }), r.$render = R, r.$viewChangeListeners.push(R), r.$formatters.push(P), r.$formatters.push(H);
34281 S = u[0].getBoundingClientRect()
34289 i.$evalAsync(function() {
34295 r.$setViewValue(P(H(e)))
34299 isNaN(r.$viewValue) && (r.$viewValue = r.$modelValue), r.$viewValue = P(r.$viewValue);
34300 var e = V(r.$viewValue);
34301 i.modelValue = r.$viewValue, h.attr("aria-valuenow", r.$viewValue), j(e), l.text(r.$viewValue)
34304 function P(e, t, n) {
34305 if (de.isNumber(e)) return t = de.isNumber(t) ? t : y, n = de.isNumber(n) ? n : _, Math.max(t, Math.min(n, e))
34309 if (de.isNumber(e)) {
34310 var t = Math.round((e - y) / $) * $ + y;
34311 return t = Math.round(t * Math.pow(10, w)) / Math.pow(10, w), a && a.fitInputWidthToTextLength && W.debounce(function() {
34312 a.fitInputWidthToTextLength(t.toString().length)
34320 var n = 100 * (e = Math.max(0, Math.min(t || 0, 1))) + "%",
34321 r = v ? 100 * (1 - e) + "%" : n;
34322 m ? c.css("bottom", n) : W.bidiProperty(c, "left", "right", n), d.css(m ? "height" : "width", r), o.toggleClass(v ? "md-max" : "md-min", 0 === e), o.toggleClass(v ? "md-min" : "md-max", 1 === e)
34329 g ? (n = m ? e.pointer.y : e.pointer.x, r = P(H(U(q(n)))), j(q(n)), l.text(r)) : (t = m ? e.pointer.y : e.pointer.x, i.$evalAsync(function() {
34335 var t = (e - (m ? S.top : S.left)) / (m ? S.height : S.width);
34336 return !m && W.isRtl(n) && (t = 1 - t), Math.max(0, Math.min(1, m ? 1 - t : t))
34340 return y + (v ? 1 - e : e) * (_ - y)
34344 var t = (e - y) / (_ - y);
34345 return v ? 1 - t : t
34351 function e(c, u, d, s) {
34352 var l = d.checkStickySupport();
34353 return function(e, t, n) {
34354 var r = t.controller("mdContent");
34362 var i = r.$element.data("$$sticky");
34363 i || (i = function(e) {
34364 var r, i = e.$element,
34366 return function(e) {
34370 +d.now() - n > r ? (t = !1, e.triggerHandler("$scrollend")) : (e.triggerHandler("$scroll"), u.throttle(i))
34372 e.on("scroll touchmove", function() {
34373 t || (t = !0, u.throttle(i), e.triggerHandler("$scrollstart")), e.triggerHandler("$scroll"), n = +d.now()
34375 }(i), i.on("$scrollstart", o), i.on("$scroll", function e() {
34376 var t = i.prop("scrollTop"),
34377 n = (e.prevScrollTop || 0) < t;
34378 if (0 !== (e.prevScrollTop = t)) {
34380 if (r.next && r.next.top <= t) return void s(r.next);
34381 if (r.current && r.next && r.next.top - t <= r.next.height) return void l(r.current, t + (r.next.top - r.next.height - t))
34384 if (r.current && r.prev && t < r.current.top) return void s(r.prev);
34385 if (r.next && r.current && t >= r.next.top - r.current.height) return void l(r.current, t + (r.next.top - t - r.current.height))
34387 r.current && l(r.current, t)
34394 add: function(n, e) {
34395 e.addClass("md-sticky-clone");
34400 return r.items.push(t), d.nextTick(function() {
34404 r.items.forEach(function(e, t) {
34405 e.element[0] === n[0] && (r.items.splice(t, 1), e.clone.remove())
34414 r.items.forEach(a), r.items = r.items.sort(function(e, t) {
34415 return e.top < t.top ? -1 : 1
34417 for (var t = i.prop("scrollTop"), n = r.items.length - 1; 0 <= n; n--)
34418 if (t > r.items[n].top) {
34425 var t = e.element[0];
34426 for (e.top = 0, e.left = 0, e.right = 0; t && t !== i[0];) e.top += t.offsetTop, e.left += t.offsetLeft, t.offsetParent && (e.right += t.offsetParent.offsetWidth - t.offsetWidth - t.offsetLeft), t = t.offsetParent;
34427 e.height = e.element.prop("offsetHeight");
34428 var n = d.floatingScrollbars() ? "0" : fe;
34429 d.bidi(e.clone, "margin-left", e.left, n), d.bidi(e.clone, "margin-right", n, e.right)
34433 if (r.current !== e) {
34434 r.current && (l(r.current, null), n(r.current, null)), e && n(e, "active"), r.current = e;
34435 var t = r.items.indexOf(e);
34436 r.next = r.items[t + 1], r.prev = r.items[t - 1], n(r.next, "next"), n(r.prev, "prev")
34441 e && e.state !== t && (e.state && (e.clone.attr("sticky-prev-state", e.state), e.element.attr("sticky-prev-state", e.state)), e.clone.attr("sticky-state", t), e.element.attr("sticky-state", t), e.state = t)
34445 e && (null === t || t === fe ? e.translateY && (e.translateY = null, e.clone.css(c.CSS.TRANSFORM, "")) : (e.translateY = t, d.bidi(e.clone, c.CSS.TRANSFORM, "translate3d(" + e.left + "px," + t + "px,0)", "translateY(" + t + "px)")))
34447 }(r), r.$element.data("$$sticky", i));
34448 var o = n || s(t.clone())(e),
34450 e.$on("$destroy", a)
34454 e.$inject = ["$mdConstant", "$$rAF", "$mdUtil", "$compile"], de.module("material.components.sticky", ["material.core", "material.components.content"]).factory("$mdSticky", e)
34457 function e(s, l, c, u, d) {
34462 template: '<div class="md-subheader _md"> <div class="md-subheader-inner"> <div class="md-subheader-content"></div> </div></div>',
34463 link: function(n, r, e, t, i) {
34464 c(r), r.addClass("_md"), u.prefixer().removeAttribute(r, "ng-repeat");
34465 var o = r[0].outerHTML;
34468 return de.element(e[0].querySelector(".md-subheader-content"))
34470 e.$set("role", "heading"), d.expect(r, "aria-level", "2"), i(n, function(e) {
34472 }), r.hasClass("md-no-sticky") || i(n, function(e) {
34473 var t = l('<div class="md-subheader-wrapper" aria-hidden="true">' + o + "</div>")(n);
34474 u.nextTick(function() {
34481 e.$inject = ["$mdSticky", "$compile", "$mdTheming", "$mdUtil", "$mdAria"], de.module("material.components.subheader", ["material.core", "material.components.sticky"]).directive("mdSubheader", e)
34485 t.$inject = ["$parse"];
34487 a = "$md." + e.toLowerCase();
34493 link: function(n, e, t) {
34495 e.on(a, function(e) {
34496 var t = e.currentTarget;
34497 n.$applyAsync(function() {
34510 de.module("material.components.swipe", ["material.core"]).directive("mdSwipeLeft", e("SwipeLeft")).directive("mdSwipeRight", e("SwipeRight")).directive("mdSwipeUp", e("SwipeUp")).directive("mdSwipeDown", e("SwipeDown"))
34513 function e(e, d, f, h, p, m, g) {
34517 priority: f.BEFORE_NG_ARIA,
34519 template: '<div class="md-container"><div class="md-bar"></div><div class="md-thumb-container"><div class="md-thumb" md-ink-ripple md-ink-ripple-checkbox></div></div></div><div ng-transclude class="md-label"></div>',
34520 require: ["^?mdInputContainer", "?ngModel", "?^form"],
34521 compile: function(e, t) {
34522 var u = n.compile(e, t).post;
34523 return e.addClass("md-dragging"),
34524 function(n, r, e, t) {
34526 var i = t[1] || d.fakeNgModel(),
34528 null != e.disabled ? o = function() {
34530 } : e.ngDisabled && (o = h(e.ngDisabled));
34531 var a, s = de.element(r[0].querySelector(".md-thumb-container")),
34532 l = de.element(r[0].querySelector(".md-container")),
34533 c = de.element(r[0].querySelector(".md-label"));
34535 r.removeClass("md-dragging")
34536 }), u(n, r, e, t), o && n.$watch(o, function(e) {
34537 r.attr("tabindex", e ? -1 : 0)
34538 }), e.$observe("mdInvert", function(e) {
34539 var t = d.parseAttributeBoolean(e);
34540 t ? r.prepend(c) : r.prepend(l), r.toggleClass("md-inverted", t)
34541 }), m.register(l, "drag"), l.on("$md.dragstart", function(e) {
34542 o && o(n) || (e.stopPropagation(), r.addClass("md-dragging"), a = {
34543 width: s.prop("offsetWidth")
34545 }).on("$md.drag", function(e) {
34547 e.stopPropagation(), e.srcEvent && e.srcEvent.preventDefault();
34548 var t = e.pointer.distanceX / a.width,
34549 n = i.$viewValue ? 1 + t : t;
34550 n = Math.max(0, Math.min(1, n)), s.css(f.CSS.TRANSFORM, "translate3d(" + 100 * n + "%,0,0)"), a.translate = n
34552 }).on("$md.dragend", function(e) {
34554 a && (e.stopPropagation(), r.removeClass("md-dragging"), s.css(f.CSS.TRANSFORM, ""), (i.$viewValue ? a.translate < .5 : .5 < a.translate) && (t = !i.$viewValue, n.$apply(function() {
34555 i.$setViewValue(t), i.$render()
34556 })), a = null, n.skipToggle = !0, g(function() {
34564 e.$inject = ["mdCheckboxDirective", "$mdUtil", "$mdConstant", "$parse", "$$rAF", "$mdGesture", "$timeout"], de.module("material.components.switch", ["material.core", "material.components.checkbox"]).directive("mdSwitch", e)
34565 }(), de.module("material.components.tabs", ["material.core", "material.components.icon"]), de.module("material.components.tabs").service("MdTabsPaginationService", function() {
34567 decreasePageOffset: function(e, t) {
34568 var n, r, i = e.canvas,
34570 for (n = 0; n < o.length; n++)
34574 } return Math.max(0, r - i.clientWidth)
34576 increasePageOffset: function(e, t) {
34577 var n, r, i = e.canvas,
34578 o = l(e) - i.clientWidth,
34580 for (n = 0; a.length, a[n] <= t + i.clientWidth; n++) r = a[n];
34581 return Math.min(o, r)
34584 getTotalTabsWidth: l
34590 for (t = 0; t < e.tabs.length; t++) n = e.tabs[t], i.push(r), r += n.offsetWidth;
34596 for (t = 0; t < e.tabs.length; t++) n = e.tabs[t], r += n.offsetWidth;
34599 }), de.module("material.components.tabs").directive("mdTab", function() {
34601 require: "^?mdTabs",
34603 compile: function(e, t) {
34604 var n = l(e, "md-tab-label"),
34605 r = l(e, "md-tab-body");
34606 if (0 === n.length && (n = de.element("<md-tab-label></md-tab-label>"), t.label ? n.text(t.label) : n.append(e.contents()), 0 === r.length)) {
34607 var i = e.contents().detach();
34608 (r = de.element("<md-tab-body></md-tab-body>")).append(i)
34610 return e.append(n), r.html() && e.append(r), o
34613 active: "=?mdActive",
34614 disabled: "=?ngDisabled",
34615 select: "&?mdOnSelect",
34616 deselect: "&?mdOnDeselect",
34617 tabClass: "@mdTabClass"
34621 function o(e, t, n, r) {
34623 var i = r.getTabElementIndex(t),
34624 o = l(t, "md-tab-body").remove(),
34625 a = l(t, "md-tab-label").remove(),
34631 template: o.html(),
34634 e.select = e.select || de.noop, e.deselect = e.deselect || de.noop, e.$watch("active", function(e) {
34635 e && r.select(s.getIndex(), !0)
34636 }), e.$watch("disabled", function() {
34638 }), e.$watch(function() {
34639 return r.getTabElementIndex(t)
34641 s.index = e, r.updateTabOrder()
34642 }), e.$on("$destroy", function() {
34649 for (var n = e[0].children, r = 0, i = n.length; r < i; r++) {
34651 if (o.tagName === t.toUpperCase()) return de.element(o)
34653 return de.element()
34655 }), de.module("material.components.tabs").directive("mdTabItem", function() {
34657 require: "^?mdTabs",
34658 link: function(e, t, n, r) {
34659 r && r.attachRipple(e, t)
34662 }), de.module("material.components.tabs").directive("mdTabLabel", function() {
34671 compile: function(e, t) {
34672 var n = r(t.mdTabScroll, null, !0);
34673 return function(t, e) {
34674 e.on("wheel", function(e) {
34675 t.$apply(function() {
34685 e.$inject = ["$parse"], de.module("material.components.tabs").directive("mdTabScroll", e)
34688 function e(c, u, n, r, i, d, l, o, a, s, t, f, h) {
34696 var n = o.$normalize("md-" + t);
34699 p[t] = "false" !== e
34701 e && P(t, e), o.hasOwnProperty(n) && r(o[n]), o.$observe(n, r)
34705 v = !0, de.element(n).off("resize", S)
34710 de.element(e.wrapper).toggleClass("md-stretch-tabs", function() {
34711 switch (p.stretchTabs) {
34717 return !p.shouldPaginate && n.matchMedia("(max-width: 600px)").matches
34723 p.shouldCenterTabs = I()
34729 de.forEach(n.tabs, function(e) {
34730 e.style.maxWidth = t + "px"
34731 }), de.forEach(n.dummies, function(e) {
34732 e.style.maxWidth = t + "px"
34733 }), d.nextTick(p.updateInkBarStyles)
34738 e !== t && (p.maxTabWidth = L(), p.shouldCenterTabs = I(), d.nextTick(function() {
34739 p.maxTabWidth = L(), U(p.selectedIndex)
34744 u[e ? "removeClass" : "addClass"]("md-no-tab-content")
34748 var t = (p.shouldCenterTabs || Y() ? "" : "-") + e + "px";
34749 t = t.replace("--", ""), de.element(N().paging).css(r.CSS.TRANSFORM, "translate(" + t + ", 0)"), c.$broadcast("$mdTabsPaginationChanged")
34753 e !== t && N().tabs[e] && (U(), q())
34757 e !== t && (p.selectedIndex = R(e), p.lastSelectedIndex = t, p.updateInkBarStyles(), B(), U(e), c.$broadcast("$mdTabsChanged"), p.tabs[t] && p.tabs[t].scope.deselect(), p.tabs[e] && p.tabs[e].scope.select())
34761 m || (p.focusIndex = p.selectedIndex = e), t && p.noSelectClick || d.nextTick(function() {
34762 p.tabs[e].element.triggerHandler("click")
34767 p.lastSelectedIndex = p.selectedIndex, p.offsetLeft = W(p.offsetLeft), d.nextTick(function() {
34768 p.updateInkBarStyles(), H()
34773 de.element(N().inkBar).toggleClass("ng-hide", e)
34777 u.toggleClass("md-dynamic-height", e)
34783 return e.wrapper = t.querySelector("md-tabs-wrapper"), e.canvas = e.wrapper.querySelector("md-tabs-canvas"), e.paging = e.canvas.querySelector("md-pagination-wrapper"), e.inkBar = e.paging.querySelector("md-ink-bar"), e.nextButton = t.querySelector("md-next-button"), e.prevButton = t.querySelector("md-prev-button"), e.contents = t.querySelectorAll("md-tabs-content-wrapper > md-tab-content"), e.tabs = e.paging.querySelectorAll("md-tab-item"), e.dummies = e.canvas.querySelectorAll("md-dummy-tab"), e
34787 return p.centerTabs && !p.shouldPaginate
34791 if (-1 === e) return -1;
34792 var t, n, r = Math.max(p.tabs.length - e, e);
34793 for (t = 0; t <= r; t++) {
34794 if ((n = p.tabs[e + t]) && !0 !== n.scope.disabled) return n.getIndex();
34795 if ((n = p.tabs[e - t]) && !0 !== n.scope.disabled) return n.getIndex()
34800 function P(e, n, r) {
34801 Object.defineProperty(p, e, {
34807 r = e, n && n(e, t)
34813 p.maxTabWidth = L(), p.shouldPaginate = function() {
34815 if (p.noPagination || !b) return !1;
34816 var t = u.prop("clientWidth");
34817 return de.forEach(N().tabs, function(e) {
34819 }), e = t < 0, d.msie && (N().paging.style.width = e ? "999999px" : fe), e
34825 return de.forEach(e, function(e) {
34826 t += Math.max(e.offsetWidth, e.getBoundingClientRect().width)
34831 var e = N().canvas.clientWidth;
34832 return Math.max(0, Math.min(e - 1, 264))
34836 var n, r = t ? "focusIndex" : "selectedIndex",
34838 for (n = i + e; p.tabs[n] && p.tabs[n].scope.disabled; n += e);
34839 n = (i + e + p.tabs.length) % p.tabs.length, p.tabs[n] && (p[r] = n)
34843 p.styleTabItemFocus = "keyboard" === t.getLastInteractionType();
34844 var e = N().tabs[p.focusIndex];
34850 if (de.isNumber(e) || (e = p.focusIndex), t.tabs[e] && !p.shouldCenterTabs) {
34853 i = n.offsetWidth + r;
34856 var o = j(Array.prototype.slice.call(t.tabs, 0, e)),
34857 a = j(Array.prototype.slice.call(t.tabs, 0, e + 1));
34858 p.offsetLeft = Math.min(p.offsetLeft, W(o)), p.offsetLeft = Math.max(p.offsetLeft, W(a - t.canvas.clientWidth))
34859 } else p.offsetLeft = Math.max(p.offsetLeft, W(i - t.canvas.clientWidth + 32)), p.offsetLeft = Math.min(p.offsetLeft, W(r));
34860 else p.offsetLeft = 0
34865 p.selectedIndex = R(p.selectedIndex), p.focusIndex = R(p.focusIndex)
34869 if (!p.dynamicHeight) return u.css("height", "");
34870 if (!p.tabs.length) return g.push(B);
34872 t = e.contents[p.selectedIndex],
34873 n = t ? t.offsetHeight : 0,
34874 r = e.wrapper.offsetHeight,
34876 o = u.prop("clientHeight");
34878 "bottom" === u.attr("md-align-tabs") && (o -= r, i -= r, u.attr("md-border-bottom") !== fe && ++o), m = !0;
34888 easing: "cubic-bezier(0.35, 0, 0.25, 1)",
34890 }).start().done(function() {
34892 transition: "none",
34894 }), d.nextTick(function() {
34895 u.css("transition", "")
34904 if (n.tabs[p.selectedIndex])
34906 if (u.prop("offsetParent")) {
34907 var r = p.selectedIndex,
34908 i = n.paging.offsetWidth,
34911 s = i - a - o.offsetWidth;
34912 if (p.shouldCenterTabs) {
34914 l < i && e !== i && t !== l && f(z, 0, !0, i, l)
34917 t = p.selectedIndex,
34918 n = p.lastSelectedIndex,
34919 r = de.element(e.inkBar);
34920 if (!de.isNumber(n)) return;
34921 r.toggleClass("md-left", t < n).toggleClass("md-right", n < t)
34922 }(), de.element(n.inkBar).css({
34926 } else(function e() {
34927 e.watcher || (e.watcher = c.$watch(function() {
34928 d.nextTick(function() {
34929 e.watcher && u.prop("offsetParent") && (e.watcher(), e.watcher = null, S())
34933 else g.push(p.updateInkBarStyles);
34934 else de.element(n.inkBar).css({
34943 if (!t.tabs.length || !p.shouldPaginate) return 0;
34944 var n = t.tabs[t.tabs.length - 1],
34945 r = n.offsetLeft + n.offsetWidth;
34946 return e = Y() ? (e = Math.min(t.paging.offsetWidth - t.canvas.clientWidth, e), Math.max(0, e)) : (e = Math.max(0, e), Math.min(r - t.canvas.clientWidth, e))
34952 p.$onInit = function() {
34954 var n = o.$normalize("md-" + t);
34956 o.$observe(n, function(e) {
34959 })("stretchTabs", $), P("focusIndex", T, p.selectedIndex || 0), P("offsetLeft", x, 0), P("hasContent", k, !1), P("maxTabWidth", E, L()), P("shouldPaginate", C, !1), y("noInkBar", D), y("dynamicHeight", O), y("noPagination"), y("swipeContent"), y("noDisconnect"), y("autoselect"), y("noSelectClick"), y("centerTabs", w), y("enableDisconnect"), p.scope = c, p.parent = c.$parent, p.tabs = [], p.lastSelectedIndex = null, p.hasFocus = !1, p.styleTabItemFocus = !1, p.shouldCenterTabs = I(), p.tabContentPrefix = "tab-content-", p.navigationHint = "Use the left and right arrow keys to navigate between tabs", p.selectedIndex = p.selectedIndex || 0, e = o.$mdTabsTemplate, t = de.element(u[0].querySelector("md-tab-data")), t.html(e), a(t.contents())(p.parent), delete o.$mdTabsTemplate, c.$watch("$mdTabsCtrl.selectedIndex", M), de.element(n).on("resize", S), c.$on("$destroy", _), s(u), d.nextTick(function() {
34960 B(), U(), z(), p.tabs[p.selectedIndex] && p.tabs[p.selectedIndex].scope.select(), b = !0, H()
34963 }, p.updatePagination = d.debounce(H, 100), p.redirectFocus = q, p.attachRipple = function(e, t) {
34966 colorElement: de.element(n.inkBar)
34969 }, p.insertTab = function(e, t) {
34972 getIndex: function() {
34973 return p.tabs.indexOf(i)
34975 isActive: function() {
34976 return this.getIndex() === p.selectedIndex
34978 isLeft: function() {
34979 return this.getIndex() < p.selectedIndex
34981 isRight: function() {
34982 return this.getIndex() > p.selectedIndex
34984 shouldRender: function() {
34985 return !p.noDisconnect || this.isActive()
34987 hasFocus: function() {
34988 return p.styleTabItemFocus && p.hasFocus && this.getIndex() === p.focusIndex
34991 hasContent: !(!e.template || !e.template.trim())
34993 i = de.extend(r, e);
34994 de.isDefined(t) ? p.tabs.splice(t, 0, i) : p.tabs.push(i);
34995 return g.forEach(function(e) {
35000 for (e = 0; e < p.tabs.length; e++)
35001 if (p.tabs[e].hasContent) {
35005 }(), d.nextTick(function() {
35008 if (e.hasContent) {
35009 var t = u[0].querySelectorAll('[md-tab-id="' + e.id + '"]');
35010 de.element(t).attr("aria-controls", p.tabContentPrefix + e.id)
35012 }(i), n && p.autoselect && d.nextTick(function() {
35013 d.nextTick(function() {
35014 A(p.tabs.indexOf(i))
35018 }, p.removeTab = function(e) {
35020 var t = p.selectedIndex,
35021 n = p.tabs.splice(e.getIndex(), 1)[0];
35022 V(), p.selectedIndex === t && (n.scope.deselect(), p.tabs[p.selectedIndex] && p.tabs[p.selectedIndex].scope.select());
35023 d.nextTick(function() {
35024 H(), p.offsetLeft = W(p.offsetLeft)
35026 }, p.select = A, p.scroll = function(e) {
35027 if (!p.shouldPaginate) return;
35028 e.preventDefault(), e.deltaY ? p.offsetLeft = W(p.offsetLeft + e.deltaY) : e.deltaX && (p.offsetLeft = W(p.offsetLeft + e.deltaX))
35029 }, p.nextPage = function() {
35030 if (!p.canPageForward()) return;
35031 var e = h.increasePageOffset(N(), p.offsetLeft);
35032 p.offsetLeft = W(e)
35033 }, p.previousPage = function() {
35034 if (!p.canPageBack()) return;
35035 var e = h.decreasePageOffset(N(), p.offsetLeft);
35036 p.offsetLeft = W(e)
35037 }, p.keydown = function(e) {
35038 switch (e.keyCode) {
35039 case r.KEY_CODE.LEFT_ARROW:
35040 e.preventDefault(), F(-1, !0);
35042 case r.KEY_CODE.RIGHT_ARROW:
35043 e.preventDefault(), F(1, !0);
35045 case r.KEY_CODE.SPACE:
35046 case r.KEY_CODE.ENTER:
35047 e.preventDefault(), m || A(p.focusIndex);
35049 case r.KEY_CODE.TAB:
35050 p.focusIndex !== p.selectedIndex && (p.focusIndex = p.selectedIndex)
35052 }, p.canPageForward = function() {
35054 t = e.tabs[e.tabs.length - 1];
35055 if (Y()) return p.offsetLeft < e.paging.offsetWidth - e.canvas.offsetWidth;
35056 return t && t.offsetLeft + t.offsetWidth > e.canvas.clientWidth + p.offsetLeft
35057 }, p.canPageBack = function() {
35058 return 0 < p.offsetLeft
35059 }, p.refreshIndex = V, p.incrementIndex = F, p.getTabElementIndex = function(e) {
35060 var t = u[0].getElementsByTagName("md-tab");
35061 return Array.prototype.indexOf.call(t, e[0])
35062 }, p.updateInkBarStyles = d.debounce(z, 100), p.updateTabOrder = d.debounce(function() {
35063 var e = p.tabs[p.selectedIndex],
35064 t = p.tabs[p.focusIndex];
35065 p.tabs = p.tabs.sort(function(e, t) {
35066 return e.index - t.index
35067 }), p.selectedIndex = p.tabs.indexOf(e), p.focusIndex = p.tabs.indexOf(t)
35068 }, 100), p.getFocusedTabId = function() {
35069 var e = p.tabs[p.focusIndex];
35070 return e && e.id ? "tab-item-" + e.id : null
35071 }, 1 === de.version.major && de.version.minor <= 4 && this.$onInit()
35073 e.$inject = ["$scope", "$element", "$window", "$mdConstant", "$mdTabInkRipple", "$mdUtil", "$animateCss", "$attrs", "$compile", "$mdTheming", "$mdInteraction", "$timeout", "MdTabsPaginationService"], de.module("material.components.tabs").controller("MdTabsController", e)
35079 navigationHint: "@?mdNavigationHint",
35080 selectedIndex: "=?mdSelected"
35082 template: function(e, t) {
35083 return t.$mdTabsTemplate = e.html(), '<md-tabs-wrapper> <md-tab-data></md-tab-data> <md-prev-button tabindex="-1" role="button" aria-label="Previous Page" aria-disabled="{{!$mdTabsCtrl.canPageBack()}}" ng-class="{ \'md-disabled\': !$mdTabsCtrl.canPageBack() }" ng-if="$mdTabsCtrl.shouldPaginate" ng-click="$mdTabsCtrl.previousPage()"> <md-icon md-svg-src="' + n.mdTabsArrow + '"></md-icon> </md-prev-button> <md-next-button tabindex="-1" role="button" aria-label="Next Page" aria-disabled="{{!$mdTabsCtrl.canPageForward()}}" ng-class="{ \'md-disabled\': !$mdTabsCtrl.canPageForward() }" ng-if="$mdTabsCtrl.shouldPaginate" ng-click="$mdTabsCtrl.nextPage()"> <md-icon md-svg-src="' + n.mdTabsArrow + '"></md-icon> </md-next-button> <md-tabs-canvas tabindex="{{ $mdTabsCtrl.hasFocus ? -1 : 0 }}" ng-focus="$mdTabsCtrl.redirectFocus()" ng-class="{ \'md-paginated\': $mdTabsCtrl.shouldPaginate, \'md-center-tabs\': $mdTabsCtrl.shouldCenterTabs }" ng-keydown="$mdTabsCtrl.keydown($event)"> <md-pagination-wrapper ng-class="{ \'md-center-tabs\': $mdTabsCtrl.shouldCenterTabs }" md-tab-scroll="$mdTabsCtrl.scroll($event)" role="tablist" aria-label="{{::$mdTabsCtrl.navigationHint}}"><md-tab-item tabindex="{{ tab.isActive() ? 0 : -1 }}" class="md-tab {{::tab.scope.tabClass}}" ng-repeat="tab in $mdTabsCtrl.tabs" role="tab" id="tab-item-{{::tab.id}}" md-tab-id="{{::tab.id}}" aria-selected="{{tab.isActive()}}" aria-disabled="{{tab.scope.disabled || \'false\'}}" ng-click="$mdTabsCtrl.select(tab.getIndex())" ng-focus="$mdTabsCtrl.hasFocus = true" ng-blur="$mdTabsCtrl.hasFocus = false" ng-class="{ \'md-active\': tab.isActive(), \'md-focused\': tab.hasFocus(), \'md-disabled\': tab.scope.disabled }" ng-disabled="tab.scope.disabled" md-swipe-left="$mdTabsCtrl.nextPage()" md-swipe-right="$mdTabsCtrl.previousPage()" md-tabs-template="::tab.label" md-scope="::tab.parent"></md-tab-item> <md-ink-bar></md-ink-bar> </md-pagination-wrapper> <md-tabs-dummy-wrapper aria-hidden="true" class="md-visually-hidden md-dummy-wrapper"> <md-dummy-tab class="md-tab" tabindex="-1" ng-focus="$mdTabsCtrl.hasFocus = true" ng-blur="$mdTabsCtrl.hasFocus = false" ng-repeat="tab in $mdTabsCtrl.tabs" md-tabs-template="::tab.label" md-scope="::tab.parent"></md-dummy-tab> </md-tabs-dummy-wrapper> </md-tabs-canvas> </md-tabs-wrapper> <md-tabs-content-wrapper ng-show="$mdTabsCtrl.hasContent && $mdTabsCtrl.selectedIndex >= 0" class="_md"> <md-tab-content id="{{:: $mdTabsCtrl.tabContentPrefix + tab.id}}" class="_md" role="tabpanel" aria-labelledby="tab-item-{{::tab.id}}" md-swipe-left="$mdTabsCtrl.swipeContent && $mdTabsCtrl.incrementIndex(1)" md-swipe-right="$mdTabsCtrl.swipeContent && $mdTabsCtrl.incrementIndex(-1)" ng-if="tab.hasContent" ng-repeat="(index, tab) in $mdTabsCtrl.tabs" ng-class="{ \'md-no-transition\': $mdTabsCtrl.lastSelectedIndex == null, \'md-active\': tab.isActive(), \'md-left\': tab.isLeft(), \'md-right\': tab.isRight(), \'md-no-scroll\': $mdTabsCtrl.dynamicHeight }"> <div md-tabs-template="::tab.template" md-connected-if="tab.isActive()" md-scope="::tab.parent" ng-if="$mdTabsCtrl.enableDisconnect || tab.shouldRender()"></div> </md-tab-content> </md-tabs-content-wrapper>'
35085 controller: "MdTabsController",
35086 controllerAs: "$mdTabsCtrl",
35087 bindToController: !0
35090 e.$inject = ["$$mdSvgRegistry"], de.module("material.components.tabs").directive("mdTabs", e)
35095 require: "^?mdTabs",
35096 link: function(e, t, n, r) {
35098 var i, o, a = function() {
35099 r.updatePagination(), r.updateInkBarStyles()
35101 if ("MutationObserver" in c) {
35102 (i = new MutationObserver(a)).observe(t[0], {
35106 }), o = i.disconnect.bind(i)
35108 var s = l.debounce(a, 15, null, !1);
35109 t.on("DOMSubtreeModified", s), o = t.off.bind(t, "DOMSubtreeModified", s)
35111 e.$on("$destroy", function() {
35118 e.$inject = ["$mdUtil", "$window"], de.module("material.components.tabs").directive("mdTabsDummyWrapper", e)
35124 link: function(e, t, n, r) {
35126 var i = r.enableDisconnect ? e.compileScope.$new() : e.compileScope;
35127 return t.html(e.template), a(t.contents())(i), s.nextTick(function() {
35128 e.$watch("connected", function(e) {
35129 !1 === e ? r.enableDisconnect && s.disconnectScope(i) : o()
35130 }), e.$on("$destroy", o)
35134 r.enableDisconnect && s.reconnectScope(i)
35138 template: "=mdTabsTemplate",
35139 connected: "=?mdConnectedIf",
35140 compileScope: "=mdScope"
35142 require: "^?mdTabs"
35145 e.$inject = ["$compile", "$mdUtil"], de.module("material.components.tabs").directive("mdTabsTemplate", e)
35151 link: function(e, t) {
35152 t.addClass("_md"), e.$on("$destroy", function() {
35160 n.$inject = ["$mdToast", "$scope", "$log"], r.$inject = ["$animate", "$mdToast", "$mdUtil", "$mdMedia", "$document"];
35166 return e("$mdToast").setDefaults({
35167 methods: ["position", "hideDelay", "capsule", "parent", "position", "toastClass"],
35169 }).addPreset("simple", {
35170 argOption: "textContent",
35171 methods: ["textContent", "content", "action", "actionKey", "actionHint", "highlightAction", "highlightClass", "theme", "parent", "dismissHint"],
35172 options: ["$mdToast", "$mdTheming", function(e, t) {
35174 template: '<md-toast md-theme="{{ toast.theme }}" ng-class="{\'md-capsule\': toast.capsule}"> <div class="md-toast-content" aria-live="polite" aria-relevant="all"> <span class="md-toast-text"> {{ toast.content }} </span> <span class="md-visually-hidden">{{ toast.dismissHint }}</span> <span class="md-visually-hidden" ng-if="toast.action && toast.actionKey"> {{ toast.actionHint }} </span> <md-button class="md-action" ng-if="toast.action" ng-click="toast.resolve()" ng-class="highlightClasses"> {{ toast.action }} </md-button> </div></md-toast>',
35176 theme: t.defaultTheme(),
35177 controllerAs: "toast",
35178 bindToController: !0
35181 }).addMethod("updateTextContent", t).addMethod("updateContent", t);
35183 function n(t, n, r) {
35184 this.$onInit = function() {
35186 e.highlightAction && (n.highlightClasses = ["md-highlight", e.highlightClass]), e.action && !e.actionKey && r.warn("Toasts with actions should define an actionKey for accessibility.", "Details: https://material.angularjs.org/latest/api/service/$mdToast#mdtoast-simple"), e.actionKey && !e.actionHint && (e.actionHint = 'Press Control-"' + e.actionKey + '" to '), e.dismissHint || (e.dismissHint = "Press Escape to dismiss."), n.$watch(function() {
35190 }), this.resolve = function() {
35196 function r(r, s, l, c, u) {
35197 var d = "$md.swipeleft $md.swiperight $md.swipeup $md.swipedown";
35199 onShow: function(e, i, o) {
35200 f = o.textContent || o.content;
35201 var a = !c("gt-sm");
35202 i = l.extractElementByName(i, "md-toast", !0), o.element = i, o.onSwipe = function(e, t) {
35203 var n = e.type.replace("$md.", ""),
35204 r = n.replace("swipe", "");
35205 "down" === r && -1 !== o.position.indexOf("top") && !a || "up" === r && (-1 !== o.position.indexOf("bottom") || a) || ("left" !== r && "right" !== r || !a) && (i.addClass("md-" + n), l.nextTick(s.cancel))
35206 }, o.openClass = (t = o.position, c("gt-xs") ? "md-toast-open-" + (-1 < t.indexOf("top") ? "top" : "bottom") : "md-toast-open-bottom"), i.addClass(o.toastClass), o.parent.addClass(o.openClass), l.hasComputedStyle(o.parent, "position", "static") && o.parent.css("position", "relative");
35208 n = e.toast && e.toast.actionKey ? e.toast.actionKey : fe, u.on("keydown", function(e) {
35209 "Escape" === e.key && s.hide(!1), n && e.key === n && e.ctrlKey && s.hide(h)
35210 }), i.on(d, o.onSwipe), i.addClass(a ? "md-bottom" : o.position.split(" ").map(function(e) {
35212 }).join(" ")), o.parent && o.parent.addClass("md-toast-animating");
35214 return r.enter(i, o.parent).then(function() {
35215 o.parent && o.parent.removeClass("md-toast-animating")
35218 onRemove: function(e, t, n) {
35219 e.toast && e.toast.actionKey && u.off("keydown");
35220 t.off(d, n.onSwipe), n.parent && n.parent.addClass("md-toast-animating");
35221 n.openClass && n.parent.removeClass(n.openClass);
35222 return (!0 === n.$destroy ? t.remove() : r.leave(t)).then(function() {
35223 n.parent && n.parent.removeClass("md-toast-animating"), l.hasComputedStyle(n.parent, "position", "static") && n.parent.css("position", "")
35227 position: "bottom left",
35231 transformTemplate: function(e, t) {
35232 if (t.autoWrap && e && !/md-toast-content/g.test(e)) {
35233 var n = document.createElement("md-template");
35235 for (var r = 0; r < n.children.length; r++)
35236 if ("MD-TOAST" === n.children[r].nodeName) {
35237 var i = de.element('<div class="md-toast-content">');
35238 i.append(de.element(n.children[r].childNodes)), n.children[r].appendChild(i[0])
35239 } return n.innerHTML
35246 e.$inject = ["$mdToast"], t.$inject = ["$$interimElementProvider"], de.module("material.components.toast", ["material.core", "material.components.button"]).directive("mdToast", e).provider("$mdToast", t)
35249 function e(m, g, v, e, b) {
35250 var y = de.bind(null, v.supplant, "translate3d(0,{0}px,0)");
35254 link: function(f, h, p) {
35255 h.addClass("_md"), e(h), v.nextTick(function() {
35256 h.addClass("_md-toolbar-transitions")
35257 }, !1), de.isDefined(p.mdScrollShrink) && function() {
35258 var n, r, i = de.noop,
35261 s = p.mdShrinkSpeedFactor || .5,
35263 c = v.debounce(e, 5e3);
35264 f.$on("$mdContentLoaded", u), p.$observe("mdScrollShrink", function(e) {
35265 var t = h.parent().find("md-content");
35266 !r && t.length && u(null, t), !1 === (e = f.$eval(e)) ? i() : i = d()
35267 }), p.ngShow && f.$watch(p.ngShow, e);
35268 p.ngHide && f.$watch(p.ngHide, e);
35271 t && h.parent()[0] === t.parent()[0] && (r && r.off("scroll", l), r = t, i = d())
35275 var t = e ? e.target.scrollTop : a;
35276 c(), o = Math.min(n / s, Math.max(0, o + t - a)), h.css(g.CSS.TRANSFORM, y([-o * s])), r.css(g.CSS.TRANSFORM, y([(n - o) * s])), a = t, v.nextTick(function() {
35277 var e = h.hasClass("md-whiteframe-z1");
35278 e && !o ? b.removeClass(h, "md-whiteframe-z1") : !e && o && b.addClass(h, "md-whiteframe-z1")
35283 return r ? (r.on("scroll", l), r.attr("scroll-shrink", "true"), v.nextTick(e, !1), function() {
35284 r.off("scroll", l), r.attr("scroll-shrink", "false"), e()
35289 var e = -(n = h.prop("offsetHeight")) * s + "px";
35295 f.$on("$destroy", i)
35300 e.$inject = ["$$rAF", "$mdConstant", "$mdUtil", "$mdTheming", "$animate"], de.module("material.components.toolbar", ["material.core", "material.components.content"]).directive("mdToolbar", e)
35303 function e(b, y, _, $, w, E, C, k) {
35304 var x = "focus touchstart mouseenter",
35305 T = "blur touchcancel mouseleave",
35308 x: C.xPosition.CENTER,
35309 y: C.yPosition.ABOVE
35312 x: C.xPosition.OFFSET_END,
35313 y: C.yPosition.CENTER
35316 x: C.xPosition.CENTER,
35317 y: C.yPosition.BELOW
35320 x: C.xPosition.OFFSET_START,
35321 y: C.yPosition.CENTER
35328 mdZIndex: "=?mdZIndex",
35329 mdDelay: "=?mdDelay",
35330 mdVisible: "=?mdVisible",
35331 mdAutohide: "=?mdAutohide",
35332 mdDirection: "@?mdDirection"
35334 link: function(s, r, l) {
35335 var i, e, o, a, c, u = "md-tooltip-" + E.nextUid(),
35336 d = E.getParentWithPointerEvents(r),
35342 s.mdZIndex = s.mdZIndex || 100, s.mdDelay = s.mdDelay || 0, M[s.mdDirection] || (s.mdDirection = "bottom")
35346 var t = e || w(r.text().trim())(s.$parent);
35347 (!d.attr("aria-label") && !d.attr("aria-labelledby") || d.attr("md-labeled-by-tooltip")) && (d.attr("aria-label", t), d.attr("md-labeled-by-tooltip") || d.attr("md-labeled-by-tooltip", u))
35351 t(), a && a.panelEl && a.panelEl.removeClass(i), i = "md-origin-" + s.mdDirection, e = M[s.mdDirection], o = C.newPanelPosition().relativeTo(d).addPanelPosition(e.x, e.y), a && a.panelEl && (a.panelEl.addClass(i), a.updatePosition(o))
35355 g.queued && g.value === !!e || !g.queued && s.mdVisible === !!e || (g.value = !!e, g.queued || (e ? (g.queued = !0, c = b(function() {
35356 s.mdVisible = g.value, g.queued = !1, c = null, s.visibleWatcher || v(s.mdVisible)
35357 }, s.mdDelay)) : E.nextTick(function() {
35358 s.mdVisible = !1, s.visibleWatcher || v(!1)
35364 if (!r[0].textContent.trim()) throw new Error("Text for the tooltip has not been provided. Please include text within the mdTooltip element.");
35366 var e = de.element(document.body),
35367 t = C.newPanelAnimation().openFrom(d).closeTo(d).withAnimation({
35375 propagateContainerEvents: !0,
35376 panelClass: "md-tooltip",
35379 zIndex: s.mdZIndex,
35381 onDomAdded: function() {
35382 a.panelEl.addClass(i)
35387 a.open().then(function() {
35388 a.panelEl.attr("role", "tooltip")
35390 }() : a && a.close()
35392 t(), n(), r.detach(), m(),
35394 if (d[0] && "MutationObserver" in y) {
35395 var e = new MutationObserver(function(e) {
35396 e.some(function(e) {
35397 return "disabled" === e.attributeName && d[0].disabled
35410 p = document.activeElement === d[0]
35414 "focus" === e.type && p ? p = !1 : s.mdVisible || (d.on(T, i), g(!0), "touchstart" === e.type && d.one("touchend", function() {
35415 E.nextTick(function() {
35416 $.one("touchend", i)
35422 ((s.hasOwnProperty("mdAutohide") ? s.mdAutohide : l.hasOwnProperty("mdAutohide")) || h || $[0].activeElement !== d[0]) && (c && (b.cancel(c), g.queued = !1, c = null), d.off(T, i), d.triggerHandler("blur"), g(!1)), h = !1
35430 k.deregister("scroll", t, !0), k.deregister("blur", n), k.deregister("resize", f), d.off(x, r).off(T, i).off("mousedown", o), i(), e && e.disconnect()
35432 p = !1, k.register("scroll", t, !0), k.register("blur", n), k.register("resize", f), s.$on("$destroy", a), d.on("mousedown", o), d.on(x, r)
35435 if (r[0] && "MutationObserver" in y) {
35436 var e = new MutationObserver(function(e) {
35437 e.forEach(function(e) {
35438 "md-visible" !== e.attributeName || s.visibleWatcher || (s.visibleWatcher = s.$watch("mdVisible", v))
35443 }), l.hasOwnProperty("mdVisible") && (s.visibleWatcher = s.$watch("mdVisible", v))
35444 } else s.visibleWatcher = s.$watch("mdVisible", v);
35445 s.$watch("mdDirection", m), r.one("$destroy", t), d.one("$destroy", t), s.$on("$destroy", function() {
35446 g(!1), a && a.destroy(), e && e.disconnect(), r.remove()
35447 }), -1 < r.text().indexOf(w.startSymbol()) && s.$watch(function() {
35448 return r.text().trim()
35458 e.$inject = ["$timeout", "$window", "$$rAF", "$document", "$interpolate", "$mdUtil", "$mdPanel", "$$mdTooltipRegistry"], de.module("material.components.tooltip", ["material.core", "material.components.panel"]).directive("mdTooltip", e).service("$$mdTooltipRegistry", function() {
35462 register: function(e, t, n) {
35463 var r = o[e] = o[e] || [];
35464 r.length || (n ? F.addEventListener(e, s, !0) : a.on(e, s)); - 1 === r.indexOf(t) && r.push(t)
35466 deregister: function(e, t, n) {
35468 i = r ? r.indexOf(t) : -1; - 1 < i && (r.splice(i, 1), 0 === r.length && (n ? F.removeEventListener(e, s, !0) : a.off(e, s)))
35473 o[t.type] && o[t.type].forEach(function(e) {
35481 e.addClass("md-truncate")
35483 e.$inject = ["$element"], de.module("material.components.truncate", ["material.core"]).directive("mdTruncate", function() {
35492 return '<div class="md-virtual-repeat-scroller" role="presentation"><div class="md-virtual-repeat-sizer" role="presentation"></div><div class="md-virtual-repeat-offsetter" role="presentation">' + e[0].innerHTML + "</div></div>"
35494 t.$inject = ["$$rAF", "$mdUtil", "$mdConstant", "$parse", "$rootScope", "$window", "$scope", "$element", "$attrs"], i.$inject = ["$scope", "$element", "$attrs", "$browser", "$document", "$rootScope", "$$rAF", "$mdUtil"], n.$inject = ["$parse"], de.module("material.components.virtualRepeat", ["material.core", "material.components.showHide"]).directive("mdVirtualRepeatContainer", function() {
35498 compile: function(e, t) {
35499 e.addClass("md-virtual-repeat-container").addClass(t.hasOwnProperty("mdOrientHorizontal") ? "md-orient-horizontal" : "md-orient-vertical")
35502 }).directive("mdVirtualRepeat", n).directive("mdForceHeight", o);
35504 function t(e, n, t, r, i, o, a, s, l) {
35505 this.$rootScope = i, this.$scope = a, this.$element = s, this.$attrs = l, this.size = 0, this.scrollSize = 0, this.scrollOffset = 0, this.horizontal = this.$attrs.hasOwnProperty("mdOrientHorizontal"), this.repeater = null, this.autoShrink = this.$attrs.hasOwnProperty("mdAutoShrink"), this.autoShrinkMin = parseInt(this.$attrs.mdAutoShrinkMin, 10) || 0, this.originalSize = null, this.offsetSize = parseInt(this.$attrs.mdOffsetSize, 10) || 0, this.oldElementSize = null, this.maxElementPixels = t.ELEMENT_MAX_PIXELS, this.ltr = !n.isRtl(this.$attrs), this.$attrs.mdTopIndex ? (this.bindTopIndex = r(this.$attrs.mdTopIndex), this.topIndex = this.bindTopIndex(this.$scope), de.isDefined(this.topIndex) || (this.topIndex = 0, this.bindTopIndex.assign(this.$scope, 0)), this.$scope.$watch(this.bindTopIndex, de.bind(this, function(e) {
35506 e !== this.topIndex && this.scrollToIndex(e)
35507 }))) : this.topIndex = 0, this.scroller = s[0].querySelector(".md-virtual-repeat-scroller"), this.sizer = this.scroller.querySelector(".md-virtual-repeat-sizer"), this.offsetter = this.scroller.querySelector(".md-virtual-repeat-offsetter");
35508 var c = de.bind(this, this.updateSize);
35509 e(de.bind(this, function() {
35511 var e = n.debounce(c, 10, null, !1),
35513 this.size || e(), t.on("resize", e), a.$on("$destroy", function() {
35515 }), a.$emit("$md-resize-enable"), a.$on("$md-resize", c)
35523 require: ["mdVirtualRepeat", "^^mdVirtualRepeatContainer"],
35526 transclude: "element",
35527 compile: function(e, t) {
35528 var n = t.mdVirtualRepeat.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)\s*$/),
35531 s = t.mdExtraName && r(t.mdExtraName);
35532 return function(e, t, n, r, i) {
35533 r[0].link_(r[1], i, o, a, s)
35539 function i(e, t, n, r, i, o, a, s) {
35540 this.$scope = e, this.$element = t, this.$attrs = n, this.$browser = r, this.$document = i, this.$mdUtil = s, this.$rootScope = o, this.$$rAF = a, this.onDemand = s.parseAttributeBoolean(n.mdOnDemand), this.browserCheckUrlChange = r.$$checkUrlChange, this.newStartIndex = 0, this.newEndIndex = 0, this.newVisibleEnd = 0, this.startIndex = 0, this.endIndex = 0, this.itemSize = e.$eval(n.mdItemSize) || null, this.isFirstRender = !0, this.isVirtualRepeatUpdating_ = !1, this.itemsLength = 0, this.unwatchItemSize_ = de.noop, this.blocks = {}, this.pooledBlocks = [], e.$on("$destroy", de.bind(this, this.cleanupBlocks_))
35544 if (!de.isFunction(e.getItemAtIndex) || !de.isFunction(e.getLength)) throw Error("When md-on-demand is enabled, the Object passed to md-virtual-repeat must implement functions getItemAtIndex() and getLength().");
35551 link: function(e, t, n) {
35552 var r = e.$eval(n.mdForceHeight) || null;
35553 r && t && (t[0].style.height = r)
35557 t.prototype.register = function(e) {
35558 this.repeater = e, de.element(this.scroller).on("scroll wheel touchmove touchend", de.bind(this, this.handleScroll_))
35559 }, t.prototype.isHorizontal = function() {
35560 return this.horizontal
35561 }, t.prototype.getSize = function() {
35563 }, t.prototype.setSize_ = function(e) {
35564 var t = this.getDimensionName_();
35565 this.size = e, this.$element[0].style[t] = e + "px"
35566 }, t.prototype.unsetSize_ = function() {
35567 this.$element[0].style[this.getDimensionName_()] = this.oldElementSize, this.oldElementSize = null
35568 }, t.prototype.updateSize = function() {
35569 if (!this.originalSize) {
35570 var e = this.isHorizontal() ? this.$element[0].clientWidth : this.$element[0].clientHeight;
35571 e && (this.size = e), this.handleScroll_(), this.repeater && this.repeater.containerUpdated()
35573 }, t.prototype.getScrollSize = function() {
35574 return this.scrollSize
35575 }, t.prototype.getDimensionName_ = function() {
35576 return this.isHorizontal() ? "width" : "height"
35577 }, t.prototype.sizeScroller_ = function(e) {
35578 var t = this.getDimensionName_(),
35579 n = this.isHorizontal() ? "height" : "width";
35580 if (this.sizer.innerHTML = "", e < this.maxElementPixels) this.sizer.style[t] = e + "px";
35582 this.sizer.style[t] = "auto", this.sizer.style[n] = "auto";
35583 var r = Math.floor(e / this.maxElementPixels),
35584 i = document.createElement("div");
35585 i.style[t] = this.maxElementPixels + "px", i.style[n] = "1px";
35586 for (var o = 0; o < r; o++) this.sizer.appendChild(i.cloneNode(!1));
35587 i.style[t] = e - r * this.maxElementPixels + "px", this.sizer.appendChild(i)
35589 }, t.prototype.autoShrink_ = function(e) {
35590 var t = Math.max(e, this.autoShrinkMin * this.repeater.getItemSize());
35591 if (this.autoShrink && t !== this.size) {
35592 null === this.oldElementSize && (this.oldElementSize = this.$element[0].style[this.getDimensionName_()]);
35593 var n = this.originalSize || this.size;
35594 if (!n || t < n) this.originalSize || (this.originalSize = this.size), this.setSize_(t);
35595 else if (null !== this.originalSize) {
35597 var r = this.originalSize;
35598 this.originalSize = null, r || this.updateSize(), this.setSize_(r || this.size)
35600 this.repeater.containerUpdated()
35602 }, t.prototype.setScrollSize = function(e) {
35603 var t = e + this.offsetSize;
35604 this.scrollSize !== t && (this.sizeScroller_(t), this.autoShrink_(t), this.scrollSize = t)
35605 }, t.prototype.getScrollOffset = function() {
35606 return this.scrollOffset
35607 }, t.prototype.scrollTo = function(e) {
35608 this.scroller[this.isHorizontal() ? "scrollLeft" : "scrollTop"] = e, this.handleScroll_()
35609 }, t.prototype.scrollToIndex = function(e) {
35610 var t = this.repeater.getItemSize(),
35611 n = this.repeater.itemsLength;
35612 n < e && (e = n - 1), this.scrollTo(t * e)
35613 }, t.prototype.resetScroll = function() {
35615 }, t.prototype.handleScroll_ = function() {
35616 this.ltr || this.maxSize || (this.scroller.scrollLeft = this.scrollSize, this.maxSize = this.scroller.scrollLeft);
35617 var e = this.isHorizontal() ? this.ltr ? this.scroller.scrollLeft : this.maxSize - this.scroller.scrollLeft : this.scroller.scrollTop;
35618 if (!(this.scrollSize < this.size) && (e > this.scrollSize - this.size && (e = this.scrollSize - this.size), e !== this.scrollOffset)) {
35619 var t = this.repeater.getItemSize();
35621 var n = Math.max(0, Math.floor(e / t) - 3),
35622 r = (this.isHorizontal() ? "translateX(" : "translateY(") + (!this.isHorizontal() || this.ltr ? n * t : -n * t) + "px)";
35623 if (this.scrollOffset = e, this.offsetter.style.webkitTransform = r, this.offsetter.style.transform = r, this.bindTopIndex) {
35624 var i = Math.floor(e / t);
35625 i !== this.topIndex && i < this.repeater.getItemCount() && (this.topIndex = i, this.bindTopIndex.assign(this.$scope, i), this.$rootScope.$$phase || this.$scope.$digest())
35627 this.repeater.containerUpdated()
35630 }, i.prototype.link_ = function(e, t, n, r, i) {
35631 this.container = e, this.transclude = t, this.repeatName = n, this.rawRepeatListExpression = r, this.extraName = i, this.sized = !1, this.repeatListExpression = de.bind(this, this.repeatListExpression_), this.container.register(this)
35632 }, i.prototype.cleanupBlocks_ = function() {
35633 de.forEach(this.pooledBlocks, function(e) {
35636 }, i.prototype.readItemSize_ = function() {
35637 if (!this.itemSize) {
35638 this.items = this.repeatListExpression(this.$scope), this.parentNode = this.$element[0].parentNode;
35639 var e = this.getBlock_(0);
35640 e.element[0].parentNode || this.parentNode.appendChild(e.element[0]), this.itemSize = e.element[0][this.container.isHorizontal() ? "offsetWidth" : "offsetHeight"] || null, this.blocks[0] = e, this.poolBlock_(0), this.itemSize && this.containerUpdated()
35642 }, i.prototype.repeatListExpression_ = function(e) {
35643 var t = this.rawRepeatListExpression(e);
35644 if (this.onDemand && t) {
35646 return n.$$includeIndexes(this.newStartIndex, this.newVisibleEnd), n
35649 }, i.prototype.containerUpdated = function() {
35650 if (!this.itemSize) return this.unwatchItemSize_ && this.unwatchItemSize_ !== de.noop && this.unwatchItemSize_(), this.unwatchItemSize_ = this.$scope.$watchCollection(this.repeatListExpression, de.bind(this, function(e) {
35651 e && e.length && this.readItemSize_()
35652 })), void(this.$rootScope.$$phase || this.$scope.$digest());
35653 this.sized || (this.items = this.repeatListExpression(this.$scope)), this.sized || (this.unwatchItemSize_(), this.sized = !0, this.$scope.$watchCollection(this.repeatListExpression, de.bind(this, function(e, t) {
35654 this.isVirtualRepeatUpdating_ || this.virtualRepeatUpdate_(e, t)
35655 }))), this.updateIndexes_(), (this.newStartIndex !== this.startIndex || this.newEndIndex !== this.endIndex || this.container.getScrollOffset() > this.container.getScrollSize()) && (this.items instanceof r && this.items.$$includeIndexes(this.newStartIndex, this.newEndIndex), this.virtualRepeatUpdate_(this.items, this.items))
35656 }, i.prototype.getItemSize = function() {
35657 return this.itemSize
35658 }, i.prototype.getItemCount = function() {
35659 return this.itemsLength
35660 }, i.prototype.virtualRepeatUpdate_ = function(e, t) {
35661 this.isVirtualRepeatUpdating_ = !0;
35662 var n = e && e.length || 0,
35664 if (this.items && n < this.items.length && 0 !== this.container.getScrollOffset()) {
35666 var i = this.container.getScrollOffset();
35667 this.container.resetScroll(), this.container.scrollTo(i)
35669 n !== this.itemsLength && (r = !0, this.itemsLength = n), ((this.items = e) !== t || r) && this.updateIndexes_(), this.parentNode = this.$element[0].parentNode, r && this.container.setScrollSize(n * this.itemSize), Object.keys(this.blocks).forEach(function(e) {
35670 var t = parseInt(e, 10);
35671 (t < this.newStartIndex || t >= this.newEndIndex) && this.poolBlock_(t)
35672 }, this), this.$browser.$$checkUrlChange = de.noop;
35675 for (o = this.newStartIndex; o < this.newEndIndex && null == this.blocks[o]; o++) a = this.getBlock_(o), this.updateBlock_(a, o), s.push(a);
35676 for (; null != this.blocks[o]; o++) this.updateBlock_(this.blocks[o], o);
35677 for (var c = o - 1; o < this.newEndIndex; o++) a = this.getBlock_(o), this.updateBlock_(a, o), l.push(a);
35678 if (s.length && this.parentNode.insertBefore(this.domFragmentFromBlocks_(s), this.$element[0].nextSibling), l.length && this.parentNode.insertBefore(this.domFragmentFromBlocks_(l), this.blocks[c] && this.blocks[c].element[0].nextSibling), this.$browser.$$checkUrlChange = this.browserCheckUrlChange, this.startIndex = this.newStartIndex, this.endIndex = this.newEndIndex, this.isFirstRender) {
35679 this.isFirstRender = !1;
35680 var u = this.$attrs.mdStartIndex ? this.$scope.$eval(this.$attrs.mdStartIndex) : this.container.topIndex;
35681 this.$mdUtil.nextTick(function() {
35682 this.container.scrollToIndex(u)
35685 this.isVirtualRepeatUpdating_ = !1
35686 }, i.prototype.getBlock_ = function(n) {
35687 return this.pooledBlocks.length ? this.pooledBlocks.pop() : (this.transclude(de.bind(this, function(e, t) {
35692 }, this.updateScope_(t, n), this.parentNode.appendChild(e[0])
35695 }, i.prototype.updateBlock_ = function(e, t) {
35696 ((this.blocks[t] = e).new || e.scope.$index !== t || e.scope[this.repeatName] !== this.items[t]) && (e.new = !1, this.updateScope_(e.scope, t), this.$rootScope.$$phase || e.scope.$digest())
35697 }, i.prototype.updateScope_ = function(e, t) {
35698 e.$index = t, e[this.repeatName] = this.items && this.items[t], this.extraName && (e[this.extraName(this.$scope)] = this.items[t])
35699 }, i.prototype.poolBlock_ = function(e) {
35700 this.pooledBlocks.push(this.blocks[e]), this.parentNode.removeChild(this.blocks[e].element[0]), delete this.blocks[e]
35701 }, i.prototype.domFragmentFromBlocks_ = function(e) {
35702 var t = this.$document[0].createDocumentFragment();
35703 return e.forEach(function(e) {
35704 t.appendChild(e.element[0])
35706 }, i.prototype.updateIndexes_ = function() {
35707 var e = this.items ? this.items.length : 0,
35708 t = Math.ceil(this.container.getSize() / this.itemSize);
35709 this.newStartIndex = Math.max(0, Math.min(e - t, Math.floor(this.container.getScrollOffset() / this.itemSize))), this.newVisibleEnd = this.newStartIndex + t + 3, this.newEndIndex = Math.min(e, this.newVisibleEnd), this.newStartIndex = Math.max(0, this.newStartIndex - 3)
35710 }, r.prototype.$$includeIndexes = function(e, t) {
35711 for (var n = e; n < t; n++) this.hasOwnProperty(n) || (this[n] = this.model.getItemAtIndex(n));
35712 this.length = this.model.getLength()
35713 }, o.$inject = ["$mdUtil"]
35718 link: function(e, n, r) {
35720 r.$observe("mdWhiteframe", function(e) {
35721 -1 != (e = parseInt(e, 10) || 4) && (24 < e || e < 1) && (o.warn("md-whiteframe attribute value is invalid. It should be a number between 1 and 24", n[0]), e = 4);
35722 var t = -1 == e ? "" : "md-whiteframe-" + e + "dp";
35723 r.$updateClass(t, i), i = t
35728 e.$inject = ["$log"], de.module("material.components.whiteframe", ["material.core"]).directive("mdWhiteframe", e)
35729 }(), de.module("material.core").constant("$MD_THEME_CSS", 'md-autocomplete.md-THEME_NAME-theme{background:"{{background-hue-1}}"}md-autocomplete.md-THEME_NAME-theme[disabled]:not([md-floating-label]){background:"{{background-hue-2}}"}md-autocomplete.md-THEME_NAME-theme button md-icon path{fill:"{{background-600}}"}md-autocomplete.md-THEME_NAME-theme button:after{background:"{{background-600-0.3}}"}md-autocomplete.md-THEME_NAME-theme input{color:"{{foreground-1}}"}md-autocomplete.md-THEME_NAME-theme.md-accent md-input-container.md-input-focused .md-input{border-color:"{{accent-color}}"}md-autocomplete.md-THEME_NAME-theme.md-accent md-input-container.md-input-focused label,md-autocomplete.md-THEME_NAME-theme.md-accent md-input-container.md-input-focused md-icon{color:"{{accent-color}}"}md-autocomplete.md-THEME_NAME-theme.md-accent md-progress-linear .md-container{background-color:"{{accent-100}}"}md-autocomplete.md-THEME_NAME-theme.md-accent md-progress-linear .md-bar{background-color:"{{accent-color}}"}md-autocomplete.md-THEME_NAME-theme.md-warn md-input-container.md-input-focused .md-input{border-color:"{{warn-A700}}"}md-autocomplete.md-THEME_NAME-theme.md-warn md-input-container.md-input-focused label,md-autocomplete.md-THEME_NAME-theme.md-warn md-input-container.md-input-focused md-icon{color:"{{warn-A700}}"}md-autocomplete.md-THEME_NAME-theme.md-warn md-progress-linear .md-container{background-color:"{{warn-100}}"}md-autocomplete.md-THEME_NAME-theme.md-warn md-progress-linear .md-bar{background-color:"{{warn-color}}"}.md-autocomplete-standard-list-container.md-THEME_NAME-theme,.md-autocomplete-suggestions-container.md-THEME_NAME-theme{background:"{{background-hue-1}}"}.md-autocomplete-standard-list-container.md-THEME_NAME-theme li,.md-autocomplete-suggestions-container.md-THEME_NAME-theme li{color:"{{foreground-1}}"}.md-autocomplete-standard-list-container.md-THEME_NAME-theme li#selected_option,.md-autocomplete-standard-list-container.md-THEME_NAME-theme li:hover,.md-autocomplete-suggestions-container.md-THEME_NAME-theme li#selected_option,.md-autocomplete-suggestions-container.md-THEME_NAME-theme li:hover{background:"{{background-500-0.18}}"}md-backdrop{background-color:"{{background-900-0.0}}"}md-backdrop.md-opaque.md-THEME_NAME-theme{background-color:"{{background-900-1.0}}"}md-bottom-sheet.md-THEME_NAME-theme{background-color:"{{background-color}}";border-top-color:"{{background-hue-3}}"}md-bottom-sheet.md-THEME_NAME-theme.md-list md-list-item{color:"{{foreground-1}}"}md-bottom-sheet.md-THEME_NAME-theme .md-subheader{background-color:"{{background-color}}";color:"{{foreground-1}}"}.md-button.md-THEME_NAME-theme:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme:not([disabled]):hover{background-color:"{{background-500-0.2}}"}.md-button.md-THEME_NAME-theme:not([disabled]).md-icon-button:hover{background-color:transparent}.md-button.md-THEME_NAME-theme.md-fab md-icon{color:"{{accent-contrast}}"}.md-button.md-THEME_NAME-theme.md-primary{color:"{{primary-color}}"}.md-button.md-THEME_NAME-theme.md-primary.md-fab,.md-button.md-THEME_NAME-theme.md-primary.md-raised{color:"{{primary-contrast}}";background-color:"{{primary-color}}"}.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]) md-icon,.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]) md-icon{color:"{{primary-contrast}}"}.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]):hover,.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]):hover{background-color:"{{primary-600}}"}.md-button.md-THEME_NAME-theme.md-primary:not([disabled]) md-icon{color:"{{primary-color}}"}.md-button.md-THEME_NAME-theme.md-fab{background-color:"{{accent-color}}";color:"{{accent-contrast}}"}.md-button.md-THEME_NAME-theme.md-fab:not([disabled]) .md-icon{color:"{{accent-contrast}}"}.md-button.md-THEME_NAME-theme.md-fab:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover{background-color:"{{accent-A700}}"}.md-button.md-THEME_NAME-theme.md-raised{color:"{{background-900}}";background-color:"{{background-50}}"}.md-button.md-THEME_NAME-theme.md-raised:not([disabled]) md-icon{color:"{{background-900}}"}.md-button.md-THEME_NAME-theme.md-raised:not([disabled]):hover{background-color:"{{background-50}}"}.md-button.md-THEME_NAME-theme.md-raised:not([disabled]).md-focused{background-color:"{{background-200}}"}.md-button.md-THEME_NAME-theme.md-warn{color:"{{warn-color}}"}.md-button.md-THEME_NAME-theme.md-warn.md-fab,.md-button.md-THEME_NAME-theme.md-warn.md-raised{color:"{{warn-contrast}}";background-color:"{{warn-color}}"}.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]) md-icon,.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]) md-icon{color:"{{warn-contrast}}"}.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]):hover,.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]):hover{background-color:"{{warn-600}}"}.md-button.md-THEME_NAME-theme.md-warn:not([disabled]) md-icon{color:"{{warn-color}}"}.md-button.md-THEME_NAME-theme.md-accent{color:"{{accent-color}}"}.md-button.md-THEME_NAME-theme.md-accent.md-fab,.md-button.md-THEME_NAME-theme.md-accent.md-raised{color:"{{accent-contrast}}";background-color:"{{accent-color}}"}.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]) md-icon,.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]) md-icon{color:"{{accent-contrast}}"}.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]):hover,.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]):hover{background-color:"{{accent-A700}}"}.md-button.md-THEME_NAME-theme.md-accent:not([disabled]) md-icon{color:"{{accent-color}}"}.md-button.md-THEME_NAME-theme.md-accent[disabled],.md-button.md-THEME_NAME-theme.md-fab[disabled],.md-button.md-THEME_NAME-theme.md-raised[disabled],.md-button.md-THEME_NAME-theme.md-warn[disabled],.md-button.md-THEME_NAME-theme[disabled]{color:"{{foreground-3}}";cursor:default}.md-button.md-THEME_NAME-theme.md-accent[disabled] md-icon,.md-button.md-THEME_NAME-theme.md-fab[disabled] md-icon,.md-button.md-THEME_NAME-theme.md-raised[disabled] md-icon,.md-button.md-THEME_NAME-theme.md-warn[disabled] md-icon,.md-button.md-THEME_NAME-theme[disabled] md-icon{color:"{{foreground-3}}"}.md-button.md-THEME_NAME-theme.md-fab[disabled],.md-button.md-THEME_NAME-theme.md-raised[disabled]{background-color:"{{foreground-4}}"}.md-button.md-THEME_NAME-theme[disabled]{background-color:transparent}._md a.md-THEME_NAME-theme:not(.md-button).md-primary{color:"{{primary-color}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-primary:hover{color:"{{primary-700}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-accent{color:"{{accent-color}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-accent:hover{color:"{{accent-A700}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-warn{color:"{{warn-color}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-warn:hover{color:"{{warn-700}}"}md-card.md-THEME_NAME-theme{color:"{{foreground-1}}";background-color:"{{background-hue-1}}";border-radius:2px}md-card.md-THEME_NAME-theme .md-card-image{border-radius:2px 2px 0 0}md-card.md-THEME_NAME-theme md-card-header md-card-avatar md-icon{color:"{{background-color}}";background-color:"{{foreground-3}}"}md-card.md-THEME_NAME-theme md-card-header md-card-header-text .md-subhead,md-card.md-THEME_NAME-theme md-card-title md-card-title-text:not(:only-child) .md-subhead{color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme .md-ripple{color:"{{accent-A700}}"}md-checkbox.md-THEME_NAME-theme.md-checked .md-ripple{color:"{{background-600}}"}md-checkbox.md-THEME_NAME-theme.md-checked.md-focused .md-container:before{background-color:"{{accent-color-0.26}}"}md-checkbox.md-THEME_NAME-theme .md-ink-ripple{color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme.md-checked .md-ink-ripple{color:"{{accent-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not(.md-checked) .md-icon{border-color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme.md-checked .md-icon{background-color:"{{accent-color-0.87}}"}md-checkbox.md-THEME_NAME-theme.md-checked .md-icon:after{border-color:"{{accent-contrast-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-ripple{color:"{{primary-600}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ripple{color:"{{background-600}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-ink-ripple{color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ink-ripple{color:"{{primary-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary:not(.md-checked) .md-icon{border-color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-icon{background-color:"{{primary-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked.md-focused .md-container:before{background-color:"{{primary-color-0.26}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-icon:after{border-color:"{{primary-contrast-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-indeterminate[disabled] .md-container{color:"{{foreground-3}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn .md-ripple{color:"{{warn-600}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn .md-ink-ripple{color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-ink-ripple{color:"{{warn-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn:not(.md-checked) .md-icon{border-color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-icon{background-color:"{{warn-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked.md-focused:not([disabled]) .md-container:before{background-color:"{{warn-color-0.26}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-icon:after{border-color:"{{background-200}}"}md-checkbox.md-THEME_NAME-theme[disabled]:not(.md-checked) .md-icon{border-color:"{{foreground-3}}"}md-checkbox.md-THEME_NAME-theme[disabled].md-checked .md-icon{background-color:"{{foreground-3}}"}md-checkbox.md-THEME_NAME-theme[disabled].md-checked .md-icon:after{border-color:"{{background-200}}"}md-checkbox.md-THEME_NAME-theme[disabled] .md-icon:after{border-color:"{{foreground-3}}"}md-checkbox.md-THEME_NAME-theme[disabled] .md-label{color:"{{foreground-3}}"}md-chips.md-THEME_NAME-theme .md-chips{box-shadow:0 1px "{{foreground-4}}"}md-chips.md-THEME_NAME-theme .md-chips.md-focused{box-shadow:0 2px "{{primary-color}}"}md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input{color:"{{foreground-1}}"}md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input::-webkit-input-placeholder{color:"{{foreground-3}}"}md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input:-ms-input-placeholder,md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input::-ms-input-placeholder{color:"{{foreground-3}}"}md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input::placeholder{color:"{{foreground-3}}"}md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input:-moz-placeholder,md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input::-moz-placeholder{color:"{{foreground-3}}";opacity:1}md-chips.md-THEME_NAME-theme md-chip{background:"{{background-300}}";color:"{{background-800}}"}md-chips.md-THEME_NAME-theme md-chip md-icon{color:"{{background-700}}"}md-chips.md-THEME_NAME-theme md-chip.md-focused{background:"{{primary-color}}";color:"{{primary-contrast}}"}md-chips.md-THEME_NAME-theme md-chip.md-focused md-icon{color:"{{primary-contrast}}"}md-chips.md-THEME_NAME-theme md-chip._md-chip-editing{background:transparent;color:"{{background-800}}"}md-chips.md-THEME_NAME-theme md-chip-remove .md-button md-icon path{fill:"{{background-500}}"}.md-contact-suggestion span.md-contact-email{color:"{{background-400}}"}md-content.md-THEME_NAME-theme{color:"{{foreground-1}}";background-color:"{{background-default}}"}.md-THEME_NAME-theme .md-calendar{background:"{{background-hue-1}}";color:"{{foreground-1-0.87}}"}.md-THEME_NAME-theme .md-calendar tr:last-child td{border-bottom-color:"{{background-hue-2}}"}.md-THEME_NAME-theme .md-calendar-day-header{background:"{{background-500-0.32}}";color:"{{foreground-1-0.87}}"}.md-THEME_NAME-theme .md-calendar-date.md-calendar-date-today .md-calendar-date-selection-indicator{border:1px solid "{{primary-500}}"}.md-THEME_NAME-theme .md-calendar-date.md-calendar-date-today.md-calendar-date-disabled{color:"{{primary-500-0.6}}"}.md-calendar-date.md-focus .md-THEME_NAME-theme .md-calendar-date-selection-indicator,.md-THEME_NAME-theme .md-calendar-date-selection-indicator:hover{background:"{{background-500-0.32}}"}.md-THEME_NAME-theme .md-calendar-date.md-calendar-selected-date .md-calendar-date-selection-indicator,.md-THEME_NAME-theme .md-calendar-date.md-focus.md-calendar-selected-date .md-calendar-date-selection-indicator{background:"{{primary-500}}";color:"{{primary-500-contrast}}";border-color:transparent}.md-THEME_NAME-theme .md-calendar-date-disabled,.md-THEME_NAME-theme .md-calendar-month-label-disabled{color:"{{foreground-3}}"}.md-THEME_NAME-theme .md-calendar-month-label md-icon,.md-THEME_NAME-theme .md-datepicker-input{color:"{{foreground-1}}"}.md-THEME_NAME-theme .md-datepicker-input::-webkit-input-placeholder{color:"{{foreground-3}}"}.md-THEME_NAME-theme .md-datepicker-input:-ms-input-placeholder,.md-THEME_NAME-theme .md-datepicker-input::-ms-input-placeholder{color:"{{foreground-3}}"}.md-THEME_NAME-theme .md-datepicker-input::placeholder{color:"{{foreground-3}}"}.md-THEME_NAME-theme .md-datepicker-input:-moz-placeholder,.md-THEME_NAME-theme .md-datepicker-input::-moz-placeholder{color:"{{foreground-3}}";opacity:1}.md-THEME_NAME-theme .md-datepicker-input-container{border-bottom-color:"{{foreground-4}}"}.md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-focused{border-bottom-color:"{{primary-color}}"}.md-accent .md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-focused{border-bottom-color:"{{accent-color}}"}.md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-invalid,.md-warn .md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-focused{border-bottom-color:"{{warn-A700}}"}.md-THEME_NAME-theme .md-datepicker-calendar-pane{border-color:"{{background-hue-1}}"}.md-THEME_NAME-theme .md-datepicker-triangle-button .md-datepicker-expand-triangle{border-top-color:"{{foreground-2}}"}.md-THEME_NAME-theme .md-datepicker-open .md-datepicker-calendar-icon{color:"{{primary-color}}"}.md-accent .md-THEME_NAME-theme .md-datepicker-open .md-datepicker-calendar-icon,.md-THEME_NAME-theme .md-datepicker-open.md-accent .md-datepicker-calendar-icon{color:"{{accent-color}}"}.md-THEME_NAME-theme .md-datepicker-open.md-warn .md-datepicker-calendar-icon,.md-warn .md-THEME_NAME-theme .md-datepicker-open .md-datepicker-calendar-icon{color:"{{warn-A700}}"}.md-THEME_NAME-theme .md-datepicker-calendar{background:"{{background-hue-1}}"}.md-THEME_NAME-theme .md-datepicker-input-mask-opaque{box-shadow:0 0 0 9999px "{{background-hue-1}}"}.md-THEME_NAME-theme .md-datepicker-open .md-datepicker-input-container{background:"{{background-hue-1}}"}md-dialog.md-THEME_NAME-theme{border-radius:4px;background-color:"{{background-hue-1}}";color:"{{foreground-1}}"}md-dialog.md-THEME_NAME-theme.md-content-overflow .md-actions,md-dialog.md-THEME_NAME-theme.md-content-overflow md-dialog-actions,md-divider.md-THEME_NAME-theme{border-top-color:"{{foreground-4}}"}.layout-gt-lg-row>md-divider.md-THEME_NAME-theme,.layout-gt-md-row>md-divider.md-THEME_NAME-theme,.layout-gt-sm-row>md-divider.md-THEME_NAME-theme,.layout-gt-xs-row>md-divider.md-THEME_NAME-theme,.layout-lg-row>md-divider.md-THEME_NAME-theme,.layout-md-row>md-divider.md-THEME_NAME-theme,.layout-row>md-divider.md-THEME_NAME-theme,.layout-sm-row>md-divider.md-THEME_NAME-theme,.layout-xl-row>md-divider.md-THEME_NAME-theme,.layout-xs-row>md-divider.md-THEME_NAME-theme{border-right-color:"{{foreground-4}}"}md-icon.md-THEME_NAME-theme{color:"{{foreground-2}}"}md-icon.md-THEME_NAME-theme.md-primary{color:"{{primary-color}}"}md-icon.md-THEME_NAME-theme.md-accent{color:"{{accent-color}}"}md-icon.md-THEME_NAME-theme.md-warn{color:"{{warn-color}}"}md-input-container.md-THEME_NAME-theme .md-input{color:"{{foreground-1}}";border-color:"{{foreground-4}}"}md-input-container.md-THEME_NAME-theme .md-input::-webkit-input-placeholder{color:"{{foreground-2}}"}md-input-container.md-THEME_NAME-theme .md-input:-ms-input-placeholder,md-input-container.md-THEME_NAME-theme .md-input::-ms-input-placeholder{color:"{{foreground-2}}"}md-input-container.md-THEME_NAME-theme .md-input::placeholder{color:"{{foreground-2}}"}md-input-container.md-THEME_NAME-theme .md-input:-moz-placeholder,md-input-container.md-THEME_NAME-theme .md-input::-moz-placeholder{color:"{{foreground-2}}";opacity:1}md-input-container.md-THEME_NAME-theme>md-icon{color:"{{foreground-1}}"}md-input-container.md-THEME_NAME-theme .md-placeholder,md-input-container.md-THEME_NAME-theme label{color:"{{foreground-2}}"}md-input-container.md-THEME_NAME-theme label.md-required:after{color:"{{warn-A700}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-focused):not(.md-input-invalid) label.md-required:after{color:"{{foreground-2}}"}md-input-container.md-THEME_NAME-theme .md-input-message-animation,md-input-container.md-THEME_NAME-theme .md-input-messages-animation{color:"{{warn-A700}}"}md-input-container.md-THEME_NAME-theme .md-input-message-animation .md-char-counter,md-input-container.md-THEME_NAME-theme .md-input-messages-animation .md-char-counter{color:"{{foreground-1}}"}md-input-container.md-THEME_NAME-theme.md-input-focused .md-input::-webkit-input-placeholder{color:"{{foreground-2}}"}md-input-container.md-THEME_NAME-theme.md-input-focused .md-input:-ms-input-placeholder,md-input-container.md-THEME_NAME-theme.md-input-focused .md-input::-ms-input-placeholder{color:"{{foreground-2}}"}md-input-container.md-THEME_NAME-theme.md-input-focused .md-input::placeholder{color:"{{foreground-2}}"}md-input-container.md-THEME_NAME-theme.md-input-focused .md-input:-moz-placeholder,md-input-container.md-THEME_NAME-theme.md-input-focused .md-input::-moz-placeholder{color:"{{foreground-2}}";opacity:1}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-has-value label{color:"{{foreground-2}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused .md-input,md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-resized .md-input{border-color:"{{primary-color}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused label,md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused md-icon{color:"{{primary-color}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-accent .md-input{border-color:"{{accent-color}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-accent label,md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-accent md-icon{color:"{{accent-color}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-warn .md-input{border-color:"{{warn-A700}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-warn label,md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-warn md-icon{color:"{{warn-A700}}"}md-input-container.md-THEME_NAME-theme.md-input-invalid .md-input{border-color:"{{warn-A700}}"}md-input-container.md-THEME_NAME-theme.md-input-invalid .md-char-counter,md-input-container.md-THEME_NAME-theme.md-input-invalid .md-input-message-animation,md-input-container.md-THEME_NAME-theme.md-input-invalid label{color:"{{warn-A700}}"}[disabled] md-input-container.md-THEME_NAME-theme .md-input,md-input-container.md-THEME_NAME-theme .md-input[disabled]{border-bottom-color:transparent;color:"{{foreground-3}}";background-image:linear-gradient(90deg,"{{foreground-3}}" 0,"{{foreground-3}}" 33%,transparent 0);background-image:-ms-linear-gradient(left,transparent 0,"{{foreground-3}}" 100%)}md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text h3,md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text h4,md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text h3,md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text h4{color:"{{foreground-1}}"}md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text p,md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text p{color:"{{foreground-2}}"}md-list.md-THEME_NAME-theme .md-proxy-focus.md-focused div.md-no-style{background-color:"{{background-100}}"}md-list.md-THEME_NAME-theme md-list-item .md-avatar-icon{background-color:"{{foreground-3}}";color:"{{background-color}}"}md-list.md-THEME_NAME-theme md-list-item>md-icon{color:"{{foreground-2}}"}md-list.md-THEME_NAME-theme md-list-item>md-icon.md-highlight{color:"{{primary-color}}"}md-list.md-THEME_NAME-theme md-list-item>md-icon.md-highlight.md-accent{color:"{{accent-color}}"}md-menu-content.md-THEME_NAME-theme{background-color:"{{background-hue-1}}"}md-menu-content.md-THEME_NAME-theme md-menu-item{color:"{{foreground-1}}"}md-menu-content.md-THEME_NAME-theme md-menu-item md-icon{color:"{{foreground-2}}"}md-menu-content.md-THEME_NAME-theme md-menu-item .md-button[disabled],md-menu-content.md-THEME_NAME-theme md-menu-item .md-button[disabled] md-icon{color:"{{foreground-3}}"}md-menu-content.md-THEME_NAME-theme md-menu-divider{background-color:"{{foreground-4}}"}md-menu-bar.md-THEME_NAME-theme>button.md-button{color:"{{foreground-1}}";border-radius:2px}md-menu-bar.md-THEME_NAME-theme md-menu>button{color:"{{foreground-1}}"}md-menu-bar.md-THEME_NAME-theme md-menu.md-open>button,md-menu-bar.md-THEME_NAME-theme md-menu>button:focus{outline:none;background-color:"{{ background-500-0.18}}"}md-menu-bar.md-THEME_NAME-theme.md-open:not(.md-keyboard-mode) md-menu:hover>button{background-color:"{{ background-500-0.18}}"}md-menu-bar.md-THEME_NAME-theme:not(.md-keyboard-mode):not(.md-open) md-menu button:focus,md-menu-bar.md-THEME_NAME-theme:not(.md-keyboard-mode):not(.md-open) md-menu button:hover{background:transparent}md-menu-content.md-THEME_NAME-theme .md-menu>.md-button:after{color:"{{foreground-2}}"}md-menu-content.md-THEME_NAME-theme .md-menu.md-open>.md-button{background-color:"{{ background-500-0.18}}"}md-toolbar.md-THEME_NAME-theme.md-menu-toolbar{background-color:"{{background-hue-1}}";color:"{{foreground-1}}"}md-toolbar.md-THEME_NAME-theme.md-menu-toolbar md-toolbar-filler{background-color:"{{primary-color}}";color:"{{primary-contrast}}"}md-toolbar.md-THEME_NAME-theme.md-menu-toolbar md-toolbar-filler md-icon{color:"{{primary-contrast}}"}md-nav-bar.md-THEME_NAME-theme .md-nav-bar{background-color:transparent;border-color:"{{foreground-4}}"}md-nav-bar.md-THEME_NAME-theme .md-button._md-nav-button.md-unselected{color:"{{foreground-2}}"}md-nav-bar.md-THEME_NAME-theme .md-button._md-nav-button[disabled]{color:"{{foreground-3}}"}md-nav-bar.md-THEME_NAME-theme md-nav-ink-bar{color:"{{accent-color}}";background:"{{accent-color}}"}md-nav-bar.md-THEME_NAME-theme.md-accent>.md-nav-bar{background-color:"{{accent-color}}"}md-nav-bar.md-THEME_NAME-theme.md-accent>.md-nav-bar .md-button._md-nav-button{color:"{{accent-A100}}"}md-nav-bar.md-THEME_NAME-theme.md-accent>.md-nav-bar .md-button._md-nav-button.md-active,md-nav-bar.md-THEME_NAME-theme.md-accent>.md-nav-bar .md-button._md-nav-button.md-focused{color:"{{accent-contrast}}"}md-nav-bar.md-THEME_NAME-theme.md-accent>.md-nav-bar .md-button._md-nav-button.md-focused{background:"{{accent-contrast-0.1}}"}md-nav-bar.md-THEME_NAME-theme.md-accent>.md-nav-bar md-nav-ink-bar{color:"{{primary-600-1}}";background:"{{primary-600-1}}"}md-nav-bar.md-THEME_NAME-theme.md-warn>.md-nav-bar{background-color:"{{warn-color}}"}md-nav-bar.md-THEME_NAME-theme.md-warn>.md-nav-bar .md-button._md-nav-button{color:"{{warn-100}}"}md-nav-bar.md-THEME_NAME-theme.md-warn>.md-nav-bar .md-button._md-nav-button.md-active,md-nav-bar.md-THEME_NAME-theme.md-warn>.md-nav-bar .md-button._md-nav-button.md-focused{color:"{{warn-contrast}}"}md-nav-bar.md-THEME_NAME-theme.md-warn>.md-nav-bar .md-button._md-nav-button.md-focused{background:"{{warn-contrast-0.1}}"}md-nav-bar.md-THEME_NAME-theme.md-primary>.md-nav-bar{background-color:"{{primary-color}}"}md-nav-bar.md-THEME_NAME-theme.md-primary>.md-nav-bar .md-button._md-nav-button{color:"{{primary-100}}"}md-nav-bar.md-THEME_NAME-theme.md-primary>.md-nav-bar .md-button._md-nav-button.md-active,md-nav-bar.md-THEME_NAME-theme.md-primary>.md-nav-bar .md-button._md-nav-button.md-focused{color:"{{primary-contrast}}"}md-nav-bar.md-THEME_NAME-theme.md-primary>.md-nav-bar .md-button._md-nav-button.md-focused{background:"{{primary-contrast-0.1}}"}md-toolbar>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar{background-color:"{{primary-color}}"}md-toolbar>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button{color:"{{primary-100}}"}md-toolbar>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-active,md-toolbar>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-focused{color:"{{primary-contrast}}"}md-toolbar>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-focused{background:"{{primary-contrast-0.1}}"}md-toolbar.md-accent>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar{background-color:"{{accent-color}}"}md-toolbar.md-accent>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button{color:"{{accent-A100}}"}md-toolbar.md-accent>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-active,md-toolbar.md-accent>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-focused{color:"{{accent-contrast}}"}md-toolbar.md-accent>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-focused{background:"{{accent-contrast-0.1}}"}md-toolbar.md-accent>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar md-nav-ink-bar{color:"{{primary-600-1}}";background:"{{primary-600-1}}"}md-toolbar.md-warn>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar{background-color:"{{warn-color}}"}md-toolbar.md-warn>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button{color:"{{warn-100}}"}md-toolbar.md-warn>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-active,md-toolbar.md-warn>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-focused{color:"{{warn-contrast}}"}md-toolbar.md-warn>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-focused{background:"{{warn-contrast-0.1}}"}._md-panel-backdrop.md-THEME_NAME-theme{background-color:"{{background-900-1.0}}"}md-progress-circular.md-THEME_NAME-theme path{stroke:"{{primary-color}}"}md-progress-circular.md-THEME_NAME-theme.md-warn path{stroke:"{{warn-color}}"}md-progress-circular.md-THEME_NAME-theme.md-accent path{stroke:"{{accent-color}}"}md-progress-linear.md-THEME_NAME-theme .md-container{background-color:"{{primary-100}}"}md-progress-linear.md-THEME_NAME-theme .md-bar{background-color:"{{primary-color}}"}md-progress-linear.md-THEME_NAME-theme.md-warn .md-container{background-color:"{{warn-100}}"}md-progress-linear.md-THEME_NAME-theme.md-warn .md-bar{background-color:"{{warn-color}}"}md-progress-linear.md-THEME_NAME-theme.md-accent .md-container{background-color:"{{accent-100}}"}md-progress-linear.md-THEME_NAME-theme.md-accent .md-bar{background-color:"{{accent-color}}"}md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-primary .md-bar1{background-color:"{{primary-100}}"}md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-primary .md-dashed:before{background:radial-gradient("{{primary-100}}" 0,"{{primary-100}}" 16%,transparent 42%)}md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-warn .md-bar1{background-color:"{{warn-100}}"}md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-warn .md-dashed:before{background:radial-gradient("{{warn-100}}" 0,"{{warn-100}}" 16%,transparent 42%)}md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-accent .md-bar1{background-color:"{{accent-100}}"}md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-accent .md-dashed:before{background:radial-gradient("{{accent-100}}" 0,"{{accent-100}}" 16%,transparent 42%)}md-radio-button.md-THEME_NAME-theme .md-off{border-color:"{{foreground-2}}"}md-radio-button.md-THEME_NAME-theme .md-on{background-color:"{{accent-color-0.87}}"}md-radio-button.md-THEME_NAME-theme.md-checked .md-off{border-color:"{{accent-color-0.87}}"}md-radio-button.md-THEME_NAME-theme.md-checked .md-ink-ripple{color:"{{accent-color-0.87}}"}md-radio-button.md-THEME_NAME-theme .md-container .md-ripple{color:"{{accent-A700}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-on,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-on,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-on,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-on{background-color:"{{primary-color-0.87}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-off,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-off,md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-off,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-off{border-color:"{{primary-color-0.87}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ink-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-ink-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-ink-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-ink-ripple{color:"{{primary-color-0.87}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-container .md-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-container .md-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-container .md-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-container .md-ripple{color:"{{primary-600}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-on,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-on,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-on,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-on{background-color:"{{warn-color-0.87}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-off,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-off,md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-off,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-off{border-color:"{{warn-color-0.87}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-ink-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-ink-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-ink-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-ink-ripple{color:"{{warn-color-0.87}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-container .md-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-container .md-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-container .md-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-container .md-ripple{color:"{{warn-600}}"}md-radio-button.md-THEME_NAME-theme[disabled],md-radio-group.md-THEME_NAME-theme[disabled]{color:"{{foreground-3}}"}md-radio-button.md-THEME_NAME-theme[disabled] .md-container .md-off,md-radio-button.md-THEME_NAME-theme[disabled] .md-container .md-on,md-radio-group.md-THEME_NAME-theme[disabled] .md-container .md-off,md-radio-group.md-THEME_NAME-theme[disabled] .md-container .md-on{border-color:"{{foreground-3}}"}md-radio-group.md-THEME_NAME-theme .md-checked .md-ink-ripple{color:"{{accent-color-0.26}}"}md-radio-group.md-THEME_NAME-theme .md-checked:not([disabled]).md-primary .md-ink-ripple,md-radio-group.md-THEME_NAME-theme.md-primary .md-checked:not([disabled]) .md-ink-ripple{color:"{{primary-color-0.26}}"}md-radio-group.md-THEME_NAME-theme.md-focused.ng-empty>md-radio-button:first-child .md-container:before{background-color:"{{foreground-3-0.26}}"}md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty) .md-checked .md-container:before{background-color:"{{accent-color-0.26}}"}md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty) .md-checked.md-primary .md-container:before,md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty).md-primary .md-checked .md-container:before{background-color:"{{primary-color-0.26}}"}md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty) .md-checked.md-warn .md-container:before,md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty).md-warn .md-checked .md-container:before{background-color:"{{warn-color-0.26}}"}md-input-container md-select.md-THEME_NAME-theme .md-select-value span:first-child:after{color:"{{warn-A700}}"}md-input-container:not(.md-input-focused):not(.md-input-invalid) md-select.md-THEME_NAME-theme .md-select-value span:first-child:after{color:"{{foreground-3}}"}md-input-container.md-input-focused:not(.md-input-has-value) md-select.md-THEME_NAME-theme .md-select-value,md-input-container.md-input-focused:not(.md-input-has-value) md-select.md-THEME_NAME-theme .md-select-value.md-select-placeholder{color:"{{primary-color}}"}md-input-container.md-input-invalid md-select.md-THEME_NAME-theme .md-select-value{color:"{{warn-A700}}"!important;border-bottom-color:"{{warn-A700}}"!important}md-input-container.md-input-invalid md-select.md-THEME_NAME-theme.md-no-underline .md-select-value{border-bottom-color:transparent!important}md-input-container:not(.md-input-invalid).md-input-focused.md-accent .md-select-value{border-color:"{{accent-color}}"}md-input-container:not(.md-input-invalid).md-input-focused.md-accent .md-select-value span{color:"{{accent-color}}"}md-input-container:not(.md-input-invalid).md-input-focused.md-warn .md-select-value{border-color:"{{warn-A700}}"}md-input-container:not(.md-input-invalid).md-input-focused.md-warn .md-select-value span{color:"{{warn-A700}}"}md-select.md-THEME_NAME-theme[disabled] .md-select-value{border-bottom-color:transparent;background-image:linear-gradient(90deg,"{{foreground-3}}" 0,"{{foreground-3}}" 33%,transparent 0);background-image:-ms-linear-gradient(left,transparent 0,"{{foreground-3}}" 100%)}md-select.md-THEME_NAME-theme .md-select-value{border-bottom-color:"{{foreground-4}}"}md-select.md-THEME_NAME-theme .md-select-value.md-select-placeholder{color:"{{foreground-3}}"}md-select.md-THEME_NAME-theme .md-select-value span:first-child:after{color:"{{warn-A700}}"}md-select.md-THEME_NAME-theme.md-no-underline .md-select-value{border-bottom-color:transparent!important}md-select.md-THEME_NAME-theme.ng-invalid.ng-touched .md-select-value{color:"{{warn-A700}}"!important;border-bottom-color:"{{warn-A700}}"!important}md-select.md-THEME_NAME-theme.ng-invalid.ng-touched.md-no-underline .md-select-value{border-bottom-color:transparent!important}md-select.md-THEME_NAME-theme:not([disabled]):focus .md-select-value{border-bottom-color:"{{primary-color}}";color:"{{ foreground-1 }}"}md-select.md-THEME_NAME-theme:not([disabled]):focus .md-select-value.md-select-placeholder{color:"{{ foreground-1 }}"}md-select.md-THEME_NAME-theme:not([disabled]):focus.md-no-underline .md-select-value{border-bottom-color:transparent!important}md-select.md-THEME_NAME-theme:not([disabled]):focus.md-accent .md-select-value{border-bottom-color:"{{accent-color}}"}md-select.md-THEME_NAME-theme:not([disabled]):focus.md-warn .md-select-value{border-bottom-color:"{{warn-color}}"}md-select.md-THEME_NAME-theme[disabled] .md-select-icon,md-select.md-THEME_NAME-theme[disabled] .md-select-value,md-select.md-THEME_NAME-theme[disabled] .md-select-value.md-select-placeholder{color:"{{foreground-3}}"}md-select.md-THEME_NAME-theme .md-select-icon{color:"{{foreground-2}}"}md-select-menu.md-THEME_NAME-theme md-content{background-color:"{{background-hue-1}}"}md-select-menu.md-THEME_NAME-theme md-content md-optgroup{color:"{{foreground-2}}"}md-select-menu.md-THEME_NAME-theme md-content md-option{color:"{{foreground-1}}"}md-select-menu.md-THEME_NAME-theme md-content md-option[disabled] .md-text{color:"{{foreground-3}}"}md-select-menu.md-THEME_NAME-theme md-content md-option:not([disabled]):focus,md-select-menu.md-THEME_NAME-theme md-content md-option:not([disabled]):hover{background-color:"{{background-500-0.18}}"}md-select-menu.md-THEME_NAME-theme md-content md-option[selected]{color:"{{primary-500}}"}md-select-menu.md-THEME_NAME-theme md-content md-option[selected]:focus{color:"{{primary-600}}"}md-select-menu.md-THEME_NAME-theme md-content md-option[selected].md-accent{color:"{{accent-color}}"}md-select-menu.md-THEME_NAME-theme md-content md-option[selected].md-accent:focus{color:"{{accent-A700}}"}.md-checkbox-enabled.md-THEME_NAME-theme .md-ripple{color:"{{primary-600}}"}.md-checkbox-enabled.md-THEME_NAME-theme[selected] .md-ripple{color:"{{background-600}}"}.md-checkbox-enabled.md-THEME_NAME-theme .md-ink-ripple{color:"{{foreground-2}}"}.md-checkbox-enabled.md-THEME_NAME-theme[selected] .md-ink-ripple{color:"{{primary-color-0.87}}"}.md-checkbox-enabled.md-THEME_NAME-theme:not(.md-checked) .md-icon{border-color:"{{foreground-2}}"}.md-checkbox-enabled.md-THEME_NAME-theme[selected] .md-icon{background-color:"{{primary-color-0.87}}"}.md-checkbox-enabled.md-THEME_NAME-theme[selected].md-focused .md-container:before{background-color:"{{primary-color-0.26}}"}.md-checkbox-enabled.md-THEME_NAME-theme[selected] .md-icon:after{border-color:"{{primary-contrast-0.87}}"}.md-checkbox-enabled.md-THEME_NAME-theme .md-indeterminate[disabled] .md-container{color:"{{foreground-3}}"}.md-checkbox-enabled.md-THEME_NAME-theme md-option .md-text{color:"{{foreground-1}}"}md-sidenav.md-THEME_NAME-theme,md-sidenav.md-THEME_NAME-theme md-content{background-color:"{{background-hue-1}}"}md-slider.md-THEME_NAME-theme .md-track{background-color:"{{foreground-3}}"}md-slider.md-THEME_NAME-theme .md-track-ticks{color:"{{background-contrast}}"}md-slider.md-THEME_NAME-theme .md-focus-ring{background-color:"{{accent-A200-0.2}}"}md-slider.md-THEME_NAME-theme .md-disabled-thumb{border-color:"{{background-color}}";background-color:"{{background-color}}"}md-slider.md-THEME_NAME-theme.md-min .md-thumb:after{background-color:"{{background-color}}";border-color:"{{foreground-3}}"}md-slider.md-THEME_NAME-theme.md-min .md-focus-ring{background-color:"{{foreground-3-0.38}}"}md-slider.md-THEME_NAME-theme.md-min[md-discrete] .md-thumb:after{background-color:"{{background-contrast}}";border-color:transparent}md-slider.md-THEME_NAME-theme.md-min[md-discrete] .md-sign{background-color:"{{background-400}}"}md-slider.md-THEME_NAME-theme.md-min[md-discrete] .md-sign:after{border-top-color:"{{background-400}}"}md-slider.md-THEME_NAME-theme.md-min[md-discrete][md-vertical] .md-sign:after{border-top-color:transparent;border-left-color:"{{background-400}}"}md-slider.md-THEME_NAME-theme .md-track.md-track-fill{background-color:"{{accent-color}}"}md-slider.md-THEME_NAME-theme .md-thumb:after{border-color:"{{accent-color}}";background-color:"{{accent-color}}"}md-slider.md-THEME_NAME-theme .md-sign{background-color:"{{accent-color}}"}md-slider.md-THEME_NAME-theme .md-sign:after{border-top-color:"{{accent-color}}"}md-slider.md-THEME_NAME-theme[md-vertical] .md-sign:after{border-top-color:transparent;border-left-color:"{{accent-color}}"}md-slider.md-THEME_NAME-theme .md-thumb-text{color:"{{accent-contrast}}"}md-slider.md-THEME_NAME-theme.md-warn .md-focus-ring{background-color:"{{warn-200-0.38}}"}md-slider.md-THEME_NAME-theme.md-warn .md-track.md-track-fill{background-color:"{{warn-color}}"}md-slider.md-THEME_NAME-theme.md-warn .md-thumb:after{border-color:"{{warn-color}}";background-color:"{{warn-color}}"}md-slider.md-THEME_NAME-theme.md-warn .md-sign{background-color:"{{warn-color}}"}md-slider.md-THEME_NAME-theme.md-warn .md-sign:after{border-top-color:"{{warn-color}}"}md-slider.md-THEME_NAME-theme.md-warn[md-vertical] .md-sign:after{border-top-color:transparent;border-left-color:"{{warn-color}}"}md-slider.md-THEME_NAME-theme.md-warn .md-thumb-text{color:"{{warn-contrast}}"}md-slider.md-THEME_NAME-theme.md-primary .md-focus-ring{background-color:"{{primary-200-0.38}}"}md-slider.md-THEME_NAME-theme.md-primary .md-track.md-track-fill{background-color:"{{primary-color}}"}md-slider.md-THEME_NAME-theme.md-primary .md-thumb:after{border-color:"{{primary-color}}";background-color:"{{primary-color}}"}md-slider.md-THEME_NAME-theme.md-primary .md-sign{background-color:"{{primary-color}}"}md-slider.md-THEME_NAME-theme.md-primary .md-sign:after{border-top-color:"{{primary-color}}"}md-slider.md-THEME_NAME-theme.md-primary[md-vertical] .md-sign:after{border-top-color:transparent;border-left-color:"{{primary-color}}"}md-slider.md-THEME_NAME-theme.md-primary .md-thumb-text{color:"{{primary-contrast}}"}md-slider.md-THEME_NAME-theme[disabled] .md-thumb:after{border-color:transparent}md-slider.md-THEME_NAME-theme[disabled]:not(.md-min) .md-thumb:after,md-slider.md-THEME_NAME-theme[disabled][md-discrete] .md-thumb:after{background-color:"{{foreground-3}}";border-color:transparent}md-slider.md-THEME_NAME-theme[disabled][readonly] .md-sign{background-color:"{{background-400}}"}md-slider.md-THEME_NAME-theme[disabled][readonly] .md-sign:after{border-top-color:"{{background-400}}"}md-slider.md-THEME_NAME-theme[disabled][readonly][md-vertical] .md-sign:after{border-top-color:transparent;border-left-color:"{{background-400}}"}md-slider.md-THEME_NAME-theme[disabled][readonly] .md-disabled-thumb{border-color:transparent;background-color:transparent}md-slider-container[disabled]>:first-child:not(md-slider),md-slider-container[disabled]>:last-child:not(md-slider){color:"{{foreground-3}}"}.md-subheader.md-THEME_NAME-theme{color:"{{ foreground-2-0.23 }}";background-color:"{{background-default}}"}.md-subheader.md-THEME_NAME-theme.md-primary{color:"{{primary-color}}"}.md-subheader.md-THEME_NAME-theme.md-accent{color:"{{accent-color}}"}.md-subheader.md-THEME_NAME-theme.md-warn{color:"{{warn-color}}"}md-switch.md-THEME_NAME-theme .md-ink-ripple{color:"{{background-500}}"}md-switch.md-THEME_NAME-theme .md-thumb{background-color:"{{background-50}}"}md-switch.md-THEME_NAME-theme .md-bar{background-color:"{{background-500}}"}md-switch.md-THEME_NAME-theme.md-focused:not(.md-checked) .md-thumb:before,md-switch.md-THEME_NAME-theme.md-focused[disabled] .md-thumb:before{background-color:"{{foreground-4}}"}md-switch.md-THEME_NAME-theme.md-checked:not([disabled]) .md-ink-ripple{color:"{{accent-color}}"}md-switch.md-THEME_NAME-theme.md-checked:not([disabled]) .md-thumb{background-color:"{{accent-color}}"}md-switch.md-THEME_NAME-theme.md-checked:not([disabled]) .md-bar{background-color:"{{accent-color-0.5}}"}md-switch.md-THEME_NAME-theme.md-checked:not([disabled]).md-focused .md-thumb:before{background-color:"{{accent-color-0.26}}"}md-switch.md-THEME_NAME-theme.md-checked:not([disabled]).md-primary .md-ink-ripple{color:"{{primary-color}}"}md-switch.md-THEME_NAME-theme.md-checked:not([disabled]).md-primary .md-thumb{background-color:"{{primary-color}}"}md-switch.md-THEME_NAME-theme.md-checked:not([disabled]).md-primary .md-bar{background-color:"{{primary-color-0.5}}"}md-switch.md-THEME_NAME-theme.md-checked:not([disabled]).md-primary.md-focused .md-thumb:before{background-color:"{{primary-color-0.26}}"}md-switch.md-THEME_NAME-theme.md-checked:not([disabled]).md-warn .md-ink-ripple{color:"{{warn-color}}"}md-switch.md-THEME_NAME-theme.md-checked:not([disabled]).md-warn .md-thumb{background-color:"{{warn-color}}"}md-switch.md-THEME_NAME-theme.md-checked:not([disabled]).md-warn .md-bar{background-color:"{{warn-color-0.5}}"}md-switch.md-THEME_NAME-theme.md-checked:not([disabled]).md-warn.md-focused .md-thumb:before{background-color:"{{warn-color-0.26}}"}md-switch.md-THEME_NAME-theme[disabled] .md-thumb{background-color:"{{background-400}}"}md-switch.md-THEME_NAME-theme[disabled] .md-bar{background-color:"{{foreground-4}}"}md-tabs.md-THEME_NAME-theme md-tabs-wrapper{background-color:transparent;border-color:"{{foreground-4}}"}md-tabs.md-THEME_NAME-theme .md-paginator md-icon{color:"{{primary-color}}"}md-tabs.md-THEME_NAME-theme md-ink-bar{color:"{{accent-color}}";background:"{{accent-color}}"}md-tabs.md-THEME_NAME-theme .md-tab{color:"{{foreground-2}}"}md-tabs.md-THEME_NAME-theme .md-tab[disabled],md-tabs.md-THEME_NAME-theme .md-tab[disabled] md-icon{color:"{{foreground-3}}"}md-tabs.md-THEME_NAME-theme .md-tab.md-active,md-tabs.md-THEME_NAME-theme .md-tab.md-active md-icon,md-tabs.md-THEME_NAME-theme .md-tab.md-focused,md-tabs.md-THEME_NAME-theme .md-tab.md-focused md-icon{color:"{{primary-color}}"}md-tabs.md-THEME_NAME-theme .md-tab.md-focused{background:"{{primary-color-0.1}}"}md-tabs.md-THEME_NAME-theme .md-tab .md-ripple-container{color:"{{accent-A100}}"}md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper{background-color:"{{accent-color}}"}md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]),md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]) md-icon{color:"{{accent-A100}}"}md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active,md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active md-icon,md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused,md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused md-icon{color:"{{accent-contrast}}"}md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused{background:"{{accent-contrast-0.1}}"}md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-ink-bar{color:"{{primary-600-1}}";background:"{{primary-600-1}}"}md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper{background-color:"{{primary-color}}"}md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]),md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]) md-icon{color:"{{primary-100}}"}md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active,md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active md-icon,md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused,md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused md-icon{color:"{{primary-contrast}}"}md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused{background:"{{primary-contrast-0.1}}"}md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper{background-color:"{{warn-color}}"}md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]),md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]) md-icon{color:"{{warn-100}}"}md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active,md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active md-icon,md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused,md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused md-icon{color:"{{warn-contrast}}"}md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused{background:"{{warn-contrast-0.1}}"}md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper{background-color:"{{primary-color}}"}md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]),md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]) md-icon{color:"{{primary-100}}"}md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active,md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active md-icon,md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused,md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused md-icon{color:"{{primary-contrast}}"}md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused{background:"{{primary-contrast-0.1}}"}md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper{background-color:"{{accent-color}}"}md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]),md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]) md-icon{color:"{{accent-A100}}"}md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active,md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active md-icon,md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused,md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused md-icon{color:"{{accent-contrast}}"}md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused{background:"{{accent-contrast-0.1}}"}md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-ink-bar{color:"{{primary-600-1}}";background:"{{primary-600-1}}"}md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper{background-color:"{{warn-color}}"}md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]),md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]) md-icon{color:"{{warn-100}}"}md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active,md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active md-icon,md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused,md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused md-icon{color:"{{warn-contrast}}"}md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused{background:"{{warn-contrast-0.1}}"}md-toast.md-THEME_NAME-theme .md-toast-content{background-color:#323232;color:"{{background-50}}"}md-toast.md-THEME_NAME-theme .md-toast-content .md-button{color:"{{background-50}}"}md-toast.md-THEME_NAME-theme .md-toast-content .md-button.md-highlight{color:"{{accent-color}}"}md-toast.md-THEME_NAME-theme .md-toast-content .md-button.md-highlight.md-primary{color:"{{primary-color}}"}md-toast.md-THEME_NAME-theme .md-toast-content .md-button.md-highlight.md-warn{color:"{{warn-color}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar){background-color:"{{primary-color}}";color:"{{primary-contrast}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar) md-icon{color:"{{primary-contrast}}";fill:"{{primary-contrast}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar) .md-button[disabled] md-icon{color:"{{primary-contrast-0.26}}";fill:"{{primary-contrast-0.26}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar).md-accent{background-color:"{{accent-color}}";color:"{{accent-contrast}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar).md-accent .md-ink-ripple{color:"{{accent-contrast}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar).md-accent md-icon{color:"{{accent-contrast}}";fill:"{{accent-contrast}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar).md-accent .md-button[disabled] md-icon{color:"{{accent-contrast-0.26}}";fill:"{{accent-contrast-0.26}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar).md-warn{background-color:"{{warn-color}}";color:"{{warn-contrast}}"}.md-panel.md-tooltip.md-THEME_NAME-theme{color:"{{background-700-contrast}}";background-color:"{{background-700}}"}body.md-THEME_NAME-theme,html.md-THEME_NAME-theme{color:"{{foreground-1}}";background-color:"{{background-color}}"}')
35730 }(window, window.angular), window.ngMaterial = {
35736 angular.module("ngCsv.config", []).value("ngCsv.config", {
35738 }).config(["$compileProvider", function(e) {
35739 angular.isDefined(e.urlSanitizationWhitelist) ? e.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/) : e.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/)
35740 }]), angular.module("ngCsv.directives", ["ngCsv.services"]), angular.module("ngCsv.services", []), angular.module("ngCsv", ["ngCsv.config", "ngCsv.services", "ngCsv.directives", "ngSanitize"]), "undefined" != typeof module && "undefined" != typeof exports && module.exports === exports && (module.exports = "ngCsv"), angular.module("ngCsv.services").service("CSV", ["$q", function(n) {
35748 this.stringifyField = function(e, t) {
35749 return "locale" === t.decimalSep && this.isFloat(e) ? e.toLocaleString() : "." !== t.decimalSep && this.isFloat(e) ? e.toString().replace(".", t.decimalSep) : "string" == typeof e ? (e = e.replace(/"/g, '""'), (t.quoteStrings || -1 < e.indexOf(",") || -1 < e.indexOf("\n") || -1 < e.indexOf("\r")) && (e = t.txtDelim + e + t.txtDelim), e) : "boolean" == typeof e ? e ? "TRUE" : "FALSE" : e
35750 }, this.isFloat = function(e) {
35751 return +e === e && (!isFinite(e) || Boolean(e % 1))
35752 }, this.stringify = function(e, s) {
35757 t = n.when(e).then(function(e) {
35759 angular.isDefined(s.header) && s.header && (t = [], angular.forEach(s.header, function(e, t) {
35760 this.push(c.stringifyField(e, s))
35761 }, t), n = t.join(s.fieldSep ? s.fieldSep : ","), d += n + "\r\n");
35763 if (angular.isArray(e) ? a = e : angular.isFunction(e) && (a = e()), angular.isDefined(s.label) && s.label && "boolean" == typeof s.label) {
35766 var o = s.columnOrder ? s.columnOrder : a[0];
35767 angular.forEach(o, function(e, t) {
35768 var n = s.columnOrder ? e : t;
35769 this.push(c.stringifyField(n, s))
35770 }, r), i = r.join(s.fieldSep ? s.fieldSep : ","), d += i + "\r\n"
35772 angular.forEach(a, function(e, t) {
35773 var n, r, i = angular.copy(a[t]);
35775 var o = s.columnOrder ? s.columnOrder : i;
35776 angular.forEach(o, function(e, t) {
35777 var n = s.columnOrder ? i[e] : e;
35778 this.push(c.stringifyField(n, s))
35779 }, r), n = r.join(s.fieldSep ? s.fieldSep : ","), d += t < a.length ? n + "\r\n" : n
35780 }), s.addByteOrderMarker && (u += "\ufeff"), u += d, l.resolve(u)
35782 return "function" == typeof t.catch && t.catch(function(e) {
35785 }, this.isSpecialChar = function(e) {
35786 return void 0 !== t[e]
35787 }, this.getSpecialChar = function(e) {
35790 }]), angular.module("ngCsv.directives").directive("ngCsv", ["$parse", "$q", "CSV", "$document", "$timeout", function(e, a, s, o, l) {
35795 filename: "@filename",
35796 header: "&csvHeader",
35797 columnOrder: "&csvColumnOrder",
35798 txtDelim: "@textDelimiter",
35799 decimalSep: "@decimalSeparator",
35800 quoteStrings: "@quoteStrings",
35801 fieldSep: "@fieldSeparator",
35802 lazyLoad: "@lazyLoad",
35803 addByteOrderMarker: "@addBom",
35805 charset: "@charset",
35808 controller: ["$scope", "$element", "$attrs", "$transclude", function(r, i, o, e) {
35809 r.csv = "", angular.isDefined(r.lazyLoad) && "true" == r.lazyLoad || angular.isArray(r.data) && r.$watch("data", function(e) {
35811 }, !0), r.getFilename = function() {
35812 return r.filename || "download.csv"
35813 }, r.buildCSV = function() {
35814 var e, t = a.defer(),
35816 return i.addClass(o.ngCsvLoadingClass || "ng-csv-loading"), n = r.data(), angular.isFunction(n) && (n = n()), s.stringify(n, (e = {
35817 txtDelim: r.txtDelim ? r.txtDelim : '"',
35818 decimalSep: r.decimalSep ? r.decimalSep : ".",
35819 quoteStrings: r.quoteStrings,
35820 addByteOrderMarker: r.addByteOrderMarker
35821 }, angular.isDefined(o.csvHeader) && (e.header = r.$eval(r.header)), angular.isDefined(o.csvColumnOrder) && (e.columnOrder = r.$eval(r.columnOrder)), angular.isDefined(o.csvLabel) && (e.label = r.$eval(r.label)), e.fieldSep = r.fieldSep ? r.fieldSep : ",", e.fieldSep = s.isSpecialChar(e.fieldSep) ? s.getSpecialChar(e.fieldSep) : e.fieldSep, e)).then(function(e) {
35822 r.csv = e, i.removeClass(o.ngCsvLoadingClass || "ng-csv-loading"), t.resolve(e)
35823 }), r.$apply(), t.promise
35826 link: function(i, e, t) {
35827 e.bind("click", function(e) {
35828 i.buildCSV().then(function(e) {
35830 var e = i.charset || "utf-8",
35831 t = new Blob([i.csv], {
35832 type: "text/csv;charset=" + e + ";"
35834 if (c.navigator.msSaveOrOpenBlob) navigator.msSaveBlob(t, i.getFilename());
35836 var n = angular.element('<div data-tap-disabled="true"><a></a></div>'),
35837 r = angular.element(n.children()[0]);
35838 r.attr("href", c.URL.createObjectURL(t)), r.attr("download", i.getFilename()), o.find("body").append(n), l(function() {
35839 r[0].click(), r.remove()
35848 }(window, document), angular.module("ngRateIt", ["ng"]).directive("ngRateIt", ["$q", function(r) {
35856 readOnly: "&?readOnly",
35857 pristine: "=?pristine",
35858 resetable: "&?resetable",
35859 starWidth: "=?starWidth",
35860 starHeight: "=?starHeight",
35861 canelWidth: "=?canelWidth",
35862 cancelHeight: "=?cancelHeight",
35865 beforeRated: "&?beforeRated",
35866 beforeReset: "&?beforeReset"
35868 templateUrl: "ngRateIt/ng-rate-it.html",
35869 require: "ngModel",
35871 link: function(e, t, n) {
35872 n.readOnly || (e.readOnly = function() {
35874 }), n.resetable || (e.resetable = function() {
35876 }), n.beforeRated || (e.beforeRated = function() {
35878 return e.resolve(), e.promise
35879 }), n.rated || (e.rated = function() {}), n.beforeReset || (e.beforeReset = function() {
35881 return e.resolve(), e.promise
35882 }), n.reset || (e.reset = function() {})
35884 controller: "ngRateItController"
35886 }]).controller("ngRateItController", ["$scope", "$timeout", function(n, r) {
35888 n.isTouch = !!window.hasOwnProperty("ontouchstart") || 0 < window.navigator.msMaxTouchPoints, n.orgValue = angular.copy(n.ngModel), n.min = n.min || 0, n.max = n.max || 5, n.step = n.step || .5, n.pristine = n.orgValue === n.ngModel, n.starWidth = n.starWidth || 16, n.starPartWidth = n.starWidth * n.step, n.starHeight = n.starHeight || 16, n.canelWidth = n.canelWidth || n.starWidth, n.cancelHeight = n.cancelHeight || n.starHeight;
35889 var t = n.max - n.min,
35891 e = n.$watch("ngModel", function() {
35892 n.pristine = n.orgValue === n.ngModel
35895 return (e + 1) / i * t
35897 n.getStartParts = function() {
35898 return new Array(i)
35899 }, n.getStarOffset = function(e) {
35900 var t = 1 / n.step;
35901 return -n.starWidth / t * (e % t)
35902 }, n.isSelected = function(e) {
35903 return o(e) <= n.ngModel - n.min
35904 }, n.removeRating = function() {
35905 n.resetable() && !n.readOnly() && n.beforeReset({
35907 }).then(function() {
35908 n.ngModel = n.min, n.reset({
35912 }, n.setValue = function(e) {
35913 if (!n.readOnly()) {
35914 var t = angular.copy(n.min + o(e));
35917 }).then(function() {
35918 n.ngModel = t, r(function() {
35925 }, n.$on("$destroy", function() {
35928 }]).run(["$templateCache", function(e) {
35930 e.put("ngRateIt/ng-rate-it.html", '<div class="ngrateit" ng-class="{\'ngrateit-readonly\': readOnly()}"><a ng-if="!readOnly() && resetable()"ng-click="removeRating()"class="ngrateit-reset ngrateit-star"ng-style="{\'width\': canelWidth+\'px\', \'height\':cancelHeight+\'px\'}"></a><div ng-if="!hide" id="origin" class="ngrateit-rating" ng-class="{\'ngrateit-hashover\':!isTouch}"><span class="ngrateit-star ngrateit-bg-star"ng-repeat="i in getStartParts() track by $index" ng-class="{\'ngrateit-selected\': isSelected($index) }"ng-click="setValue($index)"' + "ng-style=\"{'width': starPartWidth+'px', 'height':starHeight+'px', 'background-position': getStarOffset($index)+'px 0'}\"></span></div></div>")
35933 if ("function" == typeof define && define.amd) define(["jquery"], e);
35934 else if ("object" == typeof module && module.exports) {
35935 var t = require("jquery");
35936 module.exports = e(t)
35939 if (void 0 === e) throw new Error("jQuery.textcomplete requires jQuery");
35941 return function(o) {
35944 o.fn.textcomplete = function(t, n) {
35945 var i = Array.prototype.slice.call(arguments);
35946 return this.each(function() {
35948 r = e.data("textComplete");
35949 if (r || (n || (n = {}), n._oid = a++, r = new o.fn.textcomplete.Completer(this, n), e.data("textComplete", r)), "string" == typeof t) {
35951 i.shift(), r[t].apply(r, i), "destroy" === t && e.removeData("textComplete")
35952 } else o.each(t, function(n) {
35953 o.each(["header", "footer", "placement", "maxCount"], function(e) {
35955 n[e] && (r.option[e] = n[e], t = e + "as a strategy param is deprecated. Use option.", console.warn && console.warn(t), delete n[e])
35957 }), r.register(o.fn.textcomplete.Strategy.parse(t, {
35966 var r, i, o, a = 0,
35970 if (this.$el = s(e), this.id = "textcomplete" + a++, this.strategies = [], this.views = [], this.option = s.extend({}, c.defaults, t), !(this.$el.is("input[type=text]") || this.$el.is("input[type=search]") || this.$el.is("textarea") || e.isContentEditable || "true" == e.contentEditable)) throw new Error("textcomplete must be called on a Textarea or a ContentEditable.");
35971 if (e === e.ownerDocument.activeElement) this.initialize();
35974 this.$el.one("focus." + this.id, function() {
35976 }), this.option.adapter && "CKEditor" != this.option.adapter || "undefined" == typeof CKEDITOR || !this.$el.is("textarea") || CKEDITOR.on("instanceReady", function(t) {
35977 -1 == s.inArray(t.editor.id, l) && (l.push(t.editor.id), t.editor.on("focus", function(e) {
35978 n.$el = s(t.editor.editable().$), n.option.adapter || (n.option.adapter = s.fn.textcomplete.CKEditor), n.option.ckeditor_instance = t.editor, n.initialize()
35986 dropdownClassName: "dropdown-menu textcomplete-dropdown",
35989 rightEdgeOffset: 30
35990 }, s.extend(c.prototype, {
35998 initialize: function() {
35999 var e, t, n = this.$el.get(0);
36000 if (this.$el.prop("ownerDocument") !== document && window.frames.length)
36001 for (var r = 0; r < window.frames.length; r++)
36002 if (this.$el.prop("ownerDocument") === window.frames[r].document) {
36003 this.$iframe = s(window.frames[r].frameElement);
36005 } this.dropdown = new s.fn.textcomplete.Dropdown(n, this, this.option), e = this.option.adapter ? this.option.adapter : (t = this.$el.is("textarea") || this.$el.is("input[type=text]") || this.$el.is("input[type=search]") ? "number" == typeof n.selectionEnd ? "Textarea" : "IETextarea" : "ContentEditable", s.fn.textcomplete[t]), this.adapter = new e(n, this, this.option)
36007 destroy: function() {
36008 this.$el.off("." + this.id), this.adapter && this.adapter.destroy(), this.dropdown && this.dropdown.destroy(), this.$el = this.adapter = this.dropdown = null
36010 deactivate: function() {
36011 this.dropdown && this.dropdown.deactivate()
36013 trigger: function(e, t) {
36014 this.dropdown || this.initialize(), null != e || (e = this.adapter.getTextFromHeadToCaret());
36015 var n = this._extractSearchQuery(e);
36018 if (t && this._term === r && "" !== r) return;
36019 this._term = r, this._search.apply(this, n)
36020 } else this._term = null, this.dropdown.deactivate()
36022 fire: function(e) {
36023 var t = Array.prototype.slice.call(arguments, 1);
36024 return this.$el.trigger(e, t), this
36026 register: function(e) {
36027 Array.prototype.push.apply(this.strategies, e)
36029 select: function(e, t, n) {
36030 this._term = null, this.adapter.select(e, t, n), this.fire("change").fire("textComplete:select", e, t), this.adapter.focus()
36034 _extractSearchQuery: function(e) {
36035 for (var t = 0; t < this.strategies.length; t++) {
36036 var n = this.strategies[t],
36038 if (r || "" === r) {
36039 var i = s.isFunction(n.match) ? n.match(e) : n.match;
36040 a = r, "[object String]" === Object.prototype.toString.call(a) && (e = r);
36041 var o = e.match(i);
36042 if (o) return [n, o[n.index], o]
36048 _search: (r = function(n, r, i, e) {
36050 r.search(i, function(e, t) {
36051 o.dropdown.shown || o.dropdown.activate(), o._clearAtNext && (o.dropdown.clear(), o._clearAtNext = !1), o.dropdown.setPosition(o.adapter.getCaretPosition()), o.dropdown.render(o._zip(e, r, i)), t || (n(), o._clearAtNext = !0)
36054 var e = Array.prototype.slice.call(arguments);
36059 e.unshift(function e() {
36062 o = void 0, t.unshift(e), r.apply(n, t)
36064 }), r.apply(this, e)
36067 _zip: function(e, t, n) {
36068 return s.map(e, function(e) {
36076 }), s.fn.textcomplete.Completer = c
36081 a = function(e, t) {
36082 var n, r, i = t.strategy.idProperty;
36083 for (n = 0; n < e.length; n++)
36084 if ((r = e[n]).strategy === t.strategy)
36086 if (r.value[i] === t.value[i]) return !0
36087 } else if (r.value === t.value) return !0;
36091 i(document).on("click", function(e) {
36092 var n = e.originalEvent && e.originalEvent.keepTextCompleteDropdown;
36093 i.each(s, function(e, t) {
36094 e !== n && t.deactivate()
36107 function l(e, t, n) {
36108 this.$el = l.createElement(n), this.completer = t, this.id = t.id + "dropdown", this._data = [], this.$inputEl = i(e), (this.option = n).listPosition && (this.setPosition = n.listPosition), n.height && this.$el.height(n.height);
36110 i.each(["maxCount", "placement", "footer", "header", "noResultsMessage", "className"], function(e, t) {
36111 null != n[t] && (r[t] = n[t])
36112 }), this._bindEvents(e), s[this.id] = this
36115 createElement: function(e) {
36116 var t = e.appendTo;
36117 return t instanceof i || (t = i(t)), i("<ul></ul>").addClass(e.dropdownClassName).attr("id", "textcomplete-dropdown-" + e._oid).css({
36120 position: "absolute",
36124 }), i.extend(l.prototype, {
36136 destroy: function() {
36137 this.deactivate(), this.$el.off("." + this.id), this.$inputEl.off("." + this.id), this.clear(), this.$el.remove(), this.$el = this.$inputEl = this.completer = null, delete s[this.id]
36139 render: function(e) {
36140 var t = this._buildContents(e),
36141 n = i.map(e, function(e) {
36145 var r = e[0].strategy;
36146 r.id ? this.$el.attr("data-strategy", r.id) : this.$el.removeAttr("data-strategy"), this._renderHeader(n), this._renderFooter(n), t && (this._renderContents(t), this._fitToBottom(), this._fitToRight(), this._activateIndexedItem()), this._setScroll()
36147 } else this.noResultsMessage ? this._renderNoResultsMessage(n) : this.shown && this.deactivate()
36149 setPosition: function(e) {
36150 var t = "absolute";
36151 return this.$inputEl.add(this.$inputEl.parents()).each(function() {
36152 return "absolute" !== i(this).css("position") && ("fixed" === i(this).css("position") ? (e.top -= o.scrollTop(), e.left -= o.scrollLeft(), !(t = "fixed")) : void 0)
36153 }), this.$el.css(this._applyPlacement(e)), this.$el.css({
36157 clear: function() {
36158 this.$el.html(""), this.data = [], this._index = 0, this._$header = this._$footer = this._$noResultsMessage = null
36160 activate: function() {
36161 return this.shown || (this.clear(), this.$el.show(), this.className && this.$el.addClass(this.className), this.completer.fire("textComplete:show"), this.shown = !0), this
36163 deactivate: function() {
36164 return this.shown && (this.$el.hide(), this.className && this.$el.removeClass(this.className), this.completer.fire("textComplete:hide"), this.shown = !1), this
36166 isUp: function(e) {
36167 return 38 === e.keyCode || e.ctrlKey && 80 === e.keyCode
36169 isDown: function(e) {
36170 return 40 === e.keyCode || e.ctrlKey && 78 === e.keyCode
36172 isEnter: function(e) {
36173 return !(e.ctrlKey || e.altKey || e.metaKey || e.shiftKey) && (13 === e.keyCode || 9 === e.keyCode || !0 === this.option.completeOnSpace && 32 === e.keyCode)
36175 isPageup: function(e) {
36176 return 33 === e.keyCode
36178 isPagedown: function(e) {
36179 return 34 === e.keyCode
36181 isEscape: function(e) {
36182 return 27 === e.keyCode
36187 _$noResultsMessage: null,
36189 _bindEvents: function() {
36190 this.$el.on("mousedown." + this.id, ".textcomplete-item", i.proxy(this._onClick, this)), this.$el.on("touchstart." + this.id, ".textcomplete-item", i.proxy(this._onClick, this)), this.$el.on("mouseover." + this.id, ".textcomplete-item", i.proxy(this._onMouseover, this)), this.$inputEl.on("keydown." + this.id, i.proxy(this._onKeydown, this))
36192 _onClick: function(e) {
36193 var t = i(e.target);
36194 e.preventDefault(), e.originalEvent.keepTextCompleteDropdown = this.id, t.hasClass("textcomplete-item") || (t = t.closest(".textcomplete-item"));
36195 var n = this.data[parseInt(t.data("index"), 10)];
36196 this.completer.select(n.value, n.strategy, e);
36198 setTimeout(function() {
36199 r.deactivate(), "touchstart" === e.type && r.$inputEl.focus()
36202 _onMouseover: function(e) {
36203 var t = i(e.target);
36204 e.preventDefault(), t.hasClass("textcomplete-item") || (t = t.closest(".textcomplete-item")), this._index = parseInt(t.data("index"), 10), this._activateIndexedItem()
36206 _onKeydown: function(e) {
36208 if (this.shown) switch (i.isFunction(this.option.onKeydown) && (t = this.option.onKeydown(e, n)), null == t && (t = this._defaultKeydown(e)), t) {
36210 e.preventDefault(), this._up();
36213 e.preventDefault(), this._down();
36216 e.preventDefault(), this._enter(e);
36219 e.preventDefault(), this._pageup();
36221 case n.KEY_PAGEDOWN:
36222 e.preventDefault(), this._pagedown();
36225 e.preventDefault(), this.deactivate()
36228 _defaultKeydown: function(e) {
36229 return this.isUp(e) ? n.KEY_UP : this.isDown(e) ? n.KEY_DOWN : this.isEnter(e) ? n.KEY_ENTER : this.isPageup(e) ? n.KEY_PAGEUP : this.isPagedown(e) ? n.KEY_PAGEDOWN : this.isEscape(e) ? n.KEY_ESCAPE : void 0
36232 0 === this._index ? this._index = this.data.length - 1 : this._index -= 1, this._activateIndexedItem(), this._setScroll()
36234 _down: function() {
36235 this._index === this.data.length - 1 ? this._index = 0 : this._index += 1, this._activateIndexedItem(), this._setScroll()
36237 _enter: function(e) {
36238 var t = this.data[parseInt(this._getActiveElement().data("index"), 10)];
36239 this.completer.select(t.value, t.strategy, e), this.deactivate()
36241 _pageup: function() {
36243 n = this._getActiveElement().position().top - this.$el.innerHeight();
36244 this.$el.children().each(function(e) {
36245 if (i(this).position().top + i(this).outerHeight() > n) return t = e, !1
36246 }), this._index = t, this._activateIndexedItem(), this._setScroll()
36248 _pagedown: function() {
36249 var t = this.data.length - 1,
36250 n = this._getActiveElement().position().top + this.$el.innerHeight();
36251 this.$el.children().each(function(e) {
36252 if (i(this).position().top > n) return t = e, !1
36253 }), this._index = t, this._activateIndexedItem(), this._setScroll()
36255 _activateIndexedItem: function() {
36256 this.$el.find(".textcomplete-item.active").removeClass("active"), this._getActiveElement().addClass("active")
36258 _getActiveElement: function() {
36259 return this.$el.children(".textcomplete-item:nth(" + this._index + ")")
36261 _setScroll: function() {
36262 var e = this._getActiveElement(),
36263 t = e.position().top,
36264 n = e.outerHeight(),
36265 r = this.$el.innerHeight(),
36266 i = this.$el.scrollTop();
36267 0 === this._index || this._index == this.data.length - 1 || t < 0 ? this.$el.scrollTop(t + i) : r < t + n && this.$el.scrollTop(t + n + i - r)
36269 _buildContents: function(e) {
36270 var t, n, r, i = "";
36271 for (n = 0; n < e.length && this.data.length !== this.maxCount; n++) t = e[n], a(this.data, t) || (r = this.data.length, this.data.push(t), i += '<li class="textcomplete-item" data-index="' + r + '"><a>', i += t.strategy.template(t.value, t.term), i += "</a></li>");
36274 _renderHeader: function(e) {
36276 this._$header || (this._$header = i('<li class="textcomplete-header"></li>').prependTo(this.$el));
36277 var t = i.isFunction(this.header) ? this.header(e) : this.header;
36278 this._$header.html(t)
36281 _renderFooter: function(e) {
36283 this._$footer || (this._$footer = i('<li class="textcomplete-footer"></li>').appendTo(this.$el));
36284 var t = i.isFunction(this.footer) ? this.footer(e) : this.footer;
36285 this._$footer.html(t)
36288 _renderNoResultsMessage: function(e) {
36289 if (this.noResultsMessage) {
36290 this._$noResultsMessage || (this._$noResultsMessage = i('<li class="textcomplete-no-results-message"></li>').appendTo(this.$el));
36291 var t = i.isFunction(this.noResultsMessage) ? this.noResultsMessage(e) : this.noResultsMessage;
36292 this._$noResultsMessage.html(t)
36295 _renderContents: function(e) {
36296 this._$footer ? this._$footer.before(e) : this.$el.append(e)
36298 _fitToBottom: function() {
36299 var e = o.scrollTop() + o.height(),
36300 t = this.$el.height();
36301 this.$el.position().top + t > e && (this.completer.$iframe || this.$el.offset({
36305 _fitToRight: function() {
36306 for (var e, t = this.option.rightEdgeOffset, n = this.$el.offset().left, r = this.$el.width(), i = o.width() - t; i < n + r && (this.$el.offset({
36308 }), !(n <= (e = this.$el.offset().left)));) n = e
36310 _applyPlacement: function(e) {
36311 return -1 !== this.placement.indexOf("top") ? e = {
36313 bottom: this.$el.parent().height() - e.top + e.lineHeight,
36315 } : (e.bottom = "auto", delete e.lineHeight), -1 !== this.placement.indexOf("absleft") ? e.left = 0 : -1 !== this.placement.indexOf("absright") && (e.right = 0, e.left = "auto"), e
36317 }), i.fn.textcomplete.Dropdown = l, i.extend(i.fn.textcomplete, n)
36324 t.extend(this, e), this.cache && (this.search = (r = this.search, i = {}, function(t, n) {
36325 i[t] ? n(i[t]) : r.call(this, t, function(e) {
36326 i[t] = (i[t] || []).concat(e), n.apply(null, arguments)
36330 r.parse = function(e, n) {
36331 return t.map(e, function(e) {
36333 return t.el = n.el, t.$el = n.$el, t
36335 }, t.extend(r.prototype, {
36341 context: function() {
36345 template: function(e) {
36349 }), t.fn.textcomplete.Strategy = r
36353 var f = Date.now || function() {
36354 return (new Date).getTime()
36358 d.extend(e.prototype, {
36364 initialize: function(e, t, n) {
36365 var r, i, o, a, s, l, c, u;
36366 this.el = e, this.$el = d(e), this.id = t.id + this.constructor.name, this.completer = t, this.option = n, this.option.debounce && (this._onKeyup = (r = this._onKeyup, i = this.option.debounce, u = function() {
36368 e < i ? o = setTimeout(u, i - e) : (o = null, c = r.apply(s, a), s = a = null)
36370 return s = this, a = arguments, l = f(), o || (o = setTimeout(u, i)), c
36371 })), this._bindEvents()
36373 destroy: function() {
36374 this.$el.off("." + this.id), this.$el = this.el = this.completer = null
36376 select: function() {
36377 throw new Error("Not implemented")
36379 getCaretPosition: function() {
36380 var e = this._getCaretRelativePosition(),
36381 t = this.$el.offset(),
36382 n = this.option.appendTo;
36384 n instanceof d || (n = d(n));
36385 var r = n.offsetParent().offset();
36386 t.top -= r.top, t.left -= r.left
36388 return e.top += t.top, e.left += t.left, e
36390 focus: function() {
36393 _bindEvents: function() {
36394 this.$el.on("keyup." + this.id, d.proxy(this._onKeyup, this))
36396 _onKeyup: function(e) {
36397 this._skipSearch(e) || this.completer.trigger(this.getTextFromHeadToCaret(), !0)
36399 _skipSearch: function(e) {
36400 switch (e.keyCode) {
36413 if (e.ctrlKey) switch (e.keyCode) {
36419 }), d.fn.textcomplete.Adapter = e
36424 function e(e, t, n) {
36425 this.initialize(e, t, n)
36427 s.extend(e.prototype, s.fn.textcomplete.Adapter.prototype, {
36428 select: function(e, t, n) {
36429 var r, i = this.getTextFromHeadToCaret(),
36430 o = this.el.value.substring(this.el.selectionEnd),
36431 a = t.replace(e, n);
36432 void 0 !== a && (s.isArray(a) && (o = a[1] + o, a = a[0]), r = s.isFunction(t.match) ? t.match(i) : t.match, i = i.replace(r, a), this.$el.val(i + o), this.el.selectionStart = this.el.selectionEnd = i.length)
36434 getTextFromHeadToCaret: function() {
36435 return this.el.value.substring(0, this.el.selectionEnd)
36437 _getCaretRelativePosition: function() {
36438 var e = s.fn.textcomplete.getCaretCoordinates(this.el, this.el.selectionStart);
36440 top: e.top + this._calculateLineHeight() - this.$el.scrollTop(),
36441 left: e.left - this.$el.scrollLeft(),
36442 lineHeight: this._calculateLineHeight()
36445 _calculateLineHeight: function() {
36446 var e = parseInt(this.$el.css("line-height"), 10);
36448 var t = this.el.parentNode,
36449 n = document.createElement(this.el.nodeName),
36451 n.setAttribute("style", "margin:0px;padding:0px;font-family:" + r.fontFamily + ";font-size:" + r.fontSize), n.innerHTML = "test", t.appendChild(n), e = n.clientHeight, t.removeChild(n)
36455 }), s.fn.textcomplete.Textarea = e
36460 function e(e, t, n) {
36461 this.initialize(e, t, n), l("<span>吶</span>").css({
36462 position: "absolute",
36467 l.extend(e.prototype, l.fn.textcomplete.Textarea.prototype, {
36468 select: function(e, t, n) {
36469 var r, i = this.getTextFromHeadToCaret(),
36470 o = this.el.value.substring(i.length),
36471 a = t.replace(e, n);
36472 if (void 0 !== a) {
36473 l.isArray(a) && (o = a[1] + o, a = a[0]), r = l.isFunction(t.match) ? t.match(i) : t.match, i = i.replace(r, a), this.$el.val(i + o), this.el.focus();
36474 var s = this.el.createTextRange();
36475 s.collapse(!0), s.moveEnd("character", i.length), s.moveStart("character", i.length), s.select()
36478 getTextFromHeadToCaret: function() {
36480 var e = document.selection.createRange();
36481 e.moveStart("character", -this.el.value.length);
36482 var t = e.text.split("吶");
36483 return 1 === t.length ? t[0] : t[1]
36485 }), l.fn.textcomplete.IETextarea = e
36490 function e(e, t, n) {
36491 this.initialize(e, t, n)
36493 m.extend(e.prototype, m.fn.textcomplete.Adapter.prototype, {
36494 select: function(e, t, n) {
36495 var r = this.getTextFromHeadToCaret(),
36496 i = this.el.ownerDocument.getSelection(),
36497 o = i.getRangeAt(0),
36498 a = o.cloneRange();
36499 a.selectNodeContents(o.startContainer);
36500 var s, l = a.toString().substring(o.startOffset),
36501 c = t.replace(e, n);
36502 if (void 0 !== c) {
36503 m.isArray(c) && (l = c[1] + l, c = c[0]), s = m.isFunction(t.match) ? t.match(r) : t.match, r = r.replace(s, c).replace(/ $/, " "), o.selectNodeContents(o.startContainer), o.deleteContents();
36504 var u = this.el.ownerDocument.createElement("div");
36506 var d = this.el.ownerDocument.createElement("div");
36508 for (var f, h, p = this.el.ownerDocument.createDocumentFragment(); f = u.firstChild;) h = p.appendChild(f);
36509 for (; f = d.firstChild;) p.appendChild(f);
36510 o.insertNode(p), o.setStartAfter(h), o.collapse(!0), i.removeAllRanges(), i.addRange(o)
36513 _getCaretRelativePosition: function() {
36514 var e = this.el.ownerDocument.getSelection().getRangeAt(0).cloneRange(),
36515 t = e.endContainer.parentNode,
36516 n = this.el.ownerDocument.createElement("span");
36517 e.insertNode(n), e.selectNodeContents(n), e.deleteContents(), setTimeout(function() {
36522 if (i.left -= this.$el.offset().left, i.top += r.height() - this.$el.offset().top, i.lineHeight = r.height(), this.completer.$iframe) {
36523 var o = this.completer.$iframe.offset();
36524 i.top += o.top, i.left += o.left, i.top -= m(this.completer.$iframe[0].contentWindow.document).scrollTop()
36526 return r.remove(), i
36528 getTextFromHeadToCaret: function() {
36529 var e = this.el.ownerDocument.getSelection().getRangeAt(0),
36530 t = e.cloneRange();
36531 return t.selectNodeContents(e.startContainer), t.toString().substring(0, e.startOffset)
36533 }), m.fn.textcomplete.ContentEditable = e
36538 function t(e, t, n) {
36539 this.initialize(e, t, n)
36541 e.extend(t.prototype, e.fn.textcomplete.ContentEditable.prototype, {
36542 _bindEvents: function() {
36544 this.option.ckeditor_instance.on("key", function(e) {
36546 if (n._onKeyup(t), n.completer.dropdown.shown && n._skipSearch(t)) return !1
36547 }, null, null, 1), this.$el.on("keyup." + this.id, e.proxy(this._onKeyup, this))
36549 }), e.fn.textcomplete.CKEditor = t
36550 }(e), t = e, u = ["direction", "boxSizing", "width", "height", "overflowX", "overflowY", "borderTopWidth", "borderRightWidth", "borderBottomWidth", "borderLeftWidth", "borderStyle", "paddingTop", "paddingRight", "paddingBottom", "paddingLeft", "fontStyle", "fontVariant", "fontWeight", "fontStretch", "fontSize", "fontSizeAdjust", "lineHeight", "fontFamily", "textAlign", "textTransform", "textIndent", "textDecoration", "letterSpacing", "wordSpacing", "tabSize", "MozTabSize"], d = "undefined" != typeof window, f = d && null != window.mozInnerScreenX, t.fn.textcomplete.getCaretCoordinates = function(e, t, n) {
36551 if (!d) throw new Error("textarea-caret-position#getCaretCoordinates should only be called in a browser");
36552 var r = n && n.debug || !1;
36554 var i = document.querySelector("#input-textarea-caret-position-mirror-div");
36555 i && i.parentNode.removeChild(i)
36557 var o = document.createElement("div");
36558 o.id = "input-textarea-caret-position-mirror-div", document.body.appendChild(o);
36560 s = window.getComputedStyle ? getComputedStyle(e) : e.currentStyle;
36561 a.whiteSpace = "pre-wrap", "INPUT" !== e.nodeName && (a.wordWrap = "break-word"), a.position = "absolute", r || (a.visibility = "hidden"), u.forEach(function(e) {
36563 }), f ? e.scrollHeight > parseInt(s.height) && (a.overflowY = "scroll") : a.overflow = "hidden", o.textContent = e.value.substring(0, t), "INPUT" === e.nodeName && (o.textContent = o.textContent.replace(/\s/g, " "));
36564 var l = document.createElement("span");
36565 l.textContent = e.value.substring(t) || ".", o.appendChild(l);
36567 top: l.offsetTop + parseInt(s.borderTopWidth),
36568 left: l.offsetLeft + parseInt(s.borderLeftWidth)
36570 return r ? l.style.backgroundColor = "#aaa" : document.body.removeChild(o), c
36572 }), window = "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}, document = window.document || {},
36574 "function" == typeof require && "object" == typeof exports && "object" == typeof module ? e(require("jquery")) : "function" == typeof define && define.amd ? define(["jquery"], e) : e(t.jQuery)
36580 E = window.emojione,
36584 E ? e() : i.push(e)
36586 var C, k, l, x = "data:image/gif;base64,R0lGODlhAQABAJH/AP///wAAAMDAwAAAACH5BAEAAAIALAAAAAABAAEAAAICVAEAOw==",
36588 T = "emojionearea",
36592 function S(n, e, r) {
36596 e = e.toLowerCase();
36598 var o = 1 == t ? "@" + e : e;
36599 a[n.id][o] && a[n.id][o].length && w.each(a[n.id][o], function(e, t) {
36600 return i = !1 !== t.apply(n, r || [])
36607 function D(n, r, i, o) {
36608 o = o || function(e, t) {
36609 return w(t.currentTarget)
36610 }, w.each(i, function(e, t) {
36611 e = w.isArray(i) ? t : e, (s[n.id][t] || (s[n.id][t] = [])).push([r, e, o])
36615 function u(e, t, n) {
36616 var r, i = E.imageType;
36617 r = "svg" == i ? E.imagePathSVG : E.imagePathPNG;
36619 n && (o = n.substr(1, n.length - 2).replace(/_/g, " ").replace(/\w\S*/g, function(e) {
36620 return e.charAt(0).toUpperCase() + e.substr(1).toLowerCase()
36623 return t.uc_base && 4 < M ? (a = t.uc_base, t = t.uc_output.toUpperCase()) : a = t, e.replace("{name}", n || "").replace("{friendlyName}", o).replace("{img}", r + (M < 2 ? a.toUpperCase() : a) + "." + i).replace("{uni}", t).replace("{alt}", E.convert(t))
36626 function O(e, n, r) {
36627 return e.replace(/:?\+?[\w_\-]+:?/g, function(e) {
36628 e = ":" + e.replace(/:$/, "").replace(/^:/, "") + ":";
36629 var t = E.emojioneList[e];
36630 return t ? 4 < M ? u(n, t, e) : (3 < M && (t = t.unicode), u(n, t[t.length - 1], e)) : r ? "" : e
36636 if (window.getSelection) {
36637 if ((t = window.getSelection()).getRangeAt && t.rangeCount) {
36638 (n = t.getRangeAt(0)).deleteContents();
36639 var r = document.createElement("div");
36641 for (var i, o, a = document.createDocumentFragment(); i = r.firstChild;) o = a.appendChild(i);
36642 n.insertNode(a), o && ((n = n.cloneRange()).setStartAfter(o), n.collapse(!0), t.removeAllRanges(), t.addRange(n))
36644 } else document.selection && "Control" != document.selection.type && document.selection.createRange().pasteHTML(e)
36648 return window.emojioneVersion || "3.1.2"
36652 return "object" == typeof e
36657 return e.cacheBustParam ? (t = e.cacheBustParam, I(e.jsEscapeMap) ? "?v=1.2.4" === t ? "2.0.0" : "?v=2.0.1" === t ? "2.1.0" : "?v=2.1.1" === t ? "2.1.1" : "?v=2.1.2" === t ? "2.1.2" : "?v=2.1.3" === t ? "2.1.3" : "?v=2.1.4" === t ? "2.1.4" : "2.2.7" : "1.5.2") : e.emojiVersion
36690 if (w.fn.emojioneArea && w.fn.emojioneArea.defaults) return w.fn.emojioneArea.defaults;
36695 autocomplete: "off",
36696 autocorrect: "off",
36697 autocapitalize: "off"
36701 emojiPlaceholder: ":smiley:",
36702 searchPlaceholder: "SEARCH",
36707 pickerPosition: "top",
36708 filtersPosition: "top",
36709 searchPosition: "top",
36710 hidePickerOnBlur: !0,
36711 buttonTitle: "Use the TAB key to insert emoji faster",
36713 tonesStyle: "bullet",
36715 saveEmojisAs: "unicode",
36718 autocompleteTones: !1,
36720 useInternalCDN: !0,
36728 t = h(E ? f(E) : d());
36729 return e.filters = 4 < t ? {
36731 title: "Diversity",
36732 emoji: "open_hands raised_hands clap pray thumbsup thumbsdown punch fist left_facing_fist right_facing_fist fingers_crossed v metal ok_hand point_left point_right point_up_2 point_down point_up raised_hand raised_back_of_hand hand_splayed vulcan wave call_me muscle middle_finger writing_hand selfie nail_care ear nose baby boy girl man woman blond-haired_woman blond_haired_person blond-haired_man older_man older_woman man_with_chinese_cap woman_wearing_turban person_wearing_turban man_wearing_turban woman_police_officer police_officer man_police_officer woman_construction_worker construction_worker man_construction_worker woman_guard guard man_guard woman_detective detective man_detective woman_health_worker man_health_worker woman_farmer man_farmer woman_cook man_cook woman_student man_student woman_singer man_singer woman_teacher man_teacher woman_factory_worker man_factory_worker woman_technologist man_technologist woman_office_worker man_office_worker woman_mechanic man_mechanic woman_scientist man_scientist woman_artist man_artist woman_firefighter man_firefighter woman_pilot man_pilot woman_astronaut man_astronaut woman_judge man_judge mrs_claus santa princess prince bride_with_veil man_in_tuxedo angel pregnant_woman woman_bowing person_bowing man_bowing person_tipping_hand man_tipping_hand woman_tipping_hand person_gesturing_no man_gesturing_no woman_gesturing_no person_gesturing_ok man_gesturing_ok woman_gesturing_ok person_raising_hand man_raising_hand woman_raising_hand woman_facepalming man_facepalming person_facepalming woman_shrugging man_shrugging person_shrugging person_pouting man_pouting woman_pouting person_frowning man_frowning woman_frowning person_getting_haircut man_getting_haircut woman_getting_haircut person_getting_massage man_getting_face_massage woman_getting_face_massage levitate dancer man_dancing woman_walking person_walking man_walking woman_running person_running man_running adult child older_adult bearded_person woman_with_headscarf mage fairy vampire merperson elf love_you_gesture palms_up_together woman_mage man_mage woman_fairy man_fairy woman_vampire man_vampire mermaid merman woman_elf man_elf snowboarder woman_lifting_weights person_lifting_weights man_lifting_weights woman_cartwheeling man_cartwheeling person_doing_cartwheel woman_bouncing_ball person_bouncing_ball man_bouncing_ball woman_playing_handball man_playing_handball person_playing_handball woman_golfing person_golfing man_golfing woman_surfing person_surfing man_surfing woman_swimming person_swimming man_swimming woman_playing_water_polo man_playing_water_polo person_playing_water_polo woman_rowing_boat person_rowing_boat man_rowing_boat horse_racing woman_biking person_biking man_biking woman_mountain_biking person_mountain_biking man_mountain_biking woman_juggling man_juggling person_juggling breast_feeding person_in_steamy_room person_climbing person_in_lotus_position woman_in_steamy_room man_in_steamy_room woman_climbing man_climbing woman_in_lotus_position man_in_lotus_position bath sleeping_accommodation"
36741 title: "Smileys & People",
36742 emoji: "grinning smiley smile grin laughing sweat_smile joy rofl relaxed blush innocent slight_smile upside_down wink relieved heart_eyes kissing_heart kissing kissing_smiling_eyes kissing_closed_eyes yum stuck_out_tongue_winking_eye stuck_out_tongue_closed_eyes stuck_out_tongue money_mouth hugging nerd sunglasses clown cowboy smirk unamused disappointed pensive worried confused slight_frown frowning2 persevere confounded tired_face weary triumph angry rage no_mouth neutral_face expressionless hushed frowning anguished open_mouth astonished dizzy_face flushed scream fearful cold_sweat cry disappointed_relieved drooling_face sob sweat sleepy sleeping rolling_eyes thinking lying_face grimacing zipper_mouth nauseated_face sneezing_face mask thermometer_face head_bandage smiling_imp imp japanese_ogre japanese_goblin poop ghost skull skull_crossbones alien space_invader robot jack_o_lantern smiley_cat smile_cat joy_cat heart_eyes_cat smirk_cat kissing_cat scream_cat crying_cat_face pouting_cat open_hands raised_hands clap pray handshake thumbsup thumbsdown punch fist left_facing_fist right_facing_fist fingers_crossed v metal ok_hand point_left point_right point_up_2 point_down point_up raised_hand raised_back_of_hand hand_splayed vulcan wave call_me muscle middle_finger writing_hand selfie nail_care ring lipstick kiss lips tongue ear nose footprints eye eyes speaking_head bust_in_silhouette busts_in_silhouette baby boy girl man woman blond-haired_woman blond_haired_person older_man older_woman man_with_chinese_cap woman_wearing_turban person_wearing_turban woman_police_officer police_officer woman_construction_worker construction_worker woman_guard guard woman_detective detective woman_health_worker man_health_worker woman_farmer man_farmer woman_cook man_cook woman_student man_student woman_singer man_singer woman_teacher man_teacher woman_factory_worker man_factory_worker woman_technologist man_technologist woman_office_worker man_office_worker woman_mechanic man_mechanic woman_scientist man_scientist woman_artist man_artist woman_firefighter man_firefighter woman_pilot man_pilot woman_astronaut man_astronaut woman_judge man_judge mrs_claus santa princess prince bride_with_veil man_in_tuxedo angel pregnant_woman woman_bowing person_bowing person_tipping_hand man_tipping_hand person_gesturing_no man_gesturing_no person_gesturing_ok man_gesturing_ok person_raising_hand man_raising_hand woman_facepalming man_facepalming woman_shrugging man_shrugging person_pouting man_pouting person_frowning man_frowning person_getting_haircut man_getting_haircut person_getting_massage man_getting_face_massage levitate dancer man_dancing people_with_bunny_ears_partying men_with_bunny_ears_partying woman_walking person_walking woman_running person_running couple two_women_holding_hands two_men_holding_hands couple_with_heart couple_ww couple_mm couplekiss kiss_ww kiss_mm family family_mwg family_mwgb family_mwbb family_mwgg family_wwb family_wwg family_wwgb family_wwbb family_wwgg family_mmb family_mmg family_mmgb family_mmbb family_mmgg family_woman_boy family_woman_girl family_woman_girl_boy family_woman_boy_boy family_woman_girl_girl family_man_boy family_man_girl family_man_girl_boy family_man_boy_boy family_man_girl_girl womans_clothes shirt jeans necktie dress bikini kimono high_heel sandal boot mans_shoe athletic_shoe womans_hat tophat mortar_board crown helmet_with_cross school_satchel pouch purse handbag briefcase eyeglasses dark_sunglasses closed_umbrella umbrella2 face_with_raised_eyebrow star_struck crazy_face shushing_face face_with_symbols_over_mouth face_with_hand_over_mouth face_vomiting exploding_head face_with_monocle adult child older_adult bearded_person woman_with_headscarf brain billed_cap scarf gloves coat socks love_you_gesture palms_up_together woman_mage man_mage woman_fairy man_fairy woman_vampire man_vampire mermaid merman woman_elf man_elf woman_genie man_genie woman_zombie man_zombie"
36746 title: "Animals & Nature",
36747 emoji: "dog cat mouse hamster rabbit fox bear panda_face koala tiger lion_face cow pig pig_nose frog monkey_face see_no_evil hear_no_evil speak_no_evil monkey chicken penguin bird baby_chick hatching_chick hatched_chick duck eagle owl bat wolf boar horse unicorn bee bug butterfly snail shell beetle ant spider spider_web turtle snake lizard scorpion crab squid octopus shrimp tropical_fish fish blowfish dolphin shark whale whale2 crocodile leopard tiger2 water_buffalo ox cow2 deer dromedary_camel camel elephant rhino gorilla racehorse pig2 goat ram sheep dog2 poodle cat2 rooster turkey dove rabbit2 mouse2 rat chipmunk feet dragon dragon_face cactus christmas_tree evergreen_tree deciduous_tree palm_tree seedling herb shamrock four_leaf_clover bamboo tanabata_tree leaves fallen_leaf maple_leaf mushroom ear_of_rice bouquet tulip rose wilted_rose sunflower blossom cherry_blossom hibiscus earth_americas earth_africa earth_asia full_moon waning_gibbous_moon last_quarter_moon waning_crescent_moon new_moon waxing_crescent_moon first_quarter_moon waxing_gibbous_moon new_moon_with_face full_moon_with_face sun_with_face first_quarter_moon_with_face last_quarter_moon_with_face crescent_moon dizzy star star2 sparkles zap fire boom comet sunny white_sun_small_cloud partly_sunny white_sun_cloud white_sun_rain_cloud rainbow cloud cloud_rain thunder_cloud_rain cloud_lightning cloud_snow snowman2 snowman snowflake wind_blowing_face dash cloud_tornado fog ocean droplet sweat_drops umbrella giraffe zebra hedgehog sauropod t_rex cricket"
36751 title: "Food & Drink",
36752 emoji: "green_apple apple pear tangerine lemon banana watermelon grapes strawberry melon cherries peach pineapple kiwi avocado tomato eggplant cucumber carrot corn hot_pepper potato sweet_potato chestnut peanuts honey_pot croissant bread french_bread cheese egg cooking bacon pancakes fried_shrimp poultry_leg meat_on_bone pizza hotdog hamburger fries stuffed_flatbread taco burrito salad shallow_pan_of_food spaghetti ramen stew fish_cake sushi bento curry rice_ball rice rice_cracker oden dango shaved_ice ice_cream icecream cake birthday custard lollipop candy chocolate_bar popcorn doughnut cookie milk baby_bottle coffee tea sake beer beers champagne_glass wine_glass tumbler_glass cocktail tropical_drink champagne spoon fork_and_knife fork_knife_plate dumpling fortune_cookie takeout_box chopsticks bowl_with_spoon cup_with_straw coconut broccoli pie pretzel cut_of_meat sandwich canned_food"
36755 icon: "basketball",
36757 emoji: "soccer basketball football baseball tennis volleyball rugby_football 8ball ping_pong badminton goal hockey field_hockey cricket_game golf bow_and_arrow fishing_pole_and_fish boxing_glove martial_arts_uniform ice_skate ski skier snowboarder woman_lifting_weights person_lifting_weights person_fencing women_wrestling men_wrestling woman_cartwheeling man_cartwheeling woman_bouncing_ball person_bouncing_ball woman_playing_handball man_playing_handball woman_golfing person_golfing woman_surfing person_surfing woman_swimming person_swimming woman_playing_water_polo man_playing_water_polo woman_rowing_boat person_rowing_boat horse_racing woman_biking person_biking woman_mountain_biking person_mountain_biking running_shirt_with_sash medal military_medal first_place second_place third_place trophy rosette reminder_ribbon ticket tickets circus_tent woman_juggling man_juggling performing_arts art clapper microphone headphones musical_score musical_keyboard drum saxophone trumpet guitar violin game_die dart bowling video_game slot_machine sled breast_feeding curling_stone woman_in_steamy_room man_in_steamy_room woman_climbing man_climbing woman_in_lotus_position man_in_lotus_position"
36761 title: "Travel & Places",
36762 emoji: "red_car taxi blue_car bus trolleybus race_car police_car ambulance fire_engine minibus truck articulated_lorry tractor scooter bike motor_scooter motorcycle rotating_light oncoming_police_car oncoming_bus oncoming_automobile oncoming_taxi aerial_tramway mountain_cableway suspension_railway railway_car train mountain_railway monorail bullettrain_side bullettrain_front light_rail steam_locomotive train2 metro tram station helicopter airplane_small airplane airplane_departure airplane_arriving rocket satellite_orbital seat canoe sailboat motorboat speedboat cruise_ship ferry ship anchor construction fuelpump busstop vertical_traffic_light traffic_light map moyai statue_of_liberty fountain tokyo_tower european_castle japanese_castle stadium ferris_wheel roller_coaster carousel_horse beach_umbrella beach island mountain mountain_snow mount_fuji volcano desert camping tent railway_track motorway construction_site factory house house_with_garden homes house_abandoned office department_store post_office european_post_office hospital bank hotel convenience_store school love_hotel wedding classical_building church mosque synagogue kaaba shinto_shrine japan rice_scene park sunrise sunrise_over_mountains stars sparkler fireworks city_sunset city_dusk cityscape night_with_stars milky_way bridge_at_night foggy flying_saucer"
36767 emoji: "watch iphone calling computer keyboard desktop printer mouse_three_button trackball joystick compression minidisc floppy_disk cd dvd vhs camera camera_with_flash video_camera movie_camera projector film_frames telephone_receiver telephone pager fax tv radio microphone2 level_slider control_knobs stopwatch timer alarm_clock clock hourglass hourglass_flowing_sand satellite battery electric_plug bulb flashlight candle wastebasket oil money_with_wings dollar yen euro pound moneybag credit_card gem scales wrench hammer hammer_pick tools pick nut_and_bolt gear chains gun bomb knife dagger crossed_swords shield smoking coffin urn amphora crystal_ball prayer_beads barber alembic telescope microscope hole pill syringe thermometer toilet potable_water shower bathtub bath bellhop key key2 door couch bed sleeping_accommodation frame_photo shopping_bags shopping_cart gift balloon flags ribbon confetti_ball tada dolls izakaya_lantern wind_chime envelope envelope_with_arrow incoming_envelope e-mail love_letter inbox_tray outbox_tray package label mailbox_closed mailbox mailbox_with_mail mailbox_with_no_mail postbox postal_horn scroll page_with_curl page_facing_up bookmark_tabs bar_chart chart_with_upwards_trend chart_with_downwards_trend notepad_spiral calendar_spiral calendar date card_index card_box ballot_box file_cabinet clipboard file_folder open_file_folder dividers newspaper2 newspaper notebook notebook_with_decorative_cover ledger closed_book green_book blue_book orange_book books book bookmark link paperclip paperclips triangular_ruler straight_ruler pushpin round_pushpin scissors pen_ballpoint pen_fountain black_nib paintbrush crayon pencil pencil2 mag mag_right lock_with_ink_pen closed_lock_with_key lock unlock orange_heart"
36770 icon: "heartpulse",
36772 emoji: "heart yellow_heart green_heart blue_heart purple_heart black_heart broken_heart heart_exclamation two_hearts revolving_hearts heartbeat heartpulse sparkling_heart cupid gift_heart heart_decoration peace cross star_and_crescent om_symbol wheel_of_dharma star_of_david six_pointed_star menorah yin_yang orthodox_cross place_of_worship ophiuchus aries taurus gemini cancer leo virgo libra scorpius sagittarius capricorn aquarius pisces id atom accept radioactive biohazard mobile_phone_off vibration_mode u6709 u7121 u7533 u55b6 u6708 eight_pointed_black_star vs white_flower ideograph_advantage secret congratulations u5408 u6e80 u5272 u7981 a b ab cl o2 sos x o octagonal_sign no_entry name_badge no_entry_sign 100 anger hotsprings no_pedestrians do_not_litter no_bicycles non-potable_water underage no_mobile_phones no_smoking exclamation grey_exclamation question grey_question bangbang interrobang low_brightness high_brightness part_alternation_mark warning children_crossing trident fleur-de-lis beginner recycle white_check_mark u6307 chart sparkle eight_spoked_asterisk negative_squared_cross_mark globe_with_meridians diamond_shape_with_a_dot_inside m cyclone zzz atm wc wheelchair parking u7a7a sa passport_control customs baggage_claim left_luggage mens womens baby_symbol restroom put_litter_in_its_place cinema signal_strength koko symbols information_source abc abcd capital_abcd ng ok up cool new free zero one two three four five six seven eight nine keycap_ten 1234 hash asterisk arrow_forward pause_button play_pause stop_button record_button eject track_next track_previous fast_forward rewind arrow_double_up arrow_double_down arrow_backward arrow_up_small arrow_down_small arrow_right arrow_left arrow_up arrow_down arrow_upper_right arrow_lower_right arrow_lower_left arrow_upper_left arrow_up_down left_right_arrow arrow_right_hook leftwards_arrow_with_hook arrow_heading_up arrow_heading_down twisted_rightwards_arrows repeat repeat_one arrows_counterclockwise arrows_clockwise musical_note notes heavy_plus_sign heavy_minus_sign heavy_division_sign heavy_multiplication_x heavy_dollar_sign currency_exchange tm copyright registered wavy_dash curly_loop loop end back on top soon heavy_check_mark ballot_box_with_check radio_button white_circle black_circle red_circle blue_circle small_red_triangle small_red_triangle_down small_orange_diamond small_blue_diamond large_orange_diamond large_blue_diamond white_square_button black_square_button black_small_square white_small_square black_medium_small_square white_medium_small_square black_medium_square white_medium_square black_large_square white_large_square speaker mute sound loud_sound bell no_bell mega loudspeaker speech_left eye_in_speech_bubble speech_balloon thought_balloon anger_right spades clubs hearts diamonds black_joker flower_playing_cards mahjong clock1 clock2 clock3 clock4 clock5 clock6 clock7 clock8 clock9 clock10 clock11 clock12 clock130 clock230 clock330 clock430 clock530 clock630 clock730 clock830 clock930 clock1030 clock1130 clock1230"
36777 emoji: "flag_white flag_black checkered_flag triangular_flag_on_post rainbow_flag flag_af flag_ax flag_al flag_dz flag_as flag_ad flag_ao flag_ai flag_aq flag_ag flag_ar flag_am flag_aw flag_au flag_at flag_az flag_bs flag_bh flag_bd flag_bb flag_by flag_be flag_bz flag_bj flag_bm flag_bt flag_bo flag_ba flag_bw flag_br flag_io flag_vg flag_bn flag_bg flag_bf flag_bi flag_kh flag_cm flag_ca flag_ic flag_cv flag_bq flag_ky flag_cf flag_td flag_cl flag_cn flag_cx flag_cc flag_co flag_km flag_cg flag_cd flag_ck flag_cr flag_ci flag_hr flag_cu flag_cw flag_cy flag_cz flag_dk flag_dj flag_dm flag_do flag_ec flag_eg flag_sv flag_gq flag_er flag_ee flag_et flag_eu flag_fk flag_fo flag_fj flag_fi flag_fr flag_gf flag_pf flag_tf flag_ga flag_gm flag_ge flag_de flag_gh flag_gi flag_gr flag_gl flag_gd flag_gp flag_gu flag_gt flag_gg flag_gn flag_gw flag_gy flag_ht flag_hn flag_hk flag_hu flag_is flag_in flag_id flag_ir flag_iq flag_ie flag_im flag_il flag_it flag_jm flag_jp crossed_flags flag_je flag_jo flag_kz flag_ke flag_ki flag_xk flag_kw flag_kg flag_la flag_lv flag_lb flag_ls flag_lr flag_ly flag_li flag_lt flag_lu flag_mo flag_mk flag_mg flag_mw flag_my flag_mv flag_ml flag_mt flag_mh flag_mq flag_mr flag_mu flag_yt flag_mx flag_fm flag_md flag_mc flag_mn flag_me flag_ms flag_ma flag_mz flag_mm flag_na flag_nr flag_np flag_nl flag_nc flag_nz flag_ni flag_ne flag_ng flag_nu flag_nf flag_kp flag_mp flag_no flag_om flag_pk flag_pw flag_ps flag_pa flag_pg flag_py flag_pe flag_ph flag_pn flag_pl flag_pt flag_pr flag_qa flag_re flag_ro flag_ru flag_rw flag_ws flag_sm flag_st flag_sa flag_sn flag_rs flag_sc flag_sl flag_sg flag_sx flag_sk flag_si flag_gs flag_sb flag_so flag_za flag_kr flag_ss flag_es flag_lk flag_bl flag_sh flag_kn flag_lc flag_pm flag_vc flag_sd flag_sr flag_sz flag_se flag_ch flag_sy flag_tw flag_tj flag_tz flag_th flag_tl flag_tg flag_tk flag_to flag_tt flag_tn flag_tr flag_tm flag_tc flag_tv flag_vi flag_ug flag_ua flag_ae flag_gb flag_us flag_uy flag_uz flag_vu flag_va flag_ve flag_vn flag_wf flag_eh flag_ye flag_zm flag_zw flag_ac flag_ta flag_bv flag_hm flag_sj flag_um flag_ea flag_cp flag_dg flag_mf united_nations england scotland wales"
36781 title: "Diversity",
36782 emoji: "santa runner surfer swimmer lifter ear nose point_up_2 point_down point_left point_right punch wave ok_hand thumbsup thumbsdown clap open_hands boy girl man woman cop bride_with_veil person_with_blond_hair man_with_gua_pi_mao man_with_turban older_man grandma baby construction_worker princess angel information_desk_person guardsman dancer nail_care massage haircut muscle spy hand_splayed middle_finger vulcan no_good ok_woman bow raising_hand raised_hands person_frowning person_with_pouting_face pray rowboat bicyclist mountain_bicyclist walking bath metal point_up basketball_player fist raised_hand v writing_hand"
36791 title: "Smileys & People",
36792 emoji: "grinning grimacing grin joy smiley smile sweat_smile laughing innocent wink blush slight_smile upside_down relaxed yum relieved heart_eyes kissing_heart kissing kissing_smiling_eyes kissing_closed_eyes stuck_out_tongue_winking_eye stuck_out_tongue_closed_eyes stuck_out_tongue money_mouth nerd sunglasses hugging smirk no_mouth neutral_face expressionless unamused rolling_eyes thinking flushed disappointed worried angry rage pensive confused slight_frown frowning2 persevere confounded tired_face weary triumph open_mouth scream fearful cold_sweat hushed frowning anguished cry disappointed_relieved sleepy sweat sob dizzy_face astonished zipper_mouth mask thermometer_face head_bandage sleeping zzz poop smiling_imp imp japanese_ogre japanese_goblin skull ghost alien robot smiley_cat smile_cat joy_cat heart_eyes_cat smirk_cat kissing_cat scream_cat crying_cat_face pouting_cat raised_hands clap wave thumbsup thumbsdown punch fist v ok_hand raised_hand open_hands muscle pray point_up point_up_2 point_down point_left point_right middle_finger hand_splayed metal vulcan writing_hand nail_care lips tongue ear nose eye eyes bust_in_silhouette busts_in_silhouette speaking_head baby boy girl man woman person_with_blond_hair older_man older_woman man_with_gua_pi_mao man_with_turban cop construction_worker guardsman spy santa angel princess bride_with_veil walking runner dancer dancers couple two_men_holding_hands two_women_holding_hands bow information_desk_person no_good ok_woman raising_hand person_with_pouting_face person_frowning haircut massage couple_with_heart couple_ww couple_mm couplekiss kiss_ww kiss_mm family family_mwg family_mwgb family_mwbb family_mwgg family_wwb family_wwg family_wwgb family_wwbb family_wwgg family_mmb family_mmg family_mmgb family_mmbb family_mmgg womans_clothes shirt jeans necktie dress bikini kimono lipstick kiss footprints high_heel sandal boot mans_shoe athletic_shoe womans_hat tophat helmet_with_cross mortar_board crown school_satchel pouch purse handbag briefcase eyeglasses dark_sunglasses ring closed_umbrella"
36796 title: "Animals & Nature",
36797 emoji: "dog cat mouse hamster rabbit bear panda_face koala tiger lion_face cow pig pig_nose frog octopus monkey_face see_no_evil hear_no_evil speak_no_evil monkey chicken penguin bird baby_chick hatching_chick hatched_chick wolf boar horse unicorn bee bug snail beetle ant spider scorpion crab snake turtle tropical_fish fish blowfish dolphin whale whale2 crocodile leopard tiger2 water_buffalo ox cow2 dromedary_camel camel elephant goat ram sheep racehorse pig2 rat mouse2 rooster turkey dove dog2 poodle cat2 rabbit2 chipmunk feet dragon dragon_face cactus christmas_tree evergreen_tree deciduous_tree palm_tree seedling herb shamrock four_leaf_clover bamboo tanabata_tree leaves fallen_leaf maple_leaf ear_of_rice hibiscus sunflower rose tulip blossom cherry_blossom bouquet mushroom chestnut jack_o_lantern shell spider_web earth_americas earth_africa earth_asia full_moon waning_gibbous_moon last_quarter_moon waning_crescent_moon new_moon waxing_crescent_moon first_quarter_moon waxing_gibbous_moon new_moon_with_face full_moon_with_face first_quarter_moon_with_face last_quarter_moon_with_face sun_with_face crescent_moon star star2 dizzy sparkles comet sunny white_sun_small_cloud partly_sunny white_sun_cloud white_sun_rain_cloud cloud cloud_rain thunder_cloud_rain cloud_lightning zap fire boom snowflake cloud_snow snowman2 snowman wind_blowing_face dash cloud_tornado fog umbrella2 umbrella droplet sweat_drops ocean"
36801 title: "Food & Drink",
36802 emoji: "green_apple apple pear tangerine lemon banana watermelon grapes strawberry melon cherries peach pineapple tomato eggplant hot_pepper corn sweet_potato honey_pot bread cheese poultry_leg meat_on_bone fried_shrimp egg hamburger fries hotdog pizza spaghetti taco burrito ramen stew fish_cake sushi bento curry rice_ball rice rice_cracker oden dango shaved_ice ice_cream icecream cake birthday custard candy lollipop chocolate_bar popcorn doughnut cookie beer beers wine_glass cocktail tropical_drink champagne sake tea coffee baby_bottle fork_and_knife fork_knife_plate"
36805 icon: "basketball",
36807 emoji: "soccer basketball football baseball tennis volleyball rugby_football 8ball golf golfer ping_pong badminton hockey field_hockey cricket ski skier snowboarder ice_skate bow_and_arrow fishing_pole_and_fish rowboat swimmer surfer bath basketball_player lifter bicyclist mountain_bicyclist horse_racing levitate trophy running_shirt_with_sash medal military_medal reminder_ribbon rosette ticket tickets performing_arts art circus_tent microphone headphones musical_score musical_keyboard saxophone trumpet guitar violin clapper video_game space_invader dart game_die slot_machine bowling"
36811 title: "Travel & Places",
36812 emoji: "red_car taxi blue_car bus trolleybus race_car police_car ambulance fire_engine minibus truck articulated_lorry tractor motorcycle bike rotating_light oncoming_police_car oncoming_bus oncoming_automobile oncoming_taxi aerial_tramway mountain_cableway suspension_railway railway_car train monorail bullettrain_side bullettrain_front light_rail mountain_railway steam_locomotive train2 metro tram station helicopter airplane_small airplane airplane_departure airplane_arriving sailboat motorboat speedboat ferry cruise_ship rocket satellite_orbital seat anchor construction fuelpump busstop vertical_traffic_light traffic_light checkered_flag ship ferris_wheel roller_coaster carousel_horse construction_site foggy tokyo_tower factory fountain rice_scene mountain mountain_snow mount_fuji volcano japan camping tent park motorway railway_track sunrise sunrise_over_mountains desert beach island city_sunset city_dusk cityscape night_with_stars bridge_at_night milky_way stars sparkler fireworks rainbow homes european_castle japanese_castle stadium statue_of_liberty house house_with_garden house_abandoned office department_store post_office european_post_office hospital bank hotel convenience_store school love_hotel wedding classical_building church mosque synagogue kaaba shinto_shrine"
36817 emoji: "watch iphone calling computer keyboard desktop printer mouse_three_button trackball joystick compression minidisc floppy_disk cd dvd vhs camera camera_with_flash video_camera movie_camera projector film_frames telephone_receiver telephone pager fax tv radio microphone2 level_slider control_knobs stopwatch timer alarm_clock clock hourglass_flowing_sand hourglass satellite battery electric_plug bulb flashlight candle wastebasket oil money_with_wings dollar yen euro pound moneybag credit_card gem scales wrench hammer hammer_pick tools pick nut_and_bolt gear chains gun bomb knife dagger crossed_swords shield smoking skull_crossbones coffin urn amphora crystal_ball prayer_beads barber alembic telescope microscope hole pill syringe thermometer label bookmark toilet shower bathtub key key2 couch sleeping_accommodation bed door bellhop frame_photo map beach_umbrella moyai shopping_bags balloon flags ribbon gift confetti_ball tada dolls wind_chime crossed_flags izakaya_lantern envelope envelope_with_arrow incoming_envelope e-mail love_letter postbox mailbox_closed mailbox mailbox_with_mail mailbox_with_no_mail package postal_horn inbox_tray outbox_tray scroll page_with_curl bookmark_tabs bar_chart chart_with_upwards_trend chart_with_downwards_trend page_facing_up date calendar calendar_spiral card_index card_box ballot_box file_cabinet clipboard notepad_spiral file_folder open_file_folder dividers newspaper2 newspaper notebook closed_book green_book blue_book orange_book notebook_with_decorative_cover ledger books book link paperclip paperclips scissors triangular_ruler straight_ruler pushpin round_pushpin triangular_flag_on_post flag_white flag_black closed_lock_with_key lock unlock lock_with_ink_pen pen_ballpoint pen_fountain black_nib pencil pencil2 crayon paintbrush mag mag_right"
36820 icon: "heartpulse",
36822 emoji: "heart yellow_heart green_heart blue_heart purple_heart broken_heart heart_exclamation two_hearts revolving_hearts heartbeat heartpulse sparkling_heart cupid gift_heart heart_decoration peace cross star_and_crescent om_symbol wheel_of_dharma star_of_david six_pointed_star menorah yin_yang orthodox_cross place_of_worship ophiuchus aries taurus gemini cancer leo virgo libra scorpius sagittarius capricorn aquarius pisces id atom u7a7a u5272 radioactive biohazard mobile_phone_off vibration_mode u6709 u7121 u7533 u55b6 u6708 eight_pointed_black_star vs accept white_flower ideograph_advantage secret congratulations u5408 u6e80 u7981 a b ab cl o2 sos no_entry name_badge no_entry_sign x o anger hotsprings no_pedestrians do_not_litter no_bicycles non-potable_water underage no_mobile_phones exclamation grey_exclamation question grey_question bangbang interrobang 100 low_brightness high_brightness trident fleur-de-lis part_alternation_mark warning children_crossing beginner recycle u6307 chart sparkle eight_spoked_asterisk negative_squared_cross_mark white_check_mark diamond_shape_with_a_dot_inside cyclone loop globe_with_meridians m atm sa passport_control customs baggage_claim left_luggage wheelchair no_smoking wc parking potable_water mens womens baby_symbol restroom put_litter_in_its_place cinema signal_strength koko ng ok up cool new free zero one two three four five six seven eight nine ten 1234 arrow_forward pause_button play_pause stop_button record_button track_next track_previous fast_forward rewind twisted_rightwards_arrows repeat repeat_one arrow_backward arrow_up_small arrow_down_small arrow_double_up arrow_double_down arrow_right arrow_left arrow_up arrow_down arrow_upper_right arrow_lower_right arrow_lower_left arrow_upper_left arrow_up_down left_right_arrow arrows_counterclockwise arrow_right_hook leftwards_arrow_with_hook arrow_heading_up arrow_heading_down hash asterisk information_source abc abcd capital_abcd symbols musical_note notes wavy_dash curly_loop heavy_check_mark arrows_clockwise heavy_plus_sign heavy_minus_sign heavy_division_sign heavy_multiplication_x heavy_dollar_sign currency_exchange copyright registered tm end back on top soon ballot_box_with_check radio_button white_circle black_circle red_circle large_blue_circle small_orange_diamond small_blue_diamond large_orange_diamond large_blue_diamond small_red_triangle black_small_square white_small_square black_large_square white_large_square small_red_triangle_down black_medium_square white_medium_square black_medium_small_square white_medium_small_square black_square_button white_square_button speaker sound loud_sound mute mega loudspeaker bell no_bell black_joker mahjong spades clubs hearts diamonds flower_playing_cards thought_balloon anger_right speech_balloon clock1 clock2 clock3 clock4 clock5 clock6 clock7 clock8 clock9 clock10 clock11 clock12 clock130 clock230 clock330 clock430 clock530 clock630 clock730 clock830 clock930 clock1030 clock1130 clock1230 eye_in_speech_bubble"
36827 emoji: "ac af al dz ad ao ai ag ar am aw au at az bs bh bd bb by be bz bj bm bt bo ba bw br bn bg bf bi cv kh cm ca ky cf td flag_cl cn co km cg flag_cd cr hr cu cy cz dk dj dm do ec eg sv gq er ee et fk fo fj fi fr pf ga gm ge de gh gi gr gl gd gu gt gn gw gy ht hn hk hu is in flag_id ir iq ie il it ci jm jp je jo kz ke ki xk kw kg la lv lb ls lr ly li lt lu mo mk mg mw my mv ml mt mh mr mu mx fm md mc mn me ms ma mz mm na nr np nl nc nz ni ne flag_ng nu kp no om pk pw ps pa pg py pe ph pl pt pr qa ro ru rw sh kn lc vc ws sm st flag_sa sn rs sc sl sg sk si sb so za kr es lk sd sr sz se ch sy tw tj tz th tl tg to tt tn tr flag_tm flag_tm ug ua ae gb us vi uy uz vu va ve vn wf eh ye zm zw re ax ta io bq cx cc gg im yt nf pn bl pm gs tk bv hm sj um ic ea cp dg as aq vg ck cw eu gf tf gp mq mp sx ss tc "
36834 if (e && e.filters) {
36836 w.each(e.filters, function(n, e) {
36837 return !I(e) || w.isEmptyObject(e) ? void delete r[n] : void w.each(e, function(e, t) {
36842 return w.extend({}, t, e)
36846 return e.replace(l, function(e) {
36847 var t = E[0 === M ? "jsecapeMap" : "jsEscapeMap"];
36848 return void 0 !== e && e in t ? u(n, t[e]) : e
36853 return e = e.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'").replace(/`/g, "`").replace(/(?:\r\n|\r|\n)/g, "\n").replace(/(\n+)/g, "<div>$1</div>").replace(/\n/g, "<br/>").replace(/<br\/><\/div>/g, "</div>"), t.shortnames && (e = E.shortnameToUnicode(e)), p(e, t.emojiTemplate).replace(/\t/g, " ").replace(/ /g, " ")
36857 switch (e = e.replace(/ /g, "\n").replace(/	/g, "\t").replace(/<img[^>]*alt="([^"]+)"[^>]*>/gi, "$1").replace(/\n|\r/g, "").replace(/<br[^>]*>/gi, "\n").replace(/(?:<(?:div|p|ol|ul|li|pre|code|object)[^>]*>)+/gi, "<div>").replace(/(?:<\/(?:div|p|ol|ul|li|pre|code|object)>)+/gi, "</div>").replace(/\n<div><\/div>/gi, "\n").replace(/<div><\/div>\n/gi, "\n").replace(/(?:<div>)+<\/div>/gi, "\n").replace(/([^\n])<\/div><div>/gi, "$1\n").replace(/(?:<\/div>)+/gi, "</div>").replace(/([^\n])<\/div>([^\n])/gi, "$1\n$2").replace(/<\/div>/gi, "").replace(/([^\n])<div>/gi, "$1\n").replace(/\n<div>/gi, "\n").replace(/<div>\n/gi, "\n\n").replace(/<(?:[^>]+)?>/g, "").replace(new RegExp(A, "g"), "").replace(/ /g, " ").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, '"').replace(/'/g, "'").replace(/`/g, "`").replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&"), t.saveEmojisAs) {
36859 e = p(e, t.emojiTemplate);
36868 var e = this.editor[0].offsetWidth - this.editor[0].clientWidth,
36869 t = parseInt(this.button.css("marginRight"));
36870 t !== e && (this.button.css({
36872 }), this.floatingPicker && this.picker.css({
36873 right: parseInt(this.picker.css("right")) - t + e
36878 if (!this.sprite && this.lasyEmoji[0]) {
36879 var n = this.picker.offset().top,
36880 r = n + this.picker.height() + 20;
36881 this.lasyEmoji.each(function() {
36883 t = e.offset().top;
36884 n < t && t < r && e.attr("src", e.data("src")).removeClass("lazy-emoji")
36885 }), this.lasyEmoji = this.lasyEmoji.filter(".lazy-emoji")
36890 return (t ? "" : ".") + T + (e ? "-" + e : "")
36894 var n = w("<div/>", I(e) ? e : {
36897 return w.each(c.call(arguments).slice(1), function(e, t) {
36898 w.isFunction(t) && (t = t.call(n)), t && w(t).appendTo(n)
36903 return localStorage.getItem("recent_emojis") || ""
36908 if (!e.recent || e.recent !== n || t) {
36910 var r, i, o = e.scrollArea.is(".skinnable");
36911 o || (r = e.scrollArea.scrollTop(), t && e.recentCategory.show(), i = e.recentCategory.is(":visible") ? e.recentCategory.height() : 0);
36912 var a = O(n, e.emojiBtnTemplate, !0).split("|").join("");
36913 if (e.recentCategory.children(".emojibtn").remove(), w(a).insertAfter(e.recentCategory.children(".emojionearea-category-title")), e.recentCategory.children(".emojibtn").on("click", function() {
36914 e.trigger("emojibtn.click", w(this))
36915 }), e.recentFilter.show(), !o) {
36916 e.recentCategory.show();
36917 var s = e.recentCategory.height();
36918 i !== s && e.scrollArea.scrollTop(r + s - i)
36920 } else e.recentFilter.hasClass("active") && e.recentFilter.removeClass("active").next().addClass("active"), e.recentCategory.hide(), e.recentFilter.hide();
36925 function m(l, t, o) {
36926 l.options = o = R(o), l.sprite = o.sprite && M < 3, l.inline = null === o.inline ? t.is("INPUT") : o.inline, l.shortnames = o.shortnames, l.saveEmojisAs = o.saveEmojisAs, l.standalone = o.standalone, l.emojiTemplate = '<img alt="{alt}" class="emojione' + (l.sprite ? '-{uni}" src="' + x + '"/>' : 'emoji" src="{img}"/>'), l.emojiTemplateAlt = l.sprite ? '<i class="emojione-{uni}"/>' : '<img class="emojioneemoji" src="{img}"/>', l.emojiBtnTemplate = '<i class="emojibtn" role="button" data-name="{name}" title="{friendlyName}">' + l.emojiTemplateAlt + "</i>", l.recentEmojis = o.recentEmojis && function() {
36928 return localStorage.setItem("test", "test"), localStorage.removeItem("test"), !0
36933 var e = o.pickerPosition;
36934 l.floatingPicker = "top" === e || "bottom" === e, ((l.source = t).is(":disabled") || t.is(".disabled")) && l.disable();
36935 var a, n, s, c, u, r, d, f, h, p, i = t.is("TEXTAREA") || t.is("INPUT") ? "val" : "text",
36936 m = q("tones", o.tones ? function() {
36937 this.addClass(F("tones-" + o.tonesStyle, !0));
36938 for (var e = 0; e <= 5; e++) this.append(w("<i/>", {
36939 class: "btn-tone btn-tone-" + e + (e ? "" : " active"),
36945 class: T + (l.standalone ? " " + T + "-standalone " : " ") + (t.attr("class") || ""),
36946 role: "application"
36947 }, a = l.editor = q("editor").attr({
36948 contenteditable: !l.standalone,
36949 placeholder: o.placeholder || t.data("placeholder") || t.attr("placeholder") || "",
36951 }), n = l.button = q("button", q("button-open"), q("button-close")).attr("title", o.buttonTitle), s = l.picker = q("picker", q("wrapper", c = q("filters"), o.search ? r = q("search-panel", q("search", o.search ? function() {
36952 l.search = w("<input/>", {
36953 placeholder: o.searchPlaceholder || "",
36956 }), this.append(l.search)
36957 } : null), m) : null, p = q("scroll-area", o.tones && !o.search ? q("tones-panel", m) : null, d = q("emojis-list")))).addClass(F("picker-position-" + o.pickerPosition, !0)).addClass(F("filters-position-" + o.filtersPosition, !0)).addClass(F("search-position-" + o.searchPosition, !0)).addClass("hidden"));
36958 o.search && r.addClass(F("with-search", !0)), l.searchSel = null, a.data(t.data()), w.each(o.attributes, function(e, t) {
36961 var v = q("category-block").attr({
36964 if (w.each(o.filters, function(e, t) {
36966 if ("recent" !== e || l.recentEmojis) {
36967 if ("tones" !== e) w("<i/>", {
36968 class: F("filter", !0) + " " + F("filter-" + e, !0),
36971 }).wrapInner(O(t.icon, l.emojiTemplateAlt)).appendTo(c);
36973 if (!o.tones) return;
36977 var r, i = t.emoji.replace(/[\s,;]+/g, "|");
36978 r = 0 === n ? q("category").attr({
36981 }).appendTo(v) : q("category-block").attr({
36984 }).appendTo(d), 0 < n && (r.hide(), i = i.split("|").join("_tone" + n + "|") + "_tone" + n), "recent" === e && (i = U()), i = O(i, l.sprite ? '<i class="emojibtn" role="button" data-name="{name}" title="{friendlyName}"><i class="emojione-{uni}"></i></i>' : '<i class="emojibtn" role="button" data-name="{name}" title="{friendlyName}"><img class="emojioneemoji lazy-emoji" data-src="{img}"/></i>', !0).split("|").join(""), r.html(i), w('<div class="emojionearea-category-title"/>').text(t.title).prependTo(r)
36987 }), o.filters = null, l.sprite || (l.lasyEmoji = d.find(".lazy-emoji")), (u = c.find(F("filter"))).eq(0).addClass("active"), h = d.find(F("category-block")), f = d.find(F("category")), l.recentFilter = u.filter('[data-filter="recent"]'), l.recentCategory = f.filter("[name=recent]"), l.scrollArea = p, o.container ? w(o.container).wrapInner(g) : g.insertAfter(t), o.hideSource && t.hide(), l.setText(t[i]()), t[i](l.getText()), j.apply(l), l.standalone && !l.getText().length) {
36988 var b = w(t).data("emoji-placeholder") || o.emojiPlaceholder;
36989 l.setText(b), a.addClass("has-placeholder")
36991 D(l, d.find(".emojibtn"), {
36992 click: "emojibtn.click"
36995 }), D(l, m.children(), {
36996 click: "tone.click"
36998 mousedown: "!mousedown"
37000 click: "button.click"
37003 }, a), D(l, a, ["focus", "blur"], function() {
37004 return !l.stayFocused && a
37006 mousedown: "picker.mousedown",
37007 mouseup: "picker.mouseup",
37008 click: "picker.click",
37009 keyup: "picker.keyup",
37010 keydown: "picker.keydown",
37011 keypress: "picker.keypress"
37012 }), D(l, a, ["mousedown", "mouseup", "click", "keyup", "keydown", "keypress"]), D(l, s.find(".emojionearea-filter"), {
37013 click: "filter.click"
37015 change: "source.change"
37016 }), o.search && D(l, l.search, {
37017 keyup: "search.keypress",
37018 focus: "search.focus",
37019 blur: "search.blur"
37022 if (p.on("scroll", function() {
37023 if (!y && (L.call(l), p.is(":not(.skinnable)"))) {
37025 r = p.offset().top;
37026 f.each(function(e, t) {
37027 return !(10 <= w(t).offset().top - r) && void(n = w(t))
37029 var e = u.filter('[data-filter="' + n.attr("name") + '"]');
37030 e[0] && !e.is(".active") && (u.removeClass("active"), e.addClass("active"))
37032 }), l.on("@filter.click", function(e) {
37033 var t = e.is(".active");
37034 if (p.is(".skinnable")) {
37036 m.children().eq(0).click()
37038 y = !0, t || (u.filter(".active").removeClass("active"), e.addClass("active"));
37039 var n = f.filter('[name="' + e.data("filter") + '"]').offset().top,
37041 i = p.offset().top;
37043 scrollTop: n + r - i - 2
37044 }, 200, "swing", function() {
37047 }).on("@picker.show", function() {
37048 l.recentEmojis && V(l), L.call(l)
37049 }).on("@tone.click", function(e) {
37050 m.children().removeClass("active");
37051 var t = e.addClass("active").data("skin");
37052 t ? (p.addClass("skinnable"), h.hide().filter("[data-tone=" + t + "]").show(), u.removeClass("active")) : (p.removeClass("skinnable"), h.hide().filter("[data-tone=0]").show(), u.eq(0).click()), L.call(l), o.search && l.trigger("search.keypress")
37053 }).on("@button.click", function(e) {
37054 e.is(".active") ? l.hidePicker() : (l.showPicker(), l.searchSel = null)
37055 }).on("@!paste", function(a, e) {
37056 var t = function(e) {
37057 var t = "caret-" + (new Date).getTime(),
37059 N(n), N('<i id="' + t + '"></i>'), a.scrollTop(s);
37060 var r = w("#" + t),
37061 i = r.offset().top - a.offset().top,
37063 (o <= s + i || i < s) && a.scrollTop(s + i - 2 * o / 3), r.remove(), l.stayFocused = !1, j.apply(l), S(l, "paste", [a, e, n])
37065 if (e.originalEvent.clipboardData) {
37066 var n = e.originalEvent.clipboardData.getData("text/plain");
37067 return t(n), e.preventDefault ? e.preventDefault() : e.stop(), e.returnValue = !1, e.stopPropagation(), !1
37069 l.stayFocused = !0, N("<span>" + A + "</span>");
37073 contenteditable: !0
37081 }).appendTo(w("BODY")).focus();
37082 window.setTimeout(function() {
37083 a.focus(), k(a[0], r);
37084 var e = H(i.html().replace(/\r\n|\n|\r/g, "<br>"), l);
37087 }).on("@emojibtn.click", function(e) {
37089 a.removeClass("has-placeholder"), null !== l.searchSel && (a.focus(), k(a[0], l.searchSel), l.searchSel = null), l.standalone ? (a.html(O(e.data("name"), l.emojiTemplate)), l.trigger("blur")) : (C(a[0]), N(O(e.data("name"), l.emojiTemplate))), l.recentEmojis && (t = l, n = e.data("name"), r = U().split("|"), -1 !== (i = r.indexOf(n)) && r.splice(i, 1), r.unshift(n), 9 < r.length && r.pop(), localStorage.setItem("recent_emojis", r.join("|")), V(t)), l.trigger("search.keypress")
37090 }).on("@!resize @keyup @emojibtn.click", j).on("@!mousedown", function(e, t) {
37091 return w(t.target).hasClass("search") ? (l.stayFocused = !0, null === l.searchSel && (l.searchSel = C(e[0]))) : (g.is(".focused") || e.focus(), t.preventDefault()), !1
37092 }).on("@change", function() {
37093 var e = l.editor.html().replace(/<\/?(?:div|span|p)[^>]*>/gi, "");
37094 e.length && !/^<br[^>]*>$/i.test(e) || l.editor.html(l.content = ""), t[i](l.getText())
37095 }).on("@source.change", function() {
37096 l.setText(t[i]()), S("change")
37097 }).on("@focus", function() {
37098 g.addClass("focused")
37099 }).on("@blur", function() {
37100 g.removeClass("focused"), o.hidePickerOnBlur && l.hidePicker();
37101 var e = l.editor.html();
37102 l.content !== e ? (l.content = e, S(l, "change", [l.editor]), t.blur().trigger("change")) : t.blur(), o.search && (l.search.val(""), l.trigger("search.keypress", !0))
37103 }), o.search && l.on("@search.focus", function() {
37104 l.stayFocused = !0, l.search.addClass("focused")
37105 }).on("@search.keypress", function(e) {
37106 var r = s.find(".emojionearea-filter"),
37107 n = o.tones ? m.find("i.active").data("skin") : 0,
37108 i = l.search.val().replace(/ /g, "_").replace(/"/g, '\\"');
37109 i && i.length ? (l.recentFilter.hasClass("active") && l.recentFilter.removeClass("active").next().addClass("active"), l.recentCategory.hide(), l.recentFilter.hide(), h.each(function() {
37110 var e = function(e, t) {
37111 var n = e.find('.emojibtn[data-name*="' + i + '"]');
37112 0 === n.length ? (e.data("tone") === t && e.hide(), r.filter('[data-filter="' + e.attr("name") + '"]').hide()) : (e.find('.emojibtn:not([data-name*="' + i + '"])').hide(), n.show(), e.data("tone") === t && e.show(), r.filter('[data-filter="' + e.attr("name") + '"]').show())
37115 0 === t.data("tone") ? f.filter(':not([name="recent"])').each(function() {
37118 }), y ? L.call(l) : p.trigger("scroll")) : (V(l, !0), h.filter('[data-tone="' + m.find("i.active").data("skin") + '"]:not([name="recent"])').show(), w(".emojibtn", h).show(), r.show(), e || L.call(l))
37119 }).on("@search.blur", function() {
37120 l.stayFocused = !1, l.search.removeClass("focused"), l.trigger("blur")
37121 }), o.shortcuts && l.on("@keydown", function(e, t) {
37122 t.ctrlKey || (9 == t.which ? (t.preventDefault(), n.click()) : 27 == t.which && (t.preventDefault(), n.is(".active") && l.hidePicker()))
37123 }), I(o.events) && !w.isEmptyObject(o.events) && w.each(o.events, function(e, t) {
37124 l.on(e.replace(/_/g, "."), t)
37125 }), o.autocomplete) {
37126 var _ = function() {
37128 maxCount: o.textcomplete.maxCount,
37129 placement: o.textcomplete.placement
37131 o.shortcuts && (e.onKeydown = function(e, t) {
37132 return e.ctrlKey || 13 != e.which ? void 0 : t.KEY_ENTER
37134 var n = w.map(E.emojioneList, function(e, t) {
37135 return o.autocompleteTones ? t : /_tone[12345]/.test(t) ? null : t
37137 n.sort(), a.textcomplete([{
37139 match: /\B(:[\-+\w]*)$/,
37140 search: function(t, e) {
37141 e(w.map(n, function(e) {
37142 return 0 === e.indexOf(t) ? e : null
37145 template: function(e) {
37146 return O(e, l.emojiTemplate) + " " + e.replace(/:/g, "")
37148 replace: function(e) {
37149 return O(e, l.emojiTemplate)
37153 }], e), o.textcomplete.placement && "static" == w(a.data("textComplete").option.appendTo).css("position") && w(a.data("textComplete").option.appendTo).css("position", "relative")
37157 var e = function() {
37158 l.off("enabled", e), _()
37163 w.fn.textcomplete ? $() : w.ajax({
37164 url: "https://cdn.rawgit.com/yuku-t/jquery-textcomplete/v1.3.4/dist/jquery.textcomplete.js",
37165 dataType: "script",
37170 l.inline && (g.addClass(F("inline", !0)), l.on("@keydown", function(e, t) {
37171 13 == t.which && t.preventDefault()
37172 })), /firefox/i.test(navigator.userAgent) && document.execCommand("enableObjectResizing", !1, !1), l.isReady = !0, l.trigger("onLoad", a), l.trigger("ready", a)
37174 window.getSelection && document.createRange ? (C = function(e) {
37175 var t = window.getSelection && window.getSelection();
37176 return t && 0 < t.rangeCount ? t.getRangeAt(0) : void 0
37177 }, k = function(e, t) {
37178 var n = document.createRange();
37179 n.setStart(t.startContainer, t.startOffset), n.setEnd(t.endContainer, t.endOffset), (t = window.getSelection()).removeAllRanges(), t.addRange(n)
37180 }) : document.selection && document.body.createTextRange && (C = function(e) {
37181 return document.selection.createRange()
37182 }, k = function(e, t) {
37183 var n = document.body.createTextRange();
37184 n.moveToElementText(e), n.setStart(t.startContanier, t.startOffset), n.setEnd(t.endContainer, t.endOffset), n.select()
37187 defaultBase: "https://cdnjs.cloudflare.com/ajax/libs/emojione/",
37188 defaultBase3: "https://cdn.jsdelivr.net/",
37195 if (t = R(t), !g.isLoading)
37196 if (!E || h(f(E)) < 2) {
37198 g.isLoading = !0, e = 5 < h(n) ? g.defaultBase3 + "npm/emojione@" + n : 4 < h(n) ? g.defaultBase3 + "emojione/" + n : g.defaultBase + "/" + n, w.ajax({
37199 url: e + "/lib/js/emojione.min.js",
37200 dataType: "script",
37202 success: function() {
37204 for (E = window.emojione, n = f(E), e = 4 < (M = h(n)) ? (g.base = g.defaultBase3 + "emojione/assets/" + n, g.base + "/sprites/emojione-sprite-" + E.emojiSize + ".css") : (g.base = g.defaultBase + n + "/assets", g.base + "/sprites/emojione.sprites.css"), t.sprite && (document.createStyleSheet ? document.createStyleSheet(e) : w("<link/>", {
37207 }).appendTo("head")); i.length;) i.shift().call();
37211 } else n = f(E), M = h(n), g.base = 4 < M ? g.defaultBase3 + "emojione/assets/" + n : g.defaultBase + n + "/assets";
37214 t.useInternalCDN && (4 < M && (e = E.emojiSize + "/"), E.imagePathPNG = g.base + "/png/" + e, E.imagePathSVG = g.base + "/svg/" + e, E.imagePathSVGSprites = g.base + "/sprites/emojione.sprites.svg", E.imageType = t.imageType), 4 < h(n) ? (l = E.regUnicode, E.imageType = t.imageType || "png") : l = new RegExp("<object[^>]*>.*?</object>|<span[^>]*>.*?</span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|(" + E.unicodeRegexp + ")", "gi")
37217 var t = function(e, t) {
37219 v(t), a[n.id = ++r] = {}, s[n.id] = {}, o(function() {
37223 t.prototype.on = function(e, n) {
37224 if (e && w.isFunction(n)) {
37226 w.each(e.toLowerCase().split(" "), function(e, t) {
37228 i = i.replace(/^@/, "");
37230 s[e][i] && (w.each(s[e][i], function(e, n) {
37231 w.each(w.isArray(n[0]) ? n[0] : [n[0]], function(e, t) {
37232 w(t).on(n[1], function() {
37233 var e = c.call(arguments),
37234 t = w.isFunction(n[2]) ? n[2].apply(r, [i].concat(e)) : n[2];
37235 t && S(r, i, [t].concat(e))
37238 }), s[e][i] = null)
37239 })(r, t), (a[r.id][t] || (a[r.id][t] = [])).push(n)
37243 }, t.prototype.off = function(e, r) {
37246 w.each(e.toLowerCase().replace(/_/g, ".").split(" "), function(e, n) {
37247 a[i][n] && !/^@/.test(n) && (r ? w.each(a[i][n], function(e, t) {
37248 t === r && (a[i][n] = a[i][n].splice(e, 1))
37253 }, t.prototype.trigger = function() {
37254 var e = c.call(arguments),
37255 t = [this].concat(e.slice(0, 1));
37256 return t.push(e.slice(1)), S.apply(this, t)
37257 }, t.prototype.setFocus = function() {
37259 return o(function() {
37262 }, t.prototype.setText = function(e) {
37264 return o(function() {
37265 t.editor.html(P(e, t)), t.content = t.editor.html(), S(t, "change", [t.editor]), j.apply(t)
37267 }, t.prototype.getText = function() {
37268 return H(this.editor.html(), this)
37269 }, t.prototype.showPicker = function() {
37271 return e._sh_timer && window.clearTimeout(e._sh_timer), e.picker.removeClass("hidden"), e._sh_timer = window.setTimeout(function() {
37272 e.button.addClass("active")
37273 }, 50), S(e, "picker.show", [e.picker]), e
37274 }, t.prototype.hidePicker = function() {
37276 return e._sh_timer && window.clearTimeout(e._sh_timer), e.button.removeClass("active"), e._sh_timer = window.setTimeout(function() {
37277 e.picker.addClass("hidden")
37278 }, 500), S(e, "picker.hide", [e.picker]), e
37279 }, t.prototype.enable = function() {
37282 t.disabled = !1, t.editor.prop("contenteditable", !0), t.button.show();
37283 var e = t[t.standalone ? "button" : "editor"];
37284 e.parent().removeClass("emojionearea-disable"), S(t, "enabled", [e])
37286 return t.isReady ? e() : t.on("ready", e), t
37287 }, t.prototype.disable = function() {
37290 var e = function() {
37291 t.editor.prop("contenteditable", !1), t.hidePicker(), t.button.hide();
37292 var e = t[t.standalone ? "button" : "editor"];
37293 e.parent().addClass("emojionearea-disable"), S(t, "disabled", [e])
37295 return t.isReady ? e() : t.on("ready", e), t
37296 }, w.fn.emojioneArea = function(e) {
37297 return this.each(function() {
37298 return this.emojioneArea || w.data(this, "emojioneArea", this.emojioneArea = new t(w(this), e)), this.emojioneArea
37300 }, w.fn.emojioneArea.defaults = n(), w.fn.emojioneAreaText = function(e) {
37304 shortnames: !e || void 0 === e.shortnames || e.shortnames,
37305 emojiTemplate: '<img alt="{alt}" class="emojione' + (e && e.sprite && M < 3 ? '-{uni}" src="' + x : 'emoji" src="{img}') + '"/>'
37307 return v(e), o(function() {
37308 t.each(function() {
37310 return e.hasClass("emojionearea-text") || e.addClass("emojionearea-text").html(P(e.is("TEXTAREA") || e.is("INPUT") ? e.val() : e.text(), n)), e