! function (e, t, a, n) {
    var l, s, i, r, o, c, u, g, h, f, d, p = "mPageScroll2id",
        _ = "mPS2id",
        C = ".m_PageScroll2id,a[rel~='m_PageScroll2id'],.page-scroll-to-id,a[rel~='page-scroll-to-id'],._ps2id",
        v = {
            scrollSpeed: 1300,
            autoScrollSpeed: !0,
            scrollEasing: "easeInOutExpo",
            scrollingEasing: "easeInOutCirc",
            pageEndSmoothScroll: !0,
            layout: "vertical",
            offset: 0,
            highlightSelector: !1,
            clickedClass: _ + "-clicked",
            targetClass: _ + "-target",
            highlightClass: _ + "-highlight",
            forceSingleHighlight: !1,
            keepHighlightUntilNext: !1,
            highlightByNextTarget: !1,
            disablePluginBelow: !1,
            clickEvents: !0,
            onStart: function () {},
            onComplete: function () {},
            defaultSelector: !1,
            live: !0
        },
        m = 0,
        I = {
            init: function (n) {
                var n = e.extend(!0, {}, v, n);
                if (e(a).data(_, n), s = e(a).data(_), !this.selector) {
                    var c = "__" + _;
                    this.each(function () {
                        var t = e(this);
                        t.hasClass(c) || t.addClass(c)
                    }), this.selector = "." + c
                }
                l = l ? l + "," + this.selector : this.selector, s.defaultSelector && ("object" != typeof e(l) || 0 === e(l).length) && (l = C), s.clickEvents && e(a).undelegate("." + _).delegate(l, "click." + _, function (t) {
                    if (O._isDisabled.call(null)) return void O._removeClasses.call(null);
                    var a = e(this),
                        n = a.attr("href"),
                        l = a.prop("href");
                    n && -1 !== n.indexOf("#/") || (O._reset.call(null), f = a.data("ps2id-offset") || 0, O._isValid.call(null, n, l) && O._findTarget.call(null, n) && (t.preventDefault(), r = "selector", o = a, O._setClasses.call(null, !0), O._scrollTo.call(null)))
                }), e(t).unbind("." + _).bind("scroll." + _ + " resize." + _, function () {
                    if (O._isDisabled.call(null)) return void O._removeClasses.call(null);
                    var t = e("._" + _ + "-t");
                    t.each(function (a) {
                        var n = e(this),
                            l = n.attr("id"),
                            s = O._findHighlight.call(null, l);
                        O._setClasses.call(null, !1, n, s), a == t.length - 1 && O._extendClasses.call(null)
                    })
                }), i = !0, O._setup.call(null), O._live.call(null)
            },
            scrollTo: function (t, a) {
                if (O._isDisabled.call(null)) return void O._removeClasses.call(null);
                if (t && "undefined" != typeof t) {
                    O._isInit.call(null);
                    var n = {
                            layout: s.layout,
                            offset: s.offset,
                            clicked: !1
                        },
                        a = e.extend(!0, {}, n, a);
                    O._reset.call(null), g = a.layout, h = a.offset, t = -1 !== t.indexOf("#") ? t : "#" + t, O._isValid.call(null, t) && O._findTarget.call(null, t) && (r = "scrollTo", o = a.clicked, o && O._setClasses.call(null, !0), O._scrollTo.call(null))
                }
            },
            destroy: function () {
                e(t).unbind("." + _), e(a).undelegate("." + _).removeData(_), e("._" + _ + "-t").removeData(_), O._removeClasses.call(null, !0)
            }
        },
        O = {
            _isDisabled: function () {
                var e = t,
                    n = "inner",
                    l = s.disablePluginBelow instanceof Array ? [s.disablePluginBelow[0] || 0, s.disablePluginBelow[1] || 0] : [s.disablePluginBelow || 0, 0];
                return "innerWidth" in t || (n = "client", e = a.documentElement || a.body), e[n + "Width"] <= l[0] || e[n + "Height"] <= l[1]
            },
            _isValid: function (e, a) {
                if (e) {
                    a = a ? a : e;
                    var n = -1 !== a.indexOf("#/") ? a.split("#/")[0] : a.split("#")[0],
                        l = t.location.toString().split("#")[0];
                    return "#" !== e && -1 !== e.indexOf("#") && ("" === n || n === l)
                }
            },
            _setup: function () {
                var t = O._highlightSelector(),
                    a = 1,
                    n = 0;
                return e(t).each(function () {
                    var l = e(this),
                        i = l.attr("href"),
                        r = l.prop("href");
                    if (O._isValid.call(null, i, r)) {
                        var o = -1 !== i.indexOf("#/") ? i.split("#/")[1] : i.split("#")[1],
                            c = e("#" + o);
                        if (c.length > 0) {
                            s.highlightByNextTarget && c !== n && (n ? n.data(_, {
                                tn: c
                            }) : c.data(_, {
                                tn: "0"
                            }), n = c), c.hasClass("_" + _ + "-t") || c.addClass("_" + _ + "-t"), c.data(_, {
                                i: a
                            }), l.hasClass("_" + _ + "-h") || l.addClass("_" + _ + "-h");
                            var u = O._findHighlight.call(null, o);
                            O._setClasses.call(null, !1, c, u), m = a, a++, a == e(t).length && O._extendClasses.call(null)
                        }
                    }
                })
            },
            _highlightSelector: function () {
                return s.highlightSelector && "" !== s.highlightSelector ? s.highlightSelector : l
            },
            _findTarget: function (t) {
                var a = -1 !== t.indexOf("#/") ? t.split("#/")[1] : t.split("#")[1],
                    n = e("#" + a);
                if (n.length < 1 || "fixed" === n.css("position")) {
                    if ("top" !== a) return;
                    n = e("body")
                }
                return c = n, g || (g = s.layout), h = O._setOffset.call(null), u = [(n.offset().top - h[0]).toString(), (n.offset().left - h[1]).toString()], u[0] = u[0] < 0 ? 0 : u[0], u[1] = u[1] < 0 ? 0 : u[1], u
            },
            _setOffset: function () {
                h || (h = s.offset ? s.offset : 0), f && (h = f);
                var t, a, n, l;
                switch (typeof h) {
                case "object":
                case "string":
                    t = [h.y ? h.y : h, h.x ? h.x : h], a = [t[0] instanceof jQuery ? t[0] : e(t[0]), t[1] instanceof jQuery ? t[1] : e(t[1])], a[0].length > 0 ? (n = a[0].height(), "fixed" === a[0].css("position") && (n += a[0][0].offsetTop)) : n = !isNaN(parseFloat(t[0])) && isFinite(t[0]) ? parseInt(t[0]) : 0, a[1].length > 0 ? (l = a[1].width(), "fixed" === a[1].css("position") && (l += a[1][0].offsetLeft)) : l = !isNaN(parseFloat(t[1])) && isFinite(t[1]) ? parseInt(t[1]) : 0;
                    break;
                case "function":
                    t = h.call(null), t instanceof Array ? (n = t[0], l = t[1]) : n = l = t;
                    break;
                default:
                    n = l = parseInt(h)
                }
                return [n, l]
            },
            _findHighlight: function (a) {
                var n = t.location.toString().split("#")[0],
                    l = e("._" + _ + "-h[href='#" + a + "']"),
                    s = e("._" + _ + "-h[href='" + n + "#" + a + "']"),
                    i = e("._" + _ + "-h[href='#/" + a + "']"),
                    r = e("._" + _ + "-h[href='" + n + "#/" + a + "']");
                return l = l.length > 0 ? l : s, i = i.length > 0 ? i : r, i.length > 0 ? i : l
            },
            _setClasses: function (t, a, n) {
                var l = s.clickedClass,
                    i = s.targetClass,
                    r = s.highlightClass;
                t && l && "" !== l ? (e("." + l).removeClass(l), o.addClass(l)) : a && i && "" !== i && n && r && "" !== r && (O._currentTarget.call(null, a) ? (a.addClass(i), n.addClass(r)) : (!s.keepHighlightUntilNext || e("." + r).length > 1) && (a.removeClass(i), n.removeClass(r)))
            },
            _extendClasses: function () {
                var t = s.targetClass,
                    a = s.highlightClass,
                    n = e("." + t),
                    l = e("." + a),
                    i = t + "-first",
                    r = t + "-last",
                    o = a + "-first",
                    c = a + "-last";
                e("._" + _ + "-t").removeClass(i + " " + r), e("._" + _ + "-h").removeClass(o + " " + c), s.forceSingleHighlight ? s.keepHighlightUntilNext && n.length > 1 ? (n.slice(0, 1).removeClass(t), l.slice(0, 1).removeClass(a)) : (n.slice(1).removeClass(t), l.slice(1).removeClass(a)) : (n.slice(0, 1).addClass(i).end().slice(-1).addClass(r), l.slice(0, 1).addClass(o).end().slice(-1).addClass(c))
            },
            _removeClasses: function (t) {
                e("." + s.clickedClass).removeClass(s.clickedClass), e("." + s.targetClass).removeClass(s.targetClass + " " + s.targetClass + "-first " + s.targetClass + "-last"), e("." + s.highlightClass).removeClass(s.highlightClass + " " + s.highlightClass + "-first " + s.highlightClass + "-last"), t && (e("._" + _ + "-t").removeClass("_" + _ + "-t"), e("._" + _ + "-h").removeClass("_" + _ + "-h"))
            },
            _currentTarget: function (a) {
                var n = s["target_" + a.data(_).i],
                    l = a.data("ps2id-target"),
                    i = l ? e(l)[0].getBoundingClientRect() : a[0].getBoundingClientRect();
                if ("undefined" != typeof n) {
                    var r = a.offset().top,
                        o = a.offset().left,
                        c = n.from ? n.from + r : r,
                        u = n.to ? n.to + r : r,
                        g = n.fromX ? n.fromX + o : o,
                        h = n.toX ? n.toX + o : o;
                    return i.top >= u && i.top <= c && i.left >= h && i.left <= g
                }
                var f = e(t).height(),
                    d = e(t).width(),
                    p = l ? e(l).height() : a.height(),
                    C = l ? e(l).width() : a.width(),
                    v = 1 + p / f,
                    m = v,
                    I = f > p ? v * (f / p) : v,
                    O = 1 + C / d,
                    S = O,
                    b = d > C ? O * (d / C) : O,
                    M = [i.top <= f / m, i.bottom >= f / I, i.left <= d / S, i.right >= d / b];
                if (s.highlightByNextTarget) {
                    var y = a.data(_).tn;
                    if (y) {
                        var k = y[0].getBoundingClientRect();
                        "vertical" === s.layout ? M = [i.top <= f / 2, k.top > f / 2, 1, 1] : "horizontal" === s.layout && (M = [1, 1, i.left <= d / 2, k.left > d / 2])
                    }
                }
                return M[0] && M[1] && M[2] && M[3]
            },
            _scrollTo: function () {
                s.scrollSpeed = parseInt(s.scrollSpeed), u = s.pageEndSmoothScroll ? O._pageEndSmoothScroll.call(null) : u;
                var a = e("html,body"),
                    n = s.autoScrollSpeed ? O._autoScrollSpeed.call(null) : s.scrollSpeed,
                    l = a.is(":animated") ? s.scrollingEasing : s.scrollEasing,
                    i = e(t).scrollTop(),
                    r = e(t).scrollLeft();
                switch (g) {
                case "horizontal":
                    r != u[1] && (O._callbacks.call(null, "onStart"), a.stop().animate({
                        scrollLeft: u[1]
                    }, n, l).promise().then(function () {
                        O._callbacks.call(null, "onComplete")
                    }));
                    break;
                case "auto":
                    if (i != u[0] || r != u[1])
                        if (O._callbacks.call(null, "onStart"), navigator.userAgent.match(/(iPod|iPhone|iPad|Android)/)) {
                            var o;
                            a.stop().animate({
                                pageYOffset: u[0],
                                pageXOffset: u[1]
                            }, {
                                duration: n,
                                easing: l,
                                step: function (e, a) {
                                    "pageXOffset" == a.prop ? o = e : "pageYOffset" == a.prop && t.scrollTo(o, e)
                                }
                            }).promise().then(function () {
                                O._callbacks.call(null, "onComplete")
                            })
                        } else a.stop().animate({
                            scrollTop: u[0],
                            scrollLeft: u[1]
                        }, n, l).promise().then(function () {
                            O._callbacks.call(null, "onComplete")
                        });
                    break;
                default:
                    i != u[0] && (O._callbacks.call(null, "onStart"), a.stop().animate({
                        scrollTop: u[0]
                    }, n, l).promise().then(function () {
                        O._callbacks.call(null, "onComplete")
                    }))
                }
            },
            _pageEndSmoothScroll: function () {
                var n = e(a).height(),
                    l = e(a).width(),
                    s = e(t).height(),
                    i = e(t).width();
                return [n - u[0] < s ? n - s : u[0], l - u[1] < i ? l - i : u[1]]
            },
            _autoScrollSpeed: function () {
                var n = e(t).scrollTop(),
                    l = e(t).scrollLeft(),
                    i = e(a).height(),
                    r = e(a).width(),
                    o = [s.scrollSpeed + s.scrollSpeed * Math.floor(Math.abs(u[0] - n) / i * 100) / 100, s.scrollSpeed + s.scrollSpeed * Math.floor(Math.abs(u[1] - l) / r * 100) / 100];
                return Math.max.apply(Math, o)
            },
            _callbacks: function (e) {
                if (s) switch (this[_] = {
                    trigger: r,
                    clicked: o,
                    target: c,
                    scrollTo: {
                        y: u[0],
                        x: u[1]
                    }
                }, e) {
                case "onStart":
                    s.onStart.call(null, this[_]);
                    break;
                case "onComplete":
                    s.onComplete.call(null, this[_])
                }
            },
            _reset: function () {
                g = h = f = !1
            },
            _isInit: function () {
                i || I.init.apply(this)
            },
            _live: function () {
                d = setTimeout(function () {
                    s.live ? e(O._highlightSelector()).length !== m && O._setup.call(null) : d && clearTimeout(d), O._live.call(null)
                }, 1e3)
            },
            _easing: function () {
                e.easing.easeInQuad = e.easing.easeInQuad || function (e, t, a, n, l) {
                    return n * (t /= l) * t + a
                }, e.easing.easeOutQuad = e.easing.easeOutQuad || function (e, t, a, n, l) {
                    return -n * (t /= l) * (t - 2) + a
                }, e.easing.easeInOutQuad = e.easing.easeInOutQuad || function (e, t, a, n, l) {
                    return (t /= l / 2) < 1 ? n / 2 * t * t + a : -n / 2 * (--t * (t - 2) - 1) + a
                }, e.easing.easeInCubic = e.easing.easeInCubic || function (e, t, a, n, l) {
                    return n * (t /= l) * t * t + a
                }, e.easing.easeOutCubic = e.easing.easeOutCubic || function (e, t, a, n, l) {
                    return n * ((t = t / l - 1) * t * t + 1) + a
                }, e.easing.easeInOutCubic = e.easing.easeInOutCubic || function (e, t, a, n, l) {
                    return (t /= l / 2) < 1 ? n / 2 * t * t * t + a : n / 2 * ((t -= 2) * t * t + 2) + a
                }, e.easing.easeInQuart = e.easing.easeInQuart || function (e, t, a, n, l) {
                    return n * (t /= l) * t * t * t + a
                }, e.easing.easeOutQuart = e.easing.easeOutQuart || function (e, t, a, n, l) {
                    return -n * ((t = t / l - 1) * t * t * t - 1) + a
                }, e.easing.easeInOutQuart = e.easing.easeInOutQuart || function (e, t, a, n, l) {
                    return (t /= l / 2) < 1 ? n / 2 * t * t * t * t + a : -n / 2 * ((t -= 2) * t * t * t - 2) + a
                }, e.easing.easeInQuint = e.easing.easeInQuint || function (e, t, a, n, l) {
                    return n * (t /= l) * t * t * t * t + a
                }, e.easing.easeOutQuint = e.easing.easeOutQuint || function (e, t, a, n, l) {
                    return n * ((t = t / l - 1) * t * t * t * t + 1) + a
                }, e.easing.easeInOutQuint = e.easing.easeInOutQuint || function (e, t, a, n, l) {
                    return (t /= l / 2) < 1 ? n / 2 * t * t * t * t * t + a : n / 2 * ((t -= 2) * t * t * t * t + 2) + a
                }, e.easing.easeInExpo = e.easing.easeInExpo || function (e, t, a, n, l) {
                    return 0 == t ? a : n * Math.pow(2, 10 * (t / l - 1)) + a
                }, e.easing.easeOutExpo = e.easing.easeOutExpo || function (e, t, a, n, l) {
                    return t == l ? a + n : n * (-Math.pow(2, -10 * t / l) + 1) + a
                }, e.easing.easeInOutExpo = e.easing.easeInOutExpo || function (e, t, a, n, l) {
                    return 0 == t ? a : t == l ? a + n : (t /= l / 2) < 1 ? n / 2 * Math.pow(2, 10 * (t - 1)) + a : n / 2 * (-Math.pow(2, -10 * --t) + 2) + a
                }, e.easing.easeInSine = e.easing.easeInSine || function (e, t, a, n, l) {
                    return -n * Math.cos(t / l * (Math.PI / 2)) + n + a
                }, e.easing.easeOutSine = e.easing.easeOutSine || function (e, t, a, n, l) {
                    return n * Math.sin(t / l * (Math.PI / 2)) + a
                }, e.easing.easeInOutSine = e.easing.easeInOutSine || function (e, t, a, n, l) {
                    return -n / 2 * (Math.cos(Math.PI * t / l) - 1) + a
                }, e.easing.easeInCirc = e.easing.easeInCirc || function (e, t, a, n, l) {
                    return -n * (Math.sqrt(1 - (t /= l) * t) - 1) + a
                }, e.easing.easeOutCirc = e.easing.easeOutCirc || function (e, t, a, n, l) {
                    return n * Math.sqrt(1 - (t = t / l - 1) * t) + a
                }, e.easing.easeInOutCirc = e.easing.easeInOutCirc || function (e, t, a, n, l) {
                    return (t /= l / 2) < 1 ? -n / 2 * (Math.sqrt(1 - t * t) - 1) + a : n / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + a
                }, e.easing.easeInElastic = e.easing.easeInElastic || function (e, t, a, n, l) {
                    var s = 1.70158,
                        i = 0,
                        r = n;
                    if (0 == t) return a;
                    if (1 == (t /= l)) return a + n;
                    if (i || (i = .3 * l), r < Math.abs(n)) {
                        r = n;
                        var s = i / 4
                    } else var s = i / (2 * Math.PI) * Math.asin(n / r);
                    return -(r * Math.pow(2, 10 * (t -= 1)) * Math.sin(2 * (t * l - s) * Math.PI / i)) + a
                }, e.easing.easeOutElastic = e.easing.easeOutElastic || function (e, t, a, n, l) {
                    var s = 1.70158,
                        i = 0,
                        r = n;
                    if (0 == t) return a;
                    if (1 == (t /= l)) return a + n;
                    if (i || (i = .3 * l), r < Math.abs(n)) {
                        r = n;
                        var s = i / 4
                    } else var s = i / (2 * Math.PI) * Math.asin(n / r);
                    return r * Math.pow(2, -10 * t) * Math.sin(2 * (t * l - s) * Math.PI / i) + n + a
                }, e.easing.easeInOutElastic = e.easing.easeInOutElastic || function (e, t, a, n, l) {
                    var s = 1.70158,
                        i = 0,
                        r = n;
                    if (0 == t) return a;
                    if (2 == (t /= l / 2)) return a + n;
                    if (i || (i = .3 * l * 1.5), r < Math.abs(n)) {
                        r = n;
                        var s = i / 4
                    } else var s = i / (2 * Math.PI) * Math.asin(n / r);
                    return 1 > t ? -.5 * r * Math.pow(2, 10 * (t -= 1)) * Math.sin(2 * (t * l - s) * Math.PI / i) + a : r * Math.pow(2, -10 * (t -= 1)) * Math.sin(2 * (t * l - s) * Math.PI / i) * .5 + n + a
                }, e.easing.easeInBack = e.easing.easeInBack || function (e, t, a, l, s, i) {
                    return i == n && (i = 1.70158), l * (t /= s) * t * ((i + 1) * t - i) + a
                }, e.easing.easeOutBack = e.easing.easeOutBack || function (e, t, a, l, s, i) {
                    return i == n && (i = 1.70158), l * ((t = t / s - 1) * t * ((i + 1) * t + i) + 1) + a
                }, e.easing.easeInOutBack = e.easing.easeInOutBack || function (e, t, a, l, s, i) {
                    return i == n && (i = 1.70158), (t /= s / 2) < 1 ? l / 2 * t * t * (((i *= 1.525) + 1) * t - i) + a : l / 2 * ((t -= 2) * t * (((i *= 1.525) + 1) * t + i) + 2) + a
                }, e.easing.easeInBounce = e.easing.easeInBounce || function (t, a, n, l, s) {
                    return l - e.easing.easeOutBounce(t, s - a, 0, l, s) + n
                }, e.easing.easeOutBounce = e.easing.easeOutBounce || function (e, t, a, n, l) {
                    return (t /= l) < 1 / 2.75 ? 7.5625 * n * t * t + a : 2 / 2.75 > t ? n * (7.5625 * (t -= 1.5 / 2.75) * t + .75) + a : 2.5 / 2.75 > t ? n * (7.5625 * (t -= 2.25 / 2.75) * t + .9375) + a : n * (7.5625 * (t -= 2.625 / 2.75) * t + .984375) + a
                }, e.easing.easeInOutBounce = e.easing.easeInOutBounce || function (t, a, n, l, s) {
                    return s / 2 > a ? .5 * e.easing.easeInBounce(t, 2 * a, 0, l, s) + n : .5 * e.easing.easeOutBounce(t, 2 * a - s, 0, l, s) + .5 * l + n
                }
            }
        };
    O._easing.call(), e.fn[p] = function (t) {
        return I[t] ? I[t].apply(this, Array.prototype.slice.call(arguments, 1)) : "object" != typeof t && t ? void e.error("Method " + t + " does not exist") : I.init.apply(this, arguments)
    }, e[p] = function (t) {
        return I[t] ? I[t].apply(this, Array.prototype.slice.call(arguments, 1)) : "object" != typeof t && t ? void e.error("Method " + t + " does not exist") : I.init.apply(this, arguments)
    }, e[p].defaults = v
}(jQuery, window, document);