/* Minification failed. Returning unminified contents.
(1,5348-5351): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5358-5361): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5368-5371): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5378-5381): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5388-5391): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5398-5401): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5408-5411): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5418-5421): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5428-5431): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5438-5441): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5448-5451): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5458-5461): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5468-5471): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5478-5481): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5488-5491): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5498-5501): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5508-5511): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5518-5521): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5528-5531): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5538-5541): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5548-5551): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5558-5561): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5568-5571): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5578-5581): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5588-5591): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5598-5601): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5608-5611): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5618-5621): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5628-5631): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5638-5641): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5648-5651): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5658-5661): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5668-5671): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5678-5681): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5688-5691): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5698-5701): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5708-5711): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5718-5721): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5728-5731): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5738-5741): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5748-5751): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5758-5761): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5768-5771): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5778-5781): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5788-5791): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5798-5801): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5808-5811): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5818-5821): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5828-5831): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5838-5841): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5848-5851): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5858-5861): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5868-5871): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5878-5881): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5888-5891): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5898-5901): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5908-5911): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5919-5922): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5930-5933): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5941-5944): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5952-5955): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,5973-5976): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,5983-5986): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,5993-5996): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6003-6006): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6013-6016): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6023-6026): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6033-6036): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6043-6046): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6053-6056): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6063-6066): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6073-6076): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6083-6086): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6093-6096): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6103-6106): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6113-6116): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6123-6126): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6133-6136): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6143-6146): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6153-6156): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6163-6166): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6173-6176): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6183-6186): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6193-6196): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6203-6206): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6213-6216): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6223-6226): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6233-6236): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6243-6246): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6253-6256): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6263-6266): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6273-6276): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6283-6286): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6293-6296): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6303-6306): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6313-6316): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6323-6326): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6333-6336): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6343-6346): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6353-6356): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6363-6366): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6373-6376): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6383-6386): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6393-6396): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6403-6406): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6413-6416): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6423-6426): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6433-6436): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6443-6446): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6453-6456): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6463-6466): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6473-6476): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6483-6486): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6493-6496): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6503-6506): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6513-6516): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6523-6526): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6533-6536): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6543-6546): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6553-6556): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6563-6566): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6573-6576): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6583-6586): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6593-6596): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6603-6606): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6613-6616): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6623-6626): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6633-6636): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6643-6646): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6653-6656): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6663-6666): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6673-6676): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6683-6686): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6693-6696): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6703-6706): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6713-6716): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6723-6726): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6733-6736): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6743-6746): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6753-6756): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6763-6766): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6773-6776): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6783-6786): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6793-6796): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6803-6806): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6813-6816): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6823-6826): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6833-6836): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6843-6846): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,6853-6856): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6863-6866): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6873-6876): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6883-6886): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,6893-6896): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6903-6906): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6913-6916): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6923-6926): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6933-6936): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6943-6946): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6953-6956): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6963-6966): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6973-6976): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6983-6986): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,6993-6996): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,7003-7006): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,7013-7016): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,7023-7026): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,7033-7036): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,7043-7046): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,7053-7056): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,7063-7066): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,7073-7076): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,7083-7086): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,7093-7096): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,7103-7106): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,7113-7116): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,7123-7126): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,7133-7136): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,7143-7146): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,7153-7156): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,7163-7166): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,7173-7176): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,7183-7186): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,7194-7197): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,7205-7208): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,7216-7219): run-time error JS1292: Strict-mode does not allow duplicate property names: "�"
(1,7227-7230): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
(1,7238-7241): run-time error JS1292: Strict-mode does not allow duplicate property names: "?"
 */
!function (e) { "use strict"; var t = ["sanitize", "whiteList", "sanitizeFn"], i = ["background", "cite", "href", "itemtype", "longdesc", "poster", "src", "xlink:href"], s = { "*": ["class", "dir", "id", "lang", "role", "tabindex", "style", /^aria-[\w-]*$/i], a: ["target", "href", "title", "rel"], area: [], b: [], br: [], col: [], code: [], div: [], em: [], hr: [], h1: [], h2: [], h3: [], h4: [], h5: [], h6: [], i: [], img: ["src", "alt", "title", "width", "height"], li: [], ol: [], p: [], pre: [], s: [], small: [], span: [], sub: [], sup: [], strong: [], u: [], ul: [] }, n = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:\/?#]*(?:[\/?#]|$))/gi, o = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+\/]+=*$/i; function l(t, s) { var l = t.nodeName.toLowerCase(); if (-1 !== e.inArray(l, s)) return -1 === e.inArray(l, i) || Boolean(t.nodeValue.match(n) || t.nodeValue.match(o)); for (var r = e(s).filter(function (e, t) { return t instanceof RegExp }), a = 0, c = r.length; a < c; a++)if (l.match(r[a])) return !0; return !1 } function r(e, t, i) { if (i && "function" == typeof i) return i(e); for (var s = Object.keys(t), n = 0, o = e.length; n < o; n++)for (var r = e[n].querySelectorAll("*"), a = 0, c = r.length; a < c; a++) { var d = r[a], h = d.nodeName.toLowerCase(); if (-1 !== s.indexOf(h)) for (var p = [].slice.call(d.attributes), u = [].concat(t["*"] || [], t[h] || []), f = 0, m = p.length; f < m; f++) { var v = p[f]; l(v, u) || d.removeAttribute(v.nodeName) } else d.parentNode.removeChild(d) } } "classList" in document.createElement("_") || function (t) { if ("Element" in t) { var i = t.Element.prototype, s = Object, n = function () { var t = e(this); return { add: function (e) { return e = Array.prototype.slice.call(arguments).join(" "), t.addClass(e) }, remove: function (e) { return e = Array.prototype.slice.call(arguments).join(" "), t.removeClass(e) }, toggle: function (e, i) { return t.toggleClass(e, i) }, contains: function (e) { return t.hasClass(e) } } }; if (s.defineProperty) { var o = { get: n, enumerable: !0, configurable: !0 }; try { s.defineProperty(i, "classList", o) } catch (e) { void 0 !== e.number && -2146823252 !== e.number || (o.enumerable = !1, s.defineProperty(i, "classList", o)) } } else s.prototype.__defineGetter__ && i.__defineGetter__("classList", n) } }(window); var a, c, d, h = document.createElement("_"); if (h.classList.add("c1", "c2"), !h.classList.contains("c2")) { var p = DOMTokenList.prototype.add, u = DOMTokenList.prototype.remove; DOMTokenList.prototype.add = function () { Array.prototype.forEach.call(arguments, p.bind(this)) }, DOMTokenList.prototype.remove = function () { Array.prototype.forEach.call(arguments, u.bind(this)) } } if (h.classList.toggle("c3", !1), h.classList.contains("c3")) { var f = DOMTokenList.prototype.toggle; DOMTokenList.prototype.toggle = function (e, t) { return 1 in arguments && !this.contains(e) == !t ? t : f.call(this, e) } } function m(e, t) { for (var i, s = [], n = t || e.selectedOptions, o = 0, l = n.length; o < l; o++)(i = n[o]).disabled || "OPTGROUP" === i.parentNode.tagName && i.parentNode.disabled || s.push(i.value || i.text); return e.multiple ? s : s.length ? s[0] : null } h = null, String.prototype.startsWith || (a = function () { try { var e = {}, t = Object.defineProperty, i = t(e, e, e) && t } catch (e) { } return i }(), c = {}.toString, d = function (e) { if (null == this) throw new TypeError; var t = String(this); if (e && "[object RegExp]" == c.call(e)) throw new TypeError; var i = t.length, s = String(e), n = s.length, o = arguments.length > 1 ? arguments[1] : void 0, l = o ? Number(o) : 0; l != l && (l = 0); var r = Math.min(Math.max(l, 0), i); if (n + r > i) return !1; for (var a = -1; ++a < n;)if (t.charCodeAt(r + a) != s.charCodeAt(a)) return !1; return !0 }, a ? a(String.prototype, "startsWith", { value: d, configurable: !0, writable: !0 }) : String.prototype.startsWith = d), Object.keys || (Object.keys = function (e, t, i) { for (t in i = [], e) i.hasOwnProperty.call(e, t) && i.push(t); return i }), HTMLSelectElement && !HTMLSelectElement.prototype.hasOwnProperty("selectedOptions") && Object.defineProperty(HTMLSelectElement.prototype, "selectedOptions", { get: function () { return this.querySelectorAll(":checked") } }); var v = { useDefault: !1, _set: e.valHooks.select.set }; e.valHooks.select.set = function (t, i) { return i && !v.useDefault && e(t).data("selected", !0), v._set.apply(this, arguments) }; var g = null, b = function () { try { return new Event("change"), !0 } catch (e) { return !1 } }(); function w(e, t, i, s) { for (var n = ["display", "subtext", "tokens"], o = !1, l = 0; l < n.length; l++) { var r = n[l], a = e[r]; if (a && (a = a.toString(), "display" === r && (a = a.replace(/<[^>]+>/g, "")), s && (a = S(a)), a = a.toUpperCase(), o = "contains" === i ? a.indexOf(t) >= 0 : a.startsWith(t))) break } return o } function I(e) { return parseInt(e, 10) || 0 } e.fn.triggerNative = function (e) { var t, i = this[0]; i.dispatchEvent ? (b ? t = new Event(e, { bubbles: !0 }) : (t = document.createEvent("Event")).initEvent(e, !0, !1), i.dispatchEvent(t)) : i.fireEvent ? ((t = document.createEventObject()).eventType = e, i.fireEvent("on" + e, t)) : this.trigger(e) }; var x = { "�": "A", "�": "A", "�": "A", "�": "A", "�": "A", "�": "A", "�": "a", "�": "a", "�": "a", "�": "a", "�": "a", "�": "a", "�": "C", "�": "c", "�": "D", "�": "d", "�": "E", "�": "E", "�": "E", "�": "E", "�": "e", "�": "e", "�": "e", "�": "e", "�": "I", "�": "I", "�": "I", "�": "I", "�": "i", "�": "i", "�": "i", "�": "i", "�": "N", "�": "n", "�": "O", "�": "O", "�": "O", "�": "O", "�": "O", "�": "O", "�": "o", "�": "o", "�": "o", "�": "o", "�": "o", "�": "o", "�": "U", "�": "U", "�": "U", "�": "U", "�": "u", "�": "u", "�": "u", "�": "u", "�": "Y", "�": "y", "�": "y", "�": "Ae", "�": "ae", "�": "Th", "�": "th", "�": "ss", "?": "A", "?": "A", "?": "A", "?": "a", "?": "a", "?": "a", "?": "C", "?": "C", "?": "C", "?": "C", "?": "c", "?": "c", "?": "c", "?": "c", "?": "D", "?": "D", "?": "d", "?": "d", "?": "E", "?": "E", "?": "E", "?": "E", "?": "E", "?": "e", "?": "e", "?": "e", "?": "e", "?": "e", "?": "G", "?": "G", "?": "G", "?": "G", "?": "g", "?": "g", "?": "g", "?": "g", "?": "H", "?": "H", "?": "h", "?": "h", "?": "I", "?": "I", "?": "I", "?": "I", "?": "I", "?": "i", "?": "i", "?": "i", "?": "i", "?": "i", "?": "J", "?": "j", "?": "K", "?": "k", "?": "k", "?": "L", "?": "L", "?": "L", "?": "L", "?": "L", "?": "l", "?": "l", "?": "l", "?": "l", "?": "l", "?": "N", "?": "N", "?": "N", "?": "N", "?": "n", "?": "n", "?": "n", "?": "n", "?": "O", "?": "O", "?": "O", "?": "o", "?": "o", "?": "o", "?": "R", "?": "R", "?": "R", "?": "r", "?": "r", "?": "r", "?": "S", "?": "S", "?": "S", "�": "S", "?": "s", "?": "s", "?": "s", "�": "s", "?": "T", "?": "T", "?": "T", "?": "t", "?": "t", "?": "t", "?": "U", "?": "U", "?": "U", "?": "U", "?": "U", "?": "U", "?": "u", "?": "u", "?": "u", "?": "u", "?": "u", "?": "u", "?": "W", "?": "w", "?": "Y", "?": "y", "�": "Y", "?": "Z", "?": "Z", "�": "Z", "?": "z", "?": "z", "�": "z", "?": "IJ", "?": "ij", "�": "Oe", "�": "oe", "?": "'n", "?": "s" }, k = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g, $ = RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\u1ab0-\\u1aff\\u1dc0-\\u1dff]", "g"); function y(e) { return x[e] } function S(e) { return (e = e.toString()) && e.replace(k, y).replace($, "") } var E, C, O, z, T, A = (E = { "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#x27;", "`": "&#x60;" }, C = function (e) { return E[e] }, O = "(?:" + Object.keys(E).join("|") + ")", z = RegExp(O), T = RegExp(O, "g"), function (e) { return e = null == e ? "" : "" + e, z.test(e) ? e.replace(T, C) : e }), L = { 32: " ", 48: "0", 49: "1", 50: "2", 51: "3", 52: "4", 53: "5", 54: "6", 55: "7", 56: "8", 57: "9", 59: ";", 65: "A", 66: "B", 67: "C", 68: "D", 69: "E", 70: "F", 71: "G", 72: "H", 73: "I", 74: "J", 75: "K", 76: "L", 77: "M", 78: "N", 79: "O", 80: "P", 81: "Q", 82: "R", 83: "S", 84: "T", 85: "U", 86: "V", 87: "W", 88: "X", 89: "Y", 90: "Z", 96: "0", 97: "1", 98: "2", 99: "3", 100: "4", 101: "5", 102: "6", 103: "7", 104: "8", 105: "9" }, N = 27, D = 13, H = 32, P = 9, B = 38, W = 40, M = { success: !1, major: "3" }; try { M.full = (e.fn.dropdown.Constructor.VERSION || "").split(" ")[0].split("."), M.major = M.full[0], M.success = !0 } catch (e) { } var R = 0, U = ".bs.select", j = { DISABLED: "disabled", DIVIDER: "divider", SHOW: "open", DROPUP: "dropup", MENU: "dropdown-menu", MENURIGHT: "dropdown-menu-right", MENULEFT: "dropdown-menu-left", BUTTONCLASS: "btn-default", POPOVERHEADER: "popover-title", ICONBASE: "glyphicon", TICKICON: "glyphicon-ok" }, V = { MENU: "." + j.MENU }, F = { span: document.createElement("span"), i: document.createElement("i"), subtext: document.createElement("small"), a: document.createElement("a"), li: document.createElement("li"), whitespace: document.createTextNode("�"), fragment: document.createDocumentFragment() }; F.a.setAttribute("role", "option"), F.subtext.className = "text-muted", F.text = F.span.cloneNode(!1), F.text.className = "text", F.checkMark = F.span.cloneNode(!1); var _ = new RegExp(B + "|" + W), G = new RegExp("^" + P + "$|" + N), q = { li: function (e, t, i) { var s = F.li.cloneNode(!1); return e && (1 === e.nodeType || 11 === e.nodeType ? s.appendChild(e) : s.innerHTML = e), void 0 !== t && "" !== t && (s.className = t), null != i && s.classList.add("optgroup-" + i), s }, a: function (e, t, i) { var s = F.a.cloneNode(!0); return e && (11 === e.nodeType ? s.appendChild(e) : s.insertAdjacentHTML("beforeend", e)), void 0 !== t && "" !== t && (s.className = t), "4" === M.major && s.classList.add("dropdown-item"), i && s.setAttribute("style", i), s }, text: function (e, t) { var i, s, n = F.text.cloneNode(!1); if (e.content) n.innerHTML = e.content; else { if (n.textContent = e.text, e.icon) { var o = F.whitespace.cloneNode(!1); (s = (!0 === t ? F.i : F.span).cloneNode(!1)).className = e.iconBase + " " + e.icon, F.fragment.appendChild(s), F.fragment.appendChild(o) } e.subtext && ((i = F.subtext.cloneNode(!1)).textContent = e.subtext, n.appendChild(i)) } if (!0 === t) for (; n.childNodes.length > 0;)F.fragment.appendChild(n.childNodes[0]); else F.fragment.appendChild(n); return F.fragment }, label: function (e) { var t, i, s = F.text.cloneNode(!1); if (s.innerHTML = e.label, e.icon) { var n = F.whitespace.cloneNode(!1); (i = F.span.cloneNode(!1)).className = e.iconBase + " " + e.icon, F.fragment.appendChild(i), F.fragment.appendChild(n) } return e.subtext && ((t = F.subtext.cloneNode(!1)).textContent = e.subtext, s.appendChild(t)), F.fragment.appendChild(s), F.fragment } }, K = function (t, i) { var s = this; v.useDefault || (e.valHooks.select.set = v._set, v.useDefault = !0), this.$element = e(t), this.$newElement = null, this.$button = null, this.$menu = null, this.options = i, this.selectpicker = { main: {}, search: {}, current: {}, view: {}, keydown: { keyHistory: "", resetKeyHistory: { start: function () { return setTimeout(function () { s.selectpicker.keydown.keyHistory = "" }, 800) } } } }, null === this.options.title && (this.options.title = this.$element.attr("title")); var n = this.options.windowPadding; "number" == typeof n && (this.options.windowPadding = [n, n, n, n]), this.val = K.prototype.val, this.render = K.prototype.render, this.refresh = K.prototype.refresh, this.setStyle = K.prototype.setStyle, this.selectAll = K.prototype.selectAll, this.deselectAll = K.prototype.deselectAll, this.destroy = K.prototype.destroy, this.remove = K.prototype.remove, this.show = K.prototype.show, this.hide = K.prototype.hide, this.init() }; function Y(i) { var s, n = arguments, o = i; if ([].shift.apply(n), !M.success) { try { M.full = (e.fn.dropdown.Constructor.VERSION || "").split(" ")[0].split(".") } catch (e) { K.BootstrapVersion ? M.full = K.BootstrapVersion.split(" ")[0].split(".") : (M.full = [M.major, "0", "0"], console.warn("There was an issue retrieving Bootstrap's version. Ensure Bootstrap is being loaded before bootstrap-select and there is no namespace collision. If loading Bootstrap asynchronously, the version may need to be manually specified via $.fn.selectpicker.Constructor.BootstrapVersion.", e)) } M.major = M.full[0], M.success = !0 } if ("4" === M.major) { var l = []; K.DEFAULTS.style === j.BUTTONCLASS && l.push({ name: "style", className: "BUTTONCLASS" }), K.DEFAULTS.iconBase === j.ICONBASE && l.push({ name: "iconBase", className: "ICONBASE" }), K.DEFAULTS.tickIcon === j.TICKICON && l.push({ name: "tickIcon", className: "TICKICON" }), j.DIVIDER = "dropdown-divider", j.SHOW = "show", j.BUTTONCLASS = "btn-light", j.POPOVERHEADER = "popover-header", j.ICONBASE = "", j.TICKICON = "bs-ok-default"; for (var r = 0; r < l.length; r++) { i = l[r]; K.DEFAULTS[i.name] = j[i.className] } } var a = this.each(function () { var i = e(this); if (i.is("select")) { var l = i.data("selectpicker"), r = "object" == typeof o && o; if (l) { if (r) for (var a in r) r.hasOwnProperty(a) && (l.options[a] = r[a]) } else { var c = i.data(); for (var d in c) c.hasOwnProperty(d) && -1 !== e.inArray(d, t) && delete c[d]; var h = e.extend({}, K.DEFAULTS, e.fn.selectpicker.defaults || {}, c, r); h.template = e.extend({}, K.DEFAULTS.template, e.fn.selectpicker.defaults ? e.fn.selectpicker.defaults.template : {}, c.template, r.template), i.data("selectpicker", l = new K(this, h)) } "string" == typeof o && (s = l[o] instanceof Function ? l[o].apply(l, n) : l.options[o]) } }); return void 0 !== s ? s : a } K.VERSION = "1.13.10", K.DEFAULTS = { noneSelectedText: "Nothing selected", noneResultsText: "No results matched {0}", countSelectedText: function (e, t) { return 1 == e ? "{0} item selected" : "{0} items selected" }, maxOptionsText: function (e, t) { return [1 == e ? "Limit reached ({n} item max)" : "Limit reached ({n} items max)", 1 == t ? "Group limit reached ({n} item max)" : "Group limit reached ({n} items max)"] }, selectAllText: "Select All", deselectAllText: "Deselect All", doneButton: !1, doneButtonText: "Close", multipleSeparator: ", ", styleBase: "btn", style: j.BUTTONCLASS, size: "auto", title: null, selectedTextFormat: "values", width: !1, container: !1, hideDisabled: !1, showSubtext: !1, showIcon: !0, showContent: !0, dropupAuto: !0, header: !1, liveSearch: !1, liveSearchPlaceholder: null, liveSearchNormalize: !1, liveSearchStyle: "contains", actionsBox: !1, iconBase: j.ICONBASE, tickIcon: j.TICKICON, showTick: !1, template: { caret: '<span class="caret"></span>' }, maxOptions: !1, mobile: !1, selectOnTab: !1, dropdownAlignRight: !1, windowPadding: 0, virtualScroll: 600, display: !1, sanitize: !0, sanitizeFn: null, whiteList: s }, K.prototype = { constructor: K, init: function () { var e = this, t = this.$element.attr("id"); R++, this.selectId = "bs-select-" + R, this.$element[0].classList.add("bs-select-hidden"), this.multiple = this.$element.prop("multiple"), this.autofocus = this.$element.prop("autofocus"), this.$element[0].classList.contains("show-tick") && (this.options.showTick = !0), this.$newElement = this.createDropdown(), this.$element.after(this.$newElement).prependTo(this.$newElement), this.$button = this.$newElement.children("button"), this.$menu = this.$newElement.children(V.MENU), this.$menuInner = this.$menu.children(".inner"), this.$searchbox = this.$menu.find("input"), this.$element[0].classList.remove("bs-select-hidden"), !0 === this.options.dropdownAlignRight && this.$menu[0].classList.add(j.MENURIGHT), void 0 !== t && this.$button.attr("data-id", t), this.checkDisabled(), this.clickListener(), this.options.liveSearch ? (this.liveSearchListener(), this.focusedParent = this.$searchbox[0]) : this.focusedParent = this.$menuInner[0], this.setStyle(), this.render(), this.setWidth(), this.options.container ? this.selectPosition() : this.$element.on("hide.bs.select", function () { if (e.isVirtual()) { var t = e.$menuInner[0], i = t.firstChild.cloneNode(!1); t.replaceChild(i, t.firstChild), t.scrollTop = 0 } }), this.$menu.data("this", this), this.$newElement.data("this", this), this.options.mobile && this.mobile(), this.$newElement.on({ "hide.bs.dropdown": function (t) { e.$element.trigger("hide.bs.select", t) }, "hidden.bs.dropdown": function (t) { e.$element.trigger("hidden.bs.select", t) }, "show.bs.dropdown": function (t) { e.$element.trigger("show.bs.select", t) }, "shown.bs.dropdown": function (t) { e.$element.trigger("shown.bs.select", t) } }), e.$element[0].hasAttribute("required") && this.$element.on("invalid.bs.select", function () { e.$button[0].classList.add("bs-invalid"), e.$element.on("shown.bs.select.invalid", function () { e.$element.val(e.$element.val()).off("shown.bs.select.invalid") }).on("rendered.bs.select", function () { this.validity.valid && e.$button[0].classList.remove("bs-invalid"), e.$element.off("rendered.bs.select") }), e.$button.on("blur.bs.select", function () { e.$element.trigger("focus").trigger("blur"), e.$button.off("blur.bs.select") }) }), setTimeout(function () { e.createLi(), e.$element.trigger("loaded.bs.select") }) }, createDropdown: function () { var t = this.multiple || this.options.showTick ? " show-tick" : "", i = this.multiple ? ' aria-multiselectable="true"' : "", s = "", n = this.autofocus ? " autofocus" : ""; M.major < 4 && this.$element.parent().hasClass("input-group") && (s = " input-group-btn"); var o, l = "", r = "", a = "", c = ""; return this.options.header && (l = '<div class="' + j.POPOVERHEADER + '"><button type="button" class="close" aria-hidden="true">&times;</button>' + this.options.header + "</div>"), this.options.liveSearch && (r = '<div class="bs-searchbox"><input type="text" class="form-control" autocomplete="off"' + (null === this.options.liveSearchPlaceholder ? "" : ' placeholder="' + A(this.options.liveSearchPlaceholder) + '"') + ' role="combobox" aria-label="Search" aria-controls="' + this.selectId + '" aria-autocomplete="list"></div>'), this.multiple && this.options.actionsBox && (a = '<div class="bs-actionsbox"><div class="btn-group btn-group-sm btn-block"><button type="button" class="actions-btn bs-select-all btn ' + j.BUTTONCLASS + '">' + this.options.selectAllText + '</button><button type="button" class="actions-btn bs-deselect-all btn ' + j.BUTTONCLASS + '">' + this.options.deselectAllText + "</button></div></div>"), this.multiple && this.options.doneButton && (c = '<div class="bs-donebutton"><div class="btn-group btn-block"><button type="button" class="btn btn-sm ' + j.BUTTONCLASS + '">' + this.options.doneButtonText + "</button></div></div>"), o = '<div class="dropdown bootstrap-select' + t + s + '"><button type="button" class="' + this.options.styleBase + ' dropdown-toggle" ' + ("static" === this.options.display ? 'data-display="static"' : "") + 'data-toggle="dropdown"' + n + ' role="combobox" aria-owns="' + this.selectId + '" aria-haspopup="listbox" aria-expanded="false"><div class="filter-option"><div class="filter-option-inner"><div class="filter-option-inner-inner"></div></div> </div>' + ("4" === M.major ? "" : '<span class="bs-caret">' + this.options.template.caret + "</span>") + '</button><div class="' + j.MENU + " " + ("4" === M.major ? "" : j.SHOW) + '">' + l + r + a + '<div class="inner ' + j.SHOW + '" role="listbox" id="' + this.selectId + '" tabindex="-1" ' + i + '><ul class="' + j.MENU + " inner " + ("4" === M.major ? j.SHOW : "") + '" role="presentation"></ul></div>' + c + "</div></div>", e(o) }, setPositionData: function () { this.selectpicker.view.canHighlight = [], this.selectpicker.view.size = 0; for (var e = 0; e < this.selectpicker.current.data.length; e++) { var t = this.selectpicker.current.data[e], i = !0; "divider" === t.type ? (i = !1, t.height = this.sizeInfo.dividerHeight) : "optgroup-label" === t.type ? (i = !1, t.height = this.sizeInfo.dropdownHeaderHeight) : t.height = this.sizeInfo.liHeight, t.disabled && (i = !1), this.selectpicker.view.canHighlight.push(i), i && (this.selectpicker.view.size++, t.posinset = this.selectpicker.view.size), t.position = (0 === e ? 0 : this.selectpicker.current.data[e - 1].position) + t.height } }, isVirtual: function () { return !1 !== this.options.virtualScroll && this.selectpicker.main.elements.length >= this.options.virtualScroll || !0 === this.options.virtualScroll }, createView: function (t, i, s) { var n, o, l = this, a = 0, c = []; if (this.selectpicker.current = t ? this.selectpicker.search : this.selectpicker.main, this.setPositionData(), i) if (s) a = this.$menuInner[0].scrollTop; else if (!l.multiple) { var d = l.$element[0], h = (d.options[d.selectedIndex] || {}).liIndex; if ("number" == typeof h && !1 !== l.options.size) { var p = l.selectpicker.main.data[h], u = p && p.position; u && (a = u - (l.sizeInfo.menuInnerHeight + l.sizeInfo.liHeight) / 2) } } function f(e, i) { var s, a, d, h, p, u, f, m, v, g, b = l.selectpicker.current.elements.length, w = [], I = !0, x = l.isVirtual(); l.selectpicker.view.scrollTop = e, !0 === x && l.sizeInfo.hasScrollBar && l.$menu[0].offsetWidth > l.sizeInfo.totalMenuWidth && (l.sizeInfo.menuWidth = l.$menu[0].offsetWidth, l.sizeInfo.totalMenuWidth = l.sizeInfo.menuWidth + l.sizeInfo.scrollBarWidth, l.$menu.css("min-width", l.sizeInfo.menuWidth)), s = Math.ceil(l.sizeInfo.menuInnerHeight / l.sizeInfo.liHeight * 1.5), a = Math.round(b / s) || 1; for (var k = 0; k < a; k++) { var $ = (k + 1) * s; if (k === a - 1 && ($ = b), w[k] = [k * s + (k ? 1 : 0), $], !b) break; void 0 === p && e <= l.selectpicker.current.data[$ - 1].position - l.sizeInfo.menuInnerHeight && (p = k) } if (void 0 === p && (p = 0), u = [l.selectpicker.view.position0, l.selectpicker.view.position1], d = Math.max(0, p - 1), h = Math.min(a - 1, p + 1), l.selectpicker.view.position0 = !1 === x ? 0 : Math.max(0, w[d][0]) || 0, l.selectpicker.view.position1 = !1 === x ? b : Math.min(b, w[h][1]) || 0, f = u[0] !== l.selectpicker.view.position0 || u[1] !== l.selectpicker.view.position1, void 0 !== l.activeIndex && (o = l.selectpicker.main.elements[l.prevActiveIndex], c = l.selectpicker.main.elements[l.activeIndex], n = l.selectpicker.main.elements[l.selectedIndex], i && (l.activeIndex !== l.selectedIndex && l.defocusItem(c), l.activeIndex = void 0), l.activeIndex && l.activeIndex !== l.selectedIndex && l.defocusItem(n)), void 0 !== l.prevActiveIndex && l.prevActiveIndex !== l.activeIndex && l.prevActiveIndex !== l.selectedIndex && l.defocusItem(o), (i || f) && (m = l.selectpicker.view.visibleElements ? l.selectpicker.view.visibleElements.slice() : [], l.selectpicker.view.visibleElements = !1 === x ? l.selectpicker.current.elements : l.selectpicker.current.elements.slice(l.selectpicker.view.position0, l.selectpicker.view.position1), l.setOptionStatus(), (t || !1 === x && i) && (v = m, g = l.selectpicker.view.visibleElements, I = !(v.length === g.length && v.every(function (e, t) { return e === g[t] }))), (i || !0 === x) && I)) { var y, S, E = l.$menuInner[0], C = document.createDocumentFragment(), O = E.firstChild.cloneNode(!1), z = l.selectpicker.view.visibleElements, T = []; E.replaceChild(O, E.firstChild); k = 0; for (var A = z.length; k < A; k++) { var L, N, D = z[k]; l.options.sanitize && (L = D.lastChild) && (N = l.selectpicker.current.data[k + l.selectpicker.view.position0]) && N.content && !N.sanitized && (T.push(L), N.sanitized = !0), C.appendChild(D) } l.options.sanitize && T.length && r(T, l.options.whiteList, l.options.sanitizeFn), !0 === x ? (y = 0 === l.selectpicker.view.position0 ? 0 : l.selectpicker.current.data[l.selectpicker.view.position0 - 1].position, S = l.selectpicker.view.position1 > b - 1 ? 0 : l.selectpicker.current.data[b - 1].position - l.selectpicker.current.data[l.selectpicker.view.position1 - 1].position, E.firstChild.style.marginTop = y + "px", E.firstChild.style.marginBottom = S + "px") : (E.firstChild.style.marginTop = 0, E.firstChild.style.marginBottom = 0), E.firstChild.appendChild(C) } if (l.prevActiveIndex = l.activeIndex, l.options.liveSearch) { if (t && i) { var H, P = 0; l.selectpicker.view.canHighlight[P] || (P = 1 + l.selectpicker.view.canHighlight.slice(1).indexOf(!0)), H = l.selectpicker.view.visibleElements[P], l.defocusItem(l.selectpicker.view.currentActive), l.activeIndex = (l.selectpicker.current.data[P] || {}).index, l.focusItem(H) } } else l.$menuInner.trigger("focus") } f(a, !0), this.$menuInner.off("scroll.createView").on("scroll.createView", function (e, t) { l.noScroll || f(this.scrollTop, t), l.noScroll = !1 }), e(window).off("resize.bs.select." + this.selectId + ".createView").on("resize.bs.select." + this.selectId + ".createView", function () { l.$newElement.hasClass(j.SHOW) && f(l.$menuInner[0].scrollTop) }) }, focusItem: function (e, t, i) { if (e) { t = t || this.selectpicker.main.data[this.activeIndex]; var s = e.firstChild; s && (s.setAttribute("aria-setsize", this.selectpicker.view.size), s.setAttribute("aria-posinset", t.posinset), !0 !== i && (this.focusedParent.setAttribute("aria-activedescendant", s.id), e.classList.add("active"), s.classList.add("active"))) } }, defocusItem: function (e) { e && (e.classList.remove("active"), e.firstChild && e.firstChild.classList.remove("active")) }, setPlaceholder: function () { var t = !1; if (this.options.title && !this.multiple) { this.selectpicker.view.titleOption || (this.selectpicker.view.titleOption = document.createElement("option")), t = !0; var i = this.$element[0], s = !1, n = !this.selectpicker.view.titleOption.parentNode; if (n) this.selectpicker.view.titleOption.className = "bs-title-option", this.selectpicker.view.titleOption.value = "", s = void 0 === e(i.options[i.selectedIndex]).attr("selected") && void 0 === this.$element.data("selected"); (n || 0 !== this.selectpicker.view.titleOption.index) && i.insertBefore(this.selectpicker.view.titleOption, i.firstChild), s && (i.selectedIndex = 0) } return t }, createLi: function () { var e = this, t = this.options.iconBase, i = ':not([hidden]):not([data-hidden="true"])', s = [], n = [], o = 0, l = 0, r = this.setPlaceholder() ? 1 : 0; this.options.hideDisabled && (i += ":not(:disabled)"), !e.options.showTick && !e.multiple || F.checkMark.parentNode || (F.checkMark.className = t + " " + e.options.tickIcon + " check-mark", F.a.appendChild(F.checkMark)); var a = this.$element[0].querySelectorAll("select > *" + i); function c(e) { var t = n[n.length - 1]; t && "divider" === t.type && (t.optID || e.optID) || ((e = e || {}).type = "divider", s.push(q.li(!1, j.DIVIDER, e.optID ? e.optID + "div" : void 0)), n.push(e)) } function d(i, l) { if ((l = l || {}).divider = "true" === i.getAttribute("data-divider"), l.divider) c({ optID: l.optID }); else { var r = n.length, a = i.style.cssText, d = a ? A(a) : "", h = (i.className || "") + (l.optgroupClass || ""); l.optID && (h = "opt " + h), l.text = i.textContent, l.content = i.getAttribute("data-content"), l.tokens = i.getAttribute("data-tokens"), l.subtext = i.getAttribute("data-subtext"), l.icon = i.getAttribute("data-icon"), l.iconBase = t; var p = q.text(l), u = q.li(q.a(p, h, d), "", l.optID); u.firstChild && (u.firstChild.id = e.selectId + "-" + r), s.push(u), i.liIndex = r, l.display = l.content || l.text, l.type = "option", l.index = r, l.option = i, l.disabled = l.disabled || i.disabled, n.push(l); var f = 0; l.display && (f += l.display.length), l.subtext && (f += l.subtext.length), l.icon && (f += 1), f > o && (o = f, e.selectpicker.view.widestOption = s[s.length - 1]) } } function h(e, o) { var r = o[e], a = o[e - 1], h = o[e + 1], p = r.querySelectorAll("option" + i); if (p.length) { var u, f, m = { label: A(r.label), subtext: r.getAttribute("data-subtext"), icon: r.getAttribute("data-icon"), iconBase: t }, v = " " + (r.className || ""); l++, a && c({ optID: l }); var g = q.label(m); s.push(q.li(g, "dropdown-header" + v, l)), n.push({ display: m.label, subtext: m.subtext, type: "optgroup-label", optID: l }); for (var b = 0, w = p.length; b < w; b++) { var I = p[b]; 0 === b && (f = (u = n.length - 1) + w), d(I, { headerIndex: u, lastIndex: f, optID: l, optgroupClass: v, disabled: r.disabled }) } h && c({ optID: l }) } } for (var p = a.length; r < p; r++) { var u = a[r]; "OPTGROUP" !== u.tagName ? d(u, {}) : h(r, a) } this.selectpicker.main.elements = s, this.selectpicker.main.data = n, this.selectpicker.current = this.selectpicker.main }, findLis: function () { return this.$menuInner.find(".inner > li") }, render: function () { this.setPlaceholder(); var e, t, i = this.$element[0], s = function (e, t) { var i, s = e.selectedOptions, n = []; if (t) { for (var o = 0, l = s.length; o < l; o++)(i = s[o]).disabled || "OPTGROUP" === i.parentNode.tagName && i.parentNode.disabled || n.push(i); return n } return s }(i, this.options.hideDisabled), n = s.length, o = this.$button[0], l = o.querySelector(".filter-option-inner-inner"), a = document.createTextNode(this.options.multipleSeparator), c = F.fragment.cloneNode(!1), d = !1; if (o.classList.toggle("bs-placeholder", this.multiple ? !n : !m(i, s)), this.tabIndex(), "static" === this.options.selectedTextFormat) c = q.text({ text: this.options.title }, !0); else if ((e = this.multiple && -1 !== this.options.selectedTextFormat.indexOf("count") && n > 1) && (e = (t = this.options.selectedTextFormat.split(">")).length > 1 && n > t[1] || 1 === t.length && n >= 2), !1 === e) { for (var h = 0; h < n && h < 50; h++) { var p = s[h], u = {}, f = { content: p.getAttribute("data-content"), subtext: p.getAttribute("data-subtext"), icon: p.getAttribute("data-icon") }; this.multiple && h > 0 && c.appendChild(a.cloneNode(!1)), p.title ? u.text = p.title : f.content && this.options.showContent ? (u.content = f.content.toString(), d = !0) : (this.options.showIcon && (u.icon = f.icon, u.iconBase = this.options.iconBase), this.options.showSubtext && !this.multiple && f.subtext && (u.subtext = " " + f.subtext), u.text = p.textContent.trim()), c.appendChild(q.text(u, !0)) } n > 49 && c.appendChild(document.createTextNode("...")) } else { var v = ':not([hidden]):not([data-hidden="true"]):not([data-divider="true"])'; this.options.hideDisabled && (v += ":not(:disabled)"); var g = this.$element[0].querySelectorAll("select > option" + v + ", optgroup" + v + " option" + v).length, b = "function" == typeof this.options.countSelectedText ? this.options.countSelectedText(n, g) : this.options.countSelectedText; c = q.text({ text: b.replace("{0}", n.toString()).replace("{1}", g.toString()) }, !0) } if (null == this.options.title && (this.options.title = this.$element.attr("title")), c.childNodes.length || (c = q.text({ text: void 0 !== this.options.title ? this.options.title : this.options.noneSelectedText }, !0)), o.title = c.textContent.replace(/<[^>]*>?/g, "").trim(), this.options.sanitize && d && r([c], this.options.whiteList, this.options.sanitizeFn), l.innerHTML = "", l.appendChild(c), M.major < 4 && this.$newElement[0].classList.contains("bs3-has-addon")) { var w = o.querySelector(".filter-expand"), I = l.cloneNode(!0); I.className = "filter-expand", w ? o.replaceChild(I, w) : o.appendChild(I) } this.$element.trigger("rendered.bs.select") }, setStyle: function (e, t) { var i, s = this.$button[0], n = this.$newElement[0], o = this.options.style.trim(); this.$element.attr("class") && this.$newElement.addClass(this.$element.attr("class").replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, "")), M.major < 4 && (n.classList.add("bs3"), n.parentNode.classList.contains("input-group") && (n.previousElementSibling || n.nextElementSibling) && (n.previousElementSibling || n.nextElementSibling).classList.contains("input-group-addon") && n.classList.add("bs3-has-addon")), i = e ? e.trim() : o, "add" == t ? i && s.classList.add.apply(s.classList, i.split(" ")) : "remove" == t ? i && s.classList.remove.apply(s.classList, i.split(" ")) : (o && s.classList.remove.apply(s.classList, o.split(" ")), i && s.classList.add.apply(s.classList, i.split(" "))) }, liHeight: function (t) { if (t || !1 !== this.options.size && !this.sizeInfo) { this.sizeInfo || (this.sizeInfo = {}); var i = document.createElement("div"), s = document.createElement("div"), n = document.createElement("div"), o = document.createElement("ul"), l = document.createElement("li"), r = document.createElement("li"), a = document.createElement("li"), c = document.createElement("a"), d = document.createElement("span"), h = this.options.header && this.$menu.find("." + j.POPOVERHEADER).length > 0 ? this.$menu.find("." + j.POPOVERHEADER)[0].cloneNode(!0) : null, p = this.options.liveSearch ? document.createElement("div") : null, u = this.options.actionsBox && this.multiple && this.$menu.find(".bs-actionsbox").length > 0 ? this.$menu.find(".bs-actionsbox")[0].cloneNode(!0) : null, f = this.options.doneButton && this.multiple && this.$menu.find(".bs-donebutton").length > 0 ? this.$menu.find(".bs-donebutton")[0].cloneNode(!0) : null, m = this.$element.find("option")[0]; if (this.sizeInfo.selectWidth = this.$newElement[0].offsetWidth, d.className = "text", c.className = "dropdown-item " + (m ? m.className : ""), i.className = this.$menu[0].parentNode.className + " " + j.SHOW, i.style.width = this.sizeInfo.selectWidth + "px", "auto" === this.options.width && (s.style.minWidth = 0), s.className = j.MENU + " " + j.SHOW, n.className = "inner " + j.SHOW, o.className = j.MENU + " inner " + ("4" === M.major ? j.SHOW : ""), l.className = j.DIVIDER, r.className = "dropdown-header", d.appendChild(document.createTextNode("?")), c.appendChild(d), a.appendChild(c), r.appendChild(d.cloneNode(!0)), this.selectpicker.view.widestOption && o.appendChild(this.selectpicker.view.widestOption.cloneNode(!0)), o.appendChild(a), o.appendChild(l), o.appendChild(r), h && s.appendChild(h), p) { var v = document.createElement("input"); p.className = "bs-searchbox", v.className = "form-control", p.appendChild(v), s.appendChild(p) } u && s.appendChild(u), n.appendChild(o), s.appendChild(n), f && s.appendChild(f), i.appendChild(s), document.body.appendChild(i); var g, b = a.offsetHeight, w = r ? r.offsetHeight : 0, x = h ? h.offsetHeight : 0, k = p ? p.offsetHeight : 0, $ = u ? u.offsetHeight : 0, y = f ? f.offsetHeight : 0, S = e(l).outerHeight(!0), E = !!window.getComputedStyle && window.getComputedStyle(s), C = s.offsetWidth, O = E ? null : e(s), z = { vert: I(E ? E.paddingTop : O.css("paddingTop")) + I(E ? E.paddingBottom : O.css("paddingBottom")) + I(E ? E.borderTopWidth : O.css("borderTopWidth")) + I(E ? E.borderBottomWidth : O.css("borderBottomWidth")), horiz: I(E ? E.paddingLeft : O.css("paddingLeft")) + I(E ? E.paddingRight : O.css("paddingRight")) + I(E ? E.borderLeftWidth : O.css("borderLeftWidth")) + I(E ? E.borderRightWidth : O.css("borderRightWidth")) }, T = { vert: z.vert + I(E ? E.marginTop : O.css("marginTop")) + I(E ? E.marginBottom : O.css("marginBottom")) + 2, horiz: z.horiz + I(E ? E.marginLeft : O.css("marginLeft")) + I(E ? E.marginRight : O.css("marginRight")) + 2 }; n.style.overflowY = "scroll", g = s.offsetWidth - C, document.body.removeChild(i), this.sizeInfo.liHeight = b, this.sizeInfo.dropdownHeaderHeight = w, this.sizeInfo.headerHeight = x, this.sizeInfo.searchHeight = k, this.sizeInfo.actionsHeight = $, this.sizeInfo.doneButtonHeight = y, this.sizeInfo.dividerHeight = S, this.sizeInfo.menuPadding = z, this.sizeInfo.menuExtras = T, this.sizeInfo.menuWidth = C, this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth, this.sizeInfo.scrollBarWidth = g, this.sizeInfo.selectHeight = this.$newElement[0].offsetHeight, this.setPositionData() } }, getSelectPosition: function () { var t, i = e(window), s = this.$newElement.offset(), n = e(this.options.container); this.options.container && n.length && !n.is("body") ? ((t = n.offset()).top += parseInt(n.css("borderTopWidth")), t.left += parseInt(n.css("borderLeftWidth"))) : t = { top: 0, left: 0 }; var o = this.options.windowPadding; this.sizeInfo.selectOffsetTop = s.top - t.top - i.scrollTop(), this.sizeInfo.selectOffsetBot = i.height() - this.sizeInfo.selectOffsetTop - this.sizeInfo.selectHeight - t.top - o[2], this.sizeInfo.selectOffsetLeft = s.left - t.left - i.scrollLeft(), this.sizeInfo.selectOffsetRight = i.width() - this.sizeInfo.selectOffsetLeft - this.sizeInfo.selectWidth - t.left - o[1], this.sizeInfo.selectOffsetTop -= o[0], this.sizeInfo.selectOffsetLeft -= o[3] }, setMenuSize: function (e) { this.getSelectPosition(); var t, i, s, n, o, l, r, a = this.sizeInfo.selectWidth, c = this.sizeInfo.liHeight, d = this.sizeInfo.headerHeight, h = this.sizeInfo.searchHeight, p = this.sizeInfo.actionsHeight, u = this.sizeInfo.doneButtonHeight, f = this.sizeInfo.dividerHeight, m = this.sizeInfo.menuPadding, v = 0; if (this.options.dropupAuto && (r = c * this.selectpicker.current.elements.length + m.vert, this.$newElement.toggleClass(j.DROPUP, this.sizeInfo.selectOffsetTop - this.sizeInfo.selectOffsetBot > this.sizeInfo.menuExtras.vert && r + this.sizeInfo.menuExtras.vert + 50 > this.sizeInfo.selectOffsetBot)), "auto" === this.options.size) n = this.selectpicker.current.elements.length > 3 ? 3 * this.sizeInfo.liHeight + this.sizeInfo.menuExtras.vert - 2 : 0, i = this.sizeInfo.selectOffsetBot - this.sizeInfo.menuExtras.vert, s = n + d + h + p + u, l = Math.max(n - m.vert, 0), this.$newElement.hasClass(j.DROPUP) && (i = this.sizeInfo.selectOffsetTop - this.sizeInfo.menuExtras.vert), o = i, t = i - d - h - p - u - m.vert; else if (this.options.size && "auto" != this.options.size && this.selectpicker.current.elements.length > this.options.size) { for (var g = 0; g < this.options.size; g++)"divider" === this.selectpicker.current.data[g].type && v++; t = (i = c * this.options.size + v * f + m.vert) - m.vert, o = i + d + h + p + u, s = l = "" } "auto" === this.options.dropdownAlignRight && this.$menu.toggleClass(j.MENURIGHT, this.sizeInfo.selectOffsetLeft > this.sizeInfo.selectOffsetRight && this.sizeInfo.selectOffsetRight < this.sizeInfo.totalMenuWidth - a), this.$menu.css({ "max-height": o + "px", overflow: "hidden", "min-height": s + "px" }), this.$menuInner.css({ "max-height": t + "px", "overflow-y": "auto", "min-height": l + "px" }), this.sizeInfo.menuInnerHeight = Math.max(t, 1), this.selectpicker.current.data.length && this.selectpicker.current.data[this.selectpicker.current.data.length - 1].position > this.sizeInfo.menuInnerHeight && (this.sizeInfo.hasScrollBar = !0, this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth + this.sizeInfo.scrollBarWidth, this.$menu.css("min-width", this.sizeInfo.totalMenuWidth)), this.dropdown && this.dropdown._popper && this.dropdown._popper.update() }, setSize: function (t) { if (this.liHeight(t), this.options.header && this.$menu.css("padding-top", 0), !1 !== this.options.size) { var i = this, s = e(window); this.setMenuSize(), this.options.liveSearch && this.$searchbox.off("input.setMenuSize propertychange.setMenuSize").on("input.setMenuSize propertychange.setMenuSize", function () { return i.setMenuSize() }), "auto" === this.options.size ? s.off("resize.bs.select." + this.selectId + ".setMenuSize scroll" + U + "." + this.selectId + ".setMenuSize").on("resize.bs.select." + this.selectId + ".setMenuSize scroll" + U + "." + this.selectId + ".setMenuSize", function () { return i.setMenuSize() }) : this.options.size && "auto" != this.options.size && this.selectpicker.current.elements.length > this.options.size && s.off("resize.bs.select." + this.selectId + ".setMenuSize scroll" + U + "." + this.selectId + ".setMenuSize"), i.createView(!1, !0, t) } }, setWidth: function () { var e = this; "auto" === this.options.width ? requestAnimationFrame(function () { e.$menu.css("min-width", "0"), e.$element.on("loaded.bs.select", function () { e.liHeight(), e.setMenuSize(); var t = e.$newElement.clone().appendTo("body"), i = t.css("width", "auto").children("button").outerWidth(); t.remove(), e.sizeInfo.selectWidth = Math.max(e.sizeInfo.totalMenuWidth, i), e.$newElement.css("width", e.sizeInfo.selectWidth + "px") }) }) : "fit" === this.options.width ? (this.$menu.css("min-width", ""), this.$newElement.css("width", "").addClass("fit-width")) : this.options.width ? (this.$menu.css("min-width", ""), this.$newElement.css("width", this.options.width)) : (this.$menu.css("min-width", ""), this.$newElement.css("width", "")), this.$newElement.hasClass("fit-width") && "fit" !== this.options.width && this.$newElement[0].classList.remove("fit-width") }, selectPosition: function () { this.$bsContainer = e('<div class="bs-container" />'); var t, i, s, n = this, o = e(this.options.container), l = function (l) { var r = {}, a = n.options.display || !!e.fn.dropdown.Constructor.Default && e.fn.dropdown.Constructor.Default.display; n.$bsContainer.addClass(l.attr("class").replace(/form-control|fit-width/gi, "")).toggleClass(j.DROPUP, l.hasClass(j.DROPUP)), t = l.offset(), o.is("body") ? i = { top: 0, left: 0 } : ((i = o.offset()).top += parseInt(o.css("borderTopWidth")) - o.scrollTop(), i.left += parseInt(o.css("borderLeftWidth")) - o.scrollLeft()), s = l.hasClass(j.DROPUP) ? 0 : l[0].offsetHeight, (M.major < 4 || "static" === a) && (r.top = t.top - i.top + s, r.left = t.left - i.left), r.width = l[0].offsetWidth, n.$bsContainer.css(r) }; this.$button.on("click.bs.dropdown.data-api", function () { n.isDisabled() || (l(n.$newElement), n.$bsContainer.appendTo(n.options.container).toggleClass(j.SHOW, !n.$button.hasClass(j.SHOW)).append(n.$menu)) }), e(window).off("resize.bs.select." + this.selectId + " scroll" + U + "." + this.selectId).on("resize.bs.select." + this.selectId + " scroll" + U + "." + this.selectId, function () { n.$newElement.hasClass(j.SHOW) && l(n.$newElement) }), this.$element.on("hide.bs.select", function () { n.$menu.data("height", n.$menu.height()), n.$bsContainer.detach() }) }, setOptionStatus: function (e) { if (this.noScroll = !1, this.selectpicker.view.visibleElements && this.selectpicker.view.visibleElements.length) for (var t = 0; t < this.selectpicker.view.visibleElements.length; t++) { var i = this.selectpicker.current.data[t + this.selectpicker.view.position0], s = i.option; s && (!0 !== e && this.setDisabled(i.index, i.disabled), this.setSelected(i.index, s.selected)) } }, setSelected: function (e, t) { var i, s, n = this.selectpicker.main.elements[e], o = this.selectpicker.main.data[e], l = void 0 !== this.activeIndex, r = this.activeIndex === e || t && !this.multiple && !l; o.selected = t, s = n.firstChild, t && (this.selectedIndex = e), n.classList.toggle("selected", t), r ? (this.focusItem(n, o), this.selectpicker.view.currentActive = n, this.activeIndex = e) : this.defocusItem(n), s && (s.classList.toggle("selected", t), t ? s.setAttribute("aria-selected", !0) : this.multiple ? s.setAttribute("aria-selected", !1) : s.removeAttribute("aria-selected")), r || l || !t || void 0 === this.prevActiveIndex || (i = this.selectpicker.main.elements[this.prevActiveIndex], this.defocusItem(i)) }, setDisabled: function (e, t) { var i, s = this.selectpicker.main.elements[e]; this.selectpicker.main.data[e].disabled = t, i = s.firstChild, s.classList.toggle(j.DISABLED, t), i && ("4" === M.major && i.classList.toggle(j.DISABLED, t), t ? (i.setAttribute("aria-disabled", t), i.setAttribute("tabindex", -1)) : (i.removeAttribute("aria-disabled"), i.setAttribute("tabindex", 0))) }, isDisabled: function () { return this.$element[0].disabled }, checkDisabled: function () { var e = this; this.isDisabled() ? (this.$newElement[0].classList.add(j.DISABLED), this.$button.addClass(j.DISABLED).attr("tabindex", -1).attr("aria-disabled", !0)) : (this.$button[0].classList.contains(j.DISABLED) && (this.$newElement[0].classList.remove(j.DISABLED), this.$button.removeClass(j.DISABLED).attr("aria-disabled", !1)), -1 != this.$button.attr("tabindex") || this.$element.data("tabindex") || this.$button.removeAttr("tabindex")), this.$button.on("click", function () { return !e.isDisabled() }) }, tabIndex: function () { this.$element.data("tabindex") !== this.$element.attr("tabindex") && -98 !== this.$element.attr("tabindex") && "-98" !== this.$element.attr("tabindex") && (this.$element.data("tabindex", this.$element.attr("tabindex")), this.$button.attr("tabindex", this.$element.data("tabindex"))), this.$element.attr("tabindex", -98) }, clickListener: function () { var t = this, i = e(document); function s() { t.options.liveSearch ? t.$searchbox.trigger("focus") : t.$menuInner.trigger("focus") } function n() { t.dropdown && t.dropdown._popper && t.dropdown._popper.state.isCreated ? s() : requestAnimationFrame(n) } i.data("spaceSelect", !1), this.$button.on("keyup", function (e) { /(32)/.test(e.keyCode.toString(10)) && i.data("spaceSelect") && (e.preventDefault(), i.data("spaceSelect", !1)) }), this.$newElement.on("show.bs.dropdown", function () { M.major > 3 && !t.dropdown && (t.dropdown = t.$button.data("bs.dropdown"), t.dropdown._menu = t.$menu[0]) }), this.$button.on("click.bs.dropdown.data-api", function () { t.$newElement.hasClass(j.SHOW) || t.setSize() }), this.$element.on("shown.bs.select", function () { t.$menuInner[0].scrollTop !== t.selectpicker.view.scrollTop && (t.$menuInner[0].scrollTop = t.selectpicker.view.scrollTop), M.major > 3 ? requestAnimationFrame(n) : s() }), this.$menuInner.on("mouseenter", "li a", function (e) { var i = this.parentElement, s = t.isVirtual() ? t.selectpicker.view.position0 : 0, n = Array.prototype.indexOf.call(i.parentElement.children, i), o = t.selectpicker.current.data[n + s]; t.focusItem(i, o, !0) }), this.$menuInner.on("click", "li a", function (i, s) { var n = e(this), o = t.$element[0], l = t.isVirtual() ? t.selectpicker.view.position0 : 0, r = t.selectpicker.current.data[n.parent().index() + l], a = r.index, c = m(o), d = o.selectedIndex, h = o.options[d], p = !0; if (t.multiple && 1 !== t.options.maxOptions && i.stopPropagation(), i.preventDefault(), !t.isDisabled() && !n.parent().hasClass(j.DISABLED)) { var u = t.$element.find("option"), f = r.option, v = e(f), b = f.selected, w = v.parent("optgroup"), I = w.find("option"), x = t.options.maxOptions, k = w.data("maxOptions") || !1; if (a === t.activeIndex && (s = !0), s || (t.prevActiveIndex = t.activeIndex, t.activeIndex = void 0), t.multiple) { if (f.selected = !b, t.setSelected(a, !b), n.trigger("blur"), !1 !== x || !1 !== k) { var $ = x < u.filter(":selected").length, y = k < w.find("option:selected").length; if (x && $ || k && y) if (x && 1 == x) { u.prop("selected", !1), v.prop("selected", !0); for (var S = 0; S < u.length; S++)t.setSelected(S, !1); t.setSelected(a, !0) } else if (k && 1 == k) { w.find("option:selected").prop("selected", !1), v.prop("selected", !0); for (S = 0; S < I.length; S++) { f = I[S]; t.setSelected(u.index(f), !1) } t.setSelected(a, !0) } else { var E = "string" == typeof t.options.maxOptionsText ? [t.options.maxOptionsText, t.options.maxOptionsText] : t.options.maxOptionsText, C = "function" == typeof E ? E(x, k) : E, O = C[0].replace("{n}", x), z = C[1].replace("{n}", k), T = e('<div class="notify"></div>'); C[2] && (O = O.replace("{var}", C[2][x > 1 ? 0 : 1]), z = z.replace("{var}", C[2][k > 1 ? 0 : 1])), v.prop("selected", !1), t.$menu.append(T), x && $ && (T.append(e("<div>" + O + "</div>")), p = !1, t.$element.trigger("maxReached.bs.select")), k && y && (T.append(e("<div>" + z + "</div>")), p = !1, t.$element.trigger("maxReachedGrp.bs.select")), setTimeout(function () { t.setSelected(a, !1) }, 10), T.delay(750).fadeOut(300, function () { e(this).remove() }) } } } else h.selected = !1, f.selected = !0, t.setSelected(a, !0); !t.multiple || t.multiple && 1 === t.options.maxOptions ? t.$button.trigger("focus") : t.options.liveSearch && t.$searchbox.trigger("focus"), p && (t.multiple || d !== o.selectedIndex) && (g = [f.index, v.prop("selected"), c], t.$element.triggerNative("change")) } }), this.$menu.on("click", "li." + j.DISABLED + " a, ." + j.POPOVERHEADER + ", ." + j.POPOVERHEADER + " :not(.close)", function (i) { i.currentTarget == this && (i.preventDefault(), i.stopPropagation(), t.options.liveSearch && !e(i.target).hasClass("close") ? t.$searchbox.trigger("focus") : t.$button.trigger("focus")) }), this.$menuInner.on("click", ".divider, .dropdown-header", function (e) { e.preventDefault(), e.stopPropagation(), t.options.liveSearch ? t.$searchbox.trigger("focus") : t.$button.trigger("focus") }), this.$menu.on("click", "." + j.POPOVERHEADER + " .close", function () { t.$button.trigger("click") }), this.$searchbox.on("click", function (e) { e.stopPropagation() }), this.$menu.on("click", ".actions-btn", function (i) { t.options.liveSearch ? t.$searchbox.trigger("focus") : t.$button.trigger("focus"), i.preventDefault(), i.stopPropagation(), e(this).hasClass("bs-select-all") ? t.selectAll() : t.deselectAll() }), this.$element.on("change.bs.select", function () { t.render(), t.$element.trigger("changed.bs.select", g), g = null }).on("focus.bs.select", function () { t.options.mobile || t.$button.trigger("focus") }) }, liveSearchListener: function () { var e = this, t = document.createElement("li"); this.$button.on("click.bs.dropdown.data-api", function () { e.$searchbox.val() && e.$searchbox.val("") }), this.$searchbox.on("click.bs.dropdown.data-api focus.bs.dropdown.data-api touchend.bs.dropdown.data-api", function (e) { e.stopPropagation() }), this.$searchbox.on("input propertychange", function () { var i = e.$searchbox.val(); if (e.selectpicker.search.elements = [], e.selectpicker.search.data = [], i) { var s = [], n = i.toUpperCase(), o = {}, l = [], r = e._searchStyle(), a = e.options.liveSearchNormalize; a && (n = S(n)), e._$lisSelected = e.$menuInner.find(".selected"); for (var c = 0; c < e.selectpicker.main.data.length; c++) { var d = e.selectpicker.main.data[c]; o[c] || (o[c] = w(d, n, r, a)), o[c] && void 0 !== d.headerIndex && -1 === l.indexOf(d.headerIndex) && (d.headerIndex > 0 && (o[d.headerIndex - 1] = !0, l.push(d.headerIndex - 1)), o[d.headerIndex] = !0, l.push(d.headerIndex), o[d.lastIndex + 1] = !0), o[c] && "optgroup-label" !== d.type && l.push(c) } c = 0; for (var h = l.length; c < h; c++) { var p = l[c], u = l[c - 1], f = (d = e.selectpicker.main.data[p], e.selectpicker.main.data[u]); ("divider" !== d.type || "divider" === d.type && f && "divider" !== f.type && h - 1 !== c) && (e.selectpicker.search.data.push(d), s.push(e.selectpicker.main.elements[p])) } e.activeIndex = void 0, e.noScroll = !0, e.$menuInner.scrollTop(0), e.selectpicker.search.elements = s, e.createView(!0), s.length || (t.className = "no-results", t.innerHTML = e.options.noneResultsText.replace("{0}", '"' + A(i) + '"'), e.$menuInner[0].firstChild.appendChild(t)) } else e.$menuInner.scrollTop(0), e.createView(!1) }) }, _searchStyle: function () { return this.options.liveSearchStyle || "contains" }, val: function (e) { var t = this.$element[0]; if (void 0 !== e) { var i = m(t); if (g = [null, null, i], this.$element.val(e).trigger("changed.bs.select", g), this.$newElement.hasClass(j.SHOW)) if (this.multiple) this.setOptionStatus(!0); else { var s = (t.options[t.selectedIndex] || {}).liIndex; "number" == typeof s && (this.setSelected(this.selectedIndex, !1), this.setSelected(s, !0)) } return this.render(), g = null, this.$element } return this.$element.val() }, changeAll: function (e) { if (this.multiple) { void 0 === e && (e = !0); var t = this.$element[0], i = 0, s = 0, n = m(t); t.classList.add("bs-select-hidden"); for (var o = 0, l = this.selectpicker.current.elements.length; o < l; o++) { var r = this.selectpicker.current.data[o], a = r.option; a && !r.disabled && "divider" !== r.type && (r.selected && i++, a.selected = e, e && s++) } t.classList.remove("bs-select-hidden"), i !== s && (this.setOptionStatus(), g = [null, null, n], this.$element.triggerNative("change")) } }, selectAll: function () { return this.changeAll(!0) }, deselectAll: function () { return this.changeAll(!1) }, toggle: function (e) { (e = e || window.event) && e.stopPropagation(), this.$button.trigger("click.bs.dropdown.data-api") }, keydown: function (t) { var i, s, n, o, l, r = e(this), a = r.hasClass("dropdown-toggle"), c = (a ? r.closest(".dropdown") : r.closest(V.MENU)).data("this"), d = c.findLis(), h = !1, p = t.which === P && !a && !c.options.selectOnTab, u = _.test(t.which) || p, f = c.$menuInner[0].scrollTop, m = !0 === c.isVirtual() ? c.selectpicker.view.position0 : 0; if (!(s = c.$newElement.hasClass(j.SHOW)) && (u || t.which >= 48 && t.which <= 57 || t.which >= 96 && t.which <= 105 || t.which >= 65 && t.which <= 90) && (c.$button.trigger("click.bs.dropdown.data-api"), c.options.liveSearch)) c.$searchbox.trigger("focus"); else { if (t.which === N && s && (t.preventDefault(), c.$button.trigger("click.bs.dropdown.data-api").trigger("focus")), u) { if (!d.length) return; -1 !== (i = (n = c.selectpicker.main.elements[c.activeIndex]) ? Array.prototype.indexOf.call(n.parentElement.children, n) : -1) && c.defocusItem(n), t.which === B ? (-1 !== i && i--, i + m < 0 && (i += d.length), c.selectpicker.view.canHighlight[i + m] || -1 === (i = c.selectpicker.view.canHighlight.slice(0, i + m).lastIndexOf(!0) - m) && (i = d.length - 1)) : (t.which === W || p) && (++i + m >= c.selectpicker.view.canHighlight.length && (i = 0), c.selectpicker.view.canHighlight[i + m] || (i = i + 1 + c.selectpicker.view.canHighlight.slice(i + m + 1).indexOf(!0))), t.preventDefault(); var v = m + i; t.which === B ? 0 === m && i === d.length - 1 ? (c.$menuInner[0].scrollTop = c.$menuInner[0].scrollHeight, v = c.selectpicker.current.elements.length - 1) : h = (l = (o = c.selectpicker.current.data[v]).position - o.height) < f : (t.which === W || p) && (0 === i ? (c.$menuInner[0].scrollTop = 0, v = 0) : h = (l = (o = c.selectpicker.current.data[v]).position - c.sizeInfo.menuInnerHeight) > f), n = c.selectpicker.current.elements[v], c.activeIndex = c.selectpicker.current.data[v].index, c.focusItem(n), c.selectpicker.view.currentActive = n, h && (c.$menuInner[0].scrollTop = l), c.options.liveSearch ? c.$searchbox.trigger("focus") : r.trigger("focus") } else if (!r.is("input") && !G.test(t.which) || t.which === H && c.selectpicker.keydown.keyHistory) { var g, b, I = []; t.preventDefault(), c.selectpicker.keydown.keyHistory += L[t.which], c.selectpicker.keydown.resetKeyHistory.cancel && clearTimeout(c.selectpicker.keydown.resetKeyHistory.cancel), c.selectpicker.keydown.resetKeyHistory.cancel = c.selectpicker.keydown.resetKeyHistory.start(), b = c.selectpicker.keydown.keyHistory, /^(.)\1+$/.test(b) && (b = b.charAt(0)); for (var x = 0; x < c.selectpicker.current.data.length; x++) { var k = c.selectpicker.current.data[x]; w(k, b, "startsWith", !0) && c.selectpicker.view.canHighlight[x] && I.push(k.index) } if (I.length) { var $ = 0; d.removeClass("active").find("a").removeClass("active"), 1 === b.length && (-1 === ($ = I.indexOf(c.activeIndex)) || $ === I.length - 1 ? $ = 0 : $++), g = I[$], f - (o = c.selectpicker.main.data[g]).position > 0 ? (l = o.position - o.height, h = !0) : (l = o.position - c.sizeInfo.menuInnerHeight, h = o.position > f + c.sizeInfo.menuInnerHeight), n = c.selectpicker.main.elements[g], c.activeIndex = I[$], c.focusItem(n), n && n.firstChild.focus(), h && (c.$menuInner[0].scrollTop = l), r.trigger("focus") } } s && (t.which === H && !c.selectpicker.keydown.keyHistory || t.which === D || t.which === P && c.options.selectOnTab) && (t.which !== H && t.preventDefault(), c.options.liveSearch && t.which === H || (c.$menuInner.find(".active a").trigger("click", !0), r.trigger("focus"), c.options.liveSearch || (t.preventDefault(), e(document).data("spaceSelect", !0)))) } }, mobile: function () { this.$element[0].classList.add("mobile-device") }, refresh: function () { var t = e.extend({}, this.options, this.$element.data()); this.options = t, this.checkDisabled(), this.setStyle(), this.render(), this.createLi(), this.setWidth(), this.setSize(!0), this.$element.trigger("refreshed.bs.select") }, hide: function () { this.$newElement.hide() }, show: function () { this.$newElement.show() }, remove: function () { this.$newElement.remove(), this.$element.remove() }, destroy: function () { this.$newElement.before(this.$element).remove(), this.$bsContainer ? this.$bsContainer.remove() : this.$menu.remove(), this.$element.off(U).removeData("selectpicker").removeClass("bs-select-hidden selectpicker"), e(window).off(".bs.select." + this.selectId) } }; var Z = e.fn.selectpicker; e.fn.selectpicker = Y, e.fn.selectpicker.Constructor = K, e.fn.selectpicker.noConflict = function () { return e.fn.selectpicker = Z, this }, e(document).off("keydown.bs.dropdown.data-api").on("keydown.bs.select", '.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input', K.prototype.keydown).on("focusin.modal", '.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input', function (e) { e.stopPropagation() }), e(window).on("load.bs.select.data-api", function () { e(".selectpicker").each(function () { var t = e(this); Y.call(t, t.data()) }) }) }(jQuery);;
!function (t) { "use strict"; var n = !1, e = t.fn.val; function o(t, e) { t.addEventListener("mousedown", function (t) { t.preventDefault(), e(t) }), t.addEventListener("touchstart", function (t) { t.cancelable && t.preventDefault(), e(t) }), t.addEventListener("keydown", function (t) { 32 !== t.keyCode || n || (n = !0, e(t)) }) } t.fn.val = function (t) { return arguments.length >= 1 && this[0] && this[0]["bootstrap-input-spinner"] && this[0].setValue && this[0].setValue(t), e.apply(this, arguments) }, t.fn.InputSpinner = t.fn.inputSpinner = function (e) { var a = { decrementButton: "<strong>-</strong>", incrementButton: "<strong>+</strong>", groupClass: "", buttonsClass: "btn-outline-secondary", buttonsWidth: "2.5rem", textAlign: "center", autoDelay: 500, autoInterval: 100, boostThreshold: 10, boostMultiplier: "auto", locale: null }; for (var r in e) a[r] = e[r]; var i = '<div class="input-group ' + a.groupClass + '"><div class="input-group-prepend"><button style="min-width: ' + a.buttonsWidth + '" class="btn btn-decrement ' + a.buttonsClass + '" type="button">' + a.decrementButton + '</button></div><input type="text" style="text-align: ' + a.textAlign + '" class="form-control"/><div class="input-group-append"><button style="min-width: ' + a.buttonsWidth + '" class="btn btn-increment ' + a.buttonsClass + '" type="button">' + a.incrementButton + "</button></div></div>", u = a.locale || navigator.language || "en-US"; this.each(function () { var e = t(this); e[0]["bootstrap-input-spinner"] = !0, e.hide(); var r = null, p = null, s = "auto" === a.boostMultiplier, l = s ? 1 : a.boostMultiplier, c = t(i), d = c.find(".btn-decrement"), m = c.find(".btn-increment"), f = c.find("input"), v = null, b = null, g = null, h = null, y = null; V(); var x, E, w = new Intl.NumberFormat(u, { minimumFractionDigits: y, maximumFractionDigits: y }), F = parseFloat(e[0].value), M = 0, I = e.attr("data-prefix") || "", N = e.attr("data-suffix") || ""; if (I) { var C = t('<span class="input-group-text">' + I + "</span>"); c.find(".input-group-prepend").append(C) } if (N) { var D = t('<span class="input-group-text">' + N + "</span>"); c.find(".input-group-append").prepend(D) } function L(t, n) { void 0 === n && (n = !0), isNaN(t) || "" === t ? (e[0].value = "", n && (f[0].value = ""), F = 0) : (t = parseFloat(t), t = Math.min(Math.max(t, v), b), t = Math.round(t * Math.pow(10, y)) / Math.pow(10, y), e[0].value = t, n && (f[0].value = w.format(t)), F = t) } function T(t, n) { n && setTimeout(function () { var e; "function" == typeof Event ? e = new Event(n, { bubbles: !0 }) : (e = document.createEvent("Event")).initEvent(n, !0, !0), t[0].dispatchEvent(e) }) } function k(t) { f[0].disabled || (B(t), S(), r = setTimeout(function () { p = setInterval(function () { M > a.boostThreshold ? s ? (B(t * parseInt(l, 10)), l < 1e8 && (l *= 1.1), h && (l = Math.min(h, l))) : B(t * l) : B(t), M++ }, a.autoInterval) }, a.autoDelay)) } function B(t) { isNaN(F) && (F = 0), L(Math.round(F / t) * t + t), T(e, "input"), T(e, "change") } function S() { M = 0, l = l = s ? 1 : a.boostMultiplier, clearTimeout(r), clearTimeout(p) } function V() { f.prop("required", e.prop("required")), f.prop("placeholder", e.prop("placeholder")); var t = e.prop("disabled"); f.prop("disabled", t), m.prop("disabled", t), d.prop("disabled", t), t && S(); var n = e.prop("class"), o = ""; /form-control-sm/g.test(n) ? o = "input-group-sm" : /form-control-lg/g.test(n) && (o = "input-group-lg"); var r = n.replace(/form-control(-(sm|lg))?/g, ""); c.prop("class", "input-group " + o + " " + a.groupClass), f.prop("class", "form-control " + r), v = parseFloat(e.prop("min")) || 0, b = isNaN(e.prop("max")) || "" === e.prop("max") ? 1 / 0 : parseFloat(e.prop("max")), g = parseFloat(e.prop("step")) || 1, h = parseInt(e.attr("data-step-max")) || 0; var i = parseInt(e.attr("data-decimals")) || 0; y !== i && (y = i, w = new Intl.NumberFormat(u, { minimumFractionDigits: y, maximumFractionDigits: y })) } e[0].setValue = function (t) { L(t) }, new MutationObserver(function () { V(), L(F, !0) }).observe(e[0], { attributes: !0 }), e.after(c), L(F), f.on("paste input change focusout", function (t) { var n, o, a, r, i = f[0].value, p = "focusout" === t.type; n = i, o = new Intl.NumberFormat(u), a = o.format(1111).replace(/1/g, ""), r = o.format(1.1).replace(/1/g, ""), L(i = parseFloat(n.replace(new RegExp("\\" + a, "g"), "").replace(new RegExp("\\" + r), ".")), p), T(e, t.type) }), o(d[0], function () { k(-g) }), o(m[0], function () { k(g) }), x = document.body, E = function () { S() }, x.addEventListener("mouseup", function (t) { E(t) }), x.addEventListener("touchend", function (t) { E(t) }), x.addEventListener("keyup", function (t) { 32 === t.keyCode && (n = !1, E(t)) }) }) } }(jQuery);;
(function ($) {
    "use strict";

    var defaultOptions = {
        tagClass: function (item) {
            return 'label label-info';
        },
        itemValue: function (item) {
            return item ? item.toString() : item;
        },
        itemText: function (item) {
            return this.itemValue(item);
        },
        itemTitle: function (item) {
            return null;
        },
        freeInput: true,
        addOnBlur: true,
        maxTags: undefined,
        maxChars: undefined,
        confirmKeys: [13, 44],
        delimiter: ',',
        delimiterRegex: null,
        cancelConfirmKeysOnEmpty: true,
        onTagExists: function (item, $tag) {
            $tag.hide().fadeIn();
        },
        trimValue: false,
        allowDuplicates: false
    };

    /**
     * Constructor function
     */
    function TagsInput(element, options) {
        this.itemsArray = [];

        this.$element = $(element);
        this.$element.hide();

        this.isSelect = (element.tagName === 'SELECT');
        this.multiple = (this.isSelect && element.hasAttribute('multiple'));
        this.objectItems = options && options.itemValue;
        this.placeholderText = element.hasAttribute('placeholder') ? this.$element.attr('placeholder') : '';
        this.inputSize = Math.max(1, this.placeholderText.length);

        this.$container = $('<div class="bootstrap-tagsinput"></div>');
        this.$input = $('<input type="text" placeholder="' + this.placeholderText + '"/>').appendTo(this.$container);

        this.$element.before(this.$container);

        this.build(options);
    }

    TagsInput.prototype = {
        constructor: TagsInput,

        /**
         * Adds the given item as a new tag. Pass true to dontPushVal to prevent
         * updating the elements val()
         */
        add: function (item, dontPushVal, options) {
            var self = this;

            if (self.options.maxTags && self.itemsArray.length >= self.options.maxTags)
                return;

            // Ignore falsey values, except false
            if (item !== false && !item)
                return;

            // Trim value
            if (typeof item === "string" && self.options.trimValue) {
                item = $.trim(item);
            }

            // Throw an error when trying to add an object while the itemValue option was not set
            if (typeof item === "object" && !self.objectItems)
                throw ("Can't add objects when itemValue option is not set");

            // Ignore strings only containg whitespace
            if (item.toString().match(/^\s*$/))
                return;

            // If SELECT but not multiple, remove current tag
            if (self.isSelect && !self.multiple && self.itemsArray.length > 0)
                self.remove(self.itemsArray[0]);

            if (typeof item === "string" && this.$element[0].tagName === 'INPUT') {
                var delimiter = (self.options.delimiterRegex) ? self.options.delimiterRegex : self.options.delimiter;
                var items = item.split(delimiter);
                if (items.length > 1) {
                    for (var i = 0; i < items.length; i++) {
                        this.add(items[i], true);
                    }

                    if (!dontPushVal)
                        self.pushVal();
                    return;
                }
            }

            var itemValue = self.options.itemValue(item),
                itemText = self.options.itemText(item),
                tagClass = self.options.tagClass(item),
                itemTitle = self.options.itemTitle(item);

            // Ignore items allready added
            var existing = $.grep(self.itemsArray, function (item) { return self.options.itemValue(item) === itemValue; })[0];
            if (existing && !self.options.allowDuplicates) {
                // Invoke onTagExists
                if (self.options.onTagExists) {
                    var $existingTag = $(".tag", self.$container).filter(function () { return $(this).data("item") === existing; });
                    self.options.onTagExists(item, $existingTag);
                }
                return;
            }

            // if length greater than limit
            if (self.items().toString().length + item.length + 1 > self.options.maxInputLength)
                return;

            // raise beforeItemAdd arg
            var beforeItemAddEvent = $.Event('beforeItemAdd', { item: item, cancel: false, options: options });
            self.$element.trigger(beforeItemAddEvent);
            if (beforeItemAddEvent.cancel)
                return;

            // register item in internal array and map
            self.itemsArray.push(item);

            // add a tag element

            var $tag = $('<span class="tag ' + htmlEncode(tagClass) + (itemTitle !== null ? ('" title="' + itemTitle) : '') + '">' + htmlEncode(itemText) + '<span data-role="remove"></span></span>');
            $tag.data('item', item);
            self.findInputWrapper().before($tag);
            $tag.after(' ');

            // add <option /> if item represents a value not present in one of the <select />'s options
            if (self.isSelect && !$('option[value="' + encodeURIComponent(itemValue) + '"]', self.$element)[0]) {
                var $option = $('<option selected>' + htmlEncode(itemText) + '</option>');
                $option.data('item', item);
                $option.attr('value', itemValue);
                self.$element.append($option);
            }

            if (!dontPushVal)
                self.pushVal();

            // Add class when reached maxTags
            if (self.options.maxTags === self.itemsArray.length || self.items().toString().length === self.options.maxInputLength)
                self.$container.addClass('bootstrap-tagsinput-max');

            self.$element.trigger($.Event('itemAdded', { item: item, options: options }));
        },

        /**
         * Removes the given item. Pass true to dontPushVal to prevent updating the
         * elements val()
         */
        remove: function (item, dontPushVal, options) {
            var self = this;

            if (self.objectItems) {
                if (typeof item === "object")
                    item = $.grep(self.itemsArray, function (other) { return self.options.itemValue(other) == self.options.itemValue(item); });
                else
                    item = $.grep(self.itemsArray, function (other) { return self.options.itemValue(other) == item; });

                item = item[item.length - 1];
            }

            if (item) {
                var beforeItemRemoveEvent = $.Event('beforeItemRemove', { item: item, cancel: false, options: options });
                self.$element.trigger(beforeItemRemoveEvent);
                if (beforeItemRemoveEvent.cancel)
                    return;

                $('.tag', self.$container).filter(function () { return $(this).data('item') === item; }).remove();
                $('option', self.$element).filter(function () { return $(this).data('item') === item; }).remove();
                if ($.inArray(item, self.itemsArray) !== -1)
                    self.itemsArray.splice($.inArray(item, self.itemsArray), 1);
            }

            if (!dontPushVal)
                self.pushVal();

            // Remove class when reached maxTags
            if (self.options.maxTags > self.itemsArray.length)
                self.$container.removeClass('bootstrap-tagsinput-max');

            self.$element.trigger($.Event('itemRemoved', { item: item, options: options }));
        },

        /**
         * Removes all items
         */
        removeAll: function () {
            var self = this;

            $('.tag', self.$container).remove();
            $('option', self.$element).remove();

            while (self.itemsArray.length > 0)
                self.itemsArray.pop();

            self.pushVal();
        },

        /**
         * Refreshes the tags so they match the text/value of their corresponding
         * item.
         */
        refresh: function () {
            var self = this;
            $('.tag', self.$container).each(function () {
                var $tag = $(this),
                    item = $tag.data('item'),
                    itemValue = self.options.itemValue(item),
                    itemText = self.options.itemText(item),
                    tagClass = self.options.tagClass(item);

                // Update tag's class and inner text
                $tag.attr('class', null);
                $tag.addClass('tag ' + htmlEncode(tagClass));
                $tag.contents().filter(function () {
                    return this.nodeType == 3;
                })[0].nodeValue = htmlEncode(itemText);

                if (self.isSelect) {
                    var option = $('option', self.$element).filter(function () { return $(this).data('item') === item; });
                    option.attr('value', itemValue);
                }
            });
        },

        /**
         * Returns the items added as tags
         */
        items: function () {
            return this.itemsArray;
        },

        /**
         * Assembly value by retrieving the value of each item, and set it on the
         * element.
         */
        pushVal: function () {
            var self = this,
                val = $.map(self.items(), function (item) {
                    return self.options.itemValue(item).toString();
                });

            self.$element.val(val, true).trigger('change');
        },

        /**
         * Initializes the tags input behaviour on the element
         */
        build: function (options) {
            var self = this;

            self.options = $.extend({}, defaultOptions, options);
            // When itemValue is set, freeInput should always be false
            if (self.objectItems)
                self.options.freeInput = false;

            makeOptionItemFunction(self.options, 'itemValue');
            makeOptionItemFunction(self.options, 'itemText');
            makeOptionFunction(self.options, 'tagClass');

            // Typeahead Bootstrap version 2.3.2
            if (self.options.typeahead) {
                var typeahead = self.options.typeahead || {};

                makeOptionFunction(typeahead, 'source');

                self.$input.typeahead($.extend({}, typeahead, {
                    source: function (query, process) {
                        function processItems(items) {
                            var texts = [];

                            for (var i = 0; i < items.length; i++) {
                                var text = self.options.itemText(items[i]);
                                map[text] = items[i];
                                texts.push(text);
                            }
                            process(texts);
                        }

                        this.map = {};
                        var map = this.map,
                            data = typeahead.source(query);

                        if ($.isFunction(data.success)) {
                            // support for Angular callbacks
                            data.success(processItems);
                        } else if ($.isFunction(data.then)) {
                            // support for Angular promises
                            data.then(processItems);
                        } else {
                            // support for functions and jquery promises
                            $.when(data)
                                .then(processItems);
                        }
                    },
                    updater: function (text) {
                        self.add(this.map[text]);
                        return this.map[text];
                    },
                    matcher: function (text) {
                        return (text.toLowerCase().indexOf(this.query.trim().toLowerCase()) !== -1);
                    },
                    sorter: function (texts) {
                        return texts.sort();
                    },
                    highlighter: function (text) {
                        var regex = new RegExp('(' + this.query + ')', 'gi');
                        return text.replace(regex, "<strong>$1</strong>");
                    }
                }));
            }

            // typeahead.js
            if (self.options.typeaheadjs) {
                var typeaheadConfig = null;
                var typeaheadDatasets = {};

                // Determine if main configurations were passed or simply a dataset
                var typeaheadjs = self.options.typeaheadjs;
                if ($.isArray(typeaheadjs)) {
                    typeaheadConfig = typeaheadjs[0];
                    typeaheadDatasets = typeaheadjs[1];
                } else {
                    typeaheadDatasets = typeaheadjs;
                }

                self.$input.typeahead(typeaheadConfig, typeaheadDatasets).on('typeahead:selected', $.proxy(function (obj, datum) {
                    if (typeaheadDatasets.valueKey)
                        self.add(datum[typeaheadDatasets.valueKey]);
                    else
                        self.add(datum);
                    self.$input.typeahead('val', '');
                }, self));
            }

            self.$container.on('click', $.proxy(function (event) {
                if (!self.$element.attr('disabled')) {
                    self.$input.removeAttr('disabled');
                }
                self.$input.focus();
            }, self));

            if (self.options.addOnBlur && self.options.freeInput) {
                self.$input.on('focusout', $.proxy(function (event) {
                    // HACK: only process on focusout when no typeahead opened, to
                    //       avoid adding the typeahead text as tag
                    if ($('.typeahead, .twitter-typeahead', self.$container).length === 0) {
                        self.add(self.$input.val());
                        self.$input.val('');
                    }
                }, self));
            }


            self.$container.on('keydown', 'input', $.proxy(function (event) {
                var $input = $(event.target),
                    $inputWrapper = self.findInputWrapper();

                if (self.$element.attr('disabled')) {
                    self.$input.attr('disabled', 'disabled');
                    return;
                }

                switch (event.which) {
                    // BACKSPACE
                    //case 8:
                    //    if (doGetCaretPosition($input[0]) === 0) {
                    //        var prev = $inputWrapper.prev();
                    //        if (prev.length) {
                    //            self.remove(prev.data('item'));
                    //        }
                    //    }
                    //    break;

                    // DELETE
                    //case 46:
                    //    if (doGetCaretPosition($input[0]) === 0) {
                    //        var next = $inputWrapper.next();
                    //        if (next.length) {
                    //            self.remove(next.data('item'));
                    //        }
                    //    }
                    //    break;

                    // LEFT ARROW
                    case 37:
                        // Try to move the input before the previous tag
                        var $prevTag = $inputWrapper.prev();
                        if ($input.val().length === 0 && $prevTag[0]) {
                            $prevTag.before($inputWrapper);
                            $input.focus();
                        }
                        break;
                    // RIGHT ARROW
                    case 39:
                        // Try to move the input after the next tag
                        var $nextTag = $inputWrapper.next();
                        if ($input.val().length === 0 && $nextTag[0]) {
                            $nextTag.after($inputWrapper);
                            $input.focus();
                        }
                        break;
                    default:
                    // ignore
                }

                // Reset internal input's size
                var textLength = $input.val().length,
                    wordSpace = Math.ceil(textLength / 5),
                    size = textLength + wordSpace + 1;
                $input.attr('size', Math.max(this.inputSize, $input.val().length));
            }, self));

            self.$container.on('keypress', 'input', $.proxy(function (event) {
                var $input = $(event.target);

                if (self.$element.attr('disabled')) {
                    self.$input.attr('disabled', 'disabled');
                    return;
                }

                var text = $input.val(),
                    maxLengthReached = self.options.maxChars && text.length >= self.options.maxChars;
                if (self.options.freeInput && (keyCombinationInList(event, self.options.confirmKeys) || maxLengthReached)) {
                    // Only attempt to add a tag if there is data in the field
                    if (text.length !== 0) {
                        self.add(maxLengthReached ? text.substr(0, self.options.maxChars) : text);
                        $input.val('');
                    }

                    // If the field is empty, let the event triggered fire as usual
                    if (self.options.cancelConfirmKeysOnEmpty === false) {
                        event.preventDefault();
                    }
                }

                // Reset internal input's size
                var textLength = $input.val().length,
                    wordSpace = Math.ceil(textLength / 5),
                    size = textLength + wordSpace + 1;
                $input.attr('size', Math.max(this.inputSize, $input.val().length));
            }, self));

            // Remove icon clicked
            self.$container.on('click', '[data-role=remove]', $.proxy(function (event) {
                if (self.$element.attr('disabled')) {
                    return;
                }
                self.remove($(event.target).closest('.tag').data('item'));
            }, self));

            // Only add existing value as tags when using strings as tags
            if (self.options.itemValue === defaultOptions.itemValue) {
                if (self.$element[0].tagName === 'INPUT') {
                    self.add(self.$element.val());
                } else {
                    $('option', self.$element).each(function () {
                        self.add($(this).attr('value'), true);
                    });
                }
            }
        },

        /**
         * Removes all tagsinput behaviour and unregsiter all event handlers
         */
        destroy: function () {
            var self = this;

            // Unbind events
            self.$container.off('keypress', 'input');
            self.$container.off('click', '[role=remove]');

            self.$container.remove();
            self.$element.removeData('tagsinput');
            self.$element.show();
        },

        /**
         * Sets focus on the tagsinput
         */
        focus: function () {
            this.$input.focus();
        },

        /**
         * Returns the internal input element
         */
        input: function () {
            return this.$input;
        },

        /**
         * Returns the element which is wrapped around the internal input. This
         * is normally the $container, but typeahead.js moves the $input element.
         */
        findInputWrapper: function () {
            var elt = this.$input[0],
                container = this.$container[0];
            while (elt && elt.parentNode !== container)
                elt = elt.parentNode;

            return $(elt);
        }
    };

    /**
     * Register JQuery plugin
     */
    $.fn.tagsinput = function (arg1, arg2, arg3) {
        var results = [];

        this.each(function () {
            var tagsinput = $(this).data('tagsinput');
            // Initialize a new tags input
            if (!tagsinput) {
                tagsinput = new TagsInput(this, arg1);
                $(this).data('tagsinput', tagsinput);
                results.push(tagsinput);

                if (this.tagName === 'SELECT') {
                    $('option', $(this)).attr('selected', 'selected');
                }

                // Init tags from $(this).val()
                $(this).val($(this).val());
            } else if (!arg1 && !arg2) {
                // tagsinput already exists
                // no function, trying to init
                results.push(tagsinput);
            } else if (tagsinput[arg1] !== undefined) {
                // Invoke function on existing tags input
                if (tagsinput[arg1].length === 3 && arg3 !== undefined) {
                    var retVal = tagsinput[arg1](arg2, null, arg3);
                } else {
                    var retVal = tagsinput[arg1](arg2);
                }
                if (retVal !== undefined)
                    results.push(retVal);
            }
        });

        if (typeof arg1 == 'string') {
            // Return the results from the invoked function calls
            return results.length > 1 ? results : results[0];
        } else {
            return results;
        }
    };

    $.fn.tagsinput.Constructor = TagsInput;

    /**
     * Most options support both a string or number as well as a function as
     * option value. This function makes sure that the option with the given
     * key in the given options is wrapped in a function
     */
    function makeOptionItemFunction(options, key) {
        if (typeof options[key] !== 'function') {
            var propertyName = options[key];
            options[key] = function (item) { return item[propertyName]; };
        }
    }
    function makeOptionFunction(options, key) {
        if (typeof options[key] !== 'function') {
            var value = options[key];
            options[key] = function () { return value; };
        }
    }
    /**
     * HtmlEncodes the given value
     */
    var htmlEncodeContainer = $('<div />');
    function htmlEncode(value) {
        if (value) {
            return htmlEncodeContainer.text(value).html();
        } else {
            return '';
        }
    }

    /**
     * Returns the position of the caret in the given input field
     * http://flightschool.acylt.com/devnotes/caret-position-woes/
     */
    function doGetCaretPosition(oField) {
        var iCaretPos = 0;
        if (document.selection) {
            oField.focus();
            var oSel = document.selection.createRange();
            oSel.moveStart('character', -oField.value.length);
            iCaretPos = oSel.text.length;
        } else if (oField.selectionStart || oField.selectionStart == '0') {
            iCaretPos = oField.selectionStart;
        }
        return (iCaretPos);
    }

    /**
      * Returns boolean indicates whether user has pressed an expected key combination.
      * @param object keyPressEvent: JavaScript event object, refer
      *     http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
      * @param object lookupList: expected key combinations, as in:
      *     [13, {which: 188, shiftKey: true}]
      */
    function keyCombinationInList(keyPressEvent, lookupList) {
        var found = false;
        $.each(lookupList, function (index, keyCombination) {
            if (typeof (keyCombination) === 'number' && keyPressEvent.which === keyCombination) {
                found = true;
                return false;
            }

            if (keyPressEvent.which === keyCombination.which) {
                var alt = !keyCombination.hasOwnProperty('altKey') || keyPressEvent.altKey === keyCombination.altKey,
                    shift = !keyCombination.hasOwnProperty('shiftKey') || keyPressEvent.shiftKey === keyCombination.shiftKey,
                    ctrl = !keyCombination.hasOwnProperty('ctrlKey') || keyPressEvent.ctrlKey === keyCombination.ctrlKey;
                if (alt && shift && ctrl) {
                    found = true;
                    return false;
                }
            }
        });

        return found;
    }

    /**
     * Initialize tagsinput behaviour on inputs and selects which have
     * data-role=tagsinput
     */
    $(function () {
        $("input[data-role=tagsinput], select[multiple][data-role=tagsinput]").tagsinput();
    });
})(window.jQuery);
;
angular.module('bootstrap-tagsinput', [])
.directive('bootstrapTagsinput', [function() {

  function getItemProperty(scope, property) {
    if (!property)
      return undefined;

    if (angular.isFunction(scope.$parent[property]))
      return scope.$parent[property];

    return function(item) {
      return item[property];
    };
  }

  return {
    restrict: 'EA',
    scope: {
        model: '=ngModel',
        inputKeyup: '&',
        onItemRemove: '&',
        onItemAdd: '&'
    },
    template: '<select multiple></select>',
    replace: false,
    link: function(scope, element, attrs) {
      $(function() {
        if (!angular.isArray(scope.model))
          scope.model = [];

        var select = $('select', element);
        var typeaheadSourceArray = attrs.typeaheadSource ? attrs.typeaheadSource.split('.') : null;
        var typeaheadSource = typeaheadSourceArray ?
            (typeaheadSourceArray.length > 1 ?
                scope.$parent[typeaheadSourceArray[0]][typeaheadSourceArray[1]]
                : scope.$parent[typeaheadSourceArray[0]])
            : null;

        if (attrs.placeholder != null ) {
            select.attr('placeholder', attrs.placeholder);
        }
        
		if(typeaheadSource == null) {
			select.tagsinput(scope.$parent[attrs.options || ''] || {
			  itemValue: getItemProperty(scope, attrs.itemvalue),
			  itemText : getItemProperty(scope, attrs.itemtext),
			  confirmKeys : getItemProperty(scope, attrs.confirmkeys) ? JSON.parse(attrs.confirmkeys) : [13],
			  tagClass : angular.isFunction(scope.$parent[attrs.tagclass]) ? scope.$parent[attrs.tagclass] : function(item) { return attrs.tagclass; }
			});
		} else {
			select.tagsinput(scope.$parent[attrs.options || ''] || {
			  typeahead : {
				source   : angular.isFunction(typeaheadSource) ? typeaheadSource : null
			  },
			  itemValue: getItemProperty(scope, attrs.itemvalue),
			  itemText : getItemProperty(scope, attrs.itemtext),
			  confirmKeys : getItemProperty(scope, attrs.confirmkeys) ? JSON.parse(attrs.confirmkeys) : [13],
			  tagClass : angular.isFunction(scope.$parent[attrs.tagclass]) ? scope.$parent[attrs.tagclass] : function(item) { return attrs.tagclass; }
			});
		}
		
        for (var i = 0; i < scope.model.length; i++) {
          select.tagsinput('add', scope.model[i]);
        }

        select.on('itemAdded', function(event) {
          if (scope.model.indexOf(event.item) === -1)
            scope.model.push(event.item);
        });

        select.on('itemRemoved', function(event) {
          var idx = scope.model.indexOf(event.item);
          if (idx !== -1) {
              scope.model.splice(idx, 1);
              scope.onItemRemove({ item: event.item });
          }
        });

        $('.bootstrap-tagsinput input[type="text"]').unbind('keyup touchend').on('keyup touchend', function () {
            scope.inputKeyup({ search: $(this).val() });
        });

        // create a shallow copy of model's current state, needed to determine
        // diff when model changes
        var prev = scope.model.slice();
        scope.$watch("model", function() {
          var added = scope.model.filter(function(i) {return prev.indexOf(i) === -1;}),
              removed = prev.filter(function(i) {return scope.model.indexOf(i) === -1;}),
              i;

          prev = scope.model.slice();

          // Remove tags no longer in binded model
          for (i = 0; i < removed.length; i++) {
            select.tagsinput('remove', removed[i]);
          }

          // Refresh remaining tags
          select.tagsinput('refresh');

          // Add new items in model as tags
          for (i = 0; i < added.length; i++) {
              select.tagsinput('add', added[i]);
              scope.onItemAdd({});
          }
        }, true);
      });
    }
  };
}]);
;
/*
 * angular-ui-bootstrap
 * http://angular-ui.github.io/bootstrap/

 * Version: 2.5.0 - 2017-01-28
 * License: MIT
 */angular.module("ui.bootstrap", ["ui.bootstrap.collapse", "ui.bootstrap.tabindex", "ui.bootstrap.accordion", "ui.bootstrap.alert", "ui.bootstrap.buttons", "ui.bootstrap.carousel", "ui.bootstrap.dateparser", "ui.bootstrap.isClass", "ui.bootstrap.datepicker", "ui.bootstrap.position", "ui.bootstrap.datepickerPopup", "ui.bootstrap.debounce", "ui.bootstrap.multiMap", "ui.bootstrap.dropdown", "ui.bootstrap.stackedMap", "ui.bootstrap.modal", "ui.bootstrap.paging", "ui.bootstrap.pager", "ui.bootstrap.pagination", "ui.bootstrap.tooltip", "ui.bootstrap.popover", "ui.bootstrap.progressbar", "ui.bootstrap.rating", "ui.bootstrap.tabs", "ui.bootstrap.timepicker", "ui.bootstrap.typeahead"]), angular.module("ui.bootstrap.collapse", []).directive("uibCollapse", ["$animate", "$q", "$parse", "$injector", function (a, b, c, d) { var e = d.has("$animateCss") ? d.get("$animateCss") : null; return { link: function (d, f, g) { function h() { r = !!("horizontal" in g), r ? (s = { width: "" }, t = { width: "0" }) : (s = { height: "" }, t = { height: "0" }), d.$eval(g.uibCollapse) || f.addClass("in").addClass("collapse").attr("aria-expanded", !0).attr("aria-hidden", !1).css(s) } function i(a) { return r ? { width: a.scrollWidth + "px" } : { height: a.scrollHeight + "px" } } function j() { f.hasClass("collapse") && f.hasClass("in") || b.resolve(n(d)).then(function () { f.removeClass("collapse").addClass("collapsing").attr("aria-expanded", !0).attr("aria-hidden", !1), e ? e(f, { addClass: "in", easing: "ease", css: { overflow: "hidden" }, to: i(f[0]) }).start()["finally"](k) : a.addClass(f, "in", { css: { overflow: "hidden" }, to: i(f[0]) }).then(k) }, angular.noop) } function k() { f.removeClass("collapsing").addClass("collapse").css(s), o(d) } function l() { return f.hasClass("collapse") || f.hasClass("in") ? void b.resolve(p(d)).then(function () { f.css(i(f[0])).removeClass("collapse").addClass("collapsing").attr("aria-expanded", !1).attr("aria-hidden", !0), e ? e(f, { removeClass: "in", to: t }).start()["finally"](m) : a.removeClass(f, "in", { to: t }).then(m) }, angular.noop) : m() } function m() { f.css(t), f.removeClass("collapsing").addClass("collapse"), q(d) } var n = c(g.expanding), o = c(g.expanded), p = c(g.collapsing), q = c(g.collapsed), r = !1, s = {}, t = {}; h(), d.$watch(g.uibCollapse, function (a) { a ? l() : j() }) } } }]), angular.module("ui.bootstrap.tabindex", []).directive("uibTabindexToggle", function () { return { restrict: "A", link: function (a, b, c) { c.$observe("disabled", function (a) { c.$set("tabindex", a ? -1 : null) }) } } }), angular.module("ui.bootstrap.accordion", ["ui.bootstrap.collapse", "ui.bootstrap.tabindex"]).constant("uibAccordionConfig", { closeOthers: !0 }).controller("UibAccordionController", ["$scope", "$attrs", "uibAccordionConfig", function (a, b, c) { this.groups = [], this.closeOthers = function (d) { var e = angular.isDefined(b.closeOthers) ? a.$eval(b.closeOthers) : c.closeOthers; e && angular.forEach(this.groups, function (a) { a !== d && (a.isOpen = !1) }) }, this.addGroup = function (a) { var b = this; this.groups.push(a), a.$on("$destroy", function (c) { b.removeGroup(a) }) }, this.removeGroup = function (a) { var b = this.groups.indexOf(a); -1 !== b && this.groups.splice(b, 1) } }]).directive("uibAccordion", function () { return { controller: "UibAccordionController", controllerAs: "accordion", transclude: !0, templateUrl: function (a, b) { return b.templateUrl || "uib/template/accordion/accordion.html" } } }).directive("uibAccordionGroup", function () { return { require: "^uibAccordion", transclude: !0, restrict: "A", templateUrl: function (a, b) { return b.templateUrl || "uib/template/accordion/accordion-group.html" }, scope: { heading: "@", panelClass: "@?", isOpen: "=?", isDisabled: "=?" }, controller: function () { this.setHeading = function (a) { this.heading = a } }, link: function (a, b, c, d) { b.addClass("panel"), d.addGroup(a), a.openClass = c.openClass || "panel-open", a.panelClass = c.panelClass || "panel-default", a.$watch("isOpen", function (c) { b.toggleClass(a.openClass, !!c), c && d.closeOthers(a) }), a.toggleOpen = function (b) { a.isDisabled || b && 32 !== b.which || (a.isOpen = !a.isOpen) }; var e = "accordiongroup-" + a.$id + "-" + Math.floor(1e4 * Math.random()); a.headingId = e + "-tab", a.panelId = e + "-panel" } } }).directive("uibAccordionHeading", function () { return { transclude: !0, template: "", replace: !0, require: "^uibAccordionGroup", link: function (a, b, c, d, e) { d.setHeading(e(a, angular.noop)) } } }).directive("uibAccordionTransclude", function () { function a() { return "uib-accordion-header,data-uib-accordion-header,x-uib-accordion-header,uib\\:accordion-header,[uib-accordion-header],[data-uib-accordion-header],[x-uib-accordion-header]" } return { require: "^uibAccordionGroup", link: function (b, c, d, e) { b.$watch(function () { return e[d.uibAccordionTransclude] }, function (b) { if (b) { var d = angular.element(c[0].querySelector(a())); d.html(""), d.append(b) } }) } } }), angular.module("ui.bootstrap.alert", []).controller("UibAlertController", ["$scope", "$element", "$attrs", "$interpolate", "$timeout", function (a, b, c, d, e) { a.closeable = !!c.close, b.addClass("alert"), c.$set("role", "alert"), a.closeable && b.addClass("alert-dismissible"); var f = angular.isDefined(c.dismissOnTimeout) ? d(c.dismissOnTimeout)(a.$parent) : null; f && e(function () { a.close() }, parseInt(f, 10)) }]).directive("uibAlert", function () { return { controller: "UibAlertController", controllerAs: "alert", restrict: "A", templateUrl: function (a, b) { return b.templateUrl || "uib/template/alert/alert.html" }, transclude: !0, scope: { close: "&" } } }), angular.module("ui.bootstrap.buttons", []).constant("uibButtonConfig", { activeClass: "active", toggleEvent: "click" }).controller("UibButtonsController", ["uibButtonConfig", function (a) { this.activeClass = a.activeClass || "active", this.toggleEvent = a.toggleEvent || "click" }]).directive("uibBtnRadio", ["$parse", function (a) { return { require: ["uibBtnRadio", "ngModel"], controller: "UibButtonsController", controllerAs: "buttons", link: function (b, c, d, e) { var f = e[0], g = e[1], h = a(d.uibUncheckable); c.find("input").css({ display: "none" }), g.$render = function () { c.toggleClass(f.activeClass, angular.equals(g.$modelValue, b.$eval(d.uibBtnRadio))) }, c.on(f.toggleEvent, function () { if (!d.disabled) { var a = c.hasClass(f.activeClass); a && !angular.isDefined(d.uncheckable) || b.$apply(function () { g.$setViewValue(a ? null : b.$eval(d.uibBtnRadio)), g.$render() }) } }), d.uibUncheckable && b.$watch(h, function (a) { d.$set("uncheckable", a ? "" : void 0) }) } } }]).directive("uibBtnCheckbox", function () { return { require: ["uibBtnCheckbox", "ngModel"], controller: "UibButtonsController", controllerAs: "button", link: function (a, b, c, d) { function e() { return g(c.btnCheckboxTrue, !0) } function f() { return g(c.btnCheckboxFalse, !1) } function g(b, c) { return angular.isDefined(b) ? a.$eval(b) : c } var h = d[0], i = d[1]; b.find("input").css({ display: "none" }), i.$render = function () { b.toggleClass(h.activeClass, angular.equals(i.$modelValue, e())) }, b.on(h.toggleEvent, function () { c.disabled || a.$apply(function () { i.$setViewValue(b.hasClass(h.activeClass) ? f() : e()), i.$render() }) }) } } }), angular.module("ui.bootstrap.carousel", []).controller("UibCarouselController", ["$scope", "$element", "$interval", "$timeout", "$animate", function (a, b, c, d, e) { function f(a) { for (var b = 0; b < p.length; b++) p[b].slide.active = b === a } function g(c, d, g) { if (!s) { if (angular.extend(c, { direction: g }), angular.extend(p[r].slide || {}, { direction: g }), e.enabled(b) && !a.$currentTransition && p[d].element && o.slides.length > 1) { p[d].element.data(q, c.direction); var h = o.getCurrentIndex(); angular.isNumber(h) && p[h].element && p[h].element.data(q, c.direction), a.$currentTransition = !0, e.on("addClass", p[d].element, function (b, c) { "close" === c && (a.$currentTransition = null, e.off("addClass", b)) }) } a.active = c.index, r = c.index, f(d), k() } } function h(a) { for (var b = 0; b < p.length; b++) if (p[b].slide === a) return b } function i() { m && (c.cancel(m), m = null) } function j(b) { b.length || (a.$currentTransition = null) } function k() { i(); var b = +a.interval; !isNaN(b) && b > 0 && (m = c(l, b)) } function l() { var b = +a.interval; n && !isNaN(b) && b > 0 && p.length ? a.next() : a.pause() } var m, n, o = this, p = o.slides = a.slides = [], q = "uib-slideDirection", r = a.active, s = !1; b.addClass("carousel"), o.addSlide = function (b, c) { p.push({ slide: b, element: c }), p.sort(function (a, b) { return +a.slide.index - +b.slide.index }), (b.index === a.active || 1 === p.length && !angular.isNumber(a.active)) && (a.$currentTransition && (a.$currentTransition = null), r = b.index, a.active = b.index, f(r), o.select(p[h(b)]), 1 === p.length && a.play()) }, o.getCurrentIndex = function () { for (var a = 0; a < p.length; a++) if (p[a].slide.index === r) return a }, o.next = a.next = function () { var b = (o.getCurrentIndex() + 1) % p.length; return 0 === b && a.noWrap() ? void a.pause() : o.select(p[b], "next") }, o.prev = a.prev = function () { var b = o.getCurrentIndex() - 1 < 0 ? p.length - 1 : o.getCurrentIndex() - 1; return a.noWrap() && b === p.length - 1 ? void a.pause() : o.select(p[b], "prev") }, o.removeSlide = function (b) { var c = h(b); p.splice(c, 1), p.length > 0 && r === c ? c >= p.length ? (r = p.length - 1, a.active = r, f(r), o.select(p[p.length - 1])) : (r = c, a.active = r, f(r), o.select(p[c])) : r > c && (r--, a.active = r), 0 === p.length && (r = null, a.active = null) }, o.select = a.select = function (b, c) { var d = h(b.slide); void 0 === c && (c = d > o.getCurrentIndex() ? "next" : "prev"), b.slide.index === r || a.$currentTransition || g(b.slide, d, c) }, a.indexOfSlide = function (a) { return +a.slide.index }, a.isActive = function (b) { return a.active === b.slide.index }, a.isPrevDisabled = function () { return 0 === a.active && a.noWrap() }, a.isNextDisabled = function () { return a.active === p.length - 1 && a.noWrap() }, a.pause = function () { a.noPause || (n = !1, i()) }, a.play = function () { n || (n = !0, k()) }, b.on("mouseenter", a.pause), b.on("mouseleave", a.play), a.$on("$destroy", function () { s = !0, i() }), a.$watch("noTransition", function (a) { e.enabled(b, !a) }), a.$watch("interval", k), a.$watchCollection("slides", j), a.$watch("active", function (a) { if (angular.isNumber(a) && r !== a) { for (var b = 0; b < p.length; b++) if (p[b].slide.index === a) { a = b; break } var c = p[a]; c && (f(a), o.select(p[a]), r = a) } }) }]).directive("uibCarousel", function () { return { transclude: !0, controller: "UibCarouselController", controllerAs: "carousel", restrict: "A", templateUrl: function (a, b) { return b.templateUrl || "uib/template/carousel/carousel.html" }, scope: { active: "=", interval: "=", noTransition: "=", noPause: "=", noWrap: "&" } } }).directive("uibSlide", ["$animate", function (a) { return { require: "^uibCarousel", restrict: "A", transclude: !0, templateUrl: function (a, b) { return b.templateUrl || "uib/template/carousel/slide.html" }, scope: { actual: "=?", index: "=?" }, link: function (b, c, d, e) { c.addClass("item"), e.addSlide(b, c), b.$on("$destroy", function () { e.removeSlide(b) }), b.$watch("active", function (b) { a[b ? "addClass" : "removeClass"](c, "active") }) } } }]).animation(".item", ["$animateCss", function (a) { function b(a, b, c) { a.removeClass(b), c && c() } var c = "uib-slideDirection"; return { beforeAddClass: function (d, e, f) { if ("active" === e) { var g = !1, h = d.data(c), i = "next" === h ? "left" : "right", j = b.bind(this, d, i + " " + h, f); return d.addClass(h), a(d, { addClass: i }).start().done(j), function () { g = !0 } } f() }, beforeRemoveClass: function (d, e, f) { if ("active" === e) { var g = !1, h = d.data(c), i = "next" === h ? "left" : "right", j = b.bind(this, d, i, f); return a(d, { addClass: i }).start().done(j), function () { g = !0 } } f() } } }]), angular.module("ui.bootstrap.dateparser", []).service("uibDateParser", ["$log", "$locale", "dateFilter", "orderByFilter", "filterFilter", function (a, b, c, d, e) { function f(a) { return e(s, { key: a }, !0)[0] } function g(a) { var b = [], c = a.split(""), e = a.indexOf("'"); if (e > -1) { var f = !1; a = a.split(""); for (var g = e; g < a.length; g++) f ? ("'" === a[g] && (g + 1 < a.length && "'" === a[g + 1] ? (a[g + 1] = "$", c[g + 1] = "") : (c[g] = "", f = !1)), a[g] = "$") : "'" === a[g] && (a[g] = "$", c[g] = "", f = !0); a = a.join("") } return angular.forEach(s, function (d) { var e = a.indexOf(d.key); if (e > -1) { a = a.split(""), c[e] = "(" + d.regex + ")", a[e] = "$"; for (var f = e + 1, g = e + d.key.length; g > f; f++) c[f] = "", a[f] = "$"; a = a.join(""), b.push({ index: e, key: d.key, apply: d.apply, matcher: d.regex }) } }), { regex: new RegExp("^" + c.join("") + "$"), map: d(b, "index") } } function h(a) { for (var b, c, d = [], e = 0; e < a.length;) if (angular.isNumber(c)) { if ("'" === a.charAt(e)) (e + 1 >= a.length || "'" !== a.charAt(e + 1)) && (d.push(i(a, c, e)), c = null); else if (e === a.length) for (; c < a.length;) b = j(a, c), d.push(b), c = b.endIdx; e++ } else "'" !== a.charAt(e) ? (b = j(a, e), d.push(b.parser), e = b.endIdx) : (c = e, e++); return d } function i(a, b, c) { return function () { return a.substr(b + 1, c - b - 1) } } function j(a, b) { for (var c = a.substr(b), d = 0; d < s.length; d++) if (new RegExp("^" + s[d].key).test(c)) { var e = s[d]; return { endIdx: b + e.key.length, parser: e.formatter } } return { endIdx: b + 1, parser: function () { return c.charAt(0) } } } function k(a, b, c) { return 1 > c ? !1 : 1 === b && c > 28 ? 29 === c && (a % 4 === 0 && a % 100 !== 0 || a % 400 === 0) : 3 === b || 5 === b || 8 === b || 10 === b ? 31 > c : !0 } function l(a) { return parseInt(a, 10) } function m(a, b) { return a && b ? q(a, b) : a } function n(a, b) { return a && b ? q(a, b, !0) : a } function o(a, b) { a = a.replace(/:/g, ""); var c = Date.parse("Jan 01, 1970 00:00:00 " + a) / 6e4; return isNaN(c) ? b : c } function p(a, b) { return a = new Date(a.getTime()), a.setMinutes(a.getMinutes() + b), a } function q(a, b, c) { c = c ? -1 : 1; var d = a.getTimezoneOffset(), e = o(b, d); return p(a, c * (e - d)) } var r, s, t = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g; this.init = function () { r = b.id, this.parsers = {}, this.formatters = {}, s = [{ key: "yyyy", regex: "\\d{4}", apply: function (a) { this.year = +a }, formatter: function (a) { var b = new Date; return b.setFullYear(Math.abs(a.getFullYear())), c(b, "yyyy") } }, { key: "yy", regex: "\\d{2}", apply: function (a) { a = +a, this.year = 69 > a ? a + 2e3 : a + 1900 }, formatter: function (a) { var b = new Date; return b.setFullYear(Math.abs(a.getFullYear())), c(b, "yy") } }, { key: "y", regex: "\\d{1,4}", apply: function (a) { this.year = +a }, formatter: function (a) { var b = new Date; return b.setFullYear(Math.abs(a.getFullYear())), c(b, "y") } }, { key: "M!", regex: "0?[1-9]|1[0-2]", apply: function (a) { this.month = a - 1 }, formatter: function (a) { var b = a.getMonth(); return /^[0-9]$/.test(b) ? c(a, "MM") : c(a, "M") } }, { key: "MMMM", regex: b.DATETIME_FORMATS.MONTH.join("|"), apply: function (a) { this.month = b.DATETIME_FORMATS.MONTH.indexOf(a) }, formatter: function (a) { return c(a, "MMMM") } }, { key: "MMM", regex: b.DATETIME_FORMATS.SHORTMONTH.join("|"), apply: function (a) { this.month = b.DATETIME_FORMATS.SHORTMONTH.indexOf(a) }, formatter: function (a) { return c(a, "MMM") } }, { key: "MM", regex: "0[1-9]|1[0-2]", apply: function (a) { this.month = a - 1 }, formatter: function (a) { return c(a, "MM") } }, { key: "M", regex: "[1-9]|1[0-2]", apply: function (a) { this.month = a - 1 }, formatter: function (a) { return c(a, "M") } }, { key: "d!", regex: "[0-2]?[0-9]{1}|3[0-1]{1}", apply: function (a) { this.date = +a }, formatter: function (a) { var b = a.getDate(); return /^[1-9]$/.test(b) ? c(a, "dd") : c(a, "d") } }, { key: "dd", regex: "[0-2][0-9]{1}|3[0-1]{1}", apply: function (a) { this.date = +a }, formatter: function (a) { return c(a, "dd") } }, { key: "d", regex: "[1-2]?[0-9]{1}|3[0-1]{1}", apply: function (a) { this.date = +a }, formatter: function (a) { return c(a, "d") } }, { key: "EEEE", regex: b.DATETIME_FORMATS.DAY.join("|"), formatter: function (a) { return c(a, "EEEE") } }, { key: "EEE", regex: b.DATETIME_FORMATS.SHORTDAY.join("|"), formatter: function (a) { return c(a, "EEE") } }, { key: "HH", regex: "(?:0|1)[0-9]|2[0-3]", apply: function (a) { this.hours = +a }, formatter: function (a) { return c(a, "HH") } }, { key: "hh", regex: "0[0-9]|1[0-2]", apply: function (a) { this.hours = +a }, formatter: function (a) { return c(a, "hh") } }, { key: "H", regex: "1?[0-9]|2[0-3]", apply: function (a) { this.hours = +a }, formatter: function (a) { return c(a, "H") } }, { key: "h", regex: "[0-9]|1[0-2]", apply: function (a) { this.hours = +a }, formatter: function (a) { return c(a, "h") } }, { key: "mm", regex: "[0-5][0-9]", apply: function (a) { this.minutes = +a }, formatter: function (a) { return c(a, "mm") } }, { key: "m", regex: "[0-9]|[1-5][0-9]", apply: function (a) { this.minutes = +a }, formatter: function (a) { return c(a, "m") } }, { key: "sss", regex: "[0-9][0-9][0-9]", apply: function (a) { this.milliseconds = +a }, formatter: function (a) { return c(a, "sss") } }, { key: "ss", regex: "[0-5][0-9]", apply: function (a) { this.seconds = +a }, formatter: function (a) { return c(a, "ss") } }, { key: "s", regex: "[0-9]|[1-5][0-9]", apply: function (a) { this.seconds = +a }, formatter: function (a) { return c(a, "s") } }, { key: "a", regex: b.DATETIME_FORMATS.AMPMS.join("|"), apply: function (a) { 12 === this.hours && (this.hours = 0), "PM" === a && (this.hours += 12) }, formatter: function (a) { return c(a, "a") } }, { key: "Z", regex: "[+-]\\d{4}", apply: function (a) { var b = a.match(/([+-])(\d{2})(\d{2})/), c = b[1], d = b[2], e = b[3]; this.hours += l(c + d), this.minutes += l(c + e) }, formatter: function (a) { return c(a, "Z") } }, { key: "ww", regex: "[0-4][0-9]|5[0-3]", formatter: function (a) { return c(a, "ww") } }, { key: "w", regex: "[0-9]|[1-4][0-9]|5[0-3]", formatter: function (a) { return c(a, "w") } }, { key: "GGGG", regex: b.DATETIME_FORMATS.ERANAMES.join("|").replace(/\s/g, "\\s"), formatter: function (a) { return c(a, "GGGG") } }, { key: "GGG", regex: b.DATETIME_FORMATS.ERAS.join("|"), formatter: function (a) { return c(a, "GGG") } }, { key: "GG", regex: b.DATETIME_FORMATS.ERAS.join("|"), formatter: function (a) { return c(a, "GG") } }, { key: "G", regex: b.DATETIME_FORMATS.ERAS.join("|"), formatter: function (a) { return c(a, "G") } }], angular.version.major >= 1 && angular.version.minor > 4 && s.push({ key: "LLLL", regex: b.DATETIME_FORMATS.STANDALONEMONTH.join("|"), apply: function (a) { this.month = b.DATETIME_FORMATS.STANDALONEMONTH.indexOf(a) }, formatter: function (a) { return c(a, "LLLL") } }) }, this.init(), this.getParser = function (a) { var b = f(a); return b && b.apply || null }, this.overrideParser = function (a, b) { var c = f(a); c && angular.isFunction(b) && (this.parsers = {}, c.apply = b) }.bind(this), this.filter = function (a, c) { if (!angular.isDate(a) || isNaN(a) || !c) return ""; c = b.DATETIME_FORMATS[c] || c, b.id !== r && this.init(), this.formatters[c] || (this.formatters[c] = h(c)); var d = this.formatters[c]; return d.reduce(function (b, c) { return b + c(a) }, "") }, this.parse = function (c, d, e) { if (!angular.isString(c) || !d) return c; d = b.DATETIME_FORMATS[d] || d, d = d.replace(t, "\\$&"), b.id !== r && this.init(), this.parsers[d] || (this.parsers[d] = g(d, "apply")); var f = this.parsers[d], h = f.regex, i = f.map, j = c.match(h), l = !1; if (j && j.length) { var m, n; angular.isDate(e) && !isNaN(e.getTime()) ? m = { year: e.getFullYear(), month: e.getMonth(), date: e.getDate(), hours: e.getHours(), minutes: e.getMinutes(), seconds: e.getSeconds(), milliseconds: e.getMilliseconds() } : (e && a.warn("dateparser:", "baseDate is not a valid date"), m = { year: 1900, month: 0, date: 1, hours: 0, minutes: 0, seconds: 0, milliseconds: 0 }); for (var o = 1, p = j.length; p > o; o++) { var q = i[o - 1]; "Z" === q.matcher && (l = !0), q.apply && q.apply.call(m, j[o]) } var s = l ? Date.prototype.setUTCFullYear : Date.prototype.setFullYear, u = l ? Date.prototype.setUTCHours : Date.prototype.setHours; return k(m.year, m.month, m.date) && (!angular.isDate(e) || isNaN(e.getTime()) || l ? (n = new Date(0), s.call(n, m.year, m.month, m.date), u.call(n, m.hours || 0, m.minutes || 0, m.seconds || 0, m.milliseconds || 0)) : (n = new Date(e), s.call(n, m.year, m.month, m.date), u.call(n, m.hours, m.minutes, m.seconds, m.milliseconds))), n } }, this.toTimezone = m, this.fromTimezone = n, this.timezoneToOffset = o, this.addDateMinutes = p, this.convertTimezoneToLocal = q }]), angular.module("ui.bootstrap.isClass", []).directive("uibIsClass", ["$animate", function (a) { var b = /^\s*([\s\S]+?)\s+on\s+([\s\S]+?)\s*$/, c = /^\s*([\s\S]+?)\s+for\s+([\s\S]+?)\s*$/; return { restrict: "A", compile: function (d, e) { function f(a, b, c) { i.push(a), j.push({ scope: a, element: b }), o.forEach(function (b, c) { g(b, a) }), a.$on("$destroy", h) } function g(b, d) { var e = b.match(c), f = d.$eval(e[1]), g = e[2], h = k[b]; if (!h) { var i = function (b) { var c = null; j.some(function (a) { var d = a.scope.$eval(m); return d === b ? (c = a, !0) : void 0 }), h.lastActivated !== c && (h.lastActivated && a.removeClass(h.lastActivated.element, f), c && a.addClass(c.element, f), h.lastActivated = c) }; k[b] = h = { lastActivated: null, scope: d, watchFn: i, compareWithExp: g, watcher: d.$watch(g, i) } } h.watchFn(d.$eval(g)) } function h(a) { var b = a.targetScope, c = i.indexOf(b); if (i.splice(c, 1), j.splice(c, 1), i.length) { var d = i[0]; angular.forEach(k, function (a) { a.scope === b && (a.watcher = d.$watch(a.compareWithExp, a.watchFn), a.scope = d) }) } else k = {} } var i = [], j = [], k = {}, l = e.uibIsClass.match(b), m = l[2], n = l[1], o = n.split(","); return f } } }]), angular.module("ui.bootstrap.datepicker", ["ui.bootstrap.dateparser", "ui.bootstrap.isClass"]).value("$datepickerSuppressError", !1).value("$datepickerLiteralWarning", !0).constant("uibDatepickerConfig", { datepickerMode: "day", formatDay: "dd", formatMonth: "MMMM", formatYear: "yyyy", formatDayHeader: "EEE", formatDayTitle: "MMMM yyyy", formatMonthTitle: "yyyy", maxDate: null, maxMode: "year", minDate: null, minMode: "day", monthColumns: 3, ngModelOptions: {}, shortcutPropagation: !1, showWeeks: !0, yearColumns: 5, yearRows: 4 }).controller("UibDatepickerController", ["$scope", "$element", "$attrs", "$parse", "$interpolate", "$locale", "$log", "dateFilter", "uibDatepickerConfig", "$datepickerLiteralWarning", "$datepickerSuppressError", "uibDateParser", function (a, b, c, d, e, f, g, h, i, j, k, l) { function m(b) { a.datepickerMode = b, a.datepickerOptions.datepickerMode = b } function n(b) { var c; if (angular.version.minor < 6) c = b.$options || a.datepickerOptions.ngModelOptions || i.ngModelOptions || {}, c.getOption = function (a) { return c[a] }; else { var d = b.$options.getOption("timezone") || (a.datepickerOptions.ngModelOptions ? a.datepickerOptions.ngModelOptions.timezone : null) || (i.ngModelOptions ? i.ngModelOptions.timezone : null); c = b.$options.createChild(i.ngModelOptions).createChild(a.datepickerOptions.ngModelOptions).createChild(b.$options).createChild({ timezone: d }) } return c } var o = this, p = { $setViewValue: angular.noop }, q = {}, r = []; b.addClass("uib-datepicker"), c.$set("role", "application"), a.datepickerOptions || (a.datepickerOptions = {}), this.modes = ["day", "month", "year"], ["customClass", "dateDisabled", "datepickerMode", "formatDay", "formatDayHeader", "formatDayTitle", "formatMonth", "formatMonthTitle", "formatYear", "maxDate", "maxMode", "minDate", "minMode", "monthColumns", "showWeeks", "shortcutPropagation", "startingDay", "yearColumns", "yearRows"].forEach(function (b) { switch (b) { case "customClass": case "dateDisabled": a[b] = a.datepickerOptions[b] || angular.noop; break; case "datepickerMode": a.datepickerMode = angular.isDefined(a.datepickerOptions.datepickerMode) ? a.datepickerOptions.datepickerMode : i.datepickerMode; break; case "formatDay": case "formatDayHeader": case "formatDayTitle": case "formatMonth": case "formatMonthTitle": case "formatYear": o[b] = angular.isDefined(a.datepickerOptions[b]) ? e(a.datepickerOptions[b])(a.$parent) : i[b]; break; case "monthColumns": case "showWeeks": case "shortcutPropagation": case "yearColumns": case "yearRows": o[b] = angular.isDefined(a.datepickerOptions[b]) ? a.datepickerOptions[b] : i[b]; break; case "startingDay": angular.isDefined(a.datepickerOptions.startingDay) ? o.startingDay = a.datepickerOptions.startingDay : angular.isNumber(i.startingDay) ? o.startingDay = i.startingDay : o.startingDay = (f.DATETIME_FORMATS.FIRSTDAYOFWEEK + 8) % 7; break; case "maxDate": case "minDate": a.$watch("datepickerOptions." + b, function (a) { a ? angular.isDate(a) ? o[b] = l.fromTimezone(new Date(a), q.getOption("timezone")) : (j && g.warn("Literal date support has been deprecated, please switch to date object usage"), o[b] = new Date(h(a, "medium"))) : o[b] = i[b] ? l.fromTimezone(new Date(i[b]), q.getOption("timezone")) : null, o.refreshView() }); break; case "maxMode": case "minMode": a.datepickerOptions[b] ? a.$watch(function () { return a.datepickerOptions[b] }, function (c) { o[b] = a[b] = angular.isDefined(c) ? c : a.datepickerOptions[b], ("minMode" === b && o.modes.indexOf(a.datepickerOptions.datepickerMode) < o.modes.indexOf(o[b]) || "maxMode" === b && o.modes.indexOf(a.datepickerOptions.datepickerMode) > o.modes.indexOf(o[b])) && (a.datepickerMode = o[b], a.datepickerOptions.datepickerMode = o[b]) }) : o[b] = a[b] = i[b] || null } }), a.uniqueId = "datepicker-" + a.$id + "-" + Math.floor(1e4 * Math.random()), a.disabled = angular.isDefined(c.disabled) || !1, angular.isDefined(c.ngDisabled) && r.push(a.$parent.$watch(c.ngDisabled, function (b) { a.disabled = b, o.refreshView() })), a.isActive = function (b) { return 0 === o.compare(b.date, o.activeDate) ? (a.activeDateId = b.uid, !0) : !1 }, this.init = function (b) { p = b, q = n(p), a.datepickerOptions.initDate ? (o.activeDate = l.fromTimezone(a.datepickerOptions.initDate, q.getOption("timezone")) || new Date, a.$watch("datepickerOptions.initDate", function (a) { a && (p.$isEmpty(p.$modelValue) || p.$invalid) && (o.activeDate = l.fromTimezone(a, q.getOption("timezone")), o.refreshView()) })) : o.activeDate = new Date; var c = p.$modelValue ? new Date(p.$modelValue) : new Date; this.activeDate = isNaN(c) ? l.fromTimezone(new Date, q.getOption("timezone")) : l.fromTimezone(c, q.getOption("timezone")), p.$render = function () { o.render() } }, this.render = function () { if (p.$viewValue) { var a = new Date(p.$viewValue), b = !isNaN(a); b ? this.activeDate = l.fromTimezone(a, q.getOption("timezone")) : k || g.error('Datepicker directive: "ng-model" value must be a Date object') } this.refreshView() }, this.refreshView = function () { if (this.element) { a.selectedDt = null, this._refreshView(), a.activeDt && (a.activeDateId = a.activeDt.uid); var b = p.$viewValue ? new Date(p.$viewValue) : null; b = l.fromTimezone(b, q.getOption("timezone")), p.$setValidity("dateDisabled", !b || this.element && !this.isDisabled(b)) } }, this.createDateObject = function (b, c) { var d = p.$viewValue ? new Date(p.$viewValue) : null; d = l.fromTimezone(d, q.getOption("timezone")); var e = new Date; e = l.fromTimezone(e, q.getOption("timezone")); var f = this.compare(b, e), g = { date: b, label: l.filter(b, c), selected: d && 0 === this.compare(b, d), disabled: this.isDisabled(b), past: 0 > f, current: 0 === f, future: f > 0, customClass: this.customClass(b) || null }; return d && 0 === this.compare(b, d) && (a.selectedDt = g), o.activeDate && 0 === this.compare(g.date, o.activeDate) && (a.activeDt = g), g }, this.isDisabled = function (b) { return a.disabled || this.minDate && this.compare(b, this.minDate) < 0 || this.maxDate && this.compare(b, this.maxDate) > 0 || a.dateDisabled && a.dateDisabled({ date: b, mode: a.datepickerMode }) }, this.customClass = function (b) { return a.customClass({ date: b, mode: a.datepickerMode }) }, this.split = function (a, b) { for (var c = []; a.length > 0;) c.push(a.splice(0, b)); return c }, a.select = function (b) { if (a.datepickerMode === o.minMode) { var c = p.$viewValue ? l.fromTimezone(new Date(p.$viewValue), q.getOption("timezone")) : new Date(0, 0, 0, 0, 0, 0, 0); c.setFullYear(b.getFullYear(), b.getMonth(), b.getDate()), c = l.toTimezone(c, q.getOption("timezone")), p.$setViewValue(c), p.$render() } else o.activeDate = b, m(o.modes[o.modes.indexOf(a.datepickerMode) - 1]), a.$emit("uib:datepicker.mode"); a.$broadcast("uib:datepicker.focus") }, a.move = function (a) { var b = o.activeDate.getFullYear() + a * (o.step.years || 0), c = o.activeDate.getMonth() + a * (o.step.months || 0); o.activeDate.setFullYear(b, c, 1), o.refreshView() }, a.toggleMode = function (b) { b = b || 1, a.datepickerMode === o.maxMode && 1 === b || a.datepickerMode === o.minMode && -1 === b || (m(o.modes[o.modes.indexOf(a.datepickerMode) + b]), a.$emit("uib:datepicker.mode")) }, a.keys = { 13: "enter", 32: "space", 33: "pageup", 34: "pagedown", 35: "end", 36: "home", 37: "left", 38: "up", 39: "right", 40: "down" }; var s = function () { o.element[0].focus() }; a.$on("uib:datepicker.focus", s), a.keydown = function (b) { var c = a.keys[b.which]; if (c && !b.shiftKey && !b.altKey && !a.disabled) if (b.preventDefault(), o.shortcutPropagation || b.stopPropagation(), "enter" === c || "space" === c) { if (o.isDisabled(o.activeDate)) return; a.select(o.activeDate) } else !b.ctrlKey || "up" !== c && "down" !== c ? (o.handleKeyDown(c, b), o.refreshView()) : a.toggleMode("up" === c ? 1 : -1) }, b.on("keydown", function (b) { a.$apply(function () { a.keydown(b) }) }), a.$on("$destroy", function () { for (; r.length;) r.shift()() }) }]).controller("UibDaypickerController", ["$scope", "$element", "dateFilter", function (a, b, c) { function d(a, b) { return 1 !== b || a % 4 !== 0 || a % 100 === 0 && a % 400 !== 0 ? f[b] : 29 } function e(a) { var b = new Date(a); b.setDate(b.getDate() + 4 - (b.getDay() || 7)); var c = b.getTime(); return b.setMonth(0), b.setDate(1), Math.floor(Math.round((c - b) / 864e5) / 7) + 1 } var f = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; this.step = { months: 1 }, this.element = b, this.init = function (b) { angular.extend(b, this), a.showWeeks = b.showWeeks, b.refreshView() }, this.getDates = function (a, b) { for (var c, d = new Array(b), e = new Date(a), f = 0; b > f;) c = new Date(e), d[f++] = c, e.setDate(e.getDate() + 1); return d }, this._refreshView = function () { var b = this.activeDate.getFullYear(), d = this.activeDate.getMonth(), f = new Date(this.activeDate); f.setFullYear(b, d, 1); var g = this.startingDay - f.getDay(), h = g > 0 ? 7 - g : -g, i = new Date(f); h > 0 && i.setDate(-h + 1); for (var j = this.getDates(i, 42), k = 0; 42 > k; k++) j[k] = angular.extend(this.createDateObject(j[k], this.formatDay), { secondary: j[k].getMonth() !== d, uid: a.uniqueId + "-" + k }); a.labels = new Array(7); for (var l = 0; 7 > l; l++) a.labels[l] = { abbr: c(j[l].date, this.formatDayHeader), full: c(j[l].date, "EEEE") }; if (a.title = c(this.activeDate, this.formatDayTitle), a.rows = this.split(j, 7), a.showWeeks) { a.weekNumbers = []; for (var m = (11 - this.startingDay) % 7, n = a.rows.length, o = 0; n > o; o++) a.weekNumbers.push(e(a.rows[o][m].date)) } }, this.compare = function (a, b) { var c = new Date(a.getFullYear(), a.getMonth(), a.getDate()), d = new Date(b.getFullYear(), b.getMonth(), b.getDate()); return c.setFullYear(a.getFullYear()), d.setFullYear(b.getFullYear()), c - d }, this.handleKeyDown = function (a, b) { var c = this.activeDate.getDate(); if ("left" === a) c -= 1; else if ("up" === a) c -= 7; else if ("right" === a) c += 1; else if ("down" === a) c += 7; else if ("pageup" === a || "pagedown" === a) { var e = this.activeDate.getMonth() + ("pageup" === a ? -1 : 1); this.activeDate.setMonth(e, 1), c = Math.min(d(this.activeDate.getFullYear(), this.activeDate.getMonth()), c) } else "home" === a ? c = 1 : "end" === a && (c = d(this.activeDate.getFullYear(), this.activeDate.getMonth())); this.activeDate.setDate(c) } }]).controller("UibMonthpickerController", ["$scope", "$element", "dateFilter", function (a, b, c) { this.step = { years: 1 }, this.element = b, this.init = function (a) { angular.extend(a, this), a.refreshView() }, this._refreshView = function () { for (var b, d = new Array(12), e = this.activeDate.getFullYear(), f = 0; 12 > f; f++) b = new Date(this.activeDate), b.setFullYear(e, f, 1), d[f] = angular.extend(this.createDateObject(b, this.formatMonth), { uid: a.uniqueId + "-" + f }); a.title = c(this.activeDate, this.formatMonthTitle), a.rows = this.split(d, this.monthColumns), a.yearHeaderColspan = this.monthColumns > 3 ? this.monthColumns - 2 : 1 }, this.compare = function (a, b) { var c = new Date(a.getFullYear(), a.getMonth()), d = new Date(b.getFullYear(), b.getMonth()); return c.setFullYear(a.getFullYear()), d.setFullYear(b.getFullYear()), c - d }, this.handleKeyDown = function (a, b) { var c = this.activeDate.getMonth(); if ("left" === a) c -= 1; else if ("up" === a) c -= this.monthColumns; else if ("right" === a) c += 1; else if ("down" === a) c += this.monthColumns; else if ("pageup" === a || "pagedown" === a) { var d = this.activeDate.getFullYear() + ("pageup" === a ? -1 : 1); this.activeDate.setFullYear(d) } else "home" === a ? c = 0 : "end" === a && (c = 11); this.activeDate.setMonth(c) } }]).controller("UibYearpickerController", ["$scope", "$element", "dateFilter", function (a, b, c) { function d(a) { return parseInt((a - 1) / f, 10) * f + 1 } var e, f; this.element = b, this.yearpickerInit = function () { e = this.yearColumns, f = this.yearRows * e, this.step = { years: f } }, this._refreshView = function () { for (var b, c = new Array(f), g = 0, h = d(this.activeDate.getFullYear()) ; f > g; g++) b = new Date(this.activeDate), b.setFullYear(h + g, 0, 1), c[g] = angular.extend(this.createDateObject(b, this.formatYear), { uid: a.uniqueId + "-" + g }); a.title = [c[0].label, c[f - 1].label].join(" - "), a.rows = this.split(c, e), a.columns = e }, this.compare = function (a, b) { return a.getFullYear() - b.getFullYear() }, this.handleKeyDown = function (a, b) { var c = this.activeDate.getFullYear(); "left" === a ? c -= 1 : "up" === a ? c -= e : "right" === a ? c += 1 : "down" === a ? c += e : "pageup" === a || "pagedown" === a ? c += ("pageup" === a ? -1 : 1) * f : "home" === a ? c = d(this.activeDate.getFullYear()) : "end" === a && (c = d(this.activeDate.getFullYear()) + f - 1), this.activeDate.setFullYear(c) } }]).directive("uibDatepicker", function () { return { templateUrl: function (a, b) { return b.templateUrl || "uib/template/datepicker/datepicker.html" }, scope: { datepickerOptions: "=?" }, require: ["uibDatepicker", "^ngModel"], restrict: "A", controller: "UibDatepickerController", controllerAs: "datepicker", link: function (a, b, c, d) { var e = d[0], f = d[1]; e.init(f) } } }).directive("uibDaypicker", function () { return { templateUrl: function (a, b) { return b.templateUrl || "uib/template/datepicker/day.html" }, require: ["^uibDatepicker", "uibDaypicker"], restrict: "A", controller: "UibDaypickerController", link: function (a, b, c, d) { var e = d[0], f = d[1]; f.init(e) } } }).directive("uibMonthpicker", function () { return { templateUrl: function (a, b) { return b.templateUrl || "uib/template/datepicker/month.html" }, require: ["^uibDatepicker", "uibMonthpicker"], restrict: "A", controller: "UibMonthpickerController", link: function (a, b, c, d) { var e = d[0], f = d[1]; f.init(e) } } }).directive("uibYearpicker", function () { return { templateUrl: function (a, b) { return b.templateUrl || "uib/template/datepicker/year.html" }, require: ["^uibDatepicker", "uibYearpicker"], restrict: "A", controller: "UibYearpickerController", link: function (a, b, c, d) { var e = d[0]; angular.extend(e, d[1]), e.yearpickerInit(), e.refreshView() } } }), angular.module("ui.bootstrap.position", []).factory("$uibPosition", ["$document", "$window", function (a, b) {
     var c, d, e = { normal: /(auto|scroll)/, hidden: /(auto|scroll|hidden)/ }, f = { auto: /\s?auto?\s?/i, primary: /^(top|bottom|left|right)$/, secondary: /^(top|bottom|left|right|center)$/, vertical: /^(top|bottom)$/ }, g = /(HTML|BODY)/; return {
         getRawNode: function (a) { return a.nodeName ? a : a[0] || a }, parseStyle: function (a) {
             return a = parseFloat(a),
            isFinite(a) ? a : 0
         }, offsetParent: function (c) { function d(a) { return "static" === (b.getComputedStyle(a).position || "static") } c = this.getRawNode(c); for (var e = c.offsetParent || a[0].documentElement; e && e !== a[0].documentElement && d(e) ;) e = e.offsetParent; return e || a[0].documentElement }, scrollbarWidth: function (e) { if (e) { if (angular.isUndefined(d)) { var f = a.find("body"); f.addClass("uib-position-body-scrollbar-measure"), d = b.innerWidth - f[0].clientWidth, d = isFinite(d) ? d : 0, f.removeClass("uib-position-body-scrollbar-measure") } return d } if (angular.isUndefined(c)) { var g = angular.element('<div class="uib-position-scrollbar-measure"></div>'); a.find("body").append(g), c = g[0].offsetWidth - g[0].clientWidth, c = isFinite(c) ? c : 0, g.remove() } return c }, scrollbarPadding: function (a) { a = this.getRawNode(a); var c = b.getComputedStyle(a), d = this.parseStyle(c.paddingRight), e = this.parseStyle(c.paddingBottom), f = this.scrollParent(a, !1, !0), h = this.scrollbarWidth(g.test(f.tagName)); return { scrollbarWidth: h, widthOverflow: f.scrollWidth > f.clientWidth, right: d + h, originalRight: d, heightOverflow: f.scrollHeight > f.clientHeight, bottom: e + h, originalBottom: e } }, isScrollable: function (a, c) { a = this.getRawNode(a); var d = c ? e.hidden : e.normal, f = b.getComputedStyle(a); return d.test(f.overflow + f.overflowY + f.overflowX) }, scrollParent: function (c, d, f) { c = this.getRawNode(c); var g = d ? e.hidden : e.normal, h = a[0].documentElement, i = b.getComputedStyle(c); if (f && g.test(i.overflow + i.overflowY + i.overflowX)) return c; var j = "absolute" === i.position, k = c.parentElement || h; if (k === h || "fixed" === i.position) return h; for (; k.parentElement && k !== h;) { var l = b.getComputedStyle(k); if (j && "static" !== l.position && (j = !1), !j && g.test(l.overflow + l.overflowY + l.overflowX)) break; k = k.parentElement } return k }, position: function (c, d) { c = this.getRawNode(c); var e = this.offset(c); if (d) { var f = b.getComputedStyle(c); e.top -= this.parseStyle(f.marginTop), e.left -= this.parseStyle(f.marginLeft) } var g = this.offsetParent(c), h = { top: 0, left: 0 }; return g !== a[0].documentElement && (h = this.offset(g), h.top += g.clientTop - g.scrollTop, h.left += g.clientLeft - g.scrollLeft), { width: Math.round(angular.isNumber(e.width) ? e.width : c.offsetWidth), height: Math.round(angular.isNumber(e.height) ? e.height : c.offsetHeight), top: Math.round(e.top - h.top), left: Math.round(e.left - h.left) } }, offset: function (c) { c = this.getRawNode(c); var d = c.getBoundingClientRect(); return { width: Math.round(angular.isNumber(d.width) ? d.width : c.offsetWidth), height: Math.round(angular.isNumber(d.height) ? d.height : c.offsetHeight), top: Math.round(d.top + (b.pageYOffset || a[0].documentElement.scrollTop)), left: Math.round(d.left + (b.pageXOffset || a[0].documentElement.scrollLeft)) } }, viewportOffset: function (c, d, e) { c = this.getRawNode(c), e = e !== !1; var f = c.getBoundingClientRect(), g = { top: 0, left: 0, bottom: 0, right: 0 }, h = d ? a[0].documentElement : this.scrollParent(c), i = h.getBoundingClientRect(); if (g.top = i.top + h.clientTop, g.left = i.left + h.clientLeft, h === a[0].documentElement && (g.top += b.pageYOffset, g.left += b.pageXOffset), g.bottom = g.top + h.clientHeight, g.right = g.left + h.clientWidth, e) { var j = b.getComputedStyle(h); g.top += this.parseStyle(j.paddingTop), g.bottom -= this.parseStyle(j.paddingBottom), g.left += this.parseStyle(j.paddingLeft), g.right -= this.parseStyle(j.paddingRight) } return { top: Math.round(f.top - g.top), bottom: Math.round(g.bottom - f.bottom), left: Math.round(f.left - g.left), right: Math.round(g.right - f.right) } }, parsePlacement: function (a) { var b = f.auto.test(a); return b && (a = a.replace(f.auto, "")), a = a.split("-"), a[0] = a[0] || "top", f.primary.test(a[0]) || (a[0] = "top"), a[1] = a[1] || "center", f.secondary.test(a[1]) || (a[1] = "center"), b ? a[2] = !0 : a[2] = !1, a }, positionElements: function (a, c, d, e) { a = this.getRawNode(a), c = this.getRawNode(c); var g = angular.isDefined(c.offsetWidth) ? c.offsetWidth : c.prop("offsetWidth"), h = angular.isDefined(c.offsetHeight) ? c.offsetHeight : c.prop("offsetHeight"); d = this.parsePlacement(d); var i = e ? this.offset(a) : this.position(a), j = { top: 0, left: 0, placement: "" }; if (d[2]) { var k = this.viewportOffset(a, e), l = b.getComputedStyle(c), m = { width: g + Math.round(Math.abs(this.parseStyle(l.marginLeft) + this.parseStyle(l.marginRight))), height: h + Math.round(Math.abs(this.parseStyle(l.marginTop) + this.parseStyle(l.marginBottom))) }; if (d[0] = "top" === d[0] && m.height > k.top && m.height <= k.bottom ? "bottom" : "bottom" === d[0] && m.height > k.bottom && m.height <= k.top ? "top" : "left" === d[0] && m.width > k.left && m.width <= k.right ? "right" : "right" === d[0] && m.width > k.right && m.width <= k.left ? "left" : d[0], d[1] = "top" === d[1] && m.height - i.height > k.bottom && m.height - i.height <= k.top ? "bottom" : "bottom" === d[1] && m.height - i.height > k.top && m.height - i.height <= k.bottom ? "top" : "left" === d[1] && m.width - i.width > k.right && m.width - i.width <= k.left ? "right" : "right" === d[1] && m.width - i.width > k.left && m.width - i.width <= k.right ? "left" : d[1], "center" === d[1]) if (f.vertical.test(d[0])) { var n = i.width / 2 - g / 2; k.left + n < 0 && m.width - i.width <= k.right ? d[1] = "left" : k.right + n < 0 && m.width - i.width <= k.left && (d[1] = "right") } else { var o = i.height / 2 - m.height / 2; k.top + o < 0 && m.height - i.height <= k.bottom ? d[1] = "top" : k.bottom + o < 0 && m.height - i.height <= k.top && (d[1] = "bottom") } } switch (d[0]) { case "top": j.top = i.top - h; break; case "bottom": j.top = i.top + i.height; break; case "left": j.left = i.left - g; break; case "right": j.left = i.left + i.width } switch (d[1]) { case "top": j.top = i.top; break; case "bottom": j.top = i.top + i.height - h; break; case "left": j.left = i.left; break; case "right": j.left = i.left + i.width - g; break; case "center": f.vertical.test(d[0]) ? j.left = i.left + i.width / 2 - g / 2 : j.top = i.top + i.height / 2 - h / 2 } return j.top = Math.round(j.top), j.left = Math.round(j.left), j.placement = "center" === d[1] ? d[0] : d[0] + "-" + d[1], j }, adjustTop: function (a, b, c, d) { return -1 !== a.indexOf("top") && c !== d ? { top: b.top - d + "px" } : void 0 }, positionArrow: function (a, c) { a = this.getRawNode(a); var d = a.querySelector(".tooltip-inner, .popover-inner"); if (d) { var e = angular.element(d).hasClass("tooltip-inner"), g = e ? a.querySelector(".tooltip-arrow") : a.querySelector(".arrow"); if (g) { var h = { top: "", bottom: "", left: "", right: "" }; if (c = this.parsePlacement(c), "center" === c[1]) return void angular.element(g).css(h); var i = "border-" + c[0] + "-width", j = b.getComputedStyle(g)[i], k = "border-"; k += f.vertical.test(c[0]) ? c[0] + "-" + c[1] : c[1] + "-" + c[0], k += "-radius"; var l = b.getComputedStyle(e ? d : a)[k]; switch (c[0]) { case "top": h.bottom = e ? "0" : "-" + j; break; case "bottom": h.top = e ? "0" : "-" + j; break; case "left": h.right = e ? "0" : "-" + j; break; case "right": h.left = e ? "0" : "-" + j } h[c[1]] = l, angular.element(g).css(h) } } }
     }
 }]), angular.module("ui.bootstrap.datepickerPopup", ["ui.bootstrap.datepicker", "ui.bootstrap.position"]).value("$datepickerPopupLiteralWarning", !0).constant("uibDatepickerPopupConfig", { altInputFormats: [], appendToBody: !1, clearText: "Clear", closeOnDateSelection: !0, closeText: "Done", currentText: "Today", datepickerPopup: "yyyy-MM-dd", datepickerPopupTemplateUrl: "uib/template/datepickerPopup/popup.html", datepickerTemplateUrl: "uib/template/datepicker/datepicker.html", html5Types: { date: "yyyy-MM-dd", "datetime-local": "yyyy-MM-ddTHH:mm:ss.sss", month: "yyyy-MM" }, onOpenFocus: !0, showButtonBar: !0, placement: "auto bottom-left" }).controller("UibDatepickerPopupController", ["$scope", "$element", "$attrs", "$compile", "$log", "$parse", "$window", "$document", "$rootScope", "$uibPosition", "dateFilter", "uibDateParser", "uibDatepickerPopupConfig", "$timeout", "uibDatepickerConfig", "$datepickerPopupLiteralWarning", function (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) { function q(b) { var c = l.parse(b, x, a.date); if (isNaN(c)) for (var d = 0; d < J.length; d++) if (c = l.parse(b, J[d], a.date), !isNaN(c)) return c; return c } function r(a) { if (angular.isNumber(a) && (a = new Date(a)), !a) return null; if (angular.isDate(a) && !isNaN(a)) return a; if (angular.isString(a)) { var b = q(a); if (!isNaN(b)) return l.toTimezone(b, H.getOption("timezone")) } return H.getOption("allowInvalid") ? a : void 0 } function s(a, b) { var d = a || b; return c.ngRequired || d ? (angular.isNumber(d) && (d = new Date(d)), d ? angular.isDate(d) && !isNaN(d) ? !0 : angular.isString(d) ? !isNaN(q(d)) : !1 : !0) : !0 } function t(c) { if (a.isOpen || !a.disabled) { var d = I[0], e = b[0].contains(c.target), f = void 0 !== d.contains && d.contains(c.target); !a.isOpen || e || f || a.$apply(function () { a.isOpen = !1 }) } } function u(c) { 27 === c.which && a.isOpen ? (c.preventDefault(), c.stopPropagation(), a.$apply(function () { a.isOpen = !1 }), b[0].focus()) : 40 !== c.which || a.isOpen || (c.preventDefault(), c.stopPropagation(), a.$apply(function () { a.isOpen = !0 })) } function v() { if (a.isOpen) { var d = angular.element(I[0].querySelector(".uib-datepicker-popup")), e = c.popupPlacement ? c.popupPlacement : m.placement, f = j.positionElements(b, d, e, z); d.css({ top: f.top + "px", left: f.left + "px" }), d.hasClass("uib-position-measure") && d.removeClass("uib-position-measure") } } function w(a) { var b; return angular.version.minor < 6 ? (b = angular.isObject(a.$options) ? a.$options : { timezone: null }, b.getOption = function (a) { return b[a] }) : b = a.$options, b } var x, y, z, A, B, C, D, E, F, G, H, I, J, K = !1, L = []; this.init = function (e) { if (G = e, H = w(G), y = angular.isDefined(c.closeOnDateSelection) ? a.$parent.$eval(c.closeOnDateSelection) : m.closeOnDateSelection, z = angular.isDefined(c.datepickerAppendToBody) ? a.$parent.$eval(c.datepickerAppendToBody) : m.appendToBody, A = angular.isDefined(c.onOpenFocus) ? a.$parent.$eval(c.onOpenFocus) : m.onOpenFocus, B = angular.isDefined(c.datepickerPopupTemplateUrl) ? c.datepickerPopupTemplateUrl : m.datepickerPopupTemplateUrl, C = angular.isDefined(c.datepickerTemplateUrl) ? c.datepickerTemplateUrl : m.datepickerTemplateUrl, J = angular.isDefined(c.altInputFormats) ? a.$parent.$eval(c.altInputFormats) : m.altInputFormats, a.showButtonBar = angular.isDefined(c.showButtonBar) ? a.$parent.$eval(c.showButtonBar) : m.showButtonBar, m.html5Types[c.type] ? (x = m.html5Types[c.type], K = !0) : (x = c.uibDatepickerPopup || m.datepickerPopup, c.$observe("uibDatepickerPopup", function (a, b) { var c = a || m.datepickerPopup; if (c !== x && (x = c, G.$modelValue = null, !x)) throw new Error("uibDatepickerPopup must have a date format specified.") })), !x) throw new Error("uibDatepickerPopup must have a date format specified."); if (K && c.uibDatepickerPopup) throw new Error("HTML5 date input types do not support custom formats."); D = angular.element("<div uib-datepicker-popup-wrap><div uib-datepicker></div></div>"), D.attr({ "ng-model": "date", "ng-change": "dateSelection(date)", "template-url": B }), E = angular.element(D.children()[0]), E.attr("template-url", C), a.datepickerOptions || (a.datepickerOptions = {}), K && "month" === c.type && (a.datepickerOptions.datepickerMode = "month", a.datepickerOptions.minMode = "month"), E.attr("datepicker-options", "datepickerOptions"), K ? G.$formatters.push(function (b) { return a.date = l.fromTimezone(b, H.getOption("timezone")), b }) : (G.$$parserName = "date", G.$validators.date = s, G.$parsers.unshift(r), G.$formatters.push(function (b) { return G.$isEmpty(b) ? (a.date = b, b) : (angular.isNumber(b) && (b = new Date(b)), a.date = l.fromTimezone(b, H.getOption("timezone")), l.filter(a.date, x)) })), G.$viewChangeListeners.push(function () { a.date = q(G.$viewValue) }), b.on("keydown", u), I = d(D)(a), D.remove(), z ? h.find("body").append(I) : b.after(I), a.$on("$destroy", function () { for (a.isOpen === !0 && (i.$$phase || a.$apply(function () { a.isOpen = !1 })), I.remove(), b.off("keydown", u), h.off("click", t), F && F.off("scroll", v), angular.element(g).off("resize", v) ; L.length;) L.shift()() }) }, a.getText = function (b) { return a[b + "Text"] || m[b + "Text"] }, a.isDisabled = function (b) { "today" === b && (b = l.fromTimezone(new Date, H.getOption("timezone"))); var c = {}; return angular.forEach(["minDate", "maxDate"], function (b) { a.datepickerOptions[b] ? angular.isDate(a.datepickerOptions[b]) ? c[b] = new Date(a.datepickerOptions[b]) : (p && e.warn("Literal date support has been deprecated, please switch to date object usage"), c[b] = new Date(k(a.datepickerOptions[b], "medium"))) : c[b] = null }), a.datepickerOptions && c.minDate && a.compare(b, c.minDate) < 0 || c.maxDate && a.compare(b, c.maxDate) > 0 }, a.compare = function (a, b) { return new Date(a.getFullYear(), a.getMonth(), a.getDate()) - new Date(b.getFullYear(), b.getMonth(), b.getDate()) }, a.dateSelection = function (c) { a.date = c; var d = a.date ? l.filter(a.date, x) : null; b.val(d), G.$setViewValue(d), y && (a.isOpen = !1, b[0].focus()) }, a.keydown = function (c) { 27 === c.which && (c.stopPropagation(), a.isOpen = !1, b[0].focus()) }, a.select = function (b, c) { if (c.stopPropagation(), "today" === b) { var d = new Date; angular.isDate(a.date) ? (b = new Date(a.date), b.setFullYear(d.getFullYear(), d.getMonth(), d.getDate())) : (b = l.fromTimezone(d, H.getOption("timezone")), b.setHours(0, 0, 0, 0)) } a.dateSelection(b) }, a.close = function (c) { c.stopPropagation(), a.isOpen = !1, b[0].focus() }, a.disabled = angular.isDefined(c.disabled) || !1, c.ngDisabled && L.push(a.$parent.$watch(f(c.ngDisabled), function (b) { a.disabled = b })), a.$watch("isOpen", function (d) { d ? a.disabled ? a.isOpen = !1 : n(function () { v(), A && a.$broadcast("uib:datepicker.focus"), h.on("click", t); var d = c.popupPlacement ? c.popupPlacement : m.placement; z || j.parsePlacement(d)[2] ? (F = F || angular.element(j.scrollParent(b)), F && F.on("scroll", v)) : F = null, angular.element(g).on("resize", v) }, 0, !1) : (h.off("click", t), F && F.off("scroll", v), angular.element(g).off("resize", v)) }), a.$on("uib:datepicker.mode", function () { n(v, 0, !1) }) }]).directive("uibDatepickerPopup", function () { return { require: ["ngModel", "uibDatepickerPopup"], controller: "UibDatepickerPopupController", scope: { datepickerOptions: "=?", isOpen: "=?", currentText: "@", clearText: "@", closeText: "@" }, link: function (a, b, c, d) { var e = d[0], f = d[1]; f.init(e) } } }).directive("uibDatepickerPopupWrap", function () { return { restrict: "A", transclude: !0, templateUrl: function (a, b) { return b.templateUrl || "uib/template/datepickerPopup/popup.html" } } }), angular.module("ui.bootstrap.debounce", []).factory("$$debounce", ["$timeout", function (a) { return function (b, c) { var d; return function () { var e = this, f = Array.prototype.slice.call(arguments); d && a.cancel(d), d = a(function () { b.apply(e, f) }, c) } } }]), angular.module("ui.bootstrap.multiMap", []).factory("$$multiMap", function () { return { createNew: function () { var a = {}; return { entries: function () { return Object.keys(a).map(function (b) { return { key: b, value: a[b] } }) }, get: function (b) { return a[b] }, hasKey: function (b) { return !!a[b] }, keys: function () { return Object.keys(a) }, put: function (b, c) { a[b] || (a[b] = []), a[b].push(c) }, remove: function (b, c) { var d = a[b]; if (d) { var e = d.indexOf(c); -1 !== e && d.splice(e, 1), d.length || delete a[b] } } } } } }), angular.module("ui.bootstrap.dropdown", ["ui.bootstrap.multiMap", "ui.bootstrap.position"]).constant("uibDropdownConfig", { appendToOpenClass: "uib-dropdown-open", openClass: "open" }).service("uibDropdownService", ["$document", "$rootScope", "$$multiMap", function (a, b, c) { var d = null, e = c.createNew(); this.isOnlyOpen = function (a, b) { var c = e.get(b); if (c) { var d = c.reduce(function (b, c) { return c.scope === a ? c : b }, {}); if (d) return 1 === c.length } return !1 }, this.open = function (b, c, g) { if (d || a.on("click", f), d && d !== b && (d.isOpen = !1), d = b, g) { var h = e.get(g); if (h) { var i = h.map(function (a) { return a.scope }); -1 === i.indexOf(b) && e.put(g, { scope: b }) } else e.put(g, { scope: b }) } }, this.close = function (b, c, g) { if (d === b && (a.off("click", f), a.off("keydown", this.keybindFilter), d = null), g) { var h = e.get(g); if (h) { var i = h.reduce(function (a, c) { return c.scope === b ? c : a }, {}); i && e.remove(g, i) } } }; var f = function (a) { if (d && d.isOpen && !(a && "disabled" === d.getAutoClose() || a && 3 === a.which)) { var c = d.getToggleElement(); if (!(a && c && c[0].contains(a.target))) { var e = d.getDropdownElement(); a && "outsideClick" === d.getAutoClose() && e && e[0].contains(a.target) || (d.focusToggleElement(), d.isOpen = !1, b.$$phase || d.$apply()) } } }; this.keybindFilter = function (a) { if (d) { var b = d.getDropdownElement(), c = d.getToggleElement(), e = b && b[0].contains(a.target), g = c && c[0].contains(a.target); 27 === a.which ? (a.stopPropagation(), d.focusToggleElement(), f()) : d.isKeynavEnabled() && -1 !== [38, 40].indexOf(a.which) && d.isOpen && (e || g) && (a.preventDefault(), a.stopPropagation(), d.focusDropdownEntry(a.which)) } } }]).controller("UibDropdownController", ["$scope", "$element", "$attrs", "$parse", "uibDropdownConfig", "uibDropdownService", "$animate", "$uibPosition", "$document", "$compile", "$templateRequest", function (a, b, c, d, e, f, g, h, i, j, k) { function l() { b.append(o.dropdownMenu) } var m, n, o = this, p = a.$new(), q = e.appendToOpenClass, r = e.openClass, s = angular.noop, t = c.onToggle ? d(c.onToggle) : angular.noop, u = !1, v = i.find("body"); b.addClass("dropdown"), this.init = function () { c.isOpen && (n = d(c.isOpen), s = n.assign, a.$watch(n, function (a) { p.isOpen = !!a })), u = angular.isDefined(c.keyboardNav) }, this.toggle = function (a) { return p.isOpen = arguments.length ? !!a : !p.isOpen, angular.isFunction(s) && s(p, p.isOpen), p.isOpen }, this.isOpen = function () { return p.isOpen }, p.getToggleElement = function () { return o.toggleElement }, p.getAutoClose = function () { return c.autoClose || "always" }, p.getElement = function () { return b }, p.isKeynavEnabled = function () { return u }, p.focusDropdownEntry = function (a) { var c = o.dropdownMenu ? angular.element(o.dropdownMenu).find("a") : b.find("ul").eq(0).find("a"); switch (a) { case 40: angular.isNumber(o.selectedOption) ? o.selectedOption = o.selectedOption === c.length - 1 ? o.selectedOption : o.selectedOption + 1 : o.selectedOption = 0; break; case 38: angular.isNumber(o.selectedOption) ? o.selectedOption = 0 === o.selectedOption ? 0 : o.selectedOption - 1 : o.selectedOption = c.length - 1 } c[o.selectedOption].focus() }, p.getDropdownElement = function () { return o.dropdownMenu }, p.focusToggleElement = function () { o.toggleElement && o.toggleElement[0].focus() }, p.$watch("isOpen", function (e, n) { var u = null, w = !1; if (angular.isDefined(c.dropdownAppendTo)) { var x = d(c.dropdownAppendTo)(p); x && (u = angular.element(x)) } if (angular.isDefined(c.dropdownAppendToBody)) { var y = d(c.dropdownAppendToBody)(p); y !== !1 && (w = !0) } if (w && !u && (u = v), u && o.dropdownMenu && (e ? (u.append(o.dropdownMenu), b.on("$destroy", l)) : (b.off("$destroy", l), l())), u && o.dropdownMenu) { var z, A, B, C = h.positionElements(b, o.dropdownMenu, "bottom-left", !0), D = 0; if (z = { top: C.top + "px", display: e ? "block" : "none" }, A = o.dropdownMenu.hasClass("dropdown-menu-right"), A ? (z.left = "auto", B = h.scrollbarPadding(u), B.heightOverflow && B.scrollbarWidth && (D = B.scrollbarWidth), z.right = window.innerWidth - D - (C.left + b.prop("offsetWidth")) + "px") : (z.left = C.left + "px", z.right = "auto"), !w) { var E = h.offset(u); z.top = C.top - E.top + "px", A ? z.right = window.innerWidth - (C.left - E.left + b.prop("offsetWidth")) + "px" : z.left = C.left - E.left + "px" } o.dropdownMenu.css(z) } var F = u ? u : b, G = u ? q : r, H = F.hasClass(G), I = f.isOnlyOpen(a, u); if (H === !e) { var J; J = u ? I ? "removeClass" : "addClass" : e ? "addClass" : "removeClass", g[J](F, G).then(function () { angular.isDefined(e) && e !== n && t(a, { open: !!e }) }) } if (e) o.dropdownMenuTemplateUrl ? k(o.dropdownMenuTemplateUrl).then(function (a) { m = p.$new(), j(a.trim())(m, function (a) { var b = a; o.dropdownMenu.replaceWith(b), o.dropdownMenu = b, i.on("keydown", f.keybindFilter) }) }) : i.on("keydown", f.keybindFilter), p.focusToggleElement(), f.open(p, b, u); else { if (f.close(p, b, u), o.dropdownMenuTemplateUrl) { m && m.$destroy(); var K = angular.element('<ul class="dropdown-menu"></ul>'); o.dropdownMenu.replaceWith(K), o.dropdownMenu = K } o.selectedOption = null } angular.isFunction(s) && s(a, e) }) }]).directive("uibDropdown", function () { return { controller: "UibDropdownController", link: function (a, b, c, d) { d.init() } } }).directive("uibDropdownMenu", function () { return { restrict: "A", require: "?^uibDropdown", link: function (a, b, c, d) { if (d && !angular.isDefined(c.dropdownNested)) { b.addClass("dropdown-menu"); var e = c.templateUrl; e && (d.dropdownMenuTemplateUrl = e), d.dropdownMenu || (d.dropdownMenu = b) } } } }).directive("uibDropdownToggle", function () { return { require: "?^uibDropdown", link: function (a, b, c, d) { if (d) { b.addClass("dropdown-toggle"), d.toggleElement = b; var e = function (e) { e.preventDefault(), b.hasClass("disabled") || c.disabled || a.$apply(function () { d.toggle() }) }; b.on("click", e), b.attr({ "aria-haspopup": !0, "aria-expanded": !1 }), a.$watch(d.isOpen, function (a) { b.attr("aria-expanded", !!a) }), a.$on("$destroy", function () { b.off("click", e) }) } } } }), angular.module("ui.bootstrap.stackedMap", []).factory("$$stackedMap", function () { return { createNew: function () { var a = []; return { add: function (b, c) { a.push({ key: b, value: c }) }, get: function (b) { for (var c = 0; c < a.length; c++) if (b === a[c].key) return a[c] }, keys: function () { for (var b = [], c = 0; c < a.length; c++) b.push(a[c].key); return b }, top: function () { return a[a.length - 1] }, remove: function (b) { for (var c = -1, d = 0; d < a.length; d++) if (b === a[d].key) { c = d; break } return a.splice(c, 1)[0] }, removeTop: function () { return a.pop() }, length: function () { return a.length } } } } }), angular.module("ui.bootstrap.modal", ["ui.bootstrap.multiMap", "ui.bootstrap.stackedMap", "ui.bootstrap.position"]).provider("$uibResolve", function () { var a = this; this.resolver = null, this.setResolver = function (a) { this.resolver = a }, this.$get = ["$injector", "$q", function (b, c) { var d = a.resolver ? b.get(a.resolver) : null; return { resolve: function (a, e, f, g) { if (d) return d.resolve(a, e, f, g); var h = []; return angular.forEach(a, function (a) { angular.isFunction(a) || angular.isArray(a) ? h.push(c.resolve(b.invoke(a))) : angular.isString(a) ? h.push(c.resolve(b.get(a))) : h.push(c.resolve(a)) }), c.all(h).then(function (b) { var c = {}, d = 0; return angular.forEach(a, function (a, e) { c[e] = b[d++] }), c }) } } }] }).directive("uibModalBackdrop", ["$animate", "$injector", "$uibModalStack", function (a, b, c) { function d(b, d, e) { e.modalInClass && (a.addClass(d, e.modalInClass), b.$on(c.NOW_CLOSING_EVENT, function (c, f) { var g = f(); b.modalOptions.animation ? a.removeClass(d, e.modalInClass).then(g) : g() })) } return { restrict: "A", compile: function (a, b) { return a.addClass(b.backdropClass), d } } }]).directive("uibModalWindow", ["$uibModalStack", "$q", "$animateCss", "$document", function (a, b, c, d) { return { scope: { index: "@" }, restrict: "A", transclude: !0, templateUrl: function (a, b) { return b.templateUrl || "uib/template/modal/window.html" }, link: function (e, f, g) { f.addClass(g.windowTopClass || ""), e.size = g.size, e.close = function (b) { var c = a.getTop(); c && c.value.backdrop && "static" !== c.value.backdrop && b.target === b.currentTarget && (b.preventDefault(), b.stopPropagation(), a.dismiss(c.key, "backdrop click")) }, f.on("click", e.close), e.$isRendered = !0; var h = b.defer(); e.$$postDigest(function () { h.resolve() }), h.promise.then(function () { var h = null; g.modalInClass && (h = c(f, { addClass: g.modalInClass }).start(), e.$on(a.NOW_CLOSING_EVENT, function (a, b) { var d = b(); c(f, { removeClass: g.modalInClass }).start().then(d) })), b.when(h).then(function () { var b = a.getTop(); if (b && a.modalRendered(b.key), !d[0].activeElement || !f[0].contains(d[0].activeElement)) { var c = f[0].querySelector("[autofocus]"); c ? c.focus() : f[0].focus() } }) }) } } }]).directive("uibModalAnimationClass", function () { return { compile: function (a, b) { b.modalAnimation && a.addClass(b.uibModalAnimationClass) } } }).directive("uibModalTransclude", ["$animate", function (a) { return { link: function (b, c, d, e, f) { f(b.$parent, function (b) { c.empty(), a.enter(b, c) }) } } }]).factory("$uibModalStack", ["$animate", "$animateCss", "$document", "$compile", "$rootScope", "$q", "$$multiMap", "$$stackedMap", "$uibPosition", function (a, b, c, d, e, f, g, h, i) { function j(a) { var b = "-"; return a.replace(E, function (a, c) { return (c ? b : "") + a.toLowerCase() }) } function k(a) { return !!(a.offsetWidth || a.offsetHeight || a.getClientRects().length) } function l() { for (var a = -1, b = x.keys(), c = 0; c < b.length; c++) x.get(b[c]).value.backdrop && (a = c); return a > -1 && A > a && (a = A), a } function m(a, b) { var c = x.get(a).value, d = c.appendTo; x.remove(a), B = x.top(), B && (A = parseInt(B.value.modalDomEl.attr("index"), 10)), p(c.modalDomEl, c.modalScope, function () { var b = c.openedClass || w; y.remove(b, a); var e = y.hasKey(b); d.toggleClass(b, e), !e && v && v.heightOverflow && v.scrollbarWidth && (v.originalRight ? d.css({ paddingRight: v.originalRight + "px" }) : d.css({ paddingRight: "" }), v = null), n(!0) }, c.closedDeferred), o(), b && b.focus ? b.focus() : d.focus && d.focus() } function n(a) { var b; x.length() > 0 && (b = x.top().value, b.modalDomEl.toggleClass(b.windowTopClass || "", a)) } function o() { if (t && -1 === l()) { var a = u; p(t, u, function () { a = null }), t = void 0, u = void 0 } } function p(b, c, d, e) { function g() { g.done || (g.done = !0, a.leave(b).then(function () { d && d(), b.remove(), e && e.resolve() }), c.$destroy()) } var h, i = null, j = function () { return h || (h = f.defer(), i = h.promise), function () { h.resolve() } }; return c.$broadcast(z.NOW_CLOSING_EVENT, j), f.when(i).then(g) } function q(a) { if (a.isDefaultPrevented()) return a; var b = x.top(); if (b) switch (a.which) { case 27: b.value.keyboard && (a.preventDefault(), e.$apply(function () { z.dismiss(b.key, "escape key press") })); break; case 9: var c = z.loadFocusElementList(b), d = !1; a.shiftKey ? (z.isFocusInFirstItem(a, c) || z.isModalFocused(a, b)) && (d = z.focusLastFocusableElement(c)) : z.isFocusInLastItem(a, c) && (d = z.focusFirstFocusableElement(c)), d && (a.preventDefault(), a.stopPropagation()) } } function r(a, b, c) { return !a.value.modalScope.$broadcast("modal.closing", b, c).defaultPrevented } function s() { Array.prototype.forEach.call(document.querySelectorAll("[" + C + "]"), function (a) { var b = parseInt(a.getAttribute(C), 10), c = b - 1; a.setAttribute(C, c), c || (a.removeAttribute(C), a.removeAttribute("aria-hidden")) }) } var t, u, v, w = "modal-open", x = h.createNew(), y = g.createNew(), z = { NOW_CLOSING_EVENT: "modal.stack.now-closing" }, A = 0, B = null, C = "data-bootstrap-modal-aria-hidden-count", D = "a[href], area[href], input:not([disabled]):not([tabindex='-1']), button:not([disabled]):not([tabindex='-1']),select:not([disabled]):not([tabindex='-1']), textarea:not([disabled]):not([tabindex='-1']), iframe, object, embed, *[tabindex]:not([tabindex='-1']), *[contenteditable=true]", E = /[A-Z]/g; return e.$watch(l, function (a) { u && (u.index = a) }), c.on("keydown", q), e.$on("$destroy", function () { c.off("keydown", q) }), z.open = function (b, f) { function g(a) { function b(a) { var b = a.parent() ? a.parent().children() : []; return Array.prototype.filter.call(b, function (b) { return b !== a[0] }) } if (a && "BODY" !== a[0].tagName) return b(a).forEach(function (a) { var b = "true" === a.getAttribute("aria-hidden"), c = parseInt(a.getAttribute(C), 10); c || (c = b ? 1 : 0), a.setAttribute(C, c + 1), a.setAttribute("aria-hidden", "true") }), g(a.parent()) } var h = c[0].activeElement, k = f.openedClass || w; n(!1), B = x.top(), x.add(b, { deferred: f.deferred, renderDeferred: f.renderDeferred, closedDeferred: f.closedDeferred, modalScope: f.scope, backdrop: f.backdrop, keyboard: f.keyboard, openedClass: f.openedClass, windowTopClass: f.windowTopClass, animation: f.animation, appendTo: f.appendTo }), y.put(k, b); var m = f.appendTo, o = l(); o >= 0 && !t && (u = e.$new(!0), u.modalOptions = f, u.index = o, t = angular.element('<div uib-modal-backdrop="modal-backdrop"></div>'), t.attr({ "class": "modal-backdrop", "ng-style": "{'z-index': 1040 + (index && 1 || 0) + index*10}", "uib-modal-animation-class": "fade", "modal-in-class": "in" }), f.backdropClass && t.addClass(f.backdropClass), f.animation && t.attr("modal-animation", "true"), d(t)(u), a.enter(t, m), i.isScrollable(m) && (v = i.scrollbarPadding(m), v.heightOverflow && v.scrollbarWidth && m.css({ paddingRight: v.right + "px" }))); var p; f.component ? (p = document.createElement(j(f.component.name)), p = angular.element(p), p.attr({ resolve: "$resolve", "modal-instance": "$uibModalInstance", close: "$close($value)", dismiss: "$dismiss($value)" })) : p = f.content, A = B ? parseInt(B.value.modalDomEl.attr("index"), 10) + 1 : 0; var q = angular.element('<div uib-modal-window="modal-window"></div>'); q.attr({ "class": "modal", "template-url": f.windowTemplateUrl, "window-top-class": f.windowTopClass, role: "dialog", "aria-labelledby": f.ariaLabelledBy, "aria-describedby": f.ariaDescribedBy, size: f.size, index: A, animate: "animate", "ng-style": "{'z-index': 1050 + $$topModalIndex*10, display: 'block'}", tabindex: -1, "uib-modal-animation-class": "fade", "modal-in-class": "in" }).append(p), f.windowClass && q.addClass(f.windowClass), f.animation && q.attr("modal-animation", "true"), m.addClass(k), f.scope && (f.scope.$$topModalIndex = A), a.enter(d(q)(f.scope), m), x.top().value.modalDomEl = q, x.top().value.modalOpener = h, g(q) }, z.close = function (a, b) { var c = x.get(a); return s(), c && r(c, b, !0) ? (c.value.modalScope.$$uibDestructionScheduled = !0, c.value.deferred.resolve(b), m(a, c.value.modalOpener), !0) : !c }, z.dismiss = function (a, b) { var c = x.get(a); return s(), c && r(c, b, !1) ? (c.value.modalScope.$$uibDestructionScheduled = !0, c.value.deferred.reject(b), m(a, c.value.modalOpener), !0) : !c }, z.dismissAll = function (a) { for (var b = this.getTop() ; b && this.dismiss(b.key, a) ;) b = this.getTop() }, z.getTop = function () { return x.top() }, z.modalRendered = function (a) { var b = x.get(a); b && b.value.renderDeferred.resolve() }, z.focusFirstFocusableElement = function (a) { return a.length > 0 ? (a[0].focus(), !0) : !1 }, z.focusLastFocusableElement = function (a) { return a.length > 0 ? (a[a.length - 1].focus(), !0) : !1 }, z.isModalFocused = function (a, b) { if (a && b) { var c = b.value.modalDomEl; if (c && c.length) return (a.target || a.srcElement) === c[0] } return !1 }, z.isFocusInFirstItem = function (a, b) { return b.length > 0 ? (a.target || a.srcElement) === b[0] : !1 }, z.isFocusInLastItem = function (a, b) { return b.length > 0 ? (a.target || a.srcElement) === b[b.length - 1] : !1 }, z.loadFocusElementList = function (a) { if (a) { var b = a.value.modalDomEl; if (b && b.length) { var c = b[0].querySelectorAll(D); return c ? Array.prototype.filter.call(c, function (a) { return k(a) }) : c } } }, z }]).provider("$uibModal", function () { var a = { options: { animation: !0, backdrop: !0, keyboard: !0 }, $get: ["$rootScope", "$q", "$document", "$templateRequest", "$controller", "$uibResolve", "$uibModalStack", function (b, c, d, e, f, g, h) { function i(a) { return a.template ? c.when(a.template) : e(angular.isFunction(a.templateUrl) ? a.templateUrl() : a.templateUrl) } var j = {}, k = null; return j.getPromiseChain = function () { return k }, j.open = function (e) { function j() { return q } var l = c.defer(), m = c.defer(), n = c.defer(), o = c.defer(), p = { result: l.promise, opened: m.promise, closed: n.promise, rendered: o.promise, close: function (a) { return h.close(p, a) }, dismiss: function (a) { return h.dismiss(p, a) } }; if (e = angular.extend({}, a.options, e), e.resolve = e.resolve || {}, e.appendTo = e.appendTo || d.find("body").eq(0), !e.appendTo.length) throw new Error("appendTo element not found. Make sure that the element passed is in DOM."); if (!e.component && !e.template && !e.templateUrl) throw new Error("One of component or template or templateUrl options is required."); var q; q = e.component ? c.when(g.resolve(e.resolve, {}, null, null)) : c.all([i(e), g.resolve(e.resolve, {}, null, null)]); var r; return r = k = c.all([k]).then(j, j).then(function (a) { function c(b, c, d, e) { b.$scope = g, b.$scope.$resolve = {}, d ? b.$scope.$uibModalInstance = p : b.$uibModalInstance = p; var f = c ? a[1] : a; angular.forEach(f, function (a, c) { e && (b[c] = a), b.$scope.$resolve[c] = a }) } var d = e.scope || b, g = d.$new(); g.$close = p.close, g.$dismiss = p.dismiss, g.$on("$destroy", function () { g.$$uibDestructionScheduled || g.$dismiss("$uibUnscheduledDestruction") }); var i, j, k = { scope: g, deferred: l, renderDeferred: o, closedDeferred: n, animation: e.animation, backdrop: e.backdrop, keyboard: e.keyboard, backdropClass: e.backdropClass, windowTopClass: e.windowTopClass, windowClass: e.windowClass, windowTemplateUrl: e.windowTemplateUrl, ariaLabelledBy: e.ariaLabelledBy, ariaDescribedBy: e.ariaDescribedBy, size: e.size, openedClass: e.openedClass, appendTo: e.appendTo }, q = {}, r = {}; e.component ? (c(q, !1, !0, !1), q.name = e.component, k.component = q) : e.controller && (c(r, !0, !1, !0), j = f(e.controller, r, !0, e.controllerAs), e.controllerAs && e.bindToController && (i = j.instance, i.$close = g.$close, i.$dismiss = g.$dismiss, angular.extend(i, { $resolve: r.$scope.$resolve }, d)), i = j(), angular.isFunction(i.$onInit) && i.$onInit()), e.component || (k.content = a[0]), h.open(p, k), m.resolve(!0) }, function (a) { m.reject(a), l.reject(a) })["finally"](function () { k === r && (k = null) }), p }, j }] }; return a }), angular.module("ui.bootstrap.paging", []).factory("uibPaging", ["$parse", function (a) { return { create: function (b, c, d) { b.setNumPages = d.numPages ? a(d.numPages).assign : angular.noop, b.ngModelCtrl = { $setViewValue: angular.noop }, b._watchers = [], b.init = function (a, e) { b.ngModelCtrl = a, b.config = e, a.$render = function () { b.render() }, d.itemsPerPage ? b._watchers.push(c.$parent.$watch(d.itemsPerPage, function (a) { b.itemsPerPage = parseInt(a, 10), c.totalPages = b.calculateTotalPages(), b.updatePage() })) : b.itemsPerPage = e.itemsPerPage, c.$watch("totalItems", function (a, d) { (angular.isDefined(a) || a !== d) && (c.totalPages = b.calculateTotalPages(), b.updatePage()) }) }, b.calculateTotalPages = function () { var a = b.itemsPerPage < 1 ? 1 : Math.ceil(c.totalItems / b.itemsPerPage); return Math.max(a || 0, 1) }, b.render = function () { c.page = parseInt(b.ngModelCtrl.$viewValue, 10) || 1 }, c.selectPage = function (a, d) { d && d.preventDefault(); var e = !c.ngDisabled || !d; e && c.page !== a && a > 0 && a <= c.totalPages && (d && d.target && d.target.blur(), b.ngModelCtrl.$setViewValue(a), b.ngModelCtrl.$render()) }, c.getText = function (a) { return c[a + "Text"] || b.config[a + "Text"] }, c.noPrevious = function () { return 1 === c.page }, c.noNext = function () { return c.page === c.totalPages }, b.updatePage = function () { b.setNumPages(c.$parent, c.totalPages), c.page > c.totalPages ? c.selectPage(c.totalPages) : b.ngModelCtrl.$render() }, c.$on("$destroy", function () { for (; b._watchers.length;) b._watchers.shift()() }) } } }]), angular.module("ui.bootstrap.pager", ["ui.bootstrap.paging", "ui.bootstrap.tabindex"]).controller("UibPagerController", ["$scope", "$attrs", "uibPaging", "uibPagerConfig", function (a, b, c, d) {
     a.align = angular.isDefined(b.align) ? a.$parent.$eval(b.align) : d.align, c.create(this, a, b)
 }]).constant("uibPagerConfig", { itemsPerPage: 10, previousText: "« Previous", nextText: "Next »", align: !0 }).directive("uibPager", ["uibPagerConfig", function (a) { return { scope: { totalItems: "=", previousText: "@", nextText: "@", ngDisabled: "=" }, require: ["uibPager", "?ngModel"], restrict: "A", controller: "UibPagerController", controllerAs: "pager", templateUrl: function (a, b) { return b.templateUrl || "uib/template/pager/pager.html" }, link: function (b, c, d, e) { c.addClass("pager"); var f = e[0], g = e[1]; g && f.init(g, a) } } }]), angular.module("ui.bootstrap.pagination", ["ui.bootstrap.paging", "ui.bootstrap.tabindex"]).controller("UibPaginationController", ["$scope", "$attrs", "$parse", "uibPaging", "uibPaginationConfig", function (a, b, c, d, e) { function f(a, b, c) { return { number: a, text: b, active: c } } function g(a, b) { var c = [], d = 1, e = b, g = angular.isDefined(i) && b > i; g && (j ? (d = Math.max(a - Math.floor(i / 2), 1), e = d + i - 1, e > b && (e = b, d = e - i + 1)) : (d = (Math.ceil(a / i) - 1) * i + 1, e = Math.min(d + i - 1, b))); for (var h = d; e >= h; h++) { var n = f(h, m(h), h === a); c.push(n) } if (g && i > 0 && (!j || k || l)) { if (d > 1) { if (!l || d > 3) { var o = f(d - 1, "...", !1); c.unshift(o) } if (l) { if (3 === d) { var p = f(2, "2", !1); c.unshift(p) } var q = f(1, "1", !1); c.unshift(q) } } if (b > e) { if (!l || b - 2 > e) { var r = f(e + 1, "...", !1); c.push(r) } if (l) { if (e === b - 2) { var s = f(b - 1, b - 1, !1); c.push(s) } var t = f(b, b, !1); c.push(t) } } } return c } var h = this, i = angular.isDefined(b.maxSize) ? a.$parent.$eval(b.maxSize) : e.maxSize, j = angular.isDefined(b.rotate) ? a.$parent.$eval(b.rotate) : e.rotate, k = angular.isDefined(b.forceEllipses) ? a.$parent.$eval(b.forceEllipses) : e.forceEllipses, l = angular.isDefined(b.boundaryLinkNumbers) ? a.$parent.$eval(b.boundaryLinkNumbers) : e.boundaryLinkNumbers, m = angular.isDefined(b.pageLabel) ? function (c) { return a.$parent.$eval(b.pageLabel, { $page: c }) } : angular.identity; a.boundaryLinks = angular.isDefined(b.boundaryLinks) ? a.$parent.$eval(b.boundaryLinks) : e.boundaryLinks, a.directionLinks = angular.isDefined(b.directionLinks) ? a.$parent.$eval(b.directionLinks) : e.directionLinks, b.$set("role", "menu"), d.create(this, a, b), b.maxSize && h._watchers.push(a.$parent.$watch(c(b.maxSize), function (a) { i = parseInt(a, 10), h.render() })); var n = this.render; this.render = function () { n(), a.page > 0 && a.page <= a.totalPages && (a.pages = g(a.page, a.totalPages)) } }]).constant("uibPaginationConfig", { itemsPerPage: 10, boundaryLinks: !1, boundaryLinkNumbers: !1, directionLinks: !0, firstText: "First", previousText: "Previous", nextText: "Next", lastText: "Last", rotate: !0, forceEllipses: !1 }).directive("uibPagination", ["$parse", "uibPaginationConfig", function (a, b) { return { scope: { totalItems: "=", firstText: "@", previousText: "@", nextText: "@", lastText: "@", ngDisabled: "=" }, require: ["uibPagination", "?ngModel"], restrict: "A", controller: "UibPaginationController", controllerAs: "pagination", templateUrl: function (a, b) { return b.templateUrl || "uib/template/pagination/pagination.html" }, link: function (a, c, d, e) { c.addClass("pagination"); var f = e[0], g = e[1]; g && f.init(g, b) } } }]), angular.module("ui.bootstrap.tooltip", ["ui.bootstrap.position", "ui.bootstrap.stackedMap"]).provider("$uibTooltip", function () { function a(a) { var b = /[A-Z]/g, c = "-"; return a.replace(b, function (a, b) { return (b ? c : "") + a.toLowerCase() }) } var b = { placement: "top", placementClassPrefix: "", animation: !0, popupDelay: 0, popupCloseDelay: 0, useContentExp: !1 }, c = { mouseenter: "mouseleave", click: "click", outsideClick: "outsideClick", focus: "blur", none: "" }, d = {}; this.options = function (a) { angular.extend(d, a) }, this.setTriggers = function (a) { angular.extend(c, a) }, this.$get = ["$window", "$compile", "$timeout", "$document", "$uibPosition", "$interpolate", "$rootScope", "$parse", "$$stackedMap", function (e, f, g, h, i, j, k, l, m) { function n(a) { if (27 === a.which) { var b = o.top(); b && (b.value.close(), b = null) } } var o = m.createNew(); return h.on("keyup", n), k.$on("$destroy", function () { h.off("keyup", n) }), function (e, k, m, n) { function p(a) { var b = (a || n.trigger || m).split(" "), d = b.map(function (a) { return c[a] || a }); return { show: b, hide: d } } n = angular.extend({}, b, d, n); var q = a(e), r = j.startSymbol(), s = j.endSymbol(), t = "<div " + q + '-popup uib-title="' + r + "title" + s + '" ' + (n.useContentExp ? 'content-exp="contentExp()" ' : 'content="' + r + "content" + s + '" ') + 'origin-scope="origScope" class="uib-position-measure ' + k + '" tooltip-animation-class="fade"uib-tooltip-classes ng-class="{ in: isOpen }" ></div>'; return { compile: function (a, b) { var c = f(t); return function (a, b, d, f) { function j() { P.isOpen ? q() : m() } function m() { O && !a.$eval(d[k + "Enable"]) || (u(), x(), P.popupDelay ? H || (H = g(r, P.popupDelay, !1)) : r()) } function q() { s(), P.popupCloseDelay ? I || (I = g(t, P.popupCloseDelay, !1)) : t() } function r() { return s(), u(), P.content ? (v(), void P.$evalAsync(function () { P.isOpen = !0, y(!0), U() })) : angular.noop } function s() { H && (g.cancel(H), H = null), J && (g.cancel(J), J = null) } function t() { P && P.$evalAsync(function () { P && (P.isOpen = !1, y(!1), P.animation ? G || (G = g(w, 150, !1)) : w()) }) } function u() { I && (g.cancel(I), I = null), G && (g.cancel(G), G = null) } function v() { E || (F = P.$new(), E = c(F, function (a) { M ? h.find("body").append(a) : b.after(a) }), o.add(P, { close: t }), z()) } function w() { s(), u(), A(), E && (E.remove(), E = null, K && g.cancel(K)), o.remove(P), F && (F.$destroy(), F = null) } function x() { P.title = d[k + "Title"], S ? P.content = S(a) : P.content = d[e], P.popupClass = d[k + "Class"], P.placement = angular.isDefined(d[k + "Placement"]) ? d[k + "Placement"] : n.placement; var b = i.parsePlacement(P.placement); L = b[1] ? b[0] + "-" + b[1] : b[0]; var c = parseInt(d[k + "PopupDelay"], 10), f = parseInt(d[k + "PopupCloseDelay"], 10); P.popupDelay = isNaN(c) ? n.popupDelay : c, P.popupCloseDelay = isNaN(f) ? n.popupCloseDelay : f } function y(b) { R && angular.isFunction(R.assign) && R.assign(a, b) } function z() { T.length = 0, S ? (T.push(a.$watch(S, function (a) { P.content = a, !a && P.isOpen && t() })), T.push(F.$watch(function () { Q || (Q = !0, F.$$postDigest(function () { Q = !1, P && P.isOpen && U() })) }))) : T.push(d.$observe(e, function (a) { P.content = a, !a && P.isOpen ? t() : U() })), T.push(d.$observe(k + "Title", function (a) { P.title = a, P.isOpen && U() })), T.push(d.$observe(k + "Placement", function (a) { P.placement = a ? a : n.placement, P.isOpen && U() })) } function A() { T.length && (angular.forEach(T, function (a) { a() }), T.length = 0) } function B(a) { P && P.isOpen && E && (b[0].contains(a.target) || E[0].contains(a.target) || q()) } function C(a) { 27 === a.which && q() } function D() { var c = [], e = [], f = a.$eval(d[k + "Trigger"]); V(), angular.isObject(f) ? (Object.keys(f).forEach(function (a) { c.push(a), e.push(f[a]) }), N = { show: c, hide: e }) : N = p(f), "none" !== N.show && N.show.forEach(function (a, c) { "outsideClick" === a ? (b.on("click", j), h.on("click", B)) : a === N.hide[c] ? b.on(a, j) : a && (b.on(a, m), b.on(N.hide[c], q)), b.on("keypress", C) }) } var E, F, G, H, I, J, K, L, M = angular.isDefined(n.appendToBody) ? n.appendToBody : !1, N = p(void 0), O = angular.isDefined(d[k + "Enable"]), P = a.$new(!0), Q = !1, R = angular.isDefined(d[k + "IsOpen"]) ? l(d[k + "IsOpen"]) : !1, S = n.useContentExp ? l(d[e]) : !1, T = [], U = function () { E && E.html() && (J || (J = g(function () { var a = i.positionElements(b, E, P.placement, M), c = angular.isDefined(E.offsetHeight) ? E.offsetHeight : E.prop("offsetHeight"), d = M ? i.offset(b) : i.position(b); E.css({ top: a.top + "px", left: a.left + "px" }); var e = a.placement.split("-"); E.hasClass(e[0]) || (E.removeClass(L.split("-")[0]), E.addClass(e[0])), E.hasClass(n.placementClassPrefix + a.placement) || (E.removeClass(n.placementClassPrefix + L), E.addClass(n.placementClassPrefix + a.placement)), K = g(function () { var a = angular.isDefined(E.offsetHeight) ? E.offsetHeight : E.prop("offsetHeight"), b = i.adjustTop(e, d, c, a); b && E.css(b), K = null }, 0, !1), E.hasClass("uib-position-measure") ? (i.positionArrow(E, a.placement), E.removeClass("uib-position-measure")) : L !== a.placement && i.positionArrow(E, a.placement), L = a.placement, J = null }, 0, !1))) }; P.origScope = a, P.isOpen = !1, P.contentExp = function () { return P.content }, d.$observe("disabled", function (a) { a && s(), a && P.isOpen && t() }), R && a.$watch(R, function (a) { P && !a === P.isOpen && j() }); var V = function () { N.show.forEach(function (a) { "outsideClick" === a ? b.off("click", j) : (b.off(a, m), b.off(a, j)), b.off("keypress", C) }), N.hide.forEach(function (a) { "outsideClick" === a ? h.off("click", B) : b.off(a, q) }) }; D(); var W = a.$eval(d[k + "Animation"]); P.animation = angular.isDefined(W) ? !!W : n.animation; var X, Y = k + "AppendToBody"; X = Y in d && void 0 === d[Y] ? !0 : a.$eval(d[Y]), M = angular.isDefined(X) ? X : M, a.$on("$destroy", function () { V(), w(), P = null }) } } } } }] }).directive("uibTooltipTemplateTransclude", ["$animate", "$sce", "$compile", "$templateRequest", function (a, b, c, d) { return { link: function (e, f, g) { var h, i, j, k = e.$eval(g.tooltipTemplateTranscludeScope), l = 0, m = function () { i && (i.remove(), i = null), h && (h.$destroy(), h = null), j && (a.leave(j).then(function () { i = null }), i = j, j = null) }; e.$watch(b.parseAsResourceUrl(g.uibTooltipTemplateTransclude), function (b) { var g = ++l; b ? (d(b, !0).then(function (d) { if (g === l) { var e = k.$new(), i = d, n = c(i)(e, function (b) { m(), a.enter(b, f) }); h = e, j = n, h.$emit("$includeContentLoaded", b) } }, function () { g === l && (m(), e.$emit("$includeContentError", b)) }), e.$emit("$includeContentRequested", b)) : m() }), e.$on("$destroy", m) } } }]).directive("uibTooltipClasses", ["$uibPosition", function (a) { return { restrict: "A", link: function (b, c, d) { if (b.placement) { var e = a.parsePlacement(b.placement); c.addClass(e[0]) } b.popupClass && c.addClass(b.popupClass), b.animation && c.addClass(d.tooltipAnimationClass) } } }]).directive("uibTooltipPopup", function () { return { restrict: "A", scope: { content: "@" }, templateUrl: "uib/template/tooltip/tooltip-popup.html" } }).directive("uibTooltip", ["$uibTooltip", function (a) { return a("uibTooltip", "tooltip", "mouseenter") }]).directive("uibTooltipTemplatePopup", function () { return { restrict: "A", scope: { contentExp: "&", originScope: "&" }, templateUrl: "uib/template/tooltip/tooltip-template-popup.html" } }).directive("uibTooltipTemplate", ["$uibTooltip", function (a) { return a("uibTooltipTemplate", "tooltip", "mouseenter", { useContentExp: !0 }) }]).directive("uibTooltipHtmlPopup", function () { return { restrict: "A", scope: { contentExp: "&" }, templateUrl: "uib/template/tooltip/tooltip-html-popup.html" } }).directive("uibTooltipHtml", ["$uibTooltip", function (a) { return a("uibTooltipHtml", "tooltip", "mouseenter", { useContentExp: !0 }) }]), angular.module("ui.bootstrap.popover", ["ui.bootstrap.tooltip"]).directive("uibPopoverTemplatePopup", function () { return { restrict: "A", scope: { uibTitle: "@", contentExp: "&", originScope: "&" }, templateUrl: "uib/template/popover/popover-template.html" } }).directive("uibPopoverTemplate", ["$uibTooltip", function (a) { return a("uibPopoverTemplate", "popover", "click", { useContentExp: !0 }) }]).directive("uibPopoverHtmlPopup", function () { return { restrict: "A", scope: { contentExp: "&", uibTitle: "@" }, templateUrl: "uib/template/popover/popover-html.html" } }).directive("uibPopoverHtml", ["$uibTooltip", function (a) { return a("uibPopoverHtml", "popover", "click", { useContentExp: !0 }) }]).directive("uibPopoverPopup", function () { return { restrict: "A", scope: { uibTitle: "@", content: "@" }, templateUrl: "uib/template/popover/popover.html" } }).directive("uibPopover", ["$uibTooltip", function (a) { return a("uibPopover", "popover", "click") }]), angular.module("ui.bootstrap.progressbar", []).constant("uibProgressConfig", { animate: !0, max: 100 }).controller("UibProgressController", ["$scope", "$attrs", "uibProgressConfig", function (a, b, c) { function d() { return angular.isDefined(a.maxParam) ? a.maxParam : c.max } var e = this, f = angular.isDefined(b.animate) ? a.$parent.$eval(b.animate) : c.animate; this.bars = [], a.max = d(), this.addBar = function (a, b, c) { f || b.css({ transition: "none" }), this.bars.push(a), a.max = d(), a.title = c && angular.isDefined(c.title) ? c.title : "progressbar", a.$watch("value", function (b) { a.recalculatePercentage() }), a.recalculatePercentage = function () { var b = e.bars.reduce(function (a, b) { return b.percent = +(100 * b.value / b.max).toFixed(2), a + b.percent }, 0); b > 100 && (a.percent -= b - 100) }, a.$on("$destroy", function () { b = null, e.removeBar(a) }) }, this.removeBar = function (a) { this.bars.splice(this.bars.indexOf(a), 1), this.bars.forEach(function (a) { a.recalculatePercentage() }) }, a.$watch("maxParam", function (a) { e.bars.forEach(function (a) { a.max = d(), a.recalculatePercentage() }) }) }]).directive("uibProgress", function () { return { replace: !0, transclude: !0, controller: "UibProgressController", require: "uibProgress", scope: { maxParam: "=?max" }, templateUrl: "uib/template/progressbar/progress.html" } }).directive("uibBar", function () { return { replace: !0, transclude: !0, require: "^uibProgress", scope: { value: "=", type: "@" }, templateUrl: "uib/template/progressbar/bar.html", link: function (a, b, c, d) { d.addBar(a, b, c) } } }).directive("uibProgressbar", function () { return { replace: !0, transclude: !0, controller: "UibProgressController", scope: { value: "=", maxParam: "=?max", type: "@" }, templateUrl: "uib/template/progressbar/progressbar.html", link: function (a, b, c, d) { d.addBar(a, angular.element(b.children()[0]), { title: c.title }) } } }), angular.module("ui.bootstrap.rating", []).constant("uibRatingConfig", { max: 5, stateOn: null, stateOff: null, enableReset: !0, titles: ["one", "two", "three", "four", "five"] }).controller("UibRatingController", ["$scope", "$attrs", "uibRatingConfig", function (a, b, c) { var d = { $setViewValue: angular.noop }, e = this; this.init = function (e) { d = e, d.$render = this.render, d.$formatters.push(function (a) { return angular.isNumber(a) && a << 0 !== a && (a = Math.round(a)), a }), this.stateOn = angular.isDefined(b.stateOn) ? a.$parent.$eval(b.stateOn) : c.stateOn, this.stateOff = angular.isDefined(b.stateOff) ? a.$parent.$eval(b.stateOff) : c.stateOff, this.enableReset = angular.isDefined(b.enableReset) ? a.$parent.$eval(b.enableReset) : c.enableReset; var f = angular.isDefined(b.titles) ? a.$parent.$eval(b.titles) : c.titles; this.titles = angular.isArray(f) && f.length > 0 ? f : c.titles; var g = angular.isDefined(b.ratingStates) ? a.$parent.$eval(b.ratingStates) : new Array(angular.isDefined(b.max) ? a.$parent.$eval(b.max) : c.max); a.range = this.buildTemplateObjects(g) }, this.buildTemplateObjects = function (a) { for (var b = 0, c = a.length; c > b; b++) a[b] = angular.extend({ index: b }, { stateOn: this.stateOn, stateOff: this.stateOff, title: this.getTitle(b) }, a[b]); return a }, this.getTitle = function (a) { return a >= this.titles.length ? a + 1 : this.titles[a] }, a.rate = function (b) { if (!a.readonly && b >= 0 && b <= a.range.length) { var c = e.enableReset && d.$viewValue === b ? 0 : b; d.$setViewValue(c), d.$render() } }, a.enter = function (b) { a.readonly || (a.value = b), a.onHover({ value: b }) }, a.reset = function () { a.value = d.$viewValue, a.onLeave() }, a.onKeydown = function (b) { /(37|38|39|40)/.test(b.which) && (b.preventDefault(), b.stopPropagation(), a.rate(a.value + (38 === b.which || 39 === b.which ? 1 : -1))) }, this.render = function () { a.value = d.$viewValue, a.title = e.getTitle(a.value - 1) } }]).directive("uibRating", function () { return { require: ["uibRating", "ngModel"], restrict: "A", scope: { readonly: "=?readOnly", onHover: "&", onLeave: "&" }, controller: "UibRatingController", templateUrl: "uib/template/rating/rating.html", link: function (a, b, c, d) { var e = d[0], f = d[1]; e.init(f) } } }), angular.module("ui.bootstrap.tabs", []).controller("UibTabsetController", ["$scope", function (a) { function b(a) { for (var b = 0; b < d.tabs.length; b++) if (d.tabs[b].index === a) return b } var c, d = this; d.tabs = [], d.select = function (a, f) { if (!e) { var g = b(c), h = d.tabs[g]; if (h) { if (h.tab.onDeselect({ $event: f, $selectedIndex: a }), f && f.isDefaultPrevented()) return; h.tab.active = !1 } var i = d.tabs[a]; i ? (i.tab.onSelect({ $event: f }), i.tab.active = !0, d.active = i.index, c = i.index) : !i && angular.isDefined(c) && (d.active = null, c = null) } }, d.addTab = function (a) { if (d.tabs.push({ tab: a, index: a.index }), d.tabs.sort(function (a, b) { return a.index > b.index ? 1 : a.index < b.index ? -1 : 0 }), a.index === d.active || !angular.isDefined(d.active) && 1 === d.tabs.length) { var c = b(a.index); d.select(c) } }, d.removeTab = function (a) { for (var b, c = 0; c < d.tabs.length; c++) if (d.tabs[c].tab === a) { b = c; break } if (d.tabs[b].index === d.active) { var e = b === d.tabs.length - 1 ? b - 1 : b + 1 % d.tabs.length; d.select(e) } d.tabs.splice(b, 1) }, a.$watch("tabset.active", function (a) { angular.isDefined(a) && a !== c && d.select(b(a)) }); var e; a.$on("$destroy", function () { e = !0 }) }]).directive("uibTabset", function () { return { transclude: !0, replace: !0, scope: {}, bindToController: { active: "=?", type: "@" }, controller: "UibTabsetController", controllerAs: "tabset", templateUrl: function (a, b) { return b.templateUrl || "uib/template/tabs/tabset.html" }, link: function (a, b, c) { a.vertical = angular.isDefined(c.vertical) ? a.$parent.$eval(c.vertical) : !1, a.justified = angular.isDefined(c.justified) ? a.$parent.$eval(c.justified) : !1 } } }).directive("uibTab", ["$parse", function (a) { return { require: "^uibTabset", replace: !0, templateUrl: function (a, b) { return b.templateUrl || "uib/template/tabs/tab.html" }, transclude: !0, scope: { heading: "@", index: "=?", classes: "@?", onSelect: "&select", onDeselect: "&deselect" }, controller: function () { }, controllerAs: "tab", link: function (b, c, d, e, f) { b.disabled = !1, d.disable && b.$parent.$watch(a(d.disable), function (a) { b.disabled = !!a }), angular.isUndefined(d.index) && (e.tabs && e.tabs.length ? b.index = Math.max.apply(null, e.tabs.map(function (a) { return a.index })) + 1 : b.index = 0), angular.isUndefined(d.classes) && (b.classes = ""), b.select = function (a) { if (!b.disabled) { for (var c, d = 0; d < e.tabs.length; d++) if (e.tabs[d].tab === b) { c = d; break } e.select(c, a) } }, e.addTab(b), b.$on("$destroy", function () { e.removeTab(b) }), b.$transcludeFn = f } } }]).directive("uibTabHeadingTransclude", function () { return { restrict: "A", require: "^uibTab", link: function (a, b) { a.$watch("headingElement", function (a) { a && (b.html(""), b.append(a)) }) } } }).directive("uibTabContentTransclude", function () { function a(a) { return a.tagName && (a.hasAttribute("uib-tab-heading") || a.hasAttribute("data-uib-tab-heading") || a.hasAttribute("x-uib-tab-heading") || "uib-tab-heading" === a.tagName.toLowerCase() || "data-uib-tab-heading" === a.tagName.toLowerCase() || "x-uib-tab-heading" === a.tagName.toLowerCase() || "uib:tab-heading" === a.tagName.toLowerCase()) } return { restrict: "A", require: "^uibTabset", link: function (b, c, d) { var e = b.$eval(d.uibTabContentTransclude).tab; e.$transcludeFn(e.$parent, function (b) { angular.forEach(b, function (b) { a(b) ? e.headingElement = b : c.append(b) }) }) } } }), angular.module("ui.bootstrap.timepicker", []).constant("uibTimepickerConfig", { hourStep: 1, minuteStep: 1, secondStep: 1, showMeridian: !0, showSeconds: !1, meridians: null, readonlyInput: !1, mousewheel: !0, arrowkeys: !0, showSpinners: !0, templateUrl: "uib/template/timepicker/timepicker.html" }).controller("UibTimepickerController", ["$scope", "$element", "$attrs", "$parse", "$log", "$locale", "uibTimepickerConfig", function (a, b, c, d, e, f, g) { function h() { var b = +a.hours, c = a.showMeridian ? b > 0 && 13 > b : b >= 0 && 24 > b; return c && "" !== a.hours ? (a.showMeridian && (12 === b && (b = 0), a.meridian === y[1] && (b += 12)), b) : void 0 } function i() { var b = +a.minutes, c = b >= 0 && 60 > b; return c && "" !== a.minutes ? b : void 0 } function j() { var b = +a.seconds; return b >= 0 && 60 > b ? b : void 0 } function k(a, b) { return null === a ? "" : angular.isDefined(a) && a.toString().length < 2 && !b ? "0" + a : a.toString() } function l(a) { m(), x.$setViewValue(new Date(v)), n(a) } function m() { s && s.$setValidity("hours", !0), t && t.$setValidity("minutes", !0), u && u.$setValidity("seconds", !0), x.$setValidity("time", !0), a.invalidHours = !1, a.invalidMinutes = !1, a.invalidSeconds = !1 } function n(b) { if (x.$modelValue) { var c = v.getHours(), d = v.getMinutes(), e = v.getSeconds(); a.showMeridian && (c = 0 === c || 12 === c ? 12 : c % 12), a.hours = "h" === b ? c : k(c, !z), "m" !== b && (a.minutes = k(d)), a.meridian = v.getHours() < 12 ? y[0] : y[1], "s" !== b && (a.seconds = k(e)), a.meridian = v.getHours() < 12 ? y[0] : y[1] } else a.hours = null, a.minutes = null, a.seconds = null, a.meridian = y[0] } function o(a) { v = q(v, a), l() } function p(a, b) { return q(a, 60 * b) } function q(a, b) { var c = new Date(a.getTime() + 1e3 * b), d = new Date(a); return d.setHours(c.getHours(), c.getMinutes(), c.getSeconds()), d } function r() { return (null === a.hours || "" === a.hours) && (null === a.minutes || "" === a.minutes) && (!a.showSeconds || a.showSeconds && (null === a.seconds || "" === a.seconds)) } var s, t, u, v = new Date, w = [], x = { $setViewValue: angular.noop }, y = angular.isDefined(c.meridians) ? a.$parent.$eval(c.meridians) : g.meridians || f.DATETIME_FORMATS.AMPMS, z = angular.isDefined(c.padHours) ? a.$parent.$eval(c.padHours) : !0; a.tabindex = angular.isDefined(c.tabindex) ? c.tabindex : 0, b.removeAttr("tabindex"), this.init = function (b, d) { x = b, x.$render = this.render, x.$formatters.unshift(function (a) { return a ? new Date(a) : null }); var e = d.eq(0), f = d.eq(1), h = d.eq(2); s = e.controller("ngModel"), t = f.controller("ngModel"), u = h.controller("ngModel"); var i = angular.isDefined(c.mousewheel) ? a.$parent.$eval(c.mousewheel) : g.mousewheel; i && this.setupMousewheelEvents(e, f, h); var j = angular.isDefined(c.arrowkeys) ? a.$parent.$eval(c.arrowkeys) : g.arrowkeys; j && this.setupArrowkeyEvents(e, f, h), a.readonlyInput = angular.isDefined(c.readonlyInput) ? a.$parent.$eval(c.readonlyInput) : g.readonlyInput, this.setupInputEvents(e, f, h) }; var A = g.hourStep; c.hourStep && w.push(a.$parent.$watch(d(c.hourStep), function (a) { A = +a })); var B = g.minuteStep; c.minuteStep && w.push(a.$parent.$watch(d(c.minuteStep), function (a) { B = +a })); var C; w.push(a.$parent.$watch(d(c.min), function (a) { var b = new Date(a); C = isNaN(b) ? void 0 : b })); var D; w.push(a.$parent.$watch(d(c.max), function (a) { var b = new Date(a); D = isNaN(b) ? void 0 : b })); var E = !1; c.ngDisabled && w.push(a.$parent.$watch(d(c.ngDisabled), function (a) { E = a })), a.noIncrementHours = function () { var a = p(v, 60 * A); return E || a > D || v > a && C > a }, a.noDecrementHours = function () { var a = p(v, 60 * -A); return E || C > a || a > v && a > D }, a.noIncrementMinutes = function () { var a = p(v, B); return E || a > D || v > a && C > a }, a.noDecrementMinutes = function () { var a = p(v, -B); return E || C > a || a > v && a > D }, a.noIncrementSeconds = function () { var a = q(v, F); return E || a > D || v > a && C > a }, a.noDecrementSeconds = function () { var a = q(v, -F); return E || C > a || a > v && a > D }, a.noToggleMeridian = function () { return v.getHours() < 12 ? E || p(v, 720) > D : E || p(v, -720) < C }; var F = g.secondStep; c.secondStep && w.push(a.$parent.$watch(d(c.secondStep), function (a) { F = +a })), a.showSeconds = g.showSeconds, c.showSeconds && w.push(a.$parent.$watch(d(c.showSeconds), function (b) { a.showSeconds = !!b })), a.showMeridian = g.showMeridian, c.showMeridian && w.push(a.$parent.$watch(d(c.showMeridian), function (b) { if (a.showMeridian = !!b, x.$error.time) { var c = h(), d = i(); angular.isDefined(c) && angular.isDefined(d) && (v.setHours(c), l()) } else n() })), this.setupMousewheelEvents = function (b, c, d) { var e = function (a) { a.originalEvent && (a = a.originalEvent); var b = a.wheelDelta ? a.wheelDelta : -a.deltaY; return a.detail || b > 0 }; b.on("mousewheel wheel", function (b) { E || a.$apply(e(b) ? a.incrementHours() : a.decrementHours()), b.preventDefault() }), c.on("mousewheel wheel", function (b) { E || a.$apply(e(b) ? a.incrementMinutes() : a.decrementMinutes()), b.preventDefault() }), d.on("mousewheel wheel", function (b) { E || a.$apply(e(b) ? a.incrementSeconds() : a.decrementSeconds()), b.preventDefault() }) }, this.setupArrowkeyEvents = function (b, c, d) { b.on("keydown", function (b) { E || (38 === b.which ? (b.preventDefault(), a.incrementHours(), a.$apply()) : 40 === b.which && (b.preventDefault(), a.decrementHours(), a.$apply())) }), c.on("keydown", function (b) { E || (38 === b.which ? (b.preventDefault(), a.incrementMinutes(), a.$apply()) : 40 === b.which && (b.preventDefault(), a.decrementMinutes(), a.$apply())) }), d.on("keydown", function (b) { E || (38 === b.which ? (b.preventDefault(), a.incrementSeconds(), a.$apply()) : 40 === b.which && (b.preventDefault(), a.decrementSeconds(), a.$apply())) }) }, this.setupInputEvents = function (b, c, d) { if (a.readonlyInput) return a.updateHours = angular.noop, a.updateMinutes = angular.noop, void (a.updateSeconds = angular.noop); var e = function (b, c, d) { x.$setViewValue(null), x.$setValidity("time", !1), angular.isDefined(b) && (a.invalidHours = b, s && s.$setValidity("hours", !1)), angular.isDefined(c) && (a.invalidMinutes = c, t && t.$setValidity("minutes", !1)), angular.isDefined(d) && (a.invalidSeconds = d, u && u.$setValidity("seconds", !1)) }; a.updateHours = function () { var a = h(), b = i(); x.$setDirty(), angular.isDefined(a) && angular.isDefined(b) ? (v.setHours(a), v.setMinutes(b), C > v || v > D ? e(!0) : l("h")) : e(!0) }, b.on("blur", function (b) { x.$setTouched(), r() ? m() : null === a.hours || "" === a.hours ? e(!0) : !a.invalidHours && a.hours < 10 && a.$apply(function () { a.hours = k(a.hours, !z) }) }), a.updateMinutes = function () { var a = i(), b = h(); x.$setDirty(), angular.isDefined(a) && angular.isDefined(b) ? (v.setHours(b), v.setMinutes(a), C > v || v > D ? e(void 0, !0) : l("m")) : e(void 0, !0) }, c.on("blur", function (b) { x.$setTouched(), r() ? m() : null === a.minutes ? e(void 0, !0) : !a.invalidMinutes && a.minutes < 10 && a.$apply(function () { a.minutes = k(a.minutes) }) }), a.updateSeconds = function () { var a = j(); x.$setDirty(), angular.isDefined(a) ? (v.setSeconds(a), l("s")) : e(void 0, void 0, !0) }, d.on("blur", function (b) { r() ? m() : !a.invalidSeconds && a.seconds < 10 && a.$apply(function () { a.seconds = k(a.seconds) }) }) }, this.render = function () { var b = x.$viewValue; isNaN(b) ? (x.$setValidity("time", !1), e.error('Timepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')) : (b && (v = b), C > v || v > D ? (x.$setValidity("time", !1), a.invalidHours = !0, a.invalidMinutes = !0) : m(), n()) }, a.showSpinners = angular.isDefined(c.showSpinners) ? a.$parent.$eval(c.showSpinners) : g.showSpinners, a.incrementHours = function () { a.noIncrementHours() || o(60 * A * 60) }, a.decrementHours = function () { a.noDecrementHours() || o(60 * -A * 60) }, a.incrementMinutes = function () { a.noIncrementMinutes() || o(60 * B) }, a.decrementMinutes = function () { a.noDecrementMinutes() || o(60 * -B) }, a.incrementSeconds = function () { a.noIncrementSeconds() || o(F) }, a.decrementSeconds = function () { a.noDecrementSeconds() || o(-F) }, a.toggleMeridian = function () { var b = i(), c = h(); a.noToggleMeridian() || (angular.isDefined(b) && angular.isDefined(c) ? o(720 * (v.getHours() < 12 ? 60 : -60)) : a.meridian = a.meridian === y[0] ? y[1] : y[0]) }, a.blur = function () { x.$setTouched() }, a.$on("$destroy", function () { for (; w.length;) w.shift()() }) }]).directive("uibTimepicker", ["uibTimepickerConfig", function (a) { return { require: ["uibTimepicker", "?^ngModel"], restrict: "A", controller: "UibTimepickerController", controllerAs: "timepicker", scope: {}, templateUrl: function (b, c) { return c.templateUrl || a.templateUrl }, link: function (a, b, c, d) { var e = d[0], f = d[1]; f && e.init(f, b.find("input")) } } }]), angular.module("ui.bootstrap.typeahead", ["ui.bootstrap.debounce", "ui.bootstrap.position"]).factory("uibTypeaheadParser", ["$parse", function (a) { var b = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+([\s\S]+?)$/; return { parse: function (c) { var d = c.match(b); if (!d) throw new Error('Expected typeahead specification in form of "_modelValue_ (as _label_)? for _item_ in _collection_" but got "' + c + '".'); return { itemName: d[3], source: a(d[4]), viewMapper: a(d[2] || d[1]), modelMapper: a(d[1]) } } } }]).controller("UibTypeaheadController", ["$scope", "$element", "$attrs", "$compile", "$parse", "$q", "$timeout", "$document", "$window", "$rootScope", "$$debounce", "$uibPosition", "uibTypeaheadParser", function (a, b, c, d, e, f, g, h, i, j, k, l, m) {
     function n() { P.moveInProgress || (P.moveInProgress = !0, P.$digest()), $() } function o() { P.position = F ? l.offset(b) : l.position(b), P.position.top += b.prop("offsetHeight") } function p(a) { var b; return angular.version.minor < 6 ? (b = a.$options || {}, b.getOption = function (a) { return b[a] }) : b = a.$options, b } var q, r, s = [9, 13, 27, 38, 40], t = 200, u = a.$eval(c.typeaheadMinLength); u || 0 === u || (u = 1), a.$watch(c.typeaheadMinLength, function (a) { u = a || 0 === a ? a : 1 }); var v = a.$eval(c.typeaheadWaitMs) || 0, w = a.$eval(c.typeaheadEditable) !== !1; a.$watch(c.typeaheadEditable, function (a) { w = a !== !1 }); var x, y, z = e(c.typeaheadLoading).assign || angular.noop, A = c.typeaheadShouldSelect ? e(c.typeaheadShouldSelect) : function (a, b) { var c = b.$event; return 13 === c.which || 9 === c.which }, B = e(c.typeaheadOnSelect), C = angular.isDefined(c.typeaheadSelectOnBlur) ? a.$eval(c.typeaheadSelectOnBlur) : !1, D = e(c.typeaheadNoResults).assign || angular.noop, E = c.typeaheadInputFormatter ? e(c.typeaheadInputFormatter) : void 0, F = c.typeaheadAppendToBody ? a.$eval(c.typeaheadAppendToBody) : !1, G = c.typeaheadAppendTo ? a.$eval(c.typeaheadAppendTo) : null, H = a.$eval(c.typeaheadFocusFirst) !== !1, I = c.typeaheadSelectOnExact ? a.$eval(c.typeaheadSelectOnExact) : !1, J = e(c.typeaheadIsOpen).assign || angular.noop, K = a.$eval(c.typeaheadShowHint) || !1, L = e(c.ngModel), M = e(c.ngModel + "($$$p)"), N = function (b, c) { return angular.isFunction(L(a)) && r.getOption("getterSetter") ? M(b, { $$$p: c }) : L.assign(b, c) }, O = m.parse(c.uibTypeahead), P = a.$new(), Q = a.$on("$destroy", function () { P.$destroy() }); P.$on("$destroy", Q); var R = "typeahead-" + P.$id + "-" + Math.floor(1e4 * Math.random()); b.attr({ "aria-autocomplete": "list", "aria-expanded": !1, "aria-owns": R }); var S, T; K && (S = angular.element("<div></div>"), S.css("position", "relative"), b.after(S), T = b.clone(), T.attr("placeholder", ""), T.attr("tabindex", "-1"), T.val(""), T.css({ position: "absolute", top: "0px", left: "0px", "border-color": "transparent", "box-shadow": "none", opacity: 1, background: "none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255)", color: "#999" }), b.css({ position: "relative", "vertical-align": "top", "background-color": "transparent" }), T.attr("id") && T.removeAttr("id"), S.append(T), T.after(b)); var U = angular.element("<div uib-typeahead-popup></div>"); U.attr({ id: R, matches: "matches", active: "activeIdx", select: "select(activeIdx, evt)", "move-in-progress": "moveInProgress", query: "query", position: "position", "assign-is-open": "assignIsOpen(isOpen)", debounce: "debounceUpdate" }), angular.isDefined(c.typeaheadTemplateUrl) && U.attr("template-url", c.typeaheadTemplateUrl), angular.isDefined(c.typeaheadPopupTemplateUrl) && U.attr("popup-template-url", c.typeaheadPopupTemplateUrl); var V = function () { K && T.val("") }, W = function () { P.matches = [], P.activeIdx = -1, b.attr("aria-expanded", !1), V() }, X = function (a) { return R + "-option-" + a }; P.$watch("activeIdx", function (a) { 0 > a ? b.removeAttr("aria-activedescendant") : b.attr("aria-activedescendant", X(a)) }); var Y = function (a, b) { return P.matches.length > b && a ? a.toUpperCase() === P.matches[b].label.toUpperCase() : !1 }, Z = function (c, d) { var e = { $viewValue: c }; z(a, !0), D(a, !1), f.when(O.source(a, e)).then(function (f) { var g = c === q.$viewValue; if (g && x) if (f && f.length > 0) { P.activeIdx = H ? 0 : -1, D(a, !1), P.matches.length = 0; for (var h = 0; h < f.length; h++) e[O.itemName] = f[h], P.matches.push({ id: X(h), label: O.viewMapper(P, e), model: f[h] }); if (P.query = c, o(), b.attr("aria-expanded", !0), I && 1 === P.matches.length && Y(c, 0) && (angular.isNumber(P.debounceUpdate) || angular.isObject(P.debounceUpdate) ? k(function () { P.select(0, d) }, angular.isNumber(P.debounceUpdate) ? P.debounceUpdate : P.debounceUpdate["default"]) : P.select(0, d)), K) { var i = P.matches[0].label; angular.isString(c) && c.length > 0 && i.slice(0, c.length).toUpperCase() === c.toUpperCase() ? T.val(c + i.slice(c.length)) : T.val("") } } else W(), D(a, !0); g && z(a, !1) }, function () { W(), z(a, !1), D(a, !0) }) }; F && (angular.element(i).on("resize", n), h.find("body").on("scroll", n)); var $ = k(function () { P.matches.length && o(), P.moveInProgress = !1 }, t); P.moveInProgress = !1, P.query = void 0; var _, aa = function (a) { _ = g(function () { Z(a) }, v) }, ba = function () { _ && g.cancel(_) }; W(), P.assignIsOpen = function (b) { J(a, b) }, P.select = function (d, e) { var f, h, i = {}; y = !0, i[O.itemName] = h = P.matches[d].model, f = O.modelMapper(a, i), N(a, f), q.$setValidity("editable", !0), q.$setValidity("parse", !0), B(a, { $item: h, $model: f, $label: O.viewMapper(a, i), $event: e }), W(), P.$eval(c.typeaheadFocusOnSelect) !== !1 && g(function () { b[0].focus() }, 0, !1) }, b.on("keydown", function (b) { if (0 !== P.matches.length && -1 !== s.indexOf(b.which)) { var c = A(a, { $event: b }); if (-1 === P.activeIdx && c || 9 === b.which && b.shiftKey) return W(), void P.$digest(); b.preventDefault(); var d; switch (b.which) { case 27: b.stopPropagation(), W(), a.$digest(); break; case 38: P.activeIdx = (P.activeIdx > 0 ? P.activeIdx : P.matches.length) - 1, P.$digest(), d = U[0].querySelectorAll(".uib-typeahead-match")[P.activeIdx], d.parentNode.scrollTop = d.offsetTop; break; case 40: P.activeIdx = (P.activeIdx + 1) % P.matches.length, P.$digest(), d = U[0].querySelectorAll(".uib-typeahead-match")[P.activeIdx], d.parentNode.scrollTop = d.offsetTop; break; default: c && P.$apply(function () { angular.isNumber(P.debounceUpdate) || angular.isObject(P.debounceUpdate) ? k(function () { P.select(P.activeIdx, b) }, angular.isNumber(P.debounceUpdate) ? P.debounceUpdate : P.debounceUpdate["default"]) : P.select(P.activeIdx, b) }) } } }), b.on("focus", function (a) { x = !0, 0 !== u || q.$viewValue || g(function () { Z(q.$viewValue, a) }, 0) }), b.on("blur", function (a) { C && P.matches.length && -1 !== P.activeIdx && !y && (y = !0, P.$apply(function () { angular.isObject(P.debounceUpdate) && angular.isNumber(P.debounceUpdate.blur) ? k(function () { P.select(P.activeIdx, a) }, P.debounceUpdate.blur) : P.select(P.activeIdx, a) })), !w && q.$error.editable && (q.$setViewValue(), P.$apply(function () { q.$setValidity("editable", !0), q.$setValidity("parse", !0) }), b.val("")), x = !1, y = !1 }); var ca = function (c) { b[0] !== c.target && 3 !== c.which && 0 !== P.matches.length && (W(), j.$$phase || a.$digest()) }; h.on("click", ca), a.$on("$destroy", function () { h.off("click", ca), (F || G) && da.remove(), F && (angular.element(i).off("resize", n), h.find("body").off("scroll", n)), U.remove(), K && S.remove() }); var da = d(U)(P); F ? h.find("body").append(da) : G ? angular.element(G).eq(0).append(da) : b.after(da),
     this.init = function (b) { q = b, r = p(q), P.debounceUpdate = e(r.getOption("debounce"))(a), q.$parsers.unshift(function (b) { return x = !0, 0 === u || b && b.length >= u ? v > 0 ? (ba(), aa(b)) : Z(b) : (z(a, !1), ba(), W()), w ? b : b ? void q.$setValidity("editable", !1) : (q.$setValidity("editable", !0), null) }), q.$formatters.push(function (b) { var c, d, e = {}; return w || q.$setValidity("editable", !0), E ? (e.$model = b, E(a, e)) : (e[O.itemName] = b, c = O.viewMapper(a, e), e[O.itemName] = void 0, d = O.viewMapper(a, e), c !== d ? c : b) }) }
 }]).directive("uibTypeahead", function () { return { controller: "UibTypeaheadController", require: ["ngModel", "uibTypeahead"], link: function (a, b, c, d) { d[1].init(d[0]) } } }).directive("uibTypeaheadPopup", ["$$debounce", function (a) { return { scope: { matches: "=", query: "=", active: "=", position: "&", moveInProgress: "=", select: "&", assignIsOpen: "&", debounce: "&" }, replace: !0, templateUrl: function (a, b) { return b.popupTemplateUrl || "uib/template/typeahead/typeahead-popup.html" }, link: function (b, c, d) { b.templateUrl = d.templateUrl, b.isOpen = function () { var a = b.matches.length > 0; return b.assignIsOpen({ isOpen: a }), a }, b.isActive = function (a) { return b.active === a }, b.selectActive = function (a) { b.active = a }, b.selectMatch = function (c, d) { var e = b.debounce(); angular.isNumber(e) || angular.isObject(e) ? a(function () { b.select({ activeIdx: c, evt: d }) }, angular.isNumber(e) ? e : e["default"]) : b.select({ activeIdx: c, evt: d }) } } } }]).directive("uibTypeaheadMatch", ["$templateRequest", "$compile", "$parse", function (a, b, c) { return { scope: { index: "=", match: "=", query: "=" }, link: function (d, e, f) { var g = c(f.templateUrl)(d.$parent) || "uib/template/typeahead/typeahead-match.html"; a(g).then(function (a) { var c = angular.element(a.trim()); e.replaceWith(c), b(c)(d) }) } } }]).filter("uibTypeaheadHighlight", ["$sce", "$injector", "$log", function (a, b, c) { function d(a) { return a.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1") } function e(a) { return /<.*>/g.test(a) } var f; return f = b.has("$sanitize"), function (b, g) { return !f && e(b) && c.warn("Unsafe use of typeahead please use ngSanitize"), b = g ? ("" + b).replace(new RegExp(d(g), "gi"), "<strong>$&</strong>") : b, f || (b = a.trustAsHtml(b)), b } }]), angular.module("ui.bootstrap.carousel").run(function () { !angular.$$csp().noInlineStyle && !angular.$$uibCarouselCss && angular.element(document).find("head").prepend('<style type="text/css">.ng-animate.item:not(.left):not(.right){-webkit-transition:0s ease-in-out left;transition:0s ease-in-out left}</style>'), angular.$$uibCarouselCss = !0 }), angular.module("ui.bootstrap.datepicker").run(function () { !angular.$$csp().noInlineStyle && !angular.$$uibDatepickerCss && angular.element(document).find("head").prepend('<style type="text/css">.uib-datepicker .uib-title{width:100%;}.uib-day button,.uib-month button,.uib-year button{min-width:100%;}.uib-left,.uib-right{width:100%}</style>'), angular.$$uibDatepickerCss = !0 }), angular.module("ui.bootstrap.position").run(function () { !angular.$$csp().noInlineStyle && !angular.$$uibPositionCss && angular.element(document).find("head").prepend('<style type="text/css">.uib-position-measure{display:block !important;visibility:hidden !important;position:absolute !important;top:-9999px !important;left:-9999px !important;}.uib-position-scrollbar-measure{position:absolute !important;top:-9999px !important;width:50px !important;height:50px !important;overflow:scroll !important;}.uib-position-body-scrollbar-measure{overflow:scroll !important;}</style>'), angular.$$uibPositionCss = !0 }), angular.module("ui.bootstrap.datepickerPopup").run(function () { !angular.$$csp().noInlineStyle && !angular.$$uibDatepickerpopupCss && angular.element(document).find("head").prepend('<style type="text/css">.uib-datepicker-popup.dropdown-menu{display:block;float:none;margin:0;}.uib-button-bar{padding:10px 9px 2px;}</style>'), angular.$$uibDatepickerpopupCss = !0 }), angular.module("ui.bootstrap.tooltip").run(function () { !angular.$$csp().noInlineStyle && !angular.$$uibTooltipCss && angular.element(document).find("head").prepend('<style type="text/css">[uib-tooltip-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-popup].tooltip.right-bottom > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.right-bottom > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.right-bottom > .tooltip-arrow,[uib-popover-popup].popover.top-left > .arrow,[uib-popover-popup].popover.top-right > .arrow,[uib-popover-popup].popover.bottom-left > .arrow,[uib-popover-popup].popover.bottom-right > .arrow,[uib-popover-popup].popover.left-top > .arrow,[uib-popover-popup].popover.left-bottom > .arrow,[uib-popover-popup].popover.right-top > .arrow,[uib-popover-popup].popover.right-bottom > .arrow,[uib-popover-html-popup].popover.top-left > .arrow,[uib-popover-html-popup].popover.top-right > .arrow,[uib-popover-html-popup].popover.bottom-left > .arrow,[uib-popover-html-popup].popover.bottom-right > .arrow,[uib-popover-html-popup].popover.left-top > .arrow,[uib-popover-html-popup].popover.left-bottom > .arrow,[uib-popover-html-popup].popover.right-top > .arrow,[uib-popover-html-popup].popover.right-bottom > .arrow,[uib-popover-template-popup].popover.top-left > .arrow,[uib-popover-template-popup].popover.top-right > .arrow,[uib-popover-template-popup].popover.bottom-left > .arrow,[uib-popover-template-popup].popover.bottom-right > .arrow,[uib-popover-template-popup].popover.left-top > .arrow,[uib-popover-template-popup].popover.left-bottom > .arrow,[uib-popover-template-popup].popover.right-top > .arrow,[uib-popover-template-popup].popover.right-bottom > .arrow{top:auto;bottom:auto;left:auto;right:auto;margin:0;}[uib-popover-popup].popover,[uib-popover-html-popup].popover,[uib-popover-template-popup].popover{display:block !important;}</style>'), angular.$$uibTooltipCss = !0 }), angular.module("ui.bootstrap.timepicker").run(function () { !angular.$$csp().noInlineStyle && !angular.$$uibTimepickerCss && angular.element(document).find("head").prepend('<style type="text/css">.uib-time input{width:50px;}</style>'), angular.$$uibTimepickerCss = !0 }), angular.module("ui.bootstrap.typeahead").run(function () { !angular.$$csp().noInlineStyle && !angular.$$uibTypeaheadCss && angular.element(document).find("head").prepend('<style type="text/css">[uib-typeahead-popup].dropdown-menu{display:block;}</style>'), angular.$$uibTypeaheadCss = !0 });;
/*
 * angular-ui-bootstrap
 * http://angular-ui.github.io/bootstrap/

 * Version: 2.5.0 - 2017-01-28
 * License: MIT
 */angular.module("ui.bootstrap", ["ui.bootstrap.tpls", "ui.bootstrap.collapse", "ui.bootstrap.tabindex", "ui.bootstrap.accordion", "ui.bootstrap.alert", "ui.bootstrap.buttons", "ui.bootstrap.carousel", "ui.bootstrap.dateparser", "ui.bootstrap.isClass", "ui.bootstrap.datepicker", "ui.bootstrap.position", "ui.bootstrap.datepickerPopup", "ui.bootstrap.debounce", "ui.bootstrap.multiMap", "ui.bootstrap.dropdown", "ui.bootstrap.stackedMap", "ui.bootstrap.modal", "ui.bootstrap.paging", "ui.bootstrap.pager", "ui.bootstrap.pagination", "ui.bootstrap.tooltip", "ui.bootstrap.popover", "ui.bootstrap.progressbar", "ui.bootstrap.rating", "ui.bootstrap.tabs", "ui.bootstrap.timepicker", "ui.bootstrap.typeahead"]), angular.module("ui.bootstrap.tpls", ["uib/template/accordion/accordion-group.html", "uib/template/accordion/accordion.html", "uib/template/alert/alert.html", "uib/template/carousel/carousel.html", "uib/template/carousel/slide.html", "uib/template/datepicker/datepicker.html", "uib/template/datepicker/day.html", "uib/template/datepicker/month.html", "uib/template/datepicker/year.html", "uib/template/datepickerPopup/popup.html", "uib/template/modal/window.html", "uib/template/pager/pager.html", "uib/template/pagination/pagination.html", "uib/template/tooltip/tooltip-html-popup.html", "uib/template/tooltip/tooltip-popup.html", "uib/template/tooltip/tooltip-template-popup.html", "uib/template/popover/popover-html.html", "uib/template/popover/popover-template.html", "uib/template/popover/popover.html", "uib/template/progressbar/bar.html", "uib/template/progressbar/progress.html", "uib/template/progressbar/progressbar.html", "uib/template/rating/rating.html", "uib/template/tabs/tab.html", "uib/template/tabs/tabset.html", "uib/template/timepicker/timepicker.html", "uib/template/typeahead/typeahead-match.html", "uib/template/typeahead/typeahead-popup.html"]), angular.module("ui.bootstrap.collapse", []).directive("uibCollapse", ["$animate", "$q", "$parse", "$injector", function (a, b, c, d) { var e = d.has("$animateCss") ? d.get("$animateCss") : null; return { link: function (d, f, g) { function h() { r = !!("horizontal" in g), r ? (s = { width: "" }, t = { width: "0" }) : (s = { height: "" }, t = { height: "0" }), d.$eval(g.uibCollapse) || f.addClass("in").addClass("collapse").attr("aria-expanded", !0).attr("aria-hidden", !1).css(s) } function i(a) { return r ? { width: a.scrollWidth + "px" } : { height: a.scrollHeight + "px" } } function j() { f.hasClass("collapse") && f.hasClass("in") || b.resolve(n(d)).then(function () { f.removeClass("collapse").addClass("collapsing").attr("aria-expanded", !0).attr("aria-hidden", !1), e ? e(f, { addClass: "in", easing: "ease", css: { overflow: "hidden" }, to: i(f[0]) }).start()["finally"](k) : a.addClass(f, "in", { css: { overflow: "hidden" }, to: i(f[0]) }).then(k) }, angular.noop) } function k() { f.removeClass("collapsing").addClass("collapse").css(s), o(d) } function l() { return f.hasClass("collapse") || f.hasClass("in") ? void b.resolve(p(d)).then(function () { f.css(i(f[0])).removeClass("collapse").addClass("collapsing").attr("aria-expanded", !1).attr("aria-hidden", !0), e ? e(f, { removeClass: "in", to: t }).start()["finally"](m) : a.removeClass(f, "in", { to: t }).then(m) }, angular.noop) : m() } function m() { f.css(t), f.removeClass("collapsing").addClass("collapse"), q(d) } var n = c(g.expanding), o = c(g.expanded), p = c(g.collapsing), q = c(g.collapsed), r = !1, s = {}, t = {}; h(), d.$watch(g.uibCollapse, function (a) { a ? l() : j() }) } } }]), angular.module("ui.bootstrap.tabindex", []).directive("uibTabindexToggle", function () { return { restrict: "A", link: function (a, b, c) { c.$observe("disabled", function (a) { c.$set("tabindex", a ? -1 : null) }) } } }), angular.module("ui.bootstrap.accordion", ["ui.bootstrap.collapse", "ui.bootstrap.tabindex"]).constant("uibAccordionConfig", { closeOthers: !0 }).controller("UibAccordionController", ["$scope", "$attrs", "uibAccordionConfig", function (a, b, c) { this.groups = [], this.closeOthers = function (d) { var e = angular.isDefined(b.closeOthers) ? a.$eval(b.closeOthers) : c.closeOthers; e && angular.forEach(this.groups, function (a) { a !== d && (a.isOpen = !1) }) }, this.addGroup = function (a) { var b = this; this.groups.push(a), a.$on("$destroy", function (c) { b.removeGroup(a) }) }, this.removeGroup = function (a) { var b = this.groups.indexOf(a); -1 !== b && this.groups.splice(b, 1) } }]).directive("uibAccordion", function () { return { controller: "UibAccordionController", controllerAs: "accordion", transclude: !0, templateUrl: function (a, b) { return b.templateUrl || "uib/template/accordion/accordion.html" } } }).directive("uibAccordionGroup", function () { return { require: "^uibAccordion", transclude: !0, restrict: "A", templateUrl: function (a, b) { return b.templateUrl || "uib/template/accordion/accordion-group.html" }, scope: { heading: "@", panelClass: "@?", isOpen: "=?", isDisabled: "=?" }, controller: function () { this.setHeading = function (a) { this.heading = a } }, link: function (a, b, c, d) { b.addClass("panel"), d.addGroup(a), a.openClass = c.openClass || "panel-open", a.panelClass = c.panelClass || "panel-default", a.$watch("isOpen", function (c) { b.toggleClass(a.openClass, !!c), c && d.closeOthers(a) }), a.toggleOpen = function (b) { a.isDisabled || b && 32 !== b.which || (a.isOpen = !a.isOpen) }; var e = "accordiongroup-" + a.$id + "-" + Math.floor(1e4 * Math.random()); a.headingId = e + "-tab", a.panelId = e + "-panel" } } }).directive("uibAccordionHeading", function () { return { transclude: !0, template: "", replace: !0, require: "^uibAccordionGroup", link: function (a, b, c, d, e) { d.setHeading(e(a, angular.noop)) } } }).directive("uibAccordionTransclude", function () { function a() { return "uib-accordion-header,data-uib-accordion-header,x-uib-accordion-header,uib\\:accordion-header,[uib-accordion-header],[data-uib-accordion-header],[x-uib-accordion-header]" } return { require: "^uibAccordionGroup", link: function (b, c, d, e) { b.$watch(function () { return e[d.uibAccordionTransclude] }, function (b) { if (b) { var d = angular.element(c[0].querySelector(a())); d.html(""), d.append(b) } }) } } }), angular.module("ui.bootstrap.alert", []).controller("UibAlertController", ["$scope", "$element", "$attrs", "$interpolate", "$timeout", function (a, b, c, d, e) { a.closeable = !!c.close, b.addClass("alert"), c.$set("role", "alert"), a.closeable && b.addClass("alert-dismissible"); var f = angular.isDefined(c.dismissOnTimeout) ? d(c.dismissOnTimeout)(a.$parent) : null; f && e(function () { a.close() }, parseInt(f, 10)) }]).directive("uibAlert", function () { return { controller: "UibAlertController", controllerAs: "alert", restrict: "A", templateUrl: function (a, b) { return b.templateUrl || "uib/template/alert/alert.html" }, transclude: !0, scope: { close: "&" } } }), angular.module("ui.bootstrap.buttons", []).constant("uibButtonConfig", { activeClass: "active", toggleEvent: "click" }).controller("UibButtonsController", ["uibButtonConfig", function (a) { this.activeClass = a.activeClass || "active", this.toggleEvent = a.toggleEvent || "click" }]).directive("uibBtnRadio", ["$parse", function (a) { return { require: ["uibBtnRadio", "ngModel"], controller: "UibButtonsController", controllerAs: "buttons", link: function (b, c, d, e) { var f = e[0], g = e[1], h = a(d.uibUncheckable); c.find("input").css({ display: "none" }), g.$render = function () { c.toggleClass(f.activeClass, angular.equals(g.$modelValue, b.$eval(d.uibBtnRadio))) }, c.on(f.toggleEvent, function () { if (!d.disabled) { var a = c.hasClass(f.activeClass); a && !angular.isDefined(d.uncheckable) || b.$apply(function () { g.$setViewValue(a ? null : b.$eval(d.uibBtnRadio)), g.$render() }) } }), d.uibUncheckable && b.$watch(h, function (a) { d.$set("uncheckable", a ? "" : void 0) }) } } }]).directive("uibBtnCheckbox", function () { return { require: ["uibBtnCheckbox", "ngModel"], controller: "UibButtonsController", controllerAs: "button", link: function (a, b, c, d) { function e() { return g(c.btnCheckboxTrue, !0) } function f() { return g(c.btnCheckboxFalse, !1) } function g(b, c) { return angular.isDefined(b) ? a.$eval(b) : c } var h = d[0], i = d[1]; b.find("input").css({ display: "none" }), i.$render = function () { b.toggleClass(h.activeClass, angular.equals(i.$modelValue, e())) }, b.on(h.toggleEvent, function () { c.disabled || a.$apply(function () { i.$setViewValue(b.hasClass(h.activeClass) ? f() : e()), i.$render() }) }) } } }), angular.module("ui.bootstrap.carousel", []).controller("UibCarouselController", ["$scope", "$element", "$interval", "$timeout", "$animate", function (a, b, c, d, e) { function f(a) { for (var b = 0; b < p.length; b++) p[b].slide.active = b === a } function g(c, d, g) { if (!s) { if (angular.extend(c, { direction: g }), angular.extend(p[r].slide || {}, { direction: g }), e.enabled(b) && !a.$currentTransition && p[d].element && o.slides.length > 1) { p[d].element.data(q, c.direction); var h = o.getCurrentIndex(); angular.isNumber(h) && p[h].element && p[h].element.data(q, c.direction), a.$currentTransition = !0, e.on("addClass", p[d].element, function (b, c) { "close" === c && (a.$currentTransition = null, e.off("addClass", b)) }) } a.active = c.index, r = c.index, f(d), k() } } function h(a) { for (var b = 0; b < p.length; b++) if (p[b].slide === a) return b } function i() { m && (c.cancel(m), m = null) } function j(b) { b.length || (a.$currentTransition = null) } function k() { i(); var b = +a.interval; !isNaN(b) && b > 0 && (m = c(l, b)) } function l() { var b = +a.interval; n && !isNaN(b) && b > 0 && p.length ? a.next() : a.pause() } var m, n, o = this, p = o.slides = a.slides = [], q = "uib-slideDirection", r = a.active, s = !1; b.addClass("carousel"), o.addSlide = function (b, c) { p.push({ slide: b, element: c }), p.sort(function (a, b) { return +a.slide.index - +b.slide.index }), (b.index === a.active || 1 === p.length && !angular.isNumber(a.active)) && (a.$currentTransition && (a.$currentTransition = null), r = b.index, a.active = b.index, f(r), o.select(p[h(b)]), 1 === p.length && a.play()) }, o.getCurrentIndex = function () { for (var a = 0; a < p.length; a++) if (p[a].slide.index === r) return a }, o.next = a.next = function () { var b = (o.getCurrentIndex() + 1) % p.length; return 0 === b && a.noWrap() ? void a.pause() : o.select(p[b], "next") }, o.prev = a.prev = function () { var b = o.getCurrentIndex() - 1 < 0 ? p.length - 1 : o.getCurrentIndex() - 1; return a.noWrap() && b === p.length - 1 ? void a.pause() : o.select(p[b], "prev") }, o.removeSlide = function (b) { var c = h(b); p.splice(c, 1), p.length > 0 && r === c ? c >= p.length ? (r = p.length - 1, a.active = r, f(r), o.select(p[p.length - 1])) : (r = c, a.active = r, f(r), o.select(p[c])) : r > c && (r--, a.active = r), 0 === p.length && (r = null, a.active = null) }, o.select = a.select = function (b, c) { var d = h(b.slide); void 0 === c && (c = d > o.getCurrentIndex() ? "next" : "prev"), b.slide.index === r || a.$currentTransition || g(b.slide, d, c) }, a.indexOfSlide = function (a) { return +a.slide.index }, a.isActive = function (b) { return a.active === b.slide.index }, a.isPrevDisabled = function () { return 0 === a.active && a.noWrap() }, a.isNextDisabled = function () { return a.active === p.length - 1 && a.noWrap() }, a.pause = function () { a.noPause || (n = !1, i()) }, a.play = function () { n || (n = !0, k()) }, b.on("mouseenter", a.pause), b.on("mouseleave", a.play), a.$on("$destroy", function () { s = !0, i() }), a.$watch("noTransition", function (a) { e.enabled(b, !a) }), a.$watch("interval", k), a.$watchCollection("slides", j), a.$watch("active", function (a) { if (angular.isNumber(a) && r !== a) { for (var b = 0; b < p.length; b++) if (p[b].slide.index === a) { a = b; break } var c = p[a]; c && (f(a), o.select(p[a]), r = a) } }) }]).directive("uibCarousel", function () { return { transclude: !0, controller: "UibCarouselController", controllerAs: "carousel", restrict: "A", templateUrl: function (a, b) { return b.templateUrl || "uib/template/carousel/carousel.html" }, scope: { active: "=", interval: "=", noTransition: "=", noPause: "=", noWrap: "&" } } }).directive("uibSlide", ["$animate", function (a) { return { require: "^uibCarousel", restrict: "A", transclude: !0, templateUrl: function (a, b) { return b.templateUrl || "uib/template/carousel/slide.html" }, scope: { actual: "=?", index: "=?" }, link: function (b, c, d, e) { c.addClass("item"), e.addSlide(b, c), b.$on("$destroy", function () { e.removeSlide(b) }), b.$watch("active", function (b) { a[b ? "addClass" : "removeClass"](c, "active") }) } } }]).animation(".item", ["$animateCss", function (a) { function b(a, b, c) { a.removeClass(b), c && c() } var c = "uib-slideDirection"; return { beforeAddClass: function (d, e, f) { if ("active" === e) { var g = !1, h = d.data(c), i = "next" === h ? "left" : "right", j = b.bind(this, d, i + " " + h, f); return d.addClass(h), a(d, { addClass: i }).start().done(j), function () { g = !0 } } f() }, beforeRemoveClass: function (d, e, f) { if ("active" === e) { var g = !1, h = d.data(c), i = "next" === h ? "left" : "right", j = b.bind(this, d, i, f); return a(d, { addClass: i }).start().done(j), function () { g = !0 } } f() } } }]), angular.module("ui.bootstrap.dateparser", []).service("uibDateParser", ["$log", "$locale", "dateFilter", "orderByFilter", "filterFilter", function (a, b, c, d, e) { function f(a) { return e(s, { key: a }, !0)[0] } function g(a) { var b = [], c = a.split(""), e = a.indexOf("'"); if (e > -1) { var f = !1; a = a.split(""); for (var g = e; g < a.length; g++) f ? ("'" === a[g] && (g + 1 < a.length && "'" === a[g + 1] ? (a[g + 1] = "$", c[g + 1] = "") : (c[g] = "", f = !1)), a[g] = "$") : "'" === a[g] && (a[g] = "$", c[g] = "", f = !0); a = a.join("") } return angular.forEach(s, function (d) { var e = a.indexOf(d.key); if (e > -1) { a = a.split(""), c[e] = "(" + d.regex + ")", a[e] = "$"; for (var f = e + 1, g = e + d.key.length; g > f; f++) c[f] = "", a[f] = "$"; a = a.join(""), b.push({ index: e, key: d.key, apply: d.apply, matcher: d.regex }) } }), { regex: new RegExp("^" + c.join("") + "$"), map: d(b, "index") } } function h(a) { for (var b, c, d = [], e = 0; e < a.length;) if (angular.isNumber(c)) { if ("'" === a.charAt(e)) (e + 1 >= a.length || "'" !== a.charAt(e + 1)) && (d.push(i(a, c, e)), c = null); else if (e === a.length) for (; c < a.length;) b = j(a, c), d.push(b), c = b.endIdx; e++ } else "'" !== a.charAt(e) ? (b = j(a, e), d.push(b.parser), e = b.endIdx) : (c = e, e++); return d } function i(a, b, c) { return function () { return a.substr(b + 1, c - b - 1) } } function j(a, b) { for (var c = a.substr(b), d = 0; d < s.length; d++) if (new RegExp("^" + s[d].key).test(c)) { var e = s[d]; return { endIdx: b + e.key.length, parser: e.formatter } } return { endIdx: b + 1, parser: function () { return c.charAt(0) } } } function k(a, b, c) { return 1 > c ? !1 : 1 === b && c > 28 ? 29 === c && (a % 4 === 0 && a % 100 !== 0 || a % 400 === 0) : 3 === b || 5 === b || 8 === b || 10 === b ? 31 > c : !0 } function l(a) { return parseInt(a, 10) } function m(a, b) { return a && b ? q(a, b) : a } function n(a, b) { return a && b ? q(a, b, !0) : a } function o(a, b) { a = a.replace(/:/g, ""); var c = Date.parse("Jan 01, 1970 00:00:00 " + a) / 6e4; return isNaN(c) ? b : c } function p(a, b) { return a = new Date(a.getTime()), a.setMinutes(a.getMinutes() + b), a } function q(a, b, c) { c = c ? -1 : 1; var d = a.getTimezoneOffset(), e = o(b, d); return p(a, c * (e - d)) } var r, s, t = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g; this.init = function () { r = b.id, this.parsers = {}, this.formatters = {}, s = [{ key: "yyyy", regex: "\\d{4}", apply: function (a) { this.year = +a }, formatter: function (a) { var b = new Date; return b.setFullYear(Math.abs(a.getFullYear())), c(b, "yyyy") } }, { key: "yy", regex: "\\d{2}", apply: function (a) { a = +a, this.year = 69 > a ? a + 2e3 : a + 1900 }, formatter: function (a) { var b = new Date; return b.setFullYear(Math.abs(a.getFullYear())), c(b, "yy") } }, { key: "y", regex: "\\d{1,4}", apply: function (a) { this.year = +a }, formatter: function (a) { var b = new Date; return b.setFullYear(Math.abs(a.getFullYear())), c(b, "y") } }, { key: "M!", regex: "0?[1-9]|1[0-2]", apply: function (a) { this.month = a - 1 }, formatter: function (a) { var b = a.getMonth(); return /^[0-9]$/.test(b) ? c(a, "MM") : c(a, "M") } }, { key: "MMMM", regex: b.DATETIME_FORMATS.MONTH.join("|"), apply: function (a) { this.month = b.DATETIME_FORMATS.MONTH.indexOf(a) }, formatter: function (a) { return c(a, "MMMM") } }, { key: "MMM", regex: b.DATETIME_FORMATS.SHORTMONTH.join("|"), apply: function (a) { this.month = b.DATETIME_FORMATS.SHORTMONTH.indexOf(a) }, formatter: function (a) { return c(a, "MMM") } }, { key: "MM", regex: "0[1-9]|1[0-2]", apply: function (a) { this.month = a - 1 }, formatter: function (a) { return c(a, "MM") } }, { key: "M", regex: "[1-9]|1[0-2]", apply: function (a) { this.month = a - 1 }, formatter: function (a) { return c(a, "M") } }, { key: "d!", regex: "[0-2]?[0-9]{1}|3[0-1]{1}", apply: function (a) { this.date = +a }, formatter: function (a) { var b = a.getDate(); return /^[1-9]$/.test(b) ? c(a, "dd") : c(a, "d") } }, { key: "dd", regex: "[0-2][0-9]{1}|3[0-1]{1}", apply: function (a) { this.date = +a }, formatter: function (a) { return c(a, "dd") } }, { key: "d", regex: "[1-2]?[0-9]{1}|3[0-1]{1}", apply: function (a) { this.date = +a }, formatter: function (a) { return c(a, "d") } }, { key: "EEEE", regex: b.DATETIME_FORMATS.DAY.join("|"), formatter: function (a) { return c(a, "EEEE") } }, { key: "EEE", regex: b.DATETIME_FORMATS.SHORTDAY.join("|"), formatter: function (a) { return c(a, "EEE") } }, { key: "HH", regex: "(?:0|1)[0-9]|2[0-3]", apply: function (a) { this.hours = +a }, formatter: function (a) { return c(a, "HH") } }, { key: "hh", regex: "0[0-9]|1[0-2]", apply: function (a) { this.hours = +a }, formatter: function (a) { return c(a, "hh") } }, { key: "H", regex: "1?[0-9]|2[0-3]", apply: function (a) { this.hours = +a }, formatter: function (a) { return c(a, "H") } }, { key: "h", regex: "[0-9]|1[0-2]", apply: function (a) { this.hours = +a }, formatter: function (a) { return c(a, "h") } }, { key: "mm", regex: "[0-5][0-9]", apply: function (a) { this.minutes = +a }, formatter: function (a) { return c(a, "mm") } }, { key: "m", regex: "[0-9]|[1-5][0-9]", apply: function (a) { this.minutes = +a }, formatter: function (a) { return c(a, "m") } }, { key: "sss", regex: "[0-9][0-9][0-9]", apply: function (a) { this.milliseconds = +a }, formatter: function (a) { return c(a, "sss") } }, { key: "ss", regex: "[0-5][0-9]", apply: function (a) { this.seconds = +a }, formatter: function (a) { return c(a, "ss") } }, { key: "s", regex: "[0-9]|[1-5][0-9]", apply: function (a) { this.seconds = +a }, formatter: function (a) { return c(a, "s") } }, { key: "a", regex: b.DATETIME_FORMATS.AMPMS.join("|"), apply: function (a) { 12 === this.hours && (this.hours = 0), "PM" === a && (this.hours += 12) }, formatter: function (a) { return c(a, "a") } }, { key: "Z", regex: "[+-]\\d{4}", apply: function (a) { var b = a.match(/([+-])(\d{2})(\d{2})/), c = b[1], d = b[2], e = b[3]; this.hours += l(c + d), this.minutes += l(c + e) }, formatter: function (a) { return c(a, "Z") } }, { key: "ww", regex: "[0-4][0-9]|5[0-3]", formatter: function (a) { return c(a, "ww") } }, { key: "w", regex: "[0-9]|[1-4][0-9]|5[0-3]", formatter: function (a) { return c(a, "w") } }, { key: "GGGG", regex: b.DATETIME_FORMATS.ERANAMES.join("|").replace(/\s/g, "\\s"), formatter: function (a) { return c(a, "GGGG") } }, { key: "GGG", regex: b.DATETIME_FORMATS.ERAS.join("|"), formatter: function (a) { return c(a, "GGG") } }, { key: "GG", regex: b.DATETIME_FORMATS.ERAS.join("|"), formatter: function (a) { return c(a, "GG") } }, { key: "G", regex: b.DATETIME_FORMATS.ERAS.join("|"), formatter: function (a) { return c(a, "G") } }], angular.version.major >= 1 && angular.version.minor > 4 && s.push({ key: "LLLL", regex: b.DATETIME_FORMATS.STANDALONEMONTH.join("|"), apply: function (a) { this.month = b.DATETIME_FORMATS.STANDALONEMONTH.indexOf(a) }, formatter: function (a) { return c(a, "LLLL") } }) }, this.init(), this.getParser = function (a) { var b = f(a); return b && b.apply || null }, this.overrideParser = function (a, b) { var c = f(a); c && angular.isFunction(b) && (this.parsers = {}, c.apply = b) }.bind(this), this.filter = function (a, c) { if (!angular.isDate(a) || isNaN(a) || !c) return ""; c = b.DATETIME_FORMATS[c] || c, b.id !== r && this.init(), this.formatters[c] || (this.formatters[c] = h(c)); var d = this.formatters[c]; return d.reduce(function (b, c) { return b + c(a) }, "") }, this.parse = function (c, d, e) { if (!angular.isString(c) || !d) return c; d = b.DATETIME_FORMATS[d] || d, d = d.replace(t, "\\$&"), b.id !== r && this.init(), this.parsers[d] || (this.parsers[d] = g(d, "apply")); var f = this.parsers[d], h = f.regex, i = f.map, j = c.match(h), l = !1; if (j && j.length) { var m, n; angular.isDate(e) && !isNaN(e.getTime()) ? m = { year: e.getFullYear(), month: e.getMonth(), date: e.getDate(), hours: e.getHours(), minutes: e.getMinutes(), seconds: e.getSeconds(), milliseconds: e.getMilliseconds() } : (e && a.warn("dateparser:", "baseDate is not a valid date"), m = { year: 1900, month: 0, date: 1, hours: 0, minutes: 0, seconds: 0, milliseconds: 0 }); for (var o = 1, p = j.length; p > o; o++) { var q = i[o - 1]; "Z" === q.matcher && (l = !0), q.apply && q.apply.call(m, j[o]) } var s = l ? Date.prototype.setUTCFullYear : Date.prototype.setFullYear, u = l ? Date.prototype.setUTCHours : Date.prototype.setHours; return k(m.year, m.month, m.date) && (!angular.isDate(e) || isNaN(e.getTime()) || l ? (n = new Date(0), s.call(n, m.year, m.month, m.date), u.call(n, m.hours || 0, m.minutes || 0, m.seconds || 0, m.milliseconds || 0)) : (n = new Date(e), s.call(n, m.year, m.month, m.date), u.call(n, m.hours, m.minutes, m.seconds, m.milliseconds))), n } }, this.toTimezone = m, this.fromTimezone = n, this.timezoneToOffset = o, this.addDateMinutes = p, this.convertTimezoneToLocal = q }]), angular.module("ui.bootstrap.isClass", []).directive("uibIsClass", ["$animate", function (a) { var b = /^\s*([\s\S]+?)\s+on\s+([\s\S]+?)\s*$/, c = /^\s*([\s\S]+?)\s+for\s+([\s\S]+?)\s*$/; return { restrict: "A", compile: function (d, e) { function f(a, b, c) { i.push(a), j.push({ scope: a, element: b }), o.forEach(function (b, c) { g(b, a) }), a.$on("$destroy", h) } function g(b, d) { var e = b.match(c), f = d.$eval(e[1]), g = e[2], h = k[b]; if (!h) { var i = function (b) { var c = null; j.some(function (a) { var d = a.scope.$eval(m); return d === b ? (c = a, !0) : void 0 }), h.lastActivated !== c && (h.lastActivated && a.removeClass(h.lastActivated.element, f), c && a.addClass(c.element, f), h.lastActivated = c) }; k[b] = h = { lastActivated: null, scope: d, watchFn: i, compareWithExp: g, watcher: d.$watch(g, i) } } h.watchFn(d.$eval(g)) } function h(a) { var b = a.targetScope, c = i.indexOf(b); if (i.splice(c, 1), j.splice(c, 1), i.length) { var d = i[0]; angular.forEach(k, function (a) { a.scope === b && (a.watcher = d.$watch(a.compareWithExp, a.watchFn), a.scope = d) }) } else k = {} } var i = [], j = [], k = {}, l = e.uibIsClass.match(b), m = l[2], n = l[1], o = n.split(","); return f } } }]), angular.module("ui.bootstrap.datepicker", ["ui.bootstrap.dateparser", "ui.bootstrap.isClass"]).value("$datepickerSuppressError", !1).value("$datepickerLiteralWarning", !0).constant("uibDatepickerConfig", { datepickerMode: "day", formatDay: "dd", formatMonth: "MMMM", formatYear: "yyyy", formatDayHeader: "EEE", formatDayTitle: "MMMM yyyy", formatMonthTitle: "yyyy", maxDate: null, maxMode: "year", minDate: null, minMode: "day", monthColumns: 3, ngModelOptions: {}, shortcutPropagation: !1, showWeeks: !0, yearColumns: 5, yearRows: 4 }).controller("UibDatepickerController", ["$scope", "$element", "$attrs", "$parse", "$interpolate", "$locale", "$log", "dateFilter", "uibDatepickerConfig", "$datepickerLiteralWarning", "$datepickerSuppressError", "uibDateParser", function (a, b, c, d, e, f, g, h, i, j, k, l) { function m(b) { a.datepickerMode = b, a.datepickerOptions.datepickerMode = b } function n(b) { var c; if (angular.version.minor < 6) c = b.$options || a.datepickerOptions.ngModelOptions || i.ngModelOptions || {}, c.getOption = function (a) { return c[a] }; else { var d = b.$options.getOption("timezone") || (a.datepickerOptions.ngModelOptions ? a.datepickerOptions.ngModelOptions.timezone : null) || (i.ngModelOptions ? i.ngModelOptions.timezone : null); c = b.$options.createChild(i.ngModelOptions).createChild(a.datepickerOptions.ngModelOptions).createChild(b.$options).createChild({ timezone: d }) } return c } var o = this, p = { $setViewValue: angular.noop }, q = {}, r = []; b.addClass("uib-datepicker"), c.$set("role", "application"), a.datepickerOptions || (a.datepickerOptions = {}), this.modes = ["day", "month", "year"], ["customClass", "dateDisabled", "datepickerMode", "formatDay", "formatDayHeader", "formatDayTitle", "formatMonth", "formatMonthTitle", "formatYear", "maxDate", "maxMode", "minDate", "minMode", "monthColumns", "showWeeks", "shortcutPropagation", "startingDay", "yearColumns", "yearRows"].forEach(function (b) { switch (b) { case "customClass": case "dateDisabled": a[b] = a.datepickerOptions[b] || angular.noop; break; case "datepickerMode": a.datepickerMode = angular.isDefined(a.datepickerOptions.datepickerMode) ? a.datepickerOptions.datepickerMode : i.datepickerMode; break; case "formatDay": case "formatDayHeader": case "formatDayTitle": case "formatMonth": case "formatMonthTitle": case "formatYear": o[b] = angular.isDefined(a.datepickerOptions[b]) ? e(a.datepickerOptions[b])(a.$parent) : i[b]; break; case "monthColumns": case "showWeeks": case "shortcutPropagation": case "yearColumns": case "yearRows": o[b] = angular.isDefined(a.datepickerOptions[b]) ? a.datepickerOptions[b] : i[b]; break; case "startingDay": angular.isDefined(a.datepickerOptions.startingDay) ? o.startingDay = a.datepickerOptions.startingDay : angular.isNumber(i.startingDay) ? o.startingDay = i.startingDay : o.startingDay = (f.DATETIME_FORMATS.FIRSTDAYOFWEEK + 8) % 7; break; case "maxDate": case "minDate": a.$watch("datepickerOptions." + b, function (a) { a ? angular.isDate(a) ? o[b] = l.fromTimezone(new Date(a), q.getOption("timezone")) : (j && g.warn("Literal date support has been deprecated, please switch to date object usage"), o[b] = new Date(h(a, "medium"))) : o[b] = i[b] ? l.fromTimezone(new Date(i[b]), q.getOption("timezone")) : null, o.refreshView() }); break; case "maxMode": case "minMode": a.datepickerOptions[b] ? a.$watch(function () { return a.datepickerOptions[b] }, function (c) { o[b] = a[b] = angular.isDefined(c) ? c : a.datepickerOptions[b], ("minMode" === b && o.modes.indexOf(a.datepickerOptions.datepickerMode) < o.modes.indexOf(o[b]) || "maxMode" === b && o.modes.indexOf(a.datepickerOptions.datepickerMode) > o.modes.indexOf(o[b])) && (a.datepickerMode = o[b], a.datepickerOptions.datepickerMode = o[b]) }) : o[b] = a[b] = i[b] || null } }), a.uniqueId = "datepicker-" + a.$id + "-" + Math.floor(1e4 * Math.random()), a.disabled = angular.isDefined(c.disabled) || !1, angular.isDefined(c.ngDisabled) && r.push(a.$parent.$watch(c.ngDisabled, function (b) { a.disabled = b, o.refreshView() })), a.isActive = function (b) { return 0 === o.compare(b.date, o.activeDate) ? (a.activeDateId = b.uid, !0) : !1 }, this.init = function (b) { p = b, q = n(p), a.datepickerOptions.initDate ? (o.activeDate = l.fromTimezone(a.datepickerOptions.initDate, q.getOption("timezone")) || new Date, a.$watch("datepickerOptions.initDate", function (a) { a && (p.$isEmpty(p.$modelValue) || p.$invalid) && (o.activeDate = l.fromTimezone(a, q.getOption("timezone")), o.refreshView()) })) : o.activeDate = new Date; var c = p.$modelValue ? new Date(p.$modelValue) : new Date; this.activeDate = isNaN(c) ? l.fromTimezone(new Date, q.getOption("timezone")) : l.fromTimezone(c, q.getOption("timezone")), p.$render = function () { o.render() } }, this.render = function () { if (p.$viewValue) { var a = new Date(p.$viewValue), b = !isNaN(a); b ? this.activeDate = l.fromTimezone(a, q.getOption("timezone")) : k || g.error('Datepicker directive: "ng-model" value must be a Date object') } this.refreshView() }, this.refreshView = function () { if (this.element) { a.selectedDt = null, this._refreshView(), a.activeDt && (a.activeDateId = a.activeDt.uid); var b = p.$viewValue ? new Date(p.$viewValue) : null; b = l.fromTimezone(b, q.getOption("timezone")), p.$setValidity("dateDisabled", !b || this.element && !this.isDisabled(b)) } }, this.createDateObject = function (b, c) { var d = p.$viewValue ? new Date(p.$viewValue) : null; d = l.fromTimezone(d, q.getOption("timezone")); var e = new Date; e = l.fromTimezone(e, q.getOption("timezone")); var f = this.compare(b, e), g = { date: b, label: l.filter(b, c), selected: d && 0 === this.compare(b, d), disabled: this.isDisabled(b), past: 0 > f, current: 0 === f, future: f > 0, customClass: this.customClass(b) || null }; return d && 0 === this.compare(b, d) && (a.selectedDt = g), o.activeDate && 0 === this.compare(g.date, o.activeDate) && (a.activeDt = g), g }, this.isDisabled = function (b) { return a.disabled || this.minDate && this.compare(b, this.minDate) < 0 || this.maxDate && this.compare(b, this.maxDate) > 0 || a.dateDisabled && a.dateDisabled({ date: b, mode: a.datepickerMode }) }, this.customClass = function (b) { return a.customClass({ date: b, mode: a.datepickerMode }) }, this.split = function (a, b) { for (var c = []; a.length > 0;) c.push(a.splice(0, b)); return c }, a.select = function (b) { if (a.datepickerMode === o.minMode) { var c = p.$viewValue ? l.fromTimezone(new Date(p.$viewValue), q.getOption("timezone")) : new Date(0, 0, 0, 0, 0, 0, 0); c.setFullYear(b.getFullYear(), b.getMonth(), b.getDate()), c = l.toTimezone(c, q.getOption("timezone")), p.$setViewValue(c), p.$render() } else o.activeDate = b, m(o.modes[o.modes.indexOf(a.datepickerMode) - 1]), a.$emit("uib:datepicker.mode"); a.$broadcast("uib:datepicker.focus") }, a.move = function (a) { var b = o.activeDate.getFullYear() + a * (o.step.years || 0), c = o.activeDate.getMonth() + a * (o.step.months || 0); o.activeDate.setFullYear(b, c, 1), o.refreshView() }, a.toggleMode = function (b) { b = b || 1, a.datepickerMode === o.maxMode && 1 === b || a.datepickerMode === o.minMode && -1 === b || (m(o.modes[o.modes.indexOf(a.datepickerMode) + b]), a.$emit("uib:datepicker.mode")) }, a.keys = { 13: "enter", 32: "space", 33: "pageup", 34: "pagedown", 35: "end", 36: "home", 37: "left", 38: "up", 39: "right", 40: "down" }; var s = function () { o.element[0].focus() }; a.$on("uib:datepicker.focus", s), a.keydown = function (b) { var c = a.keys[b.which]; if (c && !b.shiftKey && !b.altKey && !a.disabled) if (b.preventDefault(), o.shortcutPropagation || b.stopPropagation(), "enter" === c || "space" === c) { if (o.isDisabled(o.activeDate)) return; a.select(o.activeDate) } else !b.ctrlKey || "up" !== c && "down" !== c ? (o.handleKeyDown(c, b), o.refreshView()) : a.toggleMode("up" === c ? 1 : -1) }, b.on("keydown", function (b) { a.$apply(function () { a.keydown(b) }) }), a.$on("$destroy", function () { for (; r.length;) r.shift()() }) }]).controller("UibDaypickerController", ["$scope", "$element", "dateFilter", function (a, b, c) { function d(a, b) { return 1 !== b || a % 4 !== 0 || a % 100 === 0 && a % 400 !== 0 ? f[b] : 29 } function e(a) { var b = new Date(a); b.setDate(b.getDate() + 4 - (b.getDay() || 7)); var c = b.getTime(); return b.setMonth(0), b.setDate(1), Math.floor(Math.round((c - b) / 864e5) / 7) + 1 } var f = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; this.step = { months: 1 }, this.element = b, this.init = function (b) { angular.extend(b, this), a.showWeeks = b.showWeeks, b.refreshView() }, this.getDates = function (a, b) { for (var c, d = new Array(b), e = new Date(a), f = 0; b > f;) c = new Date(e), d[f++] = c, e.setDate(e.getDate() + 1); return d }, this._refreshView = function () { var b = this.activeDate.getFullYear(), d = this.activeDate.getMonth(), f = new Date(this.activeDate); f.setFullYear(b, d, 1); var g = this.startingDay - f.getDay(), h = g > 0 ? 7 - g : -g, i = new Date(f); h > 0 && i.setDate(-h + 1); for (var j = this.getDates(i, 42), k = 0; 42 > k; k++) j[k] = angular.extend(this.createDateObject(j[k], this.formatDay), { secondary: j[k].getMonth() !== d, uid: a.uniqueId + "-" + k }); a.labels = new Array(7); for (var l = 0; 7 > l; l++) a.labels[l] = { abbr: c(j[l].date, this.formatDayHeader), full: c(j[l].date, "EEEE") }; if (a.title = c(this.activeDate, this.formatDayTitle), a.rows = this.split(j, 7), a.showWeeks) { a.weekNumbers = []; for (var m = (11 - this.startingDay) % 7, n = a.rows.length, o = 0; n > o; o++) a.weekNumbers.push(e(a.rows[o][m].date)) } }, this.compare = function (a, b) { var c = new Date(a.getFullYear(), a.getMonth(), a.getDate()), d = new Date(b.getFullYear(), b.getMonth(), b.getDate()); return c.setFullYear(a.getFullYear()), d.setFullYear(b.getFullYear()), c - d }, this.handleKeyDown = function (a, b) { var c = this.activeDate.getDate(); if ("left" === a) c -= 1; else if ("up" === a) c -= 7; else if ("right" === a) c += 1; else if ("down" === a) c += 7; else if ("pageup" === a || "pagedown" === a) { var e = this.activeDate.getMonth() + ("pageup" === a ? -1 : 1); this.activeDate.setMonth(e, 1), c = Math.min(d(this.activeDate.getFullYear(), this.activeDate.getMonth()), c) } else "home" === a ? c = 1 : "end" === a && (c = d(this.activeDate.getFullYear(), this.activeDate.getMonth())); this.activeDate.setDate(c) } }]).controller("UibMonthpickerController", ["$scope", "$element", "dateFilter", function (a, b, c) { this.step = { years: 1 }, this.element = b, this.init = function (a) { angular.extend(a, this), a.refreshView() }, this._refreshView = function () { for (var b, d = new Array(12), e = this.activeDate.getFullYear(), f = 0; 12 > f; f++) b = new Date(this.activeDate), b.setFullYear(e, f, 1), d[f] = angular.extend(this.createDateObject(b, this.formatMonth), { uid: a.uniqueId + "-" + f }); a.title = c(this.activeDate, this.formatMonthTitle), a.rows = this.split(d, this.monthColumns), a.yearHeaderColspan = this.monthColumns > 3 ? this.monthColumns - 2 : 1 }, this.compare = function (a, b) { var c = new Date(a.getFullYear(), a.getMonth()), d = new Date(b.getFullYear(), b.getMonth()); return c.setFullYear(a.getFullYear()), d.setFullYear(b.getFullYear()), c - d }, this.handleKeyDown = function (a, b) { var c = this.activeDate.getMonth(); if ("left" === a) c -= 1; else if ("up" === a) c -= this.monthColumns; else if ("right" === a) c += 1; else if ("down" === a) c += this.monthColumns; else if ("pageup" === a || "pagedown" === a) { var d = this.activeDate.getFullYear() + ("pageup" === a ? -1 : 1); this.activeDate.setFullYear(d) } else "home" === a ? c = 0 : "end" === a && (c = 11); this.activeDate.setMonth(c) } }]).controller("UibYearpickerController", ["$scope", "$element", "dateFilter", function (a, b, c) { function d(a) { return parseInt((a - 1) / f, 10) * f + 1 } var e, f; this.element = b, this.yearpickerInit = function () { e = this.yearColumns, f = this.yearRows * e, this.step = { years: f } }, this._refreshView = function () { for (var b, c = new Array(f), g = 0, h = d(this.activeDate.getFullYear()) ; f > g; g++) b = new Date(this.activeDate), b.setFullYear(h + g, 0, 1), c[g] = angular.extend(this.createDateObject(b, this.formatYear), { uid: a.uniqueId + "-" + g }); a.title = [c[0].label, c[f - 1].label].join(" - "), a.rows = this.split(c, e), a.columns = e }, this.compare = function (a, b) { return a.getFullYear() - b.getFullYear() }, this.handleKeyDown = function (a, b) { var c = this.activeDate.getFullYear(); "left" === a ? c -= 1 : "up" === a ? c -= e : "right" === a ? c += 1 : "down" === a ? c += e : "pageup" === a || "pagedown" === a ? c += ("pageup" === a ? -1 : 1) * f : "home" === a ? c = d(this.activeDate.getFullYear()) : "end" === a && (c = d(this.activeDate.getFullYear()) + f - 1), this.activeDate.setFullYear(c) } }]).directive("uibDatepicker", function () { return { templateUrl: function (a, b) { return b.templateUrl || "uib/template/datepicker/datepicker.html" }, scope: { datepickerOptions: "=?" }, require: ["uibDatepicker", "^ngModel"], restrict: "A", controller: "UibDatepickerController", controllerAs: "datepicker", link: function (a, b, c, d) { var e = d[0], f = d[1]; e.init(f) } } }).directive("uibDaypicker", function () {
     return {
         templateUrl: function (a, b) { return b.templateUrl || "uib/template/datepicker/day.html" },
         require: ["^uibDatepicker", "uibDaypicker"], restrict: "A", controller: "UibDaypickerController", link: function (a, b, c, d) { var e = d[0], f = d[1]; f.init(e) }
     }
 }).directive("uibMonthpicker", function () { return { templateUrl: function (a, b) { return b.templateUrl || "uib/template/datepicker/month.html" }, require: ["^uibDatepicker", "uibMonthpicker"], restrict: "A", controller: "UibMonthpickerController", link: function (a, b, c, d) { var e = d[0], f = d[1]; f.init(e) } } }).directive("uibYearpicker", function () { return { templateUrl: function (a, b) { return b.templateUrl || "uib/template/datepicker/year.html" }, require: ["^uibDatepicker", "uibYearpicker"], restrict: "A", controller: "UibYearpickerController", link: function (a, b, c, d) { var e = d[0]; angular.extend(e, d[1]), e.yearpickerInit(), e.refreshView() } } }), angular.module("ui.bootstrap.position", []).factory("$uibPosition", ["$document", "$window", function (a, b) { var c, d, e = { normal: /(auto|scroll)/, hidden: /(auto|scroll|hidden)/ }, f = { auto: /\s?auto?\s?/i, primary: /^(top|bottom|left|right)$/, secondary: /^(top|bottom|left|right|center)$/, vertical: /^(top|bottom)$/ }, g = /(HTML|BODY)/; return { getRawNode: function (a) { return a.nodeName ? a : a[0] || a }, parseStyle: function (a) { return a = parseFloat(a), isFinite(a) ? a : 0 }, offsetParent: function (c) { function d(a) { return "static" === (b.getComputedStyle(a).position || "static") } c = this.getRawNode(c); for (var e = c.offsetParent || a[0].documentElement; e && e !== a[0].documentElement && d(e) ;) e = e.offsetParent; return e || a[0].documentElement }, scrollbarWidth: function (e) { if (e) { if (angular.isUndefined(d)) { var f = a.find("body"); f.addClass("uib-position-body-scrollbar-measure"), d = b.innerWidth - f[0].clientWidth, d = isFinite(d) ? d : 0, f.removeClass("uib-position-body-scrollbar-measure") } return d } if (angular.isUndefined(c)) { var g = angular.element('<div class="uib-position-scrollbar-measure"></div>'); a.find("body").append(g), c = g[0].offsetWidth - g[0].clientWidth, c = isFinite(c) ? c : 0, g.remove() } return c }, scrollbarPadding: function (a) { a = this.getRawNode(a); var c = b.getComputedStyle(a), d = this.parseStyle(c.paddingRight), e = this.parseStyle(c.paddingBottom), f = this.scrollParent(a, !1, !0), h = this.scrollbarWidth(g.test(f.tagName)); return { scrollbarWidth: h, widthOverflow: f.scrollWidth > f.clientWidth, right: d + h, originalRight: d, heightOverflow: f.scrollHeight > f.clientHeight, bottom: e + h, originalBottom: e } }, isScrollable: function (a, c) { a = this.getRawNode(a); var d = c ? e.hidden : e.normal, f = b.getComputedStyle(a); return d.test(f.overflow + f.overflowY + f.overflowX) }, scrollParent: function (c, d, f) { c = this.getRawNode(c); var g = d ? e.hidden : e.normal, h = a[0].documentElement, i = b.getComputedStyle(c); if (f && g.test(i.overflow + i.overflowY + i.overflowX)) return c; var j = "absolute" === i.position, k = c.parentElement || h; if (k === h || "fixed" === i.position) return h; for (; k.parentElement && k !== h;) { var l = b.getComputedStyle(k); if (j && "static" !== l.position && (j = !1), !j && g.test(l.overflow + l.overflowY + l.overflowX)) break; k = k.parentElement } return k }, position: function (c, d) { c = this.getRawNode(c); var e = this.offset(c); if (d) { var f = b.getComputedStyle(c); e.top -= this.parseStyle(f.marginTop), e.left -= this.parseStyle(f.marginLeft) } var g = this.offsetParent(c), h = { top: 0, left: 0 }; return g !== a[0].documentElement && (h = this.offset(g), h.top += g.clientTop - g.scrollTop, h.left += g.clientLeft - g.scrollLeft), { width: Math.round(angular.isNumber(e.width) ? e.width : c.offsetWidth), height: Math.round(angular.isNumber(e.height) ? e.height : c.offsetHeight), top: Math.round(e.top - h.top), left: Math.round(e.left - h.left) } }, offset: function (c) { c = this.getRawNode(c); var d = c.getBoundingClientRect(); return { width: Math.round(angular.isNumber(d.width) ? d.width : c.offsetWidth), height: Math.round(angular.isNumber(d.height) ? d.height : c.offsetHeight), top: Math.round(d.top + (b.pageYOffset || a[0].documentElement.scrollTop)), left: Math.round(d.left + (b.pageXOffset || a[0].documentElement.scrollLeft)) } }, viewportOffset: function (c, d, e) { c = this.getRawNode(c), e = e !== !1; var f = c.getBoundingClientRect(), g = { top: 0, left: 0, bottom: 0, right: 0 }, h = d ? a[0].documentElement : this.scrollParent(c), i = h.getBoundingClientRect(); if (g.top = i.top + h.clientTop, g.left = i.left + h.clientLeft, h === a[0].documentElement && (g.top += b.pageYOffset, g.left += b.pageXOffset), g.bottom = g.top + h.clientHeight, g.right = g.left + h.clientWidth, e) { var j = b.getComputedStyle(h); g.top += this.parseStyle(j.paddingTop), g.bottom -= this.parseStyle(j.paddingBottom), g.left += this.parseStyle(j.paddingLeft), g.right -= this.parseStyle(j.paddingRight) } return { top: Math.round(f.top - g.top), bottom: Math.round(g.bottom - f.bottom), left: Math.round(f.left - g.left), right: Math.round(g.right - f.right) } }, parsePlacement: function (a) { var b = f.auto.test(a); return b && (a = a.replace(f.auto, "")), a = a.split("-"), a[0] = a[0] || "top", f.primary.test(a[0]) || (a[0] = "top"), a[1] = a[1] || "center", f.secondary.test(a[1]) || (a[1] = "center"), b ? a[2] = !0 : a[2] = !1, a }, positionElements: function (a, c, d, e) { a = this.getRawNode(a), c = this.getRawNode(c); var g = angular.isDefined(c.offsetWidth) ? c.offsetWidth : c.prop("offsetWidth"), h = angular.isDefined(c.offsetHeight) ? c.offsetHeight : c.prop("offsetHeight"); d = this.parsePlacement(d); var i = e ? this.offset(a) : this.position(a), j = { top: 0, left: 0, placement: "" }; if (d[2]) { var k = this.viewportOffset(a, e), l = b.getComputedStyle(c), m = { width: g + Math.round(Math.abs(this.parseStyle(l.marginLeft) + this.parseStyle(l.marginRight))), height: h + Math.round(Math.abs(this.parseStyle(l.marginTop) + this.parseStyle(l.marginBottom))) }; if (d[0] = "top" === d[0] && m.height > k.top && m.height <= k.bottom ? "bottom" : "bottom" === d[0] && m.height > k.bottom && m.height <= k.top ? "top" : "left" === d[0] && m.width > k.left && m.width <= k.right ? "right" : "right" === d[0] && m.width > k.right && m.width <= k.left ? "left" : d[0], d[1] = "top" === d[1] && m.height - i.height > k.bottom && m.height - i.height <= k.top ? "bottom" : "bottom" === d[1] && m.height - i.height > k.top && m.height - i.height <= k.bottom ? "top" : "left" === d[1] && m.width - i.width > k.right && m.width - i.width <= k.left ? "right" : "right" === d[1] && m.width - i.width > k.left && m.width - i.width <= k.right ? "left" : d[1], "center" === d[1]) if (f.vertical.test(d[0])) { var n = i.width / 2 - g / 2; k.left + n < 0 && m.width - i.width <= k.right ? d[1] = "left" : k.right + n < 0 && m.width - i.width <= k.left && (d[1] = "right") } else { var o = i.height / 2 - m.height / 2; k.top + o < 0 && m.height - i.height <= k.bottom ? d[1] = "top" : k.bottom + o < 0 && m.height - i.height <= k.top && (d[1] = "bottom") } } switch (d[0]) { case "top": j.top = i.top - h; break; case "bottom": j.top = i.top + i.height; break; case "left": j.left = i.left - g; break; case "right": j.left = i.left + i.width } switch (d[1]) { case "top": j.top = i.top; break; case "bottom": j.top = i.top + i.height - h; break; case "left": j.left = i.left; break; case "right": j.left = i.left + i.width - g; break; case "center": f.vertical.test(d[0]) ? j.left = i.left + i.width / 2 - g / 2 : j.top = i.top + i.height / 2 - h / 2 } return j.top = Math.round(j.top), j.left = Math.round(j.left), j.placement = "center" === d[1] ? d[0] : d[0] + "-" + d[1], j }, adjustTop: function (a, b, c, d) { return -1 !== a.indexOf("top") && c !== d ? { top: b.top - d + "px" } : void 0 }, positionArrow: function (a, c) { a = this.getRawNode(a); var d = a.querySelector(".tooltip-inner, .popover-inner"); if (d) { var e = angular.element(d).hasClass("tooltip-inner"), g = e ? a.querySelector(".tooltip-arrow") : a.querySelector(".arrow"); if (g) { var h = { top: "", bottom: "", left: "", right: "" }; if (c = this.parsePlacement(c), "center" === c[1]) return void angular.element(g).css(h); var i = "border-" + c[0] + "-width", j = b.getComputedStyle(g)[i], k = "border-"; k += f.vertical.test(c[0]) ? c[0] + "-" + c[1] : c[1] + "-" + c[0], k += "-radius"; var l = b.getComputedStyle(e ? d : a)[k]; switch (c[0]) { case "top": h.bottom = e ? "0" : "-" + j; break; case "bottom": h.top = e ? "0" : "-" + j; break; case "left": h.right = e ? "0" : "-" + j; break; case "right": h.left = e ? "0" : "-" + j } h[c[1]] = l, angular.element(g).css(h) } } } } }]), angular.module("ui.bootstrap.datepickerPopup", ["ui.bootstrap.datepicker", "ui.bootstrap.position"]).value("$datepickerPopupLiteralWarning", !0).constant("uibDatepickerPopupConfig", { altInputFormats: [], appendToBody: !1, clearText: "Clear", closeOnDateSelection: !0, closeText: "Done", currentText: "Today", datepickerPopup: "yyyy-MM-dd", datepickerPopupTemplateUrl: "uib/template/datepickerPopup/popup.html", datepickerTemplateUrl: "uib/template/datepicker/datepicker.html", html5Types: { date: "yyyy-MM-dd", "datetime-local": "yyyy-MM-ddTHH:mm:ss.sss", month: "yyyy-MM" }, onOpenFocus: !0, showButtonBar: !0, placement: "auto bottom-left" }).controller("UibDatepickerPopupController", ["$scope", "$element", "$attrs", "$compile", "$log", "$parse", "$window", "$document", "$rootScope", "$uibPosition", "dateFilter", "uibDateParser", "uibDatepickerPopupConfig", "$timeout", "uibDatepickerConfig", "$datepickerPopupLiteralWarning", function (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) { function q(b) { var c = l.parse(b, x, a.date); if (isNaN(c)) for (var d = 0; d < J.length; d++) if (c = l.parse(b, J[d], a.date), !isNaN(c)) return c; return c } function r(a) { if (angular.isNumber(a) && (a = new Date(a)), !a) return null; if (angular.isDate(a) && !isNaN(a)) return a; if (angular.isString(a)) { var b = q(a); if (!isNaN(b)) return l.toTimezone(b, H.getOption("timezone")) } return H.getOption("allowInvalid") ? a : void 0 } function s(a, b) { var d = a || b; return c.ngRequired || d ? (angular.isNumber(d) && (d = new Date(d)), d ? angular.isDate(d) && !isNaN(d) ? !0 : angular.isString(d) ? !isNaN(q(d)) : !1 : !0) : !0 } function t(c) { if (a.isOpen || !a.disabled) { var d = I[0], e = b[0].contains(c.target), f = void 0 !== d.contains && d.contains(c.target); !a.isOpen || e || f || a.$apply(function () { a.isOpen = !1 }) } } function u(c) { 27 === c.which && a.isOpen ? (c.preventDefault(), c.stopPropagation(), a.$apply(function () { a.isOpen = !1 }), b[0].focus()) : 40 !== c.which || a.isOpen || (c.preventDefault(), c.stopPropagation(), a.$apply(function () { a.isOpen = !0 })) } function v() { if (a.isOpen) { var d = angular.element(I[0].querySelector(".uib-datepicker-popup")), e = c.popupPlacement ? c.popupPlacement : m.placement, f = j.positionElements(b, d, e, z); d.css({ top: f.top + "px", left: f.left + "px" }), d.hasClass("uib-position-measure") && d.removeClass("uib-position-measure") } } function w(a) { var b; return angular.version.minor < 6 ? (b = angular.isObject(a.$options) ? a.$options : { timezone: null }, b.getOption = function (a) { return b[a] }) : b = a.$options, b } var x, y, z, A, B, C, D, E, F, G, H, I, J, K = !1, L = []; this.init = function (e) { if (G = e, H = w(G), y = angular.isDefined(c.closeOnDateSelection) ? a.$parent.$eval(c.closeOnDateSelection) : m.closeOnDateSelection, z = angular.isDefined(c.datepickerAppendToBody) ? a.$parent.$eval(c.datepickerAppendToBody) : m.appendToBody, A = angular.isDefined(c.onOpenFocus) ? a.$parent.$eval(c.onOpenFocus) : m.onOpenFocus, B = angular.isDefined(c.datepickerPopupTemplateUrl) ? c.datepickerPopupTemplateUrl : m.datepickerPopupTemplateUrl, C = angular.isDefined(c.datepickerTemplateUrl) ? c.datepickerTemplateUrl : m.datepickerTemplateUrl, J = angular.isDefined(c.altInputFormats) ? a.$parent.$eval(c.altInputFormats) : m.altInputFormats, a.showButtonBar = angular.isDefined(c.showButtonBar) ? a.$parent.$eval(c.showButtonBar) : m.showButtonBar, m.html5Types[c.type] ? (x = m.html5Types[c.type], K = !0) : (x = c.uibDatepickerPopup || m.datepickerPopup, c.$observe("uibDatepickerPopup", function (a, b) { var c = a || m.datepickerPopup; if (c !== x && (x = c, G.$modelValue = null, !x)) throw new Error("uibDatepickerPopup must have a date format specified.") })), !x) throw new Error("uibDatepickerPopup must have a date format specified."); if (K && c.uibDatepickerPopup) throw new Error("HTML5 date input types do not support custom formats."); D = angular.element("<div uib-datepicker-popup-wrap><div uib-datepicker></div></div>"), D.attr({ "ng-model": "date", "ng-change": "dateSelection(date)", "template-url": B }), E = angular.element(D.children()[0]), E.attr("template-url", C), a.datepickerOptions || (a.datepickerOptions = {}), K && "month" === c.type && (a.datepickerOptions.datepickerMode = "month", a.datepickerOptions.minMode = "month"), E.attr("datepicker-options", "datepickerOptions"), K ? G.$formatters.push(function (b) { return a.date = l.fromTimezone(b, H.getOption("timezone")), b }) : (G.$$parserName = "date", G.$validators.date = s, G.$parsers.unshift(r), G.$formatters.push(function (b) { return G.$isEmpty(b) ? (a.date = b, b) : (angular.isNumber(b) && (b = new Date(b)), a.date = l.fromTimezone(b, H.getOption("timezone")), l.filter(a.date, x)) })), G.$viewChangeListeners.push(function () { a.date = q(G.$viewValue) }), b.on("keydown", u), I = d(D)(a), D.remove(), z ? h.find("body").append(I) : b.after(I), a.$on("$destroy", function () { for (a.isOpen === !0 && (i.$$phase || a.$apply(function () { a.isOpen = !1 })), I.remove(), b.off("keydown", u), h.off("click", t), F && F.off("scroll", v), angular.element(g).off("resize", v) ; L.length;) L.shift()() }) }, a.getText = function (b) { return a[b + "Text"] || m[b + "Text"] }, a.isDisabled = function (b) { "today" === b && (b = l.fromTimezone(new Date, H.getOption("timezone"))); var c = {}; return angular.forEach(["minDate", "maxDate"], function (b) { a.datepickerOptions[b] ? angular.isDate(a.datepickerOptions[b]) ? c[b] = new Date(a.datepickerOptions[b]) : (p && e.warn("Literal date support has been deprecated, please switch to date object usage"), c[b] = new Date(k(a.datepickerOptions[b], "medium"))) : c[b] = null }), a.datepickerOptions && c.minDate && a.compare(b, c.minDate) < 0 || c.maxDate && a.compare(b, c.maxDate) > 0 }, a.compare = function (a, b) { return new Date(a.getFullYear(), a.getMonth(), a.getDate()) - new Date(b.getFullYear(), b.getMonth(), b.getDate()) }, a.dateSelection = function (c) { a.date = c; var d = a.date ? l.filter(a.date, x) : null; b.val(d), G.$setViewValue(d), y && (a.isOpen = !1, b[0].focus()) }, a.keydown = function (c) { 27 === c.which && (c.stopPropagation(), a.isOpen = !1, b[0].focus()) }, a.select = function (b, c) { if (c.stopPropagation(), "today" === b) { var d = new Date; angular.isDate(a.date) ? (b = new Date(a.date), b.setFullYear(d.getFullYear(), d.getMonth(), d.getDate())) : (b = l.fromTimezone(d, H.getOption("timezone")), b.setHours(0, 0, 0, 0)) } a.dateSelection(b) }, a.close = function (c) { c.stopPropagation(), a.isOpen = !1, b[0].focus() }, a.disabled = angular.isDefined(c.disabled) || !1, c.ngDisabled && L.push(a.$parent.$watch(f(c.ngDisabled), function (b) { a.disabled = b })), a.$watch("isOpen", function (d) { d ? a.disabled ? a.isOpen = !1 : n(function () { v(), A && a.$broadcast("uib:datepicker.focus"), h.on("click", t); var d = c.popupPlacement ? c.popupPlacement : m.placement; z || j.parsePlacement(d)[2] ? (F = F || angular.element(j.scrollParent(b)), F && F.on("scroll", v)) : F = null, angular.element(g).on("resize", v) }, 0, !1) : (h.off("click", t), F && F.off("scroll", v), angular.element(g).off("resize", v)) }), a.$on("uib:datepicker.mode", function () { n(v, 0, !1) }) }]).directive("uibDatepickerPopup", function () { return { require: ["ngModel", "uibDatepickerPopup"], controller: "UibDatepickerPopupController", scope: { datepickerOptions: "=?", isOpen: "=?", currentText: "@", clearText: "@", closeText: "@" }, link: function (a, b, c, d) { var e = d[0], f = d[1]; f.init(e) } } }).directive("uibDatepickerPopupWrap", function () { return { restrict: "A", transclude: !0, templateUrl: function (a, b) { return b.templateUrl || "uib/template/datepickerPopup/popup.html" } } }), angular.module("ui.bootstrap.debounce", []).factory("$$debounce", ["$timeout", function (a) { return function (b, c) { var d; return function () { var e = this, f = Array.prototype.slice.call(arguments); d && a.cancel(d), d = a(function () { b.apply(e, f) }, c) } } }]), angular.module("ui.bootstrap.multiMap", []).factory("$$multiMap", function () { return { createNew: function () { var a = {}; return { entries: function () { return Object.keys(a).map(function (b) { return { key: b, value: a[b] } }) }, get: function (b) { return a[b] }, hasKey: function (b) { return !!a[b] }, keys: function () { return Object.keys(a) }, put: function (b, c) { a[b] || (a[b] = []), a[b].push(c) }, remove: function (b, c) { var d = a[b]; if (d) { var e = d.indexOf(c); -1 !== e && d.splice(e, 1), d.length || delete a[b] } } } } } }), angular.module("ui.bootstrap.dropdown", ["ui.bootstrap.multiMap", "ui.bootstrap.position"]).constant("uibDropdownConfig", { appendToOpenClass: "uib-dropdown-open", openClass: "open" }).service("uibDropdownService", ["$document", "$rootScope", "$$multiMap", function (a, b, c) { var d = null, e = c.createNew(); this.isOnlyOpen = function (a, b) { var c = e.get(b); if (c) { var d = c.reduce(function (b, c) { return c.scope === a ? c : b }, {}); if (d) return 1 === c.length } return !1 }, this.open = function (b, c, g) { if (d || a.on("click", f), d && d !== b && (d.isOpen = !1), d = b, g) { var h = e.get(g); if (h) { var i = h.map(function (a) { return a.scope }); -1 === i.indexOf(b) && e.put(g, { scope: b }) } else e.put(g, { scope: b }) } }, this.close = function (b, c, g) { if (d === b && (a.off("click", f), a.off("keydown", this.keybindFilter), d = null), g) { var h = e.get(g); if (h) { var i = h.reduce(function (a, c) { return c.scope === b ? c : a }, {}); i && e.remove(g, i) } } }; var f = function (a) { if (d && d.isOpen && !(a && "disabled" === d.getAutoClose() || a && 3 === a.which)) { var c = d.getToggleElement(); if (!(a && c && c[0].contains(a.target))) { var e = d.getDropdownElement(); a && "outsideClick" === d.getAutoClose() && e && e[0].contains(a.target) || (d.focusToggleElement(), d.isOpen = !1, b.$$phase || d.$apply()) } } }; this.keybindFilter = function (a) { if (d) { var b = d.getDropdownElement(), c = d.getToggleElement(), e = b && b[0].contains(a.target), g = c && c[0].contains(a.target); 27 === a.which ? (a.stopPropagation(), d.focusToggleElement(), f()) : d.isKeynavEnabled() && -1 !== [38, 40].indexOf(a.which) && d.isOpen && (e || g) && (a.preventDefault(), a.stopPropagation(), d.focusDropdownEntry(a.which)) } } }]).controller("UibDropdownController", ["$scope", "$element", "$attrs", "$parse", "uibDropdownConfig", "uibDropdownService", "$animate", "$uibPosition", "$document", "$compile", "$templateRequest", function (a, b, c, d, e, f, g, h, i, j, k) { function l() { b.append(o.dropdownMenu) } var m, n, o = this, p = a.$new(), q = e.appendToOpenClass, r = e.openClass, s = angular.noop, t = c.onToggle ? d(c.onToggle) : angular.noop, u = !1, v = i.find("body"); b.addClass("dropdown"), this.init = function () { c.isOpen && (n = d(c.isOpen), s = n.assign, a.$watch(n, function (a) { p.isOpen = !!a })), u = angular.isDefined(c.keyboardNav) }, this.toggle = function (a) { return p.isOpen = arguments.length ? !!a : !p.isOpen, angular.isFunction(s) && s(p, p.isOpen), p.isOpen }, this.isOpen = function () { return p.isOpen }, p.getToggleElement = function () { return o.toggleElement }, p.getAutoClose = function () { return c.autoClose || "always" }, p.getElement = function () { return b }, p.isKeynavEnabled = function () { return u }, p.focusDropdownEntry = function (a) { var c = o.dropdownMenu ? angular.element(o.dropdownMenu).find("a") : b.find("ul").eq(0).find("a"); switch (a) { case 40: angular.isNumber(o.selectedOption) ? o.selectedOption = o.selectedOption === c.length - 1 ? o.selectedOption : o.selectedOption + 1 : o.selectedOption = 0; break; case 38: angular.isNumber(o.selectedOption) ? o.selectedOption = 0 === o.selectedOption ? 0 : o.selectedOption - 1 : o.selectedOption = c.length - 1 } c[o.selectedOption].focus() }, p.getDropdownElement = function () { return o.dropdownMenu }, p.focusToggleElement = function () { o.toggleElement && o.toggleElement[0].focus() }, p.$watch("isOpen", function (e, n) { var u = null, w = !1; if (angular.isDefined(c.dropdownAppendTo)) { var x = d(c.dropdownAppendTo)(p); x && (u = angular.element(x)) } if (angular.isDefined(c.dropdownAppendToBody)) { var y = d(c.dropdownAppendToBody)(p); y !== !1 && (w = !0) } if (w && !u && (u = v), u && o.dropdownMenu && (e ? (u.append(o.dropdownMenu), b.on("$destroy", l)) : (b.off("$destroy", l), l())), u && o.dropdownMenu) { var z, A, B, C = h.positionElements(b, o.dropdownMenu, "bottom-left", !0), D = 0; if (z = { top: C.top + "px", display: e ? "block" : "none" }, A = o.dropdownMenu.hasClass("dropdown-menu-right"), A ? (z.left = "auto", B = h.scrollbarPadding(u), B.heightOverflow && B.scrollbarWidth && (D = B.scrollbarWidth), z.right = window.innerWidth - D - (C.left + b.prop("offsetWidth")) + "px") : (z.left = C.left + "px", z.right = "auto"), !w) { var E = h.offset(u); z.top = C.top - E.top + "px", A ? z.right = window.innerWidth - (C.left - E.left + b.prop("offsetWidth")) + "px" : z.left = C.left - E.left + "px" } o.dropdownMenu.css(z) } var F = u ? u : b, G = u ? q : r, H = F.hasClass(G), I = f.isOnlyOpen(a, u); if (H === !e) { var J; J = u ? I ? "removeClass" : "addClass" : e ? "addClass" : "removeClass", g[J](F, G).then(function () { angular.isDefined(e) && e !== n && t(a, { open: !!e }) }) } if (e) o.dropdownMenuTemplateUrl ? k(o.dropdownMenuTemplateUrl).then(function (a) { m = p.$new(), j(a.trim())(m, function (a) { var b = a; o.dropdownMenu.replaceWith(b), o.dropdownMenu = b, i.on("keydown", f.keybindFilter) }) }) : i.on("keydown", f.keybindFilter), p.focusToggleElement(), f.open(p, b, u); else { if (f.close(p, b, u), o.dropdownMenuTemplateUrl) { m && m.$destroy(); var K = angular.element('<ul class="dropdown-menu"></ul>'); o.dropdownMenu.replaceWith(K), o.dropdownMenu = K } o.selectedOption = null } angular.isFunction(s) && s(a, e) }) }]).directive("uibDropdown", function () { return { controller: "UibDropdownController", link: function (a, b, c, d) { d.init() } } }).directive("uibDropdownMenu", function () { return { restrict: "A", require: "?^uibDropdown", link: function (a, b, c, d) { if (d && !angular.isDefined(c.dropdownNested)) { b.addClass("dropdown-menu"); var e = c.templateUrl; e && (d.dropdownMenuTemplateUrl = e), d.dropdownMenu || (d.dropdownMenu = b) } } } }).directive("uibDropdownToggle", function () { return { require: "?^uibDropdown", link: function (a, b, c, d) { if (d) { b.addClass("dropdown-toggle"), d.toggleElement = b; var e = function (e) { e.preventDefault(), b.hasClass("disabled") || c.disabled || a.$apply(function () { d.toggle() }) }; b.on("click", e), b.attr({ "aria-haspopup": !0, "aria-expanded": !1 }), a.$watch(d.isOpen, function (a) { b.attr("aria-expanded", !!a) }), a.$on("$destroy", function () { b.off("click", e) }) } } } }), angular.module("ui.bootstrap.stackedMap", []).factory("$$stackedMap", function () { return { createNew: function () { var a = []; return { add: function (b, c) { a.push({ key: b, value: c }) }, get: function (b) { for (var c = 0; c < a.length; c++) if (b === a[c].key) return a[c] }, keys: function () { for (var b = [], c = 0; c < a.length; c++) b.push(a[c].key); return b }, top: function () { return a[a.length - 1] }, remove: function (b) { for (var c = -1, d = 0; d < a.length; d++) if (b === a[d].key) { c = d; break } return a.splice(c, 1)[0] }, removeTop: function () { return a.pop() }, length: function () { return a.length } } } } }), angular.module("ui.bootstrap.modal", ["ui.bootstrap.multiMap", "ui.bootstrap.stackedMap", "ui.bootstrap.position"]).provider("$uibResolve", function () { var a = this; this.resolver = null, this.setResolver = function (a) { this.resolver = a }, this.$get = ["$injector", "$q", function (b, c) { var d = a.resolver ? b.get(a.resolver) : null; return { resolve: function (a, e, f, g) { if (d) return d.resolve(a, e, f, g); var h = []; return angular.forEach(a, function (a) { angular.isFunction(a) || angular.isArray(a) ? h.push(c.resolve(b.invoke(a))) : angular.isString(a) ? h.push(c.resolve(b.get(a))) : h.push(c.resolve(a)) }), c.all(h).then(function (b) { var c = {}, d = 0; return angular.forEach(a, function (a, e) { c[e] = b[d++] }), c }) } } }] }).directive("uibModalBackdrop", ["$animate", "$injector", "$uibModalStack", function (a, b, c) { function d(b, d, e) { e.modalInClass && (a.addClass(d, e.modalInClass), b.$on(c.NOW_CLOSING_EVENT, function (c, f) { var g = f(); b.modalOptions.animation ? a.removeClass(d, e.modalInClass).then(g) : g() })) } return { restrict: "A", compile: function (a, b) { return a.addClass(b.backdropClass), d } } }]).directive("uibModalWindow", ["$uibModalStack", "$q", "$animateCss", "$document", function (a, b, c, d) { return { scope: { index: "@" }, restrict: "A", transclude: !0, templateUrl: function (a, b) { return b.templateUrl || "uib/template/modal/window.html" }, link: function (e, f, g) { f.addClass(g.windowTopClass || ""), e.size = g.size, e.close = function (b) { var c = a.getTop(); c && c.value.backdrop && "static" !== c.value.backdrop && b.target === b.currentTarget && (b.preventDefault(), b.stopPropagation(), a.dismiss(c.key, "backdrop click")) }, f.on("click", e.close), e.$isRendered = !0; var h = b.defer(); e.$$postDigest(function () { h.resolve() }), h.promise.then(function () { var h = null; g.modalInClass && (h = c(f, { addClass: g.modalInClass }).start(), e.$on(a.NOW_CLOSING_EVENT, function (a, b) { var d = b(); c(f, { removeClass: g.modalInClass }).start().then(d) })), b.when(h).then(function () { var b = a.getTop(); if (b && a.modalRendered(b.key), !d[0].activeElement || !f[0].contains(d[0].activeElement)) { var c = f[0].querySelector("[autofocus]"); c ? c.focus() : f[0].focus() } }) }) } } }]).directive("uibModalAnimationClass", function () { return { compile: function (a, b) { b.modalAnimation && a.addClass(b.uibModalAnimationClass) } } }).directive("uibModalTransclude", ["$animate", function (a) { return { link: function (b, c, d, e, f) { f(b.$parent, function (b) { c.empty(), a.enter(b, c) }) } } }]).factory("$uibModalStack", ["$animate", "$animateCss", "$document", "$compile", "$rootScope", "$q", "$$multiMap", "$$stackedMap", "$uibPosition", function (a, b, c, d, e, f, g, h, i) { function j(a) { var b = "-"; return a.replace(E, function (a, c) { return (c ? b : "") + a.toLowerCase() }) } function k(a) { return !!(a.offsetWidth || a.offsetHeight || a.getClientRects().length) } function l() { for (var a = -1, b = x.keys(), c = 0; c < b.length; c++) x.get(b[c]).value.backdrop && (a = c); return a > -1 && A > a && (a = A), a } function m(a, b) { var c = x.get(a).value, d = c.appendTo; x.remove(a), B = x.top(), B && (A = parseInt(B.value.modalDomEl.attr("index"), 10)), p(c.modalDomEl, c.modalScope, function () { var b = c.openedClass || w; y.remove(b, a); var e = y.hasKey(b); d.toggleClass(b, e), !e && v && v.heightOverflow && v.scrollbarWidth && (v.originalRight ? d.css({ paddingRight: v.originalRight + "px" }) : d.css({ paddingRight: "" }), v = null), n(!0) }, c.closedDeferred), o(), b && b.focus ? b.focus() : d.focus && d.focus() } function n(a) { var b; x.length() > 0 && (b = x.top().value, b.modalDomEl.toggleClass(b.windowTopClass || "", a)) } function o() { if (t && -1 === l()) { var a = u; p(t, u, function () { a = null }), t = void 0, u = void 0 } } function p(b, c, d, e) { function g() { g.done || (g.done = !0, a.leave(b).then(function () { d && d(), b.remove(), e && e.resolve() }), c.$destroy()) } var h, i = null, j = function () { return h || (h = f.defer(), i = h.promise), function () { h.resolve() } }; return c.$broadcast(z.NOW_CLOSING_EVENT, j), f.when(i).then(g) } function q(a) { if (a.isDefaultPrevented()) return a; var b = x.top(); if (b) switch (a.which) { case 27: b.value.keyboard && (a.preventDefault(), e.$apply(function () { z.dismiss(b.key, "escape key press") })); break; case 9: var c = z.loadFocusElementList(b), d = !1; a.shiftKey ? (z.isFocusInFirstItem(a, c) || z.isModalFocused(a, b)) && (d = z.focusLastFocusableElement(c)) : z.isFocusInLastItem(a, c) && (d = z.focusFirstFocusableElement(c)), d && (a.preventDefault(), a.stopPropagation()) } } function r(a, b, c) { return !a.value.modalScope.$broadcast("modal.closing", b, c).defaultPrevented } function s() { Array.prototype.forEach.call(document.querySelectorAll("[" + C + "]"), function (a) { var b = parseInt(a.getAttribute(C), 10), c = b - 1; a.setAttribute(C, c), c || (a.removeAttribute(C), a.removeAttribute("aria-hidden")) }) } var t, u, v, w = "modal-open", x = h.createNew(), y = g.createNew(), z = { NOW_CLOSING_EVENT: "modal.stack.now-closing" }, A = 0, B = null, C = "data-bootstrap-modal-aria-hidden-count", D = "a[href], area[href], input:not([disabled]):not([tabindex='-1']), button:not([disabled]):not([tabindex='-1']),select:not([disabled]):not([tabindex='-1']), textarea:not([disabled]):not([tabindex='-1']), iframe, object, embed, *[tabindex]:not([tabindex='-1']), *[contenteditable=true]", E = /[A-Z]/g; return e.$watch(l, function (a) { u && (u.index = a) }), c.on("keydown", q), e.$on("$destroy", function () { c.off("keydown", q) }), z.open = function (b, f) { function g(a) { function b(a) { var b = a.parent() ? a.parent().children() : []; return Array.prototype.filter.call(b, function (b) { return b !== a[0] }) } if (a && "BODY" !== a[0].tagName) return b(a).forEach(function (a) { var b = "true" === a.getAttribute("aria-hidden"), c = parseInt(a.getAttribute(C), 10); c || (c = b ? 1 : 0), a.setAttribute(C, c + 1), a.setAttribute("aria-hidden", "true") }), g(a.parent()) } var h = c[0].activeElement, k = f.openedClass || w; n(!1), B = x.top(), x.add(b, { deferred: f.deferred, renderDeferred: f.renderDeferred, closedDeferred: f.closedDeferred, modalScope: f.scope, backdrop: f.backdrop, keyboard: f.keyboard, openedClass: f.openedClass, windowTopClass: f.windowTopClass, animation: f.animation, appendTo: f.appendTo }), y.put(k, b); var m = f.appendTo, o = l(); o >= 0 && !t && (u = e.$new(!0), u.modalOptions = f, u.index = o, t = angular.element('<div uib-modal-backdrop="modal-backdrop"></div>'), t.attr({ "class": "modal-backdrop", "ng-style": "{'z-index': 1040 + (index && 1 || 0) + index*10}", "uib-modal-animation-class": "fade", "modal-in-class": "in" }), f.backdropClass && t.addClass(f.backdropClass), f.animation && t.attr("modal-animation", "true"), d(t)(u), a.enter(t, m), i.isScrollable(m) && (v = i.scrollbarPadding(m), v.heightOverflow && v.scrollbarWidth && m.css({ paddingRight: v.right + "px" }))); var p; f.component ? (p = document.createElement(j(f.component.name)), p = angular.element(p), p.attr({ resolve: "$resolve", "modal-instance": "$uibModalInstance", close: "$close($value)", dismiss: "$dismiss($value)" })) : p = f.content, A = B ? parseInt(B.value.modalDomEl.attr("index"), 10) + 1 : 0; var q = angular.element('<div uib-modal-window="modal-window"></div>'); q.attr({ "class": "modal", "template-url": f.windowTemplateUrl, "window-top-class": f.windowTopClass, role: "dialog", "aria-labelledby": f.ariaLabelledBy, "aria-describedby": f.ariaDescribedBy, size: f.size, index: A, animate: "animate", "ng-style": "{'z-index': 1050 + $$topModalIndex*10, display: 'block'}", tabindex: -1, "uib-modal-animation-class": "fade", "modal-in-class": "in" }).append(p), f.windowClass && q.addClass(f.windowClass), f.animation && q.attr("modal-animation", "true"), m.addClass(k), f.scope && (f.scope.$$topModalIndex = A), a.enter(d(q)(f.scope), m), x.top().value.modalDomEl = q, x.top().value.modalOpener = h, g(q) }, z.close = function (a, b) { var c = x.get(a); return s(), c && r(c, b, !0) ? (c.value.modalScope.$$uibDestructionScheduled = !0, c.value.deferred.resolve(b), m(a, c.value.modalOpener), !0) : !c }, z.dismiss = function (a, b) { var c = x.get(a); return s(), c && r(c, b, !1) ? (c.value.modalScope.$$uibDestructionScheduled = !0, c.value.deferred.reject(b), m(a, c.value.modalOpener), !0) : !c }, z.dismissAll = function (a) { for (var b = this.getTop() ; b && this.dismiss(b.key, a) ;) b = this.getTop() }, z.getTop = function () { return x.top() }, z.modalRendered = function (a) { var b = x.get(a); b && b.value.renderDeferred.resolve() }, z.focusFirstFocusableElement = function (a) { return a.length > 0 ? (a[0].focus(), !0) : !1 }, z.focusLastFocusableElement = function (a) { return a.length > 0 ? (a[a.length - 1].focus(), !0) : !1 }, z.isModalFocused = function (a, b) { if (a && b) { var c = b.value.modalDomEl; if (c && c.length) return (a.target || a.srcElement) === c[0] } return !1 }, z.isFocusInFirstItem = function (a, b) { return b.length > 0 ? (a.target || a.srcElement) === b[0] : !1 }, z.isFocusInLastItem = function (a, b) { return b.length > 0 ? (a.target || a.srcElement) === b[b.length - 1] : !1 }, z.loadFocusElementList = function (a) { if (a) { var b = a.value.modalDomEl; if (b && b.length) { var c = b[0].querySelectorAll(D); return c ? Array.prototype.filter.call(c, function (a) { return k(a) }) : c } } }, z }]).provider("$uibModal", function () { var a = { options: { animation: !0, backdrop: !0, keyboard: !0 }, $get: ["$rootScope", "$q", "$document", "$templateRequest", "$controller", "$uibResolve", "$uibModalStack", function (b, c, d, e, f, g, h) { function i(a) { return a.template ? c.when(a.template) : e(angular.isFunction(a.templateUrl) ? a.templateUrl() : a.templateUrl) } var j = {}, k = null; return j.getPromiseChain = function () { return k }, j.open = function (e) { function j() { return q } var l = c.defer(), m = c.defer(), n = c.defer(), o = c.defer(), p = { result: l.promise, opened: m.promise, closed: n.promise, rendered: o.promise, close: function (a) { return h.close(p, a) }, dismiss: function (a) { return h.dismiss(p, a) } }; if (e = angular.extend({}, a.options, e), e.resolve = e.resolve || {}, e.appendTo = e.appendTo || d.find("body").eq(0), !e.appendTo.length) throw new Error("appendTo element not found. Make sure that the element passed is in DOM."); if (!e.component && !e.template && !e.templateUrl) throw new Error("One of component or template or templateUrl options is required."); var q; q = e.component ? c.when(g.resolve(e.resolve, {}, null, null)) : c.all([i(e), g.resolve(e.resolve, {}, null, null)]); var r; return r = k = c.all([k]).then(j, j).then(function (a) { function c(b, c, d, e) { b.$scope = g, b.$scope.$resolve = {}, d ? b.$scope.$uibModalInstance = p : b.$uibModalInstance = p; var f = c ? a[1] : a; angular.forEach(f, function (a, c) { e && (b[c] = a), b.$scope.$resolve[c] = a }) } var d = e.scope || b, g = d.$new(); g.$close = p.close, g.$dismiss = p.dismiss, g.$on("$destroy", function () { g.$$uibDestructionScheduled || g.$dismiss("$uibUnscheduledDestruction") }); var i, j, k = { scope: g, deferred: l, renderDeferred: o, closedDeferred: n, animation: e.animation, backdrop: e.backdrop, keyboard: e.keyboard, backdropClass: e.backdropClass, windowTopClass: e.windowTopClass, windowClass: e.windowClass, windowTemplateUrl: e.windowTemplateUrl, ariaLabelledBy: e.ariaLabelledBy, ariaDescribedBy: e.ariaDescribedBy, size: e.size, openedClass: e.openedClass, appendTo: e.appendTo }, q = {}, r = {}; e.component ? (c(q, !1, !0, !1), q.name = e.component, k.component = q) : e.controller && (c(r, !0, !1, !0), j = f(e.controller, r, !0, e.controllerAs), e.controllerAs && e.bindToController && (i = j.instance, i.$close = g.$close, i.$dismiss = g.$dismiss, angular.extend(i, { $resolve: r.$scope.$resolve }, d)), i = j(), angular.isFunction(i.$onInit) && i.$onInit()), e.component || (k.content = a[0]), h.open(p, k), m.resolve(!0) }, function (a) { m.reject(a), l.reject(a) })["finally"](function () { k === r && (k = null) }), p }, j }] }; return a }), angular.module("ui.bootstrap.paging", []).factory("uibPaging", ["$parse", function (a) {
     return {
         create: function (b, c, d) {
             b.setNumPages = d.numPages ? a(d.numPages).assign : angular.noop, b.ngModelCtrl = { $setViewValue: angular.noop }, b._watchers = [], b.init = function (a, e) {
                 b.ngModelCtrl = a, b.config = e, a.$render = function () { b.render() }, d.itemsPerPage ? b._watchers.push(c.$parent.$watch(d.itemsPerPage, function (a) {
                     b.itemsPerPage = parseInt(a, 10), c.totalPages = b.calculateTotalPages(), b.updatePage()
                 })) : b.itemsPerPage = e.itemsPerPage, c.$watch("totalItems", function (a, d) { (angular.isDefined(a) || a !== d) && (c.totalPages = b.calculateTotalPages(), b.updatePage()) })
             }, b.calculateTotalPages = function () { var a = b.itemsPerPage < 1 ? 1 : Math.ceil(c.totalItems / b.itemsPerPage); return Math.max(a || 0, 1) }, b.render = function () { c.page = parseInt(b.ngModelCtrl.$viewValue, 10) || 1 }, c.selectPage = function (a, d) { d && d.preventDefault(); var e = !c.ngDisabled || !d; e && c.page !== a && a > 0 && a <= c.totalPages && (d && d.target && d.target.blur(), b.ngModelCtrl.$setViewValue(a), b.ngModelCtrl.$render()) }, c.getText = function (a) { return c[a + "Text"] || b.config[a + "Text"] }, c.noPrevious = function () { return 1 === c.page }, c.noNext = function () { return c.page === c.totalPages }, b.updatePage = function () { b.setNumPages(c.$parent, c.totalPages), c.page > c.totalPages ? c.selectPage(c.totalPages) : b.ngModelCtrl.$render() }, c.$on("$destroy", function () { for (; b._watchers.length;) b._watchers.shift()() })
         }
     }
 }]), angular.module("ui.bootstrap.pager", ["ui.bootstrap.paging", "ui.bootstrap.tabindex"]).controller("UibPagerController", ["$scope", "$attrs", "uibPaging", "uibPagerConfig", function (a, b, c, d) { a.align = angular.isDefined(b.align) ? a.$parent.$eval(b.align) : d.align, c.create(this, a, b) }]).constant("uibPagerConfig", { itemsPerPage: 10, previousText: "« Previous", nextText: "Next »", align: !0 }).directive("uibPager", ["uibPagerConfig", function (a) { return { scope: { totalItems: "=", previousText: "@", nextText: "@", ngDisabled: "=" }, require: ["uibPager", "?ngModel"], restrict: "A", controller: "UibPagerController", controllerAs: "pager", templateUrl: function (a, b) { return b.templateUrl || "uib/template/pager/pager.html" }, link: function (b, c, d, e) { c.addClass("pager"); var f = e[0], g = e[1]; g && f.init(g, a) } } }]), angular.module("ui.bootstrap.pagination", ["ui.bootstrap.paging", "ui.bootstrap.tabindex"]).controller("UibPaginationController", ["$scope", "$attrs", "$parse", "uibPaging", "uibPaginationConfig", function (a, b, c, d, e) { function f(a, b, c) { return { number: a, text: b, active: c } } function g(a, b) { var c = [], d = 1, e = b, g = angular.isDefined(i) && b > i; g && (j ? (d = Math.max(a - Math.floor(i / 2), 1), e = d + i - 1, e > b && (e = b, d = e - i + 1)) : (d = (Math.ceil(a / i) - 1) * i + 1, e = Math.min(d + i - 1, b))); for (var h = d; e >= h; h++) { var n = f(h, m(h), h === a); c.push(n) } if (g && i > 0 && (!j || k || l)) { if (d > 1) { if (!l || d > 3) { var o = f(d - 1, "...", !1); c.unshift(o) } if (l) { if (3 === d) { var p = f(2, "2", !1); c.unshift(p) } var q = f(1, "1", !1); c.unshift(q) } } if (b > e) { if (!l || b - 2 > e) { var r = f(e + 1, "...", !1); c.push(r) } if (l) { if (e === b - 2) { var s = f(b - 1, b - 1, !1); c.push(s) } var t = f(b, b, !1); c.push(t) } } } return c } var h = this, i = angular.isDefined(b.maxSize) ? a.$parent.$eval(b.maxSize) : e.maxSize, j = angular.isDefined(b.rotate) ? a.$parent.$eval(b.rotate) : e.rotate, k = angular.isDefined(b.forceEllipses) ? a.$parent.$eval(b.forceEllipses) : e.forceEllipses, l = angular.isDefined(b.boundaryLinkNumbers) ? a.$parent.$eval(b.boundaryLinkNumbers) : e.boundaryLinkNumbers, m = angular.isDefined(b.pageLabel) ? function (c) { return a.$parent.$eval(b.pageLabel, { $page: c }) } : angular.identity; a.boundaryLinks = angular.isDefined(b.boundaryLinks) ? a.$parent.$eval(b.boundaryLinks) : e.boundaryLinks, a.directionLinks = angular.isDefined(b.directionLinks) ? a.$parent.$eval(b.directionLinks) : e.directionLinks, b.$set("role", "menu"), d.create(this, a, b), b.maxSize && h._watchers.push(a.$parent.$watch(c(b.maxSize), function (a) { i = parseInt(a, 10), h.render() })); var n = this.render; this.render = function () { n(), a.page > 0 && a.page <= a.totalPages && (a.pages = g(a.page, a.totalPages)) } }]).constant("uibPaginationConfig", { itemsPerPage: 10, boundaryLinks: !1, boundaryLinkNumbers: !1, directionLinks: !0, firstText: "First", previousText: "Previous", nextText: "Next", lastText: "Last", rotate: !0, forceEllipses: !1 }).directive("uibPagination", ["$parse", "uibPaginationConfig", function (a, b) { return { scope: { totalItems: "=", firstText: "@", previousText: "@", nextText: "@", lastText: "@", ngDisabled: "=" }, require: ["uibPagination", "?ngModel"], restrict: "A", controller: "UibPaginationController", controllerAs: "pagination", templateUrl: function (a, b) { return b.templateUrl || "uib/template/pagination/pagination.html" }, link: function (a, c, d, e) { c.addClass("pagination"); var f = e[0], g = e[1]; g && f.init(g, b) } } }]), angular.module("ui.bootstrap.tooltip", ["ui.bootstrap.position", "ui.bootstrap.stackedMap"]).provider("$uibTooltip", function () { function a(a) { var b = /[A-Z]/g, c = "-"; return a.replace(b, function (a, b) { return (b ? c : "") + a.toLowerCase() }) } var b = { placement: "top", placementClassPrefix: "", animation: !0, popupDelay: 0, popupCloseDelay: 0, useContentExp: !1 }, c = { mouseenter: "mouseleave", click: "click", outsideClick: "outsideClick", focus: "blur", none: "" }, d = {}; this.options = function (a) { angular.extend(d, a) }, this.setTriggers = function (a) { angular.extend(c, a) }, this.$get = ["$window", "$compile", "$timeout", "$document", "$uibPosition", "$interpolate", "$rootScope", "$parse", "$$stackedMap", function (e, f, g, h, i, j, k, l, m) { function n(a) { if (27 === a.which) { var b = o.top(); b && (b.value.close(), b = null) } } var o = m.createNew(); return h.on("keyup", n), k.$on("$destroy", function () { h.off("keyup", n) }), function (e, k, m, n) { function p(a) { var b = (a || n.trigger || m).split(" "), d = b.map(function (a) { return c[a] || a }); return { show: b, hide: d } } n = angular.extend({}, b, d, n); var q = a(e), r = j.startSymbol(), s = j.endSymbol(), t = "<div " + q + '-popup uib-title="' + r + "title" + s + '" ' + (n.useContentExp ? 'content-exp="contentExp()" ' : 'content="' + r + "content" + s + '" ') + 'origin-scope="origScope" class="uib-position-measure ' + k + '" tooltip-animation-class="fade"uib-tooltip-classes ng-class="{ in: isOpen }" ></div>'; return { compile: function (a, b) { var c = f(t); return function (a, b, d, f) { function j() { P.isOpen ? q() : m() } function m() { O && !a.$eval(d[k + "Enable"]) || (u(), x(), P.popupDelay ? H || (H = g(r, P.popupDelay, !1)) : r()) } function q() { s(), P.popupCloseDelay ? I || (I = g(t, P.popupCloseDelay, !1)) : t() } function r() { return s(), u(), P.content ? (v(), void P.$evalAsync(function () { P.isOpen = !0, y(!0), U() })) : angular.noop } function s() { H && (g.cancel(H), H = null), J && (g.cancel(J), J = null) } function t() { P && P.$evalAsync(function () { P && (P.isOpen = !1, y(!1), P.animation ? G || (G = g(w, 150, !1)) : w()) }) } function u() { I && (g.cancel(I), I = null), G && (g.cancel(G), G = null) } function v() { E || (F = P.$new(), E = c(F, function (a) { M ? h.find("body").append(a) : b.after(a) }), o.add(P, { close: t }), z()) } function w() { s(), u(), A(), E && (E.remove(), E = null, K && g.cancel(K)), o.remove(P), F && (F.$destroy(), F = null) } function x() { P.title = d[k + "Title"], S ? P.content = S(a) : P.content = d[e], P.popupClass = d[k + "Class"], P.placement = angular.isDefined(d[k + "Placement"]) ? d[k + "Placement"] : n.placement; var b = i.parsePlacement(P.placement); L = b[1] ? b[0] + "-" + b[1] : b[0]; var c = parseInt(d[k + "PopupDelay"], 10), f = parseInt(d[k + "PopupCloseDelay"], 10); P.popupDelay = isNaN(c) ? n.popupDelay : c, P.popupCloseDelay = isNaN(f) ? n.popupCloseDelay : f } function y(b) { R && angular.isFunction(R.assign) && R.assign(a, b) } function z() { T.length = 0, S ? (T.push(a.$watch(S, function (a) { P.content = a, !a && P.isOpen && t() })), T.push(F.$watch(function () { Q || (Q = !0, F.$$postDigest(function () { Q = !1, P && P.isOpen && U() })) }))) : T.push(d.$observe(e, function (a) { P.content = a, !a && P.isOpen ? t() : U() })), T.push(d.$observe(k + "Title", function (a) { P.title = a, P.isOpen && U() })), T.push(d.$observe(k + "Placement", function (a) { P.placement = a ? a : n.placement, P.isOpen && U() })) } function A() { T.length && (angular.forEach(T, function (a) { a() }), T.length = 0) } function B(a) { P && P.isOpen && E && (b[0].contains(a.target) || E[0].contains(a.target) || q()) } function C(a) { 27 === a.which && q() } function D() { var c = [], e = [], f = a.$eval(d[k + "Trigger"]); V(), angular.isObject(f) ? (Object.keys(f).forEach(function (a) { c.push(a), e.push(f[a]) }), N = { show: c, hide: e }) : N = p(f), "none" !== N.show && N.show.forEach(function (a, c) { "outsideClick" === a ? (b.on("click", j), h.on("click", B)) : a === N.hide[c] ? b.on(a, j) : a && (b.on(a, m), b.on(N.hide[c], q)), b.on("keypress", C) }) } var E, F, G, H, I, J, K, L, M = angular.isDefined(n.appendToBody) ? n.appendToBody : !1, N = p(void 0), O = angular.isDefined(d[k + "Enable"]), P = a.$new(!0), Q = !1, R = angular.isDefined(d[k + "IsOpen"]) ? l(d[k + "IsOpen"]) : !1, S = n.useContentExp ? l(d[e]) : !1, T = [], U = function () { E && E.html() && (J || (J = g(function () { var a = i.positionElements(b, E, P.placement, M), c = angular.isDefined(E.offsetHeight) ? E.offsetHeight : E.prop("offsetHeight"), d = M ? i.offset(b) : i.position(b); E.css({ top: a.top + "px", left: a.left + "px" }); var e = a.placement.split("-"); E.hasClass(e[0]) || (E.removeClass(L.split("-")[0]), E.addClass(e[0])), E.hasClass(n.placementClassPrefix + a.placement) || (E.removeClass(n.placementClassPrefix + L), E.addClass(n.placementClassPrefix + a.placement)), K = g(function () { var a = angular.isDefined(E.offsetHeight) ? E.offsetHeight : E.prop("offsetHeight"), b = i.adjustTop(e, d, c, a); b && E.css(b), K = null }, 0, !1), E.hasClass("uib-position-measure") ? (i.positionArrow(E, a.placement), E.removeClass("uib-position-measure")) : L !== a.placement && i.positionArrow(E, a.placement), L = a.placement, J = null }, 0, !1))) }; P.origScope = a, P.isOpen = !1, P.contentExp = function () { return P.content }, d.$observe("disabled", function (a) { a && s(), a && P.isOpen && t() }), R && a.$watch(R, function (a) { P && !a === P.isOpen && j() }); var V = function () { N.show.forEach(function (a) { "outsideClick" === a ? b.off("click", j) : (b.off(a, m), b.off(a, j)), b.off("keypress", C) }), N.hide.forEach(function (a) { "outsideClick" === a ? h.off("click", B) : b.off(a, q) }) }; D(); var W = a.$eval(d[k + "Animation"]); P.animation = angular.isDefined(W) ? !!W : n.animation; var X, Y = k + "AppendToBody"; X = Y in d && void 0 === d[Y] ? !0 : a.$eval(d[Y]), M = angular.isDefined(X) ? X : M, a.$on("$destroy", function () { V(), w(), P = null }) } } } } }] }).directive("uibTooltipTemplateTransclude", ["$animate", "$sce", "$compile", "$templateRequest", function (a, b, c, d) { return { link: function (e, f, g) { var h, i, j, k = e.$eval(g.tooltipTemplateTranscludeScope), l = 0, m = function () { i && (i.remove(), i = null), h && (h.$destroy(), h = null), j && (a.leave(j).then(function () { i = null }), i = j, j = null) }; e.$watch(b.parseAsResourceUrl(g.uibTooltipTemplateTransclude), function (b) { var g = ++l; b ? (d(b, !0).then(function (d) { if (g === l) { var e = k.$new(), i = d, n = c(i)(e, function (b) { m(), a.enter(b, f) }); h = e, j = n, h.$emit("$includeContentLoaded", b) } }, function () { g === l && (m(), e.$emit("$includeContentError", b)) }), e.$emit("$includeContentRequested", b)) : m() }), e.$on("$destroy", m) } } }]).directive("uibTooltipClasses", ["$uibPosition", function (a) { return { restrict: "A", link: function (b, c, d) { if (b.placement) { var e = a.parsePlacement(b.placement); c.addClass(e[0]) } b.popupClass && c.addClass(b.popupClass), b.animation && c.addClass(d.tooltipAnimationClass) } } }]).directive("uibTooltipPopup", function () { return { restrict: "A", scope: { content: "@" }, templateUrl: "uib/template/tooltip/tooltip-popup.html" } }).directive("uibTooltip", ["$uibTooltip", function (a) { return a("uibTooltip", "tooltip", "mouseenter") }]).directive("uibTooltipTemplatePopup", function () { return { restrict: "A", scope: { contentExp: "&", originScope: "&" }, templateUrl: "uib/template/tooltip/tooltip-template-popup.html" } }).directive("uibTooltipTemplate", ["$uibTooltip", function (a) { return a("uibTooltipTemplate", "tooltip", "mouseenter", { useContentExp: !0 }) }]).directive("uibTooltipHtmlPopup", function () { return { restrict: "A", scope: { contentExp: "&" }, templateUrl: "uib/template/tooltip/tooltip-html-popup.html" } }).directive("uibTooltipHtml", ["$uibTooltip", function (a) { return a("uibTooltipHtml", "tooltip", "mouseenter", { useContentExp: !0 }) }]), angular.module("ui.bootstrap.popover", ["ui.bootstrap.tooltip"]).directive("uibPopoverTemplatePopup", function () { return { restrict: "A", scope: { uibTitle: "@", contentExp: "&", originScope: "&" }, templateUrl: "uib/template/popover/popover-template.html" } }).directive("uibPopoverTemplate", ["$uibTooltip", function (a) { return a("uibPopoverTemplate", "popover", "click", { useContentExp: !0 }) }]).directive("uibPopoverHtmlPopup", function () { return { restrict: "A", scope: { contentExp: "&", uibTitle: "@" }, templateUrl: "uib/template/popover/popover-html.html" } }).directive("uibPopoverHtml", ["$uibTooltip", function (a) { return a("uibPopoverHtml", "popover", "click", { useContentExp: !0 }) }]).directive("uibPopoverPopup", function () { return { restrict: "A", scope: { uibTitle: "@", content: "@" }, templateUrl: "uib/template/popover/popover.html" } }).directive("uibPopover", ["$uibTooltip", function (a) { return a("uibPopover", "popover", "click") }]), angular.module("ui.bootstrap.progressbar", []).constant("uibProgressConfig", { animate: !0, max: 100 }).controller("UibProgressController", ["$scope", "$attrs", "uibProgressConfig", function (a, b, c) { function d() { return angular.isDefined(a.maxParam) ? a.maxParam : c.max } var e = this, f = angular.isDefined(b.animate) ? a.$parent.$eval(b.animate) : c.animate; this.bars = [], a.max = d(), this.addBar = function (a, b, c) { f || b.css({ transition: "none" }), this.bars.push(a), a.max = d(), a.title = c && angular.isDefined(c.title) ? c.title : "progressbar", a.$watch("value", function (b) { a.recalculatePercentage() }), a.recalculatePercentage = function () { var b = e.bars.reduce(function (a, b) { return b.percent = +(100 * b.value / b.max).toFixed(2), a + b.percent }, 0); b > 100 && (a.percent -= b - 100) }, a.$on("$destroy", function () { b = null, e.removeBar(a) }) }, this.removeBar = function (a) { this.bars.splice(this.bars.indexOf(a), 1), this.bars.forEach(function (a) { a.recalculatePercentage() }) }, a.$watch("maxParam", function (a) { e.bars.forEach(function (a) { a.max = d(), a.recalculatePercentage() }) }) }]).directive("uibProgress", function () { return { replace: !0, transclude: !0, controller: "UibProgressController", require: "uibProgress", scope: { maxParam: "=?max" }, templateUrl: "uib/template/progressbar/progress.html" } }).directive("uibBar", function () { return { replace: !0, transclude: !0, require: "^uibProgress", scope: { value: "=", type: "@" }, templateUrl: "uib/template/progressbar/bar.html", link: function (a, b, c, d) { d.addBar(a, b, c) } } }).directive("uibProgressbar", function () { return { replace: !0, transclude: !0, controller: "UibProgressController", scope: { value: "=", maxParam: "=?max", type: "@" }, templateUrl: "uib/template/progressbar/progressbar.html", link: function (a, b, c, d) { d.addBar(a, angular.element(b.children()[0]), { title: c.title }) } } }), angular.module("ui.bootstrap.rating", []).constant("uibRatingConfig", { max: 5, stateOn: null, stateOff: null, enableReset: !0, titles: ["one", "two", "three", "four", "five"] }).controller("UibRatingController", ["$scope", "$attrs", "uibRatingConfig", function (a, b, c) { var d = { $setViewValue: angular.noop }, e = this; this.init = function (e) { d = e, d.$render = this.render, d.$formatters.push(function (a) { return angular.isNumber(a) && a << 0 !== a && (a = Math.round(a)), a }), this.stateOn = angular.isDefined(b.stateOn) ? a.$parent.$eval(b.stateOn) : c.stateOn, this.stateOff = angular.isDefined(b.stateOff) ? a.$parent.$eval(b.stateOff) : c.stateOff, this.enableReset = angular.isDefined(b.enableReset) ? a.$parent.$eval(b.enableReset) : c.enableReset; var f = angular.isDefined(b.titles) ? a.$parent.$eval(b.titles) : c.titles; this.titles = angular.isArray(f) && f.length > 0 ? f : c.titles; var g = angular.isDefined(b.ratingStates) ? a.$parent.$eval(b.ratingStates) : new Array(angular.isDefined(b.max) ? a.$parent.$eval(b.max) : c.max); a.range = this.buildTemplateObjects(g) }, this.buildTemplateObjects = function (a) { for (var b = 0, c = a.length; c > b; b++) a[b] = angular.extend({ index: b }, { stateOn: this.stateOn, stateOff: this.stateOff, title: this.getTitle(b) }, a[b]); return a }, this.getTitle = function (a) { return a >= this.titles.length ? a + 1 : this.titles[a] }, a.rate = function (b) { if (!a.readonly && b >= 0 && b <= a.range.length) { var c = e.enableReset && d.$viewValue === b ? 0 : b; d.$setViewValue(c), d.$render() } }, a.enter = function (b) { a.readonly || (a.value = b), a.onHover({ value: b }) }, a.reset = function () { a.value = d.$viewValue, a.onLeave() }, a.onKeydown = function (b) { /(37|38|39|40)/.test(b.which) && (b.preventDefault(), b.stopPropagation(), a.rate(a.value + (38 === b.which || 39 === b.which ? 1 : -1))) }, this.render = function () { a.value = d.$viewValue, a.title = e.getTitle(a.value - 1) } }]).directive("uibRating", function () { return { require: ["uibRating", "ngModel"], restrict: "A", scope: { readonly: "=?readOnly", onHover: "&", onLeave: "&" }, controller: "UibRatingController", templateUrl: "uib/template/rating/rating.html", link: function (a, b, c, d) { var e = d[0], f = d[1]; e.init(f) } } }), angular.module("ui.bootstrap.tabs", []).controller("UibTabsetController", ["$scope", function (a) { function b(a) { for (var b = 0; b < d.tabs.length; b++) if (d.tabs[b].index === a) return b } var c, d = this; d.tabs = [], d.select = function (a, f) { if (!e) { var g = b(c), h = d.tabs[g]; if (h) { if (h.tab.onDeselect({ $event: f, $selectedIndex: a }), f && f.isDefaultPrevented()) return; h.tab.active = !1 } var i = d.tabs[a]; i ? (i.tab.onSelect({ $event: f }), i.tab.active = !0, d.active = i.index, c = i.index) : !i && angular.isDefined(c) && (d.active = null, c = null) } }, d.addTab = function (a) { if (d.tabs.push({ tab: a, index: a.index }), d.tabs.sort(function (a, b) { return a.index > b.index ? 1 : a.index < b.index ? -1 : 0 }), a.index === d.active || !angular.isDefined(d.active) && 1 === d.tabs.length) { var c = b(a.index); d.select(c) } }, d.removeTab = function (a) { for (var b, c = 0; c < d.tabs.length; c++) if (d.tabs[c].tab === a) { b = c; break } if (d.tabs[b].index === d.active) { var e = b === d.tabs.length - 1 ? b - 1 : b + 1 % d.tabs.length; d.select(e) } d.tabs.splice(b, 1) }, a.$watch("tabset.active", function (a) { angular.isDefined(a) && a !== c && d.select(b(a)) }); var e; a.$on("$destroy", function () { e = !0 }) }]).directive("uibTabset", function () { return { transclude: !0, replace: !0, scope: {}, bindToController: { active: "=?", type: "@" }, controller: "UibTabsetController", controllerAs: "tabset", templateUrl: function (a, b) { return b.templateUrl || "uib/template/tabs/tabset.html" }, link: function (a, b, c) { a.vertical = angular.isDefined(c.vertical) ? a.$parent.$eval(c.vertical) : !1, a.justified = angular.isDefined(c.justified) ? a.$parent.$eval(c.justified) : !1 } } }).directive("uibTab", ["$parse", function (a) { return { require: "^uibTabset", replace: !0, templateUrl: function (a, b) { return b.templateUrl || "uib/template/tabs/tab.html" }, transclude: !0, scope: { heading: "@", index: "=?", classes: "@?", onSelect: "&select", onDeselect: "&deselect" }, controller: function () { }, controllerAs: "tab", link: function (b, c, d, e, f) { b.disabled = !1, d.disable && b.$parent.$watch(a(d.disable), function (a) { b.disabled = !!a }), angular.isUndefined(d.index) && (e.tabs && e.tabs.length ? b.index = Math.max.apply(null, e.tabs.map(function (a) { return a.index })) + 1 : b.index = 0), angular.isUndefined(d.classes) && (b.classes = ""), b.select = function (a) { if (!b.disabled) { for (var c, d = 0; d < e.tabs.length; d++) if (e.tabs[d].tab === b) { c = d; break } e.select(c, a) } }, e.addTab(b), b.$on("$destroy", function () { e.removeTab(b) }), b.$transcludeFn = f } } }]).directive("uibTabHeadingTransclude", function () { return { restrict: "A", require: "^uibTab", link: function (a, b) { a.$watch("headingElement", function (a) { a && (b.html(""), b.append(a)) }) } } }).directive("uibTabContentTransclude", function () { function a(a) { return a.tagName && (a.hasAttribute("uib-tab-heading") || a.hasAttribute("data-uib-tab-heading") || a.hasAttribute("x-uib-tab-heading") || "uib-tab-heading" === a.tagName.toLowerCase() || "data-uib-tab-heading" === a.tagName.toLowerCase() || "x-uib-tab-heading" === a.tagName.toLowerCase() || "uib:tab-heading" === a.tagName.toLowerCase()) } return { restrict: "A", require: "^uibTabset", link: function (b, c, d) { var e = b.$eval(d.uibTabContentTransclude).tab; e.$transcludeFn(e.$parent, function (b) { angular.forEach(b, function (b) { a(b) ? e.headingElement = b : c.append(b) }) }) } } }), angular.module("ui.bootstrap.timepicker", []).constant("uibTimepickerConfig", { hourStep: 1, minuteStep: 1, secondStep: 1, showMeridian: !0, showSeconds: !1, meridians: null, readonlyInput: !1, mousewheel: !0, arrowkeys: !0, showSpinners: !0, templateUrl: "uib/template/timepicker/timepicker.html" }).controller("UibTimepickerController", ["$scope", "$element", "$attrs", "$parse", "$log", "$locale", "uibTimepickerConfig", function (a, b, c, d, e, f, g) { function h() { var b = +a.hours, c = a.showMeridian ? b > 0 && 13 > b : b >= 0 && 24 > b; return c && "" !== a.hours ? (a.showMeridian && (12 === b && (b = 0), a.meridian === y[1] && (b += 12)), b) : void 0 } function i() { var b = +a.minutes, c = b >= 0 && 60 > b; return c && "" !== a.minutes ? b : void 0 } function j() { var b = +a.seconds; return b >= 0 && 60 > b ? b : void 0 } function k(a, b) { return null === a ? "" : angular.isDefined(a) && a.toString().length < 2 && !b ? "0" + a : a.toString() } function l(a) { m(), x.$setViewValue(new Date(v)), n(a) } function m() { s && s.$setValidity("hours", !0), t && t.$setValidity("minutes", !0), u && u.$setValidity("seconds", !0), x.$setValidity("time", !0), a.invalidHours = !1, a.invalidMinutes = !1, a.invalidSeconds = !1 } function n(b) { if (x.$modelValue) { var c = v.getHours(), d = v.getMinutes(), e = v.getSeconds(); a.showMeridian && (c = 0 === c || 12 === c ? 12 : c % 12), a.hours = "h" === b ? c : k(c, !z), "m" !== b && (a.minutes = k(d)), a.meridian = v.getHours() < 12 ? y[0] : y[1], "s" !== b && (a.seconds = k(e)), a.meridian = v.getHours() < 12 ? y[0] : y[1] } else a.hours = null, a.minutes = null, a.seconds = null, a.meridian = y[0] } function o(a) { v = q(v, a), l() } function p(a, b) { return q(a, 60 * b) } function q(a, b) { var c = new Date(a.getTime() + 1e3 * b), d = new Date(a); return d.setHours(c.getHours(), c.getMinutes(), c.getSeconds()), d } function r() { return (null === a.hours || "" === a.hours) && (null === a.minutes || "" === a.minutes) && (!a.showSeconds || a.showSeconds && (null === a.seconds || "" === a.seconds)) } var s, t, u, v = new Date, w = [], x = { $setViewValue: angular.noop }, y = angular.isDefined(c.meridians) ? a.$parent.$eval(c.meridians) : g.meridians || f.DATETIME_FORMATS.AMPMS, z = angular.isDefined(c.padHours) ? a.$parent.$eval(c.padHours) : !0; a.tabindex = angular.isDefined(c.tabindex) ? c.tabindex : 0, b.removeAttr("tabindex"), this.init = function (b, d) { x = b, x.$render = this.render, x.$formatters.unshift(function (a) { return a ? new Date(a) : null }); var e = d.eq(0), f = d.eq(1), h = d.eq(2); s = e.controller("ngModel"), t = f.controller("ngModel"), u = h.controller("ngModel"); var i = angular.isDefined(c.mousewheel) ? a.$parent.$eval(c.mousewheel) : g.mousewheel; i && this.setupMousewheelEvents(e, f, h); var j = angular.isDefined(c.arrowkeys) ? a.$parent.$eval(c.arrowkeys) : g.arrowkeys; j && this.setupArrowkeyEvents(e, f, h), a.readonlyInput = angular.isDefined(c.readonlyInput) ? a.$parent.$eval(c.readonlyInput) : g.readonlyInput, this.setupInputEvents(e, f, h) }; var A = g.hourStep; c.hourStep && w.push(a.$parent.$watch(d(c.hourStep), function (a) { A = +a })); var B = g.minuteStep; c.minuteStep && w.push(a.$parent.$watch(d(c.minuteStep), function (a) { B = +a })); var C; w.push(a.$parent.$watch(d(c.min), function (a) { var b = new Date(a); C = isNaN(b) ? void 0 : b })); var D; w.push(a.$parent.$watch(d(c.max), function (a) { var b = new Date(a); D = isNaN(b) ? void 0 : b })); var E = !1; c.ngDisabled && w.push(a.$parent.$watch(d(c.ngDisabled), function (a) { E = a })), a.noIncrementHours = function () { var a = p(v, 60 * A); return E || a > D || v > a && C > a }, a.noDecrementHours = function () { var a = p(v, 60 * -A); return E || C > a || a > v && a > D }, a.noIncrementMinutes = function () { var a = p(v, B); return E || a > D || v > a && C > a }, a.noDecrementMinutes = function () { var a = p(v, -B); return E || C > a || a > v && a > D }, a.noIncrementSeconds = function () { var a = q(v, F); return E || a > D || v > a && C > a }, a.noDecrementSeconds = function () { var a = q(v, -F); return E || C > a || a > v && a > D }, a.noToggleMeridian = function () { return v.getHours() < 12 ? E || p(v, 720) > D : E || p(v, -720) < C }; var F = g.secondStep; c.secondStep && w.push(a.$parent.$watch(d(c.secondStep), function (a) { F = +a })), a.showSeconds = g.showSeconds, c.showSeconds && w.push(a.$parent.$watch(d(c.showSeconds), function (b) { a.showSeconds = !!b })), a.showMeridian = g.showMeridian, c.showMeridian && w.push(a.$parent.$watch(d(c.showMeridian), function (b) { if (a.showMeridian = !!b, x.$error.time) { var c = h(), d = i(); angular.isDefined(c) && angular.isDefined(d) && (v.setHours(c), l()) } else n() })), this.setupMousewheelEvents = function (b, c, d) { var e = function (a) { a.originalEvent && (a = a.originalEvent); var b = a.wheelDelta ? a.wheelDelta : -a.deltaY; return a.detail || b > 0 }; b.on("mousewheel wheel", function (b) { E || a.$apply(e(b) ? a.incrementHours() : a.decrementHours()), b.preventDefault() }), c.on("mousewheel wheel", function (b) { E || a.$apply(e(b) ? a.incrementMinutes() : a.decrementMinutes()), b.preventDefault() }), d.on("mousewheel wheel", function (b) { E || a.$apply(e(b) ? a.incrementSeconds() : a.decrementSeconds()), b.preventDefault() }) }, this.setupArrowkeyEvents = function (b, c, d) { b.on("keydown", function (b) { E || (38 === b.which ? (b.preventDefault(), a.incrementHours(), a.$apply()) : 40 === b.which && (b.preventDefault(), a.decrementHours(), a.$apply())) }), c.on("keydown", function (b) { E || (38 === b.which ? (b.preventDefault(), a.incrementMinutes(), a.$apply()) : 40 === b.which && (b.preventDefault(), a.decrementMinutes(), a.$apply())) }), d.on("keydown", function (b) { E || (38 === b.which ? (b.preventDefault(), a.incrementSeconds(), a.$apply()) : 40 === b.which && (b.preventDefault(), a.decrementSeconds(), a.$apply())) }) }, this.setupInputEvents = function (b, c, d) { if (a.readonlyInput) return a.updateHours = angular.noop, a.updateMinutes = angular.noop, void (a.updateSeconds = angular.noop); var e = function (b, c, d) { x.$setViewValue(null), x.$setValidity("time", !1), angular.isDefined(b) && (a.invalidHours = b, s && s.$setValidity("hours", !1)), angular.isDefined(c) && (a.invalidMinutes = c, t && t.$setValidity("minutes", !1)), angular.isDefined(d) && (a.invalidSeconds = d, u && u.$setValidity("seconds", !1)) }; a.updateHours = function () { var a = h(), b = i(); x.$setDirty(), angular.isDefined(a) && angular.isDefined(b) ? (v.setHours(a), v.setMinutes(b), C > v || v > D ? e(!0) : l("h")) : e(!0) }, b.on("blur", function (b) { x.$setTouched(), r() ? m() : null === a.hours || "" === a.hours ? e(!0) : !a.invalidHours && a.hours < 10 && a.$apply(function () { a.hours = k(a.hours, !z) }) }), a.updateMinutes = function () { var a = i(), b = h(); x.$setDirty(), angular.isDefined(a) && angular.isDefined(b) ? (v.setHours(b), v.setMinutes(a), C > v || v > D ? e(void 0, !0) : l("m")) : e(void 0, !0) }, c.on("blur", function (b) { x.$setTouched(), r() ? m() : null === a.minutes ? e(void 0, !0) : !a.invalidMinutes && a.minutes < 10 && a.$apply(function () { a.minutes = k(a.minutes) }) }), a.updateSeconds = function () { var a = j(); x.$setDirty(), angular.isDefined(a) ? (v.setSeconds(a), l("s")) : e(void 0, void 0, !0) }, d.on("blur", function (b) { r() ? m() : !a.invalidSeconds && a.seconds < 10 && a.$apply(function () { a.seconds = k(a.seconds) }) }) }, this.render = function () { var b = x.$viewValue; isNaN(b) ? (x.$setValidity("time", !1), e.error('Timepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')) : (b && (v = b), C > v || v > D ? (x.$setValidity("time", !1), a.invalidHours = !0, a.invalidMinutes = !0) : m(), n()) }, a.showSpinners = angular.isDefined(c.showSpinners) ? a.$parent.$eval(c.showSpinners) : g.showSpinners, a.incrementHours = function () { a.noIncrementHours() || o(60 * A * 60) }, a.decrementHours = function () { a.noDecrementHours() || o(60 * -A * 60) }, a.incrementMinutes = function () { a.noIncrementMinutes() || o(60 * B) }, a.decrementMinutes = function () { a.noDecrementMinutes() || o(60 * -B) }, a.incrementSeconds = function () { a.noIncrementSeconds() || o(F) }, a.decrementSeconds = function () { a.noDecrementSeconds() || o(-F) }, a.toggleMeridian = function () { var b = i(), c = h(); a.noToggleMeridian() || (angular.isDefined(b) && angular.isDefined(c) ? o(720 * (v.getHours() < 12 ? 60 : -60)) : a.meridian = a.meridian === y[0] ? y[1] : y[0]) }, a.blur = function () { x.$setTouched() }, a.$on("$destroy", function () { for (; w.length;) w.shift()() }) }]).directive("uibTimepicker", ["uibTimepickerConfig", function (a) { return { require: ["uibTimepicker", "?^ngModel"], restrict: "A", controller: "UibTimepickerController", controllerAs: "timepicker", scope: {}, templateUrl: function (b, c) { return c.templateUrl || a.templateUrl }, link: function (a, b, c, d) { var e = d[0], f = d[1]; f && e.init(f, b.find("input")) } } }]), angular.module("ui.bootstrap.typeahead", ["ui.bootstrap.debounce", "ui.bootstrap.position"]).factory("uibTypeaheadParser", ["$parse", function (a) { var b = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+([\s\S]+?)$/; return { parse: function (c) { var d = c.match(b); if (!d) throw new Error('Expected typeahead specification in form of "_modelValue_ (as _label_)? for _item_ in _collection_" but got "' + c + '".'); return { itemName: d[3], source: a(d[4]), viewMapper: a(d[2] || d[1]), modelMapper: a(d[1]) } } } }]).controller("UibTypeaheadController", ["$scope", "$element", "$attrs", "$compile", "$parse", "$q", "$timeout", "$document", "$window", "$rootScope", "$$debounce", "$uibPosition", "uibTypeaheadParser", function (a, b, c, d, e, f, g, h, i, j, k, l, m) {
     function n() { P.moveInProgress || (P.moveInProgress = !0, P.$digest()), $() } function o() { P.position = F ? l.offset(b) : l.position(b), P.position.top += b.prop("offsetHeight") } function p(a) { var b; return angular.version.minor < 6 ? (b = a.$options || {}, b.getOption = function (a) { return b[a] }) : b = a.$options, b } var q, r, s = [9, 13, 27, 38, 40], t = 200, u = a.$eval(c.typeaheadMinLength); u || 0 === u || (u = 1), a.$watch(c.typeaheadMinLength, function (a) { u = a || 0 === a ? a : 1 }); var v = a.$eval(c.typeaheadWaitMs) || 0, w = a.$eval(c.typeaheadEditable) !== !1; a.$watch(c.typeaheadEditable, function (a) { w = a !== !1 }); var x, y, z = e(c.typeaheadLoading).assign || angular.noop, A = c.typeaheadShouldSelect ? e(c.typeaheadShouldSelect) : function (a, b) { var c = b.$event; return 13 === c.which || 9 === c.which }, B = e(c.typeaheadOnSelect), C = angular.isDefined(c.typeaheadSelectOnBlur) ? a.$eval(c.typeaheadSelectOnBlur) : !1, D = e(c.typeaheadNoResults).assign || angular.noop, E = c.typeaheadInputFormatter ? e(c.typeaheadInputFormatter) : void 0, F = c.typeaheadAppendToBody ? a.$eval(c.typeaheadAppendToBody) : !1, G = c.typeaheadAppendTo ? a.$eval(c.typeaheadAppendTo) : null, H = a.$eval(c.typeaheadFocusFirst) !== !1, I = c.typeaheadSelectOnExact ? a.$eval(c.typeaheadSelectOnExact) : !1, J = e(c.typeaheadIsOpen).assign || angular.noop, K = a.$eval(c.typeaheadShowHint) || !1, L = e(c.ngModel), M = e(c.ngModel + "($$$p)"), N = function (b, c) { return angular.isFunction(L(a)) && r.getOption("getterSetter") ? M(b, { $$$p: c }) : L.assign(b, c) }, O = m.parse(c.uibTypeahead), P = a.$new(), Q = a.$on("$destroy", function () { P.$destroy() }); P.$on("$destroy", Q); var R = "typeahead-" + P.$id + "-" + Math.floor(1e4 * Math.random()); b.attr({ "aria-autocomplete": "list", "aria-expanded": !1, "aria-owns": R }); var S, T; K && (S = angular.element("<div></div>"), S.css("position", "relative"), b.after(S), T = b.clone(), T.attr("placeholder", ""), T.attr("tabindex", "-1"), T.val(""), T.css({ position: "absolute", top: "0px", left: "0px", "border-color": "transparent", "box-shadow": "none", opacity: 1, background: "none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255)", color: "#999" }), b.css({ position: "relative", "vertical-align": "top", "background-color": "transparent" }), T.attr("id") && T.removeAttr("id"), S.append(T), T.after(b)); var U = angular.element("<div uib-typeahead-popup></div>"); U.attr({ id: R, matches: "matches", active: "activeIdx", select: "select(activeIdx, evt)", "move-in-progress": "moveInProgress", query: "query", position: "position", "assign-is-open": "assignIsOpen(isOpen)", debounce: "debounceUpdate" }), angular.isDefined(c.typeaheadTemplateUrl) && U.attr("template-url", c.typeaheadTemplateUrl), angular.isDefined(c.typeaheadPopupTemplateUrl) && U.attr("popup-template-url", c.typeaheadPopupTemplateUrl); var V = function () { K && T.val("") }, W = function () { P.matches = [], P.activeIdx = -1, b.attr("aria-expanded", !1), V() }, X = function (a) { return R + "-option-" + a }; P.$watch("activeIdx", function (a) { 0 > a ? b.removeAttr("aria-activedescendant") : b.attr("aria-activedescendant", X(a)) }); var Y = function (a, b) { return P.matches.length > b && a ? a.toUpperCase() === P.matches[b].label.toUpperCase() : !1 }, Z = function (c, d) { var e = { $viewValue: c }; z(a, !0), D(a, !1), f.when(O.source(a, e)).then(function (f) { var g = c === q.$viewValue; if (g && x) if (f && f.length > 0) { P.activeIdx = H ? 0 : -1, D(a, !1), P.matches.length = 0; for (var h = 0; h < f.length; h++) e[O.itemName] = f[h], P.matches.push({ id: X(h), label: O.viewMapper(P, e), model: f[h] }); if (P.query = c, o(), b.attr("aria-expanded", !0), I && 1 === P.matches.length && Y(c, 0) && (angular.isNumber(P.debounceUpdate) || angular.isObject(P.debounceUpdate) ? k(function () { P.select(0, d) }, angular.isNumber(P.debounceUpdate) ? P.debounceUpdate : P.debounceUpdate["default"]) : P.select(0, d)), K) { var i = P.matches[0].label; angular.isString(c) && c.length > 0 && i.slice(0, c.length).toUpperCase() === c.toUpperCase() ? T.val(c + i.slice(c.length)) : T.val("") } } else W(), D(a, !0); g && z(a, !1) }, function () { W(), z(a, !1), D(a, !0) }) }; F && (angular.element(i).on("resize", n), h.find("body").on("scroll", n)); var $ = k(function () { P.matches.length && o(), P.moveInProgress = !1 }, t); P.moveInProgress = !1, P.query = void 0; var _, aa = function (a) { _ = g(function () { Z(a) }, v) }, ba = function () { _ && g.cancel(_) }; W(), P.assignIsOpen = function (b) { J(a, b) }, P.select = function (d, e) { var f, h, i = {}; y = !0, i[O.itemName] = h = P.matches[d].model, f = O.modelMapper(a, i), N(a, f), q.$setValidity("editable", !0), q.$setValidity("parse", !0), B(a, { $item: h, $model: f, $label: O.viewMapper(a, i), $event: e }), W(), P.$eval(c.typeaheadFocusOnSelect) !== !1 && g(function () { b[0].focus() }, 0, !1) }, b.on("keydown", function (b) {
         if (0 !== P.matches.length && -1 !== s.indexOf(b.which)) {
             var c = A(a, { $event: b }); if (-1 === P.activeIdx && c || 9 === b.which && b.shiftKey) return W(), void P.$digest(); b.preventDefault(); var d; switch (b.which) {
                 case 27: b.stopPropagation(), W(), a.$digest(); break; case 38: P.activeIdx = (P.activeIdx > 0 ? P.activeIdx : P.matches.length) - 1, P.$digest(), d = U[0].querySelectorAll(".uib-typeahead-match")[P.activeIdx], d.parentNode.scrollTop = d.offsetTop; break; case 40: P.activeIdx = (P.activeIdx + 1) % P.matches.length, P.$digest(), d = U[0].querySelectorAll(".uib-typeahead-match")[P.activeIdx],
                 d.parentNode.scrollTop = d.offsetTop; break; default: c && P.$apply(function () { angular.isNumber(P.debounceUpdate) || angular.isObject(P.debounceUpdate) ? k(function () { P.select(P.activeIdx, b) }, angular.isNumber(P.debounceUpdate) ? P.debounceUpdate : P.debounceUpdate["default"]) : P.select(P.activeIdx, b) })
             }
         }
     }), b.on("focus", function (a) { x = !0, 0 !== u || q.$viewValue || g(function () { Z(q.$viewValue, a) }, 0) }), b.on("blur", function (a) { C && P.matches.length && -1 !== P.activeIdx && !y && (y = !0, P.$apply(function () { angular.isObject(P.debounceUpdate) && angular.isNumber(P.debounceUpdate.blur) ? k(function () { P.select(P.activeIdx, a) }, P.debounceUpdate.blur) : P.select(P.activeIdx, a) })), !w && q.$error.editable && (q.$setViewValue(), P.$apply(function () { q.$setValidity("editable", !0), q.$setValidity("parse", !0) }), b.val("")), x = !1, y = !1 }); var ca = function (c) { b[0] !== c.target && 3 !== c.which && 0 !== P.matches.length && (W(), j.$$phase || a.$digest()) }; h.on("click", ca), a.$on("$destroy", function () { h.off("click", ca), (F || G) && da.remove(), F && (angular.element(i).off("resize", n), h.find("body").off("scroll", n)), U.remove(), K && S.remove() }); var da = d(U)(P); F ? h.find("body").append(da) : G ? angular.element(G).eq(0).append(da) : b.after(da), this.init = function (b) { q = b, r = p(q), P.debounceUpdate = e(r.getOption("debounce"))(a), q.$parsers.unshift(function (b) { return x = !0, 0 === u || b && b.length >= u ? v > 0 ? (ba(), aa(b)) : Z(b) : (z(a, !1), ba(), W()), w ? b : b ? void q.$setValidity("editable", !1) : (q.$setValidity("editable", !0), null) }), q.$formatters.push(function (b) { var c, d, e = {}; return w || q.$setValidity("editable", !0), E ? (e.$model = b, E(a, e)) : (e[O.itemName] = b, c = O.viewMapper(a, e), e[O.itemName] = void 0, d = O.viewMapper(a, e), c !== d ? c : b) }) }
 }]).directive("uibTypeahead", function () { return { controller: "UibTypeaheadController", require: ["ngModel", "uibTypeahead"], link: function (a, b, c, d) { d[1].init(d[0]) } } }).directive("uibTypeaheadPopup", ["$$debounce", function (a) { return { scope: { matches: "=", query: "=", active: "=", position: "&", moveInProgress: "=", select: "&", assignIsOpen: "&", debounce: "&" }, replace: !0, templateUrl: function (a, b) { return b.popupTemplateUrl || "uib/template/typeahead/typeahead-popup.html" }, link: function (b, c, d) { b.templateUrl = d.templateUrl, b.isOpen = function () { var a = b.matches.length > 0; return b.assignIsOpen({ isOpen: a }), a }, b.isActive = function (a) { return b.active === a }, b.selectActive = function (a) { b.active = a }, b.selectMatch = function (c, d) { var e = b.debounce(); angular.isNumber(e) || angular.isObject(e) ? a(function () { b.select({ activeIdx: c, evt: d }) }, angular.isNumber(e) ? e : e["default"]) : b.select({ activeIdx: c, evt: d }) } } } }]).directive("uibTypeaheadMatch", ["$templateRequest", "$compile", "$parse", function (a, b, c) { return { scope: { index: "=", match: "=", query: "=" }, link: function (d, e, f) { var g = c(f.templateUrl)(d.$parent) || "uib/template/typeahead/typeahead-match.html"; a(g).then(function (a) { var c = angular.element(a.trim()); e.replaceWith(c), b(c)(d) }) } } }]).filter("uibTypeaheadHighlight", ["$sce", "$injector", "$log", function (a, b, c) { function d(a) { return a.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1") } function e(a) { return /<.*>/g.test(a) } var f; return f = b.has("$sanitize"), function (b, g) { return !f && e(b) && c.warn("Unsafe use of typeahead please use ngSanitize"), b = g ? ("" + b).replace(new RegExp(d(g), "gi"), "<strong>$&</strong>") : b, f || (b = a.trustAsHtml(b)), b } }]), angular.module("uib/template/accordion/accordion-group.html", []).run(["$templateCache", function (a) { a.put("uib/template/accordion/accordion-group.html", '<div role="tab" id="{{::headingId}}" aria-selected="{{isOpen}}" class="panel-heading" ng-keypress="toggleOpen($event)">\n  <h4 class="panel-title">\n    <a role="button" data-toggle="collapse" href aria-expanded="{{isOpen}}" aria-controls="{{::panelId}}" tabindex="0" class="accordion-toggle" ng-click="toggleOpen()" uib-accordion-transclude="heading" ng-disabled="isDisabled" uib-tabindex-toggle><span uib-accordion-header ng-class="{\'text-muted\': isDisabled}">{{heading}}</span></a>\n  </h4>\n</div>\n<div id="{{::panelId}}" aria-labelledby="{{::headingId}}" aria-hidden="{{!isOpen}}" role="tabpanel" class="panel-collapse collapse" uib-collapse="!isOpen">\n  <div class="panel-body" ng-transclude></div>\n</div>\n') }]), angular.module("uib/template/accordion/accordion.html", []).run(["$templateCache", function (a) { a.put("uib/template/accordion/accordion.html", '<div role="tablist" class="panel-group" ng-transclude></div>') }]), angular.module("uib/template/alert/alert.html", []).run(["$templateCache", function (a) { a.put("uib/template/alert/alert.html", '<button ng-show="closeable" type="button" class="close" ng-click="close({$event: $event})">\n  <span aria-hidden="true">&times;</span>\n  <span class="sr-only">Close</span>\n</button>\n<div ng-transclude></div>\n') }]), angular.module("uib/template/carousel/carousel.html", []).run(["$templateCache", function (a) { a.put("uib/template/carousel/carousel.html", '<div class="carousel-inner" ng-transclude></div>\n<a role="button" href class="left carousel-control" ng-click="prev()" ng-class="{ disabled: isPrevDisabled() }" ng-show="slides.length > 1">\n  <span aria-hidden="true" class="glyphicon glyphicon-chevron-left"></span>\n  <span class="sr-only">previous</span>\n</a>\n<a role="button" href class="right carousel-control" ng-click="next()" ng-class="{ disabled: isNextDisabled() }" ng-show="slides.length > 1">\n  <span aria-hidden="true" class="glyphicon glyphicon-chevron-right"></span>\n  <span class="sr-only">next</span>\n</a>\n<ol class="carousel-indicators" ng-show="slides.length > 1">\n  <li ng-repeat="slide in slides | orderBy:indexOfSlide track by $index" ng-class="{ active: isActive(slide) }" ng-click="select(slide)">\n    <span class="sr-only">slide {{ $index + 1 }} of {{ slides.length }}<span ng-if="isActive(slide)">, currently active</span></span>\n  </li>\n</ol>\n') }]), angular.module("uib/template/carousel/slide.html", []).run(["$templateCache", function (a) { a.put("uib/template/carousel/slide.html", '<div class="text-center" ng-transclude></div>\n') }]), angular.module("uib/template/datepicker/datepicker.html", []).run(["$templateCache", function (a) { a.put("uib/template/datepicker/datepicker.html", '<div ng-switch="datepickerMode">\n  <div uib-daypicker ng-switch-when="day" tabindex="0" class="uib-daypicker"></div>\n  <div uib-monthpicker ng-switch-when="month" tabindex="0" class="uib-monthpicker"></div>\n  <div uib-yearpicker ng-switch-when="year" tabindex="0" class="uib-yearpicker"></div>\n</div>\n') }]), angular.module("uib/template/datepicker/day.html", []).run(["$templateCache", function (a) { a.put("uib/template/datepicker/day.html", '<table role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n  <thead>\n    <tr>\n      <th><button type="button" class="btn btn-default btn-sm pull-left uib-left" ng-click="move(-1)" tabindex="-1"><i aria-hidden="true" class="glyphicon glyphicon-chevron-left"></i><span class="sr-only">previous</span></button></th>\n      <th colspan="{{::5 + showWeeks}}"><button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm uib-title" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1"><strong>{{title}}</strong></button></th>\n      <th><button type="button" class="btn btn-default btn-sm pull-right uib-right" ng-click="move(1)" tabindex="-1"><i aria-hidden="true" class="glyphicon glyphicon-chevron-right"></i><span class="sr-only">next</span></button></th>\n    </tr>\n    <tr>\n      <th ng-if="showWeeks" class="text-center"></th>\n      <th ng-repeat="label in ::labels track by $index" class="text-center"><small aria-label="{{::label.full}}">{{::label.abbr}}</small></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr class="uib-weeks" ng-repeat="row in rows track by $index" role="row">\n      <td ng-if="showWeeks" class="text-center h6"><em>{{ weekNumbers[$index] }}</em></td>\n      <td ng-repeat="dt in row" class="uib-day text-center" role="gridcell"\n        id="{{::dt.uid}}"\n        ng-class="::dt.customClass">\n        <button type="button" class="btn btn-default btn-sm"\n          uib-is-class="\n            \'btn-info\' for selectedDt,\n            \'active\' for activeDt\n            on dt"\n          ng-click="select(dt.date)"\n          ng-disabled="::dt.disabled"\n          tabindex="-1"><span ng-class="::{\'text-muted\': dt.secondary, \'text-info\': dt.current}">{{::dt.label}}</span></button>\n      </td>\n    </tr>\n  </tbody>\n</table>\n') }]), angular.module("uib/template/datepicker/month.html", []).run(["$templateCache", function (a) { a.put("uib/template/datepicker/month.html", '<table role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n  <thead>\n    <tr>\n      <th><button type="button" class="btn btn-default btn-sm pull-left uib-left" ng-click="move(-1)" tabindex="-1"><i aria-hidden="true" class="glyphicon glyphicon-chevron-left"></i><span class="sr-only">previous</span></button></th>\n      <th colspan="{{::yearHeaderColspan}}"><button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm uib-title" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1"><strong>{{title}}</strong></button></th>\n      <th><button type="button" class="btn btn-default btn-sm pull-right uib-right" ng-click="move(1)" tabindex="-1"><i aria-hidden="true" class="glyphicon glyphicon-chevron-right"></i><span class="sr-only">next</span></i></button></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr class="uib-months" ng-repeat="row in rows track by $index" role="row">\n      <td ng-repeat="dt in row" class="uib-month text-center" role="gridcell"\n        id="{{::dt.uid}}"\n        ng-class="::dt.customClass">\n        <button type="button" class="btn btn-default"\n          uib-is-class="\n            \'btn-info\' for selectedDt,\n            \'active\' for activeDt\n            on dt"\n          ng-click="select(dt.date)"\n          ng-disabled="::dt.disabled"\n          tabindex="-1"><span ng-class="::{\'text-info\': dt.current}">{{::dt.label}}</span></button>\n      </td>\n    </tr>\n  </tbody>\n</table>\n') }]), angular.module("uib/template/datepicker/year.html", []).run(["$templateCache", function (a) { a.put("uib/template/datepicker/year.html", '<table role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n  <thead>\n    <tr>\n      <th><button type="button" class="btn btn-default btn-sm pull-left uib-left" ng-click="move(-1)" tabindex="-1"><i aria-hidden="true" class="glyphicon glyphicon-chevron-left"></i><span class="sr-only">previous</span></button></th>\n      <th colspan="{{::columns - 2}}"><button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm uib-title" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1"><strong>{{title}}</strong></button></th>\n      <th><button type="button" class="btn btn-default btn-sm pull-right uib-right" ng-click="move(1)" tabindex="-1"><i aria-hidden="true" class="glyphicon glyphicon-chevron-right"></i><span class="sr-only">next</span></button></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr class="uib-years" ng-repeat="row in rows track by $index" role="row">\n      <td ng-repeat="dt in row" class="uib-year text-center" role="gridcell"\n        id="{{::dt.uid}}"\n        ng-class="::dt.customClass">\n        <button type="button" class="btn btn-default"\n          uib-is-class="\n            \'btn-info\' for selectedDt,\n            \'active\' for activeDt\n            on dt"\n          ng-click="select(dt.date)"\n          ng-disabled="::dt.disabled"\n          tabindex="-1"><span ng-class="::{\'text-info\': dt.current}">{{::dt.label}}</span></button>\n      </td>\n    </tr>\n  </tbody>\n</table>\n') }]), angular.module("uib/template/datepickerPopup/popup.html", []).run(["$templateCache", function (a) { a.put("uib/template/datepickerPopup/popup.html", '<ul role="presentation" class="uib-datepicker-popup dropdown-menu uib-position-measure" dropdown-nested ng-if="isOpen" ng-keydown="keydown($event)" ng-click="$event.stopPropagation()">\n  <li ng-transclude></li>\n  <li ng-if="showButtonBar" class="uib-button-bar">\n    <span class="btn-group pull-left">\n      <button type="button" class="btn btn-sm btn-info uib-datepicker-current" ng-click="select(\'today\', $event)" ng-disabled="isDisabled(\'today\')">{{ getText(\'current\') }}</button>\n      <button type="button" class="btn btn-sm btn-danger uib-clear" ng-click="select(null, $event)">{{ getText(\'clear\') }}</button>\n    </span>\n    <button type="button" class="btn btn-sm btn-success pull-right uib-close" ng-click="close($event)">{{ getText(\'close\') }}</button>\n  </li>\n</ul>\n') }]), angular.module("uib/template/modal/window.html", []).run(["$templateCache", function (a) { a.put("uib/template/modal/window.html", "<div class=\"modal-dialog {{size ? 'modal-' + size : ''}}\"><div class=\"modal-content\" uib-modal-transclude></div></div>\n") }]), angular.module("uib/template/pager/pager.html", []).run(["$templateCache", function (a) { a.put("uib/template/pager/pager.html", '<li ng-class="{disabled: noPrevious()||ngDisabled, previous: align}"><a href ng-click="selectPage(page - 1, $event)" ng-disabled="noPrevious()||ngDisabled" uib-tabindex-toggle>{{::getText(\'previous\')}}</a></li>\n<li ng-class="{disabled: noNext()||ngDisabled, next: align}"><a href ng-click="selectPage(page + 1, $event)" ng-disabled="noNext()||ngDisabled" uib-tabindex-toggle>{{::getText(\'next\')}}</a></li>\n') }]), angular.module("uib/template/pagination/pagination.html", []).run(["$templateCache", function (a) { a.put("uib/template/pagination/pagination.html", '<li role="menuitem" ng-if="::boundaryLinks" ng-class="{disabled: noPrevious()||ngDisabled}" class="pagination-first"><a href ng-click="selectPage(1, $event)" ng-disabled="noPrevious()||ngDisabled" uib-tabindex-toggle>{{::getText(\'first\')}}</a></li>\n<li role="menuitem" ng-if="::directionLinks" ng-class="{disabled: noPrevious()||ngDisabled}" class="pagination-prev"><a href ng-click="selectPage(page - 1, $event)" ng-disabled="noPrevious()||ngDisabled" uib-tabindex-toggle>{{::getText(\'previous\')}}</a></li>\n<li role="menuitem" ng-repeat="page in pages track by $index" ng-class="{active: page.active,disabled: ngDisabled&&!page.active}" class="pagination-page"><a href ng-click="selectPage(page.number, $event)" ng-disabled="ngDisabled&&!page.active" uib-tabindex-toggle>{{page.text}}</a></li>\n<li role="menuitem" ng-if="::directionLinks" ng-class="{disabled: noNext()||ngDisabled}" class="pagination-next"><a href ng-click="selectPage(page + 1, $event)" ng-disabled="noNext()||ngDisabled" uib-tabindex-toggle>{{::getText(\'next\')}}</a></li>\n<li role="menuitem" ng-if="::boundaryLinks" ng-class="{disabled: noNext()||ngDisabled}" class="pagination-last"><a href ng-click="selectPage(totalPages, $event)" ng-disabled="noNext()||ngDisabled" uib-tabindex-toggle>{{::getText(\'last\')}}</a></li>\n') }]), angular.module("uib/template/tooltip/tooltip-html-popup.html", []).run(["$templateCache", function (a) { a.put("uib/template/tooltip/tooltip-html-popup.html", '<div class="tooltip-arrow"></div>\n<div class="tooltip-inner" ng-bind-html="contentExp()"></div>\n') }]), angular.module("uib/template/tooltip/tooltip-popup.html", []).run(["$templateCache", function (a) { a.put("uib/template/tooltip/tooltip-popup.html", '<div class="tooltip-arrow"></div>\n<div class="tooltip-inner" ng-bind="content"></div>\n') }]), angular.module("uib/template/tooltip/tooltip-template-popup.html", []).run(["$templateCache", function (a) { a.put("uib/template/tooltip/tooltip-template-popup.html", '<div class="tooltip-arrow"></div>\n<div class="tooltip-inner"\n  uib-tooltip-template-transclude="contentExp()"\n  tooltip-template-transclude-scope="originScope()"></div>\n') }]), angular.module("uib/template/popover/popover-html.html", []).run(["$templateCache", function (a) { a.put("uib/template/popover/popover-html.html", '<div class="arrow"></div>\n\n<div class="popover-inner">\n    <h3 class="popover-title" ng-bind="uibTitle" ng-if="uibTitle"></h3>\n    <div class="popover-content" ng-bind-html="contentExp()"></div>\n</div>\n') }]), angular.module("uib/template/popover/popover-template.html", []).run(["$templateCache", function (a) { a.put("uib/template/popover/popover-template.html", '<div class="arrow"></div>\n\n<div class="popover-inner">\n    <h3 class="popover-title" ng-bind="uibTitle" ng-if="uibTitle"></h3>\n    <div class="popover-content"\n      uib-tooltip-template-transclude="contentExp()"\n      tooltip-template-transclude-scope="originScope()"></div>\n</div>\n') }]), angular.module("uib/template/popover/popover.html", []).run(["$templateCache", function (a) { a.put("uib/template/popover/popover.html", '<div class="arrow"></div>\n\n<div class="popover-inner">\n    <h3 class="popover-title" ng-bind="uibTitle" ng-if="uibTitle"></h3>\n    <div class="popover-content" ng-bind="content"></div>\n</div>\n') }]), angular.module("uib/template/progressbar/bar.html", []).run(["$templateCache", function (a) { a.put("uib/template/progressbar/bar.html", '<div class="progress-bar" ng-class="type && \'progress-bar-\' + type" role="progressbar" aria-valuenow="{{value}}" aria-valuemin="0" aria-valuemax="{{max}}" ng-style="{width: (percent < 100 ? percent : 100) + \'%\'}" aria-valuetext="{{percent | number:0}}%" aria-labelledby="{{::title}}" ng-transclude></div>\n') }]), angular.module("uib/template/progressbar/progress.html", []).run(["$templateCache", function (a) { a.put("uib/template/progressbar/progress.html", '<div class="progress" ng-transclude aria-labelledby="{{::title}}"></div>') }]), angular.module("uib/template/progressbar/progressbar.html", []).run(["$templateCache", function (a) { a.put("uib/template/progressbar/progressbar.html", '<div class="progress">\n  <div class="progress-bar" ng-class="type && \'progress-bar-\' + type" role="progressbar" aria-valuenow="{{value}}" aria-valuemin="0" aria-valuemax="{{max}}" ng-style="{width: (percent < 100 ? percent : 100) + \'%\'}" aria-valuetext="{{percent | number:0}}%" aria-labelledby="{{::title}}" ng-transclude></div>\n</div>\n') }]), angular.module("uib/template/rating/rating.html", []).run(["$templateCache", function (a) { a.put("uib/template/rating/rating.html", '<span ng-mouseleave="reset()" ng-keydown="onKeydown($event)" tabindex="0" role="slider" aria-valuemin="0" aria-valuemax="{{range.length}}" aria-valuenow="{{value}}" aria-valuetext="{{title}}">\n    <span ng-repeat-start="r in range track by $index" class="sr-only">({{ $index < value ? \'*\' : \' \' }})</span>\n    <i ng-repeat-end ng-mouseenter="enter($index + 1)" ng-click="rate($index + 1)" class="glyphicon" ng-class="$index < value && (r.stateOn || \'glyphicon-star\') || (r.stateOff || \'glyphicon-star-empty\')" ng-attr-title="{{r.title}}"></i>\n</span>\n') }]), angular.module("uib/template/tabs/tab.html", []).run(["$templateCache", function (a) { a.put("uib/template/tabs/tab.html", '<li ng-class="[{active: active, disabled: disabled}, classes]" class="uib-tab nav-item">\n  <a href ng-click="select($event)" class="nav-link" uib-tab-heading-transclude>{{heading}}</a>\n</li>\n') }]), angular.module("uib/template/tabs/tabset.html", []).run(["$templateCache", function (a) { a.put("uib/template/tabs/tabset.html", '<div>\n  <ul class="nav nav-{{tabset.type || \'tabs\'}}" ng-class="{\'nav-stacked\': vertical, \'nav-justified\': justified}" ng-transclude></ul>\n  <div class="tab-content">\n    <div class="tab-pane"\n         ng-repeat="tab in tabset.tabs"\n         ng-class="{active: tabset.active === tab.index}"\n         uib-tab-content-transclude="tab">\n    </div>\n  </div>\n</div>\n') }]), angular.module("uib/template/timepicker/timepicker.html", []).run(["$templateCache", function (a) { a.put("uib/template/timepicker/timepicker.html", '<table class="uib-timepicker">\n  <tbody>\n    <tr class="text-center" ng-show="::showSpinners">\n      <td class="uib-increment hours"><a ng-click="incrementHours()" ng-class="{disabled: noIncrementHours()}" class="btn btn-link" ng-disabled="noIncrementHours()" tabindex="-1"><span class="glyphicon glyphicon-chevron-up"></span></a></td>\n      <td>&nbsp;</td>\n      <td class="uib-increment minutes"><a ng-click="incrementMinutes()" ng-class="{disabled: noIncrementMinutes()}" class="btn btn-link" ng-disabled="noIncrementMinutes()" tabindex="-1"><span class="glyphicon glyphicon-chevron-up"></span></a></td>\n      <td ng-show="showSeconds">&nbsp;</td>\n      <td ng-show="showSeconds" class="uib-increment seconds"><a ng-click="incrementSeconds()" ng-class="{disabled: noIncrementSeconds()}" class="btn btn-link" ng-disabled="noIncrementSeconds()" tabindex="-1"><span class="glyphicon glyphicon-chevron-up"></span></a></td>\n      <td ng-show="showMeridian"></td>\n    </tr>\n    <tr>\n      <td class="form-group uib-time hours" ng-class="{\'has-error\': invalidHours}">\n        <input type="text" placeholder="HH" ng-model="hours" ng-change="updateHours()" class="form-control text-center" ng-readonly="::readonlyInput" maxlength="2" tabindex="{{::tabindex}}" ng-disabled="noIncrementHours()" ng-blur="blur()">\n      </td>\n      <td class="uib-separator">:</td>\n      <td class="form-group uib-time minutes" ng-class="{\'has-error\': invalidMinutes}">\n        <input type="text" placeholder="MM" ng-model="minutes" ng-change="updateMinutes()" class="form-control text-center" ng-readonly="::readonlyInput" maxlength="2" tabindex="{{::tabindex}}" ng-disabled="noIncrementMinutes()" ng-blur="blur()">\n      </td>\n      <td ng-show="showSeconds" class="uib-separator">:</td>\n      <td class="form-group uib-time seconds" ng-class="{\'has-error\': invalidSeconds}" ng-show="showSeconds">\n        <input type="text" placeholder="SS" ng-model="seconds" ng-change="updateSeconds()" class="form-control text-center" ng-readonly="readonlyInput" maxlength="2" tabindex="{{::tabindex}}" ng-disabled="noIncrementSeconds()" ng-blur="blur()">\n      </td>\n      <td ng-show="showMeridian" class="uib-time am-pm"><button type="button" ng-class="{disabled: noToggleMeridian()}" class="btn btn-default text-center" ng-click="toggleMeridian()" ng-disabled="noToggleMeridian()" tabindex="{{::tabindex}}">{{meridian}}</button></td>\n    </tr>\n    <tr class="text-center" ng-show="::showSpinners">\n      <td class="uib-decrement hours"><a ng-click="decrementHours()" ng-class="{disabled: noDecrementHours()}" class="btn btn-link" ng-disabled="noDecrementHours()" tabindex="-1"><span class="glyphicon glyphicon-chevron-down"></span></a></td>\n      <td>&nbsp;</td>\n      <td class="uib-decrement minutes"><a ng-click="decrementMinutes()" ng-class="{disabled: noDecrementMinutes()}" class="btn btn-link" ng-disabled="noDecrementMinutes()" tabindex="-1"><span class="glyphicon glyphicon-chevron-down"></span></a></td>\n      <td ng-show="showSeconds">&nbsp;</td>\n      <td ng-show="showSeconds" class="uib-decrement seconds"><a ng-click="decrementSeconds()" ng-class="{disabled: noDecrementSeconds()}" class="btn btn-link" ng-disabled="noDecrementSeconds()" tabindex="-1"><span class="glyphicon glyphicon-chevron-down"></span></a></td>\n      <td ng-show="showMeridian"></td>\n    </tr>\n  </tbody>\n</table>\n') }]), angular.module("uib/template/typeahead/typeahead-match.html", []).run(["$templateCache", function (a) { a.put("uib/template/typeahead/typeahead-match.html", '<a href\n   tabindex="-1"\n   ng-bind-html="match.label | uibTypeaheadHighlight:query"\n   ng-attr-title="{{match.label}}"></a>\n') }]), angular.module("uib/template/typeahead/typeahead-popup.html", []).run(["$templateCache", function (a) { a.put("uib/template/typeahead/typeahead-popup.html", '<ul class="dropdown-menu" ng-show="isOpen() && !moveInProgress" ng-style="{top: position().top+\'px\', left: position().left+\'px\'}" role="listbox" aria-hidden="{{!isOpen()}}">\n    <li class="uib-typeahead-match" ng-repeat="match in matches track by $index" ng-class="{active: isActive($index) }" ng-mouseenter="selectActive($index)" ng-click="selectMatch($index, $event)" role="option" id="{{::match.id}}">\n        <div uib-typeahead-match index="$index" match="match" query="query" template-url="templateUrl"></div>\n    </li>\n</ul>\n') }]), angular.module("ui.bootstrap.carousel").run(function () { !angular.$$csp().noInlineStyle && !angular.$$uibCarouselCss && angular.element(document).find("head").prepend('<style type="text/css">.ng-animate.item:not(.left):not(.right){-webkit-transition:0s ease-in-out left;transition:0s ease-in-out left}</style>'), angular.$$uibCarouselCss = !0 }), angular.module("ui.bootstrap.datepicker").run(function () { !angular.$$csp().noInlineStyle && !angular.$$uibDatepickerCss && angular.element(document).find("head").prepend('<style type="text/css">.uib-datepicker .uib-title{width:100%;}.uib-day button,.uib-month button,.uib-year button{min-width:100%;}.uib-left,.uib-right{width:100%}</style>'), angular.$$uibDatepickerCss = !0 }), angular.module("ui.bootstrap.position").run(function () { !angular.$$csp().noInlineStyle && !angular.$$uibPositionCss && angular.element(document).find("head").prepend('<style type="text/css">.uib-position-measure{display:block !important;visibility:hidden !important;position:absolute !important;top:-9999px !important;left:-9999px !important;}.uib-position-scrollbar-measure{position:absolute !important;top:-9999px !important;width:50px !important;height:50px !important;overflow:scroll !important;}.uib-position-body-scrollbar-measure{overflow:scroll !important;}</style>'), angular.$$uibPositionCss = !0 }), angular.module("ui.bootstrap.datepickerPopup").run(function () { !angular.$$csp().noInlineStyle && !angular.$$uibDatepickerpopupCss && angular.element(document).find("head").prepend('<style type="text/css">.uib-datepicker-popup.dropdown-menu{display:block;float:none;margin:0;}.uib-button-bar{padding:10px 9px 2px;}</style>'), angular.$$uibDatepickerpopupCss = !0 }), angular.module("ui.bootstrap.tooltip").run(function () { !angular.$$csp().noInlineStyle && !angular.$$uibTooltipCss && angular.element(document).find("head").prepend('<style type="text/css">[uib-tooltip-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-popup].tooltip.right-bottom > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-html-popup].tooltip.right-bottom > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.top-left > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.top-right > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.bottom-left > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.bottom-right > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.left-top > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.left-bottom > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.right-top > .tooltip-arrow,[uib-tooltip-template-popup].tooltip.right-bottom > .tooltip-arrow,[uib-popover-popup].popover.top-left > .arrow,[uib-popover-popup].popover.top-right > .arrow,[uib-popover-popup].popover.bottom-left > .arrow,[uib-popover-popup].popover.bottom-right > .arrow,[uib-popover-popup].popover.left-top > .arrow,[uib-popover-popup].popover.left-bottom > .arrow,[uib-popover-popup].popover.right-top > .arrow,[uib-popover-popup].popover.right-bottom > .arrow,[uib-popover-html-popup].popover.top-left > .arrow,[uib-popover-html-popup].popover.top-right > .arrow,[uib-popover-html-popup].popover.bottom-left > .arrow,[uib-popover-html-popup].popover.bottom-right > .arrow,[uib-popover-html-popup].popover.left-top > .arrow,[uib-popover-html-popup].popover.left-bottom > .arrow,[uib-popover-html-popup].popover.right-top > .arrow,[uib-popover-html-popup].popover.right-bottom > .arrow,[uib-popover-template-popup].popover.top-left > .arrow,[uib-popover-template-popup].popover.top-right > .arrow,[uib-popover-template-popup].popover.bottom-left > .arrow,[uib-popover-template-popup].popover.bottom-right > .arrow,[uib-popover-template-popup].popover.left-top > .arrow,[uib-popover-template-popup].popover.left-bottom > .arrow,[uib-popover-template-popup].popover.right-top > .arrow,[uib-popover-template-popup].popover.right-bottom > .arrow{top:auto;bottom:auto;left:auto;right:auto;margin:0;}[uib-popover-popup].popover,[uib-popover-html-popup].popover,[uib-popover-template-popup].popover{display:block !important;}</style>'), angular.$$uibTooltipCss = !0 }), angular.module("ui.bootstrap.timepicker").run(function () { !angular.$$csp().noInlineStyle && !angular.$$uibTimepickerCss && angular.element(document).find("head").prepend('<style type="text/css">.uib-time input{width:50px;}</style>'), angular.$$uibTimepickerCss = !0 }), angular.module("ui.bootstrap.typeahead").run(function () { !angular.$$csp().noInlineStyle && !angular.$$uibTypeaheadCss && angular.element(document).find("head").prepend('<style type="text/css">[uib-typeahead-popup].dropdown-menu{display:block;}</style>'), angular.$$uibTypeaheadCss = !0 });;
