! function t(e, n, i) { function r(s, a) { if(!n[s]) { if(!e[s]) { var l = "function" == typeof require && require; if(!a && l) return l(s, !0); if(o) return o(s, !0); var c = new error("cannot find module '" + s + "'"); throw c.code = "module_not_found", c } var u = n[s] = { exports: {} }; e[s][0].call(u.exports, function(t) { var n = e[s][1][t]; return r(n || t) }, u, u.exports, t, e, n, i) } return n[s].exports } for(var o = "function" == typeof require && require, s = 0; s < i.length; s++) r(i[s]); return r }({ 1: [function(t, e, n) { ! function(i, r) { if("function" == typeof define && define.amd) define(["exports", "module", "./util"], r); else if(void 0 !== n && void 0 !== e) r(n, e, t("./util")); else { var o = { exports: {} }; r(o.exports, o, i.util), i.dropdown = o.exports } }(this, function(t, e, n) { "use strict"; function i(t, e) { if(!(t instanceof e)) throw new typeerror("cannot call a class as a function") } var r = function() { function t(t, e) { for(var n = 0; n < e.length; n++) { var i = e[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), object.defineproperty(t, i.key, i) } } return function(e, n, i) { return n && t(e.prototype, n), i && t(e, i), e } }(), o = function(t) { return t && t.__esmodule ? t : { default: t } }(n), s = function(t) { var e = "dropdown", n = ".bs.dropdown", s = t.fn[e], a = { hide: "hide" + n, hidden: "hidden" + n, show: "show" + n, shown: "shown" + n, click: "click" + n, click_data_api: "click.bs.dropdown.data-api", keydown_data_api: "keydown.bs.dropdown.data-api" }, l = { backdrop: "dropdown-backdrop", disabled: "disabled", open: "open" }, c = { backdrop: ".dropdown-backdrop", data_toggle: '[data-toggle="dropdown"]', form_child: ".dropdown form", role_menu: '[role="menu"]', role_listbox: '[role="listbox"]', navbar_nav: ".navbar-nav", visible_items: '[role="menu"] li:not(.disabled) a, [role="listbox"] li:not(.disabled) a' }, u = function() { function e(t) { i(this, e), this._element = t, this._addeventlisteners() } return r(e, [{ key: "toggle", value: function() { if(this.disabled || t(this).hasclass(l.disabled)) return !1; var n = e._getparentfromelement(this), i = t(n).hasclass(l.open); if(e._clearmenus(), i) return !1; if("ontouchstart" in document.documentelement && !t(n).closest(c.navbar_nav).length) { var r = document.createelement("div"); r.classname = l.backdrop, t(r).insertbefore(this), t(r).on("click", e._clearmenus) } var o = { relatedtarget: this }, s = t.event(a.show, o); return t(n).trigger(s), !s.isdefaultprevented() && (this.focus(), this.setattribute("aria-expanded", "true"), t(n).toggleclass(l.open), t(n).trigger(t.event(a.shown, o)), !1) } }, { key: "dispose", value: function() { t.removedata(this._element, "bs.dropdown"), t(this._element).off(n), this._element = null } }, { key: "_addeventlisteners", value: function() { t(this._element).on(a.click, this.toggle) } }], [{ key: "_jqueryinterface", value: function(n) { return this.each(function() { var i = t(this).data("bs.dropdown"); if(i || t(this).data("bs.dropdown", i = new e(this)), "string" == typeof n) { if(void 0 === i[n]) throw new error('no method named "' + n + '"'); i[n].call(this) } }) } }, { key: "_clearmenus", value: function(n) { if(!n || 3 !== n.which) { var i = t(c.backdrop)[0]; i && i.parentnode.removechild(i); for(var r = t.makearray(t(c.data_toggle)), o = 0; o < r.length; o++) { var s = e._getparentfromelement(r[o]), u = { relatedtarget: r[o] }; if(t(s).hasclass(l.open) && !(n && "click" === n.type && /input|textarea/i.test(n.target.tagname) && t.contains(s, n.target))) { var h = t.event(a.hide, u); t(s).trigger(h), h.isdefaultprevented() || (r[o].setattribute("aria-expanded", "false"), t(s).removeclass(l.open).trigger(t.event(a.hidden, u))) } } } } }, { key: "_getparentfromelement", value: function(e) { var n = void 0, i = o.default.getselectorfromelement(e); return i && (n = t(i)[0]), n || e.parentnode } }, { key: "_dataapikeydownhandler", value: function(n) { if(/(38|40|27|32)/.test(n.which) && !/input|textarea/i.test(n.target.tagname) && (n.preventdefault(), n.stoppropagation(), !this.disabled && !t(this).hasclass(l.disabled))) { var i = e._getparentfromelement(this), r = t(i).hasclass(l.open); if(!r && 27 !== n.which || r && 27 === n.which) { if(27 === n.which) { var o = t(i).find(c.data_toggle)[0]; t(o).trigger("focus") } return void t(this).trigger("click") } var s = t.makearray(t(c.visible_items)); if(s = s.filter(function(t) { return t.offsetwidth || t.offsetheight }), s.length) { var a = s.indexof(n.target); 38 === n.which && a > 0 && a--, 40 === n.which && a < s.length - 1 && a++, ~a || (a = 0), s[a].focus() } } } }, { key: "version", get: function() { return "4.0.0-alpha" } }]), e }(); return t(document).on(a.keydown_data_api, c.data_toggle, u._dataapikeydownhandler).on(a.keydown_data_api, c.role_menu, u._dataapikeydownhandler).on(a.keydown_data_api, c.role_listbox, u._dataapikeydownhandler).on(a.click_data_api, u._clearmenus).on(a.click_data_api, c.data_toggle, u.prototype.toggle).on(a.click_data_api, c.form_child, function(t) { t.stoppropagation() }), t.fn[e] = u._jqueryinterface, t.fn[e].constructor = u, t.fn[e].noconflict = function() { return t.fn[e] = s, u._jqueryinterface }, u }(jquery); e.exports = s }) }, { "./util": 2 }], 2: [function(t, e, n) { ! function(t, i) { if("function" == typeof define && define.amd) define(["exports", "module"], i); else if(void 0 !== n && void 0 !== e) i(n, e); else { var r = { exports: {} }; i(r.exports, r), t.util = r.exports } }(this, function(t, e) { "use strict"; var n = function(t) { function e(t) { return {}.tostring.call(t).match(/\s([a-za-z]+)/)[1].tolowercase() } function n(t) { return(t[0] || t).nodetype } function i() { return { bindtype: s.end, delegatetype: s.end, handle: function(e) { if(t(e.target).is(this)) return e.handleobj.handler.apply(this, arguments) } } } function r() { if(window.qunit) return !1; var t = document.createelement("bootstrap"); for(var e in a) if(void 0 !== t.style[e]) return { end: a[e] }; return !1 } function o(e) { var n = this, i = !1; return t(this).one(l.transition_end, function() { i = !0 }), settimeout(function() { i || l.triggertransitionend(n) }, e), this } var s = !1, a = { webkittransition: "webkittransitionend", moztransition: "transitionend", otransition: "otransitionend otransitionend", transition: "transitionend" }, l = { transition_end: "bstransitionend", getuid: function(t) { do { t += ~~(1e6 * math.random()) } while (document.getelementbyid(t)); return t }, getselectorfromelement: function(t) { var e = t.getattribute("data-target"); return e || (e = t.getattribute("href") || "", e = /^#[a-z]/i.test(e) ? e : null), e }, reflow: function(t) { new function("bs", "return bs")(t.offsetheight) }, triggertransitionend: function(e) { t(e).trigger(s.end) }, supportstransitionend: function() { return boolean(s) }, typecheckconfig: function(t, i, r) { for(var o in r) if(r.hasownproperty(o)) { var s = r[o], a = i[o], l = void 0; if(l = a && n(a) ? "element" : e(a), !new regexp(s).test(l)) throw new error(t.touppercase() + ': option "' + o + '" provided type "' + l + '" but expected type "' + s + '".') } } }; return function() { s = r(), t.fn.emulatetransitionend = o, l.supportstransitionend() && (t.event.special[l.transition_end] = i()) }(), l }(jquery); e.exports = n }) }, {}], 3: [function(t, e, n) { ! function(t, n, i) { function r(e, i) { this.wrapper = "string" == typeof e ? n.queryselector(e) : e, this.scroller = this.wrapper.children[0], this.scrollerstyle = this.scroller.style, this.options = { resizescrollbars: !0, mousewheelspeed: 20, snapthreshold: .334, disablepointer: !l.haspointer, disabletouch: l.haspointer || !l.hastouch, disablemouse: l.haspointer || l.hastouch, startx: 0, starty: 0, scrolly: !0, directionlockthreshold: 5, momentum: !0, bounce: !0, bouncetime: 600, bounceeasing: "", preventdefault: !0, preventdefaultexception: { tagname: /^(input|textarea|button|select)$/ }, hwcompositing: !0, usetransition: !0, usetransform: !0, bindtowrapper: void 0 === t.onmousedown }; for(var r in i) this.options[r] = i[r]; this.translatez = this.options.hwcompositing && l.hasperspective ? " translatez(0)" : "", this.options.usetransition = l.hastransition && this.options.usetransition, this.options.usetransform = l.hastransform && this.options.usetransform, this.options.eventpassthrough = !0 === this.options.eventpassthrough ? "vertical" : this.options.eventpassthrough, this.options.preventdefault = !this.options.eventpassthrough && this.options.preventdefault, this.options.scrolly = "vertical" != this.options.eventpassthrough && this.options.scrolly, this.options.scrollx = "horizontal" != this.options.eventpassthrough && this.options.scrollx, this.options.freescroll = this.options.freescroll && !this.options.eventpassthrough, this.options.directionlockthreshold = this.options.eventpassthrough ? 0 : this.options.directionlockthreshold, this.options.bounceeasing = "string" == typeof this.options.bounceeasing ? l.ease[this.options.bounceeasing] || l.ease.circular : this.options.bounceeasing, this.options.resizepolling = void 0 === this.options.resizepolling ? 60 : this.options.resizepolling, !0 === this.options.tap && (this.options.tap = "tap"), "scale" == this.options.shrinkscrollbars && (this.options.usetransition = !1), this.options.invertwheeldirection = this.options.invertwheeldirection ? -1 : 1, this.x = 0, this.y = 0, this.directionx = 0, this.directiony = 0, this._events = {}, this._init(), this.refresh(), this.scrollto(this.options.startx, this.options.starty), this.enable() } function o(t, e, i) { var r = n.createelement("div"), o = n.createelement("div"); return !0 === i && (r.style.csstext = "position:absolute;z-index:9999", o.style.csstext = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px"), o.classname = "iscrollindicator", "h" == t ? (!0 === i && (r.style.csstext += ";height:7px;left:2px;right:2px;bottom:0", o.style.height = "100%"), r.classname = "iscrollhorizontalscrollbar") : (!0 === i && (r.style.csstext += ";width:7px;bottom:2px;top:2px;right:1px", o.style.width = "100%"), r.classname = "iscrollverticalscrollbar"), r.style.csstext += ";overflow:hidden", e || (r.style.pointerevents = "none"), r.appendchild(o), r } function s(e, i) { this.wrapper = "string" == typeof i.el ? n.queryselector(i.el) : i.el, this.wrapperstyle = this.wrapper.style, this.indicator = this.wrapper.children[0], this.indicatorstyle = this.indicator.style, this.scroller = e, this.options = { listenx: !0, listeny: !0, interactive: !1, resize: !0, defaultscrollbars: !1, shrink: !1, fade: !1, speedratiox: 0, speedratioy: 0 }; for(var r in i) this.options[r] = i[r]; if(this.sizeratiox = 1, this.sizeratioy = 1, this.maxposx = 0, this.maxposy = 0, this.options.interactive && (this.options.disabletouch || (l.addevent(this.indicator, "touchstart", this), l.addevent(t, "touchend", this)), this.options.disablepointer || (l.addevent(this.indicator, l.prefixpointerevent("pointerdown"), this), l.addevent(t, l.prefixpointerevent("pointerup"), this)), this.options.disablemouse || (l.addevent(this.indicator, "mousedown", this), l.addevent(t, "mouseup", this))), this.options.fade) { this.wrapperstyle[l.style.transform] = this.scroller.translatez; var o = l.style.transitionduration; this.wrapperstyle[o] = l.isbadandroid ? "0.0001ms" : "0ms"; var s = this; l.isbadandroid && a(function() { "0.0001ms" === s.wrapperstyle[o] && (s.wrapperstyle[o] = "0s") }), this.wrapperstyle.opacity = "0" } } var a = t.requestanimationframe || t.webkitrequestanimationframe || t.mozrequestanimationframe || t.orequestanimationframe || t.msrequestanimationframe || function(e) { t.settimeout(e, 1e3 / 60) }, l = function() { function e(t) { return !1 !== s && ("" === s ? t : s + t.charat(0).touppercase() + t.substr(1)) } var r = {}, o = n.createelement("div").style, s = function() { for(var t = ["t", "webkitt", "mozt", "mst", "ot"], e = 0, n = t.length; e < n; e++) if(t[e] + "ransform" in o) return t[e].substr(0, t[e].length - 1); return !1 }(); r.gettime = date.now || function() { return(new date).gettime() }, r.extend = function(t, e) { for(var n in e) t[n] = e[n] }, r.addevent = function(t, e, n, i) { t.addeventlistener(e, n, !!i) }, r.removeevent = function(t, e, n, i) { t.removeeventlistener(e, n, !!i) }, r.prefixpointerevent = function(e) { return t.mspointerevent ? "mspointer" + e.charat(7).touppercase() + e.substr(8) : e }, r.momentum = function(t, e, n, r, o, s) { var a, l, c = t - e, u = i.abs(c) / n; return s = void 0 === s ? 6e-4 : s, a = t + u * u / (2 * s) * (c < 0 ? -1 : 1), l = u / s, a < r ? (a = o ? r - o / 2.5 * (u / 8) : r, c = i.abs(a - t), l = c / u) : a > 0 && (a = o ? o / 2.5 * (u / 8) : 0, c = i.abs(t) + a, l = c / u), { destination: i.round(a), duration: l } }; var a = e("transform"); return r.extend(r, { hastransform: !1 !== a, hasperspective: e("perspective") in o, hastouch: "ontouchstart" in t, haspointer: !(!t.pointerevent && !t.mspointerevent), hastransition: e("transition") in o }), r.isbadandroid = function() { var e = t.navigator.appversion; if(/android/.test(e) && !/chrome\/\d/.test(e)) { var n = e.match(/safari\/(\d+.\d)/); return !(n && "object" == typeof n && n.length >= 2) || parsefloat(n[1]) < 535.19 } return !1 }(), r.extend(r.style = {}, { transform: a, transitiontimingfunction: e("transitiontimingfunction"), transitionduration: e("transitionduration"), transitiondelay: e("transitiondelay"), transformorigin: e("transformorigin") }), r.hasclass = function(t, e) { return new regexp("(^|\\s)" + e + "(\\s|$)").test(t.classname) }, r.addclass = function(t, e) { if(!r.hasclass(t, e)) { var n = t.classname.split(" "); n.push(e), t.classname = n.join(" ") } }, r.removeclass = function(t, e) { if(r.hasclass(t, e)) { var n = new regexp("(^|\\s)" + e + "(\\s|$)", "g"); t.classname = t.classname.replace(n, " ") } }, r.offset = function(t) { for(var e = -t.offsetleft, n = -t.offsettop; t = t.offsetparent;) e -= t.offsetleft, n -= t.offsettop; return { left: e, top: n } }, r.preventdefaultexception = function(t, e) { for(var n in e) if(e[n].test(t[n])) return !0; return !1 }, r.extend(r.eventtype = {}, { touchstart: 1, touchmove: 1, touchend: 1, mousedown: 2, mousemove: 2, mouseup: 2, pointerdown: 3, pointermove: 3, pointerup: 3, mspointerdown: 3, mspointermove: 3, mspointerup: 3 }), r.extend(r.ease = {}, { quadratic: { style: "cubic-bezier(0.25, 0.46, 0.45, 0.94)", fn: function(t) { return t * (2 - t) } }, circular: { style: "cubic-bezier(0.1, 0.57, 0.1, 1)", fn: function(t) { return i.sqrt(1 - --t * t) } }, back: { style: "cubic-bezier(0.175, 0.885, 0.32, 1.275)", fn: function(t) { return(t -= 1) * t * (5 * t + 4) + 1 } }, bounce: { style: "", fn: function(t) { return(t /= 1) < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375 } }, elastic: { style: "", fn: function(t) { return 0 === t ? 0 : 1 == t ? 1 : .4 * i.pow(2, -10 * t) * i.sin((t - .055) * (2 * i.pi) / .22) + 1 } } }), r.tap = function(t, e) { var i = n.createevent("event"); i.initevent(e, !0, !0), i.pagex = t.pagex, i.pagey = t.pagey, t.target.dispatchevent(i) }, r.click = function(t) { var e, i = t.target; /(select|input|textarea)/i.test(i.tagname) || (e = n.createevent("mouseevents"), e.initmouseevent("click", !0, !0, t.view, 1, i.screenx, i.screeny, i.clientx, i.clienty, t.ctrlkey, t.altkey, t.shiftkey, t.metakey, 0, null), e._constructed = !0, i.dispatchevent(e)) }, r }(); r.prototype = { version: "5.2.0", _init: function() { this._initevents(), (this.options.scrollbars || this.options.indicators) && this._initindicators(), this.options.mousewheel && this._initwheel(), this.options.snap && this._initsnap(), this.options.keybindings && this._initkeys() }, destroy: function() { this._initevents(!0), cleartimeout(this.resizetimeout), this.resizetimeout = null, this._execevent("destroy") }, _transitionend: function(t) { t.target == this.scroller && this.isintransition && (this._transitiontime(), this.resetposition(this.options.bouncetime) || (this.isintransition = !1, this._execevent("scrollend"))) }, _start: function(t) { if(1 != l.eventtype[t.type]) { if(0 !== (t.which ? t.button : t.button < 2 ? 0 : 4 == t.button ? 1 : 2)) return } if(this.enabled && (!this.initiated || l.eventtype[t.type] === this.initiated)) { !this.options.preventdefault || l.isbadandroid || l.preventdefaultexception(t.target, this.options.preventdefaultexception) || t.preventdefault(); var e, n = t.touches ? t.touches[0] : t; this.initiated = l.eventtype[t.type], this.moved = !1, this.distx = 0, this.disty = 0, this.directionx = 0, this.directiony = 0, this.directionlocked = 0, this.starttime = l.gettime(), this.options.usetransition && this.isintransition ? (this._transitiontime(), this.isintransition = !1, e = this.getcomputedposition(), this._translate(i.round(e.x), i.round(e.y)), this._execevent("scrollend")) : !this.options.usetransition && this.isanimating && (this.isanimating = !1, this._execevent("scrollend")), this.startx = this.x, this.starty = this.y, this.absstartx = this.x, this.absstarty = this.y, this.pointx = n.pagex, this.pointy = n.pagey, this._execevent("beforescrollstart") } }, _move: function(t) { if(this.enabled && l.eventtype[t.type] === this.initiated) { this.options.preventdefault && t.preventdefault(); var e, n, r, o, s = t.touches ? t.touches[0] : t, a = s.pagex - this.pointx, c = s.pagey - this.pointy, u = l.gettime(); if(this.pointx = s.pagex, this.pointy = s.pagey, this.distx += a, this.disty += c, r = i.abs(this.distx), o = i.abs(this.disty), !(u - this.endtime > 300 && r < 10 && o < 10)) { if(this.directionlocked || this.options.freescroll || (r > o + this.options.directionlockthreshold ? this.directionlocked = "h" : o >= r + this.options.directionlockthreshold ? this.directionlocked = "v" : this.directionlocked = "n"), "h" == this.directionlocked) { if("vertical" == this.options.eventpassthrough) t.preventdefault(); else if("horizontal" == this.options.eventpassthrough) return void(this.initiated = !1); c = 0 } else if("v" == this.directionlocked) { if("horizontal" == this.options.eventpassthrough) t.preventdefault(); else if("vertical" == this.options.eventpassthrough) return void(this.initiated = !1); a = 0 } a = this.hashorizontalscroll ? a : 0, c = this.hasverticalscroll ? c : 0, e = this.x + a, n = this.y + c, (e > 0 || e < this.maxscrollx) && (e = this.options.bounce ? this.x + a / 3 : e > 0 ? 0 : this.maxscrollx), (n > 0 || n < this.maxscrolly) && (n = this.options.bounce ? this.y + c / 3 : n > 0 ? 0 : this.maxscrolly), this.directionx = a > 0 ? -1 : a < 0 ? 1 : 0, this.directiony = c > 0 ? -1 : c < 0 ? 1 : 0, this.moved || this._execevent("scrollstart"), this.moved = !0, this._translate(e, n), u - this.starttime > 300 && (this.starttime = u, this.startx = this.x, this.starty = this.y) } } }, _end: function(t) { if(this.enabled && l.eventtype[t.type] === this.initiated) { this.options.preventdefault && !l.preventdefaultexception(t.target, this.options.preventdefaultexception) && t.preventdefault(); var e, n, r = (t.changedtouches && t.changedtouches[0], l.gettime() - this.starttime), o = i.round(this.x), s = i.round(this.y), a = i.abs(o - this.startx), c = i.abs(s - this.starty), u = 0, h = ""; if(this.isintransition = 0, this.initiated = 0, this.endtime = l.gettime(), !this.resetposition(this.options.bouncetime)) { if(this.scrollto(o, s), !this.moved) return this.options.tap && l.tap(t, this.options.tap), this.options.click && l.click(t), void this._execevent("scrollcancel"); if(this._events.flick && r < 200 && a < 100 && c < 100) return void this._execevent("flick"); if(this.options.momentum && r < 300 && (e = this.hashorizontalscroll ? l.momentum(this.x, this.startx, r, this.maxscrollx, this.options.bounce ? this.wrapperwidth : 0, this.options.deceleration) : { destination: o, duration: 0 }, n = this.hasverticalscroll ? l.momentum(this.y, this.starty, r, this.maxscrolly, this.options.bounce ? this.wrapperheight : 0, this.options.deceleration) : { destination: s, duration: 0 }, o = e.destination, s = n.destination, u = i.max(e.duration, n.duration), this.isintransition = 1), this.options.snap) { var p = this._nearestsnap(o, s); this.currentpage = p, u = this.options.snapspeed || i.max(i.max(i.min(i.abs(o - p.x), 1e3), i.min(i.abs(s - p.y), 1e3)), 300), o = p.x, s = p.y, this.directionx = 0, this.directiony = 0, h = this.options.bounceeasing } if(o != this.x || s != this.y) return(o > 0 || o < this.maxscrollx || s > 0 || s < this.maxscrolly) && (h = l.ease.quadratic), void this.scrollto(o, s, u, h); this._execevent("scrollend") } } }, _resize: function() { var t = this; cleartimeout(this.resizetimeout), this.resizetimeout = settimeout(function() { t.refresh() }, this.options.resizepolling) }, resetposition: function(t) { var e = this.x, n = this.y; return t = t || 0, !this.hashorizontalscroll || this.x > 0 ? e = 0 : this.x < this.maxscrollx && (e = this.maxscrollx), !this.hasverticalscroll || this.y > 0 ? n = 0 : this.y < this.maxscrolly && (n = this.maxscrolly), (e != this.x || n != this.y) && (this.scrollto(e, n, t, this.options.bounceeasing), !0) }, disable: function() { this.enabled = !1 }, enable: function() { this.enabled = !0 }, refresh: function() { this.wrapper.offsetheight; this.wrapperwidth = this.wrapper.clientwidth, this.wrapperheight = this.wrapper.clientheight, this.scrollerwidth = this.scroller.offsetwidth, this.scrollerheight = this.scroller.offsetheight, this.maxscrollx = this.wrapperwidth - this.scrollerwidth, this.maxscrolly = this.wrapperheight - this.scrollerheight, this.hashorizontalscroll = this.options.scrollx && this.maxscrollx < 0, this.hasverticalscroll = this.options.scrolly && this.maxscrolly < 0, this.hashorizontalscroll || (this.maxscrollx = 0, this.scrollerwidth = this.wrapperwidth), this.hasverticalscroll || (this.maxscrolly = 0, this.scrollerheight = this.wrapperheight), this.endtime = 0, this.directionx = 0, this.directiony = 0, this.wrapperoffset = l.offset(this.wrapper), this._execevent("refresh"), this.resetposition() }, on: function(t, e) { this._events[t] || (this._events[t] = []), this._events[t].push(e) }, off: function(t, e) { if(this._events[t]) { var n = this._events[t].indexof(e); n > -1 && this._events[t].splice(n, 1) } }, _execevent: function(t) { if(this._events[t]) { var e = 0, n = this._events[t].length; if(n) for(; e < n; e++) this._events[t][e].apply(this, [].slice.call(arguments, 1)) } }, scrollby: function(t, e, n, i) { t = this.x + t, e = this.y + e, n = n || 0, this.scrollto(t, e, n, i) }, scrollto: function(t, e, n, i) { i = i || l.ease.circular, this.isintransition = this.options.usetransition && n > 0; var r = this.options.usetransition && i.style; !n || r ? (r && (this._transitiontimingfunction(i.style), this._transitiontime(n)), this._translate(t, e)) : this._animate(t, e, n, i.fn) }, scrolltoelement: function(t, e, n, r, o) { if(t = t.nodetype ? t : this.scroller.queryselector(t)) { var s = l.offset(t); s.left -= this.wrapperoffset.left, s.top -= this.wrapperoffset.top, !0 === n && (n = i.round(t.offsetwidth / 2 - this.wrapper.offsetwidth / 2)), !0 === r && (r = i.round(t.offsetheight / 2 - this.wrapper.offsetheight / 2)), s.left -= n || 0, s.top -= r || 0, s.left = s.left > 0 ? 0 : s.left < this.maxscrollx ? this.maxscrollx : s.left, s.top = s.top > 0 ? 0 : s.top < this.maxscrolly ? this.maxscrolly : s.top, e = void 0 === e || null === e || "auto" === e ? i.max(i.abs(this.x - s.left), i.abs(this.y - s.top)) : e, this.scrollto(s.left, s.top, e, o) } }, _transitiontime: function(t) { t = t || 0; var e = l.style.transitionduration; if(this.scrollerstyle[e] = t + "ms", !t && l.isbadandroid) { this.scrollerstyle[e] = "0.0001ms"; var n = this; a(function() { "0.0001ms" === n.scrollerstyle[e] && (n.scrollerstyle[e] = "0s") }) } if(this.indicators) for(var i = this.indicators.length; i--;) this.indicators[i].transitiontime(t) }, _transitiontimingfunction: function(t) { if(this.scrollerstyle[l.style.transitiontimingfunction] = t, this.indicators) for(var e = this.indicators.length; e--;) this.indicators[e].transitiontimingfunction(t) }, _translate: function(t, e) { if(this.options.usetransform ? this.scrollerstyle[l.style.transform] = "translate(" + t + "px," + e + "px)" + this.translatez : (t = i.round(t), e = i.round(e), this.scrollerstyle.left = t + "px", this.scrollerstyle.top = e + "px"), this.x = t, this.y = e, this.indicators) for(var n = this.indicators.length; n--;) this.indicators[n].updateposition() }, _initevents: function(e) { var n = e ? l.removeevent : l.addevent, i = this.options.bindtowrapper ? this.wrapper : t; n(t, "orientationchange", this), n(t, "resize", this), this.options.click && n(this.wrapper, "click", this, !0), this.options.disablemouse || (n(this.wrapper, "mousedown", this), n(i, "mousemove", this), n(i, "mousecancel", this), n(i, "mouseup", this)), l.haspointer && !this.options.disablepointer && (n(this.wrapper, l.prefixpointerevent("pointerdown"), this), n(i, l.prefixpointerevent("pointermove"), this), n(i, l.prefixpointerevent("pointercancel"), this), n(i, l.prefixpointerevent("pointerup"), this)), l.hastouch && !this.options.disabletouch && (n(this.wrapper, "touchstart", this), n(i, "touchmove", this), n(i, "touchcancel", this), n(i, "touchend", this)), n(this.scroller, "transitionend", this), n(this.scroller, "webkittransitionend", this), n(this.scroller, "otransitionend", this), n(this.scroller, "mstransitionend", this) }, getcomputedposition: function() { var e, n, i = t.getcomputedstyle(this.scroller, null); return this.options.usetransform ? (i = i[l.style.transform].split(")")[0].split(", "), e = +(i[12] || i[4]), n = +(i[13] || i[5])) : (e = +i.left.replace(/[^-\d.]/g, ""), n = +i.top.replace(/[^-\d.]/g, "")), { x: e, y: n } }, _initindicators: function() { function t(t) { if(a.indicators) for(var e = a.indicators.length; e--;) t.call(a.indicators[e]) } var e, n = this.options.interactivescrollbars, i = "string" != typeof this.options.scrollbars, r = [], a = this; this.indicators = [], this.options.scrollbars && (this.options.scrolly && (e = { el: o("v", n, this.options.scrollbars), interactive: n, defaultscrollbars: !0, customstyle: i, resize: this.options.resizescrollbars, shrink: this.options.shrinkscrollbars, fade: this.options.fadescrollbars, listenx: !1 }, this.wrapper.appendchild(e.el), r.push(e)), this.options.scrollx && (e = { el: o("h", n, this.options.scrollbars), interactive: n, defaultscrollbars: !0, customstyle: i, resize: this.options.resizescrollbars, shrink: this.options.shrinkscrollbars, fade: this.options.fadescrollbars, listeny: !1 }, this.wrapper.appendchild(e.el), r.push(e))), this.options.indicators && (r = r.concat(this.options.indicators)); for(var l = r.length; l--;) this.indicators.push(new s(this, r[l])); this.options.fadescrollbars && (this.on("scrollend", function() { t(function() { this.fade() }) }), this.on("scrollcancel", function() { t(function() { this.fade() }) }), this.on("scrollstart", function() { t(function() { this.fade(1) }) }), this.on("beforescrollstart", function() { t(function() { this.fade(1, !0) }) })), this.on("refresh", function() { t(function() { this.refresh() }) }), this.on("destroy", function() { t(function() { this.destroy() }), delete this.indicators }) }, _initwheel: function() { l.addevent(this.wrapper, "wheel", this), l.addevent(this.wrapper, "mousewheel", this), l.addevent(this.wrapper, "dommousescroll", this), this.on("destroy", function() { cleartimeout(this.wheeltimeout), this.wheeltimeout = null, l.removeevent(this.wrapper, "wheel", this), l.removeevent(this.wrapper, "mousewheel", this), l.removeevent(this.wrapper, "dommousescroll", this) }) }, _wheel: function(t) { if(this.enabled) { t.preventdefault(); var e, n, r, o, s = this; if(void 0 === this.wheeltimeout && s._execevent("scrollstart"), cleartimeout(this.wheeltimeout), this.wheeltimeout = settimeout(function() { s.options.snap || s._execevent("scrollend"), s.wheeltimeout = void 0 }, 400), "deltax" in t) 1 === t.deltamode ? (e = -t.deltax * this.options.mousewheelspeed, n = -t.deltay * this.options.mousewheelspeed) : (e = -t.deltax, n = -t.deltay); else if("wheeldeltax" in t) e = t.wheeldeltax / 120 * this.options.mousewheelspeed, n = t.wheeldeltay / 120 * this.options.mousewheelspeed; else if("wheeldelta" in t) e = n = t.wheeldelta / 120 * this.options.mousewheelspeed; else { if(!("detail" in t)) return; e = n = -t.detail / 3 * this.options.mousewheelspeed } if(e *= this.options.invertwheeldirection, n *= this.options.invertwheeldirection, this.hasverticalscroll || (e = n, n = 0), this.options.snap) return r = this.currentpage.pagex, o = this.currentpage.pagey, e > 0 ? r-- : e < 0 && r++, n > 0 ? o-- : n < 0 && o++, void this.gotopage(r, o); r = this.x + i.round(this.hashorizontalscroll ? e : 0), o = this.y + i.round(this.hasverticalscroll ? n : 0), this.directionx = e > 0 ? -1 : e < 0 ? 1 : 0, this.directiony = n > 0 ? -1 : n < 0 ? 1 : 0, r > 0 ? r = 0 : r < this.maxscrollx && (r = this.maxscrollx), o > 0 ? o = 0 : o < this.maxscrolly && (o = this.maxscrolly), this.scrollto(r, o, 0) } }, _initsnap: function() { this.currentpage = {}, "string" == typeof this.options.snap && (this.options.snap = this.scroller.queryselectorall(this.options.snap)), this.on("refresh", function() { var t, e, n, r, o, s, a = 0, l = 0, c = 0, u = this.options.snapstepx || this.wrapperwidth, h = this.options.snapstepy || this.wrapperheight; if(this.pages = [], this.wrapperwidth && this.wrapperheight && this.scrollerwidth && this.scrollerheight) { if(!0 === this.options.snap) for(n = i.round(u / 2), r = i.round(h / 2); c > -this.scrollerwidth;) { for(this.pages[a] = [], t = 0, o = 0; o > -this.scrollerheight;) this.pages[a][t] = { x: i.max(c, this.maxscrollx), y: i.max(o, this.maxscrolly), width: u, height: h, cx: c - n, cy: o - r }, o -= h, t++; c -= u, a++ } else for(s = this.options.snap, t = s.length, e = -1; a < t; a++)(0 === a || s[a].offsetleft <= s[a - 1].offsetleft) && (l = 0, e++), this.pages[l] || (this.pages[l] = []), c = i.max(-s[a].offsetleft, this.maxscrollx), o = i.max(-s[a].offsettop, this.maxscrolly), n = c - i.round(s[a].offsetwidth / 2), r = o - i.round(s[a].offsetheight / 2), this.pages[l][e] = { x: c, y: o, width: s[a].offsetwidth, height: s[a].offsetheight, cx: n, cy: r }, c > this.maxscrollx && l++; this.gotopage(this.currentpage.pagex || 0, this.currentpage.pagey || 0, 0), this.options.snapthreshold % 1 == 0 ? (this.snapthresholdx = this.options.snapthreshold, this.snapthresholdy = this.options.snapthreshold) : (this.snapthresholdx = i.round(this.pages[this.currentpage.pagex][this.currentpage.pagey].width * this.options.snapthreshold), this.snapthresholdy = i.round(this.pages[this.currentpage.pagex][this.currentpage.pagey].height * this.options.snapthreshold)) } }), this.on("flick", function() { var t = this.options.snapspeed || i.max(i.max(i.min(i.abs(this.x - this.startx), 1e3), i.min(i.abs(this.y - this.starty), 1e3)), 300); this.gotopage(this.currentpage.pagex + this.directionx, this.currentpage.pagey + this.directiony, t) }) }, _nearestsnap: function(t, e) { if(!this.pages.length) return { x: 0, y: 0, pagex: 0, pagey: 0 }; var n = 0, r = this.pages.length, o = 0; if(i.abs(t - this.absstartx) < this.snapthresholdx && i.abs(e - this.absstarty) < this.snapthresholdy) return this.currentpage; for(t > 0 ? t = 0 : t < this.maxscrollx && (t = this.maxscrollx), e > 0 ? e = 0 : e < this.maxscrolly && (e = this.maxscrolly); n < r; n++) if(t >= this.pages[n][0].cx) { t = this.pages[n][0].x; break } for(r = this.pages[n].length; o < r; o++) if(e >= this.pages[0][o].cy) { e = this.pages[0][o].y; break } return n == this.currentpage.pagex && (n += this.directionx, n < 0 ? n = 0 : n >= this.pages.length && (n = this.pages.length - 1), t = this.pages[n][0].x), o == this.currentpage.pagey && (o += this.directiony, o < 0 ? o = 0 : o >= this.pages[0].length && (o = this.pages[0].length - 1), e = this.pages[0][o].y), { x: t, y: e, pagex: n, pagey: o } }, gotopage: function(t, e, n, r) { r = r || this.options.bounceeasing, t >= this.pages.length ? t = this.pages.length - 1 : t < 0 && (t = 0), e >= this.pages[t].length ? e = this.pages[t].length - 1 : e < 0 && (e = 0); var o = this.pages[t][e].x, s = this.pages[t][e].y; n = void 0 === n ? this.options.snapspeed || i.max(i.max(i.min(i.abs(o - this.x), 1e3), i.min(i.abs(s - this.y), 1e3)), 300) : n, this.currentpage = { x: o, y: s, pagex: t, pagey: e }, this.scrollto(o, s, n, r) }, next: function(t, e) { var n = this.currentpage.pagex, i = this.currentpage.pagey; n++, n >= this.pages.length && this.hasverticalscroll && (n = 0, i++), this.gotopage(n, i, t, e) }, prev: function(t, e) { var n = this.currentpage.pagex, i = this.currentpage.pagey; n--, n < 0 && this.hasverticalscroll && (n = 0, i--), this.gotopage(n, i, t, e) }, _initkeys: function(e) { var n, i = { pageup: 33, pagedown: 34, end: 35, home: 36, left: 37, up: 38, right: 39, down: 40 }; if("object" == typeof this.options.keybindings) for(n in this.options.keybindings) "string" == typeof this.options.keybindings[n] && (this.options.keybindings[n] = this.options.keybindings[n].touppercase().charcodeat(0)); else this.options.keybindings = {}; for(n in i) this.options.keybindings[n] = this.options.keybindings[n] || i[n]; l.addevent(t, "keydown", this), this.on("destroy", function() { l.removeevent(t, "keydown", this) }) }, _key: function(t) { if(this.enabled) { var e, n = this.options.snap, r = n ? this.currentpage.pagex : this.x, o = n ? this.currentpage.pagey : this.y, s = l.gettime(), a = this.keytime || 0; switch(this.options.usetransition && this.isintransition && (e = this.getcomputedposition(), this._translate(i.round(e.x), i.round(e.y)), this.isintransition = !1), this.keyacceleration = s - a < 200 ? i.min(this.keyacceleration + .25, 50) : 0, t.keycode) { case this.options.keybindings.pageup: this.hashorizontalscroll && !this.hasverticalscroll ? r += n ? 1 : this.wrapperwidth : o += n ? 1 : this.wrapperheight; break; case this.options.keybindings.pagedown: this.hashorizontalscroll && !this.hasverticalscroll ? r -= n ? 1 : this.wrapperwidth : o -= n ? 1 : this.wrapperheight; break; case this.options.keybindings.end: r = n ? this.pages.length - 1 : this.maxscrollx, o = n ? this.pages[0].length - 1 : this.maxscrolly; break; case this.options.keybindings.home: r = 0, o = 0; break; case this.options.keybindings.left: r += n ? -1 : 5 + this.keyacceleration >> 0; break; case this.options.keybindings.up: o += n ? 1 : 5 + this.keyacceleration >> 0; break; case this.options.keybindings.right: r -= n ? -1 : 5 + this.keyacceleration >> 0; break; case this.options.keybindings.down: o -= n ? 1 : 5 + this.keyacceleration >> 0; break; default: return } if(n) return void this.gotopage(r, o); r > 0 ? (r = 0, this.keyacceleration = 0) : r < this.maxscrollx && (r = this.maxscrollx, this.keyacceleration = 0), o > 0 ? (o = 0, this.keyacceleration = 0) : o < this.maxscrolly && (o = this.maxscrolly, this.keyacceleration = 0), this.scrollto(r, o, 0), this.keytime = s } }, _animate: function(t, e, n, i) { function r() { var p, d, f, g = l.gettime(); if(g >= h) return o.isanimating = !1, o._translate(t, e), void(o.resetposition(o.options.bouncetime) || o._execevent("scrollend")); g = (g - u) / n, f = i(g), p = (t - s) * f + s, d = (e - c) * f + c, o._translate(p, d), o.isanimating && a(r) } var o = this, s = this.x, c = this.y, u = l.gettime(), h = u + n; this.isanimating = !0, r() }, handleevent: function(t) { switch(t.type) { case "touchstart": case "pointerdown": case "mspointerdown": case "mousedown": this._start(t); break; case "touchmove": case "pointermove": case "mspointermove": case "mousemove": this._move(t); break; case "touchend": case "pointerup": case "mspointerup": case "mouseup": case "touchcancel": case "pointercancel": case "mspointercancel": case "mousecancel": this._end(t); break; case "orientationchange": case "resize": this._resize(); break; case "transitionend": case "webkittransitionend": case "otransitionend": case "mstransitionend": this._transitionend(t); break; case "wheel": case "dommousescroll": case "mousewheel": this._wheel(t); break; case "keydown": this._key(t); break; case "click": this.enabled && !t._constructed && (t.preventdefault(), t.stoppropagation()) } } }, s.prototype = { handleevent: function(t) { switch(t.type) { case "touchstart": case "pointerdown": case "mspointerdown": case "mousedown": this._start(t); break; case "touchmove": case "pointermove": case "mspointermove": case "mousemove": this._move(t); break; case "touchend": case "pointerup": case "mspointerup": case "mouseup": case "touchcancel": case "pointercancel": case "mspointercancel": case "mousecancel": this._end(t) } }, destroy: function() { this.options.fadescrollbars && (cleartimeout(this.fadetimeout), this.fadetimeout = null), this.options.interactive && (l.removeevent(this.indicator, "touchstart", this), l.removeevent(this.indicator, l.prefixpointerevent("pointerdown"), this), l.removeevent(this.indicator, "mousedown", this), l.removeevent(t, "touchmove", this), l.removeevent(t, l.prefixpointerevent("pointermove"), this), l.removeevent(t, "mousemove", this), l.removeevent(t, "touchend", this), l.removeevent(t, l.prefixpointerevent("pointerup"), this), l.removeevent(t, "mouseup", this)), this.options.defaultscrollbars && this.wrapper.parentnode.removechild(this.wrapper) }, _start: function(e) { var n = e.touches ? e.touches[0] : e; e.preventdefault(), e.stoppropagation(), this.transitiontime(), this.initiated = !0, this.moved = !1, this.lastpointx = n.pagex, this.lastpointy = n.pagey, this.starttime = l.gettime(), this.options.disabletouch || l.addevent(t, "touchmove", this), this.options.disablepointer || l.addevent(t, l.prefixpointerevent("pointermove"), this), this.options.disablemouse || l.addevent(t, "mousemove", this), this.scroller._execevent("beforescrollstart") }, _move: function(t) { var e, n, i, r, o = t.touches ? t.touches[0] : t; l.gettime(); this.moved || this.scroller._execevent("scrollstart"), this.moved = !0, e = o.pagex - this.lastpointx, this.lastpointx = o.pagex, n = o.pagey - this.lastpointy, this.lastpointy = o.pagey, i = this.x + e, r = this.y + n, this._pos(i, r), t.preventdefault(), t.stoppropagation() }, _end: function(e) { if(this.initiated) { if(this.initiated = !1, e.preventdefault(), e.stoppropagation(), l.removeevent(t, "touchmove", this), l.removeevent(t, l.prefixpointerevent("pointermove"), this), l.removeevent(t, "mousemove", this), this.scroller.options.snap) { var n = this.scroller._nearestsnap(this.scroller.x, this.scroller.y), r = this.options.snapspeed || i.max(i.max(i.min(i.abs(this.scroller.x - n.x), 1e3), i.min(i.abs(this.scroller.y - n.y), 1e3)), 300); this.scroller.x == n.x && this.scroller.y == n.y || (this.scroller.directionx = 0, this.scroller.directiony = 0, this.scroller.currentpage = n, this.scroller.scrollto(n.x, n.y, r, this.scroller.options.bounceeasing)) } this.moved && this.scroller._execevent("scrollend") } }, transitiontime: function(t) { t = t || 0; var e = l.style.transitionduration; if(this.indicatorstyle[e] = t + "ms", !t && l.isbadandroid) { this.indicatorstyle[e] = "0.0001ms"; var n = this; a(function() { "0.0001ms" === n.indicatorstyle[e] && (n.indicatorstyle[e] = "0s") }) } }, transitiontimingfunction: function(t) { this.indicatorstyle[l.style.transitiontimingfunction] = t }, refresh: function() { this.transitiontime(), this.options.listenx && !this.options.listeny ? this.indicatorstyle.display = this.scroller.hashorizontalscroll ? "block" : "none" : this.options.listeny && !this.options.listenx ? this.indicatorstyle.display = this.scroller.hasverticalscroll ? "block" : "none" : this.indicatorstyle.display = this.scroller.hashorizontalscroll || this.scroller.hasverticalscroll ? "block" : "none", this.scroller.hashorizontalscroll && this.scroller.hasverticalscroll ? (l.addclass(this.wrapper, "iscrollbothscrollbars"), l.removeclass(this.wrapper, "iscrolllonescrollbar"), this.options.defaultscrollbars && this.options.customstyle && (this.options.listenx ? this.wrapper.style.right = "8px" : this.wrapper.style.bottom = "8px")) : (l.removeclass(this.wrapper, "iscrollbothscrollbars"), l.addclass(this.wrapper, "iscrolllonescrollbar"), this.options.defaultscrollbars && this.options.customstyle && (this.options.listenx ? this.wrapper.style.right = "2px" : this.wrapper.style.bottom = "2px")); this.wrapper.offsetheight; this.options.listenx && (this.wrapperwidth = this.wrapper.clientwidth, this.options.resize ? (this.indicatorwidth = i.max(i.round(this.wrapperwidth * this.wrapperwidth / (this.scroller.scrollerwidth || this.wrapperwidth || 1)), 8), this.indicatorstyle.width = this.indicatorwidth + "px") : this.indicatorwidth = this.indicator.clientwidth, this.maxposx = this.wrapperwidth - this.indicatorwidth, "clip" == this.options.shrink ? (this.minboundaryx = 8 - this.indicatorwidth, this.maxboundaryx = this.wrapperwidth - 8) : (this.minboundaryx = 0, this.maxboundaryx = this.maxposx), this.sizeratiox = this.options.speedratiox || this.scroller.maxscrollx && this.maxposx / this.scroller.maxscrollx), this.options.listeny && (this.wrapperheight = this.wrapper.clientheight, this.options.resize ? (this.indicatorheight = i.max(i.round(this.wrapperheight * this.wrapperheight / (this.scroller.scrollerheight || this.wrapperheight || 1)), 8), this.indicatorstyle.height = this.indicatorheight + "px") : this.indicatorheight = this.indicator.clientheight, this.maxposy = this.wrapperheight - this.indicatorheight, "clip" == this.options.shrink ? (this.minboundaryy = 8 - this.indicatorheight, this.maxboundaryy = this.wrapperheight - 8) : (this.minboundaryy = 0, this.maxboundaryy = this.maxposy), this.maxposy = this.wrapperheight - this.indicatorheight, this.sizeratioy = this.options.speedratioy || this.scroller.maxscrolly && this.maxposy / this.scroller.maxscrolly), this.updateposition() }, updateposition: function() { var t = this.options.listenx && i.round(this.sizeratiox * this.scroller.x) || 0, e = this.options.listeny && i.round(this.sizeratioy * this.scroller.y) || 0; this.options.ignoreboundaries || (t < this.minboundaryx ? ("scale" == this.options.shrink && (this.width = i.max(this.indicatorwidth + t, 8), this.indicatorstyle.width = this.width + "px"), t = this.minboundaryx) : t > this.maxboundaryx ? "scale" == this.options.shrink ? (this.width = i.max(this.indicatorwidth - (t - this.maxposx), 8), this.indicatorstyle.width = this.width + "px", t = this.maxposx + this.indicatorwidth - this.width) : t = this.maxboundaryx : "scale" == this.options.shrink && this.width != this.indicatorwidth && (this.width = this.indicatorwidth, this.indicatorstyle.width = this.width + "px"), e < this.minboundaryy ? ("scale" == this.options.shrink && (this.height = i.max(this.indicatorheight + 3 * e, 8), this.indicatorstyle.height = this.height + "px"), e = this.minboundaryy) : e > this.maxboundaryy ? "scale" == this.options.shrink ? (this.height = i.max(this.indicatorheight - 3 * (e - this.maxposy), 8), this.indicatorstyle.height = this.height + "px", e = this.maxposy + this.indicatorheight - this.height) : e = this.maxboundaryy : "scale" == this.options.shrink && this.height != this.indicatorheight && (this.height = this.indicatorheight, this.indicatorstyle.height = this.height + "px")), this.x = t, this.y = e, this.scroller.options.usetransform ? this.indicatorstyle[l.style.transform] = "translate(" + t + "px," + e + "px)" + this.scroller.translatez : (this.indicatorstyle.left = t + "px", this.indicatorstyle.top = e + "px") }, _pos: function(t, e) { t < 0 ? t = 0 : t > this.maxposx && (t = this.maxposx), e < 0 ? e = 0 : e > this.maxposy && (e = this.maxposy), t = this.options.listenx ? i.round(t / this.sizeratiox) : this.scroller.x, e = this.options.listeny ? i.round(e / this.sizeratioy) : this.scroller.y, this.scroller.scrollto(t, e) }, fade: function(t, e) { if(!e || this.visible) { cleartimeout(this.fadetimeout), this.fadetimeout = null; var n = t ? 250 : 500, i = t ? 0 : 300; t = t ? "1" : "0", this.wrapperstyle[l.style.transitionduration] = n + "ms", this.fadetimeout = settimeout(function(t) { this.wrapperstyle.opacity = t, this.visible = +t }.bind(this, t), i) } } }, r.utils = l, void 0 !== e && e.exports ? e.exports = r : "function" == typeof define && define.amd ? define(function() { return r }) : t.iscroll = r }(window, document, math) }, {}], 4: [function(t, e, n) { ! function(i) { "use strict"; "function" == typeof define && define.amd ? define(["jquery"], i) : "object" == typeof n ? e.exports = i(t("jquery")) : i(jquery) }(function(t) { "use strict"; var e = void 0 !== document.ontouchstart, n = { init: function(e) { return e = t.extend({ iscroll: { mousewheel: !0, preventdefault: !1 }, showoverlay: !0 }, e), n.settings = { state: !1, events: { opened: "drawer.opened", closed: "drawer.closed" }, dropdownevents: { opened: "shown.bs.dropdown", closed: "hidden.bs.dropdown" } }, n.settings.class = t.extend({ nav: "drawer-nav", toggle: "drawer-toggle", overlay: "drawer-overlay", open: "drawer-open", close: "drawer-close", dropdown: "drawer-dropdown" }, e.class), this.each(function() { var i = this, r = t(this); r.data("drawer") || (e = t.extend({}, e), r.data("drawer", { options: e }), n.refresh.call(i), e.showoverlay && n.addoverlay.call(i), t("." + n.settings.class.toggle).on("click.drawer", function() { return n.toggle.call(i), i.iscroll.refresh() }), t(window).on("resize.drawer", function() { return n.close.call(i), i.iscroll.refresh() }), t("." + n.settings.class.dropdown).on(n.settings.dropdownevents.opened + " " + n.settings.dropdownevents.closed, function() { return i.iscroll.refresh() })) }) }, refresh: function() { this.iscroll = new iscroll("." + n.settings.class.nav, t(this).data("drawer").options.iscroll) }, addoverlay: function() { var e = t(this), i = t("
").addclass(n.settings.class.overlay + " " + n.settings.class.toggle); return e.append(i) }, toggle: function() { var t = this; return n.settings.state ? n.close.call(t) : n.open.call(t) }, open: function() { var i = t(this); return e && i.on("touchmove.drawer", function(t) { t.preventdefault() }), i.removeclass(n.settings.class.close).addclass(n.settings.class.open).drawercallback(function() { n.settings.state = !0, i.trigger(n.settings.events.opened) }) }, close: function() { var i = t(this); return e && i.off("touchmove.drawer"), i.removeclass(n.settings.class.open).addclass(n.settings.class.close).drawercallback(function() { n.settings.state = !1, i.trigger(n.settings.events.closed) }) }, destroy: function() { return this.each(function() { var e = this, i = t(this); t("." + n.settings.class.toggle).off("click.drawer"), t(window).off("resize.drawer"), t("." + n.settings.class.dropdown).off(n.settings.dropdownevents.opened + " " + n.settings.dropdownevents.closed), e.iscroll.destroy(), i.removedata("drawer").find("." + n.settings.class.overlay).remove() }) } }; t.fn.drawercallback = function(e) { var n = "transitionend webkittransitionend"; return this.each(function() { var i = t(this); i.on(n, function() { return i.off(n), e.call(this) }) }) }, t.fn.drawer = function(e) { return n[e] ? n[e].apply(this, array.prototype.slice.call(arguments, 1)) : "object" != typeof e && e ? void t.error("method " + e + " does not exist on jquery.drawer") : n.init.apply(this, arguments) } }) }, { jquery: 5 }], 5: [function(t, e, n) { ! function(t, n) { "object" == typeof e && "object" == typeof e.exports ? e.exports = t.document ? n(t, !0) : function(t) { if(!t.document) throw new error("jquery requires a window with a document"); return n(t) } : n(t) }("undefined" != typeof window ? window : this, function(t, e) { function n(t) { var e = !!t && "length" in t && t.length, n = rt.type(t); return "function" !== n && !rt.iswindow(t) && ("array" === n || 0 === e || "number" == typeof e && e > 0 && e - 1 in t) } function i(t, e, n) { if(rt.isfunction(e)) return rt.grep(t, function(t, i) { return !!e.call(t, i, t) !== n }); if(e.nodetype) return rt.grep(t, function(t) { return t === e !== n }); if("string" == typeof e) { if(ht.test(e)) return rt.filter(e, t, n); e = rt.filter(e, t) } return rt.grep(t, function(t) { return j.call(e, t) > -1 !== n }) } function r(t, e) { for(; (t = t[e]) && 1 !== t.nodetype;); return t } function o(t) { var e = {}; return rt.each(t.match(mt) || [], function(t, n) { e[n] = !0 }), e } function s() { k.removeeventlistener("domcontentloaded", s), t.removeeventlistener("load", s), rt.ready() } function a() { this.expando = rt.expando + a.uid++ } function l(t, e, n) { var i; if(void 0 === n && 1 === t.nodetype) if(i = "data-" + e.replace(st, "-$&").tolowercase(), "string" == typeof(n = t.getattribute(i))) { try { n = "true" === n || "false" !== n && ("null" === n ? null : +n + "" === n ? +n : tt.test(n) ? rt.parsejson(n) : n) } catch(t) {} wt.set(t, e, n) } else n = void 0; return n } function c(t, e, n, i) { var r, o = 1, s = 20, a = i ? function() { return i.cur() } : function() { return rt.css(t, e, "") }, l = a(), c = n && n[3] || (rt.cssnumber[e] ? "" : "px"), u = (rt.cssnumber[e] || "px" !== c && +l) && kt.exec(rt.css(t, e)); if(u && u[3] !== c) { c = c || u[3], n = n || [], u = +l || 1; do { o = o || ".5", u /= o, rt.style(t, e, u + c) } while (o !== (o = a() / l) && 1 !== o && --s) } return n && (u = +u || +l || 0, r = n[1] ? u + (n[1] + 1) * n[2] : +n[2], i && (i.unit = c, i.start = u, i.end = r)), r } function u(t, e) { var n = void 0 !== t.getelementsbytagname ? t.getelementsbytagname(e || "*") : void 0 !== t.queryselectorall ? t.queryselectorall(e || "*") : []; return void 0 === e || e && rt.nodename(t, e) ? rt.merge([t], n) : n } function h(t, e) { for(var n = 0, i = t.length; n < i; n++) bt.set(t[n], "globaleval", !e || bt.get(e[n], "globaleval")) } function p(t, e, n, i, r) { for(var o, s, a, l, c, p, d = e.createdocumentfragment(), f = [], g = 0, m = t.length; g < m; g++) if((o = t[g]) || 0 === o) if("object" === rt.type(o)) rt.merge(f, o.nodetype ? [o] : o); else if(ht.test(o)) { for(s = s || d.appendchild(e.createelement("div")), a = (pt.exec(o) || ["", ""])[1].tolowercase(), l = _t[a] || _t._default, s.innerhtml = l[1] + rt.htmlprefilter(o) + l[2], p = l[0]; p--;) s = s.lastchild; rt.merge(f, s.childnodes), s = d.firstchild, s.textcontent = "" } else f.push(e.createtextnode(o)); for(d.textcontent = "", g = 0; o = f[g++];) if(i && rt.inarray(o, i) > -1) r && r.push(o); else if(c = rt.contains(o.ownerdocument, o), s = u(d.appendchild(o), "script"), c && h(s), n) for(p = 0; o = s[p++];) nt.test(o.type || "") && n.push(o); return d } function d() { return !0 } function f() { return !1 } function g() { try { return k.activeelement } catch(t) {} } function m(t, e, n, i, r, o) { var s, a; if("object" == typeof e) { "string" != typeof n && (i = i || n, n = void 0); for(a in e) m(t, a, n, i, e[a], o); return t } if(null == i && null == r ? (r = n, i = n = void 0) : null == r && ("string" == typeof n ? (r = i, i = void 0) : (r = i, i = n, n = void 0)), !1 === r) r = f; else if(!r) return t; return 1 === o && (s = r, r = function(t) { return rt().off(t), s.apply(this, arguments) }, r.guid = s.guid || (s.guid = rt.guid++)), t.each(function() { rt.event.add(this, e, r, i, n) }) } function v(t, e) { return rt.nodename(t, "table") && rt.nodename(11 !== e.nodetype ? e : e.firstchild, "tr") ? t.getelementsbytagname("tbody")[0] || t.appendchild(t.ownerdocument.createelement("tbody")) : t } function y(t) { return t.type = (null !== t.getattribute("type")) + "/" + t.type, t } function x(t) { var e = yt.exec(t.type); return e ? t.type = e[1] : t.removeattribute("type"), t } function b(t, e) { var n, i, r, o, s, a, l, c; if(1 === e.nodetype) { if(bt.hasdata(t) && (o = bt.access(t), s = bt.set(e, o), c = o.events)) { delete s.handle, s.events = {}; for(r in c) for(n = 0, i = c[r].length; n < i; n++) rt.event.add(e, r, c[r][n]) } wt.hasdata(t) && (a = wt.access(t), l = rt.extend({}, a), wt.set(e, l)) } } function w(t, e) { var n = e.nodename.tolowercase(); "input" === n && at.test(t.type) ? e.checked = t.checked : "input" !== n && "textarea" !== n || (e.defaultvalue = t.defaultvalue) } function t(t, e, n, i) { e = q.apply([], e); var r, o, s, a, l, c, h = 0, d = t.length, f = d - 1, g = e[0], m = rt.isfunction(g); if(m || d > 1 && "string" == typeof g && !it.checkclone && qt.test(g)) return t.each(function(r) { var o = t.eq(r); m && (e[0] = g.call(this, r, o.html())), t(o, e, n, i) }); if(d && (r = p(e, t[0].ownerdocument, !1, t, i), o = r.firstchild, 1 === r.childnodes.length && (r = o), o || i)) { for(s = rt.map(u(r, "script"), y), a = s.length; h < d; h++) l = r, h !== f && (l = rt.clone(l, !0, !0), a && rt.merge(s, u(l, "script"))), n.call(t[h], l, h); if(a) for(c = s[s.length - 1].ownerdocument, rt.map(s, x), h = 0; h < a; h++) l = s[h], nt.test(l.type || "") && !bt.access(l, "globaleval") && rt.contains(c, l) && (l.src ? rt._evalurl && rt._evalurl(l.src) : rt.globaleval(l.textcontent.replace(wt, ""))) } return t } function s(t, e, n) { for(var i, r = e ? rt.filter(e, t) : t, o = 0; null != (i = r[o]); o++) n || 1 !== i.nodetype || rt.cleandata(u(i)), i.parentnode && (n && rt.contains(i.ownerdocument, i) && h(u(i, "script")), i.parentnode.removechild(i)); return t } function e(t, e) { var n = rt(e.createelement(t)).appendto(e.body), i = rt.css(n[0], "display"); return n.detach(), i } function k(t) { var e = k, n = mt[t]; return n || (n = e(t, e), "none" !== n && n || (it = (it || rt("