text: /* jquery.nicescroll v3.7.6 InuYaksa - MIT - https://nicescroll.areaaperta.com */ ! function(e) {
      "function" == typeof define && define.amd ? define(["jquery"], e) : "object" == typeof exports ? module.exports = e(require("jquery")) : e(jQuery)
  }(function(e) {
      "use strict";
      var o = !1,
          t = !1,
          r = 0,
          i = 2e3,
          s = 0,
          n = e,
          l = document,
          a = window,
          c = n(a),
          d = [],
          u = a.requestAnimationFrame || a.webkitRequestAnimationFrame || a.mozRequestAnimationFrame || !1,
          h = a.cancelAnimationFrame || a.webkitCancelAnimationFrame || a.mozCancelAnimationFrame || !1;
      if (u) a.cancelAnimationFrame || (h = function(e) {});
      else {
          var p = 0;
          u = function(e, o) {
              var t = (new Date).getTime(),
                  r = Math.max(0, 16 - (t - p)),
                  i = a.setTimeout(function() {
                      e(t + r)
                  }, r);
              return p = t + r, i
          }, h = function(e) {
              a.clearTimeout(e)
          }
      }
      var m = a.MutationObserver || a.WebKitMutationObserver || !1,
          f = Date.now || function() {
              return (new Date).getTime()
          },
          g = {
              zindex: "auto",
              cursoropacitymin: 0,
              cursoropacitymax: 1,
              cursorcolor: "#424242",
              cursorwidth: "6px",
              cursorborder: "1px solid #fff",
              cursorborderradius: "5px",
              scrollspeed: 40,
              mousescrollstep: 27,
              touchbehavior: !1,
              emulatetouch: !1,
              hwacceleration: !0,
              usetransition: !0,
              boxzoom: !1,
              dblclickzoom: !0,
              gesturezoom: !0,
              grabcursorenabled: !0,
              autohidemode: !0,
              background: "",
              iframeautoresize: !0,
              cursorminheight: 32,
              preservenativescrolling: !0,
              railoffset: !1,
              railhoffset: !1,
              bouncescroll: !0,
              spacebarenabled: !0,
              railpadding: {
                  top: 0,
                  right: 0,
                  left: 0,
                  bottom: 0
              },
              disableoutline: !0,
              horizrailenabled: !0,
              railalign: "right",
              railvalign: "bottom",
              enabletranslate3d: !0,
              enablemousewheel: !0,
              enablekeyboard: !0,
              smoothscroll: !0,
              sensitiverail: !0,
              enablemouselockapi: !0,
              cursorfixedheight: !1,
              directionlockdeadzone: 6,
              hidecursordelay: 400,
              nativeparentscrolling: !0,
              enablescrollonselection: !0,
              overflowx: !0,
              overflowy: !0,
              cursordragspeed: .3,
              rtlmode: "auto",
              cursordragontouch: !1,
              oneaxismousemode: "auto",
              scriptpath: function() {
                  var e = l.currentScript || function() {
                          var e = l.getElementsByTagName("script");
                          return !!e.length && e[e.length - 1]
                      }(),
                      o = e ? e.src.split("?")[0] : "";
                  return o.split("/").length > 0 ? o.split("/").slice(0, -1).join("/") + "/" : ""
              }(),
              preventmultitouchscrolling: !0,
              disablemutationobserver: !1,
              enableobserver: !0,
              scrollbarid: !1
          },
          v = !1,
          w = function() {
              if (v) return v;
              var e = l.createElement("DIV"),
                  o = e.style,
                  t = navigator.userAgent,
                  r = navigator.platform,
                  i = {};
              return i.haspointerlock = "pointerLockElement" in l || "webkitPointerLockElement" in l || "mozPointerLockElement" in l, i.isopera = "opera" in a, i.isopera12 = i.isopera && "getUserMedia" in navigator, i.isoperamini = "[object OperaMini]" === Object.prototype.toString.call(a.operamini), i.isie = "all" in l && "attachEvent" in e && !i.isopera, i.isieold = i.isie && !("msInterpolationMode" in o), i.isie7 = i.isie && !i.isieold && (!("documentMode" in l) || 7 === l.documentMode), i.isie8 = i.isie && "documentMode" in l && 8 === l.documentMode, i.isie9 = i.isie && "performance" in a && 9 === l.documentMode, i.isie10 = i.isie && "performance" in a && 10 === l.documentMode, i.isie11 = "msRequestFullscreen" in e && l.documentMode >= 11, i.ismsedge = "msCredentials" in a, i.ismozilla = "MozAppearance" in o, i.iswebkit = !i.ismsedge && "WebkitAppearance" in o, i.ischrome = i.iswebkit && "chrome" in a, i.ischrome38 = i.ischrome && "touchAction" in o, i.ischrome22 = !i.ischrome38 && i.ischrome && i.haspointerlock, i.ischrome26 = !i.ischrome38 && i.ischrome && "transition" in o, i.cantouch = "ontouchstart" in l.documentElement || "ontouchstart" in a, i.hasw3ctouch = (a.PointerEvent || !1) && (navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0), i.hasmstouch = !i.hasw3ctouch && (a.MSPointerEvent || !1), i.ismac = /^mac$/i.test(r), i.isios = i.cantouch && /iphone|ipad|ipod/i.test(r), i.isios4 = i.isios && !("seal" in Object), i.isios7 = i.isios && "webkitHidden" in l, i.isios8 = i.isios && "hidden" in l, i.isios10 = i.isios && a.Proxy, i.isandroid = /android/i.test(t), i.haseventlistener = "addEventListener" in e, i.trstyle = !1, i.hastransform = !1, i.hastranslate3d = !1, i.transitionstyle = !1, i.hastransition = !1, i.transitionend = !1, i.trstyle = "transform", i.hastransform = "transform" in o || function() {
                  for (var e = ["msTransform", "webkitTransform", "MozTransform", "OTransform"], t = 0, r = e.length; t < r; t++)
                      if (void 0 !== o[e[t]]) {
                          i.trstyle = e[t];
                          break
                      }
                  i.hastransform = !!i.trstyle
              }(), i.hastransform && (o[i.trstyle] = "translate3d(1px,2px,3px)", i.hastranslate3d = /translate3d/.test(o[i.trstyle])), i.transitionstyle = "transition", i.prefixstyle = "", i.transitionend = "transitionend", i.hastransition = "transition" in o || function() {
                  i.transitionend = !1;
                  for (var e = ["webkitTransition", "msTransition", "MozTransition", "OTransition", "OTransition", "KhtmlTransition"], t = ["-webkit-", "-ms-", "-moz-", "-o-", "-o", "-khtml-"], r = ["webkitTransitionEnd", "msTransitionEnd", "transitionend", "otransitionend", "oTransitionEnd", "KhtmlTransitionEnd"], s = 0, n = e.length; s < n; s++)
                      if (e[s] in o) {
                          i.transitionstyle = e[s], i.prefixstyle = t[s], i.transitionend = r[s];
                          break
                      }
                  i.ischrome26 && (i.prefixstyle = t[1]), i.hastransition = i.transitionstyle
              }(), i.cursorgrabvalue = function() {
                  var e = ["grab", "-webkit-grab", "-moz-grab"];
                  (i.ischrome && !i.ischrome38 || i.isie) && (e = []);
                  for (var t = 0, r = e.length; t < r; t++) {
                      var s = e[t];
                      if (o.cursor = s, o.cursor == s) return s
                  }
                  return "url(https://cdnjs.cloudflare.com/ajax/libs/slider-pro/1.3.0/css/images/openhand.cur),n-resize"
              }(), i.hasmousecapture = "setCapture" in e, i.hasMutationObserver = !1 !== m, e = null, v = i, i
          },
          b = function(e, p) {
              function v() {
                  var e = T.doc.css(P.trstyle);
                  return !(!e || "matrix" != e.substr(0, 6)) && e.replace(/^.*\((.*)\)$/g, "$1").replace(/px/g, "").split(/, +/)
              }
  
              function b() {
                  var e = T.win;
                  if ("zIndex" in e) return e.zIndex();
                  for (; e.length > 0;) {
                      if (9 == e[0].nodeType) return !1;
                      var o = e.css("zIndex");
                      if (!isNaN(o) && 0 !== o) return parseInt(o);
                      e = e.parent()
                  }
                  return !1
              }
  
              function x(e, o, t) {
                  var r = e.css(o),
                      i = parseFloat(r);
                  if (isNaN(i)) {
                      var s = 3 == (i = I[r] || 0) ? t ? T.win.outerHeight() - T.win.innerHeight() : T.win.outerWidth() - T.win.innerWidth() : 1;
                      return T.isie8 && i && (i += 1), s ? i : 0
                  }
                  return i
              }
  
              function S(e, o, t, r) {
                  T._bind(e, o, function(r) {
                      var i = {
                          original: r = r || a.event,
                          target: r.target || r.srcElement,
                          type: "wheel",
                          deltaMode: "MozMousePixelScroll" == r.type ? 0 : 1,
                          deltaX: 0,
                          deltaZ: 0,
                          preventDefault: function() {
                              return r.preventDefault ? r.preventDefault() : r.returnValue = !1, !1
                          },
                          stopImmediatePropagation: function() {
                              r.stopImmediatePropagation ? r.stopImmediatePropagation() : r.cancelBubble = !0
                          }
                      };
                      return "mousewheel" == o ? (r.wheelDeltaX && (i.deltaX = -.025 * r.wheelDeltaX), r.wheelDeltaY && (i.deltaY = -.025 * r.wheelDeltaY), !i.deltaY && !i.deltaX && (i.deltaY = -.025 * r.wheelDelta)) : i.deltaY = r.detail, t.call(e, i)
                  }, r)
              }
  
              function z(e, o, t, r) {
                  T.scrollrunning || (T.newscrolly = T.getScrollTop(), T.newscrollx = T.getScrollLeft(), D = f());
                  var i = f() - D;
                  if (D = f(), i > 350 ? A = 1 : A += (2 - A) / 10, e = e * A | 0, o = o * A | 0, e) {
                      if (r)
                          if (e < 0) {
                              if (T.getScrollLeft() >= T.page.maxw) return !0
                          } else if (T.getScrollLeft() <= 0) return !0;
                      var s = e > 0 ? 1 : -1;
                      X !== s && (T.scrollmom && T.scrollmom.stop(), T.newscrollx = T.getScrollLeft(), X = s), T.lastdeltax -= e
                  }
                  if (o) {
                      if (function() {
                              var e = T.getScrollTop();
                              if (o < 0) {
                                  if (e >= T.page.maxh) return !0
                              } else if (e <= 0) return !0
                          }()) {
                          if (M.nativeparentscrolling && t && !T.ispage && !T.zoomactive) return !0;
                          var n = T.view.h >> 1;
                          T.newscrolly < -n ? (T.newscrolly = -n, o = -1) : T.newscrolly > T.page.maxh + n ? (T.newscrolly = T.page.maxh + n, o = 1) : o = 0
                      }
                      var l = o > 0 ? 1 : -1;
                      B !== l && (T.scrollmom && T.scrollmom.stop(), T.newscrolly = T.getScrollTop(), B = l), T.lastdeltay -= o
                  }(o || e) && T.synched("relativexy", function() {
                      var e = T.lastdeltay + T.newscrolly;
                      T.lastdeltay = 0;
                      var o = T.lastdeltax + T.newscrollx;
                      T.lastdeltax = 0, T.rail.drag || T.doScrollPos(o, e)
                  })
              }
  
              function k(e, o, t) {
                  var r, i;
                  return !(t || !q) || (0 === e.deltaMode ? (r = -e.deltaX * (M.mousescrollstep / 54) | 0, i = -e.deltaY * (M.mousescrollstep / 54) | 0) : 1 === e.deltaMode && (r = -e.deltaX * M.mousescrollstep * 50 / 80 | 0, i = -e.deltaY * M.mousescrollstep * 50 / 80 | 0), o && M.oneaxismousemode && 0 === r && i && (r = i, i = 0, t && (r < 0 ? T.getScrollLeft() >= T.page.maxw : T.getScrollLeft() <= 0) && (i = r, r = 0)), T.isrtlmode && (r = -r), z(r, i, t, !0) ? void(t && (q = !0)) : (q = !1, e.stopImmediatePropagation(), e.preventDefault()))
              }
              var T = this;
              this.version = "3.7.6", this.name = "nicescroll", this.me = p;
              var E = n("body"),
                  M = this.opt = {
                      doc: E,
                      win: !1
                  };
              if (n.extend(M, g), M.snapbackspeed = 80, e)
                  for (var L in M) void 0 !== e[L] && (M[L] = e[L]);
              if (M.disablemutationobserver && (m = !1), this.doc = M.doc, this.iddoc = this.doc && this.doc[0] ? this.doc[0].id || "" : "", this.ispage = /^BODY|HTML/.test(M.win ? M.win[0].nodeName : this.doc[0].nodeName), this.haswrapper = !1 !== M.win, this.win = M.win || (this.ispage ? c : this.doc), this.docscroll = this.ispage && !this.haswrapper ? c : this.win, this.body = E, this.viewport = !1, this.isfixed = !1, this.iframe = !1, this.isiframe = "IFRAME" == this.doc[0].nodeName && "IFRAME" == this.win[0].nodeName, this.istextarea = "TEXTAREA" == this.win[0].nodeName, this.forcescreen = !1, this.canshowonmouseevent = "scroll" != M.autohidemode, this.onmousedown = !1, this.onmouseup = !1, this.onmousemove = !1, this.onmousewheel = !1, this.onkeypress = !1, this.ongesturezoom = !1, this.onclick = !1, this.onscrollstart = !1, this.onscrollend = !1, this.onscrollcancel = !1, this.onzoomin = !1, this.onzoomout = !1, this.view = !1, this.page = !1, this.scroll = {
                      x: 0,
                      y: 0
                  }, this.scrollratio = {
                      x: 0,
                      y: 0
                  }, this.cursorheight = 20, this.scrollvaluemax = 0, "auto" == M.rtlmode) {
                  var C = this.win[0] == a ? this.body : this.win,
                      N = C.css("writing-mode") || C.css("-webkit-writing-mode") || C.css("-ms-writing-mode") || C.css("-moz-writing-mode");
                  "horizontal-tb" == N || "lr-tb" == N || "" === N ? (this.isrtlmode = "rtl" == C.css("direction"), this.isvertical = !1) : (this.isrtlmode = "vertical-rl" == N || "tb" == N || "tb-rl" == N || "rl-tb" == N, this.isvertical = "vertical-rl" == N || "tb" == N || "tb-rl" == N)
              } else this.isrtlmode = !0 === M.rtlmode, this.isvertical = !1;
              if (this.scrollrunning = !1, this.scrollmom = !1, this.observer = !1, this.observerremover = !1, this.observerbody = !1, !1 !== M.scrollbarid) this.id = M.scrollbarid;
              else
                  do {
                      this.id = "ascrail" + i++
                  } while (l.getElementById(this.id));
              this.rail = !1, this.cursor = !1, this.cursorfreezed = !1, this.selectiondrag = !1, this.zoom = !1, this.zoomactive = !1, this.hasfocus = !1, this.hasmousefocus = !1, this.railslocked = !1, this.locked = !1, this.hidden = !1, this.cursoractive = !0, this.wheelprevented = !1, this.overflowx = M.overflowx, this.overflowy = M.overflowy, this.nativescrollingarea = !1, this.checkarea = 0, this.events = [], this.saved = {}, this.delaylist = {}, this.synclist = {}, this.lastdeltax = 0, this.lastdeltay = 0, this.detected = w();
              var P = n.extend({}, this.detected);
              this.canhwscroll = P.hastransform && M.hwacceleration, this.ishwscroll = this.canhwscroll && T.haswrapper, this.isrtlmode ? this.isvertical ? this.hasreversehr = !(P.iswebkit || P.isie || P.isie11) : this.hasreversehr = !(P.iswebkit || P.isie && !P.isie10 && !P.isie11) : this.hasreversehr = !1, this.istouchcapable = !1, P.cantouch || !P.hasw3ctouch && !P.hasmstouch ? !P.cantouch || P.isios || P.isandroid || !P.iswebkit && !P.ismozilla || (this.istouchcapable = !0) : this.istouchcapable = !0, M.enablemouselockapi || (P.hasmousecapture = !1, P.haspointerlock = !1), this.debounced = function(e, o, t) {
                  T && (T.delaylist[e] || !1 || (T.delaylist[e] = {
                      h: u(function() {
                          T.delaylist[e].fn.call(T), T.delaylist[e] = !1
                      }, t)
                  }, o.call(T)), T.delaylist[e].fn = o)
              }, this.synched = function(e, o) {
                  T.synclist[e] ? T.synclist[e] = o : (T.synclist[e] = o, u(function() {
                      T && (T.synclist[e] && T.synclist[e].call(T), T.synclist[e] = null)
                  }))
              }, this.unsynched = function(e) {
                  T.synclist[e] && (T.synclist[e] = !1)
              }, this.css = function(e, o) {
                  for (var t in o) T.saved.css.push([e, t, e.css(t)]), e.css(t, o[t])
              }, this.scrollTop = function(e) {
                  return void 0 === e ? T.getScrollTop() : T.setScrollTop(e)
              }, this.scrollLeft = function(e) {
                  return void 0 === e ? T.getScrollLeft() : T.setScrollLeft(e)
              };
              var R = function(e, o, t, r, i, s, n) {
                  this.st = e, this.ed = o, this.spd = t, this.p1 = r || 0, this.p2 = i || 1, this.p3 = s || 0, this.p4 = n || 1, this.ts = f(), this.df = o - e
              };
              if (R.prototype = {
                      B2: function(e) {
                          return 3 * (1 - e) * (1 - e) * e
                      },
                      B3: function(e) {
                          return 3 * (1 - e) * e * e
                      },
                      B4: function(e) {
                          return e * e * e
                      },
                      getPos: function() {
                          return (f() - this.ts) / this.spd
                      },
                      getNow: function() {
                          var e = (f() - this.ts) / this.spd,
                              o = this.B2(e) + this.B3(e) + this.B4(e);
                          return e >= 1 ? this.ed : this.st + this.df * o | 0
                      },
                      update: function(e, o) {
                          return this.st = this.getNow(), this.ed = e, this.spd = o, this.ts = f(), this.df = this.ed - this.st, this
                      }
                  }, this.ishwscroll) {
                  this.doc.translate = {
                      x: 0,
                      y: 0,
                      tx: "0px",
                      ty: "0px"
                  }, P.hastranslate3d && P.isios && this.doc.css("-webkit-backface-visibility", "hidden"), this.getScrollTop = function(e) {
                      if (!e) {
                          var o = v();
                          if (o) return 16 == o.length ? -o[13] : -o[5];
                          if (T.timerscroll && T.timerscroll.bz) return T.timerscroll.bz.getNow()
                      }
                      return T.doc.translate.y
                  }, this.getScrollLeft = function(e) {
                      if (!e) {
                          var o = v();
                          if (o) return 16 == o.length ? -o[12] : -o[4];
                          if (T.timerscroll && T.timerscroll.bh) return T.timerscroll.bh.getNow()
                      }
                      return T.doc.translate.x
                  }, this.notifyScrollEvent = function(e) {
                      var o = l.createEvent("UIEvents");
                      o.initUIEvent("scroll", !1, !1, a, 1), o.niceevent = !0, e.dispatchEvent(o)
                  };
                  var _ = this.isrtlmode ? 1 : -1;
                  P.hastranslate3d && M.enabletranslate3d ? (this.setScrollTop = function(e, o) {
                      T.doc.translate.y = e, T.doc.translate.ty = -1 * e + "px", T.doc.css(P.trstyle, "translate3d(" + T.doc.translate.tx + "," + T.doc.translate.ty + ",0)"), o || T.notifyScrollEvent(T.win[0])
                  }, this.setScrollLeft = function(e, o) {
                      T.doc.translate.x = e, T.doc.translate.tx = e * _ + "px", T.doc.css(P.trstyle, "translate3d(" + T.doc.translate.tx + "," + T.doc.translate.ty + ",0)"), o || T.notifyScrollEvent(T.win[0])
                  }) : (this.setScrollTop = function(e, o) {
                      T.doc.translate.y = e, T.doc.translate.ty = -1 * e + "px", T.doc.css(P.trstyle, "translate(" + T.doc.translate.tx + "," + T.doc.translate.ty + ")"), o || T.notifyScrollEvent(T.win[0])
                  }, this.setScrollLeft = function(e, o) {
                      T.doc.translate.x = e, T.doc.translate.tx = e * _ + "px", T.doc.css(P.trstyle, "translate(" + T.doc.translate.tx + "," + T.doc.translate.ty + ")"), o || T.notifyScrollEvent(T.win[0])
                  })
              } else this.getScrollTop = function() {
                  return T.docscroll.scrollTop()
              }, this.setScrollTop = function(e) {
                  T.docscroll.scrollTop(e)
              }, this.getScrollLeft = function() {
                  return T.hasreversehr ? T.detected.ismozilla ? T.page.maxw - Math.abs(T.docscroll.scrollLeft()) : T.page.maxw - T.docscroll.scrollLeft() : T.docscroll.scrollLeft()
              }, this.setScrollLeft = function(e) {
                  return setTimeout(function() {
                      if (T) return T.hasreversehr && (e = T.detected.ismozilla ? -(T.page.maxw - e) : T.page.maxw - e), T.docscroll.scrollLeft(e)
                  }, 1)
              };
              this.getTarget = function(e) {
                  return !!e && (e.target ? e.target : !!e.srcElement && e.srcElement)
              }, this.hasParent = function(e, o) {
                  if (!e) return !1;
                  for (var t = e.target || e.srcElement || e || !1; t && t.id != o;) t = t.parentNode || !1;
                  return !1 !== t
              };
              var I = {
                  thin: 1,
                  medium: 3,
                  thick: 5
              };
              this.getDocumentScrollOffset = function() {
                  return {
                      top: a.pageYOffset || l.documentElement.scrollTop,
                      left: a.pageXOffset || l.documentElement.scrollLeft
                  }
              }, this.getOffset = function() {
                  if (T.isfixed) {
                      var e = T.win.offset(),
                          o = T.getDocumentScrollOffset();
                      return e.top -= o.top, e.left -= o.left, e
                  }
                  var t = T.win.offset();
                  if (!T.viewport) return t;
                  var r = T.viewport.offset();
                  return {
                      top: t.top - r.top,
                      left: t.left - r.left
                  }
              }, this.updateScrollBar = function(e) {
                  var o, t;
                  if (T.ishwscroll) T.rail.css({
                      height: T.win.innerHeight() - (M.railpadding.top + M.railpadding.bottom)
                  }), T.railh && T.railh.css({
                      width: T.win.innerWidth() - (M.railpadding.left + M.railpadding.right)
                  });
                  else {
                      var r = T.getOffset();
                      if (o = {
                              top: r.top,
                              left: r.left - (M.railpadding.left + M.railpadding.right)
                          }, o.top += x(T.win, "border-top-width", !0), o.left += T.rail.align ? T.win.outerWidth() - x(T.win, "border-right-width") - T.rail.width : x(T.win, "border-left-width"), (t = M.railoffset) && (t.top && (o.top += t.top), t.left && (o.left += t.left)), T.railslocked || T.rail.css({
                              top: o.top,
                              left: o.left,
                              height: (e ? e.h : T.win.innerHeight()) - (M.railpadding.top + M.railpadding.bottom)
                          }), T.zoom && T.zoom.css({
                              top: o.top + 1,
                              left: 1 == T.rail.align ? o.left - 20 : o.left + T.rail.width + 4
                          }), T.railh && !T.railslocked) {
                          o = {
                              top: r.top,
                              left: r.left
                          }, (t = M.railhoffset) && (t.top && (o.top += t.top), t.left && (o.left += t.left));
                          var i = T.railh.align ? o.top + x(T.win, "border-top-width", !0) + T.win.innerHeight() - T.railh.height : o.top + x(T.win, "border-top-width", !0),
                              s = o.left + x(T.win, "border-left-width");
                          T.railh.css({
                              top: i - (M.railpadding.top + M.railpadding.bottom),
                              left: s,
                              width: T.railh.width
                          })
                      }
                  }
              }, this.doRailClick = function(e, o, t) {
                  var r, i, s, n;
                  T.railslocked || (T.cancelEvent(e), "pageY" in e || (e.pageX = e.clientX + l.documentElement.scrollLeft, e.pageY = e.clientY + l.documentElement.scrollTop), o ? (r = t ? T.doScrollLeft : T.doScrollTop, s = t ? (e.pageX - T.railh.offset().left - T.cursorwidth / 2) * T.scrollratio.x : (e.pageY - T.rail.offset().top - T.cursorheight / 2) * T.scrollratio.y, T.unsynched("relativexy"), r(0 | s)) : (r = t ? T.doScrollLeftBy : T.doScrollBy, s = t ? T.scroll.x : T.scroll.y, n = t ? e.pageX - T.railh.offset().left : e.pageY - T.rail.offset().top, i = t ? T.view.w : T.view.h, r(s >= n ? i : -i)))
              }, T.newscrolly = T.newscrollx = 0, T.hasanimationframe = "requestAnimationFrame" in a, T.hascancelanimationframe = "cancelAnimationFrame" in a, T.hasborderbox = !1, this.init = function() {
                  if (T.saved.css = [], P.isoperamini) return !0;
                  if (P.isandroid && !("hidden" in l)) return !0;
                  M.emulatetouch = M.emulatetouch || M.touchbehavior, T.hasborderbox = a.getComputedStyle && "border-box" === a.getComputedStyle(l.body)["box-sizing"];
                  var e = {
                      "overflow-y": "hidden"
                  };
                  if ((P.isie11 || P.isie10) && (e["-ms-overflow-style"] = "none"), T.ishwscroll && (this.doc.css(P.transitionstyle, P.prefixstyle + "transform 0ms ease-out"), P.transitionend && T.bind(T.doc, P.transitionend, T.onScrollTransitionEnd, !1)), T.zindex = "auto", T.ispage || "auto" != M.zindex ? T.zindex = M.zindex : T.zindex = b() || "auto", !T.ispage && "auto" != T.zindex && T.zindex > s && (s = T.zindex), T.isie && 0 === T.zindex && "auto" == M.zindex && (T.zindex = "auto"), !T.ispage || !P.isieold) {
                      var i = T.docscroll;
                      T.ispage && (i = T.haswrapper ? T.win : T.doc), T.css(i, e), T.ispage && (P.isie11 || P.isie) && T.css(n("html"), e), !P.isios || T.ispage || T.haswrapper || T.css(E, {
                          "-webkit-overflow-scrolling": "touch"
                      });
                      var d = n(l.createElement("div"));
                      d.css({
                          position: "relative",
                          top: 0,
                          float: "right",
                          width: M.cursorwidth,
                          height: 0,
                          "background-color": M.cursorcolor,
                          border: M.cursorborder,
                          "background-clip": "padding-box",
                          "-webkit-border-radius": M.cursorborderradius,
                          "-moz-border-radius": M.cursorborderradius,
                          "border-radius": M.cursorborderradius
                      }), d.addClass("nicescroll-cursors"), T.cursor = d;
                      var u = n(l.createElement("div"));
                      u.attr("id", T.id), u.addClass("nicescroll-rails nicescroll-rails-vr");
                      var h, p, f = ["left", "right", "top", "bottom"];
                      for (var g in f) p = f[g], (h = M.railpadding[p] || 0) && u.css("padding-" + p, h + "px");
                      u.append(d), u.width = Math.max(parseFloat(M.cursorwidth), d.outerWidth()), u.css({
                          width: u.width + "px",
                          zIndex: T.zindex,
                          background: M.background,
                          cursor: "default"
                      }), u.visibility = !0, u.scrollable = !0, u.align = "left" == M.railalign ? 0 : 1, T.rail = u, T.rail.drag = !1;
                      var v = !1;
                      !M.boxzoom || T.ispage || P.isieold || (v = l.createElement("div"), T.bind(v, "click", T.doZoom), T.bind(v, "mouseenter", function() {
                          T.zoom.css("opacity", M.cursoropacitymax)
                      }), T.bind(v, "mouseleave", function() {
                          T.zoom.css("opacity", M.cursoropacitymin)
                      }), T.zoom = n(v), T.zoom.css({
                          cursor: "pointer",
                          zIndex: T.zindex,
                          backgroundImage: "url(" + M.scriptpath + "zoomico.png)",
                          height: 18,
                          width: 18,
                          backgroundPosition: "0 0"
                      }), M.dblclickzoom && T.bind(T.win, "dblclick", T.doZoom), P.cantouch && M.gesturezoom && (T.ongesturezoom = function(e) {
                          return e.scale > 1.5 && T.doZoomIn(e), e.scale < .8 && T.doZoomOut(e), T.cancelEvent(e)
                      }, T.bind(T.win, "gestureend", T.ongesturezoom))), T.railh = !1;
                      var w;
                      if (M.horizrailenabled && (T.css(i, {
                              overflowX: "hidden"
                          }), (d = n(l.createElement("div"))).css({
                              position: "absolute",
                              top: 0,
                              height: M.cursorwidth,
                              width: 0,
                              backgroundColor: M.cursorcolor,
                              border: M.cursorborder,
                              backgroundClip: "padding-box",
                              "-webkit-border-radius": M.cursorborderradius,
                              "-moz-border-radius": M.cursorborderradius,
                              "border-radius": M.cursorborderradius
                          }), P.isieold && d.css("overflow", "hidden"), d.addClass("nicescroll-cursors"), T.cursorh = d, (w = n(l.createElement("div"))).attr("id", T.id + "-hr"), w.addClass("nicescroll-rails nicescroll-rails-hr"), w.height = Math.max(parseFloat(M.cursorwidth), d.outerHeight()), w.css({
                              height: w.height + "px",
                              zIndex: T.zindex,
                              background: M.background
                          }), w.append(d), w.visibility = !0, w.scrollable = !0, w.align = "top" == M.railvalign ? 0 : 1, T.railh = w, T.railh.drag = !1), T.ispage) u.css({
                          position: "fixed",
                          top: 0,
                          height: "100%"
                      }), u.css(u.align ? {
                          right: 0
                      } : {
                          left: 0
                      }), T.body.append(u), T.railh && (w.css({
                          position: "fixed",
                          left: 0,
                          width: "100%"
                      }), w.css(w.align ? {
                          bottom: 0
                      } : {
                          top: 0
                      }), T.body.append(w));
                      else {
                          if (T.ishwscroll) {
                              "static" == T.win.css("position") && T.css(T.win, {
                                  position: "relative"
                              });
                              var x = "HTML" == T.win[0].nodeName ? T.body : T.win;
                              n(x).scrollTop(0).scrollLeft(0), T.zoom && (T.zoom.css({
                                  position: "absolute",
                                  top: 1,
                                  right: 0,
                                  "margin-right": u.width + 4
                              }), x.append(T.zoom)), u.css({
                                  position: "absolute",
                                  top: 0
                              }), u.css(u.align ? {
                                  right: 0
                              } : {
                                  left: 0
                              }), x.append(u), w && (w.css({
                                  position: "absolute",
                                  left: 0,
                                  bottom: 0
                              }), w.css(w.align ? {
                                  bottom: 0
                              } : {
                                  top: 0
                              }), x.append(w))
                          } else {
                              T.isfixed = "fixed" == T.win.css("position");
                              var S = T.isfixed ? "fixed" : "absolute";
                              T.isfixed || (T.viewport = T.getViewport(T.win[0])), T.viewport && (T.body = T.viewport, /fixed|absolute/.test(T.viewport.css("position")) || T.css(T.viewport, {
                                  position: "relative"
                              })), u.css({
                                  position: S
                              }), T.zoom && T.zoom.css({
                                  position: S
                              }), T.updateScrollBar(), T.body.append(u), T.zoom && T.body.append(T.zoom), T.railh && (w.css({
                                  position: S
                              }), T.body.append(w))
                          }
                          P.isios && T.css(T.win, {
                              "-webkit-tap-highlight-color": "rgba(0,0,0,0)",
                              "-webkit-touch-callout": "none"
                          }), M.disableoutline && (P.isie && T.win.attr("hideFocus", "true"), P.iswebkit && T.win.css("outline", "none"))
                      }
                      if (!1 === M.autohidemode ? (T.autohidedom = !1, T.rail.css({
                              opacity: M.cursoropacitymax
                          }), T.railh && T.railh.css({
                              opacity: M.cursoropacitymax
                          })) : !0 === M.autohidemode || "leave" === M.autohidemode ? (T.autohidedom = n().add(T.rail), P.isie8 && (T.autohidedom = T.autohidedom.add(T.cursor)), T.railh && (T.autohidedom = T.autohidedom.add(T.railh)), T.railh && P.isie8 && (T.autohidedom = T.autohidedom.add(T.cursorh))) : "scroll" == M.autohidemode ? (T.autohidedom = n().add(T.rail), T.railh && (T.autohidedom = T.autohidedom.add(T.railh))) : "cursor" == M.autohidemode ? (T.autohidedom = n().add(T.cursor), T.railh && (T.autohidedom = T.autohidedom.add(T.cursorh))) : "hidden" == M.autohidemode && (T.autohidedom = !1, T.hide(), T.railslocked = !1), P.cantouch || T.istouchcapable || M.emulatetouch || P.hasmstouch) {
                          T.scrollmom = new y(T);
                          T.ontouchstart = function(e) {
                              if (T.locked) return !1;
                              if (e.pointerType && ("mouse" === e.pointerType || e.pointerType === e.MSPOINTER_TYPE_MOUSE)) return !1;
                              if (T.hasmoving = !1, T.scrollmom.timer && (T.triggerScrollEnd(), T.scrollmom.stop()), !T.railslocked) {
                                  var o = T.getTarget(e);
                                  if (o && /INPUT/i.test(o.nodeName) && /range/i.test(o.type)) return T.stopPropagation(e);
                                  var t = "mousedown" === e.type;
                                  if (!("clientX" in e) && "changedTouches" in e && (e.clientX = e.changedTouches[0].clientX, e.clientY = e.changedTouches[0].clientY), T.forcescreen) {
                                      var r = e;
                                      (e = {
                                          original: e.original ? e.original : e
                                      }).clientX = r.screenX, e.clientY = r.screenY
                                  }
                                  if (T.rail.drag = {
                                          x: e.clientX,
                                          y: e.clientY,
                                          sx: T.scroll.x,
                                          sy: T.scroll.y,
                                          st: T.getScrollTop(),
                                          sl: T.getScrollLeft(),
                                          pt: 2,
                                          dl: !1,
                                          tg: o
                                      }, T.ispage || !M.directionlockdeadzone) T.rail.drag.dl = "f";
                                  else {
                                      var i = {
                                              w: c.width(),
                                              h: c.height()
                                          },
                                          s = T.getContentSize(),
                                          l = s.h - i.h,
                                          a = s.w - i.w;
                                      T.rail.scrollable && !T.railh.scrollable ? T.rail.drag.ck = l > 0 && "v" : !T.rail.scrollable && T.railh.scrollable ? T.rail.drag.ck = a > 0 && "h" : T.rail.drag.ck = !1
                                  }
                                  if (M.emulatetouch && T.isiframe && P.isie) {
                                      var d = T.win.position();
                                      T.rail.drag.x += d.left, T.rail.drag.y += d.top
                                  }
                                  if (T.hasmoving = !1, T.lastmouseup = !1, T.scrollmom.reset(e.clientX, e.clientY), o && t) {
                                      if (!/INPUT|SELECT|BUTTON|TEXTAREA/i.test(o.nodeName)) return P.hasmousecapture && o.setCapture(), M.emulatetouch ? (o.onclick && !o._onclick && (o._onclick = o.onclick, o.onclick = function(e) {
                                          if (T.hasmoving) return !1;
                                          o._onclick.call(this, e)
                                      }), T.cancelEvent(e)) : T.stopPropagation(e);
                                      /SUBMIT|CANCEL|BUTTON/i.test(n(o).attr("type")) && (T.preventclick = {
                                          tg: o,
                                          click: !1
                                      })
                                  }
                              }
                          }, T.ontouchend = function(e) {
                              if (!T.rail.drag) return !0;
                              if (2 == T.rail.drag.pt) {
                                  if (e.pointerType && ("mouse" === e.pointerType || e.pointerType === e.MSPOINTER_TYPE_MOUSE)) return !1;
                                  T.rail.drag = !1;
                                  var o = "mouseup" === e.type;
                                  if (T.hasmoving && (T.scrollmom.doMomentum(), T.lastmouseup = !0, T.hideCursor(), P.hasmousecapture && l.releaseCapture(), o)) return T.cancelEvent(e)
                              } else if (1 == T.rail.drag.pt) return T.onmouseup(e)
                          };
                          var z = M.emulatetouch && T.isiframe && !P.hasmousecapture,
                              k = .3 * M.directionlockdeadzone | 0;
                          T.ontouchmove = function(e, o) {
                              if (!T.rail.drag) return !0;
                              if (e.targetTouches && M.preventmultitouchscrolling && e.targetTouches.length > 1) return !0;
                              if (e.pointerType && ("mouse" === e.pointerType || e.pointerType === e.MSPOINTER_TYPE_MOUSE)) return !0;
                              if (2 == T.rail.drag.pt) {
                                  "changedTouches" in e && (e.clientX = e.changedTouches[0].clientX, e.clientY = e.changedTouches[0].clientY);
                                  var t, r;
                                  if (r = t = 0, z && !o) {
                                      var i = T.win.position();
                                      r = -i.left, t = -i.top
                                  }
                                  var s = e.clientY + t,
                                      n = s - T.rail.drag.y,
                                      a = e.clientX + r,
                                      c = a - T.rail.drag.x,
                                      d = T.rail.drag.st - n;
                                  if (T.ishwscroll && M.bouncescroll) d < 0 ? d = Math.round(d / 2) : d > T.page.maxh && (d = T.page.maxh + Math.round((d - T.page.maxh) / 2));
                                  else if (d < 0 ? (d = 0, s = 0) : d > T.page.maxh && (d = T.page.maxh, s = 0), 0 === s && !T.hasmoving) return T.ispage || (T.rail.drag = !1), !0;
                                  var u = T.getScrollLeft();
                                  if (T.railh && T.railh.scrollable && (u = T.isrtlmode ? c - T.rail.drag.sl : T.rail.drag.sl - c, T.ishwscroll && M.bouncescroll ? u < 0 ? u = Math.round(u / 2) : u > T.page.maxw && (u = T.page.maxw + Math.round((u - T.page.maxw) / 2)) : (u < 0 && (u = 0, a = 0), u > T.page.maxw && (u = T.page.maxw, a = 0))), !T.hasmoving) {
                                      if (T.rail.drag.y === e.clientY && T.rail.drag.x === e.clientX) return T.cancelEvent(e);
                                      var h = Math.abs(n),
                                          p = Math.abs(c),
                                          m = M.directionlockdeadzone;
                                      if (T.rail.drag.ck ? "v" == T.rail.drag.ck ? p > m && h <= k ? T.rail.drag = !1 : h > m && (T.rail.drag.dl = "v") : "h" == T.rail.drag.ck && (h > m && p <= k ? T.rail.drag = !1 : p > m && (T.rail.drag.dl = "h")) : h > m && p > m ? T.rail.drag.dl = "f" : h > m ? T.rail.drag.dl = p > k ? "f" : "v" : p > m && (T.rail.drag.dl = h > k ? "f" : "h"), !T.rail.drag.dl) return T.cancelEvent(e);
                                      T.triggerScrollStart(e.clientX, e.clientY, 0, 0, 0), T.hasmoving = !0
                                  }
                                  return T.preventclick && !T.preventclick.click && (T.preventclick.click = T.preventclick.tg.onclick || !1, T.preventclick.tg.onclick = T.onpreventclick), T.rail.drag.dl && ("v" == T.rail.drag.dl ? u = T.rail.drag.sl : "h" == T.rail.drag.dl && (d = T.rail.drag.st)), T.synched("touchmove", function() {
                                      T.rail.drag && 2 == T.rail.drag.pt && (T.prepareTransition && T.resetTransition(), T.rail.scrollable && T.setScrollTop(d), T.scrollmom.update(a, s), T.railh && T.railh.scrollable ? (T.setScrollLeft(u), T.showCursor(d, u)) : T.showCursor(d), P.isie10 && l.selection.clear())
                                  }), T.cancelEvent(e)
                              }
                              return 1 == T.rail.drag.pt ? T.onmousemove(e) : void 0
                          }, T.ontouchstartCursor = function(e, o) {
                              if (!T.rail.drag || 3 == T.rail.drag.pt) {
                                  if (T.locked) return T.cancelEvent(e);
                                  T.cancelScroll(), T.rail.drag = {
                                      x: e.touches[0].clientX,
                                      y: e.touches[0].clientY,
                                      sx: T.scroll.x,
                                      sy: T.scroll.y,
                                      pt: 3,
                                      hr: !!o
                                  };
                                  var t = T.getTarget(e);
                                  return !T.ispage && P.hasmousecapture && t.setCapture(), T.isiframe && !P.hasmousecapture && (T.saved.csspointerevents = T.doc.css("pointer-events"), T.css(T.doc, {
                                      "pointer-events": "none"
                                  })), T.cancelEvent(e)
                              }
                          }, T.ontouchendCursor = function(e) {
                              if (T.rail.drag) {
                                  if (P.hasmousecapture && l.releaseCapture(), T.isiframe && !P.hasmousecapture && T.doc.css("pointer-events", T.saved.csspointerevents), 3 != T.rail.drag.pt) return;
                                  return T.rail.drag = !1, T.cancelEvent(e)
                              }
                          }, T.ontouchmoveCursor = function(e) {
                              if (T.rail.drag) {
                                  if (3 != T.rail.drag.pt) return;
                                  if (T.cursorfreezed = !0, T.rail.drag.hr) {
                                      T.scroll.x = T.rail.drag.sx + (e.touches[0].clientX - T.rail.drag.x), T.scroll.x < 0 && (T.scroll.x = 0);
                                      var o = T.scrollvaluemaxw;
                                      T.scroll.x > o && (T.scroll.x = o)
                                  } else {
                                      T.scroll.y = T.rail.drag.sy + (e.touches[0].clientY - T.rail.drag.y), T.scroll.y < 0 && (T.scroll.y = 0);
                                      var t = T.scrollvaluemax;
                                      T.scroll.y > t && (T.scroll.y = t)
                                  }
                                  return T.synched("touchmove", function() {
                                      T.rail.drag && 3 == T.rail.drag.pt && (T.showCursor(), T.rail.drag.hr ? T.doScrollLeft(Math.round(T.scroll.x * T.scrollratio.x), M.cursordragspeed) : T.doScrollTop(Math.round(T.scroll.y * T.scrollratio.y), M.cursordragspeed))
                                  }), T.cancelEvent(e)
                              }
                          }
                      }
                      if (T.onmousedown = function(e, o) {
                              if (!T.rail.drag || 1 == T.rail.drag.pt) {
                                  if (T.railslocked) return T.cancelEvent(e);
                                  T.cancelScroll(), T.rail.drag = {
                                      x: e.clientX,
                                      y: e.clientY,
                                      sx: T.scroll.x,
                                      sy: T.scroll.y,
                                      pt: 1,
                                      hr: o || !1
                                  };
                                  var t = T.getTarget(e);
                                  return P.hasmousecapture && t.setCapture(), T.isiframe && !P.hasmousecapture && (T.saved.csspointerevents = T.doc.css("pointer-events"), T.css(T.doc, {
                                      "pointer-events": "none"
                                  })), T.hasmoving = !1, T.cancelEvent(e)
                              }
                          }, T.onmouseup = function(e) {
                              if (T.rail.drag) return 1 != T.rail.drag.pt || (P.hasmousecapture && l.releaseCapture(), T.isiframe && !P.hasmousecapture && T.doc.css("pointer-events", T.saved.csspointerevents), T.rail.drag = !1, T.cursorfreezed = !1, T.hasmoving && T.triggerScrollEnd(), T.cancelEvent(e))
                          }, T.onmousemove = function(e) {
                              if (T.rail.drag) {
                                  if (1 !== T.rail.drag.pt) return;
                                  if (P.ischrome && 0 === e.which) return T.onmouseup(e);
                                  if (T.cursorfreezed = !0, T.hasmoving || T.triggerScrollStart(e.clientX, e.clientY, 0, 0, 0), T.hasmoving = !0, T.rail.drag.hr) {
                                      T.scroll.x = T.rail.drag.sx + (e.clientX - T.rail.drag.x), T.scroll.x < 0 && (T.scroll.x = 0);
                                      var o = T.scrollvaluemaxw;
                                      T.scroll.x > o && (T.scroll.x = o)
                                  } else {
                                      T.scroll.y = T.rail.drag.sy + (e.clientY - T.rail.drag.y), T.scroll.y < 0 && (T.scroll.y = 0);
                                      var t = T.scrollvaluemax;
                                      T.scroll.y > t && (T.scroll.y = t)
                                  }
                                  return T.synched("mousemove", function() {
                                      T.cursorfreezed && (T.showCursor(), T.rail.drag.hr ? T.scrollLeft(Math.round(T.scroll.x * T.scrollratio.x)) : T.scrollTop(Math.round(T.scroll.y * T.scrollratio.y)))
                                  }), T.cancelEvent(e)
                              }
                              T.checkarea = 0
                          }, P.cantouch || M.emulatetouch) T.onpreventclick = function(e) {
                          if (T.preventclick) return T.preventclick.tg.onclick = T.preventclick.click, T.preventclick = !1, T.cancelEvent(e)
                      }, T.onclick = !P.isios && function(e) {
                          return !T.lastmouseup || (T.lastmouseup = !1, T.cancelEvent(e))
                      }, M.grabcursorenabled && P.cursorgrabvalue && (T.css(T.ispage ? T.doc : T.win, {
                          cursor: P.cursorgrabvalue
                      }), T.css(T.rail, {
                          cursor: P.cursorgrabvalue
                      }));
                      else {
                          var L = function(e) {
                              if (T.selectiondrag) {
                                  if (e) {
                                      var o = T.win.outerHeight(),
                                          t = e.pageY - T.selectiondrag.top;
                                      t > 0 && t < o && (t = 0), t >= o && (t -= o), T.selectiondrag.df = t
                                  }
                                  if (0 !== T.selectiondrag.df) {
                                      var r = -2 * T.selectiondrag.df / 6 | 0;
                                      T.doScrollBy(r), T.debounced("doselectionscroll", function() {
                                          L()
                                      }, 50)
                                  }
                              }
                          };
                          T.hasTextSelected = "getSelection" in l ? function() {
                              return l.getSelection().rangeCount > 0
                          } : "selection" in l ? function() {
                              return "None" != l.selection.type
                          } : function() {
                              return !1
                          }, T.onselectionstart = function(e) {
                              T.ispage || (T.selectiondrag = T.win.offset())
                          }, T.onselectionend = function(e) {
                              T.selectiondrag = !1
                          }, T.onselectiondrag = function(e) {
                              T.selectiondrag && T.hasTextSelected() && T.debounced("selectionscroll", function() {
                                  L(e)
                              }, 250)
                          }
                      }
                      if (P.hasw3ctouch ? (T.css(T.ispage ? n("html") : T.win, {
                              "touch-action": "none"
                          }), T.css(T.rail, {
                              "touch-action": "none"
                          }), T.css(T.cursor, {
                              "touch-action": "none"
                          }), T.bind(T.win, "pointerdown", T.ontouchstart), T.bind(l, "pointerup", T.ontouchend), T.delegate(l, "pointermove", T.ontouchmove)) : P.hasmstouch ? (T.css(T.ispage ? n("html") : T.win, {
                              "-ms-touch-action": "none"
                          }), T.css(T.rail, {
                              "-ms-touch-action": "none"
                          }), T.css(T.cursor, {
                              "-ms-touch-action": "none"
                          }), T.bind(T.win, "MSPointerDown", T.ontouchstart), T.bind(l, "MSPointerUp", T.ontouchend), T.delegate(l, "MSPointerMove", T.ontouchmove), T.bind(T.cursor, "MSGestureHold", function(e) {
                              e.preventDefault()
                          }), T.bind(T.cursor, "contextmenu", function(e) {
                              e.preventDefault()
                          })) : P.cantouch && (T.bind(T.win, "touchstart", T.ontouchstart, !1, !0), T.bind(l, "touchend", T.ontouchend, !1, !0), T.bind(l, "touchcancel", T.ontouchend, !1, !0), T.delegate(l, "touchmove", T.ontouchmove, !1, !0)), M.emulatetouch && (T.bind(T.win, "mousedown", T.ontouchstart, !1, !0), T.bind(l, "mouseup", T.ontouchend, !1, !0), T.bind(l, "mousemove", T.ontouchmove, !1, !0)), (M.cursordragontouch || !P.cantouch && !M.emulatetouch) && (T.rail.css({
                              cursor: "default"
                          }), T.railh && T.railh.css({
                              cursor: "default"
                          }), T.jqbind(T.rail, "mouseenter", function() {
                              if (!T.ispage && !T.win.is(":visible")) return !1;
                              T.canshowonmouseevent && T.showCursor(), T.rail.active = !0
                          }), T.jqbind(T.rail, "mouseleave", function() {
                              T.rail.active = !1, T.rail.drag || T.hideCursor()
                          }), M.sensitiverail && (T.bind(T.rail, "click", function(e) {
                              T.doRailClick(e, !1, !1)
                          }), T.bind(T.rail, "dblclick", function(e) {
                              T.doRailClick(e, !0, !1)
                          }), T.bind(T.cursor, "click", function(e) {
                              T.cancelEvent(e)
                          }), T.bind(T.cursor, "dblclick", function(e) {
                              T.cancelEvent(e)
                          })), T.railh && (T.jqbind(T.railh, "mouseenter", function() {
                              if (!T.ispage && !T.win.is(":visible")) return !1;
                              T.canshowonmouseevent && T.showCursor(), T.rail.active = !0
                          }), T.jqbind(T.railh, "mouseleave", function() {
                              T.rail.active = !1, T.rail.drag || T.hideCursor()
                          }), M.sensitiverail && (T.bind(T.railh, "click", function(e) {
                              T.doRailClick(e, !1, !0)
                          }), T.bind(T.railh, "dblclick", function(e) {
                              T.doRailClick(e, !0, !0)
                          }), T.bind(T.cursorh, "click", function(e) {
                              T.cancelEvent(e)
                          }), T.bind(T.cursorh, "dblclick", function(e) {
                              T.cancelEvent(e)
                          })))), M.cursordragontouch && (this.istouchcapable || P.cantouch) && (T.bind(T.cursor, "touchstart", T.ontouchstartCursor), T.bind(T.cursor, "touchmove", T.ontouchmoveCursor), T.bind(T.cursor, "touchend", T.ontouchendCursor), T.cursorh && T.bind(T.cursorh, "touchstart", function(e) {
                              T.ontouchstartCursor(e, !0)
                          }), T.cursorh && T.bind(T.cursorh, "touchmove", T.ontouchmoveCursor), T.cursorh && T.bind(T.cursorh, "touchend", T.ontouchendCursor)), M.emulatetouch || P.isandroid || P.isios ? (T.bind(P.hasmousecapture ? T.win : l, "mouseup", T.ontouchend), T.onclick && T.bind(l, "click", T.onclick), M.cursordragontouch ? (T.bind(T.cursor, "mousedown", T.onmousedown), T.bind(T.cursor, "mouseup", T.onmouseup), T.cursorh && T.bind(T.cursorh, "mousedown", function(e) {
                              T.onmousedown(e, !0)
                          }), T.cursorh && T.bind(T.cursorh, "mouseup", T.onmouseup)) : (T.bind(T.rail, "mousedown", function(e) {
                              e.preventDefault()
                          }), T.railh && T.bind(T.railh, "mousedown", function(e) {
                              e.preventDefault()
                          }))) : (T.bind(P.hasmousecapture ? T.win : l, "mouseup", T.onmouseup), T.bind(l, "mousemove", T.onmousemove), T.onclick && T.bind(l, "click", T.onclick), T.bind(T.cursor, "mousedown", T.onmousedown), T.bind(T.cursor, "mouseup", T.onmouseup), T.railh && (T.bind(T.cursorh, "mousedown", function(e) {
                              T.onmousedown(e, !0)
                          }), T.bind(T.cursorh, "mouseup", T.onmouseup)), !T.ispage && M.enablescrollonselection && (T.bind(T.win[0], "mousedown", T.onselectionstart), T.bind(l, "mouseup", T.onselectionend), T.bind(T.cursor, "mouseup", T.onselectionend), T.cursorh && T.bind(T.cursorh, "mouseup", T.onselectionend), T.bind(l, "mousemove", T.onselectiondrag)), T.zoom && (T.jqbind(T.zoom, "mouseenter", function() {
                              T.canshowonmouseevent && T.showCursor(), T.rail.active = !0
                          }), T.jqbind(T.zoom, "mouseleave", function() {
                              T.rail.active = !1, T.rail.drag || T.hideCursor()
                          }))), M.enablemousewheel && (T.isiframe || T.mousewheel(P.isie && T.ispage ? l : T.win, T.onmousewheel), T.mousewheel(T.rail, T.onmousewheel), T.railh && T.mousewheel(T.railh, T.onmousewheelhr)), T.ispage || P.cantouch || /HTML|^BODY/.test(T.win[0].nodeName) || (T.win.attr("tabindex") || T.win.attr({
                              tabindex: ++r
                          }), T.bind(T.win, "focus", function(e) {
                              o = T.getTarget(e).id || T.getTarget(e) || !1, T.hasfocus = !0, T.canshowonmouseevent && T.noticeCursor()
                          }), T.bind(T.win, "blur", function(e) {
                              o = !1, T.hasfocus = !1
                          }), T.bind(T.win, "mouseenter", function(e) {
                              t = T.getTarget(e).id || T.getTarget(e) || !1, T.hasmousefocus = !0, T.canshowonmouseevent && T.noticeCursor()
                          }), T.bind(T.win, "mouseleave", function(e) {
                              t = !1, T.hasmousefocus = !1, T.rail.drag || T.hideCursor()
                          })), T.onkeypress = function(e) {
                              if (T.railslocked && 0 === T.page.maxh) return !0;
                              e = e || a.event;
                              var r = T.getTarget(e);
                              if (r && /INPUT|TEXTAREA|SELECT|OPTION/.test(r.nodeName) && (!(r.getAttribute("type") || r.type || !1) || !/submit|button|cancel/i.tp)) return !0;
                              if (n(r).attr("contenteditable")) return !0;
                              if (T.hasfocus || T.hasmousefocus && !o || T.ispage && !o && !t) {
                                  var i = e.keyCode;
                                  if (T.railslocked && 27 != i) return T.cancelEvent(e);
                                  var s = e.ctrlKey || !1,
                                      l = e.shiftKey || !1,
                                      c = !1;
                                  switch (i) {
                                      case 38:
                                      case 63233:
                                          T.doScrollBy(72), c = !0;
                                          break;
                                      case 40:
                                      case 63235:
                                          T.doScrollBy(-72), c = !0;
                                          break;
                                      case 37:
                                      case 63232:
                                          T.railh && (s ? T.doScrollLeft(0) : T.doScrollLeftBy(72), c = !0);
                                          break;
                                      case 39:
                                      case 63234:
                                          T.railh && (s ? T.doScrollLeft(T.page.maxw) : T.doScrollLeftBy(-72), c = !0);
                                          break;
                                      case 33:
                                      case 63276:
                                          T.doScrollBy(T.view.h), c = !0;
                                          break;
                                      case 34:
                                      case 63277:
                                          T.doScrollBy(-T.view.h), c = !0;
                                          break;
                                      case 36:
                                      case 63273:
                                          T.railh && s ? T.doScrollPos(0, 0) : T.doScrollTo(0), c = !0;
                                          break;
                                      case 35:
                                      case 63275:
                                          T.railh && s ? T.doScrollPos(T.page.maxw, T.page.maxh) : T.doScrollTo(T.page.maxh), c = !0;
                                          break;
                                      case 32:
                                          M.spacebarenabled && (l ? T.doScrollBy(T.view.h) : T.doScrollBy(-T.view.h), c = !0);
                                          break;
                                      case 27:
                                          T.zoomactive && (T.doZoom(), c = !0)
                                  }
                                  if (c) return T.cancelEvent(e)
                              }
                          }, M.enablekeyboard && T.bind(l, P.isopera && !P.isopera12 ? "keypress" : "keydown", T.onkeypress), T.bind(l, "keydown", function(e) {
                              (e.ctrlKey || !1) && (T.wheelprevented = !0)
                          }), T.bind(l, "keyup", function(e) {
                              e.ctrlKey || !1 || (T.wheelprevented = !1)
                          }), T.bind(a, "blur", function(e) {
                              T.wheelprevented = !1
                          }), T.bind(a, "resize", T.onscreenresize), T.bind(a, "orientationchange", T.onscreenresize), T.bind(a, "load", T.lazyResize), P.ischrome && !T.ispage && !T.haswrapper) {
                          var C = T.win.attr("style"),
                              N = parseFloat(T.win.css("width")) + 1;
                          T.win.css("width", N), T.synched("chromefix", function() {
                              T.win.attr("style", C)
                          })
                      }
                      if (T.onAttributeChange = function(e) {
                              T.lazyResize(T.isieold ? 250 : 30)
                          }, M.enableobserver && (T.isie11 || !1 === m || (T.observerbody = new m(function(e) {
                              if (e.forEach(function(e) {
                                      if ("attributes" == e.type) return E.hasClass("modal-open") && E.hasClass("modal-dialog") && !n.contains(n(".modal-dialog")[0], T.doc[0]) ? T.hide() : T.show()
                                  }), T.me.clientWidth != T.page.width || T.me.clientHeight != T.page.height) return T.lazyResize(30)
                          }), T.observerbody.observe(l.body, {
                              childList: !0,
                              subtree: !0,
                              characterData: !1,
                              attributes: !0,
                              attributeFilter: ["class"]
                          })), !T.ispage && !T.haswrapper)) {
                          var R = T.win[0];
                          !1 !== m ? (T.observer = new m(function(e) {
                              e.forEach(T.onAttributeChange)
                          }), T.observer.observe(R, {
                              childList: !0,
                              characterData: !1,
                              attributes: !0,
                              subtree: !1
                          }), T.observerremover = new m(function(e) {
                              e.forEach(function(e) {
                                  if (e.removedNodes.length > 0)
                                      for (var o in e.removedNodes)
                                          if (T && e.removedNodes[o] === R) return T.remove()
                              })
                          }), T.observerremover.observe(R.parentNode, {
                              childList: !0,
                              characterData: !1,
                              attributes: !1,
                              subtree: !1
                          })) : (T.bind(R, P.isie && !P.isie9 ? "propertychange" : "DOMAttrModified", T.onAttributeChange), P.isie9 && R.attachEvent("onpropertychange", T.onAttributeChange), T.bind(R, "DOMNodeRemoved", function(e) {
                              e.target === R && T.remove()
                          }))
                      }!T.ispage && M.boxzoom && T.bind(a, "resize", T.resizeZoom), T.istextarea && (T.bind(T.win, "keydown", T.lazyResize), T.bind(T.win, "mouseup", T.lazyResize)), T.lazyResize(30)
                  }
                  if ("IFRAME" == this.doc[0].nodeName) {
                      var _ = function() {
                          T.iframexd = !1;
                          var o;
                          try {
                              (o = "contentDocument" in this ? this.contentDocument : this.contentWindow._doc).domain
                          } catch (e) {
                              T.iframexd = !0, o = !1
                          }
                          if (T.iframexd) return "console" in a && console.log("NiceScroll error: policy restriced iframe"), !0;
                          if (T.forcescreen = !0, T.isiframe && (T.iframe = {
                                  doc: n(o),
                                  html: T.doc.contents().find("html")[0],
                                  body: T.doc.contents().find("body")[0]
                              }, T.getContentSize = function() {
                                  return {
                                      w: Math.max(T.iframe.html.scrollWidth, T.iframe.body.scrollWidth),
                                      h: Math.max(T.iframe.html.scrollHeight, T.iframe.body.scrollHeight)
                                  }
                              }, T.docscroll = n(T.iframe.body)), !P.isios && M.iframeautoresize && !T.isiframe) {
                              T.win.scrollTop(0), T.doc.height("");
                              var t = Math.max(o.getElementsByTagName("html")[0].scrollHeight, o.body.scrollHeight);
                              T.doc.height(t)
                          }
                          T.lazyResize(30), T.css(n(T.iframe.body), e), P.isios && T.haswrapper && T.css(n(o.body), {
                              "-webkit-transform": "translate3d(0,0,0)"
                          }), "contentWindow" in this ? T.bind(this.contentWindow, "scroll", T.onscroll) : T.bind(o, "scroll", T.onscroll), M.enablemousewheel && T.mousewheel(o, T.onmousewheel), M.enablekeyboard && T.bind(o, P.isopera ? "keypress" : "keydown", T.onkeypress), P.cantouch ? (T.bind(o, "touchstart", T.ontouchstart), T.bind(o, "touchmove", T.ontouchmove)) : M.emulatetouch && (T.bind(o, "mousedown", T.ontouchstart), T.bind(o, "mousemove", function(e) {
                              return T.ontouchmove(e, !0)
                          }), M.grabcursorenabled && P.cursorgrabvalue && T.css(n(o.body), {
                              cursor: P.cursorgrabvalue
                          })), T.bind(o, "mouseup", T.ontouchend), T.zoom && (M.dblclickzoom && T.bind(o, "dblclick", T.doZoom), T.ongesturezoom && T.bind(o, "gestureend", T.ongesturezoom))
                      };
                      this.doc[0].readyState && "complete" === this.doc[0].readyState && setTimeout(function() {
                          _.call(T.doc[0], !1)
                      }, 500), T.bind(this.doc, "load", _)
                  }
              }, this.showCursor = function(e, o) {
                  if (T.cursortimeout && (clearTimeout(T.cursortimeout), T.cursortimeout = 0), T.rail) {
                      if (T.autohidedom && (T.autohidedom.stop().css({
                              opacity: M.cursoropacitymax
                          }), T.cursoractive = !0), T.rail.drag && 1 == T.rail.drag.pt || (void 0 !== e && !1 !== e && (T.scroll.y = e / T.scrollratio.y | 0), void 0 !== o && (T.scroll.x = o / T.scrollratio.x | 0)), T.cursor.css({
                              height: T.cursorheight,
                              top: T.scroll.y
                          }), T.cursorh) {
                          var t = T.hasreversehr ? T.scrollvaluemaxw - T.scroll.x : T.scroll.x;
                          T.cursorh.css({
                              width: T.cursorwidth,
                              left: !T.rail.align && T.rail.visibility ? t + T.rail.width : t
                          }), T.cursoractive = !0
                      }
                      T.zoom && T.zoom.stop().css({
                          opacity: M.cursoropacitymax
                      })
                  }
              }, this.hideCursor = function(e) {
                  T.cursortimeout || T.rail && T.autohidedom && (T.hasmousefocus && "leave" === M.autohidemode || (T.cursortimeout = setTimeout(function() {
                      T.rail.active && T.showonmouseevent || (T.autohidedom.stop().animate({
                          opacity: M.cursoropacitymin
                      }), T.zoom && T.zoom.stop().animate({
                          opacity: M.cursoropacitymin
                      }), T.cursoractive = !1), T.cursortimeout = 0
                  }, e || M.hidecursordelay)))
              }, this.noticeCursor = function(e, o, t) {
                  T.showCursor(o, t), T.rail.active || T.hideCursor(e)
              }, this.getContentSize = T.ispage ? function() {
                  return {
                      w: Math.max(l.body.scrollWidth, l.documentElement.scrollWidth),
                      h: Math.max(l.body.scrollHeight, l.documentElement.scrollHeight)
                  }
              } : T.haswrapper ? function() {
                  return {
                      w: T.doc[0].offsetWidth,
                      h: T.doc[0].offsetHeight
                  }
              } : function() {
                  return {
                      w: T.docscroll[0].scrollWidth,
                      h: T.docscroll[0].scrollHeight
                  }
              }, this.onResize = function(e, o) {
                  if (!T || !T.win) return !1;
                  var t = T.page.maxh,
                      r = T.page.maxw,
                      i = T.view.h,
                      s = T.view.w;
                  if (T.view = {
                          w: T.ispage ? T.win.width() : T.win[0].clientWidth,
                          h: T.ispage ? T.win.height() : T.win[0].clientHeight
                      }, T.page = o || T.getContentSize(), T.page.maxh = Math.max(0, T.page.h - T.view.h), T.page.maxw = Math.max(0, T.page.w - T.view.w), T.page.maxh == t && T.page.maxw == r && T.view.w == s && T.view.h == i) {
                      if (T.ispage) return T;
                      var n = T.win.offset();
                      if (T.lastposition) {
                          var l = T.lastposition;
                          if (l.top == n.top && l.left == n.left) return T
                      }
                      T.lastposition = n
                  }
                  return 0 === T.page.maxh ? (T.hideRail(), T.scrollvaluemax = 0, T.scroll.y = 0, T.scrollratio.y = 0, T.cursorheight = 0, T.setScrollTop(0), T.rail && (T.rail.scrollable = !1)) : (T.page.maxh -= M.railpadding.top + M.railpadding.bottom, T.rail.scrollable = !0), 0 === T.page.maxw ? (T.hideRailHr(), T.scrollvaluemaxw = 0, T.scroll.x = 0, T.scrollratio.x = 0, T.cursorwidth = 0, T.setScrollLeft(0), T.railh && (T.railh.scrollable = !1)) : (T.page.maxw -= M.railpadding.left + M.railpadding.right, T.railh && (T.railh.scrollable = M.horizrailenabled)), T.railslocked = T.locked || 0 === T.page.maxh && 0 === T.page.maxw, T.railslocked ? (T.ispage || T.updateScrollBar(T.view), !1) : (T.hidden || (T.rail.visibility || T.showRail(), T.railh && !T.railh.visibility && T.showRailHr()), T.istextarea && T.win.css("resize") && "none" != T.win.css("resize") && (T.view.h -= 20), T.cursorheight = Math.min(T.view.h, Math.round(T.view.h * (T.view.h / T.page.h))), T.cursorheight = M.cursorfixedheight ? M.cursorfixedheight : Math.max(M.cursorminheight, T.cursorheight), T.cursorwidth = Math.min(T.view.w, Math.round(T.view.w * (T.view.w / T.page.w))), T.cursorwidth = M.cursorfixedheight ? M.cursorfixedheight : Math.max(M.cursorminheight, T.cursorwidth), T.scrollvaluemax = T.view.h - T.cursorheight - (M.railpadding.top + M.railpadding.bottom), T.hasborderbox || (T.scrollvaluemax -= T.cursor[0].offsetHeight - T.cursor[0].clientHeight), T.railh && (T.railh.width = T.page.maxh > 0 ? T.view.w - T.rail.width : T.view.w, T.scrollvaluemaxw = T.railh.width - T.cursorwidth - (M.railpadding.left + M.railpadding.right)), T.ispage || T.updateScrollBar(T.view), T.scrollratio = {
                      x: T.page.maxw / T.scrollvaluemaxw,
                      y: T.page.maxh / T.scrollvaluemax
                  }, T.getScrollTop() > T.page.maxh ? T.doScrollTop(T.page.maxh) : (T.scroll.y = T.getScrollTop() / T.scrollratio.y | 0, T.scroll.x = T.getScrollLeft() / T.scrollratio.x | 0, T.cursoractive && T.noticeCursor()), T.scroll.y && 0 === T.getScrollTop() && T.doScrollTo(T.scroll.y * T.scrollratio.y | 0), T)
              }, this.resize = T.onResize;
              var O = 0;
              this.onscreenresize = function(e) {
                  clearTimeout(O);
                  var o = !T.ispage && !T.haswrapper;
                  o && T.hideRails(), O = setTimeout(function() {
                      T && (o && T.showRails(), T.resize()), O = 0
                  }, 120)
              }, this.lazyResize = function(e) {
                  return clearTimeout(O), e = isNaN(e) ? 240 : e, O = setTimeout(function() {
                      T && T.resize(), O = 0
                  }, e), T
              }, this.jqbind = function(e, o, t) {
                  T.events.push({
                      e: e,
                      n: o,
                      f: t,
                      q: !0
                  }), n(e).on(o, t)
              }, this.mousewheel = function(e, o, t) {
                  var r = "jquery" in e ? e[0] : e;
                  if ("onwheel" in l.createElement("div")) T._bind(r, "wheel", o, t || !1);
                  else {
                      var i = void 0 !== l.onmousewheel ? "mousewheel" : "DOMMouseScroll";
                      S(r, i, o, t || !1), "DOMMouseScroll" == i && S(r, "MozMousePixelScroll", o, t || !1)
                  }
              };
              var Y = !1;
              if (P.haseventlistener) {
                  try {
                      var H = Object.defineProperty({}, "passive", {
                          get: function() {
                              Y = !0
                          }
                      });
                      a.addEventListener("test", null, H)
                  } catch (e) {}
                  this.stopPropagation = function(e) {
                      return !!e && ((e = e.original ? e.original : e).stopPropagation(), !1)
                  }, this.cancelEvent = function(e) {
                      return e.cancelable && e.preventDefault(), e.stopImmediatePropagation(), e.preventManipulation && e.preventManipulation(), !1
                  }
              } else Event.prototype.preventDefault = function() {
                  this.returnValue = !1
              }, Event.prototype.stopPropagation = function() {
                  this.cancelBubble = !0
              }, a.constructor.prototype.addEventListener = l.constructor.prototype.addEventListener = Element.prototype.addEventListener = function(e, o, t) {
                  this.attachEvent("on" + e, o)
              }, a.constructor.prototype.removeEventListener = l.constructor.prototype.removeEventListener = Element.prototype.removeEventListener = function(e, o, t) {
                  this.detachEvent("on" + e, o)
              }, this.cancelEvent = function(e) {
                  return (e = e || a.event) && (e.cancelBubble = !0, e.cancel = !0, e.returnValue = !1), !1
              }, this.stopPropagation = function(e) {
                  return (e = e || a.event) && (e.cancelBubble = !0), !1
              };
              this.delegate = function(e, o, t, r, i) {
                  var s = d[o] || !1;
                  s || (s = {
                      a: [],
                      l: [],
                      f: function(e) {
                          for (var o = s.l, t = !1, r = o.length - 1; r >= 0; r--)
                              if (!1 === (t = o[r].call(e.target, e))) return !1;
                          return t
                      }
                  }, T.bind(e, o, s.f, r, i), d[o] = s), T.ispage ? (s.a = [T.id].concat(s.a), s.l = [t].concat(s.l)) : (s.a.push(T.id), s.l.push(t))
              }, this.undelegate = function(e, o, t, r, i) {
                  var s = d[o] || !1;
                  if (s && s.l)
                      for (var n = 0, l = s.l.length; n < l; n++) s.a[n] === T.id && (s.a.splice(n), s.l.splice(n), 0 === s.a.length && (T._unbind(e, o, s.l.f), d[o] = null))
              }, this.bind = function(e, o, t, r, i) {
                  var s = "jquery" in e ? e[0] : e;
                  T._bind(s, o, t, r || !1, i || !1)
              }, this._bind = function(e, o, t, r, i) {
                  T.events.push({
                      e: e,
                      n: o,
                      f: t,
                      b: r,
                      q: !1
                  }), Y && i ? e.addEventListener(o, t, {
                      passive: !1,
                      capture: r
                  }) : e.addEventListener(o, t, r || !1)
              }, this._unbind = function(e, o, t, r) {
                  d[o] ? T.undelegate(e, o, t, r) : e.removeEventListener(o, t, r)
              }, this.unbindAll = function() {
                  for (var e = 0; e < T.events.length; e++) {
                      var o = T.events[e];
                      o.q ? o.e.unbind(o.n, o.f) : T._unbind(o.e, o.n, o.f, o.b)
                  }
              }, this.showRails = function() {
                  return T.showRail().showRailHr()
              }, this.showRail = function() {
                  return 0 === T.page.maxh || !T.ispage && "none" == T.win.css("display") || (T.rail.visibility = !0, T.rail.css("display", "block")), T
              }, this.showRailHr = function() {
                  return T.railh && (0 === T.page.maxw || !T.ispage && "none" == T.win.css("display") || (T.railh.visibility = !0, T.railh.css("display", "block"))), T
              }, this.hideRails = function() {
                  return T.hideRail().hideRailHr()
              }, this.hideRail = function() {
                  return T.rail.visibility = !1, T.rail.css("display", "none"), T
              }, this.hideRailHr = function() {
                  return T.railh && (T.railh.visibility = !1, T.railh.css("display", "none")), T
              }, this.show = function() {
                  return T.hidden = !1, T.railslocked = !1, T.showRails()
              }, this.hide = function() {
                  return T.hidden = !0, T.railslocked = !0, T.hideRails()
              }, this.toggle = function() {
                  return T.hidden ? T.show() : T.hide()
              }, this.remove = function() {
                  T.stop(), T.cursortimeout && clearTimeout(T.cursortimeout);
                  for (var e in T.delaylist) T.delaylist[e] && h(T.delaylist[e].h);
                  T.doZoomOut(), T.unbindAll(), P.isie9 && T.win[0].detachEvent("onpropertychange", T.onAttributeChange), !1 !== T.observer && T.observer.disconnect(), !1 !== T.observerremover && T.observerremover.disconnect(), !1 !== T.observerbody && T.observerbody.disconnect(), T.events = null, T.cursor && T.cursor.remove(), T.cursorh && T.cursorh.remove(), T.rail && T.rail.remove(), T.railh && T.railh.remove(), T.zoom && T.zoom.remove();
                  for (var o = 0; o < T.saved.css.length; o++) {
                      var t = T.saved.css[o];
                      t[0].css(t[1], void 0 === t[2] ? "" : t[2])
                  }
                  T.saved = !1, T.me.data("__nicescroll", "");
                  var r = n.nicescroll;
                  r.each(function(e) {
                      if (this && this.id === T.id) {
                          delete r[e];
                          for (var o = ++e; o < r.length; o++, e++) r[e] = r[o];
                          --r.length && delete r[r.length]
                      }
                  });
                  for (var i in T) T[i] = null, delete T[i];
                  T = null
              }, this.scrollstart = function(e) {
                  return this.onscrollstart = e, T
              }, this.scrollend = function(e) {
                  return this.onscrollend = e, T
              }, this.scrollcancel = function(e) {
                  return this.onscrollcancel = e, T
              }, this.zoomin = function(e) {
                  return this.onzoomin = e, T
              }, this.zoomout = function(e) {
                  return this.onzoomout = e, T
              }, this.isScrollable = function(e) {
                  var o = e.target ? e.target : e;
                  if ("OPTION" == o.nodeName) return !0;
                  for (; o && 1 == o.nodeType && o !== this.me[0] && !/^BODY|HTML/.test(o.nodeName);) {
                      var t = n(o),
                          r = t.css("overflowY") || t.css("overflowX") || t.css("overflow") || "";
                      if (/scroll|auto/.test(r)) return o.clientHeight != o.scrollHeight;
                      o = !!o.parentNode && o.parentNode
                  }
                  return !1
              }, this.getViewport = function(e) {
                  for (var o = !(!e || !e.parentNode) && e.parentNode; o && 1 == o.nodeType && !/^BODY|HTML/.test(o.nodeName);) {
                      var t = n(o);
                      if (/fixed|absolute/.test(t.css("position"))) return t;
                      var r = t.css("overflowY") || t.css("overflowX") || t.css("overflow") || "";
                      if (/scroll|auto/.test(r) && o.clientHeight != o.scrollHeight) return t;
                      if (t.getNiceScroll().length > 0) return t;
                      o = !!o.parentNode && o.parentNode
                  }
                  return !1
              }, this.triggerScrollStart = function(e, o, t, r, i) {
                  if (T.onscrollstart) {
                      var s = {
                          type: "scrollstart",
                          current: {
                              x: e,
                              y: o
                          },
                          request: {
                              x: t,
                              y: r
                          },
                          end: {
                              x: T.newscrollx,
                              y: T.newscrolly
                          },
                          speed: i
                      };
                      T.onscrollstart.call(T, s)
                  }
              }, this.triggerScrollEnd = function() {
                  if (T.onscrollend) {
                      var e = T.getScrollLeft(),
                          o = T.getScrollTop(),
                          t = {
                              type: "scrollend",
                              current: {
                                  x: e,
                                  y: o
                              },
                              end: {
                                  x: e,
                                  y: o
                              }
                          };
                      T.onscrollend.call(T, t)
                  }
              };
              var B = 0,
                  X = 0,
                  D = 0,
                  A = 1,
                  q = !1;
              if (this.onmousewheel = function(e) {
                      if (T.wheelprevented || T.locked) return !1;
                      if (T.railslocked) return T.debounced("checkunlock", T.resize, 250), !1;
                      if (T.rail.drag) return T.cancelEvent(e);
                      if ("auto" === M.oneaxismousemode && 0 !== e.deltaX && (M.oneaxismousemode = !1), M.oneaxismousemode && 0 === e.deltaX && !T.rail.scrollable) return !T.railh || !T.railh.scrollable || T.onmousewheelhr(e);
                      var o = f(),
                          t = !1;
                      if (M.preservenativescrolling && T.checkarea + 600 < o && (T.nativescrollingarea = T.isScrollable(e), t = !0), T.checkarea = o, T.nativescrollingarea) return !0;
                      var r = k(e, !1, t);
                      return r && (T.checkarea = 0), r
                  }, this.onmousewheelhr = function(e) {
                      if (!T.wheelprevented) {
                          if (T.railslocked || !T.railh.scrollable) return !0;
                          if (T.rail.drag) return T.cancelEvent(e);
                          var o = f(),
                              t = !1;
                          return M.preservenativescrolling && T.checkarea + 600 < o && (T.nativescrollingarea = T.isScrollable(e), t = !0), T.checkarea = o, !!T.nativescrollingarea || (T.railslocked ? T.cancelEvent(e) : k(e, !0, t))
                      }
                  }, this.stop = function() {
                      return T.cancelScroll(), T.scrollmon && T.scrollmon.stop(), T.cursorfreezed = !1, T.scroll.y = Math.round(T.getScrollTop() * (1 / T.scrollratio.y)), T.noticeCursor(), T
                  }, this.getTransitionSpeed = function(e) {
                      return 80 + e / 72 * M.scrollspeed | 0
                  }, M.smoothscroll)
                  if (T.ishwscroll && P.hastransition && M.usetransition && M.smoothscroll) {
                      var j = "";
                      this.resetTransition = function() {
                          j = "", T.doc.css(P.prefixstyle + "transition-duration", "0ms")
                      }, this.prepareTransition = function(e, o) {
                          var t = o ? e : T.getTransitionSpeed(e),
                              r = t + "ms";
                          return j !== r && (j = r, T.doc.css(P.prefixstyle + "transition-duration", r)), t
                      }, this.doScrollLeft = function(e, o) {
                          var t = T.scrollrunning ? T.newscrolly : T.getScrollTop();
                          T.doScrollPos(e, t, o)
                      }, this.doScrollTop = function(e, o) {
                          var t = T.scrollrunning ? T.newscrollx : T.getScrollLeft();
                          T.doScrollPos(t, e, o)
                      }, this.cursorupdate = {
                          running: !1,
                          start: function() {
                              var e = this;
                              if (!e.running) {
                                  e.running = !0;
                                  var o = function() {
                                      e.running && u(o), T.showCursor(T.getScrollTop(), T.getScrollLeft()), T.notifyScrollEvent(T.win[0])
                                  };
                                  u(o)
                              }
                          },
                          stop: function() {
                              this.running = !1
                          }
                      }, this.doScrollPos = function(e, o, t) {
                          var r = T.getScrollTop(),
                              i = T.getScrollLeft();
                          if (((T.newscrolly - r) * (o - r) < 0 || (T.newscrollx - i) * (e - i) < 0) && T.cancelScroll(), M.bouncescroll ? (o < 0 ? o = o / 2 | 0 : o > T.page.maxh && (o = T.page.maxh + (o - T.page.maxh) / 2 | 0), e < 0 ? e = e / 2 | 0 : e > T.page.maxw && (e = T.page.maxw + (e - T.page.maxw) / 2 | 0)) : (o < 0 ? o = 0 : o > T.page.maxh && (o = T.page.maxh), e < 0 ? e = 0 : e > T.page.maxw && (e = T.page.maxw)), T.scrollrunning && e == T.newscrollx && o == T.newscrolly) return !1;
                          T.newscrolly = o, T.newscrollx = e;
                          var s = T.getScrollTop(),
                              n = T.getScrollLeft(),
                              l = {};
                          l.x = e - n, l.y = o - s;
                          var a = 0 | Math.sqrt(l.x * l.x + l.y * l.y),
                              c = T.prepareTransition(a);
                          T.scrollrunning || (T.scrollrunning = !0, T.triggerScrollStart(n, s, e, o, c), T.cursorupdate.start()), T.scrollendtrapped = !0, P.transitionend || (T.scrollendtrapped && clearTimeout(T.scrollendtrapped), T.scrollendtrapped = setTimeout(T.onScrollTransitionEnd, c)), T.setScrollTop(T.newscrolly), T.setScrollLeft(T.newscrollx)
                      }, this.cancelScroll = function() {
                          if (!T.scrollendtrapped) return !0;
                          var e = T.getScrollTop(),
                              o = T.getScrollLeft();
                          return T.scrollrunning = !1, P.transitionend || clearTimeout(P.transitionend), T.scrollendtrapped = !1, T.resetTransition(), T.setScrollTop(e), T.railh && T.setScrollLeft(o), T.timerscroll && T.timerscroll.tm && clearInterval(T.timerscroll.tm), T.timerscroll = !1, T.cursorfreezed = !1, T.cursorupdate.stop(), T.showCursor(e, o), T
                      }, this.onScrollTransitionEnd = function() {
                          if (T.scrollendtrapped) {
                              var e = T.getScrollTop(),
                                  o = T.getScrollLeft();
                              if (e < 0 ? e = 0 : e > T.page.maxh && (e = T.page.maxh), o < 0 ? o = 0 : o > T.page.maxw && (o = T.page.maxw), e != T.newscrolly || o != T.newscrollx) return T.doScrollPos(o, e, M.snapbackspeed);
                              T.scrollrunning && T.triggerScrollEnd(), T.scrollrunning = !1, T.scrollendtrapped = !1, T.resetTransition(), T.timerscroll = !1, T.setScrollTop(e), T.railh && T.setScrollLeft(o), T.cursorupdate.stop(), T.noticeCursor(!1, e, o), T.cursorfreezed = !1
                          }
                      }
                  } else this.doScrollLeft = function(e, o) {
                      var t = T.scrollrunning ? T.newscrolly : T.getScrollTop();
                      T.doScrollPos(e, t, o)
                  }, this.doScrollTop = function(e, o) {
                      var t = T.scrollrunning ? T.newscrollx : T.getScrollLeft();
                      T.doScrollPos(t, e, o)
                  }, this.doScrollPos = function(e, o, t) {
                      var r = T.getScrollTop(),
                          i = T.getScrollLeft();
                      ((T.newscrolly - r) * (o - r) < 0 || (T.newscrollx - i) * (e - i) < 0) && T.cancelScroll();
                      var s = !1;
                      if (T.bouncescroll && T.rail.visibility || (o < 0 ? (o = 0, s = !0) : o > T.page.maxh && (o = T.page.maxh, s = !0)), T.bouncescroll && T.railh.visibility || (e < 0 ? (e = 0, s = !0) : e > T.page.maxw && (e = T.page.maxw, s = !0)), T.scrollrunning && T.newscrolly === o && T.newscrollx === e) return !0;
                      T.newscrolly = o, T.newscrollx = e, T.dst = {}, T.dst.x = e - i, T.dst.y = o - r, T.dst.px = i, T.dst.py = r;
                      var n = 0 | Math.sqrt(T.dst.x * T.dst.x + T.dst.y * T.dst.y),
                          l = T.getTransitionSpeed(n);
                      T.bzscroll = {};
                      var a = s ? 1 : .58;
                      T.bzscroll.x = new R(i, T.newscrollx, l, 0, 0, a, 1), T.bzscroll.y = new R(r, T.newscrolly, l, 0, 0, a, 1);
                      f();
                      var c = function() {
                          if (T.scrollrunning) {
                              var e = T.bzscroll.y.getPos();
                              T.setScrollLeft(T.bzscroll.x.getNow()), T.setScrollTop(T.bzscroll.y.getNow()), e <= 1 ? T.timer = u(c) : (T.scrollrunning = !1, T.timer = 0, T.triggerScrollEnd())
                          }
                      };
                      T.scrollrunning || (T.triggerScrollStart(i, r, e, o, l), T.scrollrunning = !0, T.timer = u(c))
                  }, this.cancelScroll = function() {
                      return T.timer && h(T.timer), T.timer = 0, T.bzscroll = !1, T.scrollrunning = !1, T
                  };
              else this.doScrollLeft = function(e, o) {
                  var t = T.getScrollTop();
                  T.doScrollPos(e, t, o)
              }, this.doScrollTop = function(e, o) {
                  var t = T.getScrollLeft();
                  T.doScrollPos(t, e, o)
              }, this.doScrollPos = function(e, o, t) {
                  var r = e > T.page.maxw ? T.page.maxw : e;
                  r < 0 && (r = 0);
                  var i = o > T.page.maxh ? T.page.maxh : o;
                  i < 0 && (i = 0), T.synched("scroll", function() {
                      T.setScrollTop(i), T.setScrollLeft(r)
                  })
              }, this.cancelScroll = function() {};
              this.doScrollBy = function(e, o) {
                  z(0, e)
              }, this.doScrollLeftBy = function(e, o) {
                  z(e, 0)
              }, this.doScrollTo = function(e, o) {
                  var t = o ? Math.round(e * T.scrollratio.y) : e;
                  t < 0 ? t = 0 : t > T.page.maxh && (t = T.page.maxh), T.cursorfreezed = !1, T.doScrollTop(e)
              }, this.checkContentSize = function() {
                  var e = T.getContentSize();
                  e.h == T.page.h && e.w == T.page.w || T.resize(!1, e)
              }, T.onscroll = function(e) {
                  T.rail.drag || T.cursorfreezed || T.synched("scroll", function() {
                      T.scroll.y = Math.round(T.getScrollTop() / T.scrollratio.y), T.railh && (T.scroll.x = Math.round(T.getScrollLeft() / T.scrollratio.x)), T.noticeCursor()
                  })
              }, T.bind(T.docscroll, "scroll", T.onscroll), this.doZoomIn = function(e) {
                  if (!T.zoomactive) {
                      T.zoomactive = !0, T.zoomrestore = {
                          style: {}
                      };
                      var o = ["position", "top", "left", "zIndex", "backgroundColor", "marginTop", "marginBottom", "marginLeft", "marginRight"],
                          t = T.win[0].style;
                      for (var r in o) {
                          var i = o[r];
                          T.zoomrestore.style[i] = void 0 !== t[i] ? t[i] : ""
                      }
                      T.zoomrestore.style.width = T.win.css("width"), T.zoomrestore.style.height = T.win.css("height"), T.zoomrestore.padding = {
                          w: T.win.outerWidth() - T.win.width(),
                          h: T.win.outerHeight() - T.win.height()
                      }, P.isios4 && (T.zoomrestore.scrollTop = c.scrollTop(), c.scrollTop(0)), T.win.css({
                          position: P.isios4 ? "absolute" : "fixed",
                          top: 0,
                          left: 0,
                          zIndex: s + 100,
                          margin: 0
                      });
                      var n = T.win.css("backgroundColor");
                      return ("" === n || /transparent|rgba\(0, 0, 0, 0\)|rgba\(0,0,0,0\)/.test(n)) && T.win.css("backgroundColor", "#fff"), T.rail.css({
                          zIndex: s + 101
                      }), T.zoom.css({
                          zIndex: s + 102
                      }), T.zoom.css("backgroundPosition", "0 -18px"), T.resizeZoom(), T.onzoomin && T.onzoomin.call(T), T.cancelEvent(e)
                  }
              }, this.doZoomOut = function(e) {
                  if (T.zoomactive) return T.zoomactive = !1, T.win.css("margin", ""), T.win.css(T.zoomrestore.style), P.isios4 && c.scrollTop(T.zoomrestore.scrollTop), T.rail.css({
                      "z-index": T.zindex
                  }), T.zoom.css({
                      "z-index": T.zindex
                  }), T.zoomrestore = !1, T.zoom.css("backgroundPosition", "0 0"), T.onResize(), T.onzoomout && T.onzoomout.call(T), T.cancelEvent(e)
              }, this.doZoom = function(e) {
                  return T.zoomactive ? T.doZoomOut(e) : T.doZoomIn(e)
              }, this.resizeZoom = function() {
                  if (T.zoomactive) {
                      var e = T.getScrollTop();
                      T.win.css({
                          width: c.width() - T.zoomrestore.padding.w + "px",
                          height: c.height() - T.zoomrestore.padding.h + "px"
                      }), T.onResize(), T.setScrollTop(Math.min(T.page.maxh, e))
                  }
              }, this.init(), n.nicescroll.push(this)
          },
          y = function(e) {
              var o = this;
              this.nc = e, this.lastx = 0, this.lasty = 0, this.speedx = 0, this.speedy = 0, this.lasttime = 0, this.steptime = 0, this.snapx = !1, this.snapy = !1, this.demulx = 0, this.demuly = 0, this.lastscrollx = -1, this.lastscrolly = -1, this.chkx = 0, this.chky = 0, this.timer = 0, this.reset = function(e, t) {
                  o.stop(), o.steptime = 0, o.lasttime = f(), o.speedx = 0, o.speedy = 0, o.lastx = e, o.lasty = t, o.lastscrollx = -1, o.lastscrolly = -1
              }, this.update = function(e, t) {
                  var r = f();
                  o.steptime = r - o.lasttime, o.lasttime = r;
                  var i = t - o.lasty,
                      s = e - o.lastx,
                      n = o.nc.getScrollTop() + i,
                      l = o.nc.getScrollLeft() + s;
                  o.snapx = l < 0 || l > o.nc.page.maxw, o.snapy = n < 0 || n > o.nc.page.maxh, o.speedx = s, o.speedy = i, o.lastx = e, o.lasty = t
              }, this.stop = function() {
                  o.nc.unsynched("domomentum2d"), o.timer && clearTimeout(o.timer), o.timer = 0, o.lastscrollx = -1, o.lastscrolly = -1
              }, this.doSnapy = function(e, t) {
                  var r = !1;
                  t < 0 ? (t = 0, r = !0) : t > o.nc.page.maxh && (t = o.nc.page.maxh, r = !0), e < 0 ? (e = 0, r = !0) : e > o.nc.page.maxw && (e = o.nc.page.maxw, r = !0), r ? o.nc.doScrollPos(e, t, o.nc.opt.snapbackspeed) : o.nc.triggerScrollEnd()
              }, this.doMomentum = function(e) {
                  var t = f(),
                      r = e ? t + e : o.lasttime,
                      i = o.nc.getScrollLeft(),
                      s = o.nc.getScrollTop(),
                      n = o.nc.page.maxh,
                      l = o.nc.page.maxw;
                  o.speedx = l > 0 ? Math.min(60, o.speedx) : 0, o.speedy = n > 0 ? Math.min(60, o.speedy) : 0;
                  var a = r && t - r <= 60;
                  (s < 0 || s > n || i < 0 || i > l) && (a = !1);
                  var c = !(!o.speedy || !a) && o.speedy,
                      d = !(!o.speedx || !a) && o.speedx;
                  if (c || d) {
                      var u = Math.max(16, o.steptime);
                      if (u > 50) {
                          var h = u / 50;
                          o.speedx *= h, o.speedy *= h, u = 50
                      }
                      o.demulxy = 0, o.lastscrollx = o.nc.getScrollLeft(), o.chkx = o.lastscrollx, o.lastscrolly = o.nc.getScrollTop(), o.chky = o.lastscrolly;
                      var p = o.lastscrollx,
                          m = o.lastscrolly,
                          g = function() {
                              var e = f() - t > 600 ? .04 : .02;
                              o.speedx && (p = Math.floor(o.lastscrollx - o.speedx * (1 - o.demulxy)), o.lastscrollx = p, (p < 0 || p > l) && (e = .1)), o.speedy && (m = Math.floor(o.lastscrolly - o.speedy * (1 - o.demulxy)), o.lastscrolly = m, (m < 0 || m > n) && (e = .1)), o.demulxy = Math.min(1, o.demulxy + e), o.nc.synched("domomentum2d", function() {
                                  if (o.speedx) {
                                      o.nc.getScrollLeft();
                                      o.chkx = p, o.nc.setScrollLeft(p)
                                  }
                                  if (o.speedy) {
                                      o.nc.getScrollTop();
                                      o.chky = m, o.nc.setScrollTop(m)
                                  }
                                  o.timer || (o.nc.hideCursor(), o.doSnapy(p, m))
                              }), o.demulxy < 1 ? o.timer = setTimeout(g, u) : (o.stop(), o.nc.hideCursor(), o.doSnapy(p, m))
                          };
                      g()
                  } else o.doSnapy(o.nc.getScrollLeft(), o.nc.getScrollTop())
              }
          },
          x = e.fn.scrollTop;
      e.cssHooks.pageYOffset = {
          get: function(e, o, t) {
              var r = n.data(e, "__nicescroll") || !1;
              return r && r.ishwscroll ? r.getScrollTop() : x.call(e)
          },
          set: function(e, o) {
              var t = n.data(e, "__nicescroll") || !1;
              return t && t.ishwscroll ? t.setScrollTop(parseInt(o)) : x.call(e, o), this
          }
      }, e.fn.scrollTop = function(e) {
          if (void 0 === e) {
              var o = !!this[0] && (n.data(this[0], "__nicescroll") || !1);
              return o && o.ishwscroll ? o.getScrollTop() : x.call(this)
          }
          return this.each(function() {
              var o = n.data(this, "__nicescroll") || !1;
              o && o.ishwscroll ? o.setScrollTop(parseInt(e)) : x.call(n(this), e)
          })
      };
      var S = e.fn.scrollLeft;
      n.cssHooks.pageXOffset = {
          get: function(e, o, t) {
              var r = n.data(e, "__nicescroll") || !1;
              return r && r.ishwscroll ? r.getScrollLeft() : S.call(e)
          },
          set: function(e, o) {
              var t = n.data(e, "__nicescroll") || !1;
              return t && t.ishwscroll ? t.setScrollLeft(parseInt(o)) : S.call(e, o), this
          }
      }, e.fn.scrollLeft = function(e) {
          if (void 0 === e) {
              var o = !!this[0] && (n.data(this[0], "__nicescroll") || !1);
              return o && o.ishwscroll ? o.getScrollLeft() : S.call(this)
          }
          return this.each(function() {
              var o = n.data(this, "__nicescroll") || !1;
              o && o.ishwscroll ? o.setScrollLeft(parseInt(e)) : S.call(n(this), e)
          })
      };
      var z = function(e) {
          var o = this;
          if (this.length = 0, this.name = "nicescrollarray", this.each = function(e) {
                  return n.each(o, e), o
              }, this.push = function(e) {
                  o[o.length] = e, o.length++
              }, this.eq = function(e) {
                  return o[e]
              }, e)
              for (var t = 0; t < e.length; t++) {
                  var r = n.data(e[t], "__nicescroll") || !1;
                  r && (this[this.length] = r, this.length++)
              }
          return this
      };
      ! function(e, o, t) {
          for (var r = 0, i = o.length; r < i; r++) t(e, o[r])
      }(z.prototype, ["show", "hide", "toggle", "onResize", "resize", "remove", "stop", "doScrollPos"], function(e, o) {
          e[o] = function() {
              var e = arguments;
              return this.each(function() {
                  this[o].apply(this, e)
              })
          }
      }), e.fn.getNiceScroll = function(e) {
          return void 0 === e ? new z(this) : this[e] && n.data(this[e], "__nicescroll") || !1
      }, (e.expr.pseudos || e.expr[":"]).nicescroll = function(e) {
          return void 0 !== n.data(e, "__nicescroll")
      }, n.fn.niceScroll = function(e, o) {
          void 0 !== o || "object" != typeof e || "jquery" in e || (o = e, e = !1);
          var t = new z;
          return this.each(function() {
              var r = n(this),
                  i = n.extend({}, o);
              if (e) {
                  var s = n(e);
                  i.doc = s.length > 1 ? n(e, r) : s, i.win = r
              }!("doc" in i) || "win" in i || (i.win = r);
              var l = r.data("__nicescroll") || !1;
              l || (i.doc = i.doc || r, l = new b(i, r), r.data("__nicescroll", l)), t.push(l)
          }), 1 === t.length ? t[0] : t
      }, a.NiceScroll = {
          getjQuery: function() {
              return e
          }
      }, n.nicescroll || (n.nicescroll = new z, n.nicescroll.options = g)
  });