(function () {
    var h = void 0,
        i = null,
        o, p = this;

    function aa(a, b) {
        var c = a.split("."),
            d = p;
        !(c[0] in d) && d.execScript && d.execScript("var " + c[0]);
        for (var f; c.length && (f = c.shift());)!c.length && b !== h ? d[f] = b : d = d[f] ? d[f] : d[f] = {}
    }
    function ba() {}

    function da(a) {
        var b = typeof a;
        if (b == "object") if (a) {
            if (a instanceof Array) return "array";
            else if (a instanceof Object) return b;
            var c = Object.prototype.toString.call(a);
            if (c == "[object Window]") return "object";
            if (c == "[object Array]" || typeof a.length == "number" && typeof a.splice != "undefined" && typeof a.propertyIsEnumerable != "undefined" && !a.propertyIsEnumerable("splice")) return "array";
            if (c == "[object Function]" || typeof a.call != "undefined" && typeof a.propertyIsEnumerable != "undefined" && !a.propertyIsEnumerable("call")) return "function"
        } else return "null";
        else if (b == "function" && typeof a.call == "undefined") return "object";
        return b
    }
    function ea(a) {
        return da(a) == "array"
    }
    function fa(a) {
        var b = da(a);
        return b == "array" || b == "object" && typeof a.length == "number"
    }
    function q(a) {
        return typeof a == "string"
    }
    function ga(a) {
        return da(a) == "function"
    }
    function ha(a) {
        a = da(a);
        return a == "object" || a == "array" || a == "function"
    }
    function r(a) {
        return a[ia] || (a[ia] = ++ja)
    }
    var ia = "closure_uid_" + Math.floor(Math.random() * 2147483648).toString(36),
        ja = 0,
        ka = Date.now ||
    function () {
        return +new Date
    };

    function s(a, b) {
        function c() {}
        c.prototype = b.prototype;
        a.s = b.prototype;
        a.prototype = new c
    };

    function la(a) {
        if (!ma.test(a)) return a;
        a.indexOf("&") != -1 && (a = a.replace(na, "&amp;"));
        a.indexOf("<") != -1 && (a = a.replace(oa, "&lt;"));
        a.indexOf(">") != -1 && (a = a.replace(pa, "&gt;"));
        a.indexOf('"') != -1 && (a = a.replace(qa, "&quot;"));
        return a
    }
    var na = /&/g,
        oa = /</g,
        pa = />/g,
        qa = /\"/g,
        ma = /[&<>\"]/;

    function t(a) {
        var a = String(a),
            b = a.indexOf(".");
        if (b == -1) b = a.length;
        return Array(Math.max(0, 2 - b) + 1).join("0") + a
    }

    function ra(a, b) {
        for (var c = 0, d = String(a).replace(/^[\s\xa0]+|[\s\xa0]+$/g, "").split("."), f = String(b).replace(/^[\s\xa0]+|[\s\xa0]+$/g, "").split("."), e = Math.max(d.length, f.length), g = 0; c == 0 && g < e; g++) {
            var j = d[g] || "",
                l = f[g] || "",
                m = RegExp("(\\d*)(\\D*)", "g"),
                ca = RegExp("(\\d*)(\\D*)", "g");
            do {
                var n = m.exec(j) || ["", "", ""],
                    H = ca.exec(l) || ["", "", ""];
                if (n[0].length == 0 && H[0].length == 0) break;
                c = sa(n[1].length == 0 ? 0 : parseInt(n[1], 10), H[1].length == 0 ? 0 : parseInt(H[1], 10)) || sa(n[2].length == 0, H[2].length == 0) || sa(n[2], H[2])
            } while (c == 0)
        }
        return c
    }
    function sa(a, b) {
        if (a < b) return -1;
        else if (a > b) return 1;
        return 0
    };

    function ta(a, b, c) {
        typeof a == "number" ? (this.b = new Date(a, b || 0, c || 1), ua(this, c || 1)) : ha(a) ? (this.b = new Date(a.getFullYear(), a.getMonth(), a.getDate()), ua(this, a.getDate())) : (this.b = new Date, this.b.setHours(0), this.b.setMinutes(0), this.b.setSeconds(0), this.b.setMilliseconds(0))
    }
    o = ta.prototype;
    o.getFullYear = function () {
        return this.b.getFullYear()
    };
    o.getMonth = function () {
        return this.b.getMonth()
    };
    o.getDate = function () {
        return this.b.getDate()
    };
    o.getTime = function () {
        return this.b.getTime()
    };
    o.getUTCFullYear = function () {
        return this.b.getUTCFullYear()
    };
    o.getUTCMonth = function () {
        return this.b.getUTCMonth()
    };
    o.getUTCDate = function () {
        return this.b.getUTCDate()
    };
    o.getUTCHours = function () {
        return this.b.getUTCHours()
    };
    o.getUTCMinutes = function () {
        return this.b.getUTCMinutes()
    };
    o.getTimezoneOffset = function () {
        return this.b.getTimezoneOffset()
    };

    function va(a) {
        a = a.getTimezoneOffset();
        if (a == 0) a = "Z";
        else var b = Math.abs(a) / 60,
            c = Math.floor(b),
            a = (a > 0 ? "-" : "+") + t(c) + ":" + t((b - c) * 60);
        return a
    }
    o.N = function (a, b) {
        return [this.getFullYear(), t(this.getMonth() + 1), t(this.getDate())].join(a ? "-" : "") + (b ? va(this) : "")
    };
    o.toString = function () {
        return this.N()
    };

    function ua(a, b) {
        a.getDate() != b && a.b.setUTCHours(a.b.getUTCHours() + (a.getDate() < b ? 1 : -1))
    }
    o.valueOf = function () {
        return this.b.valueOf()
    };

    function u(a, b, c, d, f, e, g) {
        this.b = typeof a == "number" ? new Date(a, b || 0, c || 1, d || 0, f || 0, e || 0, g || 0) : new Date(a ? a.getTime() : ka())
    }
    s(u, ta);
    o = u.prototype;
    o.getHours = function () {
        return this.b.getHours()
    };
    o.getMinutes = function () {
        return this.b.getMinutes()
    };
    o.getSeconds = function () {
        return this.b.getSeconds()
    };
    o.getUTCHours = function () {
        return this.b.getUTCHours()
    };
    o.getUTCMinutes = function () {
        return this.b.getUTCMinutes()
    };
    o.getUTCSeconds = function () {
        return this.b.getUTCSeconds()
    };
    o.setHours = function (a) {
        this.b.setHours(a)
    };
    o.setMinutes = function (a) {
        this.b.setMinutes(a)
    };
    o.setSeconds = function (a) {
        this.b.setSeconds(a)
    };
    o.setMilliseconds = function (a) {
        this.b.setMilliseconds(a)
    };
    o.setUTCHours = function (a) {
        this.b.setUTCHours(a)
    };
    o.setUTCMinutes = function (a) {
        this.b.setUTCMinutes(a)
    };
    o.setUTCSeconds = function (a) {
        this.b.setUTCSeconds(a)
    };
    o.setUTCMilliseconds = function (a) {
        this.b.setUTCMilliseconds(a)
    };
    o.N = function (a, b) {
        var c = ta.prototype.N.call(this, a);
        return a ? c + " " + t(this.getHours()) + ":" + t(this.getMinutes()) + ":" + t(this.getSeconds()) + (b ? va(this) : "") : c + "T" + t(this.getHours()) + t(this.getMinutes()) + t(this.getSeconds()) + (b ? va(this) : "")
    };
    o.toString = function () {
        return this.N()
    };

    function wa(a, b, c, d, f, e, g) {
        a = typeof a == "number" ? Date.UTC(a, b || 0, c || 1, d || 0, f || 0, e || 0, g || 0) : a ? a.getTime() : ka();
        this.b = new Date(a)
    }
    s(wa, u);
    o = wa.prototype;
    o.getTimezoneOffset = function () {
        return 0
    };
    o.getFullYear = u.prototype.getUTCFullYear;
    o.getMonth = u.prototype.getUTCMonth;
    o.getDate = u.prototype.getUTCDate;
    o.getHours = u.prototype.getUTCHours;
    o.getMinutes = u.prototype.getUTCMinutes;
    o.getSeconds = u.prototype.getUTCSeconds;
    o.setHours = u.prototype.setUTCHours;
    o.setMinutes = u.prototype.setUTCMinutes;
    o.setSeconds = u.prototype.setUTCSeconds;
    o.setMilliseconds = u.prototype.setUTCMilliseconds;
    var v = Array.prototype,
        xa = v.indexOf ?
    function (a, b, c) {
        return v.indexOf.call(a, b, c)
    } : function (a, b, c) {
        c = c == i ? 0 : c < 0 ? Math.max(0, a.length + c) : c;
        if (q(a)) return !q(b) || b.length != 1 ? -1 : a.indexOf(b, c);
        for (; c < a.length; c++) if (c in a && a[c] === b) return c;
        return -1
    }, ya = v.forEach ?
    function (a, b, c) {
        v.forEach.call(a, b, c)
    } : function (a, b, c) {
        for (var d = a.length, f = q(a) ? a.split("") : a, e = 0; e < d; e++) e in f && b.call(c, f[e], e, a)
    };

    function za(a) {
        return v.concat.apply(v, arguments)
    }

    function Aa(a) {
        if (ea(a)) return za(a);
        else {
            for (var b = [], c = 0, d = a.length; c < d; c++) b[c] = a[c];
            return b
        }
    }
    function Ba(a, b, c, d) {
        v.splice.apply(a, Ca(arguments, 1))
    }
    function Ca(a, b, c) {
        return arguments.length <= 2 ? v.slice.call(a, b) : v.slice.call(a, b, c)
    };
    var Da, Ea, Fa, Ga;

    function Ha() {
        return p.navigator ? p.navigator.userAgent : i
    }
    Ga = Fa = Ea = Da = !1;
    var Ia;
    if (Ia = Ha()) {
        var Ja = p.navigator;
        Da = Ia.indexOf("Opera") == 0;
        Ea = !Da && Ia.indexOf("MSIE") != -1;
        Fa = !Da && Ia.indexOf("WebKit") != -1;
        Ga = !Da && !Fa && Ja.product == "Gecko"
    }
    var w = Ea,
        Ka = Ga,
        La = Fa,
        Ma = p.navigator,
        Na = (Ma && Ma.platform || "").indexOf("Mac") != -1,
        Oa;
    a: {
        var Pa = "",
            Qa;
        if (Da && p.opera) var Ra = p.opera.version,
            Pa = typeof Ra == "function" ? Ra() : Ra;
        else if (Ka ? Qa = /rv\:([^\);]+)(\)|;)/ : w ? Qa = /MSIE\s+([^\);]+)(\)|;)/ : La && (Qa = /WebKit\/(\S+)/), Qa) var Sa = Qa.exec(Ha()),
            Pa = Sa ? Sa[1] : "";
        if (w) {
            var Ta, Ua = p.document;
            Ta = Ua ? Ua.documentMode : h;
            if (Ta > parseFloat(Pa)) {
                Oa = String(Ta);
                break a
            }
        }
        Oa = Pa
    }
    var Va = {};

    function x(a) {
        return Va[a] || (Va[a] = ra(Oa, a) >= 0)
    };
    var Wa = !w || x("9");
    !Ka && !w || w && x("9") || Ka && x("1.9.1");
    w && x("9");

    function Xa(a) {
        return (a = a.className) && typeof a.split == "function" ? a.split(/\s+/) : []
    }
    function Ya(a, b) {
        var c = Xa(a),
            d = Ca(arguments, 1),
            f;
        f = c;
        for (var e = 0, g = 0; g < d.length; g++) xa(f, d[g]) >= 0 || (f.push(d[g]), e++);
        f = e == d.length;
        a.className = c.join(" ");
        return f
    }
    function Za(a, b) {
        for (var c = Xa(a), d = Ca(arguments, 1), f = c, e = 0, g = 0; g < f.length; g++) xa(d, f[g]) >= 0 && (Ba(f, g--, 1), e++);
        a.className = c.join(" ")
    };

    function $a(a, b) {
        for (var c in a) b.call(h, a[c], c, a)
    }
    function ab() {
        var a = bb,
            b;
        for (b in a) return !1;
        return !0
    }
    var cb = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"];

    function db(a, b) {
        for (var c, d, f = 1; f < arguments.length; f++) {
            d = arguments[f];
            for (c in d) a[c] = d[c];
            for (var e = 0; e < cb.length; e++) c = cb[e], Object.prototype.hasOwnProperty.call(d, c) && (a[c] = d[c])
        }
    };

    function y(a) {
        return q(a) ? document.getElementById(a) : a
    }
    function z(a, b) {
        return eb(a, b, h)
    }
    function fb(a, b) {
        var c = b || document;
        if (gb(c)) return c.querySelectorAll("." + a);
        else if (c.getElementsByClassName) return c.getElementsByClassName(a);
        return eb("*", a, b)
    }
    function hb(a, b) {
        var c = b || document,
            d = i;
        return (d = gb(c) ? c.querySelector("." + a) : fb(a, b)[0]) || i
    }
    function gb(a) {
        return a.querySelectorAll && a.querySelector && (!La || document.compatMode == "CSS1Compat" || x("528"))
    }

    function eb(a, b, c) {
        c = c || document;
        a = a && a != "*" ? a.toUpperCase() : "";
        if (gb(c) && (a || b)) return c.querySelectorAll(a + (b ? "." + b : ""));
        if (b && c.getElementsByClassName) if (c = c.getElementsByClassName(b), a) {
            for (var d = {}, f = 0, e = 0, g; g = c[e]; e++) a == g.nodeName && (d[f++] = g);
            d.length = f;
            return d
        } else return c;
        c = c.getElementsByTagName(a || "*");
        if (b) {
            d = {};
            for (e = f = 0; g = c[e]; e++) a = g.className, typeof a.split == "function" && xa(a.split(/\s+/), b) >= 0 && (d[f++] = g);
            d.length = f;
            return d
        } else return c
    }

    function ib(a, b) {
        $a(b, function (b, d) {
            d == "style" ? a.style.cssText = b : d == "class" ? a.className = b : d == "for" ? a.htmlFor = b : d in jb ? a.setAttribute(jb[d], b) : a[d] = b
        })
    }
    var jb = {
        cellpadding: "cellPadding",
        cellspacing: "cellSpacing",
        colspan: "colSpan",
        rowspan: "rowSpan",
        valign: "vAlign",
        height: "height",
        width: "width",
        usemap: "useMap",
        frameborder: "frameBorder",
        maxlength: "maxLength",
        type: "type"
    };

    function A(a, b, c) {
        var d = arguments,
            f = document,
            e = d[0],
            g = d[1];
        if (!Wa && g && (g.name || g.type)) {
            e = ["<", e];
            g.name && e.push(' name="', la(g.name), '"');
            if (g.type) {
                e.push(' type="', la(g.type), '"');
                var j = {};
                db(j, g);
                g = j;
                delete g.type
            }
            e.push(">");
            e = e.join("")
        }
        e = f.createElement(e);
        if (g) q(g) ? e.className = g : ea(g) ? Ya.apply(i, [e].concat(g)) : ib(e, g);
        d.length > 2 && kb(f, e, d, 2);
        return e
    }

    function kb(a, b, c, d) {
        function f(c) {
            c && b.appendChild(q(c) ? a.createTextNode(c) : c)
        }
        for (; d < c.length; d++) {
            var e = c[d];
            fa(e) && !(ha(e) && e.nodeType > 0) ? ya(lb(e) ? Aa(e) : e, f) : f(e)
        }
    }
    function mb(a, b) {
        kb(a.nodeType == 9 ? a : a.ownerDocument || a.document, a, arguments, 1)
    }
    function B(a) {
        a && a.parentNode && a.parentNode.removeChild(a)
    }
    function nb(a) {
        return a.previousElementSibling != h ? a.previousElementSibling : ob(a.previousSibling, !1)
    }
    function ob(a, b) {
        for (; a && a.nodeType != 1;) a = b ? a.nextSibling : a.previousSibling;
        return a
    }

    function lb(a) {
        if (a && typeof a.length == "number") if (ha(a)) return typeof a.item == "function" || typeof a.item == "string";
        else if (ga(a)) return typeof a.item == "function";
        return !1
    }
    function pb(a) {
        return qb(a, function (a) {
            return xa(Xa(a), "arrow-nav") >= 0
        })
    }
    function qb(a, b) {
        for (var c = 0; a;) {
            if (b(a)) return a;
            a = a.parentNode;
            c++
        }
        return i
    };
    var rb;
    !w || x("9");
    var sb = w && !x("8");

    function tb() {}
    tb.prototype.aa = !1;
    tb.prototype.J = function () {
        if (!this.aa) this.aa = !0, this.m()
    };
    tb.prototype.m = function () {};

    function C(a, b) {
        this.type = a;
        this.currentTarget = this.target = b
    }
    s(C, tb);
    o = C.prototype;
    o.m = function () {
        delete this.type;
        delete this.target;
        delete this.currentTarget
    };
    o.B = !1;
    o.H = !0;
    o.stopPropagation = function () {
        this.B = !0
    };
    o.preventDefault = function () {
        this.H = !1
    };
    var ub = new Function("a", "return a");

    function D(a, b) {
        a && this.K(a, b)
    }
    s(D, C);
    o = D.prototype;
    o.target = i;
    o.relatedTarget = i;
    o.offsetX = 0;
    o.offsetY = 0;
    o.clientX = 0;
    o.clientY = 0;
    o.screenX = 0;
    o.screenY = 0;
    o.button = 0;
    o.keyCode = 0;
    o.charCode = 0;
    o.ctrlKey = !1;
    o.altKey = !1;
    o.shiftKey = !1;
    o.metaKey = !1;
    o.qa = !1;
    o.C = i;
    o.K = function (a, b) {
        var c = this.type = a.type;
        C.call(this, c);
        this.target = a.target || a.srcElement;
        this.currentTarget = b;
        var d = a.relatedTarget;
        if (d) {
            if (Ka) {
                var f;
                a: {
                    try {
                        ub(d.nodeName);
                        f = !0;
                        break a
                    } catch (e) {}
                    f = !1
                }
                f || (d = i)
            }
        } else if (c == "mouseover") d = a.fromElement;
        else if (c == "mouseout") d = a.toElement;
        this.relatedTarget = d;
        this.offsetX = a.offsetX !== h ? a.offsetX : a.layerX;
        this.offsetY = a.offsetY !== h ? a.offsetY : a.layerY;
        this.clientX = a.clientX !== h ? a.clientX : a.pageX;
        this.clientY = a.clientY !== h ? a.clientY : a.pageY;
        this.screenX = a.screenX || 0;
        this.screenY = a.screenY || 0;
        this.button = a.button;
        this.keyCode = a.keyCode || 0;
        this.charCode = a.charCode || (c == "keypress" ? a.keyCode : 0);
        this.ctrlKey = a.ctrlKey;
        this.altKey = a.altKey;
        this.shiftKey = a.shiftKey;
        this.metaKey = a.metaKey;
        this.qa = Na ? a.metaKey : a.ctrlKey;
        this.state = a.state;
        this.C = a;
        delete this.H;
        delete this.B
    };
    o.stopPropagation = function () {
        D.s.stopPropagation.call(this);
        this.C.stopPropagation ? this.C.stopPropagation() : this.C.cancelBubble = !0
    };
    o.preventDefault = function () {
        D.s.preventDefault.call(this);
        var a = this.C;
        if (a.preventDefault) a.preventDefault();
        else if (a.returnValue = !1, sb) try {
            if (a.ctrlKey || a.keyCode >= 112 && a.keyCode <= 123) a.keyCode = -1
        } catch (b) {}
    };
    o.m = function () {
        D.s.m.call(this);
        this.relatedTarget = this.currentTarget = this.target = this.C = i
    };

    function vb() {}
    var wb = 0;
    o = vb.prototype;
    o.key = 0;
    o.D = !1;
    o.W = !1;
    o.K = function (a, b, c, d, f, e) {
        if (ga(a)) this.ea = !0;
        else if (a && a.handleEvent && ga(a.handleEvent)) this.ea = !1;
        else throw Error("Invalid listener argument");
        this.G = a;
        this.ha = b;
        this.src = c;
        this.type = d;
        this.capture = !! f;
        this.P = e;
        this.W = !1;
        this.key = ++wb;
        this.D = !1
    };
    o.handleEvent = function (a) {
        return this.ea ? this.G.call(this.P || this.src, a) : this.G.handleEvent.call(this.G, a)
    };

    function E(a, b) {
        this.fa = b;
        this.z = [];
        if (a > this.fa) throw Error("[goog.structs.SimplePool] Initial cannot be greater than max");
        for (var c = 0; c < a; c++) this.z.push(this.o ? this.o() : {})
    }
    s(E, tb);
    E.prototype.o = i;
    E.prototype.$ = i;
    E.prototype.getObject = function () {
        return this.z.length ? this.z.pop() : this.o ? this.o() : {}
    };

    function xb(a, b) {
        a.z.length < a.fa ? a.z.push(b) : yb(a, b)
    }
    function yb(a, b) {
        if (a.$) a.$(b);
        else if (ha(b)) if (ga(b.J)) b.J();
        else for (var c in b) delete b[c]
    }
    E.prototype.m = function () {
        E.s.m.call(this);
        for (var a = this.z; a.length;) yb(this, a.pop());
        delete this.z
    };
    var zb, Ab = (zb = "ScriptEngine" in p && p.ScriptEngine() == "JScript") ? p.ScriptEngineMajorVersion() + "." + p.ScriptEngineMinorVersion() + "." + p.ScriptEngineBuildVersion() : "0";
    var Bb, Cb, Db, Eb, Fb, Gb, Hb, Ib, Jb, Kb, Lb;
    (function () {
        function a() {
            return {
                l: 0,
                j: 0
            }
        }
        function b() {
            return []
        }
        function c() {
            function a(b) {
                return g.call(a.src, a.key, b)
            }
            return a
        }
        function d() {
            return new vb
        }
        function f() {
            return new D
        }
        var e = zb && !(ra(Ab, "5.7") >= 0),
            g;
        Gb = function (a) {
            g = a
        };
        if (e) {
            Bb = function () {
                return j.getObject()
            };
            Cb = function (a) {
                xb(j, a)
            };
            Db = function () {
                return l.getObject()
            };
            Eb = function (a) {
                xb(l, a)
            };
            Fb = function () {
                return m.getObject()
            };
            Hb = function () {
                xb(m, c())
            };
            Ib = function () {
                return ca.getObject()
            };
            Jb = function (a) {
                xb(ca, a)
            };
            Kb = function () {
                return n.getObject()
            };
            Lb = function (a) {
                xb(n, a)
            };
            var j = new E(0, 600);
            j.o = a;
            var l = new E(0, 600);
            l.o = b;
            var m = new E(0, 600);
            m.o = c;
            var ca = new E(0, 600);
            ca.o = d;
            var n = new E(0, 600);
            n.o = f
        } else Bb = a, Cb = ba, Db = b, Eb = ba, Fb = c, Hb = ba, Ib = d, Jb = ba, Kb = f, Lb = ba
    })();
    var Mb = {},
        F = {},
        G = {},
        Nb = {};

    function I(a, b, c, d, f) {
        if (b) if (ea(b)) for (var e = 0; e < b.length; e++) I(a, b[e], c, d, f);
        else {
            var d = !! d,
                g = F;
            b in g || (g[b] = Bb());
            g = g[b];
            d in g || (g[d] = Bb(), g.l++);
            var g = g[d],
                j = r(a),
                l;
            g.j++;
            if (g[j]) {
                l = g[j];
                for (e = 0; e < l.length; e++) if (g = l[e], g.G == c && g.P == f) {
                    if (g.D) break;
                    return
                }
            } else l = g[j] = Db(), g.l++;
            e = Fb();
            e.src = a;
            g = Ib();
            g.K(c, e, a, b, d, f);
            c = g.key;
            e.key = c;
            l.push(g);
            Mb[c] = g;
            G[j] || (G[j] = Db());
            G[j].push(g);
            a.addEventListener ? (a == p || !a.Y) && a.addEventListener(b, e, d) : a.attachEvent(b in Nb ? Nb[b] : Nb[b] = "on" + b, e)
        } else throw Error("Invalid event type");
    }
    function Ob(a, b, c, d, f) {
        if (ea(b)) for (var e = 0; e < b.length; e++) Ob(a, b[e], c, d, f);
        else {
            d = !! d;
            a: {
                e = F;
                if (b in e && (e = e[b], d in e && (e = e[d], a = r(a), e[a]))) {
                    a = e[a];
                    break a
                }
                a = i
            }
            if (a) for (e = 0; e < a.length; e++) if (a[e].G == c && a[e].capture == d && a[e].P == f) {
                Pb(a[e].key);
                break
            }
        }
    }

    function Pb(a) {
        if (Mb[a]) {
            var b = Mb[a];
            if (!b.D) {
                var c = b.src,
                    d = b.type,
                    f = b.ha,
                    e = b.capture;
                c.removeEventListener ? (c == p || !c.Y) && c.removeEventListener(d, f, e) : c.detachEvent && c.detachEvent(d in Nb ? Nb[d] : Nb[d] = "on" + d, f);
                c = r(c);
                f = F[d][e][c];
                if (G[c]) {
                    var g = G[c],
                        j = xa(g, b);
                    j >= 0 && v.splice.call(g, j, 1);
                    g.length == 0 && delete G[c]
                }
                b.D = !0;
                f.ga = !0;
                Qb(d, e, c, f);
                delete Mb[a]
            }
        }
    }

    function Qb(a, b, c, d) {
        if (!d.L && d.ga) {
            for (var f = 0, e = 0; f < d.length; f++) if (d[f].D) {
                var g = d[f].ha;
                g.src = i;
                Hb(g);
                Jb(d[f])
            } else f != e && (d[e] = d[f]), e++;
            d.length = e;
            d.ga = !1;
            e == 0 && (Eb(d), delete F[a][b][c], F[a][b].l--, F[a][b].l == 0 && (Cb(F[a][b]), delete F[a][b], F[a].l--), F[a].l == 0 && (Cb(F[a]), delete F[a]))
        }
    }

    function Rb(a) {
        var b, c = 0,
            d = b == i;
        b = !! b;
        if (a == i) $a(G, function (a) {
            for (var e = a.length - 1; e >= 0; e--) {
                var f = a[e];
                if (d || b == f.capture) Pb(f.key), c++
            }
        });
        else if (a = r(a), G[a]) for (var a = G[a], f = a.length - 1; f >= 0; f--) {
            var e = a[f];
            if (d || b == e.capture) Pb(e.key), c++
        }
    }
    function Sb(a, b, c, d, f) {
        var e = 1,
            b = r(b);
        if (a[b]) {
            a.j--;
            a = a[b];
            a.L ? a.L++ : a.L = 1;
            try {
                for (var g = a.length, j = 0; j < g; j++) {
                    var l = a[j];
                    l && !l.D && (e &= Tb(l, f) !== !1)
                }
            } finally {
                a.L--, Qb(c, d, b, a)
            }
        }
        return Boolean(e)
    }

    function Tb(a, b) {
        var c = a.handleEvent(b);
        a.W && Pb(a.key);
        return c
    }
    Gb(function (a, b) {
        if (!Mb[a]) return !0;
        var c = Mb[a],
            d = c.type,
            f = F;
        if (!(d in f)) return !0;
        var f = f[d],
            e, g;
        rb === h && (rb = w && !p.addEventListener);
        if (rb) {
            var j;
            if (!(j = b)) a: {
                j = "window.event".split(".");
                for (var l = p; e = j.shift();) if (l[e] != i) l = l[e];
                else {
                    j = i;
                    break a
                }
                j = l
            }
            e = j;
            j = !0 in f;
            l = !1 in f;
            if (j) {
                if (e.keyCode < 0 || e.returnValue != h) return !0;
                a: {
                    var m = !1;
                    if (e.keyCode == 0) try {
                        e.keyCode = -1;
                        break a
                    } catch (ca) {
                        m = !0
                    }
                    if (m || e.returnValue == h) e.returnValue = !0
                }
            }
            m = Kb();
            m.K(e, this);
            e = !0;
            try {
                if (j) {
                    for (var n = Db(), H = m.currentTarget; H; H = H.parentNode) n.push(H);
                    g = f[!0];
                    g.j = g.l;
                    for (var O = n.length - 1; !m.B && O >= 0 && g.j; O--) m.currentTarget = n[O], e &= Sb(g, n[O], d, !0, m);
                    if (l) {
                        g = f[!1];
                        g.j = g.l;
                        for (O = 0; !m.B && O < n.length && g.j; O++) m.currentTarget = n[O], e &= Sb(g, n[O], d, !1, m)
                    }
                } else e = Tb(c, m)
            } finally {
                if (n) n.length = 0, Eb(n);
                m.J();
                Lb(m)
            }
            return e
        }
        d = new D(b, this);
        try {
            e = Tb(c, d)
        } finally {
            d.J()
        }
        return e
    });

    function Ub() {}
    s(Ub, tb);
    o = Ub.prototype;
    o.Y = !0;
    o.U = i;
    o.addEventListener = function (a, b, c, d) {
        I(this, a, b, c, d)
    };
    o.removeEventListener = function (a, b, c, d) {
        Ob(this, a, b, c, d)
    };
    o.dispatchEvent = function (a) {
        var b = a.type || a,
            c = F;
        if (b in c) {
            if (q(a)) a = new C(a, this);
            else if (a instanceof C) a.target = a.target || this;
            else {
                var d = a,
                    a = new C(b, this);
                db(a, d)
            }
            var d = 1,
                f, c = c[b],
                b = !0 in c,
                e;
            if (b) {
                f = [];
                for (e = this; e; e = e.U) f.push(e);
                e = c[!0];
                e.j = e.l;
                for (var g = f.length - 1; !a.B && g >= 0 && e.j; g--) a.currentTarget = f[g], d &= Sb(e, f[g], a.type, !0, a) && a.H != !1
            }
            if (!1 in c) if (e = c[!1], e.j = e.l, b) for (g = 0; !a.B && g < f.length && e.j; g++) a.currentTarget = f[g], d &= Sb(e, f[g], a.type, !1, a) && a.H != !1;
            else for (f = this; !a.B && f && e.j; f = f.U) a.currentTarget = f, d &= Sb(e, f, a.type, !1, a) && a.H != !1;
            a = Boolean(d)
        } else a = !0;
        return a
    };
    o.m = function () {
        Ub.s.m.call(this);
        Rb(this);
        this.U = i
    };
    var Vb = p.window;

    function Wb(a, b, c, d) {
        if (!ea(a) || !ea(b)) throw Error("Start and end parameters must be arrays");
        if (a.length != b.length) throw Error("Start and end points must be the same length");
        this.I = a;
        this.ka = b;
        this.duration = c;
        this.V = d;
        this.coords = []
    }
    s(Wb, Ub);
    var bb = {},
        J = i;

    function Xb() {
        Vb.clearTimeout(J);
        var a = ka(),
            b;
        for (b in bb) Yb(bb[b], a);
        J = ab() ? i : Vb.setTimeout(Xb, 20)
    }
    function Zb(a) {
        a = r(a);
        delete bb[a];
        J && ab() && (Vb.clearTimeout(J), J = i)
    }
    o = Wb.prototype;
    o.n = 0;
    o.ca = 0;
    o.f = 0;
    o.startTime = i;
    o.ba = i;
    o.R = i;
    o.play = function (a) {
        if (a || this.n == 0) this.f = 0, this.coords = this.I;
        else if (this.n == 1) return !1;
        Zb(this);
        this.startTime = ka();
        this.n == -1 && (this.startTime -= this.duration * this.f);
        this.ba = this.startTime + this.duration;
        this.R = this.startTime;
        this.f || this.T();
        K(this, "play");
        this.n == -1 && K(this, "resume");
        this.n = 1;
        a = r(this);
        a in bb || (bb[a] = this);
        J || (J = Vb.setTimeout(Xb, 20));
        Yb(this, this.startTime);
        return !0
    };
    o.stop = function (a) {
        Zb(this);
        this.n = 0;
        if (a) this.f = 1;
        $b(this, this.f);
        K(this, "stop");
        this.M()
    };
    o.m = function () {
        this.n != 0 && this.stop(!1);
        K(this, "destroy");
        Wb.s.m.call(this)
    };

    function Yb(a, b) {
        a.f = (b - a.startTime) / (a.ba - a.startTime);
        if (a.f >= 1) a.f = 1;
        a.ca = 1E3 / (b - a.R);
        a.R = b;
        $b(a, a.f);
        a.f == 1 ? (a.n = 0, Zb(a), K(a, "finish"), a.M()) : a.n == 1 && a.S()
    }
    function $b(a, b) {
        ga(a.V) && (b = a.V(b));
        a.coords = Array(a.I.length);
        for (var c = 0; c < a.I.length; c++) a.coords[c] = (a.ka[c] - a.I[c]) * b + a.I[c]
    }
    o.S = function () {
        K(this, "animate")
    };
    o.T = function () {
        K(this, "begin")
    };
    o.M = function () {
        K(this, "end")
    };

    function K(a, b) {
        a.dispatchEvent(new ac(b, a))
    }
    function ac(a, b) {
        C.call(this, a);
        this.coords = b.coords;
        this.x = b.coords[0];
        this.y = b.coords[1];
        this.va = b.coords[2];
        this.duration = b.duration;
        this.f = b.f;
        this.ua = b.ca;
        this.state = b.n;
        this.ta = b
    }
    s(ac, C);

    function L(a, b, c, d, f) {
        Wb.call(this, b, c, d, f);
        this.element = a
    }
    s(L, Wb);
    L.prototype.O = ba;
    L.prototype.S = function () {
        this.O();
        L.s.S.call(this)
    };
    L.prototype.M = function () {
        this.O();
        L.s.M.call(this)
    };
    L.prototype.T = function () {
        this.O();
        L.s.T.call(this)
    };

    function bc(a, b, c, d, f) {
        if (b.length != 2 || c.length != 2) throw Error("Start and end points must be 2D");
        L.apply(this, arguments)
    }
    s(bc, L);
    bc.prototype.O = function () {
        this.element.scrollLeft = Math.round(this.coords[0]);
        this.element.scrollTop = Math.round(this.coords[1])
    };

    function cc(a) {
        return 1 - Math.pow(1 - a, 3)
    };

    var M, dc, N, ec, fc, P, gc, Q, hc, ic, R, jc, kc, lc, mc, nc, S, oc, T, U, V, W;

    function pc() {
        var a = pb(this),
            a = nb(a),
            b = a.scrollTop;
        (this.nextElementSibling != h ? this.nextElementSibling : ob(this.nextSibling, !0)).className = "down";
        if (b - nc == 0 || b < nc) this.className = "up up-inactive";
        (new bc(a, [0, b], [0, b - nc], 1E3, cc)).play();
        return !1
    }

    function qc() {
        var a = pb(this),
            a = nb(a),
            b = a.scrollTop;
        nb(this).className = "up";
        if (b > a.scrollHeight - this.offsetHeight - (nc * 2 + 30)) this.className = "down down-inactive";
        (new bc(a, [0, b], [0, b + nc], 1E3, cc)).play();
        return !1
    }
    var X = y("experiment-wrapper");

    function rc(a) {
        if (typeof a == "undefined") return a;
        a < 10 && (a = "0" + a);
        return a.toString()
    }
    function sc(a) {
        return rc(Math.round(a))
    }
    function tc(a) {
        return rc(Math.round(a)) + "&deg;C"
    }
    var uc = {};

    function vc(a, b, c, d, f, e) {
        e || (e = (new Date).getTime(), clearTimeout(uc[b.id]));
        var g = (new Date).getTime() - e,
            j = (c + (d - c)) * (1 * Math.sin(g / f * (Math.PI / 2)) + 0);
        j > d || g > f ? b.innerHTML = a(d) : (b.innerHTML = a(j), uc[b.id] = setTimeout(function () {
            vc(a, b, c, d, f, e)
        }, 20))
    }
    var Y = [];

    function wc(a) {
        for (k in a) this[k] = a[k];
        if (!xc) this.F = "images/" + this.g + ".png", this.a = A("canvas", {
            className: "city"
        }), this.a.style.webkitTransform = "rotate(" + this.w + "deg)", this.a.addEventListener("webkitTransitionEnd", yc, !1), this.v = this.a.getContext("2d"), this.c = new Image, M && (this.q += 90), I(this.c, "load", this.Q, !1, this), this.c.src = this.F
    }
    wc.prototype.Q = function () {
        this.a.width = this.c.width;
        this.a.height = this.c.height;
        this.a.style.marginLeft = "-" + this.c.width / 2 + "px";
        this.v.drawImage(this.c, 0, 0, this.c.width, this.c.height);
        this.k.appendChild(this.a);
        this.X && setTimeout(function (a) {
            return function () {
                a.X()
            }
        }(this), 100)
    };
    wc.prototype.rotate = function (a) {
        this.w += a;
        this.a.style.webkitTransform = "rotate(" + this.w + "deg)";
        if (this.i) this.i.style.webkitTransform = "rotate(" + (this.w + this.r) + "deg)";
        Z(this.name + ": " + this.a.style.webkitTransform)
    };

    function zc(a) {
        a = (new wa).getHours() + a.t;
        a < 0 && (a = 24 + a);
        a > 23 && (a -= 24);
        return a
    }
    function Ac(a) {
        var b = zc(a);
        return b > 0 && b >= a.h && b < a.e
    }
    wc.prototype.ma = function () {
        this.i.width = this.A.width;
        this.i.height = this.A.height;
        this.pa.drawImage(this.A, 0, 0, this.A.width, this.A.height);
        this.k.appendChild(this.i);
        setTimeout(function (a) {
            return function () {
                a.i.style.bottom = a.q + "px"
            }
        }(this), 100)
    };

    function Bc(a) {
        return function (b) {
            window.open(a, "pinMap");
            b.preventDefault()
        }
    }
	
    function Pc(a, b) {
        var c = Y[Q];
        c.k = X;
        c.w = a;
        c.X = b;
        N.push(new wc(c));
        if (M) {
            clearTimeout(kc);
            Qc = !0;
            Rc();
            for (var c = 0, d = Sc.length; c < d; c++) Sc[c].rotate()
        }
    }
    function yc(a) {
        a.srcElement.style.webkitTransform.match(/rotate\(\-?60deg\)/) && (Z("rotate complete, removing " + N[0].name), a = N.shift(), B(a.i), B(a.a), ec = !1)
    }
    function Tc() {
        B(V);
        V = i
    }
    function Uc(a) {
        V && setTimeout(function () {
            V.style.webkitTransform = "rotate(" + a + "deg)";
            Z(V.className + ": " + V.style.webkitTransform)
        }, 100)
    }
    function Vc() {
        B(T);
        T = i
    }

    function Wc(a) {
        T && setTimeout(function () {
            T.style.webkitTransform = "rotate(" + a + "deg)";
            Z(T.className + ": " + T.style.webkitTransform)
        }, 100)
    }
    var Xc = [];

    function Yc(a) {
        a.fillStyle = "#9acbee";
        a.beginPath();
        a.moveTo(7.5, 11.41);
        a.lineTo(12.14, 14.63);
        a.lineTo(10.5, 9.23);
        a.lineTo(15, 5.82);
        a.lineTo(9.35, 5.7);
        a.lineTo(7.5, 0.37);
        a.lineTo(5.64, 5.7);
        a.lineTo(0, 5.82);
        a.lineTo(4.5, 9.23);
        a.lineTo(2.86, 14.63);
        a.closePath();
        a.fill()
    }

    function Zc() {
        $c();
        Z("adding stars");
        for (var a = 0; a < 40; a++) {
            var b = A("canvas", {
                className: "star"
            });
            b.width = 15;
            b.height = 15;
            var c = b.getContext("2d");
            Yc(c);
            var d = Math.PI / 180 * Math.random() * 120,
                f = 1500 - Math.random() * 300,
                c = window.innerWidth / 2 + Math.cos(d) * f;
            c > window.innerWidth && (c -= window.innerWidth / 2);
            d = Math.abs(-1E3 + Math.sin(d) * f);
            d > 620 && (d -= d - 650);
            b.style.left = c + "px";
            b.style.bottom = d + "px";
            b.style.webkitTransitionDelay = Math.random() * 1 + "s";
            X.appendChild(b);
            Xc.push(b);
            setTimeout(function (a) {
                return function () {
                    a.style.webkitTransform = "scale(" + (1 - Math.random() * 1) + ")"
                }
            }(b), Math.random() * 1E3)
        }
    }
    function ad() {
        B(this)
    }
    function $c() {
        for (Xc.length && Z("removing stars"); Xc.length > 0;) {
            var a = Xc.shift();
            a.addEventListener("webkitTransitionEnd", ad, !1);
            a.style.webkitTransform = "scale(0)"
        }
    }
    var Ec = [];

    function Fc() {
        B(this)
    }

    function bd(a) {
        for (k in a) this[k] = a[k];
        this.oa = a;
        this.F = "images/" + this.name + ".png";
        this.a = A("canvas", {
            className: "orbiter " + this.name
        });
        I(this.a, "click", this.onclick);
        this.v = this.a.getContext("2d");
        this.c = new Image;
        I(this.c, "load", this.sa, !1, this);
        this.c.src = this.F;
        Z("Spawning " + this.a.className)
    }
    bd.prototype.sa = function () {
        this.a.width = this.c.width;
        this.a.height = this.c.height;
        this.v.drawImage(this.c, 0, 0, this.c.width, this.c.height);
        this.a.addEventListener("webkitTransitionEnd", cd(this));
        X.appendChild(this.a);
        setTimeout(function (a, b) {
            return function () {
                a.style.webkitTransform = "rotate(" + b + "deg)";
                Z(a.className + ": " + a.style.webkitTransform)
            }
        }(this.a, this.ia), 500)
    };

    function cd(a) {
        var b = a.oa;
        return function (a) {
            Z("rotate complete, removing " + b.name);
            B(a.srcElement);
            setTimeout(function () {
                new bd(b)
            }, Math.random() * 2E4)
        }
    }
    var dd = 1,
        Qc = !1;

    function Rc() {
        if (Qc) {
            var a = (dd - 1) * 36;
            dd > 7 ? dd = 1 : dd += 1;
            R.style.backgroundPosition = "-" + a + "px";
            kc = setTimeout(Rc, 100)
        }
    }
    function ed() {
        jc += 144;
        jc > 288 && (jc = 0);
        R.style.backgroundPosition = "-" + jc + "px 0";
        R.style.zIndex = "9960";
        R.style.visibility = "visible";
        R.className = "pop"
    }

    function fd() {
        R.className == "pop" ? (lc = !0, setTimeout(function () {
            R.className = "";
            lc = !1
        }, 700)) : (R.style.zIndex = "10003", M || setTimeout(ed, 2E3 + Math.random() * 1E4))
    }


    function hd(a) {
        Sc.push(new id(a))
    }

    function id(a) {
        for (k in a) this[k] = a[k];
        this.a = A("canvas", {
            className: "cog",
            zIndex: "9999"
        });
        this.a.width = a.scale * 100;
        this.a.height = a.scale * 100;
        this.a.style.marginLeft = this.left + "px";
        this.a.style.bottom = this.bottom - 120 + "px";
        this.a.addEventListener("webkitTransitionEnd", this.stop, !1);
        this.k.appendChild(this.a);
        this.v = this.a.getContext("2d");
        this.w = 0;
        var a = this.v,
            b = this.scale;
        a.fillStyle = this.color;
        a.scale(b, b);
        a.beginPath();
        a.moveTo(88.65, 50);
        a.bezierCurveTo(88.65, 48.47, 88.55, 46.95, 88.38, 45.47);
        a.lineTo(100, 40.74);
        a.lineTo(95.94, 28.35);
        a.lineTo(83.74, 31.3);
        a.bezierCurveTo(82.24, 28.65, 80.43, 26.19, 78.36, 23.97);
        a.lineTo(84.96, 13.38);
        a.lineTo(74.33, 5.72);
        a.lineTo(66.21, 15.21);
        a.bezierCurveTo(63.47, 13.95, 60.56, 13, 57.51, 12.41);
        a.lineTo(56.57, 0);
        a.lineTo(43.43, 0);
        a.lineTo(42.49, 12.41);
        a.bezierCurveTo(39.44, 13, 36.53, 13.95, 33.79, 15.21);
        a.lineTo(25.67, 5.72);
        a.lineTo(15.04, 13.38);
        a.lineTo(21.64, 23.97);
        a.bezierCurveTo(19.57, 26.19, 17.76, 28.65, 16.26, 31.31);
        a.lineTo(4.06, 28.35);
        a.lineTo(0, 40.74);
        a.lineTo(11.62, 45.47);
        a.bezierCurveTo(11.45, 46.96, 11.35, 48.47, 11.35, 50);
        a.bezierCurveTo(11.35, 51.53, 11.45, 53.04, 11.62, 54.53);
        a.lineTo(0, 59.25);
        a.lineTo(4.06, 71.65);
        a.lineTo(16.26, 68.7);
        a.bezierCurveTo(17.76, 71.35, 19.57, 73.81, 21.64, 76.03);
        a.lineTo(15.04, 86.62);
        a.lineTo(25.67, 94.28);
        a.lineTo(33.79, 84.79);
        a.bezierCurveTo(36.53, 86.04, 39.44, 87, 42.49, 87.59);
        a.lineTo(43.43, 100);
        a.lineTo(56.57, 100);
        a.lineTo(57.51, 87.59);
        a.bezierCurveTo(60.55, 86.99, 63.47, 86.04, 66.21, 84.79);
        a.lineTo(74.33, 94.28);
        a.lineTo(84.96, 86.62);
        a.lineTo(78.36, 76.03);
        a.bezierCurveTo(80.43, 73.81, 82.24, 71.35, 83.74, 68.69);
        a.lineTo(95.94, 71.64);
        a.lineTo(100, 59.25);
        a.lineTo(88.38, 54.53);
        a.bezierCurveTo(88.56, 53.04, 88.65, 51.53, 88.65, 50);
        a.closePath();
        a.moveTo(50, 70);
        a.bezierCurveTo(44.54, 70, 39.6, 67.82, 35.99, 64.27);
        a.bezierCurveTo(32.29, 60.65, 30, 55.59, 30, 50);
        a.bezierCurveTo(30, 44.48, 32.24, 39.48, 35.86, 35.86);
        a.bezierCurveTo(39.48, 32.24, 44.48, 30, 50, 30);
        a.bezierCurveTo(54.93, 30, 59.44, 31.78, 62.93, 34.74);
        a.bezierCurveTo(67.25, 38.41, 70, 43.88, 70, 50);
        a.bezierCurveTo(70, 55.75, 67.58, 60.92, 63.7, 64.57);
        a.bezierCurveTo(60.12, 67.94, 55.3, 70, 50, 70);
        a.closePath();
        a.fill()
    }
    id.prototype.stop = function () {
        Qc = !1;
        R.style.backgroundPosition = "-288px 0";
        dd = 1;
        if (parseInt(R.style.bottom) < 0) R.style.visibility = "hidden";
        if (this.a && parseInt(this.a.style.bottom) < this.bottom) this.a.style.visibility = "hidden"
    };
    id.prototype.rotate = function () {
        this.w += 50;
        this.a.style.webkitTransform = "rotate(" + this.w * this.direction + "deg)"
    };

    function Dc(a) {
        Z("adjusting time: " + (Ac(a) ? "day" : "night"));
        P.className = (Ac(a) ? "day" : "night") + (gc ? " xray" : "") + (M ? " underground" : "");
        var b = zc(a);
        vc(sc, $.la, 0, b == 24 ? 0 : b, 2E3);
        vc(sc, $.na, 0, (new Date).getUTCMinutes(), 2E3);
        if (!xc) if (b == 0 && (b = 24), Ac(a)) {
            $c();
            T && (T.addEventListener("webkitTransitionEnd", Vc, !1), Wc(120));
            a = -45 + 90 / (a.e - a.h) * (b - a.h);
            if (!V) V = A("canvas", {
                className: "sun"
            }), V.width = 70, V.height = 70, W = V.getContext("2d"), V.style.webkitTransform = "rotate(-120deg)", W.save(), W.fillStyle = "#FFDE17", W.beginPath(), W.arc(35, 35, 35, 0, Math.PI / 180 * 360, !0), W.fill(), W.restore(), X.appendChild(V);
            V.removeEventListener("webkitTransitionEnd", Tc, !1);
            Uc(a)
        } else {
            Zc();
            V && (V.addEventListener("webkitTransitionEnd", Tc, !1), Uc(120));
            var c = 24 - (a.e - a.h),
                d = 0,
                d = b <= 24 && b >= a.e ? b - a.e : 24 - a.e + b,
                a = -45 + 90 / c * d;
            if (!T) T = A("canvas", {
                className: "moon"
            }), T.width = 70, T.height = 70, U = T.getContext("2d"), T.style.webkitTransform = "rotate(-120deg)", U.fillStyle = "#E0F3FA", U.beginPath(), U.moveTo(28.75, 41.01), U.bezierCurveTo(20.03, 28.7, 20.5, 12.66, 28.72, 1), U.bezierCurveTo(25.03, 2.05, 21.44, 3.69, 18.13, 6.04), U.bezierCurveTo(2.51, 17.11, -1.18, 38.75, 9.89, 54.37), U.bezierCurveTo(20.96, 70, 42.6, 73.69, 58.23, 62.61), U.bezierCurveTo(61.54, 60.27, 64.28, 57.43, 66.49, 54.29), U.bezierCurveTo(52.76, 58.18, 37.48, 53.32, 28.75, 41.01), U.closePath(), U.fill(), X.appendChild(T);
            T.removeEventListener("webkitTransitionEnd", Vc, !1);
            Wc(a)
        }
    }
    function jd(a) {
        ec || (ec = !0, fc = a, Q += 1 * fc, Q < 0 ? Q = Y.length - 1 : Q > Y.length - 1 && (Q = 0), Pc(60 * fc * -1, kd))
    }

    function Z(a) {
        hc ? (S || (S = A("ul", {
            id: "log"
        }), oc = A("div", {
            id: "logvis"
        }, S), X.appendChild(oc)), mb(S, A("li", {}, a)), S.scrollTop = S.scrollHeight) : S && md()
    }
    function md() {
        B(oc);
        delete S;
        delete oc
    }
    var xc = !1;

    function pd() {
        ic && B(ic);
        var a = new wc(Y[Q]);
        ic = A("div", {
            className: "city"
        });
        ic.style.background = "transparent url(images/" + Y[Q].g + ".png) no-repeat 0 0";
        X.appendChild(ic);
        $.name.className = a.g;
        $.Z.innerHTML = a.p;
        if (a.d) $.d.className = (Ac(a) ? "day" : "night") + "-" + a.d.condition, vc(tc, $.ja, 0, parseInt(a.d.temp_c), 2E3);
        Dc(a)
    }

    function od() {
        xc = !0;
        Q = 0;
        P = z("body")[0];
        I(y("nav-forward"), "click", function () {
            Q--;
            Q < 0 && (Q = Y.length - 1);
            pd()
        });
        I(y("nav-back"), "click", function () {
            Q++;
            Q > Y.length - 1 && (Q = 0);
            pd()
        });
        pd()
    };

    aa("gdd.Feed.init", function (a, b) {
        nc = b;
        var c = document.createElement("script");
        c.setAttribute("type", "text/javascript");
        c.setAttribute("src", a);
        z("head", "")[0].appendChild(c);
        for (var c = fb("scrollable"), d = 0; d < c.length; d++) {
            var f = c[d].nextElementSibling != h ? c[d].nextElementSibling : ob(c[d].nextSibling, !0);
            hb("up", f).onclick = pc;
            hb("down", f).onclick = qc
        }
    });
    aa("gdd.Feed.newsFeed", function (a) {
        for (var b = hb("scrollable"), c = 0; c < a.length; c++) {
            var d = document.createElement("div");
            d.className = "content-item";
            var f = document.createElement("h5");
            f.innerHTML = a[c].url ? '<a href="' + a[c].url + '" target="_blank">' + a[c].headline + "</a>" : a[c].headline;
            var e = document.createElement("p");
            e.innerHTML = a[c].summary + "<span>" + a[c].date + "</span>";
            d.appendChild(f);
            d.appendChild(e);
            b.appendChild(d)
        }
        Za(z("div", "loading")[0], "loading")
    });
})()
