import {
    a as L
} from "./chunk-JYUAQH2U.js";
import {
    f as ui
} from "./chunk-FFRAY7OK.js";
var Cg = {};
ui(Cg, {
    dispose: () => JV,
    disposeAll: () => QV,
    getElementSSRData: () => wg,
    getInstance: () => $V,
    init: () => Oc,
    registerPainter: () => bg,
    registerSSRDataGetter: () => Tg,
    version: () => tB
});
var AU = function() {
        function r() {
            this.firefox = !1, this.ie = !1, this.edge = !1, this.newEdge = !1, this.weChat = !1
        }
        return r
    }(),
    DU = function() {
        function r() {
            this.browser = new AU, this.node = !1, this.wxa = !1, this.worker = !1, this.svgSupported = !1, this.touchEventsSupported = !1, this.pointerEventsSupported = !1, this.domSupported = !1, this.transformSupported = !1, this.transform3dSupported = !1, this.hasGlobalWindow = typeof window < "u"
        }
        return r
    }(),
    cn = new DU;
typeof wx == "object" && typeof wx.getSystemInfoSync == "function" ? (cn.wxa = !0, cn.touchEventsSupported = !0) : typeof document > "u" && typeof self < "u" ? cn.worker = !0 : !cn.hasGlobalWindow || "Deno" in window ? (cn.node = !0, cn.svgSupported = !0) : MU(navigator.userAgent, cn);

function MU(r, e) {
    var t = e.browser,
        i = r.match(/Firefox\/([\d.]+)/),
        a = r.match(/MSIE\s([\d.]+)/) || r.match(/Trident\/.+?rv:(([\d.]+))/),
        n = r.match(/Edge?\/([\d.]+)/),
        o = /micromessenger/i.test(r);
    i && (t.firefox = !0, t.version = i[1]), a && (t.ie = !0, t.version = a[1]), n && (t.edge = !0, t.version = n[1], t.newEdge = +n[1].split(".")[0] > 18), o && (t.weChat = !0), e.svgSupported = typeof SVGRect < "u", e.touchEventsSupported = "ontouchstart" in window && !t.ie && !t.edge, e.pointerEventsSupported = "onpointerdown" in window && (t.edge || t.ie && +t.version >= 11), e.domSupported = typeof document < "u";
    var s = document.documentElement.style;
    e.transform3dSupported = (t.ie && "transition" in s || t.edge || "WebKitCSSMatrix" in window && "m11" in new WebKitCSSMatrix || "MozPerspective" in s) && !("OTransition" in s), e.transformSupported = e.transform3dSupported || t.ie && +t.version >= 9
}
var Ct = cn;
var G = {};
ui(G, {
    HashMap: () => aw,
    RADIAN_TO_DEGREE: () => go,
    assert: () => jt,
    bind: () => H,
    clone: () => Q,
    concatArray: () => na,
    createCanvas: () => UU,
    createHashMap: () => Y,
    createObject: () => Oa,
    curry: () => rt,
    defaults: () => q,
    disableUserSelect: () => Lu,
    each: () => w,
    eqNaN: () => Na,
    extend: () => O,
    filter: () => wt,
    find: () => Nm,
    guid: () => Au,
    hasOwn: () => $,
    indexOf: () => at,
    inherits: () => Du,
    isArray: () => z,
    isArrayLike: () => ue,
    isBuiltInObject: () => Em,
    isDom: () => Pa,
    isFunction: () => X,
    isGradientObject: () => Ra,
    isImagePatternObject: () => Om,
    isNumber: () => vt,
    isObject: () => j,
    isPrimitive: () => ks,
    isRegExp: () => zm,
    isString: () => F,
    isStringSafe: () => Vs,
    isTypedArray: () => de,
    keys: () => ft,
    logError: () => hn,
    map: () => k,
    merge: () => nt,
    mergeAll: () => vo,
    mixin: () => Bt,
    noop: () => Yt,
    normalizeCssArray: () => mo,
    reduce: () => Me,
    retrieve: () => Kt,
    retrieve2: () => ot,
    retrieve3: () => Le,
    setAsPrimitive: () => vn,
    slice: () => Mu,
    trim: () => Ie
});
var Qp = 12,
    Lm = "sans-serif",
    Xr = Qp + "px " + Lm,
    LU = 20,
    IU = 100,
    EU = "007LLmW'55;N0500LLLLLLLLLL00NNNLzWW\\\\WQb\\0FWLg\\bWb\\WQ\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\FFF5.5N";

function PU(r) {
    var e = {};
    if (typeof JSON > "u") return e;
    for (var t = 0; t < r.length; t++) {
        var i = String.fromCharCode(t + 32),
            a = (r.charCodeAt(t) - LU) / IU;
        e[i] = a
    }
    return e
}
var RU = PU(EU),
    He = {
        createCanvas: function() {
            return typeof document < "u" && document.createElement("canvas")
        },
        measureText: function() {
            var r, e;
            return function(t, i) {
                if (!r) {
                    var a = He.createCanvas();
                    r = a && a.getContext("2d")
                }
                if (r) return e !== i && (e = r.font = i || Xr), r.measureText(t);
                t = t || "", i = i || Xr;
                var n = /((?:\d+)?\.?\d*)px/.exec(i),
                    o = n && +n[1] || Qp,
                    s = 0;
                if (i.indexOf("mono") >= 0) s = o * t.length;
                else
                    for (var l = 0; l < t.length; l++) {
                        var u = RU[t[l]];
                        s += u == null ? o : u * o
                    }
                return {
                    width: s
                }
            }
        }(),
        loadImage: function(r, e, t) {
            var i = new Image;
            return i.onload = e, i.onerror = t, i.src = r, i
        }
    };

function Im(r) {
    for (var e in He) r[e] && (He[e] = r[e])
}
var tw = Me(["Function", "RegExp", "Date", "Error", "CanvasGradient", "CanvasPattern", "Image", "Canvas"], function(r, e) {
        return r["[object " + e + "]"] = !0, r
    }, {}),
    ew = Me(["Int8", "Uint8", "Uint8Clamped", "Int16", "Uint16", "Int32", "Uint32", "Float32", "Float64"], function(r, e) {
        return r["[object " + e + "Array]"] = !0, r
    }, {}),
    Us = Object.prototype.toString,
    tc = Array.prototype,
    NU = tc.forEach,
    OU = tc.filter,
    Pm = tc.slice,
    zU = tc.map,
    $b = function() {}.constructor,
    $p = $b ? $b.prototype : null,
    Rm = "__proto__",
    kU = 2311;

function Au() {
    return kU++
}

function hn() {
    for (var r = [], e = 0; e < arguments.length; e++) r[e] = arguments[e];
    typeof console < "u" && console.error.apply(console, r)
}

function Q(r) {
    if (r == null || typeof r != "object") return r;
    var e = r,
        t = Us.call(r);
    if (t === "[object Array]") {
        if (!ks(r)) {
            e = [];
            for (var i = 0, a = r.length; i < a; i++) e[i] = Q(r[i])
        }
    } else if (ew[t]) {
        if (!ks(r)) {
            var n = r.constructor;
            if (n.from) e = n.from(r);
            else {
                e = new n(r.length);
                for (var i = 0, a = r.length; i < a; i++) e[i] = r[i]
            }
        }
    } else if (!tw[t] && !ks(r) && !Pa(r)) {
        e = {};
        for (var o in r) r.hasOwnProperty(o) && o !== Rm && (e[o] = Q(r[o]))
    }
    return e
}

function nt(r, e, t) {
    if (!j(e) || !j(r)) return t ? Q(e) : r;
    for (var i in e)
        if (e.hasOwnProperty(i) && i !== Rm) {
            var a = r[i],
                n = e[i];
            j(n) && j(a) && !z(n) && !z(a) && !Pa(n) && !Pa(a) && !Em(n) && !Em(a) && !ks(n) && !ks(a) ? nt(a, n, t) : (t || !(i in r)) && (r[i] = Q(e[i]))
        }
    return r
}

function vo(r, e) {
    for (var t = r[0], i = 1, a = r.length; i < a; i++) t = nt(t, r[i], e);
    return t
}

function O(r, e) {
    if (Object.assign) Object.assign(r, e);
    else
        for (var t in e) e.hasOwnProperty(t) && t !== Rm && (r[t] = e[t]);
    return r
}

function q(r, e, t) {
    for (var i = ft(e), a = 0, n = i.length; a < n; a++) {
        var o = i[a];
        (t ? e[o] != null : r[o] == null) && (r[o] = e[o])
    }
    return r
}
var UU = He.createCanvas;

function at(r, e) {
    if (r) {
        if (r.indexOf) return r.indexOf(e);
        for (var t = 0, i = r.length; t < i; t++)
            if (r[t] === e) return t
    }
    return -1
}

function Du(r, e) {
    var t = r.prototype;

    function i() {}
    i.prototype = e.prototype, r.prototype = new i;
    for (var a in t) t.hasOwnProperty(a) && (r.prototype[a] = t[a]);
    r.prototype.constructor = r, r.superClass = e
}

function Bt(r, e, t) {
    if (r = "prototype" in r ? r.prototype : r, e = "prototype" in e ? e.prototype : e, Object.getOwnPropertyNames)
        for (var i = Object.getOwnPropertyNames(e), a = 0; a < i.length; a++) {
            var n = i[a];
            n !== "constructor" && (t ? e[n] != null : r[n] == null) && (r[n] = e[n])
        } else q(r, e, t)
}

function ue(r) {
    return !r || typeof r == "string" ? !1 : typeof r.length == "number"
}

function w(r, e, t) {
    if (r && e)
        if (r.forEach && r.forEach === NU) r.forEach(e, t);
        else if (r.length === +r.length)
        for (var i = 0, a = r.length; i < a; i++) e.call(t, r[i], i, r);
    else
        for (var n in r) r.hasOwnProperty(n) && e.call(t, r[n], n, r)
}

function k(r, e, t) {
    if (!r) return [];
    if (!e) return Mu(r);
    if (r.map && r.map === zU) return r.map(e, t);
    for (var i = [], a = 0, n = r.length; a < n; a++) i.push(e.call(t, r[a], a, r));
    return i
}

function Me(r, e, t, i) {
    if (r && e) {
        for (var a = 0, n = r.length; a < n; a++) t = e.call(i, t, r[a], a, r);
        return t
    }
}

function wt(r, e, t) {
    if (!r) return [];
    if (!e) return Mu(r);
    if (r.filter && r.filter === OU) return r.filter(e, t);
    for (var i = [], a = 0, n = r.length; a < n; a++) e.call(t, r[a], a, r) && i.push(r[a]);
    return i
}

function Nm(r, e, t) {
    if (r && e) {
        for (var i = 0, a = r.length; i < a; i++)
            if (e.call(t, r[i], i, r)) return r[i]
    }
}

function ft(r) {
    if (!r) return [];
    if (Object.keys) return Object.keys(r);
    var e = [];
    for (var t in r) r.hasOwnProperty(t) && e.push(t);
    return e
}

function VU(r, e) {
    for (var t = [], i = 2; i < arguments.length; i++) t[i - 2] = arguments[i];
    return function() {
        return r.apply(e, t.concat(Pm.call(arguments)))
    }
}
var H = $p && X($p.bind) ? $p.call.bind($p.bind) : VU;

function rt(r) {
    for (var e = [], t = 1; t < arguments.length; t++) e[t - 1] = arguments[t];
    return function() {
        return r.apply(this, e.concat(Pm.call(arguments)))
    }
}

function z(r) {
    return Array.isArray ? Array.isArray(r) : Us.call(r) === "[object Array]"
}

function X(r) {
    return typeof r == "function"
}

function F(r) {
    return typeof r == "string"
}

function Vs(r) {
    return Us.call(r) === "[object String]"
}

function vt(r) {
    return typeof r == "number"
}

function j(r) {
    var e = typeof r;
    return e === "function" || !!r && e === "object"
}

function Em(r) {
    return !!tw[Us.call(r)]
}

function de(r) {
    return !!ew[Us.call(r)]
}

function Pa(r) {
    return typeof r == "object" && typeof r.nodeType == "number" && typeof r.ownerDocument == "object"
}

function Ra(r) {
    return r.colorStops != null
}

function Om(r) {
    return r.image != null
}

function zm(r) {
    return Us.call(r) === "[object RegExp]"
}

function Na(r) {
    return r !== r
}

function Kt() {
    for (var r = [], e = 0; e < arguments.length; e++) r[e] = arguments[e];
    for (var t = 0, i = r.length; t < i; t++)
        if (r[t] != null) return r[t]
}

function ot(r, e) {
    return r ? ? e
}

function Le(r, e, t) {
    return r ? ? e ? ? t
}

function Mu(r) {
    for (var e = [], t = 1; t < arguments.length; t++) e[t - 1] = arguments[t];
    return Pm.apply(r, e)
}

function mo(r) {
    if (typeof r == "number") return [r, r, r, r];
    var e = r.length;
    return e === 2 ? [r[0], r[1], r[0], r[1]] : e === 3 ? [r[0], r[1], r[2], r[1]] : r
}

function jt(r, e) {
    if (!r) throw new Error(e)
}

function Ie(r) {
    return r == null ? null : typeof r.trim == "function" ? r.trim() : r.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "")
}
var rw = "__ec_primitive__";

function vn(r) {
    r[rw] = !0
}

function ks(r) {
    return r[rw]
}
var BU = function() {
        function r() {
            this.data = {}
        }
        return r.prototype.delete = function(e) {
            var t = this.has(e);
            return t && delete this.data[e], t
        }, r.prototype.has = function(e) {
            return this.data.hasOwnProperty(e)
        }, r.prototype.get = function(e) {
            return this.data[e]
        }, r.prototype.set = function(e, t) {
            return this.data[e] = t, this
        }, r.prototype.keys = function() {
            return ft(this.data)
        }, r.prototype.forEach = function(e) {
            var t = this.data;
            for (var i in t) t.hasOwnProperty(i) && e(t[i], i)
        }, r
    }(),
    iw = typeof Map == "function";

function FU() {
    return iw ? new Map : new BU
}
var aw = function() {
    function r(e) {
        var t = z(e);
        this.data = FU();
        var i = this;
        e instanceof r ? e.each(a) : e && w(e, a);

        function a(n, o) {
            t ? i.set(n, o) : i.set(o, n)
        }
    }
    return r.prototype.hasKey = function(e) {
        return this.data.has(e)
    }, r.prototype.get = function(e) {
        return this.data.get(e)
    }, r.prototype.set = function(e, t) {
        return this.data.set(e, t), t
    }, r.prototype.each = function(e, t) {
        this.data.forEach(function(i, a) {
            e.call(t, i, a)
        })
    }, r.prototype.keys = function() {
        var e = this.data.keys();
        return iw ? Array.from(e) : e
    }, r.prototype.removeKey = function(e) {
        this.data.delete(e)
    }, r
}();

function Y(r) {
    return new aw(r)
}

function na(r, e) {
    for (var t = new r.constructor(r.length + e.length), i = 0; i < r.length; i++) t[i] = r[i];
    for (var a = r.length, i = 0; i < e.length; i++) t[i + a] = e[i];
    return t
}

function Oa(r, e) {
    var t;
    if (Object.create) t = Object.create(r);
    else {
        var i = function() {};
        i.prototype = r, t = new i
    }
    return e && O(t, e), t
}

function Lu(r) {
    var e = r.style;
    e.webkitUserSelect = "none", e.userSelect = "none", e.webkitTapHighlightColor = "rgba(0,0,0,0)", e["-webkit-touch-callout"] = "none"
}

function $(r, e) {
    return r.hasOwnProperty(e)
}

function Yt() {}
var go = 180 / Math.PI;
var Te = {};
ui(Te, {
    add: () => ec,
    applyTransform: () => fe,
    clone: () => fr,
    copy: () => Ee,
    create: () => Ui,
    dist: () => Kr,
    distSquare: () => oa,
    distance: () => Iu,
    distanceSquare: () => nw,
    div: () => YU,
    dot: () => ZU,
    len: () => Fs,
    lenSquare: () => Um,
    length: () => GU,
    lengthSquare: () => HU,
    lerp: () => xo,
    max: () => Cr,
    min: () => Tr,
    mul: () => WU,
    negate: () => XU,
    normalize: () => qr,
    scale: () => yo,
    scaleAndAdd: () => Bs,
    set: () => km,
    sub: () => fi
});

function Ui(r, e) {
    return r == null && (r = 0), e == null && (e = 0), [r, e]
}

function Ee(r, e) {
    return r[0] = e[0], r[1] = e[1], r
}

function fr(r) {
    return [r[0], r[1]]
}

function km(r, e, t) {
    return r[0] = e, r[1] = t, r
}

function ec(r, e, t) {
    return r[0] = e[0] + t[0], r[1] = e[1] + t[1], r
}

function Bs(r, e, t, i) {
    return r[0] = e[0] + t[0] * i, r[1] = e[1] + t[1] * i, r
}

function fi(r, e, t) {
    return r[0] = e[0] - t[0], r[1] = e[1] - t[1], r
}

function Fs(r) {
    return Math.sqrt(Um(r))
}
var GU = Fs;

function Um(r) {
    return r[0] * r[0] + r[1] * r[1]
}
var HU = Um;

function WU(r, e, t) {
    return r[0] = e[0] * t[0], r[1] = e[1] * t[1], r
}

function YU(r, e, t) {
    return r[0] = e[0] / t[0], r[1] = e[1] / t[1], r
}

function ZU(r, e) {
    return r[0] * e[0] + r[1] * e[1]
}

function yo(r, e, t) {
    return r[0] = e[0] * t, r[1] = e[1] * t, r
}

function qr(r, e) {
    var t = Fs(e);
    return t === 0 ? (r[0] = 0, r[1] = 0) : (r[0] = e[0] / t, r[1] = e[1] / t), r
}

function Iu(r, e) {
    return Math.sqrt((r[0] - e[0]) * (r[0] - e[0]) + (r[1] - e[1]) * (r[1] - e[1]))
}
var Kr = Iu;

function nw(r, e) {
    return (r[0] - e[0]) * (r[0] - e[0]) + (r[1] - e[1]) * (r[1] - e[1])
}
var oa = nw;

function XU(r, e) {
    return r[0] = -e[0], r[1] = -e[1], r
}

function xo(r, e, t, i) {
    return r[0] = e[0] + i * (t[0] - e[0]), r[1] = e[1] + i * (t[1] - e[1]), r
}

function fe(r, e, t) {
    var i = e[0],
        a = e[1];
    return r[0] = t[0] * i + t[2] * a + t[4], r[1] = t[1] * i + t[3] * a + t[5], r
}

function Tr(r, e, t) {
    return r[0] = Math.min(e[0], t[0]), r[1] = Math.min(e[1], t[1]), r
}

function Cr(r, e, t) {
    return r[0] = Math.max(e[0], t[0]), r[1] = Math.max(e[1], t[1]), r
}
var Gs = function() {
        function r(e, t) {
            this.target = e, this.topTarget = t && t.topTarget
        }
        return r
    }(),
    qU = function() {
        function r(e) {
            this.handler = e, e.on("mousedown", this._dragStart, this), e.on("mousemove", this._drag, this), e.on("mouseup", this._dragEnd, this)
        }
        return r.prototype._dragStart = function(e) {
            for (var t = e.target; t && !t.draggable;) t = t.parent || t.__hostTarget;
            t && (this._draggingTarget = t, t.dragging = !0, this._x = e.offsetX, this._y = e.offsetY, this.handler.dispatchToElement(new Gs(t, e), "dragstart", e.event))
        }, r.prototype._drag = function(e) {
            var t = this._draggingTarget;
            if (t) {
                var i = e.offsetX,
                    a = e.offsetY,
                    n = i - this._x,
                    o = a - this._y;
                this._x = i, this._y = a, t.drift(n, o, e), this.handler.dispatchToElement(new Gs(t, e), "drag", e.event);
                var s = this.handler.findHover(i, a, t).target,
                    l = this._dropTarget;
                this._dropTarget = s, t !== s && (l && s !== l && this.handler.dispatchToElement(new Gs(l, e), "dragleave", e.event), s && s !== l && this.handler.dispatchToElement(new Gs(s, e), "dragenter", e.event))
            }
        }, r.prototype._dragEnd = function(e) {
            var t = this._draggingTarget;
            t && (t.dragging = !1), this.handler.dispatchToElement(new Gs(t, e), "dragend", e.event), this._dropTarget && this.handler.dispatchToElement(new Gs(this._dropTarget, e), "drop", e.event), this._draggingTarget = null, this._dropTarget = null
        }, r
    }(),
    ow = qU;
var KU = function() {
        function r(e) {
            e && (this._$eventProcessor = e)
        }
        return r.prototype.on = function(e, t, i, a) {
            this._$handlers || (this._$handlers = {});
            var n = this._$handlers;
            if (typeof t == "function" && (a = i, i = t, t = null), !i || !e) return this;
            var o = this._$eventProcessor;
            t != null && o && o.normalizeQuery && (t = o.normalizeQuery(t)), n[e] || (n[e] = []);
            for (var s = 0; s < n[e].length; s++)
                if (n[e][s].h === i) return this;
            var l = {
                    h: i,
                    query: t,
                    ctx: a || this,
                    callAtLast: i.zrEventfulCallAtLast
                },
                u = n[e].length - 1,
                f = n[e][u];
            return f && f.callAtLast ? n[e].splice(u, 0, l) : n[e].push(l), this
        }, r.prototype.isSilent = function(e) {
            var t = this._$handlers;
            return !t || !t[e] || !t[e].length
        }, r.prototype.off = function(e, t) {
            var i = this._$handlers;
            if (!i) return this;
            if (!e) return this._$handlers = {}, this;
            if (t) {
                if (i[e]) {
                    for (var a = [], n = 0, o = i[e].length; n < o; n++) i[e][n].h !== t && a.push(i[e][n]);
                    i[e] = a
                }
                i[e] && i[e].length === 0 && delete i[e]
            } else delete i[e];
            return this
        }, r.prototype.trigger = function(e) {
            for (var t = [], i = 1; i < arguments.length; i++) t[i - 1] = arguments[i];
            if (!this._$handlers) return this;
            var a = this._$handlers[e],
                n = this._$eventProcessor;
            if (a)
                for (var o = t.length, s = a.length, l = 0; l < s; l++) {
                    var u = a[l];
                    if (!(n && n.filter && u.query != null && !n.filter(e, u.query))) switch (o) {
                        case 0:
                            u.h.call(u.ctx);
                            break;
                        case 1:
                            u.h.call(u.ctx, t[0]);
                            break;
                        case 2:
                            u.h.call(u.ctx, t[0], t[1]);
                            break;
                        default:
                            u.h.apply(u.ctx, t);
                            break
                    }
                }
            return n && n.afterTrigger && n.afterTrigger(e), this
        }, r.prototype.triggerWithContext = function(e) {
            for (var t = [], i = 1; i < arguments.length; i++) t[i - 1] = arguments[i];
            if (!this._$handlers) return this;
            var a = this._$handlers[e],
                n = this._$eventProcessor;
            if (a)
                for (var o = t.length, s = t[o - 1], l = a.length, u = 0; u < l; u++) {
                    var f = a[u];
                    if (!(n && n.filter && f.query != null && !n.filter(e, f.query))) switch (o) {
                        case 0:
                            f.h.call(s);
                            break;
                        case 1:
                            f.h.call(s, t[0]);
                            break;
                        case 2:
                            f.h.call(s, t[0], t[1]);
                            break;
                        default:
                            f.h.apply(s, t.slice(1, o - 1));
                            break
                    }
                }
            return n && n.afterTrigger && n.afterTrigger(e), this
        }, r
    }(),
    Ce = KU;
var jU = Math.log(2);

function Vm(r, e, t, i, a, n) {
    var o = i + "-" + a,
        s = r.length;
    if (n.hasOwnProperty(o)) return n[o];
    if (e === 1) {
        var l = Math.round(Math.log((1 << s) - 1 & ~a) / jU);
        return r[t][l]
    }
    for (var u = i | 1 << t, f = t + 1; i & 1 << f;) f++;
    for (var p = 0, c = 0, h = 0; c < s; c++) {
        var v = 1 << c;
        v & a || (p += (h % 2 ? -1 : 1) * r[t][c] * Vm(r, e - 1, f, u, a | v, n), h++)
    }
    return n[o] = p, p
}

function Bm(r, e) {
    var t = [
            [r[0], r[1], 1, 0, 0, 0, -e[0] * r[0], -e[0] * r[1]],
            [0, 0, 0, r[0], r[1], 1, -e[1] * r[0], -e[1] * r[1]],
            [r[2], r[3], 1, 0, 0, 0, -e[2] * r[2], -e[2] * r[3]],
            [0, 0, 0, r[2], r[3], 1, -e[3] * r[2], -e[3] * r[3]],
            [r[4], r[5], 1, 0, 0, 0, -e[4] * r[4], -e[4] * r[5]],
            [0, 0, 0, r[4], r[5], 1, -e[5] * r[4], -e[5] * r[5]],
            [r[6], r[7], 1, 0, 0, 0, -e[6] * r[6], -e[6] * r[7]],
            [0, 0, 0, r[6], r[7], 1, -e[7] * r[6], -e[7] * r[7]]
        ],
        i = {},
        a = Vm(t, 8, 0, 0, 0, i);
    if (a !== 0) {
        for (var n = [], o = 0; o < 8; o++)
            for (var s = 0; s < 8; s++) n[s] == null && (n[s] = 0), n[s] += ((o + s) % 2 ? -1 : 1) * Vm(t, 7, o === 0 ? 1 : 0, 1 << o, 1 << s, i) / a * e[o];
        return function(l, u, f) {
            var p = u * n[6] + f * n[7] + 1;
            l[0] = (u * n[0] + f * n[1] + n[2]) / p, l[1] = (u * n[3] + f * n[4] + n[5]) / p
        }
    }
}
var sw = "___zrEVENTSAVED",
    Fm = [];

function lw(r, e, t, i, a) {
    return rc(Fm, e, i, a, !0) && rc(r, t, Fm[0], Fm[1])
}

function rc(r, e, t, i, a) {
    if (e.getBoundingClientRect && Ct.domSupported && !Gm(e)) {
        var n = e[sw] || (e[sw] = {}),
            o = JU(e, n),
            s = QU(o, n, a);
        if (s) return s(r, t, i), !0
    }
    return !1
}

function JU(r, e) {
    var t = e.markers;
    if (t) return t;
    t = e.markers = [];
    for (var i = ["left", "right"], a = ["top", "bottom"], n = 0; n < 4; n++) {
        var o = document.createElement("div"),
            s = o.style,
            l = n % 2,
            u = (n >> 1) % 2;
        s.cssText = ["position: absolute", "visibility: hidden", "padding: 0", "margin: 0", "border-width: 0", "user-select: none", "width:0", "height:0", i[l] + ":0", a[u] + ":0", i[1 - l] + ":auto", a[1 - u] + ":auto", ""].join("!important;"), r.appendChild(o), t.push(o)
    }
    return t
}

function QU(r, e, t) {
    for (var i = t ? "invTrans" : "trans", a = e[i], n = e.srcCoords, o = [], s = [], l = !0, u = 0; u < 4; u++) {
        var f = r[u].getBoundingClientRect(),
            p = 2 * u,
            c = f.left,
            h = f.top;
        o.push(c, h), l = l && n && c === n[p] && h === n[p + 1], s.push(r[u].offsetLeft, r[u].offsetTop)
    }
    return l && a ? a : (e.srcCoords = o, e[i] = t ? Bm(s, o) : Bm(o, s))
}

function Gm(r) {
    return r.nodeName.toUpperCase() === "CANVAS"
}
var $U = /([&<>"'])/g,
    tV = {
        "&": "&amp;",
        "<": "&lt;",
        ">": "&gt;",
        '"': "&quot;",
        "'": "&#39;"
    };

function xe(r) {
    return r == null ? "" : (r + "").replace($U, function(e, t) {
        return tV[t]
    })
}
var eV = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
    Hm = [],
    rV = Ct.browser.firefox && +Ct.browser.version.split(".")[0] < 39;

function ic(r, e, t, i) {
    return t = t || {}, i ? uw(r, e, t) : rV && e.layerX != null && e.layerX !== e.offsetX ? (t.zrX = e.layerX, t.zrY = e.layerY) : e.offsetX != null ? (t.zrX = e.offsetX, t.zrY = e.offsetY) : uw(r, e, t), t
}

function uw(r, e, t) {
    if (Ct.domSupported && r.getBoundingClientRect) {
        var i = e.clientX,
            a = e.clientY;
        if (Gm(r)) {
            var n = r.getBoundingClientRect();
            t.zrX = i - n.left, t.zrY = a - n.top;
            return
        } else if (rc(Hm, r, i, a)) {
            t.zrX = Hm[0], t.zrY = Hm[1];
            return
        }
    }
    t.zrX = t.zrY = 0
}

function ac(r) {
    return r || window.event
}

function Ar(r, e, t) {
    if (e = ac(e), e.zrX != null) return e;
    var i = e.type,
        a = i && i.indexOf("touch") >= 0;
    if (a) {
        var o = i !== "touchend" ? e.targetTouches[0] : e.changedTouches[0];
        o && ic(r, o, e, t)
    } else {
        ic(r, e, e, t);
        var n = iV(e);
        e.zrDelta = n ? n / 120 : -(e.detail || 0) / 3
    }
    var s = e.button;
    return e.which == null && s !== void 0 && eV.test(e.type) && (e.which = s & 1 ? 1 : s & 2 ? 3 : s & 4 ? 2 : 0), e
}

function iV(r) {
    var e = r.wheelDelta;
    if (e) return e;
    var t = r.deltaX,
        i = r.deltaY;
    if (t == null || i == null) return e;
    var a = Math.abs(i !== 0 ? i : t),
        n = i > 0 ? -1 : i < 0 ? 1 : t > 0 ? -1 : 1;
    return 3 * a * n
}

function Eu(r, e, t, i) {
    r.addEventListener(e, t, i)
}

function fw(r, e, t, i) {
    r.removeEventListener(e, t, i)
}
var Dr = function(r) {
    r.preventDefault(), r.stopPropagation(), r.cancelBubble = !0
};

function Wm(r) {
    return r.which === 2 || r.which === 3
}
var cw = function() {
    function r() {
        this._track = []
    }
    return r.prototype.recognize = function(e, t, i) {
        return this._doTrack(e, t, i), this._recognize(e)
    }, r.prototype.clear = function() {
        return this._track.length = 0, this
    }, r.prototype._doTrack = function(e, t, i) {
        var a = e.touches;
        if (a) {
            for (var n = {
                    points: [],
                    touches: [],
                    target: t,
                    event: e
                }, o = 0, s = a.length; o < s; o++) {
                var l = a[o],
                    u = ic(i, l, {});
                n.points.push([u.zrX, u.zrY]), n.touches.push(l)
            }
            this._track.push(n)
        }
    }, r.prototype._recognize = function(e) {
        for (var t in Ym)
            if (Ym.hasOwnProperty(t)) {
                var i = Ym[t](this._track, e);
                if (i) return i
            }
    }, r
}();

function pw(r) {
    var e = r[1][0] - r[0][0],
        t = r[1][1] - r[0][1];
    return Math.sqrt(e * e + t * t)
}

function aV(r) {
    return [(r[0][0] + r[1][0]) / 2, (r[0][1] + r[1][1]) / 2]
}
var Ym = {
    pinch: function(r, e) {
        var t = r.length;
        if (t) {
            var i = (r[t - 1] || {}).points,
                a = (r[t - 2] || {}).points || i;
            if (a && a.length > 1 && i && i.length > 1) {
                var n = pw(i) / pw(a);
                !isFinite(n) && (n = 1), e.pinchScale = n;
                var o = aV(i);
                return e.pinchX = o[0], e.pinchY = o[1], {
                    type: "pinch",
                    target: r[0].target,
                    event: e
                }
            }
        }
    }
};
var hr = {};
ui(hr, {
    clone: () => Zm,
    copy: () => Ws,
    create: () => me,
    identity: () => za,
    invert: () => jr,
    mul: () => pr,
    rotate: () => cr,
    scale: () => _o,
    translate: () => We
});

function me() {
    return [1, 0, 0, 1, 0, 0]
}

function za(r) {
    return r[0] = 1, r[1] = 0, r[2] = 0, r[3] = 1, r[4] = 0, r[5] = 0, r
}

function Ws(r, e) {
    return r[0] = e[0], r[1] = e[1], r[2] = e[2], r[3] = e[3], r[4] = e[4], r[5] = e[5], r
}

function pr(r, e, t) {
    var i = e[0] * t[0] + e[2] * t[1],
        a = e[1] * t[0] + e[3] * t[1],
        n = e[0] * t[2] + e[2] * t[3],
        o = e[1] * t[2] + e[3] * t[3],
        s = e[0] * t[4] + e[2] * t[5] + e[4],
        l = e[1] * t[4] + e[3] * t[5] + e[5];
    return r[0] = i, r[1] = a, r[2] = n, r[3] = o, r[4] = s, r[5] = l, r
}

function We(r, e, t) {
    return r[0] = e[0], r[1] = e[1], r[2] = e[2], r[3] = e[3], r[4] = e[4] + t[0], r[5] = e[5] + t[1], r
}

function cr(r, e, t, i) {
    i === void 0 && (i = [0, 0]);
    var a = e[0],
        n = e[2],
        o = e[4],
        s = e[1],
        l = e[3],
        u = e[5],
        f = Math.sin(t),
        p = Math.cos(t);
    return r[0] = a * p + s * f, r[1] = -a * f + s * p, r[2] = n * p + l * f, r[3] = -n * f + p * l, r[4] = p * (o - i[0]) + f * (u - i[1]) + i[0], r[5] = p * (u - i[1]) - f * (o - i[0]) + i[1], r
}

function _o(r, e, t) {
    var i = t[0],
        a = t[1];
    return r[0] = e[0] * i, r[1] = e[1] * a, r[2] = e[2] * i, r[3] = e[3] * a, r[4] = e[4] * i, r[5] = e[5] * a, r
}

function jr(r, e) {
    var t = e[0],
        i = e[2],
        a = e[4],
        n = e[1],
        o = e[3],
        s = e[5],
        l = t * o - n * i;
    return l ? (l = 1 / l, r[0] = o * l, r[1] = -n * l, r[2] = -i * l, r[3] = t * l, r[4] = (i * s - o * a) * l, r[5] = (n * a - t * s) * l, r) : null
}

function Zm(r) {
    var e = me();
    return Ws(e, r), e
}
var nV = function() {
        function r(e, t) {
            this.x = e || 0, this.y = t || 0
        }
        return r.prototype.copy = function(e) {
            return this.x = e.x, this.y = e.y, this
        }, r.prototype.clone = function() {
            return new r(this.x, this.y)
        }, r.prototype.set = function(e, t) {
            return this.x = e, this.y = t, this
        }, r.prototype.equal = function(e) {
            return e.x === this.x && e.y === this.y
        }, r.prototype.add = function(e) {
            return this.x += e.x, this.y += e.y, this
        }, r.prototype.scale = function(e) {
            this.x *= e, this.y *= e
        }, r.prototype.scaleAndAdd = function(e, t) {
            this.x += e.x * t, this.y += e.y * t
        }, r.prototype.sub = function(e) {
            return this.x -= e.x, this.y -= e.y, this
        }, r.prototype.dot = function(e) {
            return this.x * e.x + this.y * e.y
        }, r.prototype.len = function() {
            return Math.sqrt(this.x * this.x + this.y * this.y)
        }, r.prototype.lenSquare = function() {
            return this.x * this.x + this.y * this.y
        }, r.prototype.normalize = function() {
            var e = this.len();
            return this.x /= e, this.y /= e, this
        }, r.prototype.distance = function(e) {
            var t = this.x - e.x,
                i = this.y - e.y;
            return Math.sqrt(t * t + i * i)
        }, r.prototype.distanceSquare = function(e) {
            var t = this.x - e.x,
                i = this.y - e.y;
            return t * t + i * i
        }, r.prototype.negate = function() {
            return this.x = -this.x, this.y = -this.y, this
        }, r.prototype.transform = function(e) {
            if (e) {
                var t = this.x,
                    i = this.y;
                return this.x = e[0] * t + e[2] * i + e[4], this.y = e[1] * t + e[3] * i + e[5], this
            }
        }, r.prototype.toArray = function(e) {
            return e[0] = this.x, e[1] = this.y, e
        }, r.prototype.fromArray = function(e) {
            this.x = e[0], this.y = e[1]
        }, r.set = function(e, t, i) {
            e.x = t, e.y = i
        }, r.copy = function(e, t) {
            e.x = t.x, e.y = t.y
        }, r.len = function(e) {
            return Math.sqrt(e.x * e.x + e.y * e.y)
        }, r.lenSquare = function(e) {
            return e.x * e.x + e.y * e.y
        }, r.dot = function(e, t) {
            return e.x * t.x + e.y * t.y
        }, r.add = function(e, t, i) {
            e.x = t.x + i.x, e.y = t.y + i.y
        }, r.sub = function(e, t, i) {
            e.x = t.x - i.x, e.y = t.y - i.y
        }, r.scale = function(e, t, i) {
            e.x = t.x * i, e.y = t.y * i
        }, r.scaleAndAdd = function(e, t, i, a) {
            e.x = t.x + i.x * a, e.y = t.y + i.y * a
        }, r.lerp = function(e, t, i, a) {
            var n = 1 - a;
            e.x = n * t.x + a * i.x, e.y = n * t.y + a * i.y
        }, r
    }(),
    St = nV;
var nc = Math.min,
    oc = Math.max,
    So = new St,
    bo = new St,
    wo = new St,
    To = new St,
    Pu = new St,
    Ru = new St,
    oV = function() {
        function r(e, t, i, a) {
            i < 0 && (e = e + i, i = -i), a < 0 && (t = t + a, a = -a), this.x = e, this.y = t, this.width = i, this.height = a
        }
        return r.prototype.union = function(e) {
            var t = nc(e.x, this.x),
                i = nc(e.y, this.y);
            isFinite(this.x) && isFinite(this.width) ? this.width = oc(e.x + e.width, this.x + this.width) - t : this.width = e.width, isFinite(this.y) && isFinite(this.height) ? this.height = oc(e.y + e.height, this.y + this.height) - i : this.height = e.height, this.x = t, this.y = i
        }, r.prototype.applyTransform = function(e) {
            r.applyTransform(this, this, e)
        }, r.prototype.calculateTransform = function(e) {
            var t = this,
                i = e.width / t.width,
                a = e.height / t.height,
                n = me();
            return We(n, n, [-t.x, -t.y]), _o(n, n, [i, a]), We(n, n, [e.x, e.y]), n
        }, r.prototype.intersect = function(e, t) {
            if (!e) return !1;
            e instanceof r || (e = r.create(e));
            var i = this,
                a = i.x,
                n = i.x + i.width,
                o = i.y,
                s = i.y + i.height,
                l = e.x,
                u = e.x + e.width,
                f = e.y,
                p = e.y + e.height,
                c = !(n < l || u < a || s < f || p < o);
            if (t) {
                var h = 1 / 0,
                    v = 0,
                    d = Math.abs(n - l),
                    m = Math.abs(u - a),
                    g = Math.abs(s - f),
                    y = Math.abs(p - o),
                    x = Math.min(d, m),
                    _ = Math.min(g, y);
                n < l || u < a ? x > v && (v = x, d < m ? St.set(Ru, -d, 0) : St.set(Ru, m, 0)) : x < h && (h = x, d < m ? St.set(Pu, d, 0) : St.set(Pu, -m, 0)), s < f || p < o ? _ > v && (v = _, g < y ? St.set(Ru, 0, -g) : St.set(Ru, 0, y)) : x < h && (h = x, g < y ? St.set(Pu, 0, g) : St.set(Pu, 0, -y))
            }
            return t && St.copy(t, c ? Pu : Ru), c
        }, r.prototype.contain = function(e, t) {
            var i = this;
            return e >= i.x && e <= i.x + i.width && t >= i.y && t <= i.y + i.height
        }, r.prototype.clone = function() {
            return new r(this.x, this.y, this.width, this.height)
        }, r.prototype.copy = function(e) {
            r.copy(this, e)
        }, r.prototype.plain = function() {
            return {
                x: this.x,
                y: this.y,
                width: this.width,
                height: this.height
            }
        }, r.prototype.isFinite = function() {
            return isFinite(this.x) && isFinite(this.y) && isFinite(this.width) && isFinite(this.height)
        }, r.prototype.isZero = function() {
            return this.width === 0 || this.height === 0
        }, r.create = function(e) {
            return new r(e.x, e.y, e.width, e.height)
        }, r.copy = function(e, t) {
            e.x = t.x, e.y = t.y, e.width = t.width, e.height = t.height
        }, r.applyTransform = function(e, t, i) {
            if (!i) {
                e !== t && r.copy(e, t);
                return
            }
            if (i[1] < 1e-5 && i[1] > -1e-5 && i[2] < 1e-5 && i[2] > -1e-5) {
                var a = i[0],
                    n = i[3],
                    o = i[4],
                    s = i[5];
                e.x = t.x * a + o, e.y = t.y * n + s, e.width = t.width * a, e.height = t.height * n, e.width < 0 && (e.x += e.width, e.width = -e.width), e.height < 0 && (e.y += e.height, e.height = -e.height);
                return
            }
            So.x = wo.x = t.x, So.y = To.y = t.y, bo.x = To.x = t.x + t.width, bo.y = wo.y = t.y + t.height, So.transform(i), To.transform(i), bo.transform(i), wo.transform(i), e.x = nc(So.x, bo.x, wo.x, To.x), e.y = nc(So.y, bo.y, wo.y, To.y);
            var l = oc(So.x, bo.x, wo.x, To.x),
                u = oc(So.y, bo.y, wo.y, To.y);
            e.width = l - e.x, e.height = u - e.y
        }, r
    }(),
    it = oV;
var vw = "silent";

function sV(r, e, t) {
    return {
        type: r,
        event: t,
        target: e.target,
        topTarget: e.topTarget,
        cancelBubble: !1,
        offsetX: t.zrX,
        offsetY: t.zrY,
        gestureEvent: t.gestureEvent,
        pinchX: t.pinchX,
        pinchY: t.pinchY,
        pinchScale: t.pinchScale,
        wheelDelta: t.zrDelta,
        zrByTouch: t.zrByTouch,
        which: t.which,
        stop: lV
    }
}

function lV() {
    Dr(this.event)
}
var uV = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.handler = null, t
        }
        return e.prototype.dispose = function() {}, e.prototype.setCursor = function() {}, e
    }(Ce),
    Nu = function() {
        function r(e, t) {
            this.x = e, this.y = t
        }
        return r
    }(),
    fV = ["click", "dblclick", "mousewheel", "mouseout", "mouseup", "mousedown", "mousemove", "contextmenu"],
    Xm = new it(0, 0, 0, 0),
    dw = function(r) {
        L(e, r);

        function e(t, i, a, n, o) {
            var s = r.call(this) || this;
            return s._hovered = new Nu(0, 0), s.storage = t, s.painter = i, s.painterRoot = n, s._pointerSize = o, a = a || new uV, s.proxy = null, s.setHandlerProxy(a), s._draggingMgr = new ow(s), s
        }
        return e.prototype.setHandlerProxy = function(t) {
            this.proxy && this.proxy.dispose(), t && (w(fV, function(i) {
                t.on && t.on(i, this[i], this)
            }, this), t.handler = this), this.proxy = t
        }, e.prototype.mousemove = function(t) {
            var i = t.zrX,
                a = t.zrY,
                n = mw(this, i, a),
                o = this._hovered,
                s = o.target;
            s && !s.__zr && (o = this.findHover(o.x, o.y), s = o.target);
            var l = this._hovered = n ? new Nu(i, a) : this.findHover(i, a),
                u = l.target,
                f = this.proxy;
            f.setCursor && f.setCursor(u ? u.cursor : "default"), s && u !== s && this.dispatchToElement(o, "mouseout", t), this.dispatchToElement(l, "mousemove", t), u && u !== s && this.dispatchToElement(l, "mouseover", t)
        }, e.prototype.mouseout = function(t) {
            var i = t.zrEventControl;
            i !== "only_globalout" && this.dispatchToElement(this._hovered, "mouseout", t), i !== "no_globalout" && this.trigger("globalout", {
                type: "globalout",
                event: t
            })
        }, e.prototype.resize = function() {
            this._hovered = new Nu(0, 0)
        }, e.prototype.dispatch = function(t, i) {
            var a = this[t];
            a && a.call(this, i)
        }, e.prototype.dispose = function() {
            this.proxy.dispose(), this.storage = null, this.proxy = null, this.painter = null
        }, e.prototype.setCursorStyle = function(t) {
            var i = this.proxy;
            i.setCursor && i.setCursor(t)
        }, e.prototype.dispatchToElement = function(t, i, a) {
            t = t || {};
            var n = t.target;
            if (!(n && n.silent)) {
                for (var o = "on" + i, s = sV(i, t, a); n && (n[o] && (s.cancelBubble = !!n[o].call(n, s)), n.trigger(i, s), n = n.__hostTarget ? n.__hostTarget : n.parent, !s.cancelBubble););
                s.cancelBubble || (this.trigger(i, s), this.painter && this.painter.eachOtherLayer && this.painter.eachOtherLayer(function(l) {
                    typeof l[o] == "function" && l[o].call(l, s), l.trigger && l.trigger(i, s)
                }))
            }
        }, e.prototype.findHover = function(t, i, a) {
            var n = this.storage.getDisplayList(),
                o = new Nu(t, i);
            if (hw(n, o, t, i, a), this._pointerSize && !o.target) {
                for (var s = [], l = this._pointerSize, u = l / 2, f = new it(t - u, i - u, l, l), p = n.length - 1; p >= 0; p--) {
                    var c = n[p];
                    c !== a && !c.ignore && !c.ignoreCoarsePointer && (!c.parent || !c.parent.ignoreCoarsePointer) && (Xm.copy(c.getBoundingRect()), c.transform && Xm.applyTransform(c.transform), Xm.intersect(f) && s.push(c))
                }
                if (s.length)
                    for (var h = 4, v = Math.PI / 12, d = Math.PI * 2, m = 0; m < u; m += h)
                        for (var g = 0; g < d; g += v) {
                            var y = t + m * Math.cos(g),
                                x = i + m * Math.sin(g);
                            if (hw(s, o, y, x, a), o.target) return o
                        }
            }
            return o
        }, e.prototype.processGesture = function(t, i) {
            this._gestureMgr || (this._gestureMgr = new cw);
            var a = this._gestureMgr;
            i === "start" && a.clear();
            var n = a.recognize(t, this.findHover(t.zrX, t.zrY, null).target, this.proxy.dom);
            if (i === "end" && a.clear(), n) {
                var o = n.type;
                t.gestureEvent = o;
                var s = new Nu;
                s.target = n.target, this.dispatchToElement(s, o, n.event)
            }
        }, e
    }(Ce);
w(["click", "mousedown", "mouseup", "mousewheel", "dblclick", "contextmenu"], function(r) {
    dw.prototype[r] = function(e) {
        var t = e.zrX,
            i = e.zrY,
            a = mw(this, t, i),
            n, o;
        if ((r !== "mouseup" || !a) && (n = this.findHover(t, i), o = n.target), r === "mousedown") this._downEl = o, this._downPoint = [e.zrX, e.zrY], this._upEl = o;
        else if (r === "mouseup") this._upEl = o;
        else if (r === "click") {
            if (this._downEl !== this._upEl || !this._downPoint || Kr(this._downPoint, [e.zrX, e.zrY]) > 4) return;
            this._downPoint = null
        }
        this.dispatchToElement(n, r, e)
    }
});

function pV(r, e, t) {
    if (r[r.rectHover ? "rectContain" : "contain"](e, t)) {
        for (var i = r, a = void 0, n = !1; i;) {
            if (i.ignoreClip && (n = !0), !n) {
                var o = i.getClipPath();
                if (o && !o.contain(e, t)) return !1
            }
            i.silent && (a = !0);
            var s = i.__hostTarget;
            i = s || i.parent
        }
        return a ? vw : !0
    }
    return !1
}

function hw(r, e, t, i, a) {
    for (var n = r.length - 1; n >= 0; n--) {
        var o = r[n],
            s = void 0;
        if (o !== a && !o.ignore && (s = pV(o, t, i)) && (!e.topTarget && (e.topTarget = o), s !== vw)) {
            e.target = o;
            break
        }
    }
}

function mw(r, e, t) {
    var i = r.painter;
    return e < 0 || e > i.getWidth() || t < 0 || t > i.getHeight()
}
var gw = dw;
var _w = 32,
    Ou = 7;

function cV(r) {
    for (var e = 0; r >= _w;) e |= r & 1, r >>= 1;
    return r + e
}

function yw(r, e, t, i) {
    var a = e + 1;
    if (a === t) return 1;
    if (i(r[a++], r[e]) < 0) {
        for (; a < t && i(r[a], r[a - 1]) < 0;) a++;
        hV(r, e, a)
    } else
        for (; a < t && i(r[a], r[a - 1]) >= 0;) a++;
    return a - e
}

function hV(r, e, t) {
    for (t--; e < t;) {
        var i = r[e];
        r[e++] = r[t], r[t--] = i
    }
}

function xw(r, e, t, i, a) {
    for (i === e && i++; i < t; i++) {
        for (var n = r[i], o = e, s = i, l; o < s;) l = o + s >>> 1, a(n, r[l]) < 0 ? s = l : o = l + 1;
        var u = i - o;
        switch (u) {
            case 3:
                r[o + 3] = r[o + 2];
            case 2:
                r[o + 2] = r[o + 1];
            case 1:
                r[o + 1] = r[o];
                break;
            default:
                for (; u > 0;) r[o + u] = r[o + u - 1], u--
        }
        r[o] = n
    }
}

function qm(r, e, t, i, a, n) {
    var o = 0,
        s = 0,
        l = 1;
    if (n(r, e[t + a]) > 0) {
        for (s = i - a; l < s && n(r, e[t + a + l]) > 0;) o = l, l = (l << 1) + 1, l <= 0 && (l = s);
        l > s && (l = s), o += a, l += a
    } else {
        for (s = a + 1; l < s && n(r, e[t + a - l]) <= 0;) o = l, l = (l << 1) + 1, l <= 0 && (l = s);
        l > s && (l = s);
        var u = o;
        o = a - l, l = a - u
    }
    for (o++; o < l;) {
        var f = o + (l - o >>> 1);
        n(r, e[t + f]) > 0 ? o = f + 1 : l = f
    }
    return l
}

function Km(r, e, t, i, a, n) {
    var o = 0,
        s = 0,
        l = 1;
    if (n(r, e[t + a]) < 0) {
        for (s = a + 1; l < s && n(r, e[t + a - l]) < 0;) o = l, l = (l << 1) + 1, l <= 0 && (l = s);
        l > s && (l = s);
        var u = o;
        o = a - l, l = a - u
    } else {
        for (s = i - a; l < s && n(r, e[t + a + l]) >= 0;) o = l, l = (l << 1) + 1, l <= 0 && (l = s);
        l > s && (l = s), o += a, l += a
    }
    for (o++; o < l;) {
        var f = o + (l - o >>> 1);
        n(r, e[t + f]) < 0 ? l = f : o = f + 1
    }
    return l
}

function vV(r, e) {
    var t = Ou,
        i, a, n = 0,
        o = [];
    i = [], a = [];

    function s(h, v) {
        i[n] = h, a[n] = v, n += 1
    }

    function l() {
        for (; n > 1;) {
            var h = n - 2;
            if (h >= 1 && a[h - 1] <= a[h] + a[h + 1] || h >= 2 && a[h - 2] <= a[h] + a[h - 1]) a[h - 1] < a[h + 1] && h--;
            else if (a[h] > a[h + 1]) break;
            f(h)
        }
    }

    function u() {
        for (; n > 1;) {
            var h = n - 2;
            h > 0 && a[h - 1] < a[h + 1] && h--, f(h)
        }
    }

    function f(h) {
        var v = i[h],
            d = a[h],
            m = i[h + 1],
            g = a[h + 1];
        a[h] = d + g, h === n - 3 && (i[h + 1] = i[h + 2], a[h + 1] = a[h + 2]), n--;
        var y = Km(r[m], r, v, d, 0, e);
        v += y, d -= y, d !== 0 && (g = qm(r[v + d - 1], r, m, g, g - 1, e), g !== 0 && (d <= g ? p(v, d, m, g) : c(v, d, m, g)))
    }

    function p(h, v, d, m) {
        var g = 0;
        for (g = 0; g < v; g++) o[g] = r[h + g];
        var y = 0,
            x = d,
            _ = h;
        if (r[_++] = r[x++], --m === 0) {
            for (g = 0; g < v; g++) r[_ + g] = o[y + g];
            return
        }
        if (v === 1) {
            for (g = 0; g < m; g++) r[_ + g] = r[x + g];
            r[_ + m] = o[y];
            return
        }
        for (var S = t, b, T, C;;) {
            b = 0, T = 0, C = !1;
            do
                if (e(r[x], o[y]) < 0) {
                    if (r[_++] = r[x++], T++, b = 0, --m === 0) {
                        C = !0;
                        break
                    }
                } else if (r[_++] = o[y++], b++, T = 0, --v === 1) {
                C = !0;
                break
            } while ((b | T) < S);
            if (C) break;
            do {
                if (b = Km(r[x], o, y, v, 0, e), b !== 0) {
                    for (g = 0; g < b; g++) r[_ + g] = o[y + g];
                    if (_ += b, y += b, v -= b, v <= 1) {
                        C = !0;
                        break
                    }
                }
                if (r[_++] = r[x++], --m === 0) {
                    C = !0;
                    break
                }
                if (T = qm(o[y], r, x, m, 0, e), T !== 0) {
                    for (g = 0; g < T; g++) r[_ + g] = r[x + g];
                    if (_ += T, x += T, m -= T, m === 0) {
                        C = !0;
                        break
                    }
                }
                if (r[_++] = o[y++], --v === 1) {
                    C = !0;
                    break
                }
                S--
            } while (b >= Ou || T >= Ou);
            if (C) break;
            S < 0 && (S = 0), S += 2
        }
        if (t = S, t < 1 && (t = 1), v === 1) {
            for (g = 0; g < m; g++) r[_ + g] = r[x + g];
            r[_ + m] = o[y]
        } else {
            if (v === 0) throw new Error;
            for (g = 0; g < v; g++) r[_ + g] = o[y + g]
        }
    }

    function c(h, v, d, m) {
        var g = 0;
        for (g = 0; g < m; g++) o[g] = r[d + g];
        var y = h + v - 1,
            x = m - 1,
            _ = d + m - 1,
            S = 0,
            b = 0;
        if (r[_--] = r[y--], --v === 0) {
            for (S = _ - (m - 1), g = 0; g < m; g++) r[S + g] = o[g];
            return
        }
        if (m === 1) {
            for (_ -= v, y -= v, b = _ + 1, S = y + 1, g = v - 1; g >= 0; g--) r[b + g] = r[S + g];
            r[_] = o[x];
            return
        }
        for (var T = t;;) {
            var C = 0,
                A = 0,
                D = !1;
            do
                if (e(o[x], r[y]) < 0) {
                    if (r[_--] = r[y--], C++, A = 0, --v === 0) {
                        D = !0;
                        break
                    }
                } else if (r[_--] = o[x--], A++, C = 0, --m === 1) {
                D = !0;
                break
            } while ((C | A) < T);
            if (D) break;
            do {
                if (C = v - Km(o[x], r, h, v, v - 1, e), C !== 0) {
                    for (_ -= C, y -= C, v -= C, b = _ + 1, S = y + 1, g = C - 1; g >= 0; g--) r[b + g] = r[S + g];
                    if (v === 0) {
                        D = !0;
                        break
                    }
                }
                if (r[_--] = o[x--], --m === 1) {
                    D = !0;
                    break
                }
                if (A = m - qm(r[y], o, 0, m, m - 1, e), A !== 0) {
                    for (_ -= A, x -= A, m -= A, b = _ + 1, S = x + 1, g = 0; g < A; g++) r[b + g] = o[S + g];
                    if (m <= 1) {
                        D = !0;
                        break
                    }
                }
                if (r[_--] = r[y--], --v === 0) {
                    D = !0;
                    break
                }
                T--
            } while (C >= Ou || A >= Ou);
            if (D) break;
            T < 0 && (T = 0), T += 2
        }
        if (t = T, t < 1 && (t = 1), m === 1) {
            for (_ -= v, y -= v, b = _ + 1, S = y + 1, g = v - 1; g >= 0; g--) r[b + g] = r[S + g];
            r[_] = o[x]
        } else {
            if (m === 0) throw new Error;
            for (S = _ - (m - 1), g = 0; g < m; g++) r[S + g] = o[g]
        }
    }
    return {
        mergeRuns: l,
        forceMergeRuns: u,
        pushRun: s
    }
}

function Co(r, e, t, i) {
    t || (t = 0), i || (i = r.length);
    var a = i - t;
    if (!(a < 2)) {
        var n = 0;
        if (a < _w) {
            n = yw(r, t, i, e), xw(r, t, i, t + n, e);
            return
        }
        var o = vV(r, e),
            s = cV(a);
        do {
            if (n = yw(r, t, i, e), n < s) {
                var l = a;
                l > s && (l = s), xw(r, t, t + l, t + n, e), n = l
            }
            o.pushRun(t, n), o.mergeRuns(), a -= n, t += n
        } while (a !== 0);
        o.forceMergeRuns()
    }
}
var Pe = 1,
    Ao = 2,
    dn = 4;
var Sw = !1;

function jm() {
    Sw || (Sw = !0, console.warn("z / z2 / zlevel of displayable is invalid, which may cause unexpected errors"))
}

function bw(r, e) {
    return r.zlevel === e.zlevel ? r.z === e.z ? r.z2 - e.z2 : r.z - e.z : r.zlevel - e.zlevel
}
var dV = function() {
        function r() {
            this._roots = [], this._displayList = [], this._displayListLen = 0, this.displayableSortFunc = bw
        }
        return r.prototype.traverse = function(e, t) {
            for (var i = 0; i < this._roots.length; i++) this._roots[i].traverse(e, t)
        }, r.prototype.getDisplayList = function(e, t) {
            t = t || !1;
            var i = this._displayList;
            return (e || !i.length) && this.updateDisplayList(t), i
        }, r.prototype.updateDisplayList = function(e) {
            this._displayListLen = 0;
            for (var t = this._roots, i = this._displayList, a = 0, n = t.length; a < n; a++) this._updateAndAddDisplayable(t[a], null, e);
            i.length = this._displayListLen, Co(i, bw)
        }, r.prototype._updateAndAddDisplayable = function(e, t, i) {
            if (!(e.ignore && !i)) {
                e.beforeUpdate(), e.update(), e.afterUpdate();
                var a = e.getClipPath();
                if (e.ignoreClip) t = null;
                else if (a) {
                    t ? t = t.slice() : t = [];
                    for (var n = a, o = e; n;) n.parent = o, n.updateTransform(), t.push(n), o = n, n = n.getClipPath()
                }
                if (e.childrenRef) {
                    for (var s = e.childrenRef(), l = 0; l < s.length; l++) {
                        var u = s[l];
                        e.__dirty && (u.__dirty |= Pe), this._updateAndAddDisplayable(u, t, i)
                    }
                    e.__dirty = 0
                } else {
                    var f = e;
                    t && t.length ? f.__clipPaths = t : f.__clipPaths && f.__clipPaths.length > 0 && (f.__clipPaths = []), isNaN(f.z) && (jm(), f.z = 0), isNaN(f.z2) && (jm(), f.z2 = 0), isNaN(f.zlevel) && (jm(), f.zlevel = 0), this._displayList[this._displayListLen++] = f
                }
                var p = e.getDecalElement && e.getDecalElement();
                p && this._updateAndAddDisplayable(p, t, i);
                var c = e.getTextGuideLine();
                c && this._updateAndAddDisplayable(c, t, i);
                var h = e.getTextContent();
                h && this._updateAndAddDisplayable(h, t, i)
            }
        }, r.prototype.addRoot = function(e) {
            e.__zr && e.__zr.storage === this || this._roots.push(e)
        }, r.prototype.delRoot = function(e) {
            if (e instanceof Array) {
                for (var t = 0, i = e.length; t < i; t++) this.delRoot(e[t]);
                return
            }
            var a = at(this._roots, e);
            a >= 0 && this._roots.splice(a, 1)
        }, r.prototype.delAllRoots = function() {
            this._roots = [], this._displayList = [], this._displayListLen = 0
        }, r.prototype.getRoots = function() {
            return this._roots
        }, r.prototype.dispose = function() {
            this._displayList = null, this._roots = null
        }, r
    }(),
    ww = dV;
var Tw;
Tw = Ct.hasGlobalWindow && (window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window) || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame) || function(r) {
    return setTimeout(r, 16)
};
var zu = Tw;
var sc = {
        linear: function(r) {
            return r
        },
        quadraticIn: function(r) {
            return r * r
        },
        quadraticOut: function(r) {
            return r * (2 - r)
        },
        quadraticInOut: function(r) {
            return (r *= 2) < 1 ? .5 * r * r : -.5 * (--r * (r - 2) - 1)
        },
        cubicIn: function(r) {
            return r * r * r
        },
        cubicOut: function(r) {
            return --r * r * r + 1
        },
        cubicInOut: function(r) {
            return (r *= 2) < 1 ? .5 * r * r * r : .5 * ((r -= 2) * r * r + 2)
        },
        quarticIn: function(r) {
            return r * r * r * r
        },
        quarticOut: function(r) {
            return 1 - --r * r * r * r
        },
        quarticInOut: function(r) {
            return (r *= 2) < 1 ? .5 * r * r * r * r : -.5 * ((r -= 2) * r * r * r - 2)
        },
        quinticIn: function(r) {
            return r * r * r * r * r
        },
        quinticOut: function(r) {
            return --r * r * r * r * r + 1
        },
        quinticInOut: function(r) {
            return (r *= 2) < 1 ? .5 * r * r * r * r * r : .5 * ((r -= 2) * r * r * r * r + 2)
        },
        sinusoidalIn: function(r) {
            return 1 - Math.cos(r * Math.PI / 2)
        },
        sinusoidalOut: function(r) {
            return Math.sin(r * Math.PI / 2)
        },
        sinusoidalInOut: function(r) {
            return .5 * (1 - Math.cos(Math.PI * r))
        },
        exponentialIn: function(r) {
            return r === 0 ? 0 : Math.pow(1024, r - 1)
        },
        exponentialOut: function(r) {
            return r === 1 ? 1 : 1 - Math.pow(2, -10 * r)
        },
        exponentialInOut: function(r) {
            return r === 0 ? 0 : r === 1 ? 1 : (r *= 2) < 1 ? .5 * Math.pow(1024, r - 1) : .5 * (-Math.pow(2, -10 * (r - 1)) + 2)
        },
        circularIn: function(r) {
            return 1 - Math.sqrt(1 - r * r)
        },
        circularOut: function(r) {
            return Math.sqrt(1 - --r * r)
        },
        circularInOut: function(r) {
            return (r *= 2) < 1 ? -.5 * (Math.sqrt(1 - r * r) - 1) : .5 * (Math.sqrt(1 - (r -= 2) * r) + 1)
        },
        elasticIn: function(r) {
            var e, t = .1,
                i = .4;
            return r === 0 ? 0 : r === 1 ? 1 : (!t || t < 1 ? (t = 1, e = i / 4) : e = i * Math.asin(1 / t) / (2 * Math.PI), -(t * Math.pow(2, 10 * (r -= 1)) * Math.sin((r - e) * (2 * Math.PI) / i)))
        },
        elasticOut: function(r) {
            var e, t = .1,
                i = .4;
            return r === 0 ? 0 : r === 1 ? 1 : (!t || t < 1 ? (t = 1, e = i / 4) : e = i * Math.asin(1 / t) / (2 * Math.PI), t * Math.pow(2, -10 * r) * Math.sin((r - e) * (2 * Math.PI) / i) + 1)
        },
        elasticInOut: function(r) {
            var e, t = .1,
                i = .4;
            return r === 0 ? 0 : r === 1 ? 1 : (!t || t < 1 ? (t = 1, e = i / 4) : e = i * Math.asin(1 / t) / (2 * Math.PI), (r *= 2) < 1 ? -.5 * (t * Math.pow(2, 10 * (r -= 1)) * Math.sin((r - e) * (2 * Math.PI) / i)) : t * Math.pow(2, -10 * (r -= 1)) * Math.sin((r - e) * (2 * Math.PI) / i) * .5 + 1)
        },
        backIn: function(r) {
            var e = 1.70158;
            return r * r * ((e + 1) * r - e)
        },
        backOut: function(r) {
            var e = 1.70158;
            return --r * r * ((e + 1) * r + e) + 1
        },
        backInOut: function(r) {
            var e = 2.5949095;
            return (r *= 2) < 1 ? .5 * (r * r * ((e + 1) * r - e)) : .5 * ((r -= 2) * r * ((e + 1) * r + e) + 2)
        },
        bounceIn: function(r) {
            return 1 - sc.bounceOut(1 - r)
        },
        bounceOut: function(r) {
            return r < .36363636363636365 ? 7.5625 * r * r : r < .7272727272727273 ? 7.5625 * (r -= .5454545454545454) * r + .75 : r < .9090909090909091 ? 7.5625 * (r -= .8181818181818182) * r + .9375 : 7.5625 * (r -= .9545454545454546) * r + .984375
        },
        bounceInOut: function(r) {
            return r < .5 ? sc.bounceIn(r * 2) * .5 : sc.bounceOut(r * 2 - 1) * .5 + .5
        }
    },
    lc = sc;
var uc = Math.pow,
    gn = Math.sqrt,
    pc = 1e-8,
    Aw = 1e-4,
    Cw = gn(3),
    fc = 1 / 3,
    sa = Ui(),
    pi = Ui(),
    Ys = Ui();

function mn(r) {
    return r > -pc && r < pc
}

function Dw(r) {
    return r > pc || r < -pc
}

function ce(r, e, t, i, a) {
    var n = 1 - a;
    return n * n * (n * r + 3 * a * e) + a * a * (a * i + 3 * n * t)
}

function Jm(r, e, t, i, a) {
    var n = 1 - a;
    return 3 * (((e - r) * n + 2 * (t - e) * a) * n + (i - t) * a * a)
}

function Do(r, e, t, i, a, n) {
    var o = i + 3 * (e - t) - r,
        s = 3 * (t - e * 2 + r),
        l = 3 * (e - r),
        u = r - a,
        f = s * s - 3 * o * l,
        p = s * l - 9 * o * u,
        c = l * l - 3 * s * u,
        h = 0;
    if (mn(f) && mn(p))
        if (mn(s)) n[0] = 0;
        else {
            var v = -l / s;
            v >= 0 && v <= 1 && (n[h++] = v)
        }
    else {
        var d = p * p - 4 * f * c;
        if (mn(d)) {
            var m = p / f,
                v = -s / o + m,
                g = -m / 2;
            v >= 0 && v <= 1 && (n[h++] = v), g >= 0 && g <= 1 && (n[h++] = g)
        } else if (d > 0) {
            var y = gn(d),
                x = f * s + 1.5 * o * (-p + y),
                _ = f * s + 1.5 * o * (-p - y);
            x < 0 ? x = -uc(-x, fc) : x = uc(x, fc), _ < 0 ? _ = -uc(-_, fc) : _ = uc(_, fc);
            var v = (-s - (x + _)) / (3 * o);
            v >= 0 && v <= 1 && (n[h++] = v)
        } else {
            var S = (2 * f * s - 3 * o * p) / (2 * gn(f * f * f)),
                b = Math.acos(S) / 3,
                T = gn(f),
                C = Math.cos(b),
                v = (-s - 2 * T * C) / (3 * o),
                g = (-s + T * (C + Cw * Math.sin(b))) / (3 * o),
                A = (-s + T * (C - Cw * Math.sin(b))) / (3 * o);
            v >= 0 && v <= 1 && (n[h++] = v), g >= 0 && g <= 1 && (n[h++] = g), A >= 0 && A <= 1 && (n[h++] = A)
        }
    }
    return h
}

function cc(r, e, t, i, a) {
    var n = 6 * t - 12 * e + 6 * r,
        o = 9 * e + 3 * i - 3 * r - 9 * t,
        s = 3 * e - 3 * r,
        l = 0;
    if (mn(o)) {
        if (Dw(n)) {
            var u = -s / n;
            u >= 0 && u <= 1 && (a[l++] = u)
        }
    } else {
        var f = n * n - 4 * o * s;
        if (mn(f)) a[0] = -n / (2 * o);
        else if (f > 0) {
            var p = gn(f),
                u = (-n + p) / (2 * o),
                c = (-n - p) / (2 * o);
            u >= 0 && u <= 1 && (a[l++] = u), c >= 0 && c <= 1 && (a[l++] = c)
        }
    }
    return l
}

function ci(r, e, t, i, a, n) {
    var o = (e - r) * a + r,
        s = (t - e) * a + e,
        l = (i - t) * a + t,
        u = (s - o) * a + o,
        f = (l - s) * a + s,
        p = (f - u) * a + u;
    n[0] = r, n[1] = o, n[2] = u, n[3] = p, n[4] = p, n[5] = f, n[6] = l, n[7] = i
}

function hc(r, e, t, i, a, n, o, s, l, u, f) {
    var p, c = .005,
        h = 1 / 0,
        v, d, m, g;
    sa[0] = l, sa[1] = u;
    for (var y = 0; y < 1; y += .05) pi[0] = ce(r, t, a, o, y), pi[1] = ce(e, i, n, s, y), m = oa(sa, pi), m < h && (p = y, h = m);
    h = 1 / 0;
    for (var x = 0; x < 32 && !(c < Aw); x++) v = p - c, d = p + c, pi[0] = ce(r, t, a, o, v), pi[1] = ce(e, i, n, s, v), m = oa(pi, sa), v >= 0 && m < h ? (p = v, h = m) : (Ys[0] = ce(r, t, a, o, d), Ys[1] = ce(e, i, n, s, d), g = oa(Ys, sa), d <= 1 && g < h ? (p = d, h = g) : c *= .5);
    return f && (f[0] = ce(r, t, a, o, p), f[1] = ce(e, i, n, s, p)), gn(h)
}

function Mw(r, e, t, i, a, n, o, s, l) {
    for (var u = r, f = e, p = 0, c = 1 / l, h = 1; h <= l; h++) {
        var v = h * c,
            d = ce(r, t, a, o, v),
            m = ce(e, i, n, s, v),
            g = d - u,
            y = m - f;
        p += Math.sqrt(g * g + y * y), u = d, f = m
    }
    return p
}

function ge(r, e, t, i) {
    var a = 1 - i;
    return a * (a * r + 2 * i * e) + i * i * t
}

function ku(r, e, t, i) {
    return 2 * ((1 - i) * (e - r) + i * (t - e))
}

function Lw(r, e, t, i, a) {
    var n = r - 2 * e + t,
        o = 2 * (e - r),
        s = r - i,
        l = 0;
    if (mn(n)) {
        if (Dw(o)) {
            var u = -s / o;
            u >= 0 && u <= 1 && (a[l++] = u)
        }
    } else {
        var f = o * o - 4 * n * s;
        if (mn(f)) {
            var u = -o / (2 * n);
            u >= 0 && u <= 1 && (a[l++] = u)
        } else if (f > 0) {
            var p = gn(f),
                u = (-o + p) / (2 * n),
                c = (-o - p) / (2 * n);
            u >= 0 && u <= 1 && (a[l++] = u), c >= 0 && c <= 1 && (a[l++] = c)
        }
    }
    return l
}

function vc(r, e, t) {
    var i = r + t - 2 * e;
    return i === 0 ? .5 : (r - e) / i
}

function yn(r, e, t, i, a) {
    var n = (e - r) * i + r,
        o = (t - e) * i + e,
        s = (o - n) * i + n;
    a[0] = r, a[1] = n, a[2] = s, a[3] = s, a[4] = o, a[5] = t
}

function dc(r, e, t, i, a, n, o, s, l) {
    var u, f = .005,
        p = 1 / 0;
    sa[0] = o, sa[1] = s;
    for (var c = 0; c < 1; c += .05) {
        pi[0] = ge(r, t, a, c), pi[1] = ge(e, i, n, c);
        var h = oa(sa, pi);
        h < p && (u = c, p = h)
    }
    p = 1 / 0;
    for (var v = 0; v < 32 && !(f < Aw); v++) {
        var d = u - f,
            m = u + f;
        pi[0] = ge(r, t, a, d), pi[1] = ge(e, i, n, d);
        var h = oa(pi, sa);
        if (d >= 0 && h < p) u = d, p = h;
        else {
            Ys[0] = ge(r, t, a, m), Ys[1] = ge(e, i, n, m);
            var g = oa(Ys, sa);
            m <= 1 && g < p ? (u = m, p = g) : f *= .5
        }
    }
    return l && (l[0] = ge(r, t, a, u), l[1] = ge(e, i, n, u)), gn(p)
}

function Iw(r, e, t, i, a, n, o) {
    for (var s = r, l = e, u = 0, f = 1 / o, p = 1; p <= o; p++) {
        var c = p * f,
            h = ge(r, t, a, c),
            v = ge(e, i, n, c),
            d = h - s,
            m = v - l;
        u += Math.sqrt(d * d + m * m), s = h, l = v
    }
    return u
}
var mV = /cubic-bezier\(([0-9,\.e ]+)\)/;

function Zs(r) {
    var e = r && mV.exec(r);
    if (e) {
        var t = e[1].split(","),
            i = +Ie(t[0]),
            a = +Ie(t[1]),
            n = +Ie(t[2]),
            o = +Ie(t[3]);
        if (isNaN(i + a + n + o)) return;
        var s = [];
        return function(l) {
            return l <= 0 ? 0 : l >= 1 ? 1 : Do(0, i, n, 1, l, s) && ce(0, a, o, 1, s[0])
        }
    }
}
var gV = function() {
        function r(e) {
            this._inited = !1, this._startTime = 0, this._pausedTime = 0, this._paused = !1, this._life = e.life || 1e3, this._delay = e.delay || 0, this.loop = e.loop || !1, this.onframe = e.onframe || Yt, this.ondestroy = e.ondestroy || Yt, this.onrestart = e.onrestart || Yt, e.easing && this.setEasing(e.easing)
        }
        return r.prototype.step = function(e, t) {
            if (this._inited || (this._startTime = e + this._delay, this._inited = !0), this._paused) {
                this._pausedTime += t;
                return
            }
            var i = this._life,
                a = e - this._startTime - this._pausedTime,
                n = a / i;
            n < 0 && (n = 0), n = Math.min(n, 1);
            var o = this.easingFunc,
                s = o ? o(n) : n;
            if (this.onframe(s), n === 1)
                if (this.loop) {
                    var l = a % i;
                    this._startTime = e - l, this._pausedTime = 0, this.onrestart()
                } else return !0;
            return !1
        }, r.prototype.pause = function() {
            this._paused = !0
        }, r.prototype.resume = function() {
            this._paused = !1
        }, r.prototype.setEasing = function(e) {
            this.easing = e, this.easingFunc = X(e) ? e : lc[e] || Zs(e)
        }, r
    }(),
    Ew = gV;
var Fu = {};
ui(Fu, {
    fastLerp: () => qs,
    fastMapToColor: () => wV,
    lerp: () => gc,
    lift: () => Bu,
    liftColor: () => Ks,
    lum: () => Lo,
    mapToColor: () => TV,
    modifyAlpha: () => Sn,
    modifyHSL: () => _n,
    parse: () => Re,
    random: () => CV,
    stringify: () => Mr,
    toHex: () => bV
});
var Pw = function() {
    function r(e) {
        this.value = e
    }
    return r
}();
var yV = function() {
    function r() {
        this._len = 0
    }
    return r.prototype.insert = function(e) {
        var t = new Pw(e);
        return this.insertEntry(t), t
    }, r.prototype.insertEntry = function(e) {
        this.head ? (this.tail.next = e, e.prev = this.tail, e.next = null, this.tail = e) : this.head = this.tail = e, this._len++
    }, r.prototype.remove = function(e) {
        var t = e.prev,
            i = e.next;
        t ? t.next = i : this.head = i, i ? i.prev = t : this.tail = t, e.next = e.prev = null, this._len--
    }, r.prototype.len = function() {
        return this._len
    }, r.prototype.clear = function() {
        this.head = this.tail = null, this._len = 0
    }, r
}();
var xV = function() {
        function r(e) {
            this._list = new yV, this._maxSize = 10, this._map = {}, this._maxSize = e
        }
        return r.prototype.put = function(e, t) {
            var i = this._list,
                a = this._map,
                n = null;
            if (a[e] == null) {
                var o = i.len(),
                    s = this._lastRemovedEntry;
                if (o >= this._maxSize && o > 0) {
                    var l = i.head;
                    i.remove(l), delete a[l.key], n = l.value, this._lastRemovedEntry = l
                }
                s ? s.value = t : s = new Pw(t), s.key = e, i.insertEntry(s), a[e] = s
            }
            return n
        }, r.prototype.get = function(e) {
            var t = this._map[e],
                i = this._list;
            if (t != null) return t !== i.tail && (i.remove(t), i.insertEntry(t)), t.value
        }, r.prototype.clear = function() {
            this._list.clear(), this._map = {}
        }, r.prototype.len = function() {
            return this._list.len()
        }, r
    }(),
    ka = xV;
var Rw = {
    transparent: [0, 0, 0, 0],
    aliceblue: [240, 248, 255, 1],
    antiquewhite: [250, 235, 215, 1],
    aqua: [0, 255, 255, 1],
    aquamarine: [127, 255, 212, 1],
    azure: [240, 255, 255, 1],
    beige: [245, 245, 220, 1],
    bisque: [255, 228, 196, 1],
    black: [0, 0, 0, 1],
    blanchedalmond: [255, 235, 205, 1],
    blue: [0, 0, 255, 1],
    blueviolet: [138, 43, 226, 1],
    brown: [165, 42, 42, 1],
    burlywood: [222, 184, 135, 1],
    cadetblue: [95, 158, 160, 1],
    chartreuse: [127, 255, 0, 1],
    chocolate: [210, 105, 30, 1],
    coral: [255, 127, 80, 1],
    cornflowerblue: [100, 149, 237, 1],
    cornsilk: [255, 248, 220, 1],
    crimson: [220, 20, 60, 1],
    cyan: [0, 255, 255, 1],
    darkblue: [0, 0, 139, 1],
    darkcyan: [0, 139, 139, 1],
    darkgoldenrod: [184, 134, 11, 1],
    darkgray: [169, 169, 169, 1],
    darkgreen: [0, 100, 0, 1],
    darkgrey: [169, 169, 169, 1],
    darkkhaki: [189, 183, 107, 1],
    darkmagenta: [139, 0, 139, 1],
    darkolivegreen: [85, 107, 47, 1],
    darkorange: [255, 140, 0, 1],
    darkorchid: [153, 50, 204, 1],
    darkred: [139, 0, 0, 1],
    darksalmon: [233, 150, 122, 1],
    darkseagreen: [143, 188, 143, 1],
    darkslateblue: [72, 61, 139, 1],
    darkslategray: [47, 79, 79, 1],
    darkslategrey: [47, 79, 79, 1],
    darkturquoise: [0, 206, 209, 1],
    darkviolet: [148, 0, 211, 1],
    deeppink: [255, 20, 147, 1],
    deepskyblue: [0, 191, 255, 1],
    dimgray: [105, 105, 105, 1],
    dimgrey: [105, 105, 105, 1],
    dodgerblue: [30, 144, 255, 1],
    firebrick: [178, 34, 34, 1],
    floralwhite: [255, 250, 240, 1],
    forestgreen: [34, 139, 34, 1],
    fuchsia: [255, 0, 255, 1],
    gainsboro: [220, 220, 220, 1],
    ghostwhite: [248, 248, 255, 1],
    gold: [255, 215, 0, 1],
    goldenrod: [218, 165, 32, 1],
    gray: [128, 128, 128, 1],
    green: [0, 128, 0, 1],
    greenyellow: [173, 255, 47, 1],
    grey: [128, 128, 128, 1],
    honeydew: [240, 255, 240, 1],
    hotpink: [255, 105, 180, 1],
    indianred: [205, 92, 92, 1],
    indigo: [75, 0, 130, 1],
    ivory: [255, 255, 240, 1],
    khaki: [240, 230, 140, 1],
    lavender: [230, 230, 250, 1],
    lavenderblush: [255, 240, 245, 1],
    lawngreen: [124, 252, 0, 1],
    lemonchiffon: [255, 250, 205, 1],
    lightblue: [173, 216, 230, 1],
    lightcoral: [240, 128, 128, 1],
    lightcyan: [224, 255, 255, 1],
    lightgoldenrodyellow: [250, 250, 210, 1],
    lightgray: [211, 211, 211, 1],
    lightgreen: [144, 238, 144, 1],
    lightgrey: [211, 211, 211, 1],
    lightpink: [255, 182, 193, 1],
    lightsalmon: [255, 160, 122, 1],
    lightseagreen: [32, 178, 170, 1],
    lightskyblue: [135, 206, 250, 1],
    lightslategray: [119, 136, 153, 1],
    lightslategrey: [119, 136, 153, 1],
    lightsteelblue: [176, 196, 222, 1],
    lightyellow: [255, 255, 224, 1],
    lime: [0, 255, 0, 1],
    limegreen: [50, 205, 50, 1],
    linen: [250, 240, 230, 1],
    magenta: [255, 0, 255, 1],
    maroon: [128, 0, 0, 1],
    mediumaquamarine: [102, 205, 170, 1],
    mediumblue: [0, 0, 205, 1],
    mediumorchid: [186, 85, 211, 1],
    mediumpurple: [147, 112, 219, 1],
    mediumseagreen: [60, 179, 113, 1],
    mediumslateblue: [123, 104, 238, 1],
    mediumspringgreen: [0, 250, 154, 1],
    mediumturquoise: [72, 209, 204, 1],
    mediumvioletred: [199, 21, 133, 1],
    midnightblue: [25, 25, 112, 1],
    mintcream: [245, 255, 250, 1],
    mistyrose: [255, 228, 225, 1],
    moccasin: [255, 228, 181, 1],
    navajowhite: [255, 222, 173, 1],
    navy: [0, 0, 128, 1],
    oldlace: [253, 245, 230, 1],
    olive: [128, 128, 0, 1],
    olivedrab: [107, 142, 35, 1],
    orange: [255, 165, 0, 1],
    orangered: [255, 69, 0, 1],
    orchid: [218, 112, 214, 1],
    palegoldenrod: [238, 232, 170, 1],
    palegreen: [152, 251, 152, 1],
    paleturquoise: [175, 238, 238, 1],
    palevioletred: [219, 112, 147, 1],
    papayawhip: [255, 239, 213, 1],
    peachpuff: [255, 218, 185, 1],
    peru: [205, 133, 63, 1],
    pink: [255, 192, 203, 1],
    plum: [221, 160, 221, 1],
    powderblue: [176, 224, 230, 1],
    purple: [128, 0, 128, 1],
    red: [255, 0, 0, 1],
    rosybrown: [188, 143, 143, 1],
    royalblue: [65, 105, 225, 1],
    saddlebrown: [139, 69, 19, 1],
    salmon: [250, 128, 114, 1],
    sandybrown: [244, 164, 96, 1],
    seagreen: [46, 139, 87, 1],
    seashell: [255, 245, 238, 1],
    sienna: [160, 82, 45, 1],
    silver: [192, 192, 192, 1],
    skyblue: [135, 206, 235, 1],
    slateblue: [106, 90, 205, 1],
    slategray: [112, 128, 144, 1],
    slategrey: [112, 128, 144, 1],
    snow: [255, 250, 250, 1],
    springgreen: [0, 255, 127, 1],
    steelblue: [70, 130, 180, 1],
    tan: [210, 180, 140, 1],
    teal: [0, 128, 128, 1],
    thistle: [216, 191, 216, 1],
    tomato: [255, 99, 71, 1],
    turquoise: [64, 224, 208, 1],
    violet: [238, 130, 238, 1],
    wheat: [245, 222, 179, 1],
    white: [255, 255, 255, 1],
    whitesmoke: [245, 245, 245, 1],
    yellow: [255, 255, 0, 1],
    yellowgreen: [154, 205, 50, 1]
};

function Vi(r) {
    return r = Math.round(r), r < 0 ? 0 : r > 255 ? 255 : r
}

function _V(r) {
    return r = Math.round(r), r < 0 ? 0 : r > 360 ? 360 : r
}

function Vu(r) {
    return r < 0 ? 0 : r > 1 ? 1 : r
}

function Qm(r) {
    var e = r;
    return e.length && e.charAt(e.length - 1) === "%" ? Vi(parseFloat(e) / 100 * 255) : Vi(parseInt(e, 10))
}

function Mo(r) {
    var e = r;
    return e.length && e.charAt(e.length - 1) === "%" ? Vu(parseFloat(e) / 100) : Vu(parseFloat(e))
}

function $m(r, e, t) {
    return t < 0 ? t += 1 : t > 1 && (t -= 1), t * 6 < 1 ? r + (e - r) * t * 6 : t * 2 < 1 ? e : t * 3 < 2 ? r + (e - r) * (2 / 3 - t) * 6 : r
}

function xn(r, e, t) {
    return r + (e - r) * t
}

function hi(r, e, t, i, a) {
    return r[0] = e, r[1] = t, r[2] = i, r[3] = a, r
}

function tg(r, e) {
    return r[0] = e[0], r[1] = e[1], r[2] = e[2], r[3] = e[3], r
}
var Ow = new ka(20),
    mc = null;

function Xs(r, e) {
    mc && tg(mc, e), mc = Ow.put(r, mc || e.slice())
}

function Re(r, e) {
    if (r) {
        e = e || [];
        var t = Ow.get(r);
        if (t) return tg(e, t);
        r = r + "";
        var i = r.replace(/ /g, "").toLowerCase();
        if (i in Rw) return tg(e, Rw[i]), Xs(r, e), e;
        var a = i.length;
        if (i.charAt(0) === "#") {
            if (a === 4 || a === 5) {
                var n = parseInt(i.slice(1, 4), 16);
                if (!(n >= 0 && n <= 4095)) {
                    hi(e, 0, 0, 0, 1);
                    return
                }
                return hi(e, (n & 3840) >> 4 | (n & 3840) >> 8, n & 240 | (n & 240) >> 4, n & 15 | (n & 15) << 4, a === 5 ? parseInt(i.slice(4), 16) / 15 : 1), Xs(r, e), e
            } else if (a === 7 || a === 9) {
                var n = parseInt(i.slice(1, 7), 16);
                if (!(n >= 0 && n <= 16777215)) {
                    hi(e, 0, 0, 0, 1);
                    return
                }
                return hi(e, (n & 16711680) >> 16, (n & 65280) >> 8, n & 255, a === 9 ? parseInt(i.slice(7), 16) / 255 : 1), Xs(r, e), e
            }
            return
        }
        var o = i.indexOf("("),
            s = i.indexOf(")");
        if (o !== -1 && s + 1 === a) {
            var l = i.substr(0, o),
                u = i.substr(o + 1, s - (o + 1)).split(","),
                f = 1;
            switch (l) {
                case "rgba":
                    if (u.length !== 4) return u.length === 3 ? hi(e, +u[0], +u[1], +u[2], 1) : hi(e, 0, 0, 0, 1);
                    f = Mo(u.pop());
                case "rgb":
                    if (u.length >= 3) return hi(e, Qm(u[0]), Qm(u[1]), Qm(u[2]), u.length === 3 ? f : Mo(u[3])), Xs(r, e), e;
                    hi(e, 0, 0, 0, 1);
                    return;
                case "hsla":
                    if (u.length !== 4) {
                        hi(e, 0, 0, 0, 1);
                        return
                    }
                    return u[3] = Mo(u[3]), eg(u, e), Xs(r, e), e;
                case "hsl":
                    if (u.length !== 3) {
                        hi(e, 0, 0, 0, 1);
                        return
                    }
                    return eg(u, e), Xs(r, e), e;
                default:
                    return
            }
        }
        hi(e, 0, 0, 0, 1)
    }
}

function eg(r, e) {
    var t = (parseFloat(r[0]) % 360 + 360) % 360 / 360,
        i = Mo(r[1]),
        a = Mo(r[2]),
        n = a <= .5 ? a * (i + 1) : a + i - a * i,
        o = a * 2 - n;
    return e = e || [], hi(e, Vi($m(o, n, t + 1 / 3) * 255), Vi($m(o, n, t) * 255), Vi($m(o, n, t - 1 / 3) * 255), 1), r.length === 4 && (e[3] = r[3]), e
}

function SV(r) {
    if (r) {
        var e = r[0] / 255,
            t = r[1] / 255,
            i = r[2] / 255,
            a = Math.min(e, t, i),
            n = Math.max(e, t, i),
            o = n - a,
            s = (n + a) / 2,
            l, u;
        if (o === 0) l = 0, u = 0;
        else {
            s < .5 ? u = o / (n + a) : u = o / (2 - n - a);
            var f = ((n - e) / 6 + o / 2) / o,
                p = ((n - t) / 6 + o / 2) / o,
                c = ((n - i) / 6 + o / 2) / o;
            e === n ? l = c - p : t === n ? l = 1 / 3 + f - c : i === n && (l = 2 / 3 + p - f), l < 0 && (l += 1), l > 1 && (l -= 1)
        }
        var h = [l * 360, u, s];
        return r[3] != null && h.push(r[3]), h
    }
}

function Bu(r, e) {
    var t = Re(r);
    if (t) {
        for (var i = 0; i < 3; i++) e < 0 ? t[i] = t[i] * (1 - e) | 0 : t[i] = (255 - t[i]) * e + t[i] | 0, t[i] > 255 ? t[i] = 255 : t[i] < 0 && (t[i] = 0);
        return Mr(t, t.length === 4 ? "rgba" : "rgb")
    }
}

function bV(r) {
    var e = Re(r);
    if (e) return ((1 << 24) + (e[0] << 16) + (e[1] << 8) + +e[2]).toString(16).slice(1)
}

function qs(r, e, t) {
    if (!(!(e && e.length) || !(r >= 0 && r <= 1))) {
        t = t || [];
        var i = r * (e.length - 1),
            a = Math.floor(i),
            n = Math.ceil(i),
            o = e[a],
            s = e[n],
            l = i - a;
        return t[0] = Vi(xn(o[0], s[0], l)), t[1] = Vi(xn(o[1], s[1], l)), t[2] = Vi(xn(o[2], s[2], l)), t[3] = Vu(xn(o[3], s[3], l)), t
    }
}
var wV = qs;

function gc(r, e, t) {
    if (!(!(e && e.length) || !(r >= 0 && r <= 1))) {
        var i = r * (e.length - 1),
            a = Math.floor(i),
            n = Math.ceil(i),
            o = Re(e[a]),
            s = Re(e[n]),
            l = i - a,
            u = Mr([Vi(xn(o[0], s[0], l)), Vi(xn(o[1], s[1], l)), Vi(xn(o[2], s[2], l)), Vu(xn(o[3], s[3], l))], "rgba");
        return t ? {
            color: u,
            leftIndex: a,
            rightIndex: n,
            value: i
        } : u
    }
}
var TV = gc;

function _n(r, e, t, i) {
    var a = Re(r);
    if (r) return a = SV(a), e != null && (a[0] = _V(e)), t != null && (a[1] = Mo(t)), i != null && (a[2] = Mo(i)), Mr(eg(a), "rgba")
}

function Sn(r, e) {
    var t = Re(r);
    if (t && e != null) return t[3] = Vu(e), Mr(t, "rgba")
}

function Mr(r, e) {
    if (!(!r || !r.length)) {
        var t = r[0] + "," + r[1] + "," + r[2];
        return (e === "rgba" || e === "hsva" || e === "hsla") && (t += "," + r[3]), e + "(" + t + ")"
    }
}

function Lo(r, e) {
    var t = Re(r);
    return t ? (.299 * t[0] + .587 * t[1] + .114 * t[2]) * t[3] / 255 + (1 - t[3]) * e : 0
}

function CV() {
    return Mr([Math.round(Math.random() * 255), Math.round(Math.random() * 255), Math.round(Math.random() * 255)], "rgb")
}
var Nw = new ka(100);

function Ks(r) {
    if (F(r)) {
        var e = Nw.get(r);
        return e || (e = Bu(r, -.1), Nw.put(r, e)), e
    } else if (Ra(r)) {
        var t = O({}, r);
        return t.colorStops = k(r.colorStops, function(i) {
            return {
                offset: i.offset,
                color: Bu(i.color, -.1)
            }
        }), t
    }
    return r
}
var xc = Math.round;

function bn(r) {
    var e;
    if (!r || r === "transparent") r = "none";
    else if (typeof r == "string" && r.indexOf("rgba") > -1) {
        var t = Re(r);
        t && (r = "rgb(" + t[0] + "," + t[1] + "," + t[2] + ")", e = t[3])
    }
    return {
        color: r,
        opacity: e ? ? 1
    }
}
var zw = 1e-4;

function la(r) {
    return r < zw && r > -zw
}

function yc(r) {
    return xc(r * 1e3) / 1e3
}

function _c(r) {
    return xc(r * 1e4) / 1e4
}

function kw(r) {
    return "matrix(" + yc(r[0]) + "," + yc(r[1]) + "," + yc(r[2]) + "," + yc(r[3]) + "," + _c(r[4]) + "," + _c(r[5]) + ")"
}
var Uw = {
    left: "start",
    right: "end",
    center: "middle",
    middle: "middle"
};

function Vw(r, e, t) {
    return t === "top" ? r += e / 2 : t === "bottom" && (r -= e / 2), r
}

function Bw(r) {
    return r && (r.shadowBlur || r.shadowOffsetX || r.shadowOffsetY)
}

function Fw(r) {
    var e = r.style,
        t = r.getGlobalScale();
    return [e.shadowColor, (e.shadowBlur || 0).toFixed(2), (e.shadowOffsetX || 0).toFixed(2), (e.shadowOffsetY || 0).toFixed(2), t[0], t[1]].join(",")
}

function rg(r) {
    return r && !!r.image
}

function AV(r) {
    return r && !!r.svgElement
}

function Gu(r) {
    return rg(r) || AV(r)
}

function Sc(r) {
    return r.type === "linear"
}

function bc(r) {
    return r.type === "radial"
}

function wc(r) {
    return r && (r.type === "linear" || r.type === "radial")
}

function Hu(r) {
    return "url(#" + r + ")"
}

function Tc(r) {
    var e = r.getGlobalScale(),
        t = Math.max(e[0], e[1]);
    return Math.max(Math.ceil(Math.log(t) / Math.log(10)), 1)
}

function Cc(r) {
    var e = r.x || 0,
        t = r.y || 0,
        i = (r.rotation || 0) * go,
        a = ot(r.scaleX, 1),
        n = ot(r.scaleY, 1),
        o = r.skewX || 0,
        s = r.skewY || 0,
        l = [];
    return (e || t) && l.push("translate(" + e + "px," + t + "px)"), i && l.push("rotate(" + i + ")"), (a !== 1 || n !== 1) && l.push("scale(" + a + "," + n + ")"), (o || s) && l.push("skew(" + xc(o * go) + "deg, " + xc(s * go) + "deg)"), l.join(" ")
}
var Gw = function() {
    return Ct.hasGlobalWindow && X(window.btoa) ? function(r) {
        return window.btoa(unescape(encodeURIComponent(r)))
    } : typeof Buffer < "u" ? function(r) {
        return Buffer.from(r).toString("base64")
    } : function(r) {
        return null
    }
}();
var ag = Array.prototype.slice;

function Ua(r, e, t) {
    return (e - r) * t + r
}

function ig(r, e, t, i) {
    for (var a = e.length, n = 0; n < a; n++) r[n] = Ua(e[n], t[n], i);
    return r
}

function DV(r, e, t, i) {
    for (var a = e.length, n = a && e[0].length, o = 0; o < a; o++) {
        r[o] || (r[o] = []);
        for (var s = 0; s < n; s++) r[o][s] = Ua(e[o][s], t[o][s], i)
    }
    return r
}

function Ac(r, e, t, i) {
    for (var a = e.length, n = 0; n < a; n++) r[n] = e[n] + t[n] * i;
    return r
}

function Hw(r, e, t, i) {
    for (var a = e.length, n = a && e[0].length, o = 0; o < a; o++) {
        r[o] || (r[o] = []);
        for (var s = 0; s < n; s++) r[o][s] = e[o][s] + t[o][s] * i
    }
    return r
}

function MV(r, e) {
    for (var t = r.length, i = e.length, a = t > i ? e : r, n = Math.min(t, i), o = a[n - 1] || {
            color: [0, 0, 0, 0],
            offset: 0
        }, s = n; s < Math.max(t, i); s++) a.push({
        offset: o.offset,
        color: o.color.slice()
    })
}

function LV(r, e, t) {
    var i = r,
        a = e;
    if (!(!i.push || !a.push)) {
        var n = i.length,
            o = a.length;
        if (n !== o) {
            var s = n > o;
            if (s) i.length = o;
            else
                for (var l = n; l < o; l++) i.push(t === 1 ? a[l] : ag.call(a[l]))
        }
        for (var u = i[0] && i[0].length, l = 0; l < i.length; l++)
            if (t === 1) isNaN(i[l]) && (i[l] = a[l]);
            else
                for (var f = 0; f < u; f++) isNaN(i[l][f]) && (i[l][f] = a[l][f])
    }
}

function Io(r) {
    if (ue(r)) {
        var e = r.length;
        if (ue(r[0])) {
            for (var t = [], i = 0; i < e; i++) t.push(ag.call(r[i]));
            return t
        }
        return ag.call(r)
    }
    return r
}

function Lc(r) {
    return r[0] = Math.floor(r[0]) || 0, r[1] = Math.floor(r[1]) || 0, r[2] = Math.floor(r[2]) || 0, r[3] = r[3] == null ? 1 : r[3], "rgba(" + r.join(",") + ")"
}

function IV(r) {
    return ue(r && r[0]) ? 2 : 1
}
var Dc = 0,
    Ic = 1,
    Zw = 2,
    Yu = 3,
    ng = 4,
    og = 5,
    Ww = 6;

function Yw(r) {
    return r === ng || r === og
}

function Mc(r) {
    return r === Ic || r === Zw
}
var Wu = [0, 0, 0, 0],
    EV = function() {
        function r(e) {
            this.keyframes = [], this.discrete = !1, this._invalid = !1, this._needsSort = !1, this._lastFr = 0, this._lastFrP = 0, this.propName = e
        }
        return r.prototype.isFinished = function() {
            return this._finished
        }, r.prototype.setFinished = function() {
            this._finished = !0, this._additiveTrack && this._additiveTrack.setFinished()
        }, r.prototype.needsAnimate = function() {
            return this.keyframes.length >= 1
        }, r.prototype.getAdditiveTrack = function() {
            return this._additiveTrack
        }, r.prototype.addKeyframe = function(e, t, i) {
            this._needsSort = !0;
            var a = this.keyframes,
                n = a.length,
                o = !1,
                s = Ww,
                l = t;
            if (ue(t)) {
                var u = IV(t);
                s = u, (u === 1 && !vt(t[0]) || u === 2 && !vt(t[0][0])) && (o = !0)
            } else if (vt(t) && !Na(t)) s = Dc;
            else if (F(t))
                if (!isNaN(+t)) s = Dc;
                else {
                    var f = Re(t);
                    f && (l = f, s = Yu)
                }
            else if (Ra(t)) {
                var p = O({}, l);
                p.colorStops = k(t.colorStops, function(h) {
                    return {
                        offset: h.offset,
                        color: Re(h.color)
                    }
                }), Sc(t) ? s = ng : bc(t) && (s = og), l = p
            }
            n === 0 ? this.valType = s : (s !== this.valType || s === Ww) && (o = !0), this.discrete = this.discrete || o;
            var c = {
                time: e,
                value: l,
                rawValue: t,
                percent: 0
            };
            return i && (c.easing = i, c.easingFunc = X(i) ? i : lc[i] || Zs(i)), a.push(c), c
        }, r.prototype.prepare = function(e, t) {
            var i = this.keyframes;
            this._needsSort && i.sort(function(d, m) {
                return d.time - m.time
            });
            for (var a = this.valType, n = i.length, o = i[n - 1], s = this.discrete, l = Mc(a), u = Yw(a), f = 0; f < n; f++) {
                var p = i[f],
                    c = p.value,
                    h = o.value;
                p.percent = p.time / e, s || (l && f !== n - 1 ? LV(c, h, a) : u && MV(c.colorStops, h.colorStops))
            }
            if (!s && a !== og && t && this.needsAnimate() && t.needsAnimate() && a === t.valType && !t._finished) {
                this._additiveTrack = t;
                for (var v = i[0].value, f = 0; f < n; f++) a === Dc ? i[f].additiveValue = i[f].value - v : a === Yu ? i[f].additiveValue = Ac([], i[f].value, v, -1) : Mc(a) && (i[f].additiveValue = a === Ic ? Ac([], i[f].value, v, -1) : Hw([], i[f].value, v, -1))
            }
        }, r.prototype.step = function(e, t) {
            if (!this._finished) {
                this._additiveTrack && this._additiveTrack._finished && (this._additiveTrack = null);
                var i = this._additiveTrack != null,
                    a = i ? "additiveValue" : "value",
                    n = this.valType,
                    o = this.keyframes,
                    s = o.length,
                    l = this.propName,
                    u = n === Yu,
                    f, p = this._lastFr,
                    c = Math.min,
                    h, v;
                if (s === 1) h = v = o[0];
                else {
                    if (t < 0) f = 0;
                    else if (t < this._lastFrP) {
                        var d = c(p + 1, s - 1);
                        for (f = d; f >= 0 && !(o[f].percent <= t); f--);
                        f = c(f, s - 2)
                    } else {
                        for (f = p; f < s && !(o[f].percent > t); f++);
                        f = c(f - 1, s - 2)
                    }
                    v = o[f + 1], h = o[f]
                }
                if (h && v) {
                    this._lastFr = f, this._lastFrP = t;
                    var m = v.percent - h.percent,
                        g = m === 0 ? 1 : c((t - h.percent) / m, 1);
                    v.easingFunc && (g = v.easingFunc(g));
                    var y = i ? this._additiveValue : u ? Wu : e[l];
                    if ((Mc(n) || u) && !y && (y = this._additiveValue = []), this.discrete) e[l] = g < 1 ? h.rawValue : v.rawValue;
                    else if (Mc(n)) n === Ic ? ig(y, h[a], v[a], g) : DV(y, h[a], v[a], g);
                    else if (Yw(n)) {
                        var x = h[a],
                            _ = v[a],
                            S = n === ng;
                        e[l] = {
                            type: S ? "linear" : "radial",
                            x: Ua(x.x, _.x, g),
                            y: Ua(x.y, _.y, g),
                            colorStops: k(x.colorStops, function(T, C) {
                                var A = _.colorStops[C];
                                return {
                                    offset: Ua(T.offset, A.offset, g),
                                    color: Lc(ig([], T.color, A.color, g))
                                }
                            }),
                            global: _.global
                        }, S ? (e[l].x2 = Ua(x.x2, _.x2, g), e[l].y2 = Ua(x.y2, _.y2, g)) : e[l].r = Ua(x.r, _.r, g)
                    } else if (u) ig(y, h[a], v[a], g), i || (e[l] = Lc(y));
                    else {
                        var b = Ua(h[a], v[a], g);
                        i ? this._additiveValue = b : e[l] = b
                    }
                    i && this._addToTarget(e)
                }
            }
        }, r.prototype._addToTarget = function(e) {
            var t = this.valType,
                i = this.propName,
                a = this._additiveValue;
            t === Dc ? e[i] = e[i] + a : t === Yu ? (Re(e[i], Wu), Ac(Wu, Wu, a, 1), e[i] = Lc(Wu)) : t === Ic ? Ac(e[i], e[i], a, 1) : t === Zw && Hw(e[i], e[i], a, 1)
        }, r
    }(),
    PV = function() {
        function r(e, t, i, a) {
            if (this._tracks = {}, this._trackKeys = [], this._maxTime = 0, this._started = 0, this._clip = null, this._target = e, this._loop = t, t && a) {
                hn("Can' use additive animation on looped animation.");
                return
            }
            this._additiveAnimators = a, this._allowDiscrete = i
        }
        return r.prototype.getMaxTime = function() {
            return this._maxTime
        }, r.prototype.getDelay = function() {
            return this._delay
        }, r.prototype.getLoop = function() {
            return this._loop
        }, r.prototype.getTarget = function() {
            return this._target
        }, r.prototype.changeTarget = function(e) {
            this._target = e
        }, r.prototype.when = function(e, t, i) {
            return this.whenWithKeys(e, t, ft(t), i)
        }, r.prototype.whenWithKeys = function(e, t, i, a) {
            for (var n = this._tracks, o = 0; o < i.length; o++) {
                var s = i[o],
                    l = n[s];
                if (!l) {
                    l = n[s] = new EV(s);
                    var u = void 0,
                        f = this._getAdditiveTrack(s);
                    if (f) {
                        var p = f.keyframes,
                            c = p[p.length - 1];
                        u = c && c.value, f.valType === Yu && u && (u = Lc(u))
                    } else u = this._target[s];
                    if (u == null) continue;
                    e > 0 && l.addKeyframe(0, Io(u), a), this._trackKeys.push(s)
                }
                l.addKeyframe(e, Io(t[s]), a)
            }
            return this._maxTime = Math.max(this._maxTime, e), this
        }, r.prototype.pause = function() {
            this._clip.pause(), this._paused = !0
        }, r.prototype.resume = function() {
            this._clip.resume(), this._paused = !1
        }, r.prototype.isPaused = function() {
            return !!this._paused
        }, r.prototype.duration = function(e) {
            return this._maxTime = e, this._force = !0, this
        }, r.prototype._doneCallback = function() {
            this._setTracksFinished(), this._clip = null;
            var e = this._doneCbs;
            if (e)
                for (var t = e.length, i = 0; i < t; i++) e[i].call(this)
        }, r.prototype._abortedCallback = function() {
            this._setTracksFinished();
            var e = this.animation,
                t = this._abortedCbs;
            if (e && e.removeClip(this._clip), this._clip = null, t)
                for (var i = 0; i < t.length; i++) t[i].call(this)
        }, r.prototype._setTracksFinished = function() {
            for (var e = this._tracks, t = this._trackKeys, i = 0; i < t.length; i++) e[t[i]].setFinished()
        }, r.prototype._getAdditiveTrack = function(e) {
            var t, i = this._additiveAnimators;
            if (i)
                for (var a = 0; a < i.length; a++) {
                    var n = i[a].getTrack(e);
                    n && (t = n)
                }
            return t
        }, r.prototype.start = function(e) {
            if (!(this._started > 0)) {
                this._started = 1;
                for (var t = this, i = [], a = this._maxTime || 0, n = 0; n < this._trackKeys.length; n++) {
                    var o = this._trackKeys[n],
                        s = this._tracks[o],
                        l = this._getAdditiveTrack(o),
                        u = s.keyframes,
                        f = u.length;
                    if (s.prepare(a, l), s.needsAnimate())
                        if (!this._allowDiscrete && s.discrete) {
                            var p = u[f - 1];
                            p && (t._target[s.propName] = p.rawValue), s.setFinished()
                        } else i.push(s)
                }
                if (i.length || this._force) {
                    var c = new Ew({
                        life: a,
                        loop: this._loop,
                        delay: this._delay || 0,
                        onframe: function(h) {
                            t._started = 2;
                            var v = t._additiveAnimators;
                            if (v) {
                                for (var d = !1, m = 0; m < v.length; m++)
                                    if (v[m]._clip) {
                                        d = !0;
                                        break
                                    }
                                d || (t._additiveAnimators = null)
                            }
                            for (var m = 0; m < i.length; m++) i[m].step(t._target, h);
                            var g = t._onframeCbs;
                            if (g)
                                for (var m = 0; m < g.length; m++) g[m](t._target, h)
                        },
                        ondestroy: function() {
                            t._doneCallback()
                        }
                    });
                    this._clip = c, this.animation && this.animation.addClip(c), e && c.setEasing(e)
                } else this._doneCallback();
                return this
            }
        }, r.prototype.stop = function(e) {
            if (this._clip) {
                var t = this._clip;
                e && t.onframe(1), this._abortedCallback()
            }
        }, r.prototype.delay = function(e) {
            return this._delay = e, this
        }, r.prototype.during = function(e) {
            return e && (this._onframeCbs || (this._onframeCbs = []), this._onframeCbs.push(e)), this
        }, r.prototype.done = function(e) {
            return e && (this._doneCbs || (this._doneCbs = []), this._doneCbs.push(e)), this
        }, r.prototype.aborted = function(e) {
            return e && (this._abortedCbs || (this._abortedCbs = []), this._abortedCbs.push(e)), this
        }, r.prototype.getClip = function() {
            return this._clip
        }, r.prototype.getTrack = function(e) {
            return this._tracks[e]
        }, r.prototype.getTracks = function() {
            var e = this;
            return k(this._trackKeys, function(t) {
                return e._tracks[t]
            })
        }, r.prototype.stopTracks = function(e, t) {
            if (!e.length || !this._clip) return !0;
            for (var i = this._tracks, a = this._trackKeys, n = 0; n < e.length; n++) {
                var o = i[e[n]];
                o && !o.isFinished() && (t ? o.step(this._target, 1) : this._started === 1 && o.step(this._target, 0), o.setFinished())
            }
            for (var s = !0, n = 0; n < a.length; n++)
                if (!i[a[n]].isFinished()) {
                    s = !1;
                    break
                }
            return s && this._abortedCallback(), s
        }, r.prototype.saveTo = function(e, t, i) {
            if (e) {
                t = t || this._trackKeys;
                for (var a = 0; a < t.length; a++) {
                    var n = t[a],
                        o = this._tracks[n];
                    if (!(!o || o.isFinished())) {
                        var s = o.keyframes,
                            l = s[i ? 0 : s.length - 1];
                        l && (e[n] = Io(l.rawValue))
                    }
                }
            }
        }, r.prototype.__changeFinalValue = function(e, t) {
            t = t || ft(e);
            for (var i = 0; i < t.length; i++) {
                var a = t[i],
                    n = this._tracks[a];
                if (n) {
                    var o = n.keyframes;
                    if (o.length > 1) {
                        var s = o.pop();
                        n.addKeyframe(s.time, e[a]), n.prepare(this._maxTime, n.getAdditiveTrack())
                    }
                }
            }
        }, r
    }(),
    Zu = PV;

function Eo() {
    return new Date().getTime()
}
var RV = function(r) {
        L(e, r);

        function e(t) {
            var i = r.call(this) || this;
            return i._running = !1, i._time = 0, i._pausedTime = 0, i._pauseStart = 0, i._paused = !1, t = t || {}, i.stage = t.stage || {}, i
        }
        return e.prototype.addClip = function(t) {
            t.animation && this.removeClip(t), this._head ? (this._tail.next = t, t.prev = this._tail, t.next = null, this._tail = t) : this._head = this._tail = t, t.animation = this
        }, e.prototype.addAnimator = function(t) {
            t.animation = this;
            var i = t.getClip();
            i && this.addClip(i)
        }, e.prototype.removeClip = function(t) {
            if (t.animation) {
                var i = t.prev,
                    a = t.next;
                i ? i.next = a : this._head = a, a ? a.prev = i : this._tail = i, t.next = t.prev = t.animation = null
            }
        }, e.prototype.removeAnimator = function(t) {
            var i = t.getClip();
            i && this.removeClip(i), t.animation = null
        }, e.prototype.update = function(t) {
            for (var i = Eo() - this._pausedTime, a = i - this._time, n = this._head; n;) {
                var o = n.next,
                    s = n.step(i, a);
                s && (n.ondestroy(), this.removeClip(n)), n = o
            }
            this._time = i, t || (this.trigger("frame", a), this.stage.update && this.stage.update())
        }, e.prototype._startLoop = function() {
            var t = this;
            this._running = !0;

            function i() {
                t._running && (zu(i), !t._paused && t.update())
            }
            zu(i)
        }, e.prototype.start = function() {
            this._running || (this._time = Eo(), this._pausedTime = 0, this._startLoop())
        }, e.prototype.stop = function() {
            this._running = !1
        }, e.prototype.pause = function() {
            this._paused || (this._pauseStart = Eo(), this._paused = !0)
        }, e.prototype.resume = function() {
            this._paused && (this._pausedTime += Eo() - this._pauseStart, this._paused = !1)
        }, e.prototype.clear = function() {
            for (var t = this._head; t;) {
                var i = t.next;
                t.prev = t.next = t.animation = null, t = i
            }
            this._head = this._tail = null
        }, e.prototype.isFinished = function() {
            return this._head == null
        }, e.prototype.animate = function(t, i) {
            i = i || {}, this.start();
            var a = new Zu(t, i.loop);
            return this.addAnimator(a), a
        }, e
    }(Ce),
    Xw = RV;
var NV = 300,
    sg = Ct.domSupported,
    lg = function() {
        var r = ["click", "dblclick", "mousewheel", "wheel", "mouseout", "mouseup", "mousedown", "mousemove", "contextmenu"],
            e = ["touchstart", "touchend", "touchmove"],
            t = {
                pointerdown: 1,
                pointerup: 1,
                pointermove: 1,
                pointerout: 1
            },
            i = k(r, function(a) {
                var n = a.replace("mouse", "pointer");
                return t.hasOwnProperty(n) ? n : a
            });
        return {
            mouse: r,
            touch: e,
            pointer: i
        }
    }(),
    qw = {
        mouse: ["mousemove", "mouseup"],
        pointer: ["pointermove", "pointerup"]
    },
    Kw = !1;

function pg(r) {
    var e = r.pointerType;
    return e === "pen" || e === "touch"
}

function OV(r) {
    r.touching = !0, r.touchTimer != null && (clearTimeout(r.touchTimer), r.touchTimer = null), r.touchTimer = setTimeout(function() {
        r.touching = !1, r.touchTimer = null
    }, 700)
}

function ug(r) {
    r && (r.zrByTouch = !0)
}

function zV(r, e) {
    return Ar(r.dom, new kV(r, e), !0)
}

function Jw(r, e) {
    for (var t = e, i = !1; t && t.nodeType !== 9 && !(i = t.domBelongToZr || t !== e && t === r.painterRoot);) t = t.parentNode;
    return i
}
var kV = function() {
        function r(e, t) {
            this.stopPropagation = Yt, this.stopImmediatePropagation = Yt, this.preventDefault = Yt, this.type = t.type, this.target = this.currentTarget = e.dom, this.pointerType = t.pointerType, this.clientX = t.clientX, this.clientY = t.clientY
        }
        return r
    }(),
    Bi = {
        mousedown: function(r) {
            r = Ar(this.dom, r), this.__mayPointerCapture = [r.zrX, r.zrY], this.trigger("mousedown", r)
        },
        mousemove: function(r) {
            r = Ar(this.dom, r);
            var e = this.__mayPointerCapture;
            e && (r.zrX !== e[0] || r.zrY !== e[1]) && this.__togglePointerCapture(!0), this.trigger("mousemove", r)
        },
        mouseup: function(r) {
            r = Ar(this.dom, r), this.__togglePointerCapture(!1), this.trigger("mouseup", r)
        },
        mouseout: function(r) {
            r = Ar(this.dom, r);
            var e = r.toElement || r.relatedTarget;
            Jw(this, e) || (this.__pointerCapturing && (r.zrEventControl = "no_globalout"), this.trigger("mouseout", r))
        },
        wheel: function(r) {
            Kw = !0, r = Ar(this.dom, r), this.trigger("mousewheel", r)
        },
        mousewheel: function(r) {
            Kw || (r = Ar(this.dom, r), this.trigger("mousewheel", r))
        },
        touchstart: function(r) {
            r = Ar(this.dom, r), ug(r), this.__lastTouchMoment = new Date, this.handler.processGesture(r, "start"), Bi.mousemove.call(this, r), Bi.mousedown.call(this, r)
        },
        touchmove: function(r) {
            r = Ar(this.dom, r), ug(r), this.handler.processGesture(r, "change"), Bi.mousemove.call(this, r)
        },
        touchend: function(r) {
            r = Ar(this.dom, r), ug(r), this.handler.processGesture(r, "end"), Bi.mouseup.call(this, r), +new Date - +this.__lastTouchMoment < NV && Bi.click.call(this, r)
        },
        pointerdown: function(r) {
            Bi.mousedown.call(this, r)
        },
        pointermove: function(r) {
            pg(r) || Bi.mousemove.call(this, r)
        },
        pointerup: function(r) {
            Bi.mouseup.call(this, r)
        },
        pointerout: function(r) {
            pg(r) || Bi.mouseout.call(this, r)
        }
    };
w(["click", "dblclick", "contextmenu"], function(r) {
    Bi[r] = function(e) {
        e = Ar(this.dom, e), this.trigger(r, e)
    }
});
var cg = {
    pointermove: function(r) {
        pg(r) || cg.mousemove.call(this, r)
    },
    pointerup: function(r) {
        cg.mouseup.call(this, r)
    },
    mousemove: function(r) {
        this.trigger("mousemove", r)
    },
    mouseup: function(r) {
        var e = this.__pointerCapturing;
        this.__togglePointerCapture(!1), this.trigger("mouseup", r), e && (r.zrEventControl = "only_globalout", this.trigger("mouseout", r))
    }
};

function UV(r, e) {
    var t = e.domHandlers;
    Ct.pointerEventsSupported ? w(lg.pointer, function(i) {
        Ec(e, i, function(a) {
            t[i].call(r, a)
        })
    }) : (Ct.touchEventsSupported && w(lg.touch, function(i) {
        Ec(e, i, function(a) {
            t[i].call(r, a), OV(e)
        })
    }), w(lg.mouse, function(i) {
        Ec(e, i, function(a) {
            a = ac(a), e.touching || t[i].call(r, a)
        })
    }))
}

function VV(r, e) {
    Ct.pointerEventsSupported ? w(qw.pointer, t) : Ct.touchEventsSupported || w(qw.mouse, t);

    function t(i) {
        function a(n) {
            n = ac(n), Jw(r, n.target) || (n = zV(r, n), e.domHandlers[i].call(r, n))
        }
        Ec(e, i, a, {
            capture: !0
        })
    }
}

function Ec(r, e, t, i) {
    r.mounted[e] = t, r.listenerOpts[e] = i, Eu(r.domTarget, e, t, i)
}

function fg(r) {
    var e = r.mounted;
    for (var t in e) e.hasOwnProperty(t) && fw(r.domTarget, t, e[t], r.listenerOpts[t]);
    r.mounted = {}
}
var jw = function() {
        function r(e, t) {
            this.mounted = {}, this.listenerOpts = {}, this.touching = !1, this.domTarget = e, this.domHandlers = t
        }
        return r
    }(),
    BV = function(r) {
        L(e, r);

        function e(t, i) {
            var a = r.call(this) || this;
            return a.__pointerCapturing = !1, a.dom = t, a.painterRoot = i, a._localHandlerScope = new jw(t, Bi), sg && (a._globalHandlerScope = new jw(document, cg)), UV(a, a._localHandlerScope), a
        }
        return e.prototype.dispose = function() {
            fg(this._localHandlerScope), sg && fg(this._globalHandlerScope)
        }, e.prototype.setCursor = function(t) {
            this.dom.style && (this.dom.style.cursor = t || "default")
        }, e.prototype.__togglePointerCapture = function(t) {
            if (this.__mayPointerCapture = null, sg && +this.__pointerCapturing ^ +t) {
                this.__pointerCapturing = t;
                var i = this._globalHandlerScope;
                t ? VV(this, i) : fg(i)
            }
        }, e
    }(Ce),
    Qw = BV;
var $w = 1;
Ct.hasGlobalWindow && ($w = Math.max(window.devicePixelRatio || window.screen && window.screen.deviceXDPI / window.screen.logicalXDPI || 1, 1));
var Po = $w,
    Xu = .4,
    qu = "#333",
    Ku = "#ccc",
    tT = "#eee";
var eT = za,
    rT = 5e-5;

function Ro(r) {
    return r > rT || r < -rT
}
var No = [],
    js = [],
    hg = me(),
    vg = Math.abs,
    FV = function() {
        function r() {}
        return r.prototype.getLocalTransform = function(e) {
            return r.getLocalTransform(this, e)
        }, r.prototype.setPosition = function(e) {
            this.x = e[0], this.y = e[1]
        }, r.prototype.setScale = function(e) {
            this.scaleX = e[0], this.scaleY = e[1]
        }, r.prototype.setSkew = function(e) {
            this.skewX = e[0], this.skewY = e[1]
        }, r.prototype.setOrigin = function(e) {
            this.originX = e[0], this.originY = e[1]
        }, r.prototype.needLocalTransform = function() {
            return Ro(this.rotation) || Ro(this.x) || Ro(this.y) || Ro(this.scaleX - 1) || Ro(this.scaleY - 1) || Ro(this.skewX) || Ro(this.skewY)
        }, r.prototype.updateTransform = function() {
            var e = this.parent && this.parent.transform,
                t = this.needLocalTransform(),
                i = this.transform;
            if (!(t || e)) {
                i && (eT(i), this.invTransform = null);
                return
            }
            i = i || me(), t ? this.getLocalTransform(i) : eT(i), e && (t ? pr(i, e, i) : Ws(i, e)), this.transform = i, this._resolveGlobalScaleRatio(i)
        }, r.prototype._resolveGlobalScaleRatio = function(e) {
            var t = this.globalScaleRatio;
            if (t != null && t !== 1) {
                this.getGlobalScale(No);
                var i = No[0] < 0 ? -1 : 1,
                    a = No[1] < 0 ? -1 : 1,
                    n = ((No[0] - i) * t + i) / No[0] || 0,
                    o = ((No[1] - a) * t + a) / No[1] || 0;
                e[0] *= n, e[1] *= n, e[2] *= o, e[3] *= o
            }
            this.invTransform = this.invTransform || me(), jr(this.invTransform, e)
        }, r.prototype.getComputedTransform = function() {
            for (var e = this, t = []; e;) t.push(e), e = e.parent;
            for (; e = t.pop();) e.updateTransform();
            return this.transform
        }, r.prototype.setLocalTransform = function(e) {
            if (e) {
                var t = e[0] * e[0] + e[1] * e[1],
                    i = e[2] * e[2] + e[3] * e[3],
                    a = Math.atan2(e[1], e[0]),
                    n = Math.PI / 2 + a - Math.atan2(e[3], e[2]);
                i = Math.sqrt(i) * Math.cos(n), t = Math.sqrt(t), this.skewX = n, this.skewY = 0, this.rotation = -a, this.x = +e[4], this.y = +e[5], this.scaleX = t, this.scaleY = i, this.originX = 0, this.originY = 0
            }
        }, r.prototype.decomposeTransform = function() {
            if (this.transform) {
                var e = this.parent,
                    t = this.transform;
                e && e.transform && (e.invTransform = e.invTransform || me(), pr(js, e.invTransform, t), t = js);
                var i = this.originX,
                    a = this.originY;
                (i || a) && (hg[4] = i, hg[5] = a, pr(js, t, hg), js[4] -= i, js[5] -= a, t = js), this.setLocalTransform(t)
            }
        }, r.prototype.getGlobalScale = function(e) {
            var t = this.transform;
            return e = e || [], t ? (e[0] = Math.sqrt(t[0] * t[0] + t[1] * t[1]), e[1] = Math.sqrt(t[2] * t[2] + t[3] * t[3]), t[0] < 0 && (e[0] = -e[0]), t[3] < 0 && (e[1] = -e[1]), e) : (e[0] = 1, e[1] = 1, e)
        }, r.prototype.transformCoordToLocal = function(e, t) {
            var i = [e, t],
                a = this.invTransform;
            return a && fe(i, i, a), i
        }, r.prototype.transformCoordToGlobal = function(e, t) {
            var i = [e, t],
                a = this.transform;
            return a && fe(i, i, a), i
        }, r.prototype.getLineScale = function() {
            var e = this.transform;
            return e && vg(e[0] - 1) > 1e-10 && vg(e[3] - 1) > 1e-10 ? Math.sqrt(vg(e[0] * e[3] - e[2] * e[1])) : 1
        }, r.prototype.copyTransform = function(e) {
            dg(this, e)
        }, r.getLocalTransform = function(e, t) {
            t = t || [];
            var i = e.originX || 0,
                a = e.originY || 0,
                n = e.scaleX,
                o = e.scaleY,
                s = e.anchorX,
                l = e.anchorY,
                u = e.rotation || 0,
                f = e.x,
                p = e.y,
                c = e.skewX ? Math.tan(e.skewX) : 0,
                h = e.skewY ? Math.tan(-e.skewY) : 0;
            if (i || a || s || l) {
                var v = i + s,
                    d = a + l;
                t[4] = -v * n - c * d * o, t[5] = -d * o - h * v * n
            } else t[4] = t[5] = 0;
            return t[0] = n, t[3] = o, t[1] = h * n, t[2] = c * o, u && cr(t, t, u), t[4] += i + f, t[5] += a + p, t
        }, r.initDefaultProps = function() {
            var e = r.prototype;
            e.scaleX = e.scaleY = e.globalScaleRatio = 1, e.x = e.y = e.originX = e.originY = e.skewX = e.skewY = e.rotation = e.anchorX = e.anchorY = 0
        }(), r
    }(),
    Jr = ["x", "y", "originX", "originY", "anchorX", "anchorY", "rotation", "scaleX", "scaleY", "skewX", "skewY"];

function dg(r, e) {
    for (var t = 0; t < Jr.length; t++) {
        var i = Jr[t];
        r[i] = e[i]
    }
}
var Lr = FV;
var iT = {};

function Ir(r, e) {
    e = e || Xr;
    var t = iT[e];
    t || (t = iT[e] = new ka(500));
    var i = t.get(r);
    return i == null && (i = He.measureText(r, e).width, t.put(r, i)), i
}

function aT(r, e, t, i) {
    var a = Ir(r, e),
        n = Qs(e),
        o = Js(0, a, t),
        s = Oo(0, n, i),
        l = new it(o, s, a, n);
    return l
}

function ua(r, e, t, i) {
    var a = ((r || "") + "").split(`
`),
        n = a.length;
    if (n === 1) return aT(a[0], e, t, i);
    for (var o = new it(0, 0, 0, 0), s = 0; s < a.length; s++) {
        var l = aT(a[s], e, t, i);
        s === 0 ? o.copy(l) : o.union(l)
    }
    return o
}

function Js(r, e, t) {
    return t === "right" ? r -= e : t === "center" && (r -= e / 2), r
}

function Oo(r, e, t) {
    return t === "middle" ? r -= e / 2 : t === "bottom" && (r -= e), r
}

function Qs(r) {
    return Ir("\u56FD", r)
}

function Xe(r, e) {
    return typeof r == "string" ? r.lastIndexOf("%") >= 0 ? parseFloat(r) / 100 * e : parseFloat(r) : r
}

function zo(r, e, t) {
    var i = e.position || "inside",
        a = e.distance != null ? e.distance : 5,
        n = t.height,
        o = t.width,
        s = n / 2,
        l = t.x,
        u = t.y,
        f = "left",
        p = "top";
    if (i instanceof Array) l += Xe(i[0], t.width), u += Xe(i[1], t.height), f = null, p = null;
    else switch (i) {
        case "left":
            l -= a, u += s, f = "right", p = "middle";
            break;
        case "right":
            l += a + o, u += s, p = "middle";
            break;
        case "top":
            l += o / 2, u -= a, f = "center", p = "bottom";
            break;
        case "bottom":
            l += o / 2, u += n + a, f = "center";
            break;
        case "inside":
            l += o / 2, u += s, f = "center", p = "middle";
            break;
        case "insideLeft":
            l += a, u += s, p = "middle";
            break;
        case "insideRight":
            l += o - a, u += s, f = "right", p = "middle";
            break;
        case "insideTop":
            l += o / 2, u += a, f = "center";
            break;
        case "insideBottom":
            l += o / 2, u += n - a, f = "center", p = "bottom";
            break;
        case "insideTopLeft":
            l += a, u += a;
            break;
        case "insideTopRight":
            l += o - a, u += a, f = "right";
            break;
        case "insideBottomLeft":
            l += a, u += n - a, p = "bottom";
            break;
        case "insideBottomRight":
            l += o - a, u += n - a, f = "right", p = "bottom";
            break
    }
    return r = r || {}, r.x = l, r.y = u, r.align = f, r.verticalAlign = p, r
}
var mg = "__zr_normal__",
    gg = Jr.concat(["ignore"]),
    GV = Me(Jr, function(r, e) {
        return r[e] = !0, r
    }, {
        ignore: !1
    }),
    $s = {},
    HV = new it(0, 0, 0, 0),
    _g = function() {
        function r(e) {
            this.id = Au(), this.animators = [], this.currentStates = [], this.states = {}, this._init(e)
        }
        return r.prototype._init = function(e) {
            this.attr(e)
        }, r.prototype.drift = function(e, t, i) {
            switch (this.draggable) {
                case "horizontal":
                    t = 0;
                    break;
                case "vertical":
                    e = 0;
                    break
            }
            var a = this.transform;
            a || (a = this.transform = [1, 0, 0, 1, 0, 0]), a[4] += e, a[5] += t, this.decomposeTransform(), this.markRedraw()
        }, r.prototype.beforeUpdate = function() {}, r.prototype.afterUpdate = function() {}, r.prototype.update = function() {
            this.updateTransform(), this.__dirty && this.updateInnerText()
        }, r.prototype.updateInnerText = function(e) {
            var t = this._textContent;
            if (t && (!t.ignore || e)) {
                this.textConfig || (this.textConfig = {});
                var i = this.textConfig,
                    a = i.local,
                    n = t.innerTransformable,
                    o = void 0,
                    s = void 0,
                    l = !1;
                n.parent = a ? this : null;
                var u = !1;
                if (n.copyTransform(t), i.position != null) {
                    var f = HV;
                    i.layoutRect ? f.copy(i.layoutRect) : f.copy(this.getBoundingRect()), a || f.applyTransform(this.transform), this.calculateTextPosition ? this.calculateTextPosition($s, i, f) : zo($s, i, f), n.x = $s.x, n.y = $s.y, o = $s.align, s = $s.verticalAlign;
                    var p = i.origin;
                    if (p && i.rotation != null) {
                        var c = void 0,
                            h = void 0;
                        p === "center" ? (c = f.width * .5, h = f.height * .5) : (c = Xe(p[0], f.width), h = Xe(p[1], f.height)), u = !0, n.originX = -n.x + c + (a ? 0 : f.x), n.originY = -n.y + h + (a ? 0 : f.y)
                    }
                }
                i.rotation != null && (n.rotation = i.rotation);
                var v = i.offset;
                v && (n.x += v[0], n.y += v[1], u || (n.originX = -v[0], n.originY = -v[1]));
                var d = i.inside == null ? typeof i.position == "string" && i.position.indexOf("inside") >= 0 : i.inside,
                    m = this._innerTextDefaultStyle || (this._innerTextDefaultStyle = {}),
                    g = void 0,
                    y = void 0,
                    x = void 0;
                d && this.canBeInsideText() ? (g = i.insideFill, y = i.insideStroke, (g == null || g === "auto") && (g = this.getInsideTextFill()), (y == null || y === "auto") && (y = this.getInsideTextStroke(g), x = !0)) : (g = i.outsideFill, y = i.outsideStroke, (g == null || g === "auto") && (g = this.getOutsideFill()), (y == null || y === "auto") && (y = this.getOutsideStroke(g), x = !0)), g = g || "#000", (g !== m.fill || y !== m.stroke || x !== m.autoStroke || o !== m.align || s !== m.verticalAlign) && (l = !0, m.fill = g, m.stroke = y, m.autoStroke = x, m.align = o, m.verticalAlign = s, t.setDefaultTextStyle(m)), t.__dirty |= Pe, l && t.dirtyStyle(!0)
            }
        }, r.prototype.canBeInsideText = function() {
            return !0
        }, r.prototype.getInsideTextFill = function() {
            return "#fff"
        }, r.prototype.getInsideTextStroke = function(e) {
            return "#000"
        }, r.prototype.getOutsideFill = function() {
            return this.__zr && this.__zr.isDarkMode() ? Ku : qu
        }, r.prototype.getOutsideStroke = function(e) {
            var t = this.__zr && this.__zr.getBackgroundColor(),
                i = typeof t == "string" && Re(t);
            i || (i = [255, 255, 255, 1]);
            for (var a = i[3], n = this.__zr.isDarkMode(), o = 0; o < 3; o++) i[o] = i[o] * a + (n ? 0 : 255) * (1 - a);
            return i[3] = 1, Mr(i, "rgba")
        }, r.prototype.traverse = function(e, t) {}, r.prototype.attrKV = function(e, t) {
            e === "textConfig" ? this.setTextConfig(t) : e === "textContent" ? this.setTextContent(t) : e === "clipPath" ? this.setClipPath(t) : e === "extra" ? (this.extra = this.extra || {}, O(this.extra, t)) : this[e] = t
        }, r.prototype.hide = function() {
            this.ignore = !0, this.markRedraw()
        }, r.prototype.show = function() {
            this.ignore = !1, this.markRedraw()
        }, r.prototype.attr = function(e, t) {
            if (typeof e == "string") this.attrKV(e, t);
            else if (j(e))
                for (var i = e, a = ft(i), n = 0; n < a.length; n++) {
                    var o = a[n];
                    this.attrKV(o, e[o])
                }
            return this.markRedraw(), this
        }, r.prototype.saveCurrentToNormalState = function(e) {
            this._innerSaveToNormal(e);
            for (var t = this._normalState, i = 0; i < this.animators.length; i++) {
                var a = this.animators[i],
                    n = a.__fromStateTransition;
                if (!(a.getLoop() || n && n !== mg)) {
                    var o = a.targetName,
                        s = o ? t[o] : t;
                    a.saveTo(s)
                }
            }
        }, r.prototype._innerSaveToNormal = function(e) {
            var t = this._normalState;
            t || (t = this._normalState = {}), e.textConfig && !t.textConfig && (t.textConfig = this.textConfig), this._savePrimaryToNormal(e, t, gg)
        }, r.prototype._savePrimaryToNormal = function(e, t, i) {
            for (var a = 0; a < i.length; a++) {
                var n = i[a];
                e[n] != null && !(n in t) && (t[n] = this[n])
            }
        }, r.prototype.hasState = function() {
            return this.currentStates.length > 0
        }, r.prototype.getState = function(e) {
            return this.states[e]
        }, r.prototype.ensureState = function(e) {
            var t = this.states;
            return t[e] || (t[e] = {}), t[e]
        }, r.prototype.clearStates = function(e) {
            this.useState(mg, !1, e)
        }, r.prototype.useState = function(e, t, i, a) {
            var n = e === mg,
                o = this.hasState();
            if (!(!o && n)) {
                var s = this.currentStates,
                    l = this.stateTransition;
                if (!(at(s, e) >= 0 && (t || s.length === 1))) {
                    var u;
                    if (this.stateProxy && !n && (u = this.stateProxy(e)), u || (u = this.states && this.states[e]), !u && !n) {
                        hn("State " + e + " not exists.");
                        return
                    }
                    n || this.saveCurrentToNormalState(u);
                    var f = !!(u && u.hoverLayer || a);
                    f && this._toggleHoverLayerFlag(!0), this._applyStateObj(e, u, this._normalState, t, !i && !this.__inHover && l && l.duration > 0, l);
                    var p = this._textContent,
                        c = this._textGuide;
                    return p && p.useState(e, t, i, f), c && c.useState(e, t, i, f), n ? (this.currentStates = [], this._normalState = {}) : t ? this.currentStates.push(e) : this.currentStates = [e], this._updateAnimationTargets(), this.markRedraw(), !f && this.__inHover && (this._toggleHoverLayerFlag(!1), this.__dirty &= ~Pe), u
                }
            }
        }, r.prototype.useStates = function(e, t, i) {
            if (!e.length) this.clearStates();
            else {
                var a = [],
                    n = this.currentStates,
                    o = e.length,
                    s = o === n.length;
                if (s) {
                    for (var l = 0; l < o; l++)
                        if (e[l] !== n[l]) {
                            s = !1;
                            break
                        }
                }
                if (s) return;
                for (var l = 0; l < o; l++) {
                    var u = e[l],
                        f = void 0;
                    this.stateProxy && (f = this.stateProxy(u, e)), f || (f = this.states[u]), f && a.push(f)
                }
                var p = a[o - 1],
                    c = !!(p && p.hoverLayer || i);
                c && this._toggleHoverLayerFlag(!0);
                var h = this._mergeStates(a),
                    v = this.stateTransition;
                this.saveCurrentToNormalState(h), this._applyStateObj(e.join(","), h, this._normalState, !1, !t && !this.__inHover && v && v.duration > 0, v);
                var d = this._textContent,
                    m = this._textGuide;
                d && d.useStates(e, t, c), m && m.useStates(e, t, c), this._updateAnimationTargets(), this.currentStates = e.slice(), this.markRedraw(), !c && this.__inHover && (this._toggleHoverLayerFlag(!1), this.__dirty &= ~Pe)
            }
        }, r.prototype.isSilent = function() {
            for (var e = this.silent, t = this.parent; !e && t;) {
                if (t.silent) {
                    e = !0;
                    break
                }
                t = t.parent
            }
            return e
        }, r.prototype._updateAnimationTargets = function() {
            for (var e = 0; e < this.animators.length; e++) {
                var t = this.animators[e];
                t.targetName && t.changeTarget(this[t.targetName])
            }
        }, r.prototype.removeState = function(e) {
            var t = at(this.currentStates, e);
            if (t >= 0) {
                var i = this.currentStates.slice();
                i.splice(t, 1), this.useStates(i)
            }
        }, r.prototype.replaceState = function(e, t, i) {
            var a = this.currentStates.slice(),
                n = at(a, e),
                o = at(a, t) >= 0;
            n >= 0 ? o ? a.splice(n, 1) : a[n] = t : i && !o && a.push(t), this.useStates(a)
        }, r.prototype.toggleState = function(e, t) {
            t ? this.useState(e, !0) : this.removeState(e)
        }, r.prototype._mergeStates = function(e) {
            for (var t = {}, i, a = 0; a < e.length; a++) {
                var n = e[a];
                O(t, n), n.textConfig && (i = i || {}, O(i, n.textConfig))
            }
            return i && (t.textConfig = i), t
        }, r.prototype._applyStateObj = function(e, t, i, a, n, o) {
            var s = !(t && a);
            t && t.textConfig ? (this.textConfig = O({}, a ? this.textConfig : i.textConfig), O(this.textConfig, t.textConfig)) : s && i.textConfig && (this.textConfig = i.textConfig);
            for (var l = {}, u = !1, f = 0; f < gg.length; f++) {
                var p = gg[f],
                    c = n && GV[p];
                t && t[p] != null ? c ? (u = !0, l[p] = t[p]) : this[p] = t[p] : s && i[p] != null && (c ? (u = !0, l[p] = i[p]) : this[p] = i[p])
            }
            if (!n)
                for (var f = 0; f < this.animators.length; f++) {
                    var h = this.animators[f],
                        v = h.targetName;
                    h.getLoop() || h.__changeFinalValue(v ? (t || i)[v] : t || i)
                }
            u && this._transitionState(e, l, o)
        }, r.prototype._attachComponent = function(e) {
            if (!(e.__zr && !e.__hostTarget) && e !== this) {
                var t = this.__zr;
                t && e.addSelfToZr(t), e.__zr = t, e.__hostTarget = this
            }
        }, r.prototype._detachComponent = function(e) {
            e.__zr && e.removeSelfFromZr(e.__zr), e.__zr = null, e.__hostTarget = null
        }, r.prototype.getClipPath = function() {
            return this._clipPath
        }, r.prototype.setClipPath = function(e) {
            this._clipPath && this._clipPath !== e && this.removeClipPath(), this._attachComponent(e), this._clipPath = e, this.markRedraw()
        }, r.prototype.removeClipPath = function() {
            var e = this._clipPath;
            e && (this._detachComponent(e), this._clipPath = null, this.markRedraw())
        }, r.prototype.getTextContent = function() {
            return this._textContent
        }, r.prototype.setTextContent = function(e) {
            var t = this._textContent;
            t !== e && (t && t !== e && this.removeTextContent(), e.innerTransformable = new Lr, this._attachComponent(e), this._textContent = e, this.markRedraw())
        }, r.prototype.setTextConfig = function(e) {
            this.textConfig || (this.textConfig = {}), O(this.textConfig, e), this.markRedraw()
        }, r.prototype.removeTextConfig = function() {
            this.textConfig = null, this.markRedraw()
        }, r.prototype.removeTextContent = function() {
            var e = this._textContent;
            e && (e.innerTransformable = null, this._detachComponent(e), this._textContent = null, this._innerTextDefaultStyle = null, this.markRedraw())
        }, r.prototype.getTextGuideLine = function() {
            return this._textGuide
        }, r.prototype.setTextGuideLine = function(e) {
            this._textGuide && this._textGuide !== e && this.removeTextGuideLine(), this._attachComponent(e), this._textGuide = e, this.markRedraw()
        }, r.prototype.removeTextGuideLine = function() {
            var e = this._textGuide;
            e && (this._detachComponent(e), this._textGuide = null, this.markRedraw())
        }, r.prototype.markRedraw = function() {
            this.__dirty |= Pe;
            var e = this.__zr;
            e && (this.__inHover ? e.refreshHover() : e.refresh()), this.__hostTarget && this.__hostTarget.markRedraw()
        }, r.prototype.dirty = function() {
            this.markRedraw()
        }, r.prototype._toggleHoverLayerFlag = function(e) {
            this.__inHover = e;
            var t = this._textContent,
                i = this._textGuide;
            t && (t.__inHover = e), i && (i.__inHover = e)
        }, r.prototype.addSelfToZr = function(e) {
            if (this.__zr !== e) {
                this.__zr = e;
                var t = this.animators;
                if (t)
                    for (var i = 0; i < t.length; i++) e.animation.addAnimator(t[i]);
                this._clipPath && this._clipPath.addSelfToZr(e), this._textContent && this._textContent.addSelfToZr(e), this._textGuide && this._textGuide.addSelfToZr(e)
            }
        }, r.prototype.removeSelfFromZr = function(e) {
            if (this.__zr) {
                this.__zr = null;
                var t = this.animators;
                if (t)
                    for (var i = 0; i < t.length; i++) e.animation.removeAnimator(t[i]);
                this._clipPath && this._clipPath.removeSelfFromZr(e), this._textContent && this._textContent.removeSelfFromZr(e), this._textGuide && this._textGuide.removeSelfFromZr(e)
            }
        }, r.prototype.animate = function(e, t, i) {
            var a = e ? this[e] : this,
                n = new Zu(a, t, i);
            return e && (n.targetName = e), this.addAnimator(n, e), n
        }, r.prototype.addAnimator = function(e, t) {
            var i = this.__zr,
                a = this;
            e.during(function() {
                a.updateDuringAnimation(t)
            }).done(function() {
                var n = a.animators,
                    o = at(n, e);
                o >= 0 && n.splice(o, 1)
            }), this.animators.push(e), i && i.animation.addAnimator(e), i && i.wakeUp()
        }, r.prototype.updateDuringAnimation = function(e) {
            this.markRedraw()
        }, r.prototype.stopAnimation = function(e, t) {
            for (var i = this.animators, a = i.length, n = [], o = 0; o < a; o++) {
                var s = i[o];
                !e || e === s.scope ? s.stop(t) : n.push(s)
            }
            return this.animators = n, this
        }, r.prototype.animateTo = function(e, t, i) {
            yg(this, e, t, i)
        }, r.prototype.animateFrom = function(e, t, i) {
            yg(this, e, t, i, !0)
        }, r.prototype._transitionState = function(e, t, i, a) {
            for (var n = yg(this, t, i, a), o = 0; o < n.length; o++) n[o].__fromStateTransition = e
        }, r.prototype.getBoundingRect = function() {
            return null
        }, r.prototype.getPaintRect = function() {
            return null
        }, r.initDefaultProps = function() {
            var e = r.prototype;
            e.type = "element", e.name = "", e.ignore = e.silent = e.isGroup = e.draggable = e.dragging = e.ignoreClip = e.__inHover = !1, e.__dirty = Pe;
            var t = {};

            function i(n, o, s) {
                t[n + o + s] || (console.warn("DEPRECATED: '" + n + "' has been deprecated. use '" + o + "', '" + s + "' instead"), t[n + o + s] = !0)
            }

            function a(n, o, s, l) {
                Object.defineProperty(e, n, {
                    get: function() {
                        if (!this[o]) {
                            var f = this[o] = [];
                            u(this, f)
                        }
                        return this[o]
                    },
                    set: function(f) {
                        this[s] = f[0], this[l] = f[1], this[o] = f, u(this, f)
                    }
                });

                function u(f, p) {
                    Object.defineProperty(p, 0, {
                        get: function() {
                            return f[s]
                        },
                        set: function(c) {
                            f[s] = c
                        }
                    }), Object.defineProperty(p, 1, {
                        get: function() {
                            return f[l]
                        },
                        set: function(c) {
                            f[l] = c
                        }
                    })
                }
            }
            Object.defineProperty && (a("position", "_legacyPos", "x", "y"), a("scale", "_legacyScale", "scaleX", "scaleY"), a("origin", "_legacyOrigin", "originX", "originY"))
        }(), r
    }();
Bt(_g, Ce);
Bt(_g, Lr);

function yg(r, e, t, i, a) {
    t = t || {};
    var n = [];
    nT(r, "", r, e, t, i, n, a);
    var o = n.length,
        s = !1,
        l = t.done,
        u = t.aborted,
        f = function() {
            s = !0, o--, o <= 0 && (s ? l && l() : u && u())
        },
        p = function() {
            o--, o <= 0 && (s ? l && l() : u && u())
        };
    o || l && l(), n.length > 0 && t.during && n[0].during(function(v, d) {
        t.during(d)
    });
    for (var c = 0; c < n.length; c++) {
        var h = n[c];
        f && h.done(f), p && h.aborted(p), t.force && h.duration(t.duration), h.start(t.easing)
    }
    return n
}

function xg(r, e, t) {
    for (var i = 0; i < t; i++) r[i] = e[i]
}

function WV(r) {
    return ue(r[0])
}

function YV(r, e, t) {
    if (ue(e[t]))
        if (ue(r[t]) || (r[t] = []), de(e[t])) {
            var i = e[t].length;
            r[t].length !== i && (r[t] = new e[t].constructor(i), xg(r[t], e[t], i))
        } else {
            var a = e[t],
                n = r[t],
                o = a.length;
            if (WV(a))
                for (var s = a[0].length, l = 0; l < o; l++) n[l] ? xg(n[l], a[l], s) : n[l] = Array.prototype.slice.call(a[l]);
            else xg(n, a, o);
            n.length = a.length
        }
    else r[t] = e[t]
}

function ZV(r, e) {
    return r === e || ue(r) && ue(e) && XV(r, e)
}

function XV(r, e) {
    var t = r.length;
    if (t !== e.length) return !1;
    for (var i = 0; i < t; i++)
        if (r[i] !== e[i]) return !1;
    return !0
}

function nT(r, e, t, i, a, n, o, s) {
    for (var l = ft(i), u = a.duration, f = a.delay, p = a.additive, c = a.setToFinal, h = !j(n), v = r.animators, d = [], m = 0; m < l.length; m++) {
        var g = l[m],
            y = i[g];
        if (y != null && t[g] != null && (h || n[g]))
            if (j(y) && !ue(y) && !Ra(y)) {
                if (e) {
                    s || (t[g] = y, r.updateDuringAnimation(e));
                    continue
                }
                nT(r, g, t[g], y, a, n && n[g], o, s)
            } else d.push(g);
        else s || (t[g] = y, r.updateDuringAnimation(e), d.push(g))
    }
    var x = d.length;
    if (!p && x)
        for (var _ = 0; _ < v.length; _++) {
            var S = v[_];
            if (S.targetName === e) {
                var b = S.stopTracks(d);
                if (b) {
                    var T = at(v, S);
                    v.splice(T, 1)
                }
            }
        }
    if (a.force || (d = wt(d, function(M) {
            return !ZV(i[M], t[M])
        }), x = d.length), x > 0 || a.force && !o.length) {
        var C = void 0,
            A = void 0,
            D = void 0;
        if (s) {
            A = {}, c && (C = {});
            for (var _ = 0; _ < x; _++) {
                var g = d[_];
                A[g] = t[g], c ? C[g] = i[g] : t[g] = i[g]
            }
        } else if (c) {
            D = {};
            for (var _ = 0; _ < x; _++) {
                var g = d[_];
                D[g] = Io(t[g]), YV(t, i, g)
            }
        }
        var S = new Zu(t, !1, !1, p ? wt(v, function(I) {
            return I.targetName === e
        }) : null);
        S.targetName = e, a.scope && (S.scope = a.scope), c && C && S.whenWithKeys(0, C, d), D && S.whenWithKeys(0, D, d), S.whenWithKeys(u ? ? 500, s ? A : i, d).delay(f || 0), r.addAnimator(S, e), o.push(S)
    }
}
var Rc = _g;
var oT = function(r) {
    L(e, r);

    function e(t) {
        var i = r.call(this) || this;
        return i.isGroup = !0, i._children = [], i.attr(t), i
    }
    return e.prototype.childrenRef = function() {
        return this._children
    }, e.prototype.children = function() {
        return this._children.slice()
    }, e.prototype.childAt = function(t) {
        return this._children[t]
    }, e.prototype.childOfName = function(t) {
        for (var i = this._children, a = 0; a < i.length; a++)
            if (i[a].name === t) return i[a]
    }, e.prototype.childCount = function() {
        return this._children.length
    }, e.prototype.add = function(t) {
        return t && t !== this && t.parent !== this && (this._children.push(t), this._doAdd(t)), this
    }, e.prototype.addBefore = function(t, i) {
        if (t && t !== this && t.parent !== this && i && i.parent === this) {
            var a = this._children,
                n = a.indexOf(i);
            n >= 0 && (a.splice(n, 0, t), this._doAdd(t))
        }
        return this
    }, e.prototype.replace = function(t, i) {
        var a = at(this._children, t);
        return a >= 0 && this.replaceAt(i, a), this
    }, e.prototype.replaceAt = function(t, i) {
        var a = this._children,
            n = a[i];
        if (t && t !== this && t.parent !== this && t !== n) {
            a[i] = t, n.parent = null;
            var o = this.__zr;
            o && n.removeSelfFromZr(o), this._doAdd(t)
        }
        return this
    }, e.prototype._doAdd = function(t) {
        t.parent && t.parent.remove(t), t.parent = this;
        var i = this.__zr;
        i && i !== t.__zr && t.addSelfToZr(i), i && i.refresh()
    }, e.prototype.remove = function(t) {
        var i = this.__zr,
            a = this._children,
            n = at(a, t);
        return n < 0 ? this : (a.splice(n, 1), t.parent = null, i && t.removeSelfFromZr(i), i && i.refresh(), this)
    }, e.prototype.removeAll = function() {
        for (var t = this._children, i = this.__zr, a = 0; a < t.length; a++) {
            var n = t[a];
            i && n.removeSelfFromZr(i), n.parent = null
        }
        return t.length = 0, this
    }, e.prototype.eachChild = function(t, i) {
        for (var a = this._children, n = 0; n < a.length; n++) {
            var o = a[n];
            t.call(i, o, n)
        }
        return this
    }, e.prototype.traverse = function(t, i) {
        for (var a = 0; a < this._children.length; a++) {
            var n = this._children[a],
                o = t.call(i, n);
            n.isGroup && !o && n.traverse(t, i)
        }
        return this
    }, e.prototype.addSelfToZr = function(t) {
        r.prototype.addSelfToZr.call(this, t);
        for (var i = 0; i < this._children.length; i++) {
            var a = this._children[i];
            a.addSelfToZr(t)
        }
    }, e.prototype.removeSelfFromZr = function(t) {
        r.prototype.removeSelfFromZr.call(this, t);
        for (var i = 0; i < this._children.length; i++) {
            var a = this._children[i];
            a.removeSelfFromZr(t)
        }
    }, e.prototype.getBoundingRect = function(t) {
        for (var i = new it(0, 0, 0, 0), a = t || this._children, n = [], o = null, s = 0; s < a.length; s++) {
            var l = a[s];
            if (!(l.ignore || l.invisible)) {
                var u = l.getBoundingRect(),
                    f = l.getLocalTransform(n);
                f ? (it.applyTransform(i, u, f), o = o || i.clone(), o.union(i)) : (o = o || u.clone(), o.union(u))
            }
        }
        return o || i
    }, e
}(Rc);
oT.prototype.type = "group";
var J = oT;
var Nc = {},
    ko = {};

function qV(r) {
    delete ko[r]
}

function KV(r) {
    if (!r) return !1;
    if (typeof r == "string") return Lo(r, 1) < Xu;
    if (r.colorStops) {
        for (var e = r.colorStops, t = 0, i = e.length, a = 0; a < i; a++) t += Lo(e[a].color, 1);
        return t /= i, t < Xu
    }
    return !1
}
var jV = function() {
    function r(e, t, i) {
        var a = this;
        this._sleepAfterStill = 10, this._stillFrameAccum = 0, this._needsRefresh = !0, this._needsRefreshHover = !0, this._darkMode = !1, i = i || {}, this.dom = t, this.id = e;
        var n = new ww,
            o = i.renderer || "canvas";
        Nc[o] || (o = ft(Nc)[0]), i.useDirtyRect = i.useDirtyRect == null ? !1 : i.useDirtyRect;
        var s = new Nc[o](t, n, i, e),
            l = i.ssr || s.ssrOnly;
        this.storage = n, this.painter = s;
        var u = !Ct.node && !Ct.worker && !l ? new Qw(s.getViewportRoot(), s.root) : null,
            f = i.useCoarsePointer,
            p = f == null || f === "auto" ? Ct.touchEventsSupported : !!f,
            c = 44,
            h;
        p && (h = ot(i.pointerSize, c)), this.handler = new gw(n, s, u, s.root, h), this.animation = new Xw({
            stage: {
                update: l ? null : function() {
                    return a._flush(!0)
                }
            }
        }), l || this.animation.start()
    }
    return r.prototype.add = function(e) {
        this._disposed || !e || (this.storage.addRoot(e), e.addSelfToZr(this), this.refresh())
    }, r.prototype.remove = function(e) {
        this._disposed || !e || (this.storage.delRoot(e), e.removeSelfFromZr(this), this.refresh())
    }, r.prototype.configLayer = function(e, t) {
        this._disposed || (this.painter.configLayer && this.painter.configLayer(e, t), this.refresh())
    }, r.prototype.setBackgroundColor = function(e) {
        this._disposed || (this.painter.setBackgroundColor && this.painter.setBackgroundColor(e), this.refresh(), this._backgroundColor = e, this._darkMode = KV(e))
    }, r.prototype.getBackgroundColor = function() {
        return this._backgroundColor
    }, r.prototype.setDarkMode = function(e) {
        this._darkMode = e
    }, r.prototype.isDarkMode = function() {
        return this._darkMode
    }, r.prototype.refreshImmediately = function(e) {
        this._disposed || (e || this.animation.update(!0), this._needsRefresh = !1, this.painter.refresh(), this._needsRefresh = !1)
    }, r.prototype.refresh = function() {
        this._disposed || (this._needsRefresh = !0, this.animation.start())
    }, r.prototype.flush = function() {
        this._disposed || this._flush(!1)
    }, r.prototype._flush = function(e) {
        var t, i = Eo();
        this._needsRefresh && (t = !0, this.refreshImmediately(e)), this._needsRefreshHover && (t = !0, this.refreshHoverImmediately());
        var a = Eo();
        t ? (this._stillFrameAccum = 0, this.trigger("rendered", {
            elapsedTime: a - i
        })) : this._sleepAfterStill > 0 && (this._stillFrameAccum++, this._stillFrameAccum > this._sleepAfterStill && this.animation.stop())
    }, r.prototype.setSleepAfterStill = function(e) {
        this._sleepAfterStill = e
    }, r.prototype.wakeUp = function() {
        this._disposed || (this.animation.start(), this._stillFrameAccum = 0)
    }, r.prototype.refreshHover = function() {
        this._needsRefreshHover = !0
    }, r.prototype.refreshHoverImmediately = function() {
        this._disposed || (this._needsRefreshHover = !1, this.painter.refreshHover && this.painter.getType() === "canvas" && this.painter.refreshHover())
    }, r.prototype.resize = function(e) {
        this._disposed || (e = e || {}, this.painter.resize(e.width, e.height), this.handler.resize())
    }, r.prototype.clearAnimation = function() {
        this._disposed || this.animation.clear()
    }, r.prototype.getWidth = function() {
        if (!this._disposed) return this.painter.getWidth()
    }, r.prototype.getHeight = function() {
        if (!this._disposed) return this.painter.getHeight()
    }, r.prototype.setCursorStyle = function(e) {
        this._disposed || this.handler.setCursorStyle(e)
    }, r.prototype.findHover = function(e, t) {
        if (!this._disposed) return this.handler.findHover(e, t)
    }, r.prototype.on = function(e, t, i) {
        return this._disposed || this.handler.on(e, t, i), this
    }, r.prototype.off = function(e, t) {
        this._disposed || this.handler.off(e, t)
    }, r.prototype.trigger = function(e, t) {
        this._disposed || this.handler.trigger(e, t)
    }, r.prototype.clear = function() {
        if (!this._disposed) {
            for (var e = this.storage.getRoots(), t = 0; t < e.length; t++) e[t] instanceof J && e[t].removeSelfFromZr(this);
            this.storage.delAllRoots(), this.painter.clear()
        }
    }, r.prototype.dispose = function() {
        this._disposed || (this.animation.stop(), this.clear(), this.storage.dispose(), this.painter.dispose(), this.handler.dispose(), this.animation = this.storage = this.painter = this.handler = null, this._disposed = !0, qV(this.id))
    }, r
}();

function Oc(r, e) {
    var t = new jV(Au(), r, e);
    return ko[t.id] = t, t
}

function JV(r) {
    r.dispose()
}

function QV() {
    for (var r in ko) ko.hasOwnProperty(r) && ko[r].dispose();
    ko = {}
}

function $V(r) {
    return ko[r]
}

function bg(r, e) {
    Nc[r] = e
}
var Sg;

function wg(r) {
    if (typeof Sg == "function") return Sg(r)
}

function Tg(r) {
    Sg = r
}
var tB = "5.6.1";
var sT = 1e-4,
    lT = 20;

function eB(r) {
    return r.replace(/^\s+|\s+$/g, "")
}

function Rt(r, e, t, i) {
    var a = e[0],
        n = e[1],
        o = t[0],
        s = t[1],
        l = n - a,
        u = s - o;
    if (l === 0) return u === 0 ? o : (o + s) / 2;
    if (i)
        if (l > 0) {
            if (r <= a) return o;
            if (r >= n) return s
        } else {
            if (r >= a) return o;
            if (r <= n) return s
        }
    else {
        if (r === a) return o;
        if (r === n) return s
    }
    return (r - a) / l * u + o
}

function W(r, e) {
    switch (r) {
        case "center":
        case "middle":
            r = "50%";
            break;
        case "left":
        case "top":
            r = "0%";
            break;
        case "right":
        case "bottom":
            r = "100%";
            break
    }
    return F(r) ? eB(r).match(/%$/) ? parseFloat(r) / 100 * e : parseFloat(r) : r == null ? NaN : +r
}

function Gt(r, e, t) {
    return e == null && (e = 10), e = Math.min(Math.max(0, e), lT), r = (+r).toFixed(e), t ? r : +r
}

function _e(r) {
    return r.sort(function(e, t) {
        return e - t
    }), r
}

function qe(r) {
    if (r = +r, isNaN(r)) return 0;
    if (r > 1e-14) {
        for (var e = 1, t = 0; t < 15; t++, e *= 10)
            if (Math.round(r * e) / e === r) return t
    }
    return Ag(r)
}

function Ag(r) {
    var e = r.toString().toLowerCase(),
        t = e.indexOf("e"),
        i = t > 0 ? +e.slice(t + 1) : 0,
        a = t > 0 ? t : e.length,
        n = e.indexOf("."),
        o = n < 0 ? 0 : a - 1 - n;
    return Math.max(0, o - i)
}

function tl(r, e) {
    var t = Math.log,
        i = Math.LN10,
        a = Math.floor(t(r[1] - r[0]) / i),
        n = Math.round(t(Math.abs(e[1] - e[0])) / i),
        o = Math.min(Math.max(-a + n, 0), 20);
    return isFinite(o) ? o : 20
}

function uT(r, e, t) {
    if (!r[e]) return 0;
    var i = Dg(r, t);
    return i[e] || 0
}

function Dg(r, e) {
    var t = Me(r, function(h, v) {
        return h + (isNaN(v) ? 0 : v)
    }, 0);
    if (t === 0) return [];
    for (var i = Math.pow(10, e), a = k(r, function(h) {
            return (isNaN(h) ? 0 : h) / t * i * 100
        }), n = i * 100, o = k(a, function(h) {
            return Math.floor(h)
        }), s = Me(o, function(h, v) {
            return h + v
        }, 0), l = k(a, function(h, v) {
            return h - o[v]
        }); s < n;) {
        for (var u = Number.NEGATIVE_INFINITY, f = null, p = 0, c = l.length; p < c; ++p) l[p] > u && (u = l[p], f = p);
        ++o[f], l[f] = 0, ++s
    }
    return k(o, function(h) {
        return h / i
    })
}

function fT(r, e) {
    var t = Math.max(qe(r), qe(e)),
        i = r + e;
    return t > lT ? i : Gt(i, t)
}
var ju = 9007199254740991;

function Ju(r) {
    var e = Math.PI * 2;
    return (r % e + e) % e
}

function Va(r) {
    return r > -sT && r < sT
}
var rB = /^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d{1,2})(?::(\d{1,2})(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/;

function Ne(r) {
    if (r instanceof Date) return r;
    if (F(r)) {
        var e = rB.exec(r);
        if (!e) return new Date(NaN);
        if (e[8]) {
            var t = +e[4] || 0;
            return e[8].toUpperCase() !== "Z" && (t -= +e[8].slice(0, 3)), new Date(Date.UTC(+e[1], +(e[2] || 1) - 1, +e[3] || 1, t, +(e[5] || 0), +e[6] || 0, e[7] ? +e[7].substring(0, 3) : 0))
        } else return new Date(+e[1], +(e[2] || 1) - 1, +e[3] || 1, +e[4] || 0, +(e[5] || 0), +e[6] || 0, e[7] ? +e[7].substring(0, 3) : 0)
    } else if (r == null) return new Date(NaN);
    return new Date(Math.round(r))
}

function zc(r) {
    return Math.pow(10, el(r))
}

function el(r) {
    if (r === 0) return 0;
    var e = Math.floor(Math.log(r) / Math.LN10);
    return r / Math.pow(10, e) >= 10 && e++, e
}

function rl(r, e) {
    var t = el(r),
        i = Math.pow(10, t),
        a = r / i,
        n;
    return e ? a < 1.5 ? n = 1 : a < 2.5 ? n = 2 : a < 4 ? n = 3 : a < 7 ? n = 5 : n = 10 : a < 1 ? n = 1 : a < 2 ? n = 2 : a < 3 ? n = 3 : a < 5 ? n = 5 : n = 10, r = n * i, t >= -20 ? +r.toFixed(t < 0 ? -t : 0) : r
}

function il(r, e) {
    var t = (r.length - 1) * e + 1,
        i = Math.floor(t),
        a = +r[i - 1],
        n = t - i;
    return n ? a + n * (r[i] - a) : a
}

function Qu(r) {
    r.sort(function(l, u) {
        return s(l, u, 0) ? -1 : 1
    });
    for (var e = -1 / 0, t = 1, i = 0; i < r.length;) {
        for (var a = r[i].interval, n = r[i].close, o = 0; o < 2; o++) a[o] <= e && (a[o] = e, n[o] = o ? 1 : 1 - t), e = a[o], t = n[o];
        a[0] === a[1] && n[0] * n[1] !== 1 ? r.splice(i, 1) : i++
    }
    return r;

    function s(l, u, f) {
        return l.interval[f] < u.interval[f] || l.interval[f] === u.interval[f] && (l.close[f] - u.close[f] === (f ? -1 : 1) || !f && s(l, u, 1))
    }
}

function Er(r) {
    var e = parseFloat(r);
    return e == r && (e !== 0 || !F(r) || r.indexOf("x") <= 0) ? e : NaN
}

function Uo(r) {
    return !isNaN(Er(r))
}

function kc() {
    return Math.round(Math.random() * 9)
}

function pT(r, e) {
    return e === 0 ? r : pT(e, r % e)
}

function Mg(r, e) {
    return r == null ? e : e == null ? r : r * e / pT(r, e)
}
var iB = "[ECharts] ",
    cT = {},
    aB = typeof console < "u" && console.warn && console.log;

function nB(r, e, t) {
    if (aB) {
        if (t) {
            if (cT[e]) return;
            cT[e] = !0
        }
        console[r](iB + e)
    }
}

function hT(r, e) {
    nB("warn", r, e)
}

function kt(r) {
    throw new Error(r)
}

function vT(r, e, t) {
    return (e - r) * t + r
}
var dT = "series\0",
    mT = "\0_ec_\0";

function Pt(r) {
    return r instanceof Array ? r : r == null ? [] : [r]
}

function Qr(r, e, t) {
    if (r) {
        r[e] = r[e] || {}, r.emphasis = r.emphasis || {}, r.emphasis[e] = r.emphasis[e] || {};
        for (var i = 0, a = t.length; i < a; i++) {
            var n = t[i];
            !r.emphasis[e].hasOwnProperty(n) && r[e].hasOwnProperty(n) && (r.emphasis[e][n] = r[e][n])
        }
    }
}
var Lg = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "rich", "tag", "color", "textBorderColor", "textBorderWidth", "width", "height", "lineHeight", "align", "verticalAlign", "baseline", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY", "textShadowColor", "textShadowBlur", "textShadowOffsetX", "textShadowOffsetY", "backgroundColor", "borderColor", "borderWidth", "borderRadius", "padding"];

function Fi(r) {
    return j(r) && !z(r) && !(r instanceof Date) ? r.value : r
}

function gT(r) {
    return j(r) && !(r instanceof Array)
}

function Uc(r, e, t) {
    var i = t === "normalMerge",
        a = t === "replaceMerge",
        n = t === "replaceAll";
    r = r || [], e = (e || []).slice();
    var o = Y();
    w(e, function(l, u) {
        if (!j(l)) {
            e[u] = null;
            return
        }
    });
    var s = oB(r, o, t);
    return (i || a) && sB(s, r, o, e), i && lB(s, e), i || a ? uB(s, e, a) : n && fB(s, e), pB(s), s
}

function oB(r, e, t) {
    var i = [];
    if (t === "replaceAll") return i;
    for (var a = 0; a < r.length; a++) {
        var n = r[a];
        n && n.id != null && e.set(n.id, a), i.push({
            existing: t === "replaceMerge" || al(n) ? null : n,
            newOption: null,
            keyInfo: null,
            brandNew: null
        })
    }
    return i
}

function sB(r, e, t, i) {
    w(i, function(a, n) {
        if (!(!a || a.id == null)) {
            var o = $u(a.id),
                s = t.get(o);
            if (s != null) {
                var l = r[s];
                jt(!l.newOption, 'Duplicated option on id "' + o + '".'), l.newOption = a, l.existing = e[s], i[n] = null
            }
        }
    })
}

function lB(r, e) {
    w(e, function(t, i) {
        if (!(!t || t.name == null))
            for (var a = 0; a < r.length; a++) {
                var n = r[a].existing;
                if (!r[a].newOption && n && (n.id == null || t.id == null) && !al(t) && !al(n) && yT("name", n, t)) {
                    r[a].newOption = t, e[i] = null;
                    return
                }
            }
    })
}

function uB(r, e, t) {
    w(e, function(i) {
        if (i) {
            for (var a, n = 0;
                (a = r[n]) && (a.newOption || al(a.existing) || a.existing && i.id != null && !yT("id", i, a.existing));) n++;
            a ? (a.newOption = i, a.brandNew = t) : r.push({
                newOption: i,
                brandNew: t,
                existing: null,
                keyInfo: null
            }), n++
        }
    })
}

function fB(r, e) {
    w(e, function(t) {
        r.push({
            newOption: t,
            brandNew: !0,
            existing: null,
            keyInfo: null
        })
    })
}

function pB(r) {
    var e = Y();
    w(r, function(t) {
        var i = t.existing;
        i && e.set(i.id, t)
    }), w(r, function(t) {
        var i = t.newOption;
        jt(!i || i.id == null || !e.get(i.id) || e.get(i.id) === t, "id duplicates: " + (i && i.id)), i && i.id != null && e.set(i.id, t), !t.keyInfo && (t.keyInfo = {})
    }), w(r, function(t, i) {
        var a = t.existing,
            n = t.newOption,
            o = t.keyInfo;
        if (j(n)) {
            if (o.name = n.name != null ? $u(n.name) : a ? a.name : dT + i, a) o.id = $u(a.id);
            else if (n.id != null) o.id = $u(n.id);
            else {
                var s = 0;
                do o.id = "\0" + o.name + "\0" + s++; while (e.get(o.id))
            }
            e.set(o.id, t)
        }
    })
}

function yT(r, e, t) {
    var i = ie(e[r], null),
        a = ie(t[r], null);
    return i != null && a != null && i === a
}

function $u(r) {
    return ie(r, "")
}

function ie(r, e) {
    return r == null ? e : F(r) ? r : vt(r) || Vs(r) ? r + "" : e
}

function nl(r) {
    var e = r.name;
    return !!(e && e.indexOf(dT))
}

function al(r) {
    return r && r.id != null && $u(r.id).indexOf(mT) === 0
}

function xT(r) {
    return mT + r
}

function _T(r, e, t) {
    w(r, function(i) {
        var a = i.newOption;
        j(a) && (i.keyInfo.mainType = e, i.keyInfo.subType = cB(e, a, i.existing, t))
    })
}

function cB(r, e, t, i) {
    var a = e.type ? e.type : t ? t.subType : i.determineSubType(r, e);
    return a
}

function ST(r, e) {
    var t = {},
        i = {};
    return a(r || [], t), a(e || [], i, t), [n(t), n(i)];

    function a(o, s, l) {
        for (var u = 0, f = o.length; u < f; u++) {
            var p = ie(o[u].seriesId, null);
            if (p == null) return;
            for (var c = Pt(o[u].dataIndex), h = l && l[p], v = 0, d = c.length; v < d; v++) {
                var m = c[v];
                h && h[m] ? h[m] = null : (s[p] || (s[p] = {}))[m] = 1
            }
        }
    }

    function n(o, s) {
        var l = [];
        for (var u in o)
            if (o.hasOwnProperty(u) && o[u] != null)
                if (s) l.push(+u);
                else {
                    var f = n(o[u], !0);
                    f.length && l.push({
                        seriesId: u,
                        dataIndex: f
                    })
                }
        return l
    }
}

function vi(r, e) {
    if (e.dataIndexInside != null) return e.dataIndexInside;
    if (e.dataIndex != null) return z(e.dataIndex) ? k(e.dataIndex, function(t) {
        return r.indexOfRawIndex(t)
    }) : r.indexOfRawIndex(e.dataIndex);
    if (e.name != null) return z(e.name) ? k(e.name, function(t) {
        return r.indexOfName(t)
    }) : r.indexOfName(e.name)
}

function lt() {
    var r = "__ec_inner_" + hB++;
    return function(e) {
        return e[r] || (e[r] = {})
    }
}
var hB = kc();

function wn(r, e, t) {
    var i = tf(e, t),
        a = i.mainTypeSpecified,
        n = i.queryOptionMap,
        o = i.others,
        s = o,
        l = t ? t.defaultMainType : null;
    return !a && l && n.set(l, {}), n.each(function(u, f) {
        var p = Tn(r, f, u, {
            useDefault: l === f,
            enableAll: t && t.enableAll != null ? t.enableAll : !0,
            enableNone: t && t.enableNone != null ? t.enableNone : !0
        });
        s[f + "Models"] = p.models, s[f + "Model"] = p.models[0]
    }), s
}

function tf(r, e) {
    var t;
    if (F(r)) {
        var i = {};
        i[r + "Index"] = 0, t = i
    } else t = r;
    var a = Y(),
        n = {},
        o = !1;
    return w(t, function(s, l) {
        if (l === "dataIndex" || l === "dataIndexInside") {
            n[l] = s;
            return
        }
        var u = l.match(/^(\w+)(Index|Id|Name)$/) || [],
            f = u[1],
            p = (u[2] || "").toLowerCase();
        if (!(!f || !p || e && e.includeMainTypes && at(e.includeMainTypes, f) < 0)) {
            o = o || !!f;
            var c = a.get(f) || a.set(f, {});
            c[p] = s
        }
    }), {
        mainTypeSpecified: o,
        queryOptionMap: a,
        others: n
    }
}
var Ht = {
        useDefault: !0,
        enableAll: !1,
        enableNone: !1
    },
    bT = {
        useDefault: !1,
        enableAll: !0,
        enableNone: !0
    };

function Tn(r, e, t, i) {
    i = i || Ht;
    var a = t.index,
        n = t.id,
        o = t.name,
        s = {
            models: null,
            specified: a != null || n != null || o != null
        };
    if (!s.specified) {
        var l = void 0;
        return s.models = i.useDefault && (l = r.getComponent(e)) ? [l] : [], s
    }
    return a === "none" || a === !1 ? (jt(i.enableNone, '`"none"` or `false` is not a valid value on index option.'), s.models = [], s) : (a === "all" && (jt(i.enableAll, '`"all"` is not a valid value on index option.'), a = n = o = null), s.models = r.queryComponents({
        mainType: e,
        index: a,
        id: n,
        name: o
    }), s)
}

function Ig(r, e, t) {
    r.setAttribute ? r.setAttribute(e, t) : r[e] = t
}

function wT(r, e) {
    return r.getAttribute ? r.getAttribute(e) : r[e]
}

function TT(r) {
    return r === "auto" ? Ct.domSupported ? "html" : "richText" : r || "html"
}

function ef(r, e) {
    var t = Y(),
        i = [];
    return w(r, function(a) {
        var n = e(a);
        (t.get(n) || (i.push(n), t.set(n, []))).push(a)
    }), {
        keys: i,
        buckets: t
    }
}

function Vc(r, e, t, i, a) {
    var n = e == null || e === "auto";
    if (i == null) return i;
    if (vt(i)) {
        var o = vT(t || 0, i, a);
        return Gt(o, n ? Math.max(qe(t || 0), qe(i)) : e)
    } else {
        if (F(i)) return a < 1 ? t : i;
        for (var s = [], l = t, u = i, f = Math.max(l ? l.length : 0, u.length), p = 0; p < f; ++p) {
            var c = r.getDimensionInfo(p);
            if (c && c.type === "ordinal") s[p] = (a < 1 && l ? l : u)[p];
            else {
                var h = l && l[p] ? l[p] : 0,
                    v = u[p],
                    o = vT(h, v, a);
                s[p] = Gt(o, n ? Math.max(qe(h), qe(v)) : e)
            }
        }
        return s
    }
}
var vB = ".",
    Vo = "___EC__COMPONENT__CONTAINER___",
    CT = "___EC__EXTENDED_CLASS___";

function Rr(r) {
    var e = {
        main: "",
        sub: ""
    };
    if (r) {
        var t = r.split(vB);
        e.main = t[0] || "", e.sub = t[1] || ""
    }
    return e
}

function dB(r) {
    jt(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(r), 'componentType "' + r + '" illegal')
}

function AT(r) {
    return !!(r && r[CT])
}

function ol(r, e) {
    r.$constructor = r, r.extend = function(t) {
        var i = this,
            a;
        return mB(i) ? a = function(n) {
            L(o, n);

            function o() {
                return n.apply(this, arguments) || this
            }
            return o
        }(i) : (a = function() {
            (t.$constructor || i).apply(this, arguments)
        }, Du(a, this)), O(a.prototype, t), a[CT] = !0, a.extend = this.extend, a.superCall = yB, a.superApply = xB, a.superClass = i, a
    }
}

function mB(r) {
    return X(r) && /^class\s/.test(Function.prototype.toString.call(r))
}

function Bc(r, e) {
    r.extend = e.extend
}
var gB = Math.round(Math.random() * 10);

function DT(r) {
    var e = ["__\0is_clz", gB++].join("_");
    r.prototype[e] = !0, r.isInstance = function(t) {
        return !!(t && t[e])
    }
}

function yB(r, e) {
    for (var t = [], i = 2; i < arguments.length; i++) t[i - 2] = arguments[i];
    return this.superClass.prototype[e].apply(r, t)
}

function xB(r, e, t) {
    return this.superClass.prototype[e].apply(r, t)
}

function Cn(r) {
    var e = {};
    r.registerClass = function(i) {
        var a = i.type || i.prototype.type;
        if (a) {
            dB(a), i.prototype.type = a;
            var n = Rr(a);
            if (!n.sub) e[n.main] = i;
            else if (n.sub !== Vo) {
                var o = t(n);
                o[n.sub] = i
            }
        }
        return i
    }, r.getClass = function(i, a, n) {
        var o = e[i];
        if (o && o[Vo] && (o = a ? o[a] : null), n && !o) throw new Error(a ? "Component " + i + "." + (a || "") + " is used but not imported." : i + ".type should be specified.");
        return o
    }, r.getClassesByMainType = function(i) {
        var a = Rr(i),
            n = [],
            o = e[a.main];
        return o && o[Vo] ? w(o, function(s, l) {
            l !== Vo && n.push(s)
        }) : n.push(o), n
    }, r.hasClass = function(i) {
        var a = Rr(i);
        return !!e[a.main]
    }, r.getAllClassMainTypes = function() {
        var i = [];
        return w(e, function(a, n) {
            i.push(n)
        }), i
    }, r.hasSubTypes = function(i) {
        var a = Rr(i),
            n = e[a.main];
        return n && n[Vo]
    };

    function t(i) {
        var a = e[i.main];
        return (!a || !a[Vo]) && (a = e[i.main] = {}, a[Vo] = !0), a
    }
}

function Nr(r, e) {
    for (var t = 0; t < r.length; t++) r[t][1] || (r[t][1] = r[t][0]);
    return e = e || !1,
        function(i, a, n) {
            for (var o = {}, s = 0; s < r.length; s++) {
                var l = r[s][1];
                if (!(a && at(a, l) >= 0 || n && at(n, l) < 0)) {
                    var u = i.getShallow(l, e);
                    u != null && (o[r[s][0]] = u)
                }
            }
            return o
        }
}
var _B = [
        ["fill", "color"],
        ["shadowBlur"],
        ["shadowOffsetX"],
        ["shadowOffsetY"],
        ["opacity"],
        ["shadowColor"]
    ],
    SB = Nr(_B),
    MT = function() {
        function r() {}
        return r.prototype.getAreaStyle = function(e, t) {
            return SB(this, e, t)
        }, r
    }();
var Pg = new ka(50);

function IT(r) {
    if (typeof r == "string") {
        var e = Pg.get(r);
        return e && e.image
    } else return r
}

function rf(r, e, t, i, a) {
    if (r)
        if (typeof r == "string") {
            if (e && e.__zrImageSrc === r || !t) return e;
            var n = Pg.get(r),
                o = {
                    hostEl: t,
                    cb: i,
                    cbPayload: a
                };
            return n ? (e = n.image, !sl(e) && n.pending.push(o)) : (e = He.loadImage(r, LT, LT), e.__zrImageSrc = r, Pg.put(r, e.__cachedImgObj = {
                image: e,
                pending: [o]
            })), e
        } else return r;
    else return e
}

function LT() {
    var r = this.__cachedImgObj;
    this.onload = this.onerror = this.__cachedImgObj = null;
    for (var e = 0; e < r.pending.length; e++) {
        var t = r.pending[e],
            i = t.cb;
        i && i(this, t.cbPayload), t.hostEl.dirty()
    }
    r.pending.length = 0
}

function sl(r) {
    return r && r.width && r.height
}
var Rg = /\{([a-zA-Z0-9_]+)\|([^}]*)\}/g;

function Og(r, e, t, i, a) {
    var n = {};
    return PT(n, r, e, t, i, a), n.text
}

function PT(r, e, t, i, a, n) {
    if (!t) {
        r.text = "", r.isTruncated = !1;
        return
    }
    var o = (e + "").split(`
`);
    n = RT(t, i, a, n);
    for (var s = !1, l = {}, u = 0, f = o.length; u < f; u++) NT(l, o[u], n), o[u] = l.textLine, s = s || l.isTruncated;
    r.text = o.join(`
`), r.isTruncated = s
}

function RT(r, e, t, i) {
    i = i || {};
    var a = O({}, i);
    a.font = e, t = ot(t, "..."), a.maxIterations = ot(i.maxIterations, 2);
    var n = a.minChar = ot(i.minChar, 0);
    a.cnCharWidth = Ir("\u56FD", e);
    var o = a.ascCharWidth = Ir("a", e);
    a.placeholder = ot(i.placeholder, "");
    for (var s = r = Math.max(0, r - 1), l = 0; l < n && s >= o; l++) s -= o;
    var u = Ir(t, e);
    return u > s && (t = "", u = 0), s = r - u, a.ellipsis = t, a.ellipsisWidth = u, a.contentWidth = s, a.containerWidth = r, a
}

function NT(r, e, t) {
    var i = t.containerWidth,
        a = t.font,
        n = t.contentWidth;
    if (!i) {
        r.textLine = "", r.isTruncated = !1;
        return
    }
    var o = Ir(e, a);
    if (o <= i) {
        r.textLine = e, r.isTruncated = !1;
        return
    }
    for (var s = 0;; s++) {
        if (o <= n || s >= t.maxIterations) {
            e += t.ellipsis;
            break
        }
        var l = s === 0 ? wB(e, n, t.ascCharWidth, t.cnCharWidth) : o > 0 ? Math.floor(e.length * n / o) : 0;
        e = e.substr(0, l), o = Ir(e, a)
    }
    e === "" && (e = t.placeholder), r.textLine = e, r.isTruncated = !0
}

function wB(r, e, t, i) {
    for (var a = 0, n = 0, o = r.length; n < o && a < e; n++) {
        var s = r.charCodeAt(n);
        a += 0 <= s && s <= 127 ? t : i
    }
    return n
}

function OT(r, e) {
    r != null && (r += "");
    var t = e.overflow,
        i = e.padding,
        a = e.font,
        n = t === "truncate",
        o = Qs(a),
        s = ot(e.lineHeight, o),
        l = !!e.backgroundColor,
        u = e.lineOverflow === "truncate",
        f = !1,
        p = e.width,
        c;
    p != null && (t === "break" || t === "breakAll") ? c = r ? kT(r, e.font, p, t === "breakAll", 0).lines : [] : c = r ? r.split(`
`) : [];
    var h = c.length * s,
        v = ot(e.height, h);
    if (h > v && u) {
        var d = Math.floor(v / s);
        f = f || c.length > d, c = c.slice(0, d)
    }
    if (r && n && p != null)
        for (var m = RT(p, a, e.ellipsis, {
                minChar: e.truncateMinChar,
                placeholder: e.placeholder
            }), g = {}, y = 0; y < c.length; y++) NT(g, c[y], m), c[y] = g.textLine, f = f || g.isTruncated;
    for (var x = v, _ = 0, y = 0; y < c.length; y++) _ = Math.max(Ir(c[y], a), _);
    p == null && (p = _);
    var S = _;
    return i && (x += i[0] + i[2], S += i[1] + i[3], p += i[1] + i[3]), l && (S = p), {
        lines: c,
        height: v,
        outerWidth: S,
        outerHeight: x,
        lineHeight: s,
        calculatedLineHeight: o,
        contentWidth: _,
        contentHeight: h,
        width: p,
        isTruncated: f
    }
}
var TB = function() {
        function r() {}
        return r
    }(),
    ET = function() {
        function r(e) {
            this.tokens = [], e && (this.tokens = e)
        }
        return r
    }(),
    CB = function() {
        function r() {
            this.width = 0, this.height = 0, this.contentWidth = 0, this.contentHeight = 0, this.outerWidth = 0, this.outerHeight = 0, this.lines = [], this.isTruncated = !1
        }
        return r
    }();

function zT(r, e) {
    var t = new CB;
    if (r != null && (r += ""), !r) return t;
    for (var i = e.width, a = e.height, n = e.overflow, o = (n === "break" || n === "breakAll") && i != null ? {
            width: i,
            accumWidth: 0,
            breakAll: n === "breakAll"
        } : null, s = Rg.lastIndex = 0, l;
        (l = Rg.exec(r)) != null;) {
        var u = l.index;
        u > s && Ng(t, r.substring(s, u), e, o), Ng(t, l[2], e, o, l[1]), s = Rg.lastIndex
    }
    s < r.length && Ng(t, r.substring(s, r.length), e, o);
    var f = [],
        p = 0,
        c = 0,
        h = e.padding,
        v = n === "truncate",
        d = e.lineOverflow === "truncate",
        m = {};

    function g(Z, K, tt) {
        Z.width = K, Z.lineHeight = tt, p += tt, c = Math.max(c, K)
    }
    t: for (var y = 0; y < t.lines.length; y++) {
        for (var x = t.lines[y], _ = 0, S = 0, b = 0; b < x.tokens.length; b++) {
            var T = x.tokens[b],
                C = T.styleName && e.rich[T.styleName] || {},
                A = T.textPadding = C.padding,
                D = A ? A[1] + A[3] : 0,
                M = T.font = C.font || e.font;
            T.contentHeight = Qs(M);
            var I = ot(C.height, T.contentHeight);
            if (T.innerHeight = I, A && (I += A[0] + A[2]), T.height = I, T.lineHeight = Le(C.lineHeight, e.lineHeight, I), T.align = C && C.align || e.align, T.verticalAlign = C && C.verticalAlign || "middle", d && a != null && p + T.lineHeight > a) {
                var E = t.lines.length;
                b > 0 ? (x.tokens = x.tokens.slice(0, b), g(x, S, _), t.lines = t.lines.slice(0, y + 1)) : t.lines = t.lines.slice(0, y), t.isTruncated = t.isTruncated || t.lines.length < E;
                break t
            }
            var P = C.width,
                R = P == null || P === "auto";
            if (typeof P == "string" && P.charAt(P.length - 1) === "%") T.percentWidth = P, f.push(T), T.contentWidth = Ir(T.text, M);
            else {
                if (R) {
                    var N = C.backgroundColor,
                        V = N && N.image;
                    V && (V = IT(V), sl(V) && (T.width = Math.max(T.width, V.width * I / V.height)))
                }
                var U = v && i != null ? i - S : null;
                U != null && U < T.width ? !R || U < D ? (T.text = "", T.width = T.contentWidth = 0) : (PT(m, T.text, U - D, M, e.ellipsis, {
                    minChar: e.truncateMinChar
                }), T.text = m.text, t.isTruncated = t.isTruncated || m.isTruncated, T.width = T.contentWidth = Ir(T.text, M)) : T.contentWidth = Ir(T.text, M)
            }
            T.width += D, S += T.width, C && (_ = Math.max(_, T.lineHeight))
        }
        g(x, S, _)
    }
    t.outerWidth = t.width = ot(i, c), t.outerHeight = t.height = ot(a, p), t.contentHeight = p, t.contentWidth = c, h && (t.outerWidth += h[1] + h[3], t.outerHeight += h[0] + h[2]);
    for (var y = 0; y < f.length; y++) {
        var T = f[y],
            B = T.percentWidth;
        T.width = parseInt(B, 10) / 100 * t.width
    }
    return t
}

function Ng(r, e, t, i, a) {
    var n = e === "",
        o = a && t.rich[a] || {},
        s = r.lines,
        l = o.font || t.font,
        u = !1,
        f, p;
    if (i) {
        var c = o.padding,
            h = c ? c[1] + c[3] : 0;
        if (o.width != null && o.width !== "auto") {
            var v = Xe(o.width, i.width) + h;
            s.length > 0 && v + i.accumWidth > i.width && (f = e.split(`
`), u = !0), i.accumWidth = v
        } else {
            var d = kT(e, l, i.width, i.breakAll, i.accumWidth);
            i.accumWidth = d.accumWidth + h, p = d.linesWidths, f = d.lines
        }
    } else f = e.split(`
`);
    for (var m = 0; m < f.length; m++) {
        var g = f[m],
            y = new TB;
        if (y.styleName = a, y.text = g, y.isLineHolder = !g && !n, typeof o.width == "number" ? y.width = o.width : y.width = p ? p[m] : Ir(g, l), !m && !u) {
            var x = (s[s.length - 1] || (s[0] = new ET)).tokens,
                _ = x.length;
            _ === 1 && x[0].isLineHolder ? x[0] = y : (g || !_ || n) && x.push(y)
        } else s.push(new ET([y]))
    }
}

function AB(r) {
    var e = r.charCodeAt(0);
    return e >= 32 && e <= 591 || e >= 880 && e <= 4351 || e >= 4608 && e <= 5119 || e >= 7680 && e <= 8303
}
var DB = Me(",&?/;] ".split(""), function(r, e) {
    return r[e] = !0, r
}, {});

function MB(r) {
    return AB(r) ? !!DB[r] : !0
}

function kT(r, e, t, i, a) {
    for (var n = [], o = [], s = "", l = "", u = 0, f = 0, p = 0; p < r.length; p++) {
        var c = r.charAt(p);
        if (c === `
`) {
            l && (s += l, f += u), n.push(s), o.push(f), s = "", l = "", u = 0, f = 0;
            continue
        }
        var h = Ir(c, e),
            v = i ? !1 : !MB(c);
        if (n.length ? f + h > t : a + f + h > t) {
            f ? (s || l) && (v ? (s || (s = l, l = "", u = 0, f = u), n.push(s), o.push(f - u), l += c, u += h, s = "", f = u) : (l && (s += l, l = "", u = 0), n.push(s), o.push(f), s = c, f = h)) : v ? (n.push(l), o.push(u), l = c, u = h) : (n.push(c), o.push(h));
            continue
        }
        f += h, v ? (l += c, u += h) : (l && (s += l, l = "", u = 0), s += c)
    }
    return !n.length && !s && (s = r, l = "", u = 0), l && (s += l), s && (n.push(s), o.push(f)), n.length === 1 && (f += a), {
        accumWidth: f,
        lines: n,
        linesWidths: o
    }
}
var Ug = "__zr_style_" + Math.round(Math.random() * 10),
    fa = {
        shadowBlur: 0,
        shadowOffsetX: 0,
        shadowOffsetY: 0,
        shadowColor: "#000",
        opacity: 1,
        blend: "source-over"
    },
    Bo = {
        style: {
            shadowBlur: !0,
            shadowOffsetX: !0,
            shadowOffsetY: !0,
            shadowColor: !0,
            opacity: !0
        }
    };
fa[Ug] = !0;
var UT = ["z", "z2", "invisible"],
    LB = ["invisible"],
    IB = function(r) {
        L(e, r);

        function e(t) {
            return r.call(this, t) || this
        }
        return e.prototype._init = function(t) {
            for (var i = ft(t), a = 0; a < i.length; a++) {
                var n = i[a];
                n === "style" ? this.useStyle(t[n]) : r.prototype.attrKV.call(this, n, t[n])
            }
            this.style || this.useStyle({})
        }, e.prototype.beforeBrush = function() {}, e.prototype.afterBrush = function() {}, e.prototype.innerBeforeBrush = function() {}, e.prototype.innerAfterBrush = function() {}, e.prototype.shouldBePainted = function(t, i, a, n) {
            var o = this.transform;
            if (this.ignore || this.invisible || this.style.opacity === 0 || this.culling && EB(this, t, i) || o && !o[0] && !o[3]) return !1;
            if (a && this.__clipPaths) {
                for (var s = 0; s < this.__clipPaths.length; ++s)
                    if (this.__clipPaths[s].isZeroArea()) return !1
            }
            if (n && this.parent)
                for (var l = this.parent; l;) {
                    if (l.ignore) return !1;
                    l = l.parent
                }
            return !0
        }, e.prototype.contain = function(t, i) {
            return this.rectContain(t, i)
        }, e.prototype.traverse = function(t, i) {
            t.call(i, this)
        }, e.prototype.rectContain = function(t, i) {
            var a = this.transformCoordToLocal(t, i),
                n = this.getBoundingRect();
            return n.contain(a[0], a[1])
        }, e.prototype.getPaintRect = function() {
            var t = this._paintRect;
            if (!this._paintRect || this.__dirty) {
                var i = this.transform,
                    a = this.getBoundingRect(),
                    n = this.style,
                    o = n.shadowBlur || 0,
                    s = n.shadowOffsetX || 0,
                    l = n.shadowOffsetY || 0;
                t = this._paintRect || (this._paintRect = new it(0, 0, 0, 0)), i ? it.applyTransform(t, a, i) : t.copy(a), (o || s || l) && (t.width += o * 2 + Math.abs(s), t.height += o * 2 + Math.abs(l), t.x = Math.min(t.x, t.x + s - o), t.y = Math.min(t.y, t.y + l - o));
                var u = this.dirtyRectTolerance;
                t.isZero() || (t.x = Math.floor(t.x - u), t.y = Math.floor(t.y - u), t.width = Math.ceil(t.width + 1 + u * 2), t.height = Math.ceil(t.height + 1 + u * 2))
            }
            return t
        }, e.prototype.setPrevPaintRect = function(t) {
            t ? (this._prevPaintRect = this._prevPaintRect || new it(0, 0, 0, 0), this._prevPaintRect.copy(t)) : this._prevPaintRect = null
        }, e.prototype.getPrevPaintRect = function() {
            return this._prevPaintRect
        }, e.prototype.animateStyle = function(t) {
            return this.animate("style", t)
        }, e.prototype.updateDuringAnimation = function(t) {
            t === "style" ? this.dirtyStyle() : this.markRedraw()
        }, e.prototype.attrKV = function(t, i) {
            t !== "style" ? r.prototype.attrKV.call(this, t, i) : this.style ? this.setStyle(i) : this.useStyle(i)
        }, e.prototype.setStyle = function(t, i) {
            return typeof t == "string" ? this.style[t] = i : O(this.style, t), this.dirtyStyle(), this
        }, e.prototype.dirtyStyle = function(t) {
            t || this.markRedraw(), this.__dirty |= Ao, this._rect && (this._rect = null)
        }, e.prototype.dirty = function() {
            this.dirtyStyle()
        }, e.prototype.styleChanged = function() {
            return !!(this.__dirty & Ao)
        }, e.prototype.styleUpdated = function() {
            this.__dirty &= ~Ao
        }, e.prototype.createStyle = function(t) {
            return Oa(fa, t)
        }, e.prototype.useStyle = function(t) {
            t[Ug] || (t = this.createStyle(t)), this.__inHover ? this.__hoverStyle = t : this.style = t, this.dirtyStyle()
        }, e.prototype.isStyleObject = function(t) {
            return t[Ug]
        }, e.prototype._innerSaveToNormal = function(t) {
            r.prototype._innerSaveToNormal.call(this, t);
            var i = this._normalState;
            t.style && !i.style && (i.style = this._mergeStyle(this.createStyle(), this.style)), this._savePrimaryToNormal(t, i, UT)
        }, e.prototype._applyStateObj = function(t, i, a, n, o, s) {
            r.prototype._applyStateObj.call(this, t, i, a, n, o, s);
            var l = !(i && n),
                u;
            if (i && i.style ? o ? n ? u = i.style : (u = this._mergeStyle(this.createStyle(), a.style), this._mergeStyle(u, i.style)) : (u = this._mergeStyle(this.createStyle(), n ? this.style : a.style), this._mergeStyle(u, i.style)) : l && (u = a.style), u)
                if (o) {
                    var f = this.style;
                    if (this.style = this.createStyle(l ? {} : f), l)
                        for (var p = ft(f), c = 0; c < p.length; c++) {
                            var h = p[c];
                            h in u && (u[h] = u[h], this.style[h] = f[h])
                        }
                    for (var v = ft(u), c = 0; c < v.length; c++) {
                        var h = v[c];
                        this.style[h] = this.style[h]
                    }
                    this._transitionState(t, {
                        style: u
                    }, s, this.getAnimationStyleProps())
                } else this.useStyle(u);
            for (var d = this.__inHover ? LB : UT, c = 0; c < d.length; c++) {
                var h = d[c];
                i && i[h] != null ? this[h] = i[h] : l && a[h] != null && (this[h] = a[h])
            }
        }, e.prototype._mergeStates = function(t) {
            for (var i = r.prototype._mergeStates.call(this, t), a, n = 0; n < t.length; n++) {
                var o = t[n];
                o.style && (a = a || {}, this._mergeStyle(a, o.style))
            }
            return a && (i.style = a), i
        }, e.prototype._mergeStyle = function(t, i) {
            return O(t, i), t
        }, e.prototype.getAnimationStyleProps = function() {
            return Bo
        }, e.initDefaultProps = function() {
            var t = e.prototype;
            t.type = "displayable", t.invisible = !1, t.z = 0, t.z2 = 0, t.zlevel = 0, t.culling = !1, t.cursor = "pointer", t.rectHover = !1, t.incremental = !1, t._rect = null, t.dirtyRectTolerance = 0, t.__dirty = Pe | Ao
        }(), e
    }(Rc),
    zg = new it(0, 0, 0, 0),
    kg = new it(0, 0, 0, 0);

function EB(r, e, t) {
    return zg.copy(r.getBoundingRect()), r.transform && zg.applyTransform(r.transform), kg.width = e, kg.height = t, !zg.intersect(kg)
}
var ye = IB;
var Or = Math.min,
    zr = Math.max,
    Vg = Math.sin,
    Bg = Math.cos,
    Fo = Math.PI * 2,
    Fc = Ui(),
    Gc = Ui(),
    Hc = Ui();

function Go(r, e, t) {
    if (r.length !== 0) {
        for (var i = r[0], a = i[0], n = i[0], o = i[1], s = i[1], l = 1; l < r.length; l++) i = r[l], a = Or(a, i[0]), n = zr(n, i[0]), o = Or(o, i[1]), s = zr(s, i[1]);
        e[0] = a, e[1] = o, t[0] = n, t[1] = s
    }
}

function Fg(r, e, t, i, a, n) {
    a[0] = Or(r, t), a[1] = Or(e, i), n[0] = zr(r, t), n[1] = zr(e, i)
}
var VT = [],
    BT = [];

function FT(r, e, t, i, a, n, o, s, l, u) {
    var f = cc,
        p = ce,
        c = f(r, t, a, o, VT);
    l[0] = 1 / 0, l[1] = 1 / 0, u[0] = -1 / 0, u[1] = -1 / 0;
    for (var h = 0; h < c; h++) {
        var v = p(r, t, a, o, VT[h]);
        l[0] = Or(v, l[0]), u[0] = zr(v, u[0])
    }
    c = f(e, i, n, s, BT);
    for (var h = 0; h < c; h++) {
        var d = p(e, i, n, s, BT[h]);
        l[1] = Or(d, l[1]), u[1] = zr(d, u[1])
    }
    l[0] = Or(r, l[0]), u[0] = zr(r, u[0]), l[0] = Or(o, l[0]), u[0] = zr(o, u[0]), l[1] = Or(e, l[1]), u[1] = zr(e, u[1]), l[1] = Or(s, l[1]), u[1] = zr(s, u[1])
}

function GT(r, e, t, i, a, n, o, s) {
    var l = vc,
        u = ge,
        f = zr(Or(l(r, t, a), 1), 0),
        p = zr(Or(l(e, i, n), 1), 0),
        c = u(r, t, a, f),
        h = u(e, i, n, p);
    o[0] = Or(r, a, c), o[1] = Or(e, n, h), s[0] = zr(r, a, c), s[1] = zr(e, n, h)
}

function HT(r, e, t, i, a, n, o, s, l) {
    var u = Tr,
        f = Cr,
        p = Math.abs(a - n);
    if (p % Fo < 1e-4 && p > 1e-4) {
        s[0] = r - t, s[1] = e - i, l[0] = r + t, l[1] = e + i;
        return
    }
    if (Fc[0] = Bg(a) * t + r, Fc[1] = Vg(a) * i + e, Gc[0] = Bg(n) * t + r, Gc[1] = Vg(n) * i + e, u(s, Fc, Gc), f(l, Fc, Gc), a = a % Fo, a < 0 && (a = a + Fo), n = n % Fo, n < 0 && (n = n + Fo), a > n && !o ? n += Fo : a < n && o && (a += Fo), o) {
        var c = n;
        n = a, a = c
    }
    for (var h = 0; h < n; h += Math.PI / 2) h > a && (Hc[0] = Bg(h) * t + r, Hc[1] = Vg(h) * i + e, u(s, Hc, s), f(l, Hc, l))
}
var $t = {
        M: 1,
        L: 2,
        C: 3,
        Q: 4,
        A: 5,
        Z: 6,
        R: 7
    },
    Ho = [],
    Wo = [],
    pa = [],
    An = [],
    ca = [],
    ha = [],
    Gg = Math.min,
    Hg = Math.max,
    Yo = Math.cos,
    Zo = Math.sin,
    Ba = Math.abs,
    Zg = Math.PI,
    Dn = Zg * 2,
    Wg = typeof Float32Array < "u",
    af = [];

function Yg(r) {
    var e = Math.round(r / Zg * 1e8) / 1e8;
    return e % 2 * Zg
}

function nf(r, e) {
    var t = Yg(r[0]);
    t < 0 && (t += Dn);
    var i = t - r[0],
        a = r[1];
    a += i, !e && a - t >= Dn ? a = t + Dn : e && t - a >= Dn ? a = t - Dn : !e && t > a ? a = t + (Dn - Yg(t - a)) : e && t < a && (a = t - (Dn - Yg(a - t))), r[0] = t, r[1] = a
}
var PB = function() {
        function r(e) {
            this.dpr = 1, this._xi = 0, this._yi = 0, this._x0 = 0, this._y0 = 0, this._len = 0, e && (this._saveData = !1), this._saveData && (this.data = [])
        }
        return r.prototype.increaseVersion = function() {
            this._version++
        }, r.prototype.getVersion = function() {
            return this._version
        }, r.prototype.setScale = function(e, t, i) {
            i = i || 0, i > 0 && (this._ux = Ba(i / Po / e) || 0, this._uy = Ba(i / Po / t) || 0)
        }, r.prototype.setDPR = function(e) {
            this.dpr = e
        }, r.prototype.setContext = function(e) {
            this._ctx = e
        }, r.prototype.getContext = function() {
            return this._ctx
        }, r.prototype.beginPath = function() {
            return this._ctx && this._ctx.beginPath(), this.reset(), this
        }, r.prototype.reset = function() {
            this._saveData && (this._len = 0), this._pathSegLen && (this._pathSegLen = null, this._pathLen = 0), this._version++
        }, r.prototype.moveTo = function(e, t) {
            return this._drawPendingPt(), this.addData($t.M, e, t), this._ctx && this._ctx.moveTo(e, t), this._x0 = e, this._y0 = t, this._xi = e, this._yi = t, this
        }, r.prototype.lineTo = function(e, t) {
            var i = Ba(e - this._xi),
                a = Ba(t - this._yi),
                n = i > this._ux || a > this._uy;
            if (this.addData($t.L, e, t), this._ctx && n && this._ctx.lineTo(e, t), n) this._xi = e, this._yi = t, this._pendingPtDist = 0;
            else {
                var o = i * i + a * a;
                o > this._pendingPtDist && (this._pendingPtX = e, this._pendingPtY = t, this._pendingPtDist = o)
            }
            return this
        }, r.prototype.bezierCurveTo = function(e, t, i, a, n, o) {
            return this._drawPendingPt(), this.addData($t.C, e, t, i, a, n, o), this._ctx && this._ctx.bezierCurveTo(e, t, i, a, n, o), this._xi = n, this._yi = o, this
        }, r.prototype.quadraticCurveTo = function(e, t, i, a) {
            return this._drawPendingPt(), this.addData($t.Q, e, t, i, a), this._ctx && this._ctx.quadraticCurveTo(e, t, i, a), this._xi = i, this._yi = a, this
        }, r.prototype.arc = function(e, t, i, a, n, o) {
            this._drawPendingPt(), af[0] = a, af[1] = n, nf(af, o), a = af[0], n = af[1];
            var s = n - a;
            return this.addData($t.A, e, t, i, i, a, s, 0, o ? 0 : 1), this._ctx && this._ctx.arc(e, t, i, a, n, o), this._xi = Yo(n) * i + e, this._yi = Zo(n) * i + t, this
        }, r.prototype.arcTo = function(e, t, i, a, n) {
            return this._drawPendingPt(), this._ctx && this._ctx.arcTo(e, t, i, a, n), this
        }, r.prototype.rect = function(e, t, i, a) {
            return this._drawPendingPt(), this._ctx && this._ctx.rect(e, t, i, a), this.addData($t.R, e, t, i, a), this
        }, r.prototype.closePath = function() {
            this._drawPendingPt(), this.addData($t.Z);
            var e = this._ctx,
                t = this._x0,
                i = this._y0;
            return e && e.closePath(), this._xi = t, this._yi = i, this
        }, r.prototype.fill = function(e) {
            e && e.fill(), this.toStatic()
        }, r.prototype.stroke = function(e) {
            e && e.stroke(), this.toStatic()
        }, r.prototype.len = function() {
            return this._len
        }, r.prototype.setData = function(e) {
            var t = e.length;
            !(this.data && this.data.length === t) && Wg && (this.data = new Float32Array(t));
            for (var i = 0; i < t; i++) this.data[i] = e[i];
            this._len = t
        }, r.prototype.appendPath = function(e) {
            e instanceof Array || (e = [e]);
            for (var t = e.length, i = 0, a = this._len, n = 0; n < t; n++) i += e[n].len();
            Wg && this.data instanceof Float32Array && (this.data = new Float32Array(a + i));
            for (var n = 0; n < t; n++)
                for (var o = e[n].data, s = 0; s < o.length; s++) this.data[a++] = o[s];
            this._len = a
        }, r.prototype.addData = function(e, t, i, a, n, o, s, l, u) {
            if (this._saveData) {
                var f = this.data;
                this._len + arguments.length > f.length && (this._expandData(), f = this.data);
                for (var p = 0; p < arguments.length; p++) f[this._len++] = arguments[p]
            }
        }, r.prototype._drawPendingPt = function() {
            this._pendingPtDist > 0 && (this._ctx && this._ctx.lineTo(this._pendingPtX, this._pendingPtY), this._pendingPtDist = 0)
        }, r.prototype._expandData = function() {
            if (!(this.data instanceof Array)) {
                for (var e = [], t = 0; t < this._len; t++) e[t] = this.data[t];
                this.data = e
            }
        }, r.prototype.toStatic = function() {
            if (this._saveData) {
                this._drawPendingPt();
                var e = this.data;
                e instanceof Array && (e.length = this._len, Wg && this._len > 11 && (this.data = new Float32Array(e)))
            }
        }, r.prototype.getBoundingRect = function() {
            pa[0] = pa[1] = ca[0] = ca[1] = Number.MAX_VALUE, An[0] = An[1] = ha[0] = ha[1] = -Number.MAX_VALUE;
            var e = this.data,
                t = 0,
                i = 0,
                a = 0,
                n = 0,
                o;
            for (o = 0; o < this._len;) {
                var s = e[o++],
                    l = o === 1;
                switch (l && (t = e[o], i = e[o + 1], a = t, n = i), s) {
                    case $t.M:
                        t = a = e[o++], i = n = e[o++], ca[0] = a, ca[1] = n, ha[0] = a, ha[1] = n;
                        break;
                    case $t.L:
                        Fg(t, i, e[o], e[o + 1], ca, ha), t = e[o++], i = e[o++];
                        break;
                    case $t.C:
                        FT(t, i, e[o++], e[o++], e[o++], e[o++], e[o], e[o + 1], ca, ha), t = e[o++], i = e[o++];
                        break;
                    case $t.Q:
                        GT(t, i, e[o++], e[o++], e[o], e[o + 1], ca, ha), t = e[o++], i = e[o++];
                        break;
                    case $t.A:
                        var u = e[o++],
                            f = e[o++],
                            p = e[o++],
                            c = e[o++],
                            h = e[o++],
                            v = e[o++] + h;
                        o += 1;
                        var d = !e[o++];
                        l && (a = Yo(h) * p + u, n = Zo(h) * c + f), HT(u, f, p, c, h, v, d, ca, ha), t = Yo(v) * p + u, i = Zo(v) * c + f;
                        break;
                    case $t.R:
                        a = t = e[o++], n = i = e[o++];
                        var m = e[o++],
                            g = e[o++];
                        Fg(a, n, a + m, n + g, ca, ha);
                        break;
                    case $t.Z:
                        t = a, i = n;
                        break
                }
                Tr(pa, pa, ca), Cr(An, An, ha)
            }
            return o === 0 && (pa[0] = pa[1] = An[0] = An[1] = 0), new it(pa[0], pa[1], An[0] - pa[0], An[1] - pa[1])
        }, r.prototype._calculateLength = function() {
            var e = this.data,
                t = this._len,
                i = this._ux,
                a = this._uy,
                n = 0,
                o = 0,
                s = 0,
                l = 0;
            this._pathSegLen || (this._pathSegLen = []);
            for (var u = this._pathSegLen, f = 0, p = 0, c = 0; c < t;) {
                var h = e[c++],
                    v = c === 1;
                v && (n = e[c], o = e[c + 1], s = n, l = o);
                var d = -1;
                switch (h) {
                    case $t.M:
                        n = s = e[c++], o = l = e[c++];
                        break;
                    case $t.L:
                        {
                            var m = e[c++],
                                g = e[c++],
                                y = m - n,
                                x = g - o;
                            (Ba(y) > i || Ba(x) > a || c === t - 1) && (d = Math.sqrt(y * y + x * x), n = m, o = g);
                            break
                        }
                    case $t.C:
                        {
                            var _ = e[c++],
                                S = e[c++],
                                m = e[c++],
                                g = e[c++],
                                b = e[c++],
                                T = e[c++];d = Mw(n, o, _, S, m, g, b, T, 10),
                            n = b,
                            o = T;
                            break
                        }
                    case $t.Q:
                        {
                            var _ = e[c++],
                                S = e[c++],
                                m = e[c++],
                                g = e[c++];d = Iw(n, o, _, S, m, g, 10),
                            n = m,
                            o = g;
                            break
                        }
                    case $t.A:
                        var C = e[c++],
                            A = e[c++],
                            D = e[c++],
                            M = e[c++],
                            I = e[c++],
                            E = e[c++],
                            P = E + I;
                        c += 1, v && (s = Yo(I) * D + C, l = Zo(I) * M + A), d = Hg(D, M) * Gg(Dn, Math.abs(E)), n = Yo(P) * D + C, o = Zo(P) * M + A;
                        break;
                    case $t.R:
                        {
                            s = n = e[c++],
                            l = o = e[c++];
                            var R = e[c++],
                                N = e[c++];d = R * 2 + N * 2;
                            break
                        }
                    case $t.Z:
                        {
                            var y = s - n,
                                x = l - o;d = Math.sqrt(y * y + x * x),
                            n = s,
                            o = l;
                            break
                        }
                }
                d >= 0 && (u[p++] = d, f += d)
            }
            return this._pathLen = f, f
        }, r.prototype.rebuildPath = function(e, t) {
            var i = this.data,
                a = this._ux,
                n = this._uy,
                o = this._len,
                s, l, u, f, p, c, h = t < 1,
                v, d, m = 0,
                g = 0,
                y, x = 0,
                _, S;
            if (!(h && (this._pathSegLen || this._calculateLength(), v = this._pathSegLen, d = this._pathLen, y = t * d, !y))) t: for (var b = 0; b < o;) {
                var T = i[b++],
                    C = b === 1;
                switch (C && (u = i[b], f = i[b + 1], s = u, l = f), T !== $t.L && x > 0 && (e.lineTo(_, S), x = 0), T) {
                    case $t.M:
                        s = u = i[b++], l = f = i[b++], e.moveTo(u, f);
                        break;
                    case $t.L:
                        {
                            p = i[b++],
                            c = i[b++];
                            var A = Ba(p - u),
                                D = Ba(c - f);
                            if (A > a || D > n) {
                                if (h) {
                                    var M = v[g++];
                                    if (m + M > y) {
                                        var I = (y - m) / M;
                                        e.lineTo(u * (1 - I) + p * I, f * (1 - I) + c * I);
                                        break t
                                    }
                                    m += M
                                }
                                e.lineTo(p, c), u = p, f = c, x = 0
                            } else {
                                var E = A * A + D * D;
                                E > x && (_ = p, S = c, x = E)
                            }
                            break
                        }
                    case $t.C:
                        {
                            var P = i[b++],
                                R = i[b++],
                                N = i[b++],
                                V = i[b++],
                                U = i[b++],
                                B = i[b++];
                            if (h) {
                                var M = v[g++];
                                if (m + M > y) {
                                    var I = (y - m) / M;
                                    ci(u, P, N, U, I, Ho), ci(f, R, V, B, I, Wo), e.bezierCurveTo(Ho[1], Wo[1], Ho[2], Wo[2], Ho[3], Wo[3]);
                                    break t
                                }
                                m += M
                            }
                            e.bezierCurveTo(P, R, N, V, U, B),
                            u = U,
                            f = B;
                            break
                        }
                    case $t.Q:
                        {
                            var P = i[b++],
                                R = i[b++],
                                N = i[b++],
                                V = i[b++];
                            if (h) {
                                var M = v[g++];
                                if (m + M > y) {
                                    var I = (y - m) / M;
                                    yn(u, P, N, I, Ho), yn(f, R, V, I, Wo), e.quadraticCurveTo(Ho[1], Wo[1], Ho[2], Wo[2]);
                                    break t
                                }
                                m += M
                            }
                            e.quadraticCurveTo(P, R, N, V),
                            u = N,
                            f = V;
                            break
                        }
                    case $t.A:
                        var Z = i[b++],
                            K = i[b++],
                            tt = i[b++],
                            pt = i[b++],
                            ct = i[b++],
                            bt = i[b++],
                            qt = i[b++],
                            ve = !i[b++],
                            Mt = tt > pt ? tt : pt,
                            mt = Ba(tt - pt) > .001,
                            Et = ct + bt,
                            ut = !1;
                        if (h) {
                            var M = v[g++];
                            m + M > y && (Et = ct + bt * (y - m) / M, ut = !0), m += M
                        }
                        if (mt && e.ellipse ? e.ellipse(Z, K, tt, pt, qt, ct, Et, ve) : e.arc(Z, K, Mt, ct, Et, ve), ut) break t;
                        C && (s = Yo(ct) * tt + Z, l = Zo(ct) * pt + K), u = Yo(Et) * tt + Z, f = Zo(Et) * pt + K;
                        break;
                    case $t.R:
                        s = u = i[b], l = f = i[b + 1], p = i[b++], c = i[b++];
                        var Tt = i[b++],
                            re = i[b++];
                        if (h) {
                            var M = v[g++];
                            if (m + M > y) {
                                var Wt = y - m;
                                e.moveTo(p, c), e.lineTo(p + Gg(Wt, Tt), c), Wt -= Tt, Wt > 0 && e.lineTo(p + Tt, c + Gg(Wt, re)), Wt -= re, Wt > 0 && e.lineTo(p + Hg(Tt - Wt, 0), c + re), Wt -= Tt, Wt > 0 && e.lineTo(p, c + Hg(re - Wt, 0));
                                break t
                            }
                            m += M
                        }
                        e.rect(p, c, Tt, re);
                        break;
                    case $t.Z:
                        if (h) {
                            var M = v[g++];
                            if (m + M > y) {
                                var I = (y - m) / M;
                                e.lineTo(u * (1 - I) + s * I, f * (1 - I) + l * I);
                                break t
                            }
                            m += M
                        }
                        e.closePath(), u = s, f = l
                }
            }
        }, r.prototype.clone = function() {
            var e = new r,
                t = this.data;
            return e.data = t.slice ? t.slice() : Array.prototype.slice.call(t), e._len = this._len, e
        }, r.CMD = $t, r.initDefaultProps = function() {
            var e = r.prototype;
            e._saveData = !0, e._ux = 0, e._uy = 0, e._pendingPtDist = 0, e._version = 0
        }(), r
    }(),
    Ve = PB;

function va(r, e, t, i, a, n, o) {
    if (a === 0) return !1;
    var s = a,
        l = 0,
        u = r;
    if (o > e + s && o > i + s || o < e - s && o < i - s || n > r + s && n > t + s || n < r - s && n < t - s) return !1;
    if (r !== t) l = (e - i) / (r - t), u = (r * i - t * e) / (r - t);
    else return Math.abs(n - r) <= s / 2;
    var f = l * n - o + u,
        p = f * f / (l * l + 1);
    return p <= s / 2 * s / 2
}

function ZT(r, e, t, i, a, n, o, s, l, u, f) {
    if (l === 0) return !1;
    var p = l;
    if (f > e + p && f > i + p && f > n + p && f > s + p || f < e - p && f < i - p && f < n - p && f < s - p || u > r + p && u > t + p && u > a + p && u > o + p || u < r - p && u < t - p && u < a - p && u < o - p) return !1;
    var c = hc(r, e, t, i, a, n, o, s, u, f, null);
    return c <= p / 2
}

function Wc(r, e, t, i, a, n, o, s, l) {
    if (o === 0) return !1;
    var u = o;
    if (l > e + u && l > i + u && l > n + u || l < e - u && l < i - u && l < n - u || s > r + u && s > t + u && s > a + u || s < r - u && s < t - u && s < a - u) return !1;
    var f = dc(r, e, t, i, a, n, s, l, null);
    return f <= u / 2
}
var qT = Math.PI * 2;

function Ke(r) {
    return r %= qT, r < 0 && (r += qT), r
}
var of = Math.PI * 2;

function KT(r, e, t, i, a, n, o, s, l) {
    if (o === 0) return !1;
    var u = o;
    s -= r, l -= e;
    var f = Math.sqrt(s * s + l * l);
    if (f - u > t || f + u < t) return !1;
    if (Math.abs(i - a) % of < 1e-4) return !0;
    if (n) {
        var p = i;
        i = Ke(a), a = Ke(p)
    } else i = Ke(i), a = Ke(a);
    i > a && (a += of );
    var c = Math.atan2(l, s);
    return c < 0 && (c += of ), c >= i && c <= a || c + of >= i && c + of <= a
}

function di(r, e, t, i, a, n) {
    if (n > e && n > i || n < e && n < i || i === e) return 0;
    var o = (n - e) / (i - e),
        s = i < e ? 1 : -1;
    (o === 1 || o === 0) && (s = i < e ? .5 : -.5);
    var l = o * (t - r) + r;
    return l === a ? 1 / 0 : l > a ? s : 0
}
var Mn = Ve.CMD,
    Xo = Math.PI * 2,
    OB = 1e-4;

function zB(r, e) {
    return Math.abs(r - e) < OB
}
var vr = [-1, -1, -1],
    mi = [-1, -1];

function kB() {
    var r = mi[0];
    mi[0] = mi[1], mi[1] = r
}

function UB(r, e, t, i, a, n, o, s, l, u) {
    if (u > e && u > i && u > n && u > s || u < e && u < i && u < n && u < s) return 0;
    var f = Do(e, i, n, s, u, vr);
    if (f === 0) return 0;
    for (var p = 0, c = -1, h = void 0, v = void 0, d = 0; d < f; d++) {
        var m = vr[d],
            g = m === 0 || m === 1 ? .5 : 1,
            y = ce(r, t, a, o, m);
        y < l || (c < 0 && (c = cc(e, i, n, s, mi), mi[1] < mi[0] && c > 1 && kB(), h = ce(e, i, n, s, mi[0]), c > 1 && (v = ce(e, i, n, s, mi[1]))), c === 2 ? m < mi[0] ? p += h < e ? g : -g : m < mi[1] ? p += v < h ? g : -g : p += s < v ? g : -g : m < mi[0] ? p += h < e ? g : -g : p += s < h ? g : -g)
    }
    return p
}

function VB(r, e, t, i, a, n, o, s) {
    if (s > e && s > i && s > n || s < e && s < i && s < n) return 0;
    var l = Lw(e, i, n, s, vr);
    if (l === 0) return 0;
    var u = vc(e, i, n);
    if (u >= 0 && u <= 1) {
        for (var f = 0, p = ge(e, i, n, u), c = 0; c < l; c++) {
            var h = vr[c] === 0 || vr[c] === 1 ? .5 : 1,
                v = ge(r, t, a, vr[c]);
            v < o || (vr[c] < u ? f += p < e ? h : -h : f += n < p ? h : -h)
        }
        return f
    } else {
        var h = vr[0] === 0 || vr[0] === 1 ? .5 : 1,
            v = ge(r, t, a, vr[0]);
        return v < o ? 0 : n < e ? h : -h
    }
}

function BB(r, e, t, i, a, n, o, s) {
    if (s -= e, s > t || s < -t) return 0;
    var l = Math.sqrt(t * t - s * s);
    vr[0] = -l, vr[1] = l;
    var u = Math.abs(i - a);
    if (u < 1e-4) return 0;
    if (u >= Xo - 1e-4) {
        i = 0, a = Xo;
        var f = n ? 1 : -1;
        return o >= vr[0] + r && o <= vr[1] + r ? f : 0
    }
    if (i > a) {
        var p = i;
        i = a, a = p
    }
    i < 0 && (i += Xo, a += Xo);
    for (var c = 0, h = 0; h < 2; h++) {
        var v = vr[h];
        if (v + r > o) {
            var d = Math.atan2(s, v),
                f = n ? 1 : -1;
            d < 0 && (d = Xo + d), (d >= i && d <= a || d + Xo >= i && d + Xo <= a) && (d > Math.PI / 2 && d < Math.PI * 1.5 && (f = -f), c += f)
        }
    }
    return c
}

function jT(r, e, t, i, a) {
    for (var n = r.data, o = r.len(), s = 0, l = 0, u = 0, f = 0, p = 0, c, h, v = 0; v < o;) {
        var d = n[v++],
            m = v === 1;
        switch (d === Mn.M && v > 1 && (t || (s += di(l, u, f, p, i, a))), m && (l = n[v], u = n[v + 1], f = l, p = u), d) {
            case Mn.M:
                f = n[v++], p = n[v++], l = f, u = p;
                break;
            case Mn.L:
                if (t) {
                    if (va(l, u, n[v], n[v + 1], e, i, a)) return !0
                } else s += di(l, u, n[v], n[v + 1], i, a) || 0;
                l = n[v++], u = n[v++];
                break;
            case Mn.C:
                if (t) {
                    if (ZT(l, u, n[v++], n[v++], n[v++], n[v++], n[v], n[v + 1], e, i, a)) return !0
                } else s += UB(l, u, n[v++], n[v++], n[v++], n[v++], n[v], n[v + 1], i, a) || 0;
                l = n[v++], u = n[v++];
                break;
            case Mn.Q:
                if (t) {
                    if (Wc(l, u, n[v++], n[v++], n[v], n[v + 1], e, i, a)) return !0
                } else s += VB(l, u, n[v++], n[v++], n[v], n[v + 1], i, a) || 0;
                l = n[v++], u = n[v++];
                break;
            case Mn.A:
                var g = n[v++],
                    y = n[v++],
                    x = n[v++],
                    _ = n[v++],
                    S = n[v++],
                    b = n[v++];
                v += 1;
                var T = !!(1 - n[v++]);
                c = Math.cos(S) * x + g, h = Math.sin(S) * _ + y, m ? (f = c, p = h) : s += di(l, u, c, h, i, a);
                var C = (i - g) * _ / x + g;
                if (t) {
                    if (KT(g, y, _, S, S + b, T, e, C, a)) return !0
                } else s += BB(g, y, _, S, S + b, T, C, a);
                l = Math.cos(S + b) * x + g, u = Math.sin(S + b) * _ + y;
                break;
            case Mn.R:
                f = l = n[v++], p = u = n[v++];
                var A = n[v++],
                    D = n[v++];
                if (c = f + A, h = p + D, t) {
                    if (va(f, p, c, p, e, i, a) || va(c, p, c, h, e, i, a) || va(c, h, f, h, e, i, a) || va(f, h, f, p, e, i, a)) return !0
                } else s += di(c, p, c, h, i, a), s += di(f, h, f, p, i, a);
                break;
            case Mn.Z:
                if (t) {
                    if (va(l, u, f, p, e, i, a)) return !0
                } else s += di(l, u, f, p, i, a);
                l = f, u = p;
                break
        }
    }
    return !t && !zB(u, p) && (s += di(l, u, f, p, i, a) || 0), s !== 0
}

function JT(r, e, t) {
    return jT(r, 0, !1, e, t)
}

function QT(r, e, t, i) {
    return jT(r, e, !0, t, i)
}
var ll = q({
        fill: "#000",
        stroke: null,
        strokePercent: 1,
        fillOpacity: 1,
        strokeOpacity: 1,
        lineDashOffset: 0,
        lineWidth: 1,
        lineCap: "butt",
        miterLimit: 10,
        strokeNoScale: !1,
        strokeFirst: !1
    }, fa),
    GB = {
        style: q({
            fill: !0,
            stroke: !0,
            strokePercent: !0,
            fillOpacity: !0,
            strokeOpacity: !0,
            lineDashOffset: !0,
            lineWidth: !0,
            miterLimit: !0
        }, Bo.style)
    },
    Xg = Jr.concat(["invisible", "culling", "z", "z2", "zlevel", "parent"]),
    HB = function(r) {
        L(e, r);

        function e(t) {
            return r.call(this, t) || this
        }
        return e.prototype.update = function() {
            var t = this;
            r.prototype.update.call(this);
            var i = this.style;
            if (i.decal) {
                var a = this._decalEl = this._decalEl || new e;
                a.buildPath === e.prototype.buildPath && (a.buildPath = function(l) {
                    t.buildPath(l, t.shape)
                }), a.silent = !0;
                var n = a.style;
                for (var o in i) n[o] !== i[o] && (n[o] = i[o]);
                n.fill = i.fill ? i.decal : null, n.decal = null, n.shadowColor = null, i.strokeFirst && (n.stroke = null);
                for (var s = 0; s < Xg.length; ++s) a[Xg[s]] = this[Xg[s]];
                a.__dirty |= Pe
            } else this._decalEl && (this._decalEl = null)
        }, e.prototype.getDecalElement = function() {
            return this._decalEl
        }, e.prototype._init = function(t) {
            var i = ft(t);
            this.shape = this.getDefaultShape();
            var a = this.getDefaultStyle();
            a && this.useStyle(a);
            for (var n = 0; n < i.length; n++) {
                var o = i[n],
                    s = t[o];
                o === "style" ? this.style ? O(this.style, s) : this.useStyle(s) : o === "shape" ? O(this.shape, s) : r.prototype.attrKV.call(this, o, s)
            }
            this.style || this.useStyle({})
        }, e.prototype.getDefaultStyle = function() {
            return null
        }, e.prototype.getDefaultShape = function() {
            return {}
        }, e.prototype.canBeInsideText = function() {
            return this.hasFill()
        }, e.prototype.getInsideTextFill = function() {
            var t = this.style.fill;
            if (t !== "none") {
                if (F(t)) {
                    var i = Lo(t, 0);
                    return i > .5 ? qu : i > .2 ? tT : Ku
                } else if (t) return Ku
            }
            return qu
        }, e.prototype.getInsideTextStroke = function(t) {
            var i = this.style.fill;
            if (F(i)) {
                var a = this.__zr,
                    n = !!(a && a.isDarkMode()),
                    o = Lo(t, 0) < Xu;
                if (n === o) return i
            }
        }, e.prototype.buildPath = function(t, i, a) {}, e.prototype.pathUpdated = function() {
            this.__dirty &= ~dn
        }, e.prototype.getUpdatedPathProxy = function(t) {
            return !this.path && this.createPathProxy(), this.path.beginPath(), this.buildPath(this.path, this.shape, t), this.path
        }, e.prototype.createPathProxy = function() {
            this.path = new Ve(!1)
        }, e.prototype.hasStroke = function() {
            var t = this.style,
                i = t.stroke;
            return !(i == null || i === "none" || !(t.lineWidth > 0))
        }, e.prototype.hasFill = function() {
            var t = this.style,
                i = t.fill;
            return i != null && i !== "none"
        }, e.prototype.getBoundingRect = function() {
            var t = this._rect,
                i = this.style,
                a = !t;
            if (a) {
                var n = !1;
                this.path || (n = !0, this.createPathProxy());
                var o = this.path;
                (n || this.__dirty & dn) && (o.beginPath(), this.buildPath(o, this.shape, !1), this.pathUpdated()), t = o.getBoundingRect()
            }
            if (this._rect = t, this.hasStroke() && this.path && this.path.len() > 0) {
                var s = this._rectStroke || (this._rectStroke = t.clone());
                if (this.__dirty || a) {
                    s.copy(t);
                    var l = i.strokeNoScale ? this.getLineScale() : 1,
                        u = i.lineWidth;
                    if (!this.hasFill()) {
                        var f = this.strokeContainThreshold;
                        u = Math.max(u, f ? ? 4)
                    }
                    l > 1e-10 && (s.width += u / l, s.height += u / l, s.x -= u / l / 2, s.y -= u / l / 2)
                }
                return s
            }
            return t
        }, e.prototype.contain = function(t, i) {
            var a = this.transformCoordToLocal(t, i),
                n = this.getBoundingRect(),
                o = this.style;
            if (t = a[0], i = a[1], n.contain(t, i)) {
                var s = this.path;
                if (this.hasStroke()) {
                    var l = o.lineWidth,
                        u = o.strokeNoScale ? this.getLineScale() : 1;
                    if (u > 1e-10 && (this.hasFill() || (l = Math.max(l, this.strokeContainThreshold)), QT(s, l / u, t, i))) return !0
                }
                if (this.hasFill()) return JT(s, t, i)
            }
            return !1
        }, e.prototype.dirtyShape = function() {
            this.__dirty |= dn, this._rect && (this._rect = null), this._decalEl && this._decalEl.dirtyShape(), this.markRedraw()
        }, e.prototype.dirty = function() {
            this.dirtyStyle(), this.dirtyShape()
        }, e.prototype.animateShape = function(t) {
            return this.animate("shape", t)
        }, e.prototype.updateDuringAnimation = function(t) {
            t === "style" ? this.dirtyStyle() : t === "shape" ? this.dirtyShape() : this.markRedraw()
        }, e.prototype.attrKV = function(t, i) {
            t === "shape" ? this.setShape(i) : r.prototype.attrKV.call(this, t, i)
        }, e.prototype.setShape = function(t, i) {
            var a = this.shape;
            return a || (a = this.shape = {}), typeof t == "string" ? a[t] = i : O(a, t), this.dirtyShape(), this
        }, e.prototype.shapeChanged = function() {
            return !!(this.__dirty & dn)
        }, e.prototype.createStyle = function(t) {
            return Oa(ll, t)
        }, e.prototype._innerSaveToNormal = function(t) {
            r.prototype._innerSaveToNormal.call(this, t);
            var i = this._normalState;
            t.shape && !i.shape && (i.shape = O({}, this.shape))
        }, e.prototype._applyStateObj = function(t, i, a, n, o, s) {
            r.prototype._applyStateObj.call(this, t, i, a, n, o, s);
            var l = !(i && n),
                u;
            if (i && i.shape ? o ? n ? u = i.shape : (u = O({}, a.shape), O(u, i.shape)) : (u = O({}, n ? this.shape : a.shape), O(u, i.shape)) : l && (u = a.shape), u)
                if (o) {
                    this.shape = O({}, this.shape);
                    for (var f = {}, p = ft(u), c = 0; c < p.length; c++) {
                        var h = p[c];
                        typeof u[h] == "object" ? this.shape[h] = u[h] : f[h] = u[h]
                    }
                    this._transitionState(t, {
                        shape: f
                    }, s)
                } else this.shape = u, this.dirtyShape()
        }, e.prototype._mergeStates = function(t) {
            for (var i = r.prototype._mergeStates.call(this, t), a, n = 0; n < t.length; n++) {
                var o = t[n];
                o.shape && (a = a || {}, this._mergeStyle(a, o.shape))
            }
            return a && (i.shape = a), i
        }, e.prototype.getAnimationStyleProps = function() {
            return GB
        }, e.prototype.isZeroArea = function() {
            return !1
        }, e.extend = function(t) {
            var i = function(n) {
                L(o, n);

                function o(s) {
                    var l = n.call(this, s) || this;
                    return t.init && t.init.call(l, s), l
                }
                return o.prototype.getDefaultStyle = function() {
                    return Q(t.style)
                }, o.prototype.getDefaultShape = function() {
                    return Q(t.shape)
                }, o
            }(e);
            for (var a in t) typeof t[a] == "function" && (i.prototype[a] = t[a]);
            return i
        }, e.initDefaultProps = function() {
            var t = e.prototype;
            t.type = "path", t.strokeContainThreshold = 5, t.segmentIgnoreThreshold = 0, t.subPixelOptimize = !1, t.autoBatch = !1, t.__dirty = Pe | Ao | dn
        }(), e
    }(ye),
    st = HB;
var WB = q({
        strokeFirst: !0,
        font: Xr,
        x: 0,
        y: 0,
        textAlign: "left",
        textBaseline: "top",
        miterLimit: 2
    }, ll),
    $T = function(r) {
        L(e, r);

        function e() {
            return r !== null && r.apply(this, arguments) || this
        }
        return e.prototype.hasStroke = function() {
            var t = this.style,
                i = t.stroke;
            return i != null && i !== "none" && t.lineWidth > 0
        }, e.prototype.hasFill = function() {
            var t = this.style,
                i = t.fill;
            return i != null && i !== "none"
        }, e.prototype.createStyle = function(t) {
            return Oa(WB, t)
        }, e.prototype.setBoundingRect = function(t) {
            this._rect = t
        }, e.prototype.getBoundingRect = function() {
            var t = this.style;
            if (!this._rect) {
                var i = t.text;
                i != null ? i += "" : i = "";
                var a = ua(i, t.font, t.textAlign, t.textBaseline);
                if (a.x += t.x || 0, a.y += t.y || 0, this.hasStroke()) {
                    var n = t.lineWidth;
                    a.x -= n / 2, a.y -= n / 2, a.width += n, a.height += n
                }
                this._rect = a
            }
            return this._rect
        }, e.initDefaultProps = function() {
            var t = e.prototype;
            t.dirtyRectTolerance = 10
        }(), e
    }(ye);
$T.prototype.type = "tspan";
var Fa = $T;
var YB = q({
        x: 0,
        y: 0
    }, fa),
    ZB = {
        style: q({
            x: !0,
            y: !0,
            width: !0,
            height: !0,
            sx: !0,
            sy: !0,
            sWidth: !0,
            sHeight: !0
        }, Bo.style)
    };

function XB(r) {
    return !!(r && typeof r != "string" && r.width && r.height)
}
var tC = function(r) {
    L(e, r);

    function e() {
        return r !== null && r.apply(this, arguments) || this
    }
    return e.prototype.createStyle = function(t) {
        return Oa(YB, t)
    }, e.prototype._getSize = function(t) {
        var i = this.style,
            a = i[t];
        if (a != null) return a;
        var n = XB(i.image) ? i.image : this.__image;
        if (!n) return 0;
        var o = t === "width" ? "height" : "width",
            s = i[o];
        return s == null ? n[t] : n[t] / n[o] * s
    }, e.prototype.getWidth = function() {
        return this._getSize("width")
    }, e.prototype.getHeight = function() {
        return this._getSize("height")
    }, e.prototype.getAnimationStyleProps = function() {
        return ZB
    }, e.prototype.getBoundingRect = function() {
        var t = this.style;
        return this._rect || (this._rect = new it(t.x || 0, t.y || 0, this.getWidth(), this.getHeight())), this._rect
    }, e
}(ye);
tC.prototype.type = "image";
var Zt = tC;

function eC(r, e) {
    var t = e.x,
        i = e.y,
        a = e.width,
        n = e.height,
        o = e.r,
        s, l, u, f;
    a < 0 && (t = t + a, a = -a), n < 0 && (i = i + n, n = -n), typeof o == "number" ? s = l = u = f = o : o instanceof Array ? o.length === 1 ? s = l = u = f = o[0] : o.length === 2 ? (s = u = o[0], l = f = o[1]) : o.length === 3 ? (s = o[0], l = f = o[1], u = o[2]) : (s = o[0], l = o[1], u = o[2], f = o[3]) : s = l = u = f = 0;
    var p;
    s + l > a && (p = s + l, s *= a / p, l *= a / p), u + f > a && (p = u + f, u *= a / p, f *= a / p), l + u > n && (p = l + u, l *= n / p, u *= n / p), s + f > n && (p = s + f, s *= n / p, f *= n / p), r.moveTo(t + s, i), r.lineTo(t + a - l, i), l !== 0 && r.arc(t + a - l, i + l, l, -Math.PI / 2, 0), r.lineTo(t + a, i + n - u), u !== 0 && r.arc(t + a - u, i + n - u, u, 0, Math.PI / 2), r.lineTo(t + f, i + n), f !== 0 && r.arc(t + f, i + n - f, f, Math.PI / 2, Math.PI), r.lineTo(t, i + s), s !== 0 && r.arc(t + s, i + s, s, Math.PI, Math.PI * 1.5)
}
var ul = Math.round;

function Yc(r, e, t) {
    if (e) {
        var i = e.x1,
            a = e.x2,
            n = e.y1,
            o = e.y2;
        r.x1 = i, r.x2 = a, r.y1 = n, r.y2 = o;
        var s = t && t.lineWidth;
        return s && (ul(i * 2) === ul(a * 2) && (r.x1 = r.x2 = Ln(i, s, !0)), ul(n * 2) === ul(o * 2) && (r.y1 = r.y2 = Ln(n, s, !0))), r
    }
}

function Zc(r, e, t) {
    if (e) {
        var i = e.x,
            a = e.y,
            n = e.width,
            o = e.height;
        r.x = i, r.y = a, r.width = n, r.height = o;
        var s = t && t.lineWidth;
        return s && (r.x = Ln(i, s, !0), r.y = Ln(a, s, !0), r.width = Math.max(Ln(i + n, s, !1) - r.x, n === 0 ? 0 : 1), r.height = Math.max(Ln(a + o, s, !1) - r.y, o === 0 ? 0 : 1)), r
    }
}

function Ln(r, e, t) {
    if (!e) return r;
    var i = ul(r * 2);
    return (i + ul(e)) % 2 === 0 ? i / 2 : (i + (t ? 1 : -1)) / 2
}
var jB = function() {
    function r() {
        this.x = 0, this.y = 0, this.width = 0, this.height = 0
    }
    return r
}();
var JB = {},
    rC = function(r) {
        L(e, r);

        function e(t) {
            return r.call(this, t) || this
        }
        return e.prototype.getDefaultShape = function() {
            return new jB
        }, e.prototype.buildPath = function(t, i) {
            var a, n, o, s;
            if (this.subPixelOptimize) {
                var l = Zc(JB, i, this.style);
                a = l.x, n = l.y, o = l.width, s = l.height, l.r = i.r, i = l
            } else a = i.x, n = i.y, o = i.width, s = i.height;
            i.r ? eC(t, i) : t.rect(a, n, o, s)
        }, e.prototype.isZeroArea = function() {
            return !this.shape.width || !this.shape.height
        }, e
    }(st);
rC.prototype.type = "rect";
var ht = rC;
var iC = {
        fill: "#000"
    },
    aC = 2,
    QB = {
        style: q({
            fill: !0,
            stroke: !0,
            fillOpacity: !0,
            strokeOpacity: !0,
            lineWidth: !0,
            fontSize: !0,
            lineHeight: !0,
            width: !0,
            height: !0,
            textShadowColor: !0,
            textShadowBlur: !0,
            textShadowOffsetX: !0,
            textShadowOffsetY: !0,
            backgroundColor: !0,
            padding: !0,
            borderColor: !0,
            borderWidth: !0,
            borderRadius: !0
        }, Bo.style)
    },
    cC = function(r) {
        L(e, r);

        function e(t) {
            var i = r.call(this) || this;
            return i.type = "text", i._children = [], i._defaultStyle = iC, i.attr(t), i
        }
        return e.prototype.childrenRef = function() {
            return this._children
        }, e.prototype.update = function() {
            r.prototype.update.call(this), this.styleChanged() && this._updateSubTexts();
            for (var t = 0; t < this._children.length; t++) {
                var i = this._children[t];
                i.zlevel = this.zlevel, i.z = this.z, i.z2 = this.z2, i.culling = this.culling, i.cursor = this.cursor, i.invisible = this.invisible
            }
        }, e.prototype.updateTransform = function() {
            var t = this.innerTransformable;
            t ? (t.updateTransform(), t.transform && (this.transform = t.transform)) : r.prototype.updateTransform.call(this)
        }, e.prototype.getLocalTransform = function(t) {
            var i = this.innerTransformable;
            return i ? i.getLocalTransform(t) : r.prototype.getLocalTransform.call(this, t)
        }, e.prototype.getComputedTransform = function() {
            return this.__hostTarget && (this.__hostTarget.getComputedTransform(), this.__hostTarget.updateInnerText(!0)), r.prototype.getComputedTransform.call(this)
        }, e.prototype._updateSubTexts = function() {
            this._childCursor = 0, eF(this.style), this.style.rich ? this._updateRichTexts() : this._updatePlainTexts(), this._children.length = this._childCursor, this.styleUpdated()
        }, e.prototype.addSelfToZr = function(t) {
            r.prototype.addSelfToZr.call(this, t);
            for (var i = 0; i < this._children.length; i++) this._children[i].__zr = t
        }, e.prototype.removeSelfFromZr = function(t) {
            r.prototype.removeSelfFromZr.call(this, t);
            for (var i = 0; i < this._children.length; i++) this._children[i].__zr = null
        }, e.prototype.getBoundingRect = function() {
            if (this.styleChanged() && this._updateSubTexts(), !this._rect) {
                for (var t = new it(0, 0, 0, 0), i = this._children, a = [], n = null, o = 0; o < i.length; o++) {
                    var s = i[o],
                        l = s.getBoundingRect(),
                        u = s.getLocalTransform(a);
                    u ? (t.copy(l), t.applyTransform(u), n = n || t.clone(), n.union(t)) : (n = n || l.clone(), n.union(l))
                }
                this._rect = n || t
            }
            return this._rect
        }, e.prototype.setDefaultTextStyle = function(t) {
            this._defaultStyle = t || iC
        }, e.prototype.setTextContent = function(t) {}, e.prototype._mergeStyle = function(t, i) {
            if (!i) return t;
            var a = i.rich,
                n = t.rich || a && {};
            return O(t, i), a && n ? (this._mergeRich(n, a), t.rich = n) : n && (t.rich = n), t
        }, e.prototype._mergeRich = function(t, i) {
            for (var a = ft(i), n = 0; n < a.length; n++) {
                var o = a[n];
                t[o] = t[o] || {}, O(t[o], i[o])
            }
        }, e.prototype.getAnimationStyleProps = function() {
            return QB
        }, e.prototype._getOrCreateChild = function(t) {
            var i = this._children[this._childCursor];
            return (!i || !(i instanceof t)) && (i = new t), this._children[this._childCursor++] = i, i.__zr = this.__zr, i.parent = this, i
        }, e.prototype._updatePlainTexts = function() {
            var t = this.style,
                i = t.font || Xr,
                a = t.padding,
                n = pC(t),
                o = OT(n, t),
                s = qg(t),
                l = !!t.backgroundColor,
                u = o.outerHeight,
                f = o.outerWidth,
                p = o.contentWidth,
                c = o.lines,
                h = o.lineHeight,
                v = this._defaultStyle;
            this.isTruncated = !!o.isTruncated;
            var d = t.x || 0,
                m = t.y || 0,
                g = t.align || v.align || "left",
                y = t.verticalAlign || v.verticalAlign || "top",
                x = d,
                _ = Oo(m, o.contentHeight, y);
            if (s || a) {
                var S = Js(d, f, g),
                    b = Oo(m, u, y);
                s && this._renderBackground(t, t, S, b, f, u)
            }
            _ += h / 2, a && (x = fC(d, g, a), y === "top" ? _ += a[0] : y === "bottom" && (_ -= a[2]));
            for (var T = 0, C = !1, A = uC("fill" in t ? t.fill : (C = !0, v.fill)), D = lC("stroke" in t ? t.stroke : !l && (!v.autoStroke || C) ? (T = aC, v.stroke) : null), M = t.textShadowBlur > 0, I = t.width != null && (t.overflow === "truncate" || t.overflow === "break" || t.overflow === "breakAll"), E = o.calculatedLineHeight, P = 0; P < c.length; P++) {
                var R = this._getOrCreateChild(Fa),
                    N = R.createStyle();
                R.useStyle(N), N.text = c[P], N.x = x, N.y = _, g && (N.textAlign = g), N.textBaseline = "middle", N.opacity = t.opacity, N.strokeFirst = !0, M && (N.shadowBlur = t.textShadowBlur || 0, N.shadowColor = t.textShadowColor || "transparent", N.shadowOffsetX = t.textShadowOffsetX || 0, N.shadowOffsetY = t.textShadowOffsetY || 0), N.stroke = D, N.fill = A, D && (N.lineWidth = t.lineWidth || T, N.lineDash = t.lineDash, N.lineDashOffset = t.lineDashOffset || 0), N.font = i, oC(N, t), _ += h, I && R.setBoundingRect(new it(Js(N.x, p, N.textAlign), Oo(N.y, E, N.textBaseline), p, E))
            }
        }, e.prototype._updateRichTexts = function() {
            var t = this.style,
                i = pC(t),
                a = zT(i, t),
                n = a.width,
                o = a.outerWidth,
                s = a.outerHeight,
                l = t.padding,
                u = t.x || 0,
                f = t.y || 0,
                p = this._defaultStyle,
                c = t.align || p.align,
                h = t.verticalAlign || p.verticalAlign;
            this.isTruncated = !!a.isTruncated;
            var v = Js(u, o, c),
                d = Oo(f, s, h),
                m = v,
                g = d;
            l && (m += l[3], g += l[0]);
            var y = m + n;
            qg(t) && this._renderBackground(t, t, v, d, o, s);
            for (var x = !!t.backgroundColor, _ = 0; _ < a.lines.length; _++) {
                for (var S = a.lines[_], b = S.tokens, T = b.length, C = S.lineHeight, A = S.width, D = 0, M = m, I = y, E = T - 1, P = void 0; D < T && (P = b[D], !P.align || P.align === "left");) this._placeToken(P, t, C, g, M, "left", x), A -= P.width, M += P.width, D++;
                for (; E >= 0 && (P = b[E], P.align === "right");) this._placeToken(P, t, C, g, I, "right", x), A -= P.width, I -= P.width, E--;
                for (M += (n - (M - m) - (y - I) - A) / 2; D <= E;) P = b[D], this._placeToken(P, t, C, g, M + P.width / 2, "center", x), M += P.width, D++;
                g += C
            }
        }, e.prototype._placeToken = function(t, i, a, n, o, s, l) {
            var u = i.rich[t.styleName] || {};
            u.text = t.text;
            var f = t.verticalAlign,
                p = n + a / 2;
            f === "top" ? p = n + t.height / 2 : f === "bottom" && (p = n + a - t.height / 2);
            var c = !t.isLineHolder && qg(u);
            c && this._renderBackground(u, i, s === "right" ? o - t.width : s === "center" ? o - t.width / 2 : o, p - t.height / 2, t.width, t.height);
            var h = !!u.backgroundColor,
                v = t.textPadding;
            v && (o = fC(o, s, v), p -= t.height / 2 - v[0] - t.innerHeight / 2);
            var d = this._getOrCreateChild(Fa),
                m = d.createStyle();
            d.useStyle(m);
            var g = this._defaultStyle,
                y = !1,
                x = 0,
                _ = uC("fill" in u ? u.fill : "fill" in i ? i.fill : (y = !0, g.fill)),
                S = lC("stroke" in u ? u.stroke : "stroke" in i ? i.stroke : !h && !l && (!g.autoStroke || y) ? (x = aC, g.stroke) : null),
                b = u.textShadowBlur > 0 || i.textShadowBlur > 0;
            m.text = t.text, m.x = o, m.y = p, b && (m.shadowBlur = u.textShadowBlur || i.textShadowBlur || 0, m.shadowColor = u.textShadowColor || i.textShadowColor || "transparent", m.shadowOffsetX = u.textShadowOffsetX || i.textShadowOffsetX || 0, m.shadowOffsetY = u.textShadowOffsetY || i.textShadowOffsetY || 0), m.textAlign = s, m.textBaseline = "middle", m.font = t.font || Xr, m.opacity = Le(u.opacity, i.opacity, 1), oC(m, u), S && (m.lineWidth = Le(u.lineWidth, i.lineWidth, x), m.lineDash = ot(u.lineDash, i.lineDash), m.lineDashOffset = i.lineDashOffset || 0, m.stroke = S), _ && (m.fill = _);
            var T = t.contentWidth,
                C = t.contentHeight;
            d.setBoundingRect(new it(Js(m.x, T, m.textAlign), Oo(m.y, C, m.textBaseline), T, C))
        }, e.prototype._renderBackground = function(t, i, a, n, o, s) {
            var l = t.backgroundColor,
                u = t.borderWidth,
                f = t.borderColor,
                p = l && l.image,
                c = l && !p,
                h = t.borderRadius,
                v = this,
                d, m;
            if (c || t.lineHeight || u && f) {
                d = this._getOrCreateChild(ht), d.useStyle(d.createStyle()), d.style.fill = null;
                var g = d.shape;
                g.x = a, g.y = n, g.width = o, g.height = s, g.r = h, d.dirtyShape()
            }
            if (c) {
                var y = d.style;
                y.fill = l || null, y.fillOpacity = ot(t.fillOpacity, 1)
            } else if (p) {
                m = this._getOrCreateChild(Zt), m.onload = function() {
                    v.dirtyStyle()
                };
                var x = m.style;
                x.image = l.image, x.x = a, x.y = n, x.width = o, x.height = s
            }
            if (u && f) {
                var y = d.style;
                y.lineWidth = u, y.stroke = f, y.strokeOpacity = ot(t.strokeOpacity, 1), y.lineDash = t.borderDash, y.lineDashOffset = t.borderDashOffset || 0, d.strokeContainThreshold = 0, d.hasFill() && d.hasStroke() && (y.strokeFirst = !0, y.lineWidth *= 2)
            }
            var _ = (d || m).style;
            _.shadowBlur = t.shadowBlur || 0, _.shadowColor = t.shadowColor || "transparent", _.shadowOffsetX = t.shadowOffsetX || 0, _.shadowOffsetY = t.shadowOffsetY || 0, _.opacity = Le(t.opacity, i.opacity, 1)
        }, e.makeFont = function(t) {
            var i = "";
            return jg(t) && (i = [t.fontStyle, t.fontWeight, Kg(t.fontSize), t.fontFamily || "sans-serif"].join(" ")), i && Ie(i) || t.textFont || t.font
        }, e
    }(ye),
    $B = {
        left: !0,
        right: 1,
        center: 1
    },
    tF = {
        top: 1,
        bottom: 1,
        middle: 1
    },
    nC = ["fontStyle", "fontWeight", "fontSize", "fontFamily"];

function Kg(r) {
    return typeof r == "string" && (r.indexOf("px") !== -1 || r.indexOf("rem") !== -1 || r.indexOf("em") !== -1) ? r : isNaN(+r) ? Qp + "px" : r + "px"
}

function oC(r, e) {
    for (var t = 0; t < nC.length; t++) {
        var i = nC[t],
            a = e[i];
        a != null && (r[i] = a)
    }
}

function jg(r) {
    return r.fontSize != null || r.fontFamily || r.fontWeight
}

function eF(r) {
    return sC(r), w(r.rich, sC), r
}

function sC(r) {
    if (r) {
        r.font = cC.makeFont(r);
        var e = r.align;
        e === "middle" && (e = "center"), r.align = e == null || $B[e] ? e : "left";
        var t = r.verticalAlign;
        t === "center" && (t = "middle"), r.verticalAlign = t == null || tF[t] ? t : "top";
        var i = r.padding;
        i && (r.padding = mo(r.padding))
    }
}

function lC(r, e) {
    return r == null || e <= 0 || r === "transparent" || r === "none" ? null : r.image || r.colorStops ? "#000" : r
}

function uC(r) {
    return r == null || r === "none" ? null : r.image || r.colorStops ? "#000" : r
}

function fC(r, e, t) {
    return e === "right" ? r - t[1] : e === "center" ? r + t[3] / 2 - t[1] / 2 : r + t[3]
}

function pC(r) {
    var e = r.text;
    return e != null && (e += ""), e
}

function qg(r) {
    return !!(r.backgroundColor || r.lineHeight || r.borderWidth && r.borderColor)
}
var dt = cC;
var et = lt(),
    sf = function(r, e, t, i) {
        if (i) {
            var a = et(i);
            a.dataIndex = t, a.dataType = e, a.seriesIndex = r, a.ssrType = "chart", i.type === "group" && i.traverse(function(n) {
                var o = et(n);
                o.seriesIndex = r, o.dataIndex = t, o.dataType = e, o.ssrType = "chart"
            })
        }
    };
var hC = 1,
    vC = {},
    xC = lt(),
    $g = lt(),
    ty = 0,
    qo = 1,
    lf = 2,
    Oe = ["emphasis", "blur", "select"],
    In = ["normal", "emphasis", "blur", "select"],
    Ga = 10,
    rF = 9,
    En = "highlight",
    uf = "downplay",
    pl = "select",
    ff = "unselect",
    cl = "toggleSelect";

function fl(r) {
    return r != null && r !== "none"
}

function qc(r, e, t) {
    r.onHoverStateChange && (r.hoverState || 0) !== t && r.onHoverStateChange(e), r.hoverState = t
}

function _C(r) {
    qc(r, "emphasis", lf)
}

function SC(r) {
    r.hoverState === lf && qc(r, "normal", ty)
}

function ey(r) {
    qc(r, "blur", qo)
}

function bC(r) {
    r.hoverState === qo && qc(r, "normal", ty)
}

function iF(r) {
    r.selected = !0
}

function aF(r) {
    r.selected = !1
}

function dC(r, e, t) {
    e(r, t)
}

function Ha(r, e, t) {
    dC(r, e, t), r.isGroup && r.traverse(function(i) {
        dC(i, e, t)
    })
}

function Ko(r, e) {
    switch (e) {
        case "emphasis":
            r.hoverState = lf;
            break;
        case "normal":
            r.hoverState = ty;
            break;
        case "blur":
            r.hoverState = qo;
            break;
        case "select":
            r.selected = !0
    }
}

function nF(r, e, t, i) {
    for (var a = r.style, n = {}, o = 0; o < e.length; o++) {
        var s = e[o],
            l = a[s];
        n[s] = l ? ? (i && i[s])
    }
    for (var o = 0; o < r.animators.length; o++) {
        var u = r.animators[o];
        u.__fromStateTransition && u.__fromStateTransition.indexOf(t) < 0 && u.targetName === "style" && u.saveTo(n, e)
    }
    return n
}

function oF(r, e, t, i) {
    var a = t && at(t, "select") >= 0,
        n = !1;
    if (r instanceof st) {
        var o = xC(r),
            s = a && o.selectFill || o.normalFill,
            l = a && o.selectStroke || o.normalStroke;
        if (fl(s) || fl(l)) {
            i = i || {};
            var u = i.style || {};
            u.fill === "inherit" ? (n = !0, i = O({}, i), u = O({}, u), u.fill = s) : !fl(u.fill) && fl(s) ? (n = !0, i = O({}, i), u = O({}, u), u.fill = Ks(s)) : !fl(u.stroke) && fl(l) && (n || (i = O({}, i), u = O({}, u)), u.stroke = Ks(l)), i.style = u
        }
    }
    if (i && i.z2 == null) {
        n || (i = O({}, i));
        var f = r.z2EmphasisLift;
        i.z2 = r.z2 + (f ? ? Ga)
    }
    return i
}

function sF(r, e, t) {
    if (t && t.z2 == null) {
        t = O({}, t);
        var i = r.z2SelectLift;
        t.z2 = r.z2 + (i ? ? rF)
    }
    return t
}

function lF(r, e, t) {
    var i = at(r.currentStates, e) >= 0,
        a = r.style.opacity,
        n = i ? null : nF(r, ["opacity"], e, {
            opacity: 1
        });
    t = t || {};
    var o = t.style || {};
    return o.opacity == null && (t = O({}, t), o = O({
        opacity: i ? a : n.opacity * .1
    }, o), t.style = o), t
}

function Jg(r, e) {
    var t = this.states[r];
    if (this.style) {
        if (r === "emphasis") return oF(this, r, e, t);
        if (r === "blur") return lF(this, r, t);
        if (r === "select") return sF(this, r, t)
    }
    return t
}

function Gi(r) {
    r.stateProxy = Jg;
    var e = r.getTextContent(),
        t = r.getTextGuideLine();
    e && (e.stateProxy = Jg), t && (t.stateProxy = Jg)
}

function mC(r, e) {
    !wC(r, e) && !r.__highByOuter && Ha(r, _C)
}

function gC(r, e) {
    !wC(r, e) && !r.__highByOuter && Ha(r, SC)
}

function rr(r, e) {
    r.__highByOuter |= 1 << (e || 0), Ha(r, _C)
}

function ir(r, e) {
    !(r.__highByOuter &= ~(1 << (e || 0))) && Ha(r, SC)
}

function Kc(r) {
    Ha(r, ey)
}

function pf(r) {
    Ha(r, bC)
}

function ry(r) {
    Ha(r, iF)
}

function iy(r) {
    Ha(r, aF)
}

function wC(r, e) {
    return r.__highDownSilentOnTouch && e.zrByTouch
}

function ay(r) {
    var e = r.getModel(),
        t = [],
        i = [];
    e.eachComponent(function(a, n) {
        var o = $g(n),
            s = a === "series",
            l = s ? r.getViewOfSeriesModel(n) : r.getViewOfComponentModel(n);
        !s && i.push(l), o.isBlured && (l.group.traverse(function(u) {
            bC(u)
        }), s && t.push(n)), o.isBlured = !1
    }), w(i, function(a) {
        a && a.toggleBlurSeries && a.toggleBlurSeries(t, !1, e)
    })
}

function Qg(r, e, t, i) {
    var a = i.getModel();
    t = t || "coordinateSystem";

    function n(u, f) {
        for (var p = 0; p < f.length; p++) {
            var c = u.getItemGraphicEl(f[p]);
            c && pf(c)
        }
    }
    if (r != null && !(!e || e === "none")) {
        var o = a.getSeriesByIndex(r),
            s = o.coordinateSystem;
        s && s.master && (s = s.master);
        var l = [];
        a.eachSeries(function(u) {
            var f = o === u,
                p = u.coordinateSystem;
            p && p.master && (p = p.master);
            var c = p && s ? p === s : f;
            if (!(t === "series" && !f || t === "coordinateSystem" && !c || e === "series" && f)) {
                var h = i.getViewOfSeriesModel(u);
                if (h.group.traverse(function(m) {
                        m.__highByOuter && f && e === "self" || ey(m)
                    }), ue(e)) n(u.getData(), e);
                else if (j(e))
                    for (var v = ft(e), d = 0; d < v.length; d++) n(u.getData(v[d]), e[v[d]]);
                l.push(u), $g(u).isBlured = !0
            }
        }), a.eachComponent(function(u, f) {
            if (u !== "series") {
                var p = i.getViewOfComponentModel(f);
                p && p.toggleBlurSeries && p.toggleBlurSeries(l, !0, a)
            }
        })
    }
}

function Xc(r, e, t) {
    if (!(r == null || e == null)) {
        var i = t.getModel().getComponent(r, e);
        if (i) {
            $g(i).isBlured = !0;
            var a = t.getViewOfComponentModel(i);
            !a || !a.focusBlurEnabled || a.group.traverse(function(n) {
                ey(n)
            })
        }
    }
}

function TC(r, e, t) {
    var i = r.seriesIndex,
        a = r.getData(e.dataType);
    if (a) {
        var n = vi(a, e);
        n = (z(n) ? n[0] : n) || 0;
        var o = a.getItemGraphicEl(n);
        if (!o)
            for (var s = a.count(), l = 0; !o && l < s;) o = a.getItemGraphicEl(l++);
        if (o) {
            var u = et(o);
            Qg(i, u.focus, u.blurScope, t)
        } else {
            var f = r.get(["emphasis", "focus"]),
                p = r.get(["emphasis", "blurScope"]);
            f != null && Qg(i, f, p, t)
        }
    }
}

function jc(r, e, t, i) {
    var a = {
        focusSelf: !1,
        dispatchers: null
    };
    if (r == null || r === "series" || e == null || t == null) return a;
    var n = i.getModel().getComponent(r, e);
    if (!n) return a;
    var o = i.getViewOfComponentModel(n);
    if (!o || !o.findHighDownDispatchers) return a;
    for (var s = o.findHighDownDispatchers(t), l, u = 0; u < s.length; u++)
        if (et(s[u]).focus === "self") {
            l = !0;
            break
        }
    return {
        focusSelf: l,
        dispatchers: s
    }
}

function CC(r, e, t) {
    var i = et(r),
        a = jc(i.componentMainType, i.componentIndex, i.componentHighDownName, t),
        n = a.dispatchers,
        o = a.focusSelf;
    n ? (o && Xc(i.componentMainType, i.componentIndex, t), w(n, function(s) {
        return mC(s, e)
    })) : (Qg(i.seriesIndex, i.focus, i.blurScope, t), i.focus === "self" && Xc(i.componentMainType, i.componentIndex, t), mC(r, e))
}

function AC(r, e, t) {
    ay(t);
    var i = et(r),
        a = jc(i.componentMainType, i.componentIndex, i.componentHighDownName, t).dispatchers;
    a ? w(a, function(n) {
        return gC(n, e)
    }) : gC(r, e)
}

function DC(r, e, t) {
    if (Qc(e)) {
        var i = e.dataType,
            a = r.getData(i),
            n = vi(a, e);
        z(n) || (n = [n]), r[e.type === cl ? "toggleSelect" : e.type === pl ? "select" : "unselect"](n, i)
    }
}

function ny(r) {
    var e = r.getAllData();
    w(e, function(t) {
        var i = t.data,
            a = t.type;
        i.eachItemGraphicEl(function(n, o) {
            r.isSelected(o, a) ? ry(n) : iy(n)
        })
    })
}

function MC(r) {
    var e = [];
    return r.eachSeries(function(t) {
        var i = t.getAllData();
        w(i, function(a) {
            var n = a.data,
                o = a.type,
                s = t.getSelectedDataIndices();
            if (s.length > 0) {
                var l = {
                    dataIndex: s,
                    seriesIndex: t.seriesIndex
                };
                o != null && (l.dataType = o), e.push(l)
            }
        })
    }), e
}

function gi(r, e, t) {
    Wa(r, !0), Ha(r, Gi), Jc(r, e, t)
}

function uF(r) {
    Wa(r, !1)
}

function Nt(r, e, t, i) {
    i ? uF(r) : gi(r, e, t)
}

function Jc(r, e, t) {
    var i = et(r);
    e != null ? (i.focus = e, i.blurScope = t) : i.focus && (i.focus = null)
}
var yC = ["emphasis", "blur", "select"],
    fF = {
        itemStyle: "getItemStyle",
        lineStyle: "getLineStyle",
        areaStyle: "getAreaStyle"
    };

function te(r, e, t, i) {
    t = t || "itemStyle";
    for (var a = 0; a < yC.length; a++) {
        var n = yC[a],
            o = e.getModel([n, t]),
            s = r.ensureState(n);
        s.style = i ? i(o) : o[fF[t]]()
    }
}

function Wa(r, e) {
    var t = e === !1,
        i = r;
    r.highDownSilentOnTouch && (i.__highDownSilentOnTouch = r.highDownSilentOnTouch), (!t || i.__highDownDispatcher) && (i.__highByOuter = i.__highByOuter || 0, i.__highDownDispatcher = !t)
}

function Pn(r) {
    return !!(r && r.__highDownDispatcher)
}

function LC(r, e, t) {
    var i = et(r);
    i.componentMainType = e.mainType, i.componentIndex = e.componentIndex, i.componentHighDownName = t
}

function IC(r) {
    var e = vC[r];
    return e == null && hC <= 32 && (e = vC[r] = hC++), e
}

function Qc(r) {
    var e = r.type;
    return e === pl || e === ff || e === cl
}

function oy(r) {
    var e = r.type;
    return e === En || e === uf
}

function EC(r) {
    var e = xC(r);
    e.normalFill = r.style.fill, e.normalStroke = r.style.stroke;
    var t = r.states.select || {};
    e.selectFill = t.style && t.style.fill || null, e.selectStroke = t.style && t.style.stroke || null
}
var gt = {};
ui(gt, {
    Arc: () => Qo,
    BezierCurve: () => Za,
    BoundingRect: () => it,
    Circle: () => je,
    CompoundPath: () => Rn,
    Ellipse: () => jo,
    Group: () => J,
    Image: () => Zt,
    IncrementalDisplayable: () => lh,
    Line: () => ee,
    LinearGradient: () => yi,
    OrientedBoundingRect: () => gl,
    Path: () => st,
    Point: () => St,
    Polygon: () => oe,
    Polyline: () => ae,
    RadialGradient: () => ml,
    Rect: () => ht,
    Ring: () => Ya,
    Sector: () => pe,
    Text: () => dt,
    applyTransform: () => Je,
    clipPointsByRect: () => gf,
    clipRectByRect: () => my,
    createIcon: () => Wi,
    extendPath: () => dy,
    extendShape: () => vy,
    getShapeClass: () => es,
    getTransform: () => ti,
    groupTransition: () => ja,
    initProps: () => Ot,
    isElementRemoved: () => Xa,
    lineLineIntersect: () => sA,
    linePolygonIntersect: () => yl,
    makeImage: () => df,
    makePath: () => Nn,
    mergePath: () => Ye,
    registerShape: () => $r,
    removeElement: () => xi,
    removeElementWithFadeOut: () => qa,
    resizePath: () => ph,
    setTooltipConfig: () => _i,
    subPixelOptimize: () => mf,
    subPixelOptimizeLine: () => Ka,
    subPixelOptimizeRect: () => VF,
    transformDirection: () => rs,
    traverseElements: () => dr,
    updateProps: () => xt
});
var hl = Ve.CMD,
    pF = [
        [],
        [],
        []
    ],
    PC = Math.sqrt,
    cF = Math.atan2;

function $c(r, e) {
    if (e) {
        var t = r.data,
            i = r.len(),
            a, n, o, s, l, u, f = hl.M,
            p = hl.C,
            c = hl.L,
            h = hl.R,
            v = hl.A,
            d = hl.Q;
        for (o = 0, s = 0; o < i;) {
            switch (a = t[o++], s = o, n = 0, a) {
                case f:
                    n = 1;
                    break;
                case c:
                    n = 1;
                    break;
                case p:
                    n = 3;
                    break;
                case d:
                    n = 2;
                    break;
                case v:
                    var m = e[4],
                        g = e[5],
                        y = PC(e[0] * e[0] + e[1] * e[1]),
                        x = PC(e[2] * e[2] + e[3] * e[3]),
                        _ = cF(-e[1] / x, e[0] / y);
                    t[o] *= y, t[o++] += m, t[o] *= x, t[o++] += g, t[o++] *= y, t[o++] *= x, t[o++] += _, t[o++] += _, o += 2, s = o;
                    break;
                case h:
                    u[0] = t[o++], u[1] = t[o++], fe(u, u, e), t[s++] = u[0], t[s++] = u[1], u[0] += t[o++], u[1] += t[o++], fe(u, u, e), t[s++] = u[0], t[s++] = u[1]
            }
            for (l = 0; l < n; l++) {
                var S = pF[l];
                S[0] = t[o++], S[1] = t[o++], fe(S, S, e), t[s++] = S[0], t[s++] = S[1]
            }
        }
        r.increaseVersion()
    }
}
var sy = Math.sqrt,
    th = Math.sin,
    eh = Math.cos,
    cf = Math.PI;

function RC(r) {
    return Math.sqrt(r[0] * r[0] + r[1] * r[1])
}

function ly(r, e) {
    return (r[0] * e[0] + r[1] * e[1]) / (RC(r) * RC(e))
}

function NC(r, e) {
    return (r[0] * e[1] < r[1] * e[0] ? -1 : 1) * Math.acos(ly(r, e))
}

function OC(r, e, t, i, a, n, o, s, l, u, f) {
    var p = l * (cf / 180),
        c = eh(p) * (r - t) / 2 + th(p) * (e - i) / 2,
        h = -1 * th(p) * (r - t) / 2 + eh(p) * (e - i) / 2,
        v = c * c / (o * o) + h * h / (s * s);
    v > 1 && (o *= sy(v), s *= sy(v));
    var d = (a === n ? -1 : 1) * sy((o * o * (s * s) - o * o * (h * h) - s * s * (c * c)) / (o * o * (h * h) + s * s * (c * c))) || 0,
        m = d * o * h / s,
        g = d * -s * c / o,
        y = (r + t) / 2 + eh(p) * m - th(p) * g,
        x = (e + i) / 2 + th(p) * m + eh(p) * g,
        _ = NC([1, 0], [(c - m) / o, (h - g) / s]),
        S = [(c - m) / o, (h - g) / s],
        b = [(-1 * c - m) / o, (-1 * h - g) / s],
        T = NC(S, b);
    if (ly(S, b) <= -1 && (T = cf), ly(S, b) >= 1 && (T = 0), T < 0) {
        var C = Math.round(T / cf * 1e6) / 1e6;
        T = cf * 2 + C % 2 * cf
    }
    f.addData(u, y, x, o, s, _, T, p, n)
}
var hF = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig,
    vF = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;

function dF(r) {
    var e = new Ve;
    if (!r) return e;
    var t = 0,
        i = 0,
        a = t,
        n = i,
        o, s = Ve.CMD,
        l = r.match(hF);
    if (!l) return e;
    for (var u = 0; u < l.length; u++) {
        for (var f = l[u], p = f.charAt(0), c = void 0, h = f.match(vF) || [], v = h.length, d = 0; d < v; d++) h[d] = parseFloat(h[d]);
        for (var m = 0; m < v;) {
            var g = void 0,
                y = void 0,
                x = void 0,
                _ = void 0,
                S = void 0,
                b = void 0,
                T = void 0,
                C = t,
                A = i,
                D = void 0,
                M = void 0;
            switch (p) {
                case "l":
                    t += h[m++], i += h[m++], c = s.L, e.addData(c, t, i);
                    break;
                case "L":
                    t = h[m++], i = h[m++], c = s.L, e.addData(c, t, i);
                    break;
                case "m":
                    t += h[m++], i += h[m++], c = s.M, e.addData(c, t, i), a = t, n = i, p = "l";
                    break;
                case "M":
                    t = h[m++], i = h[m++], c = s.M, e.addData(c, t, i), a = t, n = i, p = "L";
                    break;
                case "h":
                    t += h[m++], c = s.L, e.addData(c, t, i);
                    break;
                case "H":
                    t = h[m++], c = s.L, e.addData(c, t, i);
                    break;
                case "v":
                    i += h[m++], c = s.L, e.addData(c, t, i);
                    break;
                case "V":
                    i = h[m++], c = s.L, e.addData(c, t, i);
                    break;
                case "C":
                    c = s.C, e.addData(c, h[m++], h[m++], h[m++], h[m++], h[m++], h[m++]), t = h[m - 2], i = h[m - 1];
                    break;
                case "c":
                    c = s.C, e.addData(c, h[m++] + t, h[m++] + i, h[m++] + t, h[m++] + i, h[m++] + t, h[m++] + i), t += h[m - 2], i += h[m - 1];
                    break;
                case "S":
                    g = t, y = i, D = e.len(), M = e.data, o === s.C && (g += t - M[D - 4], y += i - M[D - 3]), c = s.C, C = h[m++], A = h[m++], t = h[m++], i = h[m++], e.addData(c, g, y, C, A, t, i);
                    break;
                case "s":
                    g = t, y = i, D = e.len(), M = e.data, o === s.C && (g += t - M[D - 4], y += i - M[D - 3]), c = s.C, C = t + h[m++], A = i + h[m++], t += h[m++], i += h[m++], e.addData(c, g, y, C, A, t, i);
                    break;
                case "Q":
                    C = h[m++], A = h[m++], t = h[m++], i = h[m++], c = s.Q, e.addData(c, C, A, t, i);
                    break;
                case "q":
                    C = h[m++] + t, A = h[m++] + i, t += h[m++], i += h[m++], c = s.Q, e.addData(c, C, A, t, i);
                    break;
                case "T":
                    g = t, y = i, D = e.len(), M = e.data, o === s.Q && (g += t - M[D - 4], y += i - M[D - 3]), t = h[m++], i = h[m++], c = s.Q, e.addData(c, g, y, t, i);
                    break;
                case "t":
                    g = t, y = i, D = e.len(), M = e.data, o === s.Q && (g += t - M[D - 4], y += i - M[D - 3]), t += h[m++], i += h[m++], c = s.Q, e.addData(c, g, y, t, i);
                    break;
                case "A":
                    x = h[m++], _ = h[m++], S = h[m++], b = h[m++], T = h[m++], C = t, A = i, t = h[m++], i = h[m++], c = s.A, OC(C, A, t, i, b, T, x, _, S, c, e);
                    break;
                case "a":
                    x = h[m++], _ = h[m++], S = h[m++], b = h[m++], T = h[m++], C = t, A = i, t += h[m++], i += h[m++], c = s.A, OC(C, A, t, i, b, T, x, _, S, c, e);
                    break
            }
        }(p === "z" || p === "Z") && (c = s.Z, e.addData(c), t = a, i = n), o = c
    }
    return e.toStatic(), e
}
var zC = function(r) {
    L(e, r);

    function e() {
        return r !== null && r.apply(this, arguments) || this
    }
    return e.prototype.applyTransform = function(t) {}, e
}(st);

function kC(r) {
    return r.setData != null
}

function UC(r, e) {
    var t = dF(r),
        i = O({}, e);
    return i.buildPath = function(a) {
        if (kC(a)) {
            a.setData(t.data);
            var n = a.getContext();
            n && a.rebuildPath(n, 1)
        } else {
            var n = a;
            t.rebuildPath(n, 1)
        }
    }, i.applyTransform = function(a) {
        $c(t, a), this.dirtyShape()
    }, i
}

function rh(r, e) {
    return new zC(UC(r, e))
}

function VC(r, e) {
    var t = UC(r, e),
        i = function(a) {
            L(n, a);

            function n(o) {
                var s = a.call(this, o) || this;
                return s.applyTransform = t.applyTransform, s.buildPath = t.buildPath, s
            }
            return n
        }(zC);
    return i
}

function BC(r, e) {
    for (var t = [], i = r.length, a = 0; a < i; a++) {
        var n = r[a];
        t.push(n.getUpdatedPathProxy(!0))
    }
    var o = new st(e);
    return o.createPathProxy(), o.buildPath = function(s) {
        if (kC(s)) {
            s.appendPath(t);
            var l = s.getContext();
            l && s.rebuildPath(l, 1)
        }
    }, o
}

function vl(r, e) {
    e = e || {};
    var t = new st;
    return r.shape && t.setShape(r.shape), t.setStyle(r.style), e.bakeTransform ? $c(t.path, r.getComputedTransform()) : e.toLocal ? t.setLocalTransform(r.getComputedTransform()) : t.copyTransform(r), t.buildPath = r.buildPath, t.applyTransform = t.applyTransform, t.z = r.z, t.z2 = r.z2, t.zlevel = r.zlevel, t
}
var gF = function() {
    function r() {
        this.cx = 0, this.cy = 0, this.r = 0
    }
    return r
}();
var FC = function(r) {
    L(e, r);

    function e(t) {
        return r.call(this, t) || this
    }
    return e.prototype.getDefaultShape = function() {
        return new gF
    }, e.prototype.buildPath = function(t, i) {
        t.moveTo(i.cx + i.r, i.cy), t.arc(i.cx, i.cy, i.r, 0, Math.PI * 2)
    }, e
}(st);
FC.prototype.type = "circle";
var je = FC;
var yF = function() {
    function r() {
        this.cx = 0, this.cy = 0, this.rx = 0, this.ry = 0
    }
    return r
}();
var GC = function(r) {
    L(e, r);

    function e(t) {
        return r.call(this, t) || this
    }
    return e.prototype.getDefaultShape = function() {
        return new yF
    }, e.prototype.buildPath = function(t, i) {
        var a = .5522848,
            n = i.cx,
            o = i.cy,
            s = i.rx,
            l = i.ry,
            u = s * a,
            f = l * a;
        t.moveTo(n - s, o), t.bezierCurveTo(n - s, o - f, n - u, o - l, n, o - l), t.bezierCurveTo(n + u, o - l, n + s, o - f, n + s, o), t.bezierCurveTo(n + s, o + f, n + u, o + l, n, o + l), t.bezierCurveTo(n - u, o + l, n - s, o + f, n - s, o), t.closePath()
    }, e
}(st);
GC.prototype.type = "ellipse";
var jo = GC;
var WC = Math.PI,
    uy = WC * 2,
    Jo = Math.sin,
    dl = Math.cos,
    xF = Math.acos,
    ar = Math.atan2,
    HC = Math.abs,
    vf = Math.sqrt,
    hf = Math.max,
    da = Math.min,
    Hi = 1e-4;

function _F(r, e, t, i, a, n, o, s) {
    var l = t - r,
        u = i - e,
        f = o - a,
        p = s - n,
        c = p * l - f * u;
    if (!(c * c < Hi)) return c = (f * (e - n) - p * (r - a)) / c, [r + c * l, e + c * u]
}

function ih(r, e, t, i, a, n, o) {
    var s = r - t,
        l = e - i,
        u = (o ? n : -n) / vf(s * s + l * l),
        f = u * l,
        p = -u * s,
        c = r + f,
        h = e + p,
        v = t + f,
        d = i + p,
        m = (c + v) / 2,
        g = (h + d) / 2,
        y = v - c,
        x = d - h,
        _ = y * y + x * x,
        S = a - n,
        b = c * d - v * h,
        T = (x < 0 ? -1 : 1) * vf(hf(0, S * S * _ - b * b)),
        C = (b * x - y * T) / _,
        A = (-b * y - x * T) / _,
        D = (b * x + y * T) / _,
        M = (-b * y + x * T) / _,
        I = C - m,
        E = A - g,
        P = D - m,
        R = M - g;
    return I * I + E * E > P * P + R * R && (C = D, A = M), {
        cx: C,
        cy: A,
        x0: -f,
        y0: -p,
        x1: C * (a / S - 1),
        y1: A * (a / S - 1)
    }
}

function SF(r) {
    var e;
    if (z(r)) {
        var t = r.length;
        if (!t) return r;
        t === 1 ? e = [r[0], r[0], 0, 0] : t === 2 ? e = [r[0], r[0], r[1], r[1]] : t === 3 ? e = r.concat(r[2]) : e = r
    } else e = [r, r, r, r];
    return e
}

function YC(r, e) {
    var t, i = hf(e.r, 0),
        a = hf(e.r0 || 0, 0),
        n = i > 0,
        o = a > 0;
    if (!(!n && !o)) {
        if (n || (i = a, a = 0), a > i) {
            var s = i;
            i = a, a = s
        }
        var l = e.startAngle,
            u = e.endAngle;
        if (!(isNaN(l) || isNaN(u))) {
            var f = e.cx,
                p = e.cy,
                c = !!e.clockwise,
                h = HC(u - l),
                v = h > uy && h % uy;
            if (v > Hi && (h = v), !(i > Hi)) r.moveTo(f, p);
            else if (h > uy - Hi) r.moveTo(f + i * dl(l), p + i * Jo(l)), r.arc(f, p, i, l, u, !c), a > Hi && (r.moveTo(f + a * dl(u), p + a * Jo(u)), r.arc(f, p, a, u, l, c));
            else {
                var d = void 0,
                    m = void 0,
                    g = void 0,
                    y = void 0,
                    x = void 0,
                    _ = void 0,
                    S = void 0,
                    b = void 0,
                    T = void 0,
                    C = void 0,
                    A = void 0,
                    D = void 0,
                    M = void 0,
                    I = void 0,
                    E = void 0,
                    P = void 0,
                    R = i * dl(l),
                    N = i * Jo(l),
                    V = a * dl(u),
                    U = a * Jo(u),
                    B = h > Hi;
                if (B) {
                    var Z = e.cornerRadius;
                    Z && (t = SF(Z), d = t[0], m = t[1], g = t[2], y = t[3]);
                    var K = HC(i - a) / 2;
                    if (x = da(K, g), _ = da(K, y), S = da(K, d), b = da(K, m), A = T = hf(x, _), D = C = hf(S, b), (T > Hi || C > Hi) && (M = i * dl(u), I = i * Jo(u), E = a * dl(l), P = a * Jo(l), h < WC)) {
                        var tt = _F(R, N, E, P, M, I, V, U);
                        if (tt) {
                            var pt = R - tt[0],
                                ct = N - tt[1],
                                bt = M - tt[0],
                                qt = I - tt[1],
                                ve = 1 / Jo(xF((pt * bt + ct * qt) / (vf(pt * pt + ct * ct) * vf(bt * bt + qt * qt))) / 2),
                                Mt = vf(tt[0] * tt[0] + tt[1] * tt[1]);
                            A = da(T, (i - Mt) / (ve + 1)), D = da(C, (a - Mt) / (ve - 1))
                        }
                    }
                }
                if (!B) r.moveTo(f + R, p + N);
                else if (A > Hi) {
                    var mt = da(g, A),
                        Et = da(y, A),
                        ut = ih(E, P, R, N, i, mt, c),
                        Tt = ih(M, I, V, U, i, Et, c);
                    r.moveTo(f + ut.cx + ut.x0, p + ut.cy + ut.y0), A < T && mt === Et ? r.arc(f + ut.cx, p + ut.cy, A, ar(ut.y0, ut.x0), ar(Tt.y0, Tt.x0), !c) : (mt > 0 && r.arc(f + ut.cx, p + ut.cy, mt, ar(ut.y0, ut.x0), ar(ut.y1, ut.x1), !c), r.arc(f, p, i, ar(ut.cy + ut.y1, ut.cx + ut.x1), ar(Tt.cy + Tt.y1, Tt.cx + Tt.x1), !c), Et > 0 && r.arc(f + Tt.cx, p + Tt.cy, Et, ar(Tt.y1, Tt.x1), ar(Tt.y0, Tt.x0), !c))
                } else r.moveTo(f + R, p + N), r.arc(f, p, i, l, u, !c);
                if (!(a > Hi) || !B) r.lineTo(f + V, p + U);
                else if (D > Hi) {
                    var mt = da(d, D),
                        Et = da(m, D),
                        ut = ih(V, U, M, I, a, -Et, c),
                        Tt = ih(R, N, E, P, a, -mt, c);
                    r.lineTo(f + ut.cx + ut.x0, p + ut.cy + ut.y0), D < C && mt === Et ? r.arc(f + ut.cx, p + ut.cy, D, ar(ut.y0, ut.x0), ar(Tt.y0, Tt.x0), !c) : (Et > 0 && r.arc(f + ut.cx, p + ut.cy, Et, ar(ut.y0, ut.x0), ar(ut.y1, ut.x1), !c), r.arc(f, p, a, ar(ut.cy + ut.y1, ut.cx + ut.x1), ar(Tt.cy + Tt.y1, Tt.cx + Tt.x1), c), mt > 0 && r.arc(f + Tt.cx, p + Tt.cy, mt, ar(Tt.y1, Tt.x1), ar(Tt.y0, Tt.x0), !c))
                } else r.lineTo(f + V, p + U), r.arc(f, p, a, u, l, c)
            }
            r.closePath()
        }
    }
}
var wF = function() {
    function r() {
        this.cx = 0, this.cy = 0, this.r0 = 0, this.r = 0, this.startAngle = 0, this.endAngle = Math.PI * 2, this.clockwise = !0, this.cornerRadius = 0
    }
    return r
}();
var ZC = function(r) {
    L(e, r);

    function e(t) {
        return r.call(this, t) || this
    }
    return e.prototype.getDefaultShape = function() {
        return new wF
    }, e.prototype.buildPath = function(t, i) {
        YC(t, i)
    }, e.prototype.isZeroArea = function() {
        return this.shape.startAngle === this.shape.endAngle || this.shape.r === this.shape.r0
    }, e
}(st);
ZC.prototype.type = "sector";
var pe = ZC;
var TF = function() {
    function r() {
        this.cx = 0, this.cy = 0, this.r = 0, this.r0 = 0
    }
    return r
}();
var XC = function(r) {
    L(e, r);

    function e(t) {
        return r.call(this, t) || this
    }
    return e.prototype.getDefaultShape = function() {
        return new TF
    }, e.prototype.buildPath = function(t, i) {
        var a = i.cx,
            n = i.cy,
            o = Math.PI * 2;
        t.moveTo(a + i.r, n), t.arc(a, n, i.r, 0, o, !1), t.moveTo(a + i.r0, n), t.arc(a, n, i.r0, 0, o, !0)
    }, e
}(st);
XC.prototype.type = "ring";
var Ya = XC;

function fy(r, e, t, i) {
    var a = [],
        n = [],
        o = [],
        s = [],
        l, u, f, p;
    if (i) {
        f = [1 / 0, 1 / 0], p = [-1 / 0, -1 / 0];
        for (var c = 0, h = r.length; c < h; c++) Tr(f, f, r[c]), Cr(p, p, r[c]);
        Tr(f, f, i[0]), Cr(p, p, i[1])
    }
    for (var c = 0, h = r.length; c < h; c++) {
        var v = r[c];
        if (t) l = r[c ? c - 1 : h - 1], u = r[(c + 1) % h];
        else if (c === 0 || c === h - 1) {
            a.push(fr(r[c]));
            continue
        } else l = r[c - 1], u = r[c + 1];
        fi(n, u, l), yo(n, n, e);
        var d = Iu(v, l),
            m = Iu(v, u),
            g = d + m;
        g !== 0 && (d /= g, m /= g), yo(o, n, -d), yo(s, n, m);
        var y = ec([], v, o),
            x = ec([], v, s);
        i && (Cr(y, y, f), Tr(y, y, p), Cr(x, x, f), Tr(x, x, p)), a.push(y), a.push(x)
    }
    return t && a.push(a.shift()), a
}

function ah(r, e, t) {
    var i = e.smooth,
        a = e.points;
    if (a && a.length >= 2) {
        if (i) {
            var n = fy(a, i, t, e.smoothConstraint);
            r.moveTo(a[0][0], a[0][1]);
            for (var o = a.length, s = 0; s < (t ? o : o - 1); s++) {
                var l = n[s * 2],
                    u = n[s * 2 + 1],
                    f = a[(s + 1) % o];
                r.bezierCurveTo(l[0], l[1], u[0], u[1], f[0], f[1])
            }
        } else {
            r.moveTo(a[0][0], a[0][1]);
            for (var s = 1, p = a.length; s < p; s++) r.lineTo(a[s][0], a[s][1])
        }
        t && r.closePath()
    }
}
var CF = function() {
    function r() {
        this.points = null, this.smooth = 0, this.smoothConstraint = null
    }
    return r
}();
var KC = function(r) {
    L(e, r);

    function e(t) {
        return r.call(this, t) || this
    }
    return e.prototype.getDefaultShape = function() {
        return new CF
    }, e.prototype.buildPath = function(t, i) {
        ah(t, i, !0)
    }, e
}(st);
KC.prototype.type = "polygon";
var oe = KC;
var AF = function() {
    function r() {
        this.points = null, this.percent = 1, this.smooth = 0, this.smoothConstraint = null
    }
    return r
}();
var jC = function(r) {
    L(e, r);

    function e(t) {
        return r.call(this, t) || this
    }
    return e.prototype.getDefaultStyle = function() {
        return {
            stroke: "#000",
            fill: null
        }
    }, e.prototype.getDefaultShape = function() {
        return new AF
    }, e.prototype.buildPath = function(t, i) {
        ah(t, i, !1)
    }, e
}(st);
jC.prototype.type = "polyline";
var ae = jC;
var DF = {},
    MF = function() {
        function r() {
            this.x1 = 0, this.y1 = 0, this.x2 = 0, this.y2 = 0, this.percent = 1
        }
        return r
    }();
var JC = function(r) {
    L(e, r);

    function e(t) {
        return r.call(this, t) || this
    }
    return e.prototype.getDefaultStyle = function() {
        return {
            stroke: "#000",
            fill: null
        }
    }, e.prototype.getDefaultShape = function() {
        return new MF
    }, e.prototype.buildPath = function(t, i) {
        var a, n, o, s;
        if (this.subPixelOptimize) {
            var l = Yc(DF, i, this.style);
            a = l.x1, n = l.y1, o = l.x2, s = l.y2
        } else a = i.x1, n = i.y1, o = i.x2, s = i.y2;
        var u = i.percent;
        u !== 0 && (t.moveTo(a, n), u < 1 && (o = a * (1 - u) + o * u, s = n * (1 - u) + s * u), t.lineTo(o, s))
    }, e.prototype.pointAt = function(t) {
        var i = this.shape;
        return [i.x1 * (1 - t) + i.x2 * t, i.y1 * (1 - t) + i.y2 * t]
    }, e
}(st);
JC.prototype.type = "line";
var ee = JC;
var kr = [],
    LF = function() {
        function r() {
            this.x1 = 0, this.y1 = 0, this.x2 = 0, this.y2 = 0, this.cpx1 = 0, this.cpy1 = 0, this.percent = 1
        }
        return r
    }();

function QC(r, e, t) {
    var i = r.cpx2,
        a = r.cpy2;
    return i != null || a != null ? [(t ? Jm : ce)(r.x1, r.cpx1, r.cpx2, r.x2, e), (t ? Jm : ce)(r.y1, r.cpy1, r.cpy2, r.y2, e)] : [(t ? ku : ge)(r.x1, r.cpx1, r.x2, e), (t ? ku : ge)(r.y1, r.cpy1, r.y2, e)]
}
var $C = function(r) {
    L(e, r);

    function e(t) {
        return r.call(this, t) || this
    }
    return e.prototype.getDefaultStyle = function() {
        return {
            stroke: "#000",
            fill: null
        }
    }, e.prototype.getDefaultShape = function() {
        return new LF
    }, e.prototype.buildPath = function(t, i) {
        var a = i.x1,
            n = i.y1,
            o = i.x2,
            s = i.y2,
            l = i.cpx1,
            u = i.cpy1,
            f = i.cpx2,
            p = i.cpy2,
            c = i.percent;
        c !== 0 && (t.moveTo(a, n), f == null || p == null ? (c < 1 && (yn(a, l, o, c, kr), l = kr[1], o = kr[2], yn(n, u, s, c, kr), u = kr[1], s = kr[2]), t.quadraticCurveTo(l, u, o, s)) : (c < 1 && (ci(a, l, f, o, c, kr), l = kr[1], f = kr[2], o = kr[3], ci(n, u, p, s, c, kr), u = kr[1], p = kr[2], s = kr[3]), t.bezierCurveTo(l, u, f, p, o, s)))
    }, e.prototype.pointAt = function(t) {
        return QC(this.shape, t, !1)
    }, e.prototype.tangentAt = function(t) {
        var i = QC(this.shape, t, !0);
        return qr(i, i)
    }, e
}(st);
$C.prototype.type = "bezier-curve";
var Za = $C;
var IF = function() {
    function r() {
        this.cx = 0, this.cy = 0, this.r = 0, this.startAngle = 0, this.endAngle = Math.PI * 2, this.clockwise = !0
    }
    return r
}();
var tA = function(r) {
    L(e, r);

    function e(t) {
        return r.call(this, t) || this
    }
    return e.prototype.getDefaultStyle = function() {
        return {
            stroke: "#000",
            fill: null
        }
    }, e.prototype.getDefaultShape = function() {
        return new IF
    }, e.prototype.buildPath = function(t, i) {
        var a = i.cx,
            n = i.cy,
            o = Math.max(i.r, 0),
            s = i.startAngle,
            l = i.endAngle,
            u = i.clockwise,
            f = Math.cos(s),
            p = Math.sin(s);
        t.moveTo(f * o + a, p * o + n), t.arc(a, n, o, s, l, !u)
    }, e
}(st);
tA.prototype.type = "arc";
var Qo = tA;
var EF = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = "compound", t
        }
        return e.prototype._updatePathDirty = function() {
            for (var t = this.shape.paths, i = this.shapeChanged(), a = 0; a < t.length; a++) i = i || t[a].shapeChanged();
            i && this.dirtyShape()
        }, e.prototype.beforeBrush = function() {
            this._updatePathDirty();
            for (var t = this.shape.paths || [], i = this.getGlobalScale(), a = 0; a < t.length; a++) t[a].path || t[a].createPathProxy(), t[a].path.setScale(i[0], i[1], t[a].segmentIgnoreThreshold)
        }, e.prototype.buildPath = function(t, i) {
            for (var a = i.paths || [], n = 0; n < a.length; n++) a[n].buildPath(t, a[n].shape, !0)
        }, e.prototype.afterBrush = function() {
            for (var t = this.shape.paths || [], i = 0; i < t.length; i++) t[i].pathUpdated()
        }, e.prototype.getBoundingRect = function() {
            return this._updatePathDirty.call(this), st.prototype.getBoundingRect.call(this)
        }, e
    }(st),
    Rn = EF;
var PF = function() {
        function r(e) {
            this.colorStops = e || []
        }
        return r.prototype.addColorStop = function(e, t) {
            this.colorStops.push({
                offset: e,
                color: t
            })
        }, r
    }(),
    nh = PF;
var RF = function(r) {
        L(e, r);

        function e(t, i, a, n, o, s) {
            var l = r.call(this, o) || this;
            return l.x = t ? ? 0, l.y = i ? ? 0, l.x2 = a ? ? 1, l.y2 = n ? ? 0, l.type = "linear", l.global = s || !1, l
        }
        return e
    }(nh),
    yi = RF;
var NF = function(r) {
        L(e, r);

        function e(t, i, a, n, o) {
            var s = r.call(this, n) || this;
            return s.x = t ? ? .5, s.y = i ? ? .5, s.r = a ? ? .5, s.type = "radial", s.global = o || !1, s
        }
        return e
    }(nh),
    ml = NF;
var $o = [0, 0],
    ts = [0, 0],
    oh = new St,
    sh = new St,
    OF = function() {
        function r(e, t) {
            this._corners = [], this._axes = [], this._origin = [0, 0];
            for (var i = 0; i < 4; i++) this._corners[i] = new St;
            for (var i = 0; i < 2; i++) this._axes[i] = new St;
            e && this.fromBoundingRect(e, t)
        }
        return r.prototype.fromBoundingRect = function(e, t) {
            var i = this._corners,
                a = this._axes,
                n = e.x,
                o = e.y,
                s = n + e.width,
                l = o + e.height;
            if (i[0].set(n, o), i[1].set(s, o), i[2].set(s, l), i[3].set(n, l), t)
                for (var u = 0; u < 4; u++) i[u].transform(t);
            St.sub(a[0], i[1], i[0]), St.sub(a[1], i[3], i[0]), a[0].normalize(), a[1].normalize();
            for (var u = 0; u < 2; u++) this._origin[u] = a[u].dot(i[0])
        }, r.prototype.intersect = function(e, t) {
            var i = !0,
                a = !t;
            return oh.set(1 / 0, 1 / 0), sh.set(0, 0), !this._intersectCheckOneSide(this, e, oh, sh, a, 1) && (i = !1, a) || !this._intersectCheckOneSide(e, this, oh, sh, a, -1) && (i = !1, a) || a || St.copy(t, i ? oh : sh), i
        }, r.prototype._intersectCheckOneSide = function(e, t, i, a, n, o) {
            for (var s = !0, l = 0; l < 2; l++) {
                var u = this._axes[l];
                if (this._getProjMinMaxOnAxis(l, e._corners, $o), this._getProjMinMaxOnAxis(l, t._corners, ts), $o[1] < ts[0] || $o[0] > ts[1]) {
                    if (s = !1, n) return s;
                    var f = Math.abs(ts[0] - $o[1]),
                        p = Math.abs($o[0] - ts[1]);
                    Math.min(f, p) > a.len() && (f < p ? St.scale(a, u, -f * o) : St.scale(a, u, p * o))
                } else if (i) {
                    var f = Math.abs(ts[0] - $o[1]),
                        p = Math.abs($o[0] - ts[1]);
                    Math.min(f, p) < i.len() && (f < p ? St.scale(i, u, f * o) : St.scale(i, u, -p * o))
                }
            }
            return s
        }, r.prototype._getProjMinMaxOnAxis = function(e, t, i) {
            for (var a = this._axes[e], n = this._origin, o = t[0].dot(a) + n[e], s = o, l = o, u = 1; u < t.length; u++) {
                var f = t[u].dot(a) + n[e];
                s = Math.min(f, s), l = Math.max(f, l)
            }
            i[0] = s, i[1] = l
        }, r
    }(),
    gl = OF;
var zF = [],
    kF = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.notClear = !0, t.incremental = !0, t._displayables = [], t._temporaryDisplayables = [], t._cursor = 0, t
        }
        return e.prototype.traverse = function(t, i) {
            t.call(i, this)
        }, e.prototype.useStyle = function() {
            this.style = {}
        }, e.prototype.getCursor = function() {
            return this._cursor
        }, e.prototype.innerAfterBrush = function() {
            this._cursor = this._displayables.length
        }, e.prototype.clearDisplaybles = function() {
            this._displayables = [], this._temporaryDisplayables = [], this._cursor = 0, this.markRedraw(), this.notClear = !1
        }, e.prototype.clearTemporalDisplayables = function() {
            this._temporaryDisplayables = []
        }, e.prototype.addDisplayable = function(t, i) {
            i ? this._temporaryDisplayables.push(t) : this._displayables.push(t), this.markRedraw()
        }, e.prototype.addDisplayables = function(t, i) {
            i = i || !1;
            for (var a = 0; a < t.length; a++) this.addDisplayable(t[a], i)
        }, e.prototype.getDisplayables = function() {
            return this._displayables
        }, e.prototype.getTemporalDisplayables = function() {
            return this._temporaryDisplayables
        }, e.prototype.eachPendingDisplayable = function(t) {
            for (var i = this._cursor; i < this._displayables.length; i++) t && t(this._displayables[i]);
            for (var i = 0; i < this._temporaryDisplayables.length; i++) t && t(this._temporaryDisplayables[i])
        }, e.prototype.update = function() {
            this.updateTransform();
            for (var t = this._cursor; t < this._displayables.length; t++) {
                var i = this._displayables[t];
                i.parent = this, i.update(), i.parent = null
            }
            for (var t = 0; t < this._temporaryDisplayables.length; t++) {
                var i = this._temporaryDisplayables[t];
                i.parent = this, i.update(), i.parent = null
            }
        }, e.prototype.getBoundingRect = function() {
            if (!this._rect) {
                for (var t = new it(1 / 0, 1 / 0, -1 / 0, -1 / 0), i = 0; i < this._displayables.length; i++) {
                    var a = this._displayables[i],
                        n = a.getBoundingRect().clone();
                    a.needLocalTransform() && n.applyTransform(a.getLocalTransform(zF)), t.union(n)
                }
                this._rect = t
            }
            return this._rect
        }, e.prototype.contain = function(t, i) {
            var a = this.transformCoordToLocal(t, i),
                n = this.getBoundingRect();
            if (n.contain(a[0], a[1]))
                for (var o = 0; o < this._displayables.length; o++) {
                    var s = this._displayables[o];
                    if (s.contain(t, i)) return !0
                }
            return !1
        }, e
    }(ye),
    lh = kF;
var rA = lt();

function ma(r, e, t, i, a) {
    var n;
    if (e && e.ecModel) {
        var o = e.ecModel.getUpdatePayload();
        n = o && o.animation
    }
    var s = e && e.isAnimationEnabled(),
        l = r === "update";
    if (s) {
        var u = void 0,
            f = void 0,
            p = void 0;
        i ? (u = ot(i.duration, 200), f = ot(i.easing, "cubicOut"), p = 0) : (u = e.getShallow(l ? "animationDurationUpdate" : "animationDuration"), f = e.getShallow(l ? "animationEasingUpdate" : "animationEasing"), p = e.getShallow(l ? "animationDelayUpdate" : "animationDelay")), n && (n.duration != null && (u = n.duration), n.easing != null && (f = n.easing), n.delay != null && (p = n.delay)), X(p) && (p = p(t, a)), X(u) && (u = u(t));
        var c = {
            duration: u || 0,
            delay: p,
            easing: f
        };
        return c
    } else return null
}

function py(r, e, t, i, a, n, o) {
    var s = !1,
        l;
    X(a) ? (o = n, n = a, a = null) : j(a) && (n = a.cb, o = a.during, s = a.isFrom, l = a.removeOpt, a = a.dataIndex);
    var u = r === "leave";
    u || e.stopAnimation("leave");
    var f = ma(r, i, a, u ? l || {} : null, i && i.getAnimationDelayParams ? i.getAnimationDelayParams(e, a) : null);
    if (f && f.duration > 0) {
        var p = f.duration,
            c = f.delay,
            h = f.easing,
            v = {
                duration: p,
                delay: c || 0,
                easing: h,
                done: n,
                force: !!n || !!o,
                setToFinal: !u,
                scope: r,
                during: o
            };
        s ? e.animateFrom(t, v) : e.animateTo(t, v)
    } else e.stopAnimation(), !s && e.attr(t), o && o(1), n && n()
}

function xt(r, e, t, i, a, n) {
    py("update", r, e, t, i, a, n)
}

function Ot(r, e, t, i, a, n) {
    py("enter", r, e, t, i, a, n)
}

function Xa(r) {
    if (!r.__zr) return !0;
    for (var e = 0; e < r.animators.length; e++) {
        var t = r.animators[e];
        if (t.scope === "leave") return !0
    }
    return !1
}

function xi(r, e, t, i, a, n) {
    Xa(r) || py("leave", r, e, t, i, a, n)
}

function eA(r, e, t, i) {
    r.removeTextContent(), r.removeTextGuideLine(), xi(r, {
        style: {
            opacity: 0
        }
    }, e, t, i)
}

function qa(r, e, t) {
    function i() {
        r.parent && r.parent.remove(r)
    }
    r.isGroup ? r.traverse(function(a) {
        a.isGroup || eA(a, e, t, i)
    }) : eA(r, e, t, i)
}

function Ae(r) {
    rA(r).oldStyle = r.style
}

function iA(r) {
    return rA(r).oldStyle
}
var uh = Math.max,
    fh = Math.min,
    hy = {};

function vy(r) {
    return st.extend(r)
}
var UF = VC;

function dy(r, e) {
    return UF(r, e)
}

function $r(r, e) {
    hy[r] = e
}

function es(r) {
    if (hy.hasOwnProperty(r)) return hy[r]
}

function Nn(r, e, t, i) {
    var a = rh(r, e);
    return t && (i === "center" && (t = oA(t, a.getBoundingRect())), ph(a, t)), a
}

function df(r, e, t) {
    var i = new Zt({
        style: {
            image: r,
            x: e.x,
            y: e.y,
            width: e.width,
            height: e.height
        },
        onload: function(a) {
            if (t === "center") {
                var n = {
                    width: a.width,
                    height: a.height
                };
                i.setStyle(oA(e, n))
            }
        }
    });
    return i
}

function oA(r, e) {
    var t = e.width / e.height,
        i = r.height * t,
        a;
    i <= r.width ? a = r.height : (i = r.width, a = i / t);
    var n = r.x + r.width / 2,
        o = r.y + r.height / 2;
    return {
        x: n - i / 2,
        y: o - a / 2,
        width: i,
        height: a
    }
}
var Ye = BC;

function ph(r, e) {
    if (r.applyTransform) {
        var t = r.getBoundingRect(),
            i = t.calculateTransform(e);
        r.applyTransform(i)
    }
}

function Ka(r, e) {
    return Yc(r, r, {
        lineWidth: e
    }), r
}

function VF(r) {
    return Zc(r.shape, r.shape, r.style), r
}
var mf = Ln;

function ti(r, e) {
    for (var t = za([]); r && r !== e;) pr(t, r.getLocalTransform(), t), r = r.parent;
    return t
}

function Je(r, e, t) {
    return e && !ue(e) && (e = Lr.getLocalTransform(e)), t && (e = jr([], e)), fe([], r, e)
}

function rs(r, e, t) {
    var i = e[4] === 0 || e[5] === 0 || e[0] === 0 ? 1 : Math.abs(2 * e[4] / e[0]),
        a = e[4] === 0 || e[5] === 0 || e[2] === 0 ? 1 : Math.abs(2 * e[4] / e[2]),
        n = [r === "left" ? -i : r === "right" ? i : 0, r === "top" ? -a : r === "bottom" ? a : 0];
    return n = Je(n, e, t), Math.abs(n[0]) > Math.abs(n[1]) ? n[0] > 0 ? "right" : "left" : n[1] > 0 ? "bottom" : "top"
}

function aA(r) {
    return !r.isGroup
}

function BF(r) {
    return r.shape != null
}

function ja(r, e, t) {
    if (!r || !e) return;

    function i(o) {
        var s = {};
        return o.traverse(function(l) {
            aA(l) && l.anid && (s[l.anid] = l)
        }), s
    }

    function a(o) {
        var s = {
            x: o.x,
            y: o.y,
            rotation: o.rotation
        };
        return BF(o) && (s.shape = O({}, o.shape)), s
    }
    var n = i(r);
    e.traverse(function(o) {
        if (aA(o) && o.anid) {
            var s = n[o.anid];
            if (s) {
                var l = a(o);
                o.attr(a(s)), xt(o, l, t, et(o).dataIndex)
            }
        }
    })
}

function gf(r, e) {
    return k(r, function(t) {
        var i = t[0];
        i = uh(i, e.x), i = fh(i, e.x + e.width);
        var a = t[1];
        return a = uh(a, e.y), a = fh(a, e.y + e.height), [i, a]
    })
}

function my(r, e) {
    var t = uh(r.x, e.x),
        i = fh(r.x + r.width, e.x + e.width),
        a = uh(r.y, e.y),
        n = fh(r.y + r.height, e.y + e.height);
    if (i >= t && n >= a) return {
        x: t,
        y: a,
        width: i - t,
        height: n - a
    }
}

function Wi(r, e, t) {
    var i = O({
            rectHover: !0
        }, e),
        a = i.style = {
            strokeNoScale: !0
        };
    if (t = t || {
            x: -1,
            y: -1,
            width: 2,
            height: 2
        }, r) return r.indexOf("image://") === 0 ? (a.image = r.slice(8), q(a, t), new Zt(i)) : Nn(r.replace("path://", ""), i, t, "center")
}

function yl(r, e, t, i, a) {
    for (var n = 0, o = a[a.length - 1]; n < a.length; n++) {
        var s = a[n];
        if (sA(r, e, t, i, s[0], s[1], o[0], o[1])) return !0;
        o = s
    }
}

function sA(r, e, t, i, a, n, o, s) {
    var l = t - r,
        u = i - e,
        f = o - a,
        p = s - n,
        c = cy(f, p, l, u);
    if (FF(c)) return !1;
    var h = r - a,
        v = e - n,
        d = cy(h, v, l, u) / c;
    if (d < 0 || d > 1) return !1;
    var m = cy(h, v, f, p) / c;
    return !(m < 0 || m > 1)
}

function cy(r, e, t, i) {
    return r * i - t * e
}

function FF(r) {
    return r <= 1e-6 && r >= -1e-6
}

function _i(r) {
    var e = r.itemTooltipOption,
        t = r.componentModel,
        i = r.itemName,
        a = F(e) ? {
            formatter: e
        } : e,
        n = t.mainType,
        o = t.componentIndex,
        s = {
            componentType: n,
            name: i,
            $vars: ["name"]
        };
    s[n + "Index"] = o;
    var l = r.formatterParamsExtra;
    l && w(ft(l), function(f) {
        $(s, f) || (s[f] = l[f], s.$vars.push(f))
    });
    var u = et(r.el);
    u.componentMainType = n, u.componentIndex = o, u.tooltipConfig = {
        name: i,
        option: q({
            content: i,
            encodeHTMLContent: !0,
            formatterParams: s
        }, a)
    }
}

function nA(r, e) {
    var t;
    r.isGroup && (t = e(r)), t || r.traverse(e)
}

function dr(r, e) {
    if (r)
        if (z(r))
            for (var t = 0; t < r.length; t++) nA(r[t], e);
        else nA(r, e)
}
$r("circle", je);
$r("ellipse", jo);
$r("sector", pe);
$r("ring", Ya);
$r("polygon", oe);
$r("polyline", ae);
$r("rect", ht);
$r("line", ee);
$r("bezierCurve", Za);
$r("arc", Qo);
var ch = {};

function cA(r, e) {
    for (var t = 0; t < Oe.length; t++) {
        var i = Oe[t],
            a = e[i],
            n = r.ensureState(i);
        n.style = n.style || {}, n.style.text = a
    }
    var o = r.currentStates.slice();
    r.clearStates(!0), r.setStyle({
        text: e.normal
    }), r.useStates(o, !0)
}

function gy(r, e, t) {
    var i = r.labelFetcher,
        a = r.labelDataIndex,
        n = r.labelDimIndex,
        o = e.normal,
        s;
    i && (s = i.getFormattedLabel(a, "normal", null, n, o && o.get("formatter"), t != null ? {
        interpolatedValue: t
    } : null)), s == null && (s = X(r.defaultText) ? r.defaultText(a, r, t) : r.defaultText);
    for (var l = {
            normal: s
        }, u = 0; u < Oe.length; u++) {
        var f = Oe[u],
            p = e[f];
        l[f] = ot(i ? i.getFormattedLabel(a, f, null, n, p && p.get("formatter")) : null, s)
    }
    return l
}

function Xt(r, e, t, i) {
    t = t || ch;
    for (var a = r instanceof dt, n = !1, o = 0; o < In.length; o++) {
        var s = e[In[o]];
        if (s && s.getShallow("show")) {
            n = !0;
            break
        }
    }
    var l = a ? r : r.getTextContent();
    if (n) {
        a || (l || (l = new dt, r.setTextContent(l)), r.stateProxy && (l.stateProxy = r.stateProxy));
        var u = gy(t, e),
            f = e.normal,
            p = !!f.getShallow("show"),
            c = zt(f, i && i.normal, t, !1, !a);
        c.text = u.normal, a || r.setTextConfig(yf(f, t, !1));
        for (var o = 0; o < Oe.length; o++) {
            var h = Oe[o],
                s = e[h];
            if (s) {
                var v = l.ensureState(h),
                    d = !!ot(s.getShallow("show"), p);
                if (d !== p && (v.ignore = !d), v.style = zt(s, i && i[h], t, !0, !a), v.style.text = u[h], !a) {
                    var m = r.ensureState(h);
                    m.textConfig = yf(s, t, !0)
                }
            }
        }
        l.silent = !!f.getShallow("silent"), l.style.x != null && (c.x = l.style.x), l.style.y != null && (c.y = l.style.y), l.ignore = !p, l.useStyle(c), l.dirty(), t.enableTextSetter && (Ja(l).setLabelText = function(g) {
            var y = gy(t, e, g);
            cA(l, y)
        })
    } else l && (l.ignore = !0);
    r.dirty()
}

function Ft(r, e) {
    e = e || "label";
    for (var t = {
            normal: r.getModel(e)
        }, i = 0; i < Oe.length; i++) {
        var a = Oe[i];
        t[a] = r.getModel([a, e])
    }
    return t
}

function zt(r, e, t, i, a) {
    var n = {};
    return GF(n, r, t, i, a), e && O(n, e), n
}

function yf(r, e, t) {
    e = e || {};
    var i = {},
        a, n = r.getShallow("rotate"),
        o = ot(r.getShallow("distance"), t ? null : 5),
        s = r.getShallow("offset");
    return a = r.getShallow("position") || (t ? null : "inside"), a === "outside" && (a = e.defaultOutsidePosition || "top"), a != null && (i.position = a), s != null && (i.offset = s), n != null && (n *= Math.PI / 180, i.rotation = n), o != null && (i.distance = o), i.outsideFill = r.get("color") === "inherit" ? e.inheritColor || null : "auto", i
}

function GF(r, e, t, i, a) {
    t = t || ch;
    var n = e.ecModel,
        o = n && n.option.textStyle,
        s = HF(e),
        l;
    if (s) {
        l = {};
        for (var u in s)
            if (s.hasOwnProperty(u)) {
                var f = e.getModel(["rich", u]);
                pA(l[u] = {}, f, o, t, i, a, !1, !0)
            }
    }
    l && (r.rich = l);
    var p = e.get("overflow");
    p && (r.overflow = p);
    var c = e.get("minMargin");
    c != null && (r.margin = c), pA(r, e, o, t, i, a, !0, !1)
}

function HF(r) {
    for (var e; r && r !== r.ecModel;) {
        var t = (r.option || ch).rich;
        if (t) {
            e = e || {};
            for (var i = ft(t), a = 0; a < i.length; a++) {
                var n = i[a];
                e[n] = 1
            }
        }
        r = r.parentModel
    }
    return e
}
var lA = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "textShadowColor", "textShadowBlur", "textShadowOffsetX", "textShadowOffsetY"],
    uA = ["align", "lineHeight", "width", "height", "tag", "verticalAlign", "ellipsis"],
    fA = ["padding", "borderWidth", "borderRadius", "borderDashOffset", "backgroundColor", "borderColor", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"];

function pA(r, e, t, i, a, n, o, s) {
    t = !a && t || ch;
    var l = i && i.inheritColor,
        u = e.getShallow("color"),
        f = e.getShallow("textBorderColor"),
        p = ot(e.getShallow("opacity"), t.opacity);
    (u === "inherit" || u === "auto") && (l ? u = l : u = null), (f === "inherit" || f === "auto") && (l ? f = l : f = null), n || (u = u || t.color, f = f || t.textBorderColor), u != null && (r.fill = u), f != null && (r.stroke = f);
    var c = ot(e.getShallow("textBorderWidth"), t.textBorderWidth);
    c != null && (r.lineWidth = c);
    var h = ot(e.getShallow("textBorderType"), t.textBorderType);
    h != null && (r.lineDash = h);
    var v = ot(e.getShallow("textBorderDashOffset"), t.textBorderDashOffset);
    v != null && (r.lineDashOffset = v), !a && p == null && !s && (p = i && i.defaultOpacity), p != null && (r.opacity = p), !a && !n && r.fill == null && i.inheritColor && (r.fill = i.inheritColor);
    for (var d = 0; d < lA.length; d++) {
        var m = lA[d],
            g = ot(e.getShallow(m), t[m]);
        g != null && (r[m] = g)
    }
    for (var d = 0; d < uA.length; d++) {
        var m = uA[d],
            g = e.getShallow(m);
        g != null && (r[m] = g)
    }
    if (r.verticalAlign == null) {
        var y = e.getShallow("baseline");
        y != null && (r.verticalAlign = y)
    }
    if (!o || !i.disableBox) {
        for (var d = 0; d < fA.length; d++) {
            var m = fA[d],
                g = e.getShallow(m);
            g != null && (r[m] = g)
        }
        var x = e.getShallow("borderType");
        x != null && (r.borderDash = x), (r.backgroundColor === "auto" || r.backgroundColor === "inherit") && l && (r.backgroundColor = l), (r.borderColor === "auto" || r.borderColor === "inherit") && l && (r.borderColor = l)
    }
}

function xl(r, e) {
    var t = e && e.getModel("textStyle");
    return Ie([r.fontStyle || t && t.getShallow("fontStyle") || "", r.fontWeight || t && t.getShallow("fontWeight") || "", (r.fontSize || t && t.getShallow("fontSize") || 12) + "px", r.fontFamily || t && t.getShallow("fontFamily") || "sans-serif"].join(" "))
}
var Ja = lt();

function hh(r, e, t, i) {
    if (r) {
        var a = Ja(r);
        a.prevValue = a.value, a.value = t;
        var n = e.normal;
        a.valueAnimation = n.get("valueAnimation"), a.valueAnimation && (a.precision = n.get("precision"), a.defaultInterpolatedText = i, a.statesModels = e)
    }
}

function vh(r, e, t, i, a) {
    var n = Ja(r);
    if (!n.valueAnimation || n.prevValue === n.value) return;
    var o = n.defaultInterpolatedText,
        s = ot(n.interpolatedValue, n.prevValue),
        l = n.value;

    function u(f) {
        var p = Vc(t, n.precision, s, l, f);
        n.interpolatedValue = f === 1 ? null : p;
        var c = gy({
            labelDataIndex: e,
            labelFetcher: a,
            defaultText: o ? o(p) : p + ""
        }, n.statesModels, p);
        cA(r, c)
    }
    r.percent = 0, (n.prevValue == null ? Ot : xt)(r, {
        percent: 1
    }, i, e, null, u)
}
var YF = ["textStyle", "color"],
    yy = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "padding", "lineHeight", "rich", "width", "height", "overflow"],
    xy = new dt,
    ZF = function() {
        function r() {}
        return r.prototype.getTextColor = function(e) {
            var t = this.ecModel;
            return this.getShallow("color") || (!e && t ? t.get(YF) : null)
        }, r.prototype.getFont = function() {
            return xl({
                fontStyle: this.getShallow("fontStyle"),
                fontWeight: this.getShallow("fontWeight"),
                fontSize: this.getShallow("fontSize"),
                fontFamily: this.getShallow("fontFamily")
            }, this.ecModel)
        }, r.prototype.getTextRect = function(e) {
            for (var t = {
                    text: e,
                    verticalAlign: this.getShallow("verticalAlign") || this.getShallow("baseline")
                }, i = 0; i < yy.length; i++) t[yy[i]] = this.getShallow(yy[i]);
            return xy.useStyle(t), xy.update(), xy.getBoundingRect()
        }, r
    }(),
    hA = ZF;
var _y = [
        ["lineWidth", "width"],
        ["stroke", "color"],
        ["opacity"],
        ["shadowBlur"],
        ["shadowOffsetX"],
        ["shadowOffsetY"],
        ["shadowColor"],
        ["lineDash", "type"],
        ["lineDashOffset", "dashOffset"],
        ["lineCap", "cap"],
        ["lineJoin", "join"],
        ["miterLimit"]
    ],
    XF = Nr(_y),
    vA = function() {
        function r() {}
        return r.prototype.getLineStyle = function(e) {
            return XF(this, e)
        }, r
    }();
var Sy = [
        ["fill", "color"],
        ["stroke", "borderColor"],
        ["lineWidth", "borderWidth"],
        ["opacity"],
        ["shadowBlur"],
        ["shadowOffsetX"],
        ["shadowOffsetY"],
        ["shadowColor"],
        ["lineDash", "borderType"],
        ["lineDashOffset", "borderDashOffset"],
        ["lineCap", "borderCap"],
        ["lineJoin", "borderJoin"],
        ["miterLimit", "borderMiterLimit"]
    ],
    qF = Nr(Sy),
    dA = function() {
        function r() {}
        return r.prototype.getItemStyle = function(e, t) {
            return qF(this, e, t)
        }, r
    }();
var is = function() {
    function r(e, t, i) {
        this.parentModel = t, this.ecModel = i, this.option = e
    }
    return r.prototype.init = function(e, t, i) {
        for (var a = [], n = 3; n < arguments.length; n++) a[n - 3] = arguments[n]
    }, r.prototype.mergeOption = function(e, t) {
        nt(this.option, e, !0)
    }, r.prototype.get = function(e, t) {
        return e == null ? this.option : this._doGet(this.parsePath(e), !t && this.parentModel)
    }, r.prototype.getShallow = function(e, t) {
        var i = this.option,
            a = i == null ? i : i[e];
        if (a == null && !t) {
            var n = this.parentModel;
            n && (a = n.getShallow(e))
        }
        return a
    }, r.prototype.getModel = function(e, t) {
        var i = e != null,
            a = i ? this.parsePath(e) : null,
            n = i ? this._doGet(a) : this.option;
        return t = t || this.parentModel && this.parentModel.getModel(this.resolveParentPath(a)), new r(n, t, this.ecModel)
    }, r.prototype.isEmpty = function() {
        return this.option == null
    }, r.prototype.restoreData = function() {}, r.prototype.clone = function() {
        var e = this.constructor;
        return new e(Q(this.option))
    }, r.prototype.parsePath = function(e) {
        return typeof e == "string" ? e.split(".") : e
    }, r.prototype.resolveParentPath = function(e) {
        return e
    }, r.prototype.isAnimationEnabled = function() {
        if (!Ct.node && this.option) {
            if (this.option.animation != null) return !!this.option.animation;
            if (this.parentModel) return this.parentModel.isAnimationEnabled()
        }
    }, r.prototype._doGet = function(e, t) {
        var i = this.option;
        if (!e) return i;
        for (var a = 0; a < e.length && !(e[a] && (i = i && typeof i == "object" ? i[e[a]] : null, i == null)); a++);
        return i == null && t && (i = t._doGet(this.resolveParentPath(e), t.parentModel)), i
    }, r
}();
ol(is);
DT(is);
Bt(is, vA);
Bt(is, dA);
Bt(is, MT);
Bt(is, hA);
var Dt = is;
var KF = Math.round(Math.random() * 10);

function Si(r) {
    return [r || "", KF++].join("_")
}

function mA(r) {
    var e = {};
    r.registerSubTypeDefaulter = function(t, i) {
        var a = Rr(t);
        e[a.main] = i
    }, r.determineSubType = function(t, i) {
        var a = i.type;
        if (!a) {
            var n = Rr(t).main;
            r.hasSubTypes(t) && e[n] && (a = e[n](i))
        }
        return a
    }
}

function gA(r, e) {
    r.topologicalTravel = function(n, o, s, l) {
        if (!n.length) return;
        var u = t(o),
            f = u.graph,
            p = u.noEntryList,
            c = {};
        for (w(n, function(y) {
                c[y] = !0
            }); p.length;) {
            var h = p.pop(),
                v = f[h],
                d = !!c[h];
            d && (s.call(l, h, v.originalDeps.slice()), delete c[h]), w(v.successor, d ? g : m)
        }
        w(c, function() {
            var y = "";
            throw new Error(y)
        });

        function m(y) {
            f[y].entryCount--, f[y].entryCount === 0 && p.push(y)
        }

        function g(y) {
            c[y] = !0, m(y)
        }
    };

    function t(n) {
        var o = {},
            s = [];
        return w(n, function(l) {
            var u = i(o, l),
                f = u.originalDeps = e(l),
                p = a(f, n);
            u.entryCount = p.length, u.entryCount === 0 && s.push(l), w(p, function(c) {
                at(u.predecessor, c) < 0 && u.predecessor.push(c);
                var h = i(o, c);
                at(h.successor, c) < 0 && h.successor.push(l)
            })
        }), {
            graph: o,
            noEntryList: s
        }
    }

    function i(n, o) {
        return n[o] || (n[o] = {
            predecessor: [],
            successor: []
        }), n[o]
    }

    function a(n, o) {
        var s = [];
        return w(n, function(l) {
            at(o, l) >= 0 && s.push(l)
        }), s
    }
}

function nr(r, e) {
    return nt(nt({}, r, !0), e, !0)
}
var yA = {
    time: {
        month: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
        monthAbbr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
        dayOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
        dayOfWeekAbbr: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
    },
    legend: {
        selector: {
            all: "All",
            inverse: "Inv"
        }
    },
    toolbox: {
        brush: {
            title: {
                rect: "Box Select",
                polygon: "Lasso Select",
                lineX: "Horizontally Select",
                lineY: "Vertically Select",
                keep: "Keep Selections",
                clear: "Clear Selections"
            }
        },
        dataView: {
            title: "Data View",
            lang: ["Data View", "Close", "Refresh"]
        },
        dataZoom: {
            title: {
                zoom: "Zoom",
                back: "Zoom Reset"
            }
        },
        magicType: {
            title: {
                line: "Switch to Line Chart",
                bar: "Switch to Bar Chart",
                stack: "Stack",
                tiled: "Tile"
            }
        },
        restore: {
            title: "Restore"
        },
        saveAsImage: {
            title: "Save as Image",
            lang: ["Right Click to Save Image"]
        }
    },
    series: {
        typeNames: {
            pie: "Pie chart",
            bar: "Bar chart",
            line: "Line chart",
            scatter: "Scatter plot",
            effectScatter: "Ripple scatter plot",
            radar: "Radar chart",
            tree: "Tree",
            treemap: "Treemap",
            boxplot: "Boxplot",
            candlestick: "Candlestick",
            k: "K line chart",
            heatmap: "Heat map",
            map: "Map",
            parallel: "Parallel coordinate map",
            lines: "Line graph",
            graph: "Relationship graph",
            sankey: "Sankey diagram",
            funnel: "Funnel chart",
            gauge: "Gauge",
            pictorialBar: "Pictorial bar",
            themeRiver: "Theme River Map",
            sunburst: "Sunburst",
            custom: "Custom chart",
            chart: "Chart"
        }
    },
    aria: {
        general: {
            withTitle: 'This is a chart about "{title}"',
            withoutTitle: "This is a chart"
        },
        series: {
            single: {
                prefix: "",
                withName: " with type {seriesType} named {seriesName}.",
                withoutName: " with type {seriesType}."
            },
            multiple: {
                prefix: ". It consists of {seriesCount} series count.",
                withName: " The {seriesId} series is a {seriesType} representing {seriesName}.",
                withoutName: " The {seriesId} series is a {seriesType}.",
                separator: {
                    middle: "",
                    end: ""
                }
            }
        },
        data: {
            allData: "The data is as follows: ",
            partialData: "The first {displayCnt} items are: ",
            withName: "the data for {name} is {value}",
            withoutName: "{value}",
            separator: {
                middle: ", ",
                end: ". "
            }
        }
    }
};
var xA = {
    time: {
        month: ["\u4E00\u6708", "\u4E8C\u6708", "\u4E09\u6708", "\u56DB\u6708", "\u4E94\u6708", "\u516D\u6708", "\u4E03\u6708", "\u516B\u6708", "\u4E5D\u6708", "\u5341\u6708", "\u5341\u4E00\u6708", "\u5341\u4E8C\u6708"],
        monthAbbr: ["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"],
        dayOfWeek: ["\u661F\u671F\u65E5", "\u661F\u671F\u4E00", "\u661F\u671F\u4E8C", "\u661F\u671F\u4E09", "\u661F\u671F\u56DB", "\u661F\u671F\u4E94", "\u661F\u671F\u516D"],
        dayOfWeekAbbr: ["\u65E5", "\u4E00", "\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D"]
    },
    legend: {
        selector: {
            all: "\u5168\u9009",
            inverse: "\u53CD\u9009"
        }
    },
    toolbox: {
        brush: {
            title: {
                rect: "\u77E9\u5F62\u9009\u62E9",
                polygon: "\u5708\u9009",
                lineX: "\u6A2A\u5411\u9009\u62E9",
                lineY: "\u7EB5\u5411\u9009\u62E9",
                keep: "\u4FDD\u6301\u9009\u62E9",
                clear: "\u6E05\u9664\u9009\u62E9"
            }
        },
        dataView: {
            title: "\u6570\u636E\u89C6\u56FE",
            lang: ["\u6570\u636E\u89C6\u56FE", "\u5173\u95ED", "\u5237\u65B0"]
        },
        dataZoom: {
            title: {
                zoom: "\u533A\u57DF\u7F29\u653E",
                back: "\u533A\u57DF\u7F29\u653E\u8FD8\u539F"
            }
        },
        magicType: {
            title: {
                line: "\u5207\u6362\u4E3A\u6298\u7EBF\u56FE",
                bar: "\u5207\u6362\u4E3A\u67F1\u72B6\u56FE",
                stack: "\u5207\u6362\u4E3A\u5806\u53E0",
                tiled: "\u5207\u6362\u4E3A\u5E73\u94FA"
            }
        },
        restore: {
            title: "\u8FD8\u539F"
        },
        saveAsImage: {
            title: "\u4FDD\u5B58\u4E3A\u56FE\u7247",
            lang: ["\u53F3\u952E\u53E6\u5B58\u4E3A\u56FE\u7247"]
        }
    },
    series: {
        typeNames: {
            pie: "\u997C\u56FE",
            bar: "\u67F1\u72B6\u56FE",
            line: "\u6298\u7EBF\u56FE",
            scatter: "\u6563\u70B9\u56FE",
            effectScatter: "\u6D9F\u6F2A\u6563\u70B9\u56FE",
            radar: "\u96F7\u8FBE\u56FE",
            tree: "\u6811\u56FE",
            treemap: "\u77E9\u5F62\u6811\u56FE",
            boxplot: "\u7BB1\u578B\u56FE",
            candlestick: "K\u7EBF\u56FE",
            k: "K\u7EBF\u56FE",
            heatmap: "\u70ED\u529B\u56FE",
            map: "\u5730\u56FE",
            parallel: "\u5E73\u884C\u5750\u6807\u56FE",
            lines: "\u7EBF\u56FE",
            graph: "\u5173\u7CFB\u56FE",
            sankey: "\u6851\u57FA\u56FE",
            funnel: "\u6F0F\u6597\u56FE",
            gauge: "\u4EEA\u8868\u76D8\u56FE",
            pictorialBar: "\u8C61\u5F62\u67F1\u56FE",
            themeRiver: "\u4E3B\u9898\u6CB3\u6D41\u56FE",
            sunburst: "\u65ED\u65E5\u56FE",
            custom: "\u81EA\u5B9A\u4E49\u56FE\u8868",
            chart: "\u56FE\u8868"
        }
    },
    aria: {
        general: {
            withTitle: "\u8FD9\u662F\u4E00\u4E2A\u5173\u4E8E\u201C{title}\u201D\u7684\u56FE\u8868\u3002",
            withoutTitle: "\u8FD9\u662F\u4E00\u4E2A\u56FE\u8868\uFF0C"
        },
        series: {
            single: {
                prefix: "",
                withName: "\u56FE\u8868\u7C7B\u578B\u662F{seriesType}\uFF0C\u8868\u793A{seriesName}\u3002",
                withoutName: "\u56FE\u8868\u7C7B\u578B\u662F{seriesType}\u3002"
            },
            multiple: {
                prefix: "\u5B83\u7531{seriesCount}\u4E2A\u56FE\u8868\u7CFB\u5217\u7EC4\u6210\u3002",
                withName: "\u7B2C{seriesId}\u4E2A\u7CFB\u5217\u662F\u4E00\u4E2A\u8868\u793A{seriesName}\u7684{seriesType}\uFF0C",
                withoutName: "\u7B2C{seriesId}\u4E2A\u7CFB\u5217\u662F\u4E00\u4E2A{seriesType}\uFF0C",
                separator: {
                    middle: "\uFF1B",
                    end: "\u3002"
                }
            }
        },
        data: {
            allData: "\u5176\u6570\u636E\u662F\u2014\u2014",
            partialData: "\u5176\u4E2D\uFF0C\u524D{displayCnt}\u9879\u662F\u2014\u2014",
            withName: "{name}\u7684\u6570\u636E\u662F{value}",
            withoutName: "{value}",
            separator: {
                middle: "\uFF0C",
                end: ""
            }
        }
    }
};
var mh = "ZH",
    wy = "EN",
    _l = wy,
    dh = {},
    Ty = {},
    gh = Ct.domSupported ? function() {
        var r = (document.documentElement.lang || navigator.language || navigator.browserLanguage || _l).toUpperCase();
        return r.indexOf(mh) > -1 ? mh : _l
    }() : _l;

function Cy(r, e) {
    r = r.toUpperCase(), Ty[r] = new Dt(e), dh[r] = e
}

function _A(r) {
    if (F(r)) {
        var e = dh[r.toUpperCase()] || {};
        return r === mh || r === wy ? Q(e) : nt(Q(e), Q(dh[_l]), !1)
    } else return nt(Q(r), Q(dh[_l]), !1)
}

function xf(r) {
    return Ty[r]
}

function SA() {
    return Ty[_l]
}
Cy(wy, yA);
Cy(mh, xA);
var xh = 1e3,
    _h = xh * 60,
    bl = _h * 60,
    ei = bl * 24,
    Dy = ei * 365,
    _f = {
        year: "{yyyy}",
        month: "{MMM}",
        day: "{d}",
        hour: "{HH}:{mm}",
        minute: "{HH}:{mm}",
        second: "{HH}:{mm}:{ss}",
        millisecond: "{HH}:{mm}:{ss} {SSS}",
        none: "{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}"
    },
    yh = "{yyyy}-{MM}-{dd}",
    My = {
        year: "{yyyy}",
        month: "{yyyy}-{MM}",
        day: yh,
        hour: yh + " " + _f.hour,
        minute: yh + " " + _f.minute,
        second: yh + " " + _f.second,
        millisecond: _f.none
    },
    Ay = ["year", "month", "day", "hour", "minute", "second", "millisecond"],
    Ly = ["year", "half-year", "quarter", "month", "week", "half-week", "day", "half-day", "quarter-day", "hour", "minute", "second", "millisecond"];

function or(r, e) {
    return r += "", "0000".substr(0, e - r.length) + r
}

function ns(r) {
    switch (r) {
        case "half-year":
        case "quarter":
            return "month";
        case "week":
        case "half-week":
            return "day";
        case "half-day":
        case "quarter-day":
            return "hour";
        default:
            return r
    }
}

function bA(r) {
    return r === ns(r)
}

function wA(r) {
    switch (r) {
        case "year":
        case "month":
            return "day";
        case "millisecond":
            return "millisecond";
        default:
            return "second"
    }
}

function Qa(r, e, t, i) {
    var a = Ne(r),
        n = a[Sh(t)](),
        o = a[as(t)]() + 1,
        s = Math.floor((o - 1) / 3) + 1,
        l = a[Sf(t)](),
        u = a["get" + (t ? "UTC" : "") + "Day"](),
        f = a[Sl(t)](),
        p = (f - 1) % 12 + 1,
        c = a[bf(t)](),
        h = a[wf(t)](),
        v = a[Tf(t)](),
        d = f >= 12 ? "pm" : "am",
        m = d.toUpperCase(),
        g = i instanceof Dt ? i : xf(i || gh) || SA(),
        y = g.getModel("time"),
        x = y.get("month"),
        _ = y.get("monthAbbr"),
        S = y.get("dayOfWeek"),
        b = y.get("dayOfWeekAbbr");
    return (e || "").replace(/{a}/g, d + "").replace(/{A}/g, m + "").replace(/{yyyy}/g, n + "").replace(/{yy}/g, or(n % 100 + "", 2)).replace(/{Q}/g, s + "").replace(/{MMMM}/g, x[o - 1]).replace(/{MMM}/g, _[o - 1]).replace(/{MM}/g, or(o, 2)).replace(/{M}/g, o + "").replace(/{dd}/g, or(l, 2)).replace(/{d}/g, l + "").replace(/{eeee}/g, S[u]).replace(/{ee}/g, b[u]).replace(/{e}/g, u + "").replace(/{HH}/g, or(f, 2)).replace(/{H}/g, f + "").replace(/{hh}/g, or(p + "", 2)).replace(/{h}/g, p + "").replace(/{mm}/g, or(c, 2)).replace(/{m}/g, c + "").replace(/{ss}/g, or(h, 2)).replace(/{s}/g, h + "").replace(/{SSS}/g, or(v, 3)).replace(/{S}/g, v + "")
}

function TA(r, e, t, i, a) {
    var n = null;
    if (F(t)) n = t;
    else if (X(t)) n = t(r.value, e, {
        level: r.level
    });
    else {
        var o = O({}, _f);
        if (r.level > 0)
            for (var s = 0; s < Ay.length; ++s) o[Ay[s]] = "{primary|" + o[Ay[s]] + "}";
        var l = t ? t.inherit === !1 ? t : q(t, o) : o,
            u = CA(r.value, a);
        if (l[u]) n = l[u];
        else if (l.inherit) {
            for (var f = Ly.indexOf(u), s = f - 1; s >= 0; --s)
                if (l[u]) {
                    n = l[u];
                    break
                }
            n = n || o.none
        }
        if (z(n)) {
            var p = r.level == null ? 0 : r.level >= 0 ? r.level : n.length + r.level;
            p = Math.min(p, n.length - 1), n = n[p]
        }
    }
    return Qa(new Date(r.value), n, a, i)
}

function CA(r, e) {
    var t = Ne(r),
        i = t[as(e)]() + 1,
        a = t[Sf(e)](),
        n = t[Sl(e)](),
        o = t[bf(e)](),
        s = t[wf(e)](),
        l = t[Tf(e)](),
        u = l === 0,
        f = u && s === 0,
        p = f && o === 0,
        c = p && n === 0,
        h = c && a === 1,
        v = h && i === 1;
    return v ? "year" : h ? "month" : c ? "day" : p ? "hour" : f ? "minute" : u ? "second" : "millisecond"
}

function Iy(r, e, t) {
    var i = vt(r) ? Ne(r) : r;
    switch (e = e || CA(r, t), e) {
        case "year":
            return i[Sh(t)]();
        case "half-year":
            return i[as(t)]() >= 6 ? 1 : 0;
        case "quarter":
            return Math.floor((i[as(t)]() + 1) / 4);
        case "month":
            return i[as(t)]();
        case "day":
            return i[Sf(t)]();
        case "half-day":
            return i[Sl(t)]() / 24;
        case "hour":
            return i[Sl(t)]();
        case "minute":
            return i[bf(t)]();
        case "second":
            return i[wf(t)]();
        case "millisecond":
            return i[Tf(t)]()
    }
}

function Sh(r) {
    return r ? "getUTCFullYear" : "getFullYear"
}

function as(r) {
    return r ? "getUTCMonth" : "getMonth"
}

function Sf(r) {
    return r ? "getUTCDate" : "getDate"
}

function Sl(r) {
    return r ? "getUTCHours" : "getHours"
}

function bf(r) {
    return r ? "getUTCMinutes" : "getMinutes"
}

function wf(r) {
    return r ? "getUTCSeconds" : "getSeconds"
}

function Tf(r) {
    return r ? "getUTCMilliseconds" : "getMilliseconds"
}

function AA(r) {
    return r ? "setUTCFullYear" : "setFullYear"
}

function Ey(r) {
    return r ? "setUTCMonth" : "setMonth"
}

function Py(r) {
    return r ? "setUTCDate" : "setDate"
}

function Ry(r) {
    return r ? "setUTCHours" : "setHours"
}

function Ny(r) {
    return r ? "setUTCMinutes" : "setMinutes"
}

function Oy(r) {
    return r ? "setUTCSeconds" : "setSeconds"
}

function zy(r) {
    return r ? "setUTCMilliseconds" : "setMilliseconds"
}

function ky(r, e, t, i, a, n, o, s) {
    var l = new dt({
        style: {
            text: r,
            font: e,
            align: t,
            verticalAlign: i,
            padding: a,
            rich: n,
            overflow: o ? "truncate" : null,
            lineHeight: s
        }
    });
    return l.getBoundingRect()
}

function Cf(r) {
    if (!Uo(r)) return F(r) ? r : "-";
    var e = (r + "").split(".");
    return e[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, "$1,") + (e.length > 1 ? "." + e[1] : "")
}

function wl(r, e) {
    return r = (r || "").toLowerCase().replace(/-(.)/g, function(t, i) {
        return i.toUpperCase()
    }), e && r && (r = r.charAt(0).toUpperCase() + r.slice(1)), r
}
var ri = mo;

function bh(r, e, t) {
    var i = "{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}";

    function a(f) {
        return f && Ie(f) ? f : "-"
    }

    function n(f) {
        return !!(f != null && !isNaN(f) && isFinite(f))
    }
    var o = e === "time",
        s = r instanceof Date;
    if (o || s) {
        var l = o ? Ne(r) : r;
        if (isNaN(+l)) {
            if (s) return "-"
        } else return Qa(l, i, t)
    }
    if (e === "ordinal") return Vs(r) ? a(r) : vt(r) && n(r) ? r + "" : "-";
    var u = Er(r);
    return n(u) ? Cf(u) : Vs(r) ? a(r) : typeof r == "boolean" ? r + "" : "-"
}
var DA = ["a", "b", "c", "d", "e", "f", "g"],
    Uy = function(r, e) {
        return "{" + r + (e ? ? "") + "}"
    };

function Tl(r, e, t) {
    z(e) || (e = [e]);
    var i = e.length;
    if (!i) return "";
    for (var a = e[0].$vars || [], n = 0; n < a.length; n++) {
        var o = DA[n];
        r = r.replace(Uy(o), Uy(o, 0))
    }
    for (var s = 0; s < i; s++)
        for (var l = 0; l < a.length; l++) {
            var u = e[s][a[l]];
            r = r.replace(Uy(DA[l], s), t ? xe(u) : u)
        }
    return r
}

function MA(r, e, t) {
    return w(e, function(i, a) {
        r = r.replace("{" + a + "}", t ? xe(i) : i)
    }), r
}

function wh(r, e) {
    var t = F(r) ? {
            color: r,
            extraCssText: e
        } : r || {},
        i = t.color,
        a = t.type;
    e = t.extraCssText;
    var n = t.renderMode || "html";
    if (!i) return "";
    if (n === "html") return a === "subItem" ? '<span style="display:inline-block;vertical-align:middle;margin-right:8px;margin-left:3px;border-radius:4px;width:4px;height:4px;background-color:' + xe(i) + ";" + (e || "") + '"></span>' : '<span style="display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:' + xe(i) + ";" + (e || "") + '"></span>';
    var o = t.markerId || "markerX";
    return {
        renderMode: n,
        content: "{" + o + "|}  ",
        style: a === "subItem" ? {
            width: 4,
            height: 4,
            borderRadius: 2,
            backgroundColor: i
        } : {
            width: 10,
            height: 10,
            borderRadius: 5,
            backgroundColor: i
        }
    }
}

function LA(r, e, t) {
    (r === "week" || r === "month" || r === "quarter" || r === "half-year" || r === "year") && (r = `MM-dd
yyyy`);
    var i = Ne(e),
        a = t ? "getUTC" : "get",
        n = i[a + "FullYear"](),
        o = i[a + "Month"]() + 1,
        s = i[a + "Date"](),
        l = i[a + "Hours"](),
        u = i[a + "Minutes"](),
        f = i[a + "Seconds"](),
        p = i[a + "Milliseconds"]();
    return r = r.replace("MM", or(o, 2)).replace("M", o).replace("yyyy", n).replace("yy", or(n % 100 + "", 2)).replace("dd", or(s, 2)).replace("d", s).replace("hh", or(l, 2)).replace("h", l).replace("mm", or(u, 2)).replace("m", u).replace("ss", or(f, 2)).replace("s", f).replace("SSS", or(p, 3)), r
}

function IA(r) {
    return r && r.charAt(0).toUpperCase() + r.substr(1)
}

function Yi(r, e) {
    return e = e || "transparent", F(r) ? r : j(r) && r.colorStops && (r.colorStops[0] || {}).color || e
}

function os(r, e) {
    if (e === "_blank" || e === "blank") {
        var t = window.open();
        t.opener = null, t.location.href = r
    } else window.open(r, e)
}
var Th = w,
    Vy = ["left", "right", "top", "bottom", "width", "height"],
    ss = [
        ["width", "left", "right"],
        ["height", "top", "bottom"]
    ];

function By(r, e, t, i, a) {
    var n = 0,
        o = 0;
    i == null && (i = 1 / 0), a == null && (a = 1 / 0);
    var s = 0;
    e.eachChild(function(l, u) {
        var f = l.getBoundingRect(),
            p = e.childAt(u + 1),
            c = p && p.getBoundingRect(),
            h, v;
        if (r === "horizontal") {
            var d = f.width + (c ? -c.x + f.x : 0);
            h = n + d, h > i || l.newline ? (n = 0, h = d, o += s + t, s = f.height) : s = Math.max(s, f.height)
        } else {
            var m = f.height + (c ? -c.y + f.y : 0);
            v = o + m, v > a || l.newline ? (n += s + t, o = 0, v = m, s = f.width) : s = Math.max(s, f.width)
        }
        l.newline || (l.x = n, l.y = o, l.markRedraw(), r === "horizontal" ? n = h + t : o = v + t)
    })
}
var Zi = By,
    eet = rt(By, "vertical"),
    ret = rt(By, "horizontal");

function EA(r, e, t) {
    var i = e.width,
        a = e.height,
        n = W(r.left, i),
        o = W(r.top, a),
        s = W(r.right, i),
        l = W(r.bottom, a);
    return (isNaN(n) || isNaN(parseFloat(r.left))) && (n = 0), (isNaN(s) || isNaN(parseFloat(r.right))) && (s = i), (isNaN(o) || isNaN(parseFloat(r.top))) && (o = 0), (isNaN(l) || isNaN(parseFloat(r.bottom))) && (l = a), t = ri(t || 0), {
        width: Math.max(s - n - t[1] - t[3], 0),
        height: Math.max(l - o - t[0] - t[2], 0)
    }
}

function Ut(r, e, t) {
    t = ri(t || 0);
    var i = e.width,
        a = e.height,
        n = W(r.left, i),
        o = W(r.top, a),
        s = W(r.right, i),
        l = W(r.bottom, a),
        u = W(r.width, i),
        f = W(r.height, a),
        p = t[2] + t[0],
        c = t[1] + t[3],
        h = r.aspect;
    switch (isNaN(u) && (u = i - s - c - n), isNaN(f) && (f = a - l - p - o), h != null && (isNaN(u) && isNaN(f) && (h > i / a ? u = i * .8 : f = a * .8), isNaN(u) && (u = h * f), isNaN(f) && (f = u / h)), isNaN(n) && (n = i - s - u - c), isNaN(o) && (o = a - l - f - p), r.left || r.right) {
        case "center":
            n = i / 2 - u / 2 - t[3];
            break;
        case "right":
            n = i - u - c;
            break
    }
    switch (r.top || r.bottom) {
        case "middle":
        case "center":
            o = a / 2 - f / 2 - t[0];
            break;
        case "bottom":
            o = a - f - p;
            break
    }
    n = n || 0, o = o || 0, isNaN(u) && (u = i - c - n - (s || 0)), isNaN(f) && (f = a - p - o - (l || 0));
    var v = new it(n + t[3], o + t[0], u, f);
    return v.margin = t, v
}

function On(r, e, t, i, a, n) {
    var o = !a || !a.hv || a.hv[0],
        s = !a || !a.hv || a.hv[1],
        l = a && a.boundingMode || "all";
    if (n = n || r, n.x = r.x, n.y = r.y, !o && !s) return !1;
    var u;
    if (l === "raw") u = r.type === "group" ? new it(0, 0, +e.width || 0, +e.height || 0) : r.getBoundingRect();
    else if (u = r.getBoundingRect(), r.needLocalTransform()) {
        var f = r.getLocalTransform();
        u = u.clone(), u.applyTransform(f)
    }
    var p = Ut(q({
            width: u.width,
            height: u.height
        }, e), t, i),
        c = o ? p.x - u.x : 0,
        h = s ? p.y - u.y : 0;
    return l === "raw" ? (n.x = c, n.y = h) : (n.x += c, n.y += h), n === r && r.markRedraw(), !0
}

function PA(r, e) {
    return r[ss[e][0]] != null || r[ss[e][1]] != null && r[ss[e][2]] != null
}

function zn(r) {
    var e = r.layoutMode || r.constructor.layoutMode;
    return j(e) ? e : e ? {
        type: e
    } : null
}

function Ur(r, e, t) {
    var i = t && t.ignoreSize;
    !z(i) && (i = [i, i]);
    var a = o(ss[0], 0),
        n = o(ss[1], 1);
    u(ss[0], r, a), u(ss[1], r, n);

    function o(f, p) {
        var c = {},
            h = 0,
            v = {},
            d = 0,
            m = 2;
        if (Th(f, function(x) {
                v[x] = r[x]
            }), Th(f, function(x) {
                s(e, x) && (c[x] = v[x] = e[x]), l(c, x) && h++, l(v, x) && d++
            }), i[p]) return l(e, f[1]) ? v[f[2]] = null : l(e, f[2]) && (v[f[1]] = null), v;
        if (d === m || !h) return v;
        if (h >= m) return c;
        for (var g = 0; g < f.length; g++) {
            var y = f[g];
            if (!s(c, y) && s(r, y)) {
                c[y] = r[y];
                break
            }
        }
        return c
    }

    function s(f, p) {
        return f.hasOwnProperty(p)
    }

    function l(f, p) {
        return f[p] != null && f[p] !== "auto"
    }

    function u(f, p, c) {
        Th(f, function(h) {
            p[h] = c[h]
        })
    }
}

function bi(r) {
    return Fy({}, r)
}

function Fy(r, e) {
    return e && r && Th(Vy, function(t) {
        e.hasOwnProperty(t) && (r[t] = e[t])
    }), r
}
var jF = lt(),
    Cl = function(r) {
        L(e, r);

        function e(t, i, a) {
            var n = r.call(this, t, i, a) || this;
            return n.uid = Si("ec_cpt_model"), n
        }
        return e.prototype.init = function(t, i, a) {
            this.mergeDefaultAndTheme(t, a)
        }, e.prototype.mergeDefaultAndTheme = function(t, i) {
            var a = zn(this),
                n = a ? bi(t) : {},
                o = i.getTheme();
            nt(t, o.get(this.mainType)), nt(t, this.getDefaultOption()), a && Ur(t, n, a)
        }, e.prototype.mergeOption = function(t, i) {
            nt(this.option, t, !0);
            var a = zn(this);
            a && Ur(this.option, t, a)
        }, e.prototype.optionUpdated = function(t, i) {}, e.prototype.getDefaultOption = function() {
            var t = this.constructor;
            if (!AT(t)) return t.defaultOption;
            var i = jF(this);
            if (!i.defaultOption) {
                for (var a = [], n = t; n;) {
                    var o = n.prototype.defaultOption;
                    o && a.push(o), n = n.superClass
                }
                for (var s = {}, l = a.length - 1; l >= 0; l--) s = nt(s, a[l], !0);
                i.defaultOption = s
            }
            return i.defaultOption
        }, e.prototype.getReferringComponents = function(t, i) {
            var a = t + "Index",
                n = t + "Id";
            return Tn(this.ecModel, t, {
                index: this.get(a, !0),
                id: this.get(n, !0)
            }, i)
        }, e.prototype.getBoxLayoutParams = function() {
            var t = this;
            return {
                left: t.get("left"),
                top: t.get("top"),
                right: t.get("right"),
                bottom: t.get("bottom"),
                width: t.get("width"),
                height: t.get("height")
            }
        }, e.prototype.getZLevelKey = function() {
            return ""
        }, e.prototype.setZLevel = function(t) {
            this.option.zlevel = t
        }, e.protoInitialize = function() {
            var t = e.prototype;
            t.type = "component", t.id = "", t.name = "", t.mainType = "", t.subType = "", t.componentIndex = 0
        }(), e
    }(Dt);
Bc(Cl, Dt);
Cn(Cl);
mA(Cl);
gA(Cl, JF);

function JF(r) {
    var e = [];
    return w(Cl.getClassesByMainType(r), function(t) {
        e = e.concat(t.dependencies || t.prototype.dependencies || [])
    }), e = k(e, function(t) {
        return Rr(t).main
    }), r !== "dataset" && at(e, "dataset") <= 0 && e.unshift("dataset"), e
}
var yt = Cl;
var RA = "";
typeof navigator < "u" && (RA = navigator.platform || "");
var Al = "rgba(0, 0, 0, 0.2)",
    NA = {
        darkMode: "auto",
        colorBy: "series",
        color: ["#5470c6", "#91cc75", "#fac858", "#ee6666", "#73c0de", "#3ba272", "#fc8452", "#9a60b4", "#ea7ccc"],
        gradientColor: ["#f6efa6", "#d88273", "#bf444c"],
        aria: {
            decal: {
                decals: [{
                    color: Al,
                    dashArrayX: [1, 0],
                    dashArrayY: [2, 5],
                    symbolSize: 1,
                    rotation: Math.PI / 6
                }, {
                    color: Al,
                    symbol: "circle",
                    dashArrayX: [
                        [8, 8],
                        [0, 8, 8, 0]
                    ],
                    dashArrayY: [6, 0],
                    symbolSize: .8
                }, {
                    color: Al,
                    dashArrayX: [1, 0],
                    dashArrayY: [4, 3],
                    rotation: -Math.PI / 4
                }, {
                    color: Al,
                    dashArrayX: [
                        [6, 6],
                        [0, 6, 6, 0]
                    ],
                    dashArrayY: [6, 0]
                }, {
                    color: Al,
                    dashArrayX: [
                        [1, 0],
                        [1, 6]
                    ],
                    dashArrayY: [1, 0, 6, 0],
                    rotation: Math.PI / 4
                }, {
                    color: Al,
                    symbol: "triangle",
                    dashArrayX: [
                        [9, 9],
                        [0, 9, 9, 0]
                    ],
                    dashArrayY: [7, 2],
                    symbolSize: .75
                }]
            }
        },
        textStyle: {
            fontFamily: RA.match(/^Win/) ? "Microsoft YaHei" : "sans-serif",
            fontSize: 12,
            fontStyle: "normal",
            fontWeight: "normal"
        },
        blendMode: null,
        stateAnimation: {
            duration: 300,
            easing: "cubicOut"
        },
        animation: "auto",
        animationDuration: 1e3,
        animationDurationUpdate: 500,
        animationEasing: "cubicInOut",
        animationEasingUpdate: "cubicInOut",
        animationThreshold: 2e3,
        progressiveThreshold: 3e3,
        progressive: 400,
        hoverLayerThreshold: 3e3,
        useUTC: !1
    };
var Ch = Y(["tooltip", "label", "itemName", "itemId", "itemGroupId", "itemChildGroupId", "seriesName"]),
    Ze = "original",
    Se = "arrayRows",
    $e = "objectRows",
    ii = "keyedColumns",
    ai = "typedArray",
    Gy = "unknown",
    Vr = "column",
    $a = "row";
var Be = {
        Must: 1,
        Might: 2,
        Not: 3
    },
    OA = lt();

function zA(r) {
    OA(r).datasetMap = Y()
}

function Ah(r, e, t) {
    var i = {},
        a = Dh(e);
    if (!a || !r) return i;
    var n = [],
        o = [],
        s = e.ecModel,
        l = OA(s).datasetMap,
        u = a.uid + "_" + t.seriesLayoutBy,
        f, p;
    r = r.slice(), w(r, function(d, m) {
        var g = j(d) ? d : r[m] = {
            name: d
        };
        g.type === "ordinal" && f == null && (f = m, p = v(g)), i[g.name] = []
    });
    var c = l.get(u) || l.set(u, {
        categoryWayDim: p,
        valueWayDim: 0
    });
    w(r, function(d, m) {
        var g = d.name,
            y = v(d);
        if (f == null) {
            var x = c.valueWayDim;
            h(i[g], x, y), h(o, x, y), c.valueWayDim += y
        } else if (f === m) h(i[g], 0, y), h(n, 0, y);
        else {
            var x = c.categoryWayDim;
            h(i[g], x, y), h(o, x, y), c.categoryWayDim += y
        }
    });

    function h(d, m, g) {
        for (var y = 0; y < g; y++) d.push(m + y)
    }

    function v(d) {
        var m = d.dimsDef;
        return m ? m.length : 1
    }
    return n.length && (i.itemName = n), o.length && (i.seriesName = o), i
}

function Dl(r, e, t) {
    var i = {},
        a = Dh(r);
    if (!a) return i;
    var n = e.sourceFormat,
        o = e.dimensionsDefine,
        s;
    (n === $e || n === ii) && w(o, function(f, p) {
        (j(f) ? f.name : f) === "name" && (s = p)
    });
    var l = function() {
        for (var f = {}, p = {}, c = [], h = 0, v = Math.min(5, t); h < v; h++) {
            var d = UA(e.data, n, e.seriesLayoutBy, o, e.startIndex, h);
            c.push(d);
            var m = d === Be.Not;
            if (m && f.v == null && h !== s && (f.v = h), (f.n == null || f.n === f.v || !m && c[f.n] === Be.Not) && (f.n = h), g(f) && c[f.n] !== Be.Not) return f;
            m || (d === Be.Might && p.v == null && h !== s && (p.v = h), (p.n == null || p.n === p.v) && (p.n = h))
        }

        function g(y) {
            return y.v != null && y.n != null
        }
        return g(f) ? f : g(p) ? p : null
    }();
    if (l) {
        i.value = [l.v];
        var u = s ? ? l.n;
        i.itemName = [u], i.seriesName = [u]
    }
    return i
}

function Dh(r) {
    var e = r.get("data", !0);
    if (!e) return Tn(r.ecModel, "dataset", {
        index: r.get("datasetIndex", !0),
        id: r.get("datasetId", !0)
    }, Ht).models[0]
}

function kA(r) {
    return !r.get("transform", !0) && !r.get("fromTransformResult", !0) ? [] : Tn(r.ecModel, "dataset", {
        index: r.get("fromDatasetIndex", !0),
        id: r.get("fromDatasetId", !0)
    }, Ht).models
}

function Mh(r, e) {
    return UA(r.data, r.sourceFormat, r.seriesLayoutBy, r.dimensionsDefine, r.startIndex, e)
}

function UA(r, e, t, i, a, n) {
    var o, s = 5;
    if (de(r)) return Be.Not;
    var l, u;
    if (i) {
        var f = i[n];
        j(f) ? (l = f.name, u = f.type) : F(f) && (l = f)
    }
    if (u != null) return u === "ordinal" ? Be.Must : Be.Not;
    if (e === Se) {
        var p = r;
        if (t === $a) {
            for (var c = p[n], h = 0; h < (c || []).length && h < s; h++)
                if ((o = _(c[a + h])) != null) return o
        } else
            for (var h = 0; h < p.length && h < s; h++) {
                var v = p[a + h];
                if (v && (o = _(v[n])) != null) return o
            }
    } else if (e === $e) {
        var d = r;
        if (!l) return Be.Not;
        for (var h = 0; h < d.length && h < s; h++) {
            var m = d[h];
            if (m && (o = _(m[l])) != null) return o
        }
    } else if (e === ii) {
        var g = r;
        if (!l) return Be.Not;
        var c = g[l];
        if (!c || de(c)) return Be.Not;
        for (var h = 0; h < c.length && h < s; h++)
            if ((o = _(c[h])) != null) return o
    } else if (e === Ze)
        for (var y = r, h = 0; h < y.length && h < s; h++) {
            var m = y[h],
                x = Fi(m);
            if (!z(x)) return Be.Not;
            if ((o = _(x[n])) != null) return o
        }

    function _(S) {
        var b = F(S);
        if (S != null && Number.isFinite(Number(S)) && S !== "") return b ? Be.Might : Be.Not;
        if (b && S !== "-") return Be.Must
    }
    return Be.Not
}
var Hy = Y();

function VA(r, e) {
    jt(Hy.get(r) == null && e), Hy.set(r, e)
}

function BA(r, e, t) {
    var i = Hy.get(e);
    if (!i) return t;
    var a = i(r);
    if (!a) return t;
    if (0)
        for (var n; n < a.length; n++);
    return t.concat(a)
}
var FA = lt(),
    QF = lt(),
    Df = function() {
        function r() {}
        return r.prototype.getColorFromPalette = function(e, t, i) {
            var a = Pt(this.get("color", !0)),
                n = this.get("colorLayer", !0);
            return GA(this, FA, a, n, e, t, i)
        }, r.prototype.clearColorPalette = function() {
            tG(this, FA)
        }, r
    }();

function Mf(r, e, t, i) {
    var a = Pt(r.get(["aria", "decal", "decals"]));
    return GA(r, QF, a, null, e, t, i)
}

function $F(r, e) {
    for (var t = r.length, i = 0; i < t; i++)
        if (r[i].length > e) return r[i];
    return r[t - 1]
}

function GA(r, e, t, i, a, n, o) {
    n = n || r;
    var s = e(n),
        l = s.paletteIdx || 0,
        u = s.paletteNameMap = s.paletteNameMap || {};
    if (u.hasOwnProperty(a)) return u[a];
    var f = o == null || !i ? t : $F(i, o);
    if (f = f || t, !(!f || !f.length)) {
        var p = f[l];
        return a && (u[a] = p), s.paletteIdx = (l + 1) % f.length, p
    }
}

function tG(r, e) {
    e(r).paletteIdx = 0, e(r).paletteNameMap = {}
}
var Lh, Lf, HA, WA = "\0_ec_inner",
    eG = 1;
var qA = function(r) {
    L(e, r);

    function e() {
        return r !== null && r.apply(this, arguments) || this
    }
    return e.prototype.init = function(t, i, a, n, o, s) {
        n = n || {}, this.option = null, this._theme = new Dt(n), this._locale = new Dt(o), this._optionManager = s
    }, e.prototype.setOption = function(t, i, a) {
        var n = XA(i);
        this._optionManager.setOption(t, a, n), this._resetOption(null, n)
    }, e.prototype.resetOption = function(t, i) {
        return this._resetOption(t, XA(i))
    }, e.prototype._resetOption = function(t, i) {
        var a = !1,
            n = this._optionManager;
        if (!t || t === "recreate") {
            var o = n.mountOption(t === "recreate");
            !this.option || t === "recreate" ? HA(this, o) : (this.restoreData(), this._mergeOption(o, i)), a = !0
        }
        if ((t === "timeline" || t === "media") && this.restoreData(), !t || t === "recreate" || t === "timeline") {
            var s = n.getTimelineOption(this);
            s && (a = !0, this._mergeOption(s, i))
        }
        if (!t || t === "recreate" || t === "media") {
            var l = n.getMediaOption(this);
            l.length && w(l, function(u) {
                a = !0, this._mergeOption(u, i)
            }, this)
        }
        return a
    }, e.prototype.mergeOption = function(t) {
        this._mergeOption(t, null)
    }, e.prototype._mergeOption = function(t, i) {
        var a = this.option,
            n = this._componentsMap,
            o = this._componentsCount,
            s = [],
            l = Y(),
            u = i && i.replaceMergeMainTypeMap;
        zA(this), w(t, function(p, c) {
            p != null && (yt.hasClass(c) ? c && (s.push(c), l.set(c, !0)) : a[c] = a[c] == null ? Q(p) : nt(a[c], p, !0))
        }), u && u.each(function(p, c) {
            yt.hasClass(c) && !l.get(c) && (s.push(c), l.set(c, !0))
        }), yt.topologicalTravel(s, yt.getAllClassMainTypes(), f, this);

        function f(p) {
            var c = BA(this, p, Pt(t[p])),
                h = n.get(p),
                v = h ? u && u.get(p) ? "replaceMerge" : "normalMerge" : "replaceAll",
                d = Uc(h, c, v);
            _T(d, p, yt), a[p] = null, n.set(p, null), o.set(p, 0);
            var m = [],
                g = [],
                y = 0,
                x, _;
            w(d, function(S, b) {
                var T = S.existing,
                    C = S.newOption;
                if (!C) T && (T.mergeOption({}, this), T.optionUpdated({}, !1));
                else {
                    var A = p === "series",
                        D = yt.getClass(p, S.keyInfo.subType, !A);
                    if (!D) {
                        if (0) var M, I;
                        return
                    }
                    if (p === "tooltip") {
                        if (x) return;
                        x = !0
                    }
                    if (T && T.constructor === D) T.name = S.keyInfo.name, T.mergeOption(C, this), T.optionUpdated(C, !1);
                    else {
                        var E = O({
                            componentIndex: b
                        }, S.keyInfo);
                        T = new D(C, this, this, E), O(T, E), S.brandNew && (T.__requireNewView = !0), T.init(C, this, this), T.optionUpdated(null, !0)
                    }
                }
                T ? (m.push(T.option), g.push(T), y++) : (m.push(void 0), g.push(void 0))
            }, this), a[p] = m, n.set(p, g), o.set(p, y), p === "series" && Lh(this)
        }
        this._seriesIndices || Lh(this)
    }, e.prototype.getOption = function() {
        var t = Q(this.option);
        return w(t, function(i, a) {
            if (yt.hasClass(a)) {
                for (var n = Pt(i), o = n.length, s = !1, l = o - 1; l >= 0; l--) n[l] && !al(n[l]) ? s = !0 : (n[l] = null, !s && o--);
                n.length = o, t[a] = n
            }
        }), delete t[WA], t
    }, e.prototype.getTheme = function() {
        return this._theme
    }, e.prototype.getLocaleModel = function() {
        return this._locale
    }, e.prototype.setUpdatePayload = function(t) {
        this._payload = t
    }, e.prototype.getUpdatePayload = function() {
        return this._payload
    }, e.prototype.getComponent = function(t, i) {
        var a = this._componentsMap.get(t);
        if (a) {
            var n = a[i || 0];
            if (n) return n;
            if (i == null) {
                for (var o = 0; o < a.length; o++)
                    if (a[o]) return a[o]
            }
        }
    }, e.prototype.queryComponents = function(t) {
        var i = t.mainType;
        if (!i) return [];
        var a = t.index,
            n = t.id,
            o = t.name,
            s = this._componentsMap.get(i);
        if (!s || !s.length) return [];
        var l;
        return a != null ? (l = [], w(Pt(a), function(u) {
            s[u] && l.push(s[u])
        })) : n != null ? l = YA("id", n, s) : o != null ? l = YA("name", o, s) : l = wt(s, function(u) {
            return !!u
        }), ZA(l, t)
    }, e.prototype.findComponents = function(t) {
        var i = t.query,
            a = t.mainType,
            n = s(i),
            o = n ? this.queryComponents(n) : wt(this._componentsMap.get(a), function(u) {
                return !!u
            });
        return l(ZA(o, t));

        function s(u) {
            var f = a + "Index",
                p = a + "Id",
                c = a + "Name";
            return u && (u[f] != null || u[p] != null || u[c] != null) ? {
                mainType: a,
                index: u[f],
                id: u[p],
                name: u[c]
            } : null
        }

        function l(u) {
            return t.filter ? wt(u, t.filter) : u
        }
    }, e.prototype.eachComponent = function(t, i, a) {
        var n = this._componentsMap;
        if (X(t)) {
            var o = i,
                s = t;
            n.each(function(p, c) {
                for (var h = 0; p && h < p.length; h++) {
                    var v = p[h];
                    v && s.call(o, c, v, v.componentIndex)
                }
            })
        } else
            for (var l = F(t) ? n.get(t) : j(t) ? this.findComponents(t) : null, u = 0; l && u < l.length; u++) {
                var f = l[u];
                f && i.call(a, f, f.componentIndex)
            }
    }, e.prototype.getSeriesByName = function(t) {
        var i = ie(t, null);
        return wt(this._componentsMap.get("series"), function(a) {
            return !!a && i != null && a.name === i
        })
    }, e.prototype.getSeriesByIndex = function(t) {
        return this._componentsMap.get("series")[t]
    }, e.prototype.getSeriesByType = function(t) {
        return wt(this._componentsMap.get("series"), function(i) {
            return !!i && i.subType === t
        })
    }, e.prototype.getSeries = function() {
        return wt(this._componentsMap.get("series"), function(t) {
            return !!t
        })
    }, e.prototype.getSeriesCount = function() {
        return this._componentsCount.get("series")
    }, e.prototype.eachSeries = function(t, i) {
        Lf(this), w(this._seriesIndices, function(a) {
            var n = this._componentsMap.get("series")[a];
            t.call(i, n, a)
        }, this)
    }, e.prototype.eachRawSeries = function(t, i) {
        w(this._componentsMap.get("series"), function(a) {
            a && t.call(i, a, a.componentIndex)
        })
    }, e.prototype.eachSeriesByType = function(t, i, a) {
        Lf(this), w(this._seriesIndices, function(n) {
            var o = this._componentsMap.get("series")[n];
            o.subType === t && i.call(a, o, n)
        }, this)
    }, e.prototype.eachRawSeriesByType = function(t, i, a) {
        return w(this.getSeriesByType(t), i, a)
    }, e.prototype.isSeriesFiltered = function(t) {
        return Lf(this), this._seriesIndicesMap.get(t.componentIndex) == null
    }, e.prototype.getCurrentSeriesIndices = function() {
        return (this._seriesIndices || []).slice()
    }, e.prototype.filterSeries = function(t, i) {
        Lf(this);
        var a = [];
        w(this._seriesIndices, function(n) {
            var o = this._componentsMap.get("series")[n];
            t.call(i, o, n) && a.push(n)
        }, this), this._seriesIndices = a, this._seriesIndicesMap = Y(a)
    }, e.prototype.restoreData = function(t) {
        Lh(this);
        var i = this._componentsMap,
            a = [];
        i.each(function(n, o) {
            yt.hasClass(o) && a.push(o)
        }), yt.topologicalTravel(a, yt.getAllClassMainTypes(), function(n) {
            w(i.get(n), function(o) {
                o && (n !== "series" || !rG(o, t)) && o.restoreData()
            })
        })
    }, e.internalField = function() {
        Lh = function(t) {
            var i = t._seriesIndices = [];
            w(t._componentsMap.get("series"), function(a) {
                a && i.push(a.componentIndex)
            }), t._seriesIndicesMap = Y(i)
        }, Lf = function(t) {}, HA = function(t, i) {
            t.option = {}, t.option[WA] = eG, t._componentsMap = Y({
                series: []
            }), t._componentsCount = Y();
            var a = i.aria;
            j(a) && a.enabled == null && (a.enabled = !0), iG(i, t._theme.option), nt(i, NA, !1), t._mergeOption(i, null)
        }
    }(), e
}(Dt);

function rG(r, e) {
    if (e) {
        var t = e.seriesIndex,
            i = e.seriesId,
            a = e.seriesName;
        return t != null && r.componentIndex !== t || i != null && r.id !== i || a != null && r.name !== a
    }
}

function iG(r, e) {
    var t = r.color && !r.colorLayer;
    w(e, function(i, a) {
        a === "colorLayer" && t || yt.hasClass(a) || (typeof i == "object" ? r[a] = r[a] ? nt(r[a], i, !1) : Q(i) : r[a] == null && (r[a] = i))
    })
}

function YA(r, e, t) {
    if (z(e)) {
        var i = Y();
        return w(e, function(n) {
            if (n != null) {
                var o = ie(n, null);
                o != null && i.set(n, !0)
            }
        }), wt(t, function(n) {
            return n && i.get(n[r])
        })
    } else {
        var a = ie(e, null);
        return wt(t, function(n) {
            return n && a != null && n[r] === a
        })
    }
}

function ZA(r, e) {
    return e.hasOwnProperty("subType") ? wt(r, function(t) {
        return t && t.subType === e.subType
    }) : r
}

function XA(r) {
    var e = Y();
    return r && w(Pt(r.replaceMerge), function(t) {
        e.set(t, !0)
    }), {
        replaceMergeMainTypeMap: e
    }
}
Bt(qA, Df);
var Ih = qA;
var aG = ["getDom", "getZr", "getWidth", "getHeight", "getDevicePixelRatio", "dispatchAction", "isSSR", "isDisposed", "on", "off", "getDataURL", "getConnectedDataURL", "getOption", "getId", "updateLabelLayout"],
    nG = function() {
        function r(e) {
            w(aG, function(t) {
                this[t] = H(e[t], e)
            }, this)
        }
        return r
    }(),
    Eh = nG;
var Wy = {},
    oG = function() {
        function r() {
            this._coordinateSystems = []
        }
        return r.prototype.create = function(e, t) {
            var i = [];
            w(Wy, function(a, n) {
                var o = a.create(e, t);
                i = i.concat(o || [])
            }), this._coordinateSystems = i
        }, r.prototype.update = function(e, t) {
            w(this._coordinateSystems, function(i) {
                i.update && i.update(e, t)
            })
        }, r.prototype.getCoordinateSystems = function() {
            return this._coordinateSystems.slice()
        }, r.register = function(e, t) {
            Wy[e] = t
        }, r.get = function(e) {
            return Wy[e]
        }, r
    }(),
    ga = oG;
var sG = /^(min|max)?(.+)$/,
    lG = function() {
        function r(e) {
            this._timelineOptions = [], this._mediaList = [], this._currentMediaIndices = [], this._api = e
        }
        return r.prototype.setOption = function(e, t, i) {
            e && (w(Pt(e.series), function(o) {
                o && o.data && de(o.data) && vn(o.data)
            }), w(Pt(e.dataset), function(o) {
                o && o.source && de(o.source) && vn(o.source)
            })), e = Q(e);
            var a = this._optionBackup,
                n = uG(e, t, !a);
            this._newBaseOption = n.baseOption, a ? (n.timelineOptions.length && (a.timelineOptions = n.timelineOptions), n.mediaList.length && (a.mediaList = n.mediaList), n.mediaDefault && (a.mediaDefault = n.mediaDefault)) : this._optionBackup = n
        }, r.prototype.mountOption = function(e) {
            var t = this._optionBackup;
            return this._timelineOptions = t.timelineOptions, this._mediaList = t.mediaList, this._mediaDefault = t.mediaDefault, this._currentMediaIndices = [], Q(e ? t.baseOption : this._newBaseOption)
        }, r.prototype.getTimelineOption = function(e) {
            var t, i = this._timelineOptions;
            if (i.length) {
                var a = e.getComponent("timeline");
                a && (t = Q(i[a.getCurrentIndex()]))
            }
            return t
        }, r.prototype.getMediaOption = function(e) {
            var t = this._api.getWidth(),
                i = this._api.getHeight(),
                a = this._mediaList,
                n = this._mediaDefault,
                o = [],
                s = [];
            if (!a.length && !n) return s;
            for (var l = 0, u = a.length; l < u; l++) fG(a[l].query, t, i) && o.push(l);
            return !o.length && n && (o = [-1]), o.length && !cG(o, this._currentMediaIndices) && (s = k(o, function(f) {
                return Q(f === -1 ? n.option : a[f].option)
            })), this._currentMediaIndices = o, s
        }, r
    }();

function uG(r, e, t) {
    var i = [],
        a, n, o = r.baseOption,
        s = r.timeline,
        l = r.options,
        u = r.media,
        f = !!r.media,
        p = !!(l || s || o && o.timeline);
    o ? (n = o, n.timeline || (n.timeline = s)) : ((p || f) && (r.options = r.media = null), n = r), f && z(u) && w(u, function(h) {
        h && h.option && (h.query ? i.push(h) : a || (a = h))
    }), c(n), w(l, function(h) {
        return c(h)
    }), w(i, function(h) {
        return c(h.option)
    });

    function c(h) {
        w(e, function(v) {
            v(h, t)
        })
    }
    return {
        baseOption: n,
        timelineOptions: l || [],
        mediaDefault: a,
        mediaList: i
    }
}

function fG(r, e, t) {
    var i = {
            width: e,
            height: t,
            aspectratio: e / t
        },
        a = !0;
    return w(r, function(n, o) {
        var s = o.match(sG);
        if (!(!s || !s[1] || !s[2])) {
            var l = s[1],
                u = s[2].toLowerCase();
            pG(i[u], n, l) || (a = !1)
        }
    }), a
}

function pG(r, e, t) {
    return t === "min" ? r >= e : t === "max" ? r <= e : r === e
}

function cG(r, e) {
    return r.join(",") === e.join(",")
}
var KA = lG;
var Xi = w,
    Ef = j,
    jA = ["areaStyle", "lineStyle", "nodeStyle", "linkStyle", "chordStyle", "label", "labelLine"];

function Yy(r) {
    var e = r && r.itemStyle;
    if (e)
        for (var t = 0, i = jA.length; t < i; t++) {
            var a = jA[t],
                n = e.normal,
                o = e.emphasis;
            n && n[a] && (r[a] = r[a] || {}, r[a].normal ? nt(r[a].normal, n[a]) : r[a].normal = n[a], n[a] = null), o && o[a] && (r[a] = r[a] || {}, r[a].emphasis ? nt(r[a].emphasis, o[a]) : r[a].emphasis = o[a], o[a] = null)
        }
}

function sr(r, e, t) {
    if (r && r[e] && (r[e].normal || r[e].emphasis)) {
        var i = r[e].normal,
            a = r[e].emphasis;
        i && (t ? (r[e].normal = r[e].emphasis = null, q(r[e], i)) : r[e] = i), a && (r.emphasis = r.emphasis || {}, r.emphasis[e] = a, a.focus && (r.emphasis.focus = a.focus), a.blurScope && (r.emphasis.blurScope = a.blurScope))
    }
}

function If(r) {
    sr(r, "itemStyle"), sr(r, "lineStyle"), sr(r, "areaStyle"), sr(r, "label"), sr(r, "labelLine"), sr(r, "upperLabel"), sr(r, "edgeLabel")
}

function De(r, e) {
    var t = Ef(r) && r[e],
        i = Ef(t) && t.textStyle;
    if (i)
        for (var a = 0, n = Lg.length; a < n; a++) {
            var o = Lg[a];
            i.hasOwnProperty(o) && (t[o] = i[o])
        }
}

function wi(r) {
    r && (If(r), De(r, "label"), r.emphasis && De(r.emphasis, "label"))
}

function hG(r) {
    if (Ef(r)) {
        Yy(r), If(r), De(r, "label"), De(r, "upperLabel"), De(r, "edgeLabel"), r.emphasis && (De(r.emphasis, "label"), De(r.emphasis, "upperLabel"), De(r.emphasis, "edgeLabel"));
        var e = r.markPoint;
        e && (Yy(e), wi(e));
        var t = r.markLine;
        t && (Yy(t), wi(t));
        var i = r.markArea;
        i && wi(i);
        var a = r.data;
        if (r.type === "graph") {
            a = a || r.nodes;
            var n = r.links || r.edges;
            if (n && !de(n))
                for (var o = 0; o < n.length; o++) wi(n[o]);
            w(r.categories, function(u) {
                If(u)
            })
        }
        if (a && !de(a))
            for (var o = 0; o < a.length; o++) wi(a[o]);
        if (e = r.markPoint, e && e.data)
            for (var s = e.data, o = 0; o < s.length; o++) wi(s[o]);
        if (t = r.markLine, t && t.data)
            for (var l = t.data, o = 0; o < l.length; o++) z(l[o]) ? (wi(l[o][0]), wi(l[o][1])) : wi(l[o]);
        r.type === "gauge" ? (De(r, "axisLabel"), De(r, "title"), De(r, "detail")) : r.type === "treemap" ? (sr(r.breadcrumb, "itemStyle"), w(r.levels, function(u) {
            If(u)
        })) : r.type === "tree" && If(r.leaves)
    }
}

function tn(r) {
    return z(r) ? r : r ? [r] : []
}

function JA(r) {
    return (z(r) ? r[0] : r) || {}
}

function Zy(r, e) {
    Xi(tn(r.series), function(i) {
        Ef(i) && hG(i)
    });
    var t = ["xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "parallelAxis", "radar"];
    e && t.push("valueAxis", "categoryAxis", "logAxis", "timeAxis"), Xi(t, function(i) {
        Xi(tn(r[i]), function(a) {
            a && (De(a, "axisLabel"), De(a.axisPointer, "label"))
        })
    }), Xi(tn(r.parallel), function(i) {
        var a = i && i.parallelAxisDefault;
        De(a, "axisLabel"), De(a && a.axisPointer, "label")
    }), Xi(tn(r.calendar), function(i) {
        sr(i, "itemStyle"), De(i, "dayLabel"), De(i, "monthLabel"), De(i, "yearLabel")
    }), Xi(tn(r.radar), function(i) {
        De(i, "name"), i.name && i.axisName == null && (i.axisName = i.name, delete i.name), i.nameGap != null && i.axisNameGap == null && (i.axisNameGap = i.nameGap, delete i.nameGap)
    }), Xi(tn(r.geo), function(i) {
        Ef(i) && (wi(i), Xi(tn(i.regions), function(a) {
            wi(a)
        }))
    }), Xi(tn(r.timeline), function(i) {
        wi(i), sr(i, "label"), sr(i, "itemStyle"), sr(i, "controlStyle", !0);
        var a = i.data;
        z(a) && w(a, function(n) {
            j(n) && (sr(n, "label"), sr(n, "itemStyle"))
        })
    }), Xi(tn(r.toolbox), function(i) {
        sr(i, "iconStyle"), Xi(i.feature, function(a) {
            sr(a, "iconStyle")
        })
    }), De(JA(r.axisPointer), "label"), De(JA(r.tooltip).axisPointer, "label")
}

function vG(r, e) {
    for (var t = e.split(","), i = r, a = 0; a < t.length && (i = i && i[t[a]], i != null); a++);
    return i
}

function dG(r, e, t, i) {
    for (var a = e.split(","), n = r, o, s = 0; s < a.length - 1; s++) o = a[s], n[o] == null && (n[o] = {}), n = n[o];
    (i || n[a[s]] == null) && (n[a[s]] = t)
}

function QA(r) {
    r && w(mG, function(e) {
        e[0] in r && !(e[1] in r) && (r[e[1]] = r[e[0]])
    })
}
var mG = [
        ["x", "left"],
        ["y", "top"],
        ["x2", "right"],
        ["y2", "bottom"]
    ],
    gG = ["grid", "geo", "parallel", "legend", "toolbox", "title", "visualMap", "dataZoom", "timeline"],
    Xy = [
        ["borderRadius", "barBorderRadius"],
        ["borderColor", "barBorderColor"],
        ["borderWidth", "barBorderWidth"]
    ];

function Pf(r) {
    var e = r && r.itemStyle;
    if (e)
        for (var t = 0; t < Xy.length; t++) {
            var i = Xy[t][1],
                a = Xy[t][0];
            e[i] != null && (e[a] = e[i])
        }
}

function $A(r) {
    r && r.alignTo === "edge" && r.margin != null && r.edgeDistance == null && (r.edgeDistance = r.margin)
}

function tD(r) {
    r && r.downplay && !r.blur && (r.blur = r.downplay)
}

function yG(r) {
    r && r.focusNodeAdjacency != null && (r.emphasis = r.emphasis || {}, r.emphasis.focus == null && (r.emphasis.focus = "adjacency"))
}

function eD(r, e) {
    if (r)
        for (var t = 0; t < r.length; t++) e(r[t]), r[t] && eD(r[t].children, e)
}

function Ph(r, e) {
    Zy(r, e), r.series = Pt(r.series), w(r.series, function(t) {
        if (j(t)) {
            var i = t.type;
            if (i === "line") t.clipOverflow != null && (t.clip = t.clipOverflow);
            else if (i === "pie" || i === "gauge") {
                t.clockWise != null && (t.clockwise = t.clockWise), $A(t.label);
                var a = t.data;
                if (a && !de(a))
                    for (var n = 0; n < a.length; n++) $A(a[n]);
                t.hoverOffset != null && (t.emphasis = t.emphasis || {}, (t.emphasis.scaleSize = null) && (t.emphasis.scaleSize = t.hoverOffset))
            } else if (i === "gauge") {
                var o = vG(t, "pointer.color");
                o != null && dG(t, "itemStyle.color", o)
            } else if (i === "bar") {
                Pf(t), Pf(t.backgroundStyle), Pf(t.emphasis);
                var a = t.data;
                if (a && !de(a))
                    for (var n = 0; n < a.length; n++) typeof a[n] == "object" && (Pf(a[n]), Pf(a[n] && a[n].emphasis))
            } else if (i === "sunburst") {
                var s = t.highlightPolicy;
                s && (t.emphasis = t.emphasis || {}, t.emphasis.focus || (t.emphasis.focus = s)), tD(t), eD(t.data, tD)
            } else i === "graph" || i === "sankey" ? yG(t) : i === "map" && (t.mapType && !t.map && (t.map = t.mapType), t.mapLocation && q(t, t.mapLocation));
            t.hoverAnimation != null && (t.emphasis = t.emphasis || {}, t.emphasis && t.emphasis.scale == null && (t.emphasis.scale = t.hoverAnimation)), QA(t)
        }
    }), r.dataRange && (r.visualMap = r.dataRange), w(gG, function(t) {
        var i = r[t];
        i && (z(i) || (i = [i]), w(i, function(a) {
            QA(a)
        }))
    })
}

function qy(r) {
    var e = Y();
    r.eachSeries(function(t) {
        var i = t.get("stack");
        if (i) {
            var a = e.get(i) || e.set(i, []),
                n = t.getData(),
                o = {
                    stackResultDimension: n.getCalculationInfo("stackResultDimension"),
                    stackedOverDimension: n.getCalculationInfo("stackedOverDimension"),
                    stackedDimension: n.getCalculationInfo("stackedDimension"),
                    stackedByDimension: n.getCalculationInfo("stackedByDimension"),
                    isStackedByIndex: n.getCalculationInfo("isStackedByIndex"),
                    data: n,
                    seriesModel: t
                };
            if (!o.stackedDimension || !(o.isStackedByIndex || o.stackedByDimension)) return;
            a.length && n.setCalculationInfo("stackedOnSeries", a[a.length - 1].seriesModel), a.push(o)
        }
    }), e.each(xG)
}

function xG(r) {
    w(r, function(e, t) {
        var i = [],
            a = [NaN, NaN],
            n = [e.stackResultDimension, e.stackedOverDimension],
            o = e.data,
            s = e.isStackedByIndex,
            l = e.seriesModel.get("stackStrategy") || "samesign";
        o.modify(n, function(u, f, p) {
            var c = o.get(e.stackedDimension, p);
            if (isNaN(c)) return a;
            var h, v;
            s ? v = o.getRawIndex(p) : h = o.get(e.stackedByDimension, p);
            for (var d = NaN, m = t - 1; m >= 0; m--) {
                var g = r[m];
                if (s || (v = g.data.rawIndexOf(g.stackedByDimension, h)), v >= 0) {
                    var y = g.data.getByRawIndex(g.stackResultDimension, v);
                    if (l === "all" || l === "positive" && y > 0 || l === "negative" && y < 0 || l === "samesign" && c >= 0 && y > 0 || l === "samesign" && c <= 0 && y < 0) {
                        c = fT(c, y), d = y;
                        break
                    }
                }
            }
            return i[0] = c, i[1] = d, i
        })
    })
}
var Rh = function() {
    function r(e) {
        this.data = e.data || (e.sourceFormat === ii ? {} : []), this.sourceFormat = e.sourceFormat || Gy, this.seriesLayoutBy = e.seriesLayoutBy || Vr, this.startIndex = e.startIndex || 0, this.dimensionsDetectedCount = e.dimensionsDetectedCount, this.metaRawOption = e.metaRawOption;
        var t = this.dimensionsDefine = e.dimensionsDefine;
        if (t)
            for (var i = 0; i < t.length; i++) {
                var a = t[i];
                a.type == null && Mh(this, i) === Be.Must && (a.type = "ordinal")
            }
    }
    return r
}();

function Ml(r) {
    return r instanceof Rh
}

function Rf(r, e, t) {
    t = t || Ky(r);
    var i = e.seriesLayoutBy,
        a = _G(r, t, i, e.sourceHeader, e.dimensions),
        n = new Rh({
            data: r,
            sourceFormat: t,
            seriesLayoutBy: i,
            dimensionsDefine: a.dimensionsDefine,
            startIndex: a.startIndex,
            dimensionsDetectedCount: a.dimensionsDetectedCount,
            metaRawOption: Q(e)
        });
    return n
}

function Ll(r) {
    return new Rh({
        data: r,
        sourceFormat: de(r) ? ai : Ze
    })
}

function aD(r) {
    return new Rh({
        data: r.data,
        sourceFormat: r.sourceFormat,
        seriesLayoutBy: r.seriesLayoutBy,
        dimensionsDefine: Q(r.dimensionsDefine),
        startIndex: r.startIndex,
        dimensionsDetectedCount: r.dimensionsDetectedCount
    })
}

function Ky(r) {
    var e = Gy;
    if (de(r)) e = ai;
    else if (z(r)) {
        r.length === 0 && (e = Se);
        for (var t = 0, i = r.length; t < i; t++) {
            var a = r[t];
            if (a != null) {
                if (z(a) || de(a)) {
                    e = Se;
                    break
                } else if (j(a)) {
                    e = $e;
                    break
                }
            }
        }
    } else if (j(r)) {
        for (var n in r)
            if ($(r, n) && ue(r[n])) {
                e = ii;
                break
            }
    }
    return e
}

function _G(r, e, t, i, a) {
    var n, o;
    if (!r) return {
        dimensionsDefine: rD(a),
        startIndex: o,
        dimensionsDetectedCount: n
    };
    if (e === Se) {
        var s = r;
        i === "auto" || i == null ? iD(function(u) {
            u != null && u !== "-" && (F(u) ? o == null && (o = 1) : o = 0)
        }, t, s, 10) : o = vt(i) ? i : i ? 1 : 0, !a && o === 1 && (a = [], iD(function(u, f) {
            a[f] = u != null ? u + "" : ""
        }, t, s, 1 / 0)), n = a ? a.length : t === $a ? s.length : s[0] ? s[0].length : null
    } else if (e === $e) a || (a = SG(r));
    else if (e === ii) a || (a = [], w(r, function(u, f) {
        a.push(f)
    }));
    else if (e === Ze) {
        var l = Fi(r[0]);
        n = z(l) && l.length || 1
    }
    return {
        startIndex: o,
        dimensionsDefine: rD(a),
        dimensionsDetectedCount: n
    }
}

function SG(r) {
    for (var e = 0, t; e < r.length && !(t = r[e++]););
    if (t) return ft(t)
}

function rD(r) {
    if (r) {
        var e = Y();
        return k(r, function(t, i) {
            t = j(t) ? t : {
                name: t
            };
            var a = {
                name: t.name,
                displayName: t.displayName,
                type: t.type
            };
            if (a.name == null) return a;
            a.name += "", a.displayName == null && (a.displayName = a.name);
            var n = e.get(a.name);
            return n ? a.name += "-" + n.count++ : e.set(a.name, {
                count: 1
            }), a
        })
    }
}

function iD(r, e, t, i) {
    if (e === $a)
        for (var a = 0; a < t.length && a < i; a++) r(t[a] ? t[a][0] : null, a);
    else
        for (var n = t[0] || [], a = 0; a < n.length && a < i; a++) r(n[a], a)
}

function Nh(r) {
    var e = r.sourceFormat;
    return e === $e || e === ii
}
var ls, us, fs, nD, oD, Oh = function() {
    function r(e, t) {
        var i = Ml(e) ? e : Ll(e);
        this._source = i;
        var a = this._data = i.data;
        i.sourceFormat === ai && (this._offset = 0, this._dimSize = t, this._data = a), oD(this, a, i)
    }
    return r.prototype.getSource = function() {
        return this._source
    }, r.prototype.count = function() {
        return 0
    }, r.prototype.getItem = function(e, t) {}, r.prototype.appendData = function(e) {}, r.prototype.clean = function() {}, r.protoInitialize = function() {
        var e = r.prototype;
        e.pure = !1, e.persistent = !0
    }(), r.internalField = function() {
        var e;
        oD = function(o, s, l) {
            var u = l.sourceFormat,
                f = l.seriesLayoutBy,
                p = l.startIndex,
                c = l.dimensionsDefine,
                h = nD[t0(u, f)];
            if (O(o, h), u === ai) o.getItem = t, o.count = a, o.fillStorage = i;
            else {
                var v = Jy(u, f);
                o.getItem = H(v, null, s, p, c);
                var d = Qy(u, f);
                o.count = H(d, null, s, p, c)
            }
        };
        var t = function(o, s) {
                o = o - this._offset, s = s || [];
                for (var l = this._data, u = this._dimSize, f = u * o, p = 0; p < u; p++) s[p] = l[f + p];
                return s
            },
            i = function(o, s, l, u) {
                for (var f = this._data, p = this._dimSize, c = 0; c < p; c++) {
                    for (var h = u[c], v = h[0] == null ? 1 / 0 : h[0], d = h[1] == null ? -1 / 0 : h[1], m = s - o, g = l[c], y = 0; y < m; y++) {
                        var x = f[y * p + c];
                        g[o + y] = x, x < v && (v = x), x > d && (d = x)
                    }
                    h[0] = v, h[1] = d
                }
            },
            a = function() {
                return this._data ? this._data.length / this._dimSize : 0
            };
        nD = (e = {}, e[Se + "_" + Vr] = {
            pure: !0,
            appendData: n
        }, e[Se + "_" + $a] = {
            pure: !0,
            appendData: function() {
                throw new Error('Do not support appendData when set seriesLayoutBy: "row".')
            }
        }, e[$e] = {
            pure: !0,
            appendData: n
        }, e[ii] = {
            pure: !0,
            appendData: function(o) {
                var s = this._data;
                w(o, function(l, u) {
                    for (var f = s[u] || (s[u] = []), p = 0; p < (l || []).length; p++) f.push(l[p])
                })
            }
        }, e[Ze] = {
            appendData: n
        }, e[ai] = {
            persistent: !1,
            pure: !0,
            appendData: function(o) {
                this._data = o
            },
            clean: function() {
                this._offset += this.count(), this._data = null
            }
        }, e);

        function n(o) {
            for (var s = 0; s < o.length; s++) this._data.push(o[s])
        }
    }(), r
}();
var sD = function(r, e, t, i) {
        return r[i]
    },
    bG = (ls = {}, ls[Se + "_" + Vr] = function(r, e, t, i) {
        return r[i + e]
    }, ls[Se + "_" + $a] = function(r, e, t, i, a) {
        i += e;
        for (var n = a || [], o = r, s = 0; s < o.length; s++) {
            var l = o[s];
            n[s] = l ? l[i] : null
        }
        return n
    }, ls[$e] = sD, ls[ii] = function(r, e, t, i, a) {
        for (var n = a || [], o = 0; o < t.length; o++) {
            var s = t[o].name,
                l = r[s];
            n[o] = l ? l[i] : null
        }
        return n
    }, ls[Ze] = sD, ls);

function Jy(r, e) {
    var t = bG[t0(r, e)];
    return t
}
var lD = function(r, e, t) {
        return r.length
    },
    wG = (us = {}, us[Se + "_" + Vr] = function(r, e, t) {
        return Math.max(0, r.length - e)
    }, us[Se + "_" + $a] = function(r, e, t) {
        var i = r[0];
        return i ? Math.max(0, i.length - e) : 0
    }, us[$e] = lD, us[ii] = function(r, e, t) {
        var i = t[0].name,
            a = r[i];
        return a ? a.length : 0
    }, us[Ze] = lD, us);

function Qy(r, e) {
    var t = wG[t0(r, e)];
    return t
}
var jy = function(r, e, t) {
        return r[e]
    },
    TG = (fs = {}, fs[Se] = jy, fs[$e] = function(r, e, t) {
        return r[t]
    }, fs[ii] = jy, fs[Ze] = function(r, e, t) {
        var i = Fi(r);
        return i instanceof Array ? i[e] : i
    }, fs[ai] = jy, fs);

function $y(r) {
    var e = TG[r];
    return e
}

function t0(r, e) {
    return r === Se ? r + "_" + e : r
}

function en(r, e, t) {
    if (r) {
        var i = r.getRawDataItem(e);
        if (i != null) {
            var a = r.getStore(),
                n = a.getSource().sourceFormat;
            if (t != null) {
                var o = r.getDimensionIndex(t),
                    s = a.getDimensionProperty(o);
                return $y(n)(i, o, s)
            } else {
                var l = i;
                return n === Ze && (l = Fi(i)), l
            }
        }
    }
}
var CG = /\{@(.+?)\}/g,
    ps = function() {
        function r() {}
        return r.prototype.getDataParams = function(e, t) {
            var i = this.getData(t),
                a = this.getRawValue(e, t),
                n = i.getRawIndex(e),
                o = i.getName(e),
                s = i.getRawDataItem(e),
                l = i.getItemVisual(e, "style"),
                u = l && l[i.getItemVisual(e, "drawType") || "fill"],
                f = l && l.stroke,
                p = this.mainType,
                c = p === "series",
                h = i.userOutput && i.userOutput.get();
            return {
                componentType: p,
                componentSubType: this.subType,
                componentIndex: this.componentIndex,
                seriesType: c ? this.subType : null,
                seriesIndex: this.seriesIndex,
                seriesId: c ? this.id : null,
                seriesName: c ? this.name : null,
                name: o,
                dataIndex: n,
                data: s,
                dataType: t,
                value: a,
                color: u,
                borderColor: f,
                dimensionNames: h ? h.fullDimensions : null,
                encode: h ? h.encode : null,
                $vars: ["seriesName", "name", "value"]
            }
        }, r.prototype.getFormattedLabel = function(e, t, i, a, n, o) {
            t = t || "normal";
            var s = this.getData(i),
                l = this.getDataParams(e, i);
            if (o && (l.value = o.interpolatedValue), a != null && z(l.value) && (l.value = l.value[a]), !n) {
                var u = s.getItemModel(e);
                n = u.get(t === "normal" ? ["label", "formatter"] : [t, "label", "formatter"])
            }
            if (X(n)) return l.status = t, l.dimensionIndex = a, n(l);
            if (F(n)) {
                var f = Tl(n, l);
                return f.replace(CG, function(p, c) {
                    var h = c.length,
                        v = c;
                    v.charAt(0) === "[" && v.charAt(h - 1) === "]" && (v = +v.slice(1, h - 1));
                    var d = en(s, e, v);
                    if (o && z(o.interpolatedValue)) {
                        var m = s.getDimensionIndex(v);
                        m >= 0 && (d = o.interpolatedValue[m])
                    }
                    return d != null ? d + "" : ""
                })
            }
        }, r.prototype.getRawValue = function(e, t) {
            return en(this.getData(t), e)
        }, r.prototype.formatTooltip = function(e, t, i) {}, r
    }();

function e0(r) {
    var e, t;
    return j(r) ? r.type && (t = r) : e = r, {
        text: e,
        frag: t
    }
}

function kn(r) {
    return new AG(r)
}
var AG = function() {
    function r(e) {
        e = e || {}, this._reset = e.reset, this._plan = e.plan, this._count = e.count, this._onDirty = e.onDirty, this._dirty = !0
    }
    return r.prototype.perform = function(e) {
        var t = this._upstream,
            i = e && e.skip;
        if (this._dirty && t) {
            var a = this.context;
            a.data = a.outputData = t.context.outputData
        }
        this.__pipeline && (this.__pipeline.currentTask = this);
        var n;
        this._plan && !i && (n = this._plan(this.context));
        var o = f(this._modBy),
            s = this._modDataCount || 0,
            l = f(e && e.modBy),
            u = e && e.modDataCount || 0;
        (o !== l || s !== u) && (n = "reset");

        function f(y) {
            return !(y >= 1) && (y = 1), y
        }
        var p;
        (this._dirty || n === "reset") && (this._dirty = !1, p = this._doReset(i)), this._modBy = l, this._modDataCount = u;
        var c = e && e.step;
        if (t ? this._dueEnd = t._outputDueEnd : this._dueEnd = this._count ? this._count(this.context) : 1 / 0, this._progress) {
            var h = this._dueIndex,
                v = Math.min(c != null ? this._dueIndex + c : 1 / 0, this._dueEnd);
            if (!i && (p || h < v)) {
                var d = this._progress;
                if (z(d))
                    for (var m = 0; m < d.length; m++) this._doProgress(d[m], h, v, l, u);
                else this._doProgress(d, h, v, l, u)
            }
            this._dueIndex = v;
            var g = this._settedOutputEnd != null ? this._settedOutputEnd : v;
            this._outputDueEnd = g
        } else this._dueIndex = this._outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : this._dueEnd;
        return this.unfinished()
    }, r.prototype.dirty = function() {
        this._dirty = !0, this._onDirty && this._onDirty(this.context)
    }, r.prototype._doProgress = function(e, t, i, a, n) {
        uD.reset(t, i, a, n), this._callingProgress = e, this._callingProgress({
            start: t,
            end: i,
            count: i - t,
            next: uD.next
        }, this.context)
    }, r.prototype._doReset = function(e) {
        this._dueIndex = this._outputDueEnd = this._dueEnd = 0, this._settedOutputEnd = null;
        var t, i;
        !e && this._reset && (t = this._reset(this.context), t && t.progress && (i = t.forceFirstProgress, t = t.progress), z(t) && !t.length && (t = null)), this._progress = t, this._modBy = this._modDataCount = null;
        var a = this._downstream;
        return a && a.dirty(), i
    }, r.prototype.unfinished = function() {
        return this._progress && this._dueIndex < this._dueEnd
    }, r.prototype.pipe = function(e) {
        (this._downstream !== e || this._dirty) && (this._downstream = e, e._upstream = this, e.dirty())
    }, r.prototype.dispose = function() {
        this._disposed || (this._upstream && (this._upstream._downstream = null), this._downstream && (this._downstream._upstream = null), this._dirty = !1, this._disposed = !0)
    }, r.prototype.getUpstream = function() {
        return this._upstream
    }, r.prototype.getDownstream = function() {
        return this._downstream
    }, r.prototype.setOutputEnd = function(e) {
        this._outputDueEnd = this._settedOutputEnd = e
    }, r
}();
var uD = function() {
    var r, e, t, i, a, n = {
        reset: function(l, u, f, p) {
            e = l, r = u, t = f, i = p, a = Math.ceil(i / t), n.next = t > 1 && i > 0 ? s : o
        }
    };
    return n;

    function o() {
        return e < r ? e++ : null
    }

    function s() {
        var l = e % a * t + Math.ceil(e / a),
            u = e >= r ? null : l < i ? l : e;
        return e++, u
    }
}();

function Ti(r, e) {
    var t = e && e.type;
    return t === "ordinal" ? r : (t === "time" && !vt(r) && r != null && r !== "-" && (r = +Ne(r)), r == null || r === "" ? NaN : Number(r))
}
var DG = Y({
    number: function(r) {
        return parseFloat(r)
    },
    time: function(r) {
        return +Ne(r)
    },
    trim: function(r) {
        return F(r) ? Ie(r) : r
    }
});

function zh(r) {
    return DG.get(r)
}
var fD = {
        lt: function(r, e) {
            return r < e
        },
        lte: function(r, e) {
            return r <= e
        },
        gt: function(r, e) {
            return r > e
        },
        gte: function(r, e) {
            return r >= e
        }
    },
    MG = function() {
        function r(e, t) {
            if (!vt(t)) {
                var i = "";
                kt(i)
            }
            this._opFn = fD[e], this._rvalFloat = Er(t)
        }
        return r.prototype.evaluate = function(e) {
            return vt(e) ? this._opFn(e, this._rvalFloat) : this._opFn(Er(e), this._rvalFloat)
        }, r
    }(),
    kh = function() {
        function r(e, t) {
            var i = e === "desc";
            this._resultLT = i ? 1 : -1, t == null && (t = i ? "min" : "max"), this._incomparable = t === "min" ? -1 / 0 : 1 / 0
        }
        return r.prototype.evaluate = function(e, t) {
            var i = vt(e) ? e : Er(e),
                a = vt(t) ? t : Er(t),
                n = isNaN(i),
                o = isNaN(a);
            if (n && (i = this._incomparable), o && (a = this._incomparable), n && o) {
                var s = F(e),
                    l = F(t);
                s && (i = l ? e : 0), l && (a = s ? t : 0)
            }
            return i < a ? this._resultLT : i > a ? -this._resultLT : 0
        }, r
    }();
var LG = function() {
    function r(e, t) {
        this._rval = t, this._isEQ = e, this._rvalTypeof = typeof t, this._rvalFloat = Er(t)
    }
    return r.prototype.evaluate = function(e) {
        var t = e === this._rval;
        if (!t) {
            var i = typeof e;
            i !== this._rvalTypeof && (i === "number" || this._rvalTypeof === "number") && (t = Er(e) === this._rvalFloat)
        }
        return this._isEQ ? t : !t
    }, r
}();

function pD(r, e) {
    return r === "eq" || r === "ne" ? new LG(r === "eq", e) : $(fD, r) ? new MG(r, e) : null
}
var IG = function() {
    function r() {}
    return r.prototype.getRawData = function() {
        throw new Error("not supported")
    }, r.prototype.getRawDataItem = function(e) {
        throw new Error("not supported")
    }, r.prototype.cloneRawData = function() {}, r.prototype.getDimensionInfo = function(e) {}, r.prototype.cloneAllDimensionInfo = function() {}, r.prototype.count = function() {}, r.prototype.retrieveValue = function(e, t) {}, r.prototype.retrieveValueFromItem = function(e, t) {}, r.prototype.convertValue = function(e, t) {
        return Ti(e, t)
    }, r
}();

function EG(r, e) {
    var t = new IG,
        i = r.data,
        a = t.sourceFormat = r.sourceFormat,
        n = r.startIndex,
        o = "";
    r.seriesLayoutBy !== Vr && kt(o);
    var s = [],
        l = {},
        u = r.dimensionsDefine;
    if (u) w(u, function(d, m) {
        var g = d.name,
            y = {
                index: m,
                name: g,
                displayName: d.displayName
            };
        if (s.push(y), g != null) {
            var x = "";
            $(l, g) && kt(x), l[g] = y
        }
    });
    else
        for (var f = 0; f < r.dimensionsDetectedCount; f++) s.push({
            index: f
        });
    var p = Jy(a, Vr);
    e.__isBuiltIn && (t.getRawDataItem = function(d) {
        return p(i, n, s, d)
    }, t.getRawData = H(PG, null, r)), t.cloneRawData = H(RG, null, r);
    var c = Qy(a, Vr);
    t.count = H(c, null, i, n, s);
    var h = $y(a);
    t.retrieveValue = function(d, m) {
        var g = p(i, n, s, d);
        return v(g, m)
    };
    var v = t.retrieveValueFromItem = function(d, m) {
        if (d != null) {
            var g = s[m];
            if (g) return h(d, m, g.name)
        }
    };
    return t.getDimensionInfo = H(NG, null, s, l), t.cloneAllDimensionInfo = H(OG, null, s), t
}

function PG(r) {
    var e = r.sourceFormat;
    if (!r0(e)) {
        var t = "";
        kt(t)
    }
    return r.data
}

function RG(r) {
    var e = r.sourceFormat,
        t = r.data;
    if (!r0(e)) {
        var i = "";
        kt(i)
    }
    if (e === Se) {
        for (var a = [], n = 0, o = t.length; n < o; n++) a.push(t[n].slice());
        return a
    } else if (e === $e) {
        for (var a = [], n = 0, o = t.length; n < o; n++) a.push(O({}, t[n]));
        return a
    }
}

function NG(r, e, t) {
    if (t != null) {
        if (vt(t) || !isNaN(t) && !$(e, t)) return r[t];
        if ($(e, t)) return e[t]
    }
}

function OG(r) {
    return Q(r)
}
var cD = Y();

function hD(r) {
    r = Q(r);
    var e = r.type,
        t = "";
    e || kt(t);
    var i = e.split(":");
    i.length !== 2 && kt(t);
    var a = !1;
    i[0] === "echarts" && (e = i[1], a = !0), r.__isBuiltIn = a, cD.set(e, r)
}

function vD(r, e, t) {
    var i = Pt(r),
        a = i.length,
        n = "";
    a || kt(n);
    for (var o = 0, s = a; o < s; o++) {
        var l = i[o];
        e = zG(l, e, t, a === 1 ? null : o), o !== s - 1 && (e.length = Math.max(e.length, 1))
    }
    return e
}

function zG(r, e, t, i) {
    var a = "";
    e.length || kt(a), j(r) || kt(a);
    var n = r.type,
        o = cD.get(n);
    o || kt(a);
    var s = k(e, function(f) {
            return EG(f, o)
        }),
        l = Pt(o.transform({
            upstream: s[0],
            upstreamList: s,
            config: Q(r.config)
        }));
    if (0 && r.print) var u;
    return k(l, function(f, p) {
        var c = "";
        j(f) || kt(c), f.data || kt(c);
        var h = Ky(f.data);
        r0(h) || kt(c);
        var v, d = e[0];
        if (d && p === 0 && !f.dimensions) {
            var m = d.startIndex;
            m && (f.data = d.data.slice(0, m).concat(f.data)), v = {
                seriesLayoutBy: Vr,
                sourceHeader: m,
                dimensions: d.metaRawOption.dimensions
            }
        } else v = {
            seriesLayoutBy: Vr,
            sourceHeader: 0,
            dimensions: f.dimensions
        };
        return Rf(f.data, v, null)
    })
}

function r0(r) {
    return r === Se || r === $e
}
var Uh = "undefined",
    kG = typeof Uint32Array === Uh ? Array : Uint32Array,
    UG = typeof Uint16Array === Uh ? Array : Uint16Array,
    a0 = typeof Int32Array === Uh ? Array : Int32Array,
    dD = typeof Float64Array === Uh ? Array : Float64Array,
    gD = {
        float: dD,
        int: a0,
        ordinal: Array,
        number: Array,
        time: dD
    },
    i0;

function Il(r) {
    return r > 65535 ? kG : UG
}

function El() {
    return [1 / 0, -1 / 0]
}

function VG(r) {
    var e = r.constructor;
    return e === Array ? r.slice() : new e(r)
}

function mD(r, e, t, i, a) {
    var n = gD[t || "float"];
    if (a) {
        var o = r[e],
            s = o && o.length;
        if (s !== i) {
            for (var l = new n(i), u = 0; u < s; u++) l[u] = o[u];
            r[e] = l
        }
    } else r[e] = new n(i)
}
var BG = function() {
        function r() {
            this._chunks = [], this._rawExtent = [], this._extent = [], this._count = 0, this._rawCount = 0, this._calcDimNameToIdx = Y()
        }
        return r.prototype.initData = function(e, t, i) {
            this._provider = e, this._chunks = [], this._indices = null, this.getRawIndex = this._getRawIdxIdentity;
            var a = e.getSource(),
                n = this.defaultDimValueGetter = i0[a.sourceFormat];
            this._dimValueGetter = i || n, this._rawExtent = [];
            var o = Nh(a);
            this._dimensions = k(t, function(s) {
                return {
                    type: s.type,
                    property: s.property
                }
            }), this._initDataFromProvider(0, e.count())
        }, r.prototype.getProvider = function() {
            return this._provider
        }, r.prototype.getSource = function() {
            return this._provider.getSource()
        }, r.prototype.ensureCalculationDimension = function(e, t) {
            var i = this._calcDimNameToIdx,
                a = this._dimensions,
                n = i.get(e);
            if (n != null) {
                if (a[n].type === t) return n
            } else n = a.length;
            return a[n] = {
                type: t
            }, i.set(e, n), this._chunks[n] = new gD[t || "float"](this._rawCount), this._rawExtent[n] = El(), n
        }, r.prototype.collectOrdinalMeta = function(e, t) {
            var i = this._chunks[e],
                a = this._dimensions[e],
                n = this._rawExtent,
                o = a.ordinalOffset || 0,
                s = i.length;
            o === 0 && (n[e] = El());
            for (var l = n[e], u = o; u < s; u++) {
                var f = i[u] = t.parseAndCollect(i[u]);
                isNaN(f) || (l[0] = Math.min(f, l[0]), l[1] = Math.max(f, l[1]))
            }
            a.ordinalMeta = t, a.ordinalOffset = s, a.type = "ordinal"
        }, r.prototype.getOrdinalMeta = function(e) {
            var t = this._dimensions[e],
                i = t.ordinalMeta;
            return i
        }, r.prototype.getDimensionProperty = function(e) {
            var t = this._dimensions[e];
            return t && t.property
        }, r.prototype.appendData = function(e) {
            var t = this._provider,
                i = this.count();
            t.appendData(e);
            var a = t.count();
            return t.persistent || (a += i), i < a && this._initDataFromProvider(i, a, !0), [i, a]
        }, r.prototype.appendValues = function(e, t) {
            for (var i = this._chunks, a = this._dimensions, n = a.length, o = this._rawExtent, s = this.count(), l = s + Math.max(e.length, t || 0), u = 0; u < n; u++) {
                var f = a[u];
                mD(i, u, f.type, l, !0)
            }
            for (var p = [], c = s; c < l; c++)
                for (var h = c - s, v = 0; v < n; v++) {
                    var f = a[v],
                        d = i0.arrayRows.call(this, e[h] || p, f.property, h, v);
                    i[v][c] = d;
                    var m = o[v];
                    d < m[0] && (m[0] = d), d > m[1] && (m[1] = d)
                }
            return this._rawCount = this._count = l, {
                start: s,
                end: l
            }
        }, r.prototype._initDataFromProvider = function(e, t, i) {
            for (var a = this._provider, n = this._chunks, o = this._dimensions, s = o.length, l = this._rawExtent, u = k(o, function(y) {
                    return y.property
                }), f = 0; f < s; f++) {
                var p = o[f];
                l[f] || (l[f] = El()), mD(n, f, p.type, t, i)
            }
            if (a.fillStorage) a.fillStorage(e, t, n, l);
            else
                for (var c = [], h = e; h < t; h++) {
                    c = a.getItem(h, c);
                    for (var v = 0; v < s; v++) {
                        var d = n[v],
                            m = this._dimValueGetter(c, u[v], h, v);
                        d[h] = m;
                        var g = l[v];
                        m < g[0] && (g[0] = m), m > g[1] && (g[1] = m)
                    }
                }!a.persistent && a.clean && a.clean(), this._rawCount = this._count = t, this._extent = []
        }, r.prototype.count = function() {
            return this._count
        }, r.prototype.get = function(e, t) {
            if (!(t >= 0 && t < this._count)) return NaN;
            var i = this._chunks[e];
            return i ? i[this.getRawIndex(t)] : NaN
        }, r.prototype.getValues = function(e, t) {
            var i = [],
                a = [];
            if (t == null) {
                t = e, e = [];
                for (var n = 0; n < this._dimensions.length; n++) a.push(n)
            } else a = e;
            for (var n = 0, o = a.length; n < o; n++) i.push(this.get(a[n], t));
            return i
        }, r.prototype.getByRawIndex = function(e, t) {
            if (!(t >= 0 && t < this._rawCount)) return NaN;
            var i = this._chunks[e];
            return i ? i[t] : NaN
        }, r.prototype.getSum = function(e) {
            var t = this._chunks[e],
                i = 0;
            if (t)
                for (var a = 0, n = this.count(); a < n; a++) {
                    var o = this.get(e, a);
                    isNaN(o) || (i += o)
                }
            return i
        }, r.prototype.getMedian = function(e) {
            var t = [];
            this.each([e], function(n) {
                isNaN(n) || t.push(n)
            });
            var i = t.sort(function(n, o) {
                    return n - o
                }),
                a = this.count();
            return a === 0 ? 0 : a % 2 === 1 ? i[(a - 1) / 2] : (i[a / 2] + i[a / 2 - 1]) / 2
        }, r.prototype.indexOfRawIndex = function(e) {
            if (e >= this._rawCount || e < 0) return -1;
            if (!this._indices) return e;
            var t = this._indices,
                i = t[e];
            if (i != null && i < this._count && i === e) return e;
            for (var a = 0, n = this._count - 1; a <= n;) {
                var o = (a + n) / 2 | 0;
                if (t[o] < e) a = o + 1;
                else if (t[o] > e) n = o - 1;
                else return o
            }
            return -1
        }, r.prototype.indicesOfNearest = function(e, t, i) {
            var a = this._chunks,
                n = a[e],
                o = [];
            if (!n) return o;
            i == null && (i = 1 / 0);
            for (var s = 1 / 0, l = -1, u = 0, f = 0, p = this.count(); f < p; f++) {
                var c = this.getRawIndex(f),
                    h = t - n[c],
                    v = Math.abs(h);
                v <= i && ((v < s || v === s && h >= 0 && l < 0) && (s = v, l = h, u = 0), h === l && (o[u++] = f))
            }
            return o.length = u, o
        }, r.prototype.getIndices = function() {
            var e, t = this._indices;
            if (t) {
                var i = t.constructor,
                    a = this._count;
                if (i === Array) {
                    e = new i(a);
                    for (var n = 0; n < a; n++) e[n] = t[n]
                } else e = new i(t.buffer, 0, a)
            } else {
                var i = Il(this._rawCount);
                e = new i(this.count());
                for (var n = 0; n < e.length; n++) e[n] = n
            }
            return e
        }, r.prototype.filter = function(e, t) {
            if (!this._count) return this;
            for (var i = this.clone(), a = i.count(), n = Il(i._rawCount), o = new n(a), s = [], l = e.length, u = 0, f = e[0], p = i._chunks, c = 0; c < a; c++) {
                var h = void 0,
                    v = i.getRawIndex(c);
                if (l === 0) h = t(c);
                else if (l === 1) {
                    var d = p[f][v];
                    h = t(d, c)
                } else {
                    for (var m = 0; m < l; m++) s[m] = p[e[m]][v];
                    s[m] = c, h = t.apply(null, s)
                }
                h && (o[u++] = v)
            }
            return u < a && (i._indices = o), i._count = u, i._extent = [], i._updateGetRawIdx(), i
        }, r.prototype.selectRange = function(e) {
            var t = this.clone(),
                i = t._count;
            if (!i) return this;
            var a = ft(e),
                n = a.length;
            if (!n) return this;
            var o = t.count(),
                s = Il(t._rawCount),
                l = new s(o),
                u = 0,
                f = a[0],
                p = e[f][0],
                c = e[f][1],
                h = t._chunks,
                v = !1;
            if (!t._indices) {
                var d = 0;
                if (n === 1) {
                    for (var m = h[a[0]], g = 0; g < i; g++) {
                        var y = m[g];
                        (y >= p && y <= c || isNaN(y)) && (l[u++] = d), d++
                    }
                    v = !0
                } else if (n === 2) {
                    for (var m = h[a[0]], x = h[a[1]], _ = e[a[1]][0], S = e[a[1]][1], g = 0; g < i; g++) {
                        var y = m[g],
                            b = x[g];
                        (y >= p && y <= c || isNaN(y)) && (b >= _ && b <= S || isNaN(b)) && (l[u++] = d), d++
                    }
                    v = !0
                }
            }
            if (!v)
                if (n === 1)
                    for (var g = 0; g < o; g++) {
                        var T = t.getRawIndex(g),
                            y = h[a[0]][T];
                        (y >= p && y <= c || isNaN(y)) && (l[u++] = T)
                    } else
                        for (var g = 0; g < o; g++) {
                            for (var C = !0, T = t.getRawIndex(g), A = 0; A < n; A++) {
                                var D = a[A],
                                    y = h[D][T];
                                (y < e[D][0] || y > e[D][1]) && (C = !1)
                            }
                            C && (l[u++] = t.getRawIndex(g))
                        }
            return u < o && (t._indices = l), t._count = u, t._extent = [], t._updateGetRawIdx(), t
        }, r.prototype.map = function(e, t) {
            var i = this.clone(e);
            return this._updateDims(i, e, t), i
        }, r.prototype.modify = function(e, t) {
            this._updateDims(this, e, t)
        }, r.prototype._updateDims = function(e, t, i) {
            for (var a = e._chunks, n = [], o = t.length, s = e.count(), l = [], u = e._rawExtent, f = 0; f < t.length; f++) u[t[f]] = El();
            for (var p = 0; p < s; p++) {
                for (var c = e.getRawIndex(p), h = 0; h < o; h++) l[h] = a[t[h]][c];
                l[o] = p;
                var v = i && i.apply(null, l);
                if (v != null) {
                    typeof v != "object" && (n[0] = v, v = n);
                    for (var f = 0; f < v.length; f++) {
                        var d = t[f],
                            m = v[f],
                            g = u[d],
                            y = a[d];
                        y && (y[c] = m), m < g[0] && (g[0] = m), m > g[1] && (g[1] = m)
                    }
                }
            }
        }, r.prototype.lttbDownSample = function(e, t) {
            var i = this.clone([e], !0),
                a = i._chunks,
                n = a[e],
                o = this.count(),
                s = 0,
                l = Math.floor(1 / t),
                u = this.getRawIndex(0),
                f, p, c, h = new(Il(this._rawCount))(Math.min((Math.ceil(o / l) + 2) * 2, o));
            h[s++] = u;
            for (var v = 1; v < o - 1; v += l) {
                for (var d = Math.min(v + l, o - 1), m = Math.min(v + l * 2, o), g = (m + d) / 2, y = 0, x = d; x < m; x++) {
                    var _ = this.getRawIndex(x),
                        S = n[_];
                    isNaN(S) || (y += S)
                }
                y /= m - d;
                var b = v,
                    T = Math.min(v + l, o),
                    C = v - 1,
                    A = n[u];
                f = -1, c = b;
                for (var D = -1, M = 0, x = b; x < T; x++) {
                    var _ = this.getRawIndex(x),
                        S = n[_];
                    if (isNaN(S)) {
                        M++, D < 0 && (D = _);
                        continue
                    }
                    p = Math.abs((C - g) * (S - A) - (C - x) * (y - A)), p > f && (f = p, c = _)
                }
                M > 0 && M < T - b && (h[s++] = Math.min(D, c), c = Math.max(D, c)), h[s++] = c, u = c
            }
            return h[s++] = this.getRawIndex(o - 1), i._count = s, i._indices = h, i.getRawIndex = this._getRawIdx, i
        }, r.prototype.minmaxDownSample = function(e, t) {
            for (var i = this.clone([e], !0), a = i._chunks, n = Math.floor(1 / t), o = a[e], s = this.count(), l = new(Il(this._rawCount))(Math.ceil(s / n) * 2), u = 0, f = 0; f < s; f += n) {
                var p = f,
                    c = o[this.getRawIndex(p)],
                    h = f,
                    v = o[this.getRawIndex(h)],
                    d = n;
                f + n > s && (d = s - f);
                for (var m = 0; m < d; m++) {
                    var g = this.getRawIndex(f + m),
                        y = o[g];
                    y < c && (c = y, p = f + m), y > v && (v = y, h = f + m)
                }
                var x = this.getRawIndex(p),
                    _ = this.getRawIndex(h);
                p < h ? (l[u++] = x, l[u++] = _) : (l[u++] = _, l[u++] = x)
            }
            return i._count = u, i._indices = l, i._updateGetRawIdx(), i
        }, r.prototype.downSample = function(e, t, i, a) {
            for (var n = this.clone([e], !0), o = n._chunks, s = [], l = Math.floor(1 / t), u = o[e], f = this.count(), p = n._rawExtent[e] = El(), c = new(Il(this._rawCount))(Math.ceil(f / l)), h = 0, v = 0; v < f; v += l) {
                l > f - v && (l = f - v, s.length = l);
                for (var d = 0; d < l; d++) {
                    var m = this.getRawIndex(v + d);
                    s[d] = u[m]
                }
                var g = i(s),
                    y = this.getRawIndex(Math.min(v + a(s, g) || 0, f - 1));
                u[y] = g, g < p[0] && (p[0] = g), g > p[1] && (p[1] = g), c[h++] = y
            }
            return n._count = h, n._indices = c, n._updateGetRawIdx(), n
        }, r.prototype.each = function(e, t) {
            if (this._count)
                for (var i = e.length, a = this._chunks, n = 0, o = this.count(); n < o; n++) {
                    var s = this.getRawIndex(n);
                    switch (i) {
                        case 0:
                            t(n);
                            break;
                        case 1:
                            t(a[e[0]][s], n);
                            break;
                        case 2:
                            t(a[e[0]][s], a[e[1]][s], n);
                            break;
                        default:
                            for (var l = 0, u = []; l < i; l++) u[l] = a[e[l]][s];
                            u[l] = n, t.apply(null, u)
                    }
                }
        }, r.prototype.getDataExtent = function(e) {
            var t = this._chunks[e],
                i = El();
            if (!t) return i;
            var a = this.count(),
                n = !this._indices,
                o;
            if (n) return this._rawExtent[e].slice();
            if (o = this._extent[e], o) return o.slice();
            o = i;
            for (var s = o[0], l = o[1], u = 0; u < a; u++) {
                var f = this.getRawIndex(u),
                    p = t[f];
                p < s && (s = p), p > l && (l = p)
            }
            return o = [s, l], this._extent[e] = o, o
        }, r.prototype.getRawDataItem = function(e) {
            var t = this.getRawIndex(e);
            if (this._provider.persistent) return this._provider.getItem(t);
            for (var i = [], a = this._chunks, n = 0; n < a.length; n++) i.push(a[n][t]);
            return i
        }, r.prototype.clone = function(e, t) {
            var i = new r,
                a = this._chunks,
                n = e && Me(e, function(s, l) {
                    return s[l] = !0, s
                }, {});
            if (n)
                for (var o = 0; o < a.length; o++) i._chunks[o] = n[o] ? VG(a[o]) : a[o];
            else i._chunks = a;
            return this._copyCommonProps(i), t || (i._indices = this._cloneIndices()), i._updateGetRawIdx(), i
        }, r.prototype._copyCommonProps = function(e) {
            e._count = this._count, e._rawCount = this._rawCount, e._provider = this._provider, e._dimensions = this._dimensions, e._extent = Q(this._extent), e._rawExtent = Q(this._rawExtent)
        }, r.prototype._cloneIndices = function() {
            if (this._indices) {
                var e = this._indices.constructor,
                    t = void 0;
                if (e === Array) {
                    var i = this._indices.length;
                    t = new e(i);
                    for (var a = 0; a < i; a++) t[a] = this._indices[a]
                } else t = new e(this._indices);
                return t
            }
            return null
        }, r.prototype._getRawIdxIdentity = function(e) {
            return e
        }, r.prototype._getRawIdx = function(e) {
            return e < this._count && e >= 0 ? this._indices[e] : -1
        }, r.prototype._updateGetRawIdx = function() {
            this.getRawIndex = this._indices ? this._getRawIdx : this._getRawIdxIdentity
        }, r.internalField = function() {
            function e(t, i, a, n) {
                return Ti(t[n], this._dimensions[n])
            }
            i0 = {
                arrayRows: e,
                objectRows: function(t, i, a, n) {
                    return Ti(t[i], this._dimensions[n])
                },
                keyedColumns: e,
                original: function(t, i, a, n) {
                    var o = t && (t.value == null ? t : t.value);
                    return Ti(o instanceof Array ? o[n] : o, this._dimensions[n])
                },
                typedArray: function(t, i, a, n) {
                    return t[n]
                }
            }
        }(), r
    }(),
    Nf = BG;
var Bh = function() {
    function r(e) {
        this._sourceList = [], this._storeList = [], this._upstreamSignList = [], this._versionSignBase = 0, this._dirty = !0, this._sourceHost = e
    }
    return r.prototype.dirty = function() {
        this._setLocalSource([], []), this._storeList = [], this._dirty = !0
    }, r.prototype._setLocalSource = function(e, t) {
        this._sourceList = e, this._upstreamSignList = t, this._versionSignBase++, this._versionSignBase > 9e10 && (this._versionSignBase = 0)
    }, r.prototype._getVersionSign = function() {
        return this._sourceHost.uid + "_" + this._versionSignBase
    }, r.prototype.prepareSource = function() {
        this._isDirty() && (this._createSource(), this._dirty = !1)
    }, r.prototype._createSource = function() {
        this._setLocalSource([], []);
        var e = this._sourceHost,
            t = this._getUpstreamSourceManagers(),
            i = !!t.length,
            a, n;
        if (Vh(e)) {
            var o = e,
                s = void 0,
                l = void 0,
                u = void 0;
            if (i) {
                var f = t[0];
                f.prepareSource(), u = f.getSource(), s = u.data, l = u.sourceFormat, n = [f._getVersionSign()]
            } else s = o.get("data", !0), l = de(s) ? ai : Ze, n = [];
            var p = this._getSourceMetaRawOption() || {},
                c = u && u.metaRawOption || {},
                h = ot(p.seriesLayoutBy, c.seriesLayoutBy) || null,
                v = ot(p.sourceHeader, c.sourceHeader),
                d = ot(p.dimensions, c.dimensions),
                m = h !== c.seriesLayoutBy || !!v != !!c.sourceHeader || d;
            a = m ? [Rf(s, {
                seriesLayoutBy: h,
                sourceHeader: v,
                dimensions: d
            }, l)] : []
        } else {
            var g = e;
            if (i) {
                var y = this._applyTransform(t);
                a = y.sourceList, n = y.upstreamSignList
            } else {
                var x = g.get("source", !0);
                a = [Rf(x, this._getSourceMetaRawOption(), null)], n = []
            }
        }
        this._setLocalSource(a, n)
    }, r.prototype._applyTransform = function(e) {
        var t = this._sourceHost,
            i = t.get("transform", !0),
            a = t.get("fromTransformResult", !0);
        if (a != null) {
            var n = "";
            e.length !== 1 && yD(n)
        }
        var o, s = [],
            l = [];
        return w(e, function(u) {
            u.prepareSource();
            var f = u.getSource(a || 0),
                p = "";
            a != null && !f && yD(p), s.push(f), l.push(u._getVersionSign())
        }), i ? o = vD(i, s, {
            datasetIndex: t.componentIndex
        }) : a != null && (o = [aD(s[0])]), {
            sourceList: o,
            upstreamSignList: l
        }
    }, r.prototype._isDirty = function() {
        if (this._dirty) return !0;
        for (var e = this._getUpstreamSourceManagers(), t = 0; t < e.length; t++) {
            var i = e[t];
            if (i._isDirty() || this._upstreamSignList[t] !== i._getVersionSign()) return !0
        }
    }, r.prototype.getSource = function(e) {
        e = e || 0;
        var t = this._sourceList[e];
        if (!t) {
            var i = this._getUpstreamSourceManagers();
            return i[0] && i[0].getSource(e)
        }
        return t
    }, r.prototype.getSharedDataStore = function(e) {
        var t = e.makeStoreSchema();
        return this._innerGetDataStore(t.dimensions, e.source, t.hash)
    }, r.prototype._innerGetDataStore = function(e, t, i) {
        var a = 0,
            n = this._storeList,
            o = n[a];
        o || (o = n[a] = {});
        var s = o[i];
        if (!s) {
            var l = this._getUpstreamSourceManagers()[0];
            Vh(this._sourceHost) && l ? s = l._innerGetDataStore(e, t, i) : (s = new Nf, s.initData(new Oh(t, e.length), e)), o[i] = s
        }
        return s
    }, r.prototype._getUpstreamSourceManagers = function() {
        var e = this._sourceHost;
        if (Vh(e)) {
            var t = Dh(e);
            return t ? [t.getSourceManager()] : []
        } else return k(kA(e), function(i) {
            return i.getSourceManager()
        })
    }, r.prototype._getSourceMetaRawOption = function() {
        var e = this._sourceHost,
            t, i, a;
        if (Vh(e)) t = e.get("seriesLayoutBy", !0), i = e.get("sourceHeader", !0), a = e.get("dimensions", !0);
        else if (!this._getUpstreamSourceManagers().length) {
            var n = e;
            t = n.get("seriesLayoutBy", !0), i = n.get("sourceHeader", !0), a = n.get("dimensions", !0)
        }
        return {
            seriesLayoutBy: t,
            sourceHeader: i,
            dimensions: a
        }
    }, r
}();

function n0(r) {
    var e = r.option.transform;
    e && vn(r.option.transform)
}

function Vh(r) {
    return r.mainType === "series"
}

function yD(r) {
    throw new Error(r)
}
var FG = "line-height:1";

function xD(r) {
    var e = r.lineHeight;
    return e == null ? FG : "line-height:" + xe(e + "") + "px"
}

function _D(r, e) {
    var t = r.color || "#6e7079",
        i = r.fontSize || 12,
        a = r.fontWeight || "400",
        n = r.color || "#464646",
        o = r.fontSize || 14,
        s = r.fontWeight || "900";
    return e === "html" ? {
        nameStyle: "font-size:" + xe(i + "") + "px;color:" + xe(t) + ";font-weight:" + xe(a + ""),
        valueStyle: "font-size:" + xe(o + "") + "px;color:" + xe(n) + ";font-weight:" + xe(s + "")
    } : {
        nameStyle: {
            fontSize: i,
            fill: t,
            fontWeight: a
        },
        valueStyle: {
            fontSize: o,
            fill: n,
            fontWeight: s
        }
    }
}
var GG = [0, 10, 20, 30],
    HG = ["", `
`, `

`, `


`];

function Jt(r, e) {
    return e.type = r, e
}

function o0(r) {
    return r.type === "section"
}

function SD(r) {
    return o0(r) ? WG : YG
}

function bD(r) {
    if (o0(r)) {
        var e = 0,
            t = r.blocks.length,
            i = t > 1 || t > 0 && !r.noHeader;
        return w(r.blocks, function(a) {
            var n = bD(a);
            n >= e && (e = n + +(i && (!n || o0(a) && !a.noHeader)))
        }), e
    }
    return 0
}

function WG(r, e, t, i) {
    var a = e.noHeader,
        n = ZG(bD(e)),
        o = [],
        s = e.blocks || [];
    jt(!s || z(s)), s = s || [];
    var l = r.orderMode;
    if (e.sortBlocks && l) {
        s = s.slice();
        var u = {
            valueAsc: "asc",
            valueDesc: "desc"
        };
        if ($(u, l)) {
            var f = new kh(u[l], null);
            s.sort(function(d, m) {
                return f.evaluate(d.sortParam, m.sortParam)
            })
        } else l === "seriesDesc" && s.reverse()
    }
    w(s, function(d, m) {
        var g = e.valueFormatter,
            y = SD(d)(g ? O(O({}, r), {
                valueFormatter: g
            }) : r, d, m > 0 ? n.html : 0, i);
        y != null && o.push(y)
    });
    var p = r.renderMode === "richText" ? o.join(n.richText) : s0(i, o.join(""), a ? t : n.html);
    if (a) return p;
    var c = bh(e.header, "ordinal", r.useUTC),
        h = _D(i, r.renderMode).nameStyle,
        v = xD(i);
    return r.renderMode === "richText" ? wD(r, c, h) + n.richText + p : s0(i, '<div style="' + h + ";" + v + ';">' + xe(c) + "</div>" + p, t)
}

function YG(r, e, t, i) {
    var a = r.renderMode,
        n = e.noName,
        o = e.noValue,
        s = !e.markerType,
        l = e.name,
        u = r.useUTC,
        f = e.valueFormatter || r.valueFormatter || function(_) {
            return _ = z(_) ? _ : [_], k(_, function(S, b) {
                return bh(S, z(h) ? h[b] : h, u)
            })
        };
    if (!(n && o)) {
        var p = s ? "" : r.markupStyleCreator.makeTooltipMarker(e.markerType, e.markerColor || "#333", a),
            c = n ? "" : bh(l, "ordinal", u),
            h = e.valueType,
            v = o ? [] : f(e.value, e.dataIndex),
            d = !s || !n,
            m = !s && n,
            g = _D(i, a),
            y = g.nameStyle,
            x = g.valueStyle;
        return a === "richText" ? (s ? "" : p) + (n ? "" : wD(r, c, y)) + (o ? "" : KG(r, v, d, m, x)) : s0(i, (s ? "" : p) + (n ? "" : XG(c, !s, y)) + (o ? "" : qG(v, d, m, x)), t)
    }
}

function l0(r, e, t, i, a, n) {
    if (r) {
        var o = SD(r),
            s = {
                useUTC: a,
                renderMode: t,
                orderMode: i,
                markupStyleCreator: e,
                valueFormatter: r.valueFormatter
            };
        return o(s, r, 0, n)
    }
}

function ZG(r) {
    return {
        html: GG[r],
        richText: HG[r]
    }
}

function s0(r, e, t) {
    var i = '<div style="clear:both"></div>',
        a = "margin: " + t + "px 0 0",
        n = xD(r);
    return '<div style="' + a + ";" + n + ';">' + e + i + "</div>"
}

function XG(r, e, t) {
    var i = e ? "margin-left:2px" : "";
    return '<span style="' + t + ";" + i + '">' + xe(r) + "</span>"
}

function qG(r, e, t, i) {
    var a = t ? "10px" : "20px",
        n = e ? "float:right;margin-left:" + a : "";
    return r = z(r) ? r : [r], '<span style="' + n + ";" + i + '">' + k(r, function(o) {
        return xe(o)
    }).join("&nbsp;&nbsp;") + "</span>"
}

function wD(r, e, t) {
    return r.markupStyleCreator.wrapRichTextStyle(e, t)
}

function KG(r, e, t, i, a) {
    var n = [a],
        o = i ? 10 : 20;
    return t && n.push({
        padding: [0, 0, 0, o],
        align: "right"
    }), r.markupStyleCreator.wrapRichTextStyle(z(e) ? e.join("  ") : e, n)
}

function Fh(r, e) {
    var t = r.getData().getItemVisual(e, "style"),
        i = t[r.visualDrawType];
    return Yi(i)
}

function Gh(r, e) {
    var t = r.get("padding");
    return t ? ? (e === "richText" ? [8, 10] : 10)
}
var Hh = function() {
    function r() {
        this.richTextStyles = {}, this._nextStyleNameId = kc()
    }
    return r.prototype._generateStyleName = function() {
        return "__EC_aUTo_" + this._nextStyleNameId++
    }, r.prototype.makeTooltipMarker = function(e, t, i) {
        var a = i === "richText" ? this._generateStyleName() : null,
            n = wh({
                color: t,
                type: e,
                renderMode: i,
                markerId: a
            });
        return F(n) ? n : (this.richTextStyles[a] = n.style, n.content)
    }, r.prototype.wrapRichTextStyle = function(e, t) {
        var i = {};
        z(t) ? w(t, function(n) {
            return O(i, n)
        }) : O(i, t);
        var a = this._generateStyleName();
        return this.richTextStyles[a] = i, "{" + a + "|" + e + "}"
    }, r
}();

function Wh(r) {
    var e = r.series,
        t = r.dataIndex,
        i = r.multipleSeries,
        a = e.getData(),
        n = a.mapDimensionsAll("defaultedTooltip"),
        o = n.length,
        s = e.getRawValue(t),
        l = z(s),
        u = Fh(e, t),
        f, p, c, h;
    if (o > 1 || l && !o) {
        var v = jG(s, e, t, n, u);
        f = v.inlineValues, p = v.inlineValueTypes, c = v.blocks, h = v.inlineValues[0]
    } else if (o) {
        var d = a.getDimensionInfo(n[0]);
        h = f = en(a, t, n[0]), p = d.type
    } else h = f = l ? s[0] : s;
    var m = nl(e),
        g = m && e.name || "",
        y = a.getName(t),
        x = i ? g : y;
    return Jt("section", {
        header: g,
        noHeader: i || !m,
        sortParam: h,
        blocks: [Jt("nameValue", {
            markerType: "item",
            markerColor: u,
            name: x,
            noName: !Ie(x),
            value: f,
            valueType: p,
            dataIndex: t
        })].concat(c || [])
    })
}

function jG(r, e, t, i, a) {
    var n = e.getData(),
        o = Me(r, function(p, c, h) {
            var v = n.getDimensionInfo(h);
            return p = p || v && v.tooltip !== !1 && v.displayName != null
        }, !1),
        s = [],
        l = [],
        u = [];
    i.length ? w(i, function(p) {
        f(en(n, t, p), p)
    }) : w(r, f);

    function f(p, c) {
        var h = n.getDimensionInfo(c);
        !h || h.otherDims.tooltip === !1 || (o ? u.push(Jt("nameValue", {
            markerType: "subItem",
            markerColor: a,
            name: h.displayName,
            value: p,
            valueType: h.type
        })) : (s.push(p), l.push(h.type)))
    }
    return {
        inlineValues: s,
        inlineValueTypes: l,
        blocks: u
    }
}
var Un = lt();

function Yh(r, e) {
    return r.getName(e) || r.getId(e)
}
var Of = "__universalTransitionEnabled",
    Zh = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t._selectedDataIndicesMap = {}, t
        }
        return e.prototype.init = function(t, i, a) {
            this.seriesIndex = this.componentIndex, this.dataTask = kn({
                count: QG,
                reset: $G
            }), this.dataTask.context = {
                model: this
            }, this.mergeDefaultAndTheme(t, a);
            var n = Un(this).sourceManager = new Bh(this);
            n.prepareSource();
            var o = this.getInitialData(t, a);
            CD(o, this), this.dataTask.context.data = o, Un(this).dataBeforeProcessed = o, TD(this), this._initSelectedMapFromData(o)
        }, e.prototype.mergeDefaultAndTheme = function(t, i) {
            var a = zn(this),
                n = a ? bi(t) : {},
                o = this.subType;
            yt.hasClass(o) && (o += "Series"), nt(t, i.getTheme().get(this.subType)), nt(t, this.getDefaultOption()), Qr(t, "label", ["show"]), this.fillDataTextStyle(t.data), a && Ur(t, n, a)
        }, e.prototype.mergeOption = function(t, i) {
            t = nt(this.option, t, !0), this.fillDataTextStyle(t.data);
            var a = zn(this);
            a && Ur(this.option, t, a);
            var n = Un(this).sourceManager;
            n.dirty(), n.prepareSource();
            var o = this.getInitialData(t, i);
            CD(o, this), this.dataTask.dirty(), this.dataTask.context.data = o, Un(this).dataBeforeProcessed = o, TD(this), this._initSelectedMapFromData(o)
        }, e.prototype.fillDataTextStyle = function(t) {
            if (t && !de(t))
                for (var i = ["show"], a = 0; a < t.length; a++) t[a] && t[a].label && Qr(t[a], "label", i)
        }, e.prototype.getInitialData = function(t, i) {}, e.prototype.appendData = function(t) {
            var i = this.getRawData();
            i.appendData(t.data)
        }, e.prototype.getData = function(t) {
            var i = u0(this);
            if (i) {
                var a = i.context.data;
                return t == null || !a.getLinkedData ? a : a.getLinkedData(t)
            } else return Un(this).data
        }, e.prototype.getAllData = function() {
            var t = this.getData();
            return t && t.getLinkedDataAll ? t.getLinkedDataAll() : [{
                data: t
            }]
        }, e.prototype.setData = function(t) {
            var i = u0(this);
            if (i) {
                var a = i.context;
                a.outputData = t, i !== this.dataTask && (a.data = t)
            }
            Un(this).data = t
        }, e.prototype.getEncode = function() {
            var t = this.get("encode", !0);
            if (t) return Y(t)
        }, e.prototype.getSourceManager = function() {
            return Un(this).sourceManager
        }, e.prototype.getSource = function() {
            return this.getSourceManager().getSource()
        }, e.prototype.getRawData = function() {
            return Un(this).dataBeforeProcessed
        }, e.prototype.getColorBy = function() {
            var t = this.get("colorBy");
            return t || "series"
        }, e.prototype.isColorBySeries = function() {
            return this.getColorBy() === "series"
        }, e.prototype.getBaseAxis = function() {
            var t = this.coordinateSystem;
            return t && t.getBaseAxis && t.getBaseAxis()
        }, e.prototype.formatTooltip = function(t, i, a) {
            return Wh({
                series: this,
                dataIndex: t,
                multipleSeries: i
            })
        }, e.prototype.isAnimationEnabled = function() {
            var t = this.ecModel;
            if (Ct.node && !(t && t.ssr)) return !1;
            var i = this.getShallow("animation");
            return i && this.getData().count() > this.getShallow("animationThreshold") && (i = !1), !!i
        }, e.prototype.restoreData = function() {
            this.dataTask.dirty()
        }, e.prototype.getColorFromPalette = function(t, i, a) {
            var n = this.ecModel,
                o = Df.prototype.getColorFromPalette.call(this, t, i, a);
            return o || (o = n.getColorFromPalette(t, i, a)), o
        }, e.prototype.coordDimToDataDim = function(t) {
            return this.getRawData().mapDimensionsAll(t)
        }, e.prototype.getProgressive = function() {
            return this.get("progressive")
        }, e.prototype.getProgressiveThreshold = function() {
            return this.get("progressiveThreshold")
        }, e.prototype.select = function(t, i) {
            this._innerSelect(this.getData(i), t)
        }, e.prototype.unselect = function(t, i) {
            var a = this.option.selectedMap;
            if (a) {
                var n = this.option.selectedMode,
                    o = this.getData(i);
                if (n === "series" || a === "all") {
                    this.option.selectedMap = {}, this._selectedDataIndicesMap = {};
                    return
                }
                for (var s = 0; s < t.length; s++) {
                    var l = t[s],
                        u = Yh(o, l);
                    a[u] = !1, this._selectedDataIndicesMap[u] = -1
                }
            }
        }, e.prototype.toggleSelect = function(t, i) {
            for (var a = [], n = 0; n < t.length; n++) a[0] = t[n], this.isSelected(t[n], i) ? this.unselect(a, i) : this.select(a, i)
        }, e.prototype.getSelectedDataIndices = function() {
            if (this.option.selectedMap === "all") return [].slice.call(this.getData().getIndices());
            for (var t = this._selectedDataIndicesMap, i = ft(t), a = [], n = 0; n < i.length; n++) {
                var o = t[i[n]];
                o >= 0 && a.push(o)
            }
            return a
        }, e.prototype.isSelected = function(t, i) {
            var a = this.option.selectedMap;
            if (!a) return !1;
            var n = this.getData(i);
            return (a === "all" || a[Yh(n, t)]) && !n.getItemModel(t).get(["select", "disabled"])
        }, e.prototype.isUniversalTransitionEnabled = function() {
            if (this[Of]) return !0;
            var t = this.option.universalTransition;
            return t ? t === !0 ? !0 : t && t.enabled : !1
        }, e.prototype._innerSelect = function(t, i) {
            var a, n, o = this.option,
                s = o.selectedMode,
                l = i.length;
            if (!(!s || !l)) {
                if (s === "series") o.selectedMap = "all";
                else if (s === "multiple") {
                    j(o.selectedMap) || (o.selectedMap = {});
                    for (var u = o.selectedMap, f = 0; f < l; f++) {
                        var p = i[f],
                            c = Yh(t, p);
                        u[c] = !0, this._selectedDataIndicesMap[c] = t.getRawIndex(p)
                    }
                } else if (s === "single" || s === !0) {
                    var h = i[l - 1],
                        c = Yh(t, h);
                    o.selectedMap = (a = {}, a[c] = !0, a), this._selectedDataIndicesMap = (n = {}, n[c] = t.getRawIndex(h), n)
                }
            }
        }, e.prototype._initSelectedMapFromData = function(t) {
            if (!this.option.selectedMap) {
                var i = [];
                t.hasItemOption && t.each(function(a) {
                    var n = t.getRawDataItem(a);
                    n && n.selected && i.push(a)
                }), i.length > 0 && this._innerSelect(t, i)
            }
        }, e.registerClass = function(t) {
            return yt.registerClass(t)
        }, e.protoInitialize = function() {
            var t = e.prototype;
            t.type = "series.__base__", t.seriesIndex = 0, t.ignoreStyleOnData = !1, t.hasSymbolVisual = !1, t.defaultSymbol = "circle", t.visualStyleAccessPath = "itemStyle", t.visualDrawType = "fill"
        }(), e
    }(yt);
Bt(Zh, ps);
Bt(Zh, Df);
Bc(Zh, yt);

function TD(r) {
    var e = r.name;
    nl(r) || (r.name = JG(r) || e)
}

function JG(r) {
    var e = r.getRawData(),
        t = e.mapDimensionsAll("seriesName"),
        i = [];
    return w(t, function(a) {
        var n = e.getDimensionInfo(a);
        n.displayName && i.push(n.displayName)
    }), i.join(" ")
}

function QG(r) {
    return r.model.getRawData().count()
}

function $G(r) {
    var e = r.model;
    return e.setData(e.getRawData().cloneShallow()), t5
}

function t5(r, e) {
    e.outputData && r.end > e.outputData.count() && e.model.getRawData().cloneShallow(e.outputData)
}

function CD(r, e) {
    w(na(r.CHANGABLE_METHODS, r.DOWNSAMPLE_METHODS), function(t) {
        r.wrapMethod(t, rt(e5, e))
    })
}

function e5(r, e) {
    var t = u0(r);
    return t && t.setOutputEnd((e || this).count()), e
}

function u0(r) {
    var e = (r.ecModel || {}).scheduler,
        t = e && e.getPipeline(r.uid);
    if (t) {
        var i = t.currentTask;
        if (i) {
            var a = i.agentStubMap;
            a && (i = a.get(r.uid))
        }
        return i
    }
}
var Lt = Zh;
var f0 = function() {
    function r() {
        this.group = new J, this.uid = Si("viewComponent")
    }
    return r.prototype.init = function(e, t) {}, r.prototype.render = function(e, t, i, a) {}, r.prototype.dispose = function(e, t) {}, r.prototype.updateView = function(e, t, i, a) {}, r.prototype.updateLayout = function(e, t, i, a) {}, r.prototype.updateVisual = function(e, t, i, a) {}, r.prototype.toggleBlurSeries = function(e, t, i) {}, r.prototype.eachRendered = function(e) {
        var t = this.group;
        t && t.traverse(e)
    }, r
}();
ol(f0);
Cn(f0);
var It = f0;

function ni() {
    var r = lt();
    return function(e) {
        var t = r(e),
            i = e.pipelineContext,
            a = !!t.large,
            n = !!t.progressiveRender,
            o = t.large = !!(i && i.large),
            s = t.progressiveRender = !!(i && i.progressiveRender);
        return (a !== o || n !== s) && "reset"
    }
}
var MD = lt(),
    r5 = ni(),
    p0 = function() {
        function r() {
            this.group = new J, this.uid = Si("viewChart"), this.renderTask = kn({
                plan: i5,
                reset: a5
            }), this.renderTask.context = {
                view: this
            }
        }
        return r.prototype.init = function(e, t) {}, r.prototype.render = function(e, t, i, a) {}, r.prototype.highlight = function(e, t, i, a) {
            var n = e.getData(a && a.dataType);
            n && DD(n, a, "emphasis")
        }, r.prototype.downplay = function(e, t, i, a) {
            var n = e.getData(a && a.dataType);
            n && DD(n, a, "normal")
        }, r.prototype.remove = function(e, t) {
            this.group.removeAll()
        }, r.prototype.dispose = function(e, t) {}, r.prototype.updateView = function(e, t, i, a) {
            this.render(e, t, i, a)
        }, r.prototype.updateLayout = function(e, t, i, a) {
            this.render(e, t, i, a)
        }, r.prototype.updateVisual = function(e, t, i, a) {
            this.render(e, t, i, a)
        }, r.prototype.eachRendered = function(e) {
            dr(this.group, e)
        }, r.markUpdateMethod = function(e, t) {
            MD(e).updateMethod = t
        }, r.protoInitialize = function() {
            var e = r.prototype;
            e.type = "chart"
        }(), r
    }();

function AD(r, e, t) {
    r && Pn(r) && (e === "emphasis" ? rr : ir)(r, t)
}

function DD(r, e, t) {
    var i = vi(r, e),
        a = e && e.highlightKey != null ? IC(e.highlightKey) : null;
    i != null ? w(Pt(i), function(n) {
        AD(r.getItemGraphicEl(n), t, a)
    }) : r.eachItemGraphicEl(function(n) {
        AD(n, t, a)
    })
}
ol(p0, ["dispose"]);
Cn(p0);

function i5(r) {
    return r5(r.model)
}

function a5(r) {
    var e = r.model,
        t = r.ecModel,
        i = r.api,
        a = r.payload,
        n = e.pipelineContext.progressiveRender,
        o = r.view,
        s = a && MD(a).updateMethod,
        l = n ? "incrementalPrepareRender" : s && o[s] ? s : "render";
    return l !== "render" && o[l](e, t, i, a), n5[l]
}
var n5 = {
        incrementalPrepareRender: {
            progress: function(r, e) {
                e.view.incrementalRender(r, e.model, e.ecModel, e.api, e.payload)
            }
        },
        render: {
            forceFirstProgress: !0,
            progress: function(r, e) {
                e.view.render(e.model, e.ecModel, e.api, e.payload)
            }
        }
    },
    At = p0;
var Xh = "\0__throttleOriginMethod",
    LD = "\0__throttleRate",
    ID = "\0__throttleType";

function Pl(r, e, t) {
    var i, a = 0,
        n = 0,
        o = null,
        s, l, u, f;
    e = e || 0;

    function p() {
        n = new Date().getTime(), o = null, r.apply(l, u || [])
    }
    var c = function() {
        for (var h = [], v = 0; v < arguments.length; v++) h[v] = arguments[v];
        i = new Date().getTime(), l = this, u = h;
        var d = f || e,
            m = f || t;
        f = null, s = i - (m ? a : n) - d, clearTimeout(o), m ? o = setTimeout(p, d) : s >= 0 ? p() : o = setTimeout(p, -s), a = i
    };
    return c.clear = function() {
        o && (clearTimeout(o), o = null)
    }, c.debounceNextCall = function(h) {
        f = h
    }, c
}

function Ci(r, e, t, i) {
    var a = r[e];
    if (a) {
        var n = a[Xh] || a,
            o = a[ID],
            s = a[LD];
        if (s !== t || o !== i) {
            if (t == null || !i) return r[e] = n;
            a = r[e] = Pl(n, t, i === "debounce"), a[Xh] = n, a[ID] = i, a[LD] = t
        }
        return a
    }
}

function rn(r, e) {
    var t = r[e];
    t && t[Xh] && (t.clear && t.clear(), r[e] = t[Xh])
}
var ED = lt(),
    PD = {
        itemStyle: Nr(Sy, !0),
        lineStyle: Nr(_y, !0)
    },
    o5 = {
        lineStyle: "stroke",
        itemStyle: "fill"
    };

function RD(r, e) {
    var t = r.visualStyleMapper || PD[e];
    return t || (console.warn("Unknown style type '" + e + "'."), PD.itemStyle)
}

function ND(r, e) {
    var t = r.visualDrawType || o5[e];
    return t || (console.warn("Unknown style type '" + e + "'."), "fill")
}
var OD = {
        createOnAllSeries: !0,
        performRawSeries: !0,
        reset: function(r, e) {
            var t = r.getData(),
                i = r.visualStyleAccessPath || "itemStyle",
                a = r.getModel(i),
                n = RD(r, i),
                o = n(a),
                s = a.getShallow("decal");
            s && (t.setVisual("decal", s), s.dirty = !0);
            var l = ND(r, i),
                u = o[l],
                f = X(u) ? u : null,
                p = o.fill === "auto" || o.stroke === "auto";
            if (!o[l] || f || p) {
                var c = r.getColorFromPalette(r.name, null, e.getSeriesCount());
                o[l] || (o[l] = c, t.setVisual("colorFromPalette", !0)), o.fill = o.fill === "auto" || X(o.fill) ? c : o.fill, o.stroke = o.stroke === "auto" || X(o.stroke) ? c : o.stroke
            }
            if (t.setVisual("style", o), t.setVisual("drawType", l), !e.isSeriesFiltered(r) && f) return t.setVisual("colorFromPalette", !1), {
                dataEach: function(h, v) {
                    var d = r.getDataParams(v),
                        m = O({}, o);
                    m[l] = f(d), h.setItemVisual(v, "style", m)
                }
            }
        }
    },
    zf = new Dt,
    zD = {
        createOnAllSeries: !0,
        performRawSeries: !0,
        reset: function(r, e) {
            if (!(r.ignoreStyleOnData || e.isSeriesFiltered(r))) {
                var t = r.getData(),
                    i = r.visualStyleAccessPath || "itemStyle",
                    a = RD(r, i),
                    n = t.getVisual("drawType");
                return {
                    dataEach: t.hasItemOption ? function(o, s) {
                        var l = o.getRawDataItem(s);
                        if (l && l[i]) {
                            zf.option = l[i];
                            var u = a(zf),
                                f = o.ensureUniqueItemVisual(s, "style");
                            O(f, u), zf.option.decal && (o.setItemVisual(s, "decal", zf.option.decal), zf.option.decal.dirty = !0), n in u && o.setItemVisual(s, "colorFromPalette", !1)
                        }
                    } : null
                }
            }
        }
    },
    kD = {
        performRawSeries: !0,
        overallReset: function(r) {
            var e = Y();
            r.eachSeries(function(t) {
                var i = t.getColorBy();
                if (!t.isColorBySeries()) {
                    var a = t.type + "-" + i,
                        n = e.get(a);
                    n || (n = {}, e.set(a, n)), ED(t).scope = n
                }
            }), r.eachSeries(function(t) {
                if (!(t.isColorBySeries() || r.isSeriesFiltered(t))) {
                    var i = t.getRawData(),
                        a = {},
                        n = t.getData(),
                        o = ED(t).scope,
                        s = t.visualStyleAccessPath || "itemStyle",
                        l = ND(t, s);
                    n.each(function(u) {
                        var f = n.getRawIndex(u);
                        a[f] = u
                    }), i.each(function(u) {
                        var f = a[u],
                            p = n.getItemVisual(f, "colorFromPalette");
                        if (p) {
                            var c = n.ensureUniqueItemVisual(f, "style"),
                                h = i.getName(u) || u + "",
                                v = i.count();
                            c[l] = t.getColorFromPalette(h, o, v)
                        }
                    })
                }
            })
        }
    };
var Kh = Math.PI;

function c0(r, e) {
    e = e || {}, q(e, {
        text: "loading",
        textColor: "#000",
        fontSize: 12,
        fontWeight: "normal",
        fontStyle: "normal",
        fontFamily: "sans-serif",
        maskColor: "rgba(255, 255, 255, 0.8)",
        showSpinner: !0,
        color: "#5470c6",
        spinnerRadius: 10,
        lineWidth: 5,
        zlevel: 0
    });
    var t = new J,
        i = new ht({
            style: {
                fill: e.maskColor
            },
            zlevel: e.zlevel,
            z: 1e4
        });
    t.add(i);
    var a = new dt({
            style: {
                text: e.text,
                fill: e.textColor,
                fontSize: e.fontSize,
                fontWeight: e.fontWeight,
                fontStyle: e.fontStyle,
                fontFamily: e.fontFamily
            },
            zlevel: e.zlevel,
            z: 10001
        }),
        n = new ht({
            style: {
                fill: "none"
            },
            textContent: a,
            textConfig: {
                position: "right",
                distance: 10
            },
            zlevel: e.zlevel,
            z: 10001
        });
    t.add(n);
    var o;
    return e.showSpinner && (o = new Qo({
        shape: {
            startAngle: -Kh / 2,
            endAngle: -Kh / 2 + .1,
            r: e.spinnerRadius
        },
        style: {
            stroke: e.color,
            lineCap: "round",
            lineWidth: e.lineWidth
        },
        zlevel: e.zlevel,
        z: 10001
    }), o.animateShape(!0).when(1e3, {
        endAngle: Kh * 3 / 2
    }).start("circularInOut"), o.animateShape(!0).when(1e3, {
        startAngle: Kh * 3 / 2
    }).delay(300).start("circularInOut"), t.add(o)), t.resize = function() {
        var s = a.getBoundingRect().width,
            l = e.showSpinner ? e.spinnerRadius : 0,
            u = (r.getWidth() - l * 2 - (e.showSpinner && s ? 10 : 0) - s) / 2 - (e.showSpinner && s ? 0 : 5 + s / 2) + (e.showSpinner ? 0 : s / 2) + (s ? 0 : l),
            f = r.getHeight() / 2;
        e.showSpinner && o.setShape({
            cx: u,
            cy: f
        }), n.setShape({
            x: u - l,
            y: f - l,
            width: l * 2,
            height: l * 2
        }), i.setShape({
            x: 0,
            y: 0,
            width: r.getWidth(),
            height: r.getHeight()
        })
    }, t.resize(), t
}
var s5 = function() {
    function r(e, t, i, a) {
        this._stageTaskMap = Y(), this.ecInstance = e, this.api = t, i = this._dataProcessorHandlers = i.slice(), a = this._visualHandlers = a.slice(), this._allHandlers = i.concat(a)
    }
    return r.prototype.restoreData = function(e, t) {
        e.restoreData(t), this._stageTaskMap.each(function(i) {
            var a = i.overallTask;
            a && a.dirty()
        })
    }, r.prototype.getPerformArgs = function(e, t) {
        if (e.__pipeline) {
            var i = this._pipelineMap.get(e.__pipeline.id),
                a = i.context,
                n = !t && i.progressiveEnabled && (!a || a.progressiveRender) && e.__idxInPipeline > i.blockIndex,
                o = n ? i.step : null,
                s = a && a.modDataCount,
                l = s != null ? Math.ceil(s / o) : null;
            return {
                step: o,
                modBy: l,
                modDataCount: s
            }
        }
    }, r.prototype.getPipeline = function(e) {
        return this._pipelineMap.get(e)
    }, r.prototype.updateStreamModes = function(e, t) {
        var i = this._pipelineMap.get(e.uid),
            a = e.getData(),
            n = a.count(),
            o = i.progressiveEnabled && t.incrementalPrepareRender && n >= i.threshold,
            s = e.get("large") && n >= e.get("largeThreshold"),
            l = e.get("progressiveChunkMode") === "mod" ? n : null;
        e.pipelineContext = i.context = {
            progressiveRender: o,
            modDataCount: l,
            large: s
        }
    }, r.prototype.restorePipelines = function(e) {
        var t = this,
            i = t._pipelineMap = Y();
        e.eachSeries(function(a) {
            var n = a.getProgressive(),
                o = a.uid;
            i.set(o, {
                id: o,
                head: null,
                tail: null,
                threshold: a.getProgressiveThreshold(),
                progressiveEnabled: n && !(a.preventIncremental && a.preventIncremental()),
                blockIndex: -1,
                step: Math.round(n || 700),
                count: 0
            }), t._pipe(a, a.dataTask)
        })
    }, r.prototype.prepareStageTasks = function() {
        var e = this._stageTaskMap,
            t = this.api.getModel(),
            i = this.api;
        w(this._allHandlers, function(a) {
            var n = e.get(a.uid) || e.set(a.uid, {}),
                o = "";
            jt(!(a.reset && a.overallReset), o), a.reset && this._createSeriesStageTask(a, n, t, i), a.overallReset && this._createOverallStageTask(a, n, t, i)
        }, this)
    }, r.prototype.prepareView = function(e, t, i, a) {
        var n = e.renderTask,
            o = n.context;
        o.model = t, o.ecModel = i, o.api = a, n.__block = !e.incrementalPrepareRender, this._pipe(t, n)
    }, r.prototype.performDataProcessorTasks = function(e, t) {
        this._performStageTasks(this._dataProcessorHandlers, e, t, {
            block: !0
        })
    }, r.prototype.performVisualTasks = function(e, t, i) {
        this._performStageTasks(this._visualHandlers, e, t, i)
    }, r.prototype._performStageTasks = function(e, t, i, a) {
        a = a || {};
        var n = !1,
            o = this;
        w(e, function(l, u) {
            if (!(a.visualType && a.visualType !== l.visualType)) {
                var f = o._stageTaskMap.get(l.uid),
                    p = f.seriesTaskMap,
                    c = f.overallTask;
                if (c) {
                    var h, v = c.agentStubMap;
                    v.each(function(m) {
                        s(a, m) && (m.dirty(), h = !0)
                    }), h && c.dirty(), o.updatePayload(c, i);
                    var d = o.getPerformArgs(c, a.block);
                    v.each(function(m) {
                        m.perform(d)
                    }), c.perform(d) && (n = !0)
                } else p && p.each(function(m, g) {
                    s(a, m) && m.dirty();
                    var y = o.getPerformArgs(m, a.block);
                    y.skip = !l.performRawSeries && t.isSeriesFiltered(m.context.model), o.updatePayload(m, i), m.perform(y) && (n = !0)
                })
            }
        });

        function s(l, u) {
            return l.setDirty && (!l.dirtyMap || l.dirtyMap.get(u.__pipeline.id))
        }
        this.unfinished = n || this.unfinished
    }, r.prototype.performSeriesTasks = function(e) {
        var t;
        e.eachSeries(function(i) {
            t = i.dataTask.perform() || t
        }), this.unfinished = t || this.unfinished
    }, r.prototype.plan = function() {
        this._pipelineMap.each(function(e) {
            var t = e.tail;
            do {
                if (t.__block) {
                    e.blockIndex = t.__idxInPipeline;
                    break
                }
                t = t.getUpstream()
            } while (t)
        })
    }, r.prototype.updatePayload = function(e, t) {
        t !== "remain" && (e.context.payload = t)
    }, r.prototype._createSeriesStageTask = function(e, t, i, a) {
        var n = this,
            o = t.seriesTaskMap,
            s = t.seriesTaskMap = Y(),
            l = e.seriesType,
            u = e.getTargetSeries;
        e.createOnAllSeries ? i.eachRawSeries(f) : l ? i.eachRawSeriesByType(l, f) : u && u(i, a).each(f);

        function f(p) {
            var c = p.uid,
                h = s.set(c, o && o.get(c) || kn({
                    plan: c5,
                    reset: h5,
                    count: d5
                }));
            h.context = {
                model: p,
                ecModel: i,
                api: a,
                useClearVisual: e.isVisual && !e.isLayout,
                plan: e.plan,
                reset: e.reset,
                scheduler: n
            }, n._pipe(p, h)
        }
    }, r.prototype._createOverallStageTask = function(e, t, i, a) {
        var n = this,
            o = t.overallTask = t.overallTask || kn({
                reset: l5
            });
        o.context = {
            ecModel: i,
            api: a,
            overallReset: e.overallReset,
            scheduler: n
        };
        var s = o.agentStubMap,
            l = o.agentStubMap = Y(),
            u = e.seriesType,
            f = e.getTargetSeries,
            p = !0,
            c = !1,
            h = "";
        jt(!e.createOnAllSeries, h), u ? i.eachRawSeriesByType(u, v) : f ? f(i, a).each(v) : (p = !1, w(i.getSeries(), v));

        function v(d) {
            var m = d.uid,
                g = l.set(m, s && s.get(m) || (c = !0, kn({
                    reset: u5,
                    onDirty: p5
                })));
            g.context = {
                model: d,
                overallProgress: p
            }, g.agent = o, g.__block = p, n._pipe(d, g)
        }
        c && o.dirty()
    }, r.prototype._pipe = function(e, t) {
        var i = e.uid,
            a = this._pipelineMap.get(i);
        !a.head && (a.head = t), a.tail && a.tail.pipe(t), a.tail = t, t.__idxInPipeline = a.count++, t.__pipeline = a
    }, r.wrapStageHandler = function(e, t) {
        return X(e) && (e = {
            overallReset: e,
            seriesType: m5(e)
        }), e.uid = Si("stageHandler"), t && (e.visualType = t), e
    }, r
}();

function l5(r) {
    r.overallReset(r.ecModel, r.api, r.payload)
}

function u5(r) {
    return r.overallProgress && f5
}

function f5() {
    this.agent.dirty(), this.getDownstream().dirty()
}

function p5() {
    this.agent && this.agent.dirty()
}

function c5(r) {
    return r.plan ? r.plan(r.model, r.ecModel, r.api, r.payload) : null
}

function h5(r) {
    r.useClearVisual && r.data.clearAllVisual();
    var e = r.resetDefines = Pt(r.reset(r.model, r.ecModel, r.api, r.payload));
    return e.length > 1 ? k(e, function(t, i) {
        return UD(i)
    }) : v5
}
var v5 = UD(0);

function UD(r) {
    return function(e, t) {
        var i = t.data,
            a = t.resetDefines[r];
        if (a && a.dataEach)
            for (var n = e.start; n < e.end; n++) a.dataEach(i, n);
        else a && a.progress && a.progress(e, i)
    }
}

function d5(r) {
    return r.data.count()
}

function m5(r) {
    jh = null;
    try {
        r(kf, VD)
    } catch {}
    return jh
}
var kf = {},
    VD = {},
    jh;
BD(kf, Ih);
BD(VD, Eh);
kf.eachSeriesByType = kf.eachRawSeriesByType = function(r) {
    jh = r
};
kf.eachComponent = function(r) {
    r.mainType === "series" && r.subType && (jh = r.subType)
};

function BD(r, e) {
    for (var t in e.prototype) r[t] = Yt
}
var h0 = s5;
var FD = ["#37A2DA", "#32C5E9", "#67E0E3", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#E062AE", "#E690D1", "#e7bcf3", "#9d96f5", "#8378EA", "#96BFFF"],
    GD = {
        color: FD,
        colorLayer: [
            ["#37A2DA", "#ffd85c", "#fd7b5f"],
            ["#37A2DA", "#67E0E3", "#FFDB5C", "#ff9f7f", "#E062AE", "#9d96f5"],
            ["#37A2DA", "#32C5E9", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#e7bcf3", "#8378EA", "#96BFFF"], FD
        ]
    };
var lr = "#B9B8CE",
    HD = "#100C2A",
    Jh = function() {
        return {
            axisLine: {
                lineStyle: {
                    color: lr
                }
            },
            splitLine: {
                lineStyle: {
                    color: "#484753"
                }
            },
            splitArea: {
                areaStyle: {
                    color: ["rgba(255,255,255,0.02)", "rgba(255,255,255,0.05)"]
                }
            },
            minorSplitLine: {
                lineStyle: {
                    color: "#20203B"
                }
            }
        }
    },
    WD = ["#4992ff", "#7cffb2", "#fddd60", "#ff6e76", "#58d9f9", "#05c091", "#ff8a45", "#8d48e3", "#dd79ff"],
    YD = {
        darkMode: !0,
        color: WD,
        backgroundColor: HD,
        axisPointer: {
            lineStyle: {
                color: "#817f91"
            },
            crossStyle: {
                color: "#817f91"
            },
            label: {
                color: "#fff"
            }
        },
        legend: {
            textStyle: {
                color: lr
            },
            pageTextStyle: {
                color: lr
            }
        },
        textStyle: {
            color: lr
        },
        title: {
            textStyle: {
                color: "#EEF1FA"
            },
            subtextStyle: {
                color: "#B9B8CE"
            }
        },
        toolbox: {
            iconStyle: {
                borderColor: lr
            }
        },
        dataZoom: {
            borderColor: "#71708A",
            textStyle: {
                color: lr
            },
            brushStyle: {
                color: "rgba(135,163,206,0.3)"
            },
            handleStyle: {
                color: "#353450",
                borderColor: "#C5CBE3"
            },
            moveHandleStyle: {
                color: "#B0B6C3",
                opacity: .3
            },
            fillerColor: "rgba(135,163,206,0.2)",
            emphasis: {
                handleStyle: {
                    borderColor: "#91B7F2",
                    color: "#4D587D"
                },
                moveHandleStyle: {
                    color: "#636D9A",
                    opacity: .7
                }
            },
            dataBackground: {
                lineStyle: {
                    color: "#71708A",
                    width: 1
                },
                areaStyle: {
                    color: "#71708A"
                }
            },
            selectedDataBackground: {
                lineStyle: {
                    color: "#87A3CE"
                },
                areaStyle: {
                    color: "#87A3CE"
                }
            }
        },
        visualMap: {
            textStyle: {
                color: lr
            }
        },
        timeline: {
            lineStyle: {
                color: lr
            },
            label: {
                color: lr
            },
            controlStyle: {
                color: lr,
                borderColor: lr
            }
        },
        calendar: {
            itemStyle: {
                color: HD
            },
            dayLabel: {
                color: lr
            },
            monthLabel: {
                color: lr
            },
            yearLabel: {
                color: lr
            }
        },
        timeAxis: Jh(),
        logAxis: Jh(),
        valueAxis: Jh(),
        categoryAxis: Jh(),
        line: {
            symbol: "circle"
        },
        graph: {
            color: WD
        },
        gauge: {
            title: {
                color: lr
            },
            axisLine: {
                lineStyle: {
                    color: [
                        [1, "rgba(207,212,219,0.2)"]
                    ]
                }
            },
            axisLabel: {
                color: lr
            },
            detail: {
                color: "#EEF1FA"
            }
        },
        candlestick: {
            itemStyle: {
                color: "#f64e56",
                color0: "#54ea92",
                borderColor: "#f64e56",
                borderColor0: "#54ea92"
            }
        }
    };
YD.categoryAxis.splitLine.show = !1;
var ZD = YD;
var XD = function() {
    function r() {}
    return r.prototype.normalizeQuery = function(e) {
        var t = {},
            i = {},
            a = {};
        if (F(e)) {
            var n = Rr(e);
            t.mainType = n.main || null, t.subType = n.sub || null
        } else {
            var o = ["Index", "Name", "Id"],
                s = {
                    name: 1,
                    dataIndex: 1,
                    dataType: 1
                };
            w(e, function(l, u) {
                for (var f = !1, p = 0; p < o.length; p++) {
                    var c = o[p],
                        h = u.lastIndexOf(c);
                    if (h > 0 && h === u.length - c.length) {
                        var v = u.slice(0, h);
                        v !== "data" && (t.mainType = v, t[c.toLowerCase()] = l, f = !0)
                    }
                }
                s.hasOwnProperty(u) && (i[u] = l, f = !0), f || (a[u] = l)
            })
        }
        return {
            cptQuery: t,
            dataQuery: i,
            otherQuery: a
        }
    }, r.prototype.filter = function(e, t) {
        var i = this.eventInfo;
        if (!i) return !0;
        var a = i.targetEl,
            n = i.packedEvent,
            o = i.model,
            s = i.view;
        if (!o || !s) return !0;
        var l = t.cptQuery,
            u = t.dataQuery;
        return f(l, o, "mainType") && f(l, o, "subType") && f(l, o, "index", "componentIndex") && f(l, o, "name") && f(l, o, "id") && f(u, n, "name") && f(u, n, "dataIndex") && f(u, n, "dataType") && (!s.filterForExposedEvent || s.filterForExposedEvent(e, t.otherQuery, a, n));

        function f(p, c, h, v) {
            return p[h] == null || c[v || h] === p[h]
        }
    }, r.prototype.afterTrigger = function() {
        this.eventInfo = null
    }, r
}();
var v0 = ["symbol", "symbolSize", "symbolRotate", "symbolOffset"],
    qD = v0.concat(["symbolKeepAspect"]),
    KD = {
        createOnAllSeries: !0,
        performRawSeries: !0,
        reset: function(r, e) {
            var t = r.getData();
            if (r.legendIcon && t.setVisual("legendIcon", r.legendIcon), !r.hasSymbolVisual) return;
            for (var i = {}, a = {}, n = !1, o = 0; o < v0.length; o++) {
                var s = v0[o],
                    l = r.get(s);
                X(l) ? (n = !0, a[s] = l) : i[s] = l
            }
            if (i.symbol = i.symbol || r.defaultSymbol, t.setVisual(O({
                    legendIcon: r.legendIcon || i.symbol,
                    symbolKeepAspect: r.get("symbolKeepAspect")
                }, i)), e.isSeriesFiltered(r)) return;
            var u = ft(a);

            function f(p, c) {
                for (var h = r.getRawValue(c), v = r.getDataParams(c), d = 0; d < u.length; d++) {
                    var m = u[d];
                    p.setItemVisual(c, m, a[m](h, v))
                }
            }
            return {
                dataEach: n ? f : null
            }
        }
    },
    jD = {
        createOnAllSeries: !0,
        performRawSeries: !0,
        reset: function(r, e) {
            if (!r.hasSymbolVisual || e.isSeriesFiltered(r)) return;
            var t = r.getData();

            function i(a, n) {
                for (var o = a.getItemModel(n), s = 0; s < qD.length; s++) {
                    var l = qD[s],
                        u = o.getShallow(l, !0);
                    u != null && a.setItemVisual(n, l, u)
                }
            }
            return {
                dataEach: t.hasItemOption ? i : null
            }
        }
    };

function Uf(r, e, t) {
    switch (t) {
        case "color":
            var i = r.getItemVisual(e, "style");
            return i[r.getVisual("drawType")];
        case "opacity":
            return r.getItemVisual(e, "style").opacity;
        case "symbol":
        case "symbolSize":
        case "liftZ":
            return r.getItemVisual(e, t);
        default:
    }
}

function ya(r, e) {
    switch (e) {
        case "color":
            var t = r.getVisual("style");
            return t[r.getVisual("drawType")];
        case "opacity":
            return r.getVisual("style").opacity;
        case "symbol":
        case "symbolSize":
        case "liftZ":
            return r.getVisual(e);
        default:
    }
}

function d0(r, e, t, i) {
    switch (t) {
        case "color":
            var a = r.ensureUniqueItemVisual(e, "style");
            a[r.getVisual("drawType")] = i, r.setItemVisual(e, "colorFromPalette", !1);
            break;
        case "opacity":
            r.ensureUniqueItemVisual(e, "style").opacity = i;
            break;
        case "symbol":
        case "symbolSize":
        case "liftZ":
            r.setItemVisual(e, t, i);
            break;
        default:
    }
}

function Qh(r, e) {
    function t(i, a) {
        var n = [];
        return i.eachComponent({
            mainType: "series",
            subType: r,
            query: a
        }, function(o) {
            n.push(o.seriesIndex)
        }), n
    }
    w([
        [r + "ToggleSelect", "toggleSelect"],
        [r + "Select", "select"],
        [r + "UnSelect", "unselect"]
    ], function(i) {
        e(i[0], function(a, n, o) {
            a = O({}, a), o.dispatchAction(O(a, {
                type: i[1],
                seriesIndex: t(n, a)
            }))
        })
    })
}

function Rl(r, e, t, i, a) {
    var n = r + e;
    t.isSilent(n) || i.eachComponent({
        mainType: "series",
        subType: "pie"
    }, function(o) {
        for (var s = o.seriesIndex, l = o.option.selectedMap, u = a.selected, f = 0; f < u.length; f++)
            if (u[f].seriesIndex === s) {
                var p = o.getData(),
                    c = vi(p, a.fromActionPayload);
                t.trigger(n, {
                    type: n,
                    seriesId: o.id,
                    name: z(c) ? p.getName(c[0]) : p.getName(c),
                    selected: F(l) ? l : O({}, l)
                })
            }
    })
}

function JD(r, e, t) {
    r.on("selectchanged", function(i) {
        var a = t.getModel();
        i.isFromClick ? (Rl("map", "selectchanged", e, a, i), Rl("pie", "selectchanged", e, a, i)) : i.fromAction === "select" ? (Rl("map", "selected", e, a, i), Rl("pie", "selected", e, a, i)) : i.fromAction === "unselect" && (Rl("map", "unselected", e, a, i), Rl("pie", "unselected", e, a, i))
    })
}

function qi(r, e, t) {
    for (var i; r && !(e(r) && (i = r, t));) r = r.__hostTarget || r.parent;
    return i
}
var g5 = Math.round(Math.random() * 9),
    y5 = typeof Object.defineProperty == "function",
    x5 = function() {
        function r() {
            this._id = "__ec_inner_" + g5++
        }
        return r.prototype.get = function(e) {
            return this._guard(e)[this._id]
        }, r.prototype.set = function(e, t) {
            var i = this._guard(e);
            return y5 ? Object.defineProperty(i, this._id, {
                value: t,
                enumerable: !1,
                configurable: !0
            }) : i[this._id] = t, this
        }, r.prototype.delete = function(e) {
            return this.has(e) ? (delete this._guard(e)[this._id], !0) : !1
        }, r.prototype.has = function(e) {
            return !!this._guard(e)[this._id]
        }, r.prototype._guard = function(e) {
            if (e !== Object(e)) throw TypeError("Value of WeakMap is not a non-null object.");
            return e
        }, r
    }(),
    QD = x5;
var _5 = st.extend({
        type: "triangle",
        shape: {
            cx: 0,
            cy: 0,
            width: 0,
            height: 0
        },
        buildPath: function(r, e) {
            var t = e.cx,
                i = e.cy,
                a = e.width / 2,
                n = e.height / 2;
            r.moveTo(t, i - n), r.lineTo(t + a, i + n), r.lineTo(t - a, i + n), r.closePath()
        }
    }),
    S5 = st.extend({
        type: "diamond",
        shape: {
            cx: 0,
            cy: 0,
            width: 0,
            height: 0
        },
        buildPath: function(r, e) {
            var t = e.cx,
                i = e.cy,
                a = e.width / 2,
                n = e.height / 2;
            r.moveTo(t, i - n), r.lineTo(t + a, i), r.lineTo(t, i + n), r.lineTo(t - a, i), r.closePath()
        }
    }),
    b5 = st.extend({
        type: "pin",
        shape: {
            x: 0,
            y: 0,
            width: 0,
            height: 0
        },
        buildPath: function(r, e) {
            var t = e.x,
                i = e.y,
                a = e.width / 5 * 3,
                n = Math.max(a, e.height),
                o = a / 2,
                s = o * o / (n - o),
                l = i - n + o + s,
                u = Math.asin(s / o),
                f = Math.cos(u) * o,
                p = Math.sin(u),
                c = Math.cos(u),
                h = o * .6,
                v = o * .7;
            r.moveTo(t - f, l + s), r.arc(t, l, o, Math.PI - u, Math.PI * 2 + u), r.bezierCurveTo(t + f - p * h, l + s + c * h, t, i - v, t, i), r.bezierCurveTo(t, i - v, t - f + p * h, l + s + c * h, t - f, l + s), r.closePath()
        }
    }),
    w5 = st.extend({
        type: "arrow",
        shape: {
            x: 0,
            y: 0,
            width: 0,
            height: 0
        },
        buildPath: function(r, e) {
            var t = e.height,
                i = e.width,
                a = e.x,
                n = e.y,
                o = i / 3 * 2;
            r.moveTo(a, n), r.lineTo(a + o, n + t), r.lineTo(a, n + t / 4 * 3), r.lineTo(a - o, n + t), r.lineTo(a, n), r.closePath()
        }
    }),
    T5 = {
        line: ee,
        rect: ht,
        roundRect: ht,
        square: ht,
        circle: je,
        diamond: S5,
        pin: b5,
        arrow: w5,
        triangle: _5
    },
    C5 = {
        line: function(r, e, t, i, a) {
            a.x1 = r, a.y1 = e + i / 2, a.x2 = r + t, a.y2 = e + i / 2
        },
        rect: function(r, e, t, i, a) {
            a.x = r, a.y = e, a.width = t, a.height = i
        },
        roundRect: function(r, e, t, i, a) {
            a.x = r, a.y = e, a.width = t, a.height = i, a.r = Math.min(t, i) / 4
        },
        square: function(r, e, t, i, a) {
            var n = Math.min(t, i);
            a.x = r, a.y = e, a.width = n, a.height = n
        },
        circle: function(r, e, t, i, a) {
            a.cx = r + t / 2, a.cy = e + i / 2, a.r = Math.min(t, i) / 2
        },
        diamond: function(r, e, t, i, a) {
            a.cx = r + t / 2, a.cy = e + i / 2, a.width = t, a.height = i
        },
        pin: function(r, e, t, i, a) {
            a.x = r + t / 2, a.y = e + i / 2, a.width = t, a.height = i
        },
        arrow: function(r, e, t, i, a) {
            a.x = r + t / 2, a.y = e + i / 2, a.width = t, a.height = i
        },
        triangle: function(r, e, t, i, a) {
            a.cx = r + t / 2, a.cy = e + i / 2, a.width = t, a.height = i
        }
    },
    Vf = {};
w(T5, function(r, e) {
    Vf[e] = new r
});
var A5 = st.extend({
    type: "symbol",
    shape: {
        symbolType: "",
        x: 0,
        y: 0,
        width: 0,
        height: 0
    },
    calculateTextPosition: function(r, e, t) {
        var i = zo(r, e, t),
            a = this.shape;
        return a && a.symbolType === "pin" && e.position === "inside" && (i.y = t.y + t.height * .4), i
    },
    buildPath: function(r, e, t) {
        var i = e.symbolType;
        if (i !== "none") {
            var a = Vf[i];
            a || (i = "rect", a = Vf[i]), C5[i](e.x, e.y, e.width, e.height, a.shape), a.buildPath(r, a.shape, t)
        }
    }
});

function D5(r, e) {
    if (this.type !== "image") {
        var t = this.style;
        this.__isEmptyBrush ? (t.stroke = r, t.fill = e || "#fff", t.lineWidth = 2) : this.shape.symbolType === "line" ? t.stroke = r : t.fill = r, this.markRedraw()
    }
}

function Vt(r, e, t, i, a, n, o) {
    var s = r.indexOf("empty") === 0;
    s && (r = r.substr(5, 1).toLowerCase() + r.substr(6));
    var l;
    return r.indexOf("image://") === 0 ? l = df(r.slice(8), new it(e, t, i, a), o ? "center" : "cover") : r.indexOf("path://") === 0 ? l = Nn(r.slice(7), {}, new it(e, t, i, a), o ? "center" : "cover") : l = new A5({
        shape: {
            symbolType: r,
            x: e,
            y: t,
            width: i,
            height: a
        }
    }), l.__isEmptyBrush = s, l.setColor = D5, n && l.setColor(n), l
}

function Ki(r) {
    return z(r) || (r = [+r, +r]), [r[0] || 0, r[1] || 0]
}

function oi(r, e) {
    if (r != null) return z(r) || (r = [r, r]), [W(r[0], e[0]) || 0, W(ot(r[1], r[0]), e[1]) || 0]
}

function cs(r) {
    return isFinite(r)
}

function M5(r, e, t) {
    var i = e.x == null ? 0 : e.x,
        a = e.x2 == null ? 1 : e.x2,
        n = e.y == null ? 0 : e.y,
        o = e.y2 == null ? 0 : e.y2;
    e.global || (i = i * t.width + t.x, a = a * t.width + t.x, n = n * t.height + t.y, o = o * t.height + t.y), i = cs(i) ? i : 0, a = cs(a) ? a : 1, n = cs(n) ? n : 0, o = cs(o) ? o : 0;
    var s = r.createLinearGradient(i, n, a, o);
    return s
}

function L5(r, e, t) {
    var i = t.width,
        a = t.height,
        n = Math.min(i, a),
        o = e.x == null ? .5 : e.x,
        s = e.y == null ? .5 : e.y,
        l = e.r == null ? .5 : e.r;
    e.global || (o = o * i + t.x, s = s * a + t.y, l = l * n), o = cs(o) ? o : .5, s = cs(s) ? s : .5, l = l >= 0 && cs(l) ? l : .5;
    var u = r.createRadialGradient(o, s, 0, o, s, l);
    return u
}

function Bf(r, e, t) {
    for (var i = e.type === "radial" ? L5(r, e, t) : M5(r, e, t), a = e.colorStops, n = 0; n < a.length; n++) i.addColorStop(a[n].offset, a[n].color);
    return i
}

function tM(r, e) {
    if (r === e || !r && !e) return !1;
    if (!r || !e || r.length !== e.length) return !0;
    for (var t = 0; t < r.length; t++)
        if (r[t] !== e[t]) return !0;
    return !1
}

function $h(r) {
    return parseInt(r, 10)
}

function Vn(r, e, t) {
    var i = ["width", "height"][e],
        a = ["clientWidth", "clientHeight"][e],
        n = ["paddingLeft", "paddingTop"][e],
        o = ["paddingRight", "paddingBottom"][e];
    if (t[i] != null && t[i] !== "auto") return parseFloat(t[i]);
    var s = document.defaultView.getComputedStyle(r);
    return (r[a] || $h(s[i]) || $h(r.style[i])) - ($h(s[n]) || 0) - ($h(s[o]) || 0) | 0
}

function I5(r, e) {
    return !r || r === "solid" || !(e > 0) ? null : r === "dashed" ? [4 * e, 2 * e] : r === "dotted" ? [e] : vt(r) ? [r] : z(r) ? r : null
}

function Ff(r) {
    var e = r.style,
        t = e.lineDash && e.lineWidth > 0 && I5(e.lineDash, e.lineWidth),
        i = e.lineDashOffset;
    if (t) {
        var a = e.strokeNoScale && r.getLineScale ? r.getLineScale() : 1;
        a && a !== 1 && (t = k(t, function(n) {
            return n / a
        }), i /= a)
    }
    return [t, i]
}
var E5 = new Ve(!0);

function tv(r) {
    var e = r.stroke;
    return !(e == null || e === "none" || !(r.lineWidth > 0))
}

function eM(r) {
    return typeof r == "string" && r !== "none"
}

function ev(r) {
    var e = r.fill;
    return e != null && e !== "none"
}

function rM(r, e) {
    if (e.fillOpacity != null && e.fillOpacity !== 1) {
        var t = r.globalAlpha;
        r.globalAlpha = e.fillOpacity * e.opacity, r.fill(), r.globalAlpha = t
    } else r.fill()
}

function iM(r, e) {
    if (e.strokeOpacity != null && e.strokeOpacity !== 1) {
        var t = r.globalAlpha;
        r.globalAlpha = e.strokeOpacity * e.opacity, r.stroke(), r.globalAlpha = t
    } else r.stroke()
}

function rv(r, e, t) {
    var i = rf(e.image, e.__image, t);
    if (sl(i)) {
        var a = r.createPattern(i, e.repeat || "repeat");
        if (typeof DOMMatrix == "function" && a && a.setTransform) {
            var n = new DOMMatrix;
            n.translateSelf(e.x || 0, e.y || 0), n.rotateSelf(0, 0, (e.rotation || 0) * go), n.scaleSelf(e.scaleX || 1, e.scaleY || 1), a.setTransform(n)
        }
        return a
    }
}

function P5(r, e, t, i) {
    var a, n = tv(t),
        o = ev(t),
        s = t.strokePercent,
        l = s < 1,
        u = !e.path;
    (!e.silent || l) && u && e.createPathProxy();
    var f = e.path || E5,
        p = e.__dirty;
    if (!i) {
        var c = t.fill,
            h = t.stroke,
            v = o && !!c.colorStops,
            d = n && !!h.colorStops,
            m = o && !!c.image,
            g = n && !!h.image,
            y = void 0,
            x = void 0,
            _ = void 0,
            S = void 0,
            b = void 0;
        (v || d) && (b = e.getBoundingRect()), v && (y = p ? Bf(r, c, b) : e.__canvasFillGradient, e.__canvasFillGradient = y), d && (x = p ? Bf(r, h, b) : e.__canvasStrokeGradient, e.__canvasStrokeGradient = x), m && (_ = p || !e.__canvasFillPattern ? rv(r, c, e) : e.__canvasFillPattern, e.__canvasFillPattern = _), g && (S = p || !e.__canvasStrokePattern ? rv(r, h, e) : e.__canvasStrokePattern, e.__canvasStrokePattern = _), v ? r.fillStyle = y : m && (_ ? r.fillStyle = _ : o = !1), d ? r.strokeStyle = x : g && (S ? r.strokeStyle = S : n = !1)
    }
    var T = e.getGlobalScale();
    f.setScale(T[0], T[1], e.segmentIgnoreThreshold);
    var C, A;
    r.setLineDash && t.lineDash && (a = Ff(e), C = a[0], A = a[1]);
    var D = !0;
    (u || p & dn) && (f.setDPR(r.dpr), l ? f.setContext(null) : (f.setContext(r), D = !1), f.reset(), e.buildPath(f, e.shape, i), f.toStatic(), e.pathUpdated()), D && f.rebuildPath(r, l ? s : 1), C && (r.setLineDash(C), r.lineDashOffset = A), i || (t.strokeFirst ? (n && iM(r, t), o && rM(r, t)) : (o && rM(r, t), n && iM(r, t))), C && r.setLineDash([])
}

function R5(r, e, t) {
    var i = e.__image = rf(t.image, e.__image, e, e.onload);
    if (!(!i || !sl(i))) {
        var a = t.x || 0,
            n = t.y || 0,
            o = e.getWidth(),
            s = e.getHeight(),
            l = i.width / i.height;
        if (o == null && s != null ? o = s * l : s == null && o != null ? s = o / l : o == null && s == null && (o = i.width, s = i.height), t.sWidth && t.sHeight) {
            var u = t.sx || 0,
                f = t.sy || 0;
            r.drawImage(i, u, f, t.sWidth, t.sHeight, a, n, o, s)
        } else if (t.sx && t.sy) {
            var u = t.sx,
                f = t.sy,
                p = o - u,
                c = s - f;
            r.drawImage(i, u, f, p, c, a, n, o, s)
        } else r.drawImage(i, a, n, o, s)
    }
}

function N5(r, e, t) {
    var i, a = t.text;
    if (a != null && (a += ""), a) {
        r.font = t.font || Xr, r.textAlign = t.textAlign, r.textBaseline = t.textBaseline;
        var n = void 0,
            o = void 0;
        r.setLineDash && t.lineDash && (i = Ff(e), n = i[0], o = i[1]), n && (r.setLineDash(n), r.lineDashOffset = o), t.strokeFirst ? (tv(t) && r.strokeText(a, t.x, t.y), ev(t) && r.fillText(a, t.x, t.y)) : (ev(t) && r.fillText(a, t.x, t.y), tv(t) && r.strokeText(a, t.x, t.y)), n && r.setLineDash([])
    }
}
var aM = ["shadowBlur", "shadowOffsetX", "shadowOffsetY"],
    nM = [
        ["lineCap", "butt"],
        ["lineJoin", "miter"],
        ["miterLimit", 10]
    ];

function pM(r, e, t, i, a) {
    var n = !1;
    if (!i && (t = t || {}, e === t)) return !1;
    if (i || e.opacity !== t.opacity) {
        Br(r, a), n = !0;
        var o = Math.max(Math.min(e.opacity, 1), 0);
        r.globalAlpha = isNaN(o) ? fa.opacity : o
    }(i || e.blend !== t.blend) && (n || (Br(r, a), n = !0), r.globalCompositeOperation = e.blend || fa.blend);
    for (var s = 0; s < aM.length; s++) {
        var l = aM[s];
        (i || e[l] !== t[l]) && (n || (Br(r, a), n = !0), r[l] = r.dpr * (e[l] || 0))
    }
    return (i || e.shadowColor !== t.shadowColor) && (n || (Br(r, a), n = !0), r.shadowColor = e.shadowColor || fa.shadowColor), n
}

function oM(r, e, t, i, a) {
    var n = Gf(e, a.inHover),
        o = i ? null : t && Gf(t, a.inHover) || {};
    if (n === o) return !1;
    var s = pM(r, n, o, i, a);
    if ((i || n.fill !== o.fill) && (s || (Br(r, a), s = !0), eM(n.fill) && (r.fillStyle = n.fill)), (i || n.stroke !== o.stroke) && (s || (Br(r, a), s = !0), eM(n.stroke) && (r.strokeStyle = n.stroke)), (i || n.opacity !== o.opacity) && (s || (Br(r, a), s = !0), r.globalAlpha = n.opacity == null ? 1 : n.opacity), e.hasStroke()) {
        var l = n.lineWidth,
            u = l / (n.strokeNoScale && e.getLineScale ? e.getLineScale() : 1);
        r.lineWidth !== u && (s || (Br(r, a), s = !0), r.lineWidth = u)
    }
    for (var f = 0; f < nM.length; f++) {
        var p = nM[f],
            c = p[0];
        (i || n[c] !== o[c]) && (s || (Br(r, a), s = !0), r[c] = n[c] || p[1])
    }
    return s
}

function O5(r, e, t, i, a) {
    return pM(r, Gf(e, a.inHover), t && Gf(t, a.inHover), i, a)
}

function cM(r, e) {
    var t = e.transform,
        i = r.dpr || 1;
    t ? r.setTransform(i * t[0], i * t[1], i * t[2], i * t[3], i * t[4], i * t[5]) : r.setTransform(i, 0, 0, i, 0, 0)
}

function z5(r, e, t) {
    for (var i = !1, a = 0; a < r.length; a++) {
        var n = r[a];
        i = i || n.isZeroArea(), cM(e, n), e.beginPath(), n.buildPath(e, n.shape), e.clip()
    }
    t.allClipped = i
}

function k5(r, e) {
    return r && e ? r[0] !== e[0] || r[1] !== e[1] || r[2] !== e[2] || r[3] !== e[3] || r[4] !== e[4] || r[5] !== e[5] : !(!r && !e)
}
var sM = 1,
    lM = 2,
    uM = 3,
    fM = 4;

function U5(r) {
    var e = ev(r),
        t = tv(r);
    return !(r.lineDash || !(+e ^ +t) || e && typeof r.fill != "string" || t && typeof r.stroke != "string" || r.strokePercent < 1 || r.strokeOpacity < 1 || r.fillOpacity < 1)
}

function Br(r, e) {
    e.batchFill && r.fill(), e.batchStroke && r.stroke(), e.batchFill = "", e.batchStroke = ""
}

function Gf(r, e) {
    return e && r.__hoverStyle || r.style
}

function Hf(r, e) {
    Bn(r, e, {
        inHover: !1,
        viewWidth: 0,
        viewHeight: 0
    }, !0)
}

function Bn(r, e, t, i) {
    var a = e.transform;
    if (!e.shouldBePainted(t.viewWidth, t.viewHeight, !1, !1)) {
        e.__dirty &= ~Pe, e.__isRendered = !1;
        return
    }
    var n = e.__clipPaths,
        o = t.prevElClipPaths,
        s = !1,
        l = !1;
    if ((!o || tM(n, o)) && (o && o.length && (Br(r, t), r.restore(), l = s = !0, t.prevElClipPaths = null, t.allClipped = !1, t.prevEl = null), n && n.length && (Br(r, t), r.save(), z5(n, r, t), s = !0), t.prevElClipPaths = n), t.allClipped) {
        e.__isRendered = !1;
        return
    }
    e.beforeBrush && e.beforeBrush(), e.innerBeforeBrush();
    var u = t.prevEl;
    u || (l = s = !0);
    var f = e instanceof st && e.autoBatch && U5(e.style);
    s || k5(a, u.transform) ? (Br(r, t), cM(r, e)) : f || Br(r, t);
    var p = Gf(e, t.inHover);
    e instanceof st ? (t.lastDrawType !== sM && (l = !0, t.lastDrawType = sM), oM(r, e, u, l, t), (!f || !t.batchFill && !t.batchStroke) && r.beginPath(), P5(r, e, p, f), f && (t.batchFill = p.fill || "", t.batchStroke = p.stroke || "")) : e instanceof Fa ? (t.lastDrawType !== uM && (l = !0, t.lastDrawType = uM), oM(r, e, u, l, t), N5(r, e, p)) : e instanceof Zt ? (t.lastDrawType !== lM && (l = !0, t.lastDrawType = lM), O5(r, e, u, l, t), R5(r, e, p)) : e.getTemporalDisplayables && (t.lastDrawType !== fM && (l = !0, t.lastDrawType = fM), V5(r, e, t)), f && i && Br(r, t), e.innerAfterBrush(), e.afterBrush && e.afterBrush(), t.prevEl = e, e.__dirty = 0, e.__isRendered = !0
}

function V5(r, e, t) {
    var i = e.getDisplayables(),
        a = e.getTemporalDisplayables();
    r.save();
    var n = {
            prevElClipPaths: null,
            prevEl: null,
            allClipped: !1,
            viewWidth: t.viewWidth,
            viewHeight: t.viewHeight,
            inHover: t.inHover
        },
        o, s;
    for (o = e.getCursor(), s = i.length; o < s; o++) {
        var l = i[o];
        l.beforeBrush && l.beforeBrush(), l.innerBeforeBrush(), Bn(r, l, n, o === s - 1), l.innerAfterBrush(), l.afterBrush && l.afterBrush(), n.prevEl = l
    }
    for (var u = 0, f = a.length; u < f; u++) {
        var l = a[u];
        l.beforeBrush && l.beforeBrush(), l.innerBeforeBrush(), Bn(r, l, n, u === f - 1), l.innerAfterBrush(), l.afterBrush && l.afterBrush(), n.prevEl = l
    }
    e.clearTemporalDisplayables(), e.notClear = !0, r.restore()
}
var m0 = new QD,
    hM = new ka(100),
    vM = ["symbol", "symbolSize", "symbolKeepAspect", "color", "backgroundColor", "dashArrayX", "dashArrayY", "maxTileWidth", "maxTileHeight"];

function ji(r, e) {
    if (r === "none") return null;
    var t = e.getDevicePixelRatio(),
        i = e.getZr(),
        a = i.painter.type === "svg";
    r.dirty && m0.delete(r);
    var n = m0.get(r);
    if (n) return n;
    var o = q(r, {
        symbol: "rect",
        symbolSize: 1,
        symbolKeepAspect: !0,
        color: "rgba(0, 0, 0, 0.2)",
        backgroundColor: null,
        dashArrayX: 5,
        dashArrayY: 5,
        rotation: 0,
        maxTileWidth: 512,
        maxTileHeight: 512
    });
    o.backgroundColor === "none" && (o.backgroundColor = null);
    var s = {
        repeat: "repeat"
    };
    return l(s), s.rotation = o.rotation, s.scaleX = s.scaleY = a ? 1 : 1 / t, m0.set(r, s), r.dirty = !1, s;

    function l(u) {
        for (var f = [t], p = !0, c = 0; c < vM.length; ++c) {
            var h = o[vM[c]];
            if (h != null && !z(h) && !F(h) && !vt(h) && typeof h != "boolean") {
                p = !1;
                break
            }
            f.push(h)
        }
        var v;
        if (p) {
            v = f.join(",") + (a ? "-svg" : "");
            var d = hM.get(v);
            d && (a ? u.svgElement = d : u.image = d)
        }
        var m = mM(o.dashArrayX),
            g = B5(o.dashArrayY),
            y = dM(o.symbol),
            x = F5(m),
            _ = gM(g),
            S = !a && He.createCanvas(),
            b = a && {
                tag: "g",
                attrs: {},
                key: "dcl",
                children: []
            },
            T = A(),
            C;
        S && (S.width = T.width * t, S.height = T.height * t, C = S.getContext("2d")), D(), p && hM.put(v, S || b), u.image = S, u.svgElement = b, u.svgWidth = T.width, u.svgHeight = T.height;

        function A() {
            for (var M = 1, I = 0, E = x.length; I < E; ++I) M = Mg(M, x[I]);
            for (var P = 1, I = 0, E = y.length; I < E; ++I) P = Mg(P, y[I].length);
            M *= P;
            var R = _ * x.length * y.length;
            if (0) var N;
            return {
                width: Math.max(1, Math.min(M, o.maxTileWidth)),
                height: Math.max(1, Math.min(R, o.maxTileHeight))
            }
        }

        function D() {
            C && (C.clearRect(0, 0, S.width, S.height), o.backgroundColor && (C.fillStyle = o.backgroundColor, C.fillRect(0, 0, S.width, S.height)));
            for (var M = 0, I = 0; I < g.length; ++I) M += g[I];
            if (M <= 0) return;
            for (var E = -_, P = 0, R = 0, N = 0; E < T.height;) {
                if (P % 2 === 0) {
                    for (var V = R / 2 % y.length, U = 0, B = 0, Z = 0; U < T.width * 2;) {
                        for (var K = 0, I = 0; I < m[N].length; ++I) K += m[N][I];
                        if (K <= 0) break;
                        if (B % 2 === 0) {
                            var tt = (1 - o.symbolSize) * .5,
                                pt = U + m[N][B] * tt,
                                ct = E + g[P] * tt,
                                bt = m[N][B] * o.symbolSize,
                                qt = g[P] * o.symbolSize,
                                ve = Z / 2 % y[V].length;
                            Mt(pt, ct, bt, qt, y[V][ve])
                        }
                        U += m[N][B], ++Z, ++B, B === m[N].length && (B = 0)
                    }++N, N === m.length && (N = 0)
                }
                E += g[P], ++R, ++P, P === g.length && (P = 0)
            }

            function Mt(mt, Et, ut, Tt, re) {
                var Wt = a ? 1 : t,
                    Qt = Vt(re, mt * Wt, Et * Wt, ut * Wt, Tt * Wt, o.color, o.symbolKeepAspect);
                if (a) {
                    var le = i.painter.renderOneToVNode(Qt);
                    le && b.children.push(le)
                } else Hf(C, Qt)
            }
        }
    }
}

function dM(r) {
    if (!r || r.length === 0) return [
        ["rect"]
    ];
    if (F(r)) return [
        [r]
    ];
    for (var e = !0, t = 0; t < r.length; ++t)
        if (!F(r[t])) {
            e = !1;
            break
        }
    if (e) return dM([r]);
    for (var i = [], t = 0; t < r.length; ++t) F(r[t]) ? i.push([r[t]]) : i.push(r[t]);
    return i
}

function mM(r) {
    if (!r || r.length === 0) return [
        [0, 0]
    ];
    if (vt(r)) {
        var e = Math.ceil(r);
        return [
            [e, e]
        ]
    }
    for (var t = !0, i = 0; i < r.length; ++i)
        if (!vt(r[i])) {
            t = !1;
            break
        }
    if (t) return mM([r]);
    for (var a = [], i = 0; i < r.length; ++i)
        if (vt(r[i])) {
            var e = Math.ceil(r[i]);
            a.push([e, e])
        } else {
            var e = k(r[i], function(s) {
                return Math.ceil(s)
            });
            e.length % 2 === 1 ? a.push(e.concat(e)) : a.push(e)
        }
    return a
}

function B5(r) {
    if (!r || typeof r == "object" && r.length === 0) return [0, 0];
    if (vt(r)) {
        var e = Math.ceil(r);
        return [e, e]
    }
    var t = k(r, function(i) {
        return Math.ceil(i)
    });
    return r.length % 2 ? t.concat(t) : t
}

function F5(r) {
    return k(r, function(e) {
        return gM(e)
    })
}

function gM(r) {
    for (var e = 0, t = 0; t < r.length; ++t) e += r[t];
    return r.length % 2 === 1 ? e * 2 : e
}

function g0(r, e) {
    r.eachRawSeries(function(t) {
        if (!r.isSeriesFiltered(t)) {
            var i = t.getData();
            i.hasItemVisual() && i.each(function(o) {
                var s = i.getItemVisual(o, "decal");
                if (s) {
                    var l = i.ensureUniqueItemVisual(o, "style");
                    l.decal = ji(s, e)
                }
            });
            var a = i.getVisual("decal");
            if (a) {
                var n = i.getVisual("style");
                n.decal = ji(a, e)
            }
        }
    })
}
var G5 = new Ce,
    Ai = G5;
var yM = {};

function xM(r, e) {
    yM[r] = e
}

function y0(r) {
    return yM[r]
}
var rnt = "5.6.0",
    int = {
        zrender: "5.6.1"
    },
    H5 = 1,
    W5 = 800,
    Y5 = 900,
    Z5 = 1e3,
    X5 = 2e3,
    q5 = 5e3,
    MM = 1e3,
    K5 = 1100,
    L0 = 2e3,
    LM = 3e3,
    j5 = 4e3,
    uv = 4500,
    J5 = 4600,
    Q5 = 5e3,
    $5 = 6e3,
    IM = 7e3,
    EM = {
        PROCESSOR: {
            FILTER: Z5,
            SERIES_FILTER: W5,
            STATISTIC: q5
        },
        VISUAL: {
            LAYOUT: MM,
            PROGRESSIVE_LAYOUT: K5,
            GLOBAL: L0,
            CHART: LM,
            POST_CHART_LAYOUT: J5,
            COMPONENT: j5,
            BRUSH: Q5,
            CHART_ITEM: uv,
            ARIA: $5,
            DECAL: IM
        }
    },
    ur = "__flagInMainProcess",
    Fr = "__pendingUpdate",
    x0 = "__needsUpdateStatus",
    _M = /^[a-zA-Z0-9_]+$/,
    _0 = "__connectUpdateStatus",
    SM = 0,
    tH = 1,
    eH = 2;

function PM(r) {
    return function() {
        for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
        if (this.isDisposed()) {
            this.id;
            return
        }
        return NM(this, r, e)
    }
}

function RM(r) {
    return function() {
        for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
        return NM(this, r, e)
    }
}

function NM(r, e, t) {
    return t[0] = t[0] && t[0].toLowerCase(), Ce.prototype[e].apply(r, t)
}
var OM = function(r) {
        L(e, r);

        function e() {
            return r !== null && r.apply(this, arguments) || this
        }
        return e
    }(Ce),
    zM = OM.prototype;
zM.on = RM("on");
zM.off = RM("off");
var Nl, S0, iv, Fn, b0, w0, T0, Wf, Yf, bM, wM, C0, TM, av, CM, kM, Di, AM, nv = function(r) {
        L(e, r);

        function e(t, i, a) {
            var n = r.call(this, new XD) || this;
            n._chartsViews = [], n._chartsMap = {}, n._componentsViews = [], n._componentsMap = {}, n._pendingActions = [], a = a || {}, F(i) && (i = UM[i]), n._dom = t;
            var o = "canvas",
                s = "auto",
                l = !1;
            if (0) var u;
            a.ssr && Tg(function(h) {
                var v = et(h),
                    d = v.dataIndex;
                if (d != null) {
                    var m = Y();
                    return m.set("series_index", v.seriesIndex), m.set("data_index", d), v.ssrType && m.set("ssr_type", v.ssrType), m
                }
            });
            var f = n._zr = Oc(t, {
                renderer: a.renderer || o,
                devicePixelRatio: a.devicePixelRatio,
                width: a.width,
                height: a.height,
                ssr: a.ssr,
                useDirtyRect: ot(a.useDirtyRect, l),
                useCoarsePointer: ot(a.useCoarsePointer, s),
                pointerSize: a.pointerSize
            });
            n._ssr = a.ssr, n._throttledZrFlush = Pl(H(f.flush, f), 17), i = Q(i), i && Ph(i, !0), n._theme = i, n._locale = _A(a.locale || gh), n._coordSysMgr = new ga;
            var p = n._api = CM(n);

            function c(h, v) {
                return h.__prio - v.__prio
            }
            return Co(sv, c), Co(A0, c), n._scheduler = new h0(n, p, A0, sv), n._messageCenter = new OM, n._initEvents(), n.resize = H(n.resize, n), f.animation.on("frame", n._onframe, n), bM(f, n), wM(f, n), vn(n), n
        }
        return e.prototype._onframe = function() {
            if (!this._disposed) {
                AM(this);
                var t = this._scheduler;
                if (this[Fr]) {
                    var i = this[Fr].silent;
                    this[ur] = !0;
                    try {
                        Nl(this), Fn.update.call(this, null, this[Fr].updateParams)
                    } catch (l) {
                        throw this[ur] = !1, this[Fr] = null, l
                    }
                    this._zr.flush(), this[ur] = !1, this[Fr] = null, Wf.call(this, i), Yf.call(this, i)
                } else if (t.unfinished) {
                    var a = H5,
                        n = this._model,
                        o = this._api;
                    t.unfinished = !1;
                    do {
                        var s = +new Date;
                        t.performSeriesTasks(n), t.performDataProcessorTasks(n), w0(this, n), t.performVisualTasks(n), av(this, this._model, o, "remain", {}), a -= +new Date - s
                    } while (a > 0 && t.unfinished);
                    t.unfinished || this._zr.flush()
                }
            }
        }, e.prototype.getDom = function() {
            return this._dom
        }, e.prototype.getId = function() {
            return this.id
        }, e.prototype.getZr = function() {
            return this._zr
        }, e.prototype.isSSR = function() {
            return this._ssr
        }, e.prototype.setOption = function(t, i, a) {
            if (!this[ur]) {
                if (this._disposed) {
                    this.id;
                    return
                }
                var n, o, s;
                if (j(i) && (a = i.lazyUpdate, n = i.silent, o = i.replaceMerge, s = i.transition, i = i.notMerge), this[ur] = !0, !this._model || i) {
                    var l = new KA(this._api),
                        u = this._theme,
                        f = this._model = new Ih;
                    f.scheduler = this._scheduler, f.ssr = this._ssr, f.init(null, null, null, u, this._locale, l)
                }
                this._model.setOption(t, {
                    replaceMerge: o
                }, D0);
                var p = {
                    seriesTransition: s,
                    optionChanged: !0
                };
                if (a) this[Fr] = {
                    silent: n,
                    updateParams: p
                }, this[ur] = !1, this.getZr().wakeUp();
                else {
                    try {
                        Nl(this), Fn.update.call(this, null, p)
                    } catch (c) {
                        throw this[Fr] = null, this[ur] = !1, c
                    }
                    this._ssr || this._zr.flush(), this[Fr] = null, this[ur] = !1, Wf.call(this, n), Yf.call(this, n)
                }
            }
        }, e.prototype.setTheme = function() {}, e.prototype.getModel = function() {
            return this._model
        }, e.prototype.getOption = function() {
            return this._model && this._model.getOption()
        }, e.prototype.getWidth = function() {
            return this._zr.getWidth()
        }, e.prototype.getHeight = function() {
            return this._zr.getHeight()
        }, e.prototype.getDevicePixelRatio = function() {
            return this._zr.painter.dpr || Ct.hasGlobalWindow && window.devicePixelRatio || 1
        }, e.prototype.getRenderedCanvas = function(t) {
            return this.renderToCanvas(t)
        }, e.prototype.renderToCanvas = function(t) {
            t = t || {};
            var i = this._zr.painter;
            return i.getRenderedCanvas({
                backgroundColor: t.backgroundColor || this._model.get("backgroundColor"),
                pixelRatio: t.pixelRatio || this.getDevicePixelRatio()
            })
        }, e.prototype.renderToSVGString = function(t) {
            t = t || {};
            var i = this._zr.painter;
            return i.renderToString({
                useViewBox: t.useViewBox
            })
        }, e.prototype.getSvgDataURL = function() {
            if (Ct.svgSupported) {
                var t = this._zr,
                    i = t.storage.getDisplayList();
                return w(i, function(a) {
                    a.stopAnimation(null, !0)
                }), t.painter.toDataURL()
            }
        }, e.prototype.getDataURL = function(t) {
            if (this._disposed) {
                this.id;
                return
            }
            t = t || {};
            var i = t.excludeComponents,
                a = this._model,
                n = [],
                o = this;
            w(i, function(l) {
                a.eachComponent({
                    mainType: l
                }, function(u) {
                    var f = o._componentsMap[u.__viewId];
                    f.group.ignore || (n.push(f), f.group.ignore = !0)
                })
            });
            var s = this._zr.painter.getType() === "svg" ? this.getSvgDataURL() : this.renderToCanvas(t).toDataURL("image/" + (t && t.type || "png"));
            return w(n, function(l) {
                l.group.ignore = !1
            }), s
        }, e.prototype.getConnectedDataURL = function(t) {
            if (this._disposed) {
                this.id;
                return
            }
            var i = t.type === "svg",
                a = this.group,
                n = Math.min,
                o = Math.max,
                s = 1 / 0;
            if (lv[a]) {
                var l = s,
                    u = s,
                    f = -s,
                    p = -s,
                    c = [],
                    h = t && t.pixelRatio || this.getDevicePixelRatio();
                w(hs, function(x, _) {
                    if (x.group === a) {
                        var S = i ? x.getZr().painter.getSvgDom().innerHTML : x.renderToCanvas(Q(t)),
                            b = x.getDom().getBoundingClientRect();
                        l = n(b.left, l), u = n(b.top, u), f = o(b.right, f), p = o(b.bottom, p), c.push({
                            dom: S,
                            left: b.left,
                            top: b.top
                        })
                    }
                }), l *= h, u *= h, f *= h, p *= h;
                var v = f - l,
                    d = p - u,
                    m = He.createCanvas(),
                    g = Oc(m, {
                        renderer: i ? "svg" : "canvas"
                    });
                if (g.resize({
                        width: v,
                        height: d
                    }), i) {
                    var y = "";
                    return w(c, function(x) {
                        var _ = x.left - l,
                            S = x.top - u;
                        y += '<g transform="translate(' + _ + "," + S + ')">' + x.dom + "</g>"
                    }), g.painter.getSvgRoot().innerHTML = y, t.connectedBackgroundColor && g.painter.setBackgroundColor(t.connectedBackgroundColor), g.refreshImmediately(), g.painter.toDataURL()
                } else return t.connectedBackgroundColor && g.add(new ht({
                    shape: {
                        x: 0,
                        y: 0,
                        width: v,
                        height: d
                    },
                    style: {
                        fill: t.connectedBackgroundColor
                    }
                })), w(c, function(x) {
                    var _ = new Zt({
                        style: {
                            x: x.left * h - l,
                            y: x.top * h - u,
                            image: x.dom
                        }
                    });
                    g.add(_)
                }), g.refreshImmediately(), m.toDataURL("image/" + (t && t.type || "png"))
            } else return this.getDataURL(t)
        }, e.prototype.convertToPixel = function(t, i) {
            return b0(this, "convertToPixel", t, i)
        }, e.prototype.convertFromPixel = function(t, i) {
            return b0(this, "convertFromPixel", t, i)
        }, e.prototype.containPixel = function(t, i) {
            if (this._disposed) {
                this.id;
                return
            }
            var a = this._model,
                n, o = wn(a, t);
            return w(o, function(s, l) {
                l.indexOf("Models") >= 0 && w(s, function(u) {
                    var f = u.coordinateSystem;
                    if (f && f.containPoint) n = n || !!f.containPoint(i);
                    else if (l === "seriesModels") {
                        var p = this._chartsMap[u.__viewId];
                        p && p.containPoint && (n = n || p.containPoint(i, u))
                    }
                }, this)
            }, this), !!n
        }, e.prototype.getVisual = function(t, i) {
            var a = this._model,
                n = wn(a, t, {
                    defaultMainType: "series"
                }),
                o = n.seriesModel,
                s = o.getData(),
                l = n.hasOwnProperty("dataIndexInside") ? n.dataIndexInside : n.hasOwnProperty("dataIndex") ? s.indexOfRawIndex(n.dataIndex) : null;
            return l != null ? Uf(s, l, i) : ya(s, i)
        }, e.prototype.getViewOfComponentModel = function(t) {
            return this._componentsMap[t.__viewId]
        }, e.prototype.getViewOfSeriesModel = function(t) {
            return this._chartsMap[t.__viewId]
        }, e.prototype._initEvents = function() {
            var t = this;
            w(rH, function(i) {
                var a = function(n) {
                    var o = t.getModel(),
                        s = n.target,
                        l, u = i === "globalout";
                    if (u ? l = {} : s && qi(s, function(v) {
                            var d = et(v);
                            if (d && d.dataIndex != null) {
                                var m = d.dataModel || o.getSeriesByIndex(d.seriesIndex);
                                return l = m && m.getDataParams(d.dataIndex, d.dataType, s) || {}, !0
                            } else if (d.eventData) return l = O({}, d.eventData), !0
                        }, !0), l) {
                        var f = l.componentType,
                            p = l.componentIndex;
                        (f === "markLine" || f === "markPoint" || f === "markArea") && (f = "series", p = l.seriesIndex);
                        var c = f && p != null && o.getComponent(f, p),
                            h = c && t[c.mainType === "series" ? "_chartsMap" : "_componentsMap"][c.__viewId];
                        l.event = n, l.type = i, t._$eventProcessor.eventInfo = {
                            targetEl: s,
                            packedEvent: l,
                            model: c,
                            view: h
                        }, t.trigger(i, l)
                    }
                };
                a.zrEventfulCallAtLast = !0, t._zr.on(i, a, t)
            }), w(Zf, function(i, a) {
                t._messageCenter.on(a, function(n) {
                    this.trigger(a, n)
                }, t)
            }), w(["selectchanged"], function(i) {
                t._messageCenter.on(i, function(a) {
                    this.trigger(i, a)
                }, t)
            }), JD(this._messageCenter, this, this._api)
        }, e.prototype.isDisposed = function() {
            return this._disposed
        }, e.prototype.clear = function() {
            if (this._disposed) {
                this.id;
                return
            }
            this.setOption({
                series: []
            }, !0)
        }, e.prototype.dispose = function() {
            if (this._disposed) {
                this.id;
                return
            }
            this._disposed = !0;
            var t = this.getDom();
            t && Ig(this.getDom(), E0, "");
            var i = this,
                a = i._api,
                n = i._model;
            w(i._componentsViews, function(o) {
                o.dispose(n, a)
            }), w(i._chartsViews, function(o) {
                o.dispose(n, a)
            }), i._zr.dispose(), i._dom = i._model = i._chartsMap = i._componentsMap = i._chartsViews = i._componentsViews = i._scheduler = i._api = i._zr = i._throttledZrFlush = i._theme = i._coordSysMgr = i._messageCenter = null, delete hs[i.id]
        }, e.prototype.resize = function(t) {
            if (!this[ur]) {
                if (this._disposed) {
                    this.id;
                    return
                }
                this._zr.resize(t);
                var i = this._model;
                if (this._loadingFX && this._loadingFX.resize(), !!i) {
                    var a = i.resetOption("media"),
                        n = t && t.silent;
                    this[Fr] && (n == null && (n = this[Fr].silent), a = !0, this[Fr] = null), this[ur] = !0;
                    try {
                        a && Nl(this), Fn.update.call(this, {
                            type: "resize",
                            animation: O({
                                duration: 0
                            }, t && t.animation)
                        })
                    } catch (o) {
                        throw this[ur] = !1, o
                    }
                    this[ur] = !1, Wf.call(this, n), Yf.call(this, n)
                }
            }
        }, e.prototype.showLoading = function(t, i) {
            if (this._disposed) {
                this.id;
                return
            }
            if (j(t) && (i = t, t = ""), t = t || "default", this.hideLoading(), !!M0[t]) {
                var a = M0[t](this._api, i),
                    n = this._zr;
                this._loadingFX = a, n.add(a)
            }
        }, e.prototype.hideLoading = function() {
            if (this._disposed) {
                this.id;
                return
            }
            this._loadingFX && this._zr.remove(this._loadingFX), this._loadingFX = null
        }, e.prototype.makeActionFromEvent = function(t) {
            var i = O({}, t);
            return i.type = Zf[t.type], i
        }, e.prototype.dispatchAction = function(t, i) {
            if (this._disposed) {
                this.id;
                return
            }
            if (j(i) || (i = {
                    silent: !!i
                }), !!ov[t.type] && this._model) {
                if (this[ur]) {
                    this._pendingActions.push(t);
                    return
                }
                var a = i.silent;
                T0.call(this, t, a);
                var n = i.flush;
                n ? this._zr.flush() : n !== !1 && Ct.browser.weChat && this._throttledZrFlush(), Wf.call(this, a), Yf.call(this, a)
            }
        }, e.prototype.updateLabelLayout = function() {
            Ai.trigger("series:layoutlabels", this._model, this._api, {
                updatedSeries: []
            })
        }, e.prototype.appendData = function(t) {
            if (this._disposed) {
                this.id;
                return
            }
            var i = t.seriesIndex,
                a = this.getModel(),
                n = a.getSeriesByIndex(i);
            n.appendData(t), this._scheduler.unfinished = !0, this.getZr().wakeUp()
        }, e.internalField = function() {
            Nl = function(p) {
                var c = p._scheduler;
                c.restorePipelines(p._model), c.prepareStageTasks(), S0(p, !0), S0(p, !1), c.plan()
            }, S0 = function(p, c) {
                for (var h = p._model, v = p._scheduler, d = c ? p._componentsViews : p._chartsViews, m = c ? p._componentsMap : p._chartsMap, g = p._zr, y = p._api, x = 0; x < d.length; x++) d[x].__alive = !1;
                c ? h.eachComponent(function(b, T) {
                    b !== "series" && _(T)
                }) : h.eachSeries(_);

                function _(b) {
                    var T = b.__requireNewView;
                    b.__requireNewView = !1;
                    var C = "_ec_" + b.id + "_" + b.type,
                        A = !T && m[C];
                    if (!A) {
                        var D = Rr(b.type),
                            M = c ? It.getClass(D.main, D.sub) : At.getClass(D.sub);
                        A = new M, A.init(h, y), m[C] = A, d.push(A), g.add(A.group)
                    }
                    b.__viewId = A.__id = C, A.__alive = !0, A.__model = b, A.group.__ecComponentInfo = {
                        mainType: b.mainType,
                        index: b.componentIndex
                    }, !c && v.prepareView(A, b, h, y)
                }
                for (var x = 0; x < d.length;) {
                    var S = d[x];
                    S.__alive ? x++ : (!c && S.renderTask.dispose(), g.remove(S.group), S.dispose(h, y), d.splice(x, 1), m[S.__id] === S && delete m[S.__id], S.__id = S.group.__ecComponentInfo = null)
                }
            }, iv = function(p, c, h, v, d) {
                var m = p._model;
                if (m.setUpdatePayload(h), !v) {
                    w([].concat(p._componentsViews).concat(p._chartsViews), S);
                    return
                }
                var g = {};
                g[v + "Id"] = h[v + "Id"], g[v + "Index"] = h[v + "Index"], g[v + "Name"] = h[v + "Name"];
                var y = {
                    mainType: v,
                    query: g
                };
                d && (y.subType = d);
                var x = h.excludeSeriesId,
                    _;
                x != null && (_ = Y(), w(Pt(x), function(b) {
                    var T = ie(b, null);
                    T != null && _.set(T, !0)
                })), m && m.eachComponent(y, function(b) {
                    var T = _ && _.get(b.id) != null;
                    if (!T)
                        if (oy(h))
                            if (b instanceof Lt) h.type === En && !h.notBlur && !b.get(["emphasis", "disabled"]) && TC(b, h, p._api);
                            else {
                                var C = jc(b.mainType, b.componentIndex, h.name, p._api),
                                    A = C.focusSelf,
                                    D = C.dispatchers;
                                h.type === En && A && !h.notBlur && Xc(b.mainType, b.componentIndex, p._api), D && w(D, function(M) {
                                    h.type === En ? rr(M) : ir(M)
                                })
                            }
                    else Qc(h) && b instanceof Lt && (DC(b, h, p._api), ny(b), Di(p))
                }, p), m && m.eachComponent(y, function(b) {
                    var T = _ && _.get(b.id) != null;
                    T || S(p[v === "series" ? "_chartsMap" : "_componentsMap"][b.__viewId])
                }, p);

                function S(b) {
                    b && b.__alive && b[c] && b[c](b.__model, m, p._api, h)
                }
            }, Fn = {
                prepareAndUpdate: function(p) {
                    Nl(this), Fn.update.call(this, p, {
                        optionChanged: p.newOption != null
                    })
                },
                update: function(p, c) {
                    var h = this._model,
                        v = this._api,
                        d = this._zr,
                        m = this._coordSysMgr,
                        g = this._scheduler;
                    if (h) {
                        h.setUpdatePayload(p), g.restoreData(h, p), g.performSeriesTasks(h), m.create(h, v), g.performDataProcessorTasks(h, p), w0(this, h), m.update(h, v), t(h), g.performVisualTasks(h, p), C0(this, h, v, p, c);
                        var y = h.get("backgroundColor") || "transparent",
                            x = h.get("darkMode");
                        d.setBackgroundColor(y), x != null && x !== "auto" && d.setDarkMode(x), Ai.trigger("afterupdate", h, v)
                    }
                },
                updateTransform: function(p) {
                    var c = this,
                        h = this._model,
                        v = this._api;
                    if (h) {
                        h.setUpdatePayload(p);
                        var d = [];
                        h.eachComponent(function(g, y) {
                            if (g !== "series") {
                                var x = c.getViewOfComponentModel(y);
                                if (x && x.__alive)
                                    if (x.updateTransform) {
                                        var _ = x.updateTransform(y, h, v, p);
                                        _ && _.update && d.push(x)
                                    } else d.push(x)
                            }
                        });
                        var m = Y();
                        h.eachSeries(function(g) {
                            var y = c._chartsMap[g.__viewId];
                            if (y.updateTransform) {
                                var x = y.updateTransform(g, h, v, p);
                                x && x.update && m.set(g.uid, 1)
                            } else m.set(g.uid, 1)
                        }), t(h), this._scheduler.performVisualTasks(h, p, {
                            setDirty: !0,
                            dirtyMap: m
                        }), av(this, h, v, p, {}, m), Ai.trigger("afterupdate", h, v)
                    }
                },
                updateView: function(p) {
                    var c = this._model;
                    c && (c.setUpdatePayload(p), At.markUpdateMethod(p, "updateView"), t(c), this._scheduler.performVisualTasks(c, p, {
                        setDirty: !0
                    }), C0(this, c, this._api, p, {}), Ai.trigger("afterupdate", c, this._api))
                },
                updateVisual: function(p) {
                    var c = this,
                        h = this._model;
                    h && (h.setUpdatePayload(p), h.eachSeries(function(v) {
                        v.getData().clearAllVisual()
                    }), At.markUpdateMethod(p, "updateVisual"), t(h), this._scheduler.performVisualTasks(h, p, {
                        visualType: "visual",
                        setDirty: !0
                    }), h.eachComponent(function(v, d) {
                        if (v !== "series") {
                            var m = c.getViewOfComponentModel(d);
                            m && m.__alive && m.updateVisual(d, h, c._api, p)
                        }
                    }), h.eachSeries(function(v) {
                        var d = c._chartsMap[v.__viewId];
                        d.updateVisual(v, h, c._api, p)
                    }), Ai.trigger("afterupdate", h, this._api))
                },
                updateLayout: function(p) {
                    Fn.update.call(this, p)
                }
            }, b0 = function(p, c, h, v) {
                if (p._disposed) {
                    p.id;
                    return
                }
                for (var d = p._model, m = p._coordSysMgr.getCoordinateSystems(), g, y = wn(d, h), x = 0; x < m.length; x++) {
                    var _ = m[x];
                    if (_[c] && (g = _[c](d, y, v)) != null) return g
                }
            }, w0 = function(p, c) {
                var h = p._chartsMap,
                    v = p._scheduler;
                c.eachSeries(function(d) {
                    v.updateStreamModes(d, h[d.__viewId])
                })
            }, T0 = function(p, c) {
                var h = this,
                    v = this.getModel(),
                    d = p.type,
                    m = p.escapeConnect,
                    g = ov[d],
                    y = g.actionInfo,
                    x = (y.update || "update").split(":"),
                    _ = x.pop(),
                    S = x[0] != null && Rr(x[0]);
                this[ur] = !0;
                var b = [p],
                    T = !1;
                p.batch && (T = !0, b = k(p.batch, function(P) {
                    return P = q(O({}, P), p), P.batch = null, P
                }));
                var C = [],
                    A, D = Qc(p),
                    M = oy(p);
                if (M && ay(this._api), w(b, function(P) {
                        if (A = g.action(P, h._model, h._api), A = A || O({}, P), A.type = y.event || A.type, C.push(A), M) {
                            var R = tf(p),
                                N = R.queryOptionMap,
                                V = R.mainTypeSpecified,
                                U = V ? N.keys()[0] : "series";
                            iv(h, _, P, U), Di(h)
                        } else D ? (iv(h, _, P, "series"), Di(h)) : S && iv(h, _, P, S.main, S.sub)
                    }), _ !== "none" && !M && !D && !S) try {
                    this[Fr] ? (Nl(this), Fn.update.call(this, p), this[Fr] = null) : Fn[_].call(this, p)
                } catch (P) {
                    throw this[ur] = !1, P
                }
                if (T ? A = {
                        type: y.event || d,
                        escapeConnect: m,
                        batch: C
                    } : A = C[0], this[ur] = !1, !c) {
                    var I = this._messageCenter;
                    if (I.trigger(A.type, A), D) {
                        var E = {
                            type: "selectchanged",
                            escapeConnect: m,
                            selected: MC(v),
                            isFromClick: p.isFromClick || !1,
                            fromAction: p.type,
                            fromActionPayload: p
                        };
                        I.trigger(E.type, E)
                    }
                }
            }, Wf = function(p) {
                for (var c = this._pendingActions; c.length;) {
                    var h = c.shift();
                    T0.call(this, h, p)
                }
            }, Yf = function(p) {
                !p && this.trigger("updated")
            }, bM = function(p, c) {
                p.on("rendered", function(h) {
                    c.trigger("rendered", h), p.animation.isFinished() && !c[Fr] && !c._scheduler.unfinished && !c._pendingActions.length && c.trigger("finished")
                })
            }, wM = function(p, c) {
                p.on("mouseover", function(h) {
                    var v = h.target,
                        d = qi(v, Pn);
                    d && (CC(d, h, c._api), Di(c))
                }).on("mouseout", function(h) {
                    var v = h.target,
                        d = qi(v, Pn);
                    d && (AC(d, h, c._api), Di(c))
                }).on("click", function(h) {
                    var v = h.target,
                        d = qi(v, function(y) {
                            return et(y).dataIndex != null
                        }, !0);
                    if (d) {
                        var m = d.selected ? "unselect" : "select",
                            g = et(d);
                        c._api.dispatchAction({
                            type: m,
                            dataType: g.dataType,
                            dataIndexInside: g.dataIndex,
                            seriesIndex: g.seriesIndex,
                            isFromClick: !0
                        })
                    }
                })
            };

            function t(p) {
                p.clearColorPalette(), p.eachSeries(function(c) {
                    c.clearColorPalette()
                })
            }

            function i(p) {
                var c = [],
                    h = [],
                    v = !1;
                if (p.eachComponent(function(y, x) {
                        var _ = x.get("zlevel") || 0,
                            S = x.get("z") || 0,
                            b = x.getZLevelKey();
                        v = v || !!b, (y === "series" ? h : c).push({
                            zlevel: _,
                            z: S,
                            idx: x.componentIndex,
                            type: y,
                            key: b
                        })
                    }), v) {
                    var d = c.concat(h),
                        m, g;
                    Co(d, function(y, x) {
                        return y.zlevel === x.zlevel ? y.z - x.z : y.zlevel - x.zlevel
                    }), w(d, function(y) {
                        var x = p.getComponent(y.type, y.idx),
                            _ = y.zlevel,
                            S = y.key;
                        m != null && (_ = Math.max(m, _)), S ? (_ === m && S !== g && _++, g = S) : g && (_ === m && _++, g = ""), m = _, x.setZLevel(_)
                    })
                }
            }
            C0 = function(p, c, h, v, d) {
                i(c), TM(p, c, h, v, d), w(p._chartsViews, function(m) {
                    m.__alive = !1
                }), av(p, c, h, v, d), w(p._chartsViews, function(m) {
                    m.__alive || m.remove(c, h)
                })
            }, TM = function(p, c, h, v, d, m) {
                w(m || p._componentsViews, function(g) {
                    var y = g.__model;
                    u(y, g), g.render(y, c, h, v), s(y, g), f(y, g)
                })
            }, av = function(p, c, h, v, d, m) {
                var g = p._scheduler;
                d = O(d || {}, {
                    updatedSeries: c.getSeries()
                }), Ai.trigger("series:beforeupdate", c, h, d);
                var y = !1;
                c.eachSeries(function(x) {
                    var _ = p._chartsMap[x.__viewId];
                    _.__alive = !0;
                    var S = _.renderTask;
                    g.updatePayload(S, v), u(x, _), m && m.get(x.uid) && S.dirty(), S.perform(g.getPerformArgs(S)) && (y = !0), _.group.silent = !!x.get("silent"), o(x, _), ny(x)
                }), g.unfinished = y || g.unfinished, Ai.trigger("series:layoutlabels", c, h, d), Ai.trigger("series:transition", c, h, d), c.eachSeries(function(x) {
                    var _ = p._chartsMap[x.__viewId];
                    s(x, _), f(x, _)
                }), n(p, c), Ai.trigger("series:afterupdate", c, h, d)
            }, Di = function(p) {
                p[x0] = !0, p.getZr().wakeUp()
            }, AM = function(p) {
                p[x0] && (p.getZr().storage.traverse(function(c) {
                    Xa(c) || a(c)
                }), p[x0] = !1)
            };

            function a(p) {
                for (var c = [], h = p.currentStates, v = 0; v < h.length; v++) {
                    var d = h[v];
                    d === "emphasis" || d === "blur" || d === "select" || c.push(d)
                }
                p.selected && p.states.select && c.push("select"), p.hoverState === lf && p.states.emphasis ? c.push("emphasis") : p.hoverState === qo && p.states.blur && c.push("blur"), p.useStates(c)
            }

            function n(p, c) {
                var h = p._zr,
                    v = h.storage,
                    d = 0;
                v.traverse(function(m) {
                    m.isGroup || d++
                }), d > c.get("hoverLayerThreshold") && !Ct.node && !Ct.worker && c.eachSeries(function(m) {
                    if (!m.preventUsingHoverLayer) {
                        var g = p._chartsMap[m.__viewId];
                        g.__alive && g.eachRendered(function(y) {
                            y.states.emphasis && (y.states.emphasis.hoverLayer = !0)
                        })
                    }
                })
            }

            function o(p, c) {
                var h = p.get("blendMode") || null;
                c.eachRendered(function(v) {
                    v.isGroup || (v.style.blend = h)
                })
            }

            function s(p, c) {
                if (!p.preventAutoZ) {
                    var h = p.get("z") || 0,
                        v = p.get("zlevel") || 0;
                    c.eachRendered(function(d) {
                        return l(d, h, v, -1 / 0), !0
                    })
                }
            }

            function l(p, c, h, v) {
                var d = p.getTextContent(),
                    m = p.getTextGuideLine(),
                    g = p.isGroup;
                if (g)
                    for (var y = p.childrenRef(), x = 0; x < y.length; x++) v = Math.max(l(y[x], c, h, v), v);
                else p.z = c, p.zlevel = h, v = Math.max(p.z2, v);
                if (d && (d.z = c, d.zlevel = h, isFinite(v) && (d.z2 = v + 2)), m) {
                    var _ = p.textGuideLineConfig;
                    m.z = c, m.zlevel = h, isFinite(v) && (m.z2 = v + (_ && _.showAbove ? 1 : -1))
                }
                return v
            }

            function u(p, c) {
                c.eachRendered(function(h) {
                    if (!Xa(h)) {
                        var v = h.getTextContent(),
                            d = h.getTextGuideLine();
                        h.stateTransition && (h.stateTransition = null), v && v.stateTransition && (v.stateTransition = null), d && d.stateTransition && (d.stateTransition = null), h.hasState() ? (h.prevStates = h.currentStates, h.clearStates()) : h.prevStates && (h.prevStates = null)
                    }
                })
            }

            function f(p, c) {
                var h = p.getModel("stateAnimation"),
                    v = p.isAnimationEnabled(),
                    d = h.get("duration"),
                    m = d > 0 ? {
                        duration: d,
                        delay: h.get("delay"),
                        easing: h.get("easing")
                    } : null;
                c.eachRendered(function(g) {
                    if (g.states && g.states.emphasis) {
                        if (Xa(g)) return;
                        if (g instanceof st && EC(g), g.__dirty) {
                            var y = g.prevStates;
                            y && g.useStates(y)
                        }
                        if (v) {
                            g.stateTransition = m;
                            var x = g.getTextContent(),
                                _ = g.getTextGuideLine();
                            x && (x.stateTransition = m), _ && (_.stateTransition = m)
                        }
                        g.__dirty && a(g)
                    }
                })
            }
            CM = function(p) {
                return new(function(c) {
                    L(h, c);

                    function h() {
                        return c !== null && c.apply(this, arguments) || this
                    }
                    return h.prototype.getCoordinateSystems = function() {
                        return p._coordSysMgr.getCoordinateSystems()
                    }, h.prototype.getComponentByElement = function(v) {
                        for (; v;) {
                            var d = v.__ecComponentInfo;
                            if (d != null) return p._model.getComponent(d.mainType, d.index);
                            v = v.parent
                        }
                    }, h.prototype.enterEmphasis = function(v, d) {
                        rr(v, d), Di(p)
                    }, h.prototype.leaveEmphasis = function(v, d) {
                        ir(v, d), Di(p)
                    }, h.prototype.enterBlur = function(v) {
                        Kc(v), Di(p)
                    }, h.prototype.leaveBlur = function(v) {
                        pf(v), Di(p)
                    }, h.prototype.enterSelect = function(v) {
                        ry(v), Di(p)
                    }, h.prototype.leaveSelect = function(v) {
                        iy(v), Di(p)
                    }, h.prototype.getModel = function() {
                        return p.getModel()
                    }, h.prototype.getViewOfComponentModel = function(v) {
                        return p.getViewOfComponentModel(v)
                    }, h.prototype.getViewOfSeriesModel = function(v) {
                        return p.getViewOfSeriesModel(v)
                    }, h
                }(Eh))(p)
            }, kM = function(p) {
                function c(h, v) {
                    for (var d = 0; d < h.length; d++) {
                        var m = h[d];
                        m[_0] = v
                    }
                }
                w(Zf, function(h, v) {
                    p._messageCenter.on(v, function(d) {
                        if (lv[p.group] && p[_0] !== SM) {
                            if (d && d.escapeConnect) return;
                            var m = p.makeActionFromEvent(d),
                                g = [];
                            w(hs, function(y) {
                                y !== p && y.group === p.group && g.push(y)
                            }), c(g, SM), w(g, function(y) {
                                y[_0] !== tH && y.dispatchAction(m)
                            }), c(g, eH)
                        }
                    })
                })
            }
        }(), e
    }(Ce),
    I0 = nv.prototype;
I0.on = PM("on");
I0.off = PM("off");
I0.one = function(r, e, t) {
    var i = this;

    function a() {
        for (var n = [], o = 0; o < arguments.length; o++) n[o] = arguments[o];
        e && e.apply && e.apply(this, n), i.off(r, a)
    }
    this.on.call(this, r, a, t)
};
var rH = ["click", "dblclick", "mouseover", "mouseout", "mousemove", "mousedown", "mouseup", "globalout", "contextmenu"];
var ov = {},
    Zf = {},
    A0 = [],
    D0 = [],
    sv = [],
    UM = {},
    M0 = {},
    hs = {},
    lv = {},
    iH = +new Date - 0,
    aH = +new Date - 0,
    E0 = "_echarts_instance_";

function ant(r, e, t) {
    var i = !(t && t.ssr);
    if (i) {
        var a = VM(r);
        if (a) return a
    }
    var n = new nv(r, e, t);
    return n.id = "ec_" + iH++, hs[n.id] = n, i && Ig(r, E0, n.id), kM(n), Ai.trigger("afterinit", n), n
}

function nnt(r) {
    if (z(r)) {
        var e = r;
        r = null, w(e, function(t) {
            t.group != null && (r = t.group)
        }), r = r || "g_" + aH++, w(e, function(t) {
            t.group = r
        })
    }
    return lv[r] = !0, r
}

function nH(r) {
    lv[r] = !1
}
var ont = nH;

function snt(r) {
    F(r) ? r = hs[r] : r instanceof nv || (r = VM(r)), r instanceof nv && !r.isDisposed() && r.dispose()
}

function VM(r) {
    return hs[wT(r, E0)]
}

function lnt(r) {
    return hs[r]
}

function BM(r, e) {
    UM[r] = e
}

function P0(r) {
    at(D0, r) < 0 && D0.push(r)
}

function R0(r, e) {
    N0(A0, r, e, X5)
}

function FM(r) {
    fv("afterinit", r)
}

function GM(r) {
    fv("afterupdate", r)
}

function fv(r, e) {
    Ai.on(r, e)
}

function mr(r, e, t) {
    X(e) && (t = e, e = "");
    var i = j(r) ? r.type : [r, r = {
        event: e
    }][0];
    r.event = (r.event || i).toLowerCase(), e = r.event, !Zf[e] && (jt(_M.test(i) && _M.test(e)), ov[i] || (ov[i] = {
        action: t,
        actionInfo: r
    }), Zf[e] = i)
}

function HM(r, e) {
    ga.register(r, e)
}

function unt(r) {
    var e = ga.get(r);
    if (e) return e.getDimensionsInfo ? e.getDimensionsInfo() : e.dimensions.slice()
}

function WM(r, e) {
    N0(sv, r, e, MM, "layout")
}

function Gn(r, e) {
    N0(sv, r, e, LM, "visual")
}
var DM = [];

function N0(r, e, t, i, a) {
    if ((X(e) || j(e)) && (t = e, e = i), !(at(DM, t) >= 0)) {
        DM.push(t);
        var n = h0.wrapStageHandler(t, a);
        n.__prio = e, n.__raw = t, r.push(n)
    }
}

function O0(r, e) {
    M0[r] = e
}

function fnt(r) {
    Im({
        createCanvas: r
    })
}

function YM(r, e, t) {
    var i = y0("registerMap");
    i && i(r, e, t)
}

function pnt(r) {
    var e = y0("getMap");
    return e && e(r)
}
var ZM = hD;
Gn(L0, OD);
Gn(uv, zD);
Gn(uv, kD);
Gn(L0, KD);
Gn(uv, jD);
Gn(IM, g0);
P0(Ph);
R0(Y5, qy);
O0("default", c0);
mr({
    type: En,
    event: En,
    update: En
}, Yt);
mr({
    type: uf,
    event: uf,
    update: uf
}, Yt);
mr({
    type: pl,
    event: pl,
    update: pl
}, Yt);
mr({
    type: ff,
    event: ff,
    update: ff
}, Yt);
mr({
    type: cl,
    event: cl,
    update: cl
}, Yt);
BM("light", GD);
BM("dark", ZD);
var cnt = {};
var XM = [],
    oH = {
        registerPreprocessor: P0,
        registerProcessor: R0,
        registerPostInit: FM,
        registerPostUpdate: GM,
        registerUpdateLifecycle: fv,
        registerAction: mr,
        registerCoordinateSystem: HM,
        registerLayout: WM,
        registerVisual: Gn,
        registerTransform: ZM,
        registerLoading: O0,
        registerMap: YM,
        registerImpl: xM,
        PRIORITY: EM,
        ComponentModel: yt,
        ComponentView: It,
        SeriesModel: Lt,
        ChartView: At,
        registerComponentModel: function(r) {
            yt.registerClass(r)
        },
        registerComponentView: function(r) {
            It.registerClass(r)
        },
        registerSeriesModel: function(r) {
            Lt.registerClass(r)
        },
        registerChartView: function(r) {
            At.registerClass(r)
        },
        registerSubTypeDefaulter: function(r, e) {
            yt.registerSubTypeDefaulter(r, e)
        },
        registerPainter: function(r, e) {
            bg(r, e)
        }
    };

function _t(r) {
    if (z(r)) {
        w(r, function(e) {
            _t(e)
        });
        return
    }
    at(XM, r) >= 0 || (XM.push(r), X(r) && (r = {
        install: r
    }), r.install(oH))
}

function Xf(r) {
    return r == null ? 0 : r.length || 1
}

function qM(r) {
    return r
}
var sH = function() {
        function r(e, t, i, a, n, o) {
            this._old = e, this._new = t, this._oldKeyGetter = i || qM, this._newKeyGetter = a || qM, this.context = n, this._diffModeMultiple = o === "multiple"
        }
        return r.prototype.add = function(e) {
            return this._add = e, this
        }, r.prototype.update = function(e) {
            return this._update = e, this
        }, r.prototype.updateManyToOne = function(e) {
            return this._updateManyToOne = e, this
        }, r.prototype.updateOneToMany = function(e) {
            return this._updateOneToMany = e, this
        }, r.prototype.updateManyToMany = function(e) {
            return this._updateManyToMany = e, this
        }, r.prototype.remove = function(e) {
            return this._remove = e, this
        }, r.prototype.execute = function() {
            this[this._diffModeMultiple ? "_executeMultiple" : "_executeOneToOne"]()
        }, r.prototype._executeOneToOne = function() {
            var e = this._old,
                t = this._new,
                i = {},
                a = new Array(e.length),
                n = new Array(t.length);
            this._initIndexMap(e, null, a, "_oldKeyGetter"), this._initIndexMap(t, i, n, "_newKeyGetter");
            for (var o = 0; o < e.length; o++) {
                var s = a[o],
                    l = i[s],
                    u = Xf(l);
                if (u > 1) {
                    var f = l.shift();
                    l.length === 1 && (i[s] = l[0]), this._update && this._update(f, o)
                } else u === 1 ? (i[s] = null, this._update && this._update(l, o)) : this._remove && this._remove(o)
            }
            this._performRestAdd(n, i)
        }, r.prototype._executeMultiple = function() {
            var e = this._old,
                t = this._new,
                i = {},
                a = {},
                n = [],
                o = [];
            this._initIndexMap(e, i, n, "_oldKeyGetter"), this._initIndexMap(t, a, o, "_newKeyGetter");
            for (var s = 0; s < n.length; s++) {
                var l = n[s],
                    u = i[l],
                    f = a[l],
                    p = Xf(u),
                    c = Xf(f);
                if (p > 1 && c === 1) this._updateManyToOne && this._updateManyToOne(f, u), a[l] = null;
                else if (p === 1 && c > 1) this._updateOneToMany && this._updateOneToMany(f, u), a[l] = null;
                else if (p === 1 && c === 1) this._update && this._update(f, u), a[l] = null;
                else if (p > 1 && c > 1) this._updateManyToMany && this._updateManyToMany(f, u), a[l] = null;
                else if (p > 1)
                    for (var h = 0; h < p; h++) this._remove && this._remove(u[h]);
                else this._remove && this._remove(u)
            }
            this._performRestAdd(o, a)
        }, r.prototype._performRestAdd = function(e, t) {
            for (var i = 0; i < e.length; i++) {
                var a = e[i],
                    n = t[a],
                    o = Xf(n);
                if (o > 1)
                    for (var s = 0; s < o; s++) this._add && this._add(n[s]);
                else o === 1 && this._add && this._add(n);
                t[a] = null
            }
        }, r.prototype._initIndexMap = function(e, t, i, a) {
            for (var n = this._diffModeMultiple, o = 0; o < e.length; o++) {
                var s = "_ec_" + this[a](e[o], o);
                if (n || (i[o] = s), !!t) {
                    var l = t[s],
                        u = Xf(l);
                    u === 0 ? (t[s] = o, n && i.push(s)) : u === 1 ? t[s] = [l, o] : l.push(o)
                }
            }
        }, r
    }(),
    tr = sH;
var lH = function() {
    function r(e, t) {
        this._encode = e, this._schema = t
    }
    return r.prototype.get = function() {
        return {
            fullDimensions: this._getFullDimensionNames(),
            encode: this._encode
        }
    }, r.prototype._getFullDimensionNames = function() {
        return this._cachedDimNames || (this._cachedDimNames = this._schema ? this._schema.makeOutputDimensionNames() : []), this._cachedDimNames
    }, r
}();

function KM(r, e) {
    var t = {},
        i = t.encode = {},
        a = Y(),
        n = [],
        o = [],
        s = {};
    w(r.dimensions, function(c) {
        var h = r.getDimensionInfo(c),
            v = h.coordDim;
        if (v) {
            var d = h.coordDimIndex;
            z0(i, v)[d] = c, h.isExtraCoord || (a.set(v, 1), uH(h.type) && (n[0] = c), z0(s, v)[d] = r.getDimensionIndex(h.name)), h.defaultTooltip && o.push(c)
        }
        Ch.each(function(m, g) {
            var y = z0(i, g),
                x = h.otherDims[g];
            x != null && x !== !1 && (y[x] = h.name)
        })
    });
    var l = [],
        u = {};
    a.each(function(c, h) {
        var v = i[h];
        u[h] = v[0], l = l.concat(v)
    }), t.dataDimsOnCoord = l, t.dataDimIndicesOnCoord = k(l, function(c) {
        return r.getDimensionInfo(c).storeDimIndex
    }), t.encodeFirstDimNotExtra = u;
    var f = i.label;
    f && f.length && (n = f.slice());
    var p = i.tooltip;
    return p && p.length ? o = p.slice() : o.length || (o = n.slice()), i.defaultedLabel = n, i.defaultedTooltip = o, t.userOutput = new lH(s, e), t
}

function z0(r, e) {
    return r.hasOwnProperty(e) || (r[e] = []), r[e]
}

function vs(r) {
    return r === "category" ? "ordinal" : r === "time" ? "time" : "float"
}

function uH(r) {
    return !(r === "ordinal" || r === "time")
}
var fH = function() {
        function r(e) {
            this.otherDims = {}, e != null && O(this, e)
        }
        return r
    }(),
    Ol = fH;
var pH = lt(),
    cH = {
        float: "f",
        int: "i",
        ordinal: "o",
        number: "n",
        time: "t"
    },
    k0 = function() {
        function r(e) {
            this.dimensions = e.dimensions, this._dimOmitted = e.dimensionOmitted, this.source = e.source, this._fullDimCount = e.fullDimensionCount, this._updateDimOmitted(e.dimensionOmitted)
        }
        return r.prototype.isDimensionOmitted = function() {
            return this._dimOmitted
        }, r.prototype._updateDimOmitted = function(e) {
            this._dimOmitted = e, e && (this._dimNameMap || (this._dimNameMap = V0(this.source)))
        }, r.prototype.getSourceDimensionIndex = function(e) {
            return ot(this._dimNameMap.get(e), -1)
        }, r.prototype.getSourceDimension = function(e) {
            var t = this.source.dimensionsDefine;
            if (t) return t[e]
        }, r.prototype.makeStoreSchema = function() {
            for (var e = this._fullDimCount, t = Nh(this.source), i = !B0(e), a = "", n = [], o = 0, s = 0; o < e; o++) {
                var l = void 0,
                    u = void 0,
                    f = void 0,
                    p = this.dimensions[s];
                if (p && p.storeDimIndex === o) l = t ? p.name : null, u = p.type, f = p.ordinalMeta, s++;
                else {
                    var c = this.getSourceDimension(o);
                    c && (l = t ? c.name : null, u = c.type)
                }
                n.push({
                    property: l,
                    type: u,
                    ordinalMeta: f
                }), t && l != null && (!p || !p.isCalculationCoord) && (a += i ? l.replace(/\`/g, "`1").replace(/\$/g, "`2") : l), a += "$", a += cH[u] || "f", f && (a += f.uid), a += "$"
            }
            var h = this.source,
                v = [h.seriesLayoutBy, h.startIndex, a].join("$$");
            return {
                dimensions: n,
                hash: v
            }
        }, r.prototype.makeOutputDimensionNames = function() {
            for (var e = [], t = 0, i = 0; t < this._fullDimCount; t++) {
                var a = void 0,
                    n = this.dimensions[i];
                if (n && n.storeDimIndex === t) n.isCalculationCoord || (a = n.name), i++;
                else {
                    var o = this.getSourceDimension(t);
                    o && (a = o.name)
                }
                e.push(a)
            }
            return e
        }, r.prototype.appendCalculationDimension = function(e) {
            this.dimensions.push(e), e.isCalculationCoord = !0, this._fullDimCount++, this._updateDimOmitted(!0)
        }, r
    }();

function cv(r) {
    return r instanceof k0
}

function U0(r) {
    for (var e = Y(), t = 0; t < (r || []).length; t++) {
        var i = r[t],
            a = j(i) ? i.name : i;
        a != null && e.get(a) == null && e.set(a, t)
    }
    return e
}

function V0(r) {
    var e = pH(r);
    return e.dimNameMap || (e.dimNameMap = U0(r.dimensionsDefine))
}

function B0(r) {
    return r > 30
}
var qf = j,
    Hn = k,
    hH = typeof Int32Array > "u" ? Array : Int32Array,
    vH = "e\0\0",
    jM = -1,
    dH = ["hasItemOption", "_nameList", "_idList", "_invertedIndicesMap", "_dimSummary", "userOutput", "_rawData", "_dimValueGetter", "_nameDimIdx", "_idDimIdx", "_nameRepeatCount"],
    mH = ["_approximateExtent"],
    JM, hv, Kf, jf, F0, Jf, G0, gH = function() {
        function r(e, t) {
            this.type = "list", this._dimOmitted = !1, this._nameList = [], this._idList = [], this._visual = {}, this._layout = {}, this._itemVisuals = [], this._itemLayouts = [], this._graphicEls = [], this._approximateExtent = {}, this._calculationInfo = {}, this.hasItemOption = !1, this.TRANSFERABLE_METHODS = ["cloneShallow", "downSample", "minmaxDownSample", "lttbDownSample", "map"], this.CHANGABLE_METHODS = ["filterSelf", "selectRange"], this.DOWNSAMPLE_METHODS = ["downSample", "minmaxDownSample", "lttbDownSample"];
            var i, a = !1;
            cv(e) ? (i = e.dimensions, this._dimOmitted = e.isDimensionOmitted(), this._schema = e) : (a = !0, i = e), i = i || ["x", "y"];
            for (var n = {}, o = [], s = {}, l = !1, u = {}, f = 0; f < i.length; f++) {
                var p = i[f],
                    c = F(p) ? new Ol({
                        name: p
                    }) : p instanceof Ol ? p : new Ol(p),
                    h = c.name;
                c.type = c.type || "float", c.coordDim || (c.coordDim = h, c.coordDimIndex = 0);
                var v = c.otherDims = c.otherDims || {};
                o.push(h), n[h] = c, u[h] != null && (l = !0), c.createInvertedIndices && (s[h] = []), v.itemName === 0 && (this._nameDimIdx = f), v.itemId === 0 && (this._idDimIdx = f), a && (c.storeDimIndex = f)
            }
            if (this.dimensions = o, this._dimInfos = n, this._initGetDimensionInfo(l), this.hostModel = t, this._invertedIndicesMap = s, this._dimOmitted) {
                var d = this._dimIdxToName = Y();
                w(o, function(m) {
                    d.set(n[m].storeDimIndex, m)
                })
            }
        }
        return r.prototype.getDimension = function(e) {
            var t = this._recognizeDimIndex(e);
            if (t == null) return e;
            if (t = e, !this._dimOmitted) return this.dimensions[t];
            var i = this._dimIdxToName.get(t);
            if (i != null) return i;
            var a = this._schema.getSourceDimension(t);
            if (a) return a.name
        }, r.prototype.getDimensionIndex = function(e) {
            var t = this._recognizeDimIndex(e);
            if (t != null) return t;
            if (e == null) return -1;
            var i = this._getDimInfo(e);
            return i ? i.storeDimIndex : this._dimOmitted ? this._schema.getSourceDimensionIndex(e) : -1
        }, r.prototype._recognizeDimIndex = function(e) {
            if (vt(e) || e != null && !isNaN(e) && !this._getDimInfo(e) && (!this._dimOmitted || this._schema.getSourceDimensionIndex(e) < 0)) return +e
        }, r.prototype._getStoreDimIndex = function(e) {
            var t = this.getDimensionIndex(e);
            return t
        }, r.prototype.getDimensionInfo = function(e) {
            return this._getDimInfo(this.getDimension(e))
        }, r.prototype._initGetDimensionInfo = function(e) {
            var t = this._dimInfos;
            this._getDimInfo = e ? function(i) {
                return t.hasOwnProperty(i) ? t[i] : void 0
            } : function(i) {
                return t[i]
            }
        }, r.prototype.getDimensionsOnCoord = function() {
            return this._dimSummary.dataDimsOnCoord.slice()
        }, r.prototype.mapDimension = function(e, t) {
            var i = this._dimSummary;
            if (t == null) return i.encodeFirstDimNotExtra[e];
            var a = i.encode[e];
            return a ? a[t] : null
        }, r.prototype.mapDimensionsAll = function(e) {
            var t = this._dimSummary,
                i = t.encode[e];
            return (i || []).slice()
        }, r.prototype.getStore = function() {
            return this._store
        }, r.prototype.initData = function(e, t, i) {
            var a = this,
                n;
            if (e instanceof Nf && (n = e), !n) {
                var o = this.dimensions,
                    s = Ml(e) || ue(e) ? new Oh(e, o.length) : e;
                n = new Nf;
                var l = Hn(o, function(u) {
                    return {
                        type: a._dimInfos[u].type,
                        property: u
                    }
                });
                n.initData(s, l, i)
            }
            this._store = n, this._nameList = (t || []).slice(), this._idList = [], this._nameRepeatCount = {}, this._doInit(0, n.count()), this._dimSummary = KM(this, this._schema), this.userOutput = this._dimSummary.userOutput
        }, r.prototype.appendData = function(e) {
            var t = this._store.appendData(e);
            this._doInit(t[0], t[1])
        }, r.prototype.appendValues = function(e, t) {
            var i = this._store.appendValues(e, t && t.length),
                a = i.start,
                n = i.end,
                o = this._shouldMakeIdFromName();
            if (this._updateOrdinalMeta(), t)
                for (var s = a; s < n; s++) {
                    var l = s - a;
                    this._nameList[s] = t[l], o && G0(this, s)
                }
        }, r.prototype._updateOrdinalMeta = function() {
            for (var e = this._store, t = this.dimensions, i = 0; i < t.length; i++) {
                var a = this._dimInfos[t[i]];
                a.ordinalMeta && e.collectOrdinalMeta(a.storeDimIndex, a.ordinalMeta)
            }
        }, r.prototype._shouldMakeIdFromName = function() {
            var e = this._store.getProvider();
            return this._idDimIdx == null && e.getSource().sourceFormat !== ai && !e.fillStorage
        }, r.prototype._doInit = function(e, t) {
            if (!(e >= t)) {
                var i = this._store,
                    a = i.getProvider();
                this._updateOrdinalMeta();
                var n = this._nameList,
                    o = this._idList,
                    s = a.getSource().sourceFormat,
                    l = s === Ze;
                if (l && !a.pure)
                    for (var u = [], f = e; f < t; f++) {
                        var p = a.getItem(f, u);
                        if (!this.hasItemOption && gT(p) && (this.hasItemOption = !0), p) {
                            var c = p.name;
                            n[f] == null && c != null && (n[f] = ie(c, null));
                            var h = p.id;
                            o[f] == null && h != null && (o[f] = ie(h, null))
                        }
                    }
                if (this._shouldMakeIdFromName())
                    for (var f = e; f < t; f++) G0(this, f);
                JM(this)
            }
        }, r.prototype.getApproximateExtent = function(e) {
            return this._approximateExtent[e] || this._store.getDataExtent(this._getStoreDimIndex(e))
        }, r.prototype.setApproximateExtent = function(e, t) {
            t = this.getDimension(t), this._approximateExtent[t] = e.slice()
        }, r.prototype.getCalculationInfo = function(e) {
            return this._calculationInfo[e]
        }, r.prototype.setCalculationInfo = function(e, t) {
            qf(e) ? O(this._calculationInfo, e) : this._calculationInfo[e] = t
        }, r.prototype.getName = function(e) {
            var t = this.getRawIndex(e),
                i = this._nameList[t];
            return i == null && this._nameDimIdx != null && (i = Kf(this, this._nameDimIdx, t)), i == null && (i = ""), i
        }, r.prototype._getCategory = function(e, t) {
            var i = this._store.get(e, t),
                a = this._store.getOrdinalMeta(e);
            return a ? a.categories[i] : i
        }, r.prototype.getId = function(e) {
            return hv(this, this.getRawIndex(e))
        }, r.prototype.count = function() {
            return this._store.count()
        }, r.prototype.get = function(e, t) {
            var i = this._store,
                a = this._dimInfos[e];
            if (a) return i.get(a.storeDimIndex, t)
        }, r.prototype.getByRawIndex = function(e, t) {
            var i = this._store,
                a = this._dimInfos[e];
            if (a) return i.getByRawIndex(a.storeDimIndex, t)
        }, r.prototype.getIndices = function() {
            return this._store.getIndices()
        }, r.prototype.getDataExtent = function(e) {
            return this._store.getDataExtent(this._getStoreDimIndex(e))
        }, r.prototype.getSum = function(e) {
            return this._store.getSum(this._getStoreDimIndex(e))
        }, r.prototype.getMedian = function(e) {
            return this._store.getMedian(this._getStoreDimIndex(e))
        }, r.prototype.getValues = function(e, t) {
            var i = this,
                a = this._store;
            return z(e) ? a.getValues(Hn(e, function(n) {
                return i._getStoreDimIndex(n)
            }), t) : a.getValues(e)
        }, r.prototype.hasValue = function(e) {
            for (var t = this._dimSummary.dataDimIndicesOnCoord, i = 0, a = t.length; i < a; i++)
                if (isNaN(this._store.get(t[i], e))) return !1;
            return !0
        }, r.prototype.indexOfName = function(e) {
            for (var t = 0, i = this._store.count(); t < i; t++)
                if (this.getName(t) === e) return t;
            return -1
        }, r.prototype.getRawIndex = function(e) {
            return this._store.getRawIndex(e)
        }, r.prototype.indexOfRawIndex = function(e) {
            return this._store.indexOfRawIndex(e)
        }, r.prototype.rawIndexOf = function(e, t) {
            var i = e && this._invertedIndicesMap[e],
                a = i && i[t];
            return a == null || isNaN(a) ? jM : a
        }, r.prototype.indicesOfNearest = function(e, t, i) {
            return this._store.indicesOfNearest(this._getStoreDimIndex(e), t, i)
        }, r.prototype.each = function(e, t, i) {
            "use strict";
            X(e) && (i = t, t = e, e = []);
            var a = i || this,
                n = Hn(jf(e), this._getStoreDimIndex, this);
            this._store.each(n, a ? H(t, a) : t)
        }, r.prototype.filterSelf = function(e, t, i) {
            "use strict";
            X(e) && (i = t, t = e, e = []);
            var a = i || this,
                n = Hn(jf(e), this._getStoreDimIndex, this);
            return this._store = this._store.filter(n, a ? H(t, a) : t), this
        }, r.prototype.selectRange = function(e) {
            "use strict";
            var t = this,
                i = {},
                a = ft(e),
                n = [];
            return w(a, function(o) {
                var s = t._getStoreDimIndex(o);
                i[s] = e[o], n.push(s)
            }), this._store = this._store.selectRange(i), this
        }, r.prototype.mapArray = function(e, t, i) {
            "use strict";
            X(e) && (i = t, t = e, e = []), i = i || this;
            var a = [];
            return this.each(e, function() {
                a.push(t && t.apply(this, arguments))
            }, i), a
        }, r.prototype.map = function(e, t, i, a) {
            "use strict";
            var n = i || a || this,
                o = Hn(jf(e), this._getStoreDimIndex, this),
                s = Jf(this);
            return s._store = this._store.map(o, n ? H(t, n) : t), s
        }, r.prototype.modify = function(e, t, i, a) {
            var n = this,
                o = i || a || this,
                s = Hn(jf(e), this._getStoreDimIndex, this);
            this._store.modify(s, o ? H(t, o) : t)
        }, r.prototype.downSample = function(e, t, i, a) {
            var n = Jf(this);
            return n._store = this._store.downSample(this._getStoreDimIndex(e), t, i, a), n
        }, r.prototype.minmaxDownSample = function(e, t) {
            var i = Jf(this);
            return i._store = this._store.minmaxDownSample(this._getStoreDimIndex(e), t), i
        }, r.prototype.lttbDownSample = function(e, t) {
            var i = Jf(this);
            return i._store = this._store.lttbDownSample(this._getStoreDimIndex(e), t), i
        }, r.prototype.getRawDataItem = function(e) {
            return this._store.getRawDataItem(e)
        }, r.prototype.getItemModel = function(e) {
            var t = this.hostModel,
                i = this.getRawDataItem(e);
            return new Dt(i, t, t && t.ecModel)
        }, r.prototype.diff = function(e) {
            var t = this;
            return new tr(e ? e.getStore().getIndices() : [], this.getStore().getIndices(), function(i) {
                return hv(e, i)
            }, function(i) {
                return hv(t, i)
            })
        }, r.prototype.getVisual = function(e) {
            var t = this._visual;
            return t && t[e]
        }, r.prototype.setVisual = function(e, t) {
            this._visual = this._visual || {}, qf(e) ? O(this._visual, e) : this._visual[e] = t
        }, r.prototype.getItemVisual = function(e, t) {
            var i = this._itemVisuals[e],
                a = i && i[t];
            return a ? ? this.getVisual(t)
        }, r.prototype.hasItemVisual = function() {
            return this._itemVisuals.length > 0
        }, r.prototype.ensureUniqueItemVisual = function(e, t) {
            var i = this._itemVisuals,
                a = i[e];
            a || (a = i[e] = {});
            var n = a[t];
            return n == null && (n = this.getVisual(t), z(n) ? n = n.slice() : qf(n) && (n = O({}, n)), a[t] = n), n
        }, r.prototype.setItemVisual = function(e, t, i) {
            var a = this._itemVisuals[e] || {};
            this._itemVisuals[e] = a, qf(t) ? O(a, t) : a[t] = i
        }, r.prototype.clearAllVisual = function() {
            this._visual = {}, this._itemVisuals = []
        }, r.prototype.setLayout = function(e, t) {
            qf(e) ? O(this._layout, e) : this._layout[e] = t
        }, r.prototype.getLayout = function(e) {
            return this._layout[e]
        }, r.prototype.getItemLayout = function(e) {
            return this._itemLayouts[e]
        }, r.prototype.setItemLayout = function(e, t, i) {
            this._itemLayouts[e] = i ? O(this._itemLayouts[e] || {}, t) : t
        }, r.prototype.clearItemLayouts = function() {
            this._itemLayouts.length = 0
        }, r.prototype.setItemGraphicEl = function(e, t) {
            var i = this.hostModel && this.hostModel.seriesIndex;
            sf(i, this.dataType, e, t), this._graphicEls[e] = t
        }, r.prototype.getItemGraphicEl = function(e) {
            return this._graphicEls[e]
        }, r.prototype.eachItemGraphicEl = function(e, t) {
            w(this._graphicEls, function(i, a) {
                i && e && e.call(t, i, a)
            })
        }, r.prototype.cloneShallow = function(e) {
            return e || (e = new r(this._schema ? this._schema : Hn(this.dimensions, this._getDimInfo, this), this.hostModel)), F0(e, this), e._store = this._store, e
        }, r.prototype.wrapMethod = function(e, t) {
            var i = this[e];
            X(i) && (this.__wrappedMethods = this.__wrappedMethods || [], this.__wrappedMethods.push(e), this[e] = function() {
                var a = i.apply(this, arguments);
                return t.apply(this, [a].concat(Mu(arguments)))
            })
        }, r.internalField = function() {
            JM = function(e) {
                var t = e._invertedIndicesMap;
                w(t, function(i, a) {
                    var n = e._dimInfos[a],
                        o = n.ordinalMeta,
                        s = e._store;
                    if (o) {
                        i = t[a] = new hH(o.categories.length);
                        for (var l = 0; l < i.length; l++) i[l] = jM;
                        for (var l = 0; l < s.count(); l++) i[s.get(n.storeDimIndex, l)] = l
                    }
                })
            }, Kf = function(e, t, i) {
                return ie(e._getCategory(t, i), null)
            }, hv = function(e, t) {
                var i = e._idList[t];
                return i == null && e._idDimIdx != null && (i = Kf(e, e._idDimIdx, t)), i == null && (i = vH + t), i
            }, jf = function(e) {
                return z(e) || (e = e != null ? [e] : []), e
            }, Jf = function(e) {
                var t = new r(e._schema ? e._schema : Hn(e.dimensions, e._getDimInfo, e), e.hostModel);
                return F0(t, e), t
            }, F0 = function(e, t) {
                w(dH.concat(t.__wrappedMethods || []), function(i) {
                    t.hasOwnProperty(i) && (e[i] = t[i])
                }), e.__wrappedMethods = t.__wrappedMethods, w(mH, function(i) {
                    e[i] = Q(t[i])
                }), e._calculationInfo = O({}, t._calculationInfo)
            }, G0 = function(e, t) {
                var i = e._nameList,
                    a = e._idList,
                    n = e._nameDimIdx,
                    o = e._idDimIdx,
                    s = i[t],
                    l = a[t];
                if (s == null && n != null && (i[t] = s = Kf(e, n, t)), l == null && o != null && (a[t] = l = Kf(e, o, t)), l == null && s != null) {
                    var u = e._nameRepeatCount,
                        f = u[s] = (u[s] || 0) + 1;
                    l = s, f > 1 && (l += "__ec__" + f), a[t] = l
                }
            }
        }(), r
    }(),
    se = gH;
var xL = {};
ui(xL, {
    createDimensions: () => QM,
    createList: () => QH,
    createScale: () => t3,
    createSymbol: () => Vt,
    createTextStyle: () => r3,
    dataStack: () => $H,
    enableHoverEmphasis: () => gi,
    getECData: () => et,
    getLayoutRect: () => Ut,
    mixinAxisModelCommonMethods: () => e3
});

function QM(r, e) {
    return Mi(r, e).dimensions
}

function Mi(r, e) {
    Ml(r) || (r = Ll(r)), e = e || {};
    var t = e.coordDimensions || [],
        i = e.dimensionsDefine || r.dimensionsDefine || [],
        a = Y(),
        n = [],
        o = xH(r, t, i, e.dimensionsCount),
        s = e.canOmitUnusedDimensions && B0(o),
        l = i === r.dimensionsDefine,
        u = l ? V0(r) : U0(i),
        f = e.encodeDefine;
    !f && e.encodeDefaulter && (f = e.encodeDefaulter(r, o));
    for (var p = Y(f), c = new a0(o), h = 0; h < c.length; h++) c[h] = -1;

    function v(A) {
        var D = c[A];
        if (D < 0) {
            var M = i[A],
                I = j(M) ? M : {
                    name: M
                },
                E = new Ol,
                P = I.name;
            P != null && u.get(P) != null && (E.name = E.displayName = P), I.type != null && (E.type = I.type), I.displayName != null && (E.displayName = I.displayName);
            var R = n.length;
            return c[A] = R, E.storeDimIndex = A, n.push(E), E
        }
        return n[D]
    }
    if (!s)
        for (var h = 0; h < o; h++) v(h);
    p.each(function(A, D) {
        var M = Pt(A).slice();
        if (M.length === 1 && !F(M[0]) && M[0] < 0) {
            p.set(D, !1);
            return
        }
        var I = p.set(D, []);
        w(M, function(E, P) {
            var R = F(E) ? u.get(E) : E;
            R != null && R < o && (I[P] = R, m(v(R), D, P))
        })
    });
    var d = 0;
    w(t, function(A) {
        var D, M, I, E;
        if (F(A)) D = A, E = {};
        else {
            E = A, D = E.name;
            var P = E.ordinalMeta;
            E.ordinalMeta = null, E = O({}, E), E.ordinalMeta = P, M = E.dimsDef, I = E.otherDims, E.name = E.coordDim = E.coordDimIndex = E.dimsDef = E.otherDims = null
        }
        var R = p.get(D);
        if (R !== !1) {
            if (R = Pt(R), !R.length)
                for (var N = 0; N < (M && M.length || 1); N++) {
                    for (; d < o && v(d).coordDim != null;) d++;
                    d < o && R.push(d++)
                }
            w(R, function(V, U) {
                var B = v(V);
                if (l && E.type != null && (B.type = E.type), m(q(B, E), D, U), B.name == null && M) {
                    var Z = M[U];
                    !j(Z) && (Z = {
                        name: Z
                    }), B.name = B.displayName = Z.name, B.defaultTooltip = Z.defaultTooltip
                }
                I && q(B.otherDims, I)
            })
        }
    });

    function m(A, D, M) {
        Ch.get(D) != null ? A.otherDims[D] = M : (A.coordDim = D, A.coordDimIndex = M, a.set(D, !0))
    }
    var g = e.generateCoord,
        y = e.generateCoordCount,
        x = y != null;
    y = g ? y || 1 : 0;
    var _ = g || "value";

    function S(A) {
        A.name == null && (A.name = A.coordDim)
    }
    if (s) w(n, function(A) {
        S(A)
    }), n.sort(function(A, D) {
        return A.storeDimIndex - D.storeDimIndex
    });
    else
        for (var b = 0; b < o; b++) {
            var T = v(b),
                C = T.coordDim;
            C == null && (T.coordDim = _H(_, a, x), T.coordDimIndex = 0, (!g || y <= 0) && (T.isExtraCoord = !0), y--), S(T), T.type == null && (Mh(r, b) === Be.Must || T.isExtraCoord && (T.otherDims.itemName != null || T.otherDims.seriesName != null)) && (T.type = "ordinal")
        }
    return yH(n), new k0({
        source: r,
        dimensions: n,
        fullDimensionCount: o,
        dimensionOmitted: s
    })
}

function yH(r) {
    for (var e = Y(), t = 0; t < r.length; t++) {
        var i = r[t],
            a = i.name,
            n = e.get(a) || 0;
        n > 0 && (i.name = a + (n - 1)), n++, e.set(a, n)
    }
}

function xH(r, e, t, i) {
    var a = Math.max(r.dimensionsDetectedCount || 1, e.length, t.length, i || 0);
    return w(e, function(n) {
        var o;
        j(n) && (o = n.dimsDef) && (a = Math.max(a, o.length))
    }), a
}

function _H(r, e, t) {
    if (t || e.hasKey(r)) {
        for (var i = 0; e.hasKey(r + i);) i++;
        r += i
    }
    return e.set(r, !0), r
}
var SH = function() {
    function r(e) {
        this.coordSysDims = [], this.axisMap = Y(), this.categoryAxisMap = Y(), this.coordSysName = e
    }
    return r
}();

function $M(r) {
    var e = r.get("coordinateSystem"),
        t = new SH(e),
        i = bH[e];
    if (i) return i(r, t, t.axisMap, t.categoryAxisMap), t
}
var bH = {
    cartesian2d: function(r, e, t, i) {
        var a = r.getReferringComponents("xAxis", Ht).models[0],
            n = r.getReferringComponents("yAxis", Ht).models[0];
        e.coordSysDims = ["x", "y"], t.set("x", a), t.set("y", n), zl(a) && (i.set("x", a), e.firstCategoryDimIndex = 0), zl(n) && (i.set("y", n), e.firstCategoryDimIndex == null && (e.firstCategoryDimIndex = 1))
    },
    singleAxis: function(r, e, t, i) {
        var a = r.getReferringComponents("singleAxis", Ht).models[0];
        e.coordSysDims = ["single"], t.set("single", a), zl(a) && (i.set("single", a), e.firstCategoryDimIndex = 0)
    },
    polar: function(r, e, t, i) {
        var a = r.getReferringComponents("polar", Ht).models[0],
            n = a.findAxisModel("radiusAxis"),
            o = a.findAxisModel("angleAxis");
        e.coordSysDims = ["radius", "angle"], t.set("radius", n), t.set("angle", o), zl(n) && (i.set("radius", n), e.firstCategoryDimIndex = 0), zl(o) && (i.set("angle", o), e.firstCategoryDimIndex == null && (e.firstCategoryDimIndex = 1))
    },
    geo: function(r, e, t, i) {
        e.coordSysDims = ["lng", "lat"]
    },
    parallel: function(r, e, t, i) {
        var a = r.ecModel,
            n = a.getComponent("parallel", r.get("parallelIndex")),
            o = e.coordSysDims = n.dimensions.slice();
        w(n.parallelAxisIndex, function(s, l) {
            var u = a.getComponent("parallelAxis", s),
                f = o[l];
            t.set(f, u), zl(u) && (i.set(f, u), e.firstCategoryDimIndex == null && (e.firstCategoryDimIndex = l))
        })
    }
};

function zl(r) {
    return r.get("type") === "category"
}

function vv(r, e, t) {
    t = t || {};
    var i = t.byIndex,
        a = t.stackedCoordDimension,
        n, o, s;
    wH(e) ? n = e : (o = e.schema, n = o.dimensions, s = e.store);
    var l = !!(r && r.get("stack")),
        u, f, p, c;
    if (w(n, function(y, x) {
            F(y) && (n[x] = y = {
                name: y
            }), l && !y.isExtraCoord && (!i && !u && y.ordinalMeta && (u = y), !f && y.type !== "ordinal" && y.type !== "time" && (!a || a === y.coordDim) && (f = y))
        }), f && !i && !u && (i = !0), f) {
        p = "__\0ecstackresult_" + r.id, c = "__\0ecstackedover_" + r.id, u && (u.createInvertedIndices = !0);
        var h = f.coordDim,
            v = f.type,
            d = 0;
        w(n, function(y) {
            y.coordDim === h && d++
        });
        var m = {
                name: p,
                coordDim: h,
                coordDimIndex: d,
                type: v,
                isExtraCoord: !0,
                isCalculationCoord: !0,
                storeDimIndex: n.length
            },
            g = {
                name: c,
                coordDim: c,
                coordDimIndex: d + 1,
                type: v,
                isExtraCoord: !0,
                isCalculationCoord: !0,
                storeDimIndex: n.length + 1
            };
        o ? (s && (m.storeDimIndex = s.ensureCalculationDimension(c, v), g.storeDimIndex = s.ensureCalculationDimension(p, v)), o.appendCalculationDimension(m), o.appendCalculationDimension(g)) : (n.push(m), n.push(g))
    }
    return {
        stackedDimension: f && f.name,
        stackedByDimension: u && u.name,
        isStackedByIndex: i,
        stackedOverDimension: c,
        stackResultDimension: p
    }
}

function wH(r) {
    return !cv(r.schema)
}

function gr(r, e) {
    return !!e && e === r.getCalculationInfo("stackedDimension")
}

function kl(r, e) {
    return gr(r, e) ? r.getCalculationInfo("stackResultDimension") : e
}

function TH(r, e) {
    var t = r.get("coordinateSystem"),
        i = ga.get(t),
        a;
    return e && e.coordSysDims && (a = k(e.coordSysDims, function(n) {
        var o = {
                name: n
            },
            s = e.axisMap.get(n);
        if (s) {
            var l = s.get("type");
            o.type = vs(l)
        }
        return o
    })), a || (a = i && (i.getDimensionsInfo ? i.getDimensionsInfo() : i.dimensions.slice()) || ["x", "y"]), a
}

function CH(r, e, t) {
    var i, a;
    return t && w(r, function(n, o) {
        var s = n.coordDim,
            l = t.categoryAxisMap.get(s);
        l && (i == null && (i = o), n.ordinalMeta = l.getOrdinalMeta(), e && (n.createInvertedIndices = !0)), n.otherDims.itemName != null && (a = !0)
    }), !a && i != null && (r[i].otherDims.itemName = 0), i
}

function AH(r, e, t) {
    t = t || {};
    var i = e.getSourceManager(),
        a, n = !1;
    r ? (n = !0, a = Ll(r)) : (a = i.getSource(), n = a.sourceFormat === Ze);
    var o = $M(e),
        s = TH(e, o),
        l = t.useEncodeDefaulter,
        u = X(l) ? l : l ? rt(Ah, s, e) : null,
        f = {
            coordDimensions: s,
            generateCoord: t.generateCoord,
            encodeDefine: e.getEncode(),
            encodeDefaulter: u,
            canOmitUnusedDimensions: !n
        },
        p = Mi(a, f),
        c = CH(p.dimensions, t.createInvertedIndices, o),
        h = n ? null : i.getSharedDataStore(p),
        v = vv(e, {
            schema: p,
            store: h
        }),
        d = new se(p, e);
    d.setCalculationInfo(v);
    var m = c != null && DH(a) ? function(g, y, x, _) {
        return _ === c ? x : this.defaultDimValueGetter(g, y, x, _)
    } : null;
    return d.hasItemOption = !1, d.initData(n ? a : h, null, m), d
}

function DH(r) {
    if (r.sourceFormat === Ze) {
        var e = MH(r.data || []);
        return !z(Fi(e))
    }
}

function MH(r) {
    for (var e = 0; e < r.length && r[e] == null;) e++;
    return r[e]
}
var ze = AH;
var tL = function() {
    function r(e) {
        this._setting = e || {}, this._extent = [1 / 0, -1 / 0]
    }
    return r.prototype.getSetting = function(e) {
        return this._setting[e]
    }, r.prototype.unionExtent = function(e) {
        var t = this._extent;
        e[0] < t[0] && (t[0] = e[0]), e[1] > t[1] && (t[1] = e[1])
    }, r.prototype.unionExtentFromData = function(e, t) {
        this.unionExtent(e.getApproximateExtent(t))
    }, r.prototype.getExtent = function() {
        return this._extent.slice()
    }, r.prototype.setExtent = function(e, t) {
        var i = this._extent;
        isNaN(e) || (i[0] = e), isNaN(t) || (i[1] = t)
    }, r.prototype.isInExtentRange = function(e) {
        return this._extent[0] <= e && this._extent[1] >= e
    }, r.prototype.isBlank = function() {
        return this._isBlank
    }, r.prototype.setBlank = function(e) {
        this._isBlank = e
    }, r
}();
Cn(tL);
var Gr = tL;
var LH = 0,
    IH = function() {
        function r(e) {
            this.categories = e.categories || [], this._needCollect = e.needCollect, this._deduplication = e.deduplication, this.uid = ++LH
        }
        return r.createByAxisModel = function(e) {
            var t = e.option,
                i = t.data,
                a = i && k(i, EH);
            return new r({
                categories: a,
                needCollect: !a,
                deduplication: t.dedplication !== !1
            })
        }, r.prototype.getOrdinal = function(e) {
            return this._getOrCreateMap().get(e)
        }, r.prototype.parseAndCollect = function(e) {
            var t, i = this._needCollect;
            if (!F(e) && !i) return e;
            if (i && !this._deduplication) return t = this.categories.length, this.categories[t] = e, t;
            var a = this._getOrCreateMap();
            return t = a.get(e), t == null && (i ? (t = this.categories.length, this.categories[t] = e, a.set(e, t)) : t = NaN), t
        }, r.prototype._getOrCreateMap = function() {
            return this._map || (this._map = Y(this.categories))
        }, r
    }();

function EH(r) {
    return j(r) && r.value != null ? r.value : r + ""
}
var Qf = IH;

function $f(r) {
    return r.type === "interval" || r.type === "log"
}

function rL(r, e, t, i) {
    var a = {},
        n = r[1] - r[0],
        o = a.interval = rl(n / e, !0);
    t != null && o < t && (o = a.interval = t), i != null && o > i && (o = a.interval = i);
    var s = a.intervalPrecision = H0(o),
        l = a.niceTickExtent = [Gt(Math.ceil(r[0] / o) * o, s), Gt(Math.floor(r[1] / o) * o, s)];
    return PH(l, r), a
}

function dv(r) {
    var e = Math.pow(10, el(r)),
        t = r / e;
    return t ? t === 2 ? t = 3 : t === 3 ? t = 5 : t *= 2 : t = 1, Gt(t * e)
}

function H0(r) {
    return qe(r) + 2
}

function eL(r, e, t) {
    r[e] = Math.max(Math.min(r[e], t[1]), t[0])
}

function PH(r, e) {
    !isFinite(r[0]) && (r[0] = e[0]), !isFinite(r[1]) && (r[1] = e[1]), eL(r, 0, e), eL(r, 1, e), r[0] > r[1] && (r[0] = r[1])
}

function Wn(r, e) {
    return r >= e[0] && r <= e[1]
}

function Yn(r, e) {
    return e[1] === e[0] ? .5 : (r - e[0]) / (e[1] - e[0])
}

function Zn(r, e) {
    return r * (e[1] - e[0]) + e[0]
}
var iL = function(r) {
    L(e, r);

    function e(t) {
        var i = r.call(this, t) || this;
        i.type = "ordinal";
        var a = i.getSetting("ordinalMeta");
        return a || (a = new Qf({})), z(a) && (a = new Qf({
            categories: k(a, function(n) {
                return j(n) ? n.value : n
            })
        })), i._ordinalMeta = a, i._extent = i.getSetting("extent") || [0, a.categories.length - 1], i
    }
    return e.prototype.parse = function(t) {
        return t == null ? NaN : F(t) ? this._ordinalMeta.getOrdinal(t) : Math.round(t)
    }, e.prototype.contain = function(t) {
        return t = this.parse(t), Wn(t, this._extent) && this._ordinalMeta.categories[t] != null
    }, e.prototype.normalize = function(t) {
        return t = this._getTickNumber(this.parse(t)), Yn(t, this._extent)
    }, e.prototype.scale = function(t) {
        return t = Math.round(Zn(t, this._extent)), this.getRawOrdinalNumber(t)
    }, e.prototype.getTicks = function() {
        for (var t = [], i = this._extent, a = i[0]; a <= i[1];) t.push({
            value: a
        }), a++;
        return t
    }, e.prototype.getMinorTicks = function(t) {}, e.prototype.setSortInfo = function(t) {
        if (t == null) {
            this._ordinalNumbersByTick = this._ticksByOrdinalNumber = null;
            return
        }
        for (var i = t.ordinalNumbers, a = this._ordinalNumbersByTick = [], n = this._ticksByOrdinalNumber = [], o = 0, s = this._ordinalMeta.categories.length, l = Math.min(s, i.length); o < l; ++o) {
            var u = i[o];
            a[o] = u, n[u] = o
        }
        for (var f = 0; o < s; ++o) {
            for (; n[f] != null;) f++;
            a.push(f), n[f] = o
        }
    }, e.prototype._getTickNumber = function(t) {
        var i = this._ticksByOrdinalNumber;
        return i && t >= 0 && t < i.length ? i[t] : t
    }, e.prototype.getRawOrdinalNumber = function(t) {
        var i = this._ordinalNumbersByTick;
        return i && t >= 0 && t < i.length ? i[t] : t
    }, e.prototype.getLabel = function(t) {
        if (!this.isBlank()) {
            var i = this.getRawOrdinalNumber(t.value),
                a = this._ordinalMeta.categories[i];
            return a == null ? "" : a + ""
        }
    }, e.prototype.count = function() {
        return this._extent[1] - this._extent[0] + 1
    }, e.prototype.unionExtentFromData = function(t, i) {
        this.unionExtent(t.getApproximateExtent(i))
    }, e.prototype.isInExtentRange = function(t) {
        return t = this._getTickNumber(t), this._extent[0] <= t && this._extent[1] >= t
    }, e.prototype.getOrdinalMeta = function() {
        return this._ordinalMeta
    }, e.prototype.calcNiceTicks = function() {}, e.prototype.calcNiceExtent = function() {}, e.type = "ordinal", e
}(Gr);
Gr.registerClass(iL);
var tp = iL;
var ds = Gt,
    aL = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = "interval", t._interval = 0, t._intervalPrecision = 2, t
        }
        return e.prototype.parse = function(t) {
            return t
        }, e.prototype.contain = function(t) {
            return Wn(t, this._extent)
        }, e.prototype.normalize = function(t) {
            return Yn(t, this._extent)
        }, e.prototype.scale = function(t) {
            return Zn(t, this._extent)
        }, e.prototype.setExtent = function(t, i) {
            var a = this._extent;
            isNaN(t) || (a[0] = parseFloat(t)), isNaN(i) || (a[1] = parseFloat(i))
        }, e.prototype.unionExtent = function(t) {
            var i = this._extent;
            t[0] < i[0] && (i[0] = t[0]), t[1] > i[1] && (i[1] = t[1]), this.setExtent(i[0], i[1])
        }, e.prototype.getInterval = function() {
            return this._interval
        }, e.prototype.setInterval = function(t) {
            this._interval = t, this._niceExtent = this._extent.slice(), this._intervalPrecision = H0(t)
        }, e.prototype.getTicks = function(t) {
            var i = this._interval,
                a = this._extent,
                n = this._niceExtent,
                o = this._intervalPrecision,
                s = [];
            if (!i) return s;
            var l = 1e4;
            a[0] < n[0] && (t ? s.push({
                value: ds(n[0] - i, o)
            }) : s.push({
                value: a[0]
            }));
            for (var u = n[0]; u <= n[1] && (s.push({
                    value: u
                }), u = ds(u + i, o), u !== s[s.length - 1].value);)
                if (s.length > l) return [];
            var f = s.length ? s[s.length - 1].value : n[1];
            return a[1] > f && (t ? s.push({
                value: ds(f + i, o)
            }) : s.push({
                value: a[1]
            })), s
        }, e.prototype.getMinorTicks = function(t) {
            for (var i = this.getTicks(!0), a = [], n = this.getExtent(), o = 1; o < i.length; o++) {
                for (var s = i[o], l = i[o - 1], u = 0, f = [], p = s.value - l.value, c = p / t; u < t - 1;) {
                    var h = ds(l.value + (u + 1) * c);
                    h > n[0] && h < n[1] && f.push(h), u++
                }
                a.push(f)
            }
            return a
        }, e.prototype.getLabel = function(t, i) {
            if (t == null) return "";
            var a = i && i.precision;
            a == null ? a = qe(t.value) || 0 : a === "auto" && (a = this._intervalPrecision);
            var n = ds(t.value, a, !0);
            return Cf(n)
        }, e.prototype.calcNiceTicks = function(t, i, a) {
            t = t || 5;
            var n = this._extent,
                o = n[1] - n[0];
            if (isFinite(o)) {
                o < 0 && (o = -o, n.reverse());
                var s = rL(n, t, i, a);
                this._intervalPrecision = s.intervalPrecision, this._interval = s.interval, this._niceExtent = s.niceTickExtent
            }
        }, e.prototype.calcNiceExtent = function(t) {
            var i = this._extent;
            if (i[0] === i[1])
                if (i[0] !== 0) {
                    var a = Math.abs(i[0]);
                    t.fixMax || (i[1] += a / 2), i[0] -= a / 2
                } else i[1] = 1;
            var n = i[1] - i[0];
            isFinite(n) || (i[0] = 0, i[1] = 1), this.calcNiceTicks(t.splitNumber, t.minInterval, t.maxInterval);
            var o = this._interval;
            t.fixMin || (i[0] = ds(Math.floor(i[0] / o) * o)), t.fixMax || (i[1] = ds(Math.ceil(i[1] / o) * o))
        }, e.prototype.setNiceExtent = function(t, i) {
            this._niceExtent = [t, i]
        }, e.type = "interval", e
    }(Gr);
Gr.registerClass(aL);
var Hr = aL;
var nL = typeof Float32Array < "u",
    RH = nL ? Float32Array : Array;

function yr(r) {
    return z(r) ? nL ? new Float32Array(r) : r : new RH(r)
}
var W0 = "__ec_stack_";

function Y0(r) {
    return r.get("stack") || W0 + r.seriesIndex
}

function Z0(r) {
    return r.dim + r.index
}

function oL(r) {
    var e = [],
        t = r.axis,
        i = "axis0";
    if (t.type === "category") {
        for (var a = t.getBandWidth(), n = 0; n < r.count; n++) e.push(q({
            bandWidth: a,
            axisKey: i,
            stackId: W0 + n
        }, r));
        for (var o = sL(e), s = [], n = 0; n < r.count; n++) {
            var l = o[i][W0 + n];
            l.offsetCenter = l.offset + l.width / 2, s.push(l)
        }
        return s
    }
}

function X0(r, e) {
    var t = [];
    return e.eachSeriesByType(r, function(i) {
        uL(i) && t.push(i)
    }), t
}

function NH(r) {
    var e = {};
    w(r, function(l) {
        var u = l.coordinateSystem,
            f = u.getBaseAxis();
        if (!(f.type !== "time" && f.type !== "value"))
            for (var p = l.getData(), c = f.dim + "_" + f.index, h = p.getDimensionIndex(p.mapDimension(f.dim)), v = p.getStore(), d = 0, m = v.count(); d < m; ++d) {
                var g = v.get(h, d);
                e[c] ? e[c].push(g) : e[c] = [g]
            }
    });
    var t = {};
    for (var i in e)
        if (e.hasOwnProperty(i)) {
            var a = e[i];
            if (a) {
                a.sort(function(l, u) {
                    return l - u
                });
                for (var n = null, o = 1; o < a.length; ++o) {
                    var s = a[o] - a[o - 1];
                    s > 0 && (n = n === null ? s : Math.min(n, s))
                }
                t[i] = n
            }
        }
    return t
}

function q0(r) {
    var e = NH(r),
        t = [];
    return w(r, function(i) {
        var a = i.coordinateSystem,
            n = a.getBaseAxis(),
            o = n.getExtent(),
            s;
        if (n.type === "category") s = n.getBandWidth();
        else if (n.type === "value" || n.type === "time") {
            var l = n.dim + "_" + n.index,
                u = e[l],
                f = Math.abs(o[1] - o[0]),
                p = n.scale.getExtent(),
                c = Math.abs(p[1] - p[0]);
            s = u ? f / c * u : f
        } else {
            var h = i.getData();
            s = Math.abs(o[1] - o[0]) / h.count()
        }
        var v = W(i.get("barWidth"), s),
            d = W(i.get("barMaxWidth"), s),
            m = W(i.get("barMinWidth") || (fL(i) ? .5 : 1), s),
            g = i.get("barGap"),
            y = i.get("barCategoryGap");
        t.push({
            bandWidth: s,
            barWidth: v,
            barMaxWidth: d,
            barMinWidth: m,
            barGap: g,
            barCategoryGap: y,
            axisKey: Z0(n),
            stackId: Y0(i)
        })
    }), sL(t)
}

function sL(r) {
    var e = {};
    w(r, function(i, a) {
        var n = i.axisKey,
            o = i.bandWidth,
            s = e[n] || {
                bandWidth: o,
                remainedWidth: o,
                autoWidthCount: 0,
                categoryGap: null,
                gap: "20%",
                stacks: {}
            },
            l = s.stacks;
        e[n] = s;
        var u = i.stackId;
        l[u] || s.autoWidthCount++, l[u] = l[u] || {
            width: 0,
            maxWidth: 0
        };
        var f = i.barWidth;
        f && !l[u].width && (l[u].width = f, f = Math.min(s.remainedWidth, f), s.remainedWidth -= f);
        var p = i.barMaxWidth;
        p && (l[u].maxWidth = p);
        var c = i.barMinWidth;
        c && (l[u].minWidth = c);
        var h = i.barGap;
        h != null && (s.gap = h);
        var v = i.barCategoryGap;
        v != null && (s.categoryGap = v)
    });
    var t = {};
    return w(e, function(i, a) {
        t[a] = {};
        var n = i.stacks,
            o = i.bandWidth,
            s = i.categoryGap;
        if (s == null) {
            var l = ft(n).length;
            s = Math.max(35 - l * 4, 15) + "%"
        }
        var u = W(s, o),
            f = W(i.gap, 1),
            p = i.remainedWidth,
            c = i.autoWidthCount,
            h = (p - u) / (c + (c - 1) * f);
        h = Math.max(h, 0), w(n, function(g) {
            var y = g.maxWidth,
                x = g.minWidth;
            if (g.width) {
                var _ = g.width;
                y && (_ = Math.min(_, y)), x && (_ = Math.max(_, x)), g.width = _, p -= _ + f * _, c--
            } else {
                var _ = h;
                y && y < _ && (_ = Math.min(y, p)), x && x > _ && (_ = x), _ !== h && (g.width = _, p -= _ + f * _, c--)
            }
        }), h = (p - u) / (c + (c - 1) * f), h = Math.max(h, 0);
        var v = 0,
            d;
        w(n, function(g, y) {
            g.width || (g.width = h), d = g, v += g.width * (1 + f)
        }), d && (v -= d.width * f);
        var m = -v / 2;
        w(n, function(g, y) {
            t[a][y] = t[a][y] || {
                bandWidth: o,
                offset: m,
                width: g.width
            }, m += g.width * (1 + f)
        })
    }), t
}

function lL(r, e, t) {
    if (r && e) {
        var i = r[Z0(e)];
        return i != null && t != null ? i[Y0(t)] : i
    }
}

function gv(r, e) {
    var t = X0(r, e),
        i = q0(t);
    w(t, function(a) {
        var n = a.getData(),
            o = a.coordinateSystem,
            s = o.getBaseAxis(),
            l = Y0(a),
            u = i[Z0(s)][l],
            f = u.offset,
            p = u.width;
        n.setLayout({
            bandWidth: u.bandWidth,
            offset: f,
            size: p
        })
    })
}

function yv(r) {
    return {
        seriesType: r,
        plan: ni(),
        reset: function(e) {
            if (uL(e)) {
                var t = e.getData(),
                    i = e.coordinateSystem,
                    a = i.getBaseAxis(),
                    n = i.getOtherAxis(a),
                    o = t.getDimensionIndex(t.mapDimension(n.dim)),
                    s = t.getDimensionIndex(t.mapDimension(a.dim)),
                    l = e.get("showBackground", !0),
                    u = t.mapDimension(n.dim),
                    f = t.getCalculationInfo("stackResultDimension"),
                    p = gr(t, u) && !!t.getCalculationInfo("stackedOnSeries"),
                    c = n.isHorizontal(),
                    h = OH(a, n),
                    v = fL(e),
                    d = e.get("barMinHeight") || 0,
                    m = f && t.getDimensionIndex(f),
                    g = t.getLayout("size"),
                    y = t.getLayout("offset");
                return {
                    progress: function(x, _) {
                        for (var S = x.count, b = v && yr(S * 3), T = v && l && yr(S * 3), C = v && yr(S), A = i.master.getRect(), D = c ? A.width : A.height, M, I = _.getStore(), E = 0;
                            (M = x.next()) != null;) {
                            var P = I.get(p ? m : o, M),
                                R = I.get(s, M),
                                N = h,
                                V = void 0;
                            p && (V = +P - I.get(o, M));
                            var U = void 0,
                                B = void 0,
                                Z = void 0,
                                K = void 0;
                            if (c) {
                                var tt = i.dataToPoint([P, R]);
                                if (p) {
                                    var pt = i.dataToPoint([V, R]);
                                    N = pt[0]
                                }
                                U = N, B = tt[1] + y, Z = tt[0] - N, K = g, Math.abs(Z) < d && (Z = (Z < 0 ? -1 : 1) * d)
                            } else {
                                var tt = i.dataToPoint([R, P]);
                                if (p) {
                                    var pt = i.dataToPoint([R, V]);
                                    N = pt[1]
                                }
                                U = tt[0] + y, B = N, Z = g, K = tt[1] - N, Math.abs(K) < d && (K = (K <= 0 ? -1 : 1) * d)
                            }
                            v ? (b[E] = U, b[E + 1] = B, b[E + 2] = c ? Z : K, T && (T[E] = c ? A.x : U, T[E + 1] = c ? B : A.y, T[E + 2] = D), C[M] = M) : _.setItemLayout(M, {
                                x: U,
                                y: B,
                                width: Z,
                                height: K
                            }), E += 3
                        }
                        v && _.setLayout({
                            largePoints: b,
                            largeDataIndices: C,
                            largeBackgroundPoints: T,
                            valueAxisHorizontal: c
                        })
                    }
                }
            }
        }
    }
}

function uL(r) {
    return r.coordinateSystem && r.coordinateSystem.type === "cartesian2d"
}

function fL(r) {
    return r.pipelineContext && r.pipelineContext.large
}

function OH(r, e) {
    var t = e.model.get("startValue");
    return t || (t = 0), e.toGlobalCoord(e.dataToCoord(e.type === "log" ? t > 0 ? t : 1 : t))
}
var zH = function(r, e, t, i) {
        for (; t < i;) {
            var a = t + i >>> 1;
            r[a][1] < e ? t = a + 1 : i = a
        }
        return t
    },
    cL = function(r) {
        L(e, r);

        function e(t) {
            var i = r.call(this, t) || this;
            return i.type = "time", i
        }
        return e.prototype.getLabel = function(t) {
            var i = this.getSetting("useUTC");
            return Qa(t.value, My[wA(ns(this._minLevelUnit))] || My.second, i, this.getSetting("locale"))
        }, e.prototype.getFormattedLabel = function(t, i, a) {
            var n = this.getSetting("useUTC"),
                o = this.getSetting("locale");
            return TA(t, i, a, o, n)
        }, e.prototype.getTicks = function() {
            var t = this._interval,
                i = this._extent,
                a = [];
            if (!t) return a;
            a.push({
                value: i[0],
                level: 0
            });
            var n = this.getSetting("useUTC"),
                o = HH(this._minLevelUnit, this._approxInterval, n, i);
            return a = a.concat(o), a.push({
                value: i[1],
                level: 0
            }), a
        }, e.prototype.calcNiceExtent = function(t) {
            var i = this._extent;
            if (i[0] === i[1] && (i[0] -= ei, i[1] += ei), i[1] === -1 / 0 && i[0] === 1 / 0) {
                var a = new Date;
                i[1] = +new Date(a.getFullYear(), a.getMonth(), a.getDate()), i[0] = i[1] - ei
            }
            this.calcNiceTicks(t.splitNumber, t.minInterval, t.maxInterval)
        }, e.prototype.calcNiceTicks = function(t, i, a) {
            t = t || 10;
            var n = this._extent,
                o = n[1] - n[0];
            this._approxInterval = o / t, i != null && this._approxInterval < i && (this._approxInterval = i), a != null && this._approxInterval > a && (this._approxInterval = a);
            var s = xv.length,
                l = Math.min(zH(xv, this._approxInterval, 0, s), s - 1);
            this._interval = xv[l][1], this._minLevelUnit = xv[Math.max(l - 1, 0)][0]
        }, e.prototype.parse = function(t) {
            return vt(t) ? t : +Ne(t)
        }, e.prototype.contain = function(t) {
            return Wn(this.parse(t), this._extent)
        }, e.prototype.normalize = function(t) {
            return Yn(this.parse(t), this._extent)
        }, e.prototype.scale = function(t) {
            return Zn(t, this._extent)
        }, e.type = "time", e
    }(Hr),
    xv = [
        ["second", xh],
        ["minute", _h],
        ["hour", bl],
        ["quarter-day", bl * 6],
        ["half-day", bl * 12],
        ["day", ei * 1.2],
        ["half-week", ei * 3.5],
        ["week", ei * 7],
        ["month", ei * 31],
        ["quarter", ei * 95],
        ["half-year", Dy / 2],
        ["year", Dy]
    ];

function kH(r, e, t, i) {
    var a = Ne(e),
        n = Ne(t),
        o = function(v) {
            return Iy(a, v, i) === Iy(n, v, i)
        },
        s = function() {
            return o("year")
        },
        l = function() {
            return s() && o("month")
        },
        u = function() {
            return l() && o("day")
        },
        f = function() {
            return u() && o("hour")
        },
        p = function() {
            return f() && o("minute")
        },
        c = function() {
            return p() && o("second")
        },
        h = function() {
            return c() && o("millisecond")
        };
    switch (r) {
        case "year":
            return s();
        case "month":
            return l();
        case "day":
            return u();
        case "hour":
            return f();
        case "minute":
            return p();
        case "second":
            return c();
        case "millisecond":
            return h()
    }
}

function UH(r, e) {
    return r /= ei, r > 16 ? 16 : r > 7.5 ? 7 : r > 3.5 ? 4 : r > 1.5 ? 2 : 1
}

function VH(r) {
    var e = 30 * ei;
    return r /= e, r > 6 ? 6 : r > 3 ? 3 : r > 2 ? 2 : 1
}

function BH(r) {
    return r /= bl, r > 12 ? 12 : r > 6 ? 6 : r > 3.5 ? 4 : r > 2 ? 2 : 1
}

function pL(r, e) {
    return r /= e ? _h : xh, r > 30 ? 30 : r > 20 ? 20 : r > 15 ? 15 : r > 10 ? 10 : r > 5 ? 5 : r > 2 ? 2 : 1
}

function FH(r) {
    return rl(r, !0)
}

function GH(r, e, t) {
    var i = new Date(r);
    switch (ns(e)) {
        case "year":
        case "month":
            i[Ey(t)](0);
        case "day":
            i[Py(t)](1);
        case "hour":
            i[Ry(t)](0);
        case "minute":
            i[Ny(t)](0);
        case "second":
            i[Oy(t)](0), i[zy(t)](0)
    }
    return i.getTime()
}

function HH(r, e, t, i) {
    var a = 1e4,
        n = Ly,
        o = 0;

    function s(D, M, I, E, P, R, N) {
        for (var V = new Date(M), U = M, B = V[E](); U < I && U <= i[1];) N.push({
            value: U
        }), B += D, V[P](B), U = V.getTime();
        N.push({
            value: U,
            notAdd: !0
        })
    }

    function l(D, M, I) {
        var E = [],
            P = !M.length;
        if (!kH(ns(D), i[0], i[1], t)) {
            P && (M = [{
                value: GH(new Date(i[0]), D, t)
            }, {
                value: i[1]
            }]);
            for (var R = 0; R < M.length - 1; R++) {
                var N = M[R].value,
                    V = M[R + 1].value;
                if (N !== V) {
                    var U = void 0,
                        B = void 0,
                        Z = void 0,
                        K = !1;
                    switch (D) {
                        case "year":
                            U = Math.max(1, Math.round(e / ei / 365)), B = Sh(t), Z = AA(t);
                            break;
                        case "half-year":
                        case "quarter":
                        case "month":
                            U = VH(e), B = as(t), Z = Ey(t);
                            break;
                        case "week":
                        case "half-week":
                        case "day":
                            U = UH(e, 31), B = Sf(t), Z = Py(t), K = !0;
                            break;
                        case "half-day":
                        case "quarter-day":
                        case "hour":
                            U = BH(e), B = Sl(t), Z = Ry(t);
                            break;
                        case "minute":
                            U = pL(e, !0), B = bf(t), Z = Ny(t);
                            break;
                        case "second":
                            U = pL(e, !1), B = wf(t), Z = Oy(t);
                            break;
                        case "millisecond":
                            U = FH(e), B = Tf(t), Z = zy(t);
                            break
                    }
                    s(U, N, V, B, Z, K, E), D === "year" && I.length > 1 && R === 0 && I.unshift({
                        value: I[0].value - U
                    })
                }
            }
            for (var R = 0; R < E.length; R++) I.push(E[R]);
            return E
        }
    }
    for (var u = [], f = [], p = 0, c = 0, h = 0; h < n.length && o++ < a; ++h) {
        var v = ns(n[h]);
        if (bA(n[h])) {
            l(n[h], u[u.length - 1] || [], f);
            var d = n[h + 1] ? ns(n[h + 1]) : null;
            if (v !== d) {
                if (f.length) {
                    c = p, f.sort(function(D, M) {
                        return D.value - M.value
                    });
                    for (var m = [], g = 0; g < f.length; ++g) {
                        var y = f[g].value;
                        (g === 0 || f[g - 1].value !== y) && (m.push(f[g]), y >= i[0] && y <= i[1] && p++)
                    }
                    var x = (i[1] - i[0]) / e;
                    if (p > x * 1.5 && c > x / 1.5 || (u.push(m), p > x || r === n[h])) break
                }
                f = []
            }
        }
    }
    for (var _ = wt(k(u, function(D) {
            return wt(D, function(M) {
                return M.value >= i[0] && M.value <= i[1] && !M.notAdd
            })
        }), function(D) {
            return D.length > 0
        }), S = [], b = _.length - 1, h = 0; h < _.length; ++h)
        for (var T = _[h], C = 0; C < T.length; ++C) S.push({
            value: T[C].value,
            level: b - h
        });
    S.sort(function(D, M) {
        return D.value - M.value
    });
    for (var A = [], h = 0; h < S.length; ++h)(h === 0 || S[h].value !== S[h - 1].value) && A.push(S[h]);
    return A
}
Gr.registerClass(cL);
var _v = cL;
var hL = Gr.prototype,
    ep = Hr.prototype,
    WH = Gt,
    YH = Math.floor,
    ZH = Math.ceil,
    Sv = Math.pow,
    Ji = Math.log,
    K0 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = "log", t.base = 10, t._originalScale = new Hr, t._interval = 0, t
        }
        return e.prototype.getTicks = function(t) {
            var i = this._originalScale,
                a = this._extent,
                n = i.getExtent(),
                o = ep.getTicks.call(this, t);
            return k(o, function(s) {
                var l = s.value,
                    u = Gt(Sv(this.base, l));
                return u = l === a[0] && this._fixMin ? bv(u, n[0]) : u, u = l === a[1] && this._fixMax ? bv(u, n[1]) : u, {
                    value: u
                }
            }, this)
        }, e.prototype.setExtent = function(t, i) {
            var a = Ji(this.base);
            t = Ji(Math.max(0, t)) / a, i = Ji(Math.max(0, i)) / a, ep.setExtent.call(this, t, i)
        }, e.prototype.getExtent = function() {
            var t = this.base,
                i = hL.getExtent.call(this);
            i[0] = Sv(t, i[0]), i[1] = Sv(t, i[1]);
            var a = this._originalScale,
                n = a.getExtent();
            return this._fixMin && (i[0] = bv(i[0], n[0])), this._fixMax && (i[1] = bv(i[1], n[1])), i
        }, e.prototype.unionExtent = function(t) {
            this._originalScale.unionExtent(t);
            var i = this.base;
            t[0] = Ji(t[0]) / Ji(i), t[1] = Ji(t[1]) / Ji(i), hL.unionExtent.call(this, t)
        }, e.prototype.unionExtentFromData = function(t, i) {
            this.unionExtent(t.getApproximateExtent(i))
        }, e.prototype.calcNiceTicks = function(t) {
            t = t || 10;
            var i = this._extent,
                a = i[1] - i[0];
            if (!(a === 1 / 0 || a <= 0)) {
                var n = zc(a),
                    o = t / a * n;
                for (o <= .5 && (n *= 10); !isNaN(n) && Math.abs(n) < 1 && Math.abs(n) > 0;) n *= 10;
                var s = [Gt(ZH(i[0] / n) * n), Gt(YH(i[1] / n) * n)];
                this._interval = n, this._niceExtent = s
            }
        }, e.prototype.calcNiceExtent = function(t) {
            ep.calcNiceExtent.call(this, t), this._fixMin = t.fixMin, this._fixMax = t.fixMax
        }, e.prototype.parse = function(t) {
            return t
        }, e.prototype.contain = function(t) {
            return t = Ji(t) / Ji(this.base), Wn(t, this._extent)
        }, e.prototype.normalize = function(t) {
            return t = Ji(t) / Ji(this.base), Yn(t, this._extent)
        }, e.prototype.scale = function(t) {
            return t = Zn(t, this._extent), Sv(this.base, t)
        }, e.type = "log", e
    }(Gr),
    vL = K0.prototype;
vL.getMinorTicks = ep.getMinorTicks;
vL.getLabel = ep.getLabel;

function bv(r, e) {
    return WH(r, qe(e))
}
Gr.registerClass(K0);
var dL = K0;
var XH = function() {
    function r(e, t, i) {
        this._prepareParams(e, t, i)
    }
    return r.prototype._prepareParams = function(e, t, i) {
        i[1] < i[0] && (i = [NaN, NaN]), this._dataMin = i[0], this._dataMax = i[1];
        var a = this._isOrdinal = e.type === "ordinal";
        this._needCrossZero = e.type === "interval" && t.getNeedCrossZero && t.getNeedCrossZero();
        var n = t.get("min", !0);
        n == null && (n = t.get("startValue", !0));
        var o = this._modelMinRaw = n;
        X(o) ? this._modelMinNum = wv(e, o({
            min: i[0],
            max: i[1]
        })) : o !== "dataMin" && (this._modelMinNum = wv(e, o));
        var s = this._modelMaxRaw = t.get("max", !0);
        if (X(s) ? this._modelMaxNum = wv(e, s({
                min: i[0],
                max: i[1]
            })) : s !== "dataMax" && (this._modelMaxNum = wv(e, s)), a) this._axisDataLen = t.getCategories().length;
        else {
            var l = t.get("boundaryGap"),
                u = z(l) ? l : [l || 0, l || 0];
            typeof u[0] == "boolean" || typeof u[1] == "boolean" ? this._boundaryGapInner = [0, 0] : this._boundaryGapInner = [Xe(u[0], 1), Xe(u[1], 1)]
        }
    }, r.prototype.calculate = function() {
        var e = this._isOrdinal,
            t = this._dataMin,
            i = this._dataMax,
            a = this._axisDataLen,
            n = this._boundaryGapInner,
            o = e ? null : i - t || Math.abs(t),
            s = this._modelMinRaw === "dataMin" ? t : this._modelMinNum,
            l = this._modelMaxRaw === "dataMax" ? i : this._modelMaxNum,
            u = s != null,
            f = l != null;
        s == null && (s = e ? a ? 0 : NaN : t - n[0] * o), l == null && (l = e ? a ? a - 1 : NaN : i + n[1] * o), (s == null || !isFinite(s)) && (s = NaN), (l == null || !isFinite(l)) && (l = NaN);
        var p = Na(s) || Na(l) || e && !a;
        this._needCrossZero && (s > 0 && l > 0 && !u && (s = 0), s < 0 && l < 0 && !f && (l = 0));
        var c = this._determinedMin,
            h = this._determinedMax;
        return c != null && (s = c, u = !0), h != null && (l = h, f = !0), {
            min: s,
            max: l,
            minFixed: u,
            maxFixed: f,
            isBlank: p
        }
    }, r.prototype.modifyDataMinMax = function(e, t) {
        this[KH[e]] = t
    }, r.prototype.setDeterminedMinMax = function(e, t) {
        var i = qH[e];
        this[i] = t
    }, r.prototype.freeze = function() {
        this.frozen = !0
    }, r
}();
var qH = {
        min: "_determinedMin",
        max: "_determinedMax"
    },
    KH = {
        min: "_dataMin",
        max: "_dataMax"
    };

function Tv(r, e, t) {
    var i = r.rawExtentInfo;
    return i || (i = new XH(r, e, t), r.rawExtentInfo = i, i)
}

function wv(r, e) {
    return e == null ? null : Na(e) ? NaN : r.parse(e)
}

function j0(r, e) {
    var t = r.type,
        i = Tv(r, e, r.getExtent()).calculate();
    r.setBlank(i.isBlank);
    var a = i.min,
        n = i.max,
        o = e.ecModel;
    if (o && t === "time") {
        var s = X0("bar", o),
            l = !1;
        if (w(s, function(p) {
                l = l || p.getBaseAxis() === e.axis
            }), l) {
            var u = q0(s),
                f = jH(a, n, e, u);
            a = f.min, n = f.max
        }
    }
    return {
        extent: [a, n],
        fixMin: i.minFixed,
        fixMax: i.maxFixed
    }
}

function jH(r, e, t, i) {
    var a = t.axis.getExtent(),
        n = Math.abs(a[1] - a[0]),
        o = lL(i, t.axis);
    if (o === void 0) return {
        min: r,
        max: e
    };
    var s = 1 / 0;
    w(o, function(h) {
        s = Math.min(h.offset, s)
    });
    var l = -1 / 0;
    w(o, function(h) {
        l = Math.max(h.offset + h.width, l)
    }), s = Math.abs(s), l = Math.abs(l);
    var u = s + l,
        f = e - r,
        p = 1 - (s + l) / n,
        c = f / p - f;
    return e += c * (l / u), r -= c * (s / u), {
        min: r,
        max: e
    }
}

function Li(r, e) {
    var t = e,
        i = j0(r, t),
        a = i.extent,
        n = t.get("splitNumber");
    r instanceof dL && (r.base = t.get("logBase"));
    var o = r.type,
        s = t.get("interval"),
        l = o === "interval" || o === "time";
    r.setExtent(a[0], a[1]), r.calcNiceExtent({
        splitNumber: n,
        fixMin: i.fixMin,
        fixMax: i.fixMax,
        minInterval: l ? t.get("minInterval") : null,
        maxInterval: l ? t.get("maxInterval") : null
    }), s != null && r.setInterval && r.setInterval(s)
}

function xa(r, e) {
    if (e = e || r.get("type"), e) switch (e) {
        case "category":
            return new tp({
                ordinalMeta: r.getOrdinalMeta ? r.getOrdinalMeta() : r.getCategories(),
                extent: [1 / 0, -1 / 0]
            });
        case "time":
            return new _v({
                locale: r.ecModel.getLocaleModel(),
                useUTC: r.ecModel.get("useUTC")
            });
        default:
            return new(Gr.getClass(e) || Hr)
    }
}

function mL(r) {
    var e = r.scale.getExtent(),
        t = e[0],
        i = e[1];
    return !(t > 0 && i > 0 || t < 0 && i < 0)
}

function ms(r) {
    var e = r.getLabelModel().get("formatter"),
        t = r.type === "category" ? r.scale.getExtent()[0] : null;
    return r.scale.type === "time" ? function(i) {
        return function(a, n) {
            return r.scale.getFormattedLabel(a, n, i)
        }
    }(e) : F(e) ? function(i) {
        return function(a) {
            var n = r.scale.getLabel(a),
                o = i.replace("{value}", n ? ? "");
            return o
        }
    }(e) : X(e) ? function(i) {
        return function(a, n) {
            return t != null && (n = a.value - t), i(rp(r, a), n, a.level != null ? {
                level: a.level
            } : null)
        }
    }(e) : function(i) {
        return r.scale.getLabel(i)
    }
}

function rp(r, e) {
    return r.type === "category" ? r.scale.getLabel(e) : e.value
}

function gL(r) {
    var e = r.model,
        t = r.scale;
    if (!(!e.get(["axisLabel", "show"]) || t.isBlank())) {
        var i, a, n = t.getExtent();
        t instanceof tp ? a = t.count() : (i = t.getTicks(), a = i.length);
        var o = r.getLabelModel(),
            s = ms(r),
            l, u = 1;
        a > 40 && (u = Math.ceil(a / 40));
        for (var f = 0; f < a; f += u) {
            var p = i ? i[f] : {
                    value: n[0] + f
                },
                c = s(p, f),
                h = o.getTextRect(c),
                v = JH(h, o.get("rotate") || 0);
            l ? l.union(v) : l = v
        }
        return l
    }
}

function JH(r, e) {
    var t = e * Math.PI / 180,
        i = r.width,
        a = r.height,
        n = i * Math.abs(Math.cos(t)) + Math.abs(a * Math.sin(t)),
        o = i * Math.abs(Math.sin(t)) + Math.abs(a * Math.cos(t)),
        s = new it(r.x, r.y, n, o);
    return s
}

function Cv(r) {
    var e = r.get("interval");
    return e ? ? "auto"
}

function Av(r) {
    return r.type === "category" && Cv(r.getLabelModel()) === 0
}

function Ul(r, e) {
    var t = {};
    return w(r.mapDimensionsAll(e), function(i) {
        t[kl(r, i)] = !0
    }), ft(t)
}

function yL(r, e, t) {
    e && w(Ul(e, t), function(i) {
        var a = e.getApproximateExtent(i);
        a[0] < r[0] && (r[0] = a[0]), a[1] > r[1] && (r[1] = a[1])
    })
}
var Ii = function() {
    function r() {}
    return r.prototype.getNeedCrossZero = function() {
        var e = this.option;
        return !e.scale
    }, r.prototype.getCoordSysModel = function() {}, r
}();

function QH(r) {
    return ze(null, r)
}
var $H = {
    isDimensionStacked: gr,
    enableDataStack: vv,
    getStackedDimension: kl
};

function t3(r, e) {
    var t = e;
    e instanceof Dt || (t = new Dt(e));
    var i = xa(t);
    return i.setExtent(r[0], r[1]), Li(i, t), i
}

function e3(r) {
    Bt(r, Ii)
}

function r3(r, e) {
    return e = e || {}, zt(r, null, null, e.state !== "normal")
}
var i3 = 1e-8;

function _L(r, e) {
    return Math.abs(r - e) < i3
}

function an(r, e, t) {
    var i = 0,
        a = r[0];
    if (!a) return !1;
    for (var n = 1; n < r.length; n++) {
        var o = r[n];
        i += di(a[0], a[1], o[0], o[1], e, t), a = o
    }
    var s = r[0];
    return (!_L(a[0], s[0]) || !_L(a[1], s[1])) && (i += di(a[0], a[1], s[0], s[1], e, t)), i !== 0
}
var a3 = [];

function J0(r, e) {
    for (var t = 0; t < r.length; t++) fe(r[t], r[t], e)
}

function bL(r, e, t, i) {
    for (var a = 0; a < r.length; a++) {
        var n = r[a];
        i && (n = i.project(n)), n && isFinite(n[0]) && isFinite(n[1]) && (Tr(e, e, n), Cr(t, t, n))
    }
}

function n3(r) {
    for (var e = 0, t = 0, i = 0, a = r.length, n = r[a - 1][0], o = r[a - 1][1], s = 0; s < a; s++) {
        var l = r[s][0],
            u = r[s][1],
            f = n * u - l * o;
        e += f, t += (n + l) * f, i += (o + u) * f, n = l, o = u
    }
    return e ? [t / e / 3, i / e / 3, e] : [r[0][0] || 0, r[0][1] || 0]
}
var wL = function() {
    function r(e) {
        this.name = e
    }
    return r.prototype.setCenter = function(e) {
        this._center = e
    }, r.prototype.getCenter = function() {
        var e = this._center;
        return e || (e = this._center = this.calcCenter()), e
    }, r
}();
var Q0 = function() {
    function r(e, t) {
        this.type = "polygon", this.exterior = e, this.interiors = t
    }
    return r
}();
var $0 = function() {
    function r(e) {
        this.type = "linestring", this.points = e
    }
    return r
}();
var Dv = function(r) {
    L(e, r);

    function e(t, i, a) {
        var n = r.call(this, t) || this;
        return n.type = "geoJSON", n.geometries = i, n._center = a && [a[0], a[1]], n
    }
    return e.prototype.calcCenter = function() {
        for (var t = this.geometries, i, a = 0, n = 0; n < t.length; n++) {
            var o = t[n],
                s = o.exterior,
                l = s && s.length;
            l > a && (i = o, a = l)
        }
        if (i) return n3(i.exterior);
        var u = this.getBoundingRect();
        return [u.x + u.width / 2, u.y + u.height / 2]
    }, e.prototype.getBoundingRect = function(t) {
        var i = this._rect;
        if (i && !t) return i;
        var a = [1 / 0, 1 / 0],
            n = [-1 / 0, -1 / 0],
            o = this.geometries;
        return w(o, function(s) {
            s.type === "polygon" ? bL(s.exterior, a, n, t) : w(s.points, function(l) {
                bL(l, a, n, t)
            })
        }), isFinite(a[0]) && isFinite(a[1]) && isFinite(n[0]) && isFinite(n[1]) || (a[0] = a[1] = n[0] = n[1] = 0), i = new it(a[0], a[1], n[0] - a[0], n[1] - a[1]), t || (this._rect = i), i
    }, e.prototype.contain = function(t) {
        var i = this.getBoundingRect(),
            a = this.geometries;
        if (!i.contain(t[0], t[1])) return !1;
        t: for (var n = 0, o = a.length; n < o; n++) {
            var s = a[n];
            if (s.type === "polygon") {
                var l = s.exterior,
                    u = s.interiors;
                if (an(l, t[0], t[1])) {
                    for (var f = 0; f < (u ? u.length : 0); f++)
                        if (an(u[f], t[0], t[1])) continue t;
                    return !0
                }
            }
        }
        return !1
    }, e.prototype.transformTo = function(t, i, a, n) {
        var o = this.getBoundingRect(),
            s = o.width / o.height;
        a ? n || (n = a / s) : a = s * n;
        for (var l = new it(t, i, a, n), u = o.calculateTransform(l), f = this.geometries, p = 0; p < f.length; p++) {
            var c = f[p];
            c.type === "polygon" ? (J0(c.exterior, u), w(c.interiors, function(h) {
                J0(h, u)
            })) : w(c.points, function(h) {
                J0(h, u)
            })
        }
        o = this._rect, o.copy(l), this._center = [o.x + o.width / 2, o.y + o.height / 2]
    }, e.prototype.cloneShallow = function(t) {
        t == null && (t = this.name);
        var i = new e(t, this.geometries, this._center);
        return i._rect = this._rect, i.transformTo = null, i
    }, e
}(wL);
var TL = function(r) {
    L(e, r);

    function e(t, i) {
        var a = r.call(this, t) || this;
        return a.type = "geoSVG", a._elOnlyForCalculate = i, a
    }
    return e.prototype.calcCenter = function() {
        for (var t = this._elOnlyForCalculate, i = t.getBoundingRect(), a = [i.x + i.width / 2, i.y + i.height / 2], n = za(a3), o = t; o && !o.isGeoSVGGraphicRoot;) pr(n, o.getLocalTransform(), n), o = o.parent;
        return jr(n, n), fe(a, a, n), a
    }, e
}(wL);

function o3(r) {
    if (!r.UTF8Encoding) return r;
    var e = r,
        t = e.UTF8Scale;
    t == null && (t = 1024);
    var i = e.features;
    return w(i, function(a) {
        var n = a.geometry,
            o = n.encodeOffsets,
            s = n.coordinates;
        if (o) switch (n.type) {
            case "LineString":
                n.coordinates = CL(s, o, t);
                break;
            case "Polygon":
                tx(s, o, t);
                break;
            case "MultiLineString":
                tx(s, o, t);
                break;
            case "MultiPolygon":
                w(s, function(l, u) {
                    return tx(l, o[u], t)
                })
        }
    }), e.UTF8Encoding = !1, e
}

function tx(r, e, t) {
    for (var i = 0; i < r.length; i++) r[i] = CL(r[i], e[i], t)
}

function CL(r, e, t) {
    for (var i = [], a = e[0], n = e[1], o = 0; o < r.length; o += 2) {
        var s = r.charCodeAt(o) - 64,
            l = r.charCodeAt(o + 1) - 64;
        s = s >> 1 ^ -(s & 1), l = l >> 1 ^ -(l & 1), s += a, l += n, a = s, n = l, i.push([s / t, l / t])
    }
    return i
}

function ap(r, e) {
    return r = o3(r), k(wt(r.features, function(t) {
        return t.geometry && t.properties && t.geometry.coordinates.length > 0
    }), function(t) {
        var i = t.properties,
            a = t.geometry,
            n = [];
        switch (a.type) {
            case "Polygon":
                var o = a.coordinates;
                n.push(new Q0(o[0], o.slice(1)));
                break;
            case "MultiPolygon":
                w(a.coordinates, function(l) {
                    l[0] && n.push(new Q0(l[0], l.slice(1)))
                });
                break;
            case "LineString":
                n.push(new $0([a.coordinates]));
                break;
            case "MultiLineString":
                n.push(new $0(a.coordinates))
        }
        var s = new Dv(i[e || "name"], n, i.cp);
        return s.properties = i, s
    })
}
var AL = {};
ui(AL, {
    MAX_SAFE_INTEGER: () => ju,
    asc: () => _e,
    getPercentWithPrecision: () => uT,
    getPixelPrecision: () => tl,
    getPrecision: () => qe,
    getPrecisionSafe: () => Ag,
    isNumeric: () => Uo,
    isRadianAroundZero: () => Va,
    linearMap: () => Rt,
    nice: () => rl,
    numericToNumber: () => Er,
    parseDate: () => Ne,
    quantile: () => il,
    quantity: () => zc,
    quantityExponent: () => el,
    reformIntervals: () => Qu,
    remRadian: () => Ju,
    round: () => Gt
});
var DL = {};
ui(DL, {
    format: () => Qa,
    parse: () => Ne
});
var ML = {};
ui(ML, {
    Arc: () => Qo,
    BezierCurve: () => Za,
    BoundingRect: () => it,
    Circle: () => je,
    CompoundPath: () => Rn,
    Ellipse: () => jo,
    Group: () => J,
    Image: () => Zt,
    IncrementalDisplayable: () => lh,
    Line: () => ee,
    LinearGradient: () => yi,
    Polygon: () => oe,
    Polyline: () => ae,
    RadialGradient: () => ml,
    Rect: () => ht,
    Ring: () => Ya,
    Sector: () => pe,
    Text: () => dt,
    clipPointsByRect: () => gf,
    clipRectByRect: () => my,
    createIcon: () => Wi,
    extendPath: () => dy,
    extendShape: () => vy,
    getShapeClass: () => es,
    getTransform: () => ti,
    initProps: () => Ot,
    makeImage: () => df,
    makePath: () => Nn,
    mergePath: () => Ye,
    registerShape: () => $r,
    resizePath: () => ph,
    updateProps: () => xt
});
var LL = {};
ui(LL, {
    addCommas: () => Cf,
    capitalFirst: () => IA,
    encodeHTML: () => xe,
    formatTime: () => LA,
    formatTpl: () => Tl,
    getTextRect: () => ky,
    getTooltipMarker: () => wh,
    normalizeCssArray: () => ri,
    toCamelCase: () => wl,
    truncateText: () => Og
});
var IL = {};
ui(IL, {
    bind: () => H,
    clone: () => Q,
    curry: () => rt,
    defaults: () => q,
    each: () => w,
    extend: () => O,
    filter: () => wt,
    indexOf: () => at,
    inherits: () => Du,
    isArray: () => z,
    isFunction: () => X,
    isObject: () => j,
    isString: () => F,
    map: () => k,
    merge: () => nt,
    reduce: () => Me
});
var np = lt();

function EL(r, e) {
    var t = k(e, function(i) {
        return r.scale.parse(i)
    });
    return r.type === "time" && t.length > 0 && (t.sort(), t.unshift(t[0]), t.push(t[t.length - 1])), t
}

function PL(r) {
    var e = r.getLabelModel().get("customValues");
    if (e) {
        var t = ms(r),
            i = r.scale.getExtent(),
            a = EL(r, e),
            n = wt(a, function(o) {
                return o >= i[0] && o <= i[1]
            });
        return {
            labels: k(n, function(o) {
                var s = {
                    value: o
                };
                return {
                    formattedLabel: t(s),
                    rawLabel: r.scale.getLabel(s),
                    tickValue: o
                }
            })
        }
    }
    return r.type === "category" ? s3(r) : u3(r)
}

function RL(r, e) {
    var t = r.getTickModel().get("customValues");
    if (t) {
        var i = r.scale.getExtent(),
            a = EL(r, t);
        return {
            ticks: wt(a, function(n) {
                return n >= i[0] && n <= i[1]
            })
        }
    }
    return r.type === "category" ? l3(r, e) : {
        ticks: k(r.scale.getTicks(), function(n) {
            return n.value
        })
    }
}

function s3(r) {
    var e = r.getLabelModel(),
        t = NL(r, e);
    return !e.get("show") || r.scale.isBlank() ? {
        labels: [],
        labelCategoryInterval: t.labelCategoryInterval
    } : t
}

function NL(r, e) {
    var t = OL(r, "labels"),
        i = Cv(e),
        a = zL(t, i);
    if (a) return a;
    var n, o;
    return X(i) ? n = BL(r, i) : (o = i === "auto" ? f3(r) : i, n = VL(r, o)), kL(t, i, {
        labels: n,
        labelCategoryInterval: o
    })
}

function l3(r, e) {
    var t = OL(r, "ticks"),
        i = Cv(e),
        a = zL(t, i);
    if (a) return a;
    var n, o;
    if ((!e.get("show") || r.scale.isBlank()) && (n = []), X(i)) n = BL(r, i, !0);
    else if (i === "auto") {
        var s = NL(r, r.getLabelModel());
        o = s.labelCategoryInterval, n = k(s.labels, function(l) {
            return l.tickValue
        })
    } else o = i, n = VL(r, o, !0);
    return kL(t, i, {
        ticks: n,
        tickCategoryInterval: o
    })
}

function u3(r) {
    var e = r.scale.getTicks(),
        t = ms(r);
    return {
        labels: k(e, function(i, a) {
            return {
                level: i.level,
                formattedLabel: t(i, a),
                rawLabel: r.scale.getLabel(i),
                tickValue: i.value
            }
        })
    }
}

function OL(r, e) {
    return np(r)[e] || (np(r)[e] = [])
}

function zL(r, e) {
    for (var t = 0; t < r.length; t++)
        if (r[t].key === e) return r[t].value
}

function kL(r, e, t) {
    return r.push({
        key: e,
        value: t
    }), t
}

function f3(r) {
    var e = np(r).autoInterval;
    return e ? ? (np(r).autoInterval = r.calculateCategoryInterval())
}

function UL(r) {
    var e = p3(r),
        t = ms(r),
        i = (e.axisRotate - e.labelRotate) / 180 * Math.PI,
        a = r.scale,
        n = a.getExtent(),
        o = a.count();
    if (n[1] - n[0] < 1) return 0;
    var s = 1;
    o > 40 && (s = Math.max(1, Math.floor(o / 40)));
    for (var l = n[0], u = r.dataToCoord(l + 1) - r.dataToCoord(l), f = Math.abs(u * Math.cos(i)), p = Math.abs(u * Math.sin(i)), c = 0, h = 0; l <= n[1]; l += s) {
        var v = 0,
            d = 0,
            m = ua(t({
                value: l
            }), e.font, "center", "top");
        v = m.width * 1.3, d = m.height * 1.3, c = Math.max(c, v, 7), h = Math.max(h, d, 7)
    }
    var g = c / f,
        y = h / p;
    isNaN(g) && (g = 1 / 0), isNaN(y) && (y = 1 / 0);
    var x = Math.max(0, Math.floor(Math.min(g, y))),
        _ = np(r.model),
        S = r.getExtent(),
        b = _.lastAutoInterval,
        T = _.lastTickCount;
    return b != null && T != null && Math.abs(b - x) <= 1 && Math.abs(T - o) <= 1 && b > x && _.axisExtent0 === S[0] && _.axisExtent1 === S[1] ? x = b : (_.lastTickCount = o, _.lastAutoInterval = x, _.axisExtent0 = S[0], _.axisExtent1 = S[1]), x
}

function p3(r) {
    var e = r.getLabelModel();
    return {
        axisRotate: r.getRotate ? r.getRotate() : r.isHorizontal && !r.isHorizontal() ? 90 : 0,
        labelRotate: e.get("rotate") || 0,
        font: e.getFont()
    }
}

function VL(r, e, t) {
    var i = ms(r),
        a = r.scale,
        n = a.getExtent(),
        o = r.getLabelModel(),
        s = [],
        l = Math.max((e || 0) + 1, 1),
        u = n[0],
        f = a.count();
    u !== 0 && l > 1 && f / l > 2 && (u = Math.round(Math.ceil(u / l) * l));
    var p = Av(r),
        c = o.get("showMinLabel") || p,
        h = o.get("showMaxLabel") || p;
    c && u !== n[0] && d(n[0]);
    for (var v = u; v <= n[1]; v += l) d(v);
    h && v - l !== n[1] && d(n[1]);

    function d(m) {
        var g = {
            value: m
        };
        s.push(t ? m : {
            formattedLabel: i(g),
            rawLabel: a.getLabel(g),
            tickValue: m
        })
    }
    return s
}

function BL(r, e, t) {
    var i = r.scale,
        a = ms(r),
        n = [];
    return w(i.getTicks(), function(o) {
        var s = i.getLabel(o),
            l = o.value;
        e(o.value, s) && n.push(t ? l : {
            formattedLabel: a(o),
            rawLabel: s,
            tickValue: l
        })
    }), n
}
var FL = [0, 1],
    c3 = function() {
        function r(e, t, i) {
            this.onBand = !1, this.inverse = !1, this.dim = e, this.scale = t, this._extent = i || [0, 0]
        }
        return r.prototype.contain = function(e) {
            var t = this._extent,
                i = Math.min(t[0], t[1]),
                a = Math.max(t[0], t[1]);
            return e >= i && e <= a
        }, r.prototype.containData = function(e) {
            return this.scale.contain(e)
        }, r.prototype.getExtent = function() {
            return this._extent.slice()
        }, r.prototype.getPixelPrecision = function(e) {
            return tl(e || this.scale.getExtent(), this._extent)
        }, r.prototype.setExtent = function(e, t) {
            var i = this._extent;
            i[0] = e, i[1] = t
        }, r.prototype.dataToCoord = function(e, t) {
            var i = this._extent,
                a = this.scale;
            return e = a.normalize(e), this.onBand && a.type === "ordinal" && (i = i.slice(), GL(i, a.count())), Rt(e, FL, i, t)
        }, r.prototype.coordToData = function(e, t) {
            var i = this._extent,
                a = this.scale;
            this.onBand && a.type === "ordinal" && (i = i.slice(), GL(i, a.count()));
            var n = Rt(e, i, FL, t);
            return this.scale.scale(n)
        }, r.prototype.pointToData = function(e, t) {}, r.prototype.getTicksCoords = function(e) {
            e = e || {};
            var t = e.tickModel || this.getTickModel(),
                i = RL(this, t),
                a = i.ticks,
                n = k(a, function(s) {
                    return {
                        coord: this.dataToCoord(this.scale.type === "ordinal" ? this.scale.getRawOrdinalNumber(s) : s),
                        tickValue: s
                    }
                }, this),
                o = t.get("alignWithLabel");
            return h3(this, n, o, e.clamp), n
        }, r.prototype.getMinorTicksCoords = function() {
            if (this.scale.type === "ordinal") return [];
            var e = this.model.getModel("minorTick"),
                t = e.get("splitNumber");
            t > 0 && t < 100 || (t = 5);
            var i = this.scale.getMinorTicks(t),
                a = k(i, function(n) {
                    return k(n, function(o) {
                        return {
                            coord: this.dataToCoord(o),
                            tickValue: o
                        }
                    }, this)
                }, this);
            return a
        }, r.prototype.getViewLabels = function() {
            return PL(this).labels
        }, r.prototype.getLabelModel = function() {
            return this.model.getModel("axisLabel")
        }, r.prototype.getTickModel = function() {
            return this.model.getModel("axisTick")
        }, r.prototype.getBandWidth = function() {
            var e = this._extent,
                t = this.scale.getExtent(),
                i = t[1] - t[0] + (this.onBand ? 1 : 0);
            i === 0 && (i = 1);
            var a = Math.abs(e[1] - e[0]);
            return Math.abs(a) / i
        }, r.prototype.calculateCategoryInterval = function() {
            return UL(this)
        }, r
    }();

function GL(r, e) {
    var t = r[1] - r[0],
        i = e,
        a = t / i / 2;
    r[0] += a, r[1] -= a
}

function h3(r, e, t, i) {
    var a = e.length;
    if (!r.onBand || t || !a) return;
    var n = r.getExtent(),
        o, s;
    if (a === 1) e[0].coord = n[0], o = e[1] = {
        coord: n[1],
        tickValue: e[0].tickValue
    };
    else {
        var l = e[a - 1].tickValue - e[0].tickValue,
            u = (e[a - 1].coord - e[0].coord) / l;
        w(e, function(h) {
            h.coord -= u / 2
        });
        var f = r.scale.getExtent();
        s = 1 + f[1] - e[a - 1].tickValue, o = {
            coord: e[a - 1].coord + u * s,
            tickValue: f[1] + 1
        }, e.push(o)
    }
    var p = n[0] > n[1];
    c(e[0].coord, n[0]) && (i ? e[0].coord = n[0] : e.shift()), i && c(n[0], e[0].coord) && e.unshift({
        coord: n[0]
    }), c(n[1], o.coord) && (i ? o.coord = n[1] : e.pop()), i && c(o.coord, n[1]) && e.push({
        coord: n[1]
    });

    function c(h, v) {
        return h = Gt(h), v = Gt(v), p ? h > v : h < v
    }
}
var Fe = c3;

function Hst(r) {
    var e = yt.extend(r);
    return yt.registerClass(e), e
}

function Wst(r) {
    var e = It.extend(r);
    return It.registerClass(e), e
}

function Yst(r) {
    var e = Lt.extend(r);
    return Lt.registerClass(e), e
}

function Zst(r) {
    var e = At.extend(r);
    return At.registerClass(e), e
}
var op = Math.PI * 2,
    gs = Ve.CMD,
    v3 = ["top", "right", "bottom", "left"];

function d3(r, e, t, i, a) {
    var n = t.width,
        o = t.height;
    switch (r) {
        case "top":
            i.set(t.x + n / 2, t.y - e), a.set(0, -1);
            break;
        case "bottom":
            i.set(t.x + n / 2, t.y + o + e), a.set(0, 1);
            break;
        case "left":
            i.set(t.x - e, t.y + o / 2), a.set(-1, 0);
            break;
        case "right":
            i.set(t.x + n + e, t.y + o / 2), a.set(1, 0);
            break
    }
}

function m3(r, e, t, i, a, n, o, s, l) {
    o -= r, s -= e;
    var u = Math.sqrt(o * o + s * s);
    o /= u, s /= u;
    var f = o * t + r,
        p = s * t + e;
    if (Math.abs(i - a) % op < 1e-4) return l[0] = f, l[1] = p, u - t;
    if (n) {
        var c = i;
        i = Ke(a), a = Ke(c)
    } else i = Ke(i), a = Ke(a);
    i > a && (a += op);
    var h = Math.atan2(s, o);
    if (h < 0 && (h += op), h >= i && h <= a || h + op >= i && h + op <= a) return l[0] = f, l[1] = p, u - t;
    var v = t * Math.cos(i) + r,
        d = t * Math.sin(i) + e,
        m = t * Math.cos(a) + r,
        g = t * Math.sin(a) + e,
        y = (v - o) * (v - o) + (d - s) * (d - s),
        x = (m - o) * (m - o) + (g - s) * (g - s);
    return y < x ? (l[0] = v, l[1] = d, Math.sqrt(y)) : (l[0] = m, l[1] = g, Math.sqrt(x))
}

function Mv(r, e, t, i, a, n, o, s) {
    var l = a - r,
        u = n - e,
        f = t - r,
        p = i - e,
        c = Math.sqrt(f * f + p * p);
    f /= c, p /= c;
    var h = l * f + u * p,
        v = h / c;
    s && (v = Math.min(Math.max(v, 0), 1)), v *= c;
    var d = o[0] = r + v * f,
        m = o[1] = e + v * p;
    return Math.sqrt((d - a) * (d - a) + (m - n) * (m - n))
}

function HL(r, e, t, i, a, n, o) {
    t < 0 && (r = r + t, t = -t), i < 0 && (e = e + i, i = -i);
    var s = r + t,
        l = e + i,
        u = o[0] = Math.min(Math.max(a, r), s),
        f = o[1] = Math.min(Math.max(n, e), l);
    return Math.sqrt((u - a) * (u - a) + (f - n) * (f - n))
}
var Qi = [];

function g3(r, e, t) {
    var i = HL(e.x, e.y, e.width, e.height, r.x, r.y, Qi);
    return t.set(Qi[0], Qi[1]), i
}

function y3(r, e, t) {
    for (var i = 0, a = 0, n = 0, o = 0, s, l, u = 1 / 0, f = e.data, p = r.x, c = r.y, h = 0; h < f.length;) {
        var v = f[h++];
        h === 1 && (i = f[h], a = f[h + 1], n = i, o = a);
        var d = u;
        switch (v) {
            case gs.M:
                n = f[h++], o = f[h++], i = n, a = o;
                break;
            case gs.L:
                d = Mv(i, a, f[h], f[h + 1], p, c, Qi, !0), i = f[h++], a = f[h++];
                break;
            case gs.C:
                d = hc(i, a, f[h++], f[h++], f[h++], f[h++], f[h], f[h + 1], p, c, Qi), i = f[h++], a = f[h++];
                break;
            case gs.Q:
                d = dc(i, a, f[h++], f[h++], f[h], f[h + 1], p, c, Qi), i = f[h++], a = f[h++];
                break;
            case gs.A:
                var m = f[h++],
                    g = f[h++],
                    y = f[h++],
                    x = f[h++],
                    _ = f[h++],
                    S = f[h++];
                h += 1;
                var b = !!(1 - f[h++]);
                s = Math.cos(_) * y + m, l = Math.sin(_) * x + g, h <= 1 && (n = s, o = l);
                var T = (p - m) * x / y + m;
                d = m3(m, g, x, _, _ + S, b, T, c, Qi), i = Math.cos(_ + S) * y + m, a = Math.sin(_ + S) * x + g;
                break;
            case gs.R:
                n = i = f[h++], o = a = f[h++];
                var C = f[h++],
                    A = f[h++];
                d = HL(n, o, C, A, p, c, Qi);
                break;
            case gs.Z:
                d = Mv(i, a, n, o, p, c, Qi, !0), i = n, a = o;
                break
        }
        d < u && (u = d, t.set(Qi[0], Qi[1]))
    }
    return u
}
var $i = new St,
    ne = new St,
    be = new St,
    Sa = new St,
    _a = new St;

function rx(r, e) {
    if (r) {
        var t = r.getTextGuideLine(),
            i = r.getTextContent();
        if (i && t) {
            var a = r.textGuideLineConfig || {},
                n = [
                    [0, 0],
                    [0, 0],
                    [0, 0]
                ],
                o = a.candidates || v3,
                s = i.getBoundingRect().clone();
            s.applyTransform(i.getComputedTransform());
            var l = 1 / 0,
                u = a.anchor,
                f = r.getComputedTransform(),
                p = f && jr([], f),
                c = e.get("length2") || 0;
            u && be.copy(u);
            for (var h = 0; h < o.length; h++) {
                var v = o[h];
                d3(v, 0, s, $i, Sa), St.scaleAndAdd(ne, $i, Sa, c), ne.transform(p);
                var d = r.getBoundingRect(),
                    m = u ? u.distance(ne) : r instanceof st ? y3(ne, r.path, be) : g3(ne, d, be);
                m < l && (l = m, ne.transform(f), be.transform(f), be.toArray(n[0]), ne.toArray(n[1]), $i.toArray(n[2]))
            }
            ix(n, e.get("minTurnAngle")), t.setShape({
                points: n
            })
        }
    }
}
var Lv = [],
    xr = new St;

function ix(r, e) {
    if (e <= 180 && e > 0) {
        e = e / 180 * Math.PI, $i.fromArray(r[0]), ne.fromArray(r[1]), be.fromArray(r[2]), St.sub(Sa, $i, ne), St.sub(_a, be, ne);
        var t = Sa.len(),
            i = _a.len();
        if (!(t < .001 || i < .001)) {
            Sa.scale(1 / t), _a.scale(1 / i);
            var a = Sa.dot(_a),
                n = Math.cos(e);
            if (n < a) {
                var o = Mv(ne.x, ne.y, be.x, be.y, $i.x, $i.y, Lv, !1);
                xr.fromArray(Lv), xr.scaleAndAdd(_a, o / Math.tan(Math.PI - e));
                var s = be.x !== ne.x ? (xr.x - ne.x) / (be.x - ne.x) : (xr.y - ne.y) / (be.y - ne.y);
                if (isNaN(s)) return;
                s < 0 ? St.copy(xr, ne) : s > 1 && St.copy(xr, be), xr.toArray(r[1])
            }
        }
    }
}

function WL(r, e, t) {
    if (t <= 180 && t > 0) {
        t = t / 180 * Math.PI, $i.fromArray(r[0]), ne.fromArray(r[1]), be.fromArray(r[2]), St.sub(Sa, ne, $i), St.sub(_a, be, ne);
        var i = Sa.len(),
            a = _a.len();
        if (!(i < .001 || a < .001)) {
            Sa.scale(1 / i), _a.scale(1 / a);
            var n = Sa.dot(e),
                o = Math.cos(t);
            if (n < o) {
                var s = Mv(ne.x, ne.y, be.x, be.y, $i.x, $i.y, Lv, !1);
                xr.fromArray(Lv);
                var l = Math.PI / 2,
                    u = Math.acos(_a.dot(e)),
                    f = l + u - t;
                if (f >= l) St.copy(xr, be);
                else {
                    xr.scaleAndAdd(_a, s / Math.tan(Math.PI / 2 - f));
                    var p = be.x !== ne.x ? (xr.x - ne.x) / (be.x - ne.x) : (xr.y - ne.y) / (be.y - ne.y);
                    if (isNaN(p)) return;
                    p < 0 ? St.copy(xr, ne) : p > 1 && St.copy(xr, be)
                }
                xr.toArray(r[1])
            }
        }
    }
}

function ex(r, e, t, i) {
    var a = t === "normal",
        n = a ? r : r.ensureState(t);
    n.ignore = e;
    var o = i.get("smooth");
    o && o === !0 && (o = .3), n.shape = n.shape || {}, o > 0 && (n.shape.smooth = o);
    var s = i.getModel("lineStyle").getLineStyle();
    a ? r.useStyle(s) : n.style = s
}

function x3(r, e) {
    var t = e.smooth,
        i = e.points;
    if (i)
        if (r.moveTo(i[0][0], i[0][1]), t > 0 && i.length >= 3) {
            var a = Kr(i[0], i[1]),
                n = Kr(i[1], i[2]);
            if (!a || !n) {
                r.lineTo(i[1][0], i[1][1]), r.lineTo(i[2][0], i[2][1]);
                return
            }
            var o = Math.min(a, n) * t,
                s = xo([], i[1], i[0], o / a),
                l = xo([], i[1], i[2], o / n),
                u = xo([], s, l, .5);
            r.bezierCurveTo(s[0], s[1], s[0], s[1], u[0], u[1]), r.bezierCurveTo(l[0], l[1], l[0], l[1], i[2][0], i[2][1])
        } else
            for (var f = 1; f < i.length; f++) r.lineTo(i[f][0], i[f][1])
}

function Vl(r, e, t) {
    var i = r.getTextGuideLine(),
        a = r.getTextContent();
    if (!a) {
        i && r.removeTextGuideLine();
        return
    }
    for (var n = e.normal, o = n.get("show"), s = a.ignore, l = 0; l < In.length; l++) {
        var u = In[l],
            f = e[u],
            p = u === "normal";
        if (f) {
            var c = f.get("show"),
                h = p ? s : ot(a.states[u] && a.states[u].ignore, s);
            if (h || !ot(c, o)) {
                var v = p ? i : i && i.states[u];
                v && (v.ignore = !0), i && ex(i, !0, u, f);
                continue
            }
            i || (i = new ae, r.setTextGuideLine(i), !p && (s || !o) && ex(i, !0, "normal", e.normal), r.stateProxy && (i.stateProxy = r.stateProxy)), ex(i, !1, u, f)
        }
    }
    if (i) {
        q(i.style, t), i.style.fill = null;
        var d = n.get("showAbove"),
            m = r.textGuideLineConfig = r.textGuideLineConfig || {};
        m.showAbove = d || !1, i.buildPath = x3
    }
}

function Bl(r, e) {
    e = e || "labelLine";
    for (var t = {
            normal: r.getModel(e)
        }, i = 0; i < Oe.length; i++) {
        var a = Oe[i];
        t[a] = r.getModel([a, e])
    }
    return t
}

function Iv(r) {
    for (var e = [], t = 0; t < r.length; t++) {
        var i = r[t];
        if (!i.defaultAttr.ignore) {
            var a = i.label,
                n = a.getComputedTransform(),
                o = a.getBoundingRect(),
                s = !n || n[1] < 1e-5 && n[2] < 1e-5,
                l = a.style.margin || 0,
                u = o.clone();
            u.applyTransform(n), u.x -= l / 2, u.y -= l / 2, u.width += l, u.height += l;
            var f = s ? new gl(o, n) : null;
            e.push({
                label: a,
                labelLine: i.labelLine,
                rect: u,
                localRect: o,
                obb: f,
                priority: i.priority,
                defaultAttr: i.defaultAttr,
                layoutOption: i.computedLayoutOption,
                axisAligned: s,
                transform: n
            })
        }
    }
    return e
}

function YL(r, e, t, i, a, n) {
    var o = r.length;
    if (o < 2) return;
    r.sort(function(A, D) {
        return A.rect[e] - D.rect[e]
    });
    for (var s = 0, l, u = !1, f = [], p = 0, c = 0; c < o; c++) {
        var h = r[c],
            v = h.rect;
        l = v[e] - s, l < 0 && (v[e] -= l, h.label[e] -= l, u = !0);
        var d = Math.max(-l, 0);
        f.push(d), p += d, s = v[e] + v[t]
    }
    p > 0 && n && b(-p / o, 0, o);
    var m = r[0],
        g = r[o - 1],
        y, x;
    _(), y < 0 && T(-y, .8), x < 0 && T(x, .8), _(), S(y, x, 1), S(x, y, -1), _(), y < 0 && C(-y), x < 0 && C(x);

    function _() {
        y = m.rect[e] - i, x = a - g.rect[e] - g.rect[t]
    }

    function S(A, D, M) {
        if (A < 0) {
            var I = Math.min(D, -A);
            if (I > 0) {
                b(I * M, 0, o);
                var E = I + A;
                E < 0 && T(-E * M, 1)
            } else T(-A * M, 1)
        }
    }

    function b(A, D, M) {
        A !== 0 && (u = !0);
        for (var I = D; I < M; I++) {
            var E = r[I],
                P = E.rect;
            P[e] += A, E.label[e] += A
        }
    }

    function T(A, D) {
        for (var M = [], I = 0, E = 1; E < o; E++) {
            var P = r[E - 1].rect,
                R = Math.max(r[E].rect[e] - P[e] - P[t], 0);
            M.push(R), I += R
        }
        if (I) {
            var N = Math.min(Math.abs(A) / I, D);
            if (A > 0)
                for (var E = 0; E < o - 1; E++) {
                    var V = M[E] * N;
                    b(V, 0, E + 1)
                } else
                    for (var E = o - 1; E > 0; E--) {
                        var V = M[E - 1] * N;
                        b(-V, E, o)
                    }
        }
    }

    function C(A) {
        var D = A < 0 ? -1 : 1;
        A = Math.abs(A);
        for (var M = Math.ceil(A / (o - 1)), I = 0; I < o - 1; I++)
            if (D > 0 ? b(M, 0, I + 1) : b(-M, o - I - 1, o), A -= M, A <= 0) return
    }
    return u
}

function ZL(r, e, t, i) {
    return YL(r, "x", "width", e, t, i)
}

function Ev(r, e, t, i) {
    return YL(r, "y", "height", e, t, i)
}

function Pv(r) {
    var e = [];
    r.sort(function(d, m) {
        return m.priority - d.priority
    });
    var t = new it(0, 0, 0, 0);

    function i(d) {
        if (!d.ignore) {
            var m = d.ensureState("emphasis");
            m.ignore == null && (m.ignore = !1)
        }
        d.ignore = !0
    }
    for (var a = 0; a < r.length; a++) {
        var n = r[a],
            o = n.axisAligned,
            s = n.localRect,
            l = n.transform,
            u = n.label,
            f = n.labelLine;
        t.copy(n.rect), t.width -= .1, t.height -= .1, t.x += .05, t.y += .05;
        for (var p = n.obb, c = !1, h = 0; h < e.length; h++) {
            var v = e[h];
            if (t.intersect(v.rect)) {
                if (o && v.axisAligned) {
                    c = !0;
                    break
                }
                if (v.obb || (v.obb = new gl(v.localRect, v.transform)), p || (p = new gl(s, l)), p.intersect(v.obb)) {
                    c = !0;
                    break
                }
            }
        }
        c ? (i(u), f && i(f)) : (u.attr("ignore", n.defaultAttr.ignore), f && f.attr("ignore", n.defaultAttr.labelGuideIgnore), e.push(n))
    }
}

function _3(r) {
    if (r) {
        for (var e = [], t = 0; t < r.length; t++) e.push(r[t].slice());
        return e
    }
}

function S3(r, e) {
    var t = r.label,
        i = e && e.getTextGuideLine();
    return {
        dataIndex: r.dataIndex,
        dataType: r.dataType,
        seriesIndex: r.seriesModel.seriesIndex,
        text: r.label.style.text,
        rect: r.hostRect,
        labelRect: r.rect,
        align: t.style.align,
        verticalAlign: t.style.verticalAlign,
        labelLinePoints: _3(i && i.shape.points)
    }
}
var XL = ["align", "verticalAlign", "width", "height", "fontSize"],
    _r = new Lr,
    ax = lt(),
    b3 = lt();

function Rv(r, e, t) {
    for (var i = 0; i < t.length; i++) {
        var a = t[i];
        e[a] != null && (r[a] = e[a])
    }
}
var Nv = ["x", "y", "rotation"],
    w3 = function() {
        function r() {
            this._labelList = [], this._chartViewList = []
        }
        return r.prototype.clearLabels = function() {
            this._labelList = [], this._chartViewList = []
        }, r.prototype._addLabel = function(e, t, i, a, n) {
            var o = a.style,
                s = a.__hostTarget,
                l = s.textConfig || {},
                u = a.getComputedTransform(),
                f = a.getBoundingRect().plain();
            it.applyTransform(f, f, u), u ? _r.setLocalTransform(u) : (_r.x = _r.y = _r.rotation = _r.originX = _r.originY = 0, _r.scaleX = _r.scaleY = 1), _r.rotation = Ke(_r.rotation);
            var p = a.__hostTarget,
                c;
            if (p) {
                c = p.getBoundingRect().plain();
                var h = p.getComputedTransform();
                it.applyTransform(c, c, h)
            }
            var v = c && p.getTextGuideLine();
            this._labelList.push({
                label: a,
                labelLine: v,
                seriesModel: i,
                dataIndex: e,
                dataType: t,
                layoutOption: n,
                computedLayoutOption: null,
                rect: f,
                hostRect: c,
                priority: c ? c.width * c.height : 0,
                defaultAttr: {
                    ignore: a.ignore,
                    labelGuideIgnore: v && v.ignore,
                    x: _r.x,
                    y: _r.y,
                    scaleX: _r.scaleX,
                    scaleY: _r.scaleY,
                    rotation: _r.rotation,
                    style: {
                        x: o.x,
                        y: o.y,
                        align: o.align,
                        verticalAlign: o.verticalAlign,
                        width: o.width,
                        height: o.height,
                        fontSize: o.fontSize
                    },
                    cursor: a.cursor,
                    attachedPos: l.position,
                    attachedRot: l.rotation
                }
            })
        }, r.prototype.addLabelsOfSeries = function(e) {
            var t = this;
            this._chartViewList.push(e);
            var i = e.__model,
                a = i.get("labelLayout");
            (X(a) || ft(a).length) && e.group.traverse(function(n) {
                if (n.ignore) return !0;
                var o = n.getTextContent(),
                    s = et(n);
                o && !o.disableLabelLayout && t._addLabel(s.dataIndex, s.dataType, i, o, a)
            })
        }, r.prototype.updateLayoutConfig = function(e) {
            var t = e.getWidth(),
                i = e.getHeight();

            function a(x, _) {
                return function() {
                    rx(x, _)
                }
            }
            for (var n = 0; n < this._labelList.length; n++) {
                var o = this._labelList[n],
                    s = o.label,
                    l = s.__hostTarget,
                    u = o.defaultAttr,
                    f = void 0;
                X(o.layoutOption) ? f = o.layoutOption(S3(o, l)) : f = o.layoutOption, f = f || {}, o.computedLayoutOption = f;
                var p = Math.PI / 180;
                l && l.setTextConfig({
                    local: !1,
                    position: f.x != null || f.y != null ? null : u.attachedPos,
                    rotation: f.rotate != null ? f.rotate * p : u.attachedRot,
                    offset: [f.dx || 0, f.dy || 0]
                });
                var c = !1;
                if (f.x != null ? (s.x = W(f.x, t), s.setStyle("x", 0), c = !0) : (s.x = u.x, s.setStyle("x", u.style.x)), f.y != null ? (s.y = W(f.y, i), s.setStyle("y", 0), c = !0) : (s.y = u.y, s.setStyle("y", u.style.y)), f.labelLinePoints) {
                    var h = l.getTextGuideLine();
                    h && (h.setShape({
                        points: f.labelLinePoints
                    }), c = !1)
                }
                var v = ax(s);
                v.needsUpdateLabelLine = c, s.rotation = f.rotate != null ? f.rotate * p : u.rotation, s.scaleX = u.scaleX, s.scaleY = u.scaleY;
                for (var d = 0; d < XL.length; d++) {
                    var m = XL[d];
                    s.setStyle(m, f[m] != null ? f[m] : u.style[m])
                }
                if (f.draggable) {
                    if (s.draggable = !0, s.cursor = "move", l) {
                        var g = o.seriesModel;
                        if (o.dataIndex != null) {
                            var y = o.seriesModel.getData(o.dataType);
                            g = y.getItemModel(o.dataIndex)
                        }
                        s.on("drag", a(l, g.getModel("labelLine")))
                    }
                } else s.off("drag"), s.cursor = u.cursor
            }
        }, r.prototype.layout = function(e) {
            var t = e.getWidth(),
                i = e.getHeight(),
                a = Iv(this._labelList),
                n = wt(a, function(l) {
                    return l.layoutOption.moveOverlap === "shiftX"
                }),
                o = wt(a, function(l) {
                    return l.layoutOption.moveOverlap === "shiftY"
                });
            ZL(n, 0, t), Ev(o, 0, i);
            var s = wt(a, function(l) {
                return l.layoutOption.hideOverlap
            });
            Pv(s)
        }, r.prototype.processLabelsOverall = function() {
            var e = this;
            w(this._chartViewList, function(t) {
                var i = t.__model,
                    a = t.ignoreLabelLineUpdate,
                    n = i.isAnimationEnabled();
                t.group.traverse(function(o) {
                    if (o.ignore && !o.forceLabelAnimation) return !0;
                    var s = !a,
                        l = o.getTextContent();
                    !s && l && (s = ax(l).needsUpdateLabelLine), s && e._updateLabelLine(o, i), n && e._animateLabels(o, i)
                })
            })
        }, r.prototype._updateLabelLine = function(e, t) {
            var i = e.getTextContent(),
                a = et(e),
                n = a.dataIndex;
            if (i && n != null) {
                var o = t.getData(a.dataType),
                    s = o.getItemModel(n),
                    l = {},
                    u = o.getItemVisual(n, "style");
                if (u) {
                    var f = o.getVisual("drawType");
                    l.stroke = u[f]
                }
                var p = s.getModel("labelLine");
                Vl(e, Bl(s), l), rx(e, p)
            }
        }, r.prototype._animateLabels = function(e, t) {
            var i = e.getTextContent(),
                a = e.getTextGuideLine();
            if (i && (e.forceLabelAnimation || !i.ignore && !i.invisible && !e.disableLabelAnimation && !Xa(e))) {
                var n = ax(i),
                    o = n.oldLayout,
                    s = et(e),
                    l = s.dataIndex,
                    u = {
                        x: i.x,
                        y: i.y,
                        rotation: i.rotation
                    },
                    f = t.getData(s.dataType);
                if (o) {
                    i.attr(o);
                    var c = e.prevStates;
                    c && (at(c, "select") >= 0 && i.attr(n.oldLayoutSelect), at(c, "emphasis") >= 0 && i.attr(n.oldLayoutEmphasis)), xt(i, u, t, l)
                } else if (i.attr(u), !Ja(i).valueAnimation) {
                    var p = ot(i.style.opacity, 1);
                    i.style.opacity = 0, Ot(i, {
                        style: {
                            opacity: p
                        }
                    }, t, l)
                }
                if (n.oldLayout = u, i.states.select) {
                    var h = n.oldLayoutSelect = {};
                    Rv(h, u, Nv), Rv(h, i.states.select, Nv)
                }
                if (i.states.emphasis) {
                    var v = n.oldLayoutEmphasis = {};
                    Rv(v, u, Nv), Rv(v, i.states.emphasis, Nv)
                }
                vh(i, l, f, t, t)
            }
            if (a && !a.ignore && !a.invisible) {
                var n = b3(a),
                    o = n.oldLayout,
                    d = {
                        points: a.shape.points
                    };
                o ? (a.attr({
                    shape: o
                }), xt(a, {
                    shape: d
                }, t)) : (a.setShape(d), a.style.strokePercent = 0, Ot(a, {
                    style: {
                        strokePercent: 1
                    }
                }, t)), n.oldLayout = d
            }
        }, r
    }(),
    qL = w3;
var nx = lt();

function ox(r) {
    r.registerUpdateLifecycle("series:beforeupdate", function(e, t, i) {
        var a = nx(t).labelManager;
        a || (a = nx(t).labelManager = new qL), a.clearLabels()
    }), r.registerUpdateLifecycle("series:layoutlabels", function(e, t, i) {
        var a = nx(t).labelManager;
        i.updatedSeries.forEach(function(n) {
            a.addLabelsOfSeries(t.getViewOfSeriesModel(n))
        }), a.updateLayoutConfig(t), a.layout(t), a.processLabelsOverall()
    })
}
var sx = Math.sin,
    lx = Math.cos,
    KL = Math.PI,
    ys = Math.PI * 2,
    T3 = 180 / KL,
    C3 = function() {
        function r() {}
        return r.prototype.reset = function(e) {
            this._start = !0, this._d = [], this._str = "", this._p = Math.pow(10, e || 4)
        }, r.prototype.moveTo = function(e, t) {
            this._add("M", e, t)
        }, r.prototype.lineTo = function(e, t) {
            this._add("L", e, t)
        }, r.prototype.bezierCurveTo = function(e, t, i, a, n, o) {
            this._add("C", e, t, i, a, n, o)
        }, r.prototype.quadraticCurveTo = function(e, t, i, a) {
            this._add("Q", e, t, i, a)
        }, r.prototype.arc = function(e, t, i, a, n, o) {
            this.ellipse(e, t, i, i, 0, a, n, o)
        }, r.prototype.ellipse = function(e, t, i, a, n, o, s, l) {
            var u = s - o,
                f = !l,
                p = Math.abs(u),
                c = la(p - ys) || (f ? u >= ys : -u >= ys),
                h = u > 0 ? u % ys : u % ys + ys,
                v = !1;
            c ? v = !0 : la(p) ? v = !1 : v = h >= KL == !!f;
            var d = e + i * lx(o),
                m = t + a * sx(o);
            this._start && this._add("M", d, m);
            var g = Math.round(n * T3);
            if (c) {
                var y = 1 / this._p,
                    x = (f ? 1 : -1) * (ys - y);
                this._add("A", i, a, g, 1, +f, e + i * lx(o + x), t + a * sx(o + x)), y > .01 && this._add("A", i, a, g, 0, +f, d, m)
            } else {
                var _ = e + i * lx(s),
                    S = t + a * sx(s);
                this._add("A", i, a, g, +v, +f, _, S)
            }
        }, r.prototype.rect = function(e, t, i, a) {
            this._add("M", e, t), this._add("l", i, 0), this._add("l", 0, a), this._add("l", -i, 0), this._add("Z")
        }, r.prototype.closePath = function() {
            this._d.length > 0 && this._add("Z")
        }, r.prototype._add = function(e, t, i, a, n, o, s, l, u) {
            for (var f = [], p = this._p, c = 1; c < arguments.length; c++) {
                var h = arguments[c];
                if (isNaN(h)) {
                    this._invalid = !0;
                    return
                }
                f.push(Math.round(h * p) / p)
            }
            this._d.push(e + f.join(" ")), this._start = e === "Z"
        }, r.prototype.generateStr = function() {
            this._str = this._invalid ? "" : this._d.join(""), this._d = []
        }, r.prototype.getStr = function() {
            return this._str
        }, r
    }(),
    Ov = C3;
var sp = "none",
    A3 = Math.round;

function D3(r) {
    var e = r.fill;
    return e != null && e !== sp
}

function M3(r) {
    var e = r.stroke;
    return e != null && e !== sp
}
var ux = ["lineCap", "miterLimit", "lineJoin"],
    L3 = k(ux, function(r) {
        return "stroke-" + r.toLowerCase()
    });

function fx(r, e, t, i) {
    var a = e.opacity == null ? 1 : e.opacity;
    if (t instanceof Zt) {
        r("opacity", a);
        return
    }
    if (D3(e)) {
        var n = bn(e.fill);
        r("fill", n.color);
        var o = e.fillOpacity != null ? e.fillOpacity * n.opacity * a : n.opacity * a;
        (i || o < 1) && r("fill-opacity", o)
    } else r("fill", sp);
    if (M3(e)) {
        var s = bn(e.stroke);
        r("stroke", s.color);
        var l = e.strokeNoScale ? t.getLineScale() : 1,
            u = l ? (e.lineWidth || 0) / l : 0,
            f = e.strokeOpacity != null ? e.strokeOpacity * s.opacity * a : s.opacity * a,
            p = e.strokeFirst;
        if ((i || u !== 1) && r("stroke-width", u), (i || p) && r("paint-order", p ? "stroke" : "fill"), (i || f < 1) && r("stroke-opacity", f), e.lineDash) {
            var c = Ff(t),
                h = c[0],
                v = c[1];
            h && (v = A3(v || 0), r("stroke-dasharray", h.join(",")), (v || i) && r("stroke-dashoffset", v))
        } else i && r("stroke-dasharray", sp);
        for (var d = 0; d < ux.length; d++) {
            var m = ux[d];
            if (i || e[m] !== ll[m]) {
                var g = e[m] || ll[m];
                g && r(L3[d], g)
            }
        }
    } else i && r("stroke", sp)
}
var jL = "http://www.w3.org/2000/svg",
    px = "http://www.w3.org/1999/xlink",
    JL = "http://www.w3.org/2000/xmlns/",
    QL = "http://www.w3.org/XML/1998/namespace",
    cx = "ecmeta_";

function zv(r) {
    return document.createElementNS(jL, r)
}

function we(r, e, t, i, a) {
    return {
        tag: r,
        attrs: t || {},
        children: i,
        text: a,
        key: e
    }
}

function I3(r, e) {
    var t = [];
    if (e)
        for (var i in e) {
            var a = e[i],
                n = i;
            a !== !1 && (a !== !0 && a != null && (n += '="' + a + '"'), t.push(n))
        }
    return "<" + r + " " + t.join(" ") + ">"
}

function E3(r) {
    return "</" + r + ">"
}

function lp(r, e) {
    e = e || {};
    var t = e.newline ? `
` : "";

    function i(a) {
        var n = a.children,
            o = a.tag,
            s = a.attrs,
            l = a.text;
        return I3(o, s) + (o !== "style" ? xe(l) : l || "") + (n ? "" + t + k(n, function(u) {
            return i(u)
        }).join(t) + t : "") + E3(o)
    }
    return i(r)
}

function $L(r, e, t) {
    t = t || {};
    var i = t.newline ? `
` : "",
        a = " {" + i,
        n = i + "}",
        o = k(ft(r), function(l) {
            return l + a + k(ft(r[l]), function(u) {
                return u + ":" + r[l][u] + ";"
            }).join(i) + n
        }).join(i),
        s = k(ft(e), function(l) {
            return "@keyframes " + l + a + k(ft(e[l]), function(u) {
                return u + a + k(ft(e[l][u]), function(f) {
                    var p = e[l][u][f];
                    return f === "d" && (p = 'path("' + p + '")'), f + ":" + p + ";"
                }).join(i) + n
            }).join(i) + n
        }).join(i);
    return !o && !s ? "" : ["<![CDATA[", o, s, "]]>"].join(i)
}

function up(r) {
    return {
        zrId: r,
        shadowCache: {},
        patternCache: {},
        gradientCache: {},
        clipPathCache: {},
        defs: {},
        cssNodes: {},
        cssAnims: {},
        cssStyleCache: {},
        cssAnimIdx: 0,
        shadowIdx: 0,
        gradientIdx: 0,
        patternIdx: 0,
        clipPathIdx: 0
    }
}

function hx(r, e, t, i) {
    return we("svg", "root", {
        width: r,
        height: e,
        xmlns: jL,
        "xmlns:xlink": px,
        version: "1.1",
        baseProfile: "full",
        viewBox: i ? "0 0 " + r + " " + e : !1
    }, t)
}
var P3 = 0;

function kv() {
    return P3++
}
var tI = {
        cubicIn: "0.32,0,0.67,0",
        cubicOut: "0.33,1,0.68,1",
        cubicInOut: "0.65,0,0.35,1",
        quadraticIn: "0.11,0,0.5,0",
        quadraticOut: "0.5,1,0.89,1",
        quadraticInOut: "0.45,0,0.55,1",
        quarticIn: "0.5,0,0.75,0",
        quarticOut: "0.25,1,0.5,1",
        quarticInOut: "0.76,0,0.24,1",
        quinticIn: "0.64,0,0.78,0",
        quinticOut: "0.22,1,0.36,1",
        quinticInOut: "0.83,0,0.17,1",
        sinusoidalIn: "0.12,0,0.39,0",
        sinusoidalOut: "0.61,1,0.88,1",
        sinusoidalInOut: "0.37,0,0.63,1",
        exponentialIn: "0.7,0,0.84,0",
        exponentialOut: "0.16,1,0.3,1",
        exponentialInOut: "0.87,0,0.13,1",
        circularIn: "0.55,0,1,0.45",
        circularOut: "0,0.55,0.45,1",
        circularInOut: "0.85,0,0.15,1"
    },
    xs = "transform-origin";

function R3(r, e, t) {
    var i = O({}, r.shape);
    O(i, e), r.buildPath(t, i);
    var a = new Ov;
    return a.reset(Tc(r)), t.rebuildPath(a, 1), a.generateStr(), a.getStr()
}

function N3(r, e) {
    var t = e.originX,
        i = e.originY;
    (t || i) && (r[xs] = t + "px " + i + "px")
}
var O3 = {
    fill: "fill",
    opacity: "opacity",
    lineWidth: "stroke-width",
    lineDashOffset: "stroke-dashoffset"
};

function rI(r, e) {
    var t = e.zrId + "-ani-" + e.cssAnimIdx++;
    return e.cssAnims[t] = r, t
}

function z3(r, e, t) {
    var i = r.shape.paths,
        a = {},
        n, o;
    if (w(i, function(l) {
            var u = up(t.zrId);
            u.animation = !0, fp(l, {}, u, !0);
            var f = u.cssAnims,
                p = u.cssNodes,
                c = ft(f),
                h = c.length;
            if (h) {
                o = c[h - 1];
                var v = f[o];
                for (var d in v) {
                    var m = v[d];
                    a[d] = a[d] || {
                        d: ""
                    }, a[d].d += m.d || ""
                }
                for (var g in p) {
                    var y = p[g].animation;
                    y.indexOf(o) >= 0 && (n = y)
                }
            }
        }), !!n) {
        e.d = !1;
        var s = rI(a, t);
        return n.replace(o, s)
    }
}

function eI(r) {
    return F(r) ? tI[r] ? "cubic-bezier(" + tI[r] + ")" : Zs(r) ? r : "" : ""
}

function fp(r, e, t, i) {
    var a = r.animators,
        n = a.length,
        o = [];
    if (r instanceof Rn) {
        var s = z3(r, e, t);
        if (s) o.push(s);
        else if (!n) return
    } else if (!n) return;
    for (var l = {}, u = 0; u < n; u++) {
        var f = a[u],
            p = [f.getMaxTime() / 1e3 + "s"],
            c = eI(f.getClip().easing),
            h = f.getDelay();
        c ? p.push(c) : p.push("linear"), h && p.push(h / 1e3 + "s"), f.getLoop() && p.push("infinite");
        var v = p.join(" ");
        l[v] = l[v] || [v, []], l[v][1].push(f)
    }

    function d(y) {
        var x = y[1],
            _ = x.length,
            S = {},
            b = {},
            T = {},
            C = "animation-timing-function";

        function A(Mt, mt, Et) {
            for (var ut = Mt.getTracks(), Tt = Mt.getMaxTime(), re = 0; re < ut.length; re++) {
                var Wt = ut[re];
                if (Wt.needsAnimate()) {
                    var Qt = Wt.keyframes,
                        le = Wt.propName;
                    if (Et && (le = Et(le)), le)
                        for (var ke = 0; ke < Qt.length; ke++) {
                            var Zr = Qt[ke],
                                wr = Math.round(Zr.time / Tt * 100) + "%",
                                ho = eI(Zr.easing),
                                pn = Zr.rawValue;
                            (F(pn) || vt(pn)) && (mt[wr] = mt[wr] || {}, mt[wr][le] = Zr.rawValue, ho && (mt[wr][C] = ho))
                        }
                }
            }
        }
        for (var D = 0; D < _; D++) {
            var M = x[D],
                I = M.targetName;
            I ? I === "shape" && A(M, b) : !i && A(M, S)
        }
        for (var E in S) {
            var P = {};
            dg(P, r), O(P, S[E]);
            var R = Cc(P),
                N = S[E][C];
            T[E] = R ? {
                transform: R
            } : {}, N3(T[E], P), N && (T[E][C] = N)
        }
        var V, U = !0;
        for (var E in b) {
            T[E] = T[E] || {};
            var B = !V,
                N = b[E][C];
            B && (V = new Ve);
            var Z = V.len();
            V.reset(), T[E].d = R3(r, b[E], V);
            var K = V.len();
            if (!B && Z !== K) {
                U = !1;
                break
            }
            N && (T[E][C] = N)
        }
        if (!U)
            for (var E in T) delete T[E].d;
        if (!i)
            for (var D = 0; D < _; D++) {
                var M = x[D],
                    I = M.targetName;
                I === "style" && A(M, T, function(ut) {
                    return O3[ut]
                })
            }
        for (var tt = ft(T), pt = !0, ct, D = 1; D < tt.length; D++) {
            var bt = tt[D - 1],
                qt = tt[D];
            if (T[bt][xs] !== T[qt][xs]) {
                pt = !1;
                break
            }
            ct = T[bt][xs]
        }
        if (pt && ct) {
            for (var E in T) T[E][xs] && delete T[E][xs];
            e[xs] = ct
        }
        if (wt(tt, function(Mt) {
                return ft(T[Mt]).length > 0
            }).length) {
            var ve = rI(T, t);
            return ve + " " + y[0] + " both"
        }
    }
    for (var m in l) {
        var s = d(l[m]);
        s && o.push(s)
    }
    if (o.length) {
        var g = t.zrId + "-cls-" + kv();
        t.cssNodes["." + g] = {
            animation: o.join(",")
        }, e.class = g
    }
}

function aI(r, e, t) {
    if (!r.ignore)
        if (r.isSilent()) {
            var i = {
                "pointer-events": "none"
            };
            iI(i, e, t, !0)
        } else {
            var a = r.states.emphasis && r.states.emphasis.style ? r.states.emphasis.style : {},
                n = a.fill;
            if (!n) {
                var o = r.style && r.style.fill,
                    s = r.states.select && r.states.select.style && r.states.select.style.fill,
                    l = r.currentStates.indexOf("select") >= 0 && s || o;
                l && (n = Ks(l))
            }
            var u = a.lineWidth;
            if (u) {
                var f = !a.strokeNoScale && r.transform ? r.transform[0] : 1;
                u = u / f
            }
            var i = {
                cursor: "pointer"
            };
            n && (i.fill = n), a.stroke && (i.stroke = a.stroke), u && (i["stroke-width"] = u), iI(i, e, t, !0)
        }
}

function iI(r, e, t, i) {
    var a = JSON.stringify(r),
        n = t.cssStyleCache[a];
    n || (n = t.zrId + "-cls-" + kv(), t.cssStyleCache[a] = n, t.cssNodes["." + n + (i ? ":hover" : "")] = r), e.class = e.class ? e.class + " " + n : n
}
var pp = Math.round;

function lI(r) {
    return r && F(r.src)
}

function uI(r) {
    return r && X(r.toDataURL)
}

function vx(r, e, t, i) {
    fx(function(a, n) {
        var o = a === "fill" || a === "stroke";
        o && wc(n) ? yx(e, r, a, i) : o && Gu(n) ? xx(t, r, a, i) : r[a] = n, o && i.ssr && n === "none" && (r["pointer-events"] = "visible")
    }, e, t, !1), H3(t, r, i)
}

function dx(r, e) {
    var t = wg(e);
    t && (t.each(function(i, a) {
        i != null && (r[(cx + a).toLowerCase()] = i + "")
    }), e.isSilent() && (r[cx + "silent"] = "true"))
}

function nI(r) {
    return la(r[0] - 1) && la(r[1]) && la(r[2]) && la(r[3] - 1)
}

function k3(r) {
    return la(r[4]) && la(r[5])
}

function mx(r, e, t) {
    if (e && !(k3(e) && nI(e))) {
        var i = t ? 10 : 1e4;
        r.transform = nI(e) ? "translate(" + pp(e[4] * i) / i + " " + pp(e[5] * i) / i + ")" : kw(e)
    }
}

function oI(r, e, t) {
    for (var i = r.points, a = [], n = 0; n < i.length; n++) a.push(pp(i[n][0] * t) / t), a.push(pp(i[n][1] * t) / t);
    e.points = a.join(" ")
}

function sI(r) {
    return !r.smooth
}

function U3(r) {
    var e = k(r, function(t) {
        return typeof t == "string" ? [t, t] : t
    });
    return function(t, i, a) {
        for (var n = 0; n < e.length; n++) {
            var o = e[n],
                s = t[o[0]];
            s != null && (i[o[1]] = pp(s * a) / a)
        }
    }
}
var V3 = {
    circle: [U3(["cx", "cy", "r"])],
    polyline: [oI, sI],
    polygon: [oI, sI]
};

function B3(r) {
    for (var e = r.animators, t = 0; t < e.length; t++)
        if (e[t].targetName === "shape") return !0;
    return !1
}

function fI(r, e) {
    var t = r.style,
        i = r.shape,
        a = V3[r.type],
        n = {},
        o = e.animation,
        s = "path",
        l = r.style.strokePercent,
        u = e.compress && Tc(r) || 4;
    if (a && !e.willUpdate && !(a[1] && !a[1](i)) && !(o && B3(r)) && !(l < 1)) {
        s = r.type;
        var f = Math.pow(10, u);
        a[0](i, n, f)
    } else {
        var p = !r.path || r.shapeChanged();
        r.path || r.createPathProxy();
        var c = r.path;
        p && (c.beginPath(), r.buildPath(c, r.shape), r.pathUpdated());
        var h = c.getVersion(),
            v = r,
            d = v.__svgPathBuilder;
        (v.__svgPathVersion !== h || !d || l !== v.__svgPathStrokePercent) && (d || (d = v.__svgPathBuilder = new Ov), d.reset(u), c.rebuildPath(d, l), d.generateStr(), v.__svgPathVersion = h, v.__svgPathStrokePercent = l), n.d = d.getStr()
    }
    return mx(n, r.transform), vx(n, t, r, e), dx(n, r), e.animation && fp(r, n, e), e.emphasis && aI(r, n, e), we(s, r.id + "", n)
}

function F3(r, e) {
    var t = r.style,
        i = t.image;
    if (i && !F(i) && (lI(i) ? i = i.src : uI(i) && (i = i.toDataURL())), !!i) {
        var a = t.x || 0,
            n = t.y || 0,
            o = t.width,
            s = t.height,
            l = {
                href: i,
                width: o,
                height: s
            };
        return a && (l.x = a), n && (l.y = n), mx(l, r.transform), vx(l, t, r, e), dx(l, r), e.animation && fp(r, l, e), we("image", r.id + "", l)
    }
}

function G3(r, e) {
    var t = r.style,
        i = t.text;
    if (i != null && (i += ""), !(!i || isNaN(t.x) || isNaN(t.y))) {
        var a = t.font || Xr,
            n = t.x || 0,
            o = Vw(t.y || 0, Qs(a), t.textBaseline),
            s = Uw[t.textAlign] || t.textAlign,
            l = {
                "dominant-baseline": "central",
                "text-anchor": s
            };
        if (jg(t)) {
            var u = "",
                f = t.fontStyle,
                p = Kg(t.fontSize);
            if (!parseFloat(p)) return;
            var c = t.fontFamily || Lm,
                h = t.fontWeight;
            u += "font-size:" + p + ";font-family:" + c + ";", f && f !== "normal" && (u += "font-style:" + f + ";"), h && h !== "normal" && (u += "font-weight:" + h + ";"), l.style = u
        } else l.style = "font: " + a;
        return i.match(/\s/) && (l["xml:space"] = "preserve"), n && (l.x = n), o && (l.y = o), mx(l, r.transform), vx(l, t, r, e), dx(l, r), e.animation && fp(r, l, e), we("text", r.id + "", l, void 0, i)
    }
}

function gx(r, e) {
    if (r instanceof st) return fI(r, e);
    if (r instanceof Zt) return F3(r, e);
    if (r instanceof Fa) return G3(r, e)
}

function H3(r, e, t) {
    var i = r.style;
    if (Bw(i)) {
        var a = Fw(r),
            n = t.shadowCache,
            o = n[a];
        if (!o) {
            var s = r.getGlobalScale(),
                l = s[0],
                u = s[1];
            if (!l || !u) return;
            var f = i.shadowOffsetX || 0,
                p = i.shadowOffsetY || 0,
                c = i.shadowBlur,
                h = bn(i.shadowColor),
                v = h.opacity,
                d = h.color,
                m = c / 2 / l,
                g = c / 2 / u,
                y = m + " " + g;
            o = t.zrId + "-s" + t.shadowIdx++, t.defs[o] = we("filter", o, {
                id: o,
                x: "-100%",
                y: "-100%",
                width: "300%",
                height: "300%"
            }, [we("feDropShadow", "", {
                dx: f / l,
                dy: p / u,
                stdDeviation: y,
                "flood-color": d,
                "flood-opacity": v
            })]), n[a] = o
        }
        e.filter = Hu(o)
    }
}

function yx(r, e, t, i) {
    var a = r[t],
        n, o = {
            gradientUnits: a.global ? "userSpaceOnUse" : "objectBoundingBox"
        };
    if (Sc(a)) n = "linearGradient", o.x1 = a.x, o.y1 = a.y, o.x2 = a.x2, o.y2 = a.y2;
    else if (bc(a)) n = "radialGradient", o.cx = ot(a.x, .5), o.cy = ot(a.y, .5), o.r = ot(a.r, .5);
    else return;
    for (var s = a.colorStops, l = [], u = 0, f = s.length; u < f; ++u) {
        var p = _c(s[u].offset) * 100 + "%",
            c = s[u].color,
            h = bn(c),
            v = h.color,
            d = h.opacity,
            m = {
                offset: p
            };
        m["stop-color"] = v, d < 1 && (m["stop-opacity"] = d), l.push(we("stop", u + "", m))
    }
    var g = we(n, "", o, l),
        y = lp(g),
        x = i.gradientCache,
        _ = x[y];
    _ || (_ = i.zrId + "-g" + i.gradientIdx++, x[y] = _, o.id = _, i.defs[_] = we(n, _, o, l)), e[t] = Hu(_)
}

function xx(r, e, t, i) {
    var a = r.style[t],
        n = r.getBoundingRect(),
        o = {},
        s = a.repeat,
        l = s === "no-repeat",
        u = s === "repeat-x",
        f = s === "repeat-y",
        p;
    if (rg(a)) {
        var c = a.imageWidth,
            h = a.imageHeight,
            v = void 0,
            d = a.image;
        if (F(d) ? v = d : lI(d) ? v = d.src : uI(d) && (v = d.toDataURL()), typeof Image > "u") {
            var m = "Image width/height must been given explictly in svg-ssr renderer.";
            jt(c, m), jt(h, m)
        } else if (c == null || h == null) {
            var g = function(D, M) {
                    if (D) {
                        var I = D.elm,
                            E = c || M.width,
                            P = h || M.height;
                        D.tag === "pattern" && (u ? (P = 1, E /= n.width) : f && (E = 1, P /= n.height)), D.attrs.width = E, D.attrs.height = P, I && (I.setAttribute("width", E), I.setAttribute("height", P))
                    }
                },
                y = rf(v, null, r, function(D) {
                    l || g(b, D), g(p, D)
                });
            y && y.width && y.height && (c = c || y.width, h = h || y.height)
        }
        p = we("image", "img", {
            href: v,
            width: c,
            height: h
        }), o.width = c, o.height = h
    } else a.svgElement && (p = Q(a.svgElement), o.width = a.svgWidth, o.height = a.svgHeight);
    if (p) {
        var x, _;
        l ? x = _ = 1 : u ? (_ = 1, x = o.width / n.width) : f ? (x = 1, _ = o.height / n.height) : o.patternUnits = "userSpaceOnUse", x != null && !isNaN(x) && (o.width = x), _ != null && !isNaN(_) && (o.height = _);
        var S = Cc(a);
        S && (o.patternTransform = S);
        var b = we("pattern", "", o, [p]),
            T = lp(b),
            C = i.patternCache,
            A = C[T];
        A || (A = i.zrId + "-p" + i.patternIdx++, C[T] = A, o.id = A, b = i.defs[A] = we("pattern", A, o, [p])), e[t] = Hu(A)
    }
}

function pI(r, e, t) {
    var i = t.clipPathCache,
        a = t.defs,
        n = i[r.id];
    if (!n) {
        n = t.zrId + "-c" + t.clipPathIdx++;
        var o = {
            id: n
        };
        i[r.id] = n, a[n] = we("clipPath", n, o, [fI(r, t)])
    }
    e["clip-path"] = Hu(n)
}

function _x(r) {
    return document.createTextNode(r)
}

function Xn(r, e, t) {
    r.insertBefore(e, t)
}

function Sx(r, e) {
    r.removeChild(e)
}

function bx(r, e) {
    r.appendChild(e)
}

function Tx(r) {
    return r.parentNode
}

function Cx(r) {
    return r.nextSibling
}

function Uv(r, e) {
    r.textContent = e
}
var cI = 58,
    Y3 = 120,
    Z3 = we("", "");

function Ax(r) {
    return r === void 0
}

function ba(r) {
    return r !== void 0
}

function X3(r, e, t) {
    for (var i = {}, a = e; a <= t; ++a) {
        var n = r[a].key;
        n !== void 0 && (i[n] = a)
    }
    return i
}

function cp(r, e) {
    var t = r.key === e.key,
        i = r.tag === e.tag;
    return i && t
}

function hp(r) {
    var e, t = r.children,
        i = r.tag;
    if (ba(i)) {
        var a = r.elm = zv(i);
        if (Bv(Z3, r), z(t))
            for (e = 0; e < t.length; ++e) {
                var n = t[e];
                n != null && bx(a, hp(n))
            } else ba(r.text) && !j(r.text) && bx(a, _x(r.text))
    } else r.elm = _x(r.text);
    return r.elm
}

function hI(r, e, t, i, a) {
    for (; i <= a; ++i) {
        var n = t[i];
        n != null && Xn(r, hp(n), e)
    }
}

function Vv(r, e, t, i) {
    for (; t <= i; ++t) {
        var a = e[t];
        if (a != null)
            if (ba(a.tag)) {
                var n = Tx(a.elm);
                Sx(n, a.elm)
            } else Sx(r, a.elm)
    }
}

function Bv(r, e) {
    var t, i = e.elm,
        a = r && r.attrs || {},
        n = e.attrs || {};
    if (a !== n) {
        for (t in n) {
            var o = n[t],
                s = a[t];
            s !== o && (o === !0 ? i.setAttribute(t, "") : o === !1 ? i.removeAttribute(t) : t === "style" ? i.style.cssText = o : t.charCodeAt(0) !== Y3 ? i.setAttribute(t, o) : t === "xmlns:xlink" || t === "xmlns" ? i.setAttributeNS(JL, t, o) : t.charCodeAt(3) === cI ? i.setAttributeNS(QL, t, o) : t.charCodeAt(5) === cI ? i.setAttributeNS(px, t, o) : i.setAttribute(t, o))
        }
        for (t in a) t in n || i.removeAttribute(t)
    }
}

function q3(r, e, t) {
    for (var i = 0, a = 0, n = e.length - 1, o = e[0], s = e[n], l = t.length - 1, u = t[0], f = t[l], p, c, h, v; i <= n && a <= l;) o == null ? o = e[++i] : s == null ? s = e[--n] : u == null ? u = t[++a] : f == null ? f = t[--l] : cp(o, u) ? (Fl(o, u), o = e[++i], u = t[++a]) : cp(s, f) ? (Fl(s, f), s = e[--n], f = t[--l]) : cp(o, f) ? (Fl(o, f), Xn(r, o.elm, Cx(s.elm)), o = e[++i], f = t[--l]) : cp(s, u) ? (Fl(s, u), Xn(r, s.elm, o.elm), s = e[--n], u = t[++a]) : (Ax(p) && (p = X3(e, i, n)), c = p[u.key], Ax(c) ? Xn(r, hp(u), o.elm) : (h = e[c], h.tag !== u.tag ? Xn(r, hp(u), o.elm) : (Fl(h, u), e[c] = void 0, Xn(r, h.elm, o.elm))), u = t[++a]);
    (i <= n || a <= l) && (i > n ? (v = t[l + 1] == null ? null : t[l + 1].elm, hI(r, v, t, a, l)) : Vv(r, e, i, n))
}

function Fl(r, e) {
    var t = e.elm = r.elm,
        i = r.children,
        a = e.children;
    r !== e && (Bv(r, e), Ax(e.text) ? ba(i) && ba(a) ? i !== a && q3(t, i, a) : ba(a) ? (ba(r.text) && Uv(t, ""), hI(t, null, a, 0, a.length - 1)) : ba(i) ? Vv(t, i, 0, i.length - 1) : ba(r.text) && Uv(t, "") : r.text !== e.text && (ba(i) && Vv(t, i, 0, i.length - 1), Uv(t, e.text)))
}

function Dx(r, e) {
    if (cp(r, e)) Fl(r, e);
    else {
        var t = r.elm,
            i = Tx(t);
        hp(e), i !== null && (Xn(i, e.elm, Cx(t)), Vv(i, [r], 0, 0))
    }
    return e
}
var K3 = 0,
    j3 = function() {
        function r(e, t, i) {
            if (this.type = "svg", this.refreshHover = vI("refreshHover"), this.configLayer = vI("configLayer"), this.storage = t, this._opts = i = O({}, i), this.root = e, this._id = "zr" + K3++, this._oldVNode = hx(i.width, i.height), e && !i.ssr) {
                var a = this._viewport = document.createElement("div");
                a.style.cssText = "position:relative;overflow:hidden";
                var n = this._svgDom = this._oldVNode.elm = zv("svg");
                Bv(null, this._oldVNode), a.appendChild(n), e.appendChild(a)
            }
            this.resize(i.width, i.height)
        }
        return r.prototype.getType = function() {
            return this.type
        }, r.prototype.getViewportRoot = function() {
            return this._viewport
        }, r.prototype.getViewportRootOffset = function() {
            var e = this.getViewportRoot();
            if (e) return {
                offsetLeft: e.offsetLeft || 0,
                offsetTop: e.offsetTop || 0
            }
        }, r.prototype.getSvgDom = function() {
            return this._svgDom
        }, r.prototype.refresh = function() {
            if (this.root) {
                var e = this.renderToVNode({
                    willUpdate: !0
                });
                e.attrs.style = "position:absolute;left:0;top:0;user-select:none", Dx(this._oldVNode, e), this._oldVNode = e
            }
        }, r.prototype.renderOneToVNode = function(e) {
            return gx(e, up(this._id))
        }, r.prototype.renderToVNode = function(e) {
            e = e || {};
            var t = this.storage.getDisplayList(!0),
                i = this._width,
                a = this._height,
                n = up(this._id);
            n.animation = e.animation, n.willUpdate = e.willUpdate, n.compress = e.compress, n.emphasis = e.emphasis, n.ssr = this._opts.ssr;
            var o = [],
                s = this._bgVNode = J3(i, a, this._backgroundColor, n);
            s && o.push(s);
            var l = e.compress ? null : this._mainVNode = we("g", "main", {}, []);
            this._paintList(t, n, l ? l.children : o), l && o.push(l);
            var u = k(ft(n.defs), function(c) {
                return n.defs[c]
            });
            if (u.length && o.push(we("defs", "defs", {}, u)), e.animation) {
                var f = $L(n.cssNodes, n.cssAnims, {
                    newline: !0
                });
                if (f) {
                    var p = we("style", "stl", {}, [], f);
                    o.push(p)
                }
            }
            return hx(i, a, o, e.useViewBox)
        }, r.prototype.renderToString = function(e) {
            return e = e || {}, lp(this.renderToVNode({
                animation: ot(e.cssAnimation, !0),
                emphasis: ot(e.cssEmphasis, !0),
                willUpdate: !1,
                compress: !0,
                useViewBox: ot(e.useViewBox, !0)
            }), {
                newline: !0
            })
        }, r.prototype.setBackgroundColor = function(e) {
            this._backgroundColor = e
        }, r.prototype.getSvgRoot = function() {
            return this._mainVNode && this._mainVNode.elm
        }, r.prototype._paintList = function(e, t, i) {
            for (var a = e.length, n = [], o = 0, s, l, u = 0, f = 0; f < a; f++) {
                var p = e[f];
                if (!p.invisible) {
                    var c = p.__clipPaths,
                        h = c && c.length || 0,
                        v = l && l.length || 0,
                        d = void 0;
                    for (d = Math.max(h - 1, v - 1); d >= 0 && !(c && l && c[d] === l[d]); d--);
                    for (var m = v - 1; m > d; m--) o--, s = n[o - 1];
                    for (var g = d + 1; g < h; g++) {
                        var y = {};
                        pI(c[g], y, t);
                        var x = we("g", "clip-g-" + u++, y, []);
                        (s ? s.children : i).push(x), n[o++] = x, s = x
                    }
                    l = c;
                    var _ = gx(p, t);
                    _ && (s ? s.children : i).push(_)
                }
            }
        }, r.prototype.resize = function(e, t) {
            var i = this._opts,
                a = this.root,
                n = this._viewport;
            if (e != null && (i.width = e), t != null && (i.height = t), a && n && (n.style.display = "none", e = Vn(a, 0, i), t = Vn(a, 1, i), n.style.display = ""), this._width !== e || this._height !== t) {
                if (this._width = e, this._height = t, n) {
                    var o = n.style;
                    o.width = e + "px", o.height = t + "px"
                }
                if (Gu(this._backgroundColor)) this.refresh();
                else {
                    var s = this._svgDom;
                    s && (s.setAttribute("width", e), s.setAttribute("height", t));
                    var l = this._bgVNode && this._bgVNode.elm;
                    l && (l.setAttribute("width", e), l.setAttribute("height", t))
                }
            }
        }, r.prototype.getWidth = function() {
            return this._width
        }, r.prototype.getHeight = function() {
            return this._height
        }, r.prototype.dispose = function() {
            this.root && (this.root.innerHTML = ""), this._svgDom = this._viewport = this.storage = this._oldVNode = this._bgVNode = this._mainVNode = null
        }, r.prototype.clear = function() {
            this._svgDom && (this._svgDom.innerHTML = null), this._oldVNode = null
        }, r.prototype.toDataURL = function(e) {
            var t = this.renderToString(),
                i = "data:image/svg+xml;";
            return e ? (t = Gw(t), t && i + "base64," + t) : i + "charset=UTF-8," + encodeURIComponent(t)
        }, r
    }();

function vI(r) {
    return function() {}
}

function J3(r, e, t, i) {
    var a;
    if (t && t !== "none")
        if (a = we("rect", "bg", {
                width: r,
                height: e,
                x: "0",
                y: "0"
            }), wc(t)) yx({
            fill: t
        }, a.attrs, "fill", i);
        else if (Gu(t)) xx({
        style: {
            fill: t
        },
        dirty: Yt,
        getBoundingRect: function() {
            return {
                width: r,
                height: e
            }
        }
    }, a.attrs, "fill", i);
    else {
        var n = bn(t),
            o = n.color,
            s = n.opacity;
        a.attrs.fill = o, s < 1 && (a.attrs["fill-opacity"] = s)
    }
    return a
}
var dI = j3;

function Mx(r) {
    r.registerPainter("svg", dI)
}

function mI(r, e, t) {
    var i = He.createCanvas(),
        a = e.getWidth(),
        n = e.getHeight(),
        o = i.style;
    return o && (o.position = "absolute", o.left = "0", o.top = "0", o.width = a + "px", o.height = n + "px", i.setAttribute("data-zr-dom-id", r)), i.width = a * t, i.height = n * t, i
}
var Q3 = function(r) {
        L(e, r);

        function e(t, i, a) {
            var n = r.call(this) || this;
            n.motionBlur = !1, n.lastFrameAlpha = .7, n.dpr = 1, n.virtual = !1, n.config = {}, n.incremental = !1, n.zlevel = 0, n.maxRepaintRectCount = 5, n.__dirty = !0, n.__firstTimePaint = !0, n.__used = !1, n.__drawIndex = 0, n.__startIndex = 0, n.__endIndex = 0, n.__prevStartIndex = null, n.__prevEndIndex = null;
            var o;
            a = a || Po, typeof t == "string" ? o = mI(t, i, a) : j(t) && (o = t, t = o.id), n.id = t, n.dom = o;
            var s = o.style;
            return s && (Lu(o), o.onselectstart = function() {
                return !1
            }, s.padding = "0", s.margin = "0", s.borderWidth = "0"), n.painter = i, n.dpr = a, n
        }
        return e.prototype.getElementCount = function() {
            return this.__endIndex - this.__startIndex
        }, e.prototype.afterBrush = function() {
            this.__prevStartIndex = this.__startIndex, this.__prevEndIndex = this.__endIndex
        }, e.prototype.initContext = function() {
            this.ctx = this.dom.getContext("2d"), this.ctx.dpr = this.dpr
        }, e.prototype.setUnpainted = function() {
            this.__firstTimePaint = !0
        }, e.prototype.createBackBuffer = function() {
            var t = this.dpr;
            this.domBack = mI("back-" + this.id, this.painter, t), this.ctxBack = this.domBack.getContext("2d"), t !== 1 && this.ctxBack.scale(t, t)
        }, e.prototype.createRepaintRects = function(t, i, a, n) {
            if (this.__firstTimePaint) return this.__firstTimePaint = !1, null;
            var o = [],
                s = this.maxRepaintRectCount,
                l = !1,
                u = new it(0, 0, 0, 0);

            function f(y) {
                if (!(!y.isFinite() || y.isZero()))
                    if (o.length === 0) {
                        var x = new it(0, 0, 0, 0);
                        x.copy(y), o.push(x)
                    } else {
                        for (var _ = !1, S = 1 / 0, b = 0, T = 0; T < o.length; ++T) {
                            var C = o[T];
                            if (C.intersect(y)) {
                                var A = new it(0, 0, 0, 0);
                                A.copy(C), A.union(y), o[T] = A, _ = !0;
                                break
                            } else if (l) {
                                u.copy(y), u.union(C);
                                var D = y.width * y.height,
                                    M = C.width * C.height,
                                    I = u.width * u.height,
                                    E = I - D - M;
                                E < S && (S = E, b = T)
                            }
                        }
                        if (l && (o[b].union(y), _ = !0), !_) {
                            var x = new it(0, 0, 0, 0);
                            x.copy(y), o.push(x)
                        }
                        l || (l = o.length >= s)
                    }
            }
            for (var p = this.__startIndex; p < this.__endIndex; ++p) {
                var c = t[p];
                if (c) {
                    var h = c.shouldBePainted(a, n, !0, !0),
                        v = c.__isRendered && (c.__dirty & Pe || !h) ? c.getPrevPaintRect() : null;
                    v && f(v);
                    var d = h && (c.__dirty & Pe || !c.__isRendered) ? c.getPaintRect() : null;
                    d && f(d)
                }
            }
            for (var p = this.__prevStartIndex; p < this.__prevEndIndex; ++p) {
                var c = i[p],
                    h = c && c.shouldBePainted(a, n, !0, !0);
                if (c && (!h || !c.__zr) && c.__isRendered) {
                    var v = c.getPrevPaintRect();
                    v && f(v)
                }
            }
            var m;
            do {
                m = !1;
                for (var p = 0; p < o.length;) {
                    if (o[p].isZero()) {
                        o.splice(p, 1);
                        continue
                    }
                    for (var g = p + 1; g < o.length;) o[p].intersect(o[g]) ? (m = !0, o[p].union(o[g]), o.splice(g, 1)) : g++;
                    p++
                }
            } while (m);
            return this._paintRects = o, o
        }, e.prototype.debugGetPaintRects = function() {
            return (this._paintRects || []).slice()
        }, e.prototype.resize = function(t, i) {
            var a = this.dpr,
                n = this.dom,
                o = n.style,
                s = this.domBack;
            o && (o.width = t + "px", o.height = i + "px"), n.width = t * a, n.height = i * a, s && (s.width = t * a, s.height = i * a, a !== 1 && this.ctxBack.scale(a, a))
        }, e.prototype.clear = function(t, i, a) {
            var n = this.dom,
                o = this.ctx,
                s = n.width,
                l = n.height;
            i = i || this.clearColor;
            var u = this.motionBlur && !t,
                f = this.lastFrameAlpha,
                p = this.dpr,
                c = this;
            u && (this.domBack || this.createBackBuffer(), this.ctxBack.globalCompositeOperation = "copy", this.ctxBack.drawImage(n, 0, 0, s / p, l / p));
            var h = this.domBack;

            function v(d, m, g, y) {
                if (o.clearRect(d, m, g, y), i && i !== "transparent") {
                    var x = void 0;
                    if (Ra(i)) {
                        var _ = i.global || i.__width === g && i.__height === y;
                        x = _ && i.__canvasGradient || Bf(o, i, {
                            x: 0,
                            y: 0,
                            width: g,
                            height: y
                        }), i.__canvasGradient = x, i.__width = g, i.__height = y
                    } else Om(i) && (i.scaleX = i.scaleX || p, i.scaleY = i.scaleY || p, x = rv(o, i, {
                        dirty: function() {
                            c.setUnpainted(), c.painter.refresh()
                        }
                    }));
                    o.save(), o.fillStyle = x || i, o.fillRect(d, m, g, y), o.restore()
                }
                u && (o.save(), o.globalAlpha = f, o.drawImage(h, d, m, g, y), o.restore())
            }!a || u ? v(0, 0, s, l) : a.length && w(a, function(d) {
                v(d.x * p, d.y * p, d.width * p, d.height * p)
            })
        }, e
    }(Ce),
    Fv = Q3;
var gI = 1e5,
    _s = 314159,
    Gv = .01,
    $3 = .001;

function tW(r) {
    return r ? r.__builtin__ ? !0 : !(typeof r.resize != "function" || typeof r.refresh != "function") : !1
}

function eW(r, e) {
    var t = document.createElement("div");
    return t.style.cssText = ["position:relative", "width:" + r + "px", "height:" + e + "px", "padding:0", "margin:0", "border-width:0"].join(";") + ";", t
}
var rW = function() {
        function r(e, t, i, a) {
            this.type = "canvas", this._zlevelList = [], this._prevDisplayList = [], this._layers = {}, this._layerConfig = {}, this._needsManuallyCompositing = !1, this.type = "canvas";
            var n = !e.nodeName || e.nodeName.toUpperCase() === "CANVAS";
            this._opts = i = O({}, i || {}), this.dpr = i.devicePixelRatio || Po, this._singleCanvas = n, this.root = e;
            var o = e.style;
            o && (Lu(e), e.innerHTML = ""), this.storage = t;
            var s = this._zlevelList;
            this._prevDisplayList = [];
            var l = this._layers;
            if (n) {
                var f = e,
                    p = f.width,
                    c = f.height;
                i.width != null && (p = i.width), i.height != null && (c = i.height), this.dpr = i.devicePixelRatio || 1, f.width = p * this.dpr, f.height = c * this.dpr, this._width = p, this._height = c;
                var h = new Fv(f, this, this.dpr);
                h.__builtin__ = !0, h.initContext(), l[_s] = h, h.zlevel = _s, s.push(_s), this._domRoot = e
            } else {
                this._width = Vn(e, 0, i), this._height = Vn(e, 1, i);
                var u = this._domRoot = eW(this._width, this._height);
                e.appendChild(u)
            }
        }
        return r.prototype.getType = function() {
            return "canvas"
        }, r.prototype.isSingleCanvas = function() {
            return this._singleCanvas
        }, r.prototype.getViewportRoot = function() {
            return this._domRoot
        }, r.prototype.getViewportRootOffset = function() {
            var e = this.getViewportRoot();
            if (e) return {
                offsetLeft: e.offsetLeft || 0,
                offsetTop: e.offsetTop || 0
            }
        }, r.prototype.refresh = function(e) {
            var t = this.storage.getDisplayList(!0),
                i = this._prevDisplayList,
                a = this._zlevelList;
            this._redrawId = Math.random(), this._paintList(t, i, e, this._redrawId);
            for (var n = 0; n < a.length; n++) {
                var o = a[n],
                    s = this._layers[o];
                if (!s.__builtin__ && s.refresh) {
                    var l = n === 0 ? this._backgroundColor : null;
                    s.refresh(l)
                }
            }
            return this._opts.useDirtyRect && (this._prevDisplayList = t.slice()), this
        }, r.prototype.refreshHover = function() {
            this._paintHoverList(this.storage.getDisplayList(!1))
        }, r.prototype._paintHoverList = function(e) {
            var t = e.length,
                i = this._hoverlayer;
            if (i && i.clear(), !!t) {
                for (var a = {
                        inHover: !0,
                        viewWidth: this._width,
                        viewHeight: this._height
                    }, n, o = 0; o < t; o++) {
                    var s = e[o];
                    s.__inHover && (i || (i = this._hoverlayer = this.getLayer(gI)), n || (n = i.ctx, n.save()), Bn(n, s, a, o === t - 1))
                }
                n && n.restore()
            }
        }, r.prototype.getHoverLayer = function() {
            return this.getLayer(gI)
        }, r.prototype.paintOne = function(e, t) {
            Hf(e, t)
        }, r.prototype._paintList = function(e, t, i, a) {
            if (this._redrawId === a) {
                i = i || !1, this._updateLayerStatus(e);
                var n = this._doPaintList(e, t, i),
                    o = n.finished,
                    s = n.needsRefreshHover;
                if (this._needsManuallyCompositing && this._compositeManually(), s && this._paintHoverList(e), o) this.eachLayer(function(u) {
                    u.afterBrush && u.afterBrush()
                });
                else {
                    var l = this;
                    zu(function() {
                        l._paintList(e, t, i, a)
                    })
                }
            }
        }, r.prototype._compositeManually = function() {
            var e = this.getLayer(_s).ctx,
                t = this._domRoot.width,
                i = this._domRoot.height;
            e.clearRect(0, 0, t, i), this.eachBuiltinLayer(function(a) {
                a.virtual && e.drawImage(a.dom, 0, 0, t, i)
            })
        }, r.prototype._doPaintList = function(e, t, i) {
            for (var a = this, n = [], o = this._opts.useDirtyRect, s = 0; s < this._zlevelList.length; s++) {
                var l = this._zlevelList[s],
                    u = this._layers[l];
                u.__builtin__ && u !== this._hoverlayer && (u.__dirty || i) && n.push(u)
            }
            for (var f = !0, p = !1, c = function(d) {
                    var m = n[d],
                        g = m.ctx,
                        y = o && m.createRepaintRects(e, t, h._width, h._height),
                        x = i ? m.__startIndex : m.__drawIndex,
                        _ = !i && m.incremental && Date.now,
                        S = _ && Date.now(),
                        b = m.zlevel === h._zlevelList[0] ? h._backgroundColor : null;
                    if (m.__startIndex === m.__endIndex) m.clear(!1, b, y);
                    else if (x === m.__startIndex) {
                        var T = e[x];
                        (!T.incremental || !T.notClear || i) && m.clear(!1, b, y)
                    }
                    x === -1 && (console.error("For some unknown reason. drawIndex is -1"), x = m.__startIndex);
                    var C, A = function(E) {
                        var P = {
                            inHover: !1,
                            allClipped: !1,
                            prevEl: null,
                            viewWidth: a._width,
                            viewHeight: a._height
                        };
                        for (C = x; C < m.__endIndex; C++) {
                            var R = e[C];
                            if (R.__inHover && (p = !0), a._doPaintEl(R, m, o, E, P, C === m.__endIndex - 1), _) {
                                var N = Date.now() - S;
                                if (N > 15) break
                            }
                        }
                        P.prevElClipPaths && g.restore()
                    };
                    if (y)
                        if (y.length === 0) C = m.__endIndex;
                        else
                            for (var D = h.dpr, M = 0; M < y.length; ++M) {
                                var I = y[M];
                                g.save(), g.beginPath(), g.rect(I.x * D, I.y * D, I.width * D, I.height * D), g.clip(), A(I), g.restore()
                            } else g.save(), A(), g.restore();
                    m.__drawIndex = C, m.__drawIndex < m.__endIndex && (f = !1)
                }, h = this, v = 0; v < n.length; v++) c(v);
            return Ct.wxa && w(this._layers, function(d) {
                d && d.ctx && d.ctx.draw && d.ctx.draw()
            }), {
                finished: f,
                needsRefreshHover: p
            }
        }, r.prototype._doPaintEl = function(e, t, i, a, n, o) {
            var s = t.ctx;
            if (i) {
                var l = e.getPaintRect();
                (!a || l && l.intersect(a)) && (Bn(s, e, n, o), e.setPrevPaintRect(l))
            } else Bn(s, e, n, o)
        }, r.prototype.getLayer = function(e, t) {
            this._singleCanvas && !this._needsManuallyCompositing && (e = _s);
            var i = this._layers[e];
            return i || (i = new Fv("zr_" + e, this, this.dpr), i.zlevel = e, i.__builtin__ = !0, this._layerConfig[e] ? nt(i, this._layerConfig[e], !0) : this._layerConfig[e - Gv] && nt(i, this._layerConfig[e - Gv], !0), t && (i.virtual = t), this.insertLayer(e, i), i.initContext()), i
        }, r.prototype.insertLayer = function(e, t) {
            var i = this._layers,
                a = this._zlevelList,
                n = a.length,
                o = this._domRoot,
                s = null,
                l = -1;
            if (!i[e] && tW(t)) {
                if (n > 0 && e > a[0]) {
                    for (l = 0; l < n - 1 && !(a[l] < e && a[l + 1] > e); l++);
                    s = i[a[l]]
                }
                if (a.splice(l + 1, 0, e), i[e] = t, !t.virtual)
                    if (s) {
                        var u = s.dom;
                        u.nextSibling ? o.insertBefore(t.dom, u.nextSibling) : o.appendChild(t.dom)
                    } else o.firstChild ? o.insertBefore(t.dom, o.firstChild) : o.appendChild(t.dom);
                t.painter || (t.painter = this)
            }
        }, r.prototype.eachLayer = function(e, t) {
            for (var i = this._zlevelList, a = 0; a < i.length; a++) {
                var n = i[a];
                e.call(t, this._layers[n], n)
            }
        }, r.prototype.eachBuiltinLayer = function(e, t) {
            for (var i = this._zlevelList, a = 0; a < i.length; a++) {
                var n = i[a],
                    o = this._layers[n];
                o.__builtin__ && e.call(t, o, n)
            }
        }, r.prototype.eachOtherLayer = function(e, t) {
            for (var i = this._zlevelList, a = 0; a < i.length; a++) {
                var n = i[a],
                    o = this._layers[n];
                o.__builtin__ || e.call(t, o, n)
            }
        }, r.prototype.getLayers = function() {
            return this._layers
        }, r.prototype._updateLayerStatus = function(e) {
            this.eachBuiltinLayer(function(p, c) {
                p.__dirty = p.__used = !1
            });

            function t(p) {
                n && (n.__endIndex !== p && (n.__dirty = !0), n.__endIndex = p)
            }
            if (this._singleCanvas)
                for (var i = 1; i < e.length; i++) {
                    var a = e[i];
                    if (a.zlevel !== e[i - 1].zlevel || a.incremental) {
                        this._needsManuallyCompositing = !0;
                        break
                    }
                }
            var n = null,
                o = 0,
                s, l;
            for (l = 0; l < e.length; l++) {
                var a = e[l],
                    u = a.zlevel,
                    f = void 0;
                s !== u && (s = u, o = 0), a.incremental ? (f = this.getLayer(u + $3, this._needsManuallyCompositing), f.incremental = !0, o = 1) : f = this.getLayer(u + (o > 0 ? Gv : 0), this._needsManuallyCompositing), f.__builtin__ || hn("ZLevel " + u + " has been used by unkown layer " + f.id), f !== n && (f.__used = !0, f.__startIndex !== l && (f.__dirty = !0), f.__startIndex = l, f.incremental ? f.__drawIndex = -1 : f.__drawIndex = l, t(l), n = f), a.__dirty & Pe && !a.__inHover && (f.__dirty = !0, f.incremental && f.__drawIndex < 0 && (f.__drawIndex = l))
            }
            t(l), this.eachBuiltinLayer(function(p, c) {
                !p.__used && p.getElementCount() > 0 && (p.__dirty = !0, p.__startIndex = p.__endIndex = p.__drawIndex = 0), p.__dirty && p.__drawIndex < 0 && (p.__drawIndex = p.__startIndex)
            })
        }, r.prototype.clear = function() {
            return this.eachBuiltinLayer(this._clearLayer), this
        }, r.prototype._clearLayer = function(e) {
            e.clear()
        }, r.prototype.setBackgroundColor = function(e) {
            this._backgroundColor = e, w(this._layers, function(t) {
                t.setUnpainted()
            })
        }, r.prototype.configLayer = function(e, t) {
            if (t) {
                var i = this._layerConfig;
                i[e] ? nt(i[e], t, !0) : i[e] = t;
                for (var a = 0; a < this._zlevelList.length; a++) {
                    var n = this._zlevelList[a];
                    if (n === e || n === e + Gv) {
                        var o = this._layers[n];
                        nt(o, i[e], !0)
                    }
                }
            }
        }, r.prototype.delLayer = function(e) {
            var t = this._layers,
                i = this._zlevelList,
                a = t[e];
            a && (a.dom.parentNode.removeChild(a.dom), delete t[e], i.splice(at(i, e), 1))
        }, r.prototype.resize = function(e, t) {
            if (this._domRoot.style) {
                var i = this._domRoot;
                i.style.display = "none";
                var a = this._opts,
                    n = this.root;
                if (e != null && (a.width = e), t != null && (a.height = t), e = Vn(n, 0, a), t = Vn(n, 1, a), i.style.display = "", this._width !== e || t !== this._height) {
                    i.style.width = e + "px", i.style.height = t + "px";
                    for (var o in this._layers) this._layers.hasOwnProperty(o) && this._layers[o].resize(e, t);
                    this.refresh(!0)
                }
                this._width = e, this._height = t
            } else {
                if (e == null || t == null) return;
                this._width = e, this._height = t, this.getLayer(_s).resize(e, t)
            }
            return this
        }, r.prototype.clearLayer = function(e) {
            var t = this._layers[e];
            t && t.clear()
        }, r.prototype.dispose = function() {
            this.root.innerHTML = "", this.root = this.storage = this._domRoot = this._layers = null
        }, r.prototype.getRenderedCanvas = function(e) {
            if (e = e || {}, this._singleCanvas && !this._compositeManually) return this._layers[_s].dom;
            var t = new Fv("image", this, e.pixelRatio || this.dpr);
            t.initContext(), t.clear(!1, e.backgroundColor || this._backgroundColor);
            var i = t.ctx;
            if (e.pixelRatio <= this.dpr) {
                this.refresh();
                var a = t.dom.width,
                    n = t.dom.height;
                this.eachLayer(function(p) {
                    p.__builtin__ ? i.drawImage(p.dom, 0, 0, a, n) : p.renderToCanvas && (i.save(), p.renderToCanvas(i), i.restore())
                })
            } else
                for (var o = {
                        inHover: !1,
                        viewWidth: this._width,
                        viewHeight: this._height
                    }, s = this.storage.getDisplayList(!0), l = 0, u = s.length; l < u; l++) {
                    var f = s[l];
                    Bn(i, f, o, l === u - 1)
                }
            return t.dom
        }, r.prototype.getWidth = function() {
            return this._width
        }, r.prototype.getHeight = function() {
            return this._height
        }, r
    }(),
    yI = rW;

function Lx(r) {
    r.registerPainter("canvas", yI)
}
var iW = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t.hasSymbolVisual = !0, t
        }
        return e.prototype.getInitialData = function(t) {
            if (0) var i;
            return ze(null, this, {
                useEncodeDefaulter: !0
            })
        }, e.prototype.getLegendIcon = function(t) {
            var i = new J,
                a = Vt("line", 0, t.itemHeight / 2, t.itemWidth, 0, t.lineStyle.stroke, !1);
            i.add(a), a.setStyle(t.lineStyle);
            var n = this.getData().getVisual("symbol"),
                o = this.getData().getVisual("symbolRotate"),
                s = n === "none" ? "circle" : n,
                l = t.itemHeight * .8,
                u = Vt(s, (t.itemWidth - l) / 2, (t.itemHeight - l) / 2, l, l, t.itemStyle.fill);
            i.add(u), u.setStyle(t.itemStyle);
            var f = t.iconRotate === "inherit" ? o : t.iconRotate || 0;
            return u.rotation = f * Math.PI / 180, u.setOrigin([t.itemWidth / 2, t.itemHeight / 2]), s.indexOf("empty") > -1 && (u.style.stroke = u.style.fill, u.style.fill = "#fff", u.style.lineWidth = 2), i
        }, e.type = "series.line", e.dependencies = ["grid", "polar"], e.defaultOption = {
            z: 3,
            coordinateSystem: "cartesian2d",
            legendHoverLink: !0,
            clip: !0,
            label: {
                position: "top"
            },
            endLabel: {
                show: !1,
                valueAnimation: !0,
                distance: 8
            },
            lineStyle: {
                width: 2,
                type: "solid"
            },
            emphasis: {
                scale: !0
            },
            step: !1,
            smooth: !1,
            smoothMonotone: null,
            symbol: "emptyCircle",
            symbolSize: 4,
            symbolRotate: null,
            showSymbol: !0,
            showAllSymbol: "auto",
            connectNulls: !1,
            sampling: "none",
            animationEasing: "linear",
            progressive: 0,
            hoverLayerThreshold: 1 / 0,
            universalTransition: {
                divideShape: "clone"
            },
            triggerLineEvent: !1
        }, e
    }(Lt),
    xI = iW;

function ta(r, e) {
    var t = r.mapDimensionsAll("defaultedLabel"),
        i = t.length;
    if (i === 1) {
        var a = en(r, e, t[0]);
        return a != null ? a + "" : null
    } else if (i) {
        for (var n = [], o = 0; o < t.length; o++) n.push(en(r, e, t[o]));
        return n.join(" ")
    }
}

function Hv(r, e) {
    var t = r.mapDimensionsAll("defaultedLabel");
    if (!z(e)) return e + "";
    for (var i = [], a = 0; a < t.length; a++) {
        var n = r.getDimensionIndex(t[a]);
        n >= 0 && i.push(e[n])
    }
    return i.join(" ")
}
var aW = function(r) {
    L(e, r);

    function e(t, i, a, n) {
        var o = r.call(this) || this;
        return o.updateData(t, i, a, n), o
    }
    return e.prototype._createSymbol = function(t, i, a, n, o) {
        this.removeAll();
        var s = Vt(t, -1, -1, 2, 2, null, o);
        s.attr({
            z2: 100,
            culling: !0,
            scaleX: n[0] / 2,
            scaleY: n[1] / 2
        }), s.drift = nW, this._symbolType = t, this.add(s)
    }, e.prototype.stopSymbolAnimation = function(t) {
        this.childAt(0).stopAnimation(null, t)
    }, e.prototype.getSymbolType = function() {
        return this._symbolType
    }, e.prototype.getSymbolPath = function() {
        return this.childAt(0)
    }, e.prototype.highlight = function() {
        rr(this.childAt(0))
    }, e.prototype.downplay = function() {
        ir(this.childAt(0))
    }, e.prototype.setZ = function(t, i) {
        var a = this.childAt(0);
        a.zlevel = t, a.z = i
    }, e.prototype.setDraggable = function(t, i) {
        var a = this.childAt(0);
        a.draggable = t, a.cursor = !i && t ? "move" : a.cursor
    }, e.prototype.updateData = function(t, i, a, n) {
        this.silent = !1;
        var o = t.getItemVisual(i, "symbol") || "circle",
            s = t.hostModel,
            l = e.getSymbolSize(t, i),
            u = o !== this._symbolType,
            f = n && n.disableAnimation;
        if (u) {
            var p = t.getItemVisual(i, "symbolKeepAspect");
            this._createSymbol(o, t, i, l, p)
        } else {
            var c = this.childAt(0);
            c.silent = !1;
            var h = {
                scaleX: l[0] / 2,
                scaleY: l[1] / 2
            };
            f ? c.attr(h) : xt(c, h, s, i), Ae(c)
        }
        if (this._updateCommon(t, i, l, a, n), u) {
            var c = this.childAt(0);
            if (!f) {
                var h = {
                    scaleX: this._sizeX,
                    scaleY: this._sizeY,
                    style: {
                        opacity: c.style.opacity
                    }
                };
                c.scaleX = c.scaleY = 0, c.style.opacity = 0, Ot(c, h, s, i)
            }
        }
        f && this.childAt(0).stopAnimation("leave")
    }, e.prototype._updateCommon = function(t, i, a, n, o) {
        var s = this.childAt(0),
            l = t.hostModel,
            u, f, p, c, h, v, d, m, g;
        if (n && (u = n.emphasisItemStyle, f = n.blurItemStyle, p = n.selectItemStyle, c = n.focus, h = n.blurScope, d = n.labelStatesModels, m = n.hoverScale, g = n.cursorStyle, v = n.emphasisDisabled), !n || t.hasItemOption) {
            var y = n && n.itemModel ? n.itemModel : t.getItemModel(i),
                x = y.getModel("emphasis");
            u = x.getModel("itemStyle").getItemStyle(), p = y.getModel(["select", "itemStyle"]).getItemStyle(), f = y.getModel(["blur", "itemStyle"]).getItemStyle(), c = x.get("focus"), h = x.get("blurScope"), v = x.get("disabled"), d = Ft(y), m = x.getShallow("scale"), g = y.getShallow("cursor")
        }
        var _ = t.getItemVisual(i, "symbolRotate");
        s.attr("rotation", (_ || 0) * Math.PI / 180 || 0);
        var S = oi(t.getItemVisual(i, "symbolOffset"), a);
        S && (s.x = S[0], s.y = S[1]), g && s.attr("cursor", g);
        var b = t.getItemVisual(i, "style"),
            T = b.fill;
        if (s instanceof Zt) {
            var C = s.style;
            s.useStyle(O({
                image: C.image,
                x: C.x,
                y: C.y,
                width: C.width,
                height: C.height
            }, b))
        } else s.__isEmptyBrush ? s.useStyle(O({}, b)) : s.useStyle(b), s.style.decal = null, s.setColor(T, o && o.symbolInnerColor), s.style.strokeNoScale = !0;
        var A = t.getItemVisual(i, "liftZ"),
            D = this._z2;
        A != null ? D == null && (this._z2 = s.z2, s.z2 += A) : D != null && (s.z2 = D, this._z2 = null);
        var M = o && o.useNameLabel;
        Xt(s, d, {
            labelFetcher: l,
            labelDataIndex: i,
            defaultText: I,
            inheritColor: T,
            defaultOpacity: b.opacity
        });

        function I(R) {
            return M ? t.getName(R) : ta(t, R)
        }
        this._sizeX = a[0] / 2, this._sizeY = a[1] / 2;
        var E = s.ensureState("emphasis");
        E.style = u, s.ensureState("select").style = p, s.ensureState("blur").style = f;
        var P = m == null || m === !0 ? Math.max(1.1, 3 / this._sizeY) : isFinite(m) && m > 0 ? +m : 1;
        E.scaleX = this._sizeX * P, E.scaleY = this._sizeY * P, this.setSymbolScale(1), Nt(this, c, h, v)
    }, e.prototype.setSymbolScale = function(t) {
        this.scaleX = this.scaleY = t
    }, e.prototype.fadeOut = function(t, i, a) {
        var n = this.childAt(0),
            o = et(this).dataIndex,
            s = a && a.animation;
        if (this.silent = n.silent = !0, a && a.fadeLabel) {
            var l = n.getTextContent();
            l && xi(l, {
                style: {
                    opacity: 0
                }
            }, i, {
                dataIndex: o,
                removeOpt: s,
                cb: function() {
                    n.removeTextContent()
                }
            })
        } else n.removeTextContent();
        xi(n, {
            style: {
                opacity: 0
            },
            scaleX: 0,
            scaleY: 0
        }, i, {
            dataIndex: o,
            cb: t,
            removeOpt: s
        })
    }, e.getSymbolSize = function(t, i) {
        return Ki(t.getItemVisual(i, "symbolSize"))
    }, e
}(J);

function nW(r, e) {
    this.parent.drift(r, e)
}
var nn = aW;

function Ix(r, e, t, i) {
    return e && !isNaN(e[0]) && !isNaN(e[1]) && !(i.isIgnore && i.isIgnore(t)) && !(i.clipShape && !i.clipShape.contain(e[0], e[1])) && r.getItemVisual(t, "symbol") !== "none"
}

function _I(r) {
    return r != null && !j(r) && (r = {
        isIgnore: r
    }), r || {}
}

function SI(r) {
    var e = r.hostModel,
        t = e.getModel("emphasis");
    return {
        emphasisItemStyle: t.getModel("itemStyle").getItemStyle(),
        blurItemStyle: e.getModel(["blur", "itemStyle"]).getItemStyle(),
        selectItemStyle: e.getModel(["select", "itemStyle"]).getItemStyle(),
        focus: t.get("focus"),
        blurScope: t.get("blurScope"),
        emphasisDisabled: t.get("disabled"),
        hoverScale: t.get("scale"),
        labelStatesModels: Ft(e),
        cursorStyle: e.get("cursor")
    }
}
var oW = function() {
        function r(e) {
            this.group = new J, this._SymbolCtor = e || nn
        }
        return r.prototype.updateData = function(e, t) {
            this._progressiveEls = null, t = _I(t);
            var i = this.group,
                a = e.hostModel,
                n = this._data,
                o = this._SymbolCtor,
                s = t.disableAnimation,
                l = SI(e),
                u = {
                    disableAnimation: s
                },
                f = t.getSymbolPoint || function(p) {
                    return e.getItemLayout(p)
                };
            n || i.removeAll(), e.diff(n).add(function(p) {
                var c = f(p);
                if (Ix(e, c, p, t)) {
                    var h = new o(e, p, l, u);
                    h.setPosition(c), e.setItemGraphicEl(p, h), i.add(h)
                }
            }).update(function(p, c) {
                var h = n.getItemGraphicEl(c),
                    v = f(p);
                if (!Ix(e, v, p, t)) {
                    i.remove(h);
                    return
                }
                var d = e.getItemVisual(p, "symbol") || "circle",
                    m = h && h.getSymbolType && h.getSymbolType();
                if (!h || m && m !== d) i.remove(h), h = new o(e, p, l, u), h.setPosition(v);
                else {
                    h.updateData(e, p, l, u);
                    var g = {
                        x: v[0],
                        y: v[1]
                    };
                    s ? h.attr(g) : xt(h, g, a)
                }
                i.add(h), e.setItemGraphicEl(p, h)
            }).remove(function(p) {
                var c = n.getItemGraphicEl(p);
                c && c.fadeOut(function() {
                    i.remove(c)
                }, a)
            }).execute(), this._getSymbolPoint = f, this._data = e
        }, r.prototype.updateLayout = function() {
            var e = this,
                t = this._data;
            t && t.eachItemGraphicEl(function(i, a) {
                var n = e._getSymbolPoint(a);
                i.setPosition(n), i.markRedraw()
            })
        }, r.prototype.incrementalPrepareUpdate = function(e) {
            this._seriesScope = SI(e), this._data = null, this.group.removeAll()
        }, r.prototype.incrementalUpdate = function(e, t, i) {
            this._progressiveEls = [], i = _I(i);

            function a(l) {
                l.isGroup || (l.incremental = !0, l.ensureState("emphasis").hoverLayer = !0)
            }
            for (var n = e.start; n < e.end; n++) {
                var o = t.getItemLayout(n);
                if (Ix(t, o, n, i)) {
                    var s = new this._SymbolCtor(t, n, this._seriesScope);
                    s.traverse(a), s.setPosition(o), this.group.add(s), t.setItemGraphicEl(n, s), this._progressiveEls.push(s)
                }
            }
        }, r.prototype.eachRendered = function(e) {
            dr(this._progressiveEls || this.group, e)
        }, r.prototype.remove = function(e) {
            var t = this.group,
                i = this._data;
            i && e ? i.eachItemGraphicEl(function(a) {
                a.fadeOut(function() {
                    t.remove(a)
                }, i.hostModel)
            }) : t.removeAll()
        }, r
    }(),
    wa = oW;

function Wv(r, e, t) {
    var i = r.getBaseAxis(),
        a = r.getOtherAxis(i),
        n = sW(a, t),
        o = i.dim,
        s = a.dim,
        l = e.mapDimension(s),
        u = e.mapDimension(o),
        f = s === "x" || s === "radius" ? 1 : 0,
        p = k(r.dimensions, function(v) {
            return e.mapDimension(v)
        }),
        c = !1,
        h = e.getCalculationInfo("stackResultDimension");
    return gr(e, p[0]) && (c = !0, p[0] = h), gr(e, p[1]) && (c = !0, p[1] = h), {
        dataDimsForPoint: p,
        valueStart: n,
        valueAxisDim: s,
        baseAxisDim: o,
        stacked: !!c,
        valueDim: l,
        baseDim: u,
        baseDataOffset: f,
        stackedOverDimension: e.getCalculationInfo("stackedOverDimension")
    }
}

function sW(r, e) {
    var t = 0,
        i = r.scale.getExtent();
    return e === "start" ? t = i[0] : e === "end" ? t = i[1] : vt(e) && !isNaN(e) ? t = e : i[0] > 0 ? t = i[0] : i[1] < 0 && (t = i[1]), t
}

function Yv(r, e, t, i) {
    var a = NaN;
    r.stacked && (a = t.get(t.getCalculationInfo("stackedOverDimension"), i)), isNaN(a) && (a = r.valueStart);
    var n = r.baseDataOffset,
        o = [];
    return o[n] = t.get(r.baseDim, i), o[1 - n] = a, e.dataToPoint(o)
}

function lW(r, e) {
    var t = [];
    return e.diff(r).add(function(i) {
        t.push({
            cmd: "+",
            idx: i
        })
    }).update(function(i, a) {
        t.push({
            cmd: "=",
            idx: a,
            idx1: i
        })
    }).remove(function(i) {
        t.push({
            cmd: "-",
            idx: i
        })
    }).execute(), t
}

function Ex(r, e, t, i, a, n, o, s) {
    for (var l = lW(r, e), u = [], f = [], p = [], c = [], h = [], v = [], d = [], m = Wv(a, e, o), g = r.getLayout("points") || [], y = e.getLayout("points") || [], x = 0; x < l.length; x++) {
        var _ = l[x],
            S = !0,
            b = void 0,
            T = void 0;
        switch (_.cmd) {
            case "=":
                b = _.idx * 2, T = _.idx1 * 2;
                var C = g[b],
                    A = g[b + 1],
                    D = y[T],
                    M = y[T + 1];
                (isNaN(C) || isNaN(A)) && (C = D, A = M), u.push(C, A), f.push(D, M), p.push(t[b], t[b + 1]), c.push(i[T], i[T + 1]), d.push(e.getRawIndex(_.idx1));
                break;
            case "+":
                var I = _.idx,
                    E = m.dataDimsForPoint,
                    P = a.dataToPoint([e.get(E[0], I), e.get(E[1], I)]);
                T = I * 2, u.push(P[0], P[1]), f.push(y[T], y[T + 1]);
                var R = Yv(m, a, e, I);
                p.push(R[0], R[1]), c.push(i[T], i[T + 1]), d.push(e.getRawIndex(I));
                break;
            case "-":
                S = !1
        }
        S && (h.push(_), v.push(v.length))
    }
    v.sort(function(bt, qt) {
        return d[bt] - d[qt]
    });
    for (var N = u.length, V = yr(N), U = yr(N), B = yr(N), Z = yr(N), K = [], x = 0; x < v.length; x++) {
        var tt = v[x],
            pt = x * 2,
            ct = tt * 2;
        V[pt] = u[ct], V[pt + 1] = u[ct + 1], U[pt] = f[ct], U[pt + 1] = f[ct + 1], B[pt] = p[ct], B[pt + 1] = p[ct + 1], Z[pt] = c[ct], Z[pt + 1] = c[ct + 1], K[x] = h[tt]
    }
    return {
        current: V,
        next: U,
        stackedOnCurrent: B,
        stackedOnNext: Z,
        status: K
    }
}
var qn = Math.min,
    Kn = Math.max;

function Ss(r, e) {
    return isNaN(r) || isNaN(e)
}

function Px(r, e, t, i, a, n, o, s, l) {
    for (var u, f, p, c, h, v, d = t, m = 0; m < i; m++) {
        var g = e[d * 2],
            y = e[d * 2 + 1];
        if (d >= a || d < 0) break;
        if (Ss(g, y)) {
            if (l) {
                d += n;
                continue
            }
            break
        }
        if (d === t) r[n > 0 ? "moveTo" : "lineTo"](g, y), p = g, c = y;
        else {
            var x = g - u,
                _ = y - f;
            if (x * x + _ * _ < .5) {
                d += n;
                continue
            }
            if (o > 0) {
                for (var S = d + n, b = e[S * 2], T = e[S * 2 + 1]; b === g && T === y && m < i;) m++, S += n, d += n, b = e[S * 2], T = e[S * 2 + 1], g = e[d * 2], y = e[d * 2 + 1], x = g - u, _ = y - f;
                var C = m + 1;
                if (l)
                    for (; Ss(b, T) && C < i;) C++, S += n, b = e[S * 2], T = e[S * 2 + 1];
                var A = .5,
                    D = 0,
                    M = 0,
                    I = void 0,
                    E = void 0;
                if (C >= i || Ss(b, T)) h = g, v = y;
                else {
                    D = b - u, M = T - f;
                    var P = g - u,
                        R = b - g,
                        N = y - f,
                        V = T - y,
                        U = void 0,
                        B = void 0;
                    if (s === "x") {
                        U = Math.abs(P), B = Math.abs(R);
                        var Z = D > 0 ? 1 : -1;
                        h = g - Z * U * o, v = y, I = g + Z * B * o, E = y
                    } else if (s === "y") {
                        U = Math.abs(N), B = Math.abs(V);
                        var K = M > 0 ? 1 : -1;
                        h = g, v = y - K * U * o, I = g, E = y + K * B * o
                    } else U = Math.sqrt(P * P + N * N), B = Math.sqrt(R * R + V * V), A = B / (B + U), h = g - D * o * (1 - A), v = y - M * o * (1 - A), I = g + D * o * A, E = y + M * o * A, I = qn(I, Kn(b, g)), E = qn(E, Kn(T, y)), I = Kn(I, qn(b, g)), E = Kn(E, qn(T, y)), D = I - g, M = E - y, h = g - D * U / B, v = y - M * U / B, h = qn(h, Kn(u, g)), v = qn(v, Kn(f, y)), h = Kn(h, qn(u, g)), v = Kn(v, qn(f, y)), D = g - h, M = y - v, I = g + D * B / U, E = y + M * B / U
                }
                r.bezierCurveTo(p, c, h, v, g, y), p = I, c = E
            } else r.lineTo(g, y)
        }
        u = g, f = y, d += n
    }
    return m
}
var bI = function() {
        function r() {
            this.smooth = 0, this.smoothConstraint = !0
        }
        return r
    }(),
    wI = function(r) {
        L(e, r);

        function e(t) {
            var i = r.call(this, t) || this;
            return i.type = "ec-polyline", i
        }
        return e.prototype.getDefaultStyle = function() {
            return {
                stroke: "#000",
                fill: null
            }
        }, e.prototype.getDefaultShape = function() {
            return new bI
        }, e.prototype.buildPath = function(t, i) {
            var a = i.points,
                n = 0,
                o = a.length / 2;
            if (i.connectNulls) {
                for (; o > 0 && Ss(a[o * 2 - 2], a[o * 2 - 1]); o--);
                for (; n < o && Ss(a[n * 2], a[n * 2 + 1]); n++);
            }
            for (; n < o;) n += Px(t, a, n, o, o, 1, i.smooth, i.smoothMonotone, i.connectNulls) + 1
        }, e.prototype.getPointOn = function(t, i) {
            this.path || (this.createPathProxy(), this.buildPath(this.path, this.shape));
            for (var a = this.path, n = a.data, o = Ve.CMD, s, l, u = i === "x", f = [], p = 0; p < n.length;) {
                var c = n[p++],
                    h = void 0,
                    v = void 0,
                    d = void 0,
                    m = void 0,
                    g = void 0,
                    y = void 0,
                    x = void 0;
                switch (c) {
                    case o.M:
                        s = n[p++], l = n[p++];
                        break;
                    case o.L:
                        if (h = n[p++], v = n[p++], x = u ? (t - s) / (h - s) : (t - l) / (v - l), x <= 1 && x >= 0) {
                            var _ = u ? (v - l) * x + l : (h - s) * x + s;
                            return u ? [t, _] : [_, t]
                        }
                        s = h, l = v;
                        break;
                    case o.C:
                        h = n[p++], v = n[p++], d = n[p++], m = n[p++], g = n[p++], y = n[p++];
                        var S = u ? Do(s, h, d, g, t, f) : Do(l, v, m, y, t, f);
                        if (S > 0)
                            for (var b = 0; b < S; b++) {
                                var T = f[b];
                                if (T <= 1 && T >= 0) {
                                    var _ = u ? ce(l, v, m, y, T) : ce(s, h, d, g, T);
                                    return u ? [t, _] : [_, t]
                                }
                            }
                        s = g, l = y;
                        break
                }
            }
        }, e
    }(st);
var uW = function(r) {
        L(e, r);

        function e() {
            return r !== null && r.apply(this, arguments) || this
        }
        return e
    }(bI),
    Zv = function(r) {
        L(e, r);

        function e(t) {
            var i = r.call(this, t) || this;
            return i.type = "ec-polygon", i
        }
        return e.prototype.getDefaultShape = function() {
            return new uW
        }, e.prototype.buildPath = function(t, i) {
            var a = i.points,
                n = i.stackedOnPoints,
                o = 0,
                s = a.length / 2,
                l = i.smoothMonotone;
            if (i.connectNulls) {
                for (; s > 0 && Ss(a[s * 2 - 2], a[s * 2 - 1]); s--);
                for (; o < s && Ss(a[o * 2], a[o * 2 + 1]); o++);
            }
            for (; o < s;) {
                var u = Px(t, a, o, s, s, 1, i.smooth, l, i.connectNulls);
                Px(t, n, o + u - 1, u, s, -1, i.stackedOnSmooth, l, i.connectNulls), o += u + 1, t.closePath()
            }
        }, e
    }(st);

function Rx(r, e, t, i, a) {
    var n = r.getArea(),
        o = n.x,
        s = n.y,
        l = n.width,
        u = n.height,
        f = t.get(["lineStyle", "width"]) || 0;
    o -= f / 2, s -= f / 2, l += f, u += f, l = Math.ceil(l), o !== Math.floor(o) && (o = Math.floor(o), l++);
    var p = new ht({
        shape: {
            x: o,
            y: s,
            width: l,
            height: u
        }
    });
    if (e) {
        var c = r.getBaseAxis(),
            h = c.isHorizontal(),
            v = c.inverse;
        h ? (v && (p.shape.x += l), p.shape.width = 0) : (v || (p.shape.y += u), p.shape.height = 0);
        var d = X(a) ? function(m) {
            a(m, p)
        } : null;
        Ot(p, {
            shape: {
                width: l,
                height: u,
                x: o,
                y: s
            }
        }, t, null, i, d)
    }
    return p
}

function Nx(r, e, t) {
    var i = r.getArea(),
        a = Gt(i.r0, 1),
        n = Gt(i.r, 1),
        o = new pe({
            shape: {
                cx: Gt(r.cx, 1),
                cy: Gt(r.cy, 1),
                r0: a,
                r: n,
                startAngle: i.startAngle,
                endAngle: i.endAngle,
                clockwise: i.clockwise
            }
        });
    if (e) {
        var s = r.getBaseAxis().dim === "angle";
        s ? o.shape.endAngle = i.startAngle : o.shape.r = a, Ot(o, {
            shape: {
                endAngle: i.endAngle,
                r: n
            }
        }, t)
    }
    return o
}

function Ta(r, e, t, i, a) {
    if (r) {
        if (r.type === "polar") return Nx(r, e, t);
        if (r.type === "cartesian2d") return Rx(r, e, t, i, a)
    } else return null;
    return null
}

function Ei(r, e) {
    return r.type === e
}

function TI(r, e) {
    if (r.length === e.length) {
        for (var t = 0; t < r.length; t++)
            if (r[t] !== e[t]) return;
        return !0
    }
}

function CI(r) {
    for (var e = 1 / 0, t = 1 / 0, i = -1 / 0, a = -1 / 0, n = 0; n < r.length;) {
        var o = r[n++],
            s = r[n++];
        isNaN(o) || (e = Math.min(o, e), i = Math.max(o, i)), isNaN(s) || (t = Math.min(s, t), a = Math.max(s, a))
    }
    return [
        [e, t],
        [i, a]
    ]
}

function AI(r, e) {
    var t = CI(r),
        i = t[0],
        a = t[1],
        n = CI(e),
        o = n[0],
        s = n[1];
    return Math.max(Math.abs(i[0] - o[0]), Math.abs(i[1] - o[1]), Math.abs(a[0] - s[0]), Math.abs(a[1] - s[1]))
}

function DI(r) {
    return vt(r) ? r : r ? .5 : 0
}

function fW(r, e, t) {
    if (!t.valueDim) return [];
    for (var i = e.count(), a = yr(i * 2), n = 0; n < i; n++) {
        var o = Yv(t, r, e, n);
        a[n * 2] = o[0], a[n * 2 + 1] = o[1]
    }
    return a
}

function jn(r, e, t, i, a) {
    var n = t.getBaseAxis(),
        o = n.dim === "x" || n.dim === "radius" ? 0 : 1,
        s = [],
        l = 0,
        u = [],
        f = [],
        p = [],
        c = [];
    if (a) {
        for (l = 0; l < r.length; l += 2) {
            var h = e || r;
            !isNaN(h[l]) && !isNaN(h[l + 1]) && c.push(r[l], r[l + 1])
        }
        r = c
    }
    for (l = 0; l < r.length - 2; l += 2) switch (p[0] = r[l + 2], p[1] = r[l + 3], f[0] = r[l], f[1] = r[l + 1], s.push(f[0], f[1]), i) {
        case "end":
            u[o] = p[o], u[1 - o] = f[1 - o], s.push(u[0], u[1]);
            break;
        case "middle":
            var v = (f[o] + p[o]) / 2,
                d = [];
            u[o] = d[o] = v, u[1 - o] = f[1 - o], d[1 - o] = p[1 - o], s.push(u[0], u[1]), s.push(d[0], d[1]);
            break;
        default:
            u[o] = f[o], u[1 - o] = p[1 - o], s.push(u[0], u[1])
    }
    return s.push(r[l++], r[l++]), s
}

function pW(r, e) {
    var t = [],
        i = r.length,
        a, n;

    function o(f, p, c) {
        var h = f.coord,
            v = (c - h) / (p.coord - h),
            d = gc(v, [f.color, p.color]);
        return {
            coord: c,
            color: d
        }
    }
    for (var s = 0; s < i; s++) {
        var l = r[s],
            u = l.coord;
        if (u < 0) a = l;
        else if (u > e) {
            n ? t.push(o(n, l, e)) : a && t.push(o(a, l, 0), o(a, l, e));
            break
        } else a && (t.push(o(a, l, 0)), a = null), t.push(l), n = l
    }
    return t
}

function cW(r, e, t) {
    var i = r.getVisual("visualMeta");
    if (!(!i || !i.length || !r.count()) && e.type === "cartesian2d") {
        for (var a, n, o = i.length - 1; o >= 0; o--) {
            var s = r.getDimensionInfo(i[o].dimension);
            if (a = s && s.coordDim, a === "x" || a === "y") {
                n = i[o];
                break
            }
        }
        if (n) {
            var l = e.getAxis(a),
                u = k(n.stops, function(x) {
                    return {
                        coord: l.toGlobalCoord(l.dataToCoord(x.value)),
                        color: x.color
                    }
                }),
                f = u.length,
                p = n.outerColors.slice();
            f && u[0].coord > u[f - 1].coord && (u.reverse(), p.reverse());
            var c = pW(u, a === "x" ? t.getWidth() : t.getHeight()),
                h = c.length;
            if (!h && f) return u[0].coord < 0 ? p[1] ? p[1] : u[f - 1].color : p[0] ? p[0] : u[0].color;
            var v = 10,
                d = c[0].coord - v,
                m = c[h - 1].coord + v,
                g = m - d;
            if (g < .001) return "transparent";
            w(c, function(x) {
                x.offset = (x.coord - d) / g
            }), c.push({
                offset: h ? c[h - 1].offset : .5,
                color: p[1] || "transparent"
            }), c.unshift({
                offset: h ? c[0].offset : .5,
                color: p[0] || "transparent"
            });
            var y = new yi(0, 0, 0, 0, c, !0);
            return y[a] = d, y[a + "2"] = m, y
        }
    }
}

function hW(r, e, t) {
    var i = r.get("showAllSymbol"),
        a = i === "auto";
    if (!(i && !a)) {
        var n = t.getAxesByScale("ordinal")[0];
        if (n && !(a && vW(n, e))) {
            var o = e.mapDimension(n.dim),
                s = {};
            return w(n.getViewLabels(), function(l) {
                    var u = n.scale.getRawOrdinalNumber(l.tickValue);
                    s[u] = 1
                }),
                function(l) {
                    return !s.hasOwnProperty(e.get(o, l))
                }
        }
    }
}

function vW(r, e) {
    var t = r.getExtent(),
        i = Math.abs(t[1] - t[0]) / r.scale.count();
    isNaN(i) && (i = 0);
    for (var a = e.count(), n = Math.max(1, Math.round(a / 5)), o = 0; o < a; o += n)
        if (nn.getSymbolSize(e, o)[r.isHorizontal() ? 1 : 0] * 1.5 > i) return !1;
    return !0
}

function dW(r, e) {
    return isNaN(r) || isNaN(e)
}

function mW(r) {
    for (var e = r.length / 2; e > 0 && dW(r[e * 2 - 2], r[e * 2 - 1]); e--);
    return e - 1
}

function MI(r, e) {
    return [r[e * 2], r[e * 2 + 1]]
}

function gW(r, e, t) {
    for (var i = r.length / 2, a = t === "x" ? 0 : 1, n, o, s = 0, l = -1, u = 0; u < i; u++)
        if (o = r[u * 2 + a], !(isNaN(o) || isNaN(r[u * 2 + 1 - a]))) {
            if (u === 0) {
                n = o;
                continue
            }
            if (n <= e && o >= e || n >= e && o <= e) {
                l = u;
                break
            }
            s = u, n = o
        }
    return {
        range: [s, l],
        t: (e - n) / (o - n)
    }
}

function LI(r) {
    if (r.get(["endLabel", "show"])) return !0;
    for (var e = 0; e < Oe.length; e++)
        if (r.get([Oe[e], "endLabel", "show"])) return !0;
    return !1
}

function Ox(r, e, t, i) {
    if (Ei(e, "cartesian2d")) {
        var a = i.getModel("endLabel"),
            n = a.get("valueAnimation"),
            o = i.getData(),
            s = {
                lastFrameIndex: 0
            },
            l = LI(i) ? function(h, v) {
                r._endLabelOnDuring(h, v, o, s, n, a, e)
            } : null,
            u = e.getBaseAxis().isHorizontal(),
            f = Rx(e, t, i, function() {
                var h = r._endLabel;
                h && t && s.originalX != null && h.attr({
                    x: s.originalX,
                    y: s.originalY
                })
            }, l);
        if (!i.get("clip", !0)) {
            var p = f.shape,
                c = Math.max(p.width, p.height);
            u ? (p.y -= c, p.height += c * 2) : (p.x -= c, p.width += c * 2)
        }
        return l && l(1, f), f
    } else return Nx(e, t, i)
}

function yW(r, e) {
    var t = e.getBaseAxis(),
        i = t.isHorizontal(),
        a = t.inverse,
        n = i ? a ? "right" : "left" : "center",
        o = i ? "middle" : a ? "top" : "bottom";
    return {
        normal: {
            align: r.get("align") || n,
            verticalAlign: r.get("verticalAlign") || o
        }
    }
}
var xW = function(r) {
        L(e, r);

        function e() {
            return r !== null && r.apply(this, arguments) || this
        }
        return e.prototype.init = function() {
            var t = new J,
                i = new wa;
            this.group.add(i.group), this._symbolDraw = i, this._lineGroup = t, this._changePolyState = H(this._changePolyState, this)
        }, e.prototype.render = function(t, i, a) {
            var n = t.coordinateSystem,
                o = this.group,
                s = t.getData(),
                l = t.getModel("lineStyle"),
                u = t.getModel("areaStyle"),
                f = s.getLayout("points") || [],
                p = n.type === "polar",
                c = this._coordSys,
                h = this._symbolDraw,
                v = this._polyline,
                d = this._polygon,
                m = this._lineGroup,
                g = !i.ssr && t.get("animation"),
                y = !u.isEmpty(),
                x = u.get("origin"),
                _ = Wv(n, s, x),
                S = y && fW(n, s, _),
                b = t.get("showSymbol"),
                T = t.get("connectNulls"),
                C = b && !p && hW(t, s, n),
                A = this._data;
            A && A.eachItemGraphicEl(function(bt, qt) {
                bt.__temp && (o.remove(bt), A.setItemGraphicEl(qt, null))
            }), b || h.remove(), o.add(m);
            var D = p ? !1 : t.get("step"),
                M;
            n && n.getArea && t.get("clip", !0) && (M = n.getArea(), M.width != null ? (M.x -= .1, M.y -= .1, M.width += .2, M.height += .2) : M.r0 && (M.r0 -= .5, M.r += .5)), this._clipShapeForSymbol = M;
            var I = cW(s, n, a) || s.getVisual("style")[s.getVisual("drawType")];
            if (!(v && c.type === n.type && D === this._step)) b && h.updateData(s, {
                isIgnore: C,
                clipShape: M,
                disableAnimation: !0,
                getSymbolPoint: function(bt) {
                    return [f[bt * 2], f[bt * 2 + 1]]
                }
            }), g && this._initSymbolLabelAnimation(s, n, M), D && (S && (S = jn(S, f, n, D, T)), f = jn(f, null, n, D, T)), v = this._newPolyline(f), y ? d = this._newPolygon(f, S) : d && (m.remove(d), d = this._polygon = null), p || this._initOrUpdateEndLabel(t, n, Yi(I)), m.setClipPath(Ox(this, n, !0, t));
            else {
                y && !d ? d = this._newPolygon(f, S) : d && !y && (m.remove(d), d = this._polygon = null), p || this._initOrUpdateEndLabel(t, n, Yi(I));
                var E = m.getClipPath();
                if (E) {
                    var P = Ox(this, n, !1, t);
                    Ot(E, {
                        shape: P.shape
                    }, t)
                } else m.setClipPath(Ox(this, n, !0, t));
                b && h.updateData(s, {
                    isIgnore: C,
                    clipShape: M,
                    disableAnimation: !0,
                    getSymbolPoint: function(bt) {
                        return [f[bt * 2], f[bt * 2 + 1]]
                    }
                }), (!TI(this._stackedOnPoints, S) || !TI(this._points, f)) && (g ? this._doUpdateAnimation(s, S, n, a, D, x, T) : (D && (S && (S = jn(S, f, n, D, T)), f = jn(f, null, n, D, T)), v.setShape({
                    points: f
                }), d && d.setShape({
                    points: f,
                    stackedOnPoints: S
                })))
            }
            var R = t.getModel("emphasis"),
                N = R.get("focus"),
                V = R.get("blurScope"),
                U = R.get("disabled");
            if (v.useStyle(q(l.getLineStyle(), {
                    fill: "none",
                    stroke: I,
                    lineJoin: "bevel"
                })), te(v, t, "lineStyle"), v.style.lineWidth > 0 && t.get(["emphasis", "lineStyle", "width"]) === "bolder") {
                var B = v.getState("emphasis").style;
                B.lineWidth = +v.style.lineWidth + 1
            }
            et(v).seriesIndex = t.seriesIndex, Nt(v, N, V, U);
            var Z = DI(t.get("smooth")),
                K = t.get("smoothMonotone");
            if (v.setShape({
                    smooth: Z,
                    smoothMonotone: K,
                    connectNulls: T
                }), d) {
                var tt = s.getCalculationInfo("stackedOnSeries"),
                    pt = 0;
                d.useStyle(q(u.getAreaStyle(), {
                    fill: I,
                    opacity: .7,
                    lineJoin: "bevel",
                    decal: s.getVisual("style").decal
                })), tt && (pt = DI(tt.get("smooth"))), d.setShape({
                    smooth: Z,
                    stackedOnSmooth: pt,
                    smoothMonotone: K,
                    connectNulls: T
                }), te(d, t, "areaStyle"), et(d).seriesIndex = t.seriesIndex, Nt(d, N, V, U)
            }
            var ct = this._changePolyState;
            s.eachItemGraphicEl(function(bt) {
                bt && (bt.onHoverStateChange = ct)
            }), this._polyline.onHoverStateChange = ct, this._data = s, this._coordSys = n, this._stackedOnPoints = S, this._points = f, this._step = D, this._valueOrigin = x, t.get("triggerLineEvent") && (this.packEventData(t, v), d && this.packEventData(t, d))
        }, e.prototype.packEventData = function(t, i) {
            et(i).eventData = {
                componentType: "series",
                componentSubType: "line",
                componentIndex: t.componentIndex,
                seriesIndex: t.seriesIndex,
                seriesName: t.name,
                seriesType: "line"
            }
        }, e.prototype.highlight = function(t, i, a, n) {
            var o = t.getData(),
                s = vi(o, n);
            if (this._changePolyState("emphasis"), !(s instanceof Array) && s != null && s >= 0) {
                var l = o.getLayout("points"),
                    u = o.getItemGraphicEl(s);
                if (!u) {
                    var f = l[s * 2],
                        p = l[s * 2 + 1];
                    if (isNaN(f) || isNaN(p) || this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(f, p)) return;
                    var c = t.get("zlevel") || 0,
                        h = t.get("z") || 0;
                    u = new nn(o, s), u.x = f, u.y = p, u.setZ(c, h);
                    var v = u.getSymbolPath().getTextContent();
                    v && (v.zlevel = c, v.z = h, v.z2 = this._polyline.z2 + 1), u.__temp = !0, o.setItemGraphicEl(s, u), u.stopSymbolAnimation(!0), this.group.add(u)
                }
                u.highlight()
            } else At.prototype.highlight.call(this, t, i, a, n)
        }, e.prototype.downplay = function(t, i, a, n) {
            var o = t.getData(),
                s = vi(o, n);
            if (this._changePolyState("normal"), s != null && s >= 0) {
                var l = o.getItemGraphicEl(s);
                l && (l.__temp ? (o.setItemGraphicEl(s, null), this.group.remove(l)) : l.downplay())
            } else At.prototype.downplay.call(this, t, i, a, n)
        }, e.prototype._changePolyState = function(t) {
            var i = this._polygon;
            Ko(this._polyline, t), i && Ko(i, t)
        }, e.prototype._newPolyline = function(t) {
            var i = this._polyline;
            return i && this._lineGroup.remove(i), i = new wI({
                shape: {
                    points: t
                },
                segmentIgnoreThreshold: 2,
                z2: 10
            }), this._lineGroup.add(i), this._polyline = i, i
        }, e.prototype._newPolygon = function(t, i) {
            var a = this._polygon;
            return a && this._lineGroup.remove(a), a = new Zv({
                shape: {
                    points: t,
                    stackedOnPoints: i
                },
                segmentIgnoreThreshold: 2
            }), this._lineGroup.add(a), this._polygon = a, a
        }, e.prototype._initSymbolLabelAnimation = function(t, i, a) {
            var n, o, s = i.getBaseAxis(),
                l = s.inverse;
            i.type === "cartesian2d" ? (n = s.isHorizontal(), o = !1) : i.type === "polar" && (n = s.dim === "angle", o = !0);
            var u = t.hostModel,
                f = u.get("animationDuration");
            X(f) && (f = f(null));
            var p = u.get("animationDelay") || 0,
                c = X(p) ? p(null) : p;
            t.eachItemGraphicEl(function(h, v) {
                var d = h;
                if (d) {
                    var m = [h.x, h.y],
                        g = void 0,
                        y = void 0,
                        x = void 0;
                    if (a)
                        if (o) {
                            var _ = a,
                                S = i.pointToCoord(m);
                            n ? (g = _.startAngle, y = _.endAngle, x = -S[1] / 180 * Math.PI) : (g = _.r0, y = _.r, x = S[0])
                        } else {
                            var b = a;
                            n ? (g = b.x, y = b.x + b.width, x = h.x) : (g = b.y + b.height, y = b.y, x = h.y)
                        }
                    var T = y === g ? 0 : (x - g) / (y - g);
                    l && (T = 1 - T);
                    var C = X(p) ? p(v) : f * T + c,
                        A = d.getSymbolPath(),
                        D = A.getTextContent();
                    d.attr({
                        scaleX: 0,
                        scaleY: 0
                    }), d.animateTo({
                        scaleX: 1,
                        scaleY: 1
                    }, {
                        duration: 200,
                        setToFinal: !0,
                        delay: C
                    }), D && D.animateFrom({
                        style: {
                            opacity: 0
                        }
                    }, {
                        duration: 300,
                        delay: C
                    }), A.disableLabelAnimation = !0
                }
            })
        }, e.prototype._initOrUpdateEndLabel = function(t, i, a) {
            var n = t.getModel("endLabel");
            if (LI(t)) {
                var o = t.getData(),
                    s = this._polyline,
                    l = o.getLayout("points");
                if (!l) {
                    s.removeTextContent(), this._endLabel = null;
                    return
                }
                var u = this._endLabel;
                u || (u = this._endLabel = new dt({
                    z2: 200
                }), u.ignoreClip = !0, s.setTextContent(this._endLabel), s.disableLabelAnimation = !0);
                var f = mW(l);
                f >= 0 && (Xt(s, Ft(t, "endLabel"), {
                    inheritColor: a,
                    labelFetcher: t,
                    labelDataIndex: f,
                    defaultText: function(p, c, h) {
                        return h != null ? Hv(o, h) : ta(o, p)
                    },
                    enableTextSetter: !0
                }, yW(n, i)), s.textConfig.position = null)
            } else this._endLabel && (this._polyline.removeTextContent(), this._endLabel = null)
        }, e.prototype._endLabelOnDuring = function(t, i, a, n, o, s, l) {
            var u = this._endLabel,
                f = this._polyline;
            if (u) {
                t < 1 && n.originalX == null && (n.originalX = u.x, n.originalY = u.y);
                var p = a.getLayout("points"),
                    c = a.hostModel,
                    h = c.get("connectNulls"),
                    v = s.get("precision"),
                    d = s.get("distance") || 0,
                    m = l.getBaseAxis(),
                    g = m.isHorizontal(),
                    y = m.inverse,
                    x = i.shape,
                    _ = y ? g ? x.x : x.y + x.height : g ? x.x + x.width : x.y,
                    S = (g ? d : 0) * (y ? -1 : 1),
                    b = (g ? 0 : -d) * (y ? -1 : 1),
                    T = g ? "x" : "y",
                    C = gW(p, _, T),
                    A = C.range,
                    D = A[1] - A[0],
                    M = void 0;
                if (D >= 1) {
                    if (D > 1 && !h) {
                        var I = MI(p, A[0]);
                        u.attr({
                            x: I[0] + S,
                            y: I[1] + b
                        }), o && (M = c.getRawValue(A[0]))
                    } else {
                        var I = f.getPointOn(_, T);
                        I && u.attr({
                            x: I[0] + S,
                            y: I[1] + b
                        });
                        var E = c.getRawValue(A[0]),
                            P = c.getRawValue(A[1]);
                        o && (M = Vc(a, v, E, P, C.t))
                    }
                    n.lastFrameIndex = A[0]
                } else {
                    var R = t === 1 || n.lastFrameIndex > 0 ? A[0] : 0,
                        I = MI(p, R);
                    o && (M = c.getRawValue(R)), u.attr({
                        x: I[0] + S,
                        y: I[1] + b
                    })
                }
                if (o) {
                    var N = Ja(u);
                    typeof N.setLabelText == "function" && N.setLabelText(M)
                }
            }
        }, e.prototype._doUpdateAnimation = function(t, i, a, n, o, s, l) {
            var u = this._polyline,
                f = this._polygon,
                p = t.hostModel,
                c = Ex(this._data, t, this._stackedOnPoints, i, this._coordSys, a, this._valueOrigin, s),
                h = c.current,
                v = c.stackedOnCurrent,
                d = c.next,
                m = c.stackedOnNext;
            if (o && (v = jn(c.stackedOnCurrent, c.current, a, o, l), h = jn(c.current, null, a, o, l), m = jn(c.stackedOnNext, c.next, a, o, l), d = jn(c.next, null, a, o, l)), AI(h, d) > 3e3 || f && AI(v, m) > 3e3) {
                u.stopAnimation(), u.setShape({
                    points: d
                }), f && (f.stopAnimation(), f.setShape({
                    points: d,
                    stackedOnPoints: m
                }));
                return
            }
            u.shape.__points = c.current, u.shape.points = h;
            var g = {
                shape: {
                    points: d
                }
            };
            c.current !== h && (g.shape.__points = c.next), u.stopAnimation(), xt(u, g, p), f && (f.setShape({
                points: h,
                stackedOnPoints: v
            }), f.stopAnimation(), xt(f, {
                shape: {
                    stackedOnPoints: m
                }
            }, p), u.shape.points !== f.shape.points && (f.shape.points = u.shape.points));
            for (var y = [], x = c.status, _ = 0; _ < x.length; _++) {
                var S = x[_].cmd;
                if (S === "=") {
                    var b = t.getItemGraphicEl(x[_].idx1);
                    b && y.push({
                        el: b,
                        ptIdx: _
                    })
                }
            }
            u.animators && u.animators.length && u.animators[0].during(function() {
                f && f.dirtyShape();
                for (var T = u.shape.__points, C = 0; C < y.length; C++) {
                    var A = y[C].el,
                        D = y[C].ptIdx * 2;
                    A.x = T[D], A.y = T[D + 1], A.markRedraw()
                }
            })
        }, e.prototype.remove = function(t) {
            var i = this.group,
                a = this._data;
            this._lineGroup.removeAll(), this._symbolDraw.remove(!0), a && a.eachItemGraphicEl(function(n, o) {
                n.__temp && (i.remove(n), a.setItemGraphicEl(o, null))
            }), this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._endLabel = this._data = null
        }, e.type = "line", e
    }(At),
    II = xW;

function ea(r, e) {
    return {
        seriesType: r,
        plan: ni(),
        reset: function(t) {
            var i = t.getData(),
                a = t.coordinateSystem,
                n = t.pipelineContext,
                o = e || n.large;
            if (a) {
                var s = k(a.dimensions, function(h) {
                        return i.mapDimension(h)
                    }).slice(0, 2),
                    l = s.length,
                    u = i.getCalculationInfo("stackResultDimension");
                gr(i, s[0]) && (s[0] = u), gr(i, s[1]) && (s[1] = u);
                var f = i.getStore(),
                    p = i.getDimensionIndex(s[0]),
                    c = i.getDimensionIndex(s[1]);
                return l && {
                    progress: function(h, v) {
                        for (var d = h.end - h.start, m = o && yr(d * l), g = [], y = [], x = h.start, _ = 0; x < h.end; x++) {
                            var S = void 0;
                            if (l === 1) {
                                var b = f.get(p, x);
                                S = a.dataToPoint(b, null, y)
                            } else g[0] = f.get(p, x), g[1] = f.get(c, x), S = a.dataToPoint(g, null, y);
                            o ? (m[_++] = S[0], m[_++] = S[1]) : v.setItemLayout(x, S.slice())
                        }
                        o && v.setLayout("points", m)
                    }
                }
            }
        }
    }
}
var _W = {
        average: function(r) {
            for (var e = 0, t = 0, i = 0; i < r.length; i++) isNaN(r[i]) || (e += r[i], t++);
            return t === 0 ? NaN : e / t
        },
        sum: function(r) {
            for (var e = 0, t = 0; t < r.length; t++) e += r[t] || 0;
            return e
        },
        max: function(r) {
            for (var e = -1 / 0, t = 0; t < r.length; t++) r[t] > e && (e = r[t]);
            return isFinite(e) ? e : NaN
        },
        min: function(r) {
            for (var e = 1 / 0, t = 0; t < r.length; t++) r[t] < e && (e = r[t]);
            return isFinite(e) ? e : NaN
        },
        nearest: function(r) {
            return r[0]
        }
    },
    SW = function(r) {
        return Math.round(r.length / 2)
    };

function vp(r) {
    return {
        seriesType: r,
        reset: function(e, t, i) {
            var a = e.getData(),
                n = e.get("sampling"),
                o = e.coordinateSystem,
                s = a.count();
            if (s > 10 && o.type === "cartesian2d" && n) {
                var l = o.getBaseAxis(),
                    u = o.getOtherAxis(l),
                    f = l.getExtent(),
                    p = i.getDevicePixelRatio(),
                    c = Math.abs(f[1] - f[0]) * (p || 1),
                    h = Math.round(s / c);
                if (isFinite(h) && h > 1) {
                    n === "lttb" ? e.setData(a.lttbDownSample(a.mapDimension(u.dim), 1 / h)) : n === "minmax" && e.setData(a.minmaxDownSample(a.mapDimension(u.dim), 1 / h));
                    var v = void 0;
                    F(n) ? v = _W[n] : X(n) && (v = n), v && e.setData(a.downSample(a.mapDimension(u.dim), 1 / h, v, SW))
                }
            }
        }
    }
}

function zx(r) {
    r.registerChartView(II), r.registerSeriesModel(xI), r.registerLayout(ea("line", !0)), r.registerVisual({
        seriesType: "line",
        reset: function(e) {
            var t = e.getData(),
                i = e.getModel("lineStyle").getLineStyle();
            i && !i.stroke && (i.stroke = t.getVisual("style").fill), t.setVisual("legendLineStyle", i)
        }
    }), r.registerProcessor(r.PRIORITY.PROCESSOR.STATISTIC, vp("line"))
}
var EI = function(r) {
    L(e, r);

    function e() {
        var t = r !== null && r.apply(this, arguments) || this;
        return t.type = e.type, t
    }
    return e.prototype.getInitialData = function(t, i) {
        return ze(null, this, {
            useEncodeDefaulter: !0
        })
    }, e.prototype.getMarkerPosition = function(t, i, a) {
        var n = this.coordinateSystem;
        if (n && n.clampData) {
            var o = n.clampData(t),
                s = n.dataToPoint(o);
            if (a) w(n.getAxes(), function(c, h) {
                if (c.type === "category" && i != null) {
                    var v = c.getTicksCoords(),
                        d = c.getTickModel().get("alignWithLabel"),
                        m = o[h],
                        g = i[h] === "x1" || i[h] === "y1";
                    if (g && !d && (m += 1), v.length < 2) return;
                    if (v.length === 2) {
                        s[h] = c.toGlobalCoord(c.getExtent()[g ? 1 : 0]);
                        return
                    }
                    for (var y = void 0, x = void 0, _ = 1, S = 0; S < v.length; S++) {
                        var b = v[S].coord,
                            T = S === v.length - 1 ? v[S - 1].tickValue + _ : v[S].tickValue;
                        if (T === m) {
                            x = b;
                            break
                        } else if (T < m) y = b;
                        else if (y != null && T > m) {
                            x = (b + y) / 2;
                            break
                        }
                        S === 1 && (_ = T - v[0].tickValue)
                    }
                    x == null && (y ? y && (x = v[v.length - 1].coord) : x = v[0].coord), s[h] = c.toGlobalCoord(x)
                }
            });
            else {
                var l = this.getData(),
                    u = l.getLayout("offset"),
                    f = l.getLayout("size"),
                    p = n.getBaseAxis().isHorizontal() ? 0 : 1;
                s[p] += u + f / 2
            }
            return s
        }
        return [NaN, NaN]
    }, e.type = "series.__base_bar__", e.defaultOption = {
        z: 2,
        coordinateSystem: "cartesian2d",
        legendHoverLink: !0,
        barMinHeight: 0,
        barMinAngle: 0,
        large: !1,
        largeThreshold: 400,
        progressive: 3e3,
        progressiveChunkMode: "mod"
    }, e
}(Lt);
Lt.registerClass(EI);
var Gl = EI;
var bW = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.getInitialData = function() {
            return ze(null, this, {
                useEncodeDefaulter: !0,
                createInvertedIndices: !!this.get("realtimeSort", !0) || null
            })
        }, e.prototype.getProgressive = function() {
            return this.get("large") ? this.get("progressive") : !1
        }, e.prototype.getProgressiveThreshold = function() {
            var t = this.get("progressiveThreshold"),
                i = this.get("largeThreshold");
            return i > t && (t = i), t
        }, e.prototype.brushSelector = function(t, i, a) {
            return a.rect(i.getItemLayout(t))
        }, e.type = "series.bar", e.dependencies = ["grid", "polar"], e.defaultOption = nr(Gl.defaultOption, {
            clip: !0,
            roundCap: !1,
            showBackground: !1,
            backgroundStyle: {
                color: "rgba(180, 180, 180, 0.2)",
                borderColor: null,
                borderWidth: 0,
                borderType: "solid",
                borderRadius: 0,
                shadowBlur: 0,
                shadowColor: null,
                shadowOffsetX: 0,
                shadowOffsetY: 0,
                opacity: 1
            },
            select: {
                itemStyle: {
                    borderColor: "#212121"
                }
            },
            realtimeSort: !1
        }), e
    }(Gl),
    PI = bW;
var wW = function() {
        function r() {
            this.cx = 0, this.cy = 0, this.r0 = 0, this.r = 0, this.startAngle = 0, this.endAngle = Math.PI * 2, this.clockwise = !0
        }
        return r
    }(),
    TW = function(r) {
        L(e, r);

        function e(t) {
            var i = r.call(this, t) || this;
            return i.type = "sausage", i
        }
        return e.prototype.getDefaultShape = function() {
            return new wW
        }, e.prototype.buildPath = function(t, i) {
            var a = i.cx,
                n = i.cy,
                o = Math.max(i.r0 || 0, 0),
                s = Math.max(i.r, 0),
                l = (s - o) * .5,
                u = o + l,
                f = i.startAngle,
                p = i.endAngle,
                c = i.clockwise,
                h = Math.PI * 2,
                v = c ? p - f < h : f - p < h;
            v || (f = p - (c ? h : -h));
            var d = Math.cos(f),
                m = Math.sin(f),
                g = Math.cos(p),
                y = Math.sin(p);
            v ? (t.moveTo(d * o + a, m * o + n), t.arc(d * u + a, m * u + n, l, -Math.PI + f, f, !c)) : t.moveTo(d * s + a, m * s + n), t.arc(a, n, s, f, p, !c), t.arc(g * u + a, y * u + n, l, p - Math.PI * 2, p - Math.PI, !c), o !== 0 && t.arc(a, n, o, p, f, c)
        }, e
    }(st),
    Hl = TW;

function RI(r, e) {
    e = e || {};
    var t = e.isRoundCap;
    return function(i, a, n) {
        var o = a.position;
        if (!o || o instanceof Array) return zo(i, a, n);
        var s = r(o),
            l = a.distance != null ? a.distance : 5,
            u = this.shape,
            f = u.cx,
            p = u.cy,
            c = u.r,
            h = u.r0,
            v = (c + h) / 2,
            d = u.startAngle,
            m = u.endAngle,
            g = (d + m) / 2,
            y = t ? Math.abs(c - h) / 2 : 0,
            x = Math.cos,
            _ = Math.sin,
            S = f + c * x(d),
            b = p + c * _(d),
            T = "left",
            C = "top";
        switch (s) {
            case "startArc":
                S = f + (h - l) * x(g), b = p + (h - l) * _(g), T = "center", C = "top";
                break;
            case "insideStartArc":
                S = f + (h + l) * x(g), b = p + (h + l) * _(g), T = "center", C = "bottom";
                break;
            case "startAngle":
                S = f + v * x(d) + Xv(d, l + y, !1), b = p + v * _(d) + qv(d, l + y, !1), T = "right", C = "middle";
                break;
            case "insideStartAngle":
                S = f + v * x(d) + Xv(d, -l + y, !1), b = p + v * _(d) + qv(d, -l + y, !1), T = "left", C = "middle";
                break;
            case "middle":
                S = f + v * x(g), b = p + v * _(g), T = "center", C = "middle";
                break;
            case "endArc":
                S = f + (c + l) * x(g), b = p + (c + l) * _(g), T = "center", C = "bottom";
                break;
            case "insideEndArc":
                S = f + (c - l) * x(g), b = p + (c - l) * _(g), T = "center", C = "top";
                break;
            case "endAngle":
                S = f + v * x(m) + Xv(m, l + y, !0), b = p + v * _(m) + qv(m, l + y, !0), T = "left", C = "middle";
                break;
            case "insideEndAngle":
                S = f + v * x(m) + Xv(m, -l + y, !0), b = p + v * _(m) + qv(m, -l + y, !0), T = "right", C = "middle";
                break;
            default:
                return zo(i, a, n)
        }
        return i = i || {}, i.x = S, i.y = b, i.align = T, i.verticalAlign = C, i
    }
}

function NI(r, e, t, i) {
    if (vt(i)) {
        r.setTextConfig({
            rotation: i
        });
        return
    } else if (z(e)) {
        r.setTextConfig({
            rotation: 0
        });
        return
    }
    var a = r.shape,
        n = a.clockwise ? a.startAngle : a.endAngle,
        o = a.clockwise ? a.endAngle : a.startAngle,
        s = (n + o) / 2,
        l, u = t(e);
    switch (u) {
        case "startArc":
        case "insideStartArc":
        case "middle":
        case "insideEndArc":
        case "endArc":
            l = s;
            break;
        case "startAngle":
        case "insideStartAngle":
            l = n;
            break;
        case "endAngle":
        case "insideEndAngle":
            l = o;
            break;
        default:
            r.setTextConfig({
                rotation: 0
            });
            return
    }
    var f = Math.PI * 1.5 - l;
    u === "middle" && f > Math.PI / 2 && f < Math.PI * 1.5 && (f -= Math.PI), r.setTextConfig({
        rotation: f
    })
}

function Xv(r, e, t) {
    return e * Math.sin(r) * (t ? -1 : 1)
}

function qv(r, e, t) {
    return e * Math.cos(r) * (t ? 1 : -1)
}

function Ca(r, e, t) {
    var i = r.get("borderRadius");
    if (i == null) return t ? {
        cornerRadius: 0
    } : null;
    z(i) || (i = [i, i, i, i]);
    var a = Math.abs(e.r || 0 - e.r0 || 0);
    return {
        cornerRadius: k(i, function(n) {
            return Xe(n, a)
        })
    }
}
var kx = Math.max,
    Ux = Math.min;

function CW(r, e) {
    var t = r.getArea && r.getArea();
    if (Ei(r, "cartesian2d")) {
        var i = r.getBaseAxis();
        if (i.type !== "category" || !i.onBand) {
            var a = e.getLayout("bandWidth");
            i.isHorizontal() ? (t.x -= a, t.width += a * 2) : (t.y -= a, t.height += a * 2)
        }
    }
    return t
}
var AW = function(r) {
        L(e, r);

        function e() {
            var t = r.call(this) || this;
            return t.type = e.type, t._isFirstFrame = !0, t
        }
        return e.prototype.render = function(t, i, a, n) {
            this._model = t, this._removeOnRenderedListener(a), this._updateDrawMode(t);
            var o = t.get("coordinateSystem");
            (o === "cartesian2d" || o === "polar") && (this._progressiveEls = null, this._isLargeDraw ? this._renderLarge(t, i, a) : this._renderNormal(t, i, a, n))
        }, e.prototype.incrementalPrepareRender = function(t) {
            this._clear(), this._updateDrawMode(t), this._updateLargeClip(t)
        }, e.prototype.incrementalRender = function(t, i) {
            this._progressiveEls = [], this._incrementalRenderLarge(t, i)
        }, e.prototype.eachRendered = function(t) {
            dr(this._progressiveEls || this.group, t)
        }, e.prototype._updateDrawMode = function(t) {
            var i = t.pipelineContext.large;
            (this._isLargeDraw == null || i !== this._isLargeDraw) && (this._isLargeDraw = i, this._clear())
        }, e.prototype._renderNormal = function(t, i, a, n) {
            var o = this.group,
                s = t.getData(),
                l = this._data,
                u = t.coordinateSystem,
                f = u.getBaseAxis(),
                p;
            u.type === "cartesian2d" ? p = f.isHorizontal() : u.type === "polar" && (p = f.dim === "angle");
            var c = t.isAnimationEnabled() ? t : null,
                h = DW(t, u);
            h && this._enableRealtimeSort(h, s, a);
            var v = t.get("clip", !0) || h,
                d = CW(u, s);
            o.removeClipPath();
            var m = t.get("roundCap", !0),
                g = t.get("showBackground", !0),
                y = t.getModel("backgroundStyle"),
                x = y.get("borderRadius") || 0,
                _ = [],
                S = this._backgroundEls,
                b = n && n.isInitSort,
                T = n && n.type === "changeAxisOrder";

            function C(M) {
                var I = Kv[u.type](s, M),
                    E = NW(u, p, I);
                return E.useStyle(y.getItemStyle()), u.type === "cartesian2d" ? E.setShape("r", x) : E.setShape("cornerRadius", x), _[M] = E, E
            }
            s.diff(l).add(function(M) {
                var I = s.getItemModel(M),
                    E = Kv[u.type](s, M, I);
                if (g && C(M), !(!s.hasValue(M) || !VI[u.type](E))) {
                    var P = !1;
                    v && (P = OI[u.type](d, E));
                    var R = zI[u.type](t, s, M, E, p, c, f.model, !1, m);
                    h && (R.forceLabelAnimation = !0), BI(R, s, M, I, E, t, p, u.type === "polar"), b ? R.attr({
                        shape: E
                    }) : h ? kI(h, c, R, E, M, p, !1, !1) : Ot(R, {
                        shape: E
                    }, t, M), s.setItemGraphicEl(M, R), o.add(R), R.ignore = P
                }
            }).update(function(M, I) {
                var E = s.getItemModel(M),
                    P = Kv[u.type](s, M, E);
                if (g) {
                    var R = void 0;
                    S.length === 0 ? R = C(I) : (R = S[I], R.useStyle(y.getItemStyle()), u.type === "cartesian2d" ? R.setShape("r", x) : R.setShape("cornerRadius", x), _[M] = R);
                    var N = Kv[u.type](s, M),
                        V = YI(p, N, u);
                    xt(R, {
                        shape: V
                    }, c, M)
                }
                var U = l.getItemGraphicEl(I);
                if (!s.hasValue(M) || !VI[u.type](P)) {
                    o.remove(U);
                    return
                }
                var B = !1;
                if (v && (B = OI[u.type](d, P), B && o.remove(U)), U ? Ae(U) : U = zI[u.type](t, s, M, P, p, c, f.model, !!U, m), h && (U.forceLabelAnimation = !0), T) {
                    var Z = U.getTextContent();
                    if (Z) {
                        var K = Ja(Z);
                        K.prevValue != null && (K.prevValue = K.value)
                    }
                } else BI(U, s, M, E, P, t, p, u.type === "polar");
                b ? U.attr({
                    shape: P
                }) : h ? kI(h, c, U, P, M, p, !0, T) : xt(U, {
                    shape: P
                }, t, M, null), s.setItemGraphicEl(M, U), U.ignore = B, o.add(U)
            }).remove(function(M) {
                var I = l.getItemGraphicEl(M);
                I && qa(I, t, M)
            }).execute();
            var A = this._backgroundGroup || (this._backgroundGroup = new J);
            A.removeAll();
            for (var D = 0; D < _.length; ++D) A.add(_[D]);
            o.add(A), this._backgroundEls = _, this._data = s
        }, e.prototype._renderLarge = function(t, i, a) {
            this._clear(), GI(t, this.group), this._updateLargeClip(t)
        }, e.prototype._incrementalRenderLarge = function(t, i) {
            this._removeBackground(), GI(i, this.group, this._progressiveEls, !0)
        }, e.prototype._updateLargeClip = function(t) {
            var i = t.get("clip", !0) && Ta(t.coordinateSystem, !1, t),
                a = this.group;
            i ? a.setClipPath(i) : a.removeClipPath()
        }, e.prototype._enableRealtimeSort = function(t, i, a) {
            var n = this;
            if (i.count()) {
                var o = t.baseAxis;
                if (this._isFirstFrame) this._dispatchInitSort(i, t, a), this._isFirstFrame = !1;
                else {
                    var s = function(l) {
                        var u = i.getItemGraphicEl(l),
                            f = u && u.shape;
                        return f && Math.abs(o.isHorizontal() ? f.height : f.width) || 0
                    };
                    this._onRendered = function() {
                        n._updateSortWithinSameData(i, s, o, a)
                    }, a.getZr().on("rendered", this._onRendered)
                }
            }
        }, e.prototype._dataSort = function(t, i, a) {
            var n = [];
            return t.each(t.mapDimension(i.dim), function(o, s) {
                var l = a(s);
                l = l ? ? NaN, n.push({
                    dataIndex: s,
                    mappedValue: l,
                    ordinalNumber: o
                })
            }), n.sort(function(o, s) {
                return s.mappedValue - o.mappedValue
            }), {
                ordinalNumbers: k(n, function(o) {
                    return o.ordinalNumber
                })
            }
        }, e.prototype._isOrderChangedWithinSameData = function(t, i, a) {
            for (var n = a.scale, o = t.mapDimension(a.dim), s = Number.MAX_VALUE, l = 0, u = n.getOrdinalMeta().categories.length; l < u; ++l) {
                var f = t.rawIndexOf(o, n.getRawOrdinalNumber(l)),
                    p = f < 0 ? Number.MIN_VALUE : i(t.indexOfRawIndex(f));
                if (p > s) return !0;
                s = p
            }
            return !1
        }, e.prototype._isOrderDifferentInView = function(t, i) {
            for (var a = i.scale, n = a.getExtent(), o = Math.max(0, n[0]), s = Math.min(n[1], a.getOrdinalMeta().categories.length - 1); o <= s; ++o)
                if (t.ordinalNumbers[o] !== a.getRawOrdinalNumber(o)) return !0
        }, e.prototype._updateSortWithinSameData = function(t, i, a, n) {
            if (this._isOrderChangedWithinSameData(t, i, a)) {
                var o = this._dataSort(t, a, i);
                this._isOrderDifferentInView(o, a) && (this._removeOnRenderedListener(n), n.dispatchAction({
                    type: "changeAxisOrder",
                    componentType: a.dim + "Axis",
                    axisId: a.index,
                    sortInfo: o
                }))
            }
        }, e.prototype._dispatchInitSort = function(t, i, a) {
            var n = i.baseAxis,
                o = this._dataSort(t, n, function(s) {
                    return t.get(t.mapDimension(i.otherAxis.dim), s)
                });
            a.dispatchAction({
                type: "changeAxisOrder",
                componentType: n.dim + "Axis",
                isInitSort: !0,
                axisId: n.index,
                sortInfo: o
            })
        }, e.prototype.remove = function(t, i) {
            this._clear(this._model), this._removeOnRenderedListener(i)
        }, e.prototype.dispose = function(t, i) {
            this._removeOnRenderedListener(i)
        }, e.prototype._removeOnRenderedListener = function(t) {
            this._onRendered && (t.getZr().off("rendered", this._onRendered), this._onRendered = null)
        }, e.prototype._clear = function(t) {
            var i = this.group,
                a = this._data;
            t && t.isAnimationEnabled() && a && !this._isLargeDraw ? (this._removeBackground(), this._backgroundEls = [], a.eachItemGraphicEl(function(n) {
                qa(n, t, et(n).dataIndex)
            })) : i.removeAll(), this._data = null, this._isFirstFrame = !0
        }, e.prototype._removeBackground = function() {
            this.group.remove(this._backgroundGroup), this._backgroundGroup = null
        }, e.type = "bar", e
    }(At),
    OI = {
        cartesian2d: function(r, e) {
            var t = e.width < 0 ? -1 : 1,
                i = e.height < 0 ? -1 : 1;
            t < 0 && (e.x += e.width, e.width = -e.width), i < 0 && (e.y += e.height, e.height = -e.height);
            var a = r.x + r.width,
                n = r.y + r.height,
                o = kx(e.x, r.x),
                s = Ux(e.x + e.width, a),
                l = kx(e.y, r.y),
                u = Ux(e.y + e.height, n),
                f = s < o,
                p = u < l;
            return e.x = f && o > a ? s : o, e.y = p && l > n ? u : l, e.width = f ? 0 : s - o, e.height = p ? 0 : u - l, t < 0 && (e.x += e.width, e.width = -e.width), i < 0 && (e.y += e.height, e.height = -e.height), f || p
        },
        polar: function(r, e) {
            var t = e.r0 <= e.r ? 1 : -1;
            if (t < 0) {
                var i = e.r;
                e.r = e.r0, e.r0 = i
            }
            var a = Ux(e.r, r.r),
                n = kx(e.r0, r.r0);
            e.r = a, e.r0 = n;
            var o = a - n < 0;
            if (t < 0) {
                var i = e.r;
                e.r = e.r0, e.r0 = i
            }
            return o
        }
    },
    zI = {
        cartesian2d: function(r, e, t, i, a, n, o, s, l) {
            var u = new ht({
                shape: O({}, i),
                z2: 1
            });
            if (u.__dataIndex = t, u.name = "item", n) {
                var f = u.shape,
                    p = a ? "height" : "width";
                f[p] = 0
            }
            return u
        },
        polar: function(r, e, t, i, a, n, o, s, l) {
            var u = !a && l ? Hl : pe,
                f = new u({
                    shape: i,
                    z2: 1
                });
            f.name = "item";
            var p = WI(a);
            if (f.calculateTextPosition = RI(p, {
                    isRoundCap: u === Hl
                }), n) {
                var c = f.shape,
                    h = a ? "r" : "endAngle",
                    v = {};
                c[h] = a ? i.r0 : i.startAngle, v[h] = i[h], (s ? xt : Ot)(f, {
                    shape: v
                }, n)
            }
            return f
        }
    };

function DW(r, e) {
    var t = r.get("realtimeSort", !0),
        i = e.getBaseAxis();
    if (t && i.type === "category" && e.type === "cartesian2d") return {
        baseAxis: i,
        otherAxis: e.getOtherAxis(i)
    }
}

function kI(r, e, t, i, a, n, o, s) {
    var l, u;
    n ? (u = {
        x: i.x,
        width: i.width
    }, l = {
        y: i.y,
        height: i.height
    }) : (u = {
        y: i.y,
        height: i.height
    }, l = {
        x: i.x,
        width: i.width
    }), s || (o ? xt : Ot)(t, {
        shape: l
    }, e, a, null);
    var f = e ? r.baseAxis.model : null;
    (o ? xt : Ot)(t, {
        shape: u
    }, f, a)
}

function UI(r, e) {
    for (var t = 0; t < e.length; t++)
        if (!isFinite(r[e[t]])) return !0;
    return !1
}
var MW = ["x", "y", "width", "height"],
    LW = ["cx", "cy", "r", "startAngle", "endAngle"],
    VI = {
        cartesian2d: function(r) {
            return !UI(r, MW)
        },
        polar: function(r) {
            return !UI(r, LW)
        }
    },
    Kv = {
        cartesian2d: function(r, e, t) {
            var i = r.getItemLayout(e),
                a = t ? EW(t, i) : 0,
                n = i.width > 0 ? 1 : -1,
                o = i.height > 0 ? 1 : -1;
            return {
                x: i.x + n * a / 2,
                y: i.y + o * a / 2,
                width: i.width - n * a,
                height: i.height - o * a
            }
        },
        polar: function(r, e, t) {
            var i = r.getItemLayout(e);
            return {
                cx: i.cx,
                cy: i.cy,
                r0: i.r0,
                r: i.r,
                startAngle: i.startAngle,
                endAngle: i.endAngle,
                clockwise: i.clockwise
            }
        }
    };

function IW(r) {
    return r.startAngle != null && r.endAngle != null && r.startAngle === r.endAngle
}

function WI(r) {
    return function(e) {
        var t = e ? "Arc" : "Angle";
        return function(i) {
            switch (i) {
                case "start":
                case "insideStart":
                case "end":
                case "insideEnd":
                    return i + t;
                default:
                    return i
            }
        }
    }(r)
}

function BI(r, e, t, i, a, n, o, s) {
    var l = e.getItemVisual(t, "style");
    if (s) {
        if (!n.get("roundCap")) {
            var f = r.shape,
                p = Ca(i.getModel("itemStyle"), f, !0);
            O(f, p), r.setShape(f)
        }
    } else {
        var u = i.get(["itemStyle", "borderRadius"]) || 0;
        r.setShape("r", u)
    }
    r.useStyle(l);
    var c = i.getShallow("cursor");
    c && r.attr("cursor", c);
    var h = s ? o ? a.r >= a.r0 ? "endArc" : "startArc" : a.endAngle >= a.startAngle ? "endAngle" : "startAngle" : o ? a.height >= 0 ? "bottom" : "top" : a.width >= 0 ? "right" : "left",
        v = Ft(i);
    Xt(r, v, {
        labelFetcher: n,
        labelDataIndex: t,
        defaultText: ta(n.getData(), t),
        inheritColor: l.fill,
        defaultOpacity: l.opacity,
        defaultOutsidePosition: h
    });
    var d = r.getTextContent();
    if (s && d) {
        var m = i.get(["label", "position"]);
        r.textConfig.inside = m === "middle" ? !0 : null, NI(r, m === "outside" ? h : m, WI(o), i.get(["label", "rotate"]))
    }
    hh(d, v, n.getRawValue(t), function(y) {
        return Hv(e, y)
    });
    var g = i.getModel(["emphasis"]);
    Nt(r, g.get("focus"), g.get("blurScope"), g.get("disabled")), te(r, i), IW(a) && (r.style.fill = "none", r.style.stroke = "none", w(r.states, function(y) {
        y.style && (y.style.fill = y.style.stroke = "none")
    }))
}

function EW(r, e) {
    var t = r.get(["itemStyle", "borderColor"]);
    if (!t || t === "none") return 0;
    var i = r.get(["itemStyle", "borderWidth"]) || 0,
        a = isNaN(e.width) ? Number.MAX_VALUE : Math.abs(e.width),
        n = isNaN(e.height) ? Number.MAX_VALUE : Math.abs(e.height);
    return Math.min(i, a, n)
}
var PW = function() {
        function r() {}
        return r
    }(),
    FI = function(r) {
        L(e, r);

        function e(t) {
            var i = r.call(this, t) || this;
            return i.type = "largeBar", i
        }
        return e.prototype.getDefaultShape = function() {
            return new PW
        }, e.prototype.buildPath = function(t, i) {
            for (var a = i.points, n = this.baseDimIdx, o = 1 - this.baseDimIdx, s = [], l = [], u = this.barWidth, f = 0; f < a.length; f += 3) l[n] = u, l[o] = a[f + 2], s[n] = a[f + n], s[o] = a[f + o], t.rect(s[0], s[1], l[0], l[1])
        }, e
    }(st);

function GI(r, e, t, i) {
    var a = r.getData(),
        n = a.getLayout("valueAxisHorizontal") ? 1 : 0,
        o = a.getLayout("largeDataIndices"),
        s = a.getLayout("size"),
        l = r.getModel("backgroundStyle"),
        u = a.getLayout("largeBackgroundPoints");
    if (u) {
        var f = new FI({
            shape: {
                points: u
            },
            incremental: !!i,
            silent: !0,
            z2: 0
        });
        f.baseDimIdx = n, f.largeDataIndices = o, f.barWidth = s, f.useStyle(l.getItemStyle()), e.add(f), t && t.push(f)
    }
    var p = new FI({
        shape: {
            points: a.getLayout("largePoints")
        },
        incremental: !!i,
        ignoreCoarsePointer: !0,
        z2: 1
    });
    p.baseDimIdx = n, p.largeDataIndices = o, p.barWidth = s, e.add(p), p.useStyle(a.getVisual("style")), p.style.stroke = null, et(p).seriesIndex = r.seriesIndex, r.get("silent") || (p.on("mousedown", HI), p.on("mousemove", HI)), t && t.push(p)
}
var HI = Pl(function(r) {
    var e = this,
        t = RW(e, r.offsetX, r.offsetY);
    et(e).dataIndex = t >= 0 ? t : null
}, 30, !1);

function RW(r, e, t) {
    for (var i = r.baseDimIdx, a = 1 - i, n = r.shape.points, o = r.largeDataIndices, s = [], l = [], u = r.barWidth, f = 0, p = n.length / 3; f < p; f++) {
        var c = f * 3;
        if (l[i] = u, l[a] = n[c + 2], s[i] = n[c + i], s[a] = n[c + a], l[a] < 0 && (s[a] += l[a], l[a] = -l[a]), e >= s[0] && e <= s[0] + l[0] && t >= s[1] && t <= s[1] + l[1]) return o[f]
    }
    return -1
}

function YI(r, e, t) {
    if (Ei(t, "cartesian2d")) {
        var i = e,
            a = t.getArea();
        return {
            x: r ? i.x : a.x,
            y: r ? a.y : i.y,
            width: r ? i.width : a.width,
            height: r ? a.height : i.height
        }
    } else {
        var a = t.getArea(),
            n = e;
        return {
            cx: a.cx,
            cy: a.cy,
            r0: r ? a.r0 : n.r0,
            r: r ? a.r : n.r,
            startAngle: r ? n.startAngle : 0,
            endAngle: r ? n.endAngle : Math.PI * 2
        }
    }
}

function NW(r, e, t) {
    var i = r.type === "polar" ? pe : ht;
    return new i({
        shape: YI(e, t, r),
        silent: !0,
        z2: 0
    })
}
var ZI = AW;

function Vx(r) {
    r.registerChartView(ZI), r.registerSeriesModel(PI), r.registerLayout(r.PRIORITY.VISUAL.LAYOUT, rt(gv, "bar")), r.registerLayout(r.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, yv("bar")), r.registerProcessor(r.PRIORITY.PROCESSOR.STATISTIC, vp("bar")), r.registerAction({
        type: "changeAxisOrder",
        event: "changeAxisOrder",
        update: "update"
    }, function(e, t) {
        var i = e.componentType || "series";
        t.eachComponent({
            mainType: i,
            query: e
        }, function(a) {
            e.sortInfo && a.axis.setCategorySortInfo(e.sortInfo)
        })
    })
}
var XI = Math.PI * 2,
    jv = Math.PI / 180;

function qI(r, e) {
    return Ut(r.getBoxLayoutParams(), {
        width: e.getWidth(),
        height: e.getHeight()
    })
}

function Bx(r, e) {
    var t = qI(r, e),
        i = r.get("center"),
        a = r.get("radius");
    z(a) || (a = [0, a]);
    var n = W(t.width, e.getWidth()),
        o = W(t.height, e.getHeight()),
        s = Math.min(n, o),
        l = W(a[0], s / 2),
        u = W(a[1], s / 2),
        f, p, c = r.coordinateSystem;
    if (c) {
        var h = c.dataToPoint(i);
        f = h[0] || 0, p = h[1] || 0
    } else z(i) || (i = [i, i]), f = W(i[0], n) + t.x, p = W(i[1], o) + t.y;
    return {
        cx: f,
        cy: p,
        r0: l,
        r: u
    }
}

function Fx(r, e, t) {
    e.eachSeriesByType(r, function(i) {
        var a = i.getData(),
            n = a.mapDimension("value"),
            o = qI(i, t),
            s = Bx(i, t),
            l = s.cx,
            u = s.cy,
            f = s.r,
            p = s.r0,
            c = -i.get("startAngle") * jv,
            h = i.get("endAngle"),
            v = i.get("padAngle") * jv;
        h = h === "auto" ? c - XI : -h * jv;
        var d = i.get("minAngle") * jv,
            m = d + v,
            g = 0;
        a.each(n, function(V) {
            !isNaN(V) && g++
        });
        var y = a.getSum(n),
            x = Math.PI / (y || g) * 2,
            _ = i.get("clockwise"),
            S = i.get("roseType"),
            b = i.get("stillShowZeroSum"),
            T = a.getDataExtent(n);
        T[0] = 0;
        var C = _ ? 1 : -1,
            A = [c, h],
            D = C * v / 2;
        nf(A, !_), c = A[0], h = A[1];
        var M = Gx(i);
        M.startAngle = c, M.endAngle = h, M.clockwise = _;
        var I = Math.abs(h - c),
            E = I,
            P = 0,
            R = c;
        if (a.setLayout({
                viewRect: o,
                r: f
            }), a.each(n, function(V, U) {
                var B;
                if (isNaN(V)) {
                    a.setItemLayout(U, {
                        angle: NaN,
                        startAngle: NaN,
                        endAngle: NaN,
                        clockwise: _,
                        cx: l,
                        cy: u,
                        r0: p,
                        r: S ? NaN : f
                    });
                    return
                }
                S !== "area" ? B = y === 0 && b ? x : V * x : B = I / g, B < m ? (B = m, E -= m) : P += V;
                var Z = R + C * B,
                    K = 0,
                    tt = 0;
                v > B ? (K = R + C * B / 2, tt = K) : (K = R + D, tt = Z - D), a.setItemLayout(U, {
                    angle: B,
                    startAngle: K,
                    endAngle: tt,
                    clockwise: _,
                    cx: l,
                    cy: u,
                    r0: p,
                    r: S ? Rt(V, T, [p, f]) : f
                }), R = Z
            }), E < XI && g)
            if (E <= .001) {
                var N = I / g;
                a.each(n, function(V, U) {
                    if (!isNaN(V)) {
                        var B = a.getItemLayout(U);
                        B.angle = N;
                        var Z = 0,
                            K = 0;
                        N < v ? (Z = c + C * (U + 1 / 2) * N, K = Z) : (Z = c + C * U * N + D, K = c + C * (U + 1) * N - D), B.startAngle = Z, B.endAngle = K
                    }
                })
            } else x = E / P, R = c, a.each(n, function(V, U) {
                if (!isNaN(V)) {
                    var B = a.getItemLayout(U),
                        Z = B.angle === m ? m : V * x,
                        K = 0,
                        tt = 0;
                    Z < v ? (K = R + C * Z / 2, tt = K) : (K = R + D, tt = R + C * Z - D), B.startAngle = K, B.endAngle = tt, R += C * Z
                }
            })
    })
}
var Gx = lt();

function ra(r) {
    return {
        seriesType: r,
        reset: function(e, t) {
            var i = t.findComponents({
                mainType: "legend"
            });
            if (!(!i || !i.length)) {
                var a = e.getData();
                a.filterSelf(function(n) {
                    for (var o = a.getName(n), s = 0; s < i.length; s++)
                        if (!i[s].isSelected(o)) return !1;
                    return !0
                })
            }
        }
    }
}
var OW = Math.PI / 180;

function KI(r, e, t, i, a, n, o, s, l, u) {
    if (r.length < 2) return;

    function f(d) {
        for (var m = d.rB, g = m * m, y = 0; y < d.list.length; y++) {
            var x = d.list[y],
                _ = Math.abs(x.label.y - t),
                S = i + x.len,
                b = S * S,
                T = Math.sqrt(Math.abs((1 - _ * _ / g) * b)),
                C = e + (T + x.len2) * a,
                A = C - x.label.x,
                D = x.targetTextWidth - A * a;
            jI(x, D, !0), x.label.x = C
        }
    }

    function p(d) {
        for (var m = {
                list: [],
                maxY: 0
            }, g = {
                list: [],
                maxY: 0
            }, y = 0; y < d.length; y++)
            if (d[y].labelAlignTo === "none") {
                var x = d[y],
                    _ = x.label.y > t ? g : m,
                    S = Math.abs(x.label.y - t);
                if (S >= _.maxY) {
                    var b = x.label.x - e - x.len2 * a,
                        T = i + x.len,
                        C = Math.abs(b) < T ? Math.sqrt(S * S / (1 - b * b / T / T)) : T;
                    _.rB = C, _.maxY = S
                }
                _.list.push(x)
            }
        f(m), f(g)
    }
    for (var c = r.length, h = 0; h < c; h++)
        if (r[h].position === "outer" && r[h].labelAlignTo === "labelLine") {
            var v = r[h].label.x - u;
            r[h].linePoints[1][0] += v, r[h].label.x = u
        }
    Ev(r, l, l + o) && p(r)
}

function zW(r, e, t, i, a, n, o, s) {
    for (var l = [], u = [], f = Number.MAX_VALUE, p = -Number.MAX_VALUE, c = 0; c < r.length; c++) {
        var h = r[c].label;
        Hx(r[c]) || (h.x < e ? (f = Math.min(f, h.x), l.push(r[c])) : (p = Math.max(p, h.x), u.push(r[c])))
    }
    for (var c = 0; c < r.length; c++) {
        var v = r[c];
        if (!Hx(v) && v.linePoints) {
            if (v.labelStyleWidth != null) continue;
            var h = v.label,
                d = v.linePoints,
                m = void 0;
            v.labelAlignTo === "edge" ? h.x < e ? m = d[2][0] - v.labelDistance - o - v.edgeDistance : m = o + a - v.edgeDistance - d[2][0] - v.labelDistance : v.labelAlignTo === "labelLine" ? h.x < e ? m = f - o - v.bleedMargin : m = o + a - p - v.bleedMargin : h.x < e ? m = h.x - o - v.bleedMargin : m = o + a - h.x - v.bleedMargin, v.targetTextWidth = m, jI(v, m)
        }
    }
    KI(u, e, t, i, 1, a, n, o, s, p), KI(l, e, t, i, -1, a, n, o, s, f);
    for (var c = 0; c < r.length; c++) {
        var v = r[c];
        if (!Hx(v) && v.linePoints) {
            var h = v.label,
                d = v.linePoints,
                g = v.labelAlignTo === "edge",
                y = h.style.padding,
                x = y ? y[1] + y[3] : 0,
                _ = h.style.backgroundColor ? 0 : x,
                S = v.rect.width + _,
                b = d[1][0] - d[2][0];
            g ? h.x < e ? d[2][0] = o + v.edgeDistance + S + v.labelDistance : d[2][0] = o + a - v.edgeDistance - S - v.labelDistance : (h.x < e ? d[2][0] = h.x + v.labelDistance : d[2][0] = h.x - v.labelDistance, d[1][0] = d[2][0] + b), d[1][1] = d[2][1] = h.y
        }
    }
}

function jI(r, e, t) {
    if (t === void 0 && (t = !1), r.labelStyleWidth == null) {
        var i = r.label,
            a = i.style,
            n = r.rect,
            o = a.backgroundColor,
            s = a.padding,
            l = s ? s[1] + s[3] : 0,
            u = a.overflow,
            f = n.width + (o ? 0 : l);
        if (e < f || t) {
            var p = n.height;
            if (u && u.match("break")) {
                i.setStyle("backgroundColor", null), i.setStyle("width", e - l);
                var c = i.getBoundingRect();
                i.setStyle("width", Math.ceil(c.width)), i.setStyle("backgroundColor", o)
            } else {
                var h = e - l,
                    v = e < f ? h : t ? h > r.unconstrainedWidth ? null : h : null;
                i.setStyle("width", v)
            }
            var d = i.getBoundingRect();
            n.width = d.width;
            var m = (i.style.margin || 0) + 2.1;
            n.height = d.height + m, n.y -= (n.height - p) / 2
        }
    }
}

function Hx(r) {
    return r.position === "center"
}

function Wx(r) {
    var e = r.getData(),
        t = [],
        i, a, n = !1,
        o = (r.get("minShowLabelAngle") || 0) * OW,
        s = e.getLayout("viewRect"),
        l = e.getLayout("r"),
        u = s.width,
        f = s.x,
        p = s.y,
        c = s.height;

    function h(b) {
        b.ignore = !0
    }

    function v(b) {
        if (!b.ignore) return !0;
        for (var T in b.states)
            if (b.states[T].ignore === !1) return !0;
        return !1
    }
    e.each(function(b) {
        var T = e.getItemGraphicEl(b),
            C = T.shape,
            A = T.getTextContent(),
            D = T.getTextGuideLine(),
            M = e.getItemModel(b),
            I = M.getModel("label"),
            E = I.get("position") || M.get(["emphasis", "label", "position"]),
            P = I.get("distanceToLabelLine"),
            R = I.get("alignTo"),
            N = W(I.get("edgeDistance"), u),
            V = I.get("bleedMargin"),
            U = M.getModel("labelLine"),
            B = U.get("length");
        B = W(B, u);
        var Z = U.get("length2");
        if (Z = W(Z, u), Math.abs(C.endAngle - C.startAngle) < o) {
            w(A.states, h), A.ignore = !0, D && (w(D.states, h), D.ignore = !0);
            return
        }
        if (v(A)) {
            var K = (C.startAngle + C.endAngle) / 2,
                tt = Math.cos(K),
                pt = Math.sin(K),
                ct, bt, qt, ve;
            i = C.cx, a = C.cy;
            var Mt = E === "inside" || E === "inner";
            if (E === "center") ct = C.cx, bt = C.cy, ve = "center";
            else {
                var mt = (Mt ? (C.r + C.r0) / 2 * tt : C.r * tt) + i,
                    Et = (Mt ? (C.r + C.r0) / 2 * pt : C.r * pt) + a;
                if (ct = mt + tt * 3, bt = Et + pt * 3, !Mt) {
                    var ut = mt + tt * (B + l - C.r),
                        Tt = Et + pt * (B + l - C.r),
                        re = ut + (tt < 0 ? -1 : 1) * Z,
                        Wt = Tt;
                    R === "edge" ? ct = tt < 0 ? f + N : f + u - N : ct = re + (tt < 0 ? -P : P), bt = Wt, qt = [
                        [mt, Et],
                        [ut, Tt],
                        [re, Wt]
                    ]
                }
                ve = Mt ? "center" : R === "edge" ? tt > 0 ? "right" : "left" : tt > 0 ? "left" : "right"
            }
            var Qt = Math.PI,
                le = 0,
                ke = I.get("rotate");
            if (vt(ke)) le = ke * (Qt / 180);
            else if (E === "center") le = 0;
            else if (ke === "radial" || ke === !0) {
                var Zr = tt < 0 ? -K + Qt : -K;
                le = Zr
            } else if (ke === "tangential" && E !== "outside" && E !== "outer") {
                var wr = Math.atan2(tt, pt);
                wr < 0 && (wr = Qt * 2 + wr);
                var ho = pt > 0;
                ho && (wr = Qt + wr), le = wr - Qt
            }
            if (n = !!le, A.x = ct, A.y = bt, A.rotation = le, A.setStyle({
                    verticalAlign: "middle"
                }), Mt) {
                A.setStyle({
                    align: ve
                });
                var Mm = A.states.select;
                Mm && (Mm.x += A.x, Mm.y += A.y)
            } else {
                var pn = A.getBoundingRect().clone();
                pn.applyTransform(A.getComputedTransform());
                var Qb = (A.style.margin || 0) + 2.1;
                pn.y -= Qb / 2, pn.height += Qb, t.push({
                    label: A,
                    labelLine: D,
                    position: E,
                    len: B,
                    len2: Z,
                    minTurnAngle: U.get("minTurnAngle"),
                    maxSurfaceAngle: U.get("maxSurfaceAngle"),
                    surfaceNormal: new St(tt, pt),
                    linePoints: qt,
                    textAlign: ve,
                    labelDistance: P,
                    labelAlignTo: R,
                    edgeDistance: N,
                    bleedMargin: V,
                    rect: pn,
                    unconstrainedWidth: pn.width,
                    labelStyleWidth: A.style.width
                })
            }
            T.setTextConfig({
                inside: Mt
            })
        }
    }), !n && r.get("avoidLabelOverlap") && zW(t, i, a, l, u, c, f, p);
    for (var d = 0; d < t.length; d++) {
        var m = t[d],
            g = m.label,
            y = m.labelLine,
            x = isNaN(g.x) || isNaN(g.y);
        if (g) {
            g.setStyle({
                align: m.textAlign
            }), x && (w(g.states, h), g.ignore = !0);
            var _ = g.states.select;
            _ && (_.x += g.x, _.y += g.y)
        }
        if (y) {
            var S = m.linePoints;
            x || !S ? (w(y.states, h), y.ignore = !0) : (ix(S, m.minTurnAngle), WL(S, m.surfaceNormal, m.maxSurfaceAngle), y.setShape({
                points: S
            }), g.__hostTarget.textGuideLineConfig = {
                anchor: new St(S[0][0], S[0][1])
            })
        }
    }
}
var kW = function(r) {
        L(e, r);

        function e(t, i, a) {
            var n = r.call(this) || this;
            n.z2 = 2;
            var o = new dt;
            return n.setTextContent(o), n.updateData(t, i, a, !0), n
        }
        return e.prototype.updateData = function(t, i, a, n) {
            var o = this,
                s = t.hostModel,
                l = t.getItemModel(i),
                u = l.getModel("emphasis"),
                f = t.getItemLayout(i),
                p = O(Ca(l.getModel("itemStyle"), f, !0), f);
            if (isNaN(p.startAngle)) {
                o.setShape(p);
                return
            }
            if (n) {
                o.setShape(p);
                var c = s.getShallow("animationType");
                s.ecModel.ssr ? (Ot(o, {
                    scaleX: 0,
                    scaleY: 0
                }, s, {
                    dataIndex: i,
                    isFrom: !0
                }), o.originX = p.cx, o.originY = p.cy) : c === "scale" ? (o.shape.r = f.r0, Ot(o, {
                    shape: {
                        r: f.r
                    }
                }, s, i)) : a != null ? (o.setShape({
                    startAngle: a,
                    endAngle: a
                }), Ot(o, {
                    shape: {
                        startAngle: f.startAngle,
                        endAngle: f.endAngle
                    }
                }, s, i)) : (o.shape.endAngle = f.startAngle, xt(o, {
                    shape: {
                        endAngle: f.endAngle
                    }
                }, s, i))
            } else Ae(o), xt(o, {
                shape: p
            }, s, i);
            o.useStyle(t.getItemVisual(i, "style")), te(o, l);
            var h = (f.startAngle + f.endAngle) / 2,
                v = s.get("selectedOffset"),
                d = Math.cos(h) * v,
                m = Math.sin(h) * v,
                g = l.getShallow("cursor");
            g && o.attr("cursor", g), this._updateLabel(s, t, i), o.ensureState("emphasis").shape = O({
                r: f.r + (u.get("scale") && u.get("scaleSize") || 0)
            }, Ca(u.getModel("itemStyle"), f)), O(o.ensureState("select"), {
                x: d,
                y: m,
                shape: Ca(l.getModel(["select", "itemStyle"]), f)
            }), O(o.ensureState("blur"), {
                shape: Ca(l.getModel(["blur", "itemStyle"]), f)
            });
            var y = o.getTextGuideLine(),
                x = o.getTextContent();
            y && O(y.ensureState("select"), {
                x: d,
                y: m
            }), O(x.ensureState("select"), {
                x: d,
                y: m
            }), Nt(this, u.get("focus"), u.get("blurScope"), u.get("disabled"))
        }, e.prototype._updateLabel = function(t, i, a) {
            var n = this,
                o = i.getItemModel(a),
                s = o.getModel("labelLine"),
                l = i.getItemVisual(a, "style"),
                u = l && l.fill,
                f = l && l.opacity;
            Xt(n, Ft(o), {
                labelFetcher: i.hostModel,
                labelDataIndex: a,
                inheritColor: u,
                defaultOpacity: f,
                defaultText: t.getFormattedLabel(a, "normal") || i.getName(a)
            });
            var p = n.getTextContent();
            n.setTextConfig({
                position: null,
                rotation: null
            }), p.attr({
                z2: 10
            });
            var c = t.get(["label", "position"]);
            if (c !== "outside" && c !== "outer") n.removeTextGuideLine();
            else {
                var h = this.getTextGuideLine();
                h || (h = new ae, this.setTextGuideLine(h)), Vl(this, Bl(o), {
                    stroke: u,
                    opacity: Le(s.get(["lineStyle", "opacity"]), f, 1)
                })
            }
        }, e
    }(pe),
    UW = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.ignoreLabelLineUpdate = !0, t
        }
        return e.prototype.render = function(t, i, a, n) {
            var o = t.getData(),
                s = this._data,
                l = this.group,
                u;
            if (!s && o.count() > 0) {
                for (var f = o.getItemLayout(0), p = 1; isNaN(f && f.startAngle) && p < o.count(); ++p) f = o.getItemLayout(p);
                f && (u = f.startAngle)
            }
            if (this._emptyCircleSector && l.remove(this._emptyCircleSector), o.count() === 0 && t.get("showEmptyCircle")) {
                var c = Gx(t),
                    h = new pe({
                        shape: O(Bx(t, a), c)
                    });
                h.useStyle(t.getModel("emptyCircleStyle").getItemStyle()), this._emptyCircleSector = h, l.add(h)
            }
            o.diff(s).add(function(v) {
                var d = new kW(o, v, u);
                o.setItemGraphicEl(v, d), l.add(d)
            }).update(function(v, d) {
                var m = s.getItemGraphicEl(d);
                m.updateData(o, v, u), m.off("click"), l.add(m), o.setItemGraphicEl(v, m)
            }).remove(function(v) {
                var d = s.getItemGraphicEl(v);
                qa(d, t, v)
            }).execute(), Wx(t), t.get("animationTypeUpdate") !== "expansion" && (this._data = o)
        }, e.prototype.dispose = function() {}, e.prototype.containPoint = function(t, i) {
            var a = i.getData(),
                n = a.getItemLayout(0);
            if (n) {
                var o = t[0] - n.cx,
                    s = t[1] - n.cy,
                    l = Math.sqrt(o * o + s * s);
                return l <= n.r && l >= n.r0
            }
        }, e.type = "pie", e
    }(At),
    JI = UW;

function si(r, e, t) {
    e = z(e) && {
        coordDimensions: e
    } || O({
        encodeDefine: r.getEncode()
    }, e);
    var i = r.getSource(),
        a = Mi(i, e).dimensions,
        n = new se(a, r);
    return n.initData(i, t), n
}
var VW = function() {
        function r(e, t) {
            this._getDataWithEncodedVisual = e, this._getRawData = t
        }
        return r.prototype.getAllNames = function() {
            var e = this._getRawData();
            return e.mapArray(e.getName)
        }, r.prototype.containName = function(e) {
            var t = this._getRawData();
            return t.indexOfName(e) >= 0
        }, r.prototype.indexOfName = function(e) {
            var t = this._getDataWithEncodedVisual();
            return t.indexOfName(e)
        }, r.prototype.getItemVisual = function(e, t) {
            var i = this._getDataWithEncodedVisual();
            return i.getItemVisual(e, t)
        }, r
    }(),
    Aa = VW;
var BW = lt(),
    FW = function(r) {
        L(e, r);

        function e() {
            return r !== null && r.apply(this, arguments) || this
        }
        return e.prototype.init = function(t) {
            r.prototype.init.apply(this, arguments), this.legendVisualProvider = new Aa(H(this.getData, this), H(this.getRawData, this)), this._defaultLabelLine(t)
        }, e.prototype.mergeOption = function() {
            r.prototype.mergeOption.apply(this, arguments)
        }, e.prototype.getInitialData = function() {
            return si(this, {
                coordDimensions: ["value"],
                encodeDefaulter: rt(Dl, this)
            })
        }, e.prototype.getDataParams = function(t) {
            var i = this.getData(),
                a = BW(i),
                n = a.seats;
            if (!n) {
                var o = [];
                i.each(i.mapDimension("value"), function(l) {
                    o.push(l)
                }), n = a.seats = Dg(o, i.hostModel.get("percentPrecision"))
            }
            var s = r.prototype.getDataParams.call(this, t);
            return s.percent = n[t] || 0, s.$vars.push("percent"), s
        }, e.prototype._defaultLabelLine = function(t) {
            Qr(t, "labelLine", ["show"]);
            var i = t.labelLine,
                a = t.emphasis.labelLine;
            i.show = i.show && t.label.show, a.show = a.show && t.emphasis.label.show
        }, e.type = "series.pie", e.defaultOption = {
            z: 2,
            legendHoverLink: !0,
            colorBy: "data",
            center: ["50%", "50%"],
            radius: [0, "75%"],
            clockwise: !0,
            startAngle: 90,
            endAngle: "auto",
            padAngle: 0,
            minAngle: 0,
            minShowLabelAngle: 0,
            selectedOffset: 10,
            percentPrecision: 2,
            stillShowZeroSum: !0,
            left: 0,
            top: 0,
            right: 0,
            bottom: 0,
            width: null,
            height: null,
            label: {
                rotate: 0,
                show: !0,
                overflow: "truncate",
                position: "outer",
                alignTo: "none",
                edgeDistance: "25%",
                bleedMargin: 10,
                distanceToLabelLine: 5
            },
            labelLine: {
                show: !0,
                length: 15,
                length2: 15,
                smooth: !1,
                minTurnAngle: 90,
                maxSurfaceAngle: 90,
                lineStyle: {
                    width: 1,
                    type: "solid"
                }
            },
            itemStyle: {
                borderWidth: 1,
                borderJoin: "round"
            },
            showEmptyCircle: !0,
            emptyCircleStyle: {
                color: "lightgray",
                opacity: 1
            },
            labelLayout: {
                hideOverlap: !0
            },
            emphasis: {
                scale: !0,
                scaleSize: 5
            },
            avoidLabelOverlap: !0,
            animationType: "expansion",
            animationDuration: 1e3,
            animationTypeUpdate: "transition",
            animationEasingUpdate: "cubicInOut",
            animationDurationUpdate: 500,
            animationEasing: "cubicInOut"
        }, e
    }(Lt),
    QI = FW;

function Yx(r) {
    return {
        seriesType: r,
        reset: function(e, t) {
            var i = e.getData();
            i.filterSelf(function(a) {
                var n = i.mapDimension("value"),
                    o = i.get(n, a);
                return !(vt(o) && !isNaN(o) && o < 0)
            })
        }
    }
}

function Zx(r) {
    r.registerChartView(JI), r.registerSeriesModel(QI), Qh("pie", r.registerAction), r.registerLayout(rt(Fx, "pie")), r.registerProcessor(ra("pie")), r.registerProcessor(Yx("pie"))
}
var GW = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t.hasSymbolVisual = !0, t
        }
        return e.prototype.getInitialData = function(t, i) {
            return ze(null, this, {
                useEncodeDefaulter: !0
            })
        }, e.prototype.getProgressive = function() {
            var t = this.option.progressive;
            return t ? ? (this.option.large ? 5e3 : this.get("progressive"))
        }, e.prototype.getProgressiveThreshold = function() {
            var t = this.option.progressiveThreshold;
            return t ? ? (this.option.large ? 1e4 : this.get("progressiveThreshold"))
        }, e.prototype.brushSelector = function(t, i, a) {
            return a.point(i.getItemLayout(t))
        }, e.prototype.getZLevelKey = function() {
            return this.getData().count() > this.getProgressiveThreshold() ? this.id : ""
        }, e.type = "series.scatter", e.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"], e.defaultOption = {
            coordinateSystem: "cartesian2d",
            z: 2,
            legendHoverLink: !0,
            symbolSize: 10,
            large: !1,
            largeThreshold: 2e3,
            itemStyle: {
                opacity: .8
            },
            emphasis: {
                scale: !0
            },
            clip: !0,
            select: {
                itemStyle: {
                    borderColor: "#212121"
                }
            },
            universalTransition: {
                divideShape: "clone"
            }
        }, e
    }(Lt),
    $I = GW;
var tE = 4,
    HW = function() {
        function r() {}
        return r
    }(),
    WW = function(r) {
        L(e, r);

        function e(t) {
            var i = r.call(this, t) || this;
            return i._off = 0, i.hoverDataIdx = -1, i
        }
        return e.prototype.getDefaultShape = function() {
            return new HW
        }, e.prototype.reset = function() {
            this.notClear = !1, this._off = 0
        }, e.prototype.buildPath = function(t, i) {
            var a = i.points,
                n = i.size,
                o = this.symbolProxy,
                s = o.shape,
                l = t.getContext ? t.getContext() : t,
                u = l && n[0] < tE,
                f = this.softClipShape,
                p;
            if (u) {
                this._ctx = l;
                return
            }
            for (this._ctx = null, p = this._off; p < a.length;) {
                var c = a[p++],
                    h = a[p++];
                isNaN(c) || isNaN(h) || f && !f.contain(c, h) || (s.x = c - n[0] / 2, s.y = h - n[1] / 2, s.width = n[0], s.height = n[1], o.buildPath(t, s, !0))
            }
            this.incremental && (this._off = p, this.notClear = !0)
        }, e.prototype.afterBrush = function() {
            var t = this.shape,
                i = t.points,
                a = t.size,
                n = this._ctx,
                o = this.softClipShape,
                s;
            if (n) {
                for (s = this._off; s < i.length;) {
                    var l = i[s++],
                        u = i[s++];
                    isNaN(l) || isNaN(u) || o && !o.contain(l, u) || n.fillRect(l - a[0] / 2, u - a[1] / 2, a[0], a[1])
                }
                this.incremental && (this._off = s, this.notClear = !0)
            }
        }, e.prototype.findDataIndex = function(t, i) {
            for (var a = this.shape, n = a.points, o = a.size, s = Math.max(o[0], 4), l = Math.max(o[1], 4), u = n.length / 2 - 1; u >= 0; u--) {
                var f = u * 2,
                    p = n[f] - s / 2,
                    c = n[f + 1] - l / 2;
                if (t >= p && i >= c && t <= p + s && i <= c + l) return u
            }
            return -1
        }, e.prototype.contain = function(t, i) {
            var a = this.transformCoordToLocal(t, i),
                n = this.getBoundingRect();
            if (t = a[0], i = a[1], n.contain(t, i)) {
                var o = this.hoverDataIdx = this.findDataIndex(t, i);
                return o >= 0
            }
            return this.hoverDataIdx = -1, !1
        }, e.prototype.getBoundingRect = function() {
            var t = this._rect;
            if (!t) {
                for (var i = this.shape, a = i.points, n = i.size, o = n[0], s = n[1], l = 1 / 0, u = 1 / 0, f = -1 / 0, p = -1 / 0, c = 0; c < a.length;) {
                    var h = a[c++],
                        v = a[c++];
                    l = Math.min(h, l), f = Math.max(h, f), u = Math.min(v, u), p = Math.max(v, p)
                }
                t = this._rect = new it(l - o / 2, u - s / 2, f - l + o, p - u + s)
            }
            return t
        }, e
    }(st),
    YW = function() {
        function r() {
            this.group = new J
        }
        return r.prototype.updateData = function(e, t) {
            this._clear();
            var i = this._create();
            i.setShape({
                points: e.getLayout("points")
            }), this._setCommon(i, e, t)
        }, r.prototype.updateLayout = function(e) {
            var t = e.getLayout("points");
            this.group.eachChild(function(i) {
                if (i.startIndex != null) {
                    var a = (i.endIndex - i.startIndex) * 2,
                        n = i.startIndex * 4 * 2;
                    t = new Float32Array(t.buffer, n, a)
                }
                i.setShape("points", t), i.reset()
            })
        }, r.prototype.incrementalPrepareUpdate = function(e) {
            this._clear()
        }, r.prototype.incrementalUpdate = function(e, t, i) {
            var a = this._newAdded[0],
                n = t.getLayout("points"),
                o = a && a.shape.points;
            if (o && o.length < 2e4) {
                var s = o.length,
                    l = new Float32Array(s + n.length);
                l.set(o), l.set(n, s), a.endIndex = e.end, a.setShape({
                    points: l
                })
            } else {
                this._newAdded = [];
                var u = this._create();
                u.startIndex = e.start, u.endIndex = e.end, u.incremental = !0, u.setShape({
                    points: n
                }), this._setCommon(u, t, i)
            }
        }, r.prototype.eachRendered = function(e) {
            this._newAdded[0] && e(this._newAdded[0])
        }, r.prototype._create = function() {
            var e = new WW({
                cursor: "default"
            });
            return e.ignoreCoarsePointer = !0, this.group.add(e), this._newAdded.push(e), e
        }, r.prototype._setCommon = function(e, t, i) {
            var a = t.hostModel;
            i = i || {};
            var n = t.getVisual("symbolSize");
            e.setShape("size", n instanceof Array ? n : [n, n]), e.softClipShape = i.clipShape || null, e.symbolProxy = Vt(t.getVisual("symbol"), 0, 0, 0, 0), e.setColor = e.symbolProxy.setColor;
            var o = e.shape.size[0] < tE;
            e.useStyle(a.getModel("itemStyle").getItemStyle(o ? ["color", "shadowBlur", "shadowColor"] : ["color"]));
            var s = t.getVisual("style"),
                l = s && s.fill;
            l && e.setColor(l);
            var u = et(e);
            u.seriesIndex = a.seriesIndex, e.on("mousemove", function(f) {
                u.dataIndex = null;
                var p = e.hoverDataIdx;
                p >= 0 && (u.dataIndex = p + (e.startIndex || 0))
            })
        }, r.prototype.remove = function() {
            this._clear()
        }, r.prototype._clear = function() {
            this._newAdded = [], this.group.removeAll()
        }, r
    }(),
    eE = YW;
var ZW = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.render = function(t, i, a) {
            var n = t.getData(),
                o = this._updateSymbolDraw(n, t);
            o.updateData(n, {
                clipShape: this._getClipShape(t)
            }), this._finished = !0
        }, e.prototype.incrementalPrepareRender = function(t, i, a) {
            var n = t.getData(),
                o = this._updateSymbolDraw(n, t);
            o.incrementalPrepareUpdate(n), this._finished = !1
        }, e.prototype.incrementalRender = function(t, i, a) {
            this._symbolDraw.incrementalUpdate(t, i.getData(), {
                clipShape: this._getClipShape(i)
            }), this._finished = t.end === i.getData().count()
        }, e.prototype.updateTransform = function(t, i, a) {
            var n = t.getData();
            if (this.group.dirty(), !this._finished || n.count() > 1e4) return {
                update: !0
            };
            var o = ea("").reset(t, i, a);
            o.progress && o.progress({
                start: 0,
                end: n.count(),
                count: n.count()
            }, n), this._symbolDraw.updateLayout(n)
        }, e.prototype.eachRendered = function(t) {
            this._symbolDraw && this._symbolDraw.eachRendered(t)
        }, e.prototype._getClipShape = function(t) {
            if (t.get("clip", !0)) {
                var i = t.coordinateSystem;
                return i && i.getArea && i.getArea(.1)
            }
        }, e.prototype._updateSymbolDraw = function(t, i) {
            var a = this._symbolDraw,
                n = i.pipelineContext,
                o = n.large;
            return (!a || o !== this._isLargeDraw) && (a && a.remove(), a = this._symbolDraw = o ? new eE : new wa, this._isLargeDraw = o, this.group.removeAll()), this.group.add(a.group), a
        }, e.prototype.remove = function(t, i) {
            this._symbolDraw && this._symbolDraw.remove(!0), this._symbolDraw = null
        }, e.prototype.dispose = function() {}, e.type = "scatter", e
    }(At),
    rE = ZW;
var XW = function(r) {
        L(e, r);

        function e() {
            return r !== null && r.apply(this, arguments) || this
        }
        return e.type = "grid", e.dependencies = ["xAxis", "yAxis"], e.layoutMode = "box", e.defaultOption = {
            show: !1,
            z: 0,
            left: "10%",
            top: 60,
            right: "10%",
            bottom: 70,
            containLabel: !1,
            backgroundColor: "rgba(0,0,0,0)",
            borderWidth: 1,
            borderColor: "#ccc"
        }, e
    }(yt),
    iE = XW;
var Jv = function(r) {
    L(e, r);

    function e() {
        return r !== null && r.apply(this, arguments) || this
    }
    return e.prototype.getCoordSysModel = function() {
        return this.getReferringComponents("grid", Ht).models[0]
    }, e.type = "cartesian2dAxis", e
}(yt);
Bt(Jv, Ii);
var aE = {
        show: !0,
        z: 0,
        inverse: !1,
        name: "",
        nameLocation: "end",
        nameRotate: null,
        nameTruncate: {
            maxWidth: null,
            ellipsis: "...",
            placeholder: "."
        },
        nameTextStyle: {},
        nameGap: 15,
        silent: !1,
        triggerEvent: !1,
        tooltip: {
            show: !1
        },
        axisPointer: {},
        axisLine: {
            show: !0,
            onZero: !0,
            onZeroAxisIndex: null,
            lineStyle: {
                color: "#6E7079",
                width: 1,
                type: "solid"
            },
            symbol: ["none", "none"],
            symbolSize: [10, 15]
        },
        axisTick: {
            show: !0,
            inside: !1,
            length: 5,
            lineStyle: {
                width: 1
            }
        },
        axisLabel: {
            show: !0,
            inside: !1,
            rotate: 0,
            showMinLabel: null,
            showMaxLabel: null,
            margin: 8,
            fontSize: 12
        },
        splitLine: {
            show: !0,
            showMinLine: !0,
            showMaxLine: !0,
            lineStyle: {
                color: ["#E0E6F1"],
                width: 1,
                type: "solid"
            }
        },
        splitArea: {
            show: !1,
            areaStyle: {
                color: ["rgba(250,250,250,0.2)", "rgba(210,219,238,0.2)"]
            }
        }
    },
    qW = nt({
        boundaryGap: !0,
        deduplication: null,
        splitLine: {
            show: !1
        },
        axisTick: {
            alignWithLabel: !1,
            interval: "auto"
        },
        axisLabel: {
            interval: "auto"
        }
    }, aE),
    Xx = nt({
        boundaryGap: [0, 0],
        axisLine: {
            show: "auto"
        },
        axisTick: {
            show: "auto"
        },
        splitNumber: 5,
        minorTick: {
            show: !1,
            splitNumber: 5,
            length: 3,
            lineStyle: {}
        },
        minorSplitLine: {
            show: !1,
            lineStyle: {
                color: "#F4F7FD",
                width: 1
            }
        }
    }, aE),
    KW = nt({
        splitNumber: 6,
        axisLabel: {
            showMinLabel: !1,
            showMaxLabel: !1,
            rich: {
                primary: {
                    fontWeight: "bold"
                }
            }
        },
        splitLine: {
            show: !1
        }
    }, Xx),
    jW = q({
        logBase: 10
    }, Xx),
    Qv = {
        category: qW,
        value: Xx,
        time: KW,
        log: jW
    };
var nE = {
    value: 1,
    category: 1,
    time: 1,
    log: 1
};

function ia(r, e, t, i) {
    w(nE, function(a, n) {
        var o = nt(nt({}, Qv[n], !0), i, !0),
            s = function(l) {
                L(u, l);

                function u() {
                    var f = l !== null && l.apply(this, arguments) || this;
                    return f.type = e + "Axis." + n, f
                }
                return u.prototype.mergeDefaultAndTheme = function(f, p) {
                    var c = zn(this),
                        h = c ? bi(f) : {},
                        v = p.getTheme();
                    nt(f, v.get(n + "Axis")), nt(f, this.getDefaultOption()), f.type = oE(f), c && Ur(f, h, c)
                }, u.prototype.optionUpdated = function() {
                    var f = this.option;
                    f.type === "category" && (this.__ordinalMeta = Qf.createByAxisModel(this))
                }, u.prototype.getCategories = function(f) {
                    var p = this.option;
                    if (p.type === "category") return f ? p.data : this.__ordinalMeta.categories
                }, u.prototype.getOrdinalMeta = function() {
                    return this.__ordinalMeta
                }, u.type = e + "Axis." + n, u.defaultOption = o, u
            }(t);
        r.registerComponentModel(s)
    }), r.registerSubTypeDefaulter(e + "Axis", oE)
}

function oE(r) {
    return r.type || (r.data ? "category" : "value")
}
var JW = function() {
        function r(e) {
            this.type = "cartesian", this._dimList = [], this._axes = {}, this.name = e || ""
        }
        return r.prototype.getAxis = function(e) {
            return this._axes[e]
        }, r.prototype.getAxes = function() {
            return k(this._dimList, function(e) {
                return this._axes[e]
            }, this)
        }, r.prototype.getAxesByScale = function(e) {
            return e = e.toLowerCase(), wt(this.getAxes(), function(t) {
                return t.scale.type === e
            })
        }, r.prototype.addAxis = function(e) {
            var t = e.dim;
            this._axes[t] = e, this._dimList.push(t)
        }, r
    }(),
    sE = JW;
var $v = ["x", "y"];

function lE(r) {
    return r.type === "interval" || r.type === "time"
}
var QW = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = "cartesian2d", t.dimensions = $v, t
        }
        return e.prototype.calcAffineTransform = function() {
            this._transform = this._invTransform = null;
            var t = this.getAxis("x").scale,
                i = this.getAxis("y").scale;
            if (!(!lE(t) || !lE(i))) {
                var a = t.getExtent(),
                    n = i.getExtent(),
                    o = this.dataToPoint([a[0], n[0]]),
                    s = this.dataToPoint([a[1], n[1]]),
                    l = a[1] - a[0],
                    u = n[1] - n[0];
                if (!(!l || !u)) {
                    var f = (s[0] - o[0]) / l,
                        p = (s[1] - o[1]) / u,
                        c = o[0] - a[0] * f,
                        h = o[1] - n[0] * p,
                        v = this._transform = [f, 0, 0, p, c, h];
                    this._invTransform = jr([], v)
                }
            }
        }, e.prototype.getBaseAxis = function() {
            return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAxis("x")
        }, e.prototype.containPoint = function(t) {
            var i = this.getAxis("x"),
                a = this.getAxis("y");
            return i.contain(i.toLocalCoord(t[0])) && a.contain(a.toLocalCoord(t[1]))
        }, e.prototype.containData = function(t) {
            return this.getAxis("x").containData(t[0]) && this.getAxis("y").containData(t[1])
        }, e.prototype.containZone = function(t, i) {
            var a = this.dataToPoint(t),
                n = this.dataToPoint(i),
                o = this.getArea(),
                s = new it(a[0], a[1], n[0] - a[0], n[1] - a[1]);
            return o.intersect(s)
        }, e.prototype.dataToPoint = function(t, i, a) {
            a = a || [];
            var n = t[0],
                o = t[1];
            if (this._transform && n != null && isFinite(n) && o != null && isFinite(o)) return fe(a, t, this._transform);
            var s = this.getAxis("x"),
                l = this.getAxis("y");
            return a[0] = s.toGlobalCoord(s.dataToCoord(n, i)), a[1] = l.toGlobalCoord(l.dataToCoord(o, i)), a
        }, e.prototype.clampData = function(t, i) {
            var a = this.getAxis("x").scale,
                n = this.getAxis("y").scale,
                o = a.getExtent(),
                s = n.getExtent(),
                l = a.parse(t[0]),
                u = n.parse(t[1]);
            return i = i || [], i[0] = Math.min(Math.max(Math.min(o[0], o[1]), l), Math.max(o[0], o[1])), i[1] = Math.min(Math.max(Math.min(s[0], s[1]), u), Math.max(s[0], s[1])), i
        }, e.prototype.pointToData = function(t, i) {
            var a = [];
            if (this._invTransform) return fe(a, t, this._invTransform);
            var n = this.getAxis("x"),
                o = this.getAxis("y");
            return a[0] = n.coordToData(n.toLocalCoord(t[0]), i), a[1] = o.coordToData(o.toLocalCoord(t[1]), i), a
        }, e.prototype.getOtherAxis = function(t) {
            return this.getAxis(t.dim === "x" ? "y" : "x")
        }, e.prototype.getArea = function(t) {
            t = t || 0;
            var i = this.getAxis("x").getGlobalExtent(),
                a = this.getAxis("y").getGlobalExtent(),
                n = Math.min(i[0], i[1]) - t,
                o = Math.min(a[0], a[1]) - t,
                s = Math.max(i[0], i[1]) - n + t,
                l = Math.max(a[0], a[1]) - o + t;
            return new it(n, o, s, l)
        }, e
    }(sE),
    uE = QW;
var $W = function(r) {
        L(e, r);

        function e(t, i, a, n, o) {
            var s = r.call(this, t, i, a) || this;
            return s.index = 0, s.type = n || "value", s.position = o || "bottom", s
        }
        return e.prototype.isHorizontal = function() {
            var t = this.position;
            return t === "top" || t === "bottom"
        }, e.prototype.getGlobalExtent = function(t) {
            var i = this.getExtent();
            return i[0] = this.toGlobalCoord(i[0]), i[1] = this.toGlobalCoord(i[1]), t && i[0] > i[1] && i.reverse(), i
        }, e.prototype.pointToData = function(t, i) {
            return this.coordToData(this.toLocalCoord(t[this.dim === "x" ? 0 : 1]), i)
        }, e.prototype.setCategorySortInfo = function(t) {
            if (this.type !== "category") return !1;
            this.model.option.categorySortInfo = t, this.scale.setSortInfo(t)
        }, e
    }(Fe),
    fE = $W;

function dp(r, e, t) {
    t = t || {};
    var i = r.coordinateSystem,
        a = e.axis,
        n = {},
        o = a.getAxesOnZeroOf()[0],
        s = a.position,
        l = o ? "onZero" : s,
        u = a.dim,
        f = i.getRect(),
        p = [f.x, f.x + f.width, f.y, f.y + f.height],
        c = {
            left: 0,
            right: 1,
            top: 0,
            bottom: 1,
            onZero: 2
        },
        h = e.get("offset") || 0,
        v = u === "x" ? [p[2] - h, p[3] + h] : [p[0] - h, p[1] + h];
    if (o) {
        var d = o.toGlobalCoord(o.dataToCoord(0));
        v[c.onZero] = Math.max(Math.min(d, v[1]), v[0])
    }
    n.position = [u === "y" ? v[c[l]] : p[0], u === "x" ? v[c[l]] : p[3]], n.rotation = Math.PI / 2 * (u === "x" ? 0 : 1);
    var m = {
        top: -1,
        bottom: 1,
        left: -1,
        right: 1
    };
    n.labelDirection = n.tickDirection = n.nameDirection = m[s], n.labelOffset = o ? v[c[s]] - v[c.onZero] : 0, e.get(["axisTick", "inside"]) && (n.tickDirection = -n.tickDirection), Kt(t.labelInside, e.get(["axisLabel", "inside"])) && (n.labelDirection = -n.labelDirection);
    var g = e.get(["axisLabel", "rotate"]);
    return n.labelRotate = l === "top" ? -g : g, n.z2 = 1, n
}

function qx(r) {
    return r.get("coordinateSystem") === "cartesian2d"
}

function Kx(r) {
    var e = {
        xAxisModel: null,
        yAxisModel: null
    };
    return w(e, function(t, i) {
        var a = i.replace(/Model$/, ""),
            n = r.getReferringComponents(a, Ht).models[0];
        e[i] = n
    }), e
}
var jx = Math.log;

function td(r, e, t) {
    var i = Hr.prototype,
        a = i.getTicks.call(t),
        n = i.getTicks.call(t, !0),
        o = a.length - 1,
        s = i.getInterval.call(t),
        l = j0(r, e),
        u = l.extent,
        f = l.fixMin,
        p = l.fixMax;
    if (r.type === "log") {
        var c = jx(r.base);
        u = [jx(u[0]) / c, jx(u[1]) / c]
    }
    r.setExtent(u[0], u[1]), r.calcNiceExtent({
        splitNumber: o,
        fixMin: f,
        fixMax: p
    });
    var h = i.getExtent.call(r);
    f && (u[0] = h[0]), p && (u[1] = h[1]);
    var v = i.getInterval.call(r),
        d = u[0],
        m = u[1];
    if (f && p) v = (m - d) / o;
    else if (f)
        for (m = u[0] + v * o; m < u[1] && isFinite(m) && isFinite(u[1]);) v = dv(v), m = u[0] + v * o;
    else if (p)
        for (d = u[1] - v * o; d > u[0] && isFinite(d) && isFinite(u[0]);) v = dv(v), d = u[1] - v * o;
    else {
        var g = r.getTicks().length - 1;
        g > o && (v = dv(v));
        var y = v * o;
        m = Math.ceil(u[1] / v) * v, d = Gt(m - y), d < 0 && u[0] >= 0 ? (d = 0, m = Gt(y)) : m > 0 && u[1] <= 0 && (m = 0, d = -Gt(y))
    }
    var x = (a[0].value - n[0].value) / s,
        _ = (a[o].value - n[o].value) / s;
    if (i.setExtent.call(r, d + v * x, m + v * _), i.setInterval.call(r, v), (x || _) && i.setNiceExtent.call(r, d + v, m - v), 0) var S
}
var t4 = function() {
    function r(e, t, i) {
        this.type = "grid", this._coordsMap = {}, this._coordsList = [], this._axesMap = {}, this._axesList = [], this.axisPointerEnabled = !0, this.dimensions = $v, this._initCartesian(e, t, i), this.model = e
    }
    return r.prototype.getRect = function() {
        return this._rect
    }, r.prototype.update = function(e, t) {
        var i = this._axesMap;
        this._updateScale(e, this.model);

        function a(o) {
            var s, l = ft(o),
                u = l.length;
            if (u) {
                for (var f = [], p = u - 1; p >= 0; p--) {
                    var c = +l[p],
                        h = o[c],
                        v = h.model,
                        d = h.scale;
                    $f(d) && v.get("alignTicks") && v.get("interval") == null ? f.push(h) : (Li(d, v), $f(d) && (s = h))
                }
                f.length && (s || (s = f.pop(), Li(s.scale, s.model)), w(f, function(m) {
                    td(m.scale, m.model, s.scale)
                }))
            }
        }
        a(i.x), a(i.y);
        var n = {};
        w(i.x, function(o) {
            cE(i, "y", o, n)
        }), w(i.y, function(o) {
            cE(i, "x", o, n)
        }), this.resize(this.model, t)
    }, r.prototype.resize = function(e, t, i) {
        var a = e.getBoxLayoutParams(),
            n = !i && e.get("containLabel"),
            o = Ut(a, {
                width: t.getWidth(),
                height: t.getHeight()
            });
        this._rect = o;
        var s = this._axesList;
        l(), n && (w(s, function(u) {
            if (!u.model.get(["axisLabel", "inside"])) {
                var f = gL(u);
                if (f) {
                    var p = u.isHorizontal() ? "height" : "width",
                        c = u.model.get(["axisLabel", "margin"]);
                    o[p] -= f[p] + c, u.position === "top" ? o.y += f.height + c : u.position === "left" && (o.x += f.width + c)
                }
            }
        }), l()), w(this._coordsList, function(u) {
            u.calcAffineTransform()
        });

        function l() {
            w(s, function(u) {
                var f = u.isHorizontal(),
                    p = f ? [0, o.width] : [0, o.height],
                    c = u.inverse ? 1 : 0;
                u.setExtent(p[c], p[1 - c]), e4(u, f ? o.x : o.y)
            })
        }
    }, r.prototype.getAxis = function(e, t) {
        var i = this._axesMap[e];
        if (i != null) return i[t || 0]
    }, r.prototype.getAxes = function() {
        return this._axesList.slice()
    }, r.prototype.getCartesian = function(e, t) {
        if (e != null && t != null) {
            var i = "x" + e + "y" + t;
            return this._coordsMap[i]
        }
        j(e) && (t = e.yAxisIndex, e = e.xAxisIndex);
        for (var a = 0, n = this._coordsList; a < n.length; a++)
            if (n[a].getAxis("x").index === e || n[a].getAxis("y").index === t) return n[a]
    }, r.prototype.getCartesians = function() {
        return this._coordsList.slice()
    }, r.prototype.convertToPixel = function(e, t, i) {
        var a = this._findConvertTarget(t);
        return a.cartesian ? a.cartesian.dataToPoint(i) : a.axis ? a.axis.toGlobalCoord(a.axis.dataToCoord(i)) : null
    }, r.prototype.convertFromPixel = function(e, t, i) {
        var a = this._findConvertTarget(t);
        return a.cartesian ? a.cartesian.pointToData(i) : a.axis ? a.axis.coordToData(a.axis.toLocalCoord(i)) : null
    }, r.prototype._findConvertTarget = function(e) {
        var t = e.seriesModel,
            i = e.xAxisModel || t && t.getReferringComponents("xAxis", Ht).models[0],
            a = e.yAxisModel || t && t.getReferringComponents("yAxis", Ht).models[0],
            n = e.gridModel,
            o = this._coordsList,
            s, l;
        if (t) s = t.coordinateSystem, at(o, s) < 0 && (s = null);
        else if (i && a) s = this.getCartesian(i.componentIndex, a.componentIndex);
        else if (i) l = this.getAxis("x", i.componentIndex);
        else if (a) l = this.getAxis("y", a.componentIndex);
        else if (n) {
            var u = n.coordinateSystem;
            u === this && (s = this._coordsList[0])
        }
        return {
            cartesian: s,
            axis: l
        }
    }, r.prototype.containPoint = function(e) {
        var t = this._coordsList[0];
        if (t) return t.containPoint(e)
    }, r.prototype._initCartesian = function(e, t, i) {
        var a = this,
            n = this,
            o = {
                left: !1,
                right: !1,
                top: !1,
                bottom: !1
            },
            s = {
                x: {},
                y: {}
            },
            l = {
                x: 0,
                y: 0
            };
        if (t.eachComponent("xAxis", u("x"), this), t.eachComponent("yAxis", u("y"), this), !l.x || !l.y) {
            this._axesMap = {}, this._axesList = [];
            return
        }
        this._axesMap = s, w(s.x, function(f, p) {
            w(s.y, function(c, h) {
                var v = "x" + p + "y" + h,
                    d = new uE(v);
                d.master = a, d.model = e, a._coordsMap[v] = d, a._coordsList.push(d), d.addAxis(f), d.addAxis(c)
            })
        });

        function u(f) {
            return function(p, c) {
                if (Jx(p, e)) {
                    var h = p.get("position");
                    f === "x" ? h !== "top" && h !== "bottom" && (h = o.bottom ? "top" : "bottom") : h !== "left" && h !== "right" && (h = o.left ? "right" : "left"), o[h] = !0;
                    var v = new fE(f, xa(p), [0, 0], p.get("type"), h),
                        d = v.type === "category";
                    v.onBand = d && p.get("boundaryGap"), v.inverse = p.get("inverse"), p.axis = v, v.model = p, v.grid = n, v.index = c, n._axesList.push(v), s[f][c] = v, l[f]++
                }
            }
        }
    }, r.prototype._updateScale = function(e, t) {
        w(this._axesList, function(a) {
            if (a.scale.setExtent(1 / 0, -1 / 0), a.type === "category") {
                var n = a.model.get("categorySortInfo");
                a.scale.setSortInfo(n)
            }
        }), e.eachSeries(function(a) {
            if (qx(a)) {
                var n = Kx(a),
                    o = n.xAxisModel,
                    s = n.yAxisModel;
                if (!Jx(o, t) || !Jx(s, t)) return;
                var l = this.getCartesian(o.componentIndex, s.componentIndex),
                    u = a.getData(),
                    f = l.getAxis("x"),
                    p = l.getAxis("y");
                i(u, f), i(u, p)
            }
        }, this);

        function i(a, n) {
            w(Ul(a, n.dim), function(o) {
                n.scale.unionExtentFromData(a, o)
            })
        }
    }, r.prototype.getTooltipAxes = function(e) {
        var t = [],
            i = [];
        return w(this.getCartesians(), function(a) {
            var n = e != null && e !== "auto" ? a.getAxis(e) : a.getBaseAxis(),
                o = a.getOtherAxis(n);
            at(t, n) < 0 && t.push(n), at(i, o) < 0 && i.push(o)
        }), {
            baseAxes: t,
            otherAxes: i
        }
    }, r.create = function(e, t) {
        var i = [];
        return e.eachComponent("grid", function(a, n) {
            var o = new r(a, e, t);
            o.name = "grid_" + n, o.resize(a, t, !0), a.coordinateSystem = o, i.push(o)
        }), e.eachSeries(function(a) {
            if (qx(a)) {
                var n = Kx(a),
                    o = n.xAxisModel,
                    s = n.yAxisModel,
                    l = o.getCoordSysModel(),
                    u = l.coordinateSystem;
                a.coordinateSystem = u.getCartesian(o.componentIndex, s.componentIndex)
            }
        }), i
    }, r.dimensions = $v, r
}();

function Jx(r, e) {
    return r.getCoordSysModel() === e
}

function cE(r, e, t, i) {
    t.getAxesOnZeroOf = function() {
        return n ? [n] : []
    };
    var a = r[e],
        n, o = t.model,
        s = o.get(["axisLine", "onZero"]),
        l = o.get(["axisLine", "onZeroAxisIndex"]);
    if (!s) return;
    if (l != null) hE(a[l]) && (n = a[l]);
    else
        for (var u in a)
            if (a.hasOwnProperty(u) && hE(a[u]) && !i[f(a[u])]) {
                n = a[u];
                break
            }
    n && (i[f(n)] = !0);

    function f(p) {
        return p.dim + "_" + p.index
    }
}

function hE(r) {
    return r && r.type !== "category" && r.type !== "time" && mL(r)
}

function e4(r, e) {
    var t = r.getExtent(),
        i = t[0] + t[1];
    r.toGlobalCoord = r.dim === "x" ? function(a) {
        return a + e
    } : function(a) {
        return i - a + e
    }, r.toLocalCoord = r.dim === "x" ? function(a) {
        return a - e
    } : function(a) {
        return i - a + e
    }
}
var vE = t4;
var Jn = Math.PI,
    bs = function() {
        function r(e, t) {
            this.group = new J, this.opt = t, this.axisModel = e, q(t, {
                labelOffset: 0,
                nameDirection: 1,
                tickDirection: 1,
                labelDirection: 1,
                silent: !0,
                handleAutoShown: function() {
                    return !0
                }
            });
            var i = new J({
                x: t.position[0],
                y: t.position[1],
                rotation: t.rotation
            });
            i.updateTransform(), this._transformGroup = i
        }
        return r.prototype.hasBuilder = function(e) {
            return !!dE[e]
        }, r.prototype.add = function(e) {
            dE[e](this.opt, this.axisModel, this.group, this._transformGroup)
        }, r.prototype.getGroup = function() {
            return this.group
        }, r.innerTextLayout = function(e, t, i) {
            var a = Ju(t - e),
                n, o;
            return Va(a) ? (o = i > 0 ? "top" : "bottom", n = "center") : Va(a - Jn) ? (o = i > 0 ? "bottom" : "top", n = "center") : (o = "middle", a > 0 && a < Jn ? n = i > 0 ? "right" : "left" : n = i > 0 ? "left" : "right"), {
                rotation: a,
                textAlign: n,
                textVerticalAlign: o
            }
        }, r.makeAxisEventDataBase = function(e) {
            var t = {
                componentType: e.mainType,
                componentIndex: e.componentIndex
            };
            return t[e.mainType + "Index"] = e.componentIndex, t
        }, r.isLabelSilent = function(e) {
            var t = e.get("tooltip");
            return e.get("silent") || !(e.get("triggerEvent") || t && t.show)
        }, r
    }(),
    dE = {
        axisLine: function(r, e, t, i) {
            var a = e.get(["axisLine", "show"]);
            if (a === "auto" && r.handleAutoShown && (a = r.handleAutoShown("axisLine")), !!a) {
                var n = e.axis.getExtent(),
                    o = i.transform,
                    s = [n[0], 0],
                    l = [n[1], 0],
                    u = s[0] > l[0];
                o && (fe(s, s, o), fe(l, l, o));
                var f = O({
                        lineCap: "round"
                    }, e.getModel(["axisLine", "lineStyle"]).getLineStyle()),
                    p = new ee({
                        shape: {
                            x1: s[0],
                            y1: s[1],
                            x2: l[0],
                            y2: l[1]
                        },
                        style: f,
                        strokeContainThreshold: r.strokeContainThreshold || 5,
                        silent: !0,
                        z2: 1
                    });
                Ka(p.shape, p.style.lineWidth), p.anid = "line", t.add(p);
                var c = e.get(["axisLine", "symbol"]);
                if (c != null) {
                    var h = e.get(["axisLine", "symbolSize"]);
                    F(c) && (c = [c, c]), (F(h) || vt(h)) && (h = [h, h]);
                    var v = oi(e.get(["axisLine", "symbolOffset"]) || 0, h),
                        d = h[0],
                        m = h[1];
                    w([{
                        rotate: r.rotation + Math.PI / 2,
                        offset: v[0],
                        r: 0
                    }, {
                        rotate: r.rotation - Math.PI / 2,
                        offset: v[1],
                        r: Math.sqrt((s[0] - l[0]) * (s[0] - l[0]) + (s[1] - l[1]) * (s[1] - l[1]))
                    }], function(g, y) {
                        if (c[y] !== "none" && c[y] != null) {
                            var x = Vt(c[y], -d / 2, -m / 2, d, m, f.stroke, !0),
                                _ = g.r + g.offset,
                                S = u ? l : s;
                            x.attr({
                                rotation: g.rotate,
                                x: S[0] + _ * Math.cos(r.rotation),
                                y: S[1] - _ * Math.sin(r.rotation),
                                silent: !0,
                                z2: 11
                            }), t.add(x)
                        }
                    })
                }
            }
        },
        axisTickLabel: function(r, e, t, i) {
            var a = a4(t, i, e, r),
                n = o4(t, i, e, r);
            if (i4(e, n, a), n4(t, i, e, r.tickDirection), e.get(["axisLabel", "hideOverlap"])) {
                var o = Iv(k(n, function(s) {
                    return {
                        label: s,
                        priority: s.z2,
                        defaultAttr: {
                            ignore: s.ignore
                        }
                    }
                }));
                Pv(o)
            }
        },
        axisName: function(r, e, t, i) {
            var a = Kt(r.axisName, e.get("name"));
            if (a) {
                var n = e.get("nameLocation"),
                    o = r.nameDirection,
                    s = e.getModel("nameTextStyle"),
                    l = e.get("nameGap") || 0,
                    u = e.axis.getExtent(),
                    f = u[0] > u[1] ? -1 : 1,
                    p = [n === "start" ? u[0] - f * l : n === "end" ? u[1] + f * l : (u[0] + u[1]) / 2, gE(n) ? r.labelOffset + o * l : 0],
                    c, h = e.get("nameRotate");
                h != null && (h = h * Jn / 180);
                var v;
                gE(n) ? c = bs.innerTextLayout(r.rotation, h ? ? r.rotation, o) : (c = r4(r.rotation, n, h || 0, u), v = r.axisNameAvailableWidth, v != null && (v = Math.abs(v / Math.sin(c.rotation)), !isFinite(v) && (v = null)));
                var d = s.getFont(),
                    m = e.get("nameTruncate", !0) || {},
                    g = m.ellipsis,
                    y = Kt(r.nameTruncateMaxWidth, m.maxWidth, v),
                    x = new dt({
                        x: p[0],
                        y: p[1],
                        rotation: c.rotation,
                        silent: bs.isLabelSilent(e),
                        style: zt(s, {
                            text: a,
                            font: d,
                            overflow: "truncate",
                            width: y,
                            ellipsis: g,
                            fill: s.getTextColor() || e.get(["axisLine", "lineStyle", "color"]),
                            align: s.get("align") || c.textAlign,
                            verticalAlign: s.get("verticalAlign") || c.textVerticalAlign
                        }),
                        z2: 1
                    });
                if (_i({
                        el: x,
                        componentModel: e,
                        itemName: a
                    }), x.__fullText = a, x.anid = "name", e.get("triggerEvent")) {
                    var _ = bs.makeAxisEventDataBase(e);
                    _.targetType = "axisName", _.name = a, et(x).eventData = _
                }
                i.add(x), x.updateTransform(), t.add(x), x.decomposeTransform()
            }
        }
    };

function r4(r, e, t, i) {
    var a = Ju(t - r),
        n, o, s = i[0] > i[1],
        l = e === "start" && !s || e !== "start" && s;
    return Va(a - Jn / 2) ? (o = l ? "bottom" : "top", n = "center") : Va(a - Jn * 1.5) ? (o = l ? "top" : "bottom", n = "center") : (o = "middle", a < Jn * 1.5 && a > Jn / 2 ? n = l ? "left" : "right" : n = l ? "right" : "left"), {
        rotation: a,
        textAlign: n,
        textVerticalAlign: o
    }
}

function i4(r, e, t) {
    if (!Av(r.axis)) {
        var i = r.get(["axisLabel", "showMinLabel"]),
            a = r.get(["axisLabel", "showMaxLabel"]);
        e = e || [], t = t || [];
        var n = e[0],
            o = e[1],
            s = e[e.length - 1],
            l = e[e.length - 2],
            u = t[0],
            f = t[1],
            p = t[t.length - 1],
            c = t[t.length - 2];
        i === !1 ? (Pi(n), Pi(u)) : mE(n, o) && (i ? (Pi(o), Pi(f)) : (Pi(n), Pi(u))), a === !1 ? (Pi(s), Pi(p)) : mE(l, s) && (a ? (Pi(l), Pi(c)) : (Pi(s), Pi(p)))
    }
}

function Pi(r) {
    r && (r.ignore = !0)
}

function mE(r, e) {
    var t = r && r.getBoundingRect().clone(),
        i = e && e.getBoundingRect().clone();
    if (!(!t || !i)) {
        var a = za([]);
        return cr(a, a, -r.rotation), t.applyTransform(pr([], a, r.getLocalTransform())), i.applyTransform(pr([], a, e.getLocalTransform())), t.intersect(i)
    }
}

function gE(r) {
    return r === "middle" || r === "center"
}

function yE(r, e, t, i, a) {
    for (var n = [], o = [], s = [], l = 0; l < r.length; l++) {
        var u = r[l].coord;
        o[0] = u, o[1] = 0, s[0] = u, s[1] = t, e && (fe(o, o, e), fe(s, s, e));
        var f = new ee({
            shape: {
                x1: o[0],
                y1: o[1],
                x2: s[0],
                y2: s[1]
            },
            style: i,
            z2: 2,
            autoBatch: !0,
            silent: !0
        });
        Ka(f.shape, f.style.lineWidth), f.anid = a + "_" + r[l].tickValue, n.push(f)
    }
    return n
}

function a4(r, e, t, i) {
    var a = t.axis,
        n = t.getModel("axisTick"),
        o = n.get("show");
    if (o === "auto" && i.handleAutoShown && (o = i.handleAutoShown("axisTick")), !(!o || a.scale.isBlank())) {
        for (var s = n.getModel("lineStyle"), l = i.tickDirection * n.get("length"), u = a.getTicksCoords(), f = yE(u, e.transform, l, q(s.getLineStyle(), {
                stroke: t.get(["axisLine", "lineStyle", "color"])
            }), "ticks"), p = 0; p < f.length; p++) r.add(f[p]);
        return f
    }
}

function n4(r, e, t, i) {
    var a = t.axis,
        n = t.getModel("minorTick");
    if (!(!n.get("show") || a.scale.isBlank())) {
        var o = a.getMinorTicksCoords();
        if (o.length)
            for (var s = n.getModel("lineStyle"), l = i * n.get("length"), u = q(s.getLineStyle(), q(t.getModel("axisTick").getLineStyle(), {
                    stroke: t.get(["axisLine", "lineStyle", "color"])
                })), f = 0; f < o.length; f++)
                for (var p = yE(o[f], e.transform, l, u, "minorticks_" + f), c = 0; c < p.length; c++) r.add(p[c])
    }
}

function o4(r, e, t, i) {
    var a = t.axis,
        n = Kt(i.axisLabelShow, t.get(["axisLabel", "show"]));
    if (!(!n || a.scale.isBlank())) {
        var o = t.getModel("axisLabel"),
            s = o.get("margin"),
            l = a.getViewLabels(),
            u = (Kt(i.labelRotate, o.get("rotate")) || 0) * Jn / 180,
            f = bs.innerTextLayout(i.rotation, u, i.labelDirection),
            p = t.getCategories && t.getCategories(!0),
            c = [],
            h = bs.isLabelSilent(t),
            v = t.get("triggerEvent");
        return w(l, function(d, m) {
            var g = a.scale.type === "ordinal" ? a.scale.getRawOrdinalNumber(d.tickValue) : d.tickValue,
                y = d.formattedLabel,
                x = d.rawLabel,
                _ = o;
            if (p && p[g]) {
                var S = p[g];
                j(S) && S.textStyle && (_ = new Dt(S.textStyle, o, t.ecModel))
            }
            var b = _.getTextColor() || t.get(["axisLine", "lineStyle", "color"]),
                T = a.dataToCoord(g),
                C = _.getShallow("align", !0) || f.textAlign,
                A = ot(_.getShallow("alignMinLabel", !0), C),
                D = ot(_.getShallow("alignMaxLabel", !0), C),
                M = _.getShallow("verticalAlign", !0) || _.getShallow("baseline", !0) || f.textVerticalAlign,
                I = ot(_.getShallow("verticalAlignMinLabel", !0), M),
                E = ot(_.getShallow("verticalAlignMaxLabel", !0), M),
                P = new dt({
                    x: T,
                    y: i.labelOffset + i.labelDirection * s,
                    rotation: f.rotation,
                    silent: h,
                    z2: 10 + (d.level || 0),
                    style: zt(_, {
                        text: y,
                        align: m === 0 ? A : m === l.length - 1 ? D : C,
                        verticalAlign: m === 0 ? I : m === l.length - 1 ? E : M,
                        fill: X(b) ? b(a.type === "category" ? x : a.type === "value" ? g + "" : g, m) : b
                    })
                });
            if (P.anid = "label_" + g, _i({
                    el: P,
                    componentModel: t,
                    itemName: y,
                    formatterParamsExtra: {
                        isTruncated: function() {
                            return P.isTruncated
                        },
                        value: x,
                        tickIndex: m
                    }
                }), v) {
                var R = bs.makeAxisEventDataBase(t);
                R.targetType = "axisLabel", R.value = x, R.tickIndex = m, a.type === "category" && (R.dataIndex = g), et(P).eventData = R
            }
            e.add(P), P.updateTransform(), c.push(P), r.add(P), P.decomposeTransform()
        }), c
    }
}
var er = bs;

function xE(r, e) {
    var t = {
        axesInfo: {},
        seriesInvolved: !1,
        coordSysAxesInfo: {},
        coordSysMap: {}
    };
    return s4(t, r, e), t.seriesInvolved && u4(t, r), t
}

function s4(r, e, t) {
    var i = e.getComponent("tooltip"),
        a = e.getComponent("axisPointer"),
        n = a.get("link", !0) || [],
        o = [];
    w(t.getCoordinateSystems(), function(s) {
        if (!s.axisPointerEnabled) return;
        var l = Wl(s.model),
            u = r.coordSysAxesInfo[l] = {};
        r.coordSysMap[l] = s;
        var f = s.model,
            p = f.getModel("tooltip", i);
        if (w(s.getAxes(), rt(d, !1, null)), s.getTooltipAxes && i && p.get("show")) {
            var c = p.get("trigger") === "axis",
                h = p.get(["axisPointer", "type"]) === "cross",
                v = s.getTooltipAxes(p.get(["axisPointer", "axis"]));
            (c || h) && w(v.baseAxes, rt(d, h ? "cross" : !0, c)), h && w(v.otherAxes, rt(d, "cross", !1))
        }

        function d(m, g, y) {
            var x = y.model.getModel("axisPointer", a),
                _ = x.get("show");
            if (!(!_ || _ === "auto" && !m && !$x(x))) {
                g == null && (g = x.get("triggerTooltip")), x = m ? l4(y, p, a, e, m, g) : x;
                var S = x.get("snap"),
                    b = x.get("triggerEmphasis"),
                    T = Wl(y.model),
                    C = g || S || y.type === "category",
                    A = r.axesInfo[T] = {
                        key: T,
                        axis: y,
                        coordSys: s,
                        axisPointerModel: x,
                        triggerTooltip: g,
                        triggerEmphasis: b,
                        involveSeries: C,
                        snap: S,
                        useHandle: $x(x),
                        seriesModels: [],
                        linkGroup: null
                    };
                u[T] = A, r.seriesInvolved = r.seriesInvolved || C;
                var D = f4(n, y);
                if (D != null) {
                    var M = o[D] || (o[D] = {
                        axesInfo: {}
                    });
                    M.axesInfo[T] = A, M.mapper = n[D].mapper, A.linkGroup = M
                }
            }
        }
    })
}

function l4(r, e, t, i, a, n) {
    var o = e.getModel("axisPointer"),
        s = ["type", "snap", "lineStyle", "shadowStyle", "label", "animation", "animationDurationUpdate", "animationEasingUpdate", "z"],
        l = {};
    w(s, function(c) {
        l[c] = Q(o.get(c))
    }), l.snap = r.type !== "category" && !!n, o.get("type") === "cross" && (l.type = "line");
    var u = l.label || (l.label = {});
    if (u.show == null && (u.show = !1), a === "cross") {
        var f = o.get(["label", "show"]);
        if (u.show = f ? ? !0, !n) {
            var p = l.lineStyle = o.get("crossStyle");
            p && q(u, p.textStyle)
        }
    }
    return r.model.getModel("axisPointer", new Dt(l, t, i))
}

function u4(r, e) {
    e.eachSeries(function(t) {
        var i = t.coordinateSystem,
            a = t.get(["tooltip", "trigger"], !0),
            n = t.get(["tooltip", "show"], !0);
        !i || a === "none" || a === !1 || a === "item" || n === !1 || t.get(["axisPointer", "show"], !0) === !1 || w(r.coordSysAxesInfo[Wl(i.model)], function(o) {
            var s = o.axis;
            i.getAxis(s.dim) === s && (o.seriesModels.push(t), o.seriesDataCount == null && (o.seriesDataCount = 0), o.seriesDataCount += t.getData().count())
        })
    })
}

function f4(r, e) {
    for (var t = e.model, i = e.dim, a = 0; a < r.length; a++) {
        var n = r[a] || {};
        if (Qx(n[i + "AxisId"], t.id) || Qx(n[i + "AxisIndex"], t.componentIndex) || Qx(n[i + "AxisName"], t.name)) return a
    }
}

function Qx(r, e) {
    return r === "all" || z(r) && at(r, e) >= 0 || r === e
}

function _E(r) {
    var e = ed(r);
    if (e) {
        var t = e.axisPointerModel,
            i = e.axis.scale,
            a = t.option,
            n = t.get("status"),
            o = t.get("value");
        o != null && (o = i.parse(o));
        var s = $x(t);
        n == null && (a.status = s ? "show" : "hide");
        var l = i.getExtent().slice();
        l[0] > l[1] && l.reverse(), (o == null || o > l[1]) && (o = l[1]), o < l[0] && (o = l[0]), a.value = o, s && (a.status = e.axis.scale.isBlank() ? "hide" : "show")
    }
}

function ed(r) {
    var e = (r.ecModel.getComponent("axisPointer") || {}).coordSysAxesInfo;
    return e && e.axesInfo[Wl(r)]
}

function SE(r) {
    var e = ed(r);
    return e && e.axisPointerModel
}

function $x(r) {
    return !!r.get(["handle", "show"])
}

function Wl(r) {
    return r.type + "||" + r.id
}
var bE = {},
    p4 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.render = function(t, i, a, n) {
            this.axisPointerClass && _E(t), r.prototype.render.apply(this, arguments), this._doUpdateAxisPointerClass(t, a, !0)
        }, e.prototype.updateAxisPointer = function(t, i, a, n) {
            this._doUpdateAxisPointerClass(t, a, !1)
        }, e.prototype.remove = function(t, i) {
            var a = this._axisPointer;
            a && a.remove(i)
        }, e.prototype.dispose = function(t, i) {
            this._disposeAxisPointer(i), r.prototype.dispose.apply(this, arguments)
        }, e.prototype._doUpdateAxisPointerClass = function(t, i, a) {
            var n = e.getAxisPointerClass(this.axisPointerClass);
            if (n) {
                var o = SE(t);
                o ? (this._axisPointer || (this._axisPointer = new n)).render(t, o, i, a) : this._disposeAxisPointer(i)
            }
        }, e.prototype._disposeAxisPointer = function(t) {
            this._axisPointer && this._axisPointer.dispose(t), this._axisPointer = null
        }, e.registerAxisPointerClass = function(t, i) {
            bE[t] = i
        }, e.getAxisPointerClass = function(t) {
            return t && bE[t]
        }, e.type = "axis", e
    }(It),
    Wr = p4;
var e_ = lt();

function rd(r, e, t, i) {
    var a = t.axis;
    if (!a.scale.isBlank()) {
        var n = t.getModel("splitArea"),
            o = n.getModel("areaStyle"),
            s = o.get("color"),
            l = i.coordinateSystem.getRect(),
            u = a.getTicksCoords({
                tickModel: n,
                clamp: !0
            });
        if (u.length) {
            var f = s.length,
                p = e_(r).splitAreaColors,
                c = Y(),
                h = 0;
            if (p)
                for (var v = 0; v < u.length; v++) {
                    var d = p.get(u[v].tickValue);
                    if (d != null) {
                        h = (d + (f - 1) * v) % f;
                        break
                    }
                }
            var m = a.toGlobalCoord(u[0].coord),
                g = o.getAreaStyle();
            s = z(s) ? s : [s];
            for (var v = 1; v < u.length; v++) {
                var y = a.toGlobalCoord(u[v].coord),
                    x = void 0,
                    _ = void 0,
                    S = void 0,
                    b = void 0;
                a.isHorizontal() ? (x = m, _ = l.y, S = y - x, b = l.height, m = x + S) : (x = l.x, _ = m, S = l.width, b = y - _, m = _ + b);
                var T = u[v - 1].tickValue;
                T != null && c.set(T, h), e.add(new ht({
                    anid: T != null ? "area_" + T : null,
                    shape: {
                        x,
                        y: _,
                        width: S,
                        height: b
                    },
                    style: q({
                        fill: s[h]
                    }, g),
                    autoBatch: !0,
                    silent: !0
                })), h = (h + 1) % f
            }
            e_(r).splitAreaColors = c
        }
    }
}

function id(r) {
    e_(r).splitAreaColors = null
}
var c4 = ["axisLine", "axisTickLabel", "axisName"],
    h4 = ["splitArea", "splitLine", "minorSplitLine"],
    wE = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t.axisPointerClass = "CartesianAxisPointer", t
        }
        return e.prototype.render = function(t, i, a, n) {
            this.group.removeAll();
            var o = this._axisGroup;
            if (this._axisGroup = new J, this.group.add(this._axisGroup), !!t.get("show")) {
                var s = t.getCoordSysModel(),
                    l = dp(s, t),
                    u = new er(t, O({
                        handleAutoShown: function(p) {
                            for (var c = s.coordinateSystem.getCartesians(), h = 0; h < c.length; h++)
                                if ($f(c[h].getOtherAxis(t.axis).scale)) return !0;
                            return !1
                        }
                    }, l));
                w(c4, u.add, u), this._axisGroup.add(u.getGroup()), w(h4, function(p) {
                    t.get([p, "show"]) && v4[p](this, this._axisGroup, t, s)
                }, this);
                var f = n && n.type === "changeAxisOrder" && n.isInitSort;
                f || ja(o, this._axisGroup, t), r.prototype.render.call(this, t, i, a, n)
            }
        }, e.prototype.remove = function() {
            id(this)
        }, e.type = "cartesianAxis", e
    }(Wr),
    v4 = {
        splitLine: function(r, e, t, i) {
            var a = t.axis;
            if (!a.scale.isBlank()) {
                var n = t.getModel("splitLine"),
                    o = n.getModel("lineStyle"),
                    s = o.get("color"),
                    l = n.get("showMinLine") !== !1,
                    u = n.get("showMaxLine") !== !1;
                s = z(s) ? s : [s];
                for (var f = i.coordinateSystem.getRect(), p = a.isHorizontal(), c = 0, h = a.getTicksCoords({
                        tickModel: n
                    }), v = [], d = [], m = o.getLineStyle(), g = 0; g < h.length; g++) {
                    var y = a.toGlobalCoord(h[g].coord);
                    if (!(g === 0 && !l || g === h.length - 1 && !u)) {
                        var x = h[g].tickValue;
                        p ? (v[0] = y, v[1] = f.y, d[0] = y, d[1] = f.y + f.height) : (v[0] = f.x, v[1] = y, d[0] = f.x + f.width, d[1] = y);
                        var _ = c++ % s.length,
                            S = new ee({
                                anid: x != null ? "line_" + x : null,
                                autoBatch: !0,
                                shape: {
                                    x1: v[0],
                                    y1: v[1],
                                    x2: d[0],
                                    y2: d[1]
                                },
                                style: q({
                                    stroke: s[_]
                                }, m),
                                silent: !0
                            });
                        Ka(S.shape, m.lineWidth), e.add(S)
                    }
                }
            }
        },
        minorSplitLine: function(r, e, t, i) {
            var a = t.axis,
                n = t.getModel("minorSplitLine"),
                o = n.getModel("lineStyle"),
                s = i.coordinateSystem.getRect(),
                l = a.isHorizontal(),
                u = a.getMinorTicksCoords();
            if (u.length)
                for (var f = [], p = [], c = o.getLineStyle(), h = 0; h < u.length; h++)
                    for (var v = 0; v < u[h].length; v++) {
                        var d = a.toGlobalCoord(u[h][v].coord);
                        l ? (f[0] = d, f[1] = s.y, p[0] = d, p[1] = s.y + s.height) : (f[0] = s.x, f[1] = d, p[0] = s.x + s.width, p[1] = d);
                        var m = new ee({
                            anid: "minor_line_" + u[h][v].tickValue,
                            autoBatch: !0,
                            shape: {
                                x1: f[0],
                                y1: f[1],
                                x2: p[0],
                                y2: p[1]
                            },
                            style: c,
                            silent: !0
                        });
                        Ka(m.shape, c.lineWidth), e.add(m)
                    }
        },
        splitArea: function(r, e, t, i) {
            rd(r, e, t, i)
        }
    },
    r_ = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.type = "xAxis", e
    }(wE);
var TE = function(r) {
    L(e, r);

    function e() {
        var t = r !== null && r.apply(this, arguments) || this;
        return t.type = r_.type, t
    }
    return e.type = "yAxis", e
}(wE);
var d4 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = "grid", t
        }
        return e.prototype.render = function(t, i) {
            this.group.removeAll(), t.get("show") && this.group.add(new ht({
                shape: t.coordinateSystem.getRect(),
                style: q({
                    fill: t.get("backgroundColor")
                }, t.getItemStyle()),
                silent: !0,
                z2: -1
            }))
        }, e.type = "grid", e
    }(It),
    CE = {
        offset: 0
    };

function ad(r) {
    r.registerComponentView(d4), r.registerComponentModel(iE), r.registerCoordinateSystem("cartesian2d", vE), ia(r, "x", Jv, CE), ia(r, "y", Jv, CE), r.registerComponentView(r_), r.registerComponentView(TE), r.registerPreprocessor(function(e) {
        e.xAxis && e.yAxis && !e.grid && (e.grid = {})
    })
}

function i_(r) {
    _t(ad), r.registerSeriesModel($I), r.registerChartView(rE), r.registerLayout(ea("scatter"))
}

function a_(r) {
    r.eachSeriesByType("radar", function(e) {
        var t = e.getData(),
            i = [],
            a = e.coordinateSystem;
        if (a) {
            var n = a.getIndicatorAxes();
            w(n, function(o, s) {
                t.each(t.mapDimension(n[s].dim), function(l, u) {
                    i[u] = i[u] || [];
                    var f = a.dataToPoint(l, s);
                    i[u][s] = AE(f) ? f : DE(a)
                })
            }), t.each(function(o) {
                var s = Nm(i[o], function(l) {
                    return AE(l)
                }) || DE(a);
                i[o].push(s.slice()), t.setItemLayout(o, i[o])
            })
        }
    })
}

function AE(r) {
    return !isNaN(r[0]) && !isNaN(r[1])
}

function DE(r) {
    return [r.cx, r.cy]
}

function n_(r) {
    var e = r.polar;
    if (e) {
        z(e) || (e = [e]);
        var t = [];
        w(e, function(i, a) {
            i.indicator ? (i.type && !i.shape && (i.shape = i.type), r.radar = r.radar || [], z(r.radar) || (r.radar = [r.radar]), r.radar.push(i)) : t.push(i)
        }), r.polar = t
    }
    w(r.series, function(i) {
        i && i.type === "radar" && i.polarIndex && (i.radarIndex = i.polarIndex)
    })
}
var m4 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.render = function(t, i, a) {
            var n = t.coordinateSystem,
                o = this.group,
                s = t.getData(),
                l = this._data;

            function u(c, h) {
                var v = c.getItemVisual(h, "symbol") || "circle";
                if (v !== "none") {
                    var d = Ki(c.getItemVisual(h, "symbolSize")),
                        m = Vt(v, -1, -1, 2, 2),
                        g = c.getItemVisual(h, "symbolRotate") || 0;
                    return m.attr({
                        style: {
                            strokeNoScale: !0
                        },
                        z2: 100,
                        scaleX: d[0] / 2,
                        scaleY: d[1] / 2,
                        rotation: g * Math.PI / 180 || 0
                    }), m
                }
            }

            function f(c, h, v, d, m, g) {
                v.removeAll();
                for (var y = 0; y < h.length - 1; y++) {
                    var x = u(d, m);
                    x && (x.__dimIdx = y, c[y] ? (x.setPosition(c[y]), gt[g ? "initProps" : "updateProps"](x, {
                        x: h[y][0],
                        y: h[y][1]
                    }, t, m)) : x.setPosition(h[y]), v.add(x))
                }
            }

            function p(c) {
                return k(c, function(h) {
                    return [n.cx, n.cy]
                })
            }
            s.diff(l).add(function(c) {
                var h = s.getItemLayout(c);
                if (h) {
                    var v = new oe,
                        d = new ae,
                        m = {
                            shape: {
                                points: h
                            }
                        };
                    v.shape.points = p(h), d.shape.points = p(h), Ot(v, m, t, c), Ot(d, m, t, c);
                    var g = new J,
                        y = new J;
                    g.add(d), g.add(v), g.add(y), f(d.shape.points, h, y, s, c, !0), s.setItemGraphicEl(c, g)
                }
            }).update(function(c, h) {
                var v = l.getItemGraphicEl(h),
                    d = v.childAt(0),
                    m = v.childAt(1),
                    g = v.childAt(2),
                    y = {
                        shape: {
                            points: s.getItemLayout(c)
                        }
                    };
                y.shape.points && (f(d.shape.points, y.shape.points, g, s, c, !1), Ae(m), Ae(d), xt(d, y, t), xt(m, y, t), s.setItemGraphicEl(c, v))
            }).remove(function(c) {
                o.remove(l.getItemGraphicEl(c))
            }).execute(), s.eachItemGraphicEl(function(c, h) {
                var v = s.getItemModel(h),
                    d = c.childAt(0),
                    m = c.childAt(1),
                    g = c.childAt(2),
                    y = s.getItemVisual(h, "style"),
                    x = y.fill;
                o.add(c), d.useStyle(q(v.getModel("lineStyle").getLineStyle(), {
                    fill: "none",
                    stroke: x
                })), te(d, v, "lineStyle"), te(m, v, "areaStyle");
                var _ = v.getModel("areaStyle"),
                    S = _.isEmpty() && _.parentModel.isEmpty();
                m.ignore = S, w(["emphasis", "select", "blur"], function(C) {
                    var A = v.getModel([C, "areaStyle"]),
                        D = A.isEmpty() && A.parentModel.isEmpty();
                    m.ensureState(C).ignore = D && S
                }), m.useStyle(q(_.getAreaStyle(), {
                    fill: x,
                    opacity: .7,
                    decal: y.decal
                }));
                var b = v.getModel("emphasis"),
                    T = b.getModel("itemStyle").getItemStyle();
                g.eachChild(function(C) {
                    if (C instanceof Zt) {
                        var A = C.style;
                        C.useStyle(O({
                            image: A.image,
                            x: A.x,
                            y: A.y,
                            width: A.width,
                            height: A.height
                        }, y))
                    } else C.useStyle(y), C.setColor(x), C.style.strokeNoScale = !0;
                    var D = C.ensureState("emphasis");
                    D.style = Q(T);
                    var M = s.getStore().get(s.getDimensionIndex(C.__dimIdx), h);
                    (M == null || isNaN(M)) && (M = ""), Xt(C, Ft(v), {
                        labelFetcher: s.hostModel,
                        labelDataIndex: h,
                        labelDimIndex: C.__dimIdx,
                        defaultText: M,
                        inheritColor: x,
                        defaultOpacity: y.opacity
                    })
                }), Nt(c, b.get("focus"), b.get("blurScope"), b.get("disabled"))
            }), this._data = s
        }, e.prototype.remove = function() {
            this.group.removeAll(), this._data = null
        }, e.type = "radar", e
    }(At),
    ME = m4;
var g4 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t.hasSymbolVisual = !0, t
        }
        return e.prototype.init = function(t) {
            r.prototype.init.apply(this, arguments), this.legendVisualProvider = new Aa(H(this.getData, this), H(this.getRawData, this))
        }, e.prototype.getInitialData = function(t, i) {
            return si(this, {
                generateCoord: "indicator_",
                generateCoordCount: 1 / 0
            })
        }, e.prototype.formatTooltip = function(t, i, a) {
            var n = this.getData(),
                o = this.coordinateSystem,
                s = o.getIndicatorAxes(),
                l = this.getData().getName(t),
                u = l === "" ? this.name : l,
                f = Fh(this, t);
            return Jt("section", {
                header: u,
                sortBlocks: !0,
                blocks: k(s, function(p) {
                    var c = n.get(n.mapDimension(p.dim), t);
                    return Jt("nameValue", {
                        markerType: "subItem",
                        markerColor: f,
                        name: p.name,
                        value: c,
                        sortParam: c
                    })
                })
            })
        }, e.prototype.getTooltipPosition = function(t) {
            if (t != null) {
                for (var i = this.getData(), a = this.coordinateSystem, n = i.getValues(k(a.dimensions, function(u) {
                        return i.mapDimension(u)
                    }), t), o = 0, s = n.length; o < s; o++)
                    if (!isNaN(n[o])) {
                        var l = a.getIndicatorAxes();
                        return a.coordToPoint(l[o].dataToCoord(n[o]), o)
                    }
            }
        }, e.type = "series.radar", e.dependencies = ["radar"], e.defaultOption = {
            z: 2,
            colorBy: "data",
            coordinateSystem: "radar",
            legendHoverLink: !0,
            radarIndex: 0,
            lineStyle: {
                width: 2,
                type: "solid",
                join: "round"
            },
            label: {
                position: "top"
            },
            symbolSize: 8
        }, e
    }(Lt),
    LE = g4;
var mp = Qv.value;

function nd(r, e) {
    return q({
        show: e
    }, r)
}
var y4 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.optionUpdated = function() {
            var t = this.get("boundaryGap"),
                i = this.get("splitNumber"),
                a = this.get("scale"),
                n = this.get("axisLine"),
                o = this.get("axisTick"),
                s = this.get("axisLabel"),
                l = this.get("axisName"),
                u = this.get(["axisName", "show"]),
                f = this.get(["axisName", "formatter"]),
                p = this.get("axisNameGap"),
                c = this.get("triggerEvent"),
                h = k(this.get("indicator") || [], function(v) {
                    v.max != null && v.max > 0 && !v.min ? v.min = 0 : v.min != null && v.min < 0 && !v.max && (v.max = 0);
                    var d = l;
                    v.color != null && (d = q({
                        color: v.color
                    }, l));
                    var m = nt(Q(v), {
                        boundaryGap: t,
                        splitNumber: i,
                        scale: a,
                        axisLine: n,
                        axisTick: o,
                        axisLabel: s,
                        name: v.text,
                        showName: u,
                        nameLocation: "end",
                        nameGap: p,
                        nameTextStyle: d,
                        triggerEvent: c
                    }, !1);
                    if (F(f)) {
                        var g = m.name;
                        m.name = f.replace("{value}", g ? ? "")
                    } else X(f) && (m.name = f(m.name, m));
                    var y = new Dt(m, null, this.ecModel);
                    return Bt(y, Ii.prototype), y.mainType = "radar", y.componentIndex = this.componentIndex, y
                }, this);
            this._indicatorModels = h
        }, e.prototype.getIndicatorModels = function() {
            return this._indicatorModels
        }, e.type = "radar", e.defaultOption = {
            z: 0,
            center: ["50%", "50%"],
            radius: "75%",
            startAngle: 90,
            axisName: {
                show: !0
            },
            boundaryGap: [0, 0],
            splitNumber: 5,
            axisNameGap: 15,
            scale: !1,
            shape: "polygon",
            axisLine: nt({
                lineStyle: {
                    color: "#bbb"
                }
            }, mp.axisLine),
            axisLabel: nd(mp.axisLabel, !1),
            axisTick: nd(mp.axisTick, !1),
            splitLine: nd(mp.splitLine, !0),
            splitArea: nd(mp.splitArea, !0),
            indicator: []
        }, e
    }(yt),
    IE = y4;
var x4 = ["axisLine", "axisTickLabel", "axisName"],
    _4 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.render = function(t, i, a) {
            var n = this.group;
            n.removeAll(), this._buildAxes(t), this._buildSplitLineAndArea(t)
        }, e.prototype._buildAxes = function(t) {
            var i = t.coordinateSystem,
                a = i.getIndicatorAxes(),
                n = k(a, function(o) {
                    var s = o.model.get("showName") ? o.name : "",
                        l = new er(o.model, {
                            axisName: s,
                            position: [i.cx, i.cy],
                            rotation: o.angle,
                            labelDirection: -1,
                            tickDirection: -1,
                            nameDirection: 1
                        });
                    return l
                });
            w(n, function(o) {
                w(x4, o.add, o), this.group.add(o.getGroup())
            }, this)
        }, e.prototype._buildSplitLineAndArea = function(t) {
            var i = t.coordinateSystem,
                a = i.getIndicatorAxes();
            if (!a.length) return;
            var n = t.get("shape"),
                o = t.getModel("splitLine"),
                s = t.getModel("splitArea"),
                l = o.getModel("lineStyle"),
                u = s.getModel("areaStyle"),
                f = o.get("show"),
                p = s.get("show"),
                c = l.get("color"),
                h = u.get("color"),
                v = z(c) ? c : [c],
                d = z(h) ? h : [h],
                m = [],
                g = [];

            function y(R, N, V) {
                var U = V % N.length;
                return R[U] = R[U] || [], U
            }
            if (n === "circle")
                for (var x = a[0].getTicksCoords(), _ = i.cx, S = i.cy, b = 0; b < x.length; b++) {
                    if (f) {
                        var T = y(m, v, b);
                        m[T].push(new je({
                            shape: {
                                cx: _,
                                cy: S,
                                r: x[b].coord
                            }
                        }))
                    }
                    if (p && b < x.length - 1) {
                        var T = y(g, d, b);
                        g[T].push(new Ya({
                            shape: {
                                cx: _,
                                cy: S,
                                r0: x[b].coord,
                                r: x[b + 1].coord
                            }
                        }))
                    }
                } else
                    for (var C, A = k(a, function(R, N) {
                            var V = R.getTicksCoords();
                            return C = C == null ? V.length - 1 : Math.min(V.length - 1, C), k(V, function(U) {
                                return i.coordToPoint(U.coord, N)
                            })
                        }), D = [], b = 0; b <= C; b++) {
                        for (var M = [], I = 0; I < a.length; I++) M.push(A[I][b]);
                        if (M[0] && M.push(M[0].slice()), f) {
                            var T = y(m, v, b);
                            m[T].push(new ae({
                                shape: {
                                    points: M
                                }
                            }))
                        }
                        if (p && D) {
                            var T = y(g, d, b - 1);
                            g[T].push(new oe({
                                shape: {
                                    points: M.concat(D)
                                }
                            }))
                        }
                        D = M.slice().reverse()
                    }
            var E = l.getLineStyle(),
                P = u.getAreaStyle();
            w(g, function(R, N) {
                this.group.add(Ye(R, {
                    style: q({
                        stroke: "none",
                        fill: d[N % d.length]
                    }, P),
                    silent: !0
                }))
            }, this), w(m, function(R, N) {
                this.group.add(Ye(R, {
                    style: q({
                        fill: "none",
                        stroke: v[N % v.length]
                    }, E),
                    silent: !0
                }))
            }, this)
        }, e.type = "radar", e
    }(It),
    EE = _4;
var S4 = function(r) {
        L(e, r);

        function e(t, i, a) {
            var n = r.call(this, t, i, a) || this;
            return n.type = "value", n.angle = 0, n.name = "", n
        }
        return e
    }(Fe),
    PE = S4;
var b4 = function() {
        function r(e, t, i) {
            this.dimensions = [], this._model = e, this._indicatorAxes = k(e.getIndicatorModels(), function(a, n) {
                var o = "indicator_" + n,
                    s = new PE(o, new Hr);
                return s.name = a.get("name"), s.model = a, a.axis = s, this.dimensions.push(o), s
            }, this), this.resize(e, i)
        }
        return r.prototype.getIndicatorAxes = function() {
            return this._indicatorAxes
        }, r.prototype.dataToPoint = function(e, t) {
            var i = this._indicatorAxes[t];
            return this.coordToPoint(i.dataToCoord(e), t)
        }, r.prototype.coordToPoint = function(e, t) {
            var i = this._indicatorAxes[t],
                a = i.angle,
                n = this.cx + e * Math.cos(a),
                o = this.cy - e * Math.sin(a);
            return [n, o]
        }, r.prototype.pointToData = function(e) {
            var t = e[0] - this.cx,
                i = e[1] - this.cy,
                a = Math.sqrt(t * t + i * i);
            t /= a, i /= a;
            for (var n = Math.atan2(-i, t), o = 1 / 0, s, l = -1, u = 0; u < this._indicatorAxes.length; u++) {
                var f = this._indicatorAxes[u],
                    p = Math.abs(n - f.angle);
                p < o && (s = f, l = u, o = p)
            }
            return [l, +(s && s.coordToData(a))]
        }, r.prototype.resize = function(e, t) {
            var i = e.get("center"),
                a = t.getWidth(),
                n = t.getHeight(),
                o = Math.min(a, n) / 2;
            this.cx = W(i[0], a), this.cy = W(i[1], n), this.startAngle = e.get("startAngle") * Math.PI / 180;
            var s = e.get("radius");
            (F(s) || vt(s)) && (s = [0, s]), this.r0 = W(s[0], o), this.r = W(s[1], o), w(this._indicatorAxes, function(l, u) {
                l.setExtent(this.r0, this.r);
                var f = this.startAngle + u * Math.PI * 2 / this._indicatorAxes.length;
                f = Math.atan2(Math.sin(f), Math.cos(f)), l.angle = f
            }, this)
        }, r.prototype.update = function(e, t) {
            var i = this._indicatorAxes,
                a = this._model;
            w(i, function(s) {
                s.scale.setExtent(1 / 0, -1 / 0)
            }), e.eachSeriesByType("radar", function(s, l) {
                if (!(s.get("coordinateSystem") !== "radar" || e.getComponent("radar", s.get("radarIndex")) !== a)) {
                    var u = s.getData();
                    w(i, function(f) {
                        f.scale.unionExtentFromData(u, u.mapDimension(f.dim))
                    })
                }
            }, this);
            var n = a.get("splitNumber"),
                o = new Hr;
            o.setExtent(0, n), o.setInterval(1), w(i, function(s, l) {
                td(s.scale, s.model, o)
            })
        }, r.prototype.convertToPixel = function(e, t, i) {
            return console.warn("Not implemented."), null
        }, r.prototype.convertFromPixel = function(e, t, i) {
            return console.warn("Not implemented."), null
        }, r.prototype.containPoint = function(e) {
            return console.warn("Not implemented."), !1
        }, r.create = function(e, t) {
            var i = [];
            return e.eachComponent("radar", function(a) {
                var n = new r(a, e, t);
                i.push(n), a.coordinateSystem = n
            }), e.eachSeriesByType("radar", function(a) {
                a.get("coordinateSystem") === "radar" && (a.coordinateSystem = i[a.get("radarIndex") || 0])
            }), i
        }, r.dimensions = [], r
    }(),
    RE = b4;

function NE(r) {
    r.registerCoordinateSystem("radar", RE), r.registerComponentModel(IE), r.registerComponentView(EE), r.registerVisual({
        seriesType: "radar",
        reset: function(e) {
            var t = e.getData();
            t.each(function(i) {
                t.setItemVisual(i, "legendIcon", "roundRect")
            }), t.setVisual("legendIcon", "roundRect")
        }
    })
}

function o_(r) {
    _t(NE), r.registerChartView(ME), r.registerSeriesModel(LE), r.registerLayout(a_), r.registerProcessor(ra("radar")), r.registerPreprocessor(n_)
}
var OE = "\0_ec_interaction_mutex";

function zE(r, e, t) {
    var i = l_(r);
    i[e] = t
}

function kE(r, e, t) {
    var i = l_(r),
        a = i[e];
    a === t && (i[e] = null)
}

function s_(r, e) {
    return !!l_(r)[e]
}

function l_(r) {
    return r[OE] || (r[OE] = {})
}
mr({
    type: "takeGlobalCursor",
    event: "globalCursorTaken",
    update: "update"
}, Yt);
var w4 = function(r) {
    L(e, r);

    function e(t) {
        var i = r.call(this) || this;
        i._zr = t;
        var a = H(i._mousedownHandler, i),
            n = H(i._mousemoveHandler, i),
            o = H(i._mouseupHandler, i),
            s = H(i._mousewheelHandler, i),
            l = H(i._pinchHandler, i);
        return i.enable = function(u, f) {
            this.disable(), this._opt = q(Q(f) || {}, {
                zoomOnMouseWheel: !0,
                moveOnMouseMove: !0,
                moveOnMouseWheel: !1,
                preventDefaultMouseMove: !0
            }), u == null && (u = !0), (u === !0 || u === "move" || u === "pan") && (t.on("mousedown", a), t.on("mousemove", n), t.on("mouseup", o)), (u === !0 || u === "scale" || u === "zoom") && (t.on("mousewheel", s), t.on("pinch", l))
        }, i.disable = function() {
            t.off("mousedown", a), t.off("mousemove", n), t.off("mouseup", o), t.off("mousewheel", s), t.off("pinch", l)
        }, i
    }
    return e.prototype.isDragging = function() {
        return this._dragging
    }, e.prototype.isPinching = function() {
        return this._pinching
    }, e.prototype.setPointerChecker = function(t) {
        this.pointerChecker = t
    }, e.prototype.dispose = function() {
        this.disable()
    }, e.prototype._mousedownHandler = function(t) {
        if (!Wm(t)) {
            for (var i = t.target; i;) {
                if (i.draggable) return;
                i = i.__hostTarget || i.parent
            }
            var a = t.offsetX,
                n = t.offsetY;
            this.pointerChecker && this.pointerChecker(t, a, n) && (this._x = a, this._y = n, this._dragging = !0)
        }
    }, e.prototype._mousemoveHandler = function(t) {
        if (!(!this._dragging || !od("moveOnMouseMove", t, this._opt) || t.gestureEvent === "pinch" || s_(this._zr, "globalPan"))) {
            var i = t.offsetX,
                a = t.offsetY,
                n = this._x,
                o = this._y,
                s = i - n,
                l = a - o;
            this._x = i, this._y = a, this._opt.preventDefaultMouseMove && Dr(t.event), VE(this, "pan", "moveOnMouseMove", t, {
                dx: s,
                dy: l,
                oldX: n,
                oldY: o,
                newX: i,
                newY: a,
                isAvailableBehavior: null
            })
        }
    }, e.prototype._mouseupHandler = function(t) {
        Wm(t) || (this._dragging = !1)
    }, e.prototype._mousewheelHandler = function(t) {
        var i = od("zoomOnMouseWheel", t, this._opt),
            a = od("moveOnMouseWheel", t, this._opt),
            n = t.wheelDelta,
            o = Math.abs(n),
            s = t.offsetX,
            l = t.offsetY;
        if (!(n === 0 || !i && !a)) {
            if (i) {
                var u = o > 3 ? 1.4 : o > 1 ? 1.2 : 1.1,
                    f = n > 0 ? u : 1 / u;
                u_(this, "zoom", "zoomOnMouseWheel", t, {
                    scale: f,
                    originX: s,
                    originY: l,
                    isAvailableBehavior: null
                })
            }
            if (a) {
                var p = Math.abs(n),
                    c = (n > 0 ? 1 : -1) * (p > 3 ? .4 : p > 1 ? .15 : .05);
                u_(this, "scrollMove", "moveOnMouseWheel", t, {
                    scrollDelta: c,
                    originX: s,
                    originY: l,
                    isAvailableBehavior: null
                })
            }
        }
    }, e.prototype._pinchHandler = function(t) {
        if (!s_(this._zr, "globalPan")) {
            var i = t.pinchScale > 1 ? 1.1 : 1 / 1.1;
            u_(this, "zoom", null, t, {
                scale: i,
                originX: t.pinchX,
                originY: t.pinchY,
                isAvailableBehavior: null
            })
        }
    }, e
}(Ce);

function u_(r, e, t, i, a) {
    r.pointerChecker && r.pointerChecker(i, a.originX, a.originY) && (Dr(i.event), VE(r, e, t, i, a))
}

function VE(r, e, t, i, a) {
    a.isAvailableBehavior = H(od, null, t, i), r.trigger(e, a)
}

function od(r, e, t) {
    var i = t[r];
    return !r || i && (!F(i) || e.event[i + "Key"])
}
var Da = w4;

function Yl(r, e, t) {
    var i = r.target;
    i.x += e, i.y += t, i.dirty()
}

function Zl(r, e, t, i) {
    var a = r.target,
        n = r.zoomLimit,
        o = r.zoom = r.zoom || 1;
    if (o *= e, n) {
        var s = n.min || 0,
            l = n.max || 1 / 0;
        o = Math.max(Math.min(l, o), s)
    }
    var u = o / r.zoom;
    r.zoom = o, a.x -= (t - a.x) * (u - 1), a.y -= (i - a.y) * (u - 1), a.scaleX *= u, a.scaleY *= u, a.dirty()
}
var T4 = {
    axisPointer: 1,
    tooltip: 1,
    brush: 1
};

function Qn(r, e, t) {
    var i = e.getComponentByElement(r.topTarget),
        a = i && i.coordinateSystem;
    return i && i !== t && !T4.hasOwnProperty(i.mainType) && a && a.model !== t
}

function sd(r) {
    if (F(r)) {
        var e = new DOMParser;
        r = e.parseFromString(r, "text/xml")
    }
    var t = r;
    for (t.nodeType === 9 && (t = t.firstChild); t.nodeName.toLowerCase() !== "svg" || t.nodeType !== 1;) t = t.nextSibling;
    return t
}
var p_, ld = {
        fill: "fill",
        stroke: "stroke",
        "stroke-width": "lineWidth",
        opacity: "opacity",
        "fill-opacity": "fillOpacity",
        "stroke-opacity": "strokeOpacity",
        "stroke-dasharray": "lineDash",
        "stroke-dashoffset": "lineDashOffset",
        "stroke-linecap": "lineCap",
        "stroke-linejoin": "lineJoin",
        "stroke-miterlimit": "miterLimit",
        "font-family": "fontFamily",
        "font-size": "fontSize",
        "font-style": "fontStyle",
        "font-weight": "fontWeight",
        "text-anchor": "textAlign",
        visibility: "visibility",
        display: "display"
    },
    BE = ft(ld),
    ud = {
        "alignment-baseline": "textBaseline",
        "stop-color": "stopColor"
    },
    FE = ft(ud),
    C4 = function() {
        function r() {
            this._defs = {}, this._root = null
        }
        return r.prototype.parse = function(e, t) {
            t = t || {};
            var i = sd(e);
            this._defsUsePending = [];
            var a = new J;
            this._root = a;
            var n = [],
                o = i.getAttribute("viewBox") || "",
                s = parseFloat(i.getAttribute("width") || t.width),
                l = parseFloat(i.getAttribute("height") || t.height);
            isNaN(s) && (s = null), isNaN(l) && (l = null), li(i, a, null, !0, !1);
            for (var u = i.firstChild; u;) this._parseNode(u, a, n, null, !1, !1), u = u.nextSibling;
            M4(this._defs, this._defsUsePending), this._defsUsePending = [];
            var f, p;
            if (o) {
                var c = fd(o);
                c.length >= 4 && (f = {
                    x: parseFloat(c[0] || 0),
                    y: parseFloat(c[1] || 0),
                    width: parseFloat(c[2]),
                    height: parseFloat(c[3])
                })
            }
            if (f && s != null && l != null && (p = h_(f, {
                    x: 0,
                    y: 0,
                    width: s,
                    height: l
                }), !t.ignoreViewBox)) {
                var h = a;
                a = new J, a.add(h), h.scaleX = h.scaleY = p.scale, h.x = p.x, h.y = p.y
            }
            return !t.ignoreRootClip && s != null && l != null && a.setClipPath(new ht({
                shape: {
                    x: 0,
                    y: 0,
                    width: s,
                    height: l
                }
            })), {
                root: a,
                width: s,
                height: l,
                viewBoxRect: f,
                viewBoxTransform: p,
                named: n
            }
        }, r.prototype._parseNode = function(e, t, i, a, n, o) {
            var s = e.nodeName.toLowerCase(),
                l, u = a;
            if (s === "defs" && (n = !0), s === "text" && (o = !0), s === "defs" || s === "switch") l = t;
            else {
                if (!n) {
                    var f = p_[s];
                    if (f && $(p_, s)) {
                        l = f.call(this, e, t);
                        var p = e.getAttribute("name");
                        if (p) {
                            var c = {
                                name: p,
                                namedFrom: null,
                                svgNodeTagLower: s,
                                el: l
                            };
                            i.push(c), s === "g" && (u = c)
                        } else a && i.push({
                            name: a.name,
                            namedFrom: a,
                            svgNodeTagLower: s,
                            el: l
                        });
                        t.add(l)
                    }
                }
                var h = GE[s];
                if (h && $(GE, s)) {
                    var v = h.call(this, e),
                        d = e.getAttribute("id");
                    d && (this._defs[d] = v)
                }
            }
            if (l && l.isGroup)
                for (var m = e.firstChild; m;) m.nodeType === 1 ? this._parseNode(m, l, i, u, n, o) : m.nodeType === 3 && o && this._parseText(m, l), m = m.nextSibling
        }, r.prototype._parseText = function(e, t) {
            var i = new Fa({
                style: {
                    text: e.textContent
                },
                silent: !0,
                x: this._textX || 0,
                y: this._textY || 0
            });
            Ri(t, i), li(e, i, this._defsUsePending, !1, !1), A4(i, t);
            var a = i.style,
                n = a.fontSize;
            n && n < 9 && (a.fontSize = 9, i.scaleX *= n / 9, i.scaleY *= n / 9);
            var o = (a.fontSize || a.fontFamily) && [a.fontStyle, a.fontWeight, (a.fontSize || 12) + "px", a.fontFamily || "sans-serif"].join(" ");
            a.font = o;
            var s = i.getBoundingRect();
            return this._textX += s.width, t.add(i), i
        }, r.internalField = function() {
            p_ = {
                g: function(e, t) {
                    var i = new J;
                    return Ri(t, i), li(e, i, this._defsUsePending, !1, !1), i
                },
                rect: function(e, t) {
                    var i = new ht;
                    return Ri(t, i), li(e, i, this._defsUsePending, !1, !1), i.setShape({
                        x: parseFloat(e.getAttribute("x") || "0"),
                        y: parseFloat(e.getAttribute("y") || "0"),
                        width: parseFloat(e.getAttribute("width") || "0"),
                        height: parseFloat(e.getAttribute("height") || "0")
                    }), i.silent = !0, i
                },
                circle: function(e, t) {
                    var i = new je;
                    return Ri(t, i), li(e, i, this._defsUsePending, !1, !1), i.setShape({
                        cx: parseFloat(e.getAttribute("cx") || "0"),
                        cy: parseFloat(e.getAttribute("cy") || "0"),
                        r: parseFloat(e.getAttribute("r") || "0")
                    }), i.silent = !0, i
                },
                line: function(e, t) {
                    var i = new ee;
                    return Ri(t, i), li(e, i, this._defsUsePending, !1, !1), i.setShape({
                        x1: parseFloat(e.getAttribute("x1") || "0"),
                        y1: parseFloat(e.getAttribute("y1") || "0"),
                        x2: parseFloat(e.getAttribute("x2") || "0"),
                        y2: parseFloat(e.getAttribute("y2") || "0")
                    }), i.silent = !0, i
                },
                ellipse: function(e, t) {
                    var i = new jo;
                    return Ri(t, i), li(e, i, this._defsUsePending, !1, !1), i.setShape({
                        cx: parseFloat(e.getAttribute("cx") || "0"),
                        cy: parseFloat(e.getAttribute("cy") || "0"),
                        rx: parseFloat(e.getAttribute("rx") || "0"),
                        ry: parseFloat(e.getAttribute("ry") || "0")
                    }), i.silent = !0, i
                },
                polygon: function(e, t) {
                    var i = e.getAttribute("points"),
                        a;
                    i && (a = YE(i));
                    var n = new oe({
                        shape: {
                            points: a || []
                        },
                        silent: !0
                    });
                    return Ri(t, n), li(e, n, this._defsUsePending, !1, !1), n
                },
                polyline: function(e, t) {
                    var i = e.getAttribute("points"),
                        a;
                    i && (a = YE(i));
                    var n = new ae({
                        shape: {
                            points: a || []
                        },
                        silent: !0
                    });
                    return Ri(t, n), li(e, n, this._defsUsePending, !1, !1), n
                },
                image: function(e, t) {
                    var i = new Zt;
                    return Ri(t, i), li(e, i, this._defsUsePending, !1, !1), i.setStyle({
                        image: e.getAttribute("xlink:href") || e.getAttribute("href"),
                        x: +e.getAttribute("x"),
                        y: +e.getAttribute("y"),
                        width: +e.getAttribute("width"),
                        height: +e.getAttribute("height")
                    }), i.silent = !0, i
                },
                text: function(e, t) {
                    var i = e.getAttribute("x") || "0",
                        a = e.getAttribute("y") || "0",
                        n = e.getAttribute("dx") || "0",
                        o = e.getAttribute("dy") || "0";
                    this._textX = parseFloat(i) + parseFloat(n), this._textY = parseFloat(a) + parseFloat(o);
                    var s = new J;
                    return Ri(t, s), li(e, s, this._defsUsePending, !1, !0), s
                },
                tspan: function(e, t) {
                    var i = e.getAttribute("x"),
                        a = e.getAttribute("y");
                    i != null && (this._textX = parseFloat(i)), a != null && (this._textY = parseFloat(a));
                    var n = e.getAttribute("dx") || "0",
                        o = e.getAttribute("dy") || "0",
                        s = new J;
                    return Ri(t, s), li(e, s, this._defsUsePending, !1, !0), this._textX += parseFloat(n), this._textY += parseFloat(o), s
                },
                path: function(e, t) {
                    var i = e.getAttribute("d") || "",
                        a = rh(i);
                    return Ri(t, a), li(e, a, this._defsUsePending, !1, !1), a.silent = !0, a
                }
            }
        }(), r
    }(),
    GE = {
        lineargradient: function(r) {
            var e = parseInt(r.getAttribute("x1") || "0", 10),
                t = parseInt(r.getAttribute("y1") || "0", 10),
                i = parseInt(r.getAttribute("x2") || "10", 10),
                a = parseInt(r.getAttribute("y2") || "0", 10),
                n = new yi(e, t, i, a);
            return HE(r, n), WE(r, n), n
        },
        radialgradient: function(r) {
            var e = parseInt(r.getAttribute("cx") || "0", 10),
                t = parseInt(r.getAttribute("cy") || "0", 10),
                i = parseInt(r.getAttribute("r") || "0", 10),
                a = new ml(e, t, i);
            return HE(r, a), WE(r, a), a
        }
    };

function HE(r, e) {
    var t = r.getAttribute("gradientUnits");
    t === "userSpaceOnUse" && (e.global = !0)
}

function WE(r, e) {
    for (var t = r.firstChild; t;) {
        if (t.nodeType === 1 && t.nodeName.toLocaleLowerCase() === "stop") {
            var i = t.getAttribute("offset"),
                a = void 0;
            i && i.indexOf("%") > 0 ? a = parseInt(i, 10) / 100 : i ? a = parseFloat(i) : a = 0;
            var n = {};
            qE(t, n, n);
            var o = n.stopColor || t.getAttribute("stop-color") || "#000000";
            e.colorStops.push({
                offset: a,
                color: o
            })
        }
        t = t.nextSibling
    }
}

function Ri(r, e) {
    r && r.__inheritedStyle && (e.__inheritedStyle || (e.__inheritedStyle = {}), q(e.__inheritedStyle, r.__inheritedStyle))
}

function YE(r) {
    for (var e = fd(r), t = [], i = 0; i < e.length; i += 2) {
        var a = parseFloat(e[i]),
            n = parseFloat(e[i + 1]);
        t.push([a, n])
    }
    return t
}

function li(r, e, t, i, a) {
    var n = e,
        o = n.__inheritedStyle = n.__inheritedStyle || {},
        s = {};
    r.nodeType === 1 && (E4(r, e), qE(r, o, s), i || P4(r, o, s)), n.style = n.style || {}, o.fill != null && (n.style.fill = ZE(n, "fill", o.fill, t)), o.stroke != null && (n.style.stroke = ZE(n, "stroke", o.stroke, t)), w(["lineWidth", "opacity", "fillOpacity", "strokeOpacity", "miterLimit", "fontSize"], function(l) {
        o[l] != null && (n.style[l] = parseFloat(o[l]))
    }), w(["lineDashOffset", "lineCap", "lineJoin", "fontWeight", "fontFamily", "fontStyle", "textAlign"], function(l) {
        o[l] != null && (n.style[l] = o[l])
    }), a && (n.__selfStyle = s), o.lineDash && (n.style.lineDash = k(fd(o.lineDash), function(l) {
        return parseFloat(l)
    })), (o.visibility === "hidden" || o.visibility === "collapse") && (n.invisible = !0), o.display === "none" && (n.ignore = !0)
}

function A4(r, e) {
    var t = e.__selfStyle;
    if (t) {
        var i = t.textBaseline,
            a = i;
        !i || i === "auto" || i === "baseline" ? a = "alphabetic" : i === "before-edge" || i === "text-before-edge" ? a = "top" : i === "after-edge" || i === "text-after-edge" ? a = "bottom" : (i === "central" || i === "mathematical") && (a = "middle"), r.style.textBaseline = a
    }
    var n = e.__inheritedStyle;
    if (n) {
        var o = n.textAlign,
            s = o;
        o && (o === "middle" && (s = "center"), r.style.textAlign = s)
    }
}
var D4 = /^url\(\s*#(.*?)\)/;

function ZE(r, e, t, i) {
    var a = t && t.match(D4);
    if (a) {
        var n = Ie(a[1]);
        i.push([r, e, n]);
        return
    }
    return t === "none" && (t = null), t
}

function M4(r, e) {
    for (var t = 0; t < e.length; t++) {
        var i = e[t];
        i[0].style[i[1]] = r[i[2]]
    }
}
var L4 = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;

function fd(r) {
    return r.match(L4) || []
}
var I4 = /(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.eE,]*)\)/g,
    c_ = Math.PI / 180;

function E4(r, e) {
    var t = r.getAttribute("transform");
    if (t) {
        t = t.replace(/,/g, " ");
        var i = [],
            a = null;
        t.replace(I4, function(p, c, h) {
            return i.push(c, h), ""
        });
        for (var n = i.length - 1; n > 0; n -= 2) {
            var o = i[n],
                s = i[n - 1],
                l = fd(o);
            switch (a = a || me(), s) {
                case "translate":
                    We(a, a, [parseFloat(l[0]), parseFloat(l[1] || "0")]);
                    break;
                case "scale":
                    _o(a, a, [parseFloat(l[0]), parseFloat(l[1] || l[0])]);
                    break;
                case "rotate":
                    cr(a, a, -parseFloat(l[0]) * c_, [parseFloat(l[1] || "0"), parseFloat(l[2] || "0")]);
                    break;
                case "skewX":
                    var u = Math.tan(parseFloat(l[0]) * c_);
                    pr(a, [1, 0, u, 1, 0, 0], a);
                    break;
                case "skewY":
                    var f = Math.tan(parseFloat(l[0]) * c_);
                    pr(a, [1, f, 0, 1, 0, 0], a);
                    break;
                case "matrix":
                    a[0] = parseFloat(l[0]), a[1] = parseFloat(l[1]), a[2] = parseFloat(l[2]), a[3] = parseFloat(l[3]), a[4] = parseFloat(l[4]), a[5] = parseFloat(l[5]);
                    break
            }
        }
        e.setLocalTransform(a)
    }
}
var XE = /([^\s:;]+)\s*:\s*([^:;]+)/g;

function qE(r, e, t) {
    var i = r.getAttribute("style");
    if (i) {
        XE.lastIndex = 0;
        for (var a;
            (a = XE.exec(i)) != null;) {
            var n = a[1],
                o = $(ld, n) ? ld[n] : null;
            o && (e[o] = a[2]);
            var s = $(ud, n) ? ud[n] : null;
            s && (t[s] = a[2])
        }
    }
}

function P4(r, e, t) {
    for (var i = 0; i < BE.length; i++) {
        var a = BE[i],
            n = r.getAttribute(a);
        n != null && (e[ld[a]] = n)
    }
    for (var i = 0; i < FE.length; i++) {
        var a = FE[i],
            n = r.getAttribute(a);
        n != null && (t[ud[a]] = n)
    }
}

function h_(r, e) {
    var t = e.width / r.width,
        i = e.height / r.height,
        a = Math.min(t, i);
    return {
        scale: a,
        x: -(r.x + r.width / 2) * a + (e.x + e.width / 2),
        y: -(r.y + r.height / 2) * a + (e.y + e.height / 2)
    }
}

function KE(r, e) {
    var t = new C4;
    return t.parse(r, e)
}
var R4 = Y(["rect", "circle", "line", "ellipse", "polygon", "polyline", "path", "text", "tspan", "g"]),
    jE = function() {
        function r(e, t) {
            this.type = "geoSVG", this._usedGraphicMap = Y(), this._freedGraphics = [], this._mapName = e, this._parsedXML = sd(t)
        }
        return r.prototype.load = function() {
            var e = this._firstGraphic;
            if (!e) {
                e = this._firstGraphic = this._buildGraphic(this._parsedXML), this._freedGraphics.push(e), this._boundingRect = this._firstGraphic.boundingRect.clone();
                var t = O4(e.named),
                    i = t.regions,
                    a = t.regionsMap;
                this._regions = i, this._regionsMap = a
            }
            return {
                boundingRect: this._boundingRect,
                regions: this._regions,
                regionsMap: this._regionsMap
            }
        }, r.prototype._buildGraphic = function(e) {
            var t, i;
            try {
                t = e && KE(e, {
                    ignoreViewBox: !0,
                    ignoreRootClip: !0
                }) || {}, i = t.root, jt(i != null)
            } catch (m) {
                throw new Error(`Invalid svg format
` + m.message)
            }
            var a = new J;
            a.add(i), a.isGeoSVGGraphicRoot = !0;
            var n = t.width,
                o = t.height,
                s = t.viewBoxRect,
                l = this._boundingRect;
            if (!l) {
                var u = void 0,
                    f = void 0,
                    p = void 0,
                    c = void 0;
                if (n != null ? (u = 0, p = n) : s && (u = s.x, p = s.width), o != null ? (f = 0, c = o) : s && (f = s.y, c = s.height), u == null || f == null) {
                    var h = i.getBoundingRect();
                    u == null && (u = h.x, p = h.width), f == null && (f = h.y, c = h.height)
                }
                l = this._boundingRect = new it(u, f, p, c)
            }
            if (s) {
                var v = h_(s, l);
                i.scaleX = i.scaleY = v.scale, i.x = v.x, i.y = v.y
            }
            a.setClipPath(new ht({
                shape: l.plain()
            }));
            var d = [];
            return w(t.named, function(m) {
                R4.get(m.svgNodeTagLower) != null && (d.push(m), N4(m.el))
            }), {
                root: a,
                boundingRect: l,
                named: d
            }
        }, r.prototype.useGraphic = function(e) {
            var t = this._usedGraphicMap,
                i = t.get(e);
            return i || (i = this._freedGraphics.pop() || this._buildGraphic(this._parsedXML), t.set(e, i), i)
        }, r.prototype.freeGraphic = function(e) {
            var t = this._usedGraphicMap,
                i = t.get(e);
            i && (t.removeKey(e), this._freedGraphics.push(i))
        }, r
    }();

function N4(r) {
    r.silent = !1, r.isGroup && r.traverse(function(e) {
        e.silent = !1
    })
}

function O4(r) {
    var e = [],
        t = Y();
    return w(r, function(i) {
        if (i.namedFrom == null) {
            var a = new TL(i.name, i.el);
            e.push(a), t.set(i.name, a)
        }
    }), {
        regions: e,
        regionsMap: t
    }
}
var v_ = [126, 25],
    JE = "\u5357\u6D77\u8BF8\u5C9B",
    Ts = [
        [
            [0, 3.5],
            [7, 11.2],
            [15, 11.9],
            [30, 7],
            [42, .7],
            [52, .7],
            [56, 7.7],
            [59, .7],
            [64, .7],
            [64, 0],
            [5, 0],
            [0, 3.5]
        ],
        [
            [13, 16.1],
            [19, 14.7],
            [16, 21.7],
            [11, 23.1],
            [13, 16.1]
        ],
        [
            [12, 32.2],
            [14, 38.5],
            [15, 38.5],
            [13, 32.2],
            [12, 32.2]
        ],
        [
            [16, 47.6],
            [12, 53.2],
            [13, 53.2],
            [18, 47.6],
            [16, 47.6]
        ],
        [
            [6, 64.4],
            [8, 70],
            [9, 70],
            [8, 64.4],
            [6, 64.4]
        ],
        [
            [23, 82.6],
            [29, 79.8],
            [30, 79.8],
            [25, 82.6],
            [23, 82.6]
        ],
        [
            [37, 70.7],
            [43, 62.3],
            [44, 62.3],
            [39, 70.7],
            [37, 70.7]
        ],
        [
            [48, 51.1],
            [51, 45.5],
            [53, 45.5],
            [50, 51.1],
            [48, 51.1]
        ],
        [
            [51, 35],
            [51, 28.7],
            [53, 28.7],
            [53, 35],
            [51, 35]
        ],
        [
            [52, 22.4],
            [55, 17.5],
            [56, 17.5],
            [53, 22.4],
            [52, 22.4]
        ],
        [
            [58, 12.6],
            [62, 7],
            [63, 7],
            [60, 12.6],
            [58, 12.6]
        ],
        [
            [0, 3.5],
            [0, 93.1],
            [64, 93.1],
            [64, 0],
            [63, 0],
            [63, 92.4],
            [1, 92.4],
            [1, 3.5],
            [0, 3.5]
        ]
    ];
for ($n = 0; $n < Ts.length; $n++)
    for (ws = 0; ws < Ts[$n].length; ws++) Ts[$n][ws][0] /= 10.5, Ts[$n][ws][1] /= -10.5 / .75, Ts[$n][ws][0] += v_[0], Ts[$n][ws][1] += v_[1];
var ws, $n;

function d_(r, e) {
    if (r === "china") {
        for (var t = 0; t < e.length; t++)
            if (e[t].name === JE) return;
        e.push(new Dv(JE, k(Ts, function(i) {
            return {
                type: "polygon",
                exterior: i
            }
        }), v_))
    }
}
var z4 = {\
    u5357\ u6D77\ u8BF8\ u5C9B: [32, 80],
    \u5E7F\ u4E1C: [0, -10],
    \u9999\ u6E2F: [10, 5],
    \u6FB3\ u95E8: [-10, 10],
    \u5929\ u6D25: [5, 5]
};

function m_(r, e) {
    if (r === "china") {
        var t = z4[e.name];
        if (t) {
            var i = e.getCenter();
            i[0] += t[0] / 10.5, i[1] += -t[1] / (10.5 / .75), e.setCenter(i)
        }
    }
}
var k4 = [
    [
        [123.45165252685547, 25.73527164402261],
        [123.49731445312499, 25.73527164402261],
        [123.49731445312499, 25.750734064600884],
        [123.45165252685547, 25.750734064600884],
        [123.45165252685547, 25.73527164402261]
    ]
];

function g_(r, e) {
    r === "china" && e.name === "\u53F0\u6E7E" && e.geometries.push({
        type: "polygon",
        exterior: k4[0]
    })
}
var U4 = "name",
    QE = function() {
        function r(e, t, i) {
            this.type = "geoJSON", this._parsedMap = Y(), this._mapName = e, this._specialAreas = i, this._geoJSON = B4(t)
        }
        return r.prototype.load = function(e, t) {
            t = t || U4;
            var i = this._parsedMap.get(t);
            if (!i) {
                var a = this._parseToRegions(t);
                i = this._parsedMap.set(t, {
                    regions: a,
                    boundingRect: V4(a)
                })
            }
            var n = Y(),
                o = [];
            return w(i.regions, function(s) {
                var l = s.name;
                e && $(e, l) && (s = s.cloneShallow(l = e[l])), o.push(s), n.set(l, s)
            }), {
                regions: o,
                boundingRect: i.boundingRect || new it(0, 0, 0, 0),
                regionsMap: n
            }
        }, r.prototype._parseToRegions = function(e) {
            var t = this._mapName,
                i = this._geoJSON,
                a;
            try {
                a = i ? ap(i, e) : []
            } catch (n) {
                throw new Error(`Invalid geoJson format
` + n.message)
            }
            return d_(t, a), w(a, function(n) {
                var o = n.name;
                m_(t, n), g_(t, n);
                var s = this._specialAreas && this._specialAreas[o];
                s && n.transformTo(s.left, s.top, s.width, s.height)
            }, this), a
        }, r.prototype.getMapForUser = function() {
            return {
                geoJson: this._geoJSON,
                geoJSON: this._geoJSON,
                specialAreas: this._specialAreas
            }
        }, r
    }();

function V4(r) {
    for (var e, t = 0; t < r.length; t++) {
        var i = r[t].getBoundingRect();
        e = e || i.clone(), e.union(i)
    }
    return e
}

function B4(r) {
    return F(r) ? typeof JSON < "u" && JSON.parse ? JSON.parse(r) : new Function("return (" + r + ");")() : r
}
var gp = Y(),
    Sr = {
        registerMap: function(r, e, t) {
            if (e.svg) {
                var i = new jE(r, e.svg);
                gp.set(r, i)
            } else {
                var a = e.geoJson || e.geoJSON;
                a && !e.features ? t = e.specialAreas : a = e;
                var i = new QE(r, a, t);
                gp.set(r, i)
            }
        },
        getGeoResource: function(r) {
            return gp.get(r)
        },
        getMapForUser: function(r) {
            var e = gp.get(r);
            return e && e.type === "geoJSON" && e.getMapForUser()
        },
        load: function(r, e, t) {
            var i = gp.get(r);
            if (i) return i.load(e, t)
        }
    };
var y_ = ["rect", "circle", "line", "ellipse", "polygon", "polyline", "path"],
    F4 = Y(y_),
    G4 = Y(y_.concat(["g"])),
    H4 = Y(y_.concat(["g"])),
    oP = lt();

function pd(r) {
    var e = r.getItemStyle(),
        t = r.get("areaColor");
    return t != null && (e.fill = t), e
}

function $E(r) {
    var e = r.style;
    e && (e.stroke = e.stroke || e.fill, e.fill = null)
}
var W4 = function() {
    function r(e) {
        var t = new J;
        this.uid = Si("ec_map_draw"), this._controller = new Da(e.getZr()), this._controllerHost = {
            target: t
        }, this.group = t, t.add(this._regionsGroup = new J), t.add(this._svgGroup = new J)
    }
    return r.prototype.draw = function(e, t, i, a, n) {
        var o = e.mainType === "geo",
            s = e.getData && e.getData();
        o && t.eachComponent({
            mainType: "series",
            subType: "map"
        }, function(g) {
            !s && g.getHostGeoModel() === e && (s = g.getData())
        });
        var l = e.coordinateSystem,
            u = this._regionsGroup,
            f = this.group,
            p = l.getTransformInfo(),
            c = p.raw,
            h = p.roam,
            v = !u.childAt(0) || n;
        v ? (f.x = h.x, f.y = h.y, f.scaleX = h.scaleX, f.scaleY = h.scaleY, f.dirty()) : xt(f, h, e);
        var d = s && s.getVisual("visualMeta") && s.getVisual("visualMeta").length > 0,
            m = {
                api: i,
                geo: l,
                mapOrGeoModel: e,
                data: s,
                isVisualEncodedByVisualMap: d,
                isGeo: o,
                transformInfoRaw: c
            };
        l.resourceType === "geoJSON" ? this._buildGeoJSON(m) : l.resourceType === "geoSVG" && this._buildSVG(m), this._updateController(e, t, i), this._updateMapSelectHandler(e, u, i, a)
    }, r.prototype._buildGeoJSON = function(e) {
        var t = this._regionsGroupByName = Y(),
            i = Y(),
            a = this._regionsGroup,
            n = e.transformInfoRaw,
            o = e.mapOrGeoModel,
            s = e.data,
            l = e.geo.projection,
            u = l && l.stream;

        function f(h, v) {
            return v && (h = v(h)), h && [h[0] * n.scaleX + n.x, h[1] * n.scaleY + n.y]
        }

        function p(h) {
            for (var v = [], d = !u && l && l.project, m = 0; m < h.length; ++m) {
                var g = f(h[m], d);
                g && v.push(g)
            }
            return v
        }

        function c(h) {
            return {
                shape: {
                    points: p(h)
                }
            }
        }
        a.removeAll(), w(e.geo.regions, function(h) {
            var v = h.name,
                d = t.get(v),
                m = i.get(v) || {},
                g = m.dataIdx,
                y = m.regionModel;
            if (!d) {
                d = t.set(v, new J), a.add(d), g = s ? s.indexOfName(v) : null, y = e.isGeo ? o.getRegionModel(v) : s ? s.getItemModel(g) : null;
                var x = y.get("silent", !0);
                x != null && (d.silent = x), i.set(v, {
                    dataIdx: g,
                    regionModel: y
                })
            }
            var _ = [],
                S = [];
            w(h.geometries, function(C) {
                if (C.type === "polygon") {
                    var A = [C.exterior].concat(C.interiors || []);
                    u && (A = nP(A, u)), w(A, function(M) {
                        _.push(new oe(c(M)))
                    })
                } else {
                    var D = C.points;
                    u && (D = nP(D, u, !0)), w(D, function(M) {
                        S.push(new ae(c(M)))
                    })
                }
            });
            var b = f(h.getCenter(), l && l.project);

            function T(C, A) {
                if (C.length) {
                    var D = new Rn({
                        culling: !0,
                        segmentIgnoreThreshold: 1,
                        shape: {
                            paths: C
                        }
                    });
                    d.add(D), tP(e, D, g, y), eP(e, D, v, y, o, g, b), A && ($E(D), w(D.states, $E))
                }
            }
            T(_), T(S, !0)
        }), t.each(function(h, v) {
            var d = i.get(v),
                m = d.dataIdx,
                g = d.regionModel;
            rP(e, h, v, g, o, m), iP(e, h, v, g, o), aP(e, h, v, g, o)
        }, this)
    }, r.prototype._buildSVG = function(e) {
        var t = e.geo.map,
            i = e.transformInfoRaw;
        this._svgGroup.x = i.x, this._svgGroup.y = i.y, this._svgGroup.scaleX = i.scaleX, this._svgGroup.scaleY = i.scaleY, this._svgResourceChanged(t) && (this._freeSVG(), this._useSVG(t));
        var a = this._svgDispatcherMap = Y(),
            n = !1;
        w(this._svgGraphicRecord.named, function(o) {
            var s = o.name,
                l = e.mapOrGeoModel,
                u = e.data,
                f = o.svgNodeTagLower,
                p = o.el,
                c = u ? u.indexOfName(s) : null,
                h = l.getRegionModel(s);
            F4.get(f) != null && p instanceof ye && tP(e, p, c, h), p instanceof ye && (p.culling = !0);
            var v = h.get("silent", !0);
            if (v != null && (p.silent = v), p.z2EmphasisLift = 0, !o.namedFrom && (H4.get(f) != null && eP(e, p, s, h, l, c, null), rP(e, p, s, h, l, c), iP(e, p, s, h, l), G4.get(f) != null)) {
                var d = aP(e, p, s, h, l);
                d === "self" && (n = !0);
                var m = a.get(s) || a.set(s, []);
                m.push(p)
            }
        }, this), this._enableBlurEntireSVG(n, e)
    }, r.prototype._enableBlurEntireSVG = function(e, t) {
        if (e && t.isGeo) {
            var i = t.mapOrGeoModel.getModel(["blur", "itemStyle"]).getItemStyle(),
                a = i.opacity;
            this._svgGraphicRecord.root.traverse(function(n) {
                if (!n.isGroup) {
                    Gi(n);
                    var o = n.ensureState("blur").style || {};
                    o.opacity == null && a != null && (o.opacity = a), n.ensureState("emphasis")
                }
            })
        }
    }, r.prototype.remove = function() {
        this._regionsGroup.removeAll(), this._regionsGroupByName = null, this._svgGroup.removeAll(), this._freeSVG(), this._controller.dispose(), this._controllerHost = null
    }, r.prototype.findHighDownDispatchers = function(e, t) {
        if (e == null) return [];
        var i = t.coordinateSystem;
        if (i.resourceType === "geoJSON") {
            var a = this._regionsGroupByName;
            if (a) {
                var n = a.get(e);
                return n ? [n] : []
            }
        } else if (i.resourceType === "geoSVG") return this._svgDispatcherMap && this._svgDispatcherMap.get(e) || []
    }, r.prototype._svgResourceChanged = function(e) {
        return this._svgMapName !== e
    }, r.prototype._useSVG = function(e) {
        var t = Sr.getGeoResource(e);
        if (t && t.type === "geoSVG") {
            var i = t.useGraphic(this.uid);
            this._svgGroup.add(i.root), this._svgGraphicRecord = i, this._svgMapName = e
        }
    }, r.prototype._freeSVG = function() {
        var e = this._svgMapName;
        if (e != null) {
            var t = Sr.getGeoResource(e);
            t && t.type === "geoSVG" && t.freeGraphic(this.uid), this._svgGraphicRecord = null, this._svgDispatcherMap = null, this._svgGroup.removeAll(), this._svgMapName = null
        }
    }, r.prototype._updateController = function(e, t, i) {
        var a = e.coordinateSystem,
            n = this._controller,
            o = this._controllerHost;
        o.zoomLimit = e.get("scaleLimit"), o.zoom = a.getZoom(), n.enable(e.get("roam") || !1);
        var s = e.mainType;

        function l() {
            var u = {
                type: "geoRoam",
                componentType: s
            };
            return u[s + "Id"] = e.id, u
        }
        n.off("pan").on("pan", function(u) {
            this._mouseDownFlag = !1, Yl(o, u.dx, u.dy), i.dispatchAction(O(l(), {
                dx: u.dx,
                dy: u.dy,
                animation: {
                    duration: 0
                }
            }))
        }, this), n.off("zoom").on("zoom", function(u) {
            this._mouseDownFlag = !1, Zl(o, u.scale, u.originX, u.originY), i.dispatchAction(O(l(), {
                totalZoom: o.zoom,
                zoom: u.scale,
                originX: u.originX,
                originY: u.originY,
                animation: {
                    duration: 0
                }
            }))
        }, this), n.setPointerChecker(function(u, f, p) {
            return a.containPoint([f, p]) && !Qn(u, i, e)
        })
    }, r.prototype.resetForLabelLayout = function() {
        this.group.traverse(function(e) {
            var t = e.getTextContent();
            t && (t.ignore = oP(t).ignore)
        })
    }, r.prototype._updateMapSelectHandler = function(e, t, i, a) {
        var n = this;
        t.off("mousedown"), t.off("click"), e.get("selectedMode") && (t.on("mousedown", function() {
            n._mouseDownFlag = !0
        }), t.on("click", function(o) {
            n._mouseDownFlag && (n._mouseDownFlag = !1)
        }))
    }, r
}();

function tP(r, e, t, i) {
    var a = i.getModel("itemStyle"),
        n = i.getModel(["emphasis", "itemStyle"]),
        o = i.getModel(["blur", "itemStyle"]),
        s = i.getModel(["select", "itemStyle"]),
        l = pd(a),
        u = pd(n),
        f = pd(s),
        p = pd(o),
        c = r.data;
    if (c) {
        var h = c.getItemVisual(t, "style"),
            v = c.getItemVisual(t, "decal");
        r.isVisualEncodedByVisualMap && h.fill && (l.fill = h.fill), v && (l.decal = ji(v, r.api))
    }
    e.setStyle(l), e.style.strokeNoScale = !0, e.ensureState("emphasis").style = u, e.ensureState("select").style = f, e.ensureState("blur").style = p, Gi(e)
}

function eP(r, e, t, i, a, n, o) {
    var s = r.data,
        l = r.isGeo,
        u = s && isNaN(s.get(s.mapDimension("value"), n)),
        f = s && s.getItemLayout(n);
    if (l || u || f && f.showLabel) {
        var p = l ? t : n,
            c = void 0;
        (!s || n >= 0) && (c = a);
        var h = o ? {
            normal: {
                align: "center",
                verticalAlign: "middle"
            }
        } : null;
        Xt(e, Ft(i), {
            labelFetcher: c,
            labelDataIndex: p,
            defaultText: t
        }, h);
        var v = e.getTextContent();
        if (v && (oP(v).ignore = v.ignore, e.textConfig && o)) {
            var d = e.getBoundingRect().clone();
            e.textConfig.layoutRect = d, e.textConfig.position = [(o[0] - d.x) / d.width * 100 + "%", (o[1] - d.y) / d.height * 100 + "%"]
        }
        e.disableLabelAnimation = !0
    } else e.removeTextContent(), e.removeTextConfig(), e.disableLabelAnimation = null
}

function rP(r, e, t, i, a, n) {
    r.data ? r.data.setItemGraphicEl(n, e) : et(e).eventData = {
        componentType: "geo",
        componentIndex: a.componentIndex,
        geoIndex: a.componentIndex,
        name: t,
        region: i && i.option || {}
    }
}

function iP(r, e, t, i, a) {
    r.data || _i({
        el: e,
        componentModel: a,
        itemName: t,
        itemTooltipOption: i.get("tooltip")
    })
}

function aP(r, e, t, i, a) {
    e.highDownSilentOnTouch = !!a.get("selectedMode");
    var n = i.getModel("emphasis"),
        o = n.get("focus");
    return Nt(e, o, n.get("blurScope"), n.get("disabled")), r.isGeo && LC(e, a, t), o
}

function nP(r, e, t) {
    var i = [],
        a;

    function n() {
        a = []
    }

    function o() {
        a.length && (i.push(a), a = [])
    }
    var s = e({
        polygonStart: n,
        polygonEnd: o,
        lineStart: n,
        lineEnd: o,
        point: function(l, u) {
            isFinite(l) && isFinite(u) && a.push([l, u])
        },
        sphere: function() {}
    });
    return !t && s.polygonStart(), w(r, function(l) {
        s.lineStart();
        for (var u = 0; u < l.length; u++) s.point(l[u][0], l[u][1]);
        s.lineEnd()
    }), !t && s.polygonEnd(), i
}
var cd = W4;
var Y4 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.render = function(t, i, a, n) {
            if (!(n && n.type === "mapToggleSelect" && n.from === this.uid)) {
                var o = this.group;
                if (o.removeAll(), !t.getHostGeoModel()) {
                    if (this._mapDraw && n && n.type === "geoRoam" && this._mapDraw.resetForLabelLayout(), n && n.type === "geoRoam" && n.componentType === "series" && n.seriesId === t.id) {
                        var s = this._mapDraw;
                        s && o.add(s.group)
                    } else if (t.needsDrawMap) {
                        var s = this._mapDraw || new cd(a);
                        o.add(s.group), s.draw(t, i, a, this, n), this._mapDraw = s
                    } else this._mapDraw && this._mapDraw.remove(), this._mapDraw = null;
                    t.get("showLegendSymbol") && i.getComponent("legend") && this._renderSymbols(t, i, a)
                }
            }
        }, e.prototype.remove = function() {
            this._mapDraw && this._mapDraw.remove(), this._mapDraw = null, this.group.removeAll()
        }, e.prototype.dispose = function() {
            this._mapDraw && this._mapDraw.remove(), this._mapDraw = null
        }, e.prototype._renderSymbols = function(t, i, a) {
            var n = t.originalData,
                o = this.group;
            n.each(n.mapDimension("value"), function(s, l) {
                if (!isNaN(s)) {
                    var u = n.getItemLayout(l);
                    if (!(!u || !u.point)) {
                        var f = u.point,
                            p = u.offset,
                            c = new je({
                                style: {
                                    fill: t.getData().getVisual("style").fill
                                },
                                shape: {
                                    cx: f[0] + p * 9,
                                    cy: f[1],
                                    r: 3
                                },
                                silent: !0,
                                z2: 8 + (p ? 0 : Ga + 1)
                            });
                        if (!p) {
                            var h = t.mainSeries.getData(),
                                v = n.getName(l),
                                d = h.indexOfName(v),
                                m = n.getItemModel(l),
                                g = m.getModel("label"),
                                y = h.getItemGraphicEl(d);
                            Xt(c, Ft(m), {
                                labelFetcher: {
                                    getFormattedLabel: function(x, _) {
                                        return t.getFormattedLabel(d, _)
                                    }
                                },
                                defaultText: v
                            }), c.disableLabelAnimation = !0, g.get("position") || c.setTextConfig({
                                position: "bottom"
                            }), y.onHoverStateChange = function(x) {
                                Ko(c, x)
                            }
                        }
                        o.add(c)
                    }
                }
            })
        }, e.type = "map", e
    }(At),
    sP = Y4;
var Z4 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t.needsDrawMap = !1, t.seriesGroup = [], t.getTooltipPosition = function(i) {
                if (i != null) {
                    var a = this.getData().getName(i),
                        n = this.coordinateSystem,
                        o = n.getRegion(a);
                    return o && n.dataToPoint(o.getCenter())
                }
            }, t
        }
        return e.prototype.getInitialData = function(t) {
            for (var i = si(this, {
                    coordDimensions: ["value"],
                    encodeDefaulter: rt(Dl, this)
                }), a = Y(), n = [], o = 0, s = i.count(); o < s; o++) {
                var l = i.getName(o);
                a.set(l, o)
            }
            var u = Sr.load(this.getMapType(), this.option.nameMap, this.option.nameProperty);
            return w(u.regions, function(f) {
                var p = f.name,
                    c = a.get(p),
                    h = f.properties && f.properties.echartsStyle,
                    v;
                c == null ? (v = {
                    name: p
                }, n.push(v)) : v = i.getRawDataItem(c), h && nt(v, h)
            }), i.appendData(n), i
        }, e.prototype.getHostGeoModel = function() {
            var t = this.option.geoIndex;
            return t != null ? this.ecModel.getComponent("geo", t) : null
        }, e.prototype.getMapType = function() {
            return (this.getHostGeoModel() || this).option.map
        }, e.prototype.getRawValue = function(t) {
            var i = this.getData();
            return i.get(i.mapDimension("value"), t)
        }, e.prototype.getRegionModel = function(t) {
            var i = this.getData();
            return i.getItemModel(i.indexOfName(t))
        }, e.prototype.formatTooltip = function(t, i, a) {
            for (var n = this.getData(), o = this.getRawValue(t), s = n.getName(t), l = this.seriesGroup, u = [], f = 0; f < l.length; f++) {
                var p = l[f].originalData.indexOfName(s),
                    c = n.mapDimension("value");
                isNaN(l[f].originalData.get(c, p)) || u.push(l[f].name)
            }
            return Jt("section", {
                header: u.join(", "),
                noHeader: !u.length,
                blocks: [Jt("nameValue", {
                    name: s,
                    value: o
                })]
            })
        }, e.prototype.setZoom = function(t) {
            this.option.zoom = t
        }, e.prototype.setCenter = function(t) {
            this.option.center = t
        }, e.prototype.getLegendIcon = function(t) {
            var i = t.icon || "roundRect",
                a = Vt(i, 0, 0, t.itemWidth, t.itemHeight, t.itemStyle.fill);
            return a.setStyle(t.itemStyle), a.style.stroke = "none", i.indexOf("empty") > -1 && (a.style.stroke = a.style.fill, a.style.fill = "#fff", a.style.lineWidth = 2), a
        }, e.type = "series.map", e.dependencies = ["geo"], e.layoutMode = "box", e.defaultOption = {
            z: 2,
            coordinateSystem: "geo",
            map: "",
            left: "center",
            top: "center",
            aspectScale: null,
            showLegendSymbol: !0,
            boundingCoords: null,
            center: null,
            zoom: 1,
            scaleLimit: null,
            selectedMode: !0,
            label: {
                show: !1,
                color: "#000"
            },
            itemStyle: {
                borderWidth: .5,
                borderColor: "#444",
                areaColor: "#eee"
            },
            emphasis: {
                label: {
                    show: !0,
                    color: "rgb(100,0,0)"
                },
                itemStyle: {
                    areaColor: "rgba(255,215,0,0.8)"
                }
            },
            select: {
                label: {
                    show: !0,
                    color: "rgb(100,0,0)"
                },
                itemStyle: {
                    color: "rgba(255,215,0,0.8)"
                }
            },
            nameProperty: "name"
        }, e
    }(Lt),
    lP = Z4;

function X4(r, e) {
    var t = {};
    return w(r, function(i) {
        i.each(i.mapDimension("value"), function(a, n) {
            var o = "ec-" + i.getName(n);
            t[o] = t[o] || [], isNaN(a) || t[o].push(a)
        })
    }), r[0].map(r[0].mapDimension("value"), function(i, a) {
        for (var n = "ec-" + r[0].getName(a), o = 0, s = 1 / 0, l = -1 / 0, u = t[n].length, f = 0; f < u; f++) s = Math.min(s, t[n][f]), l = Math.max(l, t[n][f]), o += t[n][f];
        var p;
        return e === "min" ? p = s : e === "max" ? p = l : e === "average" ? p = o / u : p = o, u === 0 ? NaN : p
    })
}

function x_(r) {
    var e = {};
    r.eachSeriesByType("map", function(t) {
        var i = t.getHostGeoModel(),
            a = i ? "o" + i.id : "i" + t.getMapType();
        (e[a] = e[a] || []).push(t)
    }), w(e, function(t, i) {
        for (var a = X4(k(t, function(o) {
                return o.getData()
            }), t[0].get("mapValueCalculation")), n = 0; n < t.length; n++) t[n].originalData = t[n].getData();
        for (var n = 0; n < t.length; n++) t[n].seriesGroup = t, t[n].needsDrawMap = n === 0 && !t[n].getHostGeoModel(), t[n].setData(a.cloneShallow()), t[n].mainSeries = t[0]
    })
}

function __(r) {
    var e = {};
    r.eachSeriesByType("map", function(t) {
        var i = t.getMapType();
        if (!(t.getHostGeoModel() || e[i])) {
            var a = {};
            w(t.seriesGroup, function(o) {
                var s = o.coordinateSystem,
                    l = o.originalData;
                o.get("showLegendSymbol") && r.getComponent("legend") && l.each(l.mapDimension("value"), function(u, f) {
                    var p = l.getName(f),
                        c = s.getRegion(p);
                    if (!(!c || isNaN(u))) {
                        var h = a[p] || 0,
                            v = s.dataToPoint(c.getCenter());
                        a[p] = h + 1, l.setItemLayout(f, {
                            point: v,
                            offset: h
                        })
                    }
                })
            });
            var n = t.getData();
            n.each(function(o) {
                var s = n.getName(o),
                    l = n.getItemLayout(o) || {};
                l.showLabel = !a[s], n.setItemLayout(o, l)
            }), e[i] = !0
        }
    })
}
var uP = fe,
    q4 = function(r) {
        L(e, r);

        function e(t) {
            var i = r.call(this) || this;
            return i.type = "view", i.dimensions = ["x", "y"], i._roamTransformable = new Lr, i._rawTransformable = new Lr, i.name = t, i
        }
        return e.prototype.setBoundingRect = function(t, i, a, n) {
            return this._rect = new it(t, i, a, n), this._rect
        }, e.prototype.getBoundingRect = function() {
            return this._rect
        }, e.prototype.setViewRect = function(t, i, a, n) {
            this._transformTo(t, i, a, n), this._viewRect = new it(t, i, a, n)
        }, e.prototype._transformTo = function(t, i, a, n) {
            var o = this.getBoundingRect(),
                s = this._rawTransformable;
            s.transform = o.calculateTransform(new it(t, i, a, n));
            var l = s.parent;
            s.parent = null, s.decomposeTransform(), s.parent = l, this._updateTransform()
        }, e.prototype.setCenter = function(t, i) {
            t && (this._center = [W(t[0], i.getWidth()), W(t[1], i.getHeight())], this._updateCenterAndZoom())
        }, e.prototype.setZoom = function(t) {
            t = t || 1;
            var i = this.zoomLimit;
            i && (i.max != null && (t = Math.min(i.max, t)), i.min != null && (t = Math.max(i.min, t))), this._zoom = t, this._updateCenterAndZoom()
        }, e.prototype.getDefaultCenter = function() {
            var t = this.getBoundingRect(),
                i = t.x + t.width / 2,
                a = t.y + t.height / 2;
            return [i, a]
        }, e.prototype.getCenter = function() {
            return this._center || this.getDefaultCenter()
        }, e.prototype.getZoom = function() {
            return this._zoom || 1
        }, e.prototype.getRoamTransform = function() {
            return this._roamTransformable.getLocalTransform()
        }, e.prototype._updateCenterAndZoom = function() {
            var t = this._rawTransformable.getLocalTransform(),
                i = this._roamTransformable,
                a = this.getDefaultCenter(),
                n = this.getCenter(),
                o = this.getZoom();
            n = fe([], n, t), a = fe([], a, t), i.originX = n[0], i.originY = n[1], i.x = a[0] - n[0], i.y = a[1] - n[1], i.scaleX = i.scaleY = o, this._updateTransform()
        }, e.prototype._updateTransform = function() {
            var t = this._roamTransformable,
                i = this._rawTransformable;
            i.parent = t, t.updateTransform(), i.updateTransform(), Ws(this.transform || (this.transform = []), i.transform || me()), this._rawTransform = i.getLocalTransform(), this.invTransform = this.invTransform || [], jr(this.invTransform, this.transform), this.decomposeTransform()
        }, e.prototype.getTransformInfo = function() {
            var t = this._rawTransformable,
                i = this._roamTransformable,
                a = new Lr;
            return a.transform = i.transform, a.decomposeTransform(), {
                roam: {
                    x: a.x,
                    y: a.y,
                    scaleX: a.scaleX,
                    scaleY: a.scaleY
                },
                raw: {
                    x: t.x,
                    y: t.y,
                    scaleX: t.scaleX,
                    scaleY: t.scaleY
                }
            }
        }, e.prototype.getViewRect = function() {
            return this._viewRect
        }, e.prototype.getViewRectAfterRoam = function() {
            var t = this.getBoundingRect().clone();
            return t.applyTransform(this.transform), t
        }, e.prototype.dataToPoint = function(t, i, a) {
            var n = i ? this._rawTransform : this.transform;
            return a = a || [], n ? uP(a, t, n) : Ee(a, t)
        }, e.prototype.pointToData = function(t) {
            var i = this.invTransform;
            return i ? uP([], t, i) : [t[0], t[1]]
        }, e.prototype.convertToPixel = function(t, i, a) {
            var n = fP(i);
            return n === this ? n.dataToPoint(a) : null
        }, e.prototype.convertFromPixel = function(t, i, a) {
            var n = fP(i);
            return n === this ? n.pointToData(a) : null
        }, e.prototype.containPoint = function(t) {
            return this.getViewRectAfterRoam().contain(t[0], t[1])
        }, e.dimensions = ["x", "y"], e
    }(Lr);

function fP(r) {
    var e = r.seriesModel;
    return e ? e.coordinateSystem : null
}
var on = q4;
var K4 = {
        geoJSON: {
            aspectScale: .75,
            invertLongitute: !0
        },
        geoSVG: {
            aspectScale: 1,
            invertLongitute: !1
        }
    },
    S_ = ["lng", "lat"],
    cP = function(r) {
        L(e, r);

        function e(t, i, a) {
            var n = r.call(this, t) || this;
            n.dimensions = S_, n.type = "geo", n._nameCoordMap = Y(), n.map = i;
            var o = a.projection,
                s = Sr.load(i, a.nameMap, a.nameProperty),
                l = Sr.getGeoResource(i),
                u = n.resourceType = l ? l.type : null,
                f = n.regions = s.regions,
                p = K4[l.type];
            n._regionsMap = s.regionsMap, n.regions = s.regions, n.projection = o;
            var c;
            if (o)
                for (var h = 0; h < f.length; h++) {
                    var v = f[h].getBoundingRect(o);
                    c = c || v.clone(), c.union(v)
                } else c = s.boundingRect;
            return n.setBoundingRect(c.x, c.y, c.width, c.height), n.aspectScale = o ? 1 : ot(a.aspectScale, p.aspectScale), n._invertLongitute = o ? !1 : p.invertLongitute, n
        }
        return e.prototype._transformTo = function(t, i, a, n) {
            var o = this.getBoundingRect(),
                s = this._invertLongitute;
            o = o.clone(), s && (o.y = -o.y - o.height);
            var l = this._rawTransformable;
            l.transform = o.calculateTransform(new it(t, i, a, n));
            var u = l.parent;
            l.parent = null, l.decomposeTransform(), l.parent = u, s && (l.scaleY = -l.scaleY), this._updateTransform()
        }, e.prototype.getRegion = function(t) {
            return this._regionsMap.get(t)
        }, e.prototype.getRegionByCoord = function(t) {
            for (var i = this.regions, a = 0; a < i.length; a++) {
                var n = i[a];
                if (n.type === "geoJSON" && n.contain(t)) return i[a]
            }
        }, e.prototype.addGeoCoord = function(t, i) {
            this._nameCoordMap.set(t, i)
        }, e.prototype.getGeoCoord = function(t) {
            var i = this._regionsMap.get(t);
            return this._nameCoordMap.get(t) || i && i.getCenter()
        }, e.prototype.dataToPoint = function(t, i, a) {
            if (F(t) && (t = this.getGeoCoord(t)), t) {
                var n = this.projection;
                return n && (t = n.project(t)), t && this.projectedToPoint(t, i, a)
            }
        }, e.prototype.pointToData = function(t) {
            var i = this.projection;
            return i && (t = i.unproject(t)), t && this.pointToProjected(t)
        }, e.prototype.pointToProjected = function(t) {
            return r.prototype.pointToData.call(this, t)
        }, e.prototype.projectedToPoint = function(t, i, a) {
            return r.prototype.dataToPoint.call(this, t, i, a)
        }, e.prototype.convertToPixel = function(t, i, a) {
            var n = pP(i);
            return n === this ? n.dataToPoint(a) : null
        }, e.prototype.convertFromPixel = function(t, i, a) {
            var n = pP(i);
            return n === this ? n.pointToData(a) : null
        }, e
    }(on);
Bt(cP, on);

function pP(r) {
    var e = r.geoModel,
        t = r.seriesModel;
    return e ? e.coordinateSystem : t ? t.coordinateSystem || (t.getReferringComponents("geo", Ht).models[0] || {}).coordinateSystem : null
}
var b_ = cP;

function hP(r, e) {
    var t = r.get("boundingCoords");
    if (t != null) {
        var i = t[0],
            a = t[1];
        if (isFinite(i[0]) && isFinite(i[1]) && isFinite(a[0]) && isFinite(a[1])) {
            var n = this.projection;
            if (n) {
                var o = i[0],
                    s = i[1],
                    l = a[0],
                    u = a[1];
                i = [1 / 0, 1 / 0], a = [-1 / 0, -1 / 0];
                var f = function(b, T, C, A) {
                    for (var D = C - b, M = A - T, I = 0; I <= 100; I++) {
                        var E = I / 100,
                            P = n.project([b + D * E, T + M * E]);
                        Tr(i, i, P), Cr(a, a, P)
                    }
                };
                f(o, s, l, s), f(l, s, l, u), f(l, u, o, u), f(o, u, l, s)
            }
            this.setBoundingRect(i[0], i[1], a[0] - i[0], a[1] - i[1])
        }
    }
    var p = this.getBoundingRect(),
        c = r.get("layoutCenter"),
        h = r.get("layoutSize"),
        v = e.getWidth(),
        d = e.getHeight(),
        m = p.width / p.height * this.aspectScale,
        g = !1,
        y, x;
    c && h && (y = [W(c[0], v), W(c[1], d)], x = W(h, Math.min(v, d)), !isNaN(y[0]) && !isNaN(y[1]) && !isNaN(x) && (g = !0));
    var _;
    if (g) _ = {}, m > 1 ? (_.width = x, _.height = x / m) : (_.height = x, _.width = x * m), _.y = y[1] - _.height / 2, _.x = y[0] - _.width / 2;
    else {
        var S = r.getBoxLayoutParams();
        S.aspect = m, _ = Ut(S, {
            width: v,
            height: d
        })
    }
    this.setViewRect(_.x, _.y, _.width, _.height), this.setCenter(r.get("center"), e), this.setZoom(r.get("zoom"))
}

function j4(r, e) {
    w(e.get("geoCoord"), function(t, i) {
        r.addGeoCoord(i, t)
    })
}
var J4 = function() {
        function r() {
            this.dimensions = S_
        }
        return r.prototype.create = function(e, t) {
            var i = [];

            function a(o) {
                return {
                    nameProperty: o.get("nameProperty"),
                    aspectScale: o.get("aspectScale"),
                    projection: o.get("projection")
                }
            }
            e.eachComponent("geo", function(o, s) {
                var l = o.get("map"),
                    u = new b_(l + s, l, O({
                        nameMap: o.get("nameMap")
                    }, a(o)));
                u.zoomLimit = o.get("scaleLimit"), i.push(u), o.coordinateSystem = u, u.model = o, u.resize = hP, u.resize(o, t)
            }), e.eachSeries(function(o) {
                var s = o.get("coordinateSystem");
                if (s === "geo") {
                    var l = o.get("geoIndex") || 0;
                    o.coordinateSystem = i[l]
                }
            });
            var n = {};
            return e.eachSeriesByType("map", function(o) {
                if (!o.getHostGeoModel()) {
                    var s = o.getMapType();
                    n[s] = n[s] || [], n[s].push(o)
                }
            }), w(n, function(o, s) {
                var l = k(o, function(f) {
                        return f.get("nameMap")
                    }),
                    u = new b_(s, s, O({
                        nameMap: vo(l)
                    }, a(o[0])));
                u.zoomLimit = Kt.apply(null, k(o, function(f) {
                    return f.get("scaleLimit")
                })), i.push(u), u.resize = hP, u.resize(o[0], t), w(o, function(f) {
                    f.coordinateSystem = u, j4(u, f)
                })
            }), i
        }, r.prototype.getFilledRegions = function(e, t, i, a) {
            for (var n = (e || []).slice(), o = Y(), s = 0; s < n.length; s++) o.set(n[s].name, n[s]);
            var l = Sr.load(t, i, a);
            return w(l.regions, function(u) {
                var f = u.name,
                    p = o.get(f),
                    c = u.properties && u.properties.echartsStyle;
                p || (p = {
                    name: f
                }, n.push(p)), c && nt(p, c)
            }), n
        }, r
    }(),
    Q4 = new J4,
    hd = Q4;
var $4 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.init = function(t, i, a) {
            var n = Sr.getGeoResource(t.map);
            if (n && n.type === "geoJSON") {
                var o = t.itemStyle = t.itemStyle || {};
                "color" in o || (o.color = "#eee")
            }
            this.mergeDefaultAndTheme(t, a), Qr(t, "label", ["show"])
        }, e.prototype.optionUpdated = function() {
            var t = this,
                i = this.option;
            i.regions = hd.getFilledRegions(i.regions, i.map, i.nameMap, i.nameProperty);
            var a = {};
            this._optionModelMap = Me(i.regions || [], function(n, o) {
                var s = o.name;
                return s && (n.set(s, new Dt(o, t, t.ecModel)), o.selected && (a[s] = !0)), n
            }, Y()), i.selectedMap || (i.selectedMap = a)
        }, e.prototype.getRegionModel = function(t) {
            return this._optionModelMap.get(t) || new Dt(null, this, this.ecModel)
        }, e.prototype.getFormattedLabel = function(t, i) {
            var a = this.getRegionModel(t),
                n = i === "normal" ? a.get(["label", "formatter"]) : a.get(["emphasis", "label", "formatter"]),
                o = {
                    name: t
                };
            if (X(n)) return o.status = i, n(o);
            if (F(n)) return n.replace("{a}", t ? ? "")
        }, e.prototype.setZoom = function(t) {
            this.option.zoom = t
        }, e.prototype.setCenter = function(t) {
            this.option.center = t
        }, e.prototype.select = function(t) {
            var i = this.option,
                a = i.selectedMode;
            if (a) {
                a !== "multiple" && (i.selectedMap = null);
                var n = i.selectedMap || (i.selectedMap = {});
                n[t] = !0
            }
        }, e.prototype.unSelect = function(t) {
            var i = this.option.selectedMap;
            i && (i[t] = !1)
        }, e.prototype.toggleSelected = function(t) {
            this[this.isSelected(t) ? "unSelect" : "select"](t)
        }, e.prototype.isSelected = function(t) {
            var i = this.option.selectedMap;
            return !!(i && i[t])
        }, e.type = "geo", e.layoutMode = "box", e.defaultOption = {
            z: 0,
            show: !0,
            left: "center",
            top: "center",
            aspectScale: null,
            silent: !1,
            map: "",
            boundingCoords: null,
            center: null,
            zoom: 1,
            scaleLimit: null,
            label: {
                show: !1,
                color: "#000"
            },
            itemStyle: {
                borderWidth: .5,
                borderColor: "#444"
            },
            emphasis: {
                label: {
                    show: !0,
                    color: "rgb(100,0,0)"
                },
                itemStyle: {
                    color: "rgba(255,215,0,0.8)"
                }
            },
            select: {
                label: {
                    show: !0,
                    color: "rgb(100,0,0)"
                },
                itemStyle: {
                    color: "rgba(255,215,0,0.8)"
                }
            },
            regions: []
        }, e
    }(yt),
    vP = $4;

function dP(r, e) {
    return r.pointToProjected ? r.pointToProjected(e) : r.pointToData(e)
}

function Xl(r, e, t, i) {
    var a = r.getZoom(),
        n = r.getCenter(),
        o = e.zoom,
        s = r.projectedToPoint ? r.projectedToPoint(n) : r.dataToPoint(n);
    if (e.dx != null && e.dy != null && (s[0] -= e.dx, s[1] -= e.dy, r.setCenter(dP(r, s), i)), o != null) {
        if (t) {
            var l = t.min || 0,
                u = t.max || 1 / 0;
            o = Math.max(Math.min(a * o, u), l) / a
        }
        r.scaleX *= o, r.scaleY *= o;
        var f = (e.originX - r.x) * (o - 1),
            p = (e.originY - r.y) * (o - 1);
        r.x -= f, r.y -= p, r.updateTransform(), r.setCenter(dP(r, s), i), r.setZoom(o * a)
    }
    return {
        center: r.getCenter(),
        zoom: r.getZoom()
    }
}
var tY = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t.focusBlurEnabled = !0, t
        }
        return e.prototype.init = function(t, i) {
            this._api = i
        }, e.prototype.render = function(t, i, a, n) {
            if (this._model = t, !t.get("show")) {
                this._mapDraw && this._mapDraw.remove(), this._mapDraw = null;
                return
            }
            this._mapDraw || (this._mapDraw = new cd(a));
            var o = this._mapDraw;
            o.draw(t, i, a, this, n), o.group.on("click", this._handleRegionClick, this), o.group.silent = t.get("silent"), this.group.add(o.group), this.updateSelectStatus(t, i, a)
        }, e.prototype._handleRegionClick = function(t) {
            var i;
            qi(t.target, function(a) {
                return (i = et(a).eventData) != null
            }, !0), i && this._api.dispatchAction({
                type: "geoToggleSelect",
                geoId: this._model.id,
                name: i.name
            })
        }, e.prototype.updateSelectStatus = function(t, i, a) {
            var n = this;
            this._mapDraw.group.traverse(function(o) {
                var s = et(o).eventData;
                if (s) return n._model.isSelected(s.name) ? a.enterSelect(o) : a.leaveSelect(o), !0
            })
        }, e.prototype.findHighDownDispatchers = function(t) {
            return this._mapDraw && this._mapDraw.findHighDownDispatchers(t, this._model)
        }, e.prototype.dispose = function() {
            this._mapDraw && this._mapDraw.remove()
        }, e.type = "geo", e
    }(It),
    mP = tY;

function eY(r, e, t) {
    Sr.registerMap(r, e, t)
}

function yp(r) {
    r.registerCoordinateSystem("geo", hd), r.registerComponentModel(vP), r.registerComponentView(mP), r.registerImpl("registerMap", eY), r.registerImpl("getMap", function(t) {
        return Sr.getMapForUser(t)
    });

    function e(t, i) {
        i.update = "geo:updateSelectStatus", r.registerAction(i, function(a, n) {
            var o = {},
                s = [];
            return n.eachComponent({
                mainType: "geo",
                query: a
            }, function(l) {
                l[t](a.name);
                var u = l.coordinateSystem;
                w(u.regions, function(p) {
                    o[p.name] = l.isSelected(p.name) || !1
                });
                var f = [];
                w(o, function(p, c) {
                    o[c] && f.push(c)
                }), s.push({
                    geoIndex: l.componentIndex,
                    name: f
                })
            }), {
                selected: o,
                allSelected: s,
                name: a.name
            }
        })
    }
    e("toggleSelected", {
        type: "geoToggleSelect",
        event: "geoselectchanged"
    }), e("select", {
        type: "geoSelect",
        event: "geoselected"
    }), e("unSelect", {
        type: "geoUnSelect",
        event: "geounselected"
    }), r.registerAction({
        type: "geoRoam",
        event: "geoRoam",
        update: "updateTransform"
    }, function(t, i, a) {
        var n = t.componentType || "series";
        i.eachComponent({
            mainType: n,
            query: t
        }, function(o) {
            var s = o.coordinateSystem;
            if (s.type === "geo") {
                var l = Xl(s, t, o.get("scaleLimit"), a);
                o.setCenter && o.setCenter(l.center), o.setZoom && o.setZoom(l.zoom), n === "series" && w(o.seriesGroup, function(u) {
                    u.setCenter(l.center), u.setZoom(l.zoom)
                })
            }
        })
    })
}

function w_(r) {
    _t(yp), r.registerChartView(sP), r.registerSeriesModel(lP), r.registerLayout(__), r.registerProcessor(r.PRIORITY.PROCESSOR.STATISTIC, x_), Qh("map", r.registerAction)
}

function gP(r) {
    var e = r;
    e.hierNode = {
        defaultAncestor: null,
        ancestor: e,
        prelim: 0,
        modifier: 0,
        change: 0,
        shift: 0,
        i: 0,
        thread: null
    };
    for (var t = [e], i, a; i = t.pop();)
        if (a = i.children, i.isExpand && a.length)
            for (var n = a.length, o = n - 1; o >= 0; o--) {
                var s = a[o];
                s.hierNode = {
                    defaultAncestor: null,
                    ancestor: s,
                    prelim: 0,
                    modifier: 0,
                    change: 0,
                    shift: 0,
                    i: o,
                    thread: null
                }, t.push(s)
            }
}

function yP(r, e) {
    var t = r.isExpand ? r.children : [],
        i = r.parentNode.children,
        a = r.hierNode.i ? i[r.hierNode.i - 1] : null;
    if (t.length) {
        rY(r);
        var n = (t[0].hierNode.prelim + t[t.length - 1].hierNode.prelim) / 2;
        a ? (r.hierNode.prelim = a.hierNode.prelim + e(r, a), r.hierNode.modifier = r.hierNode.prelim - n) : r.hierNode.prelim = n
    } else a && (r.hierNode.prelim = a.hierNode.prelim + e(r, a));
    r.parentNode.hierNode.defaultAncestor = iY(r, a, r.parentNode.hierNode.defaultAncestor || i[0], e)
}

function xP(r) {
    var e = r.hierNode.prelim + r.parentNode.hierNode.modifier;
    r.setLayout({
        x: e
    }, !0), r.hierNode.modifier += r.parentNode.hierNode.modifier
}

function A_(r) {
    return arguments.length ? r : oY
}

function Cs(r, e) {
    return r -= Math.PI / 2, {
        x: e * Math.cos(r),
        y: e * Math.sin(r)
    }
}

function _P(r, e) {
    return Ut(r.getBoxLayoutParams(), {
        width: e.getWidth(),
        height: e.getHeight()
    })
}

function rY(r) {
    for (var e = r.children, t = e.length, i = 0, a = 0; --t >= 0;) {
        var n = e[t];
        n.hierNode.prelim += i, n.hierNode.modifier += i, a += n.hierNode.change, i += n.hierNode.shift + a
    }
}

function iY(r, e, t, i) {
    if (e) {
        for (var a = r, n = r, o = n.parentNode.children[0], s = e, l = a.hierNode.modifier, u = n.hierNode.modifier, f = o.hierNode.modifier, p = s.hierNode.modifier; s = T_(s), n = C_(n), s && n;) {
            a = T_(a), o = C_(o), a.hierNode.ancestor = r;
            var c = s.hierNode.prelim + p - n.hierNode.prelim - u + i(s, n);
            c > 0 && (nY(aY(s, r, t), r, c), u += c, l += c), p += s.hierNode.modifier, u += n.hierNode.modifier, l += a.hierNode.modifier, f += o.hierNode.modifier
        }
        s && !T_(a) && (a.hierNode.thread = s, a.hierNode.modifier += p - l), n && !C_(o) && (o.hierNode.thread = n, o.hierNode.modifier += u - f, t = r)
    }
    return t
}

function T_(r) {
    var e = r.children;
    return e.length && r.isExpand ? e[e.length - 1] : r.hierNode.thread
}

function C_(r) {
    var e = r.children;
    return e.length && r.isExpand ? e[0] : r.hierNode.thread
}

function aY(r, e, t) {
    return r.hierNode.ancestor.parentNode === e.parentNode ? r.hierNode.ancestor : t
}

function nY(r, e, t) {
    var i = t / (e.hierNode.i - r.hierNode.i);
    e.hierNode.change -= i, e.hierNode.shift += t, e.hierNode.modifier += t, e.hierNode.prelim += t, r.hierNode.change += i
}

function oY(r, e) {
    return r.parentNode === e.parentNode ? 1 : 2
}
var sY = function() {
        function r() {
            this.parentPoint = [], this.childPoints = []
        }
        return r
    }(),
    lY = function(r) {
        L(e, r);

        function e(t) {
            return r.call(this, t) || this
        }
        return e.prototype.getDefaultStyle = function() {
            return {
                stroke: "#000",
                fill: null
            }
        }, e.prototype.getDefaultShape = function() {
            return new sY
        }, e.prototype.buildPath = function(t, i) {
            var a = i.childPoints,
                n = a.length,
                o = i.parentPoint,
                s = a[0],
                l = a[n - 1];
            if (n === 1) {
                t.moveTo(o[0], o[1]), t.lineTo(s[0], s[1]);
                return
            }
            var u = i.orient,
                f = u === "TB" || u === "BT" ? 0 : 1,
                p = 1 - f,
                c = W(i.forkPosition, 1),
                h = [];
            h[f] = o[f], h[p] = o[p] + (l[p] - o[p]) * c, t.moveTo(o[0], o[1]), t.lineTo(h[0], h[1]), t.moveTo(s[0], s[1]), h[f] = s[f], t.lineTo(h[0], h[1]), h[f] = l[f], t.lineTo(h[0], h[1]), t.lineTo(l[0], l[1]);
            for (var v = 1; v < n - 1; v++) {
                var d = a[v];
                t.moveTo(d[0], d[1]), h[f] = d[f], t.lineTo(h[0], h[1])
            }
        }, e
    }(st),
    uY = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t._mainGroup = new J, t
        }
        return e.prototype.init = function(t, i) {
            this._controller = new Da(i.getZr()), this._controllerHost = {
                target: this.group
            }, this.group.add(this._mainGroup)
        }, e.prototype.render = function(t, i, a) {
            var n = t.getData(),
                o = t.layoutInfo,
                s = this._mainGroup,
                l = t.get("layout");
            l === "radial" ? (s.x = o.x + o.width / 2, s.y = o.y + o.height / 2) : (s.x = o.x, s.y = o.y), this._updateViewCoordSys(t, a), this._updateController(t, i, a);
            var u = this._data;
            n.diff(u).add(function(f) {
                SP(n, f) && bP(n, f, null, s, t)
            }).update(function(f, p) {
                var c = u.getItemGraphicEl(p);
                if (!SP(n, f)) {
                    c && TP(u, p, c, s, t);
                    return
                }
                bP(n, f, c, s, t)
            }).remove(function(f) {
                var p = u.getItemGraphicEl(f);
                p && TP(u, f, p, s, t)
            }).execute(), this._nodeScaleRatio = t.get("nodeScaleRatio"), this._updateNodeAndLinkScale(t), t.get("expandAndCollapse") === !0 && n.eachItemGraphicEl(function(f, p) {
                f.off("click").on("click", function() {
                    a.dispatchAction({
                        type: "treeExpandAndCollapse",
                        seriesId: t.id,
                        dataIndex: p
                    })
                })
            }), this._data = n
        }, e.prototype._updateViewCoordSys = function(t, i) {
            var a = t.getData(),
                n = [];
            a.each(function(p) {
                var c = a.getItemLayout(p);
                c && !isNaN(c.x) && !isNaN(c.y) && n.push([+c.x, +c.y])
            });
            var o = [],
                s = [];
            Go(n, o, s);
            var l = this._min,
                u = this._max;
            s[0] - o[0] === 0 && (o[0] = l ? l[0] : o[0] - 1, s[0] = u ? u[0] : s[0] + 1), s[1] - o[1] === 0 && (o[1] = l ? l[1] : o[1] - 1, s[1] = u ? u[1] : s[1] + 1);
            var f = t.coordinateSystem = new on;
            f.zoomLimit = t.get("scaleLimit"), f.setBoundingRect(o[0], o[1], s[0] - o[0], s[1] - o[1]), f.setCenter(t.get("center"), i), f.setZoom(t.get("zoom")), this.group.attr({
                x: f.x,
                y: f.y,
                scaleX: f.scaleX,
                scaleY: f.scaleY
            }), this._min = o, this._max = s
        }, e.prototype._updateController = function(t, i, a) {
            var n = this,
                o = this._controller,
                s = this._controllerHost,
                l = this.group;
            o.setPointerChecker(function(u, f, p) {
                var c = l.getBoundingRect();
                return c.applyTransform(l.transform), c.contain(f, p) && !Qn(u, a, t)
            }), o.enable(t.get("roam")), s.zoomLimit = t.get("scaleLimit"), s.zoom = t.coordinateSystem.getZoom(), o.off("pan").off("zoom").on("pan", function(u) {
                Yl(s, u.dx, u.dy), a.dispatchAction({
                    seriesId: t.id,
                    type: "treeRoam",
                    dx: u.dx,
                    dy: u.dy
                })
            }).on("zoom", function(u) {
                Zl(s, u.scale, u.originX, u.originY), a.dispatchAction({
                    seriesId: t.id,
                    type: "treeRoam",
                    zoom: u.scale,
                    originX: u.originX,
                    originY: u.originY
                }), n._updateNodeAndLinkScale(t), a.updateLabelLayout()
            })
        }, e.prototype._updateNodeAndLinkScale = function(t) {
            var i = t.getData(),
                a = this._getNodeGlobalScale(t);
            i.eachItemGraphicEl(function(n, o) {
                n.setSymbolScale(a)
            })
        }, e.prototype._getNodeGlobalScale = function(t) {
            var i = t.coordinateSystem;
            if (i.type !== "view") return 1;
            var a = this._nodeScaleRatio,
                n = i.scaleX || 1,
                o = i.getZoom(),
                s = (o - 1) * a + 1;
            return s / n
        }, e.prototype.dispose = function() {
            this._controller && this._controller.dispose(), this._controllerHost = null
        }, e.prototype.remove = function() {
            this._mainGroup.removeAll(), this._data = null
        }, e.type = "tree", e
    }(At);

function SP(r, e) {
    var t = r.getItemLayout(e);
    return t && !isNaN(t.x) && !isNaN(t.y)
}

function bP(r, e, t, i, a) {
    var n = !t,
        o = r.tree.getNodeByDataIndex(e),
        s = o.getModel(),
        l = o.getVisual("style").fill,
        u = o.isExpand === !1 && o.children.length !== 0 ? l : "#fff",
        f = r.tree.root,
        p = o.parentNode === f ? o : o.parentNode || o,
        c = r.getItemGraphicEl(p.dataIndex),
        h = p.getLayout(),
        v = c ? {
            x: c.__oldX,
            y: c.__oldY,
            rawX: c.__radialOldRawX,
            rawY: c.__radialOldRawY
        } : h,
        d = o.getLayout();
    n ? (t = new nn(r, e, null, {
        symbolInnerColor: u,
        useNameLabel: !0
    }), t.x = v.x, t.y = v.y) : t.updateData(r, e, null, {
        symbolInnerColor: u,
        useNameLabel: !0
    }), t.__radialOldRawX = t.__radialRawX, t.__radialOldRawY = t.__radialRawY, t.__radialRawX = d.rawX, t.__radialRawY = d.rawY, i.add(t), r.setItemGraphicEl(e, t), t.__oldX = t.x, t.__oldY = t.y, xt(t, {
        x: d.x,
        y: d.y
    }, a);
    var m = t.getSymbolPath();
    if (a.get("layout") === "radial") {
        var g = f.children[0],
            y = g.getLayout(),
            x = g.children.length,
            _ = void 0,
            S = void 0;
        if (d.x === y.x && o.isExpand === !0 && g.children.length) {
            var b = {
                x: (g.children[0].getLayout().x + g.children[x - 1].getLayout().x) / 2,
                y: (g.children[0].getLayout().y + g.children[x - 1].getLayout().y) / 2
            };
            _ = Math.atan2(b.y - y.y, b.x - y.x), _ < 0 && (_ = Math.PI * 2 + _), S = b.x < y.x, S && (_ = _ - Math.PI)
        } else _ = Math.atan2(d.y - y.y, d.x - y.x), _ < 0 && (_ = Math.PI * 2 + _), o.children.length === 0 || o.children.length !== 0 && o.isExpand === !1 ? (S = d.x < y.x, S && (_ = _ - Math.PI)) : (S = d.x > y.x, S || (_ = _ - Math.PI));
        var T = S ? "left" : "right",
            C = s.getModel("label"),
            A = C.get("rotate"),
            D = A * (Math.PI / 180),
            M = m.getTextContent();
        M && (m.setTextConfig({
            position: C.get("position") || T,
            rotation: A == null ? -_ : D,
            origin: "center"
        }), M.setStyle("verticalAlign", "middle"))
    }
    var I = s.get(["emphasis", "focus"]),
        E = I === "relative" ? na(o.getAncestorsIndices(), o.getDescendantIndices()) : I === "ancestor" ? o.getAncestorsIndices() : I === "descendant" ? o.getDescendantIndices() : null;
    E && (et(t).focus = E), fY(a, o, f, t, v, h, d, i), t.__edge && (t.onHoverStateChange = function(P) {
        if (P !== "blur") {
            var R = o.parentNode && r.getItemGraphicEl(o.parentNode.dataIndex);
            R && R.hoverState === qo || Ko(t.__edge, P)
        }
    })
}

function fY(r, e, t, i, a, n, o, s) {
    var l = e.getModel(),
        u = r.get("edgeShape"),
        f = r.get("layout"),
        p = r.getOrient(),
        c = r.get(["lineStyle", "curveness"]),
        h = r.get("edgeForkPosition"),
        v = l.getModel("lineStyle").getLineStyle(),
        d = i.__edge;
    if (u === "curve") e.parentNode && e.parentNode !== t && (d || (d = i.__edge = new Za({
        shape: D_(f, p, c, a, a)
    })), xt(d, {
        shape: D_(f, p, c, n, o)
    }, r));
    else if (u === "polyline" && f === "orthogonal" && e !== t && e.children && e.children.length !== 0 && e.isExpand === !0) {
        for (var m = e.children, g = [], y = 0; y < m.length; y++) {
            var x = m[y].getLayout();
            g.push([x.x, x.y])
        }
        d || (d = i.__edge = new lY({
            shape: {
                parentPoint: [o.x, o.y],
                childPoints: [
                    [o.x, o.y]
                ],
                orient: p,
                forkPosition: h
            }
        })), xt(d, {
            shape: {
                parentPoint: [o.x, o.y],
                childPoints: g
            }
        }, r)
    }
    d && !(u === "polyline" && !e.isExpand) && (d.useStyle(q({
        strokeNoScale: !0,
        fill: null
    }, v)), te(d, l, "lineStyle"), Gi(d), s.add(d))
}

function wP(r, e, t, i, a) {
    var n = e.tree.root,
        o = CP(n, r),
        s = o.source,
        l = o.sourceLayout,
        u = e.getItemGraphicEl(r.dataIndex);
    if (u) {
        var f = e.getItemGraphicEl(s.dataIndex),
            p = f.__edge,
            c = u.__edge || (s.isExpand === !1 || s.children.length === 1 ? p : void 0),
            h = i.get("edgeShape"),
            v = i.get("layout"),
            d = i.get("orient"),
            m = i.get(["lineStyle", "curveness"]);
        c && (h === "curve" ? xi(c, {
            shape: D_(v, d, m, l, l),
            style: {
                opacity: 0
            }
        }, i, {
            cb: function() {
                t.remove(c)
            },
            removeOpt: a
        }) : h === "polyline" && i.get("layout") === "orthogonal" && xi(c, {
            shape: {
                parentPoint: [l.x, l.y],
                childPoints: [
                    [l.x, l.y]
                ]
            },
            style: {
                opacity: 0
            }
        }, i, {
            cb: function() {
                t.remove(c)
            },
            removeOpt: a
        }))
    }
}

function CP(r, e) {
    for (var t = e.parentNode === r ? e : e.parentNode || e, i; i = t.getLayout(), i == null;) t = t.parentNode === r ? t : t.parentNode || t;
    return {
        source: t,
        sourceLayout: i
    }
}

function TP(r, e, t, i, a) {
    var n = r.tree.getNodeByDataIndex(e),
        o = r.tree.root,
        s = CP(o, n).sourceLayout,
        l = {
            duration: a.get("animationDurationUpdate"),
            easing: a.get("animationEasingUpdate")
        };
    xi(t, {
        x: s.x + 1,
        y: s.y + 1
    }, a, {
        cb: function() {
            i.remove(t), r.setItemGraphicEl(e, null)
        },
        removeOpt: l
    }), t.fadeOut(null, r.hostModel, {
        fadeLabel: !0,
        animation: l
    }), n.children.forEach(function(u) {
        wP(u, r, i, a, l)
    }), wP(n, r, i, a, l)
}

function D_(r, e, t, i, a) {
    var n, o, s, l, u, f, p, c;
    if (r === "radial") {
        u = i.rawX, p = i.rawY, f = a.rawX, c = a.rawY;
        var h = Cs(u, p),
            v = Cs(u, p + (c - p) * t),
            d = Cs(f, c + (p - c) * t),
            m = Cs(f, c);
        return {
            x1: h.x || 0,
            y1: h.y || 0,
            x2: m.x || 0,
            y2: m.y || 0,
            cpx1: v.x || 0,
            cpy1: v.y || 0,
            cpx2: d.x || 0,
            cpy2: d.y || 0
        }
    } else u = i.x, p = i.y, f = a.x, c = a.y, (e === "LR" || e === "RL") && (n = u + (f - u) * t, o = p, s = f + (u - f) * t, l = c), (e === "TB" || e === "BT") && (n = u, o = p + (c - p) * t, s = f, l = c + (p - c) * t);
    return {
        x1: u,
        y1: p,
        x2: f,
        y2: c,
        cpx1: n,
        cpy1: o,
        cpx2: s,
        cpy2: l
    }
}
var AP = uY;
var Ni = lt();

function pY(r) {
    var e = r.mainData,
        t = r.datas;
    t || (t = {
        main: e
    }, r.datasAttr = {
        main: "data"
    }), r.datas = r.mainData = null, DP(e, t, r), w(t, function(i) {
        w(e.TRANSFERABLE_METHODS, function(a) {
            i.wrapMethod(a, rt(cY, r))
        })
    }), e.wrapMethod("cloneShallow", rt(vY, r)), w(e.CHANGABLE_METHODS, function(i) {
        e.wrapMethod(i, rt(hY, r))
    }), jt(t[e.dataType] === e)
}

function cY(r, e) {
    if (gY(this)) {
        var t = O({}, Ni(this).datas);
        t[this.dataType] = e, DP(e, t, r)
    } else M_(e, this.dataType, Ni(this).mainData, r);
    return e
}

function hY(r, e) {
    return r.struct && r.struct.update(), e
}

function vY(r, e) {
    return w(Ni(e).datas, function(t, i) {
        t !== e && M_(t.cloneShallow(), i, e, r)
    }), e
}

function dY(r) {
    var e = Ni(this).mainData;
    return r == null || e == null ? e : Ni(e).datas[r]
}

function mY() {
    var r = Ni(this).mainData;
    return r == null ? [{
        data: r
    }] : k(ft(Ni(r).datas), function(e) {
        return {
            type: e,
            data: Ni(r).datas[e]
        }
    })
}

function gY(r) {
    return Ni(r).mainData === r
}

function DP(r, e, t) {
    Ni(r).datas = {}, w(e, function(i, a) {
        M_(i, a, r, t)
    })
}

function M_(r, e, t, i) {
    Ni(t).datas[e] = r, Ni(r).mainData = t, r.dataType = e, i.struct && (r[i.structAttr] = i.struct, i.struct[i.datasAttr[e]] = r), r.getLinkedData = dY, r.getLinkedDataAll = mY
}
var vd = pY;
var yY = function() {
    function r(e, t) {
        this.depth = 0, this.height = 0, this.dataIndex = -1, this.children = [], this.viewChildren = [], this.isExpand = !1, this.name = e || "", this.hostTree = t
    }
    return r.prototype.isRemoved = function() {
        return this.dataIndex < 0
    }, r.prototype.eachNode = function(e, t, i) {
        X(e) && (i = t, t = e, e = null), e = e || {}, F(e) && (e = {
            order: e
        });
        var a = e.order || "preorder",
            n = this[e.attr || "children"],
            o;
        a === "preorder" && (o = t.call(i, this));
        for (var s = 0; !o && s < n.length; s++) n[s].eachNode(e, t, i);
        a === "postorder" && t.call(i, this)
    }, r.prototype.updateDepthAndHeight = function(e) {
        var t = 0;
        this.depth = e;
        for (var i = 0; i < this.children.length; i++) {
            var a = this.children[i];
            a.updateDepthAndHeight(e + 1), a.height > t && (t = a.height)
        }
        this.height = t + 1
    }, r.prototype.getNodeById = function(e) {
        if (this.getId() === e) return this;
        for (var t = 0, i = this.children, a = i.length; t < a; t++) {
            var n = i[t].getNodeById(e);
            if (n) return n
        }
    }, r.prototype.contains = function(e) {
        if (e === this) return !0;
        for (var t = 0, i = this.children, a = i.length; t < a; t++) {
            var n = i[t].contains(e);
            if (n) return n
        }
    }, r.prototype.getAncestors = function(e) {
        for (var t = [], i = e ? this : this.parentNode; i;) t.push(i), i = i.parentNode;
        return t.reverse(), t
    }, r.prototype.getAncestorsIndices = function() {
        for (var e = [], t = this; t;) e.push(t.dataIndex), t = t.parentNode;
        return e.reverse(), e
    }, r.prototype.getDescendantIndices = function() {
        var e = [];
        return this.eachNode(function(t) {
            e.push(t.dataIndex)
        }), e
    }, r.prototype.getValue = function(e) {
        var t = this.hostTree.data;
        return t.getStore().get(t.getDimensionIndex(e || "value"), this.dataIndex)
    }, r.prototype.setLayout = function(e, t) {
        this.dataIndex >= 0 && this.hostTree.data.setItemLayout(this.dataIndex, e, t)
    }, r.prototype.getLayout = function() {
        return this.hostTree.data.getItemLayout(this.dataIndex)
    }, r.prototype.getModel = function(e) {
        if (!(this.dataIndex < 0)) {
            var t = this.hostTree,
                i = t.data.getItemModel(this.dataIndex);
            return i.getModel(e)
        }
    }, r.prototype.getLevelModel = function() {
        return (this.hostTree.levelModels || [])[this.depth]
    }, r.prototype.setVisual = function(e, t) {
        this.dataIndex >= 0 && this.hostTree.data.setItemVisual(this.dataIndex, e, t)
    }, r.prototype.getVisual = function(e) {
        return this.hostTree.data.getItemVisual(this.dataIndex, e)
    }, r.prototype.getRawIndex = function() {
        return this.hostTree.data.getRawIndex(this.dataIndex)
    }, r.prototype.getId = function() {
        return this.hostTree.data.getId(this.dataIndex)
    }, r.prototype.getChildIndex = function() {
        if (this.parentNode) {
            for (var e = this.parentNode.children, t = 0; t < e.length; ++t)
                if (e[t] === this) return t;
            return -1
        }
        return -1
    }, r.prototype.isAncestorOf = function(e) {
        for (var t = e.parentNode; t;) {
            if (t === this) return !0;
            t = t.parentNode
        }
        return !1
    }, r.prototype.isDescendantOf = function(e) {
        return e !== this && e.isAncestorOf(this)
    }, r
}();
var xY = function() {
    function r(e) {
        this.type = "tree", this._nodes = [], this.hostModel = e
    }
    return r.prototype.eachNode = function(e, t, i) {
        this.root.eachNode(e, t, i)
    }, r.prototype.getNodeByDataIndex = function(e) {
        var t = this.data.getRawIndex(e);
        return this._nodes[t]
    }, r.prototype.getNodeById = function(e) {
        return this.root.getNodeById(e)
    }, r.prototype.update = function() {
        for (var e = this.data, t = this._nodes, i = 0, a = t.length; i < a; i++) t[i].dataIndex = -1;
        for (var i = 0, a = e.count(); i < a; i++) t[e.getRawIndex(i)].dataIndex = i
    }, r.prototype.clearLayouts = function() {
        this.data.clearItemLayouts()
    }, r.createTree = function(e, t, i) {
        var a = new r(t),
            n = [],
            o = 1;
        s(e);

        function s(f, p) {
            var c = f.value;
            o = Math.max(o, z(c) ? c.length : 1), n.push(f);
            var h = new yY(ie(f.name, ""), a);
            p ? _Y(h, p) : a.root = h, a._nodes.push(h);
            var v = f.children;
            if (v)
                for (var d = 0; d < v.length; d++) s(v[d], h)
        }
        a.root.updateDepthAndHeight(0);
        var l = Mi(n, {
                coordDimensions: ["value"],
                dimensionsCount: o
            }).dimensions,
            u = new se(l, t);
        return u.initData(n), i && i(u), vd({
            mainData: u,
            struct: a,
            structAttr: "tree"
        }), a.update(), a
    }, r
}();

function _Y(r, e) {
    var t = e.children;
    r.parentNode !== e && (t.push(r), r.parentNode = e)
}
var ql = xY;

function sn(r, e, t) {
    if (r && at(e, r.type) >= 0) {
        var i = t.getData().tree.root,
            a = r.targetNode;
        if (F(a) && (a = i.getNodeById(a)), a && i.contains(a)) return {
            node: a
        };
        var n = r.targetNodeId;
        if (n != null && (a = i.getNodeById(n))) return {
            node: a
        }
    }
}

function L_(r) {
    for (var e = []; r;) r = r.parentNode, r && e.push(r);
    return e.reverse()
}

function Kl(r, e) {
    var t = L_(r);
    return at(t, e) >= 0
}

function to(r, e) {
    for (var t = []; r;) {
        var i = r.dataIndex;
        t.push({
            name: r.name,
            dataIndex: i,
            value: e.getRawValue(i)
        }), r = r.parentNode
    }
    return t.reverse(), t
}
var SY = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.hasSymbolVisual = !0, t.ignoreStyleOnData = !0, t
        }
        return e.prototype.getInitialData = function(t) {
            var i = {
                    name: t.name,
                    children: t.data
                },
                a = t.leaves || {},
                n = new Dt(a, this, this.ecModel),
                o = ql.createTree(i, this, s);

            function s(p) {
                p.wrapMethod("getItemModel", function(c, h) {
                    var v = o.getNodeByDataIndex(h);
                    return v && v.children.length && v.isExpand || (c.parentModel = n), c
                })
            }
            var l = 0;
            o.eachNode("preorder", function(p) {
                p.depth > l && (l = p.depth)
            });
            var u = t.expandAndCollapse,
                f = u && t.initialTreeDepth >= 0 ? t.initialTreeDepth : l;
            return o.root.eachNode("preorder", function(p) {
                var c = p.hostTree.data.getRawDataItem(p.dataIndex);
                p.isExpand = c && c.collapsed != null ? !c.collapsed : p.depth <= f
            }), o.data
        }, e.prototype.getOrient = function() {
            var t = this.get("orient");
            return t === "horizontal" ? t = "LR" : t === "vertical" && (t = "TB"), t
        }, e.prototype.setZoom = function(t) {
            this.option.zoom = t
        }, e.prototype.setCenter = function(t) {
            this.option.center = t
        }, e.prototype.formatTooltip = function(t, i, a) {
            for (var n = this.getData().tree, o = n.root.children[0], s = n.getNodeByDataIndex(t), l = s.getValue(), u = s.name; s && s !== o;) u = s.parentNode.name + "." + u, s = s.parentNode;
            return Jt("nameValue", {
                name: u,
                value: l,
                noValue: isNaN(l) || l == null
            })
        }, e.prototype.getDataParams = function(t) {
            var i = r.prototype.getDataParams.apply(this, arguments),
                a = this.getData().tree.getNodeByDataIndex(t);
            return i.treeAncestors = to(a, this), i.collapsed = !a.isExpand, i
        }, e.type = "series.tree", e.layoutMode = "box", e.defaultOption = {
            z: 2,
            coordinateSystem: "view",
            left: "12%",
            top: "12%",
            right: "12%",
            bottom: "12%",
            layout: "orthogonal",
            edgeShape: "curve",
            edgeForkPosition: "50%",
            roam: !1,
            nodeScaleRatio: .4,
            center: null,
            zoom: 1,
            orient: "LR",
            symbol: "emptyCircle",
            symbolSize: 7,
            expandAndCollapse: !0,
            initialTreeDepth: 2,
            lineStyle: {
                color: "#ccc",
                width: 1.5,
                curveness: .5
            },
            itemStyle: {
                color: "lightsteelblue",
                borderWidth: 1.5
            },
            label: {
                show: !0
            },
            animationEasing: "linear",
            animationDuration: 700,
            animationDurationUpdate: 500
        }, e
    }(Lt),
    MP = SY;

function LP(r, e, t) {
    for (var i = [r], a = [], n; n = i.pop();)
        if (a.push(n), n.isExpand) {
            var o = n.children;
            if (o.length)
                for (var s = 0; s < o.length; s++) i.push(o[s])
        }
    for (; n = a.pop();) e(n, t)
}

function jl(r, e) {
    for (var t = [r], i; i = t.pop();)
        if (e(i), i.isExpand) {
            var a = i.children;
            if (a.length)
                for (var n = a.length - 1; n >= 0; n--) t.push(a[n])
        }
}

function E_(r, e) {
    r.eachSeriesByType("tree", function(t) {
        bY(t, e)
    })
}

function bY(r, e) {
    var t = _P(r, e);
    r.layoutInfo = t;
    var i = r.get("layout"),
        a = 0,
        n = 0,
        o = null;
    i === "radial" ? (a = 2 * Math.PI, n = Math.min(t.height, t.width) / 2, o = A_(function(x, _) {
        return (x.parentNode === _.parentNode ? 1 : 2) / x.depth
    })) : (a = t.width, n = t.height, o = A_());
    var s = r.getData().tree.root,
        l = s.children[0];
    if (l) {
        gP(s), LP(l, yP, o), s.hierNode.modifier = -l.hierNode.prelim, jl(l, xP);
        var u = l,
            f = l,
            p = l;
        jl(l, function(x) {
            var _ = x.getLayout().x;
            _ < u.getLayout().x && (u = x), _ > f.getLayout().x && (f = x), x.depth > p.depth && (p = x)
        });
        var c = u === f ? 1 : o(u, f) / 2,
            h = c - u.getLayout().x,
            v = 0,
            d = 0,
            m = 0,
            g = 0;
        if (i === "radial") v = a / (f.getLayout().x + c + h), d = n / (p.depth - 1 || 1), jl(l, function(x) {
            m = (x.getLayout().x + h) * v, g = (x.depth - 1) * d;
            var _ = Cs(m, g);
            x.setLayout({
                x: _.x,
                y: _.y,
                rawX: m,
                rawY: g
            }, !0)
        });
        else {
            var y = r.getOrient();
            y === "RL" || y === "LR" ? (d = n / (f.getLayout().x + c + h), v = a / (p.depth - 1 || 1), jl(l, function(x) {
                g = (x.getLayout().x + h) * d, m = y === "LR" ? (x.depth - 1) * v : a - (x.depth - 1) * v, x.setLayout({
                    x: m,
                    y: g
                }, !0)
            })) : (y === "TB" || y === "BT") && (v = a / (f.getLayout().x + c + h), d = n / (p.depth - 1 || 1), jl(l, function(x) {
                m = (x.getLayout().x + h) * v, g = y === "TB" ? (x.depth - 1) * d : n - (x.depth - 1) * d, x.setLayout({
                    x: m,
                    y: g
                }, !0)
            }))
        }
    }
}

function P_(r) {
    r.eachSeriesByType("tree", function(e) {
        var t = e.getData(),
            i = t.tree;
        i.eachNode(function(a) {
            var n = a.getModel(),
                o = n.getModel("itemStyle").getItemStyle(),
                s = t.ensureUniqueItemVisual(a.dataIndex, "style");
            O(s, o)
        })
    })
}

function IP(r) {
    r.registerAction({
        type: "treeExpandAndCollapse",
        event: "treeExpandAndCollapse",
        update: "update"
    }, function(e, t) {
        t.eachComponent({
            mainType: "series",
            subType: "tree",
            query: e
        }, function(i) {
            var a = e.dataIndex,
                n = i.getData().tree,
                o = n.getNodeByDataIndex(a);
            o.isExpand = !o.isExpand
        })
    }), r.registerAction({
        type: "treeRoam",
        event: "treeRoam",
        update: "none"
    }, function(e, t, i) {
        t.eachComponent({
            mainType: "series",
            subType: "tree",
            query: e
        }, function(a) {
            var n = a.coordinateSystem,
                o = Xl(n, e, void 0, i);
            a.setCenter && a.setCenter(o.center), a.setZoom && a.setZoom(o.zoom)
        })
    })
}

function R_(r) {
    r.registerChartView(AP), r.registerSeriesModel(MP), r.registerLayout(E_), r.registerVisual(P_), IP(r)
}
var EP = ["treemapZoomToNode", "treemapRender", "treemapMove"];

function PP(r) {
    for (var e = 0; e < EP.length; e++) r.registerAction({
        type: EP[e],
        update: "updateView"
    }, Yt);
    r.registerAction({
        type: "treemapRootToNode",
        update: "updateView"
    }, function(t, i) {
        i.eachComponent({
            mainType: "series",
            subType: "treemap",
            query: t
        }, a);

        function a(n, o) {
            var s = ["treemapZoomToNode", "treemapRootToNode"],
                l = sn(t, s, n);
            if (l) {
                var u = n.getViewRoot();
                u && (t.direction = Kl(u, l.node) ? "rollUp" : "drillDown"), n.resetViewRoot(l.node)
            }
        }
    })
}

function xp(r) {
    var e = r.getData(),
        t = e.tree,
        i = {};
    t.eachNode(function(a) {
        for (var n = a; n && n.depth > 1;) n = n.parentNode;
        var o = Mf(r.ecModel, n.name || n.dataIndex + "", i);
        a.setVisual("decal", o)
    })
}
var wY = function(r) {
    L(e, r);

    function e() {
        var t = r !== null && r.apply(this, arguments) || this;
        return t.type = e.type, t.preventUsingHoverLayer = !0, t
    }
    return e.prototype.getInitialData = function(t, i) {
        var a = {
            name: t.name,
            children: t.data
        };
        RP(a);
        var n = t.levels || [],
            o = this.designatedVisualItemStyle = {},
            s = new Dt({
                itemStyle: o
            }, this, i);
        n = t.levels = TY(n, i);
        var l = k(n || [], function(p) {
                return new Dt(p, s, i)
            }, this),
            u = ql.createTree(a, this, f);

        function f(p) {
            p.wrapMethod("getItemModel", function(c, h) {
                var v = u.getNodeByDataIndex(h),
                    d = v ? l[v.depth] : null;
                return c.parentModel = d || s, c
            })
        }
        return u.data
    }, e.prototype.optionUpdated = function() {
        this.resetViewRoot()
    }, e.prototype.formatTooltip = function(t, i, a) {
        var n = this.getData(),
            o = this.getRawValue(t),
            s = n.getName(t);
        return Jt("nameValue", {
            name: s,
            value: o
        })
    }, e.prototype.getDataParams = function(t) {
        var i = r.prototype.getDataParams.apply(this, arguments),
            a = this.getData().tree.getNodeByDataIndex(t);
        return i.treeAncestors = to(a, this), i.treePathInfo = i.treeAncestors, i
    }, e.prototype.setLayoutInfo = function(t) {
        this.layoutInfo = this.layoutInfo || {}, O(this.layoutInfo, t)
    }, e.prototype.mapIdToIndex = function(t) {
        var i = this._idIndexMap;
        i || (i = this._idIndexMap = Y(), this._idIndexMapCount = 0);
        var a = i.get(t);
        return a == null && i.set(t, a = this._idIndexMapCount++), a
    }, e.prototype.getViewRoot = function() {
        return this._viewRoot
    }, e.prototype.resetViewRoot = function(t) {
        t ? this._viewRoot = t : t = this._viewRoot;
        var i = this.getRawData().tree.root;
        (!t || t !== i && !i.contains(t)) && (this._viewRoot = i)
    }, e.prototype.enableAriaDecal = function() {
        xp(this)
    }, e.type = "series.treemap", e.layoutMode = "box", e.defaultOption = {
        progressive: 0,
        left: "center",
        top: "middle",
        width: "80%",
        height: "80%",
        sort: !0,
        clipWindow: "origin",
        squareRatio: .5 * (1 + Math.sqrt(5)),
        leafDepth: null,
        drillDownIcon: "\u25B6",
        zoomToNodeRatio: .32 * .32,
        scaleLimit: null,
        roam: !0,
        nodeClick: "zoomToNode",
        animation: !0,
        animationDurationUpdate: 900,
        animationEasing: "quinticInOut",
        breadcrumb: {
            show: !0,
            height: 22,
            left: "center",
            top: "bottom",
            emptyItemWidth: 25,
            itemStyle: {
                color: "rgba(0,0,0,0.7)",
                textStyle: {
                    color: "#fff"
                }
            },
            emphasis: {
                itemStyle: {
                    color: "rgba(0,0,0,0.9)"
                }
            }
        },
        label: {
            show: !0,
            distance: 0,
            padding: 5,
            position: "inside",
            color: "#fff",
            overflow: "truncate"
        },
        upperLabel: {
            show: !1,
            position: [0, "50%"],
            height: 20,
            overflow: "truncate",
            verticalAlign: "middle"
        },
        itemStyle: {
            color: null,
            colorAlpha: null,
            colorSaturation: null,
            borderWidth: 0,
            gapWidth: 0,
            borderColor: "#fff",
            borderColorSaturation: null
        },
        emphasis: {
            upperLabel: {
                show: !0,
                position: [0, "50%"],
                overflow: "truncate",
                verticalAlign: "middle"
            }
        },
        visualDimension: 0,
        visualMin: null,
        visualMax: null,
        color: [],
        colorAlpha: null,
        colorSaturation: null,
        colorMappingBy: "index",
        visibleMin: 10,
        childrenVisibleMin: null,
        levels: []
    }, e
}(Lt);

function RP(r) {
    var e = 0;
    w(r.children, function(i) {
        RP(i);
        var a = i.value;
        z(a) && (a = a[0]), e += a
    });
    var t = r.value;
    z(t) && (t = t[0]), (t == null || isNaN(t)) && (t = e), t < 0 && (t = 0), z(r.value) ? r.value[0] = t : r.value = t
}

function TY(r, e) {
    var t = Pt(e.get("color")),
        i = Pt(e.get(["aria", "decal", "decals"]));
    if (t) {
        r = r || [];
        var a, n;
        w(r, function(s) {
            var l = new Dt(s),
                u = l.get("color"),
                f = l.get("decal");
            (l.get(["itemStyle", "color"]) || u && u !== "none") && (a = !0), (l.get(["itemStyle", "decal"]) || f && f !== "none") && (n = !0)
        });
        var o = r[0] || (r[0] = {});
        return a || (o.color = t.slice()), !n && i && (o.decal = i.slice()), r
    }
}
var NP = wY;
var CY = 8,
    OP = 8,
    N_ = 5,
    AY = function() {
        function r(e) {
            this.group = new J, e.add(this.group)
        }
        return r.prototype.render = function(e, t, i, a) {
            var n = e.getModel("breadcrumb"),
                o = this.group;
            if (o.removeAll(), !(!n.get("show") || !i)) {
                var s = n.getModel("itemStyle"),
                    l = n.getModel("emphasis"),
                    u = s.getModel("textStyle"),
                    f = l.getModel(["itemStyle", "textStyle"]),
                    p = {
                        pos: {
                            left: n.get("left"),
                            right: n.get("right"),
                            top: n.get("top"),
                            bottom: n.get("bottom")
                        },
                        box: {
                            width: t.getWidth(),
                            height: t.getHeight()
                        },
                        emptyItemWidth: n.get("emptyItemWidth"),
                        totalWidth: 0,
                        renderList: []
                    };
                this._prepare(i, p, u), this._renderContent(e, p, s, l, u, f, a), On(o, p.pos, p.box)
            }
        }, r.prototype._prepare = function(e, t, i) {
            for (var a = e; a; a = a.parentNode) {
                var n = ie(a.getModel().get("name"), ""),
                    o = i.getTextRect(n),
                    s = Math.max(o.width + CY * 2, t.emptyItemWidth);
                t.totalWidth += s + OP, t.renderList.push({
                    node: a,
                    text: n,
                    width: s
                })
            }
        }, r.prototype._renderContent = function(e, t, i, a, n, o, s) {
            for (var l = 0, u = t.emptyItemWidth, f = e.get(["breadcrumb", "height"]), p = EA(t.pos, t.box), c = t.totalWidth, h = t.renderList, v = a.getModel("itemStyle").getItemStyle(), d = h.length - 1; d >= 0; d--) {
                var m = h[d],
                    g = m.node,
                    y = m.width,
                    x = m.text;
                c > p.width && (c -= y - u, y = u, x = null);
                var _ = new oe({
                    shape: {
                        points: DY(l, 0, y, f, d === h.length - 1, d === 0)
                    },
                    style: q(i.getItemStyle(), {
                        lineJoin: "bevel"
                    }),
                    textContent: new dt({
                        style: zt(n, {
                            text: x
                        })
                    }),
                    textConfig: {
                        position: "inside"
                    },
                    z2: Ga * 1e4,
                    onclick: rt(s, g)
                });
                _.disableLabelAnimation = !0, _.getTextContent().ensureState("emphasis").style = zt(o, {
                    text: x
                }), _.ensureState("emphasis").style = v, Nt(_, a.get("focus"), a.get("blurScope"), a.get("disabled")), this.group.add(_), MY(_, e, g), l += y + OP
            }
        }, r.prototype.remove = function() {
            this.group.removeAll()
        }, r
    }();

function DY(r, e, t, i, a, n) {
    var o = [
        [a ? r : r - N_, e],
        [r + t, e],
        [r + t, e + i],
        [a ? r : r - N_, e + i]
    ];
    return !n && o.splice(2, 0, [r + t + N_, e + i / 2]), !a && o.push([r, e + i / 2]), o
}

function MY(r, e, t) {
    et(r).eventData = {
        componentType: "series",
        componentSubType: "treemap",
        componentIndex: e.componentIndex,
        seriesIndex: e.seriesIndex,
        seriesName: e.name,
        seriesType: "treemap",
        selfType: "breadcrumb",
        nodeData: {
            dataIndex: t && t.dataIndex,
            name: t && t.name
        },
        treePathInfo: t && to(t, e)
    }
}
var zP = AY;
var LY = function() {
    function r() {
        this._storage = [], this._elExistsMap = {}
    }
    return r.prototype.add = function(e, t, i, a, n) {
        return this._elExistsMap[e.id] ? !1 : (this._elExistsMap[e.id] = !0, this._storage.push({
            el: e,
            target: t,
            duration: i,
            delay: a,
            easing: n
        }), !0)
    }, r.prototype.finished = function(e) {
        return this._finishedCallback = e, this
    }, r.prototype.start = function() {
        for (var e = this, t = this._storage.length, i = function() {
                t--, t <= 0 && (e._storage.length = 0, e._elExistsMap = {}, e._finishedCallback && e._finishedCallback())
            }, a = 0, n = this._storage.length; a < n; a++) {
            var o = this._storage[a];
            o.el.animateTo(o.target, {
                duration: o.duration,
                delay: o.delay,
                easing: o.easing,
                setToFinal: !0,
                done: i,
                aborted: i
            })
        }
        return this
    }, r
}();

function kP() {
    return new LY
}
var O_ = J,
    UP = ht,
    VP = 3,
    BP = "label",
    FP = "upperLabel",
    EY = Ga * 10,
    PY = Ga * 2,
    RY = Ga * 3,
    As = Nr([
        ["fill", "color"],
        ["stroke", "strokeColor"],
        ["lineWidth", "strokeWidth"],
        ["shadowBlur"],
        ["shadowOffsetX"],
        ["shadowOffsetY"],
        ["shadowColor"]
    ]),
    GP = function(r) {
        var e = As(r);
        return e.stroke = e.fill = e.lineWidth = null, e
    },
    dd = lt(),
    NY = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t._state = "ready", t._storage = _p(), t
        }
        return e.prototype.render = function(t, i, a, n) {
            var o = i.findComponents({
                mainType: "series",
                subType: "treemap",
                query: n
            });
            if (!(at(o, t) < 0)) {
                this.seriesModel = t, this.api = a, this.ecModel = i;
                var s = ["treemapZoomToNode", "treemapRootToNode"],
                    l = sn(n, s, t),
                    u = n && n.type,
                    f = t.layoutInfo,
                    p = !this._oldTree,
                    c = this._storage,
                    h = u === "treemapRootToNode" && l && c ? {
                        rootNodeGroup: c.nodeGroup[l.node.getRawIndex()],
                        direction: n.direction
                    } : null,
                    v = this._giveContainerGroup(f),
                    d = t.get("animation"),
                    m = this._doRender(v, t, h);
                d && !p && (!u || u === "treemapZoomToNode" || u === "treemapRootToNode") ? this._doAnimation(v, m, t, h) : m.renderFinally(), this._resetController(a), this._renderBreadcrumb(t, a, l)
            }
        }, e.prototype._giveContainerGroup = function(t) {
            var i = this._containerGroup;
            return i || (i = this._containerGroup = new O_, this._initEvents(i), this.group.add(i)), i.x = t.x, i.y = t.y, i
        }, e.prototype._doRender = function(t, i, a) {
            var n = i.getData().tree,
                o = this._oldTree,
                s = _p(),
                l = _p(),
                u = this._storage,
                f = [];

            function p(y, x, _, S) {
                return OY(i, l, u, a, s, f, y, x, _, S)
            }
            d(n.root ? [n.root] : [], o && o.root ? [o.root] : [], t, n === o || !o, 0);
            var c = m(u);
            if (this._oldTree = n, this._storage = l, this._controllerHost) {
                var h = this.seriesModel.layoutInfo,
                    v = n.root.getLayout();
                v.width === h.width && v.height === h.height && (this._controllerHost.zoom = 1)
            }
            return {
                lastsForAnimation: s,
                willDeleteEls: c,
                renderFinally: g
            };

            function d(y, x, _, S, b) {
                S ? (x = y, w(y, function(A, D) {
                    !A.isRemoved() && C(D, D)
                })) : new tr(x, y, T, T).add(C).update(C).remove(rt(C, null)).execute();

                function T(A) {
                    return A.getId()
                }

                function C(A, D) {
                    var M = A != null ? y[A] : null,
                        I = D != null ? x[D] : null,
                        E = p(M, I, _, b);
                    E && d(M && M.viewChildren || [], I && I.viewChildren || [], E, S, b + 1)
                }
            }

            function m(y) {
                var x = _p();
                return y && w(y, function(_, S) {
                    var b = x[S];
                    w(_, function(T) {
                        T && (b.push(T), dd(T).willDelete = !0)
                    })
                }), x
            }

            function g() {
                w(c, function(y) {
                    w(y, function(x) {
                        x.parent && x.parent.remove(x)
                    })
                }), w(f, function(y) {
                    y.invisible = !0, y.dirty()
                })
            }
        }, e.prototype._doAnimation = function(t, i, a, n) {
            var o = a.get("animationDurationUpdate"),
                s = a.get("animationEasing"),
                l = (X(o) ? 0 : o) || 0,
                u = (X(s) ? null : s) || "cubicOut",
                f = kP();
            w(i.willDeleteEls, function(p, c) {
                w(p, function(h, v) {
                    if (!h.invisible) {
                        var d = h.parent,
                            m, g = dd(d);
                        if (n && n.direction === "drillDown") m = d === n.rootNodeGroup ? {
                            shape: {
                                x: 0,
                                y: 0,
                                width: g.nodeWidth,
                                height: g.nodeHeight
                            },
                            style: {
                                opacity: 0
                            }
                        } : {
                            style: {
                                opacity: 0
                            }
                        };
                        else {
                            var y = 0,
                                x = 0;
                            g.willDelete || (y = g.nodeWidth / 2, x = g.nodeHeight / 2), m = c === "nodeGroup" ? {
                                x: y,
                                y: x,
                                style: {
                                    opacity: 0
                                }
                            } : {
                                shape: {
                                    x: y,
                                    y: x,
                                    width: 0,
                                    height: 0
                                },
                                style: {
                                    opacity: 0
                                }
                            }
                        }
                        m && f.add(h, m, l, 0, u)
                    }
                })
            }), w(this._storage, function(p, c) {
                w(p, function(h, v) {
                    var d = i.lastsForAnimation[c][v],
                        m = {};
                    d && (h instanceof J ? d.oldX != null && (m.x = h.x, m.y = h.y, h.x = d.oldX, h.y = d.oldY) : (d.oldShape && (m.shape = O({}, h.shape), h.setShape(d.oldShape)), d.fadein ? (h.setStyle("opacity", 0), m.style = {
                        opacity: 1
                    }) : h.style.opacity !== 1 && (m.style = {
                        opacity: 1
                    })), f.add(h, m, l, 0, u))
                })
            }, this), this._state = "animating", f.finished(H(function() {
                this._state = "ready", i.renderFinally()
            }, this)).start()
        }, e.prototype._resetController = function(t) {
            var i = this._controller,
                a = this._controllerHost;
            a || (this._controllerHost = {
                target: this.group
            }, a = this._controllerHost), i || (i = this._controller = new Da(t.getZr()), i.enable(this.seriesModel.get("roam")), a.zoomLimit = this.seriesModel.get("scaleLimit"), a.zoom = this.seriesModel.get("zoom"), i.on("pan", H(this._onPan, this)), i.on("zoom", H(this._onZoom, this)));
            var n = new it(0, 0, t.getWidth(), t.getHeight());
            i.setPointerChecker(function(o, s, l) {
                return n.contain(s, l)
            })
        }, e.prototype._clearController = function() {
            var t = this._controller;
            this._controllerHost = null, t && (t.dispose(), t = null)
        }, e.prototype._onPan = function(t) {
            if (this._state !== "animating" && (Math.abs(t.dx) > VP || Math.abs(t.dy) > VP)) {
                var i = this.seriesModel.getData().tree.root;
                if (!i) return;
                var a = i.getLayout();
                if (!a) return;
                this.api.dispatchAction({
                    type: "treemapMove",
                    from: this.uid,
                    seriesId: this.seriesModel.id,
                    rootRect: {
                        x: a.x + t.dx,
                        y: a.y + t.dy,
                        width: a.width,
                        height: a.height
                    }
                })
            }
        }, e.prototype._onZoom = function(t) {
            var i = t.originX,
                a = t.originY,
                n = t.scale;
            if (this._state !== "animating") {
                var o = this.seriesModel.getData().tree.root;
                if (!o) return;
                var s = o.getLayout();
                if (!s) return;
                var l = new it(s.x, s.y, s.width, s.height),
                    u = null,
                    f = this._controllerHost;
                u = f.zoomLimit;
                var p = f.zoom = f.zoom || 1;
                if (p *= n, u) {
                    var c = u.min || 0,
                        h = u.max || 1 / 0;
                    p = Math.max(Math.min(h, p), c)
                }
                var v = p / f.zoom;
                f.zoom = p;
                var d = this.seriesModel.layoutInfo;
                i -= d.x, a -= d.y;
                var m = me();
                We(m, m, [-i, -a]), _o(m, m, [v, v]), We(m, m, [i, a]), l.applyTransform(m), this.api.dispatchAction({
                    type: "treemapRender",
                    from: this.uid,
                    seriesId: this.seriesModel.id,
                    rootRect: {
                        x: l.x,
                        y: l.y,
                        width: l.width,
                        height: l.height
                    }
                })
            }
        }, e.prototype._initEvents = function(t) {
            var i = this;
            t.on("click", function(a) {
                if (i._state === "ready") {
                    var n = i.seriesModel.get("nodeClick", !0);
                    if (n) {
                        var o = i.findTarget(a.offsetX, a.offsetY);
                        if (o) {
                            var s = o.node;
                            if (s.getLayout().isLeafRoot) i._rootToNode(o);
                            else if (n === "zoomToNode") i._zoomToNode(o);
                            else if (n === "link") {
                                var l = s.hostTree.data.getItemModel(s.dataIndex),
                                    u = l.get("link", !0),
                                    f = l.get("target", !0) || "blank";
                                u && os(u, f)
                            }
                        }
                    }
                }
            }, this)
        }, e.prototype._renderBreadcrumb = function(t, i, a) {
            var n = this;
            a || (a = t.get("leafDepth", !0) != null ? {
                node: t.getViewRoot()
            } : this.findTarget(i.getWidth() / 2, i.getHeight() / 2), a || (a = {
                node: t.getData().tree.root
            })), (this._breadcrumb || (this._breadcrumb = new zP(this.group))).render(t, i, a.node, function(o) {
                n._state !== "animating" && (Kl(t.getViewRoot(), o) ? n._rootToNode({
                    node: o
                }) : n._zoomToNode({
                    node: o
                }))
            })
        }, e.prototype.remove = function() {
            this._clearController(), this._containerGroup && this._containerGroup.removeAll(), this._storage = _p(), this._state = "ready", this._breadcrumb && this._breadcrumb.remove()
        }, e.prototype.dispose = function() {
            this._clearController()
        }, e.prototype._zoomToNode = function(t) {
            this.api.dispatchAction({
                type: "treemapZoomToNode",
                from: this.uid,
                seriesId: this.seriesModel.id,
                targetNode: t.node
            })
        }, e.prototype._rootToNode = function(t) {
            this.api.dispatchAction({
                type: "treemapRootToNode",
                from: this.uid,
                seriesId: this.seriesModel.id,
                targetNode: t.node
            })
        }, e.prototype.findTarget = function(t, i) {
            var a, n = this.seriesModel.getViewRoot();
            return n.eachNode({
                attr: "viewChildren",
                order: "preorder"
            }, function(o) {
                var s = this._storage.background[o.getRawIndex()];
                if (s) {
                    var l = s.transformCoordToLocal(t, i),
                        u = s.shape;
                    if (u.x <= l[0] && l[0] <= u.x + u.width && u.y <= l[1] && l[1] <= u.y + u.height) a = {
                        node: o,
                        offsetX: l[0],
                        offsetY: l[1]
                    };
                    else return !1
                }
            }, this), a
        }, e.type = "treemap", e
    }(At);

function _p() {
    return {
        nodeGroup: [],
        background: [],
        content: []
    }
}

function OY(r, e, t, i, a, n, o, s, l, u) {
    if (!o) return;
    var f = o.getLayout(),
        p = r.getData(),
        c = o.getModel();
    if (p.setItemGraphicEl(o.dataIndex, null), !f || !f.isInView) return;
    var h = f.width,
        v = f.height,
        d = f.borderWidth,
        m = f.invisible,
        g = o.getRawIndex(),
        y = s && s.getRawIndex(),
        x = o.viewChildren,
        _ = f.upperHeight,
        S = x && x.length,
        b = c.getModel("itemStyle"),
        T = c.getModel(["emphasis", "itemStyle"]),
        C = c.getModel(["blur", "itemStyle"]),
        A = c.getModel(["select", "itemStyle"]),
        D = b.get("borderRadius") || 0,
        M = bt("nodeGroup", O_);
    if (!M) return;
    if (l.add(M), M.x = f.x || 0, M.y = f.y || 0, M.markRedraw(), dd(M).nodeWidth = h, dd(M).nodeHeight = v, f.isAboveViewRoot) return M;
    var I = bt("background", UP, u, PY);
    I && Z(M, I, S && f.upperLabelHeight);
    var E = c.getModel("emphasis"),
        P = E.get("focus"),
        R = E.get("blurScope"),
        N = E.get("disabled"),
        V = P === "ancestor" ? o.getAncestorsIndices() : P === "descendant" ? o.getDescendantIndices() : P;
    if (S) Pn(M) && Wa(M, !1), I && (Wa(I, !N), p.setItemGraphicEl(o.dataIndex, I), Jc(I, V, R));
    else {
        var U = bt("content", UP, u, RY);
        U && K(M, U), I.disableMorphing = !0, I && Pn(I) && Wa(I, !1), Wa(M, !N), p.setItemGraphicEl(o.dataIndex, M);
        var B = c.getShallow("cursor");
        B && U.attr("cursor", B), Jc(M, V, R)
    }
    return M;

    function Z(Mt, mt, Et) {
        var ut = et(mt);
        if (ut.dataIndex = o.dataIndex, ut.seriesIndex = r.seriesIndex, mt.setShape({
                x: 0,
                y: 0,
                width: h,
                height: v,
                r: D
            }), m) tt(mt);
        else {
            mt.invisible = !1;
            var Tt = o.getVisual("style"),
                re = Tt.stroke,
                Wt = GP(b);
            Wt.fill = re;
            var Qt = As(T);
            Qt.fill = T.get("borderColor");
            var le = As(C);
            le.fill = C.get("borderColor");
            var ke = As(A);
            if (ke.fill = A.get("borderColor"), Et) {
                var Zr = h - 2 * d;
                pt(mt, re, Tt.opacity, {
                    x: d,
                    y: 0,
                    width: Zr,
                    height: _
                })
            } else mt.removeTextContent();
            mt.setStyle(Wt), mt.ensureState("emphasis").style = Qt, mt.ensureState("blur").style = le, mt.ensureState("select").style = ke, Gi(mt)
        }
        Mt.add(mt)
    }

    function K(Mt, mt) {
        var Et = et(mt);
        Et.dataIndex = o.dataIndex, Et.seriesIndex = r.seriesIndex;
        var ut = Math.max(h - 2 * d, 0),
            Tt = Math.max(v - 2 * d, 0);
        if (mt.culling = !0, mt.setShape({
                x: d,
                y: d,
                width: ut,
                height: Tt,
                r: D
            }), m) tt(mt);
        else {
            mt.invisible = !1;
            var re = o.getVisual("style"),
                Wt = re.fill,
                Qt = GP(b);
            Qt.fill = Wt, Qt.decal = re.decal;
            var le = As(T),
                ke = As(C),
                Zr = As(A);
            pt(mt, Wt, re.opacity, null), mt.setStyle(Qt), mt.ensureState("emphasis").style = le, mt.ensureState("blur").style = ke, mt.ensureState("select").style = Zr, Gi(mt)
        }
        Mt.add(mt)
    }

    function tt(Mt) {
        !Mt.invisible && n.push(Mt)
    }

    function pt(Mt, mt, Et, ut) {
        var Tt = c.getModel(ut ? FP : BP),
            re = ie(c.get("name"), null),
            Wt = Tt.getShallow("show");
        Xt(Mt, Ft(c, ut ? FP : BP), {
            defaultText: Wt ? re : null,
            inheritColor: mt,
            defaultOpacity: Et,
            labelFetcher: r,
            labelDataIndex: o.dataIndex
        });
        var Qt = Mt.getTextContent();
        if (Qt) {
            var le = Qt.style,
                ke = mo(le.padding || 0);
            ut && (Mt.setTextConfig({
                layoutRect: ut
            }), Qt.disableLabelLayout = !0), Qt.beforeUpdate = function() {
                var wr = Math.max((ut ? ut.width : Mt.shape.width) - ke[1] - ke[3], 0),
                    ho = Math.max((ut ? ut.height : Mt.shape.height) - ke[0] - ke[2], 0);
                (le.width !== wr || le.height !== ho) && Qt.setStyle({
                    width: wr,
                    height: ho
                })
            }, le.truncateMinChar = 2, le.lineOverflow = "truncate", ct(le, ut, f);
            var Zr = Qt.getState("emphasis");
            ct(Zr ? Zr.style : null, ut, f)
        }
    }

    function ct(Mt, mt, Et) {
        var ut = Mt ? Mt.text : null;
        if (!mt && Et.isLeafRoot && ut != null) {
            var Tt = r.get("drillDownIcon", !0);
            Mt.text = Tt ? Tt + " " + ut : ut
        }
    }

    function bt(Mt, mt, Et, ut) {
        var Tt = y != null && t[Mt][y],
            re = a[Mt];
        return Tt ? (t[Mt][y] = null, qt(re, Tt)) : m || (Tt = new mt, Tt instanceof ye && (Tt.z2 = zY(Et, ut)), ve(re, Tt)), e[Mt][g] = Tt
    }

    function qt(Mt, mt) {
        var Et = Mt[g] = {};
        mt instanceof O_ ? (Et.oldX = mt.x, Et.oldY = mt.y) : Et.oldShape = O({}, mt.shape)
    }

    function ve(Mt, mt) {
        var Et = Mt[g] = {},
            ut = o.parentNode,
            Tt = mt instanceof J;
        if (ut && (!i || i.direction === "drillDown")) {
            var re = 0,
                Wt = 0,
                Qt = a.background[ut.getRawIndex()];
            !i && Qt && Qt.oldShape && (re = Qt.oldShape.width, Wt = Qt.oldShape.height), Tt ? (Et.oldX = 0, Et.oldY = Wt) : Et.oldShape = {
                x: re,
                y: Wt,
                width: 0,
                height: 0
            }
        }
        Et.fadein = !Tt
    }
}

function zY(r, e) {
    return r * EY + e
}
var HP = NY;
var wp = w,
    kY = j,
    yd = -1,
    V_ = function() {
        function r(e) {
            var t = e.mappingMethod,
                i = e.type,
                a = this.option = Q(e);
            this.type = i, this.mappingMethod = t, this._normalizeData = BY[t];
            var n = r.visualHandlers[i];
            this.applyVisual = n.applyVisual, this.getColorMapper = n.getColorMapper, this._normalizedToVisual = n._normalizedToVisual[t], t === "piecewise" ? (z_(a), UY(a)) : t === "category" ? a.categories ? VY(a) : z_(a, !0) : (jt(t !== "linear" || a.dataExtent), z_(a))
        }
        return r.prototype.mapValueToVisual = function(e) {
            var t = this._normalizeData(e);
            return this._normalizedToVisual(t, e)
        }, r.prototype.getNormalizer = function() {
            return H(this._normalizeData, this)
        }, r.listVisualTypes = function() {
            return ft(r.visualHandlers)
        }, r.isValidType = function(e) {
            return r.visualHandlers.hasOwnProperty(e)
        }, r.eachVisual = function(e, t, i) {
            j(e) ? w(e, t, i) : t.call(i, e)
        }, r.mapVisual = function(e, t, i) {
            var a, n = z(e) ? [] : j(e) ? {} : (a = !0, null);
            return r.eachVisual(e, function(o, s) {
                var l = t.call(i, o, s);
                a ? n = l : n[s] = l
            }), n
        }, r.retrieveVisuals = function(e) {
            var t = {},
                i;
            return e && wp(r.visualHandlers, function(a, n) {
                e.hasOwnProperty(n) && (t[n] = e[n], i = !0)
            }), i ? t : null
        }, r.prepareVisualTypes = function(e) {
            if (z(e)) e = e.slice();
            else if (kY(e)) {
                var t = [];
                wp(e, function(i, a) {
                    t.push(a)
                }), e = t
            } else return [];
            return e.sort(function(i, a) {
                return a === "color" && i !== "color" && i.indexOf("color") === 0 ? 1 : -1
            }), e
        }, r.dependsOn = function(e, t) {
            return t === "color" ? !!(e && e.indexOf(t) === 0) : e === t
        }, r.findPieceIndex = function(e, t, i) {
            for (var a, n = 1 / 0, o = 0, s = t.length; o < s; o++) {
                var l = t[o].value;
                if (l != null) {
                    if (l === e || F(l) && l === e + "") return o;
                    i && c(l, o)
                }
            }
            for (var o = 0, s = t.length; o < s; o++) {
                var u = t[o],
                    f = u.interval,
                    p = u.close;
                if (f) {
                    if (f[0] === -1 / 0) {
                        if (gd(p[1], e, f[1])) return o
                    } else if (f[1] === 1 / 0) {
                        if (gd(p[0], f[0], e)) return o
                    } else if (gd(p[0], f[0], e) && gd(p[1], e, f[1])) return o;
                    i && c(f[0], o), i && c(f[1], o)
                }
            }
            if (i) return e === 1 / 0 ? t.length - 1 : e === -1 / 0 ? 0 : a;

            function c(h, v) {
                var d = Math.abs(h - e);
                d < n && (n = d, a = v)
            }
        }, r.visualHandlers = {
            color: {
                applyVisual: Sp("color"),
                getColorMapper: function() {
                    var e = this.option;
                    return H(e.mappingMethod === "category" ? function(t, i) {
                        return !i && (t = this._normalizeData(t)), bp.call(this, t)
                    } : function(t, i, a) {
                        var n = !!a;
                        return !i && (t = this._normalizeData(t)), a = qs(t, e.parsedVisual, a), n ? a : Mr(a, "rgba")
                    }, this)
                },
                _normalizedToVisual: {
                    linear: function(e) {
                        return Mr(qs(e, this.option.parsedVisual), "rgba")
                    },
                    category: bp,
                    piecewise: function(e, t) {
                        var i = U_.call(this, t);
                        return i == null && (i = Mr(qs(e, this.option.parsedVisual), "rgba")), i
                    },
                    fixed: Ds
                }
            },
            colorHue: md(function(e, t) {
                return _n(e, t)
            }),
            colorSaturation: md(function(e, t) {
                return _n(e, null, t)
            }),
            colorLightness: md(function(e, t) {
                return _n(e, null, null, t)
            }),
            colorAlpha: md(function(e, t) {
                return Sn(e, t)
            }),
            decal: {
                applyVisual: Sp("decal"),
                _normalizedToVisual: {
                    linear: null,
                    category: bp,
                    piecewise: null,
                    fixed: null
                }
            },
            opacity: {
                applyVisual: Sp("opacity"),
                _normalizedToVisual: k_([0, 1])
            },
            liftZ: {
                applyVisual: Sp("liftZ"),
                _normalizedToVisual: {
                    linear: Ds,
                    category: Ds,
                    piecewise: Ds,
                    fixed: Ds
                }
            },
            symbol: {
                applyVisual: function(e, t, i) {
                    var a = this.mapValueToVisual(e);
                    i("symbol", a)
                },
                _normalizedToVisual: {
                    linear: WP,
                    category: bp,
                    piecewise: function(e, t) {
                        var i = U_.call(this, t);
                        return i == null && (i = WP.call(this, e)), i
                    },
                    fixed: Ds
                }
            },
            symbolSize: {
                applyVisual: Sp("symbolSize"),
                _normalizedToVisual: k_([0, 1])
            }
        }, r
    }();

function UY(r) {
    var e = r.pieceList;
    r.hasSpecialVisual = !1, w(e, function(t, i) {
        t.originIndex = i, t.visual != null && (r.hasSpecialVisual = !0)
    })
}

function VY(r) {
    var e = r.categories,
        t = r.categoryMap = {},
        i = r.visual;
    if (wp(e, function(o, s) {
            t[o] = s
        }), !z(i)) {
        var a = [];
        j(i) ? wp(i, function(o, s) {
            var l = t[s];
            a[l ? ? yd] = o
        }) : a[yd] = i, i = YP(r, a)
    }
    for (var n = e.length - 1; n >= 0; n--) i[n] == null && (delete t[e[n]], e.pop())
}

function z_(r, e) {
    var t = r.visual,
        i = [];
    j(t) ? wp(t, function(n) {
        i.push(n)
    }) : t != null && i.push(t);
    var a = {
        color: 1,
        symbol: 1
    };
    !e && i.length === 1 && !a.hasOwnProperty(r.type) && (i[1] = i[0]), YP(r, i)
}

function md(r) {
    return {
        applyVisual: function(e, t, i) {
            var a = this.mapValueToVisual(e);
            i("color", r(t("color"), a))
        },
        _normalizedToVisual: k_([0, 1])
    }
}

function WP(r) {
    var e = this.option.visual;
    return e[Math.round(Rt(r, [0, 1], [0, e.length - 1], !0))] || {}
}

function Sp(r) {
    return function(e, t, i) {
        i(r, this.mapValueToVisual(e))
    }
}

function bp(r) {
    var e = this.option.visual;
    return e[this.option.loop && r !== yd ? r % e.length : r]
}

function Ds() {
    return this.option.visual[0]
}

function k_(r) {
    return {
        linear: function(e) {
            return Rt(e, r, this.option.visual, !0)
        },
        category: bp,
        piecewise: function(e, t) {
            var i = U_.call(this, t);
            return i == null && (i = Rt(e, r, this.option.visual, !0)), i
        },
        fixed: Ds
    }
}

function U_(r) {
    var e = this.option,
        t = e.pieceList;
    if (e.hasSpecialVisual) {
        var i = V_.findPieceIndex(r, t),
            a = t[i];
        if (a && a.visual) return a.visual[this.type]
    }
}

function YP(r, e) {
    return r.visual = e, r.type === "color" && (r.parsedVisual = k(e, function(t) {
        var i = Re(t);
        return i || [0, 0, 0, 1]
    })), e
}
var BY = {
    linear: function(r) {
        return Rt(r, this.option.dataExtent, [0, 1], !0)
    },
    piecewise: function(r) {
        var e = this.option.pieceList,
            t = V_.findPieceIndex(r, e, !0);
        if (t != null) return Rt(t, [0, e.length - 1], [0, 1], !0)
    },
    category: function(r) {
        var e = this.option.categories ? this.option.categoryMap[r] : r;
        return e ? ? yd
    },
    fixed: Yt
};

function gd(r, e, t) {
    return r ? e <= t : e < t
}
var he = V_;
var FY = "itemStyle",
    XP = lt(),
    qP = {
        seriesType: "treemap",
        reset: function(r) {
            var e = r.getData().tree,
                t = e.root;
            t.isRemoved() || KP(t, {}, r.getViewRoot().getAncestors(), r)
        }
    };

function KP(r, e, t, i) {
    var a = r.getModel(),
        n = r.getLayout(),
        o = r.hostTree.data;
    if (!(!n || n.invisible || !n.isInView)) {
        var s = a.getModel(FY),
            l = GY(s, e, i),
            u = o.ensureUniqueItemVisual(r.dataIndex, "style"),
            f = s.get("borderColor"),
            p = s.get("borderColorSaturation"),
            c;
        p != null && (c = ZP(l), f = HY(p, c)), u.stroke = f;
        var h = r.viewChildren;
        if (!h || !h.length) c = ZP(l), u.fill = c;
        else {
            var v = WY(r, a, n, s, l, h);
            w(h, function(d, m) {
                if (d.depth >= t.length || d === t[d.depth]) {
                    var g = YY(a, l, d, m, v, i);
                    KP(d, g, t, i)
                }
            })
        }
    }
}

function GY(r, e, t) {
    var i = O({}, e),
        a = t.designatedVisualItemStyle;
    return w(["color", "colorAlpha", "colorSaturation"], function(n) {
        a[n] = e[n];
        var o = r.get(n);
        a[n] = null, o != null && (i[n] = o)
    }), i
}

function ZP(r) {
    var e = B_(r, "color");
    if (e) {
        var t = B_(r, "colorAlpha"),
            i = B_(r, "colorSaturation");
        return i && (e = _n(e, null, null, i)), t && (e = Sn(e, t)), e
    }
}

function HY(r, e) {
    return e != null ? _n(e, null, null, r) : null
}

function B_(r, e) {
    var t = r[e];
    if (t != null && t !== "none") return t
}

function WY(r, e, t, i, a, n) {
    if (!(!n || !n.length)) {
        var o = F_(e, "color") || a.color != null && a.color !== "none" && (F_(e, "colorAlpha") || F_(e, "colorSaturation"));
        if (o) {
            var s = e.get("visualMin"),
                l = e.get("visualMax"),
                u = t.dataExtent.slice();
            s != null && s < u[0] && (u[0] = s), l != null && l > u[1] && (u[1] = l);
            var f = e.get("colorMappingBy"),
                p = {
                    type: o.name,
                    dataExtent: u,
                    visual: o.range
                };
            p.type === "color" && (f === "index" || f === "id") ? (p.mappingMethod = "category", p.loop = !0) : p.mappingMethod = "linear";
            var c = new he(p);
            return XP(c).drColorMappingBy = f, c
        }
    }
}

function F_(r, e) {
    var t = r.get(e);
    return z(t) && t.length ? {
        name: e,
        range: t
    } : null
}

function YY(r, e, t, i, a, n) {
    var o = O({}, e);
    if (a) {
        var s = a.type,
            l = s === "color" && XP(a).drColorMappingBy,
            u = l === "index" ? i : l === "id" ? n.mapIdToIndex(t.getId()) : t.getValue(r.get("visualDimension"));
        o[s] = a.mapValueToVisual(u)
    }
    return o
}
var Tp = Math.max,
    xd = Math.min,
    jP = Kt,
    G_ = w,
    QP = ["itemStyle", "borderWidth"],
    ZY = ["itemStyle", "gapWidth"],
    XY = ["upperLabel", "show"],
    qY = ["upperLabel", "height"],
    $P = {
        seriesType: "treemap",
        reset: function(r, e, t, i) {
            var a = t.getWidth(),
                n = t.getHeight(),
                o = r.option,
                s = Ut(r.getBoxLayoutParams(), {
                    width: t.getWidth(),
                    height: t.getHeight()
                }),
                l = o.size || [],
                u = W(jP(s.width, l[0]), a),
                f = W(jP(s.height, l[1]), n),
                p = i && i.type,
                c = ["treemapZoomToNode", "treemapRootToNode"],
                h = sn(i, c, r),
                v = p === "treemapRender" || p === "treemapMove" ? i.rootRect : null,
                d = r.getViewRoot(),
                m = L_(d);
            if (p !== "treemapMove") {
                var g = p === "treemapZoomToNode" ? t6(r, h, d, u, f) : v ? [v.width, v.height] : [u, f],
                    y = o.sort;
                y && y !== "asc" && y !== "desc" && (y = "desc");
                var x = {
                    squareRatio: o.squareRatio,
                    sort: y,
                    leafDepth: o.leafDepth
                };
                d.hostTree.clearLayouts();
                var _ = {
                    x: 0,
                    y: 0,
                    width: g[0],
                    height: g[1],
                    area: g[0] * g[1]
                };
                d.setLayout(_), t2(d, x, !1, 0), _ = d.getLayout(), G_(m, function(b, T) {
                    var C = (m[T + 1] || d).getValue();
                    b.setLayout(O({
                        dataExtent: [C, C],
                        borderWidth: 0,
                        upperHeight: 0
                    }, _))
                })
            }
            var S = r.getData().tree.root;
            S.setLayout(e6(s, v, h), !0), r.setLayoutInfo(s), e2(S, new it(-s.x, -s.y, a, n), m, d, 0)
        }
    };

function t2(r, e, t, i) {
    var a, n;
    if (!r.isRemoved()) {
        var o = r.getLayout();
        a = o.width, n = o.height;
        var s = r.getModel(),
            l = s.get(QP),
            u = s.get(ZY) / 2,
            f = r2(s),
            p = Math.max(l, f),
            c = l - u,
            h = p - u;
        r.setLayout({
            borderWidth: l,
            upperHeight: p,
            upperLabelHeight: f
        }, !0), a = Tp(a - 2 * c, 0), n = Tp(n - c - h, 0);
        var v = a * n,
            d = KY(r, s, v, e, t, i);
        if (d.length) {
            var m = {
                    x: c,
                    y: h,
                    width: a,
                    height: n
                },
                g = xd(a, n),
                y = 1 / 0,
                x = [];
            x.area = 0;
            for (var _ = 0, S = d.length; _ < S;) {
                var b = d[_];
                x.push(b), x.area += b.getLayout().area;
                var T = $Y(x, g, e.squareRatio);
                T <= y ? (_++, y = T) : (x.area -= x.pop().getLayout().area, JP(x, g, m, u, !1), g = xd(m.width, m.height), x.length = x.area = 0, y = 1 / 0)
            }
            if (x.length && JP(x, g, m, u, !0), !t) {
                var C = s.get("childrenVisibleMin");
                C != null && v < C && (t = !0)
            }
            for (var _ = 0, S = d.length; _ < S; _++) t2(d[_], e, t, i + 1)
        }
    }
}

function KY(r, e, t, i, a, n) {
    var o = r.children || [],
        s = i.sort;
    s !== "asc" && s !== "desc" && (s = null);
    var l = i.leafDepth != null && i.leafDepth <= n;
    if (a && !l) return r.viewChildren = [];
    o = wt(o, function(h) {
        return !h.isRemoved()
    }), JY(o, s);
    var u = QY(e, o, s);
    if (u.sum === 0) return r.viewChildren = [];
    if (u.sum = jY(e, t, u.sum, s, o), u.sum === 0) return r.viewChildren = [];
    for (var f = 0, p = o.length; f < p; f++) {
        var c = o[f].getValue() / u.sum * t;
        o[f].setLayout({
            area: c
        })
    }
    return l && (o.length && r.setLayout({
        isLeafRoot: !0
    }, !0), o.length = 0), r.viewChildren = o, r.setLayout({
        dataExtent: u.dataExtent
    }, !0), o
}

function jY(r, e, t, i, a) {
    if (!i) return t;
    for (var n = r.get("visibleMin"), o = a.length, s = o, l = o - 1; l >= 0; l--) {
        var u = a[i === "asc" ? o - l - 1 : l].getValue();
        u / t * e < n && (s = l, t -= u)
    }
    return i === "asc" ? a.splice(0, o - s) : a.splice(s, o - s), t
}

function JY(r, e) {
    return e && r.sort(function(t, i) {
        var a = e === "asc" ? t.getValue() - i.getValue() : i.getValue() - t.getValue();
        return a === 0 ? e === "asc" ? t.dataIndex - i.dataIndex : i.dataIndex - t.dataIndex : a
    }), r
}

function QY(r, e, t) {
    for (var i = 0, a = 0, n = e.length; a < n; a++) i += e[a].getValue();
    var o = r.get("visualDimension"),
        s;
    return !e || !e.length ? s = [NaN, NaN] : o === "value" && t ? (s = [e[e.length - 1].getValue(), e[0].getValue()], t === "asc" && s.reverse()) : (s = [1 / 0, -1 / 0], G_(e, function(l) {
        var u = l.getValue(o);
        u < s[0] && (s[0] = u), u > s[1] && (s[1] = u)
    })), {
        sum: i,
        dataExtent: s
    }
}

function $Y(r, e, t) {
    for (var i = 0, a = 1 / 0, n = 0, o = void 0, s = r.length; n < s; n++) o = r[n].getLayout().area, o && (o < a && (a = o), o > i && (i = o));
    var l = r.area * r.area,
        u = e * e * t;
    return l ? Tp(u * i / l, l / (u * a)) : 1 / 0
}

function JP(r, e, t, i, a) {
    var n = e === t.width ? 0 : 1,
        o = 1 - n,
        s = ["x", "y"],
        l = ["width", "height"],
        u = t[s[n]],
        f = e ? r.area / e : 0;
    (a || f > t[l[o]]) && (f = t[l[o]]);
    for (var p = 0, c = r.length; p < c; p++) {
        var h = r[p],
            v = {},
            d = f ? h.getLayout().area / f : 0,
            m = v[l[o]] = Tp(f - 2 * i, 0),
            g = t[s[n]] + t[l[n]] - u,
            y = p === c - 1 || g < d ? g : d,
            x = v[l[n]] = Tp(y - 2 * i, 0);
        v[s[o]] = t[s[o]] + xd(i, m / 2), v[s[n]] = u + xd(i, x / 2), u += y, h.setLayout(v, !0)
    }
    t[s[o]] += f, t[l[o]] -= f
}

function t6(r, e, t, i, a) {
    var n = (e || {}).node,
        o = [i, a];
    if (!n || n === t) return o;
    for (var s, l = i * a, u = l * r.option.zoomToNodeRatio; s = n.parentNode;) {
        for (var f = 0, p = s.children, c = 0, h = p.length; c < h; c++) f += p[c].getValue();
        var v = n.getValue();
        if (v === 0) return o;
        u *= f / v;
        var d = s.getModel(),
            m = d.get(QP),
            g = Math.max(m, r2(d));
        u += 4 * m * m + (3 * m + g) * Math.pow(u, .5), u > ju && (u = ju), n = s
    }
    u < l && (u = l);
    var y = Math.pow(u / l, .5);
    return [i * y, a * y]
}

function e6(r, e, t) {
    if (e) return {
        x: e.x,
        y: e.y
    };
    var i = {
        x: 0,
        y: 0
    };
    if (!t) return i;
    var a = t.node,
        n = a.getLayout();
    if (!n) return i;
    for (var o = [n.width / 2, n.height / 2], s = a; s;) {
        var l = s.getLayout();
        o[0] += l.x, o[1] += l.y, s = s.parentNode
    }
    return {
        x: r.width / 2 - o[0],
        y: r.height / 2 - o[1]
    }
}

function e2(r, e, t, i, a) {
    var n = r.getLayout(),
        o = t[a],
        s = o && o === r;
    if (!(o && !s || a === t.length && r !== i)) {
        r.setLayout({
            isInView: !0,
            invisible: !s && !e.intersect(n),
            isAboveViewRoot: s
        }, !0);
        var l = new it(e.x - n.x, e.y - n.y, e.width, e.height);
        G_(r.viewChildren || [], function(u) {
            e2(u, l, t, i, a + 1)
        })
    }
}

function r2(r) {
    return r.get(XY) ? r.get(qY) : 0
}

function H_(r) {
    r.registerSeriesModel(NP), r.registerChartView(HP), r.registerVisual(qP), r.registerLayout($P), PP(r)
}

function W_(r) {
    var e = r.findComponents({
        mainType: "legend"
    });
    !e || !e.length || r.eachSeriesByType("graph", function(t) {
        var i = t.getCategoriesData(),
            a = t.getGraph(),
            n = a.data,
            o = i.mapArray(i.getName);
        n.filterSelf(function(s) {
            var l = n.getItemModel(s),
                u = l.getShallow("category");
            if (u != null) {
                vt(u) && (u = o[u]);
                for (var f = 0; f < e.length; f++)
                    if (!e[f].isSelected(u)) return !1
            }
            return !0
        })
    })
}

function Y_(r) {
    var e = {};
    r.eachSeriesByType("graph", function(t) {
        var i = t.getCategoriesData(),
            a = t.getData(),
            n = {};
        i.each(function(o) {
            var s = i.getName(o);
            n["ec-" + s] = o;
            var l = i.getItemModel(o),
                u = l.getModel("itemStyle").getItemStyle();
            u.fill || (u.fill = t.getColorFromPalette(s, e)), i.setItemVisual(o, "style", u);
            for (var f = ["symbol", "symbolSize", "symbolKeepAspect"], p = 0; p < f.length; p++) {
                var c = l.getShallow(f[p], !0);
                c != null && i.setItemVisual(o, f[p], c)
            }
        }), i.count() && a.each(function(o) {
            var s = a.getItemModel(o),
                l = s.getShallow("category");
            if (l != null) {
                F(l) && (l = n["ec-" + l]);
                var u = i.getItemVisual(l, "style"),
                    f = a.ensureUniqueItemVisual(o, "style");
                O(f, u);
                for (var p = ["symbol", "symbolSize", "symbolKeepAspect"], c = 0; c < p.length; c++) a.setItemVisual(o, p[c], i.getItemVisual(l, p[c]))
            }
        })
    })
}

function _d(r) {
    return r instanceof Array || (r = [r, r]), r
}

function Z_(r) {
    r.eachSeriesByType("graph", function(e) {
        var t = e.getGraph(),
            i = e.getEdgeData(),
            a = _d(e.get("edgeSymbol")),
            n = _d(e.get("edgeSymbolSize"));
        i.setVisual("fromSymbol", a && a[0]), i.setVisual("toSymbol", a && a[1]), i.setVisual("fromSymbolSize", n && n[0]), i.setVisual("toSymbolSize", n && n[1]), i.setVisual("style", e.getModel("lineStyle").getLineStyle()), i.each(function(o) {
            var s = i.getItemModel(o),
                l = t.getEdgeByIndex(o),
                u = _d(s.getShallow("symbol", !0)),
                f = _d(s.getShallow("symbolSize", !0)),
                p = s.getModel("lineStyle").getLineStyle(),
                c = i.ensureUniqueItemVisual(o, "style");
            switch (O(c, p), c.stroke) {
                case "source":
                    {
                        var h = l.node1.getVisual("style");c.stroke = h && h.fill;
                        break
                    }
                case "target":
                    {
                        var h = l.node2.getVisual("style");c.stroke = h && h.fill;
                        break
                    }
            }
            u[0] && l.setVisual("fromSymbol", u[0]), u[1] && l.setVisual("toSymbol", u[1]), f[0] && l.setVisual("fromSymbolSize", f[0]), f[1] && l.setVisual("toSymbolSize", f[1])
        })
    })
}
var X_ = "-->",
    Sd = function(r) {
        return r.get("autoCurveness") || null
    },
    i2 = function(r, e) {
        var t = Sd(r),
            i = 20,
            a = [];
        if (vt(t)) i = t;
        else if (z(t)) {
            r.__curvenessList = t;
            return
        }
        e > i && (i = e);
        var n = i % 2 ? i + 2 : i + 3;
        a = [];
        for (var o = 0; o < n; o++) a.push((o % 2 ? o + 1 : o) / 10 * (o % 2 ? -1 : 1));
        r.__curvenessList = a
    },
    Cp = function(r, e, t) {
        var i = [r.id, r.dataIndex].join("."),
            a = [e.id, e.dataIndex].join(".");
        return [t.uid, i, a].join(X_)
    },
    a2 = function(r) {
        var e = r.split(X_);
        return [e[0], e[2], e[1]].join(X_)
    },
    r6 = function(r, e) {
        var t = Cp(r.node1, r.node2, e);
        return e.__edgeMap[t]
    },
    i6 = function(r, e) {
        var t = q_(Cp(r.node1, r.node2, e), e),
            i = q_(Cp(r.node2, r.node1, e), e);
        return t + i
    },
    q_ = function(r, e) {
        var t = e.__edgeMap;
        return t[r] ? t[r].length : 0
    };

function n2(r) {
    Sd(r) && (r.__curvenessList = [], r.__edgeMap = {}, i2(r))
}

function o2(r, e, t, i) {
    if (Sd(t)) {
        var a = Cp(r, e, t),
            n = t.__edgeMap,
            o = n[a2(a)];
        n[a] && !o ? n[a].isForward = !0 : o && n[a] && (o.isForward = !0, n[a].isForward = !1), n[a] = n[a] || [], n[a].push(i)
    }
}

function Jl(r, e, t, i) {
    var a = Sd(e),
        n = z(a);
    if (!a) return null;
    var o = r6(r, e);
    if (!o) return null;
    for (var s = -1, l = 0; l < o.length; l++)
        if (o[l] === t) {
            s = l;
            break
        }
    var u = i6(r, e);
    i2(e, u), r.lineStyle = r.lineStyle || {};
    var f = Cp(r.node1, r.node2, e),
        p = e.__curvenessList,
        c = n || u % 2 ? 0 : 1;
    if (o.isForward) return p[c + s];
    var h = a2(f),
        v = q_(h, e),
        d = p[s + v + c];
    return i ? n ? a && a[0] === 0 ? (v + c) % 2 ? d : -d : ((v % 2 ? 0 : 1) + c) % 2 ? d : -d : (v + c) % 2 ? d : -d : p[s + v + c]
}

function bd(r) {
    var e = r.coordinateSystem;
    if (!(e && e.type !== "view")) {
        var t = r.getGraph();
        t.eachNode(function(i) {
            var a = i.getModel();
            i.setLayout([+a.get("x"), +a.get("y")])
        }), Ap(t, r)
    }
}

function Ap(r, e) {
    r.eachEdge(function(t, i) {
        var a = Le(t.getModel().get(["lineStyle", "curveness"]), -Jl(t, e, i, !0), 0),
            n = fr(t.node1.getLayout()),
            o = fr(t.node2.getLayout()),
            s = [n, o]; + a && s.push([(n[0] + o[0]) / 2 - (n[1] - o[1]) * a, (n[1] + o[1]) / 2 - (o[0] - n[0]) * a]), t.setLayout(s)
    })
}

function K_(r, e) {
    r.eachSeriesByType("graph", function(t) {
        var i = t.get("layout"),
            a = t.coordinateSystem;
        if (a && a.type !== "view") {
            var n = t.getData(),
                o = [];
            w(a.dimensions, function(c) {
                o = o.concat(n.mapDimensionsAll(c))
            });
            for (var s = 0; s < n.count(); s++) {
                for (var l = [], u = !1, f = 0; f < o.length; f++) {
                    var p = n.get(o[f], s);
                    isNaN(p) || (u = !0), l.push(p)
                }
                u ? n.setItemLayout(s, a.dataToPoint(l)) : n.setItemLayout(s, [NaN, NaN])
            }
            Ap(n.graph, t)
        } else(!i || i === "none") && bd(t)
    })
}

function Ms(r) {
    var e = r.coordinateSystem;
    if (e.type !== "view") return 1;
    var t = r.option.nodeScaleRatio,
        i = e.scaleX,
        a = e.getZoom(),
        n = (a - 1) * t + 1;
    return n / i
}

function Ls(r) {
    var e = r.getVisual("symbolSize");
    return e instanceof Array && (e = (e[0] + e[1]) / 2), +e
}
var s2 = Math.PI,
    j_ = [];

function Ql(r, e, t, i) {
    var a = r.coordinateSystem;
    if (!(a && a.type !== "view")) {
        var n = a.getBoundingRect(),
            o = r.getData(),
            s = o.graph,
            l = n.width / 2 + n.x,
            u = n.height / 2 + n.y,
            f = Math.min(n.width, n.height) / 2,
            p = o.count();
        if (o.setLayout({
                cx: l,
                cy: u
            }), !!p) {
            if (t) {
                var c = a.pointToData(i),
                    h = c[0],
                    v = c[1],
                    d = [h - l, v - u];
                qr(d, d), yo(d, d, f), t.setLayout([l + d[0], u + d[1]], !0);
                var m = r.get(["circular", "rotateLabel"]);
                J_(t, m, l, u)
            }
            a6[e](r, s, o, f, l, u, p), s.eachEdge(function(g, y) {
                var x = Le(g.getModel().get(["lineStyle", "curveness"]), Jl(g, r, y), 0),
                    _ = fr(g.node1.getLayout()),
                    S = fr(g.node2.getLayout()),
                    b, T = (_[0] + S[0]) / 2,
                    C = (_[1] + S[1]) / 2; + x && (x *= 3, b = [l * x + T * (1 - x), u * x + C * (1 - x)]), g.setLayout([_, S, b])
            })
        }
    }
}
var a6 = {
    value: function(r, e, t, i, a, n, o) {
        var s = 0,
            l = t.getSum("value"),
            u = Math.PI * 2 / (l || o);
        e.eachNode(function(f) {
            var p = f.getValue("value"),
                c = u * (l ? p : 1) / 2;
            s += c, f.setLayout([i * Math.cos(s) + a, i * Math.sin(s) + n]), s += c
        })
    },
    symbolSize: function(r, e, t, i, a, n, o) {
        var s = 0;
        j_.length = o;
        var l = Ms(r);
        e.eachNode(function(p) {
            var c = Ls(p);
            isNaN(c) && (c = 2), c < 0 && (c = 0), c *= l;
            var h = Math.asin(c / 2 / i);
            isNaN(h) && (h = s2 / 2), j_[p.dataIndex] = h, s += h * 2
        });
        var u = (2 * s2 - s) / o / 2,
            f = 0;
        e.eachNode(function(p) {
            var c = u + j_[p.dataIndex];
            f += c, (!p.getLayout() || !p.getLayout().fixed) && p.setLayout([i * Math.cos(f) + a, i * Math.sin(f) + n]), f += c
        })
    }
};

function J_(r, e, t, i) {
    var a = r.getGraphicEl();
    if (a) {
        var n = r.getModel(),
            o = n.get(["label", "rotate"]) || 0,
            s = a.getSymbolPath();
        if (e) {
            var l = r.getLayout(),
                u = Math.atan2(l[1] - i, l[0] - t);
            u < 0 && (u = Math.PI * 2 + u);
            var f = l[0] < t;
            f && (u = u - Math.PI);
            var p = f ? "left" : "right";
            s.setTextConfig({
                rotation: -u,
                position: p,
                origin: "center"
            });
            var c = s.ensureState("emphasis");
            O(c.textConfig || (c.textConfig = {}), {
                position: p
            })
        } else s.setTextConfig({
            rotation: o *= Math.PI / 180
        })
    }
}

function Q_(r) {
    r.eachSeriesByType("graph", function(e) {
        e.get("layout") === "circular" && Ql(e, "symbolSize")
    })
}
var $l = Bs;

function l2(r, e, t) {
    for (var i = r, a = e, n = t.rect, o = n.width, s = n.height, l = [n.x + o / 2, n.y + s / 2], u = t.gravity == null ? .1 : t.gravity, f = 0; f < i.length; f++) {
        var p = i[f];
        p.p || (p.p = Ui(o * (Math.random() - .5) + l[0], s * (Math.random() - .5) + l[1])), p.pp = fr(p.p), p.edges = null
    }
    var c = t.friction == null ? .6 : t.friction,
        h = c,
        v, d;
    return {
        warmUp: function() {
            h = c * .8
        },
        setFixed: function(m) {
            i[m].fixed = !0
        },
        setUnfixed: function(m) {
            i[m].fixed = !1
        },
        beforeStep: function(m) {
            v = m
        },
        afterStep: function(m) {
            d = m
        },
        step: function(m) {
            v && v(i, a);
            for (var g = [], y = i.length, x = 0; x < a.length; x++) {
                var _ = a[x];
                if (!_.ignoreForceLayout) {
                    var S = _.n1,
                        b = _.n2;
                    fi(g, b.p, S.p);
                    var T = Fs(g) - _.d,
                        C = b.w / (S.w + b.w);
                    isNaN(C) && (C = 0), qr(g, g), !S.fixed && $l(S.p, S.p, g, C * T * h), !b.fixed && $l(b.p, b.p, g, -(1 - C) * T * h)
                }
            }
            for (var x = 0; x < y; x++) {
                var A = i[x];
                A.fixed || (fi(g, l, A.p), $l(A.p, A.p, g, u * h))
            }
            for (var x = 0; x < y; x++)
                for (var S = i[x], D = x + 1; D < y; D++) {
                    var b = i[D];
                    fi(g, b.p, S.p);
                    var T = Fs(g);
                    T === 0 && (km(g, Math.random() - .5, Math.random() - .5), T = 1);
                    var M = (S.rep + b.rep) / T / T;
                    !S.fixed && $l(S.pp, S.pp, g, M), !b.fixed && $l(b.pp, b.pp, g, -M)
                }
            for (var I = [], x = 0; x < y; x++) {
                var A = i[x];
                A.fixed || (fi(I, A.p, A.pp), $l(A.p, A.p, I, h), Ee(A.pp, A.p))
            }
            h = h * .992;
            var E = h < .01;
            d && d(i, a, E), m && m(E)
        }
    }
}

function $_(r) {
    r.eachSeriesByType("graph", function(e) {
        var t = e.coordinateSystem;
        if (!(t && t.type !== "view"))
            if (e.get("layout") === "force") {
                var i = e.preservedPoints || {},
                    a = e.getGraph(),
                    n = a.data,
                    o = a.edgeData,
                    s = e.getModel("force"),
                    l = s.get("initLayout");
                e.preservedPoints ? n.each(function(x) {
                    var _ = n.getId(x);
                    n.setItemLayout(x, i[_] || [NaN, NaN])
                }) : !l || l === "none" ? bd(e) : l === "circular" && Ql(e, "value");
                var u = n.getDataExtent("value"),
                    f = o.getDataExtent("value"),
                    p = s.get("repulsion"),
                    c = s.get("edgeLength"),
                    h = z(p) ? p : [p, p],
                    v = z(c) ? c : [c, c];
                v = [v[1], v[0]];
                var d = n.mapArray("value", function(x, _) {
                        var S = n.getItemLayout(_),
                            b = Rt(x, u, h);
                        return isNaN(b) && (b = (h[0] + h[1]) / 2), {
                            w: b,
                            rep: b,
                            fixed: n.getItemModel(_).get("fixed"),
                            p: !S || isNaN(S[0]) || isNaN(S[1]) ? null : S
                        }
                    }),
                    m = o.mapArray("value", function(x, _) {
                        var S = a.getEdgeByIndex(_),
                            b = Rt(x, f, v);
                        isNaN(b) && (b = (v[0] + v[1]) / 2);
                        var T = S.getModel(),
                            C = Le(S.getModel().get(["lineStyle", "curveness"]), -Jl(S, e, _, !0), 0);
                        return {
                            n1: d[S.node1.dataIndex],
                            n2: d[S.node2.dataIndex],
                            d: b,
                            curveness: C,
                            ignoreForceLayout: T.get("ignoreForceLayout")
                        }
                    }),
                    g = t.getBoundingRect(),
                    y = l2(d, m, {
                        rect: g,
                        gravity: s.get("gravity"),
                        friction: s.get("friction")
                    });
                y.beforeStep(function(x, _) {
                    for (var S = 0, b = x.length; S < b; S++) x[S].fixed && Ee(x[S].p, a.getNodeByIndex(S).getLayout())
                }), y.afterStep(function(x, _, S) {
                    for (var b = 0, T = x.length; b < T; b++) x[b].fixed || a.getNodeByIndex(b).setLayout(x[b].p), i[n.getId(b)] = x[b].p;
                    for (var b = 0, T = _.length; b < T; b++) {
                        var C = _[b],
                            A = a.getEdgeByIndex(b),
                            D = C.n1.p,
                            M = C.n2.p,
                            I = A.getLayout();
                        I = I ? I.slice() : [], I[0] = I[0] || [], I[1] = I[1] || [], Ee(I[0], D), Ee(I[1], M), +C.curveness && (I[2] = [(D[0] + M[0]) / 2 - (D[1] - M[1]) * C.curveness, (D[1] + M[1]) / 2 - (M[0] - D[0]) * C.curveness]), A.setLayout(I)
                    }
                }), e.forceLayout = y, e.preservedPoints = i, y.step()
            } else e.forceLayout = null
    })
}

function n6(r, e, t) {
    var i = O(r.getBoxLayoutParams(), {
        aspect: t
    });
    return Ut(i, {
        width: e.getWidth(),
        height: e.getHeight()
    })
}

function tS(r, e) {
    var t = [];
    return r.eachSeriesByType("graph", function(i) {
        var a = i.get("coordinateSystem");
        if (!a || a === "view") {
            var n = i.getData(),
                o = n.mapArray(function(m) {
                    var g = n.getItemModel(m);
                    return [+g.get("x"), +g.get("y")]
                }),
                s = [],
                l = [];
            Go(o, s, l), l[0] - s[0] === 0 && (l[0] += 1, s[0] -= 1), l[1] - s[1] === 0 && (l[1] += 1, s[1] -= 1);
            var u = (l[0] - s[0]) / (l[1] - s[1]),
                f = n6(i, e, u);
            isNaN(u) && (s = [f.x, f.y], l = [f.x + f.width, f.y + f.height]);
            var p = l[0] - s[0],
                c = l[1] - s[1],
                h = f.width,
                v = f.height,
                d = i.coordinateSystem = new on;
            d.zoomLimit = i.get("scaleLimit"), d.setBoundingRect(s[0], s[1], p, c), d.setViewRect(f.x, f.y, h, v), d.setCenter(i.get("center"), e), d.setZoom(i.get("zoom")), t.push(d)
        }
    }), t
}
var u2 = ee.prototype,
    eS = Za.prototype,
    f2 = function() {
        function r() {
            this.x1 = 0, this.y1 = 0, this.x2 = 0, this.y2 = 0, this.percent = 1
        }
        return r
    }(),
    Y0t = function(r) {
        L(e, r);

        function e() {
            return r !== null && r.apply(this, arguments) || this
        }
        return e
    }(f2);

function rS(r) {
    return isNaN(+r.cpx1) || isNaN(+r.cpy1)
}
var o6 = function(r) {
        L(e, r);

        function e(t) {
            var i = r.call(this, t) || this;
            return i.type = "ec-line", i
        }
        return e.prototype.getDefaultStyle = function() {
            return {
                stroke: "#000",
                fill: null
            }
        }, e.prototype.getDefaultShape = function() {
            return new f2
        }, e.prototype.buildPath = function(t, i) {
            rS(i) ? u2.buildPath.call(this, t, i) : eS.buildPath.call(this, t, i)
        }, e.prototype.pointAt = function(t) {
            return rS(this.shape) ? u2.pointAt.call(this, t) : eS.pointAt.call(this, t)
        }, e.prototype.tangentAt = function(t) {
            var i = this.shape,
                a = rS(i) ? [i.x2 - i.x1, i.y2 - i.y1] : eS.tangentAt.call(this, t);
            return qr(a, a)
        }, e
    }(st),
    p2 = o6;
var iS = ["fromSymbol", "toSymbol"];

function c2(r) {
    return "_" + r + "Type"
}

function h2(r, e, t) {
    var i = e.getItemVisual(t, r);
    if (!i || i === "none") return i;
    var a = e.getItemVisual(t, r + "Size"),
        n = e.getItemVisual(t, r + "Rotate"),
        o = e.getItemVisual(t, r + "Offset"),
        s = e.getItemVisual(t, r + "KeepAspect"),
        l = Ki(a),
        u = oi(o || 0, l);
    return i + l + u + (n || "") + (s || "")
}

function v2(r, e, t) {
    var i = e.getItemVisual(t, r);
    if (!(!i || i === "none")) {
        var a = e.getItemVisual(t, r + "Size"),
            n = e.getItemVisual(t, r + "Rotate"),
            o = e.getItemVisual(t, r + "Offset"),
            s = e.getItemVisual(t, r + "KeepAspect"),
            l = Ki(a),
            u = oi(o || 0, l),
            f = Vt(i, -l[0] / 2 + u[0], -l[1] / 2 + u[1], l[0], l[1], null, s);
        return f.__specifiedRotation = n == null || isNaN(n) ? void 0 : +n * Math.PI / 180 || 0, f.name = r, f
    }
}

function s6(r) {
    var e = new p2({
        name: "line",
        subPixelOptimize: !0
    });
    return aS(e.shape, r), e
}

function aS(r, e) {
    r.x1 = e[0][0], r.y1 = e[0][1], r.x2 = e[1][0], r.y2 = e[1][1], r.percent = 1;
    var t = e[2];
    t ? (r.cpx1 = t[0], r.cpy1 = t[1]) : (r.cpx1 = NaN, r.cpy1 = NaN)
}
var l6 = function(r) {
        L(e, r);

        function e(t, i, a) {
            var n = r.call(this) || this;
            return n._createLine(t, i, a), n
        }
        return e.prototype._createLine = function(t, i, a) {
            var n = t.hostModel,
                o = t.getItemLayout(i),
                s = s6(o);
            s.shape.percent = 0, Ot(s, {
                shape: {
                    percent: 1
                }
            }, n, i), this.add(s), w(iS, function(l) {
                var u = v2(l, t, i);
                this.add(u), this[c2(l)] = h2(l, t, i)
            }, this), this._updateCommonStl(t, i, a)
        }, e.prototype.updateData = function(t, i, a) {
            var n = t.hostModel,
                o = this.childOfName("line"),
                s = t.getItemLayout(i),
                l = {
                    shape: {}
                };
            aS(l.shape, s), xt(o, l, n, i), w(iS, function(u) {
                var f = h2(u, t, i),
                    p = c2(u);
                if (this[p] !== f) {
                    this.remove(this.childOfName(u));
                    var c = v2(u, t, i);
                    this.add(c)
                }
                this[p] = f
            }, this), this._updateCommonStl(t, i, a)
        }, e.prototype.getLinePath = function() {
            return this.childAt(0)
        }, e.prototype._updateCommonStl = function(t, i, a) {
            var n = t.hostModel,
                o = this.childOfName("line"),
                s = a && a.emphasisLineStyle,
                l = a && a.blurLineStyle,
                u = a && a.selectLineStyle,
                f = a && a.labelStatesModels,
                p = a && a.emphasisDisabled,
                c = a && a.focus,
                h = a && a.blurScope;
            if (!a || t.hasItemOption) {
                var v = t.getItemModel(i),
                    d = v.getModel("emphasis");
                s = d.getModel("lineStyle").getLineStyle(), l = v.getModel(["blur", "lineStyle"]).getLineStyle(), u = v.getModel(["select", "lineStyle"]).getLineStyle(), p = d.get("disabled"), c = d.get("focus"), h = d.get("blurScope"), f = Ft(v)
            }
            var m = t.getItemVisual(i, "style"),
                g = m.stroke;
            o.useStyle(m), o.style.fill = null, o.style.strokeNoScale = !0, o.ensureState("emphasis").style = s, o.ensureState("blur").style = l, o.ensureState("select").style = u, w(iS, function(b) {
                var T = this.childOfName(b);
                if (T) {
                    T.setColor(g), T.style.opacity = m.opacity;
                    for (var C = 0; C < Oe.length; C++) {
                        var A = Oe[C],
                            D = o.getState(A);
                        if (D) {
                            var M = D.style || {},
                                I = T.ensureState(A),
                                E = I.style || (I.style = {});
                            M.stroke != null && (E[T.__isEmptyBrush ? "stroke" : "fill"] = M.stroke), M.opacity != null && (E.opacity = M.opacity)
                        }
                    }
                    T.markRedraw()
                }
            }, this);
            var y = n.getRawValue(i);
            Xt(this, f, {
                labelDataIndex: i,
                labelFetcher: {
                    getFormattedLabel: function(b, T) {
                        return n.getFormattedLabel(b, T, t.dataType)
                    }
                },
                inheritColor: g || "#000",
                defaultOpacity: m.opacity,
                defaultText: (y == null ? t.getName(i) : isFinite(y) ? Gt(y) : y) + ""
            });
            var x = this.getTextContent();
            if (x) {
                var _ = f.normal;
                x.__align = x.style.align, x.__verticalAlign = x.style.verticalAlign, x.__position = _.get("position") || "middle";
                var S = _.get("distance");
                z(S) || (S = [S, S]), x.__labelDistance = S
            }
            this.setTextConfig({
                position: null,
                local: !0,
                inside: !1
            }), Nt(this, c, h, p)
        }, e.prototype.highlight = function() {
            rr(this)
        }, e.prototype.downplay = function() {
            ir(this)
        }, e.prototype.updateLayout = function(t, i) {
            this.setLinePoints(t.getItemLayout(i))
        }, e.prototype.setLinePoints = function(t) {
            var i = this.childOfName("line");
            aS(i.shape, t), i.dirty()
        }, e.prototype.beforeUpdate = function() {
            var t = this,
                i = t.childOfName("fromSymbol"),
                a = t.childOfName("toSymbol"),
                n = t.getTextContent();
            if (!i && !a && (!n || n.ignore)) return;
            for (var o = 1, s = this.parent; s;) s.scaleX && (o /= s.scaleX), s = s.parent;
            var l = t.childOfName("line");
            if (!this.__dirty && !l.__dirty) return;
            var u = l.shape.percent,
                f = l.pointAt(0),
                p = l.pointAt(u),
                c = fi([], p, f);
            qr(c, c);

            function h(D, M) {
                var I = D.__specifiedRotation;
                if (I == null) {
                    var E = l.tangentAt(M);
                    D.attr("rotation", (M === 1 ? -1 : 1) * Math.PI / 2 - Math.atan2(E[1], E[0]))
                } else D.attr("rotation", I)
            }
            if (i && (i.setPosition(f), h(i, 0), i.scaleX = i.scaleY = o * u, i.markRedraw()), a && (a.setPosition(p), h(a, 1), a.scaleX = a.scaleY = o * u, a.markRedraw()), n && !n.ignore) {
                n.x = n.y = 0, n.originX = n.originY = 0;
                var v = void 0,
                    d = void 0,
                    m = n.__labelDistance,
                    g = m[0] * o,
                    y = m[1] * o,
                    x = u / 2,
                    _ = l.tangentAt(x),
                    S = [_[1], -_[0]],
                    b = l.pointAt(x);
                S[1] > 0 && (S[0] = -S[0], S[1] = -S[1]);
                var T = _[0] < 0 ? -1 : 1;
                if (n.__position !== "start" && n.__position !== "end") {
                    var C = -Math.atan2(_[1], _[0]);
                    p[0] < f[0] && (C = Math.PI + C), n.rotation = C
                }
                var A = void 0;
                switch (n.__position) {
                    case "insideStartTop":
                    case "insideMiddleTop":
                    case "insideEndTop":
                    case "middle":
                        A = -y, d = "bottom";
                        break;
                    case "insideStartBottom":
                    case "insideMiddleBottom":
                    case "insideEndBottom":
                        A = y, d = "top";
                        break;
                    default:
                        A = 0, d = "middle"
                }
                switch (n.__position) {
                    case "end":
                        n.x = c[0] * g + p[0], n.y = c[1] * y + p[1], v = c[0] > .8 ? "left" : c[0] < -.8 ? "right" : "center", d = c[1] > .8 ? "top" : c[1] < -.8 ? "bottom" : "middle";
                        break;
                    case "start":
                        n.x = -c[0] * g + f[0], n.y = -c[1] * y + f[1], v = c[0] > .8 ? "right" : c[0] < -.8 ? "left" : "center", d = c[1] > .8 ? "bottom" : c[1] < -.8 ? "top" : "middle";
                        break;
                    case "insideStartTop":
                    case "insideStart":
                    case "insideStartBottom":
                        n.x = g * T + f[0], n.y = f[1] + A, v = _[0] < 0 ? "right" : "left", n.originX = -g * T, n.originY = -A;
                        break;
                    case "insideMiddleTop":
                    case "insideMiddle":
                    case "insideMiddleBottom":
                    case "middle":
                        n.x = b[0], n.y = b[1] + A, v = "center", n.originY = -A;
                        break;
                    case "insideEndTop":
                    case "insideEnd":
                    case "insideEndBottom":
                        n.x = -g * T + p[0], n.y = p[1] + A, v = _[0] >= 0 ? "right" : "left", n.originX = g * T, n.originY = -A;
                        break
                }
                n.scaleX = n.scaleY = o, n.setStyle({
                    verticalAlign: n.__verticalAlign || d,
                    align: n.__align || v
                })
            }
        }, e
    }(J),
    tu = l6;
var u6 = function() {
    function r(e) {
        this.group = new J, this._LineCtor = e || tu
    }
    return r.prototype.updateData = function(e) {
        var t = this;
        this._progressiveEls = null;
        var i = this,
            a = i.group,
            n = i._lineData;
        i._lineData = e, n || a.removeAll();
        var o = d2(e);
        e.diff(n).add(function(s) {
            t._doAdd(e, s, o)
        }).update(function(s, l) {
            t._doUpdate(n, e, l, s, o)
        }).remove(function(s) {
            a.remove(n.getItemGraphicEl(s))
        }).execute()
    }, r.prototype.updateLayout = function() {
        var e = this._lineData;
        e && e.eachItemGraphicEl(function(t, i) {
            t.updateLayout(e, i)
        }, this)
    }, r.prototype.incrementalPrepareUpdate = function(e) {
        this._seriesScope = d2(e), this._lineData = null, this.group.removeAll()
    }, r.prototype.incrementalUpdate = function(e, t) {
        this._progressiveEls = [];

        function i(s) {
            !s.isGroup && !f6(s) && (s.incremental = !0, s.ensureState("emphasis").hoverLayer = !0)
        }
        for (var a = e.start; a < e.end; a++) {
            var n = t.getItemLayout(a);
            if (nS(n)) {
                var o = new this._LineCtor(t, a, this._seriesScope);
                o.traverse(i), this.group.add(o), t.setItemGraphicEl(a, o), this._progressiveEls.push(o)
            }
        }
    }, r.prototype.remove = function() {
        this.group.removeAll()
    }, r.prototype.eachRendered = function(e) {
        dr(this._progressiveEls || this.group, e)
    }, r.prototype._doAdd = function(e, t, i) {
        var a = e.getItemLayout(t);
        if (nS(a)) {
            var n = new this._LineCtor(e, t, i);
            e.setItemGraphicEl(t, n), this.group.add(n)
        }
    }, r.prototype._doUpdate = function(e, t, i, a, n) {
        var o = e.getItemGraphicEl(i);
        if (!nS(t.getItemLayout(a))) {
            this.group.remove(o);
            return
        }
        o ? o.updateData(t, a, n) : o = new this._LineCtor(t, a, n), t.setItemGraphicEl(a, o), this.group.add(o)
    }, r
}();

function f6(r) {
    return r.animators && r.animators.length > 0
}

function d2(r) {
    var e = r.hostModel,
        t = e.getModel("emphasis");
    return {
        lineStyle: e.getModel("lineStyle").getLineStyle(),
        emphasisLineStyle: t.getModel(["lineStyle"]).getLineStyle(),
        blurLineStyle: e.getModel(["blur", "lineStyle"]).getLineStyle(),
        selectLineStyle: e.getModel(["select", "lineStyle"]).getLineStyle(),
        emphasisDisabled: t.get("disabled"),
        blurScope: t.get("blurScope"),
        focus: t.get("focus"),
        labelStatesModels: Ft(e)
    }
}

function m2(r) {
    return isNaN(r[0]) || isNaN(r[1])
}

function nS(r) {
    return r && !m2(r[0]) && !m2(r[1])
}
var eu = u6;
var oS = [],
    sS = [],
    lS = [],
    ru = ge,
    uS = oa,
    g2 = Math.abs;

function y2(r, e, t) {
    for (var i = r[0], a = r[1], n = r[2], o = 1 / 0, s, l = t * t, u = .1, f = .1; f <= .9; f += .1) {
        oS[0] = ru(i[0], a[0], n[0], f), oS[1] = ru(i[1], a[1], n[1], f);
        var p = g2(uS(oS, e) - l);
        p < o && (o = p, s = f)
    }
    for (var c = 0; c < 32; c++) {
        var h = s + u;
        sS[0] = ru(i[0], a[0], n[0], s), sS[1] = ru(i[1], a[1], n[1], s), lS[0] = ru(i[0], a[0], n[0], h), lS[1] = ru(i[1], a[1], n[1], h);
        var p = uS(sS, e) - l;
        if (g2(p) < .01) break;
        var v = uS(lS, e) - l;
        u /= 2, p < 0 ? v >= 0 ? s = s + u : s = s - u : v >= 0 ? s = s - u : s = s + u
    }
    return s
}

function Dp(r, e) {
    var t = [],
        i = yn,
        a = [
            [],
            [],
            []
        ],
        n = [
            [],
            []
        ],
        o = [];
    e /= 2, r.eachEdge(function(s, l) {
        var u = s.getLayout(),
            f = s.getVisual("fromSymbol"),
            p = s.getVisual("toSymbol");
        u.__original || (u.__original = [fr(u[0]), fr(u[1])], u[2] && u.__original.push(fr(u[2])));
        var c = u.__original;
        if (u[2] != null) {
            if (Ee(a[0], c[0]), Ee(a[1], c[2]), Ee(a[2], c[1]), f && f !== "none") {
                var h = Ls(s.node1),
                    v = y2(a, c[0], h * e);
                i(a[0][0], a[1][0], a[2][0], v, t), a[0][0] = t[3], a[1][0] = t[4], i(a[0][1], a[1][1], a[2][1], v, t), a[0][1] = t[3], a[1][1] = t[4]
            }
            if (p && p !== "none") {
                var h = Ls(s.node2),
                    v = y2(a, c[1], h * e);
                i(a[0][0], a[1][0], a[2][0], v, t), a[1][0] = t[1], a[2][0] = t[2], i(a[0][1], a[1][1], a[2][1], v, t), a[1][1] = t[1], a[2][1] = t[2]
            }
            Ee(u[0], a[0]), Ee(u[1], a[2]), Ee(u[2], a[1])
        } else {
            if (Ee(n[0], c[0]), Ee(n[1], c[1]), fi(o, n[1], n[0]), qr(o, o), f && f !== "none") {
                var h = Ls(s.node1);
                Bs(n[0], n[0], o, h * e)
            }
            if (p && p !== "none") {
                var h = Ls(s.node2);
                Bs(n[1], n[1], o, -h * e)
            }
            Ee(u[0], n[0]), Ee(u[1], n[1])
        }
    })
}

function x2(r) {
    return r.type === "view"
}
var p6 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.init = function(t, i) {
            var a = new wa,
                n = new eu,
                o = this.group;
            this._controller = new Da(i.getZr()), this._controllerHost = {
                target: o
            }, o.add(a.group), o.add(n.group), this._symbolDraw = a, this._lineDraw = n, this._firstRender = !0
        }, e.prototype.render = function(t, i, a) {
            var n = this,
                o = t.coordinateSystem;
            this._model = t;
            var s = this._symbolDraw,
                l = this._lineDraw,
                u = this.group;
            if (x2(o)) {
                var f = {
                    x: o.x,
                    y: o.y,
                    scaleX: o.scaleX,
                    scaleY: o.scaleY
                };
                this._firstRender ? u.attr(f) : xt(u, f, t)
            }
            Dp(t.getGraph(), Ms(t));
            var p = t.getData();
            s.updateData(p);
            var c = t.getEdgeData();
            l.updateData(c), this._updateNodeAndLinkScale(), this._updateController(t, i, a), clearTimeout(this._layoutTimeout);
            var h = t.forceLayout,
                v = t.get(["force", "layoutAnimation"]);
            h && this._startForceLayoutIteration(h, v);
            var d = t.get("layout");
            p.graph.eachNode(function(x) {
                var _ = x.dataIndex,
                    S = x.getGraphicEl(),
                    b = x.getModel();
                if (S) {
                    S.off("drag").off("dragend");
                    var T = b.get("draggable");
                    T && S.on("drag", function(A) {
                        switch (d) {
                            case "force":
                                h.warmUp(), !n._layouting && n._startForceLayoutIteration(h, v), h.setFixed(_), p.setItemLayout(_, [S.x, S.y]);
                                break;
                            case "circular":
                                p.setItemLayout(_, [S.x, S.y]), x.setLayout({
                                    fixed: !0
                                }, !0), Ql(t, "symbolSize", x, [A.offsetX, A.offsetY]), n.updateLayout(t);
                                break;
                            case "none":
                            default:
                                p.setItemLayout(_, [S.x, S.y]), Ap(t.getGraph(), t), n.updateLayout(t);
                                break
                        }
                    }).on("dragend", function() {
                        h && h.setUnfixed(_)
                    }), S.setDraggable(T, !!b.get("cursor"));
                    var C = b.get(["emphasis", "focus"]);
                    C === "adjacency" && (et(S).focus = x.getAdjacentDataIndices())
                }
            }), p.graph.eachEdge(function(x) {
                var _ = x.getGraphicEl(),
                    S = x.getModel().get(["emphasis", "focus"]);
                _ && S === "adjacency" && (et(_).focus = {
                    edge: [x.dataIndex],
                    node: [x.node1.dataIndex, x.node2.dataIndex]
                })
            });
            var m = t.get("layout") === "circular" && t.get(["circular", "rotateLabel"]),
                g = p.getLayout("cx"),
                y = p.getLayout("cy");
            p.graph.eachNode(function(x) {
                J_(x, m, g, y)
            }), this._firstRender = !1
        }, e.prototype.dispose = function() {
            this.remove(), this._controller && this._controller.dispose(), this._controllerHost = null
        }, e.prototype._startForceLayoutIteration = function(t, i) {
            var a = this;
            (function n() {
                t.step(function(o) {
                    a.updateLayout(a._model), (a._layouting = !o) && (i ? a._layoutTimeout = setTimeout(n, 16) : n())
                })
            })()
        }, e.prototype._updateController = function(t, i, a) {
            var n = this,
                o = this._controller,
                s = this._controllerHost,
                l = this.group;
            if (o.setPointerChecker(function(u, f, p) {
                    var c = l.getBoundingRect();
                    return c.applyTransform(l.transform), c.contain(f, p) && !Qn(u, a, t)
                }), !x2(t.coordinateSystem)) {
                o.disable();
                return
            }
            o.enable(t.get("roam")), s.zoomLimit = t.get("scaleLimit"), s.zoom = t.coordinateSystem.getZoom(), o.off("pan").off("zoom").on("pan", function(u) {
                Yl(s, u.dx, u.dy), a.dispatchAction({
                    seriesId: t.id,
                    type: "graphRoam",
                    dx: u.dx,
                    dy: u.dy
                })
            }).on("zoom", function(u) {
                Zl(s, u.scale, u.originX, u.originY), a.dispatchAction({
                    seriesId: t.id,
                    type: "graphRoam",
                    zoom: u.scale,
                    originX: u.originX,
                    originY: u.originY
                }), n._updateNodeAndLinkScale(), Dp(t.getGraph(), Ms(t)), n._lineDraw.updateLayout(), a.updateLabelLayout()
            })
        }, e.prototype._updateNodeAndLinkScale = function() {
            var t = this._model,
                i = t.getData(),
                a = Ms(t);
            i.eachItemGraphicEl(function(n, o) {
                n && n.setSymbolScale(a)
            })
        }, e.prototype.updateLayout = function(t) {
            Dp(t.getGraph(), Ms(t)), this._symbolDraw.updateLayout(), this._lineDraw.updateLayout()
        }, e.prototype.remove = function() {
            clearTimeout(this._layoutTimeout), this._layouting = !1, this._layoutTimeout = null, this._symbolDraw && this._symbolDraw.remove(), this._lineDraw && this._lineDraw.remove()
        }, e.type = "graph", e
    }(At),
    _2 = p6;

function iu(r) {
    return "_EC_" + r
}
var c6 = function() {
        function r(e) {
            this.type = "graph", this.nodes = [], this.edges = [], this._nodesMap = {}, this._edgesMap = {}, this._directed = e || !1
        }
        return r.prototype.isDirected = function() {
            return this._directed
        }, r.prototype.addNode = function(e, t) {
            e = e == null ? "" + t : "" + e;
            var i = this._nodesMap;
            if (!i[iu(e)]) {
                var a = new Is(e, t);
                return a.hostGraph = this, this.nodes.push(a), i[iu(e)] = a, a
            }
        }, r.prototype.getNodeByIndex = function(e) {
            var t = this.data.getRawIndex(e);
            return this.nodes[t]
        }, r.prototype.getNodeById = function(e) {
            return this._nodesMap[iu(e)]
        }, r.prototype.addEdge = function(e, t, i) {
            var a = this._nodesMap,
                n = this._edgesMap;
            if (vt(e) && (e = this.nodes[e]), vt(t) && (t = this.nodes[t]), e instanceof Is || (e = a[iu(e)]), t instanceof Is || (t = a[iu(t)]), !(!e || !t)) {
                var o = e.id + "-" + t.id,
                    s = new S2(e, t, i);
                return s.hostGraph = this, this._directed && (e.outEdges.push(s), t.inEdges.push(s)), e.edges.push(s), e !== t && t.edges.push(s), this.edges.push(s), n[o] = s, s
            }
        }, r.prototype.getEdgeByIndex = function(e) {
            var t = this.edgeData.getRawIndex(e);
            return this.edges[t]
        }, r.prototype.getEdge = function(e, t) {
            e instanceof Is && (e = e.id), t instanceof Is && (t = t.id);
            var i = this._edgesMap;
            return this._directed ? i[e + "-" + t] : i[e + "-" + t] || i[t + "-" + e]
        }, r.prototype.eachNode = function(e, t) {
            for (var i = this.nodes, a = i.length, n = 0; n < a; n++) i[n].dataIndex >= 0 && e.call(t, i[n], n)
        }, r.prototype.eachEdge = function(e, t) {
            for (var i = this.edges, a = i.length, n = 0; n < a; n++) i[n].dataIndex >= 0 && i[n].node1.dataIndex >= 0 && i[n].node2.dataIndex >= 0 && e.call(t, i[n], n)
        }, r.prototype.breadthFirstTraverse = function(e, t, i, a) {
            if (t instanceof Is || (t = this._nodesMap[iu(t)]), !!t) {
                for (var n = i === "out" ? "outEdges" : i === "in" ? "inEdges" : "edges", o = 0; o < this.nodes.length; o++) this.nodes[o].__visited = !1;
                if (!e.call(a, t, null))
                    for (var s = [t]; s.length;)
                        for (var l = s.shift(), u = l[n], o = 0; o < u.length; o++) {
                            var f = u[o],
                                p = f.node1 === l ? f.node2 : f.node1;
                            if (!p.__visited) {
                                if (e.call(a, p, l)) return;
                                s.push(p), p.__visited = !0
                            }
                        }
            }
        }, r.prototype.update = function() {
            for (var e = this.data, t = this.edgeData, i = this.nodes, a = this.edges, n = 0, o = i.length; n < o; n++) i[n].dataIndex = -1;
            for (var n = 0, o = e.count(); n < o; n++) i[e.getRawIndex(n)].dataIndex = n;
            t.filterSelf(function(s) {
                var l = a[t.getRawIndex(s)];
                return l.node1.dataIndex >= 0 && l.node2.dataIndex >= 0
            });
            for (var n = 0, o = a.length; n < o; n++) a[n].dataIndex = -1;
            for (var n = 0, o = t.count(); n < o; n++) a[t.getRawIndex(n)].dataIndex = n
        }, r.prototype.clone = function() {
            for (var e = new r(this._directed), t = this.nodes, i = this.edges, a = 0; a < t.length; a++) e.addNode(t[a].id, t[a].dataIndex);
            for (var a = 0; a < i.length; a++) {
                var n = i[a];
                e.addEdge(n.node1.id, n.node2.id, n.dataIndex)
            }
            return e
        }, r
    }(),
    Is = function() {
        function r(e, t) {
            this.inEdges = [], this.outEdges = [], this.edges = [], this.dataIndex = -1, this.id = e ? ? "", this.dataIndex = t ? ? -1
        }
        return r.prototype.degree = function() {
            return this.edges.length
        }, r.prototype.inDegree = function() {
            return this.inEdges.length
        }, r.prototype.outDegree = function() {
            return this.outEdges.length
        }, r.prototype.getModel = function(e) {
            if (!(this.dataIndex < 0)) {
                var t = this.hostGraph,
                    i = t.data.getItemModel(this.dataIndex);
                return i.getModel(e)
            }
        }, r.prototype.getAdjacentDataIndices = function() {
            for (var e = {
                    edge: [],
                    node: []
                }, t = 0; t < this.edges.length; t++) {
                var i = this.edges[t];
                i.dataIndex < 0 || (e.edge.push(i.dataIndex), e.node.push(i.node1.dataIndex, i.node2.dataIndex))
            }
            return e
        }, r.prototype.getTrajectoryDataIndices = function() {
            for (var e = Y(), t = Y(), i = 0; i < this.edges.length; i++) {
                var a = this.edges[i];
                if (!(a.dataIndex < 0)) {
                    e.set(a.dataIndex, !0);
                    for (var n = [a.node1], o = [a.node2], s = 0; s < n.length;) {
                        var l = n[s];
                        s++, t.set(l.dataIndex, !0);
                        for (var u = 0; u < l.inEdges.length; u++) e.set(l.inEdges[u].dataIndex, !0), n.push(l.inEdges[u].node1)
                    }
                    for (s = 0; s < o.length;) {
                        var f = o[s];
                        s++, t.set(f.dataIndex, !0);
                        for (var u = 0; u < f.outEdges.length; u++) e.set(f.outEdges[u].dataIndex, !0), o.push(f.outEdges[u].node2)
                    }
                }
            }
            return {
                edge: e.keys(),
                node: t.keys()
            }
        }, r
    }(),
    S2 = function() {
        function r(e, t, i) {
            this.dataIndex = -1, this.node1 = e, this.node2 = t, this.dataIndex = i ? ? -1
        }
        return r.prototype.getModel = function(e) {
            if (!(this.dataIndex < 0)) {
                var t = this.hostGraph,
                    i = t.edgeData.getItemModel(this.dataIndex);
                return i.getModel(e)
            }
        }, r.prototype.getAdjacentDataIndices = function() {
            return {
                edge: [this.dataIndex],
                node: [this.node1.dataIndex, this.node2.dataIndex]
            }
        }, r.prototype.getTrajectoryDataIndices = function() {
            var e = Y(),
                t = Y();
            e.set(this.dataIndex, !0);
            for (var i = [this.node1], a = [this.node2], n = 0; n < i.length;) {
                var o = i[n];
                n++, t.set(o.dataIndex, !0);
                for (var s = 0; s < o.inEdges.length; s++) e.set(o.inEdges[s].dataIndex, !0), i.push(o.inEdges[s].node1)
            }
            for (n = 0; n < a.length;) {
                var l = a[n];
                n++, t.set(l.dataIndex, !0);
                for (var s = 0; s < l.outEdges.length; s++) e.set(l.outEdges[s].dataIndex, !0), a.push(l.outEdges[s].node2)
            }
            return {
                edge: e.keys(),
                node: t.keys()
            }
        }, r
    }();

function b2(r, e) {
    return {
        getValue: function(t) {
            var i = this[r][e];
            return i.getStore().get(i.getDimensionIndex(t || "value"), this.dataIndex)
        },
        setVisual: function(t, i) {
            this.dataIndex >= 0 && this[r][e].setItemVisual(this.dataIndex, t, i)
        },
        getVisual: function(t) {
            return this[r][e].getItemVisual(this.dataIndex, t)
        },
        setLayout: function(t, i) {
            this.dataIndex >= 0 && this[r][e].setItemLayout(this.dataIndex, t, i)
        },
        getLayout: function() {
            return this[r][e].getItemLayout(this.dataIndex)
        },
        getGraphicEl: function() {
            return this[r][e].getItemGraphicEl(this.dataIndex)
        },
        getRawIndex: function() {
            return this[r][e].getRawIndex(this.dataIndex)
        }
    }
}
Bt(Is, b2("hostGraph", "data"));
Bt(S2, b2("hostGraph", "edgeData"));
var w2 = c6;

function Mp(r, e, t, i, a) {
    for (var n = new w2(i), o = 0; o < r.length; o++) n.addNode(Kt(r[o].id, r[o].name, o), o);
    for (var s = [], l = [], u = 0, o = 0; o < e.length; o++) {
        var f = e[o],
            p = f.source,
            c = f.target;
        n.addEdge(p, c, u) && (l.push(f), s.push(Kt(ie(f.id, null), p + " > " + c)), u++)
    }
    var h = t.get("coordinateSystem"),
        v;
    if (h === "cartesian2d" || h === "polar") v = ze(r, t);
    else {
        var d = ga.get(h),
            m = d ? d.dimensions || [] : [];
        at(m, "value") < 0 && m.concat(["value"]);
        var g = Mi(r, {
            coordDimensions: m,
            encodeDefine: t.getEncode()
        }).dimensions;
        v = new se(g, t), v.initData(r)
    }
    var y = new se(["value"], t);
    return y.initData(l, s), a && a(v, y), vd({
        mainData: v,
        struct: n,
        structAttr: "graph",
        datas: {
            node: v,
            edge: y
        },
        datasAttr: {
            node: "data",
            edge: "edgeData"
        }
    }), n.update(), n
}
var h6 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t.hasSymbolVisual = !0, t
        }
        return e.prototype.init = function(t) {
            r.prototype.init.apply(this, arguments);
            var i = this;

            function a() {
                return i._categoriesData
            }
            this.legendVisualProvider = new Aa(a, a), this.fillDataTextStyle(t.edges || t.links), this._updateCategoriesData()
        }, e.prototype.mergeOption = function(t) {
            r.prototype.mergeOption.apply(this, arguments), this.fillDataTextStyle(t.edges || t.links), this._updateCategoriesData()
        }, e.prototype.mergeDefaultAndTheme = function(t) {
            r.prototype.mergeDefaultAndTheme.apply(this, arguments), Qr(t, "edgeLabel", ["show"])
        }, e.prototype.getInitialData = function(t, i) {
            var a = t.edges || t.links || [],
                n = t.data || t.nodes || [],
                o = this;
            if (n && a) {
                n2(this);
                var s = Mp(n, a, this, !0, l);
                return w(s.edges, function(u) {
                    o2(u.node1, u.node2, this, u.dataIndex)
                }, this), s.data
            }

            function l(u, f) {
                u.wrapMethod("getItemModel", function(v) {
                    var d = o._categoriesModels,
                        m = v.getShallow("category"),
                        g = d[m];
                    return g && (g.parentModel = v.parentModel, v.parentModel = g), v
                });
                var p = Dt.prototype.getModel;

                function c(v, d) {
                    var m = p.call(this, v, d);
                    return m.resolveParentPath = h, m
                }
                f.wrapMethod("getItemModel", function(v) {
                    return v.resolveParentPath = h, v.getModel = c, v
                });

                function h(v) {
                    if (v && (v[0] === "label" || v[1] === "label")) {
                        var d = v.slice();
                        return v[0] === "label" ? d[0] = "edgeLabel" : v[1] === "label" && (d[1] = "edgeLabel"), d
                    }
                    return v
                }
            }
        }, e.prototype.getGraph = function() {
            return this.getData().graph
        }, e.prototype.getEdgeData = function() {
            return this.getGraph().edgeData
        }, e.prototype.getCategoriesData = function() {
            return this._categoriesData
        }, e.prototype.formatTooltip = function(t, i, a) {
            if (a === "edge") {
                var n = this.getData(),
                    o = this.getDataParams(t, a),
                    s = n.graph.getEdgeByIndex(t),
                    l = n.getName(s.node1.dataIndex),
                    u = n.getName(s.node2.dataIndex),
                    f = [];
                return l != null && f.push(l), u != null && f.push(u), Jt("nameValue", {
                    name: f.join(" > "),
                    value: o.value,
                    noValue: o.value == null
                })
            }
            var p = Wh({
                series: this,
                dataIndex: t,
                multipleSeries: i
            });
            return p
        }, e.prototype._updateCategoriesData = function() {
            var t = k(this.option.categories || [], function(a) {
                    return a.value != null ? a : O({
                        value: 0
                    }, a)
                }),
                i = new se(["value"], this);
            i.initData(t), this._categoriesData = i, this._categoriesModels = i.mapArray(function(a) {
                return i.getItemModel(a)
            })
        }, e.prototype.setZoom = function(t) {
            this.option.zoom = t
        }, e.prototype.setCenter = function(t) {
            this.option.center = t
        }, e.prototype.isAnimationEnabled = function() {
            return r.prototype.isAnimationEnabled.call(this) && !(this.get("layout") === "force" && this.get(["force", "layoutAnimation"]))
        }, e.type = "series.graph", e.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"], e.defaultOption = {
            z: 2,
            coordinateSystem: "view",
            legendHoverLink: !0,
            layout: null,
            circular: {
                rotateLabel: !1
            },
            force: {
                initLayout: null,
                repulsion: [0, 50],
                gravity: .1,
                friction: .6,
                edgeLength: 30,
                layoutAnimation: !0
            },
            left: "center",
            top: "center",
            symbol: "circle",
            symbolSize: 10,
            edgeSymbol: ["none", "none"],
            edgeSymbolSize: 10,
            edgeLabel: {
                position: "middle",
                distance: 5
            },
            draggable: !1,
            roam: !1,
            center: null,
            zoom: 1,
            nodeScaleRatio: .6,
            label: {
                show: !1,
                formatter: "{b}"
            },
            itemStyle: {},
            lineStyle: {
                color: "#aaa",
                width: 1,
                opacity: .5
            },
            emphasis: {
                scale: !0,
                label: {
                    show: !0
                }
            },
            select: {
                itemStyle: {
                    borderColor: "#212121"
                }
            }
        }, e
    }(Lt),
    T2 = h6;
var v6 = {
    type: "graphRoam",
    event: "graphRoam",
    update: "none"
};

function fS(r) {
    r.registerChartView(_2), r.registerSeriesModel(T2), r.registerProcessor(W_), r.registerVisual(Y_), r.registerVisual(Z_), r.registerLayout(K_), r.registerLayout(r.PRIORITY.VISUAL.POST_CHART_LAYOUT, Q_), r.registerLayout($_), r.registerCoordinateSystem("graphView", {
        dimensions: on.dimensions,
        create: tS
    }), r.registerAction({
        type: "focusNodeAdjacency",
        event: "focusNodeAdjacency",
        update: "series:focusNodeAdjacency"
    }, Yt), r.registerAction({
        type: "unfocusNodeAdjacency",
        event: "unfocusNodeAdjacency",
        update: "series:unfocusNodeAdjacency"
    }, Yt), r.registerAction(v6, function(e, t, i) {
        t.eachComponent({
            mainType: "series",
            query: e
        }, function(a) {
            var n = a.coordinateSystem,
                o = Xl(n, e, void 0, i);
            a.setCenter && a.setCenter(o.center), a.setZoom && a.setZoom(o.zoom)
        })
    })
}
var d6 = function() {
        function r() {
            this.angle = 0, this.width = 10, this.r = 10, this.x = 0, this.y = 0
        }
        return r
    }(),
    m6 = function(r) {
        L(e, r);

        function e(t) {
            var i = r.call(this, t) || this;
            return i.type = "pointer", i
        }
        return e.prototype.getDefaultShape = function() {
            return new d6
        }, e.prototype.buildPath = function(t, i) {
            var a = Math.cos,
                n = Math.sin,
                o = i.r,
                s = i.width,
                l = i.angle,
                u = i.x - a(l) * s * (s >= o / 3 ? 1 : 2),
                f = i.y - n(l) * s * (s >= o / 3 ? 1 : 2);
            l = i.angle - Math.PI / 2, t.moveTo(u, f), t.lineTo(i.x + a(l) * s, i.y + n(l) * s), t.lineTo(i.x + a(i.angle) * o, i.y + n(i.angle) * o), t.lineTo(i.x - a(l) * s, i.y - n(l) * s), t.lineTo(u, f)
        }, e
    }(st),
    C2 = m6;

function g6(r, e) {
    var t = r.get("center"),
        i = e.getWidth(),
        a = e.getHeight(),
        n = Math.min(i, a),
        o = W(t[0], e.getWidth()),
        s = W(t[1], e.getHeight()),
        l = W(r.get("radius"), n / 2);
    return {
        cx: o,
        cy: s,
        r: l
    }
}

function wd(r, e) {
    var t = r == null ? "" : r + "";
    return e && (F(e) ? t = e.replace("{value}", t) : X(e) && (t = e(r))), t
}
var y6 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.render = function(t, i, a) {
            this.group.removeAll();
            var n = t.get(["axisLine", "lineStyle", "color"]),
                o = g6(t, a);
            this._renderMain(t, i, a, n, o), this._data = t.getData()
        }, e.prototype.dispose = function() {}, e.prototype._renderMain = function(t, i, a, n, o) {
            var s = this.group,
                l = t.get("clockwise"),
                u = -t.get("startAngle") / 180 * Math.PI,
                f = -t.get("endAngle") / 180 * Math.PI,
                p = t.getModel("axisLine"),
                c = p.get("roundCap"),
                h = c ? Hl : pe,
                v = p.get("show"),
                d = p.getModel("lineStyle"),
                m = d.get("width"),
                g = [u, f];
            nf(g, !l), u = g[0], f = g[1];
            for (var y = f - u, x = u, _ = [], S = 0; v && S < n.length; S++) {
                var b = Math.min(Math.max(n[S][0], 0), 1);
                f = u + y * b;
                var T = new h({
                    shape: {
                        startAngle: x,
                        endAngle: f,
                        cx: o.cx,
                        cy: o.cy,
                        clockwise: l,
                        r0: o.r - m,
                        r: o.r
                    },
                    silent: !0
                });
                T.setStyle({
                    fill: n[S][1]
                }), T.setStyle(d.getLineStyle(["color", "width"])), _.push(T), x = f
            }
            _.reverse(), w(_, function(A) {
                return s.add(A)
            });
            var C = function(A) {
                if (A <= 0) return n[0][1];
                var D;
                for (D = 0; D < n.length; D++)
                    if (n[D][0] >= A && (D === 0 ? 0 : n[D - 1][0]) < A) return n[D][1];
                return n[D - 1][1]
            };
            this._renderTicks(t, i, a, C, o, u, f, l, m), this._renderTitleAndDetail(t, i, a, C, o), this._renderAnchor(t, o), this._renderPointer(t, i, a, C, o, u, f, l, m)
        }, e.prototype._renderTicks = function(t, i, a, n, o, s, l, u, f) {
            for (var p = this.group, c = o.cx, h = o.cy, v = o.r, d = +t.get("min"), m = +t.get("max"), g = t.getModel("splitLine"), y = t.getModel("axisTick"), x = t.getModel("axisLabel"), _ = t.get("splitNumber"), S = y.get("splitNumber"), b = W(g.get("length"), v), T = W(y.get("length"), v), C = s, A = (l - s) / _, D = A / S, M = g.getModel("lineStyle").getLineStyle(), I = y.getModel("lineStyle").getLineStyle(), E = g.get("distance"), P, R, N = 0; N <= _; N++) {
                if (P = Math.cos(C), R = Math.sin(C), g.get("show")) {
                    var V = E ? E + f : f,
                        U = new ee({
                            shape: {
                                x1: P * (v - V) + c,
                                y1: R * (v - V) + h,
                                x2: P * (v - b - V) + c,
                                y2: R * (v - b - V) + h
                            },
                            style: M,
                            silent: !0
                        });
                    M.stroke === "auto" && U.setStyle({
                        stroke: n(N / _)
                    }), p.add(U)
                }
                if (x.get("show")) {
                    var V = x.get("distance") + E,
                        B = wd(Gt(N / _ * (m - d) + d), x.get("formatter")),
                        Z = n(N / _),
                        K = P * (v - b - V) + c,
                        tt = R * (v - b - V) + h,
                        pt = x.get("rotate"),
                        ct = 0;
                    pt === "radial" ? (ct = -C + 2 * Math.PI, ct > Math.PI / 2 && (ct += Math.PI)) : pt === "tangential" ? ct = -C - Math.PI / 2 : vt(pt) && (ct = pt * Math.PI / 180), ct === 0 ? p.add(new dt({
                        style: zt(x, {
                            text: B,
                            x: K,
                            y: tt,
                            verticalAlign: R < -.8 ? "top" : R > .8 ? "bottom" : "middle",
                            align: P < -.4 ? "left" : P > .4 ? "right" : "center"
                        }, {
                            inheritColor: Z
                        }),
                        silent: !0
                    })) : p.add(new dt({
                        style: zt(x, {
                            text: B,
                            x: K,
                            y: tt,
                            verticalAlign: "middle",
                            align: "center"
                        }, {
                            inheritColor: Z
                        }),
                        silent: !0,
                        originX: K,
                        originY: tt,
                        rotation: ct
                    }))
                }
                if (y.get("show") && N !== _) {
                    var V = y.get("distance");
                    V = V ? V + f : f;
                    for (var bt = 0; bt <= S; bt++) {
                        P = Math.cos(C), R = Math.sin(C);
                        var qt = new ee({
                            shape: {
                                x1: P * (v - V) + c,
                                y1: R * (v - V) + h,
                                x2: P * (v - T - V) + c,
                                y2: R * (v - T - V) + h
                            },
                            silent: !0,
                            style: I
                        });
                        I.stroke === "auto" && qt.setStyle({
                            stroke: n((N + bt / S) / _)
                        }), p.add(qt), C += D
                    }
                    C -= D
                } else C += A
            }
        }, e.prototype._renderPointer = function(t, i, a, n, o, s, l, u, f) {
            var p = this.group,
                c = this._data,
                h = this._progressEls,
                v = [],
                d = t.get(["pointer", "show"]),
                m = t.getModel("progress"),
                g = m.get("show"),
                y = t.getData(),
                x = y.mapDimension("value"),
                _ = +t.get("min"),
                S = +t.get("max"),
                b = [_, S],
                T = [s, l];

            function C(D, M) {
                var I = y.getItemModel(D),
                    E = I.getModel("pointer"),
                    P = W(E.get("width"), o.r),
                    R = W(E.get("length"), o.r),
                    N = t.get(["pointer", "icon"]),
                    V = E.get("offsetCenter"),
                    U = W(V[0], o.r),
                    B = W(V[1], o.r),
                    Z = E.get("keepAspect"),
                    K;
                return N ? K = Vt(N, U - P / 2, B - R, P, R, null, Z) : K = new C2({
                    shape: {
                        angle: -Math.PI / 2,
                        width: P,
                        r: R,
                        x: U,
                        y: B
                    }
                }), K.rotation = -(M + Math.PI / 2), K.x = o.cx, K.y = o.cy, K
            }

            function A(D, M) {
                var I = m.get("roundCap"),
                    E = I ? Hl : pe,
                    P = m.get("overlap"),
                    R = P ? m.get("width") : f / y.count(),
                    N = P ? o.r - R : o.r - (D + 1) * R,
                    V = P ? o.r : o.r - D * R,
                    U = new E({
                        shape: {
                            startAngle: s,
                            endAngle: M,
                            cx: o.cx,
                            cy: o.cy,
                            clockwise: u,
                            r0: N,
                            r: V
                        }
                    });
                return P && (U.z2 = Rt(y.get(x, D), [_, S], [100, 0], !0)), U
            }(g || d) && (y.diff(c).add(function(D) {
                var M = y.get(x, D);
                if (d) {
                    var I = C(D, s);
                    Ot(I, {
                        rotation: -((isNaN(+M) ? T[0] : Rt(M, b, T, !0)) + Math.PI / 2)
                    }, t), p.add(I), y.setItemGraphicEl(D, I)
                }
                if (g) {
                    var E = A(D, s),
                        P = m.get("clip");
                    Ot(E, {
                        shape: {
                            endAngle: Rt(M, b, T, P)
                        }
                    }, t), p.add(E), sf(t.seriesIndex, y.dataType, D, E), v[D] = E
                }
            }).update(function(D, M) {
                var I = y.get(x, D);
                if (d) {
                    var E = c.getItemGraphicEl(M),
                        P = E ? E.rotation : s,
                        R = C(D, P);
                    R.rotation = P, xt(R, {
                        rotation: -((isNaN(+I) ? T[0] : Rt(I, b, T, !0)) + Math.PI / 2)
                    }, t), p.add(R), y.setItemGraphicEl(D, R)
                }
                if (g) {
                    var N = h[M],
                        V = N ? N.shape.endAngle : s,
                        U = A(D, V),
                        B = m.get("clip");
                    xt(U, {
                        shape: {
                            endAngle: Rt(I, b, T, B)
                        }
                    }, t), p.add(U), sf(t.seriesIndex, y.dataType, D, U), v[D] = U
                }
            }).execute(), y.each(function(D) {
                var M = y.getItemModel(D),
                    I = M.getModel("emphasis"),
                    E = I.get("focus"),
                    P = I.get("blurScope"),
                    R = I.get("disabled");
                if (d) {
                    var N = y.getItemGraphicEl(D),
                        V = y.getItemVisual(D, "style"),
                        U = V.fill;
                    if (N instanceof Zt) {
                        var B = N.style;
                        N.useStyle(O({
                            image: B.image,
                            x: B.x,
                            y: B.y,
                            width: B.width,
                            height: B.height
                        }, V))
                    } else N.useStyle(V), N.type !== "pointer" && N.setColor(U);
                    N.setStyle(M.getModel(["pointer", "itemStyle"]).getItemStyle()), N.style.fill === "auto" && N.setStyle("fill", n(Rt(y.get(x, D), b, [0, 1], !0))), N.z2EmphasisLift = 0, te(N, M), Nt(N, E, P, R)
                }
                if (g) {
                    var Z = v[D];
                    Z.useStyle(y.getItemVisual(D, "style")), Z.setStyle(M.getModel(["progress", "itemStyle"]).getItemStyle()), Z.z2EmphasisLift = 0, te(Z, M), Nt(Z, E, P, R)
                }
            }), this._progressEls = v)
        }, e.prototype._renderAnchor = function(t, i) {
            var a = t.getModel("anchor"),
                n = a.get("show");
            if (n) {
                var o = a.get("size"),
                    s = a.get("icon"),
                    l = a.get("offsetCenter"),
                    u = a.get("keepAspect"),
                    f = Vt(s, i.cx - o / 2 + W(l[0], i.r), i.cy - o / 2 + W(l[1], i.r), o, o, null, u);
                f.z2 = a.get("showAbove") ? 1 : 0, f.setStyle(a.getModel("itemStyle").getItemStyle()), this.group.add(f)
            }
        }, e.prototype._renderTitleAndDetail = function(t, i, a, n, o) {
            var s = this,
                l = t.getData(),
                u = l.mapDimension("value"),
                f = +t.get("min"),
                p = +t.get("max"),
                c = new J,
                h = [],
                v = [],
                d = t.isAnimationEnabled(),
                m = t.get(["pointer", "showAbove"]);
            l.diff(this._data).add(function(g) {
                h[g] = new dt({
                    silent: !0
                }), v[g] = new dt({
                    silent: !0
                })
            }).update(function(g, y) {
                h[g] = s._titleEls[y], v[g] = s._detailEls[y]
            }).execute(), l.each(function(g) {
                var y = l.getItemModel(g),
                    x = l.get(u, g),
                    _ = new J,
                    S = n(Rt(x, [f, p], [0, 1], !0)),
                    b = y.getModel("title");
                if (b.get("show")) {
                    var T = b.get("offsetCenter"),
                        C = o.cx + W(T[0], o.r),
                        A = o.cy + W(T[1], o.r),
                        D = h[g];
                    D.attr({
                        z2: m ? 0 : 2,
                        style: zt(b, {
                            x: C,
                            y: A,
                            text: l.getName(g),
                            align: "center",
                            verticalAlign: "middle"
                        }, {
                            inheritColor: S
                        })
                    }), _.add(D)
                }
                var M = y.getModel("detail");
                if (M.get("show")) {
                    var I = M.get("offsetCenter"),
                        E = o.cx + W(I[0], o.r),
                        P = o.cy + W(I[1], o.r),
                        R = W(M.get("width"), o.r),
                        N = W(M.get("height"), o.r),
                        V = t.get(["progress", "show"]) ? l.getItemVisual(g, "style").fill : S,
                        D = v[g],
                        U = M.get("formatter");
                    D.attr({
                        z2: m ? 0 : 2,
                        style: zt(M, {
                            x: E,
                            y: P,
                            text: wd(x, U),
                            width: isNaN(R) ? null : R,
                            height: isNaN(N) ? null : N,
                            align: "center",
                            verticalAlign: "middle"
                        }, {
                            inheritColor: V
                        })
                    }), hh(D, {
                        normal: M
                    }, x, function(Z) {
                        return wd(Z, U)
                    }), d && vh(D, g, l, t, {
                        getFormattedLabel: function(Z, K, tt, pt, ct, bt) {
                            return wd(bt ? bt.interpolatedValue : x, U)
                        }
                    }), _.add(D)
                }
                c.add(_)
            }), this.group.add(c), this._titleEls = h, this._detailEls = v
        }, e.type = "gauge", e
    }(At),
    A2 = y6;
var x6 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t.visualStyleAccessPath = "itemStyle", t
        }
        return e.prototype.getInitialData = function(t, i) {
            return si(this, ["value"])
        }, e.type = "series.gauge", e.defaultOption = {
            z: 2,
            colorBy: "data",
            center: ["50%", "50%"],
            legendHoverLink: !0,
            radius: "75%",
            startAngle: 225,
            endAngle: -45,
            clockwise: !0,
            min: 0,
            max: 100,
            splitNumber: 10,
            axisLine: {
                show: !0,
                roundCap: !1,
                lineStyle: {
                    color: [
                        [1, "#E6EBF8"]
                    ],
                    width: 10
                }
            },
            progress: {
                show: !1,
                overlap: !0,
                width: 10,
                roundCap: !1,
                clip: !0
            },
            splitLine: {
                show: !0,
                length: 10,
                distance: 10,
                lineStyle: {
                    color: "#63677A",
                    width: 3,
                    type: "solid"
                }
            },
            axisTick: {
                show: !0,
                splitNumber: 5,
                length: 6,
                distance: 10,
                lineStyle: {
                    color: "#63677A",
                    width: 1,
                    type: "solid"
                }
            },
            axisLabel: {
                show: !0,
                distance: 15,
                color: "#464646",
                fontSize: 12,
                rotate: 0
            },
            pointer: {
                icon: null,
                offsetCenter: [0, 0],
                show: !0,
                showAbove: !0,
                length: "60%",
                width: 6,
                keepAspect: !1
            },
            anchor: {
                show: !1,
                showAbove: !1,
                size: 6,
                icon: "circle",
                offsetCenter: [0, 0],
                keepAspect: !1,
                itemStyle: {
                    color: "#fff",
                    borderWidth: 0,
                    borderColor: "#5470c6"
                }
            },
            title: {
                show: !0,
                offsetCenter: [0, "20%"],
                color: "#464646",
                fontSize: 16,
                valueAnimation: !1
            },
            detail: {
                show: !0,
                backgroundColor: "rgba(0,0,0,0)",
                borderWidth: 0,
                borderColor: "#ccc",
                width: 100,
                height: null,
                padding: [5, 10],
                offsetCenter: [0, "40%"],
                color: "#464646",
                fontSize: 30,
                fontWeight: "bold",
                lineHeight: 30,
                valueAnimation: !1
            }
        }, e
    }(Lt),
    D2 = x6;

function pS(r) {
    r.registerChartView(A2), r.registerSeriesModel(D2)
}
var _6 = ["itemStyle", "opacity"],
    S6 = function(r) {
        L(e, r);

        function e(t, i) {
            var a = r.call(this) || this,
                n = a,
                o = new ae,
                s = new dt;
            return n.setTextContent(s), a.setTextGuideLine(o), a.updateData(t, i, !0), a
        }
        return e.prototype.updateData = function(t, i, a) {
            var n = this,
                o = t.hostModel,
                s = t.getItemModel(i),
                l = t.getItemLayout(i),
                u = s.getModel("emphasis"),
                f = s.get(_6);
            f = f ? ? 1, a || Ae(n), n.useStyle(t.getItemVisual(i, "style")), n.style.lineJoin = "round", a ? (n.setShape({
                points: l.points
            }), n.style.opacity = 0, Ot(n, {
                style: {
                    opacity: f
                }
            }, o, i)) : xt(n, {
                style: {
                    opacity: f
                },
                shape: {
                    points: l.points
                }
            }, o, i), te(n, s), this._updateLabel(t, i), Nt(this, u.get("focus"), u.get("blurScope"), u.get("disabled"))
        }, e.prototype._updateLabel = function(t, i) {
            var a = this,
                n = this.getTextGuideLine(),
                o = a.getTextContent(),
                s = t.hostModel,
                l = t.getItemModel(i),
                u = t.getItemLayout(i),
                f = u.label,
                p = t.getItemVisual(i, "style"),
                c = p.fill;
            Xt(o, Ft(l), {
                labelFetcher: t.hostModel,
                labelDataIndex: i,
                defaultOpacity: p.opacity,
                defaultText: t.getName(i)
            }, {
                normal: {
                    align: f.textAlign,
                    verticalAlign: f.verticalAlign
                }
            }), a.setTextConfig({
                local: !0,
                inside: !!f.inside,
                insideStroke: c,
                outsideFill: c
            });
            var h = f.linePoints;
            n.setShape({
                points: h
            }), a.textGuideLineConfig = {
                anchor: h ? new St(h[0][0], h[0][1]) : null
            }, xt(o, {
                style: {
                    x: f.x,
                    y: f.y
                }
            }, s, i), o.attr({
                rotation: f.rotation,
                originX: f.x,
                originY: f.y,
                z2: 10
            }), Vl(a, Bl(l), {
                stroke: c
            })
        }, e
    }(oe),
    b6 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t.ignoreLabelLineUpdate = !0, t
        }
        return e.prototype.render = function(t, i, a) {
            var n = t.getData(),
                o = this._data,
                s = this.group;
            n.diff(o).add(function(l) {
                var u = new S6(n, l);
                n.setItemGraphicEl(l, u), s.add(u)
            }).update(function(l, u) {
                var f = o.getItemGraphicEl(u);
                f.updateData(n, l), s.add(f), n.setItemGraphicEl(l, f)
            }).remove(function(l) {
                var u = o.getItemGraphicEl(l);
                qa(u, t, l)
            }).execute(), this._data = n
        }, e.prototype.remove = function() {
            this.group.removeAll(), this._data = null
        }, e.prototype.dispose = function() {}, e.type = "funnel", e
    }(At),
    M2 = b6;
var w6 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.init = function(t) {
            r.prototype.init.apply(this, arguments), this.legendVisualProvider = new Aa(H(this.getData, this), H(this.getRawData, this)), this._defaultLabelLine(t)
        }, e.prototype.getInitialData = function(t, i) {
            return si(this, {
                coordDimensions: ["value"],
                encodeDefaulter: rt(Dl, this)
            })
        }, e.prototype._defaultLabelLine = function(t) {
            Qr(t, "labelLine", ["show"]);
            var i = t.labelLine,
                a = t.emphasis.labelLine;
            i.show = i.show && t.label.show, a.show = a.show && t.emphasis.label.show
        }, e.prototype.getDataParams = function(t) {
            var i = this.getData(),
                a = r.prototype.getDataParams.call(this, t),
                n = i.mapDimension("value"),
                o = i.getSum(n);
            return a.percent = o ? +(i.get(n, t) / o * 100).toFixed(2) : 0, a.$vars.push("percent"), a
        }, e.type = "series.funnel", e.defaultOption = {
            z: 2,
            legendHoverLink: !0,
            colorBy: "data",
            left: 80,
            top: 60,
            right: 80,
            bottom: 60,
            minSize: "0%",
            maxSize: "100%",
            sort: "descending",
            orient: "vertical",
            gap: 0,
            funnelAlign: "center",
            label: {
                show: !0,
                position: "outer"
            },
            labelLine: {
                show: !0,
                length: 20,
                lineStyle: {
                    width: 1
                }
            },
            itemStyle: {
                borderColor: "#fff",
                borderWidth: 1
            },
            emphasis: {
                label: {
                    show: !0
                }
            },
            select: {
                itemStyle: {
                    borderColor: "#212121"
                }
            }
        }, e
    }(Lt),
    L2 = w6;

function T6(r, e) {
    return Ut(r.getBoxLayoutParams(), {
        width: e.getWidth(),
        height: e.getHeight()
    })
}

function C6(r, e) {
    for (var t = r.mapDimension("value"), i = r.mapArray(t, function(l) {
            return l
        }), a = [], n = e === "ascending", o = 0, s = r.count(); o < s; o++) a[o] = o;
    return X(e) ? a.sort(e) : e !== "none" && a.sort(function(l, u) {
        return n ? i[l] - i[u] : i[u] - i[l]
    }), a
}

function A6(r) {
    var e = r.hostModel,
        t = e.get("orient");
    r.each(function(i) {
        var a = r.getItemModel(i),
            n = a.getModel("label"),
            o = n.get("position"),
            s = a.getModel("labelLine"),
            l = r.getItemLayout(i),
            u = l.points,
            f = o === "inner" || o === "inside" || o === "center" || o === "insideLeft" || o === "insideRight",
            p, c, h, v;
        if (f) o === "insideLeft" ? (c = (u[0][0] + u[3][0]) / 2 + 5, h = (u[0][1] + u[3][1]) / 2, p = "left") : o === "insideRight" ? (c = (u[1][0] + u[2][0]) / 2 - 5, h = (u[1][1] + u[2][1]) / 2, p = "right") : (c = (u[0][0] + u[1][0] + u[2][0] + u[3][0]) / 4, h = (u[0][1] + u[1][1] + u[2][1] + u[3][1]) / 4, p = "center"), v = [
            [c, h],
            [c, h]
        ];
        else {
            var d = void 0,
                m = void 0,
                g = void 0,
                y = void 0,
                x = s.get("length");
            o === "left" ? (d = (u[3][0] + u[0][0]) / 2, m = (u[3][1] + u[0][1]) / 2, g = d - x, c = g - 5, p = "right") : o === "right" ? (d = (u[1][0] + u[2][0]) / 2, m = (u[1][1] + u[2][1]) / 2, g = d + x, c = g + 5, p = "left") : o === "top" ? (d = (u[3][0] + u[0][0]) / 2, m = (u[3][1] + u[0][1]) / 2, y = m - x, h = y - 5, p = "center") : o === "bottom" ? (d = (u[1][0] + u[2][0]) / 2, m = (u[1][1] + u[2][1]) / 2, y = m + x, h = y + 5, p = "center") : o === "rightTop" ? (d = t === "horizontal" ? u[3][0] : u[1][0], m = t === "horizontal" ? u[3][1] : u[1][1], t === "horizontal" ? (y = m - x, h = y - 5, p = "center") : (g = d + x, c = g + 5, p = "top")) : o === "rightBottom" ? (d = u[2][0], m = u[2][1], t === "horizontal" ? (y = m + x, h = y + 5, p = "center") : (g = d + x, c = g + 5, p = "bottom")) : o === "leftTop" ? (d = u[0][0], m = t === "horizontal" ? u[0][1] : u[1][1], t === "horizontal" ? (y = m - x, h = y - 5, p = "center") : (g = d - x, c = g - 5, p = "right")) : o === "leftBottom" ? (d = t === "horizontal" ? u[1][0] : u[3][0], m = t === "horizontal" ? u[1][1] : u[2][1], t === "horizontal" ? (y = m + x, h = y + 5, p = "center") : (g = d - x, c = g - 5, p = "right")) : (d = (u[1][0] + u[2][0]) / 2, m = (u[1][1] + u[2][1]) / 2, t === "horizontal" ? (y = m + x, h = y + 5, p = "center") : (g = d + x, c = g + 5, p = "left")), t === "horizontal" ? (g = d, c = g) : (y = m, h = y), v = [
                [d, m],
                [g, y]
            ]
        }
        l.label = {
            linePoints: v,
            x: c,
            y: h,
            verticalAlign: "middle",
            textAlign: p,
            inside: f
        }
    })
}

function cS(r, e) {
    r.eachSeriesByType("funnel", function(t) {
        var i = t.getData(),
            a = i.mapDimension("value"),
            n = t.get("sort"),
            o = T6(t, e),
            s = t.get("orient"),
            l = o.width,
            u = o.height,
            f = C6(i, n),
            p = o.x,
            c = o.y,
            h = s === "horizontal" ? [W(t.get("minSize"), u), W(t.get("maxSize"), u)] : [W(t.get("minSize"), l), W(t.get("maxSize"), l)],
            v = i.getDataExtent(a),
            d = t.get("min"),
            m = t.get("max");
        d == null && (d = Math.min(v[0], 0)), m == null && (m = v[1]);
        var g = t.get("funnelAlign"),
            y = t.get("gap"),
            x = s === "horizontal" ? l : u,
            _ = (x - y * (i.count() - 1)) / i.count(),
            S = function(P, R) {
                if (s === "horizontal") {
                    var N = i.get(a, P) || 0,
                        V = Rt(N, [d, m], h, !0),
                        U = void 0;
                    switch (g) {
                        case "top":
                            U = c;
                            break;
                        case "center":
                            U = c + (u - V) / 2;
                            break;
                        case "bottom":
                            U = c + (u - V);
                            break
                    }
                    return [
                        [R, U],
                        [R, U + V]
                    ]
                }
                var B = i.get(a, P) || 0,
                    Z = Rt(B, [d, m], h, !0),
                    K;
                switch (g) {
                    case "left":
                        K = p;
                        break;
                    case "center":
                        K = p + (l - Z) / 2;
                        break;
                    case "right":
                        K = p + l - Z;
                        break
                }
                return [
                    [K, R],
                    [K + Z, R]
                ]
            };
        n === "ascending" && (_ = -_, y = -y, s === "horizontal" ? p += l : c += u, f = f.reverse());
        for (var b = 0; b < f.length; b++) {
            var T = f[b],
                C = f[b + 1],
                A = i.getItemModel(T);
            if (s === "horizontal") {
                var D = A.get(["itemStyle", "width"]);
                D == null ? D = _ : (D = W(D, l), n === "ascending" && (D = -D));
                var M = S(T, p),
                    I = S(C, p + D);
                p += D + y, i.setItemLayout(T, {
                    points: M.concat(I.slice().reverse())
                })
            } else {
                var E = A.get(["itemStyle", "height"]);
                E == null ? E = _ : (E = W(E, u), n === "ascending" && (E = -E));
                var M = S(T, c),
                    I = S(C, c + E);
                c += E + y, i.setItemLayout(T, {
                    points: M.concat(I.slice().reverse())
                })
            }
        }
        A6(i)
    })
}

function hS(r) {
    r.registerChartView(M2), r.registerSeriesModel(L2), r.registerLayout(cS), r.registerProcessor(ra("funnel"))
}
var D6 = .3,
    M6 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t._dataGroup = new J, t._initialized = !1, t
        }
        return e.prototype.init = function() {
            this.group.add(this._dataGroup)
        }, e.prototype.render = function(t, i, a, n) {
            this._progressiveEls = null;
            var o = this._dataGroup,
                s = t.getData(),
                l = this._data,
                u = t.coordinateSystem,
                f = u.dimensions,
                p = E2(t);
            s.diff(l).add(c).update(h).remove(v).execute();

            function c(m) {
                var g = I2(s, o, m, f, u);
                vS(g, s, m, p)
            }

            function h(m, g) {
                var y = l.getItemGraphicEl(g),
                    x = P2(s, m, f, u);
                s.setItemGraphicEl(m, y), xt(y, {
                    shape: {
                        points: x
                    }
                }, t, m), Ae(y), vS(y, s, m, p)
            }

            function v(m) {
                var g = l.getItemGraphicEl(m);
                o.remove(g)
            }
            if (!this._initialized) {
                this._initialized = !0;
                var d = L6(u, t, function() {
                    setTimeout(function() {
                        o.removeClipPath()
                    })
                });
                o.setClipPath(d)
            }
            this._data = s
        }, e.prototype.incrementalPrepareRender = function(t, i, a) {
            this._initialized = !0, this._data = null, this._dataGroup.removeAll()
        }, e.prototype.incrementalRender = function(t, i, a) {
            for (var n = i.getData(), o = i.coordinateSystem, s = o.dimensions, l = E2(i), u = this._progressiveEls = [], f = t.start; f < t.end; f++) {
                var p = I2(n, this._dataGroup, f, s, o);
                p.incremental = !0, vS(p, n, f, l), u.push(p)
            }
        }, e.prototype.remove = function() {
            this._dataGroup && this._dataGroup.removeAll(), this._data = null
        }, e.type = "parallel", e
    }(At);

function L6(r, e, t) {
    var i = r.model,
        a = r.getRect(),
        n = new ht({
            shape: {
                x: a.x,
                y: a.y,
                width: a.width,
                height: a.height
            }
        }),
        o = i.get("layout") === "horizontal" ? "width" : "height";
    return n.setShape(o, 0), Ot(n, {
        shape: {
            width: a.width,
            height: a.height
        }
    }, e, t), n
}

function P2(r, e, t, i) {
    for (var a = [], n = 0; n < t.length; n++) {
        var o = t[n],
            s = r.get(r.mapDimension(o), e);
        I6(s, i.getAxis(o).type) || a.push(i.dataToPoint(s, o))
    }
    return a
}

function I2(r, e, t, i, a) {
    var n = P2(r, t, i, a),
        o = new ae({
            shape: {
                points: n
            },
            z2: 10
        });
    return e.add(o), r.setItemGraphicEl(t, o), o
}

function E2(r) {
    var e = r.get("smooth", !0);
    return e === !0 && (e = D6), e = Er(e), Na(e) && (e = 0), {
        smooth: e
    }
}

function vS(r, e, t, i) {
    r.useStyle(e.getItemVisual(t, "style")), r.style.fill = null, r.setShape("smooth", i.smooth);
    var a = e.getItemModel(t),
        n = a.getModel("emphasis");
    te(r, a, "lineStyle"), Nt(r, n.get("focus"), n.get("blurScope"), n.get("disabled"))
}

function I6(r, e) {
    return e === "category" ? r == null : r == null || isNaN(r)
}
var R2 = M6;
var E6 = function(r) {
    L(e, r);

    function e() {
        var t = r !== null && r.apply(this, arguments) || this;
        return t.type = e.type, t.visualStyleAccessPath = "lineStyle", t.visualDrawType = "stroke", t
    }
    return e.prototype.getInitialData = function(t, i) {
        return ze(null, this, {
            useEncodeDefaulter: H(P6, null, this)
        })
    }, e.prototype.getRawIndicesByActiveState = function(t) {
        var i = this.coordinateSystem,
            a = this.getData(),
            n = [];
        return i.eachActiveState(a, function(o, s) {
            t === o && n.push(a.getRawIndex(s))
        }), n
    }, e.type = "series.parallel", e.dependencies = ["parallel"], e.defaultOption = {
        z: 2,
        coordinateSystem: "parallel",
        parallelIndex: 0,
        label: {
            show: !1
        },
        inactiveOpacity: .05,
        activeOpacity: 1,
        lineStyle: {
            width: 1,
            opacity: .45,
            type: "solid"
        },
        emphasis: {
            label: {
                show: !1
            }
        },
        progressive: 500,
        smooth: !1,
        animationEasing: "linear"
    }, e
}(Lt);

function P6(r) {
    var e = r.ecModel.getComponent("parallel", r.get("parallelIndex"));
    if (e) {
        var t = {};
        return w(e.dimensions, function(i) {
            var a = R6(i);
            t[i] = a
        }), t
    }
}

function R6(r) {
    return +r.replace("dim", "")
}
var N2 = E6;
var N6 = ["lineStyle", "opacity"],
    O6 = {
        seriesType: "parallel",
        reset: function(r, e) {
            var t = r.coordinateSystem,
                i = {
                    normal: r.get(["lineStyle", "opacity"]),
                    active: r.get("activeOpacity"),
                    inactive: r.get("inactiveOpacity")
                };
            return {
                progress: function(a, n) {
                    t.eachActiveState(n, function(o, s) {
                        var l = i[o];
                        if (o === "normal" && n.hasItemOption) {
                            var u = n.getItemModel(s).get(N6, !0);
                            u != null && (l = u)
                        }
                        var f = n.ensureUniqueItemVisual(s, "style");
                        f.opacity = l
                    }, a.start, a.end)
                }
            }
        }
    },
    O2 = O6;

function dS(r) {
    z6(r), k6(r)
}

function z6(r) {
    if (!r.parallel) {
        var e = !1;
        w(r.series, function(t) {
            t && t.type === "parallel" && (e = !0)
        }), e && (r.parallel = [{}])
    }
}

function k6(r) {
    var e = Pt(r.parallelAxis);
    w(e, function(t) {
        if (j(t)) {
            var i = t.parallelIndex || 0,
                a = Pt(r.parallel)[i];
            a && a.parallelAxisDefault && nt(t, a.parallelAxisDefault, !1)
        }
    })
}
var U6 = 5,
    V6 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.render = function(t, i, a) {
            this._model = t, this._api = a, this._handlers || (this._handlers = {}, w(B6, function(n, o) {
                a.getZr().on(o, this._handlers[o] = H(n, this))
            }, this)), Ci(this, "_throttledDispatchExpand", t.get("axisExpandRate"), "fixRate")
        }, e.prototype.dispose = function(t, i) {
            rn(this, "_throttledDispatchExpand"), w(this._handlers, function(a, n) {
                i.getZr().off(n, a)
            }), this._handlers = null
        }, e.prototype._throttledDispatchExpand = function(t) {
            this._dispatchExpand(t)
        }, e.prototype._dispatchExpand = function(t) {
            t && this._api.dispatchAction(O({
                type: "parallelAxisExpand"
            }, t))
        }, e.type = "parallel", e
    }(It),
    B6 = {
        mousedown: function(r) {
            mS(this, "click") && (this._mouseDownPoint = [r.offsetX, r.offsetY])
        },
        mouseup: function(r) {
            var e = this._mouseDownPoint;
            if (mS(this, "click") && e) {
                var t = [r.offsetX, r.offsetY],
                    i = Math.pow(e[0] - t[0], 2) + Math.pow(e[1] - t[1], 2);
                if (i > U6) return;
                var a = this._model.coordinateSystem.getSlidedAxisExpandWindow([r.offsetX, r.offsetY]);
                a.behavior !== "none" && this._dispatchExpand({
                    axisExpandWindow: a.axisExpandWindow
                })
            }
            this._mouseDownPoint = null
        },
        mousemove: function(r) {
            if (!(this._mouseDownPoint || !mS(this, "mousemove"))) {
                var e = this._model,
                    t = e.coordinateSystem.getSlidedAxisExpandWindow([r.offsetX, r.offsetY]),
                    i = t.behavior;
                i === "jump" && this._throttledDispatchExpand.debounceNextCall(e.get("axisExpandDebounce")), this._throttledDispatchExpand(i === "none" ? null : {
                    axisExpandWindow: t.axisExpandWindow,
                    animation: i === "jump" ? null : {
                        duration: 0
                    }
                })
            }
        }
    };

function mS(r, e) {
    var t = r._model;
    return t.get("axisExpandable") && t.get("axisExpandTriggerOn") === e
}
var z2 = V6;
var F6 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.init = function() {
            r.prototype.init.apply(this, arguments), this.mergeOption({})
        }, e.prototype.mergeOption = function(t) {
            var i = this.option;
            t && nt(i, t, !0), this._initDimensions()
        }, e.prototype.contains = function(t, i) {
            var a = t.get("parallelIndex");
            return a != null && i.getComponent("parallel", a) === this
        }, e.prototype.setAxisExpand = function(t) {
            w(["axisExpandable", "axisExpandCenter", "axisExpandCount", "axisExpandWidth", "axisExpandWindow"], function(i) {
                t.hasOwnProperty(i) && (this.option[i] = t[i])
            }, this)
        }, e.prototype._initDimensions = function() {
            var t = this.dimensions = [],
                i = this.parallelAxisIndex = [],
                a = wt(this.ecModel.queryComponents({
                    mainType: "parallelAxis"
                }), function(n) {
                    return (n.get("parallelIndex") || 0) === this.componentIndex
                }, this);
            w(a, function(n) {
                t.push("dim" + n.get("dim")), i.push(n.componentIndex)
            })
        }, e.type = "parallel", e.dependencies = ["parallelAxis"], e.layoutMode = "box", e.defaultOption = {
            z: 0,
            left: 80,
            top: 60,
            right: 80,
            bottom: 60,
            layout: "horizontal",
            axisExpandable: !1,
            axisExpandCenter: null,
            axisExpandCount: 0,
            axisExpandWidth: 50,
            axisExpandRate: 17,
            axisExpandDebounce: 50,
            axisExpandSlideTriggerArea: [-.15, .05, .4],
            axisExpandTriggerOn: "click",
            parallelAxisDefault: null
        }, e
    }(yt),
    k2 = F6;
var G6 = function(r) {
        L(e, r);

        function e(t, i, a, n, o) {
            var s = r.call(this, t, i, a) || this;
            return s.type = n || "value", s.axisIndex = o, s
        }
        return e.prototype.isHorizontal = function() {
            return this.coordinateSystem.getModel().get("layout") !== "horizontal"
        }, e
    }(Fe),
    U2 = G6;

function Yr(r, e, t, i, a, n) {
    r = r || 0;
    var o = t[1] - t[0];
    if (a != null && (a = au(a, [0, o])), n != null && (n = Math.max(n, a ? ? 0)), i === "all") {
        var s = Math.abs(e[1] - e[0]);
        s = au(s, [0, o]), a = n = au(s, [a, n]), i = 0
    }
    e[0] = au(e[0], t), e[1] = au(e[1], t);
    var l = gS(e, i);
    e[i] += r;
    var u = a || 0,
        f = t.slice();
    l.sign < 0 ? f[0] += u : f[1] -= u, e[i] = au(e[i], f);
    var p;
    return p = gS(e, i), a != null && (p.sign !== l.sign || p.span < a) && (e[1 - i] = e[i] + l.sign * a), p = gS(e, i), n != null && p.span > n && (e[1 - i] = e[i] + p.sign * n), e
}

function gS(r, e) {
    var t = r[e] - r[1 - e];
    return {
        span: Math.abs(t),
        sign: t > 0 ? -1 : t < 0 ? 1 : e ? -1 : 1
    }
}

function au(r, e) {
    return Math.min(e[1] != null ? e[1] : 1 / 0, Math.max(e[0] != null ? e[0] : -1 / 0, r))
}
var yS = w,
    F2 = Math.min,
    G2 = Math.max,
    V2 = Math.floor,
    H6 = Math.ceil,
    B2 = Gt,
    W6 = Math.PI,
    Y6 = function() {
        function r(e, t, i) {
            this.type = "parallel", this._axesMap = Y(), this._axesLayout = {}, this.dimensions = e.dimensions, this._model = e, this._init(e, t, i)
        }
        return r.prototype._init = function(e, t, i) {
            var a = e.dimensions,
                n = e.parallelAxisIndex;
            yS(a, function(o, s) {
                var l = n[s],
                    u = t.getComponent("parallelAxis", l),
                    f = this._axesMap.set(o, new U2(o, xa(u), [0, 0], u.get("type"), l)),
                    p = f.type === "category";
                f.onBand = p && u.get("boundaryGap"), f.inverse = u.get("inverse"), u.axis = f, f.model = u, f.coordinateSystem = u.coordinateSystem = this
            }, this)
        }, r.prototype.update = function(e, t) {
            this._updateAxesFromSeries(this._model, e)
        }, r.prototype.containPoint = function(e) {
            var t = this._makeLayoutInfo(),
                i = t.axisBase,
                a = t.layoutBase,
                n = t.pixelDimIndex,
                o = e[1 - n],
                s = e[n];
            return o >= i && o <= i + t.axisLength && s >= a && s <= a + t.layoutLength
        }, r.prototype.getModel = function() {
            return this._model
        }, r.prototype._updateAxesFromSeries = function(e, t) {
            t.eachSeries(function(i) {
                if (e.contains(i, t)) {
                    var a = i.getData();
                    yS(this.dimensions, function(n) {
                        var o = this._axesMap.get(n);
                        o.scale.unionExtentFromData(a, a.mapDimension(n)), Li(o.scale, o.model)
                    }, this)
                }
            }, this)
        }, r.prototype.resize = function(e, t) {
            this._rect = Ut(e.getBoxLayoutParams(), {
                width: t.getWidth(),
                height: t.getHeight()
            }), this._layoutAxes()
        }, r.prototype.getRect = function() {
            return this._rect
        }, r.prototype._makeLayoutInfo = function() {
            var e = this._model,
                t = this._rect,
                i = ["x", "y"],
                a = ["width", "height"],
                n = e.get("layout"),
                o = n === "horizontal" ? 0 : 1,
                s = t[a[o]],
                l = [0, s],
                u = this.dimensions.length,
                f = Td(e.get("axisExpandWidth"), l),
                p = Td(e.get("axisExpandCount") || 0, [0, u]),
                c = e.get("axisExpandable") && u > 3 && u > p && p > 1 && f > 0 && s > 0,
                h = e.get("axisExpandWindow"),
                v;
            if (h) v = Td(h[1] - h[0], l), h[1] = h[0] + v;
            else {
                v = Td(f * (p - 1), l);
                var d = e.get("axisExpandCenter") || V2(u / 2);
                h = [f * d - v / 2], h[1] = h[0] + v
            }
            var m = (s - v) / (u - p);
            m < 3 && (m = 0);
            var g = [V2(B2(h[0] / f, 1)) + 1, H6(B2(h[1] / f, 1)) - 1],
                y = m / f * h[0];
            return {
                layout: n,
                pixelDimIndex: o,
                layoutBase: t[i[o]],
                layoutLength: s,
                axisBase: t[i[1 - o]],
                axisLength: t[a[1 - o]],
                axisExpandable: c,
                axisExpandWidth: f,
                axisCollapseWidth: m,
                axisExpandWindow: h,
                axisCount: u,
                winInnerIndices: g,
                axisExpandWindow0Pos: y
            }
        }, r.prototype._layoutAxes = function() {
            var e = this._rect,
                t = this._axesMap,
                i = this.dimensions,
                a = this._makeLayoutInfo(),
                n = a.layout;
            t.each(function(o) {
                var s = [0, a.axisLength],
                    l = o.inverse ? 1 : 0;
                o.setExtent(s[l], s[1 - l])
            }), yS(i, function(o, s) {
                var l = (a.axisExpandable ? X6 : Z6)(s, a),
                    u = {
                        horizontal: {
                            x: l.position,
                            y: a.axisLength
                        },
                        vertical: {
                            x: 0,
                            y: l.position
                        }
                    },
                    f = {
                        horizontal: W6 / 2,
                        vertical: 0
                    },
                    p = [u[n].x + e.x, u[n].y + e.y],
                    c = f[n],
                    h = me();
                cr(h, h, c), We(h, h, p), this._axesLayout[o] = {
                    position: p,
                    rotation: c,
                    transform: h,
                    axisNameAvailableWidth: l.axisNameAvailableWidth,
                    axisLabelShow: l.axisLabelShow,
                    nameTruncateMaxWidth: l.nameTruncateMaxWidth,
                    tickDirection: 1,
                    labelDirection: 1
                }
            }, this)
        }, r.prototype.getAxis = function(e) {
            return this._axesMap.get(e)
        }, r.prototype.dataToPoint = function(e, t) {
            return this.axisCoordToPoint(this._axesMap.get(t).dataToCoord(e), t)
        }, r.prototype.eachActiveState = function(e, t, i, a) {
            i == null && (i = 0), a == null && (a = e.count());
            var n = this._axesMap,
                o = this.dimensions,
                s = [],
                l = [];
            w(o, function(m) {
                s.push(e.mapDimension(m)), l.push(n.get(m).model)
            });
            for (var u = this.hasAxisBrushed(), f = i; f < a; f++) {
                var p = void 0;
                if (!u) p = "normal";
                else {
                    p = "active";
                    for (var c = e.getValues(s, f), h = 0, v = o.length; h < v; h++) {
                        var d = l[h].getActiveState(c[h]);
                        if (d === "inactive") {
                            p = "inactive";
                            break
                        }
                    }
                }
                t(p, f)
            }
        }, r.prototype.hasAxisBrushed = function() {
            for (var e = this.dimensions, t = this._axesMap, i = !1, a = 0, n = e.length; a < n; a++) t.get(e[a]).model.getActiveState() !== "normal" && (i = !0);
            return i
        }, r.prototype.axisCoordToPoint = function(e, t) {
            var i = this._axesLayout[t];
            return Je([e, 0], i.transform)
        }, r.prototype.getAxisLayout = function(e) {
            return Q(this._axesLayout[e])
        }, r.prototype.getSlidedAxisExpandWindow = function(e) {
            var t = this._makeLayoutInfo(),
                i = t.pixelDimIndex,
                a = t.axisExpandWindow.slice(),
                n = a[1] - a[0],
                o = [0, t.axisExpandWidth * (t.axisCount - 1)];
            if (!this.containPoint(e)) return {
                behavior: "none",
                axisExpandWindow: a
            };
            var s = e[i] - t.layoutBase - t.axisExpandWindow0Pos,
                l, u = "slide",
                f = t.axisCollapseWidth,
                p = this._model.get("axisExpandSlideTriggerArea"),
                c = p[0] != null;
            if (f) c && f && s < n * p[0] ? (u = "jump", l = s - n * p[2]) : c && f && s > n * (1 - p[0]) ? (u = "jump", l = s - n * (1 - p[2])) : (l = s - n * p[1]) >= 0 && (l = s - n * (1 - p[1])) <= 0 && (l = 0), l *= t.axisExpandWidth / f, l ? Yr(l, a, o, "all") : u = "none";
            else {
                var h = a[1] - a[0],
                    v = o[1] * s / h;
                a = [G2(0, v - h / 2)], a[1] = F2(o[1], a[0] + h), a[0] = a[1] - h
            }
            return {
                axisExpandWindow: a,
                behavior: u
            }
        }, r
    }();

function Td(r, e) {
    return F2(G2(r, e[0]), e[1])
}

function Z6(r, e) {
    var t = e.layoutLength / (e.axisCount - 1);
    return {
        position: t * r,
        axisNameAvailableWidth: t,
        axisLabelShow: !0
    }
}

function X6(r, e) {
    var t = e.layoutLength,
        i = e.axisExpandWidth,
        a = e.axisCount,
        n = e.axisCollapseWidth,
        o = e.winInnerIndices,
        s, l = n,
        u = !1,
        f;
    return r < o[0] ? (s = r * n, f = n) : r <= o[1] ? (s = e.axisExpandWindow0Pos + r * i - e.axisExpandWindow[0], l = i, u = !0) : (s = t - (a - 1 - r) * n, f = n), {
        position: s,
        axisNameAvailableWidth: l,
        axisLabelShow: u,
        nameTruncateMaxWidth: f
    }
}
var H2 = Y6;

function q6(r, e) {
    var t = [];
    return r.eachComponent("parallel", function(i, a) {
        var n = new H2(i, r, e);
        n.name = "parallel_" + a, n.resize(i, e), i.coordinateSystem = n, n.model = i, t.push(n)
    }), r.eachSeries(function(i) {
        if (i.get("coordinateSystem") === "parallel") {
            var a = i.getReferringComponents("parallel", Ht).models[0];
            i.coordinateSystem = a.coordinateSystem
        }
    }), t
}
var K6 = {
        create: q6
    },
    W2 = K6;
var Y2 = function(r) {
    L(e, r);

    function e() {
        var t = r !== null && r.apply(this, arguments) || this;
        return t.type = e.type, t.activeIntervals = [], t
    }
    return e.prototype.getAreaSelectStyle = function() {
        return Nr([
            ["fill", "color"],
            ["lineWidth", "borderWidth"],
            ["stroke", "borderColor"],
            ["width", "width"],
            ["opacity", "opacity"]
        ])(this.getModel("areaSelectStyle"))
    }, e.prototype.setActiveIntervals = function(t) {
        var i = this.activeIntervals = Q(t);
        if (i)
            for (var a = i.length - 1; a >= 0; a--) _e(i[a])
    }, e.prototype.getActiveState = function(t) {
        var i = this.activeIntervals;
        if (!i.length) return "normal";
        if (t == null || isNaN(+t)) return "inactive";
        if (i.length === 1) {
            var a = i[0];
            if (a[0] <= t && t <= a[1]) return "active"
        } else
            for (var n = 0, o = i.length; n < o; n++)
                if (i[n][0] <= t && t <= i[n][1]) return "active";
        return "inactive"
    }, e
}(yt);
Bt(Y2, Ii);
var xS = Y2;
var Es = !0,
    Lp = Math.min,
    nu = Math.max,
    j6 = Math.pow,
    J6 = 1e4,
    Q6 = 6,
    $6 = 6,
    Z2 = "globalPan",
    t8 = {
        w: [0, 0],
        e: [0, 1],
        n: [1, 0],
        s: [1, 1]
    },
    e8 = {
        w: "ew",
        e: "ew",
        n: "ns",
        s: "ns",
        ne: "nesw",
        sw: "nesw",
        nw: "nwse",
        se: "nwse"
    },
    X2 = {
        brushStyle: {
            lineWidth: 2,
            stroke: "rgba(210,219,238,0.3)",
            fill: "#D2DBEE"
        },
        transformable: !0,
        brushMode: "single",
        removeOnClick: !1
    },
    r8 = 0,
    i8 = function(r) {
        L(e, r);

        function e(t) {
            var i = r.call(this) || this;
            return i._track = [], i._covers = [], i._handlers = {}, i._zr = t, i.group = new J, i._uid = "brushController_" + r8++, w(f8, function(a, n) {
                this._handlers[n] = H(a, this)
            }, i), i
        }
        return e.prototype.enableBrush = function(t) {
            return this._brushType && this._doDisableBrush(), t.brushType && this._doEnableBrush(t), this
        }, e.prototype._doEnableBrush = function(t) {
            var i = this._zr;
            this._enableGlobalPan || zE(i, Z2, this._uid), w(this._handlers, function(a, n) {
                i.on(n, a)
            }), this._brushType = t.brushType, this._brushOption = nt(Q(X2), t, !0)
        }, e.prototype._doDisableBrush = function() {
            var t = this._zr;
            kE(t, Z2, this._uid), w(this._handlers, function(i, a) {
                t.off(a, i)
            }), this._brushType = this._brushOption = null
        }, e.prototype.setPanels = function(t) {
            if (t && t.length) {
                var i = this._panels = {};
                w(t, function(a) {
                    i[a.panelId] = Q(a)
                })
            } else this._panels = null;
            return this
        }, e.prototype.mount = function(t) {
            t = t || {}, this._enableGlobalPan = t.enableGlobalPan;
            var i = this.group;
            return this._zr.add(i), i.attr({
                x: t.x || 0,
                y: t.y || 0,
                rotation: t.rotation || 0,
                scaleX: t.scaleX || 1,
                scaleY: t.scaleY || 1
            }), this._transform = i.getLocalTransform(), this
        }, e.prototype.updateCovers = function(t) {
            t = k(t, function(c) {
                return nt(Q(X2), c, !0)
            });
            var i = "\0-brush-index-",
                a = this._covers,
                n = this._covers = [],
                o = this,
                s = this._creatingCover;
            return new tr(a, t, u, l).add(f).update(f).remove(p).execute(), this;

            function l(c, h) {
                return (c.id != null ? c.id : i + h) + "-" + c.brushType
            }

            function u(c, h) {
                return l(c.__brushOption, h)
            }

            function f(c, h) {
                var v = t[c];
                if (h != null && a[h] === s) n[c] = a[h];
                else {
                    var d = n[c] = h != null ? (a[h].__brushOption = v, a[h]) : $2(o, Q2(o, v));
                    CS(o, d)
                }
            }

            function p(c) {
                a[c] !== s && o.group.remove(a[c])
            }
        }, e.prototype.unmount = function() {
            return this.enableBrush(!1), _S(this), this._zr.remove(this.group), this
        }, e.prototype.dispose = function() {
            this.unmount(), this.off()
        }, e
    }(Ce);

function Q2(r, e) {
    var t = Cd[e.brushType].createCover(r, e);
    return t.__brushOption = e, eR(t, e), r.group.add(t), t
}

function $2(r, e) {
    var t = AS(e);
    return t.endCreating && (t.endCreating(r, e), eR(e, e.__brushOption)), e
}

function tR(r, e) {
    var t = e.__brushOption;
    AS(e).updateCoverShape(r, e, t.range, t)
}

function eR(r, e) {
    var t = e.z;
    t == null && (t = J6), r.traverse(function(i) {
        i.z = t, i.z2 = t
    })
}

function CS(r, e) {
    AS(e).updateCommon(r, e), tR(r, e)
}

function AS(r) {
    return Cd[r.__brushOption.brushType]
}

function DS(r, e, t) {
    var i = r._panels;
    if (!i) return Es;
    var a, n = r._transform;
    return w(i, function(o) {
        o.isTargetByCursor(e, t, n) && (a = o)
    }), a
}

function rR(r, e) {
    var t = r._panels;
    if (!t) return Es;
    var i = e.__brushOption.panelId;
    return i != null ? t[i] : Es
}

function _S(r) {
    var e = r._covers,
        t = e.length;
    return w(e, function(i) {
        r.group.remove(i)
    }, r), e.length = 0, !!t
}

function Ps(r, e) {
    var t = k(r._covers, function(i) {
        var a = i.__brushOption,
            n = Q(a.range);
        return {
            brushType: a.brushType,
            panelId: a.panelId,
            range: n
        }
    });
    r.trigger("brush", {
        areas: t,
        isEnd: !!e.isEnd,
        removeOnClick: !!e.removeOnClick
    })
}

function a8(r) {
    var e = r._track;
    if (!e.length) return !1;
    var t = e[e.length - 1],
        i = e[0],
        a = t[0] - i[0],
        n = t[1] - i[1],
        o = j6(a * a + n * n, .5);
    return o > Q6
}

function iR(r) {
    var e = r.length - 1;
    return e < 0 && (e = 0), [r[0], r[e]]
}

function aR(r, e, t, i) {
    var a = new J;
    return a.add(new ht({
        name: "main",
        style: MS(t),
        silent: !0,
        draggable: !0,
        cursor: "move",
        drift: rt(q2, r, e, a, ["n", "s", "w", "e"]),
        ondragend: rt(Ps, e, {
            isEnd: !0
        })
    })), w(i, function(n) {
        a.add(new ht({
            name: n.join(""),
            style: {
                opacity: 0
            },
            draggable: !0,
            silent: !0,
            invisible: !0,
            drift: rt(q2, r, e, a, n),
            ondragend: rt(Ps, e, {
                isEnd: !0
            })
        }))
    }), a
}

function nR(r, e, t, i) {
    var a = i.brushStyle.lineWidth || 0,
        n = nu(a, $6),
        o = t[0][0],
        s = t[1][0],
        l = o - a / 2,
        u = s - a / 2,
        f = t[0][1],
        p = t[1][1],
        c = f - n + a / 2,
        h = p - n + a / 2,
        v = f - o,
        d = p - s,
        m = v + a,
        g = d + a;
    ln(r, e, "main", o, s, v, d), i.transformable && (ln(r, e, "w", l, u, n, g), ln(r, e, "e", c, u, n, g), ln(r, e, "n", l, u, m, n), ln(r, e, "s", l, h, m, n), ln(r, e, "nw", l, u, n, n), ln(r, e, "ne", c, u, n, n), ln(r, e, "sw", l, h, n, n), ln(r, e, "se", c, h, n, n))
}

function SS(r, e) {
    var t = e.__brushOption,
        i = t.transformable,
        a = e.childAt(0);
    a.useStyle(MS(t)), a.attr({
        silent: !i,
        cursor: i ? "move" : "default"
    }), w([
        ["w"],
        ["e"],
        ["n"],
        ["s"],
        ["s", "e"],
        ["s", "w"],
        ["n", "e"],
        ["n", "w"]
    ], function(n) {
        var o = e.childOfName(n.join("")),
            s = n.length === 1 ? bS(r, n[0]) : o8(r, n);
        o && o.attr({
            silent: !i,
            invisible: !i,
            cursor: i ? e8[s] + "-resize" : null
        })
    })
}

function ln(r, e, t, i, a, n, o) {
    var s = e.childOfName(t);
    s && s.setShape(l8(LS(r, e, [
        [i, a],
        [i + n, a + o]
    ])))
}

function MS(r) {
    return q({
        strokeNoScale: !0
    }, r.brushStyle)
}

function oR(r, e, t, i) {
    var a = [Lp(r, t), Lp(e, i)],
        n = [nu(r, t), nu(e, i)];
    return [
        [a[0], n[0]],
        [a[1], n[1]]
    ]
}

function n8(r) {
    return ti(r.group)
}

function bS(r, e) {
    var t = {
            w: "left",
            e: "right",
            n: "top",
            s: "bottom"
        },
        i = {
            left: "w",
            right: "e",
            top: "n",
            bottom: "s"
        },
        a = rs(t[e], n8(r));
    return i[a]
}

function o8(r, e) {
    var t = [bS(r, e[0]), bS(r, e[1])];
    return (t[0] === "e" || t[0] === "w") && t.reverse(), t.join("")
}

function q2(r, e, t, i, a, n) {
    var o = t.__brushOption,
        s = r.toRectRange(o.range),
        l = sR(e, a, n);
    w(i, function(u) {
        var f = t8[u];
        s[f[0]][f[1]] += l[f[0]]
    }), o.range = r.fromRectRange(oR(s[0][0], s[1][0], s[0][1], s[1][1])), CS(e, t), Ps(e, {
        isEnd: !1
    })
}

function s8(r, e, t, i) {
    var a = e.__brushOption.range,
        n = sR(r, t, i);
    w(a, function(o) {
        o[0] += n[0], o[1] += n[1]
    }), CS(r, e), Ps(r, {
        isEnd: !1
    })
}

function sR(r, e, t) {
    var i = r.group,
        a = i.transformCoordToLocal(e, t),
        n = i.transformCoordToLocal(0, 0);
    return [a[0] - n[0], a[1] - n[1]]
}

function LS(r, e, t) {
    var i = rR(r, e);
    return i && i !== Es ? i.clipPath(t, r._transform) : Q(t)
}

function l8(r) {
    var e = Lp(r[0][0], r[1][0]),
        t = Lp(r[0][1], r[1][1]),
        i = nu(r[0][0], r[1][0]),
        a = nu(r[0][1], r[1][1]);
    return {
        x: e,
        y: t,
        width: i - e,
        height: a - t
    }
}

function u8(r, e, t) {
    if (!(!r._brushType || p8(r, e.offsetX, e.offsetY))) {
        var i = r._zr,
            a = r._covers,
            n = DS(r, e, t);
        if (!r._dragging)
            for (var o = 0; o < a.length; o++) {
                var s = a[o].__brushOption;
                if (n && (n === Es || s.panelId === n.panelId) && Cd[s.brushType].contain(a[o], t[0], t[1])) return
            }
        n && i.setCursorStyle("crosshair")
    }
}

function wS(r) {
    var e = r.event;
    e.preventDefault && e.preventDefault()
}

function TS(r, e, t) {
    return r.childOfName("main").contain(e, t)
}

function lR(r, e, t, i) {
    var a = r._creatingCover,
        n = r._creatingPanel,
        o = r._brushOption,
        s;
    if (r._track.push(t.slice()), a8(r) || a) {
        if (n && !a) {
            o.brushMode === "single" && _S(r);
            var l = Q(o);
            l.brushType = K2(l.brushType, n), l.panelId = n === Es ? null : n.panelId, a = r._creatingCover = Q2(r, l), r._covers.push(a)
        }
        if (a) {
            var u = Cd[K2(r._brushType, n)],
                f = a.__brushOption;
            f.range = u.getCreatingRange(LS(r, a, r._track)), i && ($2(r, a), u.updateCommon(r, a)), tR(r, a), s = {
                isEnd: i
            }
        }
    } else i && o.brushMode === "single" && o.removeOnClick && DS(r, e, t) && _S(r) && (s = {
        isEnd: i,
        removeOnClick: !0
    });
    return s
}

function K2(r, e) {
    return r === "auto" ? e.defaultBrushType : r
}
var f8 = {
    mousedown: function(r) {
        if (this._dragging) j2(this, r);
        else if (!r.target || !r.target.draggable) {
            wS(r);
            var e = this.group.transformCoordToLocal(r.offsetX, r.offsetY);
            this._creatingCover = null;
            var t = this._creatingPanel = DS(this, r, e);
            t && (this._dragging = !0, this._track = [e.slice()])
        }
    },
    mousemove: function(r) {
        var e = r.offsetX,
            t = r.offsetY,
            i = this.group.transformCoordToLocal(e, t);
        if (u8(this, r, i), this._dragging) {
            wS(r);
            var a = lR(this, r, i, !1);
            a && Ps(this, a)
        }
    },
    mouseup: function(r) {
        j2(this, r)
    }
};

function j2(r, e) {
    if (r._dragging) {
        wS(e);
        var t = e.offsetX,
            i = e.offsetY,
            a = r.group.transformCoordToLocal(t, i),
            n = lR(r, e, a, !0);
        r._dragging = !1, r._track = [], r._creatingCover = null, n && Ps(r, n)
    }
}

function p8(r, e, t) {
    var i = r._zr;
    return e < 0 || e > i.getWidth() || t < 0 || t > i.getHeight()
}
var Cd = {
    lineX: J2(0),
    lineY: J2(1),
    rect: {
        createCover: function(r, e) {
            function t(i) {
                return i
            }
            return aR({
                toRectRange: t,
                fromRectRange: t
            }, r, e, [
                ["w"],
                ["e"],
                ["n"],
                ["s"],
                ["s", "e"],
                ["s", "w"],
                ["n", "e"],
                ["n", "w"]
            ])
        },
        getCreatingRange: function(r) {
            var e = iR(r);
            return oR(e[1][0], e[1][1], e[0][0], e[0][1])
        },
        updateCoverShape: function(r, e, t, i) {
            nR(r, e, t, i)
        },
        updateCommon: SS,
        contain: TS
    },
    polygon: {
        createCover: function(r, e) {
            var t = new J;
            return t.add(new ae({
                name: "main",
                style: MS(e),
                silent: !0
            })), t
        },
        getCreatingRange: function(r) {
            return r
        },
        endCreating: function(r, e) {
            e.remove(e.childAt(0)), e.add(new oe({
                name: "main",
                draggable: !0,
                drift: rt(s8, r, e),
                ondragend: rt(Ps, r, {
                    isEnd: !0
                })
            }))
        },
        updateCoverShape: function(r, e, t, i) {
            e.childAt(0).setShape({
                points: LS(r, e, t)
            })
        },
        updateCommon: SS,
        contain: TS
    }
};

function J2(r) {
    return {
        createCover: function(e, t) {
            return aR({
                toRectRange: function(i) {
                    var a = [i, [0, 100]];
                    return r && a.reverse(), a
                },
                fromRectRange: function(i) {
                    return i[r]
                }
            }, e, t, [
                [
                    ["w"],
                    ["e"]
                ],
                [
                    ["n"],
                    ["s"]
                ]
            ][r])
        },
        getCreatingRange: function(e) {
            var t = iR(e),
                i = Lp(t[0][r], t[1][r]),
                a = nu(t[0][r], t[1][r]);
            return [i, a]
        },
        updateCoverShape: function(e, t, i, a) {
            var n, o = rR(e, t);
            if (o !== Es && o.getLinearBrushOtherExtent) n = o.getLinearBrushOtherExtent(r);
            else {
                var s = e._zr;
                n = [0, [s.getWidth(), s.getHeight()][1 - r]]
            }
            var l = [i, n];
            r && l.reverse(), nR(e, t, l, a)
        },
        updateCommon: SS,
        contain: TS
    }
}
var ou = i8;

function Ad(r) {
    return r = IS(r),
        function(e) {
            return gf(e, r)
        }
}

function Dd(r, e) {
    return r = IS(r),
        function(t) {
            var i = e ? ? t,
                a = i ? r.width : r.height,
                n = i ? r.x : r.y;
            return [n, n + (a || 0)]
        }
}

function Md(r, e, t) {
    var i = IS(r);
    return function(a, n) {
        return i.contain(n[0], n[1]) && !Qn(a, e, t)
    }
}

function IS(r) {
    return it.create(r)
}
var c8 = ["axisLine", "axisTickLabel", "axisName"],
    h8 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.init = function(t, i) {
            r.prototype.init.apply(this, arguments), (this._brushController = new ou(i.getZr())).on("brush", H(this._onBrush, this))
        }, e.prototype.render = function(t, i, a, n) {
            if (!v8(t, i, n)) {
                this.axisModel = t, this.api = a, this.group.removeAll();
                var o = this._axisGroup;
                if (this._axisGroup = new J, this.group.add(this._axisGroup), !!t.get("show")) {
                    var s = m8(t, i),
                        l = s.coordinateSystem,
                        u = t.getAreaSelectStyle(),
                        f = u.width,
                        p = t.axis.dim,
                        c = l.getAxisLayout(p),
                        h = O({
                            strokeContainThreshold: f
                        }, c),
                        v = new er(t, h);
                    w(c8, v.add, v), this._axisGroup.add(v.getGroup()), this._refreshBrushController(h, u, t, s, f, a), ja(o, this._axisGroup, t)
                }
            }
        }, e.prototype._refreshBrushController = function(t, i, a, n, o, s) {
            var l = a.axis.getExtent(),
                u = l[1] - l[0],
                f = Math.min(30, Math.abs(u) * .1),
                p = it.create({
                    x: l[0],
                    y: -o / 2,
                    width: u,
                    height: o
                });
            p.x -= f, p.width += 2 * f, this._brushController.mount({
                enableGlobalPan: !0,
                rotation: t.rotation,
                x: t.position[0],
                y: t.position[1]
            }).setPanels([{
                panelId: "pl",
                clipPath: Ad(p),
                isTargetByCursor: Md(p, s, n),
                getLinearBrushOtherExtent: Dd(p, 0)
            }]).enableBrush({
                brushType: "lineX",
                brushStyle: i,
                removeOnClick: !0
            }).updateCovers(d8(a))
        }, e.prototype._onBrush = function(t) {
            var i = t.areas,
                a = this.axisModel,
                n = a.axis,
                o = k(i, function(s) {
                    return [n.coordToData(s.range[0], !0), n.coordToData(s.range[1], !0)]
                });
            (!a.option.realtime === t.isEnd || t.removeOnClick) && this.api.dispatchAction({
                type: "axisAreaSelect",
                parallelAxisId: a.id,
                intervals: o
            })
        }, e.prototype.dispose = function() {
            this._brushController.dispose()
        }, e.type = "parallelAxis", e
    }(It);

function v8(r, e, t) {
    return t && t.type === "axisAreaSelect" && e.findComponents({
        mainType: "parallelAxis",
        query: t
    })[0] === r
}

function d8(r) {
    var e = r.axis;
    return k(r.activeIntervals, function(t) {
        return {
            brushType: "lineX",
            panelId: "pl",
            range: [e.dataToCoord(t[0], !0), e.dataToCoord(t[1], !0)]
        }
    })
}

function m8(r, e) {
    return e.getComponent("parallel", r.get("parallelIndex"))
}
var fR = h8;
var g8 = {
    type: "axisAreaSelect",
    event: "axisAreaSelected"
};

function pR(r) {
    r.registerAction(g8, function(e, t) {
        t.eachComponent({
            mainType: "parallelAxis",
            query: e
        }, function(i) {
            i.axis.model.setActiveIntervals(e.intervals)
        })
    }), r.registerAction("parallelAxisExpand", function(e, t) {
        t.eachComponent({
            mainType: "parallel",
            query: e
        }, function(i) {
            i.setAxisExpand(e)
        })
    })
}
var y8 = {
    type: "value",
    areaSelectStyle: {
        width: 20,
        borderWidth: 1,
        borderColor: "rgba(160,197,232)",
        color: "rgba(160,197,232)",
        opacity: .3
    },
    realtime: !0,
    z: 10
};

function Ip(r) {
    r.registerComponentView(z2), r.registerComponentModel(k2), r.registerCoordinateSystem("parallel", W2), r.registerPreprocessor(dS), r.registerComponentModel(xS), r.registerComponentView(fR), ia(r, "parallel", xS, y8), pR(r)
}

function ES(r) {
    _t(Ip), r.registerChartView(R2), r.registerSeriesModel(N2), r.registerVisual(r.PRIORITY.VISUAL.BRUSH, O2)
}
var x8 = function() {
        function r() {
            this.x1 = 0, this.y1 = 0, this.x2 = 0, this.y2 = 0, this.cpx1 = 0, this.cpy1 = 0, this.cpx2 = 0, this.cpy2 = 0, this.extent = 0
        }
        return r
    }(),
    _8 = function(r) {
        L(e, r);

        function e(t) {
            return r.call(this, t) || this
        }
        return e.prototype.getDefaultShape = function() {
            return new x8
        }, e.prototype.buildPath = function(t, i) {
            var a = i.extent;
            t.moveTo(i.x1, i.y1), t.bezierCurveTo(i.cpx1, i.cpy1, i.cpx2, i.cpy2, i.x2, i.y2), i.orient === "vertical" ? (t.lineTo(i.x2 + a, i.y2), t.bezierCurveTo(i.cpx2 + a, i.cpy2, i.cpx1 + a, i.cpy1, i.x1 + a, i.y1)) : (t.lineTo(i.x2, i.y2 + a), t.bezierCurveTo(i.cpx2, i.cpy2 + a, i.cpx1, i.cpy1 + a, i.x1, i.y1 + a)), t.closePath()
        }, e.prototype.highlight = function() {
            rr(this)
        }, e.prototype.downplay = function() {
            ir(this)
        }, e
    }(st),
    S8 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t._focusAdjacencyDisabled = !1, t
        }
        return e.prototype.render = function(t, i, a) {
            var n = this,
                o = t.getGraph(),
                s = this.group,
                l = t.layoutInfo,
                u = l.width,
                f = l.height,
                p = t.getData(),
                c = t.getData("edge"),
                h = t.get("orient");
            this._model = t, s.removeAll(), s.x = l.x, s.y = l.y, o.eachEdge(function(v) {
                var d = new _8,
                    m = et(d);
                m.dataIndex = v.dataIndex, m.seriesIndex = t.seriesIndex, m.dataType = "edge";
                var g = v.getModel(),
                    y = g.getModel("lineStyle"),
                    x = y.get("curveness"),
                    _ = v.node1.getLayout(),
                    S = v.node1.getModel(),
                    b = S.get("localX"),
                    T = S.get("localY"),
                    C = v.node2.getLayout(),
                    A = v.node2.getModel(),
                    D = A.get("localX"),
                    M = A.get("localY"),
                    I = v.getLayout(),
                    E, P, R, N, V, U, B, Z;
                d.shape.extent = Math.max(1, I.dy), d.shape.orient = h, h === "vertical" ? (E = (b != null ? b * u : _.x) + I.sy, P = (T != null ? T * f : _.y) + _.dy, R = (D != null ? D * u : C.x) + I.ty, N = M != null ? M * f : C.y, V = E, U = P * (1 - x) + N * x, B = R, Z = P * x + N * (1 - x)) : (E = (b != null ? b * u : _.x) + _.dx, P = (T != null ? T * f : _.y) + I.sy, R = D != null ? D * u : C.x, N = (M != null ? M * f : C.y) + I.ty, V = E * (1 - x) + R * x, U = P, B = E * x + R * (1 - x), Z = N), d.setShape({
                    x1: E,
                    y1: P,
                    x2: R,
                    y2: N,
                    cpx1: V,
                    cpy1: U,
                    cpx2: B,
                    cpy2: Z
                }), d.useStyle(y.getItemStyle()), cR(d.style, h, v);
                var K = "" + g.get("value"),
                    tt = Ft(g, "edgeLabel");
                Xt(d, tt, {
                    labelFetcher: {
                        getFormattedLabel: function(bt, qt, ve, Mt, mt, Et) {
                            return t.getFormattedLabel(bt, qt, "edge", Mt, Le(mt, tt.normal && tt.normal.get("formatter"), K), Et)
                        }
                    },
                    labelDataIndex: v.dataIndex,
                    defaultText: K
                }), d.setTextConfig({
                    position: "inside"
                });
                var pt = g.getModel("emphasis");
                te(d, g, "lineStyle", function(bt) {
                    var qt = bt.getItemStyle();
                    return cR(qt, h, v), qt
                }), s.add(d), c.setItemGraphicEl(v.dataIndex, d);
                var ct = pt.get("focus");
                Nt(d, ct === "adjacency" ? v.getAdjacentDataIndices() : ct === "trajectory" ? v.getTrajectoryDataIndices() : ct, pt.get("blurScope"), pt.get("disabled"))
            }), o.eachNode(function(v) {
                var d = v.getLayout(),
                    m = v.getModel(),
                    g = m.get("localX"),
                    y = m.get("localY"),
                    x = m.getModel("emphasis"),
                    _ = m.get(["itemStyle", "borderRadius"]) || 0,
                    S = new ht({
                        shape: {
                            x: g != null ? g * u : d.x,
                            y: y != null ? y * f : d.y,
                            width: d.dx,
                            height: d.dy,
                            r: _
                        },
                        style: m.getModel("itemStyle").getItemStyle(),
                        z2: 10
                    });
                Xt(S, Ft(m), {
                    labelFetcher: {
                        getFormattedLabel: function(T, C) {
                            return t.getFormattedLabel(T, C, "node")
                        }
                    },
                    labelDataIndex: v.dataIndex,
                    defaultText: v.id
                }), S.disableLabelAnimation = !0, S.setStyle("fill", v.getVisual("color")), S.setStyle("decal", v.getVisual("style").decal), te(S, m), s.add(S), p.setItemGraphicEl(v.dataIndex, S), et(S).dataType = "node";
                var b = x.get("focus");
                Nt(S, b === "adjacency" ? v.getAdjacentDataIndices() : b === "trajectory" ? v.getTrajectoryDataIndices() : b, x.get("blurScope"), x.get("disabled"))
            }), p.eachItemGraphicEl(function(v, d) {
                var m = p.getItemModel(d);
                m.get("draggable") && (v.drift = function(g, y) {
                    n._focusAdjacencyDisabled = !0, this.shape.x += g, this.shape.y += y, this.dirty(), a.dispatchAction({
                        type: "dragNode",
                        seriesId: t.id,
                        dataIndex: p.getRawIndex(d),
                        localX: this.shape.x / u,
                        localY: this.shape.y / f
                    })
                }, v.ondragend = function() {
                    n._focusAdjacencyDisabled = !1
                }, v.draggable = !0, v.cursor = "move")
            }), !this._data && t.isAnimationEnabled() && s.setClipPath(b8(s.getBoundingRect(), t, function() {
                s.removeClipPath()
            })), this._data = t.getData()
        }, e.prototype.dispose = function() {}, e.type = "sankey", e
    }(At);

function cR(r, e, t) {
    switch (r.fill) {
        case "source":
            r.fill = t.node1.getVisual("color"), r.decal = t.node1.getVisual("style").decal;
            break;
        case "target":
            r.fill = t.node2.getVisual("color"), r.decal = t.node2.getVisual("style").decal;
            break;
        case "gradient":
            var i = t.node1.getVisual("color"),
                a = t.node2.getVisual("color");
            F(i) && F(a) && (r.fill = new yi(0, 0, +(e === "horizontal"), +(e === "vertical"), [{
                color: i,
                offset: 0
            }, {
                color: a,
                offset: 1
            }]))
    }
}

function b8(r, e, t) {
    var i = new ht({
        shape: {
            x: r.x - 10,
            y: r.y - 10,
            width: 0,
            height: r.height + 20
        }
    });
    return Ot(i, {
        shape: {
            width: r.width + 20
        }
    }, e, t), i
}
var hR = S8;
var w8 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.getInitialData = function(t, i) {
            var a = t.edges || t.links || [],
                n = t.data || t.nodes || [],
                o = t.levels || [];
            this.levelModels = [];
            for (var s = this.levelModels, l = 0; l < o.length; l++) o[l].depth != null && o[l].depth >= 0 && (s[o[l].depth] = new Dt(o[l], this, i));
            var u = Mp(n, a, this, !0, f);
            return u.data;

            function f(p, c) {
                p.wrapMethod("getItemModel", function(h, v) {
                    var d = h.parentModel,
                        m = d.getData().getItemLayout(v);
                    if (m) {
                        var g = m.depth,
                            y = d.levelModels[g];
                        y && (h.parentModel = y)
                    }
                    return h
                }), c.wrapMethod("getItemModel", function(h, v) {
                    var d = h.parentModel,
                        m = d.getGraph().getEdgeByIndex(v),
                        g = m.node1.getLayout();
                    if (g) {
                        var y = g.depth,
                            x = d.levelModels[y];
                        x && (h.parentModel = x)
                    }
                    return h
                })
            }
        }, e.prototype.setNodePosition = function(t, i) {
            var a = this.option.data || this.option.nodes,
                n = a[t];
            n.localX = i[0], n.localY = i[1]
        }, e.prototype.getGraph = function() {
            return this.getData().graph
        }, e.prototype.getEdgeData = function() {
            return this.getGraph().edgeData
        }, e.prototype.formatTooltip = function(t, i, a) {
            function n(h) {
                return isNaN(h) || h == null
            }
            if (a === "edge") {
                var o = this.getDataParams(t, a),
                    s = o.data,
                    l = o.value,
                    u = s.source + " -- " + s.target;
                return Jt("nameValue", {
                    name: u,
                    value: l,
                    noValue: n(l)
                })
            } else {
                var f = this.getGraph().getNodeByIndex(t),
                    p = f.getLayout().value,
                    c = this.getDataParams(t, a).data.name;
                return Jt("nameValue", {
                    name: c != null ? c + "" : null,
                    value: p,
                    noValue: n(p)
                })
            }
        }, e.prototype.optionUpdated = function() {}, e.prototype.getDataParams = function(t, i) {
            var a = r.prototype.getDataParams.call(this, t, i);
            if (a.value == null && i === "node") {
                var n = this.getGraph().getNodeByIndex(t),
                    o = n.getLayout().value;
                a.value = o
            }
            return a
        }, e.type = "series.sankey", e.defaultOption = {
            z: 2,
            coordinateSystem: "view",
            left: "5%",
            top: "5%",
            right: "20%",
            bottom: "5%",
            orient: "horizontal",
            nodeWidth: 20,
            nodeGap: 8,
            draggable: !0,
            layoutIterations: 32,
            label: {
                show: !0,
                position: "right",
                fontSize: 12
            },
            edgeLabel: {
                show: !1,
                fontSize: 12
            },
            levels: [],
            nodeAlign: "justify",
            lineStyle: {
                color: "#314656",
                opacity: .2,
                curveness: .5
            },
            emphasis: {
                label: {
                    show: !0
                },
                lineStyle: {
                    opacity: .5
                }
            },
            select: {
                itemStyle: {
                    borderColor: "#212121"
                }
            },
            animationEasing: "linear",
            animationDuration: 1e3
        }, e
    }(Lt),
    vR = w8;

function RS(r, e) {
    r.eachSeriesByType("sankey", function(t) {
        var i = t.get("nodeWidth"),
            a = t.get("nodeGap"),
            n = T8(t, e);
        t.layoutInfo = n;
        var o = n.width,
            s = n.height,
            l = t.getGraph(),
            u = l.nodes,
            f = l.edges;
        A8(u);
        var p = wt(u, function(d) {
                return d.getLayout().value === 0
            }),
            c = p.length !== 0 ? 0 : t.get("layoutIterations"),
            h = t.get("orient"),
            v = t.get("nodeAlign");
        C8(u, f, i, a, o, s, c, h, v)
    })
}

function T8(r, e) {
    return Ut(r.getBoxLayoutParams(), {
        width: e.getWidth(),
        height: e.getHeight()
    })
}

function C8(r, e, t, i, a, n, o, s, l) {
    D8(r, e, t, a, n, s, l), E8(r, e, n, a, i, o, s), B8(r, s)
}

function A8(r) {
    w(r, function(e) {
        var t = eo(e.outEdges, Ld),
            i = eo(e.inEdges, Ld),
            a = e.getValue() || 0,
            n = Math.max(t, i, a);
        e.setLayout({
            value: n
        }, !0)
    })
}

function D8(r, e, t, i, a, n, o) {
    for (var s = [], l = [], u = [], f = [], p = 0, c = 0; c < e.length; c++) s[c] = 1;
    for (var c = 0; c < r.length; c++) l[c] = r[c].inEdges.length, l[c] === 0 && u.push(r[c]);
    for (var h = -1; u.length;) {
        for (var v = 0; v < u.length; v++) {
            var d = u[v],
                m = d.hostGraph.data.getRawDataItem(d.dataIndex),
                g = m.depth != null && m.depth >= 0;
            g && m.depth > h && (h = m.depth), d.setLayout({
                depth: g ? m.depth : p
            }, !0), n === "vertical" ? d.setLayout({
                dy: t
            }, !0) : d.setLayout({
                dx: t
            }, !0);
            for (var y = 0; y < d.outEdges.length; y++) {
                var x = d.outEdges[y],
                    _ = e.indexOf(x);
                s[_] = 0;
                var S = x.node2,
                    b = r.indexOf(S);
                --l[b] === 0 && f.indexOf(S) < 0 && f.push(S)
            }
        }++p, u = f, f = []
    }
    for (var c = 0; c < s.length; c++)
        if (s[c] === 1) throw new Error("Sankey is a DAG, the original data has cycle!");
    var T = h > p - 1 ? h : p - 1;
    o && o !== "left" && M8(r, o, n, T);
    var C = n === "vertical" ? (a - t) / T : (i - t) / T;
    I8(r, C, n)
}

function dR(r) {
    var e = r.hostGraph.data.getRawDataItem(r.dataIndex);
    return e.depth != null && e.depth >= 0
}

function M8(r, e, t, i) {
    if (e === "right") {
        for (var a = [], n = r, o = 0; n.length;) {
            for (var s = 0; s < n.length; s++) {
                var l = n[s];
                l.setLayout({
                    skNodeHeight: o
                }, !0);
                for (var u = 0; u < l.inEdges.length; u++) {
                    var f = l.inEdges[u];
                    a.indexOf(f.node1) < 0 && a.push(f.node1)
                }
            }
            n = a, a = [], ++o
        }
        w(r, function(p) {
            dR(p) || p.setLayout({
                depth: Math.max(0, i - p.getLayout().skNodeHeight)
            }, !0)
        })
    } else e === "justify" && L8(r, i)
}

function L8(r, e) {
    w(r, function(t) {
        !dR(t) && !t.outEdges.length && t.setLayout({
            depth: e
        }, !0)
    })
}

function I8(r, e, t) {
    w(r, function(i) {
        var a = i.getLayout().depth * e;
        t === "vertical" ? i.setLayout({
            y: a
        }, !0) : i.setLayout({
            x: a
        }, !0)
    })
}

function E8(r, e, t, i, a, n, o) {
    var s = P8(r, o);
    R8(s, e, t, i, a, o), PS(s, a, t, i, o);
    for (var l = 1; n > 0; n--) l *= .99, N8(s, l, o), PS(s, a, t, i, o), V8(s, l, o), PS(s, a, t, i, o)
}

function P8(r, e) {
    var t = [],
        i = e === "vertical" ? "y" : "x",
        a = ef(r, function(n) {
            return n.getLayout()[i]
        });
    return a.keys.sort(function(n, o) {
        return n - o
    }), w(a.keys, function(n) {
        t.push(a.buckets.get(n))
    }), t
}

function R8(r, e, t, i, a, n) {
    var o = 1 / 0;
    w(r, function(s) {
        var l = s.length,
            u = 0;
        w(s, function(p) {
            u += p.getLayout().value
        });
        var f = n === "vertical" ? (i - (l - 1) * a) / u : (t - (l - 1) * a) / u;
        f < o && (o = f)
    }), w(r, function(s) {
        w(s, function(l, u) {
            var f = l.getLayout().value * o;
            n === "vertical" ? (l.setLayout({
                x: u
            }, !0), l.setLayout({
                dx: f
            }, !0)) : (l.setLayout({
                y: u
            }, !0), l.setLayout({
                dy: f
            }, !0))
        })
    }), w(e, function(s) {
        var l = +s.getValue() * o;
        s.setLayout({
            dy: l
        }, !0)
    })
}

function PS(r, e, t, i, a) {
    var n = a === "vertical" ? "x" : "y";
    w(r, function(o) {
        o.sort(function(d, m) {
            return d.getLayout()[n] - m.getLayout()[n]
        });
        for (var s, l, u, f = 0, p = o.length, c = a === "vertical" ? "dx" : "dy", h = 0; h < p; h++) l = o[h], u = f - l.getLayout()[n], u > 0 && (s = l.getLayout()[n] + u, a === "vertical" ? l.setLayout({
            x: s
        }, !0) : l.setLayout({
            y: s
        }, !0)), f = l.getLayout()[n] + l.getLayout()[c] + e;
        var v = a === "vertical" ? i : t;
        if (u = f - e - v, u > 0) {
            s = l.getLayout()[n] - u, a === "vertical" ? l.setLayout({
                x: s
            }, !0) : l.setLayout({
                y: s
            }, !0), f = s;
            for (var h = p - 2; h >= 0; --h) l = o[h], u = l.getLayout()[n] + l.getLayout()[c] + e - f, u > 0 && (s = l.getLayout()[n] - u, a === "vertical" ? l.setLayout({
                x: s
            }, !0) : l.setLayout({
                y: s
            }, !0)), f = l.getLayout()[n]
        }
    })
}

function N8(r, e, t) {
    w(r.slice().reverse(), function(i) {
        w(i, function(a) {
            if (a.outEdges.length) {
                var n = eo(a.outEdges, O8, t) / eo(a.outEdges, Ld);
                if (isNaN(n)) {
                    var o = a.outEdges.length;
                    n = o ? eo(a.outEdges, z8, t) / o : 0
                }
                if (t === "vertical") {
                    var s = a.getLayout().x + (n - ro(a, t)) * e;
                    a.setLayout({
                        x: s
                    }, !0)
                } else {
                    var l = a.getLayout().y + (n - ro(a, t)) * e;
                    a.setLayout({
                        y: l
                    }, !0)
                }
            }
        })
    })
}

function O8(r, e) {
    return ro(r.node2, e) * r.getValue()
}

function z8(r, e) {
    return ro(r.node2, e)
}

function k8(r, e) {
    return ro(r.node1, e) * r.getValue()
}

function U8(r, e) {
    return ro(r.node1, e)
}

function ro(r, e) {
    return e === "vertical" ? r.getLayout().x + r.getLayout().dx / 2 : r.getLayout().y + r.getLayout().dy / 2
}

function Ld(r) {
    return r.getValue()
}

function eo(r, e, t) {
    for (var i = 0, a = r.length, n = -1; ++n < a;) {
        var o = +e(r[n], t);
        isNaN(o) || (i += o)
    }
    return i
}

function V8(r, e, t) {
    w(r, function(i) {
        w(i, function(a) {
            if (a.inEdges.length) {
                var n = eo(a.inEdges, k8, t) / eo(a.inEdges, Ld);
                if (isNaN(n)) {
                    var o = a.inEdges.length;
                    n = o ? eo(a.inEdges, U8, t) / o : 0
                }
                if (t === "vertical") {
                    var s = a.getLayout().x + (n - ro(a, t)) * e;
                    a.setLayout({
                        x: s
                    }, !0)
                } else {
                    var l = a.getLayout().y + (n - ro(a, t)) * e;
                    a.setLayout({
                        y: l
                    }, !0)
                }
            }
        })
    })
}

function B8(r, e) {
    var t = e === "vertical" ? "x" : "y";
    w(r, function(i) {
        i.outEdges.sort(function(a, n) {
            return a.node2.getLayout()[t] - n.node2.getLayout()[t]
        }), i.inEdges.sort(function(a, n) {
            return a.node1.getLayout()[t] - n.node1.getLayout()[t]
        })
    }), w(r, function(i) {
        var a = 0,
            n = 0;
        w(i.outEdges, function(o) {
            o.setLayout({
                sy: a
            }, !0), a += o.getLayout().dy
        }), w(i.inEdges, function(o) {
            o.setLayout({
                ty: n
            }, !0), n += o.getLayout().dy
        })
    })
}

function NS(r) {
    r.eachSeriesByType("sankey", function(e) {
        var t = e.getGraph(),
            i = t.nodes,
            a = t.edges;
        if (i.length) {
            var n = 1 / 0,
                o = -1 / 0;
            w(i, function(s) {
                var l = s.getLayout().value;
                l < n && (n = l), l > o && (o = l)
            }), w(i, function(s) {
                var l = new he({
                        type: "color",
                        mappingMethod: "linear",
                        dataExtent: [n, o],
                        visual: e.get("color")
                    }),
                    u = l.mapValueToVisual(s.getLayout().value),
                    f = s.getModel().get(["itemStyle", "color"]);
                f != null ? (s.setVisual("color", f), s.setVisual("style", {
                    fill: f
                })) : (s.setVisual("color", u), s.setVisual("style", {
                    fill: u
                }))
            })
        }
        a.length && w(a, function(s) {
            var l = s.getModel().get("lineStyle");
            s.setVisual("style", l)
        })
    })
}

function OS(r) {
    r.registerChartView(hR), r.registerSeriesModel(vR), r.registerLayout(RS), r.registerVisual(NS), r.registerAction({
        type: "dragNode",
        event: "dragnode",
        update: "update"
    }, function(e, t) {
        t.eachComponent({
            mainType: "series",
            subType: "sankey",
            query: e
        }, function(i) {
            i.setNodePosition(e.dataIndex, [e.localX, e.localY])
        })
    })
}
var Id = function() {
    function r() {}
    return r.prototype._hasEncodeRule = function(e) {
        var t = this.getEncode();
        return t && t.get(e) != null
    }, r.prototype.getInitialData = function(e, t) {
        var i, a = t.getComponent("xAxis", this.get("xAxisIndex")),
            n = t.getComponent("yAxis", this.get("yAxisIndex")),
            o = a.get("type"),
            s = n.get("type"),
            l;
        o === "category" ? (e.layout = "horizontal", i = a.getOrdinalMeta(), l = !this._hasEncodeRule("x")) : s === "category" ? (e.layout = "vertical", i = n.getOrdinalMeta(), l = !this._hasEncodeRule("y")) : e.layout = e.layout || "horizontal";
        var u = ["x", "y"],
            f = e.layout === "horizontal" ? 0 : 1,
            p = this._baseAxisDim = u[f],
            c = u[1 - f],
            h = [a, n],
            v = h[f].get("type"),
            d = h[1 - f].get("type"),
            m = e.data;
        if (m && l) {
            var g = [];
            w(m, function(_, S) {
                var b;
                z(_) ? (b = _.slice(), _.unshift(S)) : z(_.value) ? (b = O({}, _), b.value = b.value.slice(), _.value.unshift(S)) : b = _, g.push(b)
            }), e.data = g
        }
        var y = this.defaultValueDimensions,
            x = [{
                name: p,
                type: vs(v),
                ordinalMeta: i,
                otherDims: {
                    tooltip: !1,
                    itemName: 0
                },
                dimsDef: ["base"]
            }, {
                name: c,
                type: vs(d),
                dimsDef: y.slice()
            }];
        return si(this, {
            coordDimensions: x,
            dimensionsCount: y.length + 1,
            encodeDefaulter: rt(Ah, x, this)
        })
    }, r.prototype.getBaseAxis = function() {
        var e = this._baseAxisDim;
        return this.ecModel.getComponent(e + "Axis", this.get(e + "AxisIndex")).axis
    }, r
}();
var mR = function(r) {
    L(e, r);

    function e() {
        var t = r !== null && r.apply(this, arguments) || this;
        return t.type = e.type, t.defaultValueDimensions = [{
            name: "min",
            defaultTooltip: !0
        }, {
            name: "Q1",
            defaultTooltip: !0
        }, {
            name: "median",
            defaultTooltip: !0
        }, {
            name: "Q3",
            defaultTooltip: !0
        }, {
            name: "max",
            defaultTooltip: !0
        }], t.visualDrawType = "stroke", t
    }
    return e.type = "series.boxplot", e.dependencies = ["xAxis", "yAxis", "grid"], e.defaultOption = {
        z: 2,
        coordinateSystem: "cartesian2d",
        legendHoverLink: !0,
        layout: null,
        boxWidth: [7, 50],
        itemStyle: {
            color: "#fff",
            borderWidth: 1
        },
        emphasis: {
            scale: !0,
            itemStyle: {
                borderWidth: 2,
                shadowBlur: 5,
                shadowOffsetX: 1,
                shadowOffsetY: 1,
                shadowColor: "rgba(0,0,0,0.2)"
            }
        },
        animationDuration: 800
    }, e
}(Lt);
Bt(mR, Id, !0);
var gR = mR;
var F8 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.render = function(t, i, a) {
            var n = t.getData(),
                o = this.group,
                s = this._data;
            this._data || o.removeAll();
            var l = t.get("layout") === "horizontal" ? 1 : 0;
            n.diff(s).add(function(u) {
                if (n.hasValue(u)) {
                    var f = n.getItemLayout(u),
                        p = yR(f, n, u, l, !0);
                    n.setItemGraphicEl(u, p), o.add(p)
                }
            }).update(function(u, f) {
                var p = s.getItemGraphicEl(f);
                if (!n.hasValue(u)) {
                    o.remove(p);
                    return
                }
                var c = n.getItemLayout(u);
                p ? (Ae(p), xR(c, p, n, u)) : p = yR(c, n, u, l), o.add(p), n.setItemGraphicEl(u, p)
            }).remove(function(u) {
                var f = s.getItemGraphicEl(u);
                f && o.remove(f)
            }).execute(), this._data = n
        }, e.prototype.remove = function(t) {
            var i = this.group,
                a = this._data;
            this._data = null, a && a.eachItemGraphicEl(function(n) {
                n && i.remove(n)
            })
        }, e.type = "boxplot", e
    }(At),
    G8 = function() {
        function r() {}
        return r
    }(),
    H8 = function(r) {
        L(e, r);

        function e(t) {
            var i = r.call(this, t) || this;
            return i.type = "boxplotBoxPath", i
        }
        return e.prototype.getDefaultShape = function() {
            return new G8
        }, e.prototype.buildPath = function(t, i) {
            var a = i.points,
                n = 0;
            for (t.moveTo(a[n][0], a[n][1]), n++; n < 4; n++) t.lineTo(a[n][0], a[n][1]);
            for (t.closePath(); n < a.length; n++) t.moveTo(a[n][0], a[n][1]), n++, t.lineTo(a[n][0], a[n][1])
        }, e
    }(st);

function yR(r, e, t, i, a) {
    var n = r.ends,
        o = new H8({
            shape: {
                points: a ? W8(n, i, r) : n
            }
        });
    return xR(r, o, e, t, a), o
}

function xR(r, e, t, i, a) {
    var n = t.hostModel,
        o = gt[a ? "initProps" : "updateProps"];
    o(e, {
        shape: {
            points: r.ends
        }
    }, n, i), e.useStyle(t.getItemVisual(i, "style")), e.style.strokeNoScale = !0, e.z2 = 100;
    var s = t.getItemModel(i),
        l = s.getModel("emphasis");
    te(e, s), Nt(e, l.get("focus"), l.get("blurScope"), l.get("disabled"))
}

function W8(r, e, t) {
    return k(r, function(i) {
        return i = i.slice(), i[e] = t.initBaseline, i
    })
}
var _R = F8;
var Ep = w;

function zS(r) {
    var e = Y8(r);
    Ep(e, function(t) {
        var i = t.seriesModels;
        i.length && (Z8(t), Ep(i, function(a, n) {
            X8(a, t.boxOffsetList[n], t.boxWidthList[n])
        }))
    })
}

function Y8(r) {
    var e = [],
        t = [];
    return r.eachSeriesByType("boxplot", function(i) {
        var a = i.getBaseAxis(),
            n = at(t, a);
        n < 0 && (n = t.length, t[n] = a, e[n] = {
            axis: a,
            seriesModels: []
        }), e[n].seriesModels.push(i)
    }), e
}

function Z8(r) {
    var e = r.axis,
        t = r.seriesModels,
        i = t.length,
        a = r.boxWidthList = [],
        n = r.boxOffsetList = [],
        o = [],
        s;
    if (e.type === "category") s = e.getBandWidth();
    else {
        var l = 0;
        Ep(t, function(v) {
            l = Math.max(l, v.getData().count())
        });
        var u = e.getExtent();
        s = Math.abs(u[1] - u[0]) / l
    }
    Ep(t, function(v) {
        var d = v.get("boxWidth");
        z(d) || (d = [d, d]), o.push([W(d[0], s) || 0, W(d[1], s) || 0])
    });
    var f = s * .8 - 2,
        p = f / i * .3,
        c = (f - p * (i - 1)) / i,
        h = c / 2 - f / 2;
    Ep(t, function(v, d) {
        n.push(h), h += p + c, a.push(Math.min(Math.max(c, o[d][0]), o[d][1]))
    })
}

function X8(r, e, t) {
    var i = r.coordinateSystem,
        a = r.getData(),
        n = t / 2,
        o = r.get("layout") === "horizontal" ? 0 : 1,
        s = 1 - o,
        l = ["x", "y"],
        u = a.mapDimension(l[o]),
        f = a.mapDimensionsAll(l[s]);
    if (u == null || f.length < 5) return;
    for (var p = 0; p < a.count(); p++) {
        var c = a.get(u, p),
            h = x(c, f[2], p),
            v = x(c, f[0], p),
            d = x(c, f[1], p),
            m = x(c, f[3], p),
            g = x(c, f[4], p),
            y = [];
        _(y, d, !1), _(y, m, !0), y.push(v, d, g, m), S(y, v), S(y, g), S(y, h), a.setItemLayout(p, {
            initBaseline: h[s],
            ends: y
        })
    }

    function x(b, T, C) {
        var A = a.get(T, C),
            D = [];
        D[o] = b, D[s] = A;
        var M;
        return isNaN(b) || isNaN(A) ? M = [NaN, NaN] : (M = i.dataToPoint(D), M[o] += e), M
    }

    function _(b, T, C) {
        var A = T.slice(),
            D = T.slice();
        A[o] += n, D[o] -= n, C ? b.push(A, D) : b.push(D, A)
    }

    function S(b, T) {
        var C = T.slice(),
            A = T.slice();
        C[o] -= n, A[o] += n, b.push(C, A)
    }
}

function kS(r, e) {
    e = e || {};
    for (var t = [], i = [], a = e.boundIQR, n = a === "none" || a === 0, o = 0; o < r.length; o++) {
        var s = _e(r[o].slice()),
            l = il(s, .25),
            u = il(s, .5),
            f = il(s, .75),
            p = s[0],
            c = s[s.length - 1],
            h = (a ? ? 1.5) * (f - l),
            v = n ? p : Math.max(p, l - h),
            d = n ? c : Math.min(c, f + h),
            m = e.itemNameFormatter,
            g = X(m) ? m({
                value: o
            }) : F(m) ? m.replace("{value}", o + "") : o + "";
        t.push([g, v, l, u, f, d]);
        for (var y = 0; y < s.length; y++) {
            var x = s[y];
            if (x < v || x > d) {
                var _ = [g, x];
                i.push(_)
            }
        }
    }
    return {
        boxData: t,
        outliers: i
    }
}
var SR = {
    type: "echarts:boxplot",
    transform: function(e) {
        var t = e.upstream;
        if (t.sourceFormat !== Se) {
            var i = "";
            kt(i)
        }
        var a = kS(t.getRawData(), e.config);
        return [{
            dimensions: ["ItemName", "Low", "Q1", "Q2", "Q3", "High"],
            data: a.boxData
        }, {
            data: a.outliers
        }]
    }
};

function US(r) {
    r.registerSeriesModel(gR), r.registerChartView(_R), r.registerLayout(zS), r.registerTransform(SR)
}
var q8 = ["itemStyle", "borderColor"],
    K8 = ["itemStyle", "borderColor0"],
    j8 = ["itemStyle", "borderColorDoji"],
    J8 = ["itemStyle", "color"],
    Q8 = ["itemStyle", "color0"];

function Ed(r, e) {
    return e.get(r > 0 ? J8 : Q8)
}

function Pd(r, e) {
    return e.get(r === 0 ? j8 : r > 0 ? q8 : K8)
}
var $8 = {
        seriesType: "candlestick",
        plan: ni(),
        performRawSeries: !0,
        reset: function(r, e) {
            if (!e.isSeriesFiltered(r)) {
                var t = r.pipelineContext.large;
                return !t && {
                    progress: function(i, a) {
                        for (var n;
                            (n = i.next()) != null;) {
                            var o = a.getItemModel(n),
                                s = a.getItemLayout(n).sign,
                                l = o.getItemStyle();
                            l.fill = Ed(s, o), l.stroke = Pd(s, o) || l.fill;
                            var u = a.ensureUniqueItemVisual(n, "style");
                            O(u, l)
                        }
                    }
                }
            }
        }
    },
    bR = $8;
var tZ = ["color", "borderColor"],
    eZ = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.render = function(t, i, a) {
            this.group.removeClipPath(), this._progressiveEls = null, this._updateDrawMode(t), this._isLargeDraw ? this._renderLarge(t) : this._renderNormal(t)
        }, e.prototype.incrementalPrepareRender = function(t, i, a) {
            this._clear(), this._updateDrawMode(t)
        }, e.prototype.incrementalRender = function(t, i, a, n) {
            this._progressiveEls = [], this._isLargeDraw ? this._incrementalRenderLarge(t, i) : this._incrementalRenderNormal(t, i)
        }, e.prototype.eachRendered = function(t) {
            dr(this._progressiveEls || this.group, t)
        }, e.prototype._updateDrawMode = function(t) {
            var i = t.pipelineContext.large;
            (this._isLargeDraw == null || i !== this._isLargeDraw) && (this._isLargeDraw = i, this._clear())
        }, e.prototype._renderNormal = function(t) {
            var i = t.getData(),
                a = this._data,
                n = this.group,
                o = i.getLayout("isSimpleBox"),
                s = t.get("clip", !0),
                l = t.coordinateSystem,
                u = l.getArea && l.getArea();
            this._data || n.removeAll(), i.diff(a).add(function(f) {
                if (i.hasValue(f)) {
                    var p = i.getItemLayout(f);
                    if (s && wR(u, p)) return;
                    var c = VS(p, f, !0);
                    Ot(c, {
                        shape: {
                            points: p.ends
                        }
                    }, t, f), BS(c, i, f, o), n.add(c), i.setItemGraphicEl(f, c)
                }
            }).update(function(f, p) {
                var c = a.getItemGraphicEl(p);
                if (!i.hasValue(f)) {
                    n.remove(c);
                    return
                }
                var h = i.getItemLayout(f);
                if (s && wR(u, h)) {
                    n.remove(c);
                    return
                }
                c ? (xt(c, {
                    shape: {
                        points: h.ends
                    }
                }, t, f), Ae(c)) : c = VS(h, f), BS(c, i, f, o), n.add(c), i.setItemGraphicEl(f, c)
            }).remove(function(f) {
                var p = a.getItemGraphicEl(f);
                p && n.remove(p)
            }).execute(), this._data = i
        }, e.prototype._renderLarge = function(t) {
            this._clear(), TR(t, this.group);
            var i = t.get("clip", !0) ? Ta(t.coordinateSystem, !1, t) : null;
            i ? this.group.setClipPath(i) : this.group.removeClipPath()
        }, e.prototype._incrementalRenderNormal = function(t, i) {
            for (var a = i.getData(), n = a.getLayout("isSimpleBox"), o;
                (o = t.next()) != null;) {
                var s = a.getItemLayout(o),
                    l = VS(s, o);
                BS(l, a, o, n), l.incremental = !0, this.group.add(l), this._progressiveEls.push(l)
            }
        }, e.prototype._incrementalRenderLarge = function(t, i) {
            TR(i, this.group, this._progressiveEls, !0)
        }, e.prototype.remove = function(t) {
            this._clear()
        }, e.prototype._clear = function() {
            this.group.removeAll(), this._data = null
        }, e.type = "candlestick", e
    }(At),
    rZ = function() {
        function r() {}
        return r
    }(),
    iZ = function(r) {
        L(e, r);

        function e(t) {
            var i = r.call(this, t) || this;
            return i.type = "normalCandlestickBox", i
        }
        return e.prototype.getDefaultShape = function() {
            return new rZ
        }, e.prototype.buildPath = function(t, i) {
            var a = i.points;
            this.__simpleBox ? (t.moveTo(a[4][0], a[4][1]), t.lineTo(a[6][0], a[6][1])) : (t.moveTo(a[0][0], a[0][1]), t.lineTo(a[1][0], a[1][1]), t.lineTo(a[2][0], a[2][1]), t.lineTo(a[3][0], a[3][1]), t.closePath(), t.moveTo(a[4][0], a[4][1]), t.lineTo(a[5][0], a[5][1]), t.moveTo(a[6][0], a[6][1]), t.lineTo(a[7][0], a[7][1]))
        }, e
    }(st);

function VS(r, e, t) {
    var i = r.ends;
    return new iZ({
        shape: {
            points: t ? aZ(i, r) : i
        },
        z2: 100
    })
}

function wR(r, e) {
    for (var t = !0, i = 0; i < e.ends.length; i++)
        if (r.contain(e.ends[i][0], e.ends[i][1])) {
            t = !1;
            break
        }
    return t
}

function BS(r, e, t, i) {
    var a = e.getItemModel(t);
    r.useStyle(e.getItemVisual(t, "style")), r.style.strokeNoScale = !0, r.__simpleBox = i, te(r, a);
    var n = e.getItemLayout(t).sign;
    w(r.states, function(s, l) {
        var u = a.getModel(l),
            f = Ed(n, u),
            p = Pd(n, u) || f,
            c = s.style || (s.style = {});
        f && (c.fill = f), p && (c.stroke = p)
    });
    var o = a.getModel("emphasis");
    Nt(r, o.get("focus"), o.get("blurScope"), o.get("disabled"))
}

function aZ(r, e) {
    return k(r, function(t) {
        return t = t.slice(), t[1] = e.initBaseline, t
    })
}
var nZ = function() {
        function r() {}
        return r
    }(),
    FS = function(r) {
        L(e, r);

        function e(t) {
            var i = r.call(this, t) || this;
            return i.type = "largeCandlestickBox", i
        }
        return e.prototype.getDefaultShape = function() {
            return new nZ
        }, e.prototype.buildPath = function(t, i) {
            for (var a = i.points, n = 0; n < a.length;)
                if (this.__sign === a[n++]) {
                    var o = a[n++];
                    t.moveTo(o, a[n++]), t.lineTo(o, a[n++])
                } else n += 3
        }, e
    }(st);

function TR(r, e, t, i) {
    var a = r.getData(),
        n = a.getLayout("largePoints"),
        o = new FS({
            shape: {
                points: n
            },
            __sign: 1,
            ignoreCoarsePointer: !0
        });
    e.add(o);
    var s = new FS({
        shape: {
            points: n
        },
        __sign: -1,
        ignoreCoarsePointer: !0
    });
    e.add(s);
    var l = new FS({
        shape: {
            points: n
        },
        __sign: 0,
        ignoreCoarsePointer: !0
    });
    e.add(l), GS(1, o, r, a), GS(-1, s, r, a), GS(0, l, r, a), i && (o.incremental = !0, s.incremental = !0), t && t.push(o, s)
}

function GS(r, e, t, i) {
    var a = Pd(r, t) || Ed(r, t),
        n = t.getModel("itemStyle").getItemStyle(tZ);
    e.useStyle(n), e.style.fill = null, e.style.stroke = a
}
var CR = eZ;
var AR = function(r) {
    L(e, r);

    function e() {
        var t = r !== null && r.apply(this, arguments) || this;
        return t.type = e.type, t.defaultValueDimensions = [{
            name: "open",
            defaultTooltip: !0
        }, {
            name: "close",
            defaultTooltip: !0
        }, {
            name: "lowest",
            defaultTooltip: !0
        }, {
            name: "highest",
            defaultTooltip: !0
        }], t
    }
    return e.prototype.getShadowDim = function() {
        return "open"
    }, e.prototype.brushSelector = function(t, i, a) {
        var n = i.getItemLayout(t);
        return n && a.rect(n.brushRect)
    }, e.type = "series.candlestick", e.dependencies = ["xAxis", "yAxis", "grid"], e.defaultOption = {
        z: 2,
        coordinateSystem: "cartesian2d",
        legendHoverLink: !0,
        layout: null,
        clip: !0,
        itemStyle: {
            color: "#eb5454",
            color0: "#47b262",
            borderColor: "#eb5454",
            borderColor0: "#47b262",
            borderColorDoji: null,
            borderWidth: 1
        },
        emphasis: {
            itemStyle: {
                borderWidth: 2
            }
        },
        barMaxWidth: null,
        barMinWidth: null,
        barWidth: null,
        large: !0,
        largeThreshold: 600,
        progressive: 3e3,
        progressiveThreshold: 1e4,
        progressiveChunkMode: "mod",
        animationEasing: "linear",
        animationDuration: 300
    }, e
}(Lt);
Bt(AR, Id, !0);
var DR = AR;

function HS(r) {
    !r || !z(r.series) || w(r.series, function(e) {
        j(e) && e.type === "k" && (e.type = "candlestick")
    })
}
var oZ = {
    seriesType: "candlestick",
    plan: ni(),
    reset: function(r) {
        var e = r.coordinateSystem,
            t = r.getData(),
            i = sZ(r, t),
            a = 0,
            n = 1,
            o = ["x", "y"],
            s = t.getDimensionIndex(t.mapDimension(o[a])),
            l = k(t.mapDimensionsAll(o[n]), t.getDimensionIndex, t),
            u = l[0],
            f = l[1],
            p = l[2],
            c = l[3];
        if (t.setLayout({
                candleWidth: i,
                isSimpleBox: i <= 1.3
            }), s < 0 || l.length < 4) return;
        return {
            progress: r.pipelineContext.large ? v : h
        };

        function h(d, m) {
            for (var g, y = m.getStore();
                (g = d.next()) != null;) {
                var x = y.get(s, g),
                    _ = y.get(u, g),
                    S = y.get(f, g),
                    b = y.get(p, g),
                    T = y.get(c, g),
                    C = Math.min(_, S),
                    A = Math.max(_, S),
                    D = V(C, x),
                    M = V(A, x),
                    I = V(b, x),
                    E = V(T, x),
                    P = [];
                U(P, M, 0), U(P, D, 1), P.push(Z(E), Z(M), Z(I), Z(D));
                var R = m.getItemModel(g),
                    N = !!R.get(["itemStyle", "borderColorDoji"]);
                m.setItemLayout(g, {
                    sign: MR(y, g, _, S, f, N),
                    initBaseline: _ > S ? M[n] : D[n],
                    ends: P,
                    brushRect: B(b, T, x)
                })
            }

            function V(K, tt) {
                var pt = [];
                return pt[a] = tt, pt[n] = K, isNaN(tt) || isNaN(K) ? [NaN, NaN] : e.dataToPoint(pt)
            }

            function U(K, tt, pt) {
                var ct = tt.slice(),
                    bt = tt.slice();
                ct[a] = mf(ct[a] + i / 2, 1, !1), bt[a] = mf(bt[a] - i / 2, 1, !0), pt ? K.push(ct, bt) : K.push(bt, ct)
            }

            function B(K, tt, pt) {
                var ct = V(K, pt),
                    bt = V(tt, pt);
                return ct[a] -= i / 2, bt[a] -= i / 2, {
                    x: ct[0],
                    y: ct[1],
                    width: n ? i : bt[0] - ct[0],
                    height: n ? bt[1] - ct[1] : i
                }
            }

            function Z(K) {
                return K[a] = mf(K[a], 1), K
            }
        }

        function v(d, m) {
            for (var g = yr(d.count * 4), y = 0, x, _ = [], S = [], b, T = m.getStore(), C = !!r.get(["itemStyle", "borderColorDoji"]);
                (b = d.next()) != null;) {
                var A = T.get(s, b),
                    D = T.get(u, b),
                    M = T.get(f, b),
                    I = T.get(p, b),
                    E = T.get(c, b);
                if (isNaN(A) || isNaN(I) || isNaN(E)) {
                    g[y++] = NaN, y += 3;
                    continue
                }
                g[y++] = MR(T, b, D, M, f, C), _[a] = A, _[n] = I, x = e.dataToPoint(_, null, S), g[y++] = x ? x[0] : NaN, g[y++] = x ? x[1] : NaN, _[n] = E, x = e.dataToPoint(_, null, S), g[y++] = x ? x[1] : NaN
            }
            m.setLayout("largePoints", g)
        }
    }
};

function MR(r, e, t, i, a, n) {
    var o;
    return t > i ? o = -1 : t < i ? o = 1 : o = n ? 0 : e > 0 ? r.get(a, e - 1) <= i ? 1 : -1 : 1, o
}

function sZ(r, e) {
    var t = r.getBaseAxis(),
        i, a = t.type === "category" ? t.getBandWidth() : (i = t.getExtent(), Math.abs(i[1] - i[0]) / e.count()),
        n = W(ot(r.get("barMaxWidth"), a), a),
        o = W(ot(r.get("barMinWidth"), 1), a),
        s = r.get("barWidth");
    return s != null ? W(s, a) : Math.max(Math.min(a / 2, n), o)
}
var LR = oZ;

function WS(r) {
    r.registerChartView(CR), r.registerSeriesModel(DR), r.registerPreprocessor(HS), r.registerVisual(bR), r.registerLayout(LR)
}

function IR(r, e) {
    var t = e.rippleEffectColor || e.color;
    r.eachChild(function(i) {
        i.attr({
            z: e.z,
            zlevel: e.zlevel,
            style: {
                stroke: e.brushType === "stroke" ? t : null,
                fill: e.brushType === "fill" ? t : null
            }
        })
    })
}
var lZ = function(r) {
        L(e, r);

        function e(t, i) {
            var a = r.call(this) || this,
                n = new nn(t, i),
                o = new J;
            return a.add(n), a.add(o), a.updateData(t, i), a
        }
        return e.prototype.stopEffectAnimation = function() {
            this.childAt(1).removeAll()
        }, e.prototype.startEffectAnimation = function(t) {
            for (var i = t.symbolType, a = t.color, n = t.rippleNumber, o = this.childAt(1), s = 0; s < n; s++) {
                var l = Vt(i, -1, -1, 2, 2, a);
                l.attr({
                    style: {
                        strokeNoScale: !0
                    },
                    z2: 99,
                    silent: !0,
                    scaleX: .5,
                    scaleY: .5
                });
                var u = -s / n * t.period + t.effectOffset;
                l.animate("", !0).when(t.period, {
                    scaleX: t.rippleScale / 2,
                    scaleY: t.rippleScale / 2
                }).delay(u).start(), l.animateStyle(!0).when(t.period, {
                    opacity: 0
                }).delay(u).start(), o.add(l)
            }
            IR(o, t)
        }, e.prototype.updateEffectAnimation = function(t) {
            for (var i = this._effectCfg, a = this.childAt(1), n = ["symbolType", "period", "rippleScale", "rippleNumber"], o = 0; o < n.length; o++) {
                var s = n[o];
                if (i[s] !== t[s]) {
                    this.stopEffectAnimation(), this.startEffectAnimation(t);
                    return
                }
            }
            IR(a, t)
        }, e.prototype.highlight = function() {
            rr(this)
        }, e.prototype.downplay = function() {
            ir(this)
        }, e.prototype.getSymbolType = function() {
            var t = this.childAt(0);
            return t && t.getSymbolType()
        }, e.prototype.updateData = function(t, i) {
            var a = this,
                n = t.hostModel;
            this.childAt(0).updateData(t, i);
            var o = this.childAt(1),
                s = t.getItemModel(i),
                l = t.getItemVisual(i, "symbol"),
                u = Ki(t.getItemVisual(i, "symbolSize")),
                f = t.getItemVisual(i, "style"),
                p = f && f.fill,
                c = s.getModel("emphasis");
            o.setScale(u), o.traverse(function(m) {
                m.setStyle("fill", p)
            });
            var h = oi(t.getItemVisual(i, "symbolOffset"), u);
            h && (o.x = h[0], o.y = h[1]);
            var v = t.getItemVisual(i, "symbolRotate");
            o.rotation = (v || 0) * Math.PI / 180 || 0;
            var d = {};
            d.showEffectOn = n.get("showEffectOn"), d.rippleScale = s.get(["rippleEffect", "scale"]), d.brushType = s.get(["rippleEffect", "brushType"]), d.period = s.get(["rippleEffect", "period"]) * 1e3, d.effectOffset = i / t.count(), d.z = n.getShallow("z") || 0, d.zlevel = n.getShallow("zlevel") || 0, d.symbolType = l, d.color = p, d.rippleEffectColor = s.get(["rippleEffect", "color"]), d.rippleNumber = s.get(["rippleEffect", "number"]), d.showEffectOn === "render" ? (this._effectCfg ? this.updateEffectAnimation(d) : this.startEffectAnimation(d), this._effectCfg = d) : (this._effectCfg = null, this.stopEffectAnimation(), this.onHoverStateChange = function(m) {
                m === "emphasis" ? d.showEffectOn !== "render" && a.startEffectAnimation(d) : m === "normal" && d.showEffectOn !== "render" && a.stopEffectAnimation()
            }), this._effectCfg = d, Nt(this, c.get("focus"), c.get("blurScope"), c.get("disabled"))
        }, e.prototype.fadeOut = function(t) {
            t && t()
        }, e
    }(J),
    ER = lZ;
var uZ = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.init = function() {
            this._symbolDraw = new wa(ER)
        }, e.prototype.render = function(t, i, a) {
            var n = t.getData(),
                o = this._symbolDraw;
            o.updateData(n, {
                clipShape: this._getClipShape(t)
            }), this.group.add(o.group)
        }, e.prototype._getClipShape = function(t) {
            var i = t.coordinateSystem,
                a = i && i.getArea && i.getArea();
            return t.get("clip", !0) ? a : null
        }, e.prototype.updateTransform = function(t, i, a) {
            var n = t.getData();
            this.group.dirty();
            var o = ea("").reset(t, i, a);
            o.progress && o.progress({
                start: 0,
                end: n.count(),
                count: n.count()
            }, n), this._symbolDraw.updateLayout()
        }, e.prototype._updateGroupTransform = function(t) {
            var i = t.coordinateSystem;
            i && i.getRoamTransform && (this.group.transform = Zm(i.getRoamTransform()), this.group.decomposeTransform())
        }, e.prototype.remove = function(t, i) {
            this._symbolDraw && this._symbolDraw.remove(!0)
        }, e.type = "effectScatter", e
    }(At),
    PR = uZ;
var fZ = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t.hasSymbolVisual = !0, t
        }
        return e.prototype.getInitialData = function(t, i) {
            return ze(null, this, {
                useEncodeDefaulter: !0
            })
        }, e.prototype.brushSelector = function(t, i, a) {
            return a.point(i.getItemLayout(t))
        }, e.type = "series.effectScatter", e.dependencies = ["grid", "polar"], e.defaultOption = {
            coordinateSystem: "cartesian2d",
            z: 2,
            legendHoverLink: !0,
            effectType: "ripple",
            progressive: 0,
            showEffectOn: "render",
            clip: !0,
            rippleEffect: {
                period: 4,
                scale: 2.5,
                brushType: "fill",
                number: 3
            },
            universalTransition: {
                divideShape: "clone"
            },
            symbolSize: 10
        }, e
    }(Lt),
    RR = fZ;

function YS(r) {
    r.registerChartView(PR), r.registerSeriesModel(RR), r.registerLayout(ea("effectScatter"))
}
var pZ = function(r) {
        L(e, r);

        function e(t, i, a) {
            var n = r.call(this) || this;
            return n.add(n.createLine(t, i, a)), n._updateEffectSymbol(t, i), n
        }
        return e.prototype.createLine = function(t, i, a) {
            return new tu(t, i, a)
        }, e.prototype._updateEffectSymbol = function(t, i) {
            var a = t.getItemModel(i),
                n = a.getModel("effect"),
                o = n.get("symbolSize"),
                s = n.get("symbol");
            z(o) || (o = [o, o]);
            var l = t.getItemVisual(i, "style"),
                u = n.get("color") || l && l.stroke,
                f = this.childAt(1);
            this._symbolType !== s && (this.remove(f), f = Vt(s, -.5, -.5, 1, 1, u), f.z2 = 100, f.culling = !0, this.add(f)), f && (f.setStyle("shadowColor", u), f.setStyle(n.getItemStyle(["color"])), f.scaleX = o[0], f.scaleY = o[1], f.setColor(u), this._symbolType = s, this._symbolScale = o, this._updateEffectAnimation(t, n, i))
        }, e.prototype._updateEffectAnimation = function(t, i, a) {
            var n = this.childAt(1);
            if (n) {
                var o = t.getItemLayout(a),
                    s = i.get("period") * 1e3,
                    l = i.get("loop"),
                    u = i.get("roundTrip"),
                    f = i.get("constantSpeed"),
                    p = Kt(i.get("delay"), function(h) {
                        return h / t.count() * s / 3
                    });
                if (n.ignore = !0, this._updateAnimationPoints(n, o), f > 0 && (s = this._getLineLength(n) / f * 1e3), s !== this._period || l !== this._loop || u !== this._roundTrip) {
                    n.stopAnimation();
                    var c = void 0;
                    X(p) ? c = p(a) : c = p, n.__t > 0 && (c = -s * n.__t), this._animateSymbol(n, s, c, l, u)
                }
                this._period = s, this._loop = l, this._roundTrip = u
            }
        }, e.prototype._animateSymbol = function(t, i, a, n, o) {
            if (i > 0) {
                t.__t = 0;
                var s = this,
                    l = t.animate("", n).when(o ? i * 2 : i, {
                        __t: o ? 2 : 1
                    }).delay(a).during(function() {
                        s._updateSymbolPosition(t)
                    });
                n || l.done(function() {
                    s.remove(t)
                }), l.start()
            }
        }, e.prototype._getLineLength = function(t) {
            return Kr(t.__p1, t.__cp1) + Kr(t.__cp1, t.__p2)
        }, e.prototype._updateAnimationPoints = function(t, i) {
            t.__p1 = i[0], t.__p2 = i[1], t.__cp1 = i[2] || [(i[0][0] + i[1][0]) / 2, (i[0][1] + i[1][1]) / 2]
        }, e.prototype.updateData = function(t, i, a) {
            this.childAt(0).updateData(t, i, a), this._updateEffectSymbol(t, i)
        }, e.prototype._updateSymbolPosition = function(t) {
            var i = t.__p1,
                a = t.__p2,
                n = t.__cp1,
                o = t.__t < 1 ? t.__t : 2 - t.__t,
                s = [t.x, t.y],
                l = s.slice(),
                u = ge,
                f = ku;
            s[0] = u(i[0], n[0], a[0], o), s[1] = u(i[1], n[1], a[1], o);
            var p = t.__t < 1 ? f(i[0], n[0], a[0], o) : f(a[0], n[0], i[0], 1 - o),
                c = t.__t < 1 ? f(i[1], n[1], a[1], o) : f(a[1], n[1], i[1], 1 - o);
            t.rotation = -Math.atan2(c, p) - Math.PI / 2, (this._symbolType === "line" || this._symbolType === "rect" || this._symbolType === "roundRect") && (t.__lastT !== void 0 && t.__lastT < t.__t ? (t.scaleY = Kr(l, s) * 1.05, o === 1 && (s[0] = l[0] + (s[0] - l[0]) / 2, s[1] = l[1] + (s[1] - l[1]) / 2)) : t.__lastT === 1 ? t.scaleY = 2 * Kr(i, s) : t.scaleY = this._symbolScale[1]), t.__lastT = t.__t, t.ignore = !1, t.x = s[0], t.y = s[1]
        }, e.prototype.updateLayout = function(t, i) {
            this.childAt(0).updateLayout(t, i);
            var a = t.getItemModel(i).getModel("effect");
            this._updateEffectAnimation(t, a, i)
        }, e
    }(J),
    Rd = pZ;
var cZ = function(r) {
        L(e, r);

        function e(t, i, a) {
            var n = r.call(this) || this;
            return n._createPolyline(t, i, a), n
        }
        return e.prototype._createPolyline = function(t, i, a) {
            var n = t.getItemLayout(i),
                o = new ae({
                    shape: {
                        points: n
                    }
                });
            this.add(o), this._updateCommonStl(t, i, a)
        }, e.prototype.updateData = function(t, i, a) {
            var n = t.hostModel,
                o = this.childAt(0),
                s = {
                    shape: {
                        points: t.getItemLayout(i)
                    }
                };
            xt(o, s, n, i), this._updateCommonStl(t, i, a)
        }, e.prototype._updateCommonStl = function(t, i, a) {
            var n = this.childAt(0),
                o = t.getItemModel(i),
                s = a && a.emphasisLineStyle,
                l = a && a.focus,
                u = a && a.blurScope,
                f = a && a.emphasisDisabled;
            if (!a || t.hasItemOption) {
                var p = o.getModel("emphasis");
                s = p.getModel("lineStyle").getLineStyle(), f = p.get("disabled"), l = p.get("focus"), u = p.get("blurScope")
            }
            n.useStyle(t.getItemVisual(i, "style")), n.style.fill = null, n.style.strokeNoScale = !0;
            var c = n.ensureState("emphasis");
            c.style = s, Nt(this, l, u, f)
        }, e.prototype.updateLayout = function(t, i) {
            var a = this.childAt(0);
            a.setShape("points", t.getItemLayout(i))
        }, e
    }(J),
    Nd = cZ;
var hZ = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t._lastFrame = 0, t._lastFramePercent = 0, t
        }
        return e.prototype.createLine = function(t, i, a) {
            return new Nd(t, i, a)
        }, e.prototype._updateAnimationPoints = function(t, i) {
            this._points = i;
            for (var a = [0], n = 0, o = 1; o < i.length; o++) {
                var s = i[o - 1],
                    l = i[o];
                n += Kr(s, l), a.push(n)
            }
            if (n === 0) {
                this._length = 0;
                return
            }
            for (var o = 0; o < a.length; o++) a[o] /= n;
            this._offsets = a, this._length = n
        }, e.prototype._getLineLength = function() {
            return this._length
        }, e.prototype._updateSymbolPosition = function(t) {
            var i = t.__t < 1 ? t.__t : 2 - t.__t,
                a = this._points,
                n = this._offsets,
                o = a.length;
            if (n) {
                var s = this._lastFrame,
                    l;
                if (i < this._lastFramePercent) {
                    var u = Math.min(s + 1, o - 1);
                    for (l = u; l >= 0 && !(n[l] <= i); l--);
                    l = Math.min(l, o - 2)
                } else {
                    for (l = s; l < o && !(n[l] > i); l++);
                    l = Math.min(l - 1, o - 2)
                }
                var f = (i - n[l]) / (n[l + 1] - n[l]),
                    p = a[l],
                    c = a[l + 1];
                t.x = p[0] * (1 - f) + f * c[0], t.y = p[1] * (1 - f) + f * c[1];
                var h = t.__t < 1 ? c[0] - p[0] : p[0] - c[0],
                    v = t.__t < 1 ? c[1] - p[1] : p[1] - c[1];
                t.rotation = -Math.atan2(v, h) - Math.PI / 2, this._lastFrame = l, this._lastFramePercent = i, t.ignore = !1
            }
        }, e
    }(Rd),
    NR = hZ;
var vZ = function() {
        function r() {
            this.polyline = !1, this.curveness = 0, this.segs = []
        }
        return r
    }(),
    dZ = function(r) {
        L(e, r);

        function e(t) {
            var i = r.call(this, t) || this;
            return i._off = 0, i.hoverDataIdx = -1, i
        }
        return e.prototype.reset = function() {
            this.notClear = !1, this._off = 0
        }, e.prototype.getDefaultStyle = function() {
            return {
                stroke: "#000",
                fill: null
            }
        }, e.prototype.getDefaultShape = function() {
            return new vZ
        }, e.prototype.buildPath = function(t, i) {
            var a = i.segs,
                n = i.curveness,
                o;
            if (i.polyline)
                for (o = this._off; o < a.length;) {
                    var s = a[o++];
                    if (s > 0) {
                        t.moveTo(a[o++], a[o++]);
                        for (var l = 1; l < s; l++) t.lineTo(a[o++], a[o++])
                    }
                } else
                    for (o = this._off; o < a.length;) {
                        var u = a[o++],
                            f = a[o++],
                            p = a[o++],
                            c = a[o++];
                        if (t.moveTo(u, f), n > 0) {
                            var h = (u + p) / 2 - (f - c) * n,
                                v = (f + c) / 2 - (p - u) * n;
                            t.quadraticCurveTo(h, v, p, c)
                        } else t.lineTo(p, c)
                    }
            this.incremental && (this._off = o, this.notClear = !0)
        }, e.prototype.findDataIndex = function(t, i) {
            var a = this.shape,
                n = a.segs,
                o = a.curveness,
                s = this.style.lineWidth;
            if (a.polyline)
                for (var l = 0, u = 0; u < n.length;) {
                    var f = n[u++];
                    if (f > 0)
                        for (var p = n[u++], c = n[u++], h = 1; h < f; h++) {
                            var v = n[u++],
                                d = n[u++];
                            if (va(p, c, v, d, s, t, i)) return l
                        }
                    l++
                } else
                    for (var l = 0, u = 0; u < n.length;) {
                        var p = n[u++],
                            c = n[u++],
                            v = n[u++],
                            d = n[u++];
                        if (o > 0) {
                            var m = (p + v) / 2 - (c - d) * o,
                                g = (c + d) / 2 - (v - p) * o;
                            if (Wc(p, c, m, g, v, d, s, t, i)) return l
                        } else if (va(p, c, v, d, s, t, i)) return l;
                        l++
                    }
            return -1
        }, e.prototype.contain = function(t, i) {
            var a = this.transformCoordToLocal(t, i),
                n = this.getBoundingRect();
            if (t = a[0], i = a[1], n.contain(t, i)) {
                var o = this.hoverDataIdx = this.findDataIndex(t, i);
                return o >= 0
            }
            return this.hoverDataIdx = -1, !1
        }, e.prototype.getBoundingRect = function() {
            var t = this._rect;
            if (!t) {
                for (var i = this.shape, a = i.segs, n = 1 / 0, o = 1 / 0, s = -1 / 0, l = -1 / 0, u = 0; u < a.length;) {
                    var f = a[u++],
                        p = a[u++];
                    n = Math.min(f, n), s = Math.max(f, s), o = Math.min(p, o), l = Math.max(p, l)
                }
                t = this._rect = new it(n, o, s, l)
            }
            return t
        }, e
    }(st),
    mZ = function() {
        function r() {
            this.group = new J
        }
        return r.prototype.updateData = function(e) {
            this._clear();
            var t = this._create();
            t.setShape({
                segs: e.getLayout("linesPoints")
            }), this._setCommon(t, e)
        }, r.prototype.incrementalPrepareUpdate = function(e) {
            this.group.removeAll(), this._clear()
        }, r.prototype.incrementalUpdate = function(e, t) {
            var i = this._newAdded[0],
                a = t.getLayout("linesPoints"),
                n = i && i.shape.segs;
            if (n && n.length < 2e4) {
                var o = n.length,
                    s = new Float32Array(o + a.length);
                s.set(n), s.set(a, o), i.setShape({
                    segs: s
                })
            } else {
                this._newAdded = [];
                var l = this._create();
                l.incremental = !0, l.setShape({
                    segs: a
                }), this._setCommon(l, t), l.__startIndex = e.start
            }
        }, r.prototype.remove = function() {
            this._clear()
        }, r.prototype.eachRendered = function(e) {
            this._newAdded[0] && e(this._newAdded[0])
        }, r.prototype._create = function() {
            var e = new dZ({
                cursor: "default",
                ignoreCoarsePointer: !0
            });
            return this._newAdded.push(e), this.group.add(e), e
        }, r.prototype._setCommon = function(e, t, i) {
            var a = t.hostModel;
            e.setShape({
                polyline: a.get("polyline"),
                curveness: a.get(["lineStyle", "curveness"])
            }), e.useStyle(a.getModel("lineStyle").getLineStyle()), e.style.strokeNoScale = !0;
            var n = t.getVisual("style");
            n && n.stroke && e.setStyle("stroke", n.stroke), e.setStyle("fill", null);
            var o = et(e);
            o.seriesIndex = a.seriesIndex, e.on("mousemove", function(s) {
                o.dataIndex = null;
                var l = e.hoverDataIdx;
                l > 0 && (o.dataIndex = l + e.__startIndex)
            })
        }, r.prototype._clear = function() {
            this._newAdded = [], this.group.removeAll()
        }, r
    }(),
    OR = mZ;
var gZ = {
        seriesType: "lines",
        plan: ni(),
        reset: function(r) {
            var e = r.coordinateSystem;
            if (e) {
                var t = r.get("polyline"),
                    i = r.pipelineContext.large;
                return {
                    progress: function(a, n) {
                        var o = [];
                        if (i) {
                            var s = void 0,
                                l = a.end - a.start;
                            if (t) {
                                for (var u = 0, f = a.start; f < a.end; f++) u += r.getLineCoordsCount(f);
                                s = new Float32Array(l + u * 2)
                            } else s = new Float32Array(l * 4);
                            for (var p = 0, c = [], f = a.start; f < a.end; f++) {
                                var h = r.getLineCoords(f, o);
                                t && (s[p++] = h);
                                for (var v = 0; v < h; v++) c = e.dataToPoint(o[v], !1, c), s[p++] = c[0], s[p++] = c[1]
                            }
                            n.setLayout("linesPoints", s)
                        } else
                            for (var f = a.start; f < a.end; f++) {
                                var d = n.getItemModel(f),
                                    h = r.getLineCoords(f, o),
                                    m = [];
                                if (t)
                                    for (var g = 0; g < h; g++) m.push(e.dataToPoint(o[g]));
                                else {
                                    m[0] = e.dataToPoint(o[0]), m[1] = e.dataToPoint(o[1]);
                                    var y = d.get(["lineStyle", "curveness"]); + y && (m[2] = [(m[0][0] + m[1][0]) / 2 - (m[0][1] - m[1][1]) * y, (m[0][1] + m[1][1]) / 2 - (m[1][0] - m[0][0]) * y])
                                }
                                n.setItemLayout(f, m)
                            }
                    }
                }
            }
        }
    },
    Od = gZ;
var yZ = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.render = function(t, i, a) {
            var n = t.getData(),
                o = this._updateLineDraw(n, t),
                s = t.get("zlevel"),
                l = t.get(["effect", "trailLength"]),
                u = a.getZr(),
                f = u.painter.getType() === "svg";
            f || u.painter.getLayer(s).clear(!0), this._lastZlevel != null && !f && u.configLayer(this._lastZlevel, {
                motionBlur: !1
            }), this._showEffect(t) && l > 0 && (f || u.configLayer(s, {
                motionBlur: !0,
                lastFrameAlpha: Math.max(Math.min(l / 10 + .9, 1), 0)
            })), o.updateData(n);
            var p = t.get("clip", !0) && Ta(t.coordinateSystem, !1, t);
            p ? this.group.setClipPath(p) : this.group.removeClipPath(), this._lastZlevel = s, this._finished = !0
        }, e.prototype.incrementalPrepareRender = function(t, i, a) {
            var n = t.getData(),
                o = this._updateLineDraw(n, t);
            o.incrementalPrepareUpdate(n), this._clearLayer(a), this._finished = !1
        }, e.prototype.incrementalRender = function(t, i, a) {
            this._lineDraw.incrementalUpdate(t, i.getData()), this._finished = t.end === i.getData().count()
        }, e.prototype.eachRendered = function(t) {
            this._lineDraw && this._lineDraw.eachRendered(t)
        }, e.prototype.updateTransform = function(t, i, a) {
            var n = t.getData(),
                o = t.pipelineContext;
            if (!this._finished || o.large || o.progressiveRender) return {
                update: !0
            };
            var s = Od.reset(t, i, a);
            s.progress && s.progress({
                start: 0,
                end: n.count(),
                count: n.count()
            }, n), this._lineDraw.updateLayout(), this._clearLayer(a)
        }, e.prototype._updateLineDraw = function(t, i) {
            var a = this._lineDraw,
                n = this._showEffect(i),
                o = !!i.get("polyline"),
                s = i.pipelineContext,
                l = s.large;
            return (!a || n !== this._hasEffet || o !== this._isPolyline || l !== this._isLargeDraw) && (a && a.remove(), a = this._lineDraw = l ? new OR : new eu(o ? n ? NR : Nd : n ? Rd : tu), this._hasEffet = n, this._isPolyline = o, this._isLargeDraw = l), this.group.add(a.group), a
        }, e.prototype._showEffect = function(t) {
            return !!t.get(["effect", "show"])
        }, e.prototype._clearLayer = function(t) {
            var i = t.getZr(),
                a = i.painter.getType() === "svg";
            !a && this._lastZlevel != null && i.painter.getLayer(this._lastZlevel).clear(!0)
        }, e.prototype.remove = function(t, i) {
            this._lineDraw && this._lineDraw.remove(), this._lineDraw = null, this._clearLayer(i)
        }, e.prototype.dispose = function(t, i) {
            this.remove(t, i)
        }, e.type = "lines", e
    }(At),
    zR = yZ;
var xZ = typeof Uint32Array > "u" ? Array : Uint32Array,
    _Z = typeof Float64Array > "u" ? Array : Float64Array;

function kR(r) {
    var e = r.data;
    e && e[0] && e[0][0] && e[0][0].coord && (r.data = k(e, function(t) {
        var i = [t[0].coord, t[1].coord],
            a = {
                coords: i
            };
        return t[0].name && (a.fromName = t[0].name), t[1].name && (a.toName = t[1].name), vo([a, t[0], t[1]])
    }))
}
var SZ = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t.visualStyleAccessPath = "lineStyle", t.visualDrawType = "stroke", t
        }
        return e.prototype.init = function(t) {
            t.data = t.data || [], kR(t);
            var i = this._processFlatCoordsArray(t.data);
            this._flatCoords = i.flatCoords, this._flatCoordsOffset = i.flatCoordsOffset, i.flatCoords && (t.data = new Float32Array(i.count)), r.prototype.init.apply(this, arguments)
        }, e.prototype.mergeOption = function(t) {
            if (kR(t), t.data) {
                var i = this._processFlatCoordsArray(t.data);
                this._flatCoords = i.flatCoords, this._flatCoordsOffset = i.flatCoordsOffset, i.flatCoords && (t.data = new Float32Array(i.count))
            }
            r.prototype.mergeOption.apply(this, arguments)
        }, e.prototype.appendData = function(t) {
            var i = this._processFlatCoordsArray(t.data);
            i.flatCoords && (this._flatCoords ? (this._flatCoords = na(this._flatCoords, i.flatCoords), this._flatCoordsOffset = na(this._flatCoordsOffset, i.flatCoordsOffset)) : (this._flatCoords = i.flatCoords, this._flatCoordsOffset = i.flatCoordsOffset), t.data = new Float32Array(i.count)), this.getRawData().appendData(t.data)
        }, e.prototype._getCoordsFromItemModel = function(t) {
            var i = this.getData().getItemModel(t),
                a = i.option instanceof Array ? i.option : i.getShallow("coords");
            return a
        }, e.prototype.getLineCoordsCount = function(t) {
            return this._flatCoordsOffset ? this._flatCoordsOffset[t * 2 + 1] : this._getCoordsFromItemModel(t).length
        }, e.prototype.getLineCoords = function(t, i) {
            if (this._flatCoordsOffset) {
                for (var a = this._flatCoordsOffset[t * 2], n = this._flatCoordsOffset[t * 2 + 1], o = 0; o < n; o++) i[o] = i[o] || [], i[o][0] = this._flatCoords[a + o * 2], i[o][1] = this._flatCoords[a + o * 2 + 1];
                return n
            } else {
                for (var s = this._getCoordsFromItemModel(t), o = 0; o < s.length; o++) i[o] = i[o] || [], i[o][0] = s[o][0], i[o][1] = s[o][1];
                return s.length
            }
        }, e.prototype._processFlatCoordsArray = function(t) {
            var i = 0;
            if (this._flatCoords && (i = this._flatCoords.length), vt(t[0])) {
                for (var a = t.length, n = new xZ(a), o = new _Z(a), s = 0, l = 0, u = 0, f = 0; f < a;) {
                    u++;
                    var p = t[f++];
                    n[l++] = s + i, n[l++] = p;
                    for (var c = 0; c < p; c++) {
                        var h = t[f++],
                            v = t[f++];
                        o[s++] = h, o[s++] = v, f > a
                    }
                }
                return {
                    flatCoordsOffset: new Uint32Array(n.buffer, 0, l),
                    flatCoords: o,
                    count: u
                }
            }
            return {
                flatCoordsOffset: null,
                flatCoords: null,
                count: t.length
            }
        }, e.prototype.getInitialData = function(t, i) {
            if (0) var a;
            var n = new se(["value"], this);
            return n.hasItemOption = !1, n.initData(t.data, [], function(o, s, l, u) {
                if (o instanceof Array) return NaN;
                n.hasItemOption = !0;
                var f = o.value;
                if (f != null) return f instanceof Array ? f[u] : f
            }), n
        }, e.prototype.formatTooltip = function(t, i, a) {
            var n = this.getData(),
                o = n.getItemModel(t),
                s = o.get("name");
            if (s) return s;
            var l = o.get("fromName"),
                u = o.get("toName"),
                f = [];
            return l != null && f.push(l), u != null && f.push(u), Jt("nameValue", {
                name: f.join(" > ")
            })
        }, e.prototype.preventIncremental = function() {
            return !!this.get(["effect", "show"])
        }, e.prototype.getProgressive = function() {
            var t = this.option.progressive;
            return t ? ? (this.option.large ? 1e4 : this.get("progressive"))
        }, e.prototype.getProgressiveThreshold = function() {
            var t = this.option.progressiveThreshold;
            return t ? ? (this.option.large ? 2e4 : this.get("progressiveThreshold"))
        }, e.prototype.getZLevelKey = function() {
            var t = this.getModel("effect"),
                i = t.get("trailLength");
            return this.getData().count() > this.getProgressiveThreshold() ? this.id : t.get("show") && i > 0 ? i + "" : ""
        }, e.type = "series.lines", e.dependencies = ["grid", "polar", "geo", "calendar"], e.defaultOption = {
            coordinateSystem: "geo",
            z: 2,
            legendHoverLink: !0,
            xAxisIndex: 0,
            yAxisIndex: 0,
            symbol: ["none", "none"],
            symbolSize: [10, 10],
            geoIndex: 0,
            effect: {
                show: !1,
                period: 4,
                constantSpeed: 0,
                symbol: "circle",
                symbolSize: 3,
                loop: !0,
                trailLength: .2
            },
            large: !1,
            largeThreshold: 2e3,
            polyline: !1,
            clip: !0,
            label: {
                show: !1,
                position: "end"
            },
            lineStyle: {
                opacity: .5
            }
        }, e
    }(Lt),
    UR = SZ;

function zd(r) {
    return r instanceof Array || (r = [r, r]), r
}
var bZ = {
        seriesType: "lines",
        reset: function(r) {
            var e = zd(r.get("symbol")),
                t = zd(r.get("symbolSize")),
                i = r.getData();
            i.setVisual("fromSymbol", e && e[0]), i.setVisual("toSymbol", e && e[1]), i.setVisual("fromSymbolSize", t && t[0]), i.setVisual("toSymbolSize", t && t[1]);

            function a(n, o) {
                var s = n.getItemModel(o),
                    l = zd(s.getShallow("symbol", !0)),
                    u = zd(s.getShallow("symbolSize", !0));
                l[0] && n.setItemVisual(o, "fromSymbol", l[0]), l[1] && n.setItemVisual(o, "toSymbol", l[1]), u[0] && n.setItemVisual(o, "fromSymbolSize", u[0]), u[1] && n.setItemVisual(o, "toSymbolSize", u[1])
            }
            return {
                dataEach: i.hasItemOption ? a : null
            }
        }
    },
    VR = bZ;

function ZS(r) {
    r.registerChartView(zR), r.registerSeriesModel(UR), r.registerLayout(Od), r.registerVisual(VR)
}
var wZ = 256,
    TZ = function() {
        function r() {
            this.blurSize = 30, this.pointSize = 20, this.maxOpacity = 1, this.minOpacity = 0, this._gradientPixels = {
                inRange: null,
                outOfRange: null
            };
            var e = He.createCanvas();
            this.canvas = e
        }
        return r.prototype.update = function(e, t, i, a, n, o) {
            var s = this._getBrush(),
                l = this._getGradient(n, "inRange"),
                u = this._getGradient(n, "outOfRange"),
                f = this.pointSize + this.blurSize,
                p = this.canvas,
                c = p.getContext("2d"),
                h = e.length;
            p.width = t, p.height = i;
            for (var v = 0; v < h; ++v) {
                var d = e[v],
                    m = d[0],
                    g = d[1],
                    y = d[2],
                    x = a(y);
                c.globalAlpha = x, c.drawImage(s, m - f, g - f)
            }
            if (!p.width || !p.height) return p;
            for (var _ = c.getImageData(0, 0, p.width, p.height), S = _.data, b = 0, T = S.length, C = this.minOpacity, A = this.maxOpacity, D = A - C; b < T;) {
                var x = S[b + 3] / 256,
                    M = Math.floor(x * (wZ - 1)) * 4;
                if (x > 0) {
                    var I = o(x) ? l : u;
                    x > 0 && (x = x * D + C), S[b++] = I[M], S[b++] = I[M + 1], S[b++] = I[M + 2], S[b++] = I[M + 3] * x * 256
                } else b += 4
            }
            return c.putImageData(_, 0, 0), p
        }, r.prototype._getBrush = function() {
            var e = this._brushCanvas || (this._brushCanvas = He.createCanvas()),
                t = this.pointSize + this.blurSize,
                i = t * 2;
            e.width = i, e.height = i;
            var a = e.getContext("2d");
            return a.clearRect(0, 0, i, i), a.shadowOffsetX = i, a.shadowBlur = this.blurSize, a.shadowColor = "#000", a.beginPath(), a.arc(-t, t, this.pointSize, 0, Math.PI * 2, !0), a.closePath(), a.fill(), e
        }, r.prototype._getGradient = function(e, t) {
            for (var i = this._gradientPixels, a = i[t] || (i[t] = new Uint8ClampedArray(256 * 4)), n = [0, 0, 0, 0], o = 0, s = 0; s < 256; s++) e[t](s / 255, !0, n), a[o++] = n[0], a[o++] = n[1], a[o++] = n[2], a[o++] = n[3];
            return a
        }, r
    }(),
    BR = TZ;

function CZ(r, e, t) {
    var i = r[1] - r[0];
    e = k(e, function(o) {
        return {
            interval: [(o.interval[0] - r[0]) / i, (o.interval[1] - r[0]) / i]
        }
    });
    var a = e.length,
        n = 0;
    return function(o) {
        var s;
        for (s = n; s < a; s++) {
            var l = e[s].interval;
            if (l[0] <= o && o <= l[1]) {
                n = s;
                break
            }
        }
        if (s === a)
            for (s = n - 1; s >= 0; s--) {
                var l = e[s].interval;
                if (l[0] <= o && o <= l[1]) {
                    n = s;
                    break
                }
            }
        return s >= 0 && s < a && t[s]
    }
}

function AZ(r, e) {
    var t = r[1] - r[0];
    return e = [(e[0] - r[0]) / t, (e[1] - r[0]) / t],
        function(i) {
            return i >= e[0] && i <= e[1]
        }
}

function FR(r) {
    var e = r.dimensions;
    return e[0] === "lng" && e[1] === "lat"
}
var DZ = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.render = function(t, i, a) {
            var n;
            i.eachComponent("visualMap", function(s) {
                s.eachTargetSeries(function(l) {
                    l === t && (n = s)
                })
            }), this._progressiveEls = null, this.group.removeAll();
            var o = t.coordinateSystem;
            o.type === "cartesian2d" || o.type === "calendar" ? this._renderOnCartesianAndCalendar(t, a, 0, t.getData().count()) : FR(o) && this._renderOnGeo(o, t, n, a)
        }, e.prototype.incrementalPrepareRender = function(t, i, a) {
            this.group.removeAll()
        }, e.prototype.incrementalRender = function(t, i, a, n) {
            var o = i.coordinateSystem;
            o && (FR(o) ? this.render(i, a, n) : (this._progressiveEls = [], this._renderOnCartesianAndCalendar(i, n, t.start, t.end, !0)))
        }, e.prototype.eachRendered = function(t) {
            dr(this._progressiveEls || this.group, t)
        }, e.prototype._renderOnCartesianAndCalendar = function(t, i, a, n, o) {
            var s = t.coordinateSystem,
                l = Ei(s, "cartesian2d"),
                u, f, p, c;
            if (l) {
                var h = s.getAxis("x"),
                    v = s.getAxis("y");
                u = h.getBandWidth() + .5, f = v.getBandWidth() + .5, p = h.scale.getExtent(), c = v.scale.getExtent()
            }
            for (var d = this.group, m = t.getData(), g = t.getModel(["emphasis", "itemStyle"]).getItemStyle(), y = t.getModel(["blur", "itemStyle"]).getItemStyle(), x = t.getModel(["select", "itemStyle"]).getItemStyle(), _ = t.get(["itemStyle", "borderRadius"]), S = Ft(t), b = t.getModel("emphasis"), T = b.get("focus"), C = b.get("blurScope"), A = b.get("disabled"), D = l ? [m.mapDimension("x"), m.mapDimension("y"), m.mapDimension("value")] : [m.mapDimension("time"), m.mapDimension("value")], M = a; M < n; M++) {
                var I = void 0,
                    E = m.getItemVisual(M, "style");
                if (l) {
                    var P = m.get(D[0], M),
                        R = m.get(D[1], M);
                    if (isNaN(m.get(D[2], M)) || isNaN(P) || isNaN(R) || P < p[0] || P > p[1] || R < c[0] || R > c[1]) continue;
                    var N = s.dataToPoint([P, R]);
                    I = new ht({
                        shape: {
                            x: N[0] - u / 2,
                            y: N[1] - f / 2,
                            width: u,
                            height: f
                        },
                        style: E
                    })
                } else {
                    if (isNaN(m.get(D[1], M))) continue;
                    I = new ht({
                        z2: 1,
                        shape: s.dataToRect([m.get(D[0], M)]).contentShape,
                        style: E
                    })
                }
                if (m.hasItemOption) {
                    var V = m.getItemModel(M),
                        U = V.getModel("emphasis");
                    g = U.getModel("itemStyle").getItemStyle(), y = V.getModel(["blur", "itemStyle"]).getItemStyle(), x = V.getModel(["select", "itemStyle"]).getItemStyle(), _ = V.get(["itemStyle", "borderRadius"]), T = U.get("focus"), C = U.get("blurScope"), A = U.get("disabled"), S = Ft(V)
                }
                I.shape.r = _;
                var B = t.getRawValue(M),
                    Z = "-";
                B && B[2] != null && (Z = B[2] + ""), Xt(I, S, {
                    labelFetcher: t,
                    labelDataIndex: M,
                    defaultOpacity: E.opacity,
                    defaultText: Z
                }), I.ensureState("emphasis").style = g, I.ensureState("blur").style = y, I.ensureState("select").style = x, Nt(I, T, C, A), I.incremental = o, o && (I.states.emphasis.hoverLayer = !0), d.add(I), m.setItemGraphicEl(M, I), this._progressiveEls && this._progressiveEls.push(I)
            }
        }, e.prototype._renderOnGeo = function(t, i, a, n) {
            var o = a.targetVisuals.inRange,
                s = a.targetVisuals.outOfRange,
                l = i.getData(),
                u = this._hmLayer || this._hmLayer || new BR;
            u.blurSize = i.get("blurSize"), u.pointSize = i.get("pointSize"), u.minOpacity = i.get("minOpacity"), u.maxOpacity = i.get("maxOpacity");
            var f = t.getViewRect().clone(),
                p = t.getRoamTransform();
            f.applyTransform(p);
            var c = Math.max(f.x, 0),
                h = Math.max(f.y, 0),
                v = Math.min(f.width + f.x, n.getWidth()),
                d = Math.min(f.height + f.y, n.getHeight()),
                m = v - c,
                g = d - h,
                y = [l.mapDimension("lng"), l.mapDimension("lat"), l.mapDimension("value")],
                x = l.mapArray(y, function(T, C, A) {
                    var D = t.dataToPoint([T, C]);
                    return D[0] -= c, D[1] -= h, D.push(A), D
                }),
                _ = a.getExtent(),
                S = a.type === "visualMap.continuous" ? AZ(_, a.option.range) : CZ(_, a.getPieceList(), a.option.selected);
            u.update(x, m, g, o.color.getNormalizer(), {
                inRange: o.color.getColorMapper(),
                outOfRange: s.color.getColorMapper()
            }, S);
            var b = new Zt({
                style: {
                    width: m,
                    height: g,
                    x: c,
                    y: h,
                    image: u.canvas
                },
                silent: !0
            });
            this.group.add(b)
        }, e.type = "heatmap", e
    }(At),
    GR = DZ;
var MZ = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.getInitialData = function(t, i) {
            return ze(null, this, {
                generateCoord: "value"
            })
        }, e.prototype.preventIncremental = function() {
            var t = ga.get(this.get("coordinateSystem"));
            if (t && t.dimensions) return t.dimensions[0] === "lng" && t.dimensions[1] === "lat"
        }, e.type = "series.heatmap", e.dependencies = ["grid", "geo", "calendar"], e.defaultOption = {
            coordinateSystem: "cartesian2d",
            z: 2,
            geoIndex: 0,
            blurSize: 30,
            pointSize: 20,
            maxOpacity: 1,
            minOpacity: 0,
            select: {
                itemStyle: {
                    borderColor: "#212121"
                }
            }
        }, e
    }(Lt),
    HR = MZ;

function XS(r) {
    r.registerChartView(GR), r.registerSeriesModel(HR)
}
var LZ = ["itemStyle", "borderWidth"],
    WR = [{
        xy: "x",
        wh: "width",
        index: 0,
        posDesc: ["left", "right"]
    }, {
        xy: "y",
        wh: "height",
        index: 1,
        posDesc: ["top", "bottom"]
    }],
    qS = new je,
    IZ = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.render = function(t, i, a) {
            var n = this.group,
                o = t.getData(),
                s = this._data,
                l = t.coordinateSystem,
                u = l.getBaseAxis(),
                f = u.isHorizontal(),
                p = l.master.getRect(),
                c = {
                    ecSize: {
                        width: a.getWidth(),
                        height: a.getHeight()
                    },
                    seriesModel: t,
                    coordSys: l,
                    coordSysExtent: [
                        [p.x, p.x + p.width],
                        [p.y, p.y + p.height]
                    ],
                    isHorizontal: f,
                    valueDim: WR[+f],
                    categoryDim: WR[1 - +f]
                };
            o.diff(s).add(function(v) {
                if (o.hasValue(v)) {
                    var d = ZR(o, v),
                        m = YR(o, v, d, c),
                        g = XR(o, c, m);
                    o.setItemGraphicEl(v, g), n.add(g), KR(g, c, m)
                }
            }).update(function(v, d) {
                var m = s.getItemGraphicEl(d);
                if (!o.hasValue(v)) {
                    n.remove(m);
                    return
                }
                var g = ZR(o, v),
                    y = YR(o, v, g, c),
                    x = rN(o, y);
                m && x !== m.__pictorialShapeStr && (n.remove(m), o.setItemGraphicEl(v, null), m = null), m ? kZ(m, c, y) : m = XR(o, c, y, !0), o.setItemGraphicEl(v, m), m.__pictorialSymbolMeta = y, n.add(m), KR(m, c, y)
            }).remove(function(v) {
                var d = s.getItemGraphicEl(v);
                d && qR(s, v, d.__pictorialSymbolMeta.animationModel, d)
            }).execute();
            var h = t.get("clip", !0) ? Ta(t.coordinateSystem, !1, t) : null;
            return h ? n.setClipPath(h) : n.removeClipPath(), this._data = o, this.group
        }, e.prototype.remove = function(t, i) {
            var a = this.group,
                n = this._data;
            t.get("animation") ? n && n.eachItemGraphicEl(function(o) {
                qR(n, et(o).dataIndex, t, o)
            }) : a.removeAll()
        }, e.type = "pictorialBar", e
    }(At);

function YR(r, e, t, i) {
    var a = r.getItemLayout(e),
        n = t.get("symbolRepeat"),
        o = t.get("symbolClip"),
        s = t.get("symbolPosition") || "start",
        l = t.get("symbolRotate"),
        u = (l || 0) * Math.PI / 180 || 0,
        f = t.get("symbolPatternSize") || 2,
        p = t.isAnimationEnabled(),
        c = {
            dataIndex: e,
            layout: a,
            itemModel: t,
            symbolType: r.getItemVisual(e, "symbol") || "circle",
            style: r.getItemVisual(e, "style"),
            symbolClip: o,
            symbolRepeat: n,
            symbolRepeatDirection: t.get("symbolRepeatDirection"),
            symbolPatternSize: f,
            rotation: u,
            animationModel: p ? t : null,
            hoverScale: p && t.get(["emphasis", "scale"]),
            z2: t.getShallow("z", !0) || 0
        };
    EZ(t, n, a, i, c), PZ(r, e, a, n, o, c.boundingLength, c.pxSign, f, i, c), RZ(t, c.symbolScale, u, i, c);
    var h = c.symbolSize,
        v = oi(t.get("symbolOffset"), h);
    return NZ(t, h, a, n, o, v, s, c.valueLineWidth, c.boundingLength, c.repeatCutLength, i, c), c
}

function EZ(r, e, t, i, a) {
    var n = i.valueDim,
        o = r.get("symbolBoundingData"),
        s = i.coordSys.getOtherAxis(i.coordSys.getBaseAxis()),
        l = s.toGlobalCoord(s.dataToCoord(0)),
        u = 1 - +(t[n.wh] <= 0),
        f;
    if (z(o)) {
        var p = [KS(s, o[0]) - l, KS(s, o[1]) - l];
        p[1] < p[0] && p.reverse(), f = p[u]
    } else o != null ? f = KS(s, o) - l : e ? f = i.coordSysExtent[n.index][u] - l : f = t[n.wh];
    a.boundingLength = f, e && (a.repeatCutLength = t[n.wh]);
    var c = n.xy === "x",
        h = s.inverse;
    a.pxSign = c && !h || !c && h ? f >= 0 ? 1 : -1 : f > 0 ? 1 : -1
}

function KS(r, e) {
    return r.toGlobalCoord(r.dataToCoord(r.scale.parse(e)))
}

function PZ(r, e, t, i, a, n, o, s, l, u) {
    var f = l.valueDim,
        p = l.categoryDim,
        c = Math.abs(t[p.wh]),
        h = r.getItemVisual(e, "symbolSize"),
        v;
    z(h) ? v = h.slice() : h == null ? v = ["100%", "100%"] : v = [h, h], v[p.index] = W(v[p.index], c), v[f.index] = W(v[f.index], i ? c : Math.abs(n)), u.symbolSize = v;
    var d = u.symbolScale = [v[0] / s, v[1] / s];
    d[f.index] *= (l.isHorizontal ? -1 : 1) * o
}

function RZ(r, e, t, i, a) {
    var n = r.get(LZ) || 0;
    n && (qS.attr({
        scaleX: e[0],
        scaleY: e[1],
        rotation: t
    }), qS.updateTransform(), n /= qS.getLineScale(), n *= e[i.valueDim.index]), a.valueLineWidth = n || 0
}

function NZ(r, e, t, i, a, n, o, s, l, u, f, p) {
    var c = f.categoryDim,
        h = f.valueDim,
        v = p.pxSign,
        d = Math.max(e[h.index] + s, 0),
        m = d;
    if (i) {
        var g = Math.abs(l),
            y = Kt(r.get("symbolMargin"), "15%") + "",
            x = !1;
        y.lastIndexOf("!") === y.length - 1 && (x = !0, y = y.slice(0, y.length - 1));
        var _ = W(y, e[h.index]),
            S = Math.max(d + _ * 2, 0),
            b = x ? 0 : _ * 2,
            T = Uo(i),
            C = T ? i : jR((g + b) / S),
            A = g - C * d;
        _ = A / 2 / (x ? C : Math.max(C - 1, 1)), S = d + _ * 2, b = x ? 0 : _ * 2, !T && i !== "fixed" && (C = u ? jR((Math.abs(u) + b) / S) : 0), m = C * S - b, p.repeatTimes = C, p.symbolMargin = _
    }
    var D = v * (m / 2),
        M = p.pathPosition = [];
    M[c.index] = t[c.wh] / 2, M[h.index] = o === "start" ? D : o === "end" ? l - D : l / 2, n && (M[0] += n[0], M[1] += n[1]);
    var I = p.bundlePosition = [];
    I[c.index] = t[c.xy], I[h.index] = t[h.xy];
    var E = p.barRectShape = O({}, t);
    E[h.wh] = v * Math.max(Math.abs(t[h.wh]), Math.abs(M[h.index] + D)), E[c.wh] = t[c.wh];
    var P = p.clipShape = {};
    P[c.xy] = -t[c.xy], P[c.wh] = f.ecSize[c.wh], P[h.xy] = 0, P[h.wh] = t[h.wh]
}

function JR(r) {
    var e = r.symbolPatternSize,
        t = Vt(r.symbolType, -e / 2, -e / 2, e, e);
    return t.attr({
        culling: !0
    }), t.type !== "image" && t.setStyle({
        strokeNoScale: !0
    }), t
}

function QR(r, e, t, i) {
    var a = r.__pictorialBundle,
        n = t.symbolSize,
        o = t.valueLineWidth,
        s = t.pathPosition,
        l = e.valueDim,
        u = t.repeatTimes || 0,
        f = 0,
        p = n[e.valueDim.index] + o + t.symbolMargin * 2;
    for (jS(r, function(d) {
            d.__pictorialAnimationIndex = f, d.__pictorialRepeatTimes = u, f < u ? su(d, null, v(f), t, i) : su(d, null, {
                scaleX: 0,
                scaleY: 0
            }, t, i, function() {
                a.remove(d)
            }), f++
        }); f < u; f++) {
        var c = JR(t);
        c.__pictorialAnimationIndex = f, c.__pictorialRepeatTimes = u, a.add(c);
        var h = v(f);
        su(c, {
            x: h.x,
            y: h.y,
            scaleX: 0,
            scaleY: 0
        }, {
            scaleX: h.scaleX,
            scaleY: h.scaleY,
            rotation: h.rotation
        }, t, i)
    }

    function v(d) {
        var m = s.slice(),
            g = t.pxSign,
            y = d;
        return (t.symbolRepeatDirection === "start" ? g > 0 : g < 0) && (y = u - 1 - d), m[l.index] = p * (y - u / 2 + .5) + s[l.index], {
            x: m[0],
            y: m[1],
            scaleX: t.symbolScale[0],
            scaleY: t.symbolScale[1],
            rotation: t.rotation
        }
    }
}

function $R(r, e, t, i) {
    var a = r.__pictorialBundle,
        n = r.__pictorialMainPath;
    n ? su(n, null, {
        x: t.pathPosition[0],
        y: t.pathPosition[1],
        scaleX: t.symbolScale[0],
        scaleY: t.symbolScale[1],
        rotation: t.rotation
    }, t, i) : (n = r.__pictorialMainPath = JR(t), a.add(n), su(n, {
        x: t.pathPosition[0],
        y: t.pathPosition[1],
        scaleX: 0,
        scaleY: 0,
        rotation: t.rotation
    }, {
        scaleX: t.symbolScale[0],
        scaleY: t.symbolScale[1]
    }, t, i))
}

function tN(r, e, t) {
    var i = O({}, e.barRectShape),
        a = r.__pictorialBarRect;
    a ? su(a, null, {
        shape: i
    }, e, t) : (a = r.__pictorialBarRect = new ht({
        z2: 2,
        shape: i,
        silent: !0,
        style: {
            stroke: "transparent",
            fill: "transparent",
            lineWidth: 0
        }
    }), a.disableMorphing = !0, r.add(a))
}

function eN(r, e, t, i) {
    if (t.symbolClip) {
        var a = r.__pictorialClipPath,
            n = O({}, t.clipShape),
            o = e.valueDim,
            s = t.animationModel,
            l = t.dataIndex;
        if (a) xt(a, {
            shape: n
        }, s, l);
        else {
            n[o.wh] = 0, a = new ht({
                shape: n
            }), r.__pictorialBundle.setClipPath(a), r.__pictorialClipPath = a;
            var u = {};
            u[o.wh] = t.clipShape[o.wh], gt[i ? "updateProps" : "initProps"](a, {
                shape: u
            }, s, l)
        }
    }
}

function ZR(r, e) {
    var t = r.getItemModel(e);
    return t.getAnimationDelayParams = OZ, t.isAnimationEnabled = zZ, t
}

function OZ(r) {
    return {
        index: r.__pictorialAnimationIndex,
        count: r.__pictorialRepeatTimes
    }
}

function zZ() {
    return this.parentModel.isAnimationEnabled() && !!this.getShallow("animation")
}

function XR(r, e, t, i) {
    var a = new J,
        n = new J;
    return a.add(n), a.__pictorialBundle = n, n.x = t.bundlePosition[0], n.y = t.bundlePosition[1], t.symbolRepeat ? QR(a, e, t) : $R(a, e, t), tN(a, t, i), eN(a, e, t, i), a.__pictorialShapeStr = rN(r, t), a.__pictorialSymbolMeta = t, a
}

function kZ(r, e, t) {
    var i = t.animationModel,
        a = t.dataIndex,
        n = r.__pictorialBundle;
    xt(n, {
        x: t.bundlePosition[0],
        y: t.bundlePosition[1]
    }, i, a), t.symbolRepeat ? QR(r, e, t, !0) : $R(r, e, t, !0), tN(r, t, !0), eN(r, e, t, !0)
}

function qR(r, e, t, i) {
    var a = i.__pictorialBarRect;
    a && a.removeTextContent();
    var n = [];
    jS(i, function(o) {
        n.push(o)
    }), i.__pictorialMainPath && n.push(i.__pictorialMainPath), i.__pictorialClipPath && (t = null), w(n, function(o) {
        xi(o, {
            scaleX: 0,
            scaleY: 0
        }, t, e, function() {
            i.parent && i.parent.remove(i)
        })
    }), r.setItemGraphicEl(e, null)
}

function rN(r, e) {
    return [r.getItemVisual(e.dataIndex, "symbol") || "none", !!e.symbolRepeat, !!e.symbolClip].join(":")
}

function jS(r, e, t) {
    w(r.__pictorialBundle.children(), function(i) {
        i !== r.__pictorialBarRect && e.call(t, i)
    })
}

function su(r, e, t, i, a, n) {
    e && r.attr(e), i.symbolClip && !a ? t && r.attr(t) : t && gt[a ? "updateProps" : "initProps"](r, t, i.animationModel, i.dataIndex, n)
}

function KR(r, e, t) {
    var i = t.dataIndex,
        a = t.itemModel,
        n = a.getModel("emphasis"),
        o = n.getModel("itemStyle").getItemStyle(),
        s = a.getModel(["blur", "itemStyle"]).getItemStyle(),
        l = a.getModel(["select", "itemStyle"]).getItemStyle(),
        u = a.getShallow("cursor"),
        f = n.get("focus"),
        p = n.get("blurScope"),
        c = n.get("scale");
    jS(r, function(d) {
        if (d instanceof Zt) {
            var m = d.style;
            d.useStyle(O({
                image: m.image,
                x: m.x,
                y: m.y,
                width: m.width,
                height: m.height
            }, t.style))
        } else d.useStyle(t.style);
        var g = d.ensureState("emphasis");
        g.style = o, c && (g.scaleX = d.scaleX * 1.1, g.scaleY = d.scaleY * 1.1), d.ensureState("blur").style = s, d.ensureState("select").style = l, u && (d.cursor = u), d.z2 = t.z2
    });
    var h = e.valueDim.posDesc[+(t.boundingLength > 0)],
        v = r.__pictorialBarRect;
    v.ignoreClip = !0, Xt(v, Ft(a), {
        labelFetcher: e.seriesModel,
        labelDataIndex: i,
        defaultText: ta(e.seriesModel.getData(), i),
        inheritColor: t.style.fill,
        defaultOpacity: t.style.opacity,
        defaultOutsidePosition: h
    }), Nt(r, f, p, n.get("disabled"))
}

function jR(r) {
    var e = Math.round(r);
    return Math.abs(r - e) < 1e-4 ? e : Math.ceil(r)
}
var iN = IZ;
var UZ = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t.hasSymbolVisual = !0, t.defaultSymbol = "roundRect", t
        }
        return e.prototype.getInitialData = function(t) {
            return t.stack = null, r.prototype.getInitialData.apply(this, arguments)
        }, e.type = "series.pictorialBar", e.dependencies = ["grid"], e.defaultOption = nr(Gl.defaultOption, {
            symbol: "circle",
            symbolSize: null,
            symbolRotate: null,
            symbolPosition: null,
            symbolOffset: null,
            symbolMargin: null,
            symbolRepeat: !1,
            symbolRepeatDirection: "end",
            symbolClip: !1,
            symbolBoundingData: null,
            symbolPatternSize: 400,
            barGap: "-100%",
            clip: !1,
            progressive: 0,
            emphasis: {
                scale: !1
            },
            select: {
                itemStyle: {
                    borderColor: "#212121"
                }
            }
        }), e
    }(Gl),
    aN = UZ;

function JS(r) {
    r.registerChartView(iN), r.registerSeriesModel(aN), r.registerLayout(r.PRIORITY.VISUAL.LAYOUT, rt(gv, "pictorialBar")), r.registerLayout(r.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, yv("pictorialBar"))
}
var VZ = function(r) {
    L(e, r);

    function e() {
        var t = r !== null && r.apply(this, arguments) || this;
        return t.type = e.type, t._layers = [], t
    }
    return e.prototype.render = function(t, i, a) {
        var n = t.getData(),
            o = this,
            s = this.group,
            l = t.getLayerSeries(),
            u = n.getLayout("layoutInfo"),
            f = u.rect,
            p = u.boundaryGap;
        s.x = 0, s.y = f.y + p[0];

        function c(m) {
            return m.name
        }
        var h = new tr(this._layersSeries || [], l, c, c),
            v = [];
        h.add(H(d, this, "add")).update(H(d, this, "update")).remove(H(d, this, "remove")).execute();

        function d(m, g, y) {
            var x = o._layers;
            if (m === "remove") {
                s.remove(x[g]);
                return
            }
            for (var _ = [], S = [], b, T = l[g].indices, C = 0; C < T.length; C++) {
                var A = n.getItemLayout(T[C]),
                    D = A.x,
                    M = A.y0,
                    I = A.y;
                _.push(D, M), S.push(D, M + I), b = n.getItemVisual(T[C], "style")
            }
            var E, P = n.getItemLayout(T[0]),
                R = t.getModel("label"),
                N = R.get("margin"),
                V = t.getModel("emphasis");
            if (m === "add") {
                var U = v[g] = new J;
                E = new Zv({
                    shape: {
                        points: _,
                        stackedOnPoints: S,
                        smooth: .4,
                        stackedOnSmooth: .4,
                        smoothConstraint: !1
                    },
                    z2: 0
                }), U.add(E), s.add(U), t.isAnimationEnabled() && E.setClipPath(BZ(E.getBoundingRect(), t, function() {
                    E.removeClipPath()
                }))
            } else {
                var U = x[y];
                E = U.childAt(0), s.add(U), v[g] = U, xt(E, {
                    shape: {
                        points: _,
                        stackedOnPoints: S
                    }
                }, t), Ae(E)
            }
            Xt(E, Ft(t), {
                labelDataIndex: T[C - 1],
                defaultText: n.getName(T[C - 1]),
                inheritColor: b.fill
            }, {
                normal: {
                    verticalAlign: "middle"
                }
            }), E.setTextConfig({
                position: null,
                local: !0
            });
            var B = E.getTextContent();
            B && (B.x = P.x - N, B.y = P.y0 + P.y / 2), E.useStyle(b), n.setItemGraphicEl(g, E), te(E, t), Nt(E, V.get("focus"), V.get("blurScope"), V.get("disabled"))
        }
        this._layersSeries = l, this._layers = v
    }, e.type = "themeRiver", e
}(At);

function BZ(r, e, t) {
    var i = new ht({
        shape: {
            x: r.x - 10,
            y: r.y - 10,
            width: 0,
            height: r.height + 20
        }
    });
    return Ot(i, {
        shape: {
            x: r.x - 50,
            width: r.width + 100,
            height: r.height + 20
        }
    }, e, t), i
}
var nN = VZ;
var QS = 2,
    FZ = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.init = function(t) {
            r.prototype.init.apply(this, arguments), this.legendVisualProvider = new Aa(H(this.getData, this), H(this.getRawData, this))
        }, e.prototype.fixData = function(t) {
            var i = t.length,
                a = {},
                n = ef(t, function(c) {
                    return a.hasOwnProperty(c[0] + "") || (a[c[0] + ""] = -1), c[2]
                }),
                o = [];
            n.buckets.each(function(c, h) {
                o.push({
                    name: h,
                    dataList: c
                })
            });
            for (var s = o.length, l = 0; l < s; ++l) {
                for (var u = o[l].name, f = 0; f < o[l].dataList.length; ++f) {
                    var p = o[l].dataList[f][0] + "";
                    a[p] = l
                }
                for (var p in a) a.hasOwnProperty(p) && a[p] !== l && (a[p] = l, t[i] = [p, 0, u], i++)
            }
            return t
        }, e.prototype.getInitialData = function(t, i) {
            for (var a = this.getReferringComponents("singleAxis", Ht).models[0], n = a.get("type"), o = wt(t.data, function(v) {
                    return v[2] !== void 0
                }), s = this.fixData(o || []), l = [], u = this.nameMap = Y(), f = 0, p = 0; p < s.length; ++p) l.push(s[p][QS]), u.get(s[p][QS]) || (u.set(s[p][QS], f), f++);
            var c = Mi(s, {
                    coordDimensions: ["single"],
                    dimensionsDefine: [{
                        name: "time",
                        type: vs(n)
                    }, {
                        name: "value",
                        type: "float"
                    }, {
                        name: "name",
                        type: "ordinal"
                    }],
                    encodeDefine: {
                        single: 0,
                        value: 1,
                        itemName: 2
                    }
                }).dimensions,
                h = new se(c, this);
            return h.initData(s), h
        }, e.prototype.getLayerSeries = function() {
            for (var t = this.getData(), i = t.count(), a = [], n = 0; n < i; ++n) a[n] = n;
            var o = t.mapDimension("single"),
                s = ef(a, function(u) {
                    return t.get("name", u)
                }),
                l = [];
            return s.buckets.each(function(u, f) {
                u.sort(function(p, c) {
                    return t.get(o, p) - t.get(o, c)
                }), l.push({
                    name: f,
                    indices: u
                })
            }), l
        }, e.prototype.getAxisTooltipData = function(t, i, a) {
            z(t) || (t = t ? [t] : []);
            for (var n = this.getData(), o = this.getLayerSeries(), s = [], l = o.length, u, f = 0; f < l; ++f) {
                for (var p = Number.MAX_VALUE, c = -1, h = o[f].indices.length, v = 0; v < h; ++v) {
                    var d = n.get(t[0], o[f].indices[v]),
                        m = Math.abs(d - i);
                    m <= p && (u = d, p = m, c = o[f].indices[v])
                }
                s.push(c)
            }
            return {
                dataIndices: s,
                nestestValue: u
            }
        }, e.prototype.formatTooltip = function(t, i, a) {
            var n = this.getData(),
                o = n.getName(t),
                s = n.get(n.mapDimension("value"), t);
            return Jt("nameValue", {
                name: o,
                value: s
            })
        }, e.type = "series.themeRiver", e.dependencies = ["singleAxis"], e.defaultOption = {
            z: 2,
            colorBy: "data",
            coordinateSystem: "singleAxis",
            boundaryGap: ["10%", "10%"],
            singleAxisIndex: 0,
            animationEasing: "linear",
            label: {
                margin: 4,
                show: !0,
                position: "left",
                fontSize: 11
            },
            emphasis: {
                label: {
                    show: !0
                }
            }
        }, e
    }(Lt),
    oN = FZ;

function $S(r, e) {
    r.eachSeriesByType("themeRiver", function(t) {
        var i = t.getData(),
            a = t.coordinateSystem,
            n = {},
            o = a.getRect();
        n.rect = o;
        var s = t.get("boundaryGap"),
            l = a.getAxis();
        if (n.boundaryGap = s, l.orient === "horizontal") {
            s[0] = W(s[0], o.height), s[1] = W(s[1], o.height);
            var u = o.height - s[0] - s[1];
            sN(i, t, u)
        } else {
            s[0] = W(s[0], o.width), s[1] = W(s[1], o.width);
            var f = o.width - s[0] - s[1];
            sN(i, t, f)
        }
        i.setLayout("layoutInfo", n)
    })
}

function sN(r, e, t) {
    if (r.count())
        for (var i = e.coordinateSystem, a = e.getLayerSeries(), n = r.mapDimension("single"), o = r.mapDimension("value"), s = k(a, function(m) {
                return k(m.indices, function(g) {
                    var y = i.dataToPoint(r.get(n, g));
                    return y[1] = r.get(o, g), y
                })
            }), l = GZ(s), u = l.y0, f = t / l.max, p = a.length, c = a[0].indices.length, h, v = 0; v < c; ++v) {
            h = u[v] * f, r.setItemLayout(a[0].indices[v], {
                layerIndex: 0,
                x: s[0][v][0],
                y0: h,
                y: s[0][v][1] * f
            });
            for (var d = 1; d < p; ++d) h += s[d - 1][v][1] * f, r.setItemLayout(a[d].indices[v], {
                layerIndex: d,
                x: s[d][v][0],
                y0: h,
                y: s[d][v][1] * f
            })
        }
}

function GZ(r) {
    for (var e = r.length, t = r[0].length, i = [], a = [], n = 0, o = 0; o < t; ++o) {
        for (var s = 0, l = 0; l < e; ++l) s += r[l][o][1];
        s > n && (n = s), i.push(s)
    }
    for (var u = 0; u < t; ++u) a[u] = (n - i[u]) / 2;
    n = 0;
    for (var f = 0; f < t; ++f) {
        var p = i[f] + a[f];
        p > n && (n = p)
    }
    return {
        y0: a,
        max: n
    }
}

function t1(r) {
    r.registerChartView(nN), r.registerSeriesModel(oN), r.registerLayout($S), r.registerProcessor(ra("themeRiver"))
}
var HZ = 2,
    WZ = 4,
    YZ = function(r) {
        L(e, r);

        function e(t, i, a, n) {
            var o = r.call(this) || this;
            o.z2 = HZ, o.textConfig = {
                inside: !0
            }, et(o).seriesIndex = i.seriesIndex;
            var s = new dt({
                z2: WZ,
                silent: t.getModel().get(["label", "silent"])
            });
            return o.setTextContent(s), o.updateData(!0, t, i, a, n), o
        }
        return e.prototype.updateData = function(t, i, a, n, o) {
            this.node = i, i.piece = this, a = a || this._seriesModel, n = n || this._ecModel;
            var s = this;
            et(s).dataIndex = i.dataIndex;
            var l = i.getModel(),
                u = l.getModel("emphasis"),
                f = i.getLayout(),
                p = O({}, f);
            p.label = null;
            var c = i.getVisual("style");
            c.lineJoin = "bevel";
            var h = i.getVisual("decal");
            h && (c.decal = ji(h, o));
            var v = Ca(l.getModel("itemStyle"), p, !0);
            O(p, v), w(Oe, function(y) {
                var x = s.ensureState(y),
                    _ = l.getModel([y, "itemStyle"]);
                x.style = _.getItemStyle();
                var S = Ca(_, p);
                S && (x.shape = S)
            }), t ? (s.setShape(p), s.shape.r = f.r0, Ot(s, {
                shape: {
                    r: f.r
                }
            }, a, i.dataIndex)) : (xt(s, {
                shape: p
            }, a), Ae(s)), s.useStyle(c), this._updateLabel(a);
            var d = l.getShallow("cursor");
            d && s.attr("cursor", d), this._seriesModel = a || this._seriesModel, this._ecModel = n || this._ecModel;
            var m = u.get("focus"),
                g = m === "relative" ? na(i.getAncestorsIndices(), i.getDescendantIndices()) : m === "ancestor" ? i.getAncestorsIndices() : m === "descendant" ? i.getDescendantIndices() : m;
            Nt(this, g, u.get("blurScope"), u.get("disabled"))
        }, e.prototype._updateLabel = function(t) {
            var i = this,
                a = this.node.getModel(),
                n = a.getModel("label"),
                o = this.node.getLayout(),
                s = o.endAngle - o.startAngle,
                l = (o.startAngle + o.endAngle) / 2,
                u = Math.cos(l),
                f = Math.sin(l),
                p = this,
                c = p.getTextContent(),
                h = this.node.dataIndex,
                v = n.get("minAngle") / 180 * Math.PI,
                d = n.get("show") && !(v != null && Math.abs(s) < v);
            c.ignore = !d, w(In, function(g) {
                var y = g === "normal" ? a.getModel("label") : a.getModel([g, "label"]),
                    x = g === "normal",
                    _ = x ? c : c.ensureState(g),
                    S = t.getFormattedLabel(h, g);
                x && (S = S || i.node.name), _.style = zt(y, {}, null, g !== "normal", !0), S && (_.style.text = S);
                var b = y.get("show");
                b != null && !x && (_.ignore = !b);
                var T = m(y, "position"),
                    C = x ? p : p.states[g],
                    A = C.style.fill;
                C.textConfig = {
                    outsideFill: y.get("color") === "inherit" ? A : null,
                    inside: T !== "outside"
                };
                var D, M = m(y, "distance") || 0,
                    I = m(y, "align"),
                    E = m(y, "rotate"),
                    P = Math.PI * .5,
                    R = Math.PI * 1.5,
                    N = Ke(E === "tangential" ? Math.PI / 2 - l : l),
                    V = N > P && !Va(N - P) && N < R;
                T === "outside" ? (D = o.r + M, I = V ? "right" : "left") : !I || I === "center" ? (s === 2 * Math.PI && o.r0 === 0 ? D = 0 : D = (o.r + o.r0) / 2, I = "center") : I === "left" ? (D = o.r0 + M, I = V ? "right" : "left") : I === "right" && (D = o.r - M, I = V ? "left" : "right"), _.style.align = I, _.style.verticalAlign = m(y, "verticalAlign") || "middle", _.x = D * u + o.cx, _.y = D * f + o.cy;
                var U = 0;
                E === "radial" ? U = Ke(-l) + (V ? Math.PI : 0) : E === "tangential" ? U = Ke(Math.PI / 2 - l) + (V ? Math.PI : 0) : vt(E) && (U = E * Math.PI / 180), _.rotation = Ke(U)
            });

            function m(g, y) {
                var x = g.get(y);
                return x ? ? n.get(y)
            }
            c.dirtyStyle()
        }, e
    }(pe),
    e1 = YZ;
var kd = "sunburstRootToNode",
    lN = "sunburstHighlight",
    ZZ = "sunburstUnhighlight";

function uN(r) {
    r.registerAction({
        type: kd,
        update: "updateView"
    }, function(e, t) {
        t.eachComponent({
            mainType: "series",
            subType: "sunburst",
            query: e
        }, i);

        function i(a, n) {
            var o = sn(e, [kd], a);
            if (o) {
                var s = a.getViewRoot();
                s && (e.direction = Kl(s, o.node) ? "rollUp" : "drillDown"), a.resetViewRoot(o.node)
            }
        }
    }), r.registerAction({
        type: lN,
        update: "none"
    }, function(e, t, i) {
        e = O({}, e), t.eachComponent({
            mainType: "series",
            subType: "sunburst",
            query: e
        }, a);

        function a(n) {
            var o = sn(e, [lN], n);
            o && (e.dataIndex = o.node.dataIndex)
        }
        i.dispatchAction(O(e, {
            type: "highlight"
        }))
    }), r.registerAction({
        type: ZZ,
        update: "updateView"
    }, function(e, t, i) {
        e = O({}, e), i.dispatchAction(O(e, {
            type: "downplay"
        }))
    })
}
var XZ = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.render = function(t, i, a, n) {
            var o = this;
            this.seriesModel = t, this.api = a, this.ecModel = i;
            var s = t.getData(),
                l = s.tree.root,
                u = t.getViewRoot(),
                f = this.group,
                p = t.get("renderLabelForZeroData"),
                c = [];
            u.eachNode(function(y) {
                c.push(y)
            });
            var h = this._oldChildren || [];
            v(c, h), g(l, u), this._initEvents(), this._oldChildren = c;

            function v(y, x) {
                if (y.length === 0 && x.length === 0) return;
                new tr(x, y, _, _).add(S).update(S).remove(rt(S, null)).execute();

                function _(b) {
                    return b.getId()
                }

                function S(b, T) {
                    var C = b == null ? null : y[b],
                        A = T == null ? null : x[T];
                    d(C, A)
                }
            }

            function d(y, x) {
                if (!p && y && !y.getValue() && (y = null), y !== l && x !== l) {
                    if (x && x.piece) y ? (x.piece.updateData(!1, y, t, i, a), s.setItemGraphicEl(y.dataIndex, x.piece)) : m(x);
                    else if (y) {
                        var _ = new e1(y, t, i, a);
                        f.add(_), s.setItemGraphicEl(y.dataIndex, _)
                    }
                }
            }

            function m(y) {
                y && y.piece && (f.remove(y.piece), y.piece = null)
            }

            function g(y, x) {
                x.depth > 0 ? (o.virtualPiece ? o.virtualPiece.updateData(!1, y, t, i, a) : (o.virtualPiece = new e1(y, t, i, a), f.add(o.virtualPiece)), x.piece.off("click"), o.virtualPiece.on("click", function(_) {
                    o._rootToNode(x.parentNode)
                })) : o.virtualPiece && (f.remove(o.virtualPiece), o.virtualPiece = null)
            }
        }, e.prototype._initEvents = function() {
            var t = this;
            this.group.off("click"), this.group.on("click", function(i) {
                var a = !1,
                    n = t.seriesModel.getViewRoot();
                n.eachNode(function(o) {
                    if (!a && o.piece && o.piece === i.target) {
                        var s = o.getModel().get("nodeClick");
                        if (s === "rootToNode") t._rootToNode(o);
                        else if (s === "link") {
                            var l = o.getModel(),
                                u = l.get("link");
                            if (u) {
                                var f = l.get("target", !0) || "_blank";
                                os(u, f)
                            }
                        }
                        a = !0
                    }
                })
            })
        }, e.prototype._rootToNode = function(t) {
            t !== this.seriesModel.getViewRoot() && this.api.dispatchAction({
                type: kd,
                from: this.uid,
                seriesId: this.seriesModel.id,
                targetNode: t
            })
        }, e.prototype.containPoint = function(t, i) {
            var a = i.getData(),
                n = a.getItemLayout(0);
            if (n) {
                var o = t[0] - n.cx,
                    s = t[1] - n.cy,
                    l = Math.sqrt(o * o + s * s);
                return l <= n.r && l >= n.r0
            }
        }, e.type = "sunburst", e
    }(At),
    fN = XZ;
var qZ = function(r) {
    L(e, r);

    function e() {
        var t = r !== null && r.apply(this, arguments) || this;
        return t.type = e.type, t.ignoreStyleOnData = !0, t
    }
    return e.prototype.getInitialData = function(t, i) {
        var a = {
            name: t.name,
            children: t.data
        };
        pN(a);
        var n = this._levelModels = k(t.levels || [], function(l) {
                return new Dt(l, this, i)
            }, this),
            o = ql.createTree(a, this, s);

        function s(l) {
            l.wrapMethod("getItemModel", function(u, f) {
                var p = o.getNodeByDataIndex(f),
                    c = n[p.depth];
                return c && (u.parentModel = c), u
            })
        }
        return o.data
    }, e.prototype.optionUpdated = function() {
        this.resetViewRoot()
    }, e.prototype.getDataParams = function(t) {
        var i = r.prototype.getDataParams.apply(this, arguments),
            a = this.getData().tree.getNodeByDataIndex(t);
        return i.treePathInfo = to(a, this), i
    }, e.prototype.getLevelModel = function(t) {
        return this._levelModels && this._levelModels[t.depth]
    }, e.prototype.getViewRoot = function() {
        return this._viewRoot
    }, e.prototype.resetViewRoot = function(t) {
        t ? this._viewRoot = t : t = this._viewRoot;
        var i = this.getRawData().tree.root;
        (!t || t !== i && !i.contains(t)) && (this._viewRoot = i)
    }, e.prototype.enableAriaDecal = function() {
        xp(this)
    }, e.type = "series.sunburst", e.defaultOption = {
        z: 2,
        center: ["50%", "50%"],
        radius: [0, "75%"],
        clockwise: !0,
        startAngle: 90,
        minAngle: 0,
        stillShowZeroSum: !0,
        nodeClick: "rootToNode",
        renderLabelForZeroData: !1,
        label: {
            rotate: "radial",
            show: !0,
            opacity: 1,
            align: "center",
            position: "inside",
            distance: 5,
            silent: !0
        },
        itemStyle: {
            borderWidth: 1,
            borderColor: "white",
            borderType: "solid",
            shadowBlur: 0,
            shadowColor: "rgba(0, 0, 0, 0.2)",
            shadowOffsetX: 0,
            shadowOffsetY: 0,
            opacity: 1
        },
        emphasis: {
            focus: "descendant"
        },
        blur: {
            itemStyle: {
                opacity: .2
            },
            label: {
                opacity: .1
            }
        },
        animationType: "expansion",
        animationDuration: 1e3,
        animationDurationUpdate: 500,
        data: [],
        sort: "desc"
    }, e
}(Lt);

function pN(r) {
    var e = 0;
    w(r.children, function(i) {
        pN(i);
        var a = i.value;
        z(a) && (a = a[0]), e += a
    });
    var t = r.value;
    z(t) && (t = t[0]), (t == null || isNaN(t)) && (t = e), t < 0 && (t = 0), z(r.value) ? r.value[0] = t : r.value = t
}
var cN = qZ;
var hN = Math.PI / 180;

function r1(r, e, t) {
    e.eachSeriesByType(r, function(i) {
        var a = i.get("center"),
            n = i.get("radius");
        z(n) || (n = [0, n]), z(a) || (a = [a, a]);
        var o = t.getWidth(),
            s = t.getHeight(),
            l = Math.min(o, s),
            u = W(a[0], o),
            f = W(a[1], s),
            p = W(n[0], l / 2),
            c = W(n[1], l / 2),
            h = -i.get("startAngle") * hN,
            v = i.get("minAngle") * hN,
            d = i.getData().tree.root,
            m = i.getViewRoot(),
            g = m.depth,
            y = i.get("sort");
        y != null && vN(m, y);
        var x = 0;
        w(m.children, function(N) {
            !isNaN(N.getValue()) && x++
        });
        var _ = m.getValue(),
            S = Math.PI / (_ || x) * 2,
            b = m.depth > 0,
            T = m.height - (b ? -1 : 1),
            C = (c - p) / (T || 1),
            A = i.get("clockwise"),
            D = i.get("stillShowZeroSum"),
            M = A ? 1 : -1,
            I = function(N, V) {
                if (N) {
                    var U = V;
                    if (N !== d) {
                        var B = N.getValue(),
                            Z = _ === 0 && D ? S : B * S;
                        Z < v && (Z = v), U = V + M * Z;
                        var K = N.depth - g - (b ? -1 : 1),
                            tt = p + C * K,
                            pt = p + C * (K + 1),
                            ct = i.getLevelModel(N);
                        if (ct) {
                            var bt = ct.get("r0", !0),
                                qt = ct.get("r", !0),
                                ve = ct.get("radius", !0);
                            ve != null && (bt = ve[0], qt = ve[1]), bt != null && (tt = W(bt, l / 2)), qt != null && (pt = W(qt, l / 2))
                        }
                        N.setLayout({
                            angle: Z,
                            startAngle: V,
                            endAngle: U,
                            clockwise: A,
                            cx: u,
                            cy: f,
                            r0: tt,
                            r: pt
                        })
                    }
                    if (N.children && N.children.length) {
                        var Mt = 0;
                        w(N.children, function(mt) {
                            Mt += I(mt, V + Mt)
                        })
                    }
                    return U - V
                }
            };
        if (b) {
            var E = p,
                P = p + C,
                R = Math.PI * 2;
            d.setLayout({
                angle: R,
                startAngle: h,
                endAngle: h + R,
                clockwise: A,
                cx: u,
                cy: f,
                r0: E,
                r: P
            })
        }
        I(m, h)
    })
}

function vN(r, e) {
    var t = r.children || [];
    r.children = KZ(t, e), t.length && w(r.children, function(i) {
        vN(i, e)
    })
}

function KZ(r, e) {
    if (X(e)) {
        var t = k(r, function(a, n) {
            var o = a.getValue();
            return {
                params: {
                    depth: a.depth,
                    height: a.height,
                    dataIndex: a.dataIndex,
                    getValue: function() {
                        return o
                    }
                },
                index: n
            }
        });
        return t.sort(function(a, n) {
            return e(a.params, n.params)
        }), k(t, function(a) {
            return r[a.index]
        })
    } else {
        var i = e === "asc";
        return r.sort(function(a, n) {
            var o = (a.getValue() - n.getValue()) * (i ? 1 : -1);
            return o === 0 ? (a.dataIndex - n.dataIndex) * (i ? -1 : 1) : o
        })
    }
}

function i1(r) {
    var e = {};

    function t(i, a, n) {
        for (var o = i; o && o.depth > 1;) o = o.parentNode;
        var s = a.getColorFromPalette(o.name || o.dataIndex + "", e);
        return i.depth > 1 && F(s) && (s = Bu(s, (i.depth - 1) / (n - 1) * .5)), s
    }
    r.eachSeriesByType("sunburst", function(i) {
        var a = i.getData(),
            n = a.tree;
        n.eachNode(function(o) {
            var s = o.getModel(),
                l = s.getModel("itemStyle").getItemStyle();
            l.fill || (l.fill = t(o, i, n.root.height));
            var u = a.ensureUniqueItemVisual(o.dataIndex, "style");
            O(u, l)
        })
    })
}

function a1(r) {
    r.registerChartView(fN), r.registerSeriesModel(cN), r.registerLayout(rt(r1, "sunburst")), r.registerProcessor(rt(ra, "sunburst")), r.registerVisual(i1), uN(r)
}
var n1 = {
        color: "fill",
        borderColor: "stroke"
    },
    dN = {
        symbol: 1,
        symbolSize: 1,
        symbolKeepAspect: 1,
        legendIcon: 1,
        visualMeta: 1,
        liftZ: 1,
        decal: 1
    },
    Ma = lt(),
    jZ = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.optionUpdated = function() {
            this.currentZLevel = this.get("zlevel", !0), this.currentZ = this.get("z", !0)
        }, e.prototype.getInitialData = function(t, i) {
            return ze(null, this)
        }, e.prototype.getDataParams = function(t, i, a) {
            var n = r.prototype.getDataParams.call(this, t, i);
            return a && (n.info = Ma(a).info), n
        }, e.type = "series.custom", e.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"], e.defaultOption = {
            coordinateSystem: "cartesian2d",
            z: 2,
            legendHoverLink: !0,
            clip: !1
        }, e
    }(Lt),
    mN = jZ;

function JZ(r, e) {
    return e = e || [0, 0], k(["x", "y"], function(t, i) {
        var a = this.getAxis(t),
            n = e[i],
            o = r[i] / 2;
        return a.type === "category" ? a.getBandWidth() : Math.abs(a.dataToCoord(n - o) - a.dataToCoord(n + o))
    }, this)
}

function o1(r) {
    var e = r.master.getRect();
    return {
        coordSys: {
            type: "cartesian2d",
            x: e.x,
            y: e.y,
            width: e.width,
            height: e.height
        },
        api: {
            coord: function(t) {
                return r.dataToPoint(t)
            },
            size: H(JZ, r)
        }
    }
}

function QZ(r, e) {
    return e = e || [0, 0], k([0, 1], function(t) {
        var i = e[t],
            a = r[t] / 2,
            n = [],
            o = [];
        return n[t] = i - a, o[t] = i + a, n[1 - t] = o[1 - t] = e[1 - t], Math.abs(this.dataToPoint(n)[t] - this.dataToPoint(o)[t])
    }, this)
}

function s1(r) {
    var e = r.getBoundingRect();
    return {
        coordSys: {
            type: "geo",
            x: e.x,
            y: e.y,
            width: e.width,
            height: e.height,
            zoom: r.getZoom()
        },
        api: {
            coord: function(t) {
                return r.dataToPoint(t)
            },
            size: H(QZ, r)
        }
    }
}

function $Z(r, e) {
    var t = this.getAxis(),
        i = e instanceof Array ? e[0] : e,
        a = (r instanceof Array ? r[0] : r) / 2;
    return t.type === "category" ? t.getBandWidth() : Math.abs(t.dataToCoord(i - a) - t.dataToCoord(i + a))
}

function l1(r) {
    var e = r.getRect();
    return {
        coordSys: {
            type: "singleAxis",
            x: e.x,
            y: e.y,
            width: e.width,
            height: e.height
        },
        api: {
            coord: function(t) {
                return r.dataToPoint(t)
            },
            size: H($Z, r)
        }
    }
}

function t7(r, e) {
    return e = e || [0, 0], k(["Radius", "Angle"], function(t, i) {
        var a = "get" + t + "Axis",
            n = this[a](),
            o = e[i],
            s = r[i] / 2,
            l = n.type === "category" ? n.getBandWidth() : Math.abs(n.dataToCoord(o - s) - n.dataToCoord(o + s));
        return t === "Angle" && (l = l * Math.PI / 180), l
    }, this)
}

function u1(r) {
    var e = r.getRadiusAxis(),
        t = r.getAngleAxis(),
        i = e.getExtent();
    return i[0] > i[1] && i.reverse(), {
        coordSys: {
            type: "polar",
            cx: r.cx,
            cy: r.cy,
            r: i[1],
            r0: i[0]
        },
        api: {
            coord: function(a) {
                var n = e.dataToRadius(a[0]),
                    o = t.dataToAngle(a[1]),
                    s = r.coordToPoint([n, o]);
                return s.push(n, o * Math.PI / 180), s
            },
            size: H(t7, r)
        }
    }
}

function f1(r) {
    var e = r.getRect(),
        t = r.getRangeInfo();
    return {
        coordSys: {
            type: "calendar",
            x: e.x,
            y: e.y,
            width: e.width,
            height: e.height,
            cellWidth: r.getCellWidth(),
            cellHeight: r.getCellHeight(),
            rangeInfo: {
                start: t.start,
                end: t.end,
                weeks: t.weeks,
                dayCount: t.allDay
            }
        },
        api: {
            coord: function(i, a) {
                return r.dataToPoint(i, a)
            }
        }
    }
}

function Ud(r, e, t, i) {
    return r && (r.legacy || r.legacy !== !1 && !t && !i && e !== "tspan" && (e === "text" || $(r, "text")))
}

function Vd(r, e, t) {
    var i = r,
        a, n, o;
    if (e === "text") o = i;
    else {
        o = {}, $(i, "text") && (o.text = i.text), $(i, "rich") && (o.rich = i.rich), $(i, "textFill") && (o.fill = i.textFill), $(i, "textStroke") && (o.stroke = i.textStroke), $(i, "fontFamily") && (o.fontFamily = i.fontFamily), $(i, "fontSize") && (o.fontSize = i.fontSize), $(i, "fontStyle") && (o.fontStyle = i.fontStyle), $(i, "fontWeight") && (o.fontWeight = i.fontWeight), n = {
            type: "text",
            style: o,
            silent: !0
        }, a = {};
        var s = $(i, "textPosition");
        t ? a.position = s ? i.textPosition : "inside" : s && (a.position = i.textPosition), $(i, "textPosition") && (a.position = i.textPosition), $(i, "textOffset") && (a.offset = i.textOffset), $(i, "textRotation") && (a.rotation = i.textRotation), $(i, "textDistance") && (a.distance = i.textDistance)
    }
    return gN(o, r), w(o.rich, function(l) {
        gN(l, l)
    }), {
        textConfig: a,
        textContent: n
    }
}

function gN(r, e) {
    e && (e.font = e.textFont || e.font, $(e, "textStrokeWidth") && (r.lineWidth = e.textStrokeWidth), $(e, "textAlign") && (r.align = e.textAlign), $(e, "textVerticalAlign") && (r.verticalAlign = e.textVerticalAlign), $(e, "textLineHeight") && (r.lineHeight = e.textLineHeight), $(e, "textWidth") && (r.width = e.textWidth), $(e, "textHeight") && (r.height = e.textHeight), $(e, "textBackgroundColor") && (r.backgroundColor = e.textBackgroundColor), $(e, "textPadding") && (r.padding = e.textPadding), $(e, "textBorderColor") && (r.borderColor = e.textBorderColor), $(e, "textBorderWidth") && (r.borderWidth = e.textBorderWidth), $(e, "textBorderRadius") && (r.borderRadius = e.textBorderRadius), $(e, "textBoxShadowColor") && (r.shadowColor = e.textBoxShadowColor), $(e, "textBoxShadowBlur") && (r.shadowBlur = e.textBoxShadowBlur), $(e, "textBoxShadowOffsetX") && (r.shadowOffsetX = e.textBoxShadowOffsetX), $(e, "textBoxShadowOffsetY") && (r.shadowOffsetY = e.textBoxShadowOffsetY))
}

function p1(r, e, t) {
    var i = r;
    i.textPosition = i.textPosition || t.position || "inside", t.offset != null && (i.textOffset = t.offset), t.rotation != null && (i.textRotation = t.rotation), t.distance != null && (i.textDistance = t.distance);
    var a = i.textPosition.indexOf("inside") >= 0,
        n = r.fill || "#000";
    yN(i, e);
    var o = i.textFill == null;
    return a ? o && (i.textFill = t.insideFill || "#fff", !i.textStroke && t.insideStroke && (i.textStroke = t.insideStroke), !i.textStroke && (i.textStroke = n), i.textStrokeWidth == null && (i.textStrokeWidth = 2)) : (o && (i.textFill = r.fill || t.outsideFill || "#000"), !i.textStroke && t.outsideStroke && (i.textStroke = t.outsideStroke)), i.text = e.text, i.rich = e.rich, w(e.rich, function(s) {
        yN(s, s)
    }), i
}

function yN(r, e) {
    e && ($(e, "fill") && (r.textFill = e.fill), $(e, "stroke") && (r.textStroke = e.fill), $(e, "lineWidth") && (r.textStrokeWidth = e.lineWidth), $(e, "font") && (r.font = e.font), $(e, "fontStyle") && (r.fontStyle = e.fontStyle), $(e, "fontWeight") && (r.fontWeight = e.fontWeight), $(e, "fontSize") && (r.fontSize = e.fontSize), $(e, "fontFamily") && (r.fontFamily = e.fontFamily), $(e, "align") && (r.textAlign = e.align), $(e, "verticalAlign") && (r.textVerticalAlign = e.verticalAlign), $(e, "lineHeight") && (r.textLineHeight = e.lineHeight), $(e, "width") && (r.textWidth = e.width), $(e, "height") && (r.textHeight = e.height), $(e, "backgroundColor") && (r.textBackgroundColor = e.backgroundColor), $(e, "padding") && (r.textPadding = e.padding), $(e, "borderColor") && (r.textBorderColor = e.borderColor), $(e, "borderWidth") && (r.textBorderWidth = e.borderWidth), $(e, "borderRadius") && (r.textBorderRadius = e.borderRadius), $(e, "shadowColor") && (r.textBoxShadowColor = e.shadowColor), $(e, "shadowBlur") && (r.textBoxShadowBlur = e.shadowBlur), $(e, "shadowOffsetX") && (r.textBoxShadowOffsetX = e.shadowOffsetX), $(e, "shadowOffsetY") && (r.textBoxShadowOffsetY = e.shadowOffsetY), $(e, "textShadowColor") && (r.textShadowColor = e.textShadowColor), $(e, "textShadowBlur") && (r.textShadowBlur = e.textShadowBlur), $(e, "textShadowOffsetX") && (r.textShadowOffsetX = e.textShadowOffsetX), $(e, "textShadowOffsetY") && (r.textShadowOffsetY = e.textShadowOffsetY))
}
var bN = {
        position: ["x", "y"],
        scale: ["scaleX", "scaleY"],
        origin: ["originX", "originY"]
    },
    xN = ft(bN),
    ZCt = Me(Jr, function(r, e) {
        return r[e] = 1, r
    }, {}),
    XCt = Jr.join(", "),
    Pp = ["", "style", "shape", "extra"],
    lu = lt();

function c1(r, e, t, i, a) {
    var n = r + "Animation",
        o = ma(r, i, a) || {},
        s = lu(e).userDuring;
    return o.duration > 0 && (o.during = s ? H(n7, {
        el: e,
        userDuring: s
    }) : null, o.setToFinal = !0, o.scope = r), O(o, t[n]), o
}

function uu(r, e, t, i) {
    i = i || {};
    var a = i.dataIndex,
        n = i.isInit,
        o = i.clearStyle,
        s = t.isAnimationEnabled(),
        l = lu(r),
        u = e.style;
    l.userDuring = e.during;
    var f = {},
        p = {};
    if (s7(r, e, p), SN("shape", e, p), SN("extra", e, p), !n && s && (o7(r, e, f), _N("shape", r, e, f), _N("extra", r, e, f), l7(r, e, u, f)), p.style = u, e7(r, p, o), i7(r, e), s)
        if (n) {
            var c = {};
            w(Pp, function(v) {
                var d = v ? e[v] : e;
                d && d.enterFrom && (v && (c[v] = c[v] || {}), O(v ? c[v] : c, d.enterFrom))
            });
            var h = c1("enter", r, e, t, a);
            h.duration > 0 && r.animateFrom(c, h)
        } else r7(r, e, a || 0, t, f);
    h1(r, e), u ? r.dirty() : r.markRedraw()
}

function h1(r, e) {
    for (var t = lu(r).leaveToProps, i = 0; i < Pp.length; i++) {
        var a = Pp[i],
            n = a ? e[a] : e;
        n && n.leaveTo && (t || (t = lu(r).leaveToProps = {}), a && (t[a] = t[a] || {}), O(a ? t[a] : t, n.leaveTo))
    }
}

function fu(r, e, t, i) {
    if (r) {
        var a = r.parent,
            n = lu(r).leaveToProps;
        if (n) {
            var o = c1("update", r, e, t, 0);
            o.done = function() {
                a.remove(r), i && i()
            }, r.animateTo(n, o)
        } else a.remove(r), i && i()
    }
}

function io(r) {
    return r === "all"
}

function e7(r, e, t) {
    var i = e.style;
    if (!r.isGroup && i) {
        if (t) {
            r.useStyle({});
            for (var a = r.animators, n = 0; n < a.length; n++) {
                var o = a[n];
                o.targetName === "style" && o.changeTarget(r.style)
            }
        }
        r.setStyle(i)
    }
    e && (e.style = null, e && r.attr(e), e.style = i)
}

function r7(r, e, t, i, a) {
    if (a) {
        var n = c1("update", r, e, i, t);
        n.duration > 0 && r.animateFrom(a, n)
    }
}

function i7(r, e) {
    $(e, "silent") && (r.silent = e.silent), $(e, "ignore") && (r.ignore = e.ignore), r instanceof ye && $(e, "invisible") && (r.invisible = e.invisible), r instanceof st && $(e, "autoBatch") && (r.autoBatch = e.autoBatch)
}
var La = {},
    a7 = {
        setTransform: function(r, e) {
            return La.el[r] = e, this
        },
        getTransform: function(r) {
            return La.el[r]
        },
        setShape: function(r, e) {
            var t = La.el,
                i = t.shape || (t.shape = {});
            return i[r] = e, t.dirtyShape && t.dirtyShape(), this
        },
        getShape: function(r) {
            var e = La.el.shape;
            if (e) return e[r]
        },
        setStyle: function(r, e) {
            var t = La.el,
                i = t.style;
            return i && (i[r] = e, t.dirtyStyle && t.dirtyStyle()), this
        },
        getStyle: function(r) {
            var e = La.el.style;
            if (e) return e[r]
        },
        setExtra: function(r, e) {
            var t = La.el.extra || (La.el.extra = {});
            return t[r] = e, this
        },
        getExtra: function(r) {
            var e = La.el.extra;
            if (e) return e[r]
        }
    };

function n7() {
    var r = this,
        e = r.el;
    if (e) {
        var t = lu(e).userDuring,
            i = r.userDuring;
        if (t !== i) {
            r.el = r.userDuring = null;
            return
        }
        La.el = e, i(a7)
    }
}

function _N(r, e, t, i) {
    var a = t[r];
    if (a) {
        var n = e[r],
            o;
        if (n) {
            var s = t.transition,
                l = a.transition;
            if (l)
                if (!o && (o = i[r] = {}), io(l)) O(o, n);
                else
                    for (var u = Pt(l), f = 0; f < u.length; f++) {
                        var p = u[f],
                            c = n[p];
                        o[p] = c
                    } else if (io(s) || at(s, r) >= 0) {
                        !o && (o = i[r] = {});
                        for (var h = ft(n), f = 0; f < h.length; f++) {
                            var p = h[f],
                                c = n[p];
                            u7(a[p], c) && (o[p] = c)
                        }
                    }
        }
    }
}

function SN(r, e, t) {
    var i = e[r];
    if (i)
        for (var a = t[r] = {}, n = ft(i), o = 0; o < n.length; o++) {
            var s = n[o];
            a[s] = Io(i[s])
        }
}

function o7(r, e, t) {
    for (var i = e.transition, a = io(i) ? Jr : Pt(i || []), n = 0; n < a.length; n++) {
        var o = a[n];
        if (!(o === "style" || o === "shape" || o === "extra")) {
            var s = r[o];
            t[o] = s
        }
    }
}

function s7(r, e, t) {
    for (var i = 0; i < xN.length; i++) {
        var a = xN[i],
            n = bN[a],
            o = e[a];
        o && (t[n[0]] = o[0], t[n[1]] = o[1])
    }
    for (var i = 0; i < Jr.length; i++) {
        var s = Jr[i];
        e[s] != null && (t[s] = e[s])
    }
}

function l7(r, e, t, i) {
    if (t) {
        var a = r.style,
            n;
        if (a) {
            var o = t.transition,
                s = e.transition;
            if (o && !io(o)) {
                var l = Pt(o);
                !n && (n = i.style = {});
                for (var u = 0; u < l.length; u++) {
                    var f = l[u],
                        p = a[f];
                    n[f] = p
                }
            } else if (r.getAnimationStyleProps && (io(s) || io(o) || at(s, "style") >= 0)) {
                var c = r.getAnimationStyleProps(),
                    h = c ? c.style : null;
                if (h) {
                    !n && (n = i.style = {});
                    for (var v = ft(t), u = 0; u < v.length; u++) {
                        var f = v[u];
                        if (h[f]) {
                            var p = a[f];
                            n[f] = p
                        }
                    }
                }
            }
        }
    }
}

function u7(r, e) {
    return ue(r) ? r !== e : r != null && isFinite(r)
}
var wN = lt(),
    f7 = ["percent", "easing", "shape", "style", "extra"];

function Bd(r) {
    r.stopAnimation("keyframe"), r.attr(wN(r))
}

function pu(r, e, t) {
    if (!(!t.isAnimationEnabled() || !e)) {
        if (z(e)) {
            w(e, function(s) {
                pu(r, s, t)
            });
            return
        }
        var i = e.keyframes,
            a = e.duration;
        if (t && a == null) {
            var n = ma("enter", t, 0);
            a = n && n.duration
        }
        if (!(!i || !a)) {
            var o = wN(r);
            w(Pp, function(s) {
                if (!(s && !r[s])) {
                    var l, u = !1;
                    i.sort(function(f, p) {
                        return f.percent - p.percent
                    }), w(i, function(f) {
                        var p = r.animators,
                            c = s ? f[s] : f;
                        if (c) {
                            var h = ft(c);
                            if (s || (h = wt(h, function(m) {
                                    return at(f7, m) < 0
                                })), !!h.length) {
                                l || (l = r.animate(s, e.loop, !0), l.scope = "keyframe");
                                for (var v = 0; v < p.length; v++) p[v] !== l && p[v].targetName === l.targetName && p[v].stopTracks(h);
                                s && (o[s] = o[s] || {});
                                var d = s ? o[s] : o;
                                w(h, function(m) {
                                    d[m] = ((s ? r[s] : r) || {})[m]
                                }), l.whenWithKeys(a * f.percent, c, h, f.easing)
                            }
                        }
                    }), l && l.delay(e.delay || 0).duration(a).start(e.easing)
                }
            })
        }
    }
}
var un = "emphasis",
    ao = "normal",
    x1 = "blur",
    _1 = "select",
    no = [ao, un, x1, _1],
    v1 = {
        normal: ["itemStyle"],
        emphasis: [un, "itemStyle"],
        blur: [x1, "itemStyle"],
        select: [_1, "itemStyle"]
    },
    d1 = {
        normal: ["label"],
        emphasis: [un, "label"],
        blur: [x1, "label"],
        select: [_1, "label"]
    },
    p7 = ["x", "y"],
    c7 = "e\0\0",
    Oi = {
        normal: {},
        emphasis: {},
        blur: {},
        select: {}
    },
    h7 = {
        cartesian2d: o1,
        geo: s1,
        single: l1,
        polar: u1,
        calendar: f1
    };

function g1(r) {
    return r instanceof st
}

function y1(r) {
    return r instanceof ye
}

function v7(r, e) {
    e.copyTransform(r), y1(e) && y1(r) && (e.setStyle(r.style), e.z = r.z, e.z2 = r.z2, e.zlevel = r.zlevel, e.invisible = r.invisible, e.ignore = r.ignore, g1(e) && g1(r) && e.setShape(r.shape))
}
var d7 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.render = function(t, i, a, n) {
            this._progressiveEls = null;
            var o = this._data,
                s = t.getData(),
                l = this.group,
                u = TN(t, s, i, a);
            o || l.removeAll(), s.diff(o).add(function(p) {
                m1(a, null, p, u(p, n), t, l, s)
            }).remove(function(p) {
                var c = o.getItemGraphicEl(p);
                c && fu(c, Ma(c).option, t)
            }).update(function(p, c) {
                var h = o.getItemGraphicEl(c);
                m1(a, h, p, u(p, n), t, l, s)
            }).execute();
            var f = t.get("clip", !0) ? Ta(t.coordinateSystem, !1, t) : null;
            f ? l.setClipPath(f) : l.removeClipPath(), this._data = s
        }, e.prototype.incrementalPrepareRender = function(t, i, a) {
            this.group.removeAll(), this._data = null
        }, e.prototype.incrementalRender = function(t, i, a, n, o) {
            var s = i.getData(),
                l = TN(i, s, a, n),
                u = this._progressiveEls = [];

            function f(h) {
                h.isGroup || (h.incremental = !0, h.ensureState("emphasis").hoverLayer = !0)
            }
            for (var p = t.start; p < t.end; p++) {
                var c = m1(null, null, p, l(p, o), i, this.group, s);
                c && (c.traverse(f), u.push(c))
            }
        }, e.prototype.eachRendered = function(t) {
            dr(this._progressiveEls || this.group, t)
        }, e.prototype.filterForExposedEvent = function(t, i, a, n) {
            var o = i.element;
            if (o == null || a.name === o) return !0;
            for (;
                (a = a.__hostTarget || a.parent) && a !== this.group;)
                if (a.name === o) return !0;
            return !1
        }, e.type = "custom", e
    }(At),
    MN = d7;

function S1(r) {
    var e = r.type,
        t;
    if (e === "path") {
        var i = r.shape,
            a = i.width != null && i.height != null ? {
                x: i.x || 0,
                y: i.y || 0,
                width: i.width,
                height: i.height
            } : null,
            n = EN(i);
        t = Nn(n, null, a, i.layout || "center"), Ma(t).customPathData = n
    } else if (e === "image") t = new Zt({}), Ma(t).customImagePath = r.style.image;
    else if (e === "text") t = new dt({});
    else if (e === "group") t = new J;
    else {
        if (e === "compoundPath") throw new Error('"compoundPath" is not supported yet.');
        var o = es(e);
        if (!o) {
            var s = "";
            kt(s)
        }
        t = new o
    }
    return Ma(t).customGraphicType = e, t.name = r.name, t.z2EmphasisLift = 1, t.z2SelectLift = 1, t
}

function b1(r, e, t, i, a, n, o) {
    Bd(e);
    var s = a && a.normal.cfg;
    s && e.setTextConfig(s), i && i.transition == null && (i.transition = p7);
    var l = i && i.style;
    if (l) {
        if (e.type === "text") {
            var u = l;
            $(u, "textFill") && (u.fill = u.textFill), $(u, "textStroke") && (u.stroke = u.textStroke)
        }
        var f = void 0,
            p = g1(e) ? l.decal : null;
        r && p && (p.dirty = !0, f = ji(p, r)), l.__decalPattern = f
    }
    if (y1(e) && l) {
        var f = l.__decalPattern;
        f && (l.decal = f)
    }
    uu(e, i, n, {
        dataIndex: t,
        isInit: o,
        clearStyle: !0
    }), pu(e, i.keyframeAnimation, n)
}

function LN(r, e, t, i, a) {
    var n = e.isGroup ? null : e,
        o = a && a[r].cfg;
    if (n) {
        var s = n.ensureState(r);
        if (i === !1) {
            var l = n.getState(r);
            l && (l.style = null)
        } else s.style = i || null;
        o && (s.textConfig = o), Gi(n)
    }
}

function m7(r, e, t) {
    if (!r.isGroup) {
        var i = r,
            a = t.currentZ,
            n = t.currentZLevel;
        i.z = a, i.zlevel = n;
        var o = e.z2;
        o != null && (i.z2 = o || 0);
        for (var s = 0; s < no.length; s++) g7(i, e, no[s])
    }
}

function g7(r, e, t) {
    var i = t === ao,
        a = i ? e : Fd(e, t),
        n = a ? a.z2 : null,
        o;
    n != null && (o = i ? r : r.ensureState(t), o.z2 = n || 0)
}

function TN(r, e, t, i) {
    var a = r.get("renderItem"),
        n = r.coordinateSystem,
        o = {};
    n && (o = n.prepareCustoms ? n.prepareCustoms(n) : h7[n.type](n));
    for (var s = q({
            getWidth: i.getWidth,
            getHeight: i.getHeight,
            getZr: i.getZr,
            getDevicePixelRatio: i.getDevicePixelRatio,
            value: _,
            style: b,
            ordinalRawValue: S,
            styleEmphasis: T,
            visual: D,
            barLayout: M,
            currentSeriesIndices: I,
            font: E
        }, o.api || {}), l = {
            context: {},
            seriesId: r.id,
            seriesName: r.name,
            seriesIndex: r.seriesIndex,
            coordSys: o.coordSys,
            dataInsideLength: e.count(),
            encode: y7(r.getData())
        }, u, f, p = {}, c = {}, h = {}, v = {}, d = 0; d < no.length; d++) {
        var m = no[d];
        h[m] = r.getModel(v1[m]), v[m] = r.getModel(d1[m])
    }

    function g(P) {
        return P === u ? f || (f = e.getItemModel(P)) : e.getItemModel(P)
    }

    function y(P, R) {
        return e.hasItemOption ? P === u ? p[R] || (p[R] = g(P).getModel(v1[R])) : g(P).getModel(v1[R]) : h[R]
    }

    function x(P, R) {
        return e.hasItemOption ? P === u ? c[R] || (c[R] = g(P).getModel(d1[R])) : g(P).getModel(d1[R]) : v[R]
    }
    return function(P, R) {
        return u = P, f = null, p = {}, c = {}, a && a(q({
            dataIndexInside: P,
            dataIndex: e.getRawIndex(P),
            actionType: R ? R.type : null
        }, l), s)
    };

    function _(P, R) {
        return R == null && (R = u), e.getStore().get(e.getDimensionIndex(P || 0), R)
    }

    function S(P, R) {
        R == null && (R = u), P = P || 0;
        var N = e.getDimensionInfo(P);
        if (!N) {
            var V = e.getDimensionIndex(P);
            return V >= 0 ? e.getStore().get(V, R) : void 0
        }
        var U = e.get(N.name, R),
            B = N && N.ordinalMeta;
        return B ? B.categories[U] : U
    }

    function b(P, R) {
        R == null && (R = u);
        var N = e.getItemVisual(R, "style"),
            V = N && N.fill,
            U = N && N.opacity,
            B = y(R, ao).getItemStyle();
        V != null && (B.fill = V), U != null && (B.opacity = U);
        var Z = {
                inheritColor: F(V) ? V : "#000"
            },
            K = x(R, ao),
            tt = zt(K, null, Z, !1, !0);
        tt.text = K.getShallow("show") ? ot(r.getFormattedLabel(R, ao), ta(e, R)) : null;
        var pt = yf(K, Z, !1);
        return A(P, B), B = p1(B, tt, pt), P && C(B, P), B.legacy = !0, B
    }

    function T(P, R) {
        R == null && (R = u);
        var N = y(R, un).getItemStyle(),
            V = x(R, un),
            U = zt(V, null, null, !0, !0);
        U.text = V.getShallow("show") ? Le(r.getFormattedLabel(R, un), r.getFormattedLabel(R, ao), ta(e, R)) : null;
        var B = yf(V, null, !0);
        return A(P, N), N = p1(N, U, B), P && C(N, P), N.legacy = !0, N
    }

    function C(P, R) {
        for (var N in R) $(R, N) && (P[N] = R[N])
    }

    function A(P, R) {
        P && (P.textFill && (R.textFill = P.textFill), P.textPosition && (R.textPosition = P.textPosition))
    }

    function D(P, R) {
        if (R == null && (R = u), $(n1, P)) {
            var N = e.getItemVisual(R, "style");
            return N ? N[n1[P]] : null
        }
        if ($(dN, P)) return e.getItemVisual(R, P)
    }

    function M(P) {
        if (n.type === "cartesian2d") {
            var R = n.getBaseAxis();
            return oL(q({
                axis: R
            }, P))
        }
    }

    function I() {
        return t.getCurrentSeriesIndices()
    }

    function E(P) {
        return xl(P, t)
    }
}

function y7(r) {
    var e = {};
    return w(r.dimensions, function(t) {
        var i = r.getDimensionInfo(t);
        if (!i.isExtraCoord) {
            var a = i.coordDim,
                n = e[a] = e[a] || [];
            n[i.coordDimIndex] = r.getDimensionIndex(t)
        }
    }), e
}

function m1(r, e, t, i, a, n, o) {
    if (!i) {
        n.remove(e);
        return
    }
    var s = w1(r, e, t, i, a, n);
    return s && o.setItemGraphicEl(t, s), s && Nt(s, i.focus, i.blurScope, i.emphasisDisabled), s
}

function w1(r, e, t, i, a, n) {
    var o = -1,
        s = e;
    e && IN(e, i, a) && (o = at(n.childrenRef(), e), e = null);
    var l = !e,
        u = e;
    u ? u.clearStates() : (u = S1(i), s && v7(s, u)), i.morph === !1 ? u.disableMorphing = !0 : u.disableMorphing && (u.disableMorphing = !1), Oi.normal.cfg = Oi.normal.conOpt = Oi.emphasis.cfg = Oi.emphasis.conOpt = Oi.blur.cfg = Oi.blur.conOpt = Oi.select.cfg = Oi.select.conOpt = null, Oi.isLegacy = !1, _7(u, t, i, a, l, Oi), x7(u, t, i, a, l), b1(r, u, t, i, Oi, a, l), $(i, "info") && (Ma(u).info = i.info);
    for (var f = 0; f < no.length; f++) {
        var p = no[f];
        if (p !== ao) {
            var c = Fd(i, p),
                h = T1(i, c, p);
            LN(p, u, c, h, Oi)
        }
    }
    return m7(u, i, a), i.type === "group" && S7(r, u, t, i, a), o >= 0 ? n.replaceAt(u, o) : n.add(u), u
}

function IN(r, e, t) {
    var i = Ma(r),
        a = e.type,
        n = e.shape,
        o = e.style;
    return t.isUniversalTransitionEnabled() || a != null && a !== i.customGraphicType || a === "path" && C7(n) && EN(n) !== i.customPathData || a === "image" && $(o, "image") && o.image !== i.customImagePath
}

function x7(r, e, t, i, a) {
    var n = t.clipPath;
    if (n === !1) r && r.getClipPath() && r.removeClipPath();
    else if (n) {
        var o = r.getClipPath();
        o && IN(o, n, i) && (o = null), o || (o = S1(n), r.setClipPath(o)), b1(null, o, e, n, null, i, a)
    }
}

function _7(r, e, t, i, a, n) {
    if (!r.isGroup) {
        CN(t, null, n), CN(t, un, n);
        var o = n.normal.conOpt,
            s = n.emphasis.conOpt,
            l = n.blur.conOpt,
            u = n.select.conOpt;
        if (o != null || s != null || u != null || l != null) {
            var f = r.getTextContent();
            if (o === !1) f && r.removeTextContent();
            else {
                o = n.normal.conOpt = o || {
                    type: "text"
                }, f ? f.clearStates() : (f = S1(o), r.setTextContent(f)), b1(null, f, e, o, null, i, a);
                for (var p = o && o.style, c = 0; c < no.length; c++) {
                    var h = no[c];
                    if (h !== ao) {
                        var v = n[h].conOpt;
                        LN(h, f, v, T1(o, v, h), null)
                    }
                }
                p ? f.dirty() : f.markRedraw()
            }
        }
    }
}

function CN(r, e, t) {
    var i = e ? Fd(r, e) : r,
        a = e ? T1(r, i, un) : r.style,
        n = r.type,
        o = i ? i.textConfig : null,
        s = r.textContent,
        l = s ? e ? Fd(s, e) : s : null;
    if (a && (t.isLegacy || Ud(a, n, !!o, !!l))) {
        t.isLegacy = !0;
        var u = Vd(a, n, !e);
        !o && u.textConfig && (o = u.textConfig), !l && u.textContent && (l = u.textContent)
    }
    if (!e && l) {
        var f = l;
        !f.type && (f.type = "text")
    }
    var p = e ? t[e] : t.normal;
    p.cfg = o, p.conOpt = l
}

function Fd(r, e) {
    return e ? r ? r[e] : null : r
}

function T1(r, e, t) {
    var i = e && e.style;
    return i == null && t === un && r && (i = r.styleEmphasis), i
}

function S7(r, e, t, i, a) {
    var n = i.children,
        o = n ? n.length : 0,
        s = i.$mergeChildren,
        l = s === "byName" || i.diffChildrenByName,
        u = s === !1;
    if (!(!o && !l && !u)) {
        if (l) {
            w7({
                api: r,
                oldChildren: e.children() || [],
                newChildren: n || [],
                dataIndex: t,
                seriesModel: a,
                group: e
            });
            return
        }
        u && e.removeAll();
        for (var f = 0; f < o; f++) {
            var p = n[f],
                c = e.childAt(f);
            p ? (p.ignore == null && (p.ignore = !1), w1(r, c, t, p, a, e)) : c.ignore = !0
        }
        for (var h = e.childCount() - 1; h >= f; h--) {
            var v = e.childAt(h);
            b7(e, v, a)
        }
    }
}

function b7(r, e, t) {
    e && fu(e, Ma(r).option, t)
}

function w7(r) {
    new tr(r.oldChildren, r.newChildren, AN, AN, r).add(DN).update(DN).remove(T7).execute()
}

function AN(r, e) {
    var t = r && r.name;
    return t ? ? c7 + e
}

function DN(r, e) {
    var t = this.context,
        i = r != null ? t.newChildren[r] : null,
        a = e != null ? t.oldChildren[e] : null;
    w1(t.api, a, t.dataIndex, i, t.seriesModel, t.group)
}

function T7(r) {
    var e = this.context,
        t = e.oldChildren[r];
    t && fu(t, Ma(t).option, e.seriesModel)
}

function EN(r) {
    return r && (r.pathData || r.d)
}

function C7(r) {
    return r && ($(r, "pathData") || $(r, "d"))
}

function C1(r) {
    r.registerChartView(MN), r.registerSeriesModel(mN)
}
var Rs = lt(),
    PN = Q,
    A1 = H,
    A7 = function() {
        function r() {
            this._dragging = !1, this.animationThreshold = 15
        }
        return r.prototype.render = function(e, t, i, a) {
            var n = t.get("value"),
                o = t.get("status");
            if (this._axisModel = e, this._axisPointerModel = t, this._api = i, !(!a && this._lastValue === n && this._lastStatus === o)) {
                this._lastValue = n, this._lastStatus = o;
                var s = this._group,
                    l = this._handle;
                if (!o || o === "hide") {
                    s && s.hide(), l && l.hide();
                    return
                }
                s && s.show(), l && l.show();
                var u = {};
                this.makeElOption(u, n, e, t, i);
                var f = u.graphicKey;
                f !== this._lastGraphicKey && this.clear(i), this._lastGraphicKey = f;
                var p = this._moveAnimation = this.determineAnimation(e, t);
                if (!s) s = this._group = new J, this.createPointerEl(s, u, e, t), this.createLabelEl(s, u, e, t), i.getZr().add(s);
                else {
                    var c = rt(RN, t, p);
                    this.updatePointerEl(s, u, c), this.updateLabelEl(s, u, c, t)
                }
                ON(s, t, !0), this._renderHandle(n)
            }
        }, r.prototype.remove = function(e) {
            this.clear(e)
        }, r.prototype.dispose = function(e) {
            this.clear(e)
        }, r.prototype.determineAnimation = function(e, t) {
            var i = t.get("animation"),
                a = e.axis,
                n = a.type === "category",
                o = t.get("snap");
            if (!o && !n) return !1;
            if (i === "auto" || i == null) {
                var s = this.animationThreshold;
                if (n && a.getBandWidth() > s) return !0;
                if (o) {
                    var l = ed(e).seriesDataCount,
                        u = a.getExtent();
                    return Math.abs(u[0] - u[1]) / l > s
                }
                return !1
            }
            return i === !0
        }, r.prototype.makeElOption = function(e, t, i, a, n) {}, r.prototype.createPointerEl = function(e, t, i, a) {
            var n = t.pointer;
            if (n) {
                var o = Rs(e).pointerEl = new gt[n.type](PN(t.pointer));
                e.add(o)
            }
        }, r.prototype.createLabelEl = function(e, t, i, a) {
            if (t.label) {
                var n = Rs(e).labelEl = new dt(PN(t.label));
                e.add(n), NN(n, a)
            }
        }, r.prototype.updatePointerEl = function(e, t, i) {
            var a = Rs(e).pointerEl;
            a && t.pointer && (a.setStyle(t.pointer.style), i(a, {
                shape: t.pointer.shape
            }))
        }, r.prototype.updateLabelEl = function(e, t, i, a) {
            var n = Rs(e).labelEl;
            n && (n.setStyle(t.label.style), i(n, {
                x: t.label.x,
                y: t.label.y
            }), NN(n, a))
        }, r.prototype._renderHandle = function(e) {
            if (!(this._dragging || !this.updateHandleTransform)) {
                var t = this._axisPointerModel,
                    i = this._api.getZr(),
                    a = this._handle,
                    n = t.getModel("handle"),
                    o = t.get("status");
                if (!n.get("show") || !o || o === "hide") {
                    a && i.remove(a), this._handle = null;
                    return
                }
                var s;
                this._handle || (s = !0, a = this._handle = Wi(n.get("icon"), {
                    cursor: "move",
                    draggable: !0,
                    onmousemove: function(u) {
                        Dr(u.event)
                    },
                    onmousedown: A1(this._onHandleDragMove, this, 0, 0),
                    drift: A1(this._onHandleDragMove, this),
                    ondragend: A1(this._onHandleDragEnd, this)
                }), i.add(a)), ON(a, t, !1), a.setStyle(n.getItemStyle(null, ["color", "borderColor", "borderWidth", "opacity", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"]));
                var l = n.get("size");
                z(l) || (l = [l, l]), a.scaleX = l[0] / 2, a.scaleY = l[1] / 2, Ci(this, "_doDispatchAxisPointer", n.get("throttle") || 0, "fixRate"), this._moveHandleToValue(e, s)
            }
        }, r.prototype._moveHandleToValue = function(e, t) {
            RN(this._axisPointerModel, !t && this._moveAnimation, this._handle, D1(this.getHandleTransform(e, this._axisModel, this._axisPointerModel)))
        }, r.prototype._onHandleDragMove = function(e, t) {
            var i = this._handle;
            if (i) {
                this._dragging = !0;
                var a = this.updateHandleTransform(D1(i), [e, t], this._axisModel, this._axisPointerModel);
                this._payloadInfo = a, i.stopAnimation(), i.attr(D1(a)), Rs(i).lastProp = null, this._doDispatchAxisPointer()
            }
        }, r.prototype._doDispatchAxisPointer = function() {
            var e = this._handle;
            if (e) {
                var t = this._payloadInfo,
                    i = this._axisModel;
                this._api.dispatchAction({
                    type: "updateAxisPointer",
                    x: t.cursorPoint[0],
                    y: t.cursorPoint[1],
                    tooltipOption: t.tooltipOption,
                    axesInfo: [{
                        axisDim: i.axis.dim,
                        axisIndex: i.componentIndex
                    }]
                })
            }
        }, r.prototype._onHandleDragEnd = function() {
            this._dragging = !1;
            var e = this._handle;
            if (e) {
                var t = this._axisPointerModel.get("value");
                this._moveHandleToValue(t), this._api.dispatchAction({
                    type: "hideTip"
                })
            }
        }, r.prototype.clear = function(e) {
            this._lastValue = null, this._lastStatus = null;
            var t = e.getZr(),
                i = this._group,
                a = this._handle;
            t && i && (this._lastGraphicKey = null, i && t.remove(i), a && t.remove(a), this._group = null, this._handle = null, this._payloadInfo = null), rn(this, "_doDispatchAxisPointer")
        }, r.prototype.doClear = function() {}, r.prototype.buildLabel = function(e, t, i) {
            return i = i || 0, {
                x: e[i],
                y: e[1 - i],
                width: t[i],
                height: t[1 - i]
            }
        }, r
    }();

function RN(r, e, t, i) {
    zN(Rs(t).lastProp, i) || (Rs(t).lastProp = i, e ? xt(t, i, r) : (t.stopAnimation(), t.attr(i)))
}

function zN(r, e) {
    if (j(r) && j(e)) {
        var t = !0;
        return w(e, function(i, a) {
            t = t && zN(r[a], i)
        }), !!t
    } else return r === e
}

function NN(r, e) {
    r[e.get(["label", "show"]) ? "show" : "hide"]()
}

function D1(r) {
    return {
        x: r.x || 0,
        y: r.y || 0,
        rotation: r.rotation || 0
    }
}

function ON(r, e, t) {
    var i = e.get("z"),
        a = e.get("zlevel");
    r && r.traverse(function(n) {
        n.type !== "group" && (i != null && (n.z = i), a != null && (n.zlevel = a), n.silent = t)
    })
}
var cu = A7;

function hu(r) {
    var e = r.get("type"),
        t = r.getModel(e + "Style"),
        i;
    return e === "line" ? (i = t.getLineStyle(), i.fill = null) : e === "shadow" && (i = t.getAreaStyle(), i.stroke = null), i
}

function M1(r, e, t, i, a) {
    var n = t.get("value"),
        o = L1(n, e.axis, e.ecModel, t.get("seriesDataIndices"), {
            precision: t.get(["label", "precision"]),
            formatter: t.get(["label", "formatter"])
        }),
        s = t.getModel("label"),
        l = ri(s.get("padding") || 0),
        u = s.getFont(),
        f = ua(o, u),
        p = a.position,
        c = f.width + l[1] + l[3],
        h = f.height + l[0] + l[2],
        v = a.align;
    v === "right" && (p[0] -= c), v === "center" && (p[0] -= c / 2);
    var d = a.verticalAlign;
    d === "bottom" && (p[1] -= h), d === "middle" && (p[1] -= h / 2), D7(p, c, h, i);
    var m = s.get("backgroundColor");
    (!m || m === "auto") && (m = e.get(["axisLine", "lineStyle", "color"])), r.label = {
        x: p[0],
        y: p[1],
        style: zt(s, {
            text: o,
            font: u,
            fill: s.getTextColor(),
            padding: l,
            backgroundColor: m
        }),
        z2: 10
    }
}

function D7(r, e, t, i) {
    var a = i.getWidth(),
        n = i.getHeight();
    r[0] = Math.min(r[0] + e, a) - e, r[1] = Math.min(r[1] + t, n) - t, r[0] = Math.max(r[0], 0), r[1] = Math.max(r[1], 0)
}

function L1(r, e, t, i, a) {
    r = e.scale.parse(r);
    var n = e.scale.getLabel({
            value: r
        }, {
            precision: a.precision
        }),
        o = a.formatter;
    if (o) {
        var s = {
            value: rp(e, {
                value: r
            }),
            axisDimension: e.dim,
            axisIndex: e.index,
            seriesData: []
        };
        w(i, function(l) {
            var u = t.getSeriesByIndex(l.seriesIndex),
                f = l.dataIndexInside,
                p = u && u.getDataParams(f);
            p && s.seriesData.push(p)
        }), F(o) ? n = o.replace("{value}", n) : X(o) && (n = o(s))
    }
    return n
}

function Rp(r, e, t) {
    var i = me();
    return cr(i, i, t.rotation), We(i, i, t.position), Je([r.dataToCoord(e), (t.labelOffset || 0) + (t.labelDirection || 1) * (t.labelMargin || 0)], i)
}

function Gd(r, e, t, i, a, n) {
    var o = er.innerTextLayout(t.rotation, 0, t.labelDirection);
    t.labelMargin = a.get(["label", "margin"]), M1(e, i, a, n, {
        position: Rp(i.axis, r, t),
        align: o.textAlign,
        verticalAlign: o.textVerticalAlign
    })
}

function vu(r, e, t) {
    return t = t || 0, {
        x1: r[t],
        y1: r[1 - t],
        x2: e[t],
        y2: e[1 - t]
    }
}

function Hd(r, e, t) {
    return t = t || 0, {
        x: r[t],
        y: r[1 - t],
        width: e[t],
        height: e[1 - t]
    }
}

function I1(r, e, t, i, a, n) {
    return {
        cx: r,
        cy: e,
        r0: t,
        r: i,
        startAngle: a,
        endAngle: n,
        clockwise: !0
    }
}
var M7 = function(r) {
    L(e, r);

    function e() {
        return r !== null && r.apply(this, arguments) || this
    }
    return e.prototype.makeElOption = function(t, i, a, n, o) {
        var s = a.axis,
            l = s.grid,
            u = n.get("type"),
            f = kN(l, s).getOtherAxis(s).getGlobalExtent(),
            p = s.toGlobalCoord(s.dataToCoord(i, !0));
        if (u && u !== "none") {
            var c = hu(n),
                h = L7[u](s, p, f);
            h.style = c, t.graphicKey = h.type, t.pointer = h
        }
        var v = dp(l.model, a);
        Gd(i, t, v, a, n, o)
    }, e.prototype.getHandleTransform = function(t, i, a) {
        var n = dp(i.axis.grid.model, i, {
            labelInside: !1
        });
        n.labelMargin = a.get(["handle", "margin"]);
        var o = Rp(i.axis, t, n);
        return {
            x: o[0],
            y: o[1],
            rotation: n.rotation + (n.labelDirection < 0 ? Math.PI : 0)
        }
    }, e.prototype.updateHandleTransform = function(t, i, a, n) {
        var o = a.axis,
            s = o.grid,
            l = o.getGlobalExtent(!0),
            u = kN(s, o).getOtherAxis(o).getGlobalExtent(),
            f = o.dim === "x" ? 0 : 1,
            p = [t.x, t.y];
        p[f] += i[f], p[f] = Math.min(l[1], p[f]), p[f] = Math.max(l[0], p[f]);
        var c = (u[1] + u[0]) / 2,
            h = [c, c];
        h[f] = p[f];
        var v = [{
            verticalAlign: "middle"
        }, {
            align: "center"
        }];
        return {
            x: p[0],
            y: p[1],
            rotation: t.rotation,
            cursorPoint: h,
            tooltipOption: v[f]
        }
    }, e
}(cu);

function kN(r, e) {
    var t = {};
    return t[e.dim + "AxisIndex"] = e.index, r.getCartesian(t)
}
var L7 = {
    line: function(r, e, t) {
        var i = vu([e, t[0]], [e, t[1]], UN(r));
        return {
            type: "Line",
            subPixelOptimize: !0,
            shape: i
        }
    },
    shadow: function(r, e, t) {
        var i = Math.max(1, r.getBandWidth()),
            a = t[1] - t[0];
        return {
            type: "Rect",
            shape: Hd([e - i / 2, t[0]], [i, a], UN(r))
        }
    }
};

function UN(r) {
    return r.dim === "x" ? 0 : 1
}
var VN = M7;
var I7 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.type = "axisPointer", e.defaultOption = {
            show: "auto",
            z: 50,
            type: "line",
            snap: !1,
            triggerTooltip: !0,
            triggerEmphasis: !0,
            value: null,
            status: null,
            link: [],
            animation: null,
            animationDurationUpdate: 200,
            lineStyle: {
                color: "#B9BEC9",
                width: 1,
                type: "dashed"
            },
            shadowStyle: {
                color: "rgba(210,219,238,0.2)"
            },
            label: {
                show: !0,
                formatter: null,
                precision: "auto",
                margin: 3,
                color: "#fff",
                padding: [5, 7, 5, 7],
                backgroundColor: "auto",
                borderColor: null,
                borderWidth: 0,
                borderRadius: 3
            },
            handle: {
                show: !1,
                icon: "M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z",
                size: 45,
                margin: 50,
                color: "#333",
                shadowBlur: 3,
                shadowColor: "#aaa",
                shadowOffsetX: 0,
                shadowOffsetY: 2,
                throttle: 40
            }
        }, e
    }(yt),
    BN = I7;
var fn = lt(),
    E7 = w;

function Yd(r, e, t) {
    if (!Ct.node) {
        var i = e.getZr();
        fn(i).records || (fn(i).records = {}), P7(i, e);
        var a = fn(i).records[r] || (fn(i).records[r] = {});
        a.handler = t
    }
}

function P7(r, e) {
    if (fn(r).initialized) return;
    fn(r).initialized = !0, t("click", rt(FN, "click")), t("mousemove", rt(FN, "mousemove")), t("globalout", N7);

    function t(i, a) {
        r.on(i, function(n) {
            var o = O7(e);
            E7(fn(r).records, function(s) {
                s && a(s, n, o.dispatchAction)
            }), R7(o.pendings, e)
        })
    }
}

function R7(r, e) {
    var t = r.showTip.length,
        i = r.hideTip.length,
        a;
    t ? a = r.showTip[t - 1] : i && (a = r.hideTip[i - 1]), a && (a.dispatchAction = null, e.dispatchAction(a))
}

function N7(r, e, t) {
    r.handler("leave", null, t)
}

function FN(r, e, t, i) {
    e.handler(r, t, i)
}

function O7(r) {
    var e = {
            showTip: [],
            hideTip: []
        },
        t = function(i) {
            var a = e[i.type];
            a ? a.push(i) : (i.dispatchAction = t, r.dispatchAction(i))
        };
    return {
        dispatchAction: t,
        pendings: e
    }
}

function Np(r, e) {
    if (!Ct.node) {
        var t = e.getZr(),
            i = (fn(t).records || {})[r];
        i && (fn(t).records[r] = null)
    }
}
var z7 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.render = function(t, i, a) {
            var n = i.getComponent("tooltip"),
                o = t.get("triggerOn") || n && n.get("triggerOn") || "mousemove|click";
            Yd("axisPointer", a, function(s, l, u) {
                o !== "none" && (s === "leave" || o.indexOf(s) >= 0) && u({
                    type: "updateAxisPointer",
                    currTrigger: s,
                    x: l && l.offsetX,
                    y: l && l.offsetY
                })
            })
        }, e.prototype.remove = function(t, i) {
            Np("axisPointer", i)
        }, e.prototype.dispose = function(t, i) {
            Np("axisPointer", i)
        }, e.type = "axisPointer", e
    }(It),
    HN = z7;

function Op(r, e) {
    var t = [],
        i = r.seriesIndex,
        a;
    if (i == null || !(a = e.getSeriesByIndex(i))) return {
        point: []
    };
    var n = a.getData(),
        o = vi(n, r);
    if (o == null || o < 0 || z(o)) return {
        point: []
    };
    var s = n.getItemGraphicEl(o),
        l = a.coordinateSystem;
    if (a.getTooltipPosition) t = a.getTooltipPosition(o) || [];
    else if (l && l.dataToPoint)
        if (r.isStacked) {
            var u = l.getBaseAxis(),
                f = l.getOtherAxis(u),
                p = f.dim,
                c = u.dim,
                h = p === "x" || p === "radius" ? 1 : 0,
                v = n.mapDimension(c),
                d = [];
            d[h] = n.get(v, o), d[1 - h] = n.get(n.getCalculationInfo("stackResultDimension"), o), t = l.dataToPoint(d) || []
        } else t = l.dataToPoint(n.getValues(k(l.dimensions, function(g) {
            return n.mapDimension(g)
        }), o)) || [];
    else if (s) {
        var m = s.getBoundingRect().clone();
        m.applyTransform(s.transform), t = [m.x + m.width / 2, m.y + m.height / 2]
    }
    return {
        point: t,
        el: s
    }
}
var WN = lt();

function E1(r, e, t) {
    var i = r.currTrigger,
        a = [r.x, r.y],
        n = r,
        o = r.dispatchAction || H(t.dispatchAction, t),
        s = e.getComponent("axisPointer").coordSysAxesInfo;
    if (s) {
        Zd(a) && (a = Op({
            seriesIndex: n.seriesIndex,
            dataIndex: n.dataIndex
        }, e).point);
        var l = Zd(a),
            u = n.axesInfo,
            f = s.axesInfo,
            p = i === "leave" || Zd(a),
            c = {},
            h = {},
            v = {
                list: [],
                map: {}
            },
            d = {
                showPointer: rt(U7, h),
                showTooltip: rt(V7, v)
            };
        w(s.coordSysMap, function(g, y) {
            var x = l || g.containPoint(a);
            w(s.coordSysAxesInfo[y], function(_, S) {
                var b = _.axis,
                    T = H7(u, _);
                if (!p && x && (!u || T)) {
                    var C = T && T.value;
                    C == null && !l && (C = b.pointToData(a)), C != null && YN(_, C, d, !1, c)
                }
            })
        });
        var m = {};
        return w(f, function(g, y) {
            var x = g.linkGroup;
            x && !h[y] && w(x.axesInfo, function(_, S) {
                var b = h[S];
                if (_ !== g && b) {
                    var T = b.value;
                    x.mapper && (T = g.axis.scale.parse(x.mapper(T, ZN(_), ZN(g)))), m[g.key] = T
                }
            })
        }), w(m, function(g, y) {
            YN(f[y], g, d, !0, c)
        }), B7(h, f, c), F7(v, a, r, o), G7(f, o, t), c
    }
}

function YN(r, e, t, i, a) {
    var n = r.axis;
    if (!(n.scale.isBlank() || !n.containData(e))) {
        if (!r.involveSeries) {
            t.showPointer(r, e);
            return
        }
        var o = k7(e, r),
            s = o.payloadBatch,
            l = o.snapToValue;
        s[0] && a.seriesIndex == null && O(a, s[0]), !i && r.snap && n.containData(l) && l != null && (e = l), t.showPointer(r, e, s), t.showTooltip(r, o, l)
    }
}

function k7(r, e) {
    var t = e.axis,
        i = t.dim,
        a = r,
        n = [],
        o = Number.MAX_VALUE,
        s = -1;
    return w(e.seriesModels, function(l, u) {
        var f = l.getData().mapDimensionsAll(i),
            p, c;
        if (l.getAxisTooltipData) {
            var h = l.getAxisTooltipData(f, r, t);
            c = h.dataIndices, p = h.nestestValue
        } else {
            if (c = l.getData().indicesOfNearest(f[0], r, t.type === "category" ? .5 : null), !c.length) return;
            p = l.getData().get(f[0], c[0])
        }
        if (!(p == null || !isFinite(p))) {
            var v = r - p,
                d = Math.abs(v);
            d <= o && ((d < o || v >= 0 && s < 0) && (o = d, s = v, a = p, n.length = 0), w(c, function(m) {
                n.push({
                    seriesIndex: l.seriesIndex,
                    dataIndexInside: m,
                    dataIndex: l.getData().getRawIndex(m)
                })
            }))
        }
    }), {
        payloadBatch: n,
        snapToValue: a
    }
}

function U7(r, e, t, i) {
    r[e.key] = {
        value: t,
        payloadBatch: i
    }
}

function V7(r, e, t, i) {
    var a = t.payloadBatch,
        n = e.axis,
        o = n.model,
        s = e.axisPointerModel;
    if (!(!e.triggerTooltip || !a.length)) {
        var l = e.coordSys.model,
            u = Wl(l),
            f = r.map[u];
        f || (f = r.map[u] = {
            coordSysId: l.id,
            coordSysIndex: l.componentIndex,
            coordSysType: l.type,
            coordSysMainType: l.mainType,
            dataByAxis: []
        }, r.list.push(f)), f.dataByAxis.push({
            axisDim: n.dim,
            axisIndex: o.componentIndex,
            axisType: o.type,
            axisId: o.id,
            value: i,
            valueLabelOpt: {
                precision: s.get(["label", "precision"]),
                formatter: s.get(["label", "formatter"])
            },
            seriesDataIndices: a.slice()
        })
    }
}

function B7(r, e, t) {
    var i = t.axesInfo = [];
    w(e, function(a, n) {
        var o = a.axisPointerModel.option,
            s = r[n];
        s ? (!a.useHandle && (o.status = "show"), o.value = s.value, o.seriesDataIndices = (s.payloadBatch || []).slice()) : !a.useHandle && (o.status = "hide"), o.status === "show" && i.push({
            axisDim: a.axis.dim,
            axisIndex: a.axis.model.componentIndex,
            value: o.value
        })
    })
}

function F7(r, e, t, i) {
    if (Zd(e) || !r.list.length) {
        i({
            type: "hideTip"
        });
        return
    }
    var a = ((r.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {};
    i({
        type: "showTip",
        escapeConnect: !0,
        x: e[0],
        y: e[1],
        tooltipOption: t.tooltipOption,
        position: t.position,
        dataIndexInside: a.dataIndexInside,
        dataIndex: a.dataIndex,
        seriesIndex: a.seriesIndex,
        dataByCoordSys: r.list
    })
}

function G7(r, e, t) {
    var i = t.getZr(),
        a = "axisPointerLastHighlights",
        n = WN(i)[a] || {},
        o = WN(i)[a] = {};
    w(r, function(u, f) {
        var p = u.axisPointerModel.option;
        p.status === "show" && u.triggerEmphasis && w(p.seriesDataIndices, function(c) {
            var h = c.seriesIndex + " | " + c.dataIndex;
            o[h] = c
        })
    });
    var s = [],
        l = [];
    w(n, function(u, f) {
        !o[f] && l.push(u)
    }), w(o, function(u, f) {
        !n[f] && s.push(u)
    }), l.length && t.dispatchAction({
        type: "downplay",
        escapeConnect: !0,
        notBlur: !0,
        batch: l
    }), s.length && t.dispatchAction({
        type: "highlight",
        escapeConnect: !0,
        notBlur: !0,
        batch: s
    })
}

function H7(r, e) {
    for (var t = 0; t < (r || []).length; t++) {
        var i = r[t];
        if (e.axis.dim === i.axisDim && e.axis.model.componentIndex === i.axisIndex) return i
    }
}

function ZN(r) {
    var e = r.axis.model,
        t = {},
        i = t.axisDim = r.axis.dim;
    return t.axisIndex = t[i + "AxisIndex"] = e.componentIndex, t.axisName = t[i + "AxisName"] = e.name, t.axisId = t[i + "AxisId"] = e.id, t
}

function Zd(r) {
    return !r || r[0] == null || isNaN(r[0]) || r[1] == null || isNaN(r[1])
}

function aa(r) {
    Wr.registerAxisPointerClass("CartesianAxisPointer", VN), r.registerComponentModel(BN), r.registerComponentView(HN), r.registerPreprocessor(function(e) {
        if (e) {
            (!e.axisPointer || e.axisPointer.length === 0) && (e.axisPointer = {});
            var t = e.axisPointer.link;
            t && !z(t) && (e.axisPointer.link = [t])
        }
    }), r.registerProcessor(r.PRIORITY.PROCESSOR.STATISTIC, function(e, t) {
        e.getComponent("axisPointer").coordSysAxesInfo = xE(e, t)
    }), r.registerAction({
        type: "updateAxisPointer",
        event: "updateAxisPointer",
        update: ":updateAxisPointer"
    }, E1)
}

function P1(r) {
    _t(ad), _t(aa)
}
var W7 = function(r) {
    L(e, r);

    function e() {
        return r !== null && r.apply(this, arguments) || this
    }
    return e.prototype.makeElOption = function(t, i, a, n, o) {
        var s = a.axis;
        s.dim === "angle" && (this.animationThreshold = Math.PI / 18);
        var l = s.polar,
            u = l.getOtherAxis(s),
            f = u.getExtent(),
            p = s.dataToCoord(i),
            c = n.get("type");
        if (c && c !== "none") {
            var h = hu(n),
                v = Z7[c](s, l, p, f);
            v.style = h, t.graphicKey = v.type, t.pointer = v
        }
        var d = n.get(["label", "margin"]),
            m = Y7(i, a, n, l, d);
        M1(t, a, n, o, m)
    }, e
}(cu);

function Y7(r, e, t, i, a) {
    var n = e.axis,
        o = n.dataToCoord(r),
        s = i.getAngleAxis().getExtent()[0];
    s = s / 180 * Math.PI;
    var l = i.getRadiusAxis().getExtent(),
        u, f, p;
    if (n.dim === "radius") {
        var c = me();
        cr(c, c, s), We(c, c, [i.cx, i.cy]), u = Je([o, -a], c);
        var h = e.getModel("axisLabel").get("rotate") || 0,
            v = er.innerTextLayout(s, h * Math.PI / 180, -1);
        f = v.textAlign, p = v.textVerticalAlign
    } else {
        var d = l[1];
        u = i.coordToPoint([d + a, o]);
        var m = i.cx,
            g = i.cy;
        f = Math.abs(u[0] - m) / d < .3 ? "center" : u[0] > m ? "left" : "right", p = Math.abs(u[1] - g) / d < .3 ? "middle" : u[1] > g ? "top" : "bottom"
    }
    return {
        position: u,
        align: f,
        verticalAlign: p
    }
}
var Z7 = {
        line: function(r, e, t, i) {
            return r.dim === "angle" ? {
                type: "Line",
                shape: vu(e.coordToPoint([i[0], t]), e.coordToPoint([i[1], t]))
            } : {
                type: "Circle",
                shape: {
                    cx: e.cx,
                    cy: e.cy,
                    r: t
                }
            }
        },
        shadow: function(r, e, t, i) {
            var a = Math.max(1, r.getBandWidth()),
                n = Math.PI / 180;
            return r.dim === "angle" ? {
                type: "Sector",
                shape: I1(e.cx, e.cy, i[0], i[1], (-t - a / 2) * n, (-t + a / 2) * n)
            } : {
                type: "Sector",
                shape: I1(e.cx, e.cy, t - a / 2, t + a / 2, 0, Math.PI * 2)
            }
        }
    },
    XN = W7;
var X7 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.findAxisModel = function(t) {
            var i, a = this.ecModel;
            return a.eachComponent(t, function(n) {
                n.getCoordSysModel() === this && (i = n)
            }, this), i
        }, e.type = "polar", e.dependencies = ["radiusAxis", "angleAxis"], e.defaultOption = {
            z: 0,
            center: ["50%", "50%"],
            radius: "80%"
        }, e
    }(yt),
    qN = X7;
var R1 = function(r) {
    L(e, r);

    function e() {
        return r !== null && r.apply(this, arguments) || this
    }
    return e.prototype.getCoordSysModel = function() {
        return this.getReferringComponents("polar", Ht).models[0]
    }, e.type = "polarAxis", e
}(yt);
Bt(R1, Ii);
var KN = function(r) {
    L(e, r);

    function e() {
        var t = r !== null && r.apply(this, arguments) || this;
        return t.type = e.type, t
    }
    return e.type = "angleAxis", e
}(R1);
var jN = function(r) {
    L(e, r);

    function e() {
        var t = r !== null && r.apply(this, arguments) || this;
        return t.type = e.type, t
    }
    return e.type = "radiusAxis", e
}(R1);
var N1 = function(r) {
    L(e, r);

    function e(t, i) {
        return r.call(this, "radius", t, i) || this
    }
    return e.prototype.pointToData = function(t, i) {
        return this.polar.pointToData(t, i)[this.dim === "radius" ? 0 : 1]
    }, e
}(Fe);
N1.prototype.dataToRadius = Fe.prototype.dataToCoord;
N1.prototype.radiusToData = Fe.prototype.coordToData;
var JN = N1;
var q7 = lt(),
    O1 = function(r) {
        L(e, r);

        function e(t, i) {
            return r.call(this, "angle", t, i || [0, 360]) || this
        }
        return e.prototype.pointToData = function(t, i) {
            return this.polar.pointToData(t, i)[this.dim === "radius" ? 0 : 1]
        }, e.prototype.calculateCategoryInterval = function() {
            var t = this,
                i = t.getLabelModel(),
                a = t.scale,
                n = a.getExtent(),
                o = a.count();
            if (n[1] - n[0] < 1) return 0;
            var s = n[0],
                l = t.dataToCoord(s + 1) - t.dataToCoord(s),
                u = Math.abs(l),
                f = ua(s == null ? "" : s + "", i.getFont(), "center", "top"),
                p = Math.max(f.height, 7),
                c = p / u;
            isNaN(c) && (c = 1 / 0);
            var h = Math.max(0, Math.floor(c)),
                v = q7(t.model),
                d = v.lastAutoInterval,
                m = v.lastTickCount;
            return d != null && m != null && Math.abs(d - h) <= 1 && Math.abs(m - o) <= 1 && d > h ? h = d : (v.lastTickCount = o, v.lastAutoInterval = h), h
        }, e
    }(Fe);
O1.prototype.dataToAngle = Fe.prototype.dataToCoord;
O1.prototype.angleToData = Fe.prototype.coordToData;
var QN = O1;
var z1 = ["radius", "angle"],
    K7 = function() {
        function r(e) {
            this.dimensions = z1, this.type = "polar", this.cx = 0, this.cy = 0, this._radiusAxis = new JN, this._angleAxis = new QN, this.axisPointerEnabled = !0, this.name = e || "", this._radiusAxis.polar = this._angleAxis.polar = this
        }
        return r.prototype.containPoint = function(e) {
            var t = this.pointToCoord(e);
            return this._radiusAxis.contain(t[0]) && this._angleAxis.contain(t[1])
        }, r.prototype.containData = function(e) {
            return this._radiusAxis.containData(e[0]) && this._angleAxis.containData(e[1])
        }, r.prototype.getAxis = function(e) {
            var t = "_" + e + "Axis";
            return this[t]
        }, r.prototype.getAxes = function() {
            return [this._radiusAxis, this._angleAxis]
        }, r.prototype.getAxesByScale = function(e) {
            var t = [],
                i = this._angleAxis,
                a = this._radiusAxis;
            return i.scale.type === e && t.push(i), a.scale.type === e && t.push(a), t
        }, r.prototype.getAngleAxis = function() {
            return this._angleAxis
        }, r.prototype.getRadiusAxis = function() {
            return this._radiusAxis
        }, r.prototype.getOtherAxis = function(e) {
            var t = this._angleAxis;
            return e === t ? this._radiusAxis : t
        }, r.prototype.getBaseAxis = function() {
            return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAngleAxis()
        }, r.prototype.getTooltipAxes = function(e) {
            var t = e != null && e !== "auto" ? this.getAxis(e) : this.getBaseAxis();
            return {
                baseAxes: [t],
                otherAxes: [this.getOtherAxis(t)]
            }
        }, r.prototype.dataToPoint = function(e, t) {
            return this.coordToPoint([this._radiusAxis.dataToRadius(e[0], t), this._angleAxis.dataToAngle(e[1], t)])
        }, r.prototype.pointToData = function(e, t) {
            var i = this.pointToCoord(e);
            return [this._radiusAxis.radiusToData(i[0], t), this._angleAxis.angleToData(i[1], t)]
        }, r.prototype.pointToCoord = function(e) {
            var t = e[0] - this.cx,
                i = e[1] - this.cy,
                a = this.getAngleAxis(),
                n = a.getExtent(),
                o = Math.min(n[0], n[1]),
                s = Math.max(n[0], n[1]);
            a.inverse ? o = s - 360 : s = o + 360;
            var l = Math.sqrt(t * t + i * i);
            t /= l, i /= l;
            for (var u = Math.atan2(-i, t) / Math.PI * 180, f = u < o ? 1 : -1; u < o || u > s;) u += f * 360;
            return [l, u]
        }, r.prototype.coordToPoint = function(e) {
            var t = e[0],
                i = e[1] / 180 * Math.PI,
                a = Math.cos(i) * t + this.cx,
                n = -Math.sin(i) * t + this.cy;
            return [a, n]
        }, r.prototype.getArea = function() {
            var e = this.getAngleAxis(),
                t = this.getRadiusAxis(),
                i = t.getExtent().slice();
            i[0] > i[1] && i.reverse();
            var a = e.getExtent(),
                n = Math.PI / 180,
                o = 1e-4;
            return {
                cx: this.cx,
                cy: this.cy,
                r0: i[0],
                r: i[1],
                startAngle: -a[0] * n,
                endAngle: -a[1] * n,
                clockwise: e.inverse,
                contain: function(s, l) {
                    var u = s - this.cx,
                        f = l - this.cy,
                        p = u * u + f * f,
                        c = this.r,
                        h = this.r0;
                    return c !== h && p - o <= c * c && p + o >= h * h
                }
            }
        }, r.prototype.convertToPixel = function(e, t, i) {
            var a = $N(t);
            return a === this ? this.dataToPoint(i) : null
        }, r.prototype.convertFromPixel = function(e, t, i) {
            var a = $N(t);
            return a === this ? this.pointToData(i) : null
        }, r
    }();

function $N(r) {
    var e = r.seriesModel,
        t = r.polarModel;
    return t && t.coordinateSystem || e && e.coordinateSystem
}
var tO = K7;

function j7(r, e, t) {
    var i = e.get("center"),
        a = t.getWidth(),
        n = t.getHeight();
    r.cx = W(i[0], a), r.cy = W(i[1], n);
    var o = r.getRadiusAxis(),
        s = Math.min(a, n) / 2,
        l = e.get("radius");
    l == null ? l = [0, "100%"] : z(l) || (l = [0, l]);
    var u = [W(l[0], s), W(l[1], s)];
    o.inverse ? o.setExtent(u[1], u[0]) : o.setExtent(u[0], u[1])
}

function J7(r, e) {
    var t = this,
        i = t.getAngleAxis(),
        a = t.getRadiusAxis();
    if (i.scale.setExtent(1 / 0, -1 / 0), a.scale.setExtent(1 / 0, -1 / 0), r.eachSeries(function(s) {
            if (s.coordinateSystem === t) {
                var l = s.getData();
                w(Ul(l, "radius"), function(u) {
                    a.scale.unionExtentFromData(l, u)
                }), w(Ul(l, "angle"), function(u) {
                    i.scale.unionExtentFromData(l, u)
                })
            }
        }), Li(i.scale, i.model), Li(a.scale, a.model), i.type === "category" && !i.onBand) {
        var n = i.getExtent(),
            o = 360 / i.scale.count();
        i.inverse ? n[1] += o : n[1] -= o, i.setExtent(n[0], n[1])
    }
}

function Q7(r) {
    return r.mainType === "angleAxis"
}

function eO(r, e) {
    var t;
    if (r.type = e.get("type"), r.scale = xa(e), r.onBand = e.get("boundaryGap") && r.type === "category", r.inverse = e.get("inverse"), Q7(e)) {
        r.inverse = r.inverse !== e.get("clockwise");
        var i = e.get("startAngle"),
            a = (t = e.get("endAngle")) !== null && t !== void 0 ? t : i + (r.inverse ? -360 : 360);
        r.setExtent(i, a)
    }
    e.axis = r, r.model = e
}
var $7 = {
        dimensions: z1,
        create: function(r, e) {
            var t = [];
            return r.eachComponent("polar", function(i, a) {
                var n = new tO(a + "");
                n.update = J7;
                var o = n.getRadiusAxis(),
                    s = n.getAngleAxis(),
                    l = i.findAxisModel("radiusAxis"),
                    u = i.findAxisModel("angleAxis");
                eO(o, l), eO(s, u), j7(n, i, e), t.push(n), i.coordinateSystem = n, n.model = i
            }), r.eachSeries(function(i) {
                if (i.get("coordinateSystem") === "polar") {
                    var a = i.getReferringComponents("polar", Ht).models[0];
                    i.coordinateSystem = a.coordinateSystem
                }
            }), t
        }
    },
    rO = $7;
var t9 = ["axisLine", "axisLabel", "axisTick", "minorTick", "splitLine", "minorSplitLine", "splitArea"];

function Xd(r, e, t) {
    e[1] > e[0] && (e = e.slice().reverse());
    var i = r.coordToPoint([e[0], t]),
        a = r.coordToPoint([e[1], t]);
    return {
        x1: i[0],
        y1: i[1],
        x2: a[0],
        y2: a[1]
    }
}

function qd(r) {
    var e = r.getRadiusAxis();
    return e.inverse ? 0 : 1
}

function iO(r) {
    var e = r[0],
        t = r[r.length - 1];
    e && t && Math.abs(Math.abs(e.coord - t.coord) - 360) < 1e-4 && r.pop()
}
var e9 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t.axisPointerClass = "PolarAxisPointer", t
        }
        return e.prototype.render = function(t, i) {
            if (this.group.removeAll(), !!t.get("show")) {
                var a = t.axis,
                    n = a.polar,
                    o = n.getRadiusAxis().getExtent(),
                    s = a.getTicksCoords(),
                    l = a.getMinorTicksCoords(),
                    u = k(a.getViewLabels(), function(f) {
                        f = Q(f);
                        var p = a.scale,
                            c = p.type === "ordinal" ? p.getRawOrdinalNumber(f.tickValue) : f.tickValue;
                        return f.coord = a.dataToCoord(c), f
                    });
                iO(u), iO(s), w(t9, function(f) {
                    t.get([f, "show"]) && (!a.scale.isBlank() || f === "axisLine") && r9[f](this.group, t, n, s, l, o, u)
                }, this)
            }
        }, e.type = "angleAxis", e
    }(Wr),
    r9 = {
        axisLine: function(r, e, t, i, a, n) {
            var o = e.getModel(["axisLine", "lineStyle"]),
                s = t.getAngleAxis(),
                l = Math.PI / 180,
                u = s.getExtent(),
                f = qd(t),
                p = f ? 0 : 1,
                c, h = Math.abs(u[1] - u[0]) === 360 ? "Circle" : "Arc";
            n[p] === 0 ? c = new gt[h]({
                shape: {
                    cx: t.cx,
                    cy: t.cy,
                    r: n[f],
                    startAngle: -u[0] * l,
                    endAngle: -u[1] * l,
                    clockwise: s.inverse
                },
                style: o.getLineStyle(),
                z2: 1,
                silent: !0
            }) : c = new Ya({
                shape: {
                    cx: t.cx,
                    cy: t.cy,
                    r: n[f],
                    r0: n[p]
                },
                style: o.getLineStyle(),
                z2: 1,
                silent: !0
            }), c.style.fill = null, r.add(c)
        },
        axisTick: function(r, e, t, i, a, n) {
            var o = e.getModel("axisTick"),
                s = (o.get("inside") ? -1 : 1) * o.get("length"),
                l = n[qd(t)],
                u = k(i, function(f) {
                    return new ee({
                        shape: Xd(t, [l, l + s], f.coord)
                    })
                });
            r.add(Ye(u, {
                style: q(o.getModel("lineStyle").getLineStyle(), {
                    stroke: e.get(["axisLine", "lineStyle", "color"])
                })
            }))
        },
        minorTick: function(r, e, t, i, a, n) {
            if (a.length) {
                for (var o = e.getModel("axisTick"), s = e.getModel("minorTick"), l = (o.get("inside") ? -1 : 1) * s.get("length"), u = n[qd(t)], f = [], p = 0; p < a.length; p++)
                    for (var c = 0; c < a[p].length; c++) f.push(new ee({
                        shape: Xd(t, [u, u + l], a[p][c].coord)
                    }));
                r.add(Ye(f, {
                    style: q(s.getModel("lineStyle").getLineStyle(), q(o.getLineStyle(), {
                        stroke: e.get(["axisLine", "lineStyle", "color"])
                    }))
                }))
            }
        },
        axisLabel: function(r, e, t, i, a, n, o) {
            var s = e.getCategories(!0),
                l = e.getModel("axisLabel"),
                u = l.get("margin"),
                f = e.get("triggerEvent");
            w(o, function(p, c) {
                var h = l,
                    v = p.tickValue,
                    d = n[qd(t)],
                    m = t.coordToPoint([d + u, p.coord]),
                    g = t.cx,
                    y = t.cy,
                    x = Math.abs(m[0] - g) / d < .3 ? "center" : m[0] > g ? "left" : "right",
                    _ = Math.abs(m[1] - y) / d < .3 ? "middle" : m[1] > y ? "top" : "bottom";
                if (s && s[v]) {
                    var S = s[v];
                    j(S) && S.textStyle && (h = new Dt(S.textStyle, l, l.ecModel))
                }
                var b = new dt({
                    silent: er.isLabelSilent(e),
                    style: zt(h, {
                        x: m[0],
                        y: m[1],
                        fill: h.getTextColor() || e.get(["axisLine", "lineStyle", "color"]),
                        text: p.formattedLabel,
                        align: x,
                        verticalAlign: _
                    })
                });
                if (r.add(b), f) {
                    var T = er.makeAxisEventDataBase(e);
                    T.targetType = "axisLabel", T.value = p.rawLabel, et(b).eventData = T
                }
            }, this)
        },
        splitLine: function(r, e, t, i, a, n) {
            var o = e.getModel("splitLine"),
                s = o.getModel("lineStyle"),
                l = s.get("color"),
                u = 0;
            l = l instanceof Array ? l : [l];
            for (var f = [], p = 0; p < i.length; p++) {
                var c = u++ % l.length;
                f[c] = f[c] || [], f[c].push(new ee({
                    shape: Xd(t, n, i[p].coord)
                }))
            }
            for (var p = 0; p < f.length; p++) r.add(Ye(f[p], {
                style: q({
                    stroke: l[p % l.length]
                }, s.getLineStyle()),
                silent: !0,
                z: e.get("z")
            }))
        },
        minorSplitLine: function(r, e, t, i, a, n) {
            if (a.length) {
                for (var o = e.getModel("minorSplitLine"), s = o.getModel("lineStyle"), l = [], u = 0; u < a.length; u++)
                    for (var f = 0; f < a[u].length; f++) l.push(new ee({
                        shape: Xd(t, n, a[u][f].coord)
                    }));
                r.add(Ye(l, {
                    style: s.getLineStyle(),
                    silent: !0,
                    z: e.get("z")
                }))
            }
        },
        splitArea: function(r, e, t, i, a, n) {
            if (i.length) {
                var o = e.getModel("splitArea"),
                    s = o.getModel("areaStyle"),
                    l = s.get("color"),
                    u = 0;
                l = l instanceof Array ? l : [l];
                for (var f = [], p = Math.PI / 180, c = -i[0].coord * p, h = Math.min(n[0], n[1]), v = Math.max(n[0], n[1]), d = e.get("clockwise"), m = 1, g = i.length; m <= g; m++) {
                    var y = m === g ? i[0].coord : i[m].coord,
                        x = u++ % l.length;
                    f[x] = f[x] || [], f[x].push(new pe({
                        shape: {
                            cx: t.cx,
                            cy: t.cy,
                            r0: h,
                            r: v,
                            startAngle: c,
                            endAngle: -y * p,
                            clockwise: d
                        },
                        silent: !0
                    })), c = -y * p
                }
                for (var m = 0; m < f.length; m++) r.add(Ye(f[m], {
                    style: q({
                        fill: l[m % l.length]
                    }, s.getAreaStyle()),
                    silent: !0
                }))
            }
        }
    },
    aO = e9;
var i9 = ["axisLine", "axisTickLabel", "axisName"],
    a9 = ["splitLine", "splitArea", "minorSplitLine"],
    n9 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t.axisPointerClass = "PolarAxisPointer", t
        }
        return e.prototype.render = function(t, i) {
            if (this.group.removeAll(), !!t.get("show")) {
                var a = this._axisGroup,
                    n = this._axisGroup = new J;
                this.group.add(n);
                var o = t.axis,
                    s = o.polar,
                    l = s.getAngleAxis(),
                    u = o.getTicksCoords(),
                    f = o.getMinorTicksCoords(),
                    p = l.getExtent()[0],
                    c = o.getExtent(),
                    h = s9(s, t, p),
                    v = new er(t, h);
                w(i9, v.add, v), n.add(v.getGroup()), ja(a, n, t), w(a9, function(d) {
                    t.get([d, "show"]) && !o.scale.isBlank() && o9[d](this.group, t, s, p, c, u, f)
                }, this)
            }
        }, e.type = "radiusAxis", e
    }(Wr),
    o9 = {
        splitLine: function(r, e, t, i, a, n) {
            var o = e.getModel("splitLine"),
                s = o.getModel("lineStyle"),
                l = s.get("color"),
                u = 0,
                f = t.getAngleAxis(),
                p = Math.PI / 180,
                c = f.getExtent(),
                h = Math.abs(c[1] - c[0]) === 360 ? "Circle" : "Arc";
            l = l instanceof Array ? l : [l];
            for (var v = [], d = 0; d < n.length; d++) {
                var m = u++ % l.length;
                v[m] = v[m] || [], v[m].push(new gt[h]({
                    shape: {
                        cx: t.cx,
                        cy: t.cy,
                        r: Math.max(n[d].coord, 0),
                        startAngle: -c[0] * p,
                        endAngle: -c[1] * p,
                        clockwise: f.inverse
                    }
                }))
            }
            for (var d = 0; d < v.length; d++) r.add(Ye(v[d], {
                style: q({
                    stroke: l[d % l.length],
                    fill: null
                }, s.getLineStyle()),
                silent: !0
            }))
        },
        minorSplitLine: function(r, e, t, i, a, n, o) {
            if (o.length) {
                for (var s = e.getModel("minorSplitLine"), l = s.getModel("lineStyle"), u = [], f = 0; f < o.length; f++)
                    for (var p = 0; p < o[f].length; p++) u.push(new je({
                        shape: {
                            cx: t.cx,
                            cy: t.cy,
                            r: o[f][p].coord
                        }
                    }));
                r.add(Ye(u, {
                    style: q({
                        fill: null
                    }, l.getLineStyle()),
                    silent: !0
                }))
            }
        },
        splitArea: function(r, e, t, i, a, n) {
            if (n.length) {
                var o = e.getModel("splitArea"),
                    s = o.getModel("areaStyle"),
                    l = s.get("color"),
                    u = 0;
                l = l instanceof Array ? l : [l];
                for (var f = [], p = n[0].coord, c = 1; c < n.length; c++) {
                    var h = u++ % l.length;
                    f[h] = f[h] || [], f[h].push(new pe({
                        shape: {
                            cx: t.cx,
                            cy: t.cy,
                            r0: p,
                            r: n[c].coord,
                            startAngle: 0,
                            endAngle: Math.PI * 2
                        },
                        silent: !0
                    })), p = n[c].coord
                }
                for (var c = 0; c < f.length; c++) r.add(Ye(f[c], {
                    style: q({
                        fill: l[c % l.length]
                    }, s.getAreaStyle()),
                    silent: !0
                }))
            }
        }
    };

function s9(r, e, t) {
    return {
        position: [r.cx, r.cy],
        rotation: t / 180 * Math.PI,
        labelDirection: -1,
        tickDirection: -1,
        nameDirection: 1,
        labelRotate: e.getModel("axisLabel").get("rotate"),
        z2: 1
    }
}
var nO = n9;

function oO(r) {
    return r.get("stack") || "__ec_stack_" + r.seriesIndex
}

function sO(r, e) {
    return e.dim + r.model.componentIndex
}

function l9(r, e, t) {
    var i = {},
        a = u9(wt(e.getSeriesByType(r), function(n) {
            return !e.isSeriesFiltered(n) && n.coordinateSystem && n.coordinateSystem.type === "polar"
        }));
    e.eachSeriesByType(r, function(n) {
        if (n.coordinateSystem.type === "polar") {
            var o = n.getData(),
                s = n.coordinateSystem,
                l = s.getBaseAxis(),
                u = sO(s, l),
                f = oO(n),
                p = a[u][f],
                c = p.offset,
                h = p.width,
                v = s.getOtherAxis(l),
                d = n.coordinateSystem.cx,
                m = n.coordinateSystem.cy,
                g = n.get("barMinHeight") || 0,
                y = n.get("barMinAngle") || 0;
            i[f] = i[f] || [];
            for (var x = o.mapDimension(v.dim), _ = o.mapDimension(l.dim), S = gr(o, x), b = l.dim !== "radius" || !n.get("roundCap", !0), T = v.model, C = T.get("startValue"), A = v.dataToCoord(C || 0), D = 0, M = o.count(); D < M; D++) {
                var I = o.get(x, D),
                    E = o.get(_, D),
                    P = I >= 0 ? "p" : "n",
                    R = A;
                S && (i[f][E] || (i[f][E] = {
                    p: A,
                    n: A
                }), R = i[f][E][P]);
                var N = void 0,
                    V = void 0,
                    U = void 0,
                    B = void 0;
                if (v.dim === "radius") {
                    var Z = v.dataToCoord(I) - A,
                        K = l.dataToCoord(E);
                    Math.abs(Z) < g && (Z = (Z < 0 ? -1 : 1) * g), N = R, V = R + Z, U = K - c, B = U - h, S && (i[f][E][P] = V)
                } else {
                    var tt = v.dataToCoord(I, b) - A,
                        pt = l.dataToCoord(E);
                    Math.abs(tt) < y && (tt = (tt < 0 ? -1 : 1) * y), N = pt + c, V = N + h, U = R, B = R + tt, S && (i[f][E][P] = B)
                }
                o.setItemLayout(D, {
                    cx: d,
                    cy: m,
                    r0: N,
                    r: V,
                    startAngle: -U * Math.PI / 180,
                    endAngle: -B * Math.PI / 180,
                    clockwise: U >= B
                })
            }
        }
    })
}

function u9(r) {
    var e = {};
    w(r, function(i, a) {
        var n = i.getData(),
            o = i.coordinateSystem,
            s = o.getBaseAxis(),
            l = sO(o, s),
            u = s.getExtent(),
            f = s.type === "category" ? s.getBandWidth() : Math.abs(u[1] - u[0]) / n.count(),
            p = e[l] || {
                bandWidth: f,
                remainedWidth: f,
                autoWidthCount: 0,
                categoryGap: "20%",
                gap: "30%",
                stacks: {}
            },
            c = p.stacks;
        e[l] = p;
        var h = oO(i);
        c[h] || p.autoWidthCount++, c[h] = c[h] || {
            width: 0,
            maxWidth: 0
        };
        var v = W(i.get("barWidth"), f),
            d = W(i.get("barMaxWidth"), f),
            m = i.get("barGap"),
            g = i.get("barCategoryGap");
        v && !c[h].width && (v = Math.min(p.remainedWidth, v), c[h].width = v, p.remainedWidth -= v), d && (c[h].maxWidth = d), m != null && (p.gap = m), g != null && (p.categoryGap = g)
    });
    var t = {};
    return w(e, function(i, a) {
        t[a] = {};
        var n = i.stacks,
            o = i.bandWidth,
            s = W(i.categoryGap, o),
            l = W(i.gap, 1),
            u = i.remainedWidth,
            f = i.autoWidthCount,
            p = (u - s) / (f + (f - 1) * l);
        p = Math.max(p, 0), w(n, function(d, m) {
            var g = d.maxWidth;
            g && g < p && (g = Math.min(g, u), d.width && (g = Math.min(g, d.width)), u -= g, d.width = g, f--)
        }), p = (u - s) / (f + (f - 1) * l), p = Math.max(p, 0);
        var c = 0,
            h;
        w(n, function(d, m) {
            d.width || (d.width = p), h = d, c += d.width * (1 + l)
        }), h && (c -= h.width * l);
        var v = -c / 2;
        w(n, function(d, m) {
            t[a][m] = t[a][m] || {
                offset: v,
                width: d.width
            }, v += d.width * (1 + l)
        })
    }), t
}
var lO = l9;
var f9 = {
        startAngle: 90,
        clockwise: !0,
        splitNumber: 12,
        axisLabel: {
            rotate: 0
        }
    },
    p9 = {
        splitNumber: 5
    },
    c9 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.type = "polar", e
    }(It);

function k1(r) {
    _t(aa), Wr.registerAxisPointerClass("PolarAxisPointer", XN), r.registerCoordinateSystem("polar", rO), r.registerComponentModel(qN), r.registerComponentView(c9), ia(r, "angle", KN, f9), ia(r, "radius", jN, p9), r.registerComponentView(aO), r.registerComponentView(nO), r.registerLayout(rt(lO, "bar"))
}

function zp(r, e) {
    e = e || {};
    var t = r.coordinateSystem,
        i = r.axis,
        a = {},
        n = i.position,
        o = i.orient,
        s = t.getRect(),
        l = [s.x, s.x + s.width, s.y, s.y + s.height],
        u = {
            horizontal: {
                top: l[2],
                bottom: l[3]
            },
            vertical: {
                left: l[0],
                right: l[1]
            }
        };
    a.position = [o === "vertical" ? u.vertical[n] : l[0], o === "horizontal" ? u.horizontal[n] : l[3]];
    var f = {
        horizontal: 0,
        vertical: 1
    };
    a.rotation = Math.PI / 2 * f[o];
    var p = {
        top: -1,
        bottom: 1,
        right: 1,
        left: -1
    };
    a.labelDirection = a.tickDirection = a.nameDirection = p[n], r.get(["axisTick", "inside"]) && (a.tickDirection = -a.tickDirection), Kt(e.labelInside, r.get(["axisLabel", "inside"])) && (a.labelDirection = -a.labelDirection);
    var c = e.rotate;
    return c == null && (c = r.get(["axisLabel", "rotate"])), a.labelRotation = n === "top" ? -c : c, a.z2 = 1, a
}
var h9 = ["axisLine", "axisTickLabel", "axisName"],
    v9 = ["splitArea", "splitLine"],
    d9 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t.axisPointerClass = "SingleAxisPointer", t
        }
        return e.prototype.render = function(t, i, a, n) {
            var o = this.group;
            o.removeAll();
            var s = this._axisGroup;
            this._axisGroup = new J;
            var l = zp(t),
                u = new er(t, l);
            w(h9, u.add, u), o.add(this._axisGroup), o.add(u.getGroup()), w(v9, function(f) {
                t.get([f, "show"]) && m9[f](this, this.group, this._axisGroup, t)
            }, this), ja(s, this._axisGroup, t), r.prototype.render.call(this, t, i, a, n)
        }, e.prototype.remove = function() {
            id(this)
        }, e.type = "singleAxis", e
    }(Wr),
    m9 = {
        splitLine: function(r, e, t, i) {
            var a = i.axis;
            if (!a.scale.isBlank()) {
                var n = i.getModel("splitLine"),
                    o = n.getModel("lineStyle"),
                    s = o.get("color");
                s = s instanceof Array ? s : [s];
                for (var l = o.get("width"), u = i.coordinateSystem.getRect(), f = a.isHorizontal(), p = [], c = 0, h = a.getTicksCoords({
                        tickModel: n
                    }), v = [], d = [], m = 0; m < h.length; ++m) {
                    var g = a.toGlobalCoord(h[m].coord);
                    f ? (v[0] = g, v[1] = u.y, d[0] = g, d[1] = u.y + u.height) : (v[0] = u.x, v[1] = g, d[0] = u.x + u.width, d[1] = g);
                    var y = new ee({
                        shape: {
                            x1: v[0],
                            y1: v[1],
                            x2: d[0],
                            y2: d[1]
                        },
                        silent: !0
                    });
                    Ka(y.shape, l);
                    var x = c++ % s.length;
                    p[x] = p[x] || [], p[x].push(y)
                }
                for (var _ = o.getLineStyle(["color"]), m = 0; m < p.length; ++m) e.add(Ye(p[m], {
                    style: q({
                        stroke: s[m % s.length]
                    }, _),
                    silent: !0
                }))
            }
        },
        splitArea: function(r, e, t, i) {
            rd(r, t, i, i)
        }
    },
    fO = d9;
var pO = function(r) {
    L(e, r);

    function e() {
        var t = r !== null && r.apply(this, arguments) || this;
        return t.type = e.type, t
    }
    return e.prototype.getCoordSysModel = function() {
        return this
    }, e.type = "singleAxis", e.layoutMode = "box", e.defaultOption = {
        left: "5%",
        top: "5%",
        right: "5%",
        bottom: "5%",
        type: "value",
        position: "bottom",
        orient: "horizontal",
        axisLine: {
            show: !0,
            lineStyle: {
                width: 1,
                type: "solid"
            }
        },
        tooltip: {
            show: !0
        },
        axisTick: {
            show: !0,
            length: 6,
            lineStyle: {
                width: 1
            }
        },
        axisLabel: {
            show: !0,
            interval: "auto"
        },
        splitLine: {
            show: !0,
            lineStyle: {
                type: "dashed",
                opacity: .2
            }
        }
    }, e
}(yt);
Bt(pO, Ii.prototype);
var Kd = pO;
var g9 = function(r) {
        L(e, r);

        function e(t, i, a, n, o) {
            var s = r.call(this, t, i, a) || this;
            return s.type = n || "value", s.position = o || "bottom", s
        }
        return e.prototype.isHorizontal = function() {
            var t = this.position;
            return t === "top" || t === "bottom"
        }, e.prototype.pointToData = function(t, i) {
            return this.coordinateSystem.pointToData(t)[0]
        }, e
    }(Fe),
    cO = g9;
var U1 = ["single"],
    y9 = function() {
        function r(e, t, i) {
            this.type = "single", this.dimension = "single", this.dimensions = U1, this.axisPointerEnabled = !0, this.model = e, this._init(e, t, i)
        }
        return r.prototype._init = function(e, t, i) {
            var a = this.dimension,
                n = new cO(a, xa(e), [0, 0], e.get("type"), e.get("position")),
                o = n.type === "category";
            n.onBand = o && e.get("boundaryGap"), n.inverse = e.get("inverse"), n.orient = e.get("orient"), e.axis = n, n.model = e, n.coordinateSystem = this, this._axis = n
        }, r.prototype.update = function(e, t) {
            e.eachSeries(function(i) {
                if (i.coordinateSystem === this) {
                    var a = i.getData();
                    w(a.mapDimensionsAll(this.dimension), function(n) {
                        this._axis.scale.unionExtentFromData(a, n)
                    }, this), Li(this._axis.scale, this._axis.model)
                }
            }, this)
        }, r.prototype.resize = function(e, t) {
            this._rect = Ut({
                left: e.get("left"),
                top: e.get("top"),
                right: e.get("right"),
                bottom: e.get("bottom"),
                width: e.get("width"),
                height: e.get("height")
            }, {
                width: t.getWidth(),
                height: t.getHeight()
            }), this._adjustAxis()
        }, r.prototype.getRect = function() {
            return this._rect
        }, r.prototype._adjustAxis = function() {
            var e = this._rect,
                t = this._axis,
                i = t.isHorizontal(),
                a = i ? [0, e.width] : [0, e.height],
                n = t.inverse ? 1 : 0;
            t.setExtent(a[n], a[1 - n]), this._updateAxisTransform(t, i ? e.x : e.y)
        }, r.prototype._updateAxisTransform = function(e, t) {
            var i = e.getExtent(),
                a = i[0] + i[1],
                n = e.isHorizontal();
            e.toGlobalCoord = n ? function(o) {
                return o + t
            } : function(o) {
                return a - o + t
            }, e.toLocalCoord = n ? function(o) {
                return o - t
            } : function(o) {
                return a - o + t
            }
        }, r.prototype.getAxis = function() {
            return this._axis
        }, r.prototype.getBaseAxis = function() {
            return this._axis
        }, r.prototype.getAxes = function() {
            return [this._axis]
        }, r.prototype.getTooltipAxes = function() {
            return {
                baseAxes: [this.getAxis()],
                otherAxes: []
            }
        }, r.prototype.containPoint = function(e) {
            var t = this.getRect(),
                i = this.getAxis(),
                a = i.orient;
            return a === "horizontal" ? i.contain(i.toLocalCoord(e[0])) && e[1] >= t.y && e[1] <= t.y + t.height : i.contain(i.toLocalCoord(e[1])) && e[0] >= t.y && e[0] <= t.y + t.height
        }, r.prototype.pointToData = function(e) {
            var t = this.getAxis();
            return [t.coordToData(t.toLocalCoord(e[t.orient === "horizontal" ? 0 : 1]))]
        }, r.prototype.dataToPoint = function(e) {
            var t = this.getAxis(),
                i = this.getRect(),
                a = [],
                n = t.orient === "horizontal" ? 0 : 1;
            return e instanceof Array && (e = e[0]), a[n] = t.toGlobalCoord(t.dataToCoord(+e)), a[1 - n] = n === 0 ? i.y + i.height / 2 : i.x + i.width / 2, a
        }, r.prototype.convertToPixel = function(e, t, i) {
            var a = hO(t);
            return a === this ? this.dataToPoint(i) : null
        }, r.prototype.convertFromPixel = function(e, t, i) {
            var a = hO(t);
            return a === this ? this.pointToData(i) : null
        }, r
    }();

function hO(r) {
    var e = r.seriesModel,
        t = r.singleAxisModel;
    return t && t.coordinateSystem || e && e.coordinateSystem
}
var vO = y9;

function x9(r, e) {
    var t = [];
    return r.eachComponent("singleAxis", function(i, a) {
        var n = new vO(i, r, e);
        n.name = "single_" + a, n.resize(i, e), i.coordinateSystem = n, t.push(n)
    }), r.eachSeries(function(i) {
        if (i.get("coordinateSystem") === "singleAxis") {
            var a = i.getReferringComponents("singleAxis", Ht).models[0];
            i.coordinateSystem = a && a.coordinateSystem
        }
    }), t
}
var _9 = {
        create: x9,
        dimensions: U1
    },
    dO = _9;
var mO = ["x", "y"],
    S9 = ["width", "height"],
    b9 = function(r) {
        L(e, r);

        function e() {
            return r !== null && r.apply(this, arguments) || this
        }
        return e.prototype.makeElOption = function(t, i, a, n, o) {
            var s = a.axis,
                l = s.coordinateSystem,
                u = V1(l, 1 - jd(s)),
                f = l.dataToPoint(i)[0],
                p = n.get("type");
            if (p && p !== "none") {
                var c = hu(n),
                    h = w9[p](s, f, u);
                h.style = c, t.graphicKey = h.type, t.pointer = h
            }
            var v = zp(a);
            Gd(i, t, v, a, n, o)
        }, e.prototype.getHandleTransform = function(t, i, a) {
            var n = zp(i, {
                labelInside: !1
            });
            n.labelMargin = a.get(["handle", "margin"]);
            var o = Rp(i.axis, t, n);
            return {
                x: o[0],
                y: o[1],
                rotation: n.rotation + (n.labelDirection < 0 ? Math.PI : 0)
            }
        }, e.prototype.updateHandleTransform = function(t, i, a, n) {
            var o = a.axis,
                s = o.coordinateSystem,
                l = jd(o),
                u = V1(s, l),
                f = [t.x, t.y];
            f[l] += i[l], f[l] = Math.min(u[1], f[l]), f[l] = Math.max(u[0], f[l]);
            var p = V1(s, 1 - l),
                c = (p[1] + p[0]) / 2,
                h = [c, c];
            return h[l] = f[l], {
                x: f[0],
                y: f[1],
                rotation: t.rotation,
                cursorPoint: h,
                tooltipOption: {
                    verticalAlign: "middle"
                }
            }
        }, e
    }(cu),
    w9 = {
        line: function(r, e, t) {
            var i = vu([e, t[0]], [e, t[1]], jd(r));
            return {
                type: "Line",
                subPixelOptimize: !0,
                shape: i
            }
        },
        shadow: function(r, e, t) {
            var i = r.getBandWidth(),
                a = t[1] - t[0];
            return {
                type: "Rect",
                shape: Hd([e - i / 2, t[0]], [i, a], jd(r))
            }
        }
    };

function jd(r) {
    return r.isHorizontal() ? 0 : 1
}

function V1(r, e) {
    var t = r.getRect();
    return [t[mO[e]], t[mO[e]] + t[S9[e]]]
}
var gO = b9;
var T9 = function(r) {
    L(e, r);

    function e() {
        var t = r !== null && r.apply(this, arguments) || this;
        return t.type = e.type, t
    }
    return e.type = "single", e
}(It);

function B1(r) {
    _t(aa), Wr.registerAxisPointerClass("SingleAxisPointer", gO), r.registerComponentView(T9), r.registerComponentView(fO), r.registerComponentModel(Kd), ia(r, "single", Kd, Kd.defaultOption), r.registerCoordinateSystem("single", dO)
}
var C9 = function(r) {
    L(e, r);

    function e() {
        var t = r !== null && r.apply(this, arguments) || this;
        return t.type = e.type, t
    }
    return e.prototype.init = function(t, i, a) {
        var n = bi(t);
        r.prototype.init.apply(this, arguments), yO(t, n)
    }, e.prototype.mergeOption = function(t) {
        r.prototype.mergeOption.apply(this, arguments), yO(this.option, t)
    }, e.prototype.getCellSize = function() {
        return this.option.cellSize
    }, e.type = "calendar", e.defaultOption = {
        z: 2,
        left: 80,
        top: 60,
        cellSize: 20,
        orient: "horizontal",
        splitLine: {
            show: !0,
            lineStyle: {
                color: "#000",
                width: 1,
                type: "solid"
            }
        },
        itemStyle: {
            color: "#fff",
            borderWidth: 1,
            borderColor: "#ccc"
        },
        dayLabel: {
            show: !0,
            firstDay: 0,
            position: "start",
            margin: "50%",
            color: "#000"
        },
        monthLabel: {
            show: !0,
            position: "start",
            margin: 5,
            align: "center",
            formatter: null,
            color: "#000"
        },
        yearLabel: {
            show: !0,
            position: null,
            margin: 30,
            formatter: null,
            color: "#ccc",
            fontFamily: "sans-serif",
            fontWeight: "bolder",
            fontSize: 20
        }
    }, e
}(yt);

function yO(r, e) {
    var t = r.cellSize,
        i;
    z(t) ? i = t : i = r.cellSize = [t, t], i.length === 1 && (i[1] = i[0]);
    var a = k([0, 1], function(n) {
        return PA(e, n) && (i[n] = "auto"), i[n] != null && i[n] !== "auto"
    });
    Ur(r, e, {
        type: "box",
        ignoreSize: a
    })
}
var xO = C9;
var A9 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.render = function(t, i, a) {
            var n = this.group;
            n.removeAll();
            var o = t.coordinateSystem,
                s = o.getRangeInfo(),
                l = o.getOrient(),
                u = i.getLocaleModel();
            this._renderDayRect(t, s, n), this._renderLines(t, s, l, n), this._renderYearText(t, s, l, n), this._renderMonthText(t, u, l, n), this._renderWeekText(t, u, s, l, n)
        }, e.prototype._renderDayRect = function(t, i, a) {
            for (var n = t.coordinateSystem, o = t.getModel("itemStyle").getItemStyle(), s = n.getCellWidth(), l = n.getCellHeight(), u = i.start.time; u <= i.end.time; u = n.getNextNDay(u, 1).time) {
                var f = n.dataToRect([u], !1).tl,
                    p = new ht({
                        shape: {
                            x: f[0],
                            y: f[1],
                            width: s,
                            height: l
                        },
                        cursor: "default",
                        style: o
                    });
                a.add(p)
            }
        }, e.prototype._renderLines = function(t, i, a, n) {
            var o = this,
                s = t.coordinateSystem,
                l = t.getModel(["splitLine", "lineStyle"]).getLineStyle(),
                u = t.get(["splitLine", "show"]),
                f = l.lineWidth;
            this._tlpoints = [], this._blpoints = [], this._firstDayOfMonth = [], this._firstDayPoints = [];
            for (var p = i.start, c = 0; p.time <= i.end.time; c++) {
                v(p.formatedDate), c === 0 && (p = s.getDateInfo(i.start.y + "-" + i.start.m));
                var h = p.date;
                h.setMonth(h.getMonth() + 1), p = s.getDateInfo(h)
            }
            v(s.getNextNDay(i.end.time, 1).formatedDate);

            function v(d) {
                o._firstDayOfMonth.push(s.getDateInfo(d)), o._firstDayPoints.push(s.dataToRect([d], !1).tl);
                var m = o._getLinePointsOfOneWeek(t, d, a);
                o._tlpoints.push(m[0]), o._blpoints.push(m[m.length - 1]), u && o._drawSplitline(m, l, n)
            }
            u && this._drawSplitline(o._getEdgesPoints(o._tlpoints, f, a), l, n), u && this._drawSplitline(o._getEdgesPoints(o._blpoints, f, a), l, n)
        }, e.prototype._getEdgesPoints = function(t, i, a) {
            var n = [t[0].slice(), t[t.length - 1].slice()],
                o = a === "horizontal" ? 0 : 1;
            return n[0][o] = n[0][o] - i / 2, n[1][o] = n[1][o] + i / 2, n
        }, e.prototype._drawSplitline = function(t, i, a) {
            var n = new ae({
                z2: 20,
                shape: {
                    points: t
                },
                style: i
            });
            a.add(n)
        }, e.prototype._getLinePointsOfOneWeek = function(t, i, a) {
            for (var n = t.coordinateSystem, o = n.getDateInfo(i), s = [], l = 0; l < 7; l++) {
                var u = n.getNextNDay(o.time, l),
                    f = n.dataToRect([u.time], !1);
                s[2 * u.day] = f.tl, s[2 * u.day + 1] = f[a === "horizontal" ? "bl" : "tr"]
            }
            return s
        }, e.prototype._formatterLabel = function(t, i) {
            return F(t) && t ? MA(t, i) : X(t) ? t(i) : i.nameMap
        }, e.prototype._yearTextPositionControl = function(t, i, a, n, o) {
            var s = i[0],
                l = i[1],
                u = ["center", "bottom"];
            n === "bottom" ? (l += o, u = ["center", "top"]) : n === "left" ? s -= o : n === "right" ? (s += o, u = ["center", "top"]) : l -= o;
            var f = 0;
            return (n === "left" || n === "right") && (f = Math.PI / 2), {
                rotation: f,
                x: s,
                y: l,
                style: {
                    align: u[0],
                    verticalAlign: u[1]
                }
            }
        }, e.prototype._renderYearText = function(t, i, a, n) {
            var o = t.getModel("yearLabel");
            if (o.get("show")) {
                var s = o.get("margin"),
                    l = o.get("position");
                l || (l = a !== "horizontal" ? "top" : "left");
                var u = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]],
                    f = (u[0][0] + u[1][0]) / 2,
                    p = (u[0][1] + u[1][1]) / 2,
                    c = a === "horizontal" ? 0 : 1,
                    h = {
                        top: [f, u[c][1]],
                        bottom: [f, u[1 - c][1]],
                        left: [u[1 - c][0], p],
                        right: [u[c][0], p]
                    },
                    v = i.start.y; + i.end.y > +i.start.y && (v = v + "-" + i.end.y);
                var d = o.get("formatter"),
                    m = {
                        start: i.start.y,
                        end: i.end.y,
                        nameMap: v
                    },
                    g = this._formatterLabel(d, m),
                    y = new dt({
                        z2: 30,
                        style: zt(o, {
                            text: g
                        }),
                        silent: o.get("silent")
                    });
                y.attr(this._yearTextPositionControl(y, h[l], a, l, s)), n.add(y)
            }
        }, e.prototype._monthTextPositionControl = function(t, i, a, n, o) {
            var s = "left",
                l = "top",
                u = t[0],
                f = t[1];
            return a === "horizontal" ? (f = f + o, i && (s = "center"), n === "start" && (l = "bottom")) : (u = u + o, i && (l = "middle"), n === "start" && (s = "right")), {
                x: u,
                y: f,
                align: s,
                verticalAlign: l
            }
        }, e.prototype._renderMonthText = function(t, i, a, n) {
            var o = t.getModel("monthLabel");
            if (o.get("show")) {
                var s = o.get("nameMap"),
                    l = o.get("margin"),
                    u = o.get("position"),
                    f = o.get("align"),
                    p = [this._tlpoints, this._blpoints];
                (!s || F(s)) && (s && (i = xf(s) || i), s = i.get(["time", "monthAbbr"]) || []);
                var c = u === "start" ? 0 : 1,
                    h = a === "horizontal" ? 0 : 1;
                l = u === "start" ? -l : l;
                for (var v = f === "center", d = o.get("silent"), m = 0; m < p[c].length - 1; m++) {
                    var g = p[c][m].slice(),
                        y = this._firstDayOfMonth[m];
                    if (v) {
                        var x = this._firstDayPoints[m];
                        g[h] = (x[h] + p[0][m + 1][h]) / 2
                    }
                    var _ = o.get("formatter"),
                        S = s[+y.m - 1],
                        b = {
                            yyyy: y.y,
                            yy: (y.y + "").slice(2),
                            MM: y.m,
                            M: +y.m,
                            nameMap: S
                        },
                        T = this._formatterLabel(_, b),
                        C = new dt({
                            z2: 30,
                            style: O(zt(o, {
                                text: T
                            }), this._monthTextPositionControl(g, v, a, u, l)),
                            silent: d
                        });
                    n.add(C)
                }
            }
        }, e.prototype._weekTextPositionControl = function(t, i, a, n, o) {
            var s = "center",
                l = "middle",
                u = t[0],
                f = t[1],
                p = a === "start";
            return i === "horizontal" ? (u = u + n + (p ? 1 : -1) * o[0] / 2, s = p ? "right" : "left") : (f = f + n + (p ? 1 : -1) * o[1] / 2, l = p ? "bottom" : "top"), {
                x: u,
                y: f,
                align: s,
                verticalAlign: l
            }
        }, e.prototype._renderWeekText = function(t, i, a, n, o) {
            var s = t.getModel("dayLabel");
            if (s.get("show")) {
                var l = t.coordinateSystem,
                    u = s.get("position"),
                    f = s.get("nameMap"),
                    p = s.get("margin"),
                    c = l.getFirstDayOfWeek();
                if (!f || F(f)) {
                    f && (i = xf(f) || i);
                    var h = i.get(["time", "dayOfWeekShort"]);
                    f = h || k(i.get(["time", "dayOfWeekAbbr"]), function(b) {
                        return b[0]
                    })
                }
                var v = l.getNextNDay(a.end.time, 7 - a.lweek).time,
                    d = [l.getCellWidth(), l.getCellHeight()];
                p = W(p, Math.min(d[1], d[0])), u === "start" && (v = l.getNextNDay(a.start.time, -(7 + a.fweek)).time, p = -p);
                for (var m = s.get("silent"), g = 0; g < 7; g++) {
                    var y = l.getNextNDay(v, g),
                        x = l.dataToRect([y.time], !1).center,
                        _ = g;
                    _ = Math.abs((g + c) % 7);
                    var S = new dt({
                        z2: 30,
                        style: O(zt(s, {
                            text: f[_]
                        }), this._weekTextPositionControl(x, n, u, p, d)),
                        silent: m
                    });
                    o.add(S)
                }
            }
        }, e.type = "calendar", e
    }(It),
    _O = A9;
var F1 = 864e5,
    D9 = function() {
        function r(e, t, i) {
            this.type = "calendar", this.dimensions = r.dimensions, this.getDimensionsInfo = r.getDimensionsInfo, this._model = e
        }
        return r.getDimensionsInfo = function() {
            return [{
                name: "time",
                type: "time"
            }, "value"]
        }, r.prototype.getRangeInfo = function() {
            return this._rangeInfo
        }, r.prototype.getModel = function() {
            return this._model
        }, r.prototype.getRect = function() {
            return this._rect
        }, r.prototype.getCellWidth = function() {
            return this._sw
        }, r.prototype.getCellHeight = function() {
            return this._sh
        }, r.prototype.getOrient = function() {
            return this._orient
        }, r.prototype.getFirstDayOfWeek = function() {
            return this._firstDayOfWeek
        }, r.prototype.getDateInfo = function(e) {
            e = Ne(e);
            var t = e.getFullYear(),
                i = e.getMonth() + 1,
                a = i < 10 ? "0" + i : "" + i,
                n = e.getDate(),
                o = n < 10 ? "0" + n : "" + n,
                s = e.getDay();
            return s = Math.abs((s + 7 - this.getFirstDayOfWeek()) % 7), {
                y: t + "",
                m: a,
                d: o,
                day: s,
                time: e.getTime(),
                formatedDate: t + "-" + a + "-" + o,
                date: e
            }
        }, r.prototype.getNextNDay = function(e, t) {
            return t = t || 0, t === 0 ? this.getDateInfo(e) : (e = new Date(this.getDateInfo(e).time), e.setDate(e.getDate() + t), this.getDateInfo(e))
        }, r.prototype.update = function(e, t) {
            this._firstDayOfWeek = +this._model.getModel("dayLabel").get("firstDay"), this._orient = this._model.get("orient"), this._lineWidth = this._model.getModel("itemStyle").getItemStyle().lineWidth || 0, this._rangeInfo = this._getRangeInfo(this._initRangeOption());
            var i = this._rangeInfo.weeks || 1,
                a = ["width", "height"],
                n = this._model.getCellSize().slice(),
                o = this._model.getBoxLayoutParams(),
                s = this._orient === "horizontal" ? [i, 7] : [7, i];
            w([0, 1], function(p) {
                f(n, p) && (o[a[p]] = n[p] * s[p])
            });
            var l = {
                    width: t.getWidth(),
                    height: t.getHeight()
                },
                u = this._rect = Ut(o, l);
            w([0, 1], function(p) {
                f(n, p) || (n[p] = u[a[p]] / s[p])
            });

            function f(p, c) {
                return p[c] != null && p[c] !== "auto"
            }
            this._sw = n[0], this._sh = n[1]
        }, r.prototype.dataToPoint = function(e, t) {
            z(e) && (e = e[0]), t == null && (t = !0);
            var i = this.getDateInfo(e),
                a = this._rangeInfo,
                n = i.formatedDate;
            if (t && !(i.time >= a.start.time && i.time < a.end.time + F1)) return [NaN, NaN];
            var o = i.day,
                s = this._getRangeInfo([a.start.time, n]).nthWeek;
            return this._orient === "vertical" ? [this._rect.x + o * this._sw + this._sw / 2, this._rect.y + s * this._sh + this._sh / 2] : [this._rect.x + s * this._sw + this._sw / 2, this._rect.y + o * this._sh + this._sh / 2]
        }, r.prototype.pointToData = function(e) {
            var t = this.pointToDate(e);
            return t && t.time
        }, r.prototype.dataToRect = function(e, t) {
            var i = this.dataToPoint(e, t);
            return {
                contentShape: {
                    x: i[0] - (this._sw - this._lineWidth) / 2,
                    y: i[1] - (this._sh - this._lineWidth) / 2,
                    width: this._sw - this._lineWidth,
                    height: this._sh - this._lineWidth
                },
                center: i,
                tl: [i[0] - this._sw / 2, i[1] - this._sh / 2],
                tr: [i[0] + this._sw / 2, i[1] - this._sh / 2],
                br: [i[0] + this._sw / 2, i[1] + this._sh / 2],
                bl: [i[0] - this._sw / 2, i[1] + this._sh / 2]
            }
        }, r.prototype.pointToDate = function(e) {
            var t = Math.floor((e[0] - this._rect.x) / this._sw) + 1,
                i = Math.floor((e[1] - this._rect.y) / this._sh) + 1,
                a = this._rangeInfo.range;
            return this._orient === "vertical" ? this._getDateByWeeksAndDay(i, t - 1, a) : this._getDateByWeeksAndDay(t, i - 1, a)
        }, r.prototype.convertToPixel = function(e, t, i) {
            var a = SO(t);
            return a === this ? a.dataToPoint(i) : null
        }, r.prototype.convertFromPixel = function(e, t, i) {
            var a = SO(t);
            return a === this ? a.pointToData(i) : null
        }, r.prototype.containPoint = function(e) {
            return console.warn("Not implemented."), !1
        }, r.prototype._initRangeOption = function() {
            var e = this._model.get("range"),
                t;
            if (z(e) && e.length === 1 && (e = e[0]), z(e)) t = e;
            else {
                var i = e.toString();
                if (/^\d{4}$/.test(i) && (t = [i + "-01-01", i + "-12-31"]), /^\d{4}[\/|-]\d{1,2}$/.test(i)) {
                    var a = this.getDateInfo(i),
                        n = a.date;
                    n.setMonth(n.getMonth() + 1);
                    var o = this.getNextNDay(n, -1);
                    t = [a.formatedDate, o.formatedDate]
                }
                /^\d{4}[\/|-]\d{1,2}[\/|-]\d{1,2}$/.test(i) && (t = [i, i])
            }
            if (!t) return e;
            var s = this._getRangeInfo(t);
            return s.start.time > s.end.time && t.reverse(), t
        }, r.prototype._getRangeInfo = function(e) {
            var t = [this.getDateInfo(e[0]), this.getDateInfo(e[1])],
                i;
            t[0].time > t[1].time && (i = !0, t.reverse());
            var a = Math.floor(t[1].time / F1) - Math.floor(t[0].time / F1) + 1,
                n = new Date(t[0].time),
                o = n.getDate(),
                s = t[1].date.getDate();
            n.setDate(o + a - 1);
            var l = n.getDate();
            if (l !== s)
                for (var u = n.getTime() - t[1].time > 0 ? 1 : -1;
                    (l = n.getDate()) !== s && (n.getTime() - t[1].time) * u > 0;) a -= u, n.setDate(l - u);
            var f = Math.floor((a + t[0].day + 6) / 7),
                p = i ? -f + 1 : f - 1;
            return i && t.reverse(), {
                range: [t[0].formatedDate, t[1].formatedDate],
                start: t[0],
                end: t[1],
                allDay: a,
                weeks: f,
                nthWeek: p,
                fweek: t[0].day,
                lweek: t[1].day
            }
        }, r.prototype._getDateByWeeksAndDay = function(e, t, i) {
            var a = this._getRangeInfo(i);
            if (e > a.weeks || e === 0 && t < a.fweek || e === a.weeks && t > a.lweek) return null;
            var n = (e - 1) * 7 - a.fweek + t,
                o = new Date(a.start.time);
            return o.setDate(+a.start.d + n), this.getDateInfo(o)
        }, r.create = function(e, t) {
            var i = [];
            return e.eachComponent("calendar", function(a) {
                var n = new r(a, e, t);
                i.push(n), a.coordinateSystem = n
            }), e.eachSeries(function(a) {
                a.get("coordinateSystem") === "calendar" && (a.coordinateSystem = i[a.get("calendarIndex") || 0])
            }), i
        }, r.dimensions = ["time", "value"], r
    }();

function SO(r) {
    var e = r.calendarModel,
        t = r.seriesModel,
        i = e ? e.coordinateSystem : t ? t.coordinateSystem : null;
    return i
}
var bO = D9;

function G1(r) {
    r.registerComponentModel(xO), r.registerComponentView(_O), r.registerCoordinateSystem("calendar", bO)
}

function M9(r, e) {
    var t = r.existing;
    if (e.id = r.keyInfo.id, !e.type && t && (e.type = t.type), e.parentId == null) {
        var i = e.parentOption;
        i ? e.parentId = i.id : t && (e.parentId = t.parentId)
    }
    e.parentOption = null
}

function wO(r, e) {
    var t;
    return w(e, function(i) {
        r[i] != null && r[i] !== "auto" && (t = !0)
    }), t
}

function L9(r, e, t) {
    var i = O({}, t),
        a = r[e],
        n = t.$action || "merge";
    if (n === "merge")
        if (a) {
            if (0) var o;
            nt(a, i, !0), Ur(a, i, {
                ignoreSize: !0
            }), Fy(t, a), Jd(t, a), Jd(t, a, "shape"), Jd(t, a, "style"), Jd(t, a, "extra"), t.clipPath = a.clipPath
        } else r[e] = i;
    else n === "replace" ? r[e] = i : n === "remove" && a && (r[e] = null)
}
var TO = ["transition", "enterFrom", "leaveTo"],
    I9 = TO.concat(["enterAnimation", "updateAnimation", "leaveAnimation"]);

function Jd(r, e, t) {
    if (t && (!r[t] && e[t] && (r[t] = {}), r = r[t], e = e[t]), !(!r || !e))
        for (var i = t ? TO : I9, a = 0; a < i.length; a++) {
            var n = i[a];
            r[n] == null && e[n] != null && (r[n] = e[n])
        }
}

function E9(r, e) {
    if (r && (r.hv = e.hv = [wO(e, ["left", "right"]), wO(e, ["top", "bottom"])], r.type === "group")) {
        var t = r,
            i = e;
        t.width == null && (t.width = i.width = 0), t.height == null && (t.height = i.height = 0)
    }
}
var CO = function(r) {
    L(e, r);

    function e() {
        var t = r !== null && r.apply(this, arguments) || this;
        return t.type = e.type, t.preventAutoZ = !0, t
    }
    return e.prototype.mergeOption = function(t, i) {
        var a = this.option.elements;
        this.option.elements = null, r.prototype.mergeOption.call(this, t, i), this.option.elements = a
    }, e.prototype.optionUpdated = function(t, i) {
        var a = this.option,
            n = (i ? a : t).elements,
            o = a.elements = i ? [] : a.elements,
            s = [];
        this._flatten(n, s, null);
        var l = Uc(o, s, "normalMerge"),
            u = this._elOptionsToUpdate = [];
        w(l, function(f, p) {
            var c = f.newOption;
            c && (u.push(c), M9(f, c), L9(o, p, c), E9(o[p], c))
        }, this), a.elements = wt(o, function(f) {
            return f && delete f.$action, f != null
        })
    }, e.prototype._flatten = function(t, i, a) {
        w(t, function(n) {
            if (n) {
                a && (n.parentOption = a), i.push(n);
                var o = n.children;
                o && o.length && this._flatten(o, i, n), delete n.children
            }
        }, this)
    }, e.prototype.useElOptionsToUpdate = function() {
        var t = this._elOptionsToUpdate;
        return this._elOptionsToUpdate = null, t
    }, e.type = "graphic", e.defaultOption = {
        elements: []
    }, e
}(yt);
var AO = {
        path: null,
        compoundPath: null,
        group: J,
        image: Zt,
        text: dt
    },
    zi = lt(),
    LO = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.init = function() {
            this._elMap = Y()
        }, e.prototype.render = function(t, i, a) {
            t !== this._lastGraphicModel && this._clear(), this._lastGraphicModel = t, this._updateElements(t), this._relocate(t, a)
        }, e.prototype._updateElements = function(t) {
            var i = t.useElOptionsToUpdate();
            if (i) {
                var a = this._elMap,
                    n = this.group,
                    o = t.get("z"),
                    s = t.get("zlevel");
                w(i, function(l) {
                    var u = ie(l.id, null),
                        f = u != null ? a.get(u) : null,
                        p = ie(l.parentId, null),
                        c = p != null ? a.get(p) : n,
                        h = l.type,
                        v = l.style;
                    h === "text" && v && l.hv && l.hv[1] && (v.textVerticalAlign = v.textBaseline = v.verticalAlign = v.align = null);
                    var d = l.textContent,
                        m = l.textConfig;
                    if (v && Ud(v, h, !!m, !!d)) {
                        var g = Vd(v, h, !0);
                        !m && g.textConfig && (m = l.textConfig = g.textConfig), !d && g.textContent && (d = g.textContent)
                    }
                    var y = P9(l),
                        x = l.$action || "merge",
                        _ = x === "merge",
                        S = x === "replace";
                    if (_) {
                        var b = !f,
                            T = f;
                        b ? T = DO(u, c, l.type, a) : (T && (zi(T).isNew = !1), Bd(T)), T && (uu(T, y, t, {
                            isInit: b
                        }), MO(T, l, o, s))
                    } else if (S) {
                        Qd(f, l, a, t);
                        var C = DO(u, c, l.type, a);
                        C && (uu(C, y, t, {
                            isInit: !0
                        }), MO(C, l, o, s))
                    } else x === "remove" && (h1(f, l), Qd(f, l, a, t));
                    var A = a.get(u);
                    if (A && d)
                        if (_) {
                            var D = A.getTextContent();
                            D ? D.attr(d) : A.setTextContent(new dt(d))
                        } else S && A.setTextContent(new dt(d));
                    if (A) {
                        var M = l.clipPath;
                        if (M) {
                            var I = M.type,
                                E = void 0,
                                b = !1;
                            if (_) {
                                var P = A.getClipPath();
                                b = !P || zi(P).type !== I, E = b ? H1(I) : P
                            } else S && (b = !0, E = H1(I));
                            A.setClipPath(E), uu(E, M, t, {
                                isInit: b
                            }), pu(E, M.keyframeAnimation, t)
                        }
                        var R = zi(A);
                        A.setTextConfig(m), R.option = l, R9(A, t, l), _i({
                            el: A,
                            componentModel: t,
                            itemName: A.name,
                            itemTooltipOption: l.tooltip
                        }), pu(A, l.keyframeAnimation, t)
                    }
                })
            }
        }, e.prototype._relocate = function(t, i) {
            for (var a = t.option.elements, n = this.group, o = this._elMap, s = i.getWidth(), l = i.getHeight(), u = ["x", "y"], f = 0; f < a.length; f++) {
                var p = a[f],
                    c = ie(p.id, null),
                    h = c != null ? o.get(c) : null;
                if (!(!h || !h.isGroup)) {
                    var v = h.parent,
                        d = v === n,
                        m = zi(h),
                        g = zi(v);
                    m.width = W(m.option.width, d ? s : g.width) || 0, m.height = W(m.option.height, d ? l : g.height) || 0
                }
            }
            for (var f = a.length - 1; f >= 0; f--) {
                var p = a[f],
                    c = ie(p.id, null),
                    h = c != null ? o.get(c) : null;
                if (h) {
                    var v = h.parent,
                        g = zi(v),
                        y = v === n ? {
                            width: s,
                            height: l
                        } : {
                            width: g.width,
                            height: g.height
                        },
                        x = {},
                        _ = On(h, p, y, null, {
                            hv: p.hv,
                            boundingMode: p.bounding
                        }, x);
                    if (!zi(h).isNew && _) {
                        for (var S = p.transition, b = {}, T = 0; T < u.length; T++) {
                            var C = u[T],
                                A = x[C];
                            S && (io(S) || at(S, C) >= 0) ? b[C] = A : h[C] = A
                        }
                        xt(h, b, t, 0)
                    } else h.attr(x)
                }
            }
        }, e.prototype._clear = function() {
            var t = this,
                i = this._elMap;
            i.each(function(a) {
                Qd(a, zi(a).option, i, t._lastGraphicModel)
            }), this._elMap = Y()
        }, e.prototype.dispose = function() {
            this._clear()
        }, e.type = "graphic", e
    }(It);

function H1(r) {
    var e = $(AO, r) ? AO[r] : es(r),
        t = new e({});
    return zi(t).type = r, t
}

function DO(r, e, t, i) {
    var a = H1(t);
    return e.add(a), i.set(r, a), zi(a).id = r, zi(a).isNew = !0, a
}

function Qd(r, e, t, i) {
    var a = r && r.parent;
    a && (r.type === "group" && r.traverse(function(n) {
        Qd(n, e, t, i)
    }), fu(r, e, i), t.removeKey(zi(r).id))
}

function MO(r, e, t, i) {
    r.isGroup || w([
        ["cursor", ye.prototype.cursor],
        ["zlevel", i || 0],
        ["z", t || 0],
        ["z2", 0]
    ], function(a) {
        var n = a[0];
        $(e, n) ? r[n] = ot(e[n], a[1]) : r[n] == null && (r[n] = a[1])
    }), w(ft(e), function(a) {
        if (a.indexOf("on") === 0) {
            var n = e[a];
            r[a] = X(n) ? n : null
        }
    }), $(e, "draggable") && (r.draggable = e.draggable), e.name != null && (r.name = e.name), e.id != null && (r.id = e.id)
}

function P9(r) {
    return r = O({}, r), w(["id", "parentId", "$action", "hv", "bounding", "textContent", "clipPath"].concat(Vy), function(e) {
        delete r[e]
    }), r
}

function R9(r, e, t) {
    var i = et(r).eventData;
    !r.silent && !r.ignore && !i && (i = et(r).eventData = {
        componentType: "graphic",
        componentIndex: e.componentIndex,
        name: r.name
    }), i && (i.info = t.info)
}

function W1(r) {
    r.registerComponentModel(CO), r.registerComponentView(LO), r.registerPreprocessor(function(e) {
        var t = e.graphic;
        z(t) ? !t[0] || !t[0].elements ? e.graphic = [{
            elements: t
        }] : e.graphic = [e.graphic[0]] : t && !t.elements && (e.graphic = [{
            elements: [t]
        }])
    })
}
var Y1 = ["x", "y", "radius", "angle", "single"],
    N9 = ["cartesian2d", "polar", "singleAxis"];

function IO(r) {
    var e = r.get("coordinateSystem");
    return at(N9, e) >= 0
}

function ki(r) {
    return r + "Axis"
}

function EO(r, e) {
    var t = Y(),
        i = [],
        a = Y();
    r.eachComponent({
        mainType: "dataZoom",
        query: e
    }, function(f) {
        a.get(f.uid) || s(f)
    });
    var n;
    do n = !1, r.eachComponent("dataZoom", o); while (n);

    function o(f) {
        !a.get(f.uid) && l(f) && (s(f), n = !0)
    }

    function s(f) {
        a.set(f.uid, !0), i.push(f), u(f)
    }

    function l(f) {
        var p = !1;
        return f.eachTargetAxis(function(c, h) {
            var v = t.get(c);
            v && v[h] && (p = !0)
        }), p
    }

    function u(f) {
        f.eachTargetAxis(function(p, c) {
            (t.get(p) || t.set(p, []))[c] = !0
        })
    }
    return i
}

function $d(r) {
    var e = r.ecModel,
        t = {
            infoList: [],
            infoMap: Y()
        };
    return r.eachTargetAxis(function(i, a) {
        var n = e.getComponent(ki(i), a);
        if (n) {
            var o = n.getCoordSysModel();
            if (o) {
                var s = o.uid,
                    l = t.infoMap.get(s);
                l || (l = {
                    model: o,
                    axisModels: []
                }, t.infoList.push(l), t.infoMap.set(s, l)), l.axisModels.push(n)
            }
        }
    }), t
}
var Z1 = function() {
        function r() {
            this.indexList = [], this.indexMap = []
        }
        return r.prototype.add = function(e) {
            this.indexMap[e] || (this.indexList.push(e), this.indexMap[e] = !0)
        }, r
    }(),
    O9 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t._autoThrottle = !0, t._noTarget = !0, t._rangePropMode = ["percent", "percent"], t
        }
        return e.prototype.init = function(t, i, a) {
            var n = PO(t);
            this.settledOption = n, this.mergeDefaultAndTheme(t, a), this._doInit(n)
        }, e.prototype.mergeOption = function(t) {
            var i = PO(t);
            nt(this.option, t, !0), nt(this.settledOption, i, !0), this._doInit(i)
        }, e.prototype._doInit = function(t) {
            var i = this.option;
            this._setDefaultThrottle(t), this._updateRangeUse(t);
            var a = this.settledOption;
            w([
                ["start", "startValue"],
                ["end", "endValue"]
            ], function(n, o) {
                this._rangePropMode[o] === "value" && (i[n[0]] = a[n[0]] = null)
            }, this), this._resetTarget()
        }, e.prototype._resetTarget = function() {
            var t = this.get("orient", !0),
                i = this._targetAxisInfoMap = Y(),
                a = this._fillSpecifiedTargetAxis(i);
            a ? this._orient = t || this._makeAutoOrientByTargetAxis() : (this._orient = t || "horizontal", this._fillAutoTargetAxisByOrient(i, this._orient)), this._noTarget = !0, i.each(function(n) {
                n.indexList.length && (this._noTarget = !1)
            }, this)
        }, e.prototype._fillSpecifiedTargetAxis = function(t) {
            var i = !1;
            return w(Y1, function(a) {
                var n = this.getReferringComponents(ki(a), bT);
                if (n.specified) {
                    i = !0;
                    var o = new Z1;
                    w(n.models, function(s) {
                        o.add(s.componentIndex)
                    }), t.set(a, o)
                }
            }, this), i
        }, e.prototype._fillAutoTargetAxisByOrient = function(t, i) {
            var a = this.ecModel,
                n = !0;
            if (n) {
                var o = i === "vertical" ? "y" : "x",
                    s = a.findComponents({
                        mainType: o + "Axis"
                    });
                l(s, o)
            }
            if (n) {
                var s = a.findComponents({
                    mainType: "singleAxis",
                    filter: function(f) {
                        return f.get("orient", !0) === i
                    }
                });
                l(s, "single")
            }

            function l(u, f) {
                var p = u[0];
                if (p) {
                    var c = new Z1;
                    if (c.add(p.componentIndex), t.set(f, c), n = !1, f === "x" || f === "y") {
                        var h = p.getReferringComponents("grid", Ht).models[0];
                        h && w(u, function(v) {
                            p.componentIndex !== v.componentIndex && h === v.getReferringComponents("grid", Ht).models[0] && c.add(v.componentIndex)
                        })
                    }
                }
            }
            n && w(Y1, function(u) {
                if (n) {
                    var f = a.findComponents({
                        mainType: ki(u),
                        filter: function(c) {
                            return c.get("type", !0) === "category"
                        }
                    });
                    if (f[0]) {
                        var p = new Z1;
                        p.add(f[0].componentIndex), t.set(u, p), n = !1
                    }
                }
            }, this)
        }, e.prototype._makeAutoOrientByTargetAxis = function() {
            var t;
            return this.eachTargetAxis(function(i) {
                !t && (t = i)
            }, this), t === "y" ? "vertical" : "horizontal"
        }, e.prototype._setDefaultThrottle = function(t) {
            if (t.hasOwnProperty("throttle") && (this._autoThrottle = !1), this._autoThrottle) {
                var i = this.ecModel.option;
                this.option.throttle = i.animation && i.animationDurationUpdate > 0 ? 100 : 20
            }
        }, e.prototype._updateRangeUse = function(t) {
            var i = this._rangePropMode,
                a = this.get("rangeMode");
            w([
                ["start", "startValue"],
                ["end", "endValue"]
            ], function(n, o) {
                var s = t[n[0]] != null,
                    l = t[n[1]] != null;
                s && !l ? i[o] = "percent" : !s && l ? i[o] = "value" : a ? i[o] = a[o] : s && (i[o] = "percent")
            })
        }, e.prototype.noTarget = function() {
            return this._noTarget
        }, e.prototype.getFirstTargetAxisModel = function() {
            var t;
            return this.eachTargetAxis(function(i, a) {
                t == null && (t = this.ecModel.getComponent(ki(i), a))
            }, this), t
        }, e.prototype.eachTargetAxis = function(t, i) {
            this._targetAxisInfoMap.each(function(a, n) {
                w(a.indexList, function(o) {
                    t.call(i, n, o)
                })
            })
        }, e.prototype.getAxisProxy = function(t, i) {
            var a = this.getAxisModel(t, i);
            if (a) return a.__dzAxisProxy
        }, e.prototype.getAxisModel = function(t, i) {
            var a = this._targetAxisInfoMap.get(t);
            if (a && a.indexMap[i]) return this.ecModel.getComponent(ki(t), i)
        }, e.prototype.setRawRange = function(t) {
            var i = this.option,
                a = this.settledOption;
            w([
                ["start", "startValue"],
                ["end", "endValue"]
            ], function(n) {
                (t[n[0]] != null || t[n[1]] != null) && (i[n[0]] = a[n[0]] = t[n[0]], i[n[1]] = a[n[1]] = t[n[1]])
            }, this), this._updateRangeUse(t)
        }, e.prototype.setCalculatedRange = function(t) {
            var i = this.option;
            w(["start", "startValue", "end", "endValue"], function(a) {
                i[a] = t[a]
            })
        }, e.prototype.getPercentRange = function() {
            var t = this.findRepresentativeAxisProxy();
            if (t) return t.getDataPercentWindow()
        }, e.prototype.getValueRange = function(t, i) {
            if (t == null && i == null) {
                var a = this.findRepresentativeAxisProxy();
                if (a) return a.getDataValueWindow()
            } else return this.getAxisProxy(t, i).getDataValueWindow()
        }, e.prototype.findRepresentativeAxisProxy = function(t) {
            if (t) return t.__dzAxisProxy;
            for (var i, a = this._targetAxisInfoMap.keys(), n = 0; n < a.length; n++)
                for (var o = a[n], s = this._targetAxisInfoMap.get(o), l = 0; l < s.indexList.length; l++) {
                    var u = this.getAxisProxy(o, s.indexList[l]);
                    if (u.hostedBy(this)) return u;
                    i || (i = u)
                }
            return i
        }, e.prototype.getRangePropMode = function() {
            return this._rangePropMode.slice()
        }, e.prototype.getOrient = function() {
            return this._orient
        }, e.type = "dataZoom", e.dependencies = ["xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "series", "toolbox"], e.defaultOption = {
            z: 4,
            filterMode: "filter",
            start: 0,
            end: 100
        }, e
    }(yt);

function PO(r) {
    var e = {};
    return w(["start", "end", "startValue", "endValue", "throttle"], function(t) {
        r.hasOwnProperty(t) && (e[t] = r[t])
    }), e
}
var oo = O9;
var z9 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.type = "dataZoom.select", e
    }(oo),
    RO = z9;
var k9 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.render = function(t, i, a, n) {
            this.dataZoomModel = t, this.ecModel = i, this.api = a
        }, e.type = "dataZoom", e
    }(It),
    du = k9;
var U9 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.type = "dataZoom.select", e
    }(du),
    NO = U9;
var mu = w,
    OO = _e,
    V9 = function() {
        function r(e, t, i, a) {
            this._dimName = e, this._axisIndex = t, this.ecModel = a, this._dataZoomModel = i
        }
        return r.prototype.hostedBy = function(e) {
            return this._dataZoomModel === e
        }, r.prototype.getDataValueWindow = function() {
            return this._valueWindow.slice()
        }, r.prototype.getDataPercentWindow = function() {
            return this._percentWindow.slice()
        }, r.prototype.getTargetSeriesModels = function() {
            var e = [];
            return this.ecModel.eachSeries(function(t) {
                if (IO(t)) {
                    var i = ki(this._dimName),
                        a = t.getReferringComponents(i, Ht).models[0];
                    a && this._axisIndex === a.componentIndex && e.push(t)
                }
            }, this), e
        }, r.prototype.getAxisModel = function() {
            return this.ecModel.getComponent(this._dimName + "Axis", this._axisIndex)
        }, r.prototype.getMinMaxSpan = function() {
            return Q(this._minMaxSpan)
        }, r.prototype.calculateDataWindow = function(e) {
            var t = this._dataExtent,
                i = this.getAxisModel(),
                a = i.axis.scale,
                n = this._dataZoomModel.getRangePropMode(),
                o = [0, 100],
                s = [],
                l = [],
                u;
            mu(["start", "end"], function(c, h) {
                var v = e[c],
                    d = e[c + "Value"];
                n[h] === "percent" ? (v == null && (v = o[h]), d = a.parse(Rt(v, o, t))) : (u = !0, d = d == null ? t[h] : a.parse(d), v = Rt(d, t, o)), l[h] = d == null || isNaN(d) ? t[h] : d, s[h] = v == null || isNaN(v) ? o[h] : v
            }), OO(l), OO(s);
            var f = this._minMaxSpan;
            u ? p(l, s, t, o, !1) : p(s, l, o, t, !0);

            function p(c, h, v, d, m) {
                var g = m ? "Span" : "ValueSpan";
                Yr(0, c, v, "all", f["min" + g], f["max" + g]);
                for (var y = 0; y < 2; y++) h[y] = Rt(c[y], v, d, !0), m && (h[y] = a.parse(h[y]))
            }
            return {
                valueWindow: l,
                percentWindow: s
            }
        }, r.prototype.reset = function(e) {
            if (e === this._dataZoomModel) {
                var t = this.getTargetSeriesModels();
                this._dataExtent = B9(this, this._dimName, t), this._updateMinMaxSpan();
                var i = this.calculateDataWindow(e.settledOption);
                this._valueWindow = i.valueWindow, this._percentWindow = i.percentWindow, this._setAxisModel()
            }
        }, r.prototype.filterData = function(e, t) {
            if (e !== this._dataZoomModel) return;
            var i = this._dimName,
                a = this.getTargetSeriesModels(),
                n = e.get("filterMode"),
                o = this._valueWindow;
            if (n === "none") return;
            mu(a, function(l) {
                var u = l.getData(),
                    f = u.mapDimensionsAll(i);
                if (f.length) {
                    if (n === "weakFilter") {
                        var p = u.getStore(),
                            c = k(f, function(h) {
                                return u.getDimensionIndex(h)
                            }, u);
                        u.filterSelf(function(h) {
                            for (var v, d, m, g = 0; g < f.length; g++) {
                                var y = p.get(c[g], h),
                                    x = !isNaN(y),
                                    _ = y < o[0],
                                    S = y > o[1];
                                if (x && !_ && !S) return !0;
                                x && (m = !0), _ && (v = !0), S && (d = !0)
                            }
                            return m && v && d
                        })
                    } else mu(f, function(h) {
                        if (n === "empty") l.setData(u = u.map(h, function(d) {
                            return s(d) ? d : NaN
                        }));
                        else {
                            var v = {};
                            v[h] = o, u.selectRange(v)
                        }
                    });
                    mu(f, function(h) {
                        u.setApproximateExtent(o, h)
                    })
                }
            });

            function s(l) {
                return l >= o[0] && l <= o[1]
            }
        }, r.prototype._updateMinMaxSpan = function() {
            var e = this._minMaxSpan = {},
                t = this._dataZoomModel,
                i = this._dataExtent;
            mu(["min", "max"], function(a) {
                var n = t.get(a + "Span"),
                    o = t.get(a + "ValueSpan");
                o != null && (o = this.getAxisModel().axis.scale.parse(o)), o != null ? n = Rt(i[0] + o, i, [0, 100], !0) : n != null && (o = Rt(n, [0, 100], i, !0) - i[0]), e[a + "Span"] = n, e[a + "ValueSpan"] = o
            }, this)
        }, r.prototype._setAxisModel = function() {
            var e = this.getAxisModel(),
                t = this._percentWindow,
                i = this._valueWindow;
            if (t) {
                var a = tl(i, [0, 500]);
                a = Math.min(a, 20);
                var n = e.axis.scale.rawExtentInfo;
                t[0] !== 0 && n.setDeterminedMinMax("min", +i[0].toFixed(a)), t[1] !== 100 && n.setDeterminedMinMax("max", +i[1].toFixed(a)), n.freeze()
            }
        }, r
    }();

function B9(r, e, t) {
    var i = [1 / 0, -1 / 0];
    mu(t, function(o) {
        yL(i, o.getData(), e)
    });
    var a = r.getAxisModel(),
        n = Tv(a.axis.scale, a, i).calculate();
    return [n.min, n.max]
}
var zO = V9;
var F9 = {
        getTargetSeries: function(r) {
            function e(a) {
                r.eachComponent("dataZoom", function(n) {
                    n.eachTargetAxis(function(o, s) {
                        var l = r.getComponent(ki(o), s);
                        a(o, s, l, n)
                    })
                })
            }
            e(function(a, n, o, s) {
                o.__dzAxisProxy = null
            });
            var t = [];
            e(function(a, n, o, s) {
                o.__dzAxisProxy || (o.__dzAxisProxy = new zO(a, n, s, r), t.push(o.__dzAxisProxy))
            });
            var i = Y();
            return w(t, function(a) {
                w(a.getTargetSeriesModels(), function(n) {
                    i.set(n.uid, n)
                })
            }), i
        },
        overallReset: function(r, e) {
            r.eachComponent("dataZoom", function(t) {
                t.eachTargetAxis(function(i, a) {
                    t.getAxisProxy(i, a).reset(t)
                }), t.eachTargetAxis(function(i, a) {
                    t.getAxisProxy(i, a).filterData(t, e)
                })
            }), r.eachComponent("dataZoom", function(t) {
                var i = t.findRepresentativeAxisProxy();
                if (i) {
                    var a = i.getDataPercentWindow(),
                        n = i.getDataValueWindow();
                    t.setCalculatedRange({
                        start: a[0],
                        end: a[1],
                        startValue: n[0],
                        endValue: n[1]
                    })
                }
            })
        }
    },
    kO = F9;

function X1(r) {
    r.registerAction("dataZoom", function(e, t) {
        var i = EO(t, e);
        w(i, function(a) {
            a.setRawRange({
                start: e.start,
                end: e.end,
                startValue: e.startValue,
                endValue: e.endValue
            })
        })
    })
}
var UO = !1;

function Ns(r) {
    UO || (UO = !0, r.registerProcessor(r.PRIORITY.PROCESSOR.FILTER, kO), X1(r), r.registerSubTypeDefaulter("dataZoom", function() {
        return "slider"
    }))
}

function VO(r) {
    r.registerComponentModel(RO), r.registerComponentView(NO), Ns(r)
}
var Ge = function() {
    function r() {}
    return r
}();
var BO = {};

function so(r, e) {
    BO[r] = e
}

function tm(r) {
    return BO[r]
}
var H9 = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.optionUpdated = function() {
            r.prototype.optionUpdated.apply(this, arguments);
            var t = this.ecModel;
            w(this.option.feature, function(i, a) {
                var n = tm(a);
                n && (n.getDefaultOption && (n.defaultOption = n.getDefaultOption(t)), nt(i, n.defaultOption))
            })
        }, e.type = "toolbox", e.layoutMode = {
            type: "box",
            ignoreSize: !0
        }, e.defaultOption = {
            show: !0,
            z: 6,
            orient: "horizontal",
            left: "right",
            top: "top",
            backgroundColor: "transparent",
            borderColor: "#ccc",
            borderRadius: 0,
            borderWidth: 0,
            padding: 5,
            itemSize: 15,
            itemGap: 8,
            showTitle: !0,
            iconStyle: {
                borderColor: "#666",
                color: "none"
            },
            emphasis: {
                iconStyle: {
                    borderColor: "#3E98C5"
                }
            },
            tooltip: {
                show: !1,
                position: "bottom"
            }
        }, e
    }(yt),
    FO = H9;

function GO(r, e, t) {
    var i = e.getBoxLayoutParams(),
        a = e.get("padding"),
        n = {
            width: t.getWidth(),
            height: t.getHeight()
        },
        o = Ut(i, n, a);
    Zi(e.get("orient"), r, e.get("itemGap"), o.width, o.height), On(r, i, n, a)
}

function em(r, e) {
    var t = ri(e.get("padding")),
        i = e.getItemStyle(["color", "opacity"]);
    return i.fill = e.get("backgroundColor"), r = new ht({
        shape: {
            x: r.x - t[3],
            y: r.y - t[0],
            width: r.width + t[1] + t[3],
            height: r.height + t[0] + t[2],
            r: e.get("borderRadius")
        },
        style: i,
        silent: !0,
        z2: -1
    }), r
}
var Y9 = function(r) {
    L(e, r);

    function e() {
        return r !== null && r.apply(this, arguments) || this
    }
    return e.prototype.render = function(t, i, a, n) {
        var o = this.group;
        if (o.removeAll(), !t.get("show")) return;
        var s = +t.get("itemSize"),
            l = t.get("orient") === "vertical",
            u = t.get("feature") || {},
            f = this._features || (this._features = {}),
            p = [];
        w(u, function(v, d) {
            p.push(d)
        }), new tr(this._featureNames || [], p).add(c).update(c).remove(rt(c, null)).execute(), this._featureNames = p;

        function c(v, d) {
            var m = p[v],
                g = p[d],
                y = u[m],
                x = new Dt(y, t, t.ecModel),
                _;
            if (n && n.newTitle != null && n.featureName === m && (y.title = n.newTitle), m && !g) {
                if (Z9(m)) _ = {
                    onclick: x.option.onclick,
                    featureName: m
                };
                else {
                    var S = tm(m);
                    if (!S) return;
                    _ = new S
                }
                f[m] = _
            } else if (_ = f[g], !_) return;
            _.uid = Si("toolbox-feature"), _.model = x, _.ecModel = i, _.api = a;
            var b = _ instanceof Ge;
            if (!m && g) {
                b && _.dispose && _.dispose(i, a);
                return
            }
            if (!x.get("show") || b && _.unusable) {
                b && _.remove && _.remove(i, a);
                return
            }
            h(x, _, m), x.setIconStatus = function(T, C) {
                var A = this.option,
                    D = this.iconPaths;
                A.iconStatus = A.iconStatus || {}, A.iconStatus[T] = C, D[T] && (C === "emphasis" ? rr : ir)(D[T])
            }, _ instanceof Ge && _.render && _.render(x, i, a, n)
        }

        function h(v, d, m) {
            var g = v.getModel("iconStyle"),
                y = v.getModel(["emphasis", "iconStyle"]),
                x = d instanceof Ge && d.getIcons ? d.getIcons() : v.get("icon"),
                _ = v.get("title") || {},
                S, b;
            F(x) ? (S = {}, S[m] = x) : S = x, F(_) ? (b = {}, b[m] = _) : b = _;
            var T = v.iconPaths = {};
            w(S, function(C, A) {
                var D = Wi(C, {}, {
                    x: -s / 2,
                    y: -s / 2,
                    width: s,
                    height: s
                });
                D.setStyle(g.getItemStyle());
                var M = D.ensureState("emphasis");
                M.style = y.getItemStyle();
                var I = new dt({
                    style: {
                        text: b[A],
                        align: y.get("textAlign"),
                        borderRadius: y.get("textBorderRadius"),
                        padding: y.get("textPadding"),
                        fill: null,
                        font: xl({
                            fontStyle: y.get("textFontStyle"),
                            fontFamily: y.get("textFontFamily"),
                            fontSize: y.get("textFontSize"),
                            fontWeight: y.get("textFontWeight")
                        }, i)
                    },
                    ignore: !0
                });
                D.setTextContent(I), _i({
                    el: D,
                    componentModel: t,
                    itemName: A,
                    formatterParamsExtra: {
                        title: b[A]
                    }
                }), D.__title = b[A], D.on("mouseover", function() {
                    var E = y.getItemStyle(),
                        P = l ? t.get("right") == null && t.get("left") !== "right" ? "right" : "left" : t.get("bottom") == null && t.get("top") !== "bottom" ? "bottom" : "top";
                    I.setStyle({
                        fill: y.get("textFill") || E.fill || E.stroke || "#000",
                        backgroundColor: y.get("textBackgroundColor")
                    }), D.setTextConfig({
                        position: y.get("textPosition") || P
                    }), I.ignore = !t.get("showTitle"), a.enterEmphasis(this)
                }).on("mouseout", function() {
                    v.get(["iconStatus", A]) !== "emphasis" && a.leaveEmphasis(this), I.hide()
                }), (v.get(["iconStatus", A]) === "emphasis" ? rr : ir)(D), o.add(D), D.on("click", H(d.onclick, d, i, a, A)), T[A] = D
            })
        }
        GO(o, t, a), o.add(em(o.getBoundingRect(), t)), l || o.eachChild(function(v) {
            var d = v.__title,
                m = v.ensureState("emphasis"),
                g = m.textConfig || (m.textConfig = {}),
                y = v.getTextContent(),
                x = y && y.ensureState("emphasis");
            if (x && !X(x) && d) {
                var _ = x.style || (x.style = {}),
                    S = ua(d, dt.makeFont(_)),
                    b = v.x + o.x,
                    T = v.y + o.y + s,
                    C = !1;
                T + S.height > a.getHeight() && (g.position = "top", C = !0);
                var A = C ? -5 - S.height : s + 10;
                b + S.width / 2 > a.getWidth() ? (g.position = ["100%", A], _.align = "right") : b - S.width / 2 < 0 && (g.position = [0, A], _.align = "left")
            }
        })
    }, e.prototype.updateView = function(t, i, a, n) {
        w(this._features, function(o) {
            o instanceof Ge && o.updateView && o.updateView(o.model, i, a, n)
        })
    }, e.prototype.remove = function(t, i) {
        w(this._features, function(a) {
            a instanceof Ge && a.remove && a.remove(t, i)
        }), this.group.removeAll()
    }, e.prototype.dispose = function(t, i) {
        w(this._features, function(a) {
            a instanceof Ge && a.dispose && a.dispose(t, i)
        })
    }, e.type = "toolbox", e
}(It);

function Z9(r) {
    return r.indexOf("my") === 0
}
var HO = Y9;
var X9 = function(r) {
        L(e, r);

        function e() {
            return r !== null && r.apply(this, arguments) || this
        }
        return e.prototype.onclick = function(t, i) {
            var a = this.model,
                n = a.get("name") || t.get("title.0.text") || "echarts",
                o = i.getZr().painter.getType() === "svg",
                s = o ? "svg" : a.get("type", !0) || "png",
                l = i.getConnectedDataURL({
                    type: s,
                    backgroundColor: a.get("backgroundColor", !0) || t.get("backgroundColor") || "#fff",
                    connectedBackgroundColor: a.get("connectedBackgroundColor"),
                    excludeComponents: a.get("excludeComponents"),
                    pixelRatio: a.get("pixelRatio")
                }),
                u = Ct.browser;
            if (typeof MouseEvent == "function" && (u.newEdge || !u.ie && !u.edge)) {
                var f = document.createElement("a");
                f.download = n + "." + s, f.target = "_blank", f.href = l;
                var p = new MouseEvent("click", {
                    view: document.defaultView,
                    bubbles: !0,
                    cancelable: !1
                });
                f.dispatchEvent(p)
            } else if (window.navigator.msSaveOrOpenBlob || o) {
                var c = l.split(","),
                    h = c[0].indexOf("base64") > -1,
                    v = o ? decodeURIComponent(c[1]) : c[1];
                h && (v = window.atob(v));
                var d = n + "." + s;
                if (window.navigator.msSaveOrOpenBlob) {
                    for (var m = v.length, g = new Uint8Array(m); m--;) g[m] = v.charCodeAt(m);
                    var y = new Blob([g]);
                    window.navigator.msSaveOrOpenBlob(y, d)
                } else {
                    var x = document.createElement("iframe");
                    document.body.appendChild(x);
                    var _ = x.contentWindow,
                        S = _.document;
                    S.open("image/svg+xml", "replace"), S.write(v), S.close(), _.focus(), S.execCommand("SaveAs", !0, d), document.body.removeChild(x)
                }
            } else {
                var b = a.get("lang"),
                    T = '<body style="margin:0;"><img src="' + l + '" style="max-width:100%;" title="' + (b && b[0] || "") + '" /></body>',
                    C = window.open();
                C.document.write(T), C.document.title = n
            }
        }, e.getDefaultOption = function(t) {
            var i = {
                show: !0,
                icon: "M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",
                title: t.getLocaleModel().get(["toolbox", "saveAsImage", "title"]),
                type: "png",
                connectedBackgroundColor: "#fff",
                name: "",
                excludeComponents: ["toolbox"],
                lang: t.getLocaleModel().get(["toolbox", "saveAsImage", "lang"])
            };
            return i
        }, e
    }(Ge),
    WO = X9;
var YO = "__ec_magicType_stack__";
var q9 = [
        ["line", "bar"],
        ["stack"]
    ],
    K9 = function(r) {
        L(e, r);

        function e() {
            return r !== null && r.apply(this, arguments) || this
        }
        return e.prototype.getIcons = function() {
            var t = this.model,
                i = t.get("icon"),
                a = {};
            return w(t.get("type"), function(n) {
                i[n] && (a[n] = i[n])
            }), a
        }, e.getDefaultOption = function(t) {
            var i = {
                show: !0,
                type: [],
                icon: {
                    line: "M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",
                    bar: "M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",
                    stack: "M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z"
                },
                title: t.getLocaleModel().get(["toolbox", "magicType", "title"]),
                option: {},
                seriesIndex: {}
            };
            return i
        }, e.prototype.onclick = function(t, i, a) {
            var n = this.model,
                o = n.get(["seriesIndex", a]);
            if (ZO[a]) {
                var s = {
                        series: []
                    },
                    l = function(p) {
                        var c = p.subType,
                            h = p.id,
                            v = ZO[a](c, h, p, n);
                        v && (q(v, p.option), s.series.push(v));
                        var d = p.coordinateSystem;
                        if (d && d.type === "cartesian2d" && (a === "line" || a === "bar")) {
                            var m = d.getAxesByScale("ordinal")[0];
                            if (m) {
                                var g = m.dim,
                                    y = g + "Axis",
                                    x = p.getReferringComponents(y, Ht).models[0],
                                    _ = x.componentIndex;
                                s[y] = s[y] || [];
                                for (var S = 0; S <= _; S++) s[y][_] = s[y][_] || {};
                                s[y][_].boundaryGap = a === "bar"
                            }
                        }
                    };
                w(q9, function(p) {
                    at(p, a) >= 0 && w(p, function(c) {
                        n.setIconStatus(c, "normal")
                    })
                }), n.setIconStatus(a, "emphasis"), t.eachComponent({
                    mainType: "series",
                    query: o == null ? null : {
                        seriesIndex: o
                    }
                }, l);
                var u, f = a;
                a === "stack" && (u = nt({
                    stack: n.option.title.tiled,
                    tiled: n.option.title.stack
                }, n.option.title), n.get(["iconStatus", a]) !== "emphasis" && (f = "tiled")), i.dispatchAction({
                    type: "changeMagicType",
                    currentType: f,
                    newOption: s,
                    newTitle: u,
                    featureName: "magicType"
                })
            }
        }, e
    }(Ge),
    ZO = {
        line: function(r, e, t, i) {
            if (r === "bar") return nt({
                id: e,
                type: "line",
                data: t.get("data"),
                stack: t.get("stack"),
                markPoint: t.get("markPoint"),
                markLine: t.get("markLine")
            }, i.get(["option", "line"]) || {}, !0)
        },
        bar: function(r, e, t, i) {
            if (r === "line") return nt({
                id: e,
                type: "bar",
                data: t.get("data"),
                stack: t.get("stack"),
                markPoint: t.get("markPoint"),
                markLine: t.get("markLine")
            }, i.get(["option", "bar"]) || {}, !0)
        },
        stack: function(r, e, t, i) {
            var a = t.get("stack") === YO;
            if (r === "line" || r === "bar") return i.setIconStatus("stack", a ? "normal" : "emphasis"), nt({
                id: e,
                stack: a ? "" : YO
            }, i.get(["option", "stack"]) || {}, !0)
        }
    };
mr({
    type: "changeMagicType",
    event: "magicTypeChanged",
    update: "prepareAndUpdate"
}, function(r, e) {
    e.mergeOption(r.newOption)
});
var XO = K9;
var im = new Array(60).join("-"),
    gu = "	";

function j9(r) {
    var e = {},
        t = [],
        i = [];
    return r.eachRawSeries(function(a) {
        var n = a.coordinateSystem;
        if (n && (n.type === "cartesian2d" || n.type === "polar")) {
            var o = n.getBaseAxis();
            if (o.type === "category") {
                var s = o.dim + "_" + o.index;
                e[s] || (e[s] = {
                    categoryAxis: o,
                    valueAxis: n.getOtherAxis(o),
                    series: []
                }, i.push({
                    axisDim: o.dim,
                    axisIndex: o.index
                })), e[s].series.push(a)
            } else t.push(a)
        } else t.push(a)
    }), {
        seriesGroupByCategoryAxis: e,
        other: t,
        meta: i
    }
}

function J9(r) {
    var e = [];
    return w(r, function(t, i) {
        var a = t.categoryAxis,
            n = t.valueAxis,
            o = n.dim,
            s = [" "].concat(k(t.series, function(h) {
                return h.name
            })),
            l = [a.model.getCategories()];
        w(t.series, function(h) {
            var v = h.getRawData();
            l.push(h.getRawData().mapArray(v.mapDimension(o), function(d) {
                return d
            }))
        });
        for (var u = [s.join(gu)], f = 0; f < l[0].length; f++) {
            for (var p = [], c = 0; c < l.length; c++) p.push(l[c][f]);
            u.push(p.join(gu))
        }
        e.push(u.join(`
`))
    }), e.join(`

` + im + `

`)
}

function Q9(r) {
    return k(r, function(e) {
        var t = e.getRawData(),
            i = [e.name],
            a = [];
        return t.each(t.dimensions, function() {
            for (var n = arguments.length, o = arguments[n - 1], s = t.getName(o), l = 0; l < n - 1; l++) a[l] = arguments[l];
            i.push((s ? s + gu : "") + a.join(gu))
        }), i.join(`
`)
    }).join(`

` + im + `

`)
}

function $9(r) {
    var e = j9(r);
    return {
        value: wt([J9(e.seriesGroupByCategoryAxis), Q9(e.other)], function(t) {
            return !!t.replace(/[\n\t\s]/g, "")
        }).join(`

` + im + `

`),
        meta: e.meta
    }
}

function rm(r) {
    return r.replace(/^\s\s*/, "").replace(/\s\s*$/, "")
}

function tX(r) {
    var e = r.slice(0, r.indexOf(`
`));
    if (e.indexOf(gu) >= 0) return !0
}
var q1 = new RegExp("[" + gu + "]+", "g");

function eX(r) {
    for (var e = r.split(/\n+/g), t = rm(e.shift()).split(q1), i = [], a = k(t, function(l) {
            return {
                name: l,
                data: []
            }
        }), n = 0; n < e.length; n++) {
        var o = rm(e[n]).split(q1);
        i.push(o.shift());
        for (var s = 0; s < o.length; s++) a[s] && (a[s].data[n] = o[s])
    }
    return {
        series: a,
        categories: i
    }
}

function rX(r) {
    for (var e = r.split(/\n+/g), t = rm(e.shift()), i = [], a = 0; a < e.length; a++) {
        var n = rm(e[a]);
        if (n) {
            var o = n.split(q1),
                s = "",
                l = void 0,
                u = !1;
            isNaN(o[0]) ? (u = !0, s = o[0], o = o.slice(1), i[a] = {
                name: s,
                value: []
            }, l = i[a].value) : l = i[a] = [];
            for (var f = 0; f < o.length; f++) l.push(+o[f]);
            l.length === 1 && (u ? i[a].value = l[0] : i[a] = l[0])
        }
    }
    return {
        name: t,
        data: i
    }
}

function iX(r, e) {
    var t = r.split(new RegExp(`
*` + im + `
*`, "g")),
        i = {
            series: []
        };
    return w(t, function(a, n) {
        if (tX(a)) {
            var o = eX(a),
                s = e[n],
                l = s.axisDim + "Axis";
            s && (i[l] = i[l] || [], i[l][s.axisIndex] = {
                data: o.categories
            }, i.series = i.series.concat(o.series))
        } else {
            var o = rX(a);
            i.series.push(o)
        }
    }), i
}
var aX = function(r) {
    L(e, r);

    function e() {
        return r !== null && r.apply(this, arguments) || this
    }
    return e.prototype.onclick = function(t, i) {
        setTimeout(function() {
            i.dispatchAction({
                type: "hideTip"
            })
        });
        var a = i.getDom(),
            n = this.model;
        this._dom && a.removeChild(this._dom);
        var o = document.createElement("div");
        o.style.cssText = "position:absolute;top:0;bottom:0;left:0;right:0;padding:5px", o.style.backgroundColor = n.get("backgroundColor") || "#fff";
        var s = document.createElement("h4"),
            l = n.get("lang") || [];
        s.innerHTML = l[0] || n.get("title"), s.style.cssText = "margin:10px 20px", s.style.color = n.get("textColor");
        var u = document.createElement("div"),
            f = document.createElement("textarea");
        u.style.cssText = "overflow:auto";
        var p = n.get("optionToContent"),
            c = n.get("contentToOption"),
            h = $9(t);
        if (X(p)) {
            var v = p(i.getOption());
            F(v) ? u.innerHTML = v : Pa(v) && u.appendChild(v)
        } else {
            f.readOnly = n.get("readOnly");
            var d = f.style;
            d.cssText = "display:block;width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;resize:none;box-sizing:border-box;outline:none", d.color = n.get("textColor"), d.borderColor = n.get("textareaBorderColor"), d.backgroundColor = n.get("textareaColor"), f.value = h.value, u.appendChild(f)
        }
        var m = h.meta,
            g = document.createElement("div");
        g.style.cssText = "position:absolute;bottom:5px;left:0;right:0";
        var y = "float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px",
            x = document.createElement("div"),
            _ = document.createElement("div");
        y += ";background-color:" + n.get("buttonColor"), y += ";color:" + n.get("buttonTextColor");
        var S = this;

        function b() {
            a.removeChild(o), S._dom = null
        }
        Eu(x, "click", b), Eu(_, "click", function() {
            if (c == null && p != null || c != null && p == null) {
                b();
                return
            }
            var T;
            try {
                X(c) ? T = c(u, i.getOption()) : T = iX(f.value, m)
            } catch (C) {
                throw b(), new Error("Data view format error " + C)
            }
            T && i.dispatchAction({
                type: "changeDataView",
                newOption: T
            }), b()
        }), x.innerHTML = l[1], _.innerHTML = l[2], _.style.cssText = x.style.cssText = y, !n.get("readOnly") && g.appendChild(_), g.appendChild(x), o.appendChild(s), o.appendChild(u), o.appendChild(g), u.style.height = a.clientHeight - 80 + "px", a.appendChild(o), this._dom = o
    }, e.prototype.remove = function(t, i) {
        this._dom && i.getDom().removeChild(this._dom)
    }, e.prototype.dispose = function(t, i) {
        this.remove(t, i)
    }, e.getDefaultOption = function(t) {
        var i = {
            show: !0,
            readOnly: !1,
            optionToContent: null,
            contentToOption: null,
            icon: "M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28",
            title: t.getLocaleModel().get(["toolbox", "dataView", "title"]),
            lang: t.getLocaleModel().get(["toolbox", "dataView", "lang"]),
            backgroundColor: "#fff",
            textColor: "#000",
            textareaColor: "#fff",
            textareaBorderColor: "#333",
            buttonColor: "#c23531",
            buttonTextColor: "#fff"
        };
        return i
    }, e
}(Ge);

function nX(r, e) {
    return k(r, function(t, i) {
        var a = e && e[i];
        if (j(a) && !z(a)) {
            var n = j(t) && !z(t);
            n || (t = {
                value: t
            });
            var o = a.name != null && t.name == null;
            return t = q(t, a), o && delete t.name, t
        } else return t
    })
}
mr({
    type: "changeDataView",
    event: "dataViewChanged",
    update: "prepareAndUpdate"
}, function(r, e) {
    var t = [];
    w(r.newOption.series, function(i) {
        var a = e.getSeriesByName(i.name)[0];
        if (!a) t.push(O({
            type: "scatter"
        }, i));
        else {
            var n = a.get("data");
            t.push({
                name: i.name,
                data: nX(i.data, n)
            })
        }
    }), e.mergeOption(q({
        series: t
    }, r.newOption))
});
var qO = aX;
var KO = w,
    jO = lt();

function JO(r, e) {
    var t = K1(r);
    KO(e, function(i, a) {
        for (var n = t.length - 1; n >= 0; n--) {
            var o = t[n];
            if (o[a]) break
        }
        if (n < 0) {
            var s = r.queryComponents({
                mainType: "dataZoom",
                subType: "select",
                id: a
            })[0];
            if (s) {
                var l = s.getPercentRange();
                t[0][a] = {
                    dataZoomId: a,
                    start: l[0],
                    end: l[1]
                }
            }
        }
    }), t.push(e)
}

function QO(r) {
    var e = K1(r),
        t = e[e.length - 1];
    e.length > 1 && e.pop();
    var i = {};
    return KO(t, function(a, n) {
        for (var o = e.length - 1; o >= 0; o--)
            if (a = e[o][n], a) {
                i[n] = a;
                break
            }
    }), i
}

function $O(r) {
    jO(r).snapshots = null
}

function tz(r) {
    return K1(r).length
}

function K1(r) {
    var e = jO(r);
    return e.snapshots || (e.snapshots = [{}]), e.snapshots
}
var oX = function(r) {
    L(e, r);

    function e() {
        return r !== null && r.apply(this, arguments) || this
    }
    return e.prototype.onclick = function(t, i) {
        $O(t), i.dispatchAction({
            type: "restore",
            from: this.uid
        })
    }, e.getDefaultOption = function(t) {
        var i = {
            show: !0,
            icon: "M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5",
            title: t.getLocaleModel().get(["toolbox", "restore", "title"])
        };
        return i
    }, e
}(Ge);
mr({
    type: "restore",
    event: "restore",
    update: "prepareAndUpdate"
}, function(r, e) {
    e.resetOption("recreate")
});
var rz = oX;
var sX = ["grid", "xAxis", "yAxis", "geo", "graph", "polar", "radiusAxis", "angleAxis", "bmap"],
    lX = function() {
        function r(e, t, i) {
            var a = this;
            this._targetInfoList = [];
            var n = iz(t, e);
            w(uX, function(o, s) {
                (!i || !i.include || at(i.include, s) >= 0) && o(n, a._targetInfoList)
            })
        }
        return r.prototype.setOutputRanges = function(e, t) {
            return this.matchOutputRanges(e, t, function(i, a, n) {
                if ((i.coordRanges || (i.coordRanges = [])).push(a), !i.coordRange) {
                    i.coordRange = a;
                    var o = j1[i.brushType](0, n, a);
                    i.__rangeOffset = {
                        offset: sz[i.brushType](o.values, i.range, [1, 1]),
                        xyMinMax: o.xyMinMax
                    }
                }
            }), e
        }, r.prototype.matchOutputRanges = function(e, t, i) {
            w(e, function(a) {
                var n = this.findTargetInfo(a, t);
                n && n !== !0 && w(n.coordSyses, function(o) {
                    var s = j1[a.brushType](1, o, a.range, !0);
                    i(a, s.values, o, t)
                })
            }, this)
        }, r.prototype.setInputRanges = function(e, t) {
            w(e, function(i) {
                var a = this.findTargetInfo(i, t);
                if (i.range = i.range || [], a && a !== !0) {
                    i.panelId = a.panelId;
                    var n = j1[i.brushType](0, a.coordSys, i.coordRange),
                        o = i.__rangeOffset;
                    i.range = o ? sz[i.brushType](n.values, o.offset, fX(n.xyMinMax, o.xyMinMax)) : n.values
                }
            }, this)
        }, r.prototype.makePanelOpts = function(e, t) {
            return k(this._targetInfoList, function(i) {
                var a = i.getPanelRect();
                return {
                    panelId: i.panelId,
                    defaultBrushType: t ? t(i) : null,
                    clipPath: Ad(a),
                    isTargetByCursor: Md(a, e, i.coordSysModel),
                    getLinearBrushOtherExtent: Dd(a)
                }
            })
        }, r.prototype.controlSeries = function(e, t, i) {
            var a = this.findTargetInfo(e, i);
            return a === !0 || a && at(a.coordSyses, t.coordinateSystem) >= 0
        }, r.prototype.findTargetInfo = function(e, t) {
            for (var i = this._targetInfoList, a = iz(t, e), n = 0; n < i.length; n++) {
                var o = i[n],
                    s = e.panelId;
                if (s) {
                    if (o.panelId === s) return o
                } else
                    for (var l = 0; l < az.length; l++)
                        if (az[l](a, o)) return o
            }
            return !0
        }, r
    }();

function J1(r) {
    return r[0] > r[1] && r.reverse(), r
}

function iz(r, e) {
    return wn(r, e, {
        includeMainTypes: sX
    })
}
var uX = {
        grid: function(r, e) {
            var t = r.xAxisModels,
                i = r.yAxisModels,
                a = r.gridModels,
                n = Y(),
                o = {},
                s = {};
            !t && !i && !a || (w(t, function(l) {
                var u = l.axis.grid.model;
                n.set(u.id, u), o[u.id] = !0
            }), w(i, function(l) {
                var u = l.axis.grid.model;
                n.set(u.id, u), s[u.id] = !0
            }), w(a, function(l) {
                n.set(l.id, l), o[l.id] = !0, s[l.id] = !0
            }), n.each(function(l) {
                var u = l.coordinateSystem,
                    f = [];
                w(u.getCartesians(), function(p, c) {
                    (at(t, p.getAxis("x").model) >= 0 || at(i, p.getAxis("y").model) >= 0) && f.push(p)
                }), e.push({
                    panelId: "grid--" + l.id,
                    gridModel: l,
                    coordSysModel: l,
                    coordSys: f[0],
                    coordSyses: f,
                    getPanelRect: nz.grid,
                    xAxisDeclared: o[l.id],
                    yAxisDeclared: s[l.id]
                })
            }))
        },
        geo: function(r, e) {
            w(r.geoModels, function(t) {
                var i = t.coordinateSystem;
                e.push({
                    panelId: "geo--" + t.id,
                    geoModel: t,
                    coordSysModel: t,
                    coordSys: i,
                    coordSyses: [i],
                    getPanelRect: nz.geo
                })
            })
        }
    },
    az = [function(r, e) {
        var t = r.xAxisModel,
            i = r.yAxisModel,
            a = r.gridModel;
        return !a && t && (a = t.axis.grid.model), !a && i && (a = i.axis.grid.model), a && a === e.gridModel
    }, function(r, e) {
        var t = r.geoModel;
        return t && t === e.geoModel
    }],
    nz = {
        grid: function() {
            return this.coordSys.master.getRect().clone()
        },
        geo: function() {
            var r = this.coordSys,
                e = r.getBoundingRect().clone();
            return e.applyTransform(ti(r)), e
        }
    },
    j1 = {
        lineX: rt(oz, 0),
        lineY: rt(oz, 1),
        rect: function(r, e, t, i) {
            var a = r ? e.pointToData([t[0][0], t[1][0]], i) : e.dataToPoint([t[0][0], t[1][0]], i),
                n = r ? e.pointToData([t[0][1], t[1][1]], i) : e.dataToPoint([t[0][1], t[1][1]], i),
                o = [J1([a[0], n[0]]), J1([a[1], n[1]])];
            return {
                values: o,
                xyMinMax: o
            }
        },
        polygon: function(r, e, t, i) {
            var a = [
                    [1 / 0, -1 / 0],
                    [1 / 0, -1 / 0]
                ],
                n = k(t, function(o) {
                    var s = r ? e.pointToData(o, i) : e.dataToPoint(o, i);
                    return a[0][0] = Math.min(a[0][0], s[0]), a[1][0] = Math.min(a[1][0], s[1]), a[0][1] = Math.max(a[0][1], s[0]), a[1][1] = Math.max(a[1][1], s[1]), s
                });
            return {
                values: n,
                xyMinMax: a
            }
        }
    };

function oz(r, e, t, i) {
    var a = t.getAxis(["x", "y"][r]),
        n = J1(k([0, 1], function(s) {
            return e ? a.coordToData(a.toLocalCoord(i[s]), !0) : a.toGlobalCoord(a.dataToCoord(i[s]))
        })),
        o = [];
    return o[r] = n, o[1 - r] = [NaN, NaN], {
        values: n,
        xyMinMax: o
    }
}
var sz = {
    lineX: rt(lz, 0),
    lineY: rt(lz, 1),
    rect: function(r, e, t) {
        return [
            [r[0][0] - t[0] * e[0][0], r[0][1] - t[0] * e[0][1]],
            [r[1][0] - t[1] * e[1][0], r[1][1] - t[1] * e[1][1]]
        ]
    },
    polygon: function(r, e, t) {
        return k(r, function(i, a) {
            return [i[0] - t[0] * e[a][0], i[1] - t[1] * e[a][1]]
        })
    }
};

function lz(r, e, t, i) {
    return [e[0] - i[r] * t[0], e[1] - i[r] * t[1]]
}

function fX(r, e) {
    var t = uz(r),
        i = uz(e),
        a = [t[0] / i[0], t[1] / i[1]];
    return isNaN(a[0]) && (a[0] = 1), isNaN(a[1]) && (a[1] = 1), a
}

function uz(r) {
    return r ? [r[0][1] - r[0][0], r[1][1] - r[1][0]] : [NaN, NaN]
}
var kp = lX;
var Q1 = w,
    pX = xT("toolbox-dataZoom_");
var cX = function(r) {
        L(e, r);

        function e() {
            return r !== null && r.apply(this, arguments) || this
        }
        return e.prototype.render = function(t, i, a, n) {
            this._brushController || (this._brushController = new ou(a.getZr()), this._brushController.on("brush", H(this._onBrush, this)).mount()), dX(t, i, this, n, a), vX(t, i)
        }, e.prototype.onclick = function(t, i, a) {
            hX[a].call(this)
        }, e.prototype.remove = function(t, i) {
            this._brushController && this._brushController.unmount()
        }, e.prototype.dispose = function(t, i) {
            this._brushController && this._brushController.dispose()
        }, e.prototype._onBrush = function(t) {
            var i = t.areas;
            if (!t.isEnd || !i.length) return;
            var a = {},
                n = this.ecModel;
            this._brushController.updateCovers([]);
            var o = new kp($1(this.model), n, {
                include: ["grid"]
            });
            o.matchOutputRanges(i, n, function(u, f, p) {
                if (p.type === "cartesian2d") {
                    var c = u.brushType;
                    c === "rect" ? (s("x", p, f[0]), s("y", p, f[1])) : s({
                        lineX: "x",
                        lineY: "y"
                    }[c], p, f)
                }
            }), JO(n, a), this._dispatchZoomAction(a);

            function s(u, f, p) {
                var c = f.getAxis(u),
                    h = c.model,
                    v = l(u, h, n),
                    d = v.findRepresentativeAxisProxy(h).getMinMaxSpan();
                (d.minValueSpan != null || d.maxValueSpan != null) && (p = Yr(0, p.slice(), c.scale.getExtent(), 0, d.minValueSpan, d.maxValueSpan)), v && (a[v.id] = {
                    dataZoomId: v.id,
                    startValue: p[0],
                    endValue: p[1]
                })
            }

            function l(u, f, p) {
                var c;
                return p.eachComponent({
                    mainType: "dataZoom",
                    subType: "select"
                }, function(h) {
                    var v = h.getAxisModel(u, f.componentIndex);
                    v && (c = h)
                }), c
            }
        }, e.prototype._dispatchZoomAction = function(t) {
            var i = [];
            Q1(t, function(a, n) {
                i.push(Q(a))
            }), i.length && this.api.dispatchAction({
                type: "dataZoom",
                from: this.uid,
                batch: i
            })
        }, e.getDefaultOption = function(t) {
            var i = {
                show: !0,
                filterMode: "filter",
                icon: {
                    zoom: "M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",
                    back: "M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"
                },
                title: t.getLocaleModel().get(["toolbox", "dataZoom", "title"]),
                brushStyle: {
                    borderWidth: 0,
                    color: "rgba(210,219,238,0.2)"
                }
            };
            return i
        }, e
    }(Ge),
    hX = {
        zoom: function() {
            var r = !this._isZoomActive;
            this.api.dispatchAction({
                type: "takeGlobalCursor",
                key: "dataZoomSelect",
                dataZoomSelectActive: r
            })
        },
        back: function() {
            this._dispatchZoomAction(QO(this.ecModel))
        }
    };

function $1(r) {
    var e = {
        xAxisIndex: r.get("xAxisIndex", !0),
        yAxisIndex: r.get("yAxisIndex", !0),
        xAxisId: r.get("xAxisId", !0),
        yAxisId: r.get("yAxisId", !0)
    };
    return e.xAxisIndex == null && e.xAxisId == null && (e.xAxisIndex = "all"), e.yAxisIndex == null && e.yAxisId == null && (e.yAxisIndex = "all"), e
}

function vX(r, e) {
    r.setIconStatus("back", tz(e) > 1 ? "emphasis" : "normal")
}

function dX(r, e, t, i, a) {
    var n = t._isZoomActive;
    i && i.type === "takeGlobalCursor" && (n = i.key === "dataZoomSelect" ? i.dataZoomSelectActive : !1), t._isZoomActive = n, r.setIconStatus("zoom", n ? "emphasis" : "normal");
    var o = new kp($1(r), e, {
            include: ["grid"]
        }),
        s = o.makePanelOpts(a, function(l) {
            return l.xAxisDeclared && !l.yAxisDeclared ? "lineX" : !l.xAxisDeclared && l.yAxisDeclared ? "lineY" : "rect"
        });
    t._brushController.setPanels(s).enableBrush(n && s.length ? {
        brushType: "auto",
        brushStyle: r.getModel("brushStyle").getItemStyle()
    } : !1)
}
VA("dataZoom", function(r) {
    var e = r.getComponent("toolbox", 0),
        t = ["feature", "dataZoom"];
    if (!e || e.get(t) == null) return;
    var i = e.getModel(t),
        a = [],
        n = $1(i),
        o = wn(r, n);
    Q1(o.xAxisModels, function(l) {
        return s(l, "xAxis", "xAxisIndex")
    }), Q1(o.yAxisModels, function(l) {
        return s(l, "yAxis", "yAxisIndex")
    });

    function s(l, u, f) {
        var p = l.componentIndex,
            c = {
                type: "select",
                $fromToolbox: !0,
                filterMode: i.get("filterMode", !0) || "filter",
                id: pX + u + p
            };
        c[f] = p, a.push(c)
    }
    return a
});
var fz = cX;

function tb(r) {
    r.registerComponentModel(FO), r.registerComponentView(HO), so("saveAsImage", WO), so("magicType", XO), so("dataView", qO), so("dataZoom", fz), so("restore", rz), _t(VO)
}
var mX = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.type = "tooltip", e.dependencies = ["axisPointer"], e.defaultOption = {
            z: 60,
            show: !0,
            showContent: !0,
            trigger: "item",
            triggerOn: "mousemove|click",
            alwaysShowContent: !1,
            displayMode: "single",
            renderMode: "auto",
            confine: null,
            showDelay: 0,
            hideDelay: 100,
            transitionDuration: .4,
            enterable: !1,
            backgroundColor: "#fff",
            shadowBlur: 10,
            shadowColor: "rgba(0, 0, 0, .2)",
            shadowOffsetX: 1,
            shadowOffsetY: 2,
            borderRadius: 4,
            borderWidth: 1,
            padding: null,
            extraCssText: "",
            axisPointer: {
                type: "line",
                axis: "auto",
                animation: "auto",
                animationDurationUpdate: 200,
                animationEasingUpdate: "exponentialOut",
                crossStyle: {
                    color: "#999",
                    width: 1,
                    type: "dashed",
                    textStyle: {}
                }
            },
            textStyle: {
                color: "#666",
                fontSize: 14
            }
        }, e
    }(yt),
    pz = mX;

function am(r) {
    var e = r.get("confine");
    return e != null ? !!e : r.get("renderMode") === "richText"
}

function cz(r) {
    if (Ct.domSupported) {
        for (var e = document.documentElement.style, t = 0, i = r.length; t < i; t++)
            if (r[t] in e) return r[t]
    }
}
var eb = cz(["transform", "webkitTransform", "OTransform", "MozTransform", "msTransform"]),
    hz = cz(["webkitTransition", "transition", "OTransition", "MozTransition", "msTransition"]);

function rb(r, e) {
    if (!r) return e;
    e = wl(e, !0);
    var t = r.indexOf(e);
    return r = t === -1 ? e : "-" + r.slice(0, t) + "-" + e, r.toLowerCase()
}

function vz(r, e) {
    var t = r.currentStyle || document.defaultView && document.defaultView.getComputedStyle(r);
    return t ? e ? t[e] : t : null
}
var gX = rb(hz, "transition"),
    ib = rb(eb, "transform"),
    yX = "position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;" + (Ct.transform3dSupported ? "will-change:transform;" : "");

function xX(r) {
    return r = r === "left" ? "right" : r === "right" ? "left" : r === "top" ? "bottom" : "top", r
}

function _X(r, e, t) {
    if (!F(t) || t === "inside") return "";
    var i = r.get("backgroundColor"),
        a = r.get("borderWidth");
    e = Yi(e);
    var n = xX(t),
        o = Math.max(Math.round(a) * 1.5, 6),
        s = "",
        l = ib + ":",
        u;
    at(["left", "right"], n) > -1 ? (s += "top:50%", l += "translateY(-50%) rotate(" + (u = n === "left" ? -225 : -45) + "deg)") : (s += "left:50%", l += "translateX(-50%) rotate(" + (u = n === "top" ? 225 : 45) + "deg)");
    var f = u * Math.PI / 180,
        p = o + a,
        c = p * Math.abs(Math.cos(f)) + p * Math.abs(Math.sin(f)),
        h = Math.round(((c - Math.SQRT2 * a) / 2 + Math.SQRT2 * a - (c - p) / 2) * 100) / 100;
    s += ";" + n + ":-" + h + "px";
    var v = e + " solid " + a + "px;",
        d = ["position:absolute;width:" + o + "px;height:" + o + "px;z-index:-1;", s + ";" + l + ";", "border-bottom:" + v, "border-right:" + v, "background-color:" + i + ";"];
    return '<div style="' + d.join("") + '"></div>'
}

function SX(r, e) {
    var t = "cubic-bezier(0.23,1,0.32,1)",
        i = " " + r / 2 + "s " + t,
        a = "opacity" + i + ",visibility" + i;
    return e || (i = " " + r + "s " + t, a += Ct.transformSupported ? "," + ib + i : ",left" + i + ",top" + i), gX + ":" + a
}

function dz(r, e, t) {
    var i = r.toFixed(0) + "px",
        a = e.toFixed(0) + "px";
    if (!Ct.transformSupported) return t ? "top:" + a + ";left:" + i + ";" : [
        ["top", a],
        ["left", i]
    ];
    var n = Ct.transform3dSupported,
        o = "translate" + (n ? "3d" : "") + "(" + i + "," + a + (n ? ",0" : "") + ")";
    return t ? "top:0;left:0;" + ib + ":" + o + ";" : [
        ["top", 0],
        ["left", 0],
        [eb, o]
    ]
}

function bX(r) {
    var e = [],
        t = r.get("fontSize"),
        i = r.getTextColor();
    i && e.push("color:" + i), e.push("font:" + r.getFont());
    var a = ot(r.get("lineHeight"), Math.round(t * 3 / 2));
    t && e.push("line-height:" + a + "px");
    var n = r.get("textShadowColor"),
        o = r.get("textShadowBlur") || 0,
        s = r.get("textShadowOffsetX") || 0,
        l = r.get("textShadowOffsetY") || 0;
    return n && o && e.push("text-shadow:" + s + "px " + l + "px " + o + "px " + n), w(["decoration", "align"], function(u) {
        var f = r.get(u);
        f && e.push("text-" + u + ":" + f)
    }), e.join(";")
}

function wX(r, e, t) {
    var i = [],
        a = r.get("transitionDuration"),
        n = r.get("backgroundColor"),
        o = r.get("shadowBlur"),
        s = r.get("shadowColor"),
        l = r.get("shadowOffsetX"),
        u = r.get("shadowOffsetY"),
        f = r.getModel("textStyle"),
        p = Gh(r, "html"),
        c = l + "px " + u + "px " + o + "px " + s;
    return i.push("box-shadow:" + c), e && a && i.push(SX(a, t)), n && i.push("background-color:" + n), w(["width", "color", "radius"], function(h) {
        var v = "border-" + h,
            d = wl(v),
            m = r.get(d);
        m != null && i.push(v + ":" + m + (h === "color" ? "" : "px"))
    }), i.push(bX(f)), p != null && i.push("padding:" + ri(p).join("px ") + "px"), i.join(";") + ";"
}

function mz(r, e, t, i, a) {
    var n = e && e.painter;
    if (t) {
        var o = n && n.getViewportRoot();
        o && lw(r, o, t, i, a)
    } else {
        r[0] = i, r[1] = a;
        var s = n && n.getViewportRootOffset();
        s && (r[0] += s.offsetLeft, r[1] += s.offsetTop)
    }
    r[2] = r[0] / e.getWidth(), r[3] = r[1] / e.getHeight()
}
var TX = function() {
        function r(e, t) {
            if (this._show = !1, this._styleCoord = [0, 0, 0, 0], this._enterable = !0, this._alwaysShowContent = !1, this._firstShow = !0, this._longHide = !0, Ct.wxa) return null;
            var i = document.createElement("div");
            i.domBelongToZr = !0, this.el = i;
            var a = this._zr = e.getZr(),
                n = t.appendTo,
                o = n && (F(n) ? document.querySelector(n) : Pa(n) ? n : X(n) && n(e.getDom()));
            mz(this._styleCoord, a, o, e.getWidth() / 2, e.getHeight() / 2), (o || e.getDom()).appendChild(i), this._api = e, this._container = o;
            var s = this;
            i.onmouseenter = function() {
                s._enterable && (clearTimeout(s._hideTimeout), s._show = !0), s._inContent = !0
            }, i.onmousemove = function(l) {
                if (l = l || window.event, !s._enterable) {
                    var u = a.handler,
                        f = a.painter.getViewportRoot();
                    Ar(f, l, !0), u.dispatch("mousemove", l)
                }
            }, i.onmouseleave = function() {
                s._inContent = !1, s._enterable && s._show && s.hideLater(s._hideDelay)
            }
        }
        return r.prototype.update = function(e) {
            if (!this._container) {
                var t = this._api.getDom(),
                    i = vz(t, "position"),
                    a = t.style;
                a.position !== "absolute" && i !== "absolute" && (a.position = "relative")
            }
            var n = e.get("alwaysShowContent");
            n && this._moveIfResized(), this._alwaysShowContent = n, this.el.className = e.get("className") || ""
        }, r.prototype.show = function(e, t) {
            clearTimeout(this._hideTimeout), clearTimeout(this._longHideTimeout);
            var i = this.el,
                a = i.style,
                n = this._styleCoord;
            i.innerHTML ? a.cssText = yX + wX(e, !this._firstShow, this._longHide) + dz(n[0], n[1], !0) + ("border-color:" + Yi(t) + ";") + (e.get("extraCssText") || "") + (";pointer-events:" + (this._enterable ? "auto" : "none")) : a.display = "none", this._show = !0, this._firstShow = !1, this._longHide = !1
        }, r.prototype.setContent = function(e, t, i, a, n) {
            var o = this.el;
            if (e == null) {
                o.innerHTML = "";
                return
            }
            var s = "";
            if (F(n) && i.get("trigger") === "item" && !am(i) && (s = _X(i, a, n)), F(e)) o.innerHTML = e + s;
            else if (e) {
                o.innerHTML = "", z(e) || (e = [e]);
                for (var l = 0; l < e.length; l++) Pa(e[l]) && e[l].parentNode !== o && o.appendChild(e[l]);
                if (s && o.childNodes.length) {
                    var u = document.createElement("div");
                    u.innerHTML = s, o.appendChild(u)
                }
            }
        }, r.prototype.setEnterable = function(e) {
            this._enterable = e
        }, r.prototype.getSize = function() {
            var e = this.el;
            return e ? [e.offsetWidth, e.offsetHeight] : [0, 0]
        }, r.prototype.moveTo = function(e, t) {
            if (this.el) {
                var i = this._styleCoord;
                if (mz(i, this._zr, this._container, e, t), i[0] != null && i[1] != null) {
                    var a = this.el.style,
                        n = dz(i[0], i[1]);
                    w(n, function(o) {
                        a[o[0]] = o[1]
                    })
                }
            }
        }, r.prototype._moveIfResized = function() {
            var e = this._styleCoord[2],
                t = this._styleCoord[3];
            this.moveTo(e * this._zr.getWidth(), t * this._zr.getHeight())
        }, r.prototype.hide = function() {
            var e = this,
                t = this.el.style;
            t.visibility = "hidden", t.opacity = "0", Ct.transform3dSupported && (t.willChange = ""), this._show = !1, this._longHideTimeout = setTimeout(function() {
                return e._longHide = !0
            }, 500)
        }, r.prototype.hideLater = function(e) {
            this._show && !(this._inContent && this._enterable) && !this._alwaysShowContent && (e ? (this._hideDelay = e, this._show = !1, this._hideTimeout = setTimeout(H(this.hide, this), e)) : this.hide())
        }, r.prototype.isShow = function() {
            return this._show
        }, r.prototype.dispose = function() {
            clearTimeout(this._hideTimeout), clearTimeout(this._longHideTimeout);
            var e = this.el.parentNode;
            e && e.removeChild(this.el), this.el = this._container = null
        }, r
    }(),
    gz = TX;
var CX = function() {
    function r(e) {
        this._show = !1, this._styleCoord = [0, 0, 0, 0], this._alwaysShowContent = !1, this._enterable = !0, this._zr = e.getZr(), xz(this._styleCoord, this._zr, e.getWidth() / 2, e.getHeight() / 2)
    }
    return r.prototype.update = function(e) {
        var t = e.get("alwaysShowContent");
        t && this._moveIfResized(), this._alwaysShowContent = t
    }, r.prototype.show = function() {
        this._hideTimeout && clearTimeout(this._hideTimeout), this.el.show(), this._show = !0
    }, r.prototype.setContent = function(e, t, i, a, n) {
        var o = this;
        j(e) && kt(""), this.el && this._zr.remove(this.el);
        var s = i.getModel("textStyle");
        this.el = new dt({
            style: {
                rich: t.richTextStyles,
                text: e,
                lineHeight: 22,
                borderWidth: 1,
                borderColor: a,
                textShadowColor: s.get("textShadowColor"),
                fill: i.get(["textStyle", "color"]),
                padding: Gh(i, "richText"),
                verticalAlign: "top",
                align: "left"
            },
            z: i.get("z")
        }), w(["backgroundColor", "borderRadius", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"], function(u) {
            o.el.style[u] = i.get(u)
        }), w(["textShadowBlur", "textShadowOffsetX", "textShadowOffsetY"], function(u) {
            o.el.style[u] = s.get(u) || 0
        }), this._zr.add(this.el);
        var l = this;
        this.el.on("mouseover", function() {
            l._enterable && (clearTimeout(l._hideTimeout), l._show = !0), l._inContent = !0
        }), this.el.on("mouseout", function() {
            l._enterable && l._show && l.hideLater(l._hideDelay), l._inContent = !1
        })
    }, r.prototype.setEnterable = function(e) {
        this._enterable = e
    }, r.prototype.getSize = function() {
        var e = this.el,
            t = this.el.getBoundingRect(),
            i = yz(e.style);
        return [t.width + i.left + i.right, t.height + i.top + i.bottom]
    }, r.prototype.moveTo = function(e, t) {
        var i = this.el;
        if (i) {
            var a = this._styleCoord;
            xz(a, this._zr, e, t), e = a[0], t = a[1];
            var n = i.style,
                o = lo(n.borderWidth || 0),
                s = yz(n);
            i.x = e + o + s.left, i.y = t + o + s.top, i.markRedraw()
        }
    }, r.prototype._moveIfResized = function() {
        var e = this._styleCoord[2],
            t = this._styleCoord[3];
        this.moveTo(e * this._zr.getWidth(), t * this._zr.getHeight())
    }, r.prototype.hide = function() {
        this.el && this.el.hide(), this._show = !1
    }, r.prototype.hideLater = function(e) {
        this._show && !(this._inContent && this._enterable) && !this._alwaysShowContent && (e ? (this._hideDelay = e, this._show = !1, this._hideTimeout = setTimeout(H(this.hide, this), e)) : this.hide())
    }, r.prototype.isShow = function() {
        return this._show
    }, r.prototype.dispose = function() {
        this._zr.remove(this.el)
    }, r
}();

function lo(r) {
    return Math.max(0, r)
}

function yz(r) {
    var e = lo(r.shadowBlur || 0),
        t = lo(r.shadowOffsetX || 0),
        i = lo(r.shadowOffsetY || 0);
    return {
        left: lo(e - t),
        right: lo(e + t),
        top: lo(e - i),
        bottom: lo(e + i)
    }
}

function xz(r, e, t, i) {
    r[0] = t, r[1] = i, r[2] = r[0] / e.getWidth(), r[3] = r[1] / e.getHeight()
}
var _z = CX;
var AX = new ht({
        shape: {
            x: -1,
            y: -1,
            width: 2,
            height: 2
        }
    }),
    DX = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.init = function(t, i) {
            if (!(Ct.node || !i.getDom())) {
                var a = t.getComponent("tooltip"),
                    n = this._renderMode = TT(a.get("renderMode"));
                this._tooltipContent = n === "richText" ? new _z(i) : new gz(i, {
                    appendTo: a.get("appendToBody", !0) ? "body" : a.get("appendTo", !0)
                })
            }
        }, e.prototype.render = function(t, i, a) {
            if (!(Ct.node || !a.getDom())) {
                this.group.removeAll(), this._tooltipModel = t, this._ecModel = i, this._api = a;
                var n = this._tooltipContent;
                n.update(t), n.setEnterable(t.get("enterable")), this._initGlobalListener(), this._keepShow(), this._renderMode !== "richText" && t.get("transitionDuration") ? Ci(this, "_updatePosition", 50, "fixRate") : rn(this, "_updatePosition")
            }
        }, e.prototype._initGlobalListener = function() {
            var t = this._tooltipModel,
                i = t.get("triggerOn");
            Yd("itemTooltip", this._api, H(function(a, n, o) {
                i !== "none" && (i.indexOf(a) >= 0 ? this._tryShow(n, o) : a === "leave" && this._hide(o))
            }, this))
        }, e.prototype._keepShow = function() {
            var t = this._tooltipModel,
                i = this._ecModel,
                a = this._api,
                n = t.get("triggerOn");
            if (this._lastX != null && this._lastY != null && n !== "none" && n !== "click") {
                var o = this;
                clearTimeout(this._refreshUpdateTimeout), this._refreshUpdateTimeout = setTimeout(function() {
                    !a.isDisposed() && o.manuallyShowTip(t, i, a, {
                        x: o._lastX,
                        y: o._lastY,
                        dataByCoordSys: o._lastDataByCoordSys
                    })
                })
            }
        }, e.prototype.manuallyShowTip = function(t, i, a, n) {
            if (!(n.from === this.uid || Ct.node || !a.getDom())) {
                var o = Sz(n, a);
                this._ticket = "";
                var s = n.dataByCoordSys,
                    l = EX(n, i, a);
                if (l) {
                    var u = l.el.getBoundingRect().clone();
                    u.applyTransform(l.el.transform), this._tryShow({
                        offsetX: u.x + u.width / 2,
                        offsetY: u.y + u.height / 2,
                        target: l.el,
                        position: n.position,
                        positionDefault: "bottom"
                    }, o)
                } else if (n.tooltip && n.x != null && n.y != null) {
                    var f = AX;
                    f.x = n.x, f.y = n.y, f.update(), et(f).tooltipConfig = {
                        name: null,
                        option: n.tooltip
                    }, this._tryShow({
                        offsetX: n.x,
                        offsetY: n.y,
                        target: f
                    }, o)
                } else if (s) this._tryShow({
                    offsetX: n.x,
                    offsetY: n.y,
                    position: n.position,
                    dataByCoordSys: s,
                    tooltipOption: n.tooltipOption
                }, o);
                else if (n.seriesIndex != null) {
                    if (this._manuallyAxisShowTip(t, i, a, n)) return;
                    var p = Op(n, i),
                        c = p.point[0],
                        h = p.point[1];
                    c != null && h != null && this._tryShow({
                        offsetX: c,
                        offsetY: h,
                        target: p.el,
                        position: n.position,
                        positionDefault: "bottom"
                    }, o)
                } else n.x != null && n.y != null && (a.dispatchAction({
                    type: "updateAxisPointer",
                    x: n.x,
                    y: n.y
                }), this._tryShow({
                    offsetX: n.x,
                    offsetY: n.y,
                    position: n.position,
                    target: a.getZr().findHover(n.x, n.y).target
                }, o))
            }
        }, e.prototype.manuallyHideTip = function(t, i, a, n) {
            var o = this._tooltipContent;
            this._tooltipModel && o.hideLater(this._tooltipModel.get("hideDelay")), this._lastX = this._lastY = this._lastDataByCoordSys = null, n.from !== this.uid && this._hide(Sz(n, a))
        }, e.prototype._manuallyAxisShowTip = function(t, i, a, n) {
            var o = n.seriesIndex,
                s = n.dataIndex,
                l = i.getComponent("axisPointer").coordSysAxesInfo;
            if (!(o == null || s == null || l == null)) {
                var u = i.getSeriesByIndex(o);
                if (u) {
                    var f = u.getData(),
                        p = Up([f.getItemModel(s), u, (u.coordinateSystem || {}).model], this._tooltipModel);
                    if (p.get("trigger") === "axis") return a.dispatchAction({
                        type: "updateAxisPointer",
                        seriesIndex: o,
                        dataIndex: s,
                        position: n.position
                    }), !0
                }
            }
        }, e.prototype._tryShow = function(t, i) {
            var a = t.target,
                n = this._tooltipModel;
            if (n) {
                this._lastX = t.offsetX, this._lastY = t.offsetY;
                var o = t.dataByCoordSys;
                if (o && o.length) this._showAxisTooltip(o, t);
                else if (a) {
                    var s = et(a);
                    if (s.ssrType === "legend") return;
                    this._lastDataByCoordSys = null;
                    var l, u;
                    qi(a, function(f) {
                        if (et(f).dataIndex != null) return l = f, !0;
                        if (et(f).tooltipConfig != null) return u = f, !0
                    }, !0), l ? this._showSeriesItemTooltip(t, l, i) : u ? this._showComponentItemTooltip(t, u, i) : this._hide(i)
                } else this._lastDataByCoordSys = null, this._hide(i)
            }
        }, e.prototype._showOrMove = function(t, i) {
            var a = t.get("showDelay");
            i = H(i, this), clearTimeout(this._showTimout), a > 0 ? this._showTimout = setTimeout(i, a) : i()
        }, e.prototype._showAxisTooltip = function(t, i) {
            var a = this._ecModel,
                n = this._tooltipModel,
                o = [i.offsetX, i.offsetY],
                s = Up([i.tooltipOption], n),
                l = this._renderMode,
                u = [],
                f = Jt("section", {
                    blocks: [],
                    noHeader: !0
                }),
                p = [],
                c = new Hh;
            w(t, function(y) {
                w(y.dataByAxis, function(x) {
                    var _ = a.getComponent(x.axisDim + "Axis", x.axisIndex),
                        S = x.value;
                    if (!(!_ || S == null)) {
                        var b = L1(S, _.axis, a, x.seriesDataIndices, x.valueLabelOpt),
                            T = Jt("section", {
                                header: b,
                                noHeader: !Ie(b),
                                sortBlocks: !0,
                                blocks: []
                            });
                        f.blocks.push(T), w(x.seriesDataIndices, function(C) {
                            var A = a.getSeriesByIndex(C.seriesIndex),
                                D = C.dataIndexInside,
                                M = A.getDataParams(D);
                            if (!(M.dataIndex < 0)) {
                                M.axisDim = x.axisDim, M.axisIndex = x.axisIndex, M.axisType = x.axisType, M.axisId = x.axisId, M.axisValue = rp(_.axis, {
                                    value: S
                                }), M.axisValueLabel = b, M.marker = c.makeTooltipMarker("item", Yi(M.color), l);
                                var I = e0(A.formatTooltip(D, !0, null)),
                                    E = I.frag;
                                if (E) {
                                    var P = Up([A], n).get("valueFormatter");
                                    T.blocks.push(P ? O({
                                        valueFormatter: P
                                    }, E) : E)
                                }
                                I.text && p.push(I.text), u.push(M)
                            }
                        })
                    }
                })
            }), f.blocks.reverse(), p.reverse();
            var h = i.position,
                v = s.get("order"),
                d = l0(f, c, l, v, a.get("useUTC"), s.get("textStyle"));
            d && p.unshift(d);
            var m = l === "richText" ? `

` : "<br/>",
                g = p.join(m);
            this._showOrMove(s, function() {
                this._updateContentNotChangedOnAxis(t, u) ? this._updatePosition(s, h, o[0], o[1], this._tooltipContent, u) : this._showTooltipContent(s, g, u, Math.random() + "", o[0], o[1], h, null, c)
            })
        }, e.prototype._showSeriesItemTooltip = function(t, i, a) {
            var n = this._ecModel,
                o = et(i),
                s = o.seriesIndex,
                l = n.getSeriesByIndex(s),
                u = o.dataModel || l,
                f = o.dataIndex,
                p = o.dataType,
                c = u.getData(p),
                h = this._renderMode,
                v = t.positionDefault,
                d = Up([c.getItemModel(f), u, l && (l.coordinateSystem || {}).model], this._tooltipModel, v ? {
                    position: v
                } : null),
                m = d.get("trigger");
            if (!(m != null && m !== "item")) {
                var g = u.getDataParams(f, p),
                    y = new Hh;
                g.marker = y.makeTooltipMarker("item", Yi(g.color), h);
                var x = e0(u.formatTooltip(f, !1, p)),
                    _ = d.get("order"),
                    S = d.get("valueFormatter"),
                    b = x.frag,
                    T = b ? l0(S ? O({
                        valueFormatter: S
                    }, b) : b, y, h, _, n.get("useUTC"), d.get("textStyle")) : x.text,
                    C = "item_" + u.name + "_" + f;
                this._showOrMove(d, function() {
                    this._showTooltipContent(d, T, g, C, t.offsetX, t.offsetY, t.position, t.target, y)
                }), a({
                    type: "showTip",
                    dataIndexInside: f,
                    dataIndex: c.getRawIndex(f),
                    seriesIndex: s,
                    from: this.uid
                })
            }
        }, e.prototype._showComponentItemTooltip = function(t, i, a) {
            var n = this._renderMode === "html",
                o = et(i),
                s = o.tooltipConfig,
                l = s.option || {},
                u = l.encodeHTMLContent;
            if (F(l)) {
                var f = l;
                l = {
                    content: f,
                    formatter: f
                }, u = !0
            }
            u && n && l.content && (l = Q(l), l.content = xe(l.content));
            var p = [l],
                c = this._ecModel.getComponent(o.componentMainType, o.componentIndex);
            c && p.push(c), p.push({
                formatter: l.content
            });
            var h = t.positionDefault,
                v = Up(p, this._tooltipModel, h ? {
                    position: h
                } : null),
                d = v.get("content"),
                m = Math.random() + "",
                g = new Hh;
            this._showOrMove(v, function() {
                var y = Q(v.get("formatterParams") || {});
                this._showTooltipContent(v, d, y, m, t.offsetX, t.offsetY, t.position, i, g)
            }), a({
                type: "showTip",
                from: this.uid
            })
        }, e.prototype._showTooltipContent = function(t, i, a, n, o, s, l, u, f) {
            if (this._ticket = "", !(!t.get("showContent") || !t.get("show"))) {
                var p = this._tooltipContent;
                p.setEnterable(t.get("enterable"));
                var c = t.get("formatter");
                l = l || t.get("position");
                var h = i,
                    v = this._getNearestPoint([o, s], a, t.get("trigger"), t.get("borderColor")),
                    d = v.color;
                if (c)
                    if (F(c)) {
                        var m = t.ecModel.get("useUTC"),
                            g = z(a) ? a[0] : a,
                            y = g && g.axisType && g.axisType.indexOf("time") >= 0;
                        h = c, y && (h = Qa(g.axisValue, h, m)), h = Tl(h, a, !0)
                    } else if (X(c)) {
                    var x = H(function(_, S) {
                        _ === this._ticket && (p.setContent(S, f, t, d, l), this._updatePosition(t, l, o, s, p, a, u))
                    }, this);
                    this._ticket = n, h = c(a, n, x)
                } else h = c;
                p.setContent(h, f, t, d, l), p.show(t, d), this._updatePosition(t, l, o, s, p, a, u)
            }
        }, e.prototype._getNearestPoint = function(t, i, a, n) {
            if (a === "axis" || z(i)) return {
                color: n || (this._renderMode === "html" ? "#fff" : "none")
            };
            if (!z(i)) return {
                color: n || i.color || i.borderColor
            }
        }, e.prototype._updatePosition = function(t, i, a, n, o, s, l) {
            var u = this._api.getWidth(),
                f = this._api.getHeight();
            i = i || t.get("position");
            var p = o.getSize(),
                c = t.get("align"),
                h = t.get("verticalAlign"),
                v = l && l.getBoundingRect().clone();
            if (l && v.applyTransform(l.transform), X(i) && (i = i([a, n], s, o.el, v, {
                    viewSize: [u, f],
                    contentSize: p.slice()
                })), z(i)) a = W(i[0], u), n = W(i[1], f);
            else if (j(i)) {
                var d = i;
                d.width = p[0], d.height = p[1];
                var m = Ut(d, {
                    width: u,
                    height: f
                });
                a = m.x, n = m.y, c = null, h = null
            } else if (F(i) && l) {
                var g = IX(i, v, p, t.get("borderWidth"));
                a = g[0], n = g[1]
            } else {
                var g = MX(a, n, o, u, f, c ? null : 20, h ? null : 20);
                a = g[0], n = g[1]
            }
            if (c && (a -= bz(c) ? p[0] / 2 : c === "right" ? p[0] : 0), h && (n -= bz(h) ? p[1] / 2 : h === "bottom" ? p[1] : 0), am(t)) {
                var g = LX(a, n, o, u, f);
                a = g[0], n = g[1]
            }
            o.moveTo(a, n)
        }, e.prototype._updateContentNotChangedOnAxis = function(t, i) {
            var a = this._lastDataByCoordSys,
                n = this._cbParamsList,
                o = !!a && a.length === t.length;
            return o && w(a, function(s, l) {
                var u = s.dataByAxis || [],
                    f = t[l] || {},
                    p = f.dataByAxis || [];
                o = o && u.length === p.length, o && w(u, function(c, h) {
                    var v = p[h] || {},
                        d = c.seriesDataIndices || [],
                        m = v.seriesDataIndices || [];
                    o = o && c.value === v.value && c.axisType === v.axisType && c.axisId === v.axisId && d.length === m.length, o && w(d, function(g, y) {
                        var x = m[y];
                        o = o && g.seriesIndex === x.seriesIndex && g.dataIndex === x.dataIndex
                    }), n && w(c.seriesDataIndices, function(g) {
                        var y = g.seriesIndex,
                            x = i[y],
                            _ = n[y];
                        x && _ && _.data !== x.data && (o = !1)
                    })
                })
            }), this._lastDataByCoordSys = t, this._cbParamsList = i, !!o
        }, e.prototype._hide = function(t) {
            this._lastDataByCoordSys = null, t({
                type: "hideTip",
                from: this.uid
            })
        }, e.prototype.dispose = function(t, i) {
            Ct.node || !i.getDom() || (rn(this, "_updatePosition"), this._tooltipContent.dispose(), Np("itemTooltip", i))
        }, e.type = "tooltip", e
    }(It);

function Up(r, e, t) {
    var i = e.ecModel,
        a;
    t ? (a = new Dt(t, i, i), a = new Dt(e.option, a, i)) : a = e;
    for (var n = r.length - 1; n >= 0; n--) {
        var o = r[n];
        o && (o instanceof Dt && (o = o.get("tooltip", !0)), F(o) && (o = {
            formatter: o
        }), o && (a = new Dt(o, a, i)))
    }
    return a
}

function Sz(r, e) {
    return r.dispatchAction || H(e.dispatchAction, e)
}

function MX(r, e, t, i, a, n, o) {
    var s = t.getSize(),
        l = s[0],
        u = s[1];
    return n != null && (r + l + n + 2 > i ? r -= l + n : r += n), o != null && (e + u + o > a ? e -= u + o : e += o), [r, e]
}

function LX(r, e, t, i, a) {
    var n = t.getSize(),
        o = n[0],
        s = n[1];
    return r = Math.min(r + o, i) - o, e = Math.min(e + s, a) - s, r = Math.max(r, 0), e = Math.max(e, 0), [r, e]
}

function IX(r, e, t, i) {
    var a = t[0],
        n = t[1],
        o = Math.ceil(Math.SQRT2 * i) + 8,
        s = 0,
        l = 0,
        u = e.width,
        f = e.height;
    switch (r) {
        case "inside":
            s = e.x + u / 2 - a / 2, l = e.y + f / 2 - n / 2;
            break;
        case "top":
            s = e.x + u / 2 - a / 2, l = e.y - n - o;
            break;
        case "bottom":
            s = e.x + u / 2 - a / 2, l = e.y + f + o;
            break;
        case "left":
            s = e.x - a - o, l = e.y + f / 2 - n / 2;
            break;
        case "right":
            s = e.x + u + o, l = e.y + f / 2 - n / 2
    }
    return [s, l]
}

function bz(r) {
    return r === "center" || r === "middle"
}

function EX(r, e, t) {
    var i = tf(r).queryOptionMap,
        a = i.keys()[0];
    if (!(!a || a === "series")) {
        var n = Tn(e, a, i.get(a), {
                useDefault: !1,
                enableAll: !1,
                enableNone: !1
            }),
            o = n.models[0];
        if (o) {
            var s = t.getViewOfComponentModel(o),
                l;
            if (s.group.traverse(function(u) {
                    var f = et(u).tooltipConfig;
                    if (f && f.name === r.name) return l = u, !0
                }), l) return {
                componentMainType: a,
                componentIndex: o.componentIndex,
                el: l
            }
        }
    }
}
var wz = DX;

function ab(r) {
    _t(aa), r.registerComponentModel(pz), r.registerComponentView(wz), r.registerAction({
        type: "showTip",
        event: "showTip",
        update: "tooltip:manuallyShowTip"
    }, Yt), r.registerAction({
        type: "hideTip",
        event: "hideTip",
        update: "tooltip:manuallyHideTip"
    }, Yt)
}
var PX = ["rect", "polygon", "keep", "clear"];

function nb(r, e) {
    var t = Pt(r ? r.brush : []);
    if (t.length) {
        var i = [];
        w(t, function(l) {
            var u = l.hasOwnProperty("toolbox") ? l.toolbox : [];
            u instanceof Array && (i = i.concat(u))
        });
        var a = r && r.toolbox;
        z(a) && (a = a[0]), a || (a = {
            feature: {}
        }, r.toolbox = [a]);
        var n = a.feature || (a.feature = {}),
            o = n.brush || (n.brush = {}),
            s = o.type || (o.type = []);
        s.push.apply(s, i), RX(s), e && !s.length && s.push.apply(s, PX)
    }
}

function RX(r) {
    var e = {};
    w(r, function(t) {
        e[t] = 1
    }), r.length = 0, w(e, function(t, i) {
        r.push(i)
    })
}
var Tz = w;

function Cz(r) {
    if (r) {
        for (var e in r)
            if (r.hasOwnProperty(e)) return !0
    }
}

function Vp(r, e, t) {
    var i = {};
    return Tz(e, function(n) {
        var o = i[n] = a();
        Tz(r[n], function(s, l) {
            if (he.isValidType(l)) {
                var u = {
                    type: l,
                    visual: s
                };
                t && t(u, n), o[l] = new he(u), l === "opacity" && (u = Q(u), u.type = "colorAlpha", o.__hidden.__alphaForOpacity = new he(u))
            }
        })
    }), i;

    function a() {
        var n = function() {};
        n.prototype.__hidden = n.prototype;
        var o = new n;
        return o
    }
}

function nm(r, e, t) {
    var i;
    w(t, function(a) {
        e.hasOwnProperty(a) && Cz(e[a]) && (i = !0)
    }), i && w(t, function(a) {
        e.hasOwnProperty(a) && Cz(e[a]) ? r[a] = Q(e[a]) : delete r[a]
    })
}

function Az(r, e, t, i, a, n) {
    var o = {};
    w(r, function(p) {
        var c = he.prepareVisualTypes(e[p]);
        o[p] = c
    });
    var s;

    function l(p) {
        return Uf(t, s, p)
    }

    function u(p, c) {
        d0(t, s, p, c)
    }
    n == null ? t.each(f) : t.each([n], f);

    function f(p, c) {
        s = n == null ? p : c;
        var h = t.getRawDataItem(s);
        if (!(h && h.visualMap === !1))
            for (var v = i.call(a, p), d = e[v], m = o[v], g = 0, y = m.length; g < y; g++) {
                var x = m[g];
                d[x] && d[x].applyVisual(p, l, u)
            }
    }
}

function Dz(r, e, t, i) {
    var a = {};
    return w(r, function(n) {
        var o = he.prepareVisualTypes(e[n]);
        a[n] = o
    }), {
        progress: function(o, s) {
            var l;
            i != null && (l = s.getDimensionIndex(i));

            function u(S) {
                return Uf(s, p, S)
            }

            function f(S, b) {
                d0(s, p, S, b)
            }
            for (var p, c = s.getStore();
                (p = o.next()) != null;) {
                var h = s.getRawDataItem(p);
                if (!(h && h.visualMap === !1))
                    for (var v = i != null ? c.get(l, p) : p, d = t(v), m = e[d], g = a[d], y = 0, x = g.length; y < x; y++) {
                        var _ = g[y];
                        m[_] && m[_].applyVisual(v, u, f)
                    }
            }
        }
    }
}

function Iz(r) {
    var e = r.brushType,
        t = {
            point: function(i) {
                return Mz[e].point(i, t, r)
            },
            rect: function(i) {
                return Mz[e].rect(i, t, r)
            }
        };
    return t
}
var Mz = {
    lineX: Lz(0),
    lineY: Lz(1),
    rect: {
        point: function(r, e, t) {
            return r && t.boundingRect.contain(r[0], r[1])
        },
        rect: function(r, e, t) {
            return r && t.boundingRect.intersect(r)
        }
    },
    polygon: {
        point: function(r, e, t) {
            return r && t.boundingRect.contain(r[0], r[1]) && an(t.range, r[0], r[1])
        },
        rect: function(r, e, t) {
            var i = t.range;
            if (!r || i.length <= 1) return !1;
            var a = r.x,
                n = r.y,
                o = r.width,
                s = r.height,
                l = i[0];
            if (an(i, a, n) || an(i, a + o, n) || an(i, a, n + s) || an(i, a + o, n + s) || it.create(r).contain(l[0], l[1]) || yl(a, n, a + o, n, i) || yl(a, n, a, n + s, i) || yl(a + o, n, a + o, n + s, i) || yl(a, n + s, a + o, n + s, i)) return !0
        }
    }
};

function Lz(r) {
    var e = ["x", "y"],
        t = ["width", "height"];
    return {
        point: function(i, a, n) {
            if (i) {
                var o = n.range,
                    s = i[r];
                return Bp(s, o)
            }
        },
        rect: function(i, a, n) {
            if (i) {
                var o = n.range,
                    s = [i[e[r]], i[e[r]] + i[t[r]]];
                return s[1] < s[0] && s.reverse(), Bp(s[0], o) || Bp(s[1], o) || Bp(o[0], s) || Bp(o[1], s)
            }
        }
    }
}

function Bp(r, e) {
    return e[0] <= r && r <= e[1]
}
var Ez = ["inBrush", "outOfBrush"],
    ob = "__ecBrushSelect",
    sb = "__ecInBrushSelectEvent";

function lb(r) {
    r.eachComponent({
        mainType: "brush"
    }, function(e) {
        var t = e.brushTargetManager = new kp(e.option, r);
        t.setInputRanges(e.areas, r)
    })
}

function ub(r, e, t) {
    var i = [],
        a, n;
    r.eachComponent({
        mainType: "brush"
    }, function(o) {
        t && t.type === "takeGlobalCursor" && o.setBrushOption(t.key === "brush" ? t.brushOption : {
            brushType: !1
        })
    }), lb(r), r.eachComponent({
        mainType: "brush"
    }, function(o, s) {
        var l = {
            brushId: o.id,
            brushIndex: s,
            brushName: o.name,
            areas: Q(o.areas),
            selected: []
        };
        i.push(l);
        var u = o.option,
            f = u.brushLink,
            p = [],
            c = [],
            h = [],
            v = !1;
        s || (a = u.throttleType, n = u.throttleDelay);
        var d = k(o.areas, function(S) {
                var b = kX[S.brushType],
                    T = q({
                        boundingRect: b ? b(S) : void 0
                    }, S);
                return T.selectors = Iz(T), T
            }),
            m = Vp(o.option, Ez, function(S) {
                S.mappingMethod = "fixed"
            });
        z(f) && w(f, function(S) {
            p[S] = 1
        });

        function g(S) {
            return f === "all" || !!p[S]
        }

        function y(S) {
            return !!S.length
        }
        r.eachSeries(function(S, b) {
            var T = h[b] = [];
            S.subType === "parallel" ? x(S, b) : _(S, b, T)
        });

        function x(S, b) {
            var T = S.coordinateSystem;
            v = v || T.hasAxisBrushed(), g(b) && T.eachActiveState(S.getData(), function(C, A) {
                C === "active" && (c[A] = 1)
            })
        }

        function _(S, b, T) {
            if (!(!S.brushSelector || zX(o, b)) && (w(d, function(A) {
                    o.brushTargetManager.controlSeries(A, S, r) && T.push(A), v = v || y(T)
                }), g(b) && y(T))) {
                var C = S.getData();
                C.each(function(A) {
                    Pz(S, T, C, A) && (c[A] = 1)
                })
            }
        }
        r.eachSeries(function(S, b) {
            var T = {
                seriesId: S.id,
                seriesIndex: b,
                seriesName: S.name,
                dataIndex: []
            };
            l.selected.push(T);
            var C = h[b],
                A = S.getData(),
                D = g(b) ? function(M) {
                    return c[M] ? (T.dataIndex.push(A.getRawIndex(M)), "inBrush") : "outOfBrush"
                } : function(M) {
                    return Pz(S, C, A, M) ? (T.dataIndex.push(A.getRawIndex(M)), "inBrush") : "outOfBrush"
                };
            (g(b) ? v : y(C)) && Az(Ez, m, A, D)
        })
    }), NX(e, a, n, i, t)
}

function NX(r, e, t, i, a) {
    if (a) {
        var n = r.getZr();
        if (!n[sb]) {
            n[ob] || (n[ob] = OX);
            var o = Ci(n, ob, t, e);
            o(r, i)
        }
    }
}

function OX(r, e) {
    if (!r.isDisposed()) {
        var t = r.getZr();
        t[sb] = !0, r.dispatchAction({
            type: "brushSelect",
            batch: e
        }), t[sb] = !1
    }
}

function Pz(r, e, t, i) {
    for (var a = 0, n = e.length; a < n; a++) {
        var o = e[a];
        if (r.brushSelector(i, t, o.selectors, o)) return !0
    }
}

function zX(r, e) {
    var t = r.option.seriesIndex;
    return t != null && t !== "all" && (z(t) ? at(t, e) < 0 : e !== t)
}
var kX = {
    rect: function(r) {
        return Rz(r.range)
    },
    polygon: function(r) {
        for (var e, t = r.range, i = 0, a = t.length; i < a; i++) {
            e = e || [
                [1 / 0, -1 / 0],
                [1 / 0, -1 / 0]
            ];
            var n = t[i];
            n[0] < e[0][0] && (e[0][0] = n[0]), n[0] > e[0][1] && (e[0][1] = n[0]), n[1] < e[1][0] && (e[1][0] = n[1]), n[1] > e[1][1] && (e[1][1] = n[1])
        }
        return e && Rz(e)
    }
};

function Rz(r) {
    return new it(r[0][0], r[1][0], r[0][1] - r[0][0], r[1][1] - r[1][0])
}
var UX = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.init = function(t, i) {
            this.ecModel = t, this.api = i, this.model, (this._brushController = new ou(i.getZr())).on("brush", H(this._onBrush, this)).mount()
        }, e.prototype.render = function(t, i, a, n) {
            this.model = t, this._updateController(t, i, a, n)
        }, e.prototype.updateTransform = function(t, i, a, n) {
            lb(i), this._updateController(t, i, a, n)
        }, e.prototype.updateVisual = function(t, i, a, n) {
            this.updateTransform(t, i, a, n)
        }, e.prototype.updateView = function(t, i, a, n) {
            this._updateController(t, i, a, n)
        }, e.prototype._updateController = function(t, i, a, n) {
            (!n || n.$from !== t.id) && this._brushController.setPanels(t.brushTargetManager.makePanelOpts(a)).enableBrush(t.brushOption).updateCovers(t.areas.slice())
        }, e.prototype.dispose = function() {
            this._brushController.dispose()
        }, e.prototype._onBrush = function(t) {
            var i = this.model.id,
                a = this.model.brushTargetManager.setOutputRanges(t.areas, this.ecModel);
            (!t.isEnd || t.removeOnClick) && this.api.dispatchAction({
                type: "brush",
                brushId: i,
                areas: Q(a),
                $from: i
            }), t.isEnd && this.api.dispatchAction({
                type: "brushEnd",
                brushId: i,
                areas: Q(a),
                $from: i
            })
        }, e.type = "brush", e
    }(It),
    Nz = UX;
var VX = "#ddd",
    BX = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t.areas = [], t.brushOption = {}, t
        }
        return e.prototype.optionUpdated = function(t, i) {
            var a = this.option;
            !i && nm(a, t, ["inBrush", "outOfBrush"]);
            var n = a.inBrush = a.inBrush || {};
            a.outOfBrush = a.outOfBrush || {
                color: VX
            }, n.hasOwnProperty("liftZ") || (n.liftZ = 5)
        }, e.prototype.setAreas = function(t) {
            t && (this.areas = k(t, function(i) {
                return Oz(this.option, i)
            }, this))
        }, e.prototype.setBrushOption = function(t) {
            this.brushOption = Oz(this.option, t), this.brushType = this.brushOption.brushType
        }, e.type = "brush", e.dependencies = ["geo", "grid", "xAxis", "yAxis", "parallel", "series"], e.defaultOption = {
            seriesIndex: "all",
            brushType: "rect",
            brushMode: "single",
            transformable: !0,
            brushStyle: {
                borderWidth: 1,
                color: "rgba(210,219,238,0.3)",
                borderColor: "#D2DBEE"
            },
            throttleType: "fixRate",
            throttleDelay: 0,
            removeOnClick: !0,
            z: 1e4
        }, e
    }(yt);

function Oz(r, e) {
    return nt({
        brushType: r.brushType,
        brushMode: r.brushMode,
        transformable: r.transformable,
        brushStyle: new Dt(r.brushStyle).getItemStyle(),
        removeOnClick: r.removeOnClick,
        z: r.z
    }, e, !0)
}
var zz = BX;
var FX = ["rect", "polygon", "lineX", "lineY", "keep", "clear"],
    GX = function(r) {
        L(e, r);

        function e() {
            return r !== null && r.apply(this, arguments) || this
        }
        return e.prototype.render = function(t, i, a) {
            var n, o, s;
            i.eachComponent({
                mainType: "brush"
            }, function(l) {
                n = l.brushType, o = l.brushOption.brushMode || "single", s = s || !!l.areas.length
            }), this._brushType = n, this._brushMode = o, w(t.get("type", !0), function(l) {
                t.setIconStatus(l, (l === "keep" ? o === "multiple" : l === "clear" ? s : l === n) ? "emphasis" : "normal")
            })
        }, e.prototype.updateView = function(t, i, a) {
            this.render(t, i, a)
        }, e.prototype.getIcons = function() {
            var t = this.model,
                i = t.get("icon", !0),
                a = {};
            return w(t.get("type", !0), function(n) {
                i[n] && (a[n] = i[n])
            }), a
        }, e.prototype.onclick = function(t, i, a) {
            var n = this._brushType,
                o = this._brushMode;
            a === "clear" ? (i.dispatchAction({
                type: "axisAreaSelect",
                intervals: []
            }), i.dispatchAction({
                type: "brush",
                command: "clear",
                areas: []
            })) : i.dispatchAction({
                type: "takeGlobalCursor",
                key: "brush",
                brushOption: {
                    brushType: a === "keep" ? n : n === a ? !1 : a,
                    brushMode: a === "keep" ? o === "multiple" ? "single" : "multiple" : o
                }
            })
        }, e.getDefaultOption = function(t) {
            var i = {
                show: !0,
                type: FX.slice(),
                icon: {
                    rect: "M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",
                    polygon: "M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",
                    lineX: "M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",
                    lineY: "M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",
                    keep: "M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",
                    clear: "M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"
                },
                title: t.getLocaleModel().get(["toolbox", "brush", "title"])
            };
            return i
        }, e
    }(Ge),
    kz = GX;

function fb(r) {
    r.registerComponentView(Nz), r.registerComponentModel(zz), r.registerPreprocessor(nb), r.registerVisual(r.PRIORITY.VISUAL.BRUSH, ub), r.registerAction({
        type: "brush",
        event: "brush",
        update: "updateVisual"
    }, function(e, t) {
        t.eachComponent({
            mainType: "brush",
            query: e
        }, function(i) {
            i.setAreas(e.areas)
        })
    }), r.registerAction({
        type: "brushSelect",
        event: "brushSelected",
        update: "none"
    }, Yt), r.registerAction({
        type: "brushEnd",
        event: "brushEnd",
        update: "none"
    }, Yt), so("brush", kz)
}
var HX = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t.layoutMode = {
                type: "box",
                ignoreSize: !0
            }, t
        }
        return e.type = "title", e.defaultOption = {
            z: 6,
            show: !0,
            text: "",
            target: "blank",
            subtext: "",
            subtarget: "blank",
            left: 0,
            top: 0,
            backgroundColor: "rgba(0,0,0,0)",
            borderColor: "#ccc",
            borderWidth: 0,
            padding: 5,
            itemGap: 10,
            textStyle: {
                fontSize: 18,
                fontWeight: "bold",
                color: "#464646"
            },
            subtextStyle: {
                fontSize: 12,
                color: "#6E7079"
            }
        }, e
    }(yt),
    WX = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.render = function(t, i, a) {
            if (this.group.removeAll(), !!t.get("show")) {
                var n = this.group,
                    o = t.getModel("textStyle"),
                    s = t.getModel("subtextStyle"),
                    l = t.get("textAlign"),
                    u = ot(t.get("textBaseline"), t.get("textVerticalAlign")),
                    f = new dt({
                        style: zt(o, {
                            text: t.get("text"),
                            fill: o.getTextColor()
                        }, {
                            disableBox: !0
                        }),
                        z2: 10
                    }),
                    p = f.getBoundingRect(),
                    c = t.get("subtext"),
                    h = new dt({
                        style: zt(s, {
                            text: c,
                            fill: s.getTextColor(),
                            y: p.height + t.get("itemGap"),
                            verticalAlign: "top"
                        }, {
                            disableBox: !0
                        }),
                        z2: 10
                    }),
                    v = t.get("link"),
                    d = t.get("sublink"),
                    m = t.get("triggerEvent", !0);
                f.silent = !v && !m, h.silent = !d && !m, v && f.on("click", function() {
                    os(v, "_" + t.get("target"))
                }), d && h.on("click", function() {
                    os(d, "_" + t.get("subtarget"))
                }), et(f).eventData = et(h).eventData = m ? {
                    componentType: "title",
                    componentIndex: t.componentIndex
                } : null, n.add(f), c && n.add(h);
                var g = n.getBoundingRect(),
                    y = t.getBoxLayoutParams();
                y.width = g.width, y.height = g.height;
                var x = Ut(y, {
                    width: a.getWidth(),
                    height: a.getHeight()
                }, t.get("padding"));
                l || (l = t.get("left") || t.get("right"), l === "middle" && (l = "center"), l === "right" ? x.x += x.width : l === "center" && (x.x += x.width / 2)), u || (u = t.get("top") || t.get("bottom"), u === "center" && (u = "middle"), u === "bottom" ? x.y += x.height : u === "middle" && (x.y += x.height / 2), u = u || "top"), n.x = x.x, n.y = x.y, n.markRedraw();
                var _ = {
                    align: l,
                    verticalAlign: u
                };
                f.setStyle(_), h.setStyle(_), g = n.getBoundingRect();
                var S = x.margin,
                    b = t.getItemStyle(["color", "opacity"]);
                b.fill = t.get("backgroundColor");
                var T = new ht({
                    shape: {
                        x: g.x - S[3],
                        y: g.y - S[0],
                        width: g.width + S[1] + S[3],
                        height: g.height + S[0] + S[2],
                        r: t.get("borderRadius")
                    },
                    style: b,
                    subPixelOptimize: !0,
                    silent: !0
                });
                n.add(T)
            }
        }, e.type = "title", e
    }(It);

function pb(r) {
    r.registerComponentModel(HX), r.registerComponentView(WX)
}
var YX = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t.layoutMode = "box", t
        }
        return e.prototype.init = function(t, i, a) {
            this.mergeDefaultAndTheme(t, a), this._initData()
        }, e.prototype.mergeOption = function(t) {
            r.prototype.mergeOption.apply(this, arguments), this._initData()
        }, e.prototype.setCurrentIndex = function(t) {
            t == null && (t = this.option.currentIndex);
            var i = this._data.count();
            this.option.loop ? t = (t % i + i) % i : (t >= i && (t = i - 1), t < 0 && (t = 0)), this.option.currentIndex = t
        }, e.prototype.getCurrentIndex = function() {
            return this.option.currentIndex
        }, e.prototype.isIndexMax = function() {
            return this.getCurrentIndex() >= this._data.count() - 1
        }, e.prototype.setPlayState = function(t) {
            this.option.autoPlay = !!t
        }, e.prototype.getPlayState = function() {
            return !!this.option.autoPlay
        }, e.prototype._initData = function() {
            var t = this.option,
                i = t.data || [],
                a = t.axisType,
                n = this._names = [],
                o;
            a === "category" ? (o = [], w(i, function(u, f) {
                var p = ie(Fi(u), ""),
                    c;
                j(u) ? (c = Q(u), c.value = f) : c = f, o.push(c), n.push(p)
            })) : o = i;
            var s = {
                    category: "ordinal",
                    time: "time",
                    value: "number"
                }[a] || "number",
                l = this._data = new se([{
                    name: "value",
                    type: s
                }], this);
            l.initData(o, n)
        }, e.prototype.getData = function() {
            return this._data
        }, e.prototype.getCategories = function() {
            if (this.get("axisType") === "category") return this._names.slice()
        }, e.type = "timeline", e.defaultOption = {
            z: 4,
            show: !0,
            axisType: "time",
            realtime: !0,
            left: "20%",
            top: null,
            right: "20%",
            bottom: 0,
            width: null,
            height: 40,
            padding: 5,
            controlPosition: "left",
            autoPlay: !1,
            rewind: !1,
            loop: !0,
            playInterval: 2e3,
            currentIndex: 0,
            itemStyle: {},
            label: {
                color: "#000"
            },
            data: []
        }, e
    }(yt),
    cb = YX;
var Uz = function(r) {
    L(e, r);

    function e() {
        var t = r !== null && r.apply(this, arguments) || this;
        return t.type = e.type, t
    }
    return e.type = "timeline.slider", e.defaultOption = nr(cb.defaultOption, {
        backgroundColor: "rgba(0,0,0,0)",
        borderColor: "#ccc",
        borderWidth: 0,
        orient: "horizontal",
        inverse: !1,
        tooltip: {
            trigger: "item"
        },
        symbol: "circle",
        symbolSize: 12,
        lineStyle: {
            show: !0,
            width: 2,
            color: "#DAE1F5"
        },
        label: {
            position: "auto",
            show: !0,
            interval: "auto",
            rotate: 0,
            color: "#A4B1D7"
        },
        itemStyle: {
            color: "#A4B1D7",
            borderWidth: 1
        },
        checkpointStyle: {
            symbol: "circle",
            symbolSize: 15,
            color: "#316bf3",
            borderColor: "#fff",
            borderWidth: 2,
            shadowBlur: 2,
            shadowOffsetX: 1,
            shadowOffsetY: 1,
            shadowColor: "rgba(0, 0, 0, 0.3)",
            animation: !0,
            animationDuration: 300,
            animationEasing: "quinticInOut"
        },
        controlStyle: {
            show: !0,
            showPlayBtn: !0,
            showPrevBtn: !0,
            showNextBtn: !0,
            itemSize: 24,
            itemGap: 12,
            position: "left",
            playIcon: "path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",
            stopIcon: "path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",
            nextIcon: "M2,18.5A1.52,1.52,0,0,1,.92,18a1.49,1.49,0,0,1,0-2.12L7.81,9.36,1,3.11A1.5,1.5,0,1,1,3,.89l8,7.34a1.48,1.48,0,0,1,.49,1.09,1.51,1.51,0,0,1-.46,1.1L3,18.08A1.5,1.5,0,0,1,2,18.5Z",
            prevIcon: "M10,.5A1.52,1.52,0,0,1,11.08,1a1.49,1.49,0,0,1,0,2.12L4.19,9.64,11,15.89a1.5,1.5,0,1,1-2,2.22L1,10.77A1.48,1.48,0,0,1,.5,9.68,1.51,1.51,0,0,1,1,8.58L9,.92A1.5,1.5,0,0,1,10,.5Z",
            prevBtnSize: 18,
            nextBtnSize: 18,
            color: "#A4B1D7",
            borderColor: "#A4B1D7",
            borderWidth: 1
        },
        emphasis: {
            label: {
                show: !0,
                color: "#6f778d"
            },
            itemStyle: {
                color: "#316BF3"
            },
            controlStyle: {
                color: "#316BF3",
                borderColor: "#316BF3",
                borderWidth: 2
            }
        },
        progress: {
            lineStyle: {
                color: "#316BF3"
            },
            itemStyle: {
                color: "#316BF3"
            },
            label: {
                color: "#6f778d"
            }
        },
        data: []
    }), e
}(cb);
Bt(Uz, ps.prototype);
var Vz = Uz;
var ZX = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.type = "timeline", e
    }(It),
    Bz = ZX;
var XX = function(r) {
        L(e, r);

        function e(t, i, a, n) {
            var o = r.call(this, t, i, a) || this;
            return o.type = n || "value", o
        }
        return e.prototype.getLabelModel = function() {
            return this.model.getModel("label")
        }, e.prototype.isHorizontal = function() {
            return this.model.get("orient") === "horizontal"
        }, e
    }(Fe),
    Fz = XX;
var hb = Math.PI,
    Gz = lt(),
    qX = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.init = function(t, i) {
            this.api = i
        }, e.prototype.render = function(t, i, a) {
            if (this.model = t, this.api = a, this.ecModel = i, this.group.removeAll(), t.get("show", !0)) {
                var n = this._layout(t, a),
                    o = this._createGroup("_mainGroup"),
                    s = this._createGroup("_labelGroup"),
                    l = this._axis = this._createAxis(n, t);
                t.formatTooltip = function(u) {
                    var f = l.scale.getLabel({
                        value: u
                    });
                    return Jt("nameValue", {
                        noName: !0,
                        value: f
                    })
                }, w(["AxisLine", "AxisTick", "Control", "CurrentPointer"], function(u) {
                    this["_render" + u](n, o, l, t)
                }, this), this._renderAxisLabel(n, s, l, t), this._position(n, t)
            }
            this._doPlayStop(), this._updateTicksStatus()
        }, e.prototype.remove = function() {
            this._clearTimer(), this.group.removeAll()
        }, e.prototype.dispose = function() {
            this._clearTimer()
        }, e.prototype._layout = function(t, i) {
            var a = t.get(["label", "position"]),
                n = t.get("orient"),
                o = jX(t, i),
                s;
            a == null || a === "auto" ? s = n === "horizontal" ? o.y + o.height / 2 < i.getHeight() / 2 ? "-" : "+" : o.x + o.width / 2 < i.getWidth() / 2 ? "+" : "-" : F(a) ? s = {
                horizontal: {
                    top: "-",
                    bottom: "+"
                },
                vertical: {
                    left: "-",
                    right: "+"
                }
            }[n][a] : s = a;
            var l = {
                    horizontal: "center",
                    vertical: s >= 0 || s === "+" ? "left" : "right"
                },
                u = {
                    horizontal: s >= 0 || s === "+" ? "top" : "bottom",
                    vertical: "middle"
                },
                f = {
                    horizontal: 0,
                    vertical: hb / 2
                },
                p = n === "vertical" ? o.height : o.width,
                c = t.getModel("controlStyle"),
                h = c.get("show", !0),
                v = h ? c.get("itemSize") : 0,
                d = h ? c.get("itemGap") : 0,
                m = v + d,
                g = t.get(["label", "rotate"]) || 0;
            g = g * hb / 180;
            var y, x, _, S = c.get("position", !0),
                b = h && c.get("showPlayBtn", !0),
                T = h && c.get("showPrevBtn", !0),
                C = h && c.get("showNextBtn", !0),
                A = 0,
                D = p;
            S === "left" || S === "bottom" ? (b && (y = [0, 0], A += m), T && (x = [A, 0], A += m), C && (_ = [D - v, 0], D -= m)) : (b && (y = [D - v, 0], D -= m), T && (x = [0, 0], A += m), C && (_ = [D - v, 0], D -= m));
            var M = [A, D];
            return t.get("inverse") && M.reverse(), {
                viewRect: o,
                mainLength: p,
                orient: n,
                rotation: f[n],
                labelRotation: g,
                labelPosOpt: s,
                labelAlign: t.get(["label", "align"]) || l[n],
                labelBaseline: t.get(["label", "verticalAlign"]) || t.get(["label", "baseline"]) || u[n],
                playPosition: y,
                prevBtnPosition: x,
                nextBtnPosition: _,
                axisExtent: M,
                controlSize: v,
                controlGap: d
            }
        }, e.prototype._position = function(t, i) {
            var a = this._mainGroup,
                n = this._labelGroup,
                o = t.viewRect;
            if (t.orient === "vertical") {
                var s = me(),
                    l = o.x,
                    u = o.y + o.height;
                We(s, s, [-l, -u]), cr(s, s, -hb / 2), We(s, s, [l, u]), o = o.clone(), o.applyTransform(s)
            }
            var f = y(o),
                p = y(a.getBoundingRect()),
                c = y(n.getBoundingRect()),
                h = [a.x, a.y],
                v = [n.x, n.y];
            v[0] = h[0] = f[0][0];
            var d = t.labelPosOpt;
            if (d == null || F(d)) {
                var m = d === "+" ? 0 : 1;
                x(h, p, f, 1, m), x(v, c, f, 1, 1 - m)
            } else {
                var m = d >= 0 ? 0 : 1;
                x(h, p, f, 1, m), v[1] = h[1] + d
            }
            a.setPosition(h), n.setPosition(v), a.rotation = n.rotation = t.rotation, g(a), g(n);

            function g(_) {
                _.originX = f[0][0] - _.x, _.originY = f[1][0] - _.y
            }

            function y(_) {
                return [
                    [_.x, _.x + _.width],
                    [_.y, _.y + _.height]
                ]
            }

            function x(_, S, b, T, C) {
                _[T] += b[T][C] - S[T][C]
            }
        }, e.prototype._createAxis = function(t, i) {
            var a = i.getData(),
                n = i.get("axisType"),
                o = KX(i, n);
            o.getTicks = function() {
                return a.mapArray(["value"], function(u) {
                    return {
                        value: u
                    }
                })
            };
            var s = a.getDataExtent("value");
            o.setExtent(s[0], s[1]), o.calcNiceTicks();
            var l = new Fz("value", o, t.axisExtent, n);
            return l.model = i, l
        }, e.prototype._createGroup = function(t) {
            var i = this[t] = new J;
            return this.group.add(i), i
        }, e.prototype._renderAxisLine = function(t, i, a, n) {
            var o = a.getExtent();
            if (n.get(["lineStyle", "show"])) {
                var s = new ee({
                    shape: {
                        x1: o[0],
                        y1: 0,
                        x2: o[1],
                        y2: 0
                    },
                    style: O({
                        lineCap: "round"
                    }, n.getModel("lineStyle").getLineStyle()),
                    silent: !0,
                    z2: 1
                });
                i.add(s);
                var l = this._progressLine = new ee({
                    shape: {
                        x1: o[0],
                        x2: this._currentPointer ? this._currentPointer.x : o[0],
                        y1: 0,
                        y2: 0
                    },
                    style: q({
                        lineCap: "round",
                        lineWidth: s.style.lineWidth
                    }, n.getModel(["progress", "lineStyle"]).getLineStyle()),
                    silent: !0,
                    z2: 1
                });
                i.add(l)
            }
        }, e.prototype._renderAxisTick = function(t, i, a, n) {
            var o = this,
                s = n.getData(),
                l = a.scale.getTicks();
            this._tickSymbols = [], w(l, function(u) {
                var f = a.dataToCoord(u.value),
                    p = s.getItemModel(u.value),
                    c = p.getModel("itemStyle"),
                    h = p.getModel(["emphasis", "itemStyle"]),
                    v = p.getModel(["progress", "itemStyle"]),
                    d = {
                        x: f,
                        y: 0,
                        onclick: H(o._changeTimeline, o, u.value)
                    },
                    m = Hz(p, c, i, d);
                m.ensureState("emphasis").style = h.getItemStyle(), m.ensureState("progress").style = v.getItemStyle(), gi(m);
                var g = et(m);
                p.get("tooltip") ? (g.dataIndex = u.value, g.dataModel = n) : g.dataIndex = g.dataModel = null, o._tickSymbols.push(m)
            })
        }, e.prototype._renderAxisLabel = function(t, i, a, n) {
            var o = this,
                s = a.getLabelModel();
            if (s.get("show")) {
                var l = n.getData(),
                    u = a.getViewLabels();
                this._tickLabels = [], w(u, function(f) {
                    var p = f.tickValue,
                        c = l.getItemModel(p),
                        h = c.getModel("label"),
                        v = c.getModel(["emphasis", "label"]),
                        d = c.getModel(["progress", "label"]),
                        m = a.dataToCoord(f.tickValue),
                        g = new dt({
                            x: m,
                            y: 0,
                            rotation: t.labelRotation - t.rotation,
                            onclick: H(o._changeTimeline, o, p),
                            silent: !1,
                            style: zt(h, {
                                text: f.formattedLabel,
                                align: t.labelAlign,
                                verticalAlign: t.labelBaseline
                            })
                        });
                    g.ensureState("emphasis").style = zt(v), g.ensureState("progress").style = zt(d), i.add(g), gi(g), Gz(g).dataIndex = p, o._tickLabels.push(g)
                })
            }
        }, e.prototype._renderControl = function(t, i, a, n) {
            var o = t.controlSize,
                s = t.rotation,
                l = n.getModel("controlStyle").getItemStyle(),
                u = n.getModel(["emphasis", "controlStyle"]).getItemStyle(),
                f = n.getPlayState(),
                p = n.get("inverse", !0);
            c(t.nextBtnPosition, "next", H(this._changeTimeline, this, p ? "-" : "+")), c(t.prevBtnPosition, "prev", H(this._changeTimeline, this, p ? "+" : "-")), c(t.playPosition, f ? "stop" : "play", H(this._handlePlayClick, this, !f), !0);

            function c(h, v, d, m) {
                if (h) {
                    var g = Xe(ot(n.get(["controlStyle", v + "BtnSize"]), o), o),
                        y = [0, -g / 2, g, g],
                        x = JX(n, v + "Icon", y, {
                            x: h[0],
                            y: h[1],
                            originX: o / 2,
                            originY: 0,
                            rotation: m ? -s : 0,
                            rectHover: !0,
                            style: l,
                            onclick: d
                        });
                    x.ensureState("emphasis").style = u, i.add(x), gi(x)
                }
            }
        }, e.prototype._renderCurrentPointer = function(t, i, a, n) {
            var o = n.getData(),
                s = n.getCurrentIndex(),
                l = o.getItemModel(s).getModel("checkpointStyle"),
                u = this,
                f = {
                    onCreate: function(p) {
                        p.draggable = !0, p.drift = H(u._handlePointerDrag, u), p.ondragend = H(u._handlePointerDragend, u), Wz(p, u._progressLine, s, a, n, !0)
                    },
                    onUpdate: function(p) {
                        Wz(p, u._progressLine, s, a, n)
                    }
                };
            this._currentPointer = Hz(l, l, this._mainGroup, {}, this._currentPointer, f)
        }, e.prototype._handlePlayClick = function(t) {
            this._clearTimer(), this.api.dispatchAction({
                type: "timelinePlayChange",
                playState: t,
                from: this.uid
            })
        }, e.prototype._handlePointerDrag = function(t, i, a) {
            this._clearTimer(), this._pointerChangeTimeline([a.offsetX, a.offsetY])
        }, e.prototype._handlePointerDragend = function(t) {
            this._pointerChangeTimeline([t.offsetX, t.offsetY], !0)
        }, e.prototype._pointerChangeTimeline = function(t, i) {
            var a = this._toAxisCoord(t)[0],
                n = this._axis,
                o = _e(n.getExtent().slice());
            a > o[1] && (a = o[1]), a < o[0] && (a = o[0]), this._currentPointer.x = a, this._currentPointer.markRedraw();
            var s = this._progressLine;
            s && (s.shape.x2 = a, s.dirty());
            var l = this._findNearestTick(a),
                u = this.model;
            (i || l !== u.getCurrentIndex() && u.get("realtime")) && this._changeTimeline(l)
        }, e.prototype._doPlayStop = function() {
            var t = this;
            this._clearTimer(), this.model.getPlayState() && (this._timer = setTimeout(function() {
                var i = t.model;
                t._changeTimeline(i.getCurrentIndex() + (i.get("rewind", !0) ? -1 : 1))
            }, this.model.get("playInterval")))
        }, e.prototype._toAxisCoord = function(t) {
            var i = this._mainGroup.getLocalTransform();
            return Je(t, i, !0)
        }, e.prototype._findNearestTick = function(t) {
            var i = this.model.getData(),
                a = 1 / 0,
                n, o = this._axis;
            return i.each(["value"], function(s, l) {
                var u = o.dataToCoord(s),
                    f = Math.abs(u - t);
                f < a && (a = f, n = l)
            }), n
        }, e.prototype._clearTimer = function() {
            this._timer && (clearTimeout(this._timer), this._timer = null)
        }, e.prototype._changeTimeline = function(t) {
            var i = this.model.getCurrentIndex();
            t === "+" ? t = i + 1 : t === "-" && (t = i - 1), this.api.dispatchAction({
                type: "timelineChange",
                currentIndex: t,
                from: this.uid
            })
        }, e.prototype._updateTicksStatus = function() {
            var t = this.model.getCurrentIndex(),
                i = this._tickSymbols,
                a = this._tickLabels;
            if (i)
                for (var n = 0; n < i.length; n++) i && i[n] && i[n].toggleState("progress", n < t);
            if (a)
                for (var n = 0; n < a.length; n++) a && a[n] && a[n].toggleState("progress", Gz(a[n]).dataIndex <= t)
        }, e.type = "timeline.slider", e
    }(Bz);

function KX(r, e) {
    if (e = e || r.get("type"), e) switch (e) {
        case "category":
            return new tp({
                ordinalMeta: r.getCategories(),
                extent: [1 / 0, -1 / 0]
            });
        case "time":
            return new _v({
                locale: r.ecModel.getLocaleModel(),
                useUTC: r.ecModel.get("useUTC")
            });
        default:
            return new Hr
    }
}

function jX(r, e) {
    return Ut(r.getBoxLayoutParams(), {
        width: e.getWidth(),
        height: e.getHeight()
    }, r.get("padding"))
}

function JX(r, e, t, i) {
    var a = i.style,
        n = Wi(r.get(["controlStyle", e]), i || {}, new it(t[0], t[1], t[2], t[3]));
    return a && n.setStyle(a), n
}

function Hz(r, e, t, i, a, n) {
    var o = e.get("color");
    if (a) a.setColor(o), t.add(a), n && n.onUpdate(a);
    else {
        var s = r.get("symbol");
        a = Vt(s, -1, -1, 2, 2, o), a.setStyle("strokeNoScale", !0), t.add(a), n && n.onCreate(a)
    }
    var l = e.getItemStyle(["color"]);
    a.setStyle(l), i = nt({
        rectHover: !0,
        z2: 100
    }, i, !0);
    var u = Ki(r.get("symbolSize"));
    i.scaleX = u[0] / 2, i.scaleY = u[1] / 2;
    var f = oi(r.get("symbolOffset"), u);
    f && (i.x = (i.x || 0) + f[0], i.y = (i.y || 0) + f[1]);
    var p = r.get("symbolRotate");
    return i.rotation = (p || 0) * Math.PI / 180 || 0, a.attr(i), a.updateTransform(), a
}

function Wz(r, e, t, i, a, n) {
    if (!r.dragging) {
        var o = a.getModel("checkpointStyle"),
            s = i.dataToCoord(a.getData().get("value", t));
        if (n || !o.get("animation", !0)) r.attr({
            x: s,
            y: 0
        }), e && e.attr({
            shape: {
                x2: s
            }
        });
        else {
            var l = {
                duration: o.get("animationDuration", !0),
                easing: o.get("animationEasing", !0)
            };
            r.stopAnimation(null, !0), r.animateTo({
                x: s,
                y: 0
            }, l), e && e.animateTo({
                shape: {
                    x2: s
                }
            }, l)
        }
    }
}
var Yz = qX;

function Zz(r) {
    r.registerAction({
        type: "timelineChange",
        event: "timelineChanged",
        update: "prepareAndUpdate"
    }, function(e, t, i) {
        var a = t.getComponent("timeline");
        return a && e.currentIndex != null && (a.setCurrentIndex(e.currentIndex), !a.get("loop", !0) && a.isIndexMax() && a.getPlayState() && (a.setPlayState(!1), i.dispatchAction({
            type: "timelinePlayChange",
            playState: !1,
            from: e.from
        }))), t.resetOption("timeline", {
            replaceMerge: a.get("replaceMerge", !0)
        }), q({
            currentIndex: a.option.currentIndex
        }, e)
    }), r.registerAction({
        type: "timelinePlayChange",
        event: "timelinePlayChanged",
        update: "update"
    }, function(e, t) {
        var i = t.getComponent("timeline");
        i && e.playState != null && i.setPlayState(e.playState)
    })
}

function vb(r) {
    var e = r && r.timeline;
    z(e) || (e = e ? [e] : []), w(e, function(t) {
        t && QX(t)
    })
}

function QX(r) {
    var e = r.type,
        t = {
            number: "value",
            time: "time"
        };
    if (t[e] && (r.axisType = t[e], delete r.type), Xz(r), Os(r, "controlPosition")) {
        var i = r.controlStyle || (r.controlStyle = {});
        Os(i, "position") || (i.position = r.controlPosition), i.position === "none" && !Os(i, "show") && (i.show = !1, delete i.position), delete r.controlPosition
    }
    w(r.data || [], function(a) {
        j(a) && !z(a) && (!Os(a, "value") && Os(a, "name") && (a.value = a.name), Xz(a))
    })
}

function Xz(r) {
    var e = r.itemStyle || (r.itemStyle = {}),
        t = e.emphasis || (e.emphasis = {}),
        i = r.label || r.label || {},
        a = i.normal || (i.normal = {}),
        n = {
            normal: 1,
            emphasis: 1
        };
    w(i, function(o, s) {
        !n[s] && !Os(a, s) && (a[s] = o)
    }), t.label && !Os(i, "emphasis") && (i.emphasis = t.label, delete t.label)
}

function Os(r, e) {
    return r.hasOwnProperty(e)
}

function db(r) {
    r.registerComponentModel(Vz), r.registerComponentView(Yz), r.registerSubTypeDefaulter("timeline", function() {
        return "slider"
    }), Zz(r), r.registerPreprocessor(vb)
}

function zs(r, e) {
    if (!r) return !1;
    for (var t = z(r) ? r : [r], i = 0; i < t.length; i++)
        if (t[i] && t[i][e]) return !0;
    return !1
}

function sm(r) {
    Qr(r, "label", ["show"])
}
var lm = lt(),
    qz = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t.createdBySelf = !1, t
        }
        return e.prototype.init = function(t, i, a) {
            this.mergeDefaultAndTheme(t, a), this._mergeOption(t, a, !1, !0)
        }, e.prototype.isAnimationEnabled = function() {
            if (Ct.node) return !1;
            var t = this.__hostSeries;
            return this.getShallow("animation") && t && t.isAnimationEnabled()
        }, e.prototype.mergeOption = function(t, i) {
            this._mergeOption(t, i, !1, !1)
        }, e.prototype._mergeOption = function(t, i, a, n) {
            var o = this.mainType;
            a || i.eachSeries(function(s) {
                var l = s.get(this.mainType, !0),
                    u = lm(s)[o];
                if (!l || !l.data) {
                    lm(s)[o] = null;
                    return
                }
                u ? u._mergeOption(l, i, !0) : (n && sm(l), w(l.data, function(f) {
                    f instanceof Array ? (sm(f[0]), sm(f[1])) : sm(f)
                }), u = this.createMarkerModelFromSeries(l, this, i), O(u, {
                    mainType: this.mainType,
                    seriesIndex: s.seriesIndex,
                    name: s.name,
                    createdBySelf: !0
                }), u.__hostSeries = s), lm(s)[o] = u
            }, this)
        }, e.prototype.formatTooltip = function(t, i, a) {
            var n = this.getData(),
                o = this.getRawValue(t),
                s = n.getName(t);
            return Jt("section", {
                header: this.name,
                blocks: [Jt("nameValue", {
                    name: s,
                    value: o,
                    noName: !s,
                    noValue: o == null
                })]
            })
        }, e.prototype.getData = function() {
            return this._data
        }, e.prototype.setData = function(t) {
            this._data = t
        }, e.prototype.getDataParams = function(t, i) {
            var a = ps.prototype.getDataParams.call(this, t, i),
                n = this.__hostSeries;
            return n && (a.seriesId = n.id, a.seriesName = n.name, a.seriesType = n.subType), a
        }, e.getMarkerModelFromSeries = function(t, i) {
            return lm(t)[i]
        }, e.type = "marker", e.dependencies = ["series", "grid", "polar", "geo"], e
    }(yt);
Bt(qz, ps.prototype);
var br = qz;
var $X = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.createMarkerModelFromSeries = function(t, i, a) {
            return new e(t, i, a)
        }, e.type = "markPoint", e.defaultOption = {
            z: 5,
            symbol: "pin",
            symbolSize: 50,
            tooltip: {
                trigger: "item"
            },
            label: {
                show: !0,
                position: "inside"
            },
            itemStyle: {
                borderWidth: 2
            },
            emphasis: {
                label: {
                    show: !0
                }
            }
        }, e
    }(br),
    Kz = $X;

function gb(r) {
    return !(isNaN(parseFloat(r.x)) && isNaN(parseFloat(r.y)))
}

function tq(r) {
    return !isNaN(parseFloat(r.x)) && !isNaN(parseFloat(r.y))
}

function um(r, e, t, i, a, n) {
    var o = [],
        s = gr(e, i),
        l = s ? e.getCalculationInfo("stackResultDimension") : i,
        u = pm(e, l, r),
        f = e.indicesOfNearest(l, u)[0];
    o[a] = e.get(t, f), o[n] = e.get(l, f);
    var p = e.get(i, f),
        c = qe(e.get(i, f));
    return c = Math.min(c, 20), c >= 0 && (o[n] = +o[n].toFixed(c)), [o, p]
}
var mb = {
    min: rt(um, "min"),
    max: rt(um, "max"),
    average: rt(um, "average"),
    median: rt(um, "median")
};

function uo(r, e) {
    if (e) {
        var t = r.getData(),
            i = r.coordinateSystem,
            a = i && i.dimensions;
        if (!tq(e) && !z(e.coord) && z(a)) {
            var n = yb(e, t, i, r);
            if (e = Q(e), e.type && mb[e.type] && n.baseAxis && n.valueAxis) {
                var o = at(a, n.baseAxis.dim),
                    s = at(a, n.valueAxis.dim),
                    l = mb[e.type](t, n.baseDataDim, n.valueDataDim, o, s);
                e.coord = l[0], e.value = l[1]
            } else e.coord = [e.xAxis != null ? e.xAxis : e.radiusAxis, e.yAxis != null ? e.yAxis : e.angleAxis]
        }
        if (e.coord == null || !z(a)) e.coord = [];
        else
            for (var u = e.coord, f = 0; f < 2; f++) mb[u[f]] && (u[f] = pm(t, t.mapDimension(a[f]), u[f]));
        return e
    }
}

function yb(r, e, t, i) {
    var a = {};
    return r.valueIndex != null || r.valueDim != null ? (a.valueDataDim = r.valueIndex != null ? e.getDimension(r.valueIndex) : r.valueDim, a.valueAxis = t.getAxis(eq(i, a.valueDataDim)), a.baseAxis = t.getOtherAxis(a.valueAxis), a.baseDataDim = e.mapDimension(a.baseAxis.dim)) : (a.baseAxis = i.getBaseAxis(), a.valueAxis = t.getOtherAxis(a.baseAxis), a.baseDataDim = e.mapDimension(a.baseAxis.dim), a.valueDataDim = e.mapDimension(a.valueAxis.dim)), a
}

function eq(r, e) {
    var t = r.getData().getDimensionInfo(e);
    return t && t.coordDim
}

function fo(r, e) {
    return r && r.containData && e.coord && !gb(e) ? r.containData(e.coord) : !0
}

function jz(r, e, t) {
    return r && r.containZone && e.coord && t.coord && !gb(e) && !gb(t) ? r.containZone(e.coord, t.coord) : !0
}

function fm(r, e) {
    return r ? function(t, i, a, n) {
        var o = n < 2 ? t.coord && t.coord[n] : t.value;
        return Ti(o, e[n])
    } : function(t, i, a, n) {
        return Ti(t.value, e[n])
    }
}

function pm(r, e, t) {
    if (t === "average") {
        var i = 0,
            a = 0;
        return r.each(e, function(n, o) {
            isNaN(n) || (i += n, a++)
        }), i / a
    } else return t === "median" ? r.getMedian(e) : r.getDataExtent(e)[t === "max" ? 1 : 0]
}
var _b = lt(),
    rq = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.init = function() {
            this.markerGroupMap = Y()
        }, e.prototype.render = function(t, i, a) {
            var n = this,
                o = this.markerGroupMap;
            o.each(function(s) {
                _b(s).keep = !1
            }), i.eachSeries(function(s) {
                var l = br.getMarkerModelFromSeries(s, n.type);
                l && n.renderSeries(s, l, i, a)
            }), o.each(function(s) {
                !_b(s).keep && n.group.remove(s.group)
            })
        }, e.prototype.markKeep = function(t) {
            _b(t).keep = !0
        }, e.prototype.toggleBlurSeries = function(t, i) {
            var a = this;
            w(t, function(n) {
                var o = br.getMarkerModelFromSeries(n, a.type);
                if (o) {
                    var s = o.getData();
                    s.eachItemGraphicEl(function(l) {
                        l && (i ? Kc(l) : pf(l))
                    })
                }
            })
        }, e.type = "marker", e
    }(It),
    yu = rq;

function Jz(r, e, t) {
    var i = e.coordinateSystem;
    r.each(function(a) {
        var n = r.getItemModel(a),
            o, s = W(n.get("x"), t.getWidth()),
            l = W(n.get("y"), t.getHeight());
        if (!isNaN(s) && !isNaN(l)) o = [s, l];
        else if (e.getMarkerPosition) o = e.getMarkerPosition(r.getValues(r.dimensions, a));
        else if (i) {
            var u = r.get(i.dimensions[0], a),
                f = r.get(i.dimensions[1], a);
            o = i.dataToPoint([u, f])
        }
        isNaN(s) || (o[0] = s), isNaN(l) || (o[1] = l), r.setItemLayout(a, o)
    })
}
var iq = function(r) {
    L(e, r);

    function e() {
        var t = r !== null && r.apply(this, arguments) || this;
        return t.type = e.type, t
    }
    return e.prototype.updateTransform = function(t, i, a) {
        i.eachSeries(function(n) {
            var o = br.getMarkerModelFromSeries(n, "markPoint");
            o && (Jz(o.getData(), n, a), this.markerGroupMap.get(n.id).updateLayout())
        }, this)
    }, e.prototype.renderSeries = function(t, i, a, n) {
        var o = t.coordinateSystem,
            s = t.id,
            l = t.getData(),
            u = this.markerGroupMap,
            f = u.get(s) || u.set(s, new wa),
            p = aq(o, t, i);
        i.setData(p), Jz(i.getData(), t, n), p.each(function(c) {
            var h = p.getItemModel(c),
                v = h.getShallow("symbol"),
                d = h.getShallow("symbolSize"),
                m = h.getShallow("symbolRotate"),
                g = h.getShallow("symbolOffset"),
                y = h.getShallow("symbolKeepAspect");
            if (X(v) || X(d) || X(m) || X(g)) {
                var x = i.getRawValue(c),
                    _ = i.getDataParams(c);
                X(v) && (v = v(x, _)), X(d) && (d = d(x, _)), X(m) && (m = m(x, _)), X(g) && (g = g(x, _))
            }
            var S = h.getModel("itemStyle").getItemStyle(),
                b = ya(l, "color");
            S.fill || (S.fill = b), p.setItemVisual(c, {
                symbol: v,
                symbolSize: d,
                symbolRotate: m,
                symbolOffset: g,
                symbolKeepAspect: y,
                style: S
            })
        }), f.updateData(p), this.group.add(f.group), p.eachItemGraphicEl(function(c) {
            c.traverse(function(h) {
                et(h).dataModel = i
            })
        }), this.markKeep(f), f.group.silent = i.get("silent") || t.get("silent")
    }, e.type = "markPoint", e
}(yu);

function aq(r, e, t) {
    var i;
    r ? i = k(r && r.dimensions, function(s) {
        var l = e.getData().getDimensionInfo(e.getData().mapDimension(s)) || {};
        return O(O({}, l), {
            name: s,
            ordinalMeta: null
        })
    }) : i = [{
        name: "value",
        type: "float"
    }];
    var a = new se(i, t),
        n = k(t.get("data"), rt(uo, e));
    r && (n = wt(n, rt(fo, r)));
    var o = fm(!!r, i);
    return a.initData(n, null, o), a
}
var Qz = iq;

function Sb(r) {
    r.registerComponentModel(Kz), r.registerComponentView(Qz), r.registerPreprocessor(function(e) {
        zs(e.series, "markPoint") && (e.markPoint = e.markPoint || {})
    })
}
var nq = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.createMarkerModelFromSeries = function(t, i, a) {
            return new e(t, i, a)
        }, e.type = "markLine", e.defaultOption = {
            z: 5,
            symbol: ["circle", "arrow"],
            symbolSize: [8, 16],
            symbolOffset: 0,
            precision: 2,
            tooltip: {
                trigger: "item"
            },
            label: {
                show: !0,
                position: "end",
                distance: 5
            },
            lineStyle: {
                type: "dashed"
            },
            emphasis: {
                label: {
                    show: !0
                },
                lineStyle: {
                    width: 3
                }
            },
            animationEasing: "linear"
        }, e
    }(br),
    $z = nq;
var cm = lt(),
    oq = function(r, e, t, i) {
        var a = r.getData(),
            n;
        if (z(i)) n = i;
        else {
            var o = i.type;
            if (o === "min" || o === "max" || o === "average" || o === "median" || i.xAxis != null || i.yAxis != null) {
                var s = void 0,
                    l = void 0;
                if (i.yAxis != null || i.xAxis != null) s = e.getAxis(i.yAxis != null ? "y" : "x"), l = Kt(i.yAxis, i.xAxis);
                else {
                    var u = yb(i, a, e, r);
                    s = u.valueAxis;
                    var f = kl(a, u.valueDataDim);
                    l = pm(a, f, o)
                }
                var p = s.dim === "x" ? 0 : 1,
                    c = 1 - p,
                    h = Q(i),
                    v = {
                        coord: []
                    };
                h.type = null, h.coord = [], h.coord[c] = -1 / 0, v.coord[c] = 1 / 0;
                var d = t.get("precision");
                d >= 0 && vt(l) && (l = +l.toFixed(Math.min(d, 20))), h.coord[p] = v.coord[p] = l, n = [h, v, {
                    type: o,
                    valueIndex: i.valueIndex,
                    value: l
                }]
            } else n = []
        }
        var m = [uo(r, n[0]), uo(r, n[1]), O({}, n[2])];
        return m[2].type = m[2].type || null, nt(m[2], m[0]), nt(m[2], m[1]), m
    };

function hm(r) {
    return !isNaN(r) && !isFinite(r)
}

function tk(r, e, t, i) {
    var a = 1 - r,
        n = i.dimensions[r];
    return hm(e[a]) && hm(t[a]) && e[r] === t[r] && i.getAxis(n).containData(e[r])
}

function sq(r, e) {
    if (r.type === "cartesian2d") {
        var t = e[0].coord,
            i = e[1].coord;
        if (t && i && (tk(1, t, i, r) || tk(0, t, i, r))) return !0
    }
    return fo(r, e[0]) && fo(r, e[1])
}

function bb(r, e, t, i, a) {
    var n = i.coordinateSystem,
        o = r.getItemModel(e),
        s, l = W(o.get("x"), a.getWidth()),
        u = W(o.get("y"), a.getHeight());
    if (!isNaN(l) && !isNaN(u)) s = [l, u];
    else {
        if (i.getMarkerPosition) s = i.getMarkerPosition(r.getValues(r.dimensions, e));
        else {
            var f = n.dimensions,
                p = r.get(f[0], e),
                c = r.get(f[1], e);
            s = n.dataToPoint([p, c])
        }
        if (Ei(n, "cartesian2d")) {
            var h = n.getAxis("x"),
                v = n.getAxis("y"),
                f = n.dimensions;
            hm(r.get(f[0], e)) ? s[0] = h.toGlobalCoord(h.getExtent()[t ? 0 : 1]) : hm(r.get(f[1], e)) && (s[1] = v.toGlobalCoord(v.getExtent()[t ? 0 : 1]))
        }
        isNaN(l) || (s[0] = l), isNaN(u) || (s[1] = u)
    }
    r.setItemLayout(e, s)
}
var lq = function(r) {
    L(e, r);

    function e() {
        var t = r !== null && r.apply(this, arguments) || this;
        return t.type = e.type, t
    }
    return e.prototype.updateTransform = function(t, i, a) {
        i.eachSeries(function(n) {
            var o = br.getMarkerModelFromSeries(n, "markLine");
            if (o) {
                var s = o.getData(),
                    l = cm(o).from,
                    u = cm(o).to;
                l.each(function(f) {
                    bb(l, f, !0, n, a), bb(u, f, !1, n, a)
                }), s.each(function(f) {
                    s.setItemLayout(f, [l.getItemLayout(f), u.getItemLayout(f)])
                }), this.markerGroupMap.get(n.id).updateLayout()
            }
        }, this)
    }, e.prototype.renderSeries = function(t, i, a, n) {
        var o = t.coordinateSystem,
            s = t.id,
            l = t.getData(),
            u = this.markerGroupMap,
            f = u.get(s) || u.set(s, new eu);
        this.group.add(f.group);
        var p = uq(o, t, i),
            c = p.from,
            h = p.to,
            v = p.line;
        cm(i).from = c, cm(i).to = h, i.setData(v);
        var d = i.get("symbol"),
            m = i.get("symbolSize"),
            g = i.get("symbolRotate"),
            y = i.get("symbolOffset");
        z(d) || (d = [d, d]), z(m) || (m = [m, m]), z(g) || (g = [g, g]), z(y) || (y = [y, y]), p.from.each(function(_) {
            x(c, _, !0), x(h, _, !1)
        }), v.each(function(_) {
            var S = v.getItemModel(_).getModel("lineStyle").getLineStyle();
            v.setItemLayout(_, [c.getItemLayout(_), h.getItemLayout(_)]), S.stroke == null && (S.stroke = c.getItemVisual(_, "style").fill), v.setItemVisual(_, {
                fromSymbolKeepAspect: c.getItemVisual(_, "symbolKeepAspect"),
                fromSymbolOffset: c.getItemVisual(_, "symbolOffset"),
                fromSymbolRotate: c.getItemVisual(_, "symbolRotate"),
                fromSymbolSize: c.getItemVisual(_, "symbolSize"),
                fromSymbol: c.getItemVisual(_, "symbol"),
                toSymbolKeepAspect: h.getItemVisual(_, "symbolKeepAspect"),
                toSymbolOffset: h.getItemVisual(_, "symbolOffset"),
                toSymbolRotate: h.getItemVisual(_, "symbolRotate"),
                toSymbolSize: h.getItemVisual(_, "symbolSize"),
                toSymbol: h.getItemVisual(_, "symbol"),
                style: S
            })
        }), f.updateData(v), p.line.eachItemGraphicEl(function(_) {
            et(_).dataModel = i, _.traverse(function(S) {
                et(S).dataModel = i
            })
        });

        function x(_, S, b) {
            var T = _.getItemModel(S);
            bb(_, S, b, t, n);
            var C = T.getModel("itemStyle").getItemStyle();
            C.fill == null && (C.fill = ya(l, "color")), _.setItemVisual(S, {
                symbolKeepAspect: T.get("symbolKeepAspect"),
                symbolOffset: ot(T.get("symbolOffset", !0), y[b ? 0 : 1]),
                symbolRotate: ot(T.get("symbolRotate", !0), g[b ? 0 : 1]),
                symbolSize: ot(T.get("symbolSize"), m[b ? 0 : 1]),
                symbol: ot(T.get("symbol", !0), d[b ? 0 : 1]),
                style: C
            })
        }
        this.markKeep(f), f.group.silent = i.get("silent") || t.get("silent")
    }, e.type = "markLine", e
}(yu);

function uq(r, e, t) {
    var i;
    r ? i = k(r && r.dimensions, function(u) {
        var f = e.getData().getDimensionInfo(e.getData().mapDimension(u)) || {};
        return O(O({}, f), {
            name: u,
            ordinalMeta: null
        })
    }) : i = [{
        name: "value",
        type: "float"
    }];
    var a = new se(i, t),
        n = new se(i, t),
        o = new se([], t),
        s = k(t.get("data"), rt(oq, e, r, t));
    r && (s = wt(s, rt(sq, r)));
    var l = fm(!!r, i);
    return a.initData(k(s, function(u) {
        return u[0]
    }), null, l), n.initData(k(s, function(u) {
        return u[1]
    }), null, l), o.initData(k(s, function(u) {
        return u[2]
    })), o.hasItemOption = !0, {
        from: a,
        to: n,
        line: o
    }
}
var ek = lq;

function wb(r) {
    r.registerComponentModel($z), r.registerComponentView(ek), r.registerPreprocessor(function(e) {
        zs(e.series, "markLine") && (e.markLine = e.markLine || {})
    })
}
var fq = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.createMarkerModelFromSeries = function(t, i, a) {
            return new e(t, i, a)
        }, e.type = "markArea", e.defaultOption = {
            z: 1,
            tooltip: {
                trigger: "item"
            },
            animation: !1,
            label: {
                show: !0,
                position: "top"
            },
            itemStyle: {
                borderWidth: 0
            },
            emphasis: {
                label: {
                    show: !0,
                    position: "top"
                }
            }
        }, e
    }(br),
    rk = fq;
var vm = lt(),
    pq = function(r, e, t, i) {
        var a = i[0],
            n = i[1];
        if (!(!a || !n)) {
            var o = uo(r, a),
                s = uo(r, n),
                l = o.coord,
                u = s.coord;
            l[0] = Kt(l[0], -1 / 0), l[1] = Kt(l[1], -1 / 0), u[0] = Kt(u[0], 1 / 0), u[1] = Kt(u[1], 1 / 0);
            var f = vo([{}, o, s]);
            return f.coord = [o.coord, s.coord], f.x0 = o.x, f.y0 = o.y, f.x1 = s.x, f.y1 = s.y, f
        }
    };

function dm(r) {
    return !isNaN(r) && !isFinite(r)
}

function ik(r, e, t, i) {
    var a = 1 - r;
    return dm(e[a]) && dm(t[a])
}

function cq(r, e) {
    var t = e.coord[0],
        i = e.coord[1],
        a = {
            coord: t,
            x: e.x0,
            y: e.y0
        },
        n = {
            coord: i,
            x: e.x1,
            y: e.y1
        };
    return Ei(r, "cartesian2d") ? t && i && (ik(1, t, i, r) || ik(0, t, i, r)) ? !0 : jz(r, a, n) : fo(r, a) || fo(r, n)
}

function ak(r, e, t, i, a) {
    var n = i.coordinateSystem,
        o = r.getItemModel(e),
        s, l = W(o.get(t[0]), a.getWidth()),
        u = W(o.get(t[1]), a.getHeight());
    if (!isNaN(l) && !isNaN(u)) s = [l, u];
    else {
        if (i.getMarkerPosition) {
            var f = r.getValues(["x0", "y0"], e),
                p = r.getValues(["x1", "y1"], e),
                c = n.clampData(f),
                h = n.clampData(p),
                v = [];
            t[0] === "x0" ? v[0] = c[0] > h[0] ? p[0] : f[0] : v[0] = c[0] > h[0] ? f[0] : p[0], t[1] === "y0" ? v[1] = c[1] > h[1] ? p[1] : f[1] : v[1] = c[1] > h[1] ? f[1] : p[1], s = i.getMarkerPosition(v, t, !0)
        } else {
            var d = r.get(t[0], e),
                m = r.get(t[1], e),
                g = [d, m];
            n.clampData && n.clampData(g, g), s = n.dataToPoint(g, !0)
        }
        if (Ei(n, "cartesian2d")) {
            var y = n.getAxis("x"),
                x = n.getAxis("y"),
                d = r.get(t[0], e),
                m = r.get(t[1], e);
            dm(d) ? s[0] = y.toGlobalCoord(y.getExtent()[t[0] === "x0" ? 0 : 1]) : dm(m) && (s[1] = x.toGlobalCoord(x.getExtent()[t[1] === "y0" ? 0 : 1]))
        }
        isNaN(l) || (s[0] = l), isNaN(u) || (s[1] = u)
    }
    return s
}
var nk = [
        ["x0", "y0"],
        ["x1", "y0"],
        ["x1", "y1"],
        ["x0", "y1"]
    ],
    hq = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.updateTransform = function(t, i, a) {
            i.eachSeries(function(n) {
                var o = br.getMarkerModelFromSeries(n, "markArea");
                if (o) {
                    var s = o.getData();
                    s.each(function(l) {
                        var u = k(nk, function(p) {
                            return ak(s, l, p, n, a)
                        });
                        s.setItemLayout(l, u);
                        var f = s.getItemGraphicEl(l);
                        f.setShape("points", u)
                    })
                }
            }, this)
        }, e.prototype.renderSeries = function(t, i, a, n) {
            var o = t.coordinateSystem,
                s = t.id,
                l = t.getData(),
                u = this.markerGroupMap,
                f = u.get(s) || u.set(s, {
                    group: new J
                });
            this.group.add(f.group), this.markKeep(f);
            var p = vq(o, t, i);
            i.setData(p), p.each(function(c) {
                var h = k(nk, function(C) {
                        return ak(p, c, C, t, n)
                    }),
                    v = o.getAxis("x").scale,
                    d = o.getAxis("y").scale,
                    m = v.getExtent(),
                    g = d.getExtent(),
                    y = [v.parse(p.get("x0", c)), v.parse(p.get("x1", c))],
                    x = [d.parse(p.get("y0", c)), d.parse(p.get("y1", c))];
                _e(y), _e(x);
                var _ = !(m[0] > y[1] || m[1] < y[0] || g[0] > x[1] || g[1] < x[0]),
                    S = !_;
                p.setItemLayout(c, {
                    points: h,
                    allClipped: S
                });
                var b = p.getItemModel(c).getModel("itemStyle").getItemStyle(),
                    T = ya(l, "color");
                b.fill || (b.fill = T, F(b.fill) && (b.fill = Sn(b.fill, .4))), b.stroke || (b.stroke = T), p.setItemVisual(c, "style", b)
            }), p.diff(vm(f).data).add(function(c) {
                var h = p.getItemLayout(c);
                if (!h.allClipped) {
                    var v = new oe({
                        shape: {
                            points: h.points
                        }
                    });
                    p.setItemGraphicEl(c, v), f.group.add(v)
                }
            }).update(function(c, h) {
                var v = vm(f).data.getItemGraphicEl(h),
                    d = p.getItemLayout(c);
                d.allClipped ? v && f.group.remove(v) : (v ? xt(v, {
                    shape: {
                        points: d.points
                    }
                }, i, c) : v = new oe({
                    shape: {
                        points: d.points
                    }
                }), p.setItemGraphicEl(c, v), f.group.add(v))
            }).remove(function(c) {
                var h = vm(f).data.getItemGraphicEl(c);
                f.group.remove(h)
            }).execute(), p.eachItemGraphicEl(function(c, h) {
                var v = p.getItemModel(h),
                    d = p.getItemVisual(h, "style");
                c.useStyle(p.getItemVisual(h, "style")), Xt(c, Ft(v), {
                    labelFetcher: i,
                    labelDataIndex: h,
                    defaultText: p.getName(h) || "",
                    inheritColor: F(d.fill) ? Sn(d.fill, 1) : "#000"
                }), te(c, v), Nt(c, null, null, v.get(["emphasis", "disabled"])), et(c).dataModel = i
            }), vm(f).data = p, f.group.silent = i.get("silent") || t.get("silent")
        }, e.type = "markArea", e
    }(yu);

function vq(r, e, t) {
    var i, a, n = ["x0", "y0", "x1", "y1"];
    if (r) {
        var o = k(r && r.dimensions, function(u) {
            var f = e.getData(),
                p = f.getDimensionInfo(f.mapDimension(u)) || {};
            return O(O({}, p), {
                name: u,
                ordinalMeta: null
            })
        });
        a = k(n, function(u, f) {
            return {
                name: u,
                type: o[f % 2].type
            }
        }), i = new se(a, t)
    } else a = [{
        name: "value",
        type: "float"
    }], i = new se(a, t);
    var s = k(t.get("data"), rt(pq, e, r, t));
    r && (s = wt(s, rt(cq, r)));
    var l = r ? function(u, f, p, c) {
        var h = u.coord[Math.floor(c / 2)][c % 2];
        return Ti(h, a[c])
    } : function(u, f, p, c) {
        return Ti(u.value, a[c])
    };
    return i.initData(s, null, l), i.hasItemOption = !0, i
}
var ok = hq;

function Tb(r) {
    r.registerComponentModel(rk), r.registerComponentView(ok), r.registerPreprocessor(function(e) {
        zs(e.series, "markArea") && (e.markArea = e.markArea || {})
    })
}
var dq = function(r, e) {
        if (e === "all") return {
            type: "all",
            title: r.getLocaleModel().get(["legend", "selector", "all"])
        };
        if (e === "inverse") return {
            type: "inverse",
            title: r.getLocaleModel().get(["legend", "selector", "inverse"])
        }
    },
    mq = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t.layoutMode = {
                type: "box",
                ignoreSize: !0
            }, t
        }
        return e.prototype.init = function(t, i, a) {
            this.mergeDefaultAndTheme(t, a), t.selected = t.selected || {}, this._updateSelector(t)
        }, e.prototype.mergeOption = function(t, i) {
            r.prototype.mergeOption.call(this, t, i), this._updateSelector(t)
        }, e.prototype._updateSelector = function(t) {
            var i = t.selector,
                a = this.ecModel;
            i === !0 && (i = t.selector = ["all", "inverse"]), z(i) && w(i, function(n, o) {
                F(n) && (n = {
                    type: n
                }), i[o] = nt(n, dq(a, n.type))
            })
        }, e.prototype.optionUpdated = function() {
            this._updateData(this.ecModel);
            var t = this._data;
            if (t[0] && this.get("selectedMode") === "single") {
                for (var i = !1, a = 0; a < t.length; a++) {
                    var n = t[a].get("name");
                    if (this.isSelected(n)) {
                        this.select(n), i = !0;
                        break
                    }
                }!i && this.select(t[0].get("name"))
            }
        }, e.prototype._updateData = function(t) {
            var i = [],
                a = [];
            t.eachRawSeries(function(l) {
                var u = l.name;
                a.push(u);
                var f;
                if (l.legendVisualProvider) {
                    var p = l.legendVisualProvider,
                        c = p.getAllNames();
                    t.isSeriesFiltered(l) || (a = a.concat(c)), c.length ? i = i.concat(c) : f = !0
                } else f = !0;
                f && nl(l) && i.push(l.name)
            }), this._availableNames = a;
            var n = this.get("data") || i,
                o = Y(),
                s = k(n, function(l) {
                    return (F(l) || vt(l)) && (l = {
                        name: l
                    }), o.get(l.name) ? null : (o.set(l.name, !0), new Dt(l, this, this.ecModel))
                }, this);
            this._data = wt(s, function(l) {
                return !!l
            })
        }, e.prototype.getData = function() {
            return this._data
        }, e.prototype.select = function(t) {
            var i = this.option.selected,
                a = this.get("selectedMode");
            if (a === "single") {
                var n = this._data;
                w(n, function(o) {
                    i[o.get("name")] = !1
                })
            }
            i[t] = !0
        }, e.prototype.unSelect = function(t) {
            this.get("selectedMode") !== "single" && (this.option.selected[t] = !1)
        }, e.prototype.toggleSelected = function(t) {
            var i = this.option.selected;
            i.hasOwnProperty(t) || (i[t] = !0), this[i[t] ? "unSelect" : "select"](t)
        }, e.prototype.allSelect = function() {
            var t = this._data,
                i = this.option.selected;
            w(t, function(a) {
                i[a.get("name", !0)] = !0
            })
        }, e.prototype.inverseSelect = function() {
            var t = this._data,
                i = this.option.selected;
            w(t, function(a) {
                var n = a.get("name", !0);
                i.hasOwnProperty(n) || (i[n] = !0), i[n] = !i[n]
            })
        }, e.prototype.isSelected = function(t) {
            var i = this.option.selected;
            return !(i.hasOwnProperty(t) && !i[t]) && at(this._availableNames, t) >= 0
        }, e.prototype.getOrient = function() {
            return this.get("orient") === "vertical" ? {
                index: 1,
                name: "vertical"
            } : {
                index: 0,
                name: "horizontal"
            }
        }, e.type = "legend.plain", e.dependencies = ["series"], e.defaultOption = {
            z: 4,
            show: !0,
            orient: "horizontal",
            left: "center",
            top: 0,
            align: "auto",
            backgroundColor: "rgba(0,0,0,0)",
            borderColor: "#ccc",
            borderRadius: 0,
            borderWidth: 0,
            padding: 5,
            itemGap: 10,
            itemWidth: 25,
            itemHeight: 14,
            symbolRotate: "inherit",
            symbolKeepAspect: !0,
            inactiveColor: "#ccc",
            inactiveBorderColor: "#ccc",
            inactiveBorderWidth: "auto",
            itemStyle: {
                color: "inherit",
                opacity: "inherit",
                borderColor: "inherit",
                borderWidth: "auto",
                borderCap: "inherit",
                borderJoin: "inherit",
                borderDashOffset: "inherit",
                borderMiterLimit: "inherit"
            },
            lineStyle: {
                width: "auto",
                color: "inherit",
                inactiveColor: "#ccc",
                inactiveWidth: 2,
                opacity: "inherit",
                type: "inherit",
                cap: "inherit",
                join: "inherit",
                dashOffset: "inherit",
                miterLimit: "inherit"
            },
            textStyle: {
                color: "#333"
            },
            selectedMode: !0,
            selector: !1,
            selectorLabel: {
                show: !0,
                borderRadius: 10,
                padding: [3, 5, 3, 5],
                fontSize: 12,
                fontFamily: "sans-serif",
                color: "#666",
                borderWidth: 1,
                borderColor: "#666"
            },
            emphasis: {
                selectorLabel: {
                    show: !0,
                    color: "#eee",
                    backgroundColor: "#666"
                }
            },
            selectorPosition: "auto",
            selectorItemGap: 7,
            selectorButtonGap: 10,
            tooltip: {
                show: !1
            }
        }, e
    }(yt),
    Fp = mq;
var xu = rt,
    Cb = w,
    mm = J,
    gq = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t.newlineDisabled = !1, t
        }
        return e.prototype.init = function() {
            this.group.add(this._contentGroup = new mm), this.group.add(this._selectorGroup = new mm), this._isFirstRender = !0
        }, e.prototype.getContentGroup = function() {
            return this._contentGroup
        }, e.prototype.getSelectorGroup = function() {
            return this._selectorGroup
        }, e.prototype.render = function(t, i, a) {
            var n = this._isFirstRender;
            if (this._isFirstRender = !1, this.resetInner(), !!t.get("show", !0)) {
                var o = t.get("align"),
                    s = t.get("orient");
                (!o || o === "auto") && (o = t.get("left") === "right" && s === "vertical" ? "right" : "left");
                var l = t.get("selector", !0),
                    u = t.get("selectorPosition", !0);
                l && (!u || u === "auto") && (u = s === "horizontal" ? "end" : "start"), this.renderInner(o, t, i, a, l, s, u);
                var f = t.getBoxLayoutParams(),
                    p = {
                        width: a.getWidth(),
                        height: a.getHeight()
                    },
                    c = t.get("padding"),
                    h = Ut(f, p, c),
                    v = this.layoutInner(t, o, h, n, l, u),
                    d = Ut(q({
                        width: v.width,
                        height: v.height
                    }, f), p, c);
                this.group.x = d.x - v.x, this.group.y = d.y - v.y, this.group.markRedraw(), this.group.add(this._backgroundEl = em(v, t))
            }
        }, e.prototype.resetInner = function() {
            this.getContentGroup().removeAll(), this._backgroundEl && this.group.remove(this._backgroundEl), this.getSelectorGroup().removeAll()
        }, e.prototype.renderInner = function(t, i, a, n, o, s, l) {
            var u = this.getContentGroup(),
                f = Y(),
                p = i.get("selectedMode"),
                c = [];
            a.eachRawSeries(function(h) {
                !h.get("legendHoverLink") && c.push(h.id)
            }), Cb(i.getData(), function(h, v) {
                var d = h.get("name");
                if (!this.newlineDisabled && (d === "" || d === `
`)) {
                    var m = new mm;
                    m.newline = !0, u.add(m);
                    return
                }
                var g = a.getSeriesByName(d)[0];
                if (!f.get(d))
                    if (g) {
                        var y = g.getData(),
                            x = y.getVisual("legendLineStyle") || {},
                            _ = y.getVisual("legendIcon"),
                            S = y.getVisual("style"),
                            b = this._createItem(g, d, v, h, i, t, x, S, _, p, n);
                        b.on("click", xu(sk, d, null, n, c)).on("mouseover", xu(Ab, g.name, null, n, c)).on("mouseout", xu(Db, g.name, null, n, c)), a.ssr && b.eachChild(function(T) {
                            var C = et(T);
                            C.seriesIndex = g.seriesIndex, C.dataIndex = v, C.ssrType = "legend"
                        }), f.set(d, !0)
                    } else a.eachRawSeries(function(T) {
                        if (!f.get(d) && T.legendVisualProvider) {
                            var C = T.legendVisualProvider;
                            if (!C.containName(d)) return;
                            var A = C.indexOfName(d),
                                D = C.getItemVisual(A, "style"),
                                M = C.getItemVisual(A, "legendIcon"),
                                I = Re(D.fill);
                            I && I[3] === 0 && (I[3] = .2, D = O(O({}, D), {
                                fill: Mr(I, "rgba")
                            }));
                            var E = this._createItem(T, d, v, h, i, t, {}, D, M, p, n);
                            E.on("click", xu(sk, null, d, n, c)).on("mouseover", xu(Ab, null, d, n, c)).on("mouseout", xu(Db, null, d, n, c)), a.ssr && E.eachChild(function(P) {
                                var R = et(P);
                                R.seriesIndex = T.seriesIndex, R.dataIndex = v, R.ssrType = "legend"
                            }), f.set(d, !0)
                        }
                    }, this)
            }, this), o && this._createSelector(o, i, n, s, l)
        }, e.prototype._createSelector = function(t, i, a, n, o) {
            var s = this.getSelectorGroup();
            Cb(t, function(u) {
                var f = u.type,
                    p = new dt({
                        style: {
                            x: 0,
                            y: 0,
                            align: "center",
                            verticalAlign: "middle"
                        },
                        onclick: function() {
                            a.dispatchAction({
                                type: f === "all" ? "legendAllSelect" : "legendInverseSelect",
                                legendId: i.id
                            })
                        }
                    });
                s.add(p);
                var c = i.getModel("selectorLabel"),
                    h = i.getModel(["emphasis", "selectorLabel"]);
                Xt(p, {
                    normal: c,
                    emphasis: h
                }, {
                    defaultText: u.title
                }), gi(p)
            })
        }, e.prototype._createItem = function(t, i, a, n, o, s, l, u, f, p, c) {
            var h = t.visualDrawType,
                v = o.get("itemWidth"),
                d = o.get("itemHeight"),
                m = o.isSelected(i),
                g = n.get("symbolRotate"),
                y = n.get("symbolKeepAspect"),
                x = n.get("icon");
            f = x || f || "roundRect";
            var _ = yq(f, n, l, u, h, m, c),
                S = new mm,
                b = n.getModel("textStyle");
            if (X(t.getLegendIcon) && (!x || x === "inherit")) S.add(t.getLegendIcon({
                itemWidth: v,
                itemHeight: d,
                icon: f,
                iconRotate: g,
                itemStyle: _.itemStyle,
                lineStyle: _.lineStyle,
                symbolKeepAspect: y
            }));
            else {
                var T = x === "inherit" && t.getData().getVisual("symbol") ? g === "inherit" ? t.getData().getVisual("symbolRotate") : g : 0;
                S.add(xq({
                    itemWidth: v,
                    itemHeight: d,
                    icon: f,
                    iconRotate: T,
                    itemStyle: _.itemStyle,
                    lineStyle: _.lineStyle,
                    symbolKeepAspect: y
                }))
            }
            var C = s === "left" ? v + 5 : -5,
                A = s,
                D = o.get("formatter"),
                M = i;
            F(D) && D ? M = D.replace("{name}", i ? ? "") : X(D) && (M = D(i));
            var I = m ? b.getTextColor() : n.get("inactiveColor");
            S.add(new dt({
                style: zt(b, {
                    text: M,
                    x: C,
                    y: d / 2,
                    fill: I,
                    align: A,
                    verticalAlign: "middle"
                }, {
                    inheritColor: I
                })
            }));
            var E = new ht({
                    shape: S.getBoundingRect(),
                    style: {
                        fill: "transparent"
                    }
                }),
                P = n.getModel("tooltip");
            return P.get("show") && _i({
                el: E,
                componentModel: o,
                itemName: i,
                itemTooltipOption: P.option
            }), S.add(E), S.eachChild(function(R) {
                R.silent = !0
            }), E.silent = !p, this.getContentGroup().add(S), gi(S), S.__legendDataIndex = a, S
        }, e.prototype.layoutInner = function(t, i, a, n, o, s) {
            var l = this.getContentGroup(),
                u = this.getSelectorGroup();
            Zi(t.get("orient"), l, t.get("itemGap"), a.width, a.height);
            var f = l.getBoundingRect(),
                p = [-f.x, -f.y];
            if (u.markRedraw(), l.markRedraw(), o) {
                Zi("horizontal", u, t.get("selectorItemGap", !0));
                var c = u.getBoundingRect(),
                    h = [-c.x, -c.y],
                    v = t.get("selectorButtonGap", !0),
                    d = t.getOrient().index,
                    m = d === 0 ? "width" : "height",
                    g = d === 0 ? "height" : "width",
                    y = d === 0 ? "y" : "x";
                s === "end" ? h[d] += f[m] + v : p[d] += c[m] + v, h[1 - d] += f[g] / 2 - c[g] / 2, u.x = h[0], u.y = h[1], l.x = p[0], l.y = p[1];
                var x = {
                    x: 0,
                    y: 0
                };
                return x[m] = f[m] + v + c[m], x[g] = Math.max(f[g], c[g]), x[y] = Math.min(0, c[y] + h[1 - d]), x
            } else return l.x = p[0], l.y = p[1], this.group.getBoundingRect()
        }, e.prototype.remove = function() {
            this.getContentGroup().removeAll(), this._isFirstRender = !0
        }, e.type = "legend.plain", e
    }(It);

function yq(r, e, t, i, a, n, o) {
    function s(m, g) {
        m.lineWidth === "auto" && (m.lineWidth = g.lineWidth > 0 ? 2 : 0), Cb(m, function(y, x) {
            m[x] === "inherit" && (m[x] = g[x])
        })
    }
    var l = e.getModel("itemStyle"),
        u = l.getItemStyle(),
        f = r.lastIndexOf("empty", 0) === 0 ? "fill" : "stroke",
        p = l.getShallow("decal");
    u.decal = !p || p === "inherit" ? i.decal : ji(p, o), u.fill === "inherit" && (u.fill = i[a]), u.stroke === "inherit" && (u.stroke = i[f]), u.opacity === "inherit" && (u.opacity = (a === "fill" ? i : t).opacity), s(u, i);
    var c = e.getModel("lineStyle"),
        h = c.getLineStyle();
    if (s(h, t), u.fill === "auto" && (u.fill = i.fill), u.stroke === "auto" && (u.stroke = i.fill), h.stroke === "auto" && (h.stroke = i.fill), !n) {
        var v = e.get("inactiveBorderWidth"),
            d = u[f];
        u.lineWidth = v === "auto" ? i.lineWidth > 0 && d ? 2 : 0 : u.lineWidth, u.fill = e.get("inactiveColor"), u.stroke = e.get("inactiveBorderColor"), h.stroke = c.get("inactiveColor"), h.lineWidth = c.get("inactiveWidth")
    }
    return {
        itemStyle: u,
        lineStyle: h
    }
}

function xq(r) {
    var e = r.icon || "roundRect",
        t = Vt(e, 0, 0, r.itemWidth, r.itemHeight, r.itemStyle.fill, r.symbolKeepAspect);
    return t.setStyle(r.itemStyle), t.rotation = (r.iconRotate || 0) * Math.PI / 180, t.setOrigin([r.itemWidth / 2, r.itemHeight / 2]), e.indexOf("empty") > -1 && (t.style.stroke = t.style.fill, t.style.fill = "#fff", t.style.lineWidth = 2), t
}

function sk(r, e, t, i) {
    Db(r, e, t, i), t.dispatchAction({
        type: "legendToggleSelect",
        name: r ? ? e
    }), Ab(r, e, t, i)
}

function lk(r) {
    for (var e = r.getZr().storage.getDisplayList(), t, i = 0, a = e.length; i < a && !(t = e[i].states.emphasis);) i++;
    return t && t.hoverLayer
}

function Ab(r, e, t, i) {
    lk(t) || t.dispatchAction({
        type: "highlight",
        seriesName: r,
        name: e,
        excludeSeriesId: i
    })
}

function Db(r, e, t, i) {
    lk(t) || t.dispatchAction({
        type: "downplay",
        seriesName: r,
        name: e,
        excludeSeriesId: i
    })
}
var gm = gq;

function Mb(r) {
    var e = r.findComponents({
        mainType: "legend"
    });
    e && e.length && r.filterSeries(function(t) {
        for (var i = 0; i < e.length; i++)
            if (!e[i].isSelected(t.name)) return !1;
        return !0
    })
}

function Gp(r, e, t) {
    var i = r === "allSelect" || r === "inverseSelect",
        a = {},
        n = [];
    t.eachComponent({
        mainType: "legend",
        query: e
    }, function(s) {
        i ? s[r]() : s[r](e.name), uk(s, a), n.push(s.componentIndex)
    });
    var o = {};
    return t.eachComponent("legend", function(s) {
        w(a, function(l, u) {
            s[l ? "select" : "unSelect"](u)
        }), uk(s, o)
    }), i ? {
        selected: o,
        legendIndex: n
    } : {
        name: e.name,
        selected: o
    }
}

function uk(r, e) {
    var t = e || {};
    return w(r.getData(), function(i) {
        var a = i.get("name");
        if (!(a === `
` || a === "")) {
            var n = r.isSelected(a);
            $(t, a) ? t[a] = t[a] && n : t[a] = n
        }
    }), t
}

function fk(r) {
    r.registerAction("legendToggleSelect", "legendselectchanged", rt(Gp, "toggleSelected")), r.registerAction("legendAllSelect", "legendselectall", rt(Gp, "allSelect")), r.registerAction("legendInverseSelect", "legendinverseselect", rt(Gp, "inverseSelect")), r.registerAction("legendSelect", "legendselected", rt(Gp, "select")), r.registerAction("legendUnSelect", "legendunselected", rt(Gp, "unSelect"))
}

function ym(r) {
    r.registerComponentModel(Fp), r.registerComponentView(gm), r.registerProcessor(r.PRIORITY.PROCESSOR.SERIES_FILTER, Mb), r.registerSubTypeDefaulter("legend", function() {
        return "plain"
    }), fk(r)
}
var _q = function(r) {
    L(e, r);

    function e() {
        var t = r !== null && r.apply(this, arguments) || this;
        return t.type = e.type, t
    }
    return e.prototype.setScrollDataIndex = function(t) {
        this.option.scrollDataIndex = t
    }, e.prototype.init = function(t, i, a) {
        var n = bi(t);
        r.prototype.init.call(this, t, i, a), pk(this, t, n)
    }, e.prototype.mergeOption = function(t, i) {
        r.prototype.mergeOption.call(this, t, i), pk(this, this.option, t)
    }, e.type = "legend.scroll", e.defaultOption = nr(Fp.defaultOption, {
        scrollDataIndex: 0,
        pageButtonItemGap: 5,
        pageButtonGap: null,
        pageButtonPosition: "end",
        pageFormatter: "{current}/{total}",
        pageIcons: {
            horizontal: ["M0,0L12,-10L12,10z", "M0,0L-12,-10L-12,10z"],
            vertical: ["M0,0L20,0L10,-20z", "M0,0L20,0L10,20z"]
        },
        pageIconColor: "#2f4554",
        pageIconInactiveColor: "#aaa",
        pageIconSize: 15,
        pageTextStyle: {
            color: "#333"
        },
        animationDurationUpdate: 800
    }), e
}(Fp);

function pk(r, e, t) {
    var i = r.getOrient(),
        a = [1, 1];
    a[i.index] = 0, Ur(e, t, {
        type: "box",
        ignoreSize: !!a
    })
}
var ck = _q;
var hk = J,
    Lb = ["width", "height"],
    Ib = ["x", "y"],
    Sq = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t.newlineDisabled = !0, t._currentIndex = 0, t
        }
        return e.prototype.init = function() {
            r.prototype.init.call(this), this.group.add(this._containerGroup = new hk), this._containerGroup.add(this.getContentGroup()), this.group.add(this._controllerGroup = new hk)
        }, e.prototype.resetInner = function() {
            r.prototype.resetInner.call(this), this._controllerGroup.removeAll(), this._containerGroup.removeClipPath(), this._containerGroup.__rectSize = null
        }, e.prototype.renderInner = function(t, i, a, n, o, s, l) {
            var u = this;
            r.prototype.renderInner.call(this, t, i, a, n, o, s, l);
            var f = this._controllerGroup,
                p = i.get("pageIconSize", !0),
                c = z(p) ? p : [p, p];
            v("pagePrev", 0);
            var h = i.getModel("pageTextStyle");
            f.add(new dt({
                name: "pageText",
                style: {
                    text: "xx/xx",
                    fill: h.getTextColor(),
                    font: h.getFont(),
                    verticalAlign: "middle",
                    align: "center"
                },
                silent: !0
            })), v("pageNext", 1);

            function v(d, m) {
                var g = d + "DataIndex",
                    y = Wi(i.get("pageIcons", !0)[i.getOrient().name][m], {
                        onclick: H(u._pageGo, u, g, i, n)
                    }, {
                        x: -c[0] / 2,
                        y: -c[1] / 2,
                        width: c[0],
                        height: c[1]
                    });
                y.name = d, f.add(y)
            }
        }, e.prototype.layoutInner = function(t, i, a, n, o, s) {
            var l = this.getSelectorGroup(),
                u = t.getOrient().index,
                f = Lb[u],
                p = Ib[u],
                c = Lb[1 - u],
                h = Ib[1 - u];
            o && Zi("horizontal", l, t.get("selectorItemGap", !0));
            var v = t.get("selectorButtonGap", !0),
                d = l.getBoundingRect(),
                m = [-d.x, -d.y],
                g = Q(a);
            o && (g[f] = a[f] - d[f] - v);
            var y = this._layoutContentAndController(t, n, g, u, f, c, h, p);
            if (o) {
                if (s === "end") m[u] += y[f] + v;
                else {
                    var x = d[f] + v;
                    m[u] -= x, y[p] -= x
                }
                y[f] += d[f] + v, m[1 - u] += y[h] + y[c] / 2 - d[c] / 2, y[c] = Math.max(y[c], d[c]), y[h] = Math.min(y[h], d[h] + m[1 - u]), l.x = m[0], l.y = m[1], l.markRedraw()
            }
            return y
        }, e.prototype._layoutContentAndController = function(t, i, a, n, o, s, l, u) {
            var f = this.getContentGroup(),
                p = this._containerGroup,
                c = this._controllerGroup;
            Zi(t.get("orient"), f, t.get("itemGap"), n ? a.width : null, n ? null : a.height), Zi("horizontal", c, t.get("pageButtonItemGap", !0));
            var h = f.getBoundingRect(),
                v = c.getBoundingRect(),
                d = this._showController = h[o] > a[o],
                m = [-h.x, -h.y];
            i || (m[n] = f[u]);
            var g = [0, 0],
                y = [-v.x, -v.y],
                x = ot(t.get("pageButtonGap", !0), t.get("itemGap", !0));
            if (d) {
                var _ = t.get("pageButtonPosition", !0);
                _ === "end" ? y[n] += a[o] - v[o] : g[n] += v[o] + x
            }
            y[1 - n] += h[s] / 2 - v[s] / 2, f.setPosition(m), p.setPosition(g), c.setPosition(y);
            var S = {
                x: 0,
                y: 0
            };
            if (S[o] = d ? a[o] : h[o], S[s] = Math.max(h[s], v[s]), S[l] = Math.min(0, v[l] + y[1 - n]), p.__rectSize = a[o], d) {
                var b = {
                    x: 0,
                    y: 0
                };
                b[o] = Math.max(a[o] - v[o] - x, 0), b[s] = S[s], p.setClipPath(new ht({
                    shape: b
                })), p.__rectSize = b[o]
            } else c.eachChild(function(C) {
                C.attr({
                    invisible: !0,
                    silent: !0
                })
            });
            var T = this._getPageInfo(t);
            return T.pageIndex != null && xt(f, {
                x: T.contentPosition[0],
                y: T.contentPosition[1]
            }, d ? t : null), this._updatePageInfoView(t, T), S
        }, e.prototype._pageGo = function(t, i, a) {
            var n = this._getPageInfo(i)[t];
            n != null && a.dispatchAction({
                type: "legendScroll",
                scrollDataIndex: n,
                legendId: i.id
            })
        }, e.prototype._updatePageInfoView = function(t, i) {
            var a = this._controllerGroup;
            w(["pagePrev", "pageNext"], function(f) {
                var p = f + "DataIndex",
                    c = i[p] != null,
                    h = a.childOfName(f);
                h && (h.setStyle("fill", c ? t.get("pageIconColor", !0) : t.get("pageIconInactiveColor", !0)), h.cursor = c ? "pointer" : "default")
            });
            var n = a.childOfName("pageText"),
                o = t.get("pageFormatter"),
                s = i.pageIndex,
                l = s != null ? s + 1 : 0,
                u = i.pageCount;
            n && o && n.setStyle("text", F(o) ? o.replace("{current}", l == null ? "" : l + "").replace("{total}", u == null ? "" : u + "") : o({
                current: l,
                total: u
            }))
        }, e.prototype._getPageInfo = function(t) {
            var i = t.get("scrollDataIndex", !0),
                a = this.getContentGroup(),
                n = this._containerGroup.__rectSize,
                o = t.getOrient().index,
                s = Lb[o],
                l = Ib[o],
                u = this._findTargetItemIndex(i),
                f = a.children(),
                p = f[u],
                c = f.length,
                h = c ? 1 : 0,
                v = {
                    contentPosition: [a.x, a.y],
                    pageCount: h,
                    pageIndex: h - 1,
                    pagePrevDataIndex: null,
                    pageNextDataIndex: null
                };
            if (!p) return v;
            var d = _(p);
            v.contentPosition[o] = -d.s;
            for (var m = u + 1, g = d, y = d, x = null; m <= c; ++m) x = _(f[m]), (!x && y.e > g.s + n || x && !S(x, g.s)) && (y.i > g.i ? g = y : g = x, g && (v.pageNextDataIndex == null && (v.pageNextDataIndex = g.i), ++v.pageCount)), y = x;
            for (var m = u - 1, g = d, y = d, x = null; m >= -1; --m) x = _(f[m]), (!x || !S(y, x.s)) && g.i < y.i && (y = g, v.pagePrevDataIndex == null && (v.pagePrevDataIndex = g.i), ++v.pageCount, ++v.pageIndex), g = x;
            return v;

            function _(b) {
                if (b) {
                    var T = b.getBoundingRect(),
                        C = T[l] + b[l];
                    return {
                        s: C,
                        e: C + T[s],
                        i: b.__legendDataIndex
                    }
                }
            }

            function S(b, T) {
                return b.e >= T && b.s <= T + n
            }
        }, e.prototype._findTargetItemIndex = function(t) {
            if (!this._showController) return 0;
            var i, a = this.getContentGroup(),
                n;
            return a.eachChild(function(o, s) {
                var l = o.__legendDataIndex;
                n == null && l != null && (n = s), l === t && (i = s)
            }), i ? ? n
        }, e.type = "legend.scroll", e
    }(gm),
    vk = Sq;

function Eb(r) {
    r.registerAction("legendScroll", "legendscroll", function(e, t) {
        var i = e.scrollDataIndex;
        i != null && t.eachComponent({
            mainType: "legend",
            subType: "scroll",
            query: e
        }, function(a) {
            a.setScrollDataIndex(i)
        })
    })
}

function dk(r) {
    _t(ym), r.registerComponentModel(ck), r.registerComponentView(vk), Eb(r)
}

function Pb(r) {
    _t(ym), _t(dk)
}
var bq = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.type = "dataZoom.inside", e.defaultOption = nr(oo.defaultOption, {
            disabled: !1,
            zoomLock: !1,
            zoomOnMouseWheel: !0,
            moveOnMouseMove: !0,
            moveOnMouseWheel: !1,
            preventDefaultMouseMove: !0
        }), e
    }(oo),
    mk = bq;
var Rb = lt();

function gk(r, e, t) {
    Rb(r).coordSysRecordMap.each(function(i) {
        var a = i.dataZoomInfoMap.get(e.uid);
        a && (a.getRange = t)
    })
}

function yk(r, e) {
    for (var t = Rb(r).coordSysRecordMap, i = t.keys(), a = 0; a < i.length; a++) {
        var n = i[a],
            o = t.get(n),
            s = o.dataZoomInfoMap;
        if (s) {
            var l = e.uid,
                u = s.get(l);
            u && (s.removeKey(l), s.keys().length || xk(t, o))
        }
    }
}

function xk(r, e) {
    if (e) {
        r.removeKey(e.model.uid);
        var t = e.controller;
        t && t.dispose()
    }
}

function wq(r, e) {
    var t = {
            model: e,
            containsPoint: rt(Cq, e),
            dispatchAction: rt(Tq, r),
            dataZoomInfoMap: null,
            controller: null
        },
        i = t.controller = new Da(r.getZr());
    return w(["pan", "zoom", "scrollMove"], function(a) {
        i.on(a, function(n) {
            var o = [];
            t.dataZoomInfoMap.each(function(s) {
                if (n.isAvailableBehavior(s.model.option)) {
                    var l = (s.getRange || {})[a],
                        u = l && l(s.dzReferCoordSysInfo, t.model.mainType, t.controller, n);
                    !s.model.get("disabled", !0) && u && o.push({
                        dataZoomId: s.model.id,
                        start: u[0],
                        end: u[1]
                    })
                }
            }), o.length && t.dispatchAction(o)
        })
    }), t
}

function Tq(r, e) {
    r.isDisposed() || r.dispatchAction({
        type: "dataZoom",
        animation: {
            easing: "cubicOut",
            duration: 100
        },
        batch: e
    })
}

function Cq(r, e, t, i) {
    return r.coordinateSystem.containPoint([t, i])
}

function Aq(r) {
    var e, t = "type_",
        i = {
            type_true: 2,
            type_move: 1,
            type_false: 0,
            type_undefined: -1
        },
        a = !0;
    return r.each(function(n) {
        var o = n.model,
            s = o.get("disabled", !0) ? !1 : o.get("zoomLock", !0) ? "move" : !0;
        i[t + s] > i[t + e] && (e = s), a = a && o.get("preventDefaultMouseMove", !0)
    }), {
        controlType: e,
        opt: {
            zoomOnMouseWheel: !0,
            moveOnMouseMove: !0,
            moveOnMouseWheel: !0,
            preventDefaultMouseMove: !!a
        }
    }
}

function _k(r) {
    r.registerProcessor(r.PRIORITY.PROCESSOR.FILTER, function(e, t) {
        var i = Rb(t),
            a = i.coordSysRecordMap || (i.coordSysRecordMap = Y());
        a.each(function(n) {
            n.dataZoomInfoMap = null
        }), e.eachComponent({
            mainType: "dataZoom",
            subType: "inside"
        }, function(n) {
            var o = $d(n);
            w(o.infoList, function(s) {
                var l = s.model.uid,
                    u = a.get(l) || a.set(l, wq(t, s.model)),
                    f = u.dataZoomInfoMap || (u.dataZoomInfoMap = Y());
                f.set(n.uid, {
                    dzReferCoordSysInfo: s,
                    model: n,
                    getRange: null
                })
            })
        }), a.each(function(n) {
            var o = n.controller,
                s, l = n.dataZoomInfoMap;
            if (l) {
                var u = l.keys()[0];
                u != null && (s = l.get(u))
            }
            if (!s) {
                xk(a, n);
                return
            }
            var f = Aq(l);
            o.enable(f.controlType, f.opt), o.setPointerChecker(n.containsPoint), Ci(n, "dispatchAction", s.model.get("throttle", !0), "fixRate")
        })
    })
}
var Mq = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = "dataZoom.inside", t
        }
        return e.prototype.render = function(t, i, a) {
            if (r.prototype.render.apply(this, arguments), t.noTarget()) {
                this._clear();
                return
            }
            this.range = t.getPercentRange(), gk(a, t, {
                pan: H(Nb.pan, this),
                zoom: H(Nb.zoom, this),
                scrollMove: H(Nb.scrollMove, this)
            })
        }, e.prototype.dispose = function() {
            this._clear(), r.prototype.dispose.apply(this, arguments)
        }, e.prototype._clear = function() {
            yk(this.api, this.dataZoomModel), this.range = null
        }, e.type = "dataZoom.inside", e
    }(du),
    Nb = {
        zoom: function(r, e, t, i) {
            var a = this.range,
                n = a.slice(),
                o = r.axisModels[0];
            if (o) {
                var s = Ob[e](null, [i.originX, i.originY], o, t, r),
                    l = (s.signal > 0 ? s.pixelStart + s.pixelLength - s.pixel : s.pixel - s.pixelStart) / s.pixelLength * (n[1] - n[0]) + n[0],
                    u = Math.max(1 / i.scale, 0);
                n[0] = (n[0] - l) * u + l, n[1] = (n[1] - l) * u + l;
                var f = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();
                if (Yr(0, n, [0, 100], 0, f.minSpan, f.maxSpan), this.range = n, a[0] !== n[0] || a[1] !== n[1]) return n
            }
        },
        pan: Sk(function(r, e, t, i, a, n) {
            var o = Ob[i]([n.oldX, n.oldY], [n.newX, n.newY], e, a, t);
            return o.signal * (r[1] - r[0]) * o.pixel / o.pixelLength
        }),
        scrollMove: Sk(function(r, e, t, i, a, n) {
            var o = Ob[i]([0, 0], [n.scrollDelta, n.scrollDelta], e, a, t);
            return o.signal * (r[1] - r[0]) * n.scrollDelta
        })
    };

function Sk(r) {
    return function(e, t, i, a) {
        var n = this.range,
            o = n.slice(),
            s = e.axisModels[0];
        if (s) {
            var l = r(o, s, e, t, i, a);
            if (Yr(l, o, [0, 100], "all"), this.range = o, n[0] !== o[0] || n[1] !== o[1]) return o
        }
    }
}
var Ob = {
        grid: function(r, e, t, i, a) {
            var n = t.axis,
                o = {},
                s = a.model.coordinateSystem.getRect();
            return r = r || [0, 0], n.dim === "x" ? (o.pixel = e[0] - r[0], o.pixelLength = s.width, o.pixelStart = s.x, o.signal = n.inverse ? 1 : -1) : (o.pixel = e[1] - r[1], o.pixelLength = s.height, o.pixelStart = s.y, o.signal = n.inverse ? -1 : 1), o
        },
        polar: function(r, e, t, i, a) {
            var n = t.axis,
                o = {},
                s = a.model.coordinateSystem,
                l = s.getRadiusAxis().getExtent(),
                u = s.getAngleAxis().getExtent();
            return r = r ? s.pointToCoord(r) : [0, 0], e = s.pointToCoord(e), t.mainType === "radiusAxis" ? (o.pixel = e[0] - r[0], o.pixelLength = l[1] - l[0], o.pixelStart = l[0], o.signal = n.inverse ? 1 : -1) : (o.pixel = e[1] - r[1], o.pixelLength = u[1] - u[0], o.pixelStart = u[0], o.signal = n.inverse ? -1 : 1), o
        },
        singleAxis: function(r, e, t, i, a) {
            var n = t.axis,
                o = a.model.coordinateSystem.getRect(),
                s = {};
            return r = r || [0, 0], n.orient === "horizontal" ? (s.pixel = e[0] - r[0], s.pixelLength = o.width, s.pixelStart = o.x, s.signal = n.inverse ? 1 : -1) : (s.pixel = e[1] - r[1], s.pixelLength = o.height, s.pixelStart = o.y, s.signal = n.inverse ? -1 : 1), s
        }
    },
    bk = Mq;

function Hp(r) {
    Ns(r), r.registerComponentModel(mk), r.registerComponentView(bk), _k(r)
}
var Lq = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.type = "dataZoom.slider", e.layoutMode = "box", e.defaultOption = nr(oo.defaultOption, {
            show: !0,
            right: "ph",
            top: "ph",
            width: "ph",
            height: "ph",
            left: null,
            bottom: null,
            borderColor: "#d2dbee",
            borderRadius: 3,
            backgroundColor: "rgba(47,69,84,0)",
            dataBackground: {
                lineStyle: {
                    color: "#d2dbee",
                    width: .5
                },
                areaStyle: {
                    color: "#d2dbee",
                    opacity: .2
                }
            },
            selectedDataBackground: {
                lineStyle: {
                    color: "#8fb0f7",
                    width: .5
                },
                areaStyle: {
                    color: "#8fb0f7",
                    opacity: .2
                }
            },
            fillerColor: "rgba(135,175,274,0.2)",
            handleIcon: "path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z",
            handleSize: "100%",
            handleStyle: {
                color: "#fff",
                borderColor: "#ACB8D1"
            },
            moveHandleSize: 7,
            moveHandleIcon: "path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z",
            moveHandleStyle: {
                color: "#D2DBEE",
                opacity: .7
            },
            showDetail: !0,
            showDataShadow: "auto",
            realtime: !0,
            zoomLock: !1,
            textStyle: {
                color: "#6E7079"
            },
            brushSelect: !0,
            brushStyle: {
                color: "rgba(135,175,274,0.15)"
            },
            emphasis: {
                handleLabel: {
                    show: !0
                },
                handleStyle: {
                    borderColor: "#8FB0F7"
                },
                moveHandleStyle: {
                    color: "#8FB0F7"
                }
            }
        }), e
    }(oo),
    wk = Lq;
var Wp = ht,
    Tk = 7,
    Iq = 1,
    zb = 30,
    Eq = 7,
    Yp = "horizontal",
    Ck = "vertical",
    Pq = 5,
    Rq = ["line", "bar", "candlestick", "scatter"],
    Nq = {
        easing: "cubicOut",
        duration: 100,
        delay: 0
    },
    Oq = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t._displayables = {}, t
        }
        return e.prototype.init = function(t, i) {
            this.api = i, this._onBrush = H(this._onBrush, this), this._onBrushEnd = H(this._onBrushEnd, this)
        }, e.prototype.render = function(t, i, a, n) {
            if (r.prototype.render.apply(this, arguments), Ci(this, "_dispatchZoomAction", t.get("throttle"), "fixRate"), this._orient = t.getOrient(), t.get("show") === !1) {
                this.group.removeAll();
                return
            }
            if (t.noTarget()) {
                this._clear(), this.group.removeAll();
                return
            }(!n || n.type !== "dataZoom" || n.from !== this.uid) && this._buildView(), this._updateView()
        }, e.prototype.dispose = function() {
            this._clear(), r.prototype.dispose.apply(this, arguments)
        }, e.prototype._clear = function() {
            rn(this, "_dispatchZoomAction");
            var t = this.api.getZr();
            t.off("mousemove", this._onBrush), t.off("mouseup", this._onBrushEnd)
        }, e.prototype._buildView = function() {
            var t = this.group;
            t.removeAll(), this._brushing = !1, this._displayables.brushRect = null, this._resetLocation(), this._resetInterval();
            var i = this._displayables.sliderGroup = new J;
            this._renderBackground(), this._renderHandle(), this._renderDataShadow(), t.add(i), this._positionGroup()
        }, e.prototype._resetLocation = function() {
            var t = this.dataZoomModel,
                i = this.api,
                a = t.get("brushSelect"),
                n = a ? Eq : 0,
                o = this._findCoordRect(),
                s = {
                    width: i.getWidth(),
                    height: i.getHeight()
                },
                l = this._orient === Yp ? {
                    right: s.width - o.x - o.width,
                    top: s.height - zb - Tk - n,
                    width: o.width,
                    height: zb
                } : {
                    right: Tk,
                    top: o.y,
                    width: zb,
                    height: o.height
                },
                u = bi(t.option);
            w(["right", "top", "width", "height"], function(p) {
                u[p] === "ph" && (u[p] = l[p])
            });
            var f = Ut(u, s);
            this._location = {
                x: f.x,
                y: f.y
            }, this._size = [f.width, f.height], this._orient === Ck && this._size.reverse()
        }, e.prototype._positionGroup = function() {
            var t = this.group,
                i = this._location,
                a = this._orient,
                n = this.dataZoomModel.getFirstTargetAxisModel(),
                o = n && n.get("inverse"),
                s = this._displayables.sliderGroup,
                l = (this._dataShadowInfo || {}).otherAxisInverse;
            s.attr(a === Yp && !o ? {
                scaleY: l ? 1 : -1,
                scaleX: 1
            } : a === Yp && o ? {
                scaleY: l ? 1 : -1,
                scaleX: -1
            } : a === Ck && !o ? {
                scaleY: l ? -1 : 1,
                scaleX: 1,
                rotation: Math.PI / 2
            } : {
                scaleY: l ? -1 : 1,
                scaleX: -1,
                rotation: Math.PI / 2
            });
            var u = t.getBoundingRect([s]);
            t.x = i.x - u.x, t.y = i.y - u.y, t.markRedraw()
        }, e.prototype._getViewExtent = function() {
            return [0, this._size[0]]
        }, e.prototype._renderBackground = function() {
            var t = this.dataZoomModel,
                i = this._size,
                a = this._displayables.sliderGroup,
                n = t.get("brushSelect");
            a.add(new Wp({
                silent: !0,
                shape: {
                    x: 0,
                    y: 0,
                    width: i[0],
                    height: i[1]
                },
                style: {
                    fill: t.get("backgroundColor")
                },
                z2: -40
            }));
            var o = new Wp({
                    shape: {
                        x: 0,
                        y: 0,
                        width: i[0],
                        height: i[1]
                    },
                    style: {
                        fill: "transparent"
                    },
                    z2: 0,
                    onclick: H(this._onClickPanel, this)
                }),
                s = this.api.getZr();
            n ? (o.on("mousedown", this._onBrushStart, this), o.cursor = "crosshair", s.on("mousemove", this._onBrush), s.on("mouseup", this._onBrushEnd)) : (s.off("mousemove", this._onBrush), s.off("mouseup", this._onBrushEnd)), a.add(o)
        }, e.prototype._renderDataShadow = function() {
            var t = this._dataShadowInfo = this._prepareDataShadowInfo();
            if (this._displayables.dataShadowSegs = [], !t) return;
            var i = this._size,
                a = this._shadowSize || [],
                n = t.series,
                o = n.getRawData(),
                s = n.getShadowDim && n.getShadowDim(),
                l = s && o.getDimensionInfo(s) ? n.getShadowDim() : t.otherDim;
            if (l == null) return;
            var u = this._shadowPolygonPts,
                f = this._shadowPolylinePts;
            if (o !== this._shadowData || l !== this._shadowDim || i[0] !== a[0] || i[1] !== a[1]) {
                var p = o.getDataExtent(l),
                    c = (p[1] - p[0]) * .3;
                p = [p[0] - c, p[1] + c];
                var h = [0, i[1]],
                    v = [0, i[0]],
                    d = [
                        [i[0], 0],
                        [0, 0]
                    ],
                    m = [],
                    g = v[1] / (o.count() - 1),
                    y = 0,
                    x = Math.round(o.count() / i[0]),
                    _;
                o.each([l], function(A, D) {
                    if (x > 0 && D % x) {
                        y += g;
                        return
                    }
                    var M = A == null || isNaN(A) || A === "",
                        I = M ? 0 : Rt(A, p, h, !0);
                    M && !_ && D ? (d.push([d[d.length - 1][0], 0]), m.push([m[m.length - 1][0], 0])) : !M && _ && (d.push([y, 0]), m.push([y, 0])), d.push([y, I]), m.push([y, I]), y += g, _ = M
                }), u = this._shadowPolygonPts = d, f = this._shadowPolylinePts = m
            }
            this._shadowData = o, this._shadowDim = l, this._shadowSize = [i[0], i[1]];
            var S = this.dataZoomModel;

            function b(A) {
                var D = S.getModel(A ? "selectedDataBackground" : "dataBackground"),
                    M = new J,
                    I = new oe({
                        shape: {
                            points: u
                        },
                        segmentIgnoreThreshold: 1,
                        style: D.getModel("areaStyle").getAreaStyle(),
                        silent: !0,
                        z2: -20
                    }),
                    E = new ae({
                        shape: {
                            points: f
                        },
                        segmentIgnoreThreshold: 1,
                        style: D.getModel("lineStyle").getLineStyle(),
                        silent: !0,
                        z2: -19
                    });
                return M.add(I), M.add(E), M
            }
            for (var T = 0; T < 3; T++) {
                var C = b(T === 1);
                this._displayables.sliderGroup.add(C), this._displayables.dataShadowSegs.push(C)
            }
        }, e.prototype._prepareDataShadowInfo = function() {
            var t = this.dataZoomModel,
                i = t.get("showDataShadow");
            if (i !== !1) {
                var a, n = this.ecModel;
                return t.eachTargetAxis(function(o, s) {
                    var l = t.getAxisProxy(o, s).getTargetSeriesModels();
                    w(l, function(u) {
                        if (!a && !(i !== !0 && at(Rq, u.get("type")) < 0)) {
                            var f = n.getComponent(ki(o), s).axis,
                                p = zq(o),
                                c, h = u.coordinateSystem;
                            p != null && h.getOtherAxis && (c = h.getOtherAxis(f).inverse), p = u.getData().mapDimension(p), a = {
                                thisAxis: f,
                                series: u,
                                thisDim: o,
                                otherDim: p,
                                otherAxisInverse: c
                            }
                        }
                    }, this)
                }, this), a
            }
        }, e.prototype._renderHandle = function() {
            var t = this.group,
                i = this._displayables,
                a = i.handles = [null, null],
                n = i.handleLabels = [null, null],
                o = this._displayables.sliderGroup,
                s = this._size,
                l = this.dataZoomModel,
                u = this.api,
                f = l.get("borderRadius") || 0,
                p = l.get("brushSelect"),
                c = i.filler = new Wp({
                    silent: p,
                    style: {
                        fill: l.get("fillerColor")
                    },
                    textConfig: {
                        position: "inside"
                    }
                });
            o.add(c), o.add(new Wp({
                silent: !0,
                subPixelOptimize: !0,
                shape: {
                    x: 0,
                    y: 0,
                    width: s[0],
                    height: s[1],
                    r: f
                },
                style: {
                    stroke: l.get("dataBackgroundColor") || l.get("borderColor"),
                    lineWidth: Iq,
                    fill: "rgba(0,0,0,0)"
                }
            })), w([0, 1], function(x) {
                var _ = l.get("handleIcon");
                !Vf[_] && _.indexOf("path://") < 0 && _.indexOf("image://") < 0 && (_ = "path://" + _);
                var S = Vt(_, -1, 0, 2, 2, null, !0);
                S.attr({
                    cursor: Ak(this._orient),
                    draggable: !0,
                    drift: H(this._onDragMove, this, x),
                    ondragend: H(this._onDragEnd, this),
                    onmouseover: H(this._showDataInfo, this, !0),
                    onmouseout: H(this._showDataInfo, this, !1),
                    z2: 5
                });
                var b = S.getBoundingRect(),
                    T = l.get("handleSize");
                this._handleHeight = W(T, this._size[1]), this._handleWidth = b.width / b.height * this._handleHeight, S.setStyle(l.getModel("handleStyle").getItemStyle()), S.style.strokeNoScale = !0, S.rectHover = !0, S.ensureState("emphasis").style = l.getModel(["emphasis", "handleStyle"]).getItemStyle(), gi(S);
                var C = l.get("handleColor");
                C != null && (S.style.fill = C), o.add(a[x] = S);
                var A = l.getModel("textStyle"),
                    D = l.get("handleLabel") || {},
                    M = D.show || !1;
                t.add(n[x] = new dt({
                    silent: !0,
                    invisible: !M,
                    style: zt(A, {
                        x: 0,
                        y: 0,
                        text: "",
                        verticalAlign: "middle",
                        align: "center",
                        fill: A.getTextColor(),
                        font: A.getFont()
                    }),
                    z2: 10
                }))
            }, this);
            var h = c;
            if (p) {
                var v = W(l.get("moveHandleSize"), s[1]),
                    d = i.moveHandle = new ht({
                        style: l.getModel("moveHandleStyle").getItemStyle(),
                        silent: !0,
                        shape: {
                            r: [0, 0, 2, 2],
                            y: s[1] - .5,
                            height: v
                        }
                    }),
                    m = v * .8,
                    g = i.moveHandleIcon = Vt(l.get("moveHandleIcon"), -m / 2, -m / 2, m, m, "#fff", !0);
                g.silent = !0, g.y = s[1] + v / 2 - .5, d.ensureState("emphasis").style = l.getModel(["emphasis", "moveHandleStyle"]).getItemStyle();
                var y = Math.min(s[1] / 2, Math.max(v, 10));
                h = i.moveZone = new ht({
                    invisible: !0,
                    shape: {
                        y: s[1] - y,
                        height: v + y
                    }
                }), h.on("mouseover", function() {
                    u.enterEmphasis(d)
                }).on("mouseout", function() {
                    u.leaveEmphasis(d)
                }), o.add(d), o.add(g), o.add(h)
            }
            h.attr({
                draggable: !0,
                cursor: Ak(this._orient),
                drift: H(this._onDragMove, this, "all"),
                ondragstart: H(this._showDataInfo, this, !0),
                ondragend: H(this._onDragEnd, this),
                onmouseover: H(this._showDataInfo, this, !0),
                onmouseout: H(this._showDataInfo, this, !1)
            })
        }, e.prototype._resetInterval = function() {
            var t = this._range = this.dataZoomModel.getPercentRange(),
                i = this._getViewExtent();
            this._handleEnds = [Rt(t[0], [0, 100], i, !0), Rt(t[1], [0, 100], i, !0)]
        }, e.prototype._updateInterval = function(t, i) {
            var a = this.dataZoomModel,
                n = this._handleEnds,
                o = this._getViewExtent(),
                s = a.findRepresentativeAxisProxy().getMinMaxSpan(),
                l = [0, 100];
            Yr(i, n, o, a.get("zoomLock") ? "all" : t, s.minSpan != null ? Rt(s.minSpan, l, o, !0) : null, s.maxSpan != null ? Rt(s.maxSpan, l, o, !0) : null);
            var u = this._range,
                f = this._range = _e([Rt(n[0], o, l, !0), Rt(n[1], o, l, !0)]);
            return !u || u[0] !== f[0] || u[1] !== f[1]
        }, e.prototype._updateView = function(t) {
            var i = this._displayables,
                a = this._handleEnds,
                n = _e(a.slice()),
                o = this._size;
            w([0, 1], function(h) {
                var v = i.handles[h],
                    d = this._handleHeight;
                v.attr({
                    scaleX: d / 2,
                    scaleY: d / 2,
                    x: a[h] + (h ? -1 : 1),
                    y: o[1] / 2 - d / 2
                })
            }, this), i.filler.setShape({
                x: n[0],
                y: 0,
                width: n[1] - n[0],
                height: o[1]
            });
            var s = {
                x: n[0],
                width: n[1] - n[0]
            };
            i.moveHandle && (i.moveHandle.setShape(s), i.moveZone.setShape(s), i.moveZone.getBoundingRect(), i.moveHandleIcon && i.moveHandleIcon.attr("x", s.x + s.width / 2));
            for (var l = i.dataShadowSegs, u = [0, n[0], n[1], o[0]], f = 0; f < l.length; f++) {
                var p = l[f],
                    c = p.getClipPath();
                c || (c = new ht, p.setClipPath(c)), c.setShape({
                    x: u[f],
                    y: 0,
                    width: u[f + 1] - u[f],
                    height: o[1]
                })
            }
            this._updateDataInfo(t)
        }, e.prototype._updateDataInfo = function(t) {
            var i = this.dataZoomModel,
                a = this._displayables,
                n = a.handleLabels,
                o = this._orient,
                s = ["", ""];
            if (i.get("showDetail")) {
                var l = i.findRepresentativeAxisProxy();
                if (l) {
                    var u = l.getAxisModel().axis,
                        f = this._range,
                        p = t ? l.calculateDataWindow({
                            start: f[0],
                            end: f[1]
                        }).valueWindow : l.getDataValueWindow();
                    s = [this._formatLabel(p[0], u), this._formatLabel(p[1], u)]
                }
            }
            var c = _e(this._handleEnds.slice());
            h.call(this, 0), h.call(this, 1);

            function h(v) {
                var d = ti(a.handles[v].parent, this.group),
                    m = rs(v === 0 ? "right" : "left", d),
                    g = this._handleWidth / 2 + Pq,
                    y = Je([c[v] + (v === 0 ? -g : g), this._size[1] / 2], d);
                n[v].setStyle({
                    x: y[0],
                    y: y[1],
                    verticalAlign: o === Yp ? "middle" : m,
                    align: o === Yp ? m : "center",
                    text: s[v]
                })
            }
        }, e.prototype._formatLabel = function(t, i) {
            var a = this.dataZoomModel,
                n = a.get("labelFormatter"),
                o = a.get("labelPrecision");
            (o == null || o === "auto") && (o = i.getPixelPrecision());
            var s = t == null || isNaN(t) ? "" : i.type === "category" || i.type === "time" ? i.scale.getLabel({
                value: Math.round(t)
            }) : t.toFixed(Math.min(o, 20));
            return X(n) ? n(t, s) : F(n) ? n.replace("{value}", s) : s
        }, e.prototype._showDataInfo = function(t) {
            var i = this.dataZoomModel.get("handleLabel") || {},
                a = i.show || !1,
                n = this.dataZoomModel.getModel(["emphasis", "handleLabel"]),
                o = n.get("show") || !1,
                s = t || this._dragging ? o : a,
                l = this._displayables,
                u = l.handleLabels;
            u[0].attr("invisible", !s), u[1].attr("invisible", !s), l.moveHandle && this.api[s ? "enterEmphasis" : "leaveEmphasis"](l.moveHandle, 1)
        }, e.prototype._onDragMove = function(t, i, a, n) {
            this._dragging = !0, Dr(n.event);
            var o = this._displayables.sliderGroup.getLocalTransform(),
                s = Je([i, a], o, !0),
                l = this._updateInterval(t, s[0]),
                u = this.dataZoomModel.get("realtime");
            this._updateView(!u), l && u && this._dispatchZoomAction(!0)
        }, e.prototype._onDragEnd = function() {
            this._dragging = !1, this._showDataInfo(!1);
            var t = this.dataZoomModel.get("realtime");
            !t && this._dispatchZoomAction(!1)
        }, e.prototype._onClickPanel = function(t) {
            var i = this._size,
                a = this._displayables.sliderGroup.transformCoordToLocal(t.offsetX, t.offsetY);
            if (!(a[0] < 0 || a[0] > i[0] || a[1] < 0 || a[1] > i[1])) {
                var n = this._handleEnds,
                    o = (n[0] + n[1]) / 2,
                    s = this._updateInterval("all", a[0] - o);
                this._updateView(), s && this._dispatchZoomAction(!1)
            }
        }, e.prototype._onBrushStart = function(t) {
            var i = t.offsetX,
                a = t.offsetY;
            this._brushStart = new St(i, a), this._brushing = !0, this._brushStartTime = +new Date
        }, e.prototype._onBrushEnd = function(t) {
            if (this._brushing) {
                var i = this._displayables.brushRect;
                if (this._brushing = !1, !!i) {
                    i.attr("ignore", !0);
                    var a = i.shape,
                        n = +new Date;
                    if (!(n - this._brushStartTime < 200 && Math.abs(a.width) < 5)) {
                        var o = this._getViewExtent(),
                            s = [0, 100];
                        this._range = _e([Rt(a.x, o, s, !0), Rt(a.x + a.width, o, s, !0)]), this._handleEnds = [a.x, a.x + a.width], this._updateView(), this._dispatchZoomAction(!1)
                    }
                }
            }
        }, e.prototype._onBrush = function(t) {
            this._brushing && (Dr(t.event), this._updateBrushRect(t.offsetX, t.offsetY))
        }, e.prototype._updateBrushRect = function(t, i) {
            var a = this._displayables,
                n = this.dataZoomModel,
                o = a.brushRect;
            o || (o = a.brushRect = new Wp({
                silent: !0,
                style: n.getModel("brushStyle").getItemStyle()
            }), a.sliderGroup.add(o)), o.attr("ignore", !1);
            var s = this._brushStart,
                l = this._displayables.sliderGroup,
                u = l.transformCoordToLocal(t, i),
                f = l.transformCoordToLocal(s.x, s.y),
                p = this._size;
            u[0] = Math.max(Math.min(p[0], u[0]), 0), o.setShape({
                x: f[0],
                y: 0,
                width: u[0] - f[0],
                height: p[1]
            })
        }, e.prototype._dispatchZoomAction = function(t) {
            var i = this._range;
            this.api.dispatchAction({
                type: "dataZoom",
                from: this.uid,
                dataZoomId: this.dataZoomModel.id,
                animation: t ? Nq : null,
                start: i[0],
                end: i[1]
            })
        }, e.prototype._findCoordRect = function() {
            var t, i = $d(this.dataZoomModel).infoList;
            if (!t && i.length) {
                var a = i[0].model.coordinateSystem;
                t = a.getRect && a.getRect()
            }
            if (!t) {
                var n = this.api.getWidth(),
                    o = this.api.getHeight();
                t = {
                    x: n * .2,
                    y: o * .2,
                    width: n * .6,
                    height: o * .6
                }
            }
            return t
        }, e.type = "dataZoom.slider", e
    }(du);

function zq(r) {
    var e = {
        x: "y",
        y: "x",
        radius: "angle",
        angle: "radius"
    };
    return e[r]
}

function Ak(r) {
    return r === "vertical" ? "ns-resize" : "ew-resize"
}
var Dk = Oq;

function Zp(r) {
    r.registerComponentModel(wk), r.registerComponentView(Dk), Ns(r)
}

function kb(r) {
    _t(Hp), _t(Zp)
}
var kq = {
        get: function(r, e, t) {
            var i = Q((Uq[r] || {})[e]);
            return t && z(i) ? i[i.length - 1] : i
        }
    },
    Uq = {
        color: {
            active: ["#006edd", "#e0ffff"],
            inactive: ["rgba(0,0,0,0)"]
        },
        colorHue: {
            active: [0, 360],
            inactive: [0, 0]
        },
        colorSaturation: {
            active: [.3, 1],
            inactive: [0, 0]
        },
        colorLightness: {
            active: [.9, .5],
            inactive: [0, 0]
        },
        colorAlpha: {
            active: [.3, 1],
            inactive: [0, 0]
        },
        opacity: {
            active: [.3, 1],
            inactive: [0, 0]
        },
        symbol: {
            active: ["circle", "roundRect", "diamond"],
            inactive: ["none"]
        },
        symbolSize: {
            active: [10, 50],
            inactive: [0, 0]
        }
    },
    xm = kq;
var Mk = he.mapVisual,
    Vq = he.eachVisual,
    Bq = z,
    Lk = w,
    Fq = _e,
    Gq = Rt,
    Hq = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t.stateList = ["inRange", "outOfRange"], t.replacableOptionKeys = ["inRange", "outOfRange", "target", "controller", "color"], t.layoutMode = {
                type: "box",
                ignoreSize: !0
            }, t.dataBound = [-1 / 0, 1 / 0], t.targetVisuals = {}, t.controllerVisuals = {}, t
        }
        return e.prototype.init = function(t, i, a) {
            this.mergeDefaultAndTheme(t, a)
        }, e.prototype.optionUpdated = function(t, i) {
            var a = this.option;
            !i && nm(a, t, this.replacableOptionKeys), this.textStyleModel = this.getModel("textStyle"), this.resetItemSize(), this.completeVisualOption()
        }, e.prototype.resetVisual = function(t) {
            var i = this.stateList;
            t = H(t, this), this.controllerVisuals = Vp(this.option.controller, i, t), this.targetVisuals = Vp(this.option.target, i, t)
        }, e.prototype.getItemSymbol = function() {
            return null
        }, e.prototype.getTargetSeriesIndices = function() {
            var t = this.option.seriesIndex,
                i = [];
            return t == null || t === "all" ? this.ecModel.eachSeries(function(a, n) {
                i.push(n)
            }) : i = Pt(t), i
        }, e.prototype.eachTargetSeries = function(t, i) {
            w(this.getTargetSeriesIndices(), function(a) {
                var n = this.ecModel.getSeriesByIndex(a);
                n && t.call(i, n)
            }, this)
        }, e.prototype.isTargetSeries = function(t) {
            var i = !1;
            return this.eachTargetSeries(function(a) {
                a === t && (i = !0)
            }), i
        }, e.prototype.formatValueText = function(t, i, a) {
            var n = this.option,
                o = n.precision,
                s = this.dataBound,
                l = n.formatter,
                u;
            a = a || ["<", ">"], z(t) && (t = t.slice(), u = !0);
            var f = i ? t : u ? [p(t[0]), p(t[1])] : p(t);
            if (F(l)) return l.replace("{value}", u ? f[0] : f).replace("{value2}", u ? f[1] : f);
            if (X(l)) return u ? l(t[0], t[1]) : l(t);
            if (u) return t[0] === s[0] ? a[0] + " " + f[1] : t[1] === s[1] ? a[1] + " " + f[0] : f[0] + " - " + f[1];
            return f;

            function p(c) {
                return c === s[0] ? "min" : c === s[1] ? "max" : (+c).toFixed(Math.min(o, 20))
            }
        }, e.prototype.resetExtent = function() {
            var t = this.option,
                i = Fq([t.min, t.max]);
            this._dataExtent = i
        }, e.prototype.getDataDimensionIndex = function(t) {
            var i = this.option.dimension;
            if (i != null) return t.getDimensionIndex(i);
            for (var a = t.dimensions, n = a.length - 1; n >= 0; n--) {
                var o = a[n],
                    s = t.getDimensionInfo(o);
                if (!s.isCalculationCoord) return s.storeDimIndex
            }
        }, e.prototype.getExtent = function() {
            return this._dataExtent.slice()
        }, e.prototype.completeVisualOption = function() {
            var t = this.ecModel,
                i = this.option,
                a = {
                    inRange: i.inRange,
                    outOfRange: i.outOfRange
                },
                n = i.target || (i.target = {}),
                o = i.controller || (i.controller = {});
            nt(n, a), nt(o, a);
            var s = this.isCategory();
            l.call(this, n), l.call(this, o), u.call(this, n, "inRange", "outOfRange"), f.call(this, o);

            function l(p) {
                Bq(i.color) && !p.inRange && (p.inRange = {
                    color: i.color.slice().reverse()
                }), p.inRange = p.inRange || {
                    color: t.get("gradientColor")
                }
            }

            function u(p, c, h) {
                var v = p[c],
                    d = p[h];
                v && !d && (d = p[h] = {}, Lk(v, function(m, g) {
                    if (he.isValidType(g)) {
                        var y = xm.get(g, "inactive", s);
                        y != null && (d[g] = y, g === "color" && !d.hasOwnProperty("opacity") && !d.hasOwnProperty("colorAlpha") && (d.opacity = [0, 0]))
                    }
                }))
            }

            function f(p) {
                var c = (p.inRange || {}).symbol || (p.outOfRange || {}).symbol,
                    h = (p.inRange || {}).symbolSize || (p.outOfRange || {}).symbolSize,
                    v = this.get("inactiveColor"),
                    d = this.getItemSymbol(),
                    m = d || "roundRect";
                Lk(this.stateList, function(g) {
                    var y = this.itemSize,
                        x = p[g];
                    x || (x = p[g] = {
                        color: s ? v : [v]
                    }), x.symbol == null && (x.symbol = c && Q(c) || (s ? m : [m])), x.symbolSize == null && (x.symbolSize = h && Q(h) || (s ? y[0] : [y[0], y[0]])), x.symbol = Mk(x.symbol, function(b) {
                        return b === "none" ? m : b
                    });
                    var _ = x.symbolSize;
                    if (_ != null) {
                        var S = -1 / 0;
                        Vq(_, function(b) {
                            b > S && (S = b)
                        }), x.symbolSize = Mk(_, function(b) {
                            return Gq(b, [0, S], [0, y[0]], !0)
                        })
                    }
                }, this)
            }
        }, e.prototype.resetItemSize = function() {
            this.itemSize = [parseFloat(this.get("itemWidth")), parseFloat(this.get("itemHeight"))]
        }, e.prototype.isCategory = function() {
            return !!this.option.categories
        }, e.prototype.setSelected = function(t) {}, e.prototype.getSelected = function() {
            return null
        }, e.prototype.getValueState = function(t) {
            return null
        }, e.prototype.getVisualMeta = function(t) {
            return null
        }, e.type = "visualMap", e.dependencies = ["series"], e.defaultOption = {
            show: !0,
            z: 4,
            seriesIndex: "all",
            min: 0,
            max: 200,
            left: 0,
            right: null,
            top: null,
            bottom: 0,
            itemWidth: null,
            itemHeight: null,
            inverse: !1,
            orient: "vertical",
            backgroundColor: "rgba(0,0,0,0)",
            borderColor: "#ccc",
            contentColor: "#5793f3",
            inactiveColor: "#aaa",
            borderWidth: 0,
            padding: 5,
            textGap: 10,
            precision: 0,
            textStyle: {
                color: "#333"
            }
        }, e
    }(yt),
    _u = Hq;
var Ik = [20, 140],
    Wq = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.optionUpdated = function(t, i) {
            r.prototype.optionUpdated.apply(this, arguments), this.resetExtent(), this.resetVisual(function(a) {
                a.mappingMethod = "linear", a.dataExtent = this.getExtent()
            }), this._resetRange()
        }, e.prototype.resetItemSize = function() {
            r.prototype.resetItemSize.apply(this, arguments);
            var t = this.itemSize;
            (t[0] == null || isNaN(t[0])) && (t[0] = Ik[0]), (t[1] == null || isNaN(t[1])) && (t[1] = Ik[1])
        }, e.prototype._resetRange = function() {
            var t = this.getExtent(),
                i = this.option.range;
            !i || i.auto ? (t.auto = 1, this.option.range = t) : z(i) && (i[0] > i[1] && i.reverse(), i[0] = Math.max(i[0], t[0]), i[1] = Math.min(i[1], t[1]))
        }, e.prototype.completeVisualOption = function() {
            r.prototype.completeVisualOption.apply(this, arguments), w(this.stateList, function(t) {
                var i = this.option.controller[t].symbolSize;
                i && i[0] !== i[1] && (i[0] = i[1] / 3)
            }, this)
        }, e.prototype.setSelected = function(t) {
            this.option.range = t.slice(), this._resetRange()
        }, e.prototype.getSelected = function() {
            var t = this.getExtent(),
                i = _e((this.get("range") || []).slice());
            return i[0] > t[1] && (i[0] = t[1]), i[1] > t[1] && (i[1] = t[1]), i[0] < t[0] && (i[0] = t[0]), i[1] < t[0] && (i[1] = t[0]), i
        }, e.prototype.getValueState = function(t) {
            var i = this.option.range,
                a = this.getExtent();
            return (i[0] <= a[0] || i[0] <= t) && (i[1] >= a[1] || t <= i[1]) ? "inRange" : "outOfRange"
        }, e.prototype.findTargetDataIndices = function(t) {
            var i = [];
            return this.eachTargetSeries(function(a) {
                var n = [],
                    o = a.getData();
                o.each(this.getDataDimensionIndex(o), function(s, l) {
                    t[0] <= s && s <= t[1] && n.push(l)
                }, this), i.push({
                    seriesId: a.id,
                    dataIndex: n
                })
            }, this), i
        }, e.prototype.getVisualMeta = function(t) {
            var i = Ek(this, "outOfRange", this.getExtent()),
                a = Ek(this, "inRange", this.option.range.slice()),
                n = [];

            function o(h, v) {
                n.push({
                    value: h,
                    color: t(h, v)
                })
            }
            for (var s = 0, l = 0, u = a.length, f = i.length; l < f && (!a.length || i[l] <= a[0]); l++) i[l] < a[s] && o(i[l], "outOfRange");
            for (var p = 1; s < u; s++, p = 0) p && n.length && o(a[s], "outOfRange"), o(a[s], "inRange");
            for (var p = 1; l < f; l++)(!a.length || a[a.length - 1] < i[l]) && (p && (n.length && o(n[n.length - 1].value, "outOfRange"), p = 0), o(i[l], "outOfRange"));
            var c = n.length;
            return {
                stops: n,
                outerColors: [c ? n[0].color : "transparent", c ? n[c - 1].color : "transparent"]
            }
        }, e.type = "visualMap.continuous", e.defaultOption = nr(_u.defaultOption, {
            align: "auto",
            calculable: !1,
            hoverLink: !0,
            realtime: !0,
            handleIcon: "path://M-11.39,9.77h0a3.5,3.5,0,0,1-3.5,3.5h-22a3.5,3.5,0,0,1-3.5-3.5h0a3.5,3.5,0,0,1,3.5-3.5h22A3.5,3.5,0,0,1-11.39,9.77Z",
            handleSize: "120%",
            handleStyle: {
                borderColor: "#fff",
                borderWidth: 1
            },
            indicatorIcon: "circle",
            indicatorSize: "50%",
            indicatorStyle: {
                borderColor: "#fff",
                borderWidth: 2,
                shadowBlur: 2,
                shadowOffsetX: 1,
                shadowOffsetY: 1,
                shadowColor: "rgba(0,0,0,0.2)"
            }
        }), e
    }(_u);

function Ek(r, e, t) {
    if (t[0] === t[1]) return t.slice();
    for (var i = 200, a = (t[1] - t[0]) / i, n = t[0], o = [], s = 0; s <= i && n < t[1]; s++) o.push(n), n += a;
    return o.push(t[1]), o
}
var Pk = Wq;
var Yq = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t.autoPositionValues = {
                left: 1,
                right: 1,
                top: 1,
                bottom: 1
            }, t
        }
        return e.prototype.init = function(t, i) {
            this.ecModel = t, this.api = i
        }, e.prototype.render = function(t, i, a, n) {
            if (this.visualMapModel = t, t.get("show") === !1) {
                this.group.removeAll();
                return
            }
            this.doRender(t, i, a, n)
        }, e.prototype.renderBackground = function(t) {
            var i = this.visualMapModel,
                a = ri(i.get("padding") || 0),
                n = t.getBoundingRect();
            t.add(new ht({
                z2: -1,
                silent: !0,
                shape: {
                    x: n.x - a[3],
                    y: n.y - a[0],
                    width: n.width + a[3] + a[1],
                    height: n.height + a[0] + a[2]
                },
                style: {
                    fill: i.get("backgroundColor"),
                    stroke: i.get("borderColor"),
                    lineWidth: i.get("borderWidth")
                }
            }))
        }, e.prototype.getControllerVisual = function(t, i, a) {
            a = a || {};
            var n = a.forceState,
                o = this.visualMapModel,
                s = {};
            if (i === "color") {
                var l = o.get("contentColor");
                s.color = l
            }

            function u(h) {
                return s[h]
            }

            function f(h, v) {
                s[h] = v
            }
            var p = o.controllerVisuals[n || o.getValueState(t)],
                c = he.prepareVisualTypes(p);
            return w(c, function(h) {
                var v = p[h];
                a.convertOpacityToAlpha && h === "opacity" && (h = "colorAlpha", v = p.__alphaForOpacity), he.dependsOn(h, i) && v && v.applyVisual(t, u, f)
            }), s[i]
        }, e.prototype.positionGroup = function(t) {
            var i = this.visualMapModel,
                a = this.api;
            On(t, i.getBoxLayoutParams(), {
                width: a.getWidth(),
                height: a.getHeight()
            })
        }, e.prototype.doRender = function(t, i, a, n) {}, e.type = "visualMap", e
    }(It),
    _m = Yq;
var Rk = [
    ["left", "right", "width"],
    ["top", "bottom", "height"]
];

function Sm(r, e, t) {
    var i = r.option,
        a = i.align;
    if (a != null && a !== "auto") return a;
    for (var n = {
            width: e.getWidth(),
            height: e.getHeight()
        }, o = i.orient === "horizontal" ? 1 : 0, s = Rk[o], l = [0, null, 10], u = {}, f = 0; f < 3; f++) u[Rk[1 - o][f]] = l[f], u[s[f]] = f === 2 ? t[0] : i[s[f]];
    var p = [
            ["x", "width", 3],
            ["y", "height", 0]
        ][o],
        c = Ut(u, n, i.padding);
    return s[(c.margin[p[2]] || 0) + c[p[0]] + c[p[1]] * .5 < n[p[1]] * .5 ? 0 : 1]
}

function Su(r, e) {
    return w(r || [], function(t) {
        t.dataIndex != null && (t.dataIndexInside = t.dataIndex, t.dataIndex = null), t.highlightKey = "visualMap" + (e ? e.componentIndex : "")
    }), r
}
var Ia = Rt,
    Zq = w,
    Ok = Math.min,
    Ub = Math.max,
    Xq = 12,
    qq = 6,
    Kq = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t._shapes = {}, t._dataInterval = [], t._handleEnds = [], t._hoverLinkDataIndices = [], t
        }
        return e.prototype.init = function(t, i) {
            r.prototype.init.call(this, t, i), this._hoverLinkFromSeriesMouseOver = H(this._hoverLinkFromSeriesMouseOver, this), this._hideIndicator = H(this._hideIndicator, this)
        }, e.prototype.doRender = function(t, i, a, n) {
            (!n || n.type !== "selectDataRange" || n.from !== this.uid) && this._buildView()
        }, e.prototype._buildView = function() {
            this.group.removeAll();
            var t = this.visualMapModel,
                i = this.group;
            this._orient = t.get("orient"), this._useHandle = t.get("calculable"), this._resetInterval(), this._renderBar(i);
            var a = t.get("text");
            this._renderEndsText(i, a, 0), this._renderEndsText(i, a, 1), this._updateView(!0), this.renderBackground(i), this._updateView(), this._enableHoverLinkToSeries(), this._enableHoverLinkFromSeries(), this.positionGroup(i)
        }, e.prototype._renderEndsText = function(t, i, a) {
            if (i) {
                var n = i[1 - a];
                n = n != null ? n + "" : "";
                var o = this.visualMapModel,
                    s = o.get("textGap"),
                    l = o.itemSize,
                    u = this._shapes.mainGroup,
                    f = this._applyTransform([l[0] / 2, a === 0 ? -s : l[1] + s], u),
                    p = this._applyTransform(a === 0 ? "bottom" : "top", u),
                    c = this._orient,
                    h = this.visualMapModel.textStyleModel;
                this.group.add(new dt({
                    style: zt(h, {
                        x: f[0],
                        y: f[1],
                        verticalAlign: c === "horizontal" ? "middle" : p,
                        align: c === "horizontal" ? p : "center",
                        text: n
                    })
                }))
            }
        }, e.prototype._renderBar = function(t) {
            var i = this.visualMapModel,
                a = this._shapes,
                n = i.itemSize,
                o = this._orient,
                s = this._useHandle,
                l = Sm(i, this.api, n),
                u = a.mainGroup = this._createBarGroup(l),
                f = new J;
            u.add(f), f.add(a.outOfRange = zk()), f.add(a.inRange = zk(null, s ? Uk(this._orient) : null, H(this._dragHandle, this, "all", !1), H(this._dragHandle, this, "all", !0))), f.setClipPath(new ht({
                shape: {
                    x: 0,
                    y: 0,
                    width: n[0],
                    height: n[1],
                    r: 3
                }
            }));
            var p = i.textStyleModel.getTextRect("\u56FD"),
                c = Ub(p.width, p.height);
            s && (a.handleThumbs = [], a.handleLabels = [], a.handleLabelPoints = [], this._createHandle(i, u, 0, n, c, o), this._createHandle(i, u, 1, n, c, o)), this._createIndicator(i, u, n, c, o), t.add(u)
        }, e.prototype._createHandle = function(t, i, a, n, o, s) {
            var l = H(this._dragHandle, this, a, !1),
                u = H(this._dragHandle, this, a, !0),
                f = Xe(t.get("handleSize"), n[0]),
                p = Vt(t.get("handleIcon"), -f / 2, -f / 2, f, f, null, !0),
                c = Uk(this._orient);
            p.attr({
                cursor: c,
                draggable: !0,
                drift: l,
                ondragend: u,
                onmousemove: function(g) {
                    Dr(g.event)
                }
            }), p.x = n[0] / 2, p.useStyle(t.getModel("handleStyle").getItemStyle()), p.setStyle({
                strokeNoScale: !0,
                strokeFirst: !0
            }), p.style.lineWidth *= 2, p.ensureState("emphasis").style = t.getModel(["emphasis", "handleStyle"]).getItemStyle(), Wa(p, !0), i.add(p);
            var h = this.visualMapModel.textStyleModel,
                v = new dt({
                    cursor: c,
                    draggable: !0,
                    drift: l,
                    onmousemove: function(g) {
                        Dr(g.event)
                    },
                    ondragend: u,
                    style: zt(h, {
                        x: 0,
                        y: 0,
                        text: ""
                    })
                });
            v.ensureState("blur").style = {
                opacity: .1
            }, v.stateTransition = {
                duration: 200
            }, this.group.add(v);
            var d = [f, 0],
                m = this._shapes;
            m.handleThumbs[a] = p, m.handleLabelPoints[a] = d, m.handleLabels[a] = v
        }, e.prototype._createIndicator = function(t, i, a, n, o) {
            var s = Xe(t.get("indicatorSize"), a[0]),
                l = Vt(t.get("indicatorIcon"), -s / 2, -s / 2, s, s, null, !0);
            l.attr({
                cursor: "move",
                invisible: !0,
                silent: !0,
                x: a[0] / 2
            });
            var u = t.getModel("indicatorStyle").getItemStyle();
            if (l instanceof Zt) {
                var f = l.style;
                l.useStyle(O({
                    image: f.image,
                    x: f.x,
                    y: f.y,
                    width: f.width,
                    height: f.height
                }, u))
            } else l.useStyle(u);
            i.add(l);
            var p = this.visualMapModel.textStyleModel,
                c = new dt({
                    silent: !0,
                    invisible: !0,
                    style: zt(p, {
                        x: 0,
                        y: 0,
                        text: ""
                    })
                });
            this.group.add(c);
            var h = [(o === "horizontal" ? n / 2 : qq) + a[0] / 2, 0],
                v = this._shapes;
            v.indicator = l, v.indicatorLabel = c, v.indicatorLabelPoint = h, this._firstShowIndicator = !0
        }, e.prototype._dragHandle = function(t, i, a, n) {
            if (this._useHandle) {
                if (this._dragging = !i, !i) {
                    var o = this._applyTransform([a, n], this._shapes.mainGroup, !0);
                    this._updateInterval(t, o[1]), this._hideIndicator(), this._updateView()
                }
                i === !this.visualMapModel.get("realtime") && this.api.dispatchAction({
                    type: "selectDataRange",
                    from: this.uid,
                    visualMapId: this.visualMapModel.id,
                    selected: this._dataInterval.slice()
                }), i ? !this._hovering && this._clearHoverLinkToSeries() : kk(this.visualMapModel) && this._doHoverLinkToSeries(this._handleEnds[t], !1)
            }
        }, e.prototype._resetInterval = function() {
            var t = this.visualMapModel,
                i = this._dataInterval = t.getSelected(),
                a = t.getExtent(),
                n = [0, t.itemSize[1]];
            this._handleEnds = [Ia(i[0], a, n, !0), Ia(i[1], a, n, !0)]
        }, e.prototype._updateInterval = function(t, i) {
            i = i || 0;
            var a = this.visualMapModel,
                n = this._handleEnds,
                o = [0, a.itemSize[1]];
            Yr(i, n, o, t, 0);
            var s = a.getExtent();
            this._dataInterval = [Ia(n[0], o, s, !0), Ia(n[1], o, s, !0)]
        }, e.prototype._updateView = function(t) {
            var i = this.visualMapModel,
                a = i.getExtent(),
                n = this._shapes,
                o = [0, i.itemSize[1]],
                s = t ? o : this._handleEnds,
                l = this._createBarVisual(this._dataInterval, a, s, "inRange"),
                u = this._createBarVisual(a, a, o, "outOfRange");
            n.inRange.setStyle({
                fill: l.barColor
            }).setShape("points", l.barPoints), n.outOfRange.setStyle({
                fill: u.barColor
            }).setShape("points", u.barPoints), this._updateHandle(s, l)
        }, e.prototype._createBarVisual = function(t, i, a, n) {
            var o = {
                    forceState: n,
                    convertOpacityToAlpha: !0
                },
                s = this._makeColorGradient(t, o),
                l = [this.getControllerVisual(t[0], "symbolSize", o), this.getControllerVisual(t[1], "symbolSize", o)],
                u = this._createBarPoints(a, l);
            return {
                barColor: new yi(0, 0, 0, 1, s),
                barPoints: u,
                handlesColor: [s[0].color, s[s.length - 1].color]
            }
        }, e.prototype._makeColorGradient = function(t, i) {
            var a = 100,
                n = [],
                o = (t[1] - t[0]) / a;
            n.push({
                color: this.getControllerVisual(t[0], "color", i),
                offset: 0
            });
            for (var s = 1; s < a; s++) {
                var l = t[0] + o * s;
                if (l > t[1]) break;
                n.push({
                    color: this.getControllerVisual(l, "color", i),
                    offset: s / a
                })
            }
            return n.push({
                color: this.getControllerVisual(t[1], "color", i),
                offset: 1
            }), n
        }, e.prototype._createBarPoints = function(t, i) {
            var a = this.visualMapModel.itemSize;
            return [
                [a[0] - i[0], t[0]],
                [a[0], t[0]],
                [a[0], t[1]],
                [a[0] - i[1], t[1]]
            ]
        }, e.prototype._createBarGroup = function(t) {
            var i = this._orient,
                a = this.visualMapModel.get("inverse");
            return new J(i === "horizontal" && !a ? {
                scaleX: t === "bottom" ? 1 : -1,
                rotation: Math.PI / 2
            } : i === "horizontal" && a ? {
                scaleX: t === "bottom" ? -1 : 1,
                rotation: -Math.PI / 2
            } : i === "vertical" && !a ? {
                scaleX: t === "left" ? 1 : -1,
                scaleY: -1
            } : {
                scaleX: t === "left" ? 1 : -1
            })
        }, e.prototype._updateHandle = function(t, i) {
            if (this._useHandle) {
                var a = this._shapes,
                    n = this.visualMapModel,
                    o = a.handleThumbs,
                    s = a.handleLabels,
                    l = n.itemSize,
                    u = n.getExtent(),
                    f = this._applyTransform("left", a.mainGroup);
                Zq([0, 1], function(p) {
                    var c = o[p];
                    c.setStyle("fill", i.handlesColor[p]), c.y = t[p];
                    var h = Ia(t[p], [0, l[1]], u, !0),
                        v = this.getControllerVisual(h, "symbolSize");
                    c.scaleX = c.scaleY = v / l[0], c.x = l[0] - v / 2;
                    var d = Je(a.handleLabelPoints[p], ti(c, this.group));
                    if (this._orient === "horizontal") {
                        var m = f === "left" || f === "top" ? (l[0] - v) / 2 : (l[0] - v) / -2;
                        d[1] += m
                    }
                    s[p].setStyle({
                        x: d[0],
                        y: d[1],
                        text: n.formatValueText(this._dataInterval[p]),
                        verticalAlign: "middle",
                        align: this._orient === "vertical" ? this._applyTransform("left", a.mainGroup) : "center"
                    })
                }, this)
            }
        }, e.prototype._showIndicator = function(t, i, a, n) {
            var o = this.visualMapModel,
                s = o.getExtent(),
                l = o.itemSize,
                u = [0, l[1]],
                f = this._shapes,
                p = f.indicator;
            if (p) {
                p.attr("invisible", !1);
                var c = {
                        convertOpacityToAlpha: !0
                    },
                    h = this.getControllerVisual(t, "color", c),
                    v = this.getControllerVisual(t, "symbolSize"),
                    d = Ia(t, s, u, !0),
                    m = l[0] - v / 2,
                    g = {
                        x: p.x,
                        y: p.y
                    };
                p.y = d, p.x = m;
                var y = Je(f.indicatorLabelPoint, ti(p, this.group)),
                    x = f.indicatorLabel;
                x.attr("invisible", !1);
                var _ = this._applyTransform("left", f.mainGroup),
                    S = this._orient,
                    b = S === "horizontal";
                x.setStyle({
                    text: (a || "") + o.formatValueText(i),
                    verticalAlign: b ? _ : "middle",
                    align: b ? "center" : _
                });
                var T = {
                        x: m,
                        y: d,
                        style: {
                            fill: h
                        }
                    },
                    C = {
                        style: {
                            x: y[0],
                            y: y[1]
                        }
                    };
                if (o.ecModel.isAnimationEnabled() && !this._firstShowIndicator) {
                    var A = {
                        duration: 100,
                        easing: "cubicInOut",
                        additive: !0
                    };
                    p.x = g.x, p.y = g.y, p.animateTo(T, A), x.animateTo(C, A)
                } else p.attr(T), x.attr(C);
                this._firstShowIndicator = !1;
                var D = this._shapes.handleLabels;
                if (D)
                    for (var M = 0; M < D.length; M++) this.api.enterBlur(D[M])
            }
        }, e.prototype._enableHoverLinkToSeries = function() {
            var t = this;
            this._shapes.mainGroup.on("mousemove", function(i) {
                if (t._hovering = !0, !t._dragging) {
                    var a = t.visualMapModel.itemSize,
                        n = t._applyTransform([i.offsetX, i.offsetY], t._shapes.mainGroup, !0, !0);
                    n[1] = Ok(Ub(0, n[1]), a[1]), t._doHoverLinkToSeries(n[1], 0 <= n[0] && n[0] <= a[0])
                }
            }).on("mouseout", function() {
                t._hovering = !1, !t._dragging && t._clearHoverLinkToSeries()
            })
        }, e.prototype._enableHoverLinkFromSeries = function() {
            var t = this.api.getZr();
            this.visualMapModel.option.hoverLink ? (t.on("mouseover", this._hoverLinkFromSeriesMouseOver, this), t.on("mouseout", this._hideIndicator, this)) : this._clearHoverLinkFromSeries()
        }, e.prototype._doHoverLinkToSeries = function(t, i) {
            var a = this.visualMapModel,
                n = a.itemSize;
            if (a.option.hoverLink) {
                var o = [0, n[1]],
                    s = a.getExtent();
                t = Ok(Ub(o[0], t), o[1]);
                var l = jq(a, s, o),
                    u = [t - l, t + l],
                    f = Ia(t, o, s, !0),
                    p = [Ia(u[0], o, s, !0), Ia(u[1], o, s, !0)];
                u[0] < o[0] && (p[0] = -1 / 0), u[1] > o[1] && (p[1] = 1 / 0), i && (p[0] === -1 / 0 ? this._showIndicator(f, p[1], "< ", l) : p[1] === 1 / 0 ? this._showIndicator(f, p[0], "> ", l) : this._showIndicator(f, f, "\u2248 ", l));
                var c = this._hoverLinkDataIndices,
                    h = [];
                (i || kk(a)) && (h = this._hoverLinkDataIndices = a.findTargetDataIndices(p));
                var v = ST(c, h);
                this._dispatchHighDown("downplay", Su(v[0], a)), this._dispatchHighDown("highlight", Su(v[1], a))
            }
        }, e.prototype._hoverLinkFromSeriesMouseOver = function(t) {
            var i;
            if (qi(t.target, function(l) {
                    var u = et(l);
                    if (u.dataIndex != null) return i = u, !0
                }, !0), !!i) {
                var a = this.ecModel.getSeriesByIndex(i.seriesIndex),
                    n = this.visualMapModel;
                if (n.isTargetSeries(a)) {
                    var o = a.getData(i.dataType),
                        s = o.getStore().get(n.getDataDimensionIndex(o), i.dataIndex);
                    isNaN(s) || this._showIndicator(s, s)
                }
            }
        }, e.prototype._hideIndicator = function() {
            var t = this._shapes;
            t.indicator && t.indicator.attr("invisible", !0), t.indicatorLabel && t.indicatorLabel.attr("invisible", !0);
            var i = this._shapes.handleLabels;
            if (i)
                for (var a = 0; a < i.length; a++) this.api.leaveBlur(i[a])
        }, e.prototype._clearHoverLinkToSeries = function() {
            this._hideIndicator();
            var t = this._hoverLinkDataIndices;
            this._dispatchHighDown("downplay", Su(t, this.visualMapModel)), t.length = 0
        }, e.prototype._clearHoverLinkFromSeries = function() {
            this._hideIndicator();
            var t = this.api.getZr();
            t.off("mouseover", this._hoverLinkFromSeriesMouseOver), t.off("mouseout", this._hideIndicator)
        }, e.prototype._applyTransform = function(t, i, a, n) {
            var o = ti(i, n ? null : this.group);
            return z(t) ? Je(t, o, a) : rs(t, o, a)
        }, e.prototype._dispatchHighDown = function(t, i) {
            i && i.length && this.api.dispatchAction({
                type: t,
                batch: i
            })
        }, e.prototype.dispose = function() {
            this._clearHoverLinkFromSeries(), this._clearHoverLinkToSeries()
        }, e.type = "visualMap.continuous", e
    }(_m);

function zk(r, e, t, i) {
    return new oe({
        shape: {
            points: r
        },
        draggable: !!t,
        cursor: e,
        drift: t,
        onmousemove: function(a) {
            Dr(a.event)
        },
        ondragend: i
    })
}

function jq(r, e, t) {
    var i = Xq / 2,
        a = r.get("hoverLinkDataSize");
    return a && (i = Ia(a, e, t, !0) / 2), i
}

function kk(r) {
    var e = r.get("hoverLinkOnHandle");
    return !!(e ? ? r.get("realtime"))
}

function Uk(r) {
    return r === "vertical" ? "ns-resize" : "ew-resize"
}
var Vk = Kq;
var Bk = {
        type: "selectDataRange",
        event: "dataRangeSelected",
        update: "update"
    },
    Fk = function(r, e) {
        e.eachComponent({
            mainType: "visualMap",
            query: r
        }, function(t) {
            t.setSelected(r.selected)
        })
    };
var Gk = [{
    createOnAllSeries: !0,
    reset: function(r, e) {
        var t = [];
        return e.eachComponent("visualMap", function(i) {
            var a = r.pipelineContext;
            !i.isTargetSeries(r) || a && a.large || t.push(Dz(i.stateList, i.targetVisuals, H(i.getValueState, i), i.getDataDimensionIndex(r.getData())))
        }), t
    }
}, {
    createOnAllSeries: !0,
    reset: function(r, e) {
        var t = r.getData(),
            i = [];
        e.eachComponent("visualMap", function(a) {
            if (a.isTargetSeries(r)) {
                var n = a.getVisualMeta(H(Jq, null, r, a)) || {
                        stops: [],
                        outerColors: []
                    },
                    o = a.getDataDimensionIndex(t);
                o >= 0 && (n.dimension = o, i.push(n))
            }
        }), r.getData().setVisual("visualMeta", i)
    }
}];

function Jq(r, e, t, i) {
    for (var a = e.targetVisuals[i], n = he.prepareVisualTypes(a), o = {
            color: ya(r.getData(), "color")
        }, s = 0, l = n.length; s < l; s++) {
        var u = n[s],
            f = a[u === "opacity" ? "__alphaForOpacity" : u];
        f && f.applyVisual(t, p, c)
    }
    return o.color;

    function p(h) {
        return o[h]
    }

    function c(h, v) {
        o[h] = v
    }
}
var Hk = w;

function Vb(r) {
    var e = r && r.visualMap;
    z(e) || (e = e ? [e] : []), Hk(e, function(t) {
        if (t) {
            bu(t, "splitList") && !bu(t, "pieces") && (t.pieces = t.splitList, delete t.splitList);
            var i = t.pieces;
            i && z(i) && Hk(i, function(a) {
                j(a) && (bu(a, "start") && !bu(a, "min") && (a.min = a.start), bu(a, "end") && !bu(a, "max") && (a.max = a.end))
            })
        }
    })
}

function bu(r, e) {
    return r && r.hasOwnProperty && r.hasOwnProperty(e)
}
var Wk = !1;

function Xp(r) {
    Wk || (Wk = !0, r.registerSubTypeDefaulter("visualMap", function(e) {
        return !e.categories && (!(e.pieces ? e.pieces.length > 0 : e.splitNumber > 0) || e.calculable) ? "continuous" : "piecewise"
    }), r.registerAction(Bk, Fk), w(Gk, function(e) {
        r.registerVisual(r.PRIORITY.VISUAL.COMPONENT, e)
    }), r.registerPreprocessor(Vb))
}

function qp(r) {
    r.registerComponentModel(Pk), r.registerComponentView(Vk), Xp(r)
}
var Qq = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t._pieceList = [], t
        }
        return e.prototype.optionUpdated = function(t, i) {
            r.prototype.optionUpdated.apply(this, arguments), this.resetExtent();
            var a = this._mode = this._determineMode();
            this._pieceList = [], $q[this._mode].call(this, this._pieceList), this._resetSelected(t, i);
            var n = this.option.categories;
            this.resetVisual(function(o, s) {
                a === "categories" ? (o.mappingMethod = "category", o.categories = Q(n)) : (o.dataExtent = this.getExtent(), o.mappingMethod = "piecewise", o.pieceList = k(this._pieceList, function(l) {
                    return l = Q(l), s !== "inRange" && (l.visual = null), l
                }))
            })
        }, e.prototype.completeVisualOption = function() {
            var t = this.option,
                i = {},
                a = he.listVisualTypes(),
                n = this.isCategory();
            w(t.pieces, function(s) {
                w(a, function(l) {
                    s.hasOwnProperty(l) && (i[l] = 1)
                })
            }), w(i, function(s, l) {
                var u = !1;
                w(this.stateList, function(f) {
                    u = u || o(t, f, l) || o(t.target, f, l)
                }, this), !u && w(this.stateList, function(f) {
                    (t[f] || (t[f] = {}))[l] = xm.get(l, f === "inRange" ? "active" : "inactive", n)
                })
            }, this);

            function o(s, l, u) {
                return s && s[l] && s[l].hasOwnProperty(u)
            }
            r.prototype.completeVisualOption.apply(this, arguments)
        }, e.prototype._resetSelected = function(t, i) {
            var a = this.option,
                n = this._pieceList,
                o = (i ? a : t).selected || {};
            if (a.selected = o, w(n, function(l, u) {
                    var f = this.getSelectedMapKey(l);
                    o.hasOwnProperty(f) || (o[f] = !0)
                }, this), a.selectedMode === "single") {
                var s = !1;
                w(n, function(l, u) {
                    var f = this.getSelectedMapKey(l);
                    o[f] && (s ? o[f] = !1 : s = !0)
                }, this)
            }
        }, e.prototype.getItemSymbol = function() {
            return this.get("itemSymbol")
        }, e.prototype.getSelectedMapKey = function(t) {
            return this._mode === "categories" ? t.value + "" : t.index + ""
        }, e.prototype.getPieceList = function() {
            return this._pieceList
        }, e.prototype._determineMode = function() {
            var t = this.option;
            return t.pieces && t.pieces.length > 0 ? "pieces" : this.option.categories ? "categories" : "splitNumber"
        }, e.prototype.setSelected = function(t) {
            this.option.selected = Q(t)
        }, e.prototype.getValueState = function(t) {
            var i = he.findPieceIndex(t, this._pieceList);
            return i != null && this.option.selected[this.getSelectedMapKey(this._pieceList[i])] ? "inRange" : "outOfRange"
        }, e.prototype.findTargetDataIndices = function(t) {
            var i = [],
                a = this._pieceList;
            return this.eachTargetSeries(function(n) {
                var o = [],
                    s = n.getData();
                s.each(this.getDataDimensionIndex(s), function(l, u) {
                    var f = he.findPieceIndex(l, a);
                    f === t && o.push(u)
                }, this), i.push({
                    seriesId: n.id,
                    dataIndex: o
                })
            }, this), i
        }, e.prototype.getRepresentValue = function(t) {
            var i;
            if (this.isCategory()) i = t.value;
            else if (t.value != null) i = t.value;
            else {
                var a = t.interval || [];
                i = a[0] === -1 / 0 && a[1] === 1 / 0 ? 0 : (a[0] + a[1]) / 2
            }
            return i
        }, e.prototype.getVisualMeta = function(t) {
            if (this.isCategory()) return;
            var i = [],
                a = ["", ""],
                n = this;

            function o(f, p) {
                var c = n.getRepresentValue({
                    interval: f
                });
                p || (p = n.getValueState(c));
                var h = t(c, p);
                f[0] === -1 / 0 ? a[0] = h : f[1] === 1 / 0 ? a[1] = h : i.push({
                    value: f[0],
                    color: h
                }, {
                    value: f[1],
                    color: h
                })
            }
            var s = this._pieceList.slice();
            if (!s.length) s.push({
                interval: [-1 / 0, 1 / 0]
            });
            else {
                var l = s[0].interval[0];
                l !== -1 / 0 && s.unshift({
                    interval: [-1 / 0, l]
                }), l = s[s.length - 1].interval[1], l !== 1 / 0 && s.push({
                    interval: [l, 1 / 0]
                })
            }
            var u = -1 / 0;
            return w(s, function(f) {
                var p = f.interval;
                p && (p[0] > u && o([u, p[0]], "outOfRange"), o(p.slice()), u = p[1])
            }, this), {
                stops: i,
                outerColors: a
            }
        }, e.type = "visualMap.piecewise", e.defaultOption = nr(_u.defaultOption, {
            selected: null,
            minOpen: !1,
            maxOpen: !1,
            align: "auto",
            itemWidth: 20,
            itemHeight: 14,
            itemSymbol: "roundRect",
            pieces: null,
            categories: null,
            splitNumber: 5,
            selectedMode: "multiple",
            itemGap: 10,
            hoverLink: !0
        }), e
    }(_u),
    $q = {
        splitNumber: function(r) {
            var e = this.option,
                t = Math.min(e.precision, 20),
                i = this.getExtent(),
                a = e.splitNumber;
            a = Math.max(parseInt(a, 10), 1), e.splitNumber = a;
            for (var n = (i[1] - i[0]) / a; + n.toFixed(t) !== n && t < 5;) t++;
            e.precision = t, n = +n.toFixed(t), e.minOpen && r.push({
                interval: [-1 / 0, i[0]],
                close: [0, 0]
            });
            for (var o = 0, s = i[0]; o < a; s += n, o++) {
                var l = o === a - 1 ? i[1] : s + n;
                r.push({
                    interval: [s, l],
                    close: [1, 1]
                })
            }
            e.maxOpen && r.push({
                interval: [i[1], 1 / 0],
                close: [0, 0]
            }), Qu(r), w(r, function(u, f) {
                u.index = f, u.text = this.formatValueText(u.interval)
            }, this)
        },
        categories: function(r) {
            var e = this.option;
            w(e.categories, function(t) {
                r.push({
                    text: this.formatValueText(t, !0),
                    value: t
                })
            }, this), Yk(e, r)
        },
        pieces: function(r) {
            var e = this.option;
            w(e.pieces, function(t, i) {
                j(t) || (t = {
                    value: t
                });
                var a = {
                    text: "",
                    index: i
                };
                if (t.label != null && (a.text = t.label), t.hasOwnProperty("value")) {
                    var n = a.value = t.value;
                    a.interval = [n, n], a.close = [1, 1]
                } else {
                    for (var o = a.interval = [], s = a.close = [0, 0], l = [1, 0, 1], u = [-1 / 0, 1 / 0], f = [], p = 0; p < 2; p++) {
                        for (var c = [
                                ["gte", "gt", "min"],
                                ["lte", "lt", "max"]
                            ][p], h = 0; h < 3 && o[p] == null; h++) o[p] = t[c[h]], s[p] = l[h], f[p] = h === 2;
                        o[p] == null && (o[p] = u[p])
                    }
                    f[0] && o[1] === 1 / 0 && (s[0] = 0), f[1] && o[0] === -1 / 0 && (s[1] = 0), o[0] === o[1] && s[0] && s[1] && (a.value = o[0])
                }
                a.visual = he.retrieveVisuals(t), r.push(a)
            }, this), Yk(e, r), Qu(r), w(r, function(t) {
                var i = t.close,
                    a = [
                        ["<", "\u2264"][i[1]],
                        [">", "\u2265"][i[0]]
                    ];
                t.text = t.text || this.formatValueText(t.value != null ? t.value : t.interval, !1, a)
            }, this)
        }
    };

function Yk(r, e) {
    var t = r.inverse;
    (r.orient === "vertical" ? !t : t) && e.reverse()
}
var Zk = Qq;
var tK = function(r) {
        L(e, r);

        function e() {
            var t = r !== null && r.apply(this, arguments) || this;
            return t.type = e.type, t
        }
        return e.prototype.doRender = function() {
            var t = this.group;
            t.removeAll();
            var i = this.visualMapModel,
                a = i.get("textGap"),
                n = i.textStyleModel,
                o = n.getFont(),
                s = n.getTextColor(),
                l = this._getItemAlign(),
                u = i.itemSize,
                f = this._getViewData(),
                p = f.endsText,
                c = Kt(i.get("showLabel", !0), !p),
                h = !i.get("selectedMode");
            p && this._renderEndsText(t, p[0], u, c, l), w(f.viewPieceList, function(v) {
                var d = v.piece,
                    m = new J;
                m.onclick = H(this._onItemClick, this, d), this._enableHoverLink(m, v.indexInModelPieceList);
                var g = i.getRepresentValue(d);
                if (this._createItemSymbol(m, g, [0, 0, u[0], u[1]], h), c) {
                    var y = this.visualMapModel.getValueState(g);
                    m.add(new dt({
                        style: {
                            x: l === "right" ? -a : u[0] + a,
                            y: u[1] / 2,
                            text: d.text,
                            verticalAlign: "middle",
                            align: l,
                            font: o,
                            fill: s,
                            opacity: y === "outOfRange" ? .5 : 1
                        },
                        silent: h
                    }))
                }
                t.add(m)
            }, this), p && this._renderEndsText(t, p[1], u, c, l), Zi(i.get("orient"), t, i.get("itemGap")), this.renderBackground(t), this.positionGroup(t)
        }, e.prototype._enableHoverLink = function(t, i) {
            var a = this;
            t.on("mouseover", function() {
                return n("highlight")
            }).on("mouseout", function() {
                return n("downplay")
            });
            var n = function(o) {
                var s = a.visualMapModel;
                s.option.hoverLink && a.api.dispatchAction({
                    type: o,
                    batch: Su(s.findTargetDataIndices(i), s)
                })
            }
        }, e.prototype._getItemAlign = function() {
            var t = this.visualMapModel,
                i = t.option;
            if (i.orient === "vertical") return Sm(t, this.api, t.itemSize);
            var a = i.align;
            return (!a || a === "auto") && (a = "left"), a
        }, e.prototype._renderEndsText = function(t, i, a, n, o) {
            if (i) {
                var s = new J,
                    l = this.visualMapModel.textStyleModel;
                s.add(new dt({
                    style: zt(l, {
                        x: n ? o === "right" ? a[0] : 0 : a[0] / 2,
                        y: a[1] / 2,
                        verticalAlign: "middle",
                        align: n ? o : "center",
                        text: i
                    })
                })), t.add(s)
            }
        }, e.prototype._getViewData = function() {
            var t = this.visualMapModel,
                i = k(t.getPieceList(), function(s, l) {
                    return {
                        piece: s,
                        indexInModelPieceList: l
                    }
                }),
                a = t.get("text"),
                n = t.get("orient"),
                o = t.get("inverse");
            return (n === "horizontal" ? o : !o) ? i.reverse() : a && (a = a.slice().reverse()), {
                viewPieceList: i,
                endsText: a
            }
        }, e.prototype._createItemSymbol = function(t, i, a, n) {
            var o = Vt(this.getControllerVisual(i, "symbol"), a[0], a[1], a[2], a[3], this.getControllerVisual(i, "color"));
            o.silent = n, t.add(o)
        }, e.prototype._onItemClick = function(t) {
            var i = this.visualMapModel,
                a = i.option,
                n = a.selectedMode;
            if (n) {
                var o = Q(a.selected),
                    s = i.getSelectedMapKey(t);
                n === "single" || n === !0 ? (o[s] = !0, w(o, function(l, u) {
                    o[u] = u === s
                })) : o[s] = !o[s], this.api.dispatchAction({
                    type: "selectDataRange",
                    from: this.uid,
                    visualMapId: this.visualMapModel.id,
                    selected: o
                })
            }
        }, e.type = "visualMap.piecewise", e
    }(_m),
    Xk = tK;

function Kp(r) {
    r.registerComponentModel(Zk), r.registerComponentView(Xk), Xp(r)
}

function Bb(r) {
    _t(qp), _t(Kp)
}
var eK = {
        label: {
            enabled: !0
        },
        decal: {
            show: !1
        }
    },
    qk = lt(),
    rK = {};

function Fb(r, e) {
    var t = r.getModel("aria");
    if (!t.get("enabled")) return;
    var i = Q(eK);
    nt(i.label, r.getLocaleModel().get("aria"), !1), nt(t.option, i, !1), a(), n();

    function a() {
        var u = t.getModel("decal"),
            f = u.get("show");
        if (f) {
            var p = Y();
            r.eachSeries(function(c) {
                if (!c.isColorBySeries()) {
                    var h = p.get(c.type);
                    h || (h = {}, p.set(c.type, h)), qk(c).scope = h
                }
            }), r.eachRawSeries(function(c) {
                if (r.isSeriesFiltered(c)) return;
                if (X(c.enableAriaDecal)) {
                    c.enableAriaDecal();
                    return
                }
                var h = c.getData();
                if (c.isColorBySeries()) {
                    var y = Mf(c.ecModel, c.name, rK, r.getSeriesCount()),
                        x = h.getVisual("decal");
                    h.setVisual("decal", _(x, y))
                } else {
                    var v = c.getRawData(),
                        d = {},
                        m = qk(c).scope;
                    h.each(function(S) {
                        var b = h.getRawIndex(S);
                        d[b] = S
                    });
                    var g = v.count();
                    v.each(function(S) {
                        var b = d[S],
                            T = v.getName(S) || S + "",
                            C = Mf(c.ecModel, T, m, g),
                            A = h.getItemVisual(b, "decal");
                        h.setItemVisual(b, "decal", _(A, C))
                    })
                }

                function _(S, b) {
                    var T = S ? O(O({}, b), S) : b;
                    return T.dirty = !0, T
                }
            })
        }
    }

    function n() {
        var u = e.getZr().dom;
        if (u) {
            var f = r.getLocaleModel().get("aria"),
                p = t.getModel("label");
            if (p.option = q(p.option, f), !!p.get("enabled")) {
                if (u.setAttribute("role", "img"), p.get("description")) {
                    u.setAttribute("aria-label", p.get("description"));
                    return
                }
                var c = r.getSeriesCount(),
                    h = p.get(["data", "maxCount"]) || 10,
                    v = p.get(["series", "maxCount"]) || 10,
                    d = Math.min(c, v),
                    m;
                if (!(c < 1)) {
                    var g = s();
                    if (g) {
                        var y = p.get(["general", "withTitle"]);
                        m = o(y, {
                            title: g
                        })
                    } else m = p.get(["general", "withoutTitle"]);
                    var x = [],
                        _ = c > 1 ? p.get(["series", "multiple", "prefix"]) : p.get(["series", "single", "prefix"]);
                    m += o(_, {
                        seriesCount: c
                    }), r.eachSeries(function(C, A) {
                        if (A < d) {
                            var D = void 0,
                                M = C.get("name"),
                                I = M ? "withName" : "withoutName";
                            D = c > 1 ? p.get(["series", "multiple", I]) : p.get(["series", "single", I]), D = o(D, {
                                seriesId: C.seriesIndex,
                                seriesName: C.get("name"),
                                seriesType: l(C.subType)
                            });
                            var E = C.getData();
                            if (E.count() > h) {
                                var P = p.get(["data", "partialData"]);
                                D += o(P, {
                                    displayCnt: h
                                })
                            } else D += p.get(["data", "allData"]);
                            for (var R = p.get(["data", "separator", "middle"]), N = p.get(["data", "separator", "end"]), V = p.get(["data", "excludeDimensionId"]), U = [], B = 0; B < E.count(); B++)
                                if (B < h) {
                                    var Z = E.getName(B),
                                        K = V ? wt(E.getValues(B), function(pt, ct) {
                                            return at(V, ct) === -1
                                        }) : E.getValues(B),
                                        tt = p.get(["data", Z ? "withName" : "withoutName"]);
                                    U.push(o(tt, {
                                        name: Z,
                                        value: K.join(R)
                                    }))
                                }
                            D += U.join(R) + N, x.push(D)
                        }
                    });
                    var S = p.getModel(["series", "multiple", "separator"]),
                        b = S.get("middle"),
                        T = S.get("end");
                    m += x.join(b) + T, u.setAttribute("aria-label", m)
                }
            }
        }
    }

    function o(u, f) {
        if (!F(u)) return u;
        var p = u;
        return w(f, function(c, h) {
            p = p.replace(new RegExp("\\{\\s*" + h + "\\s*\\}", "g"), c)
        }), p
    }

    function s() {
        var u = r.get("title");
        return u && u.length && (u = u[0]), u && u.text
    }

    function l(u) {
        var f = r.getLocaleModel().get(["series", "typeNames"]);
        return f[u] || f.chart
    }
}

function Gb(r) {
    if (!(!r || !r.aria)) {
        var e = r.aria;
        e.show != null && (e.enabled = e.show), e.label = e.label || {}, w(["description", "general", "series", "data"], function(t) {
            e[t] != null && (e.label[t] = e[t])
        })
    }
}

function Hb(r) {
    r.registerPreprocessor(Gb), r.registerVisual(r.PRIORITY.VISUAL.ARIA, Fb)
}
var Kk = {
        value: "eq",
        "<": "lt",
        "<=": "lte",
        ">": "gt",
        ">=": "gte",
        "=": "eq",
        "!=": "ne",
        "<>": "ne"
    },
    iK = function() {
        function r(e) {
            var t = this._condVal = F(e) ? new RegExp(e) : zm(e) ? e : null;
            if (t == null) {
                var i = "";
                kt(i)
            }
        }
        return r.prototype.evaluate = function(e) {
            var t = typeof e;
            return F(t) ? this._condVal.test(e) : vt(t) ? this._condVal.test(e + "") : !1
        }, r
    }(),
    aK = function() {
        function r() {}
        return r.prototype.evaluate = function() {
            return this.value
        }, r
    }(),
    nK = function() {
        function r() {}
        return r.prototype.evaluate = function() {
            for (var e = this.children, t = 0; t < e.length; t++)
                if (!e[t].evaluate()) return !1;
            return !0
        }, r
    }(),
    oK = function() {
        function r() {}
        return r.prototype.evaluate = function() {
            for (var e = this.children, t = 0; t < e.length; t++)
                if (e[t].evaluate()) return !0;
            return !1
        }, r
    }(),
    sK = function() {
        function r() {}
        return r.prototype.evaluate = function() {
            return !this.child.evaluate()
        }, r
    }(),
    lK = function() {
        function r() {}
        return r.prototype.evaluate = function() {
            for (var e = !!this.valueParser, t = this.getValue, i = t(this.valueGetterParam), a = e ? this.valueParser(i) : null, n = 0; n < this.subCondList.length; n++)
                if (!this.subCondList[n].evaluate(e ? a : i)) return !1;
            return !0
        }, r
    }();

function Wb(r, e) {
    if (r === !0 || r === !1) {
        var t = new aK;
        return t.value = r, t
    }
    var i = "";
    return Jk(r) || kt(i), r.and ? jk("and", r, e) : r.or ? jk("or", r, e) : r.not ? uK(r, e) : fK(r, e)
}

function jk(r, e, t) {
    var i = e[r],
        a = "";
    z(i) || kt(a), i.length || kt(a);
    var n = r === "and" ? new nK : new oK;
    return n.children = k(i, function(o) {
        return Wb(o, t)
    }), n.children.length || kt(a), n
}

function uK(r, e) {
    var t = r.not,
        i = "";
    Jk(t) || kt(i);
    var a = new sK;
    return a.child = Wb(t, e), a.child || kt(i), a
}

function fK(r, e) {
    for (var t = "", i = e.prepareGetValue(r), a = [], n = ft(r), o = r.parser, s = o ? zh(o) : null, l = 0; l < n.length; l++) {
        var u = n[l];
        if (!(u === "parser" || e.valueGetterAttrMap.get(u))) {
            var f = $(Kk, u) ? Kk[u] : u,
                p = r[u],
                c = s ? s(p) : p,
                h = pD(f, c) || f === "reg" && new iK(c);
            h || kt(t), a.push(h)
        }
    }
    a.length || kt(t);
    var v = new lK;
    return v.valueGetterParam = i, v.valueParser = s, v.getValue = e.getValue, v.subCondList = a, v
}

function Jk(r) {
    return j(r) && !ue(r)
}
var pK = function() {
    function r(e, t) {
        this._cond = Wb(e, t)
    }
    return r.prototype.evaluate = function() {
        return this._cond.evaluate()
    }, r
}();

function Qk(r, e) {
    return new pK(r, e)
}
var $k = {
    type: "echarts:filter",
    transform: function(r) {
        for (var e = r.upstream, t, i = Qk(r.config, {
                valueGetterAttrMap: Y({
                    dimension: !0
                }),
                prepareGetValue: function(s) {
                    var l = "",
                        u = s.dimension;
                    $(s, "dimension") || kt(l);
                    var f = e.getDimensionInfo(u);
                    return f || kt(l), {
                        dimIdx: f.index
                    }
                },
                getValue: function(s) {
                    return e.retrieveValueFromItem(t, s.dimIdx)
                }
            }), a = [], n = 0, o = e.count(); n < o; n++) t = e.getRawDataItem(n), i.evaluate() && a.push(t);
        return {
            data: a
        }
    }
};
var tU = {
    type: "echarts:sort",
    transform: function(r) {
        var e = r.upstream,
            t = r.config,
            i = "",
            a = Pt(t);
        a.length || kt(i);
        var n = [];
        w(a, function(f) {
            var p = f.dimension,
                c = f.order,
                h = f.parser,
                v = f.incomparable;
            if (p == null && kt(i), c !== "asc" && c !== "desc" && kt(i), v && v !== "min" && v !== "max") {
                var d = "";
                kt(d)
            }
            if (c !== "asc" && c !== "desc") {
                var m = "";
                kt(m)
            }
            var g = e.getDimensionInfo(p);
            g || kt(i);
            var y = h ? zh(h) : null;
            h && !y && kt(i), n.push({
                dimIdx: g.index,
                parser: y,
                comparator: new kh(c, v)
            })
        });
        var o = e.sourceFormat;
        o !== Se && o !== $e && kt(i);
        for (var s = [], l = 0, u = e.count(); l < u; l++) s.push(e.getRawDataItem(l));
        return s.sort(function(f, p) {
            for (var c = 0; c < n.length; c++) {
                var h = n[c],
                    v = e.retrieveValueFromItem(f, h.dimIdx),
                    d = e.retrieveValueFromItem(p, h.dimIdx);
                h.parser && (v = h.parser(v), d = h.parser(d));
                var m = h.comparator.evaluate(v, d);
                if (m !== 0) return m
            }
            return 0
        }), {
            data: s
        }
    }
};

function Yb(r) {
    r.registerTransform($k), r.registerTransform(tU)
}
var cK = function(r) {
    L(e, r);

    function e() {
        var t = r !== null && r.apply(this, arguments) || this;
        return t.type = "dataset", t
    }
    return e.prototype.init = function(t, i, a) {
        r.prototype.init.call(this, t, i, a), this._sourceManager = new Bh(this), n0(this)
    }, e.prototype.mergeOption = function(t, i) {
        r.prototype.mergeOption.call(this, t, i), n0(this)
    }, e.prototype.optionUpdated = function() {
        this._sourceManager.dirty()
    }, e.prototype.getSourceManager = function() {
        return this._sourceManager
    }, e.type = "dataset", e.defaultOption = {
        seriesLayoutBy: Vr
    }, e
}(yt);
var hK = function(r) {
    L(e, r);

    function e() {
        var t = r !== null && r.apply(this, arguments) || this;
        return t.type = "dataset", t
    }
    return e.type = "dataset", e
}(It);

function Zb(r) {
    r.registerComponentModel(cK), r.registerComponentView(hK)
}
var Ea = Ve.CMD;

function wu(r, e) {
    return Math.abs(r - e) < 1e-5
}

function bm(r) {
    var e = r.data,
        t = r.len(),
        i = [],
        a, n = 0,
        o = 0,
        s = 0,
        l = 0;

    function u(E, P) {
        a && a.length > 2 && i.push(a), a = [E, P]
    }

    function f(E, P, R, N) {
        wu(E, R) && wu(P, N) || a.push(E, P, R, N, R, N)
    }

    function p(E, P, R, N, V, U) {
        var B = Math.abs(P - E),
            Z = Math.tan(B / 4) * 4 / 3,
            K = P < E ? -1 : 1,
            tt = Math.cos(E),
            pt = Math.sin(E),
            ct = Math.cos(P),
            bt = Math.sin(P),
            qt = tt * V + R,
            ve = pt * U + N,
            Mt = ct * V + R,
            mt = bt * U + N,
            Et = V * Z * K,
            ut = U * Z * K;
        a.push(qt - Et * pt, ve + ut * tt, Mt + Et * bt, mt - ut * ct, Mt, mt)
    }
    for (var c, h, v, d, m = 0; m < t;) {
        var g = e[m++],
            y = m === 1;
        switch (y && (n = e[m], o = e[m + 1], s = n, l = o, (g === Ea.L || g === Ea.C || g === Ea.Q) && (a = [s, l])), g) {
            case Ea.M:
                n = s = e[m++], o = l = e[m++], u(s, l);
                break;
            case Ea.L:
                c = e[m++], h = e[m++], f(n, o, c, h), n = c, o = h;
                break;
            case Ea.C:
                a.push(e[m++], e[m++], e[m++], e[m++], n = e[m++], o = e[m++]);
                break;
            case Ea.Q:
                c = e[m++], h = e[m++], v = e[m++], d = e[m++], a.push(n + 2 / 3 * (c - n), o + 2 / 3 * (h - o), v + 2 / 3 * (c - v), d + 2 / 3 * (h - d), v, d), n = v, o = d;
                break;
            case Ea.A:
                var x = e[m++],
                    _ = e[m++],
                    S = e[m++],
                    b = e[m++],
                    T = e[m++],
                    C = e[m++] + T;
                m += 1;
                var A = !e[m++];
                c = Math.cos(T) * S + x, h = Math.sin(T) * b + _, y ? (s = c, l = h, u(s, l)) : f(n, o, c, h), n = Math.cos(C) * S + x, o = Math.sin(C) * b + _;
                for (var D = (A ? -1 : 1) * Math.PI / 2, M = T; A ? M > C : M < C; M += D) {
                    var I = A ? Math.max(M + D, C) : Math.min(M + D, C);
                    p(M, I, x, _, S, b)
                }
                break;
            case Ea.R:
                s = n = e[m++], l = o = e[m++], c = s + e[m++], h = l + e[m++], u(c, l), f(c, l, c, h), f(c, h, s, h), f(s, h, s, l), f(s, l, c, l);
                break;
            case Ea.Z:
                a && f(n, o, s, l), n = s, o = l;
                break
        }
    }
    return a && a.length > 2 && i.push(a), i
}

function Xb(r, e, t, i, a, n, o, s, l, u) {
    if (wu(r, t) && wu(e, i) && wu(a, o) && wu(n, s)) {
        l.push(o, s);
        return
    }
    var f = 2 / u,
        p = f * f,
        c = o - r,
        h = s - e,
        v = Math.sqrt(c * c + h * h);
    c /= v, h /= v;
    var d = t - r,
        m = i - e,
        g = a - o,
        y = n - s,
        x = d * d + m * m,
        _ = g * g + y * y;
    if (x < p && _ < p) {
        l.push(o, s);
        return
    }
    var S = c * d + h * m,
        b = -c * g - h * y,
        T = x - S * S,
        C = _ - b * b;
    if (T < p && S >= 0 && C < p && b >= 0) {
        l.push(o, s);
        return
    }
    var A = [],
        D = [];
    ci(r, t, a, o, .5, A), ci(e, i, n, s, .5, D), Xb(A[0], D[0], A[1], D[1], A[2], D[2], A[3], D[3], l, u), Xb(A[4], D[4], A[5], D[5], A[6], D[6], A[7], D[7], l, u)
}

function eU(r, e) {
    var t = bm(r),
        i = [];
    e = e || 1;
    for (var a = 0; a < t.length; a++) {
        var n = t[a],
            o = [],
            s = n[0],
            l = n[1];
        o.push(s, l);
        for (var u = 2; u < n.length;) {
            var f = n[u++],
                p = n[u++],
                c = n[u++],
                h = n[u++],
                v = n[u++],
                d = n[u++];
            Xb(s, l, f, p, c, h, v, d, o, e), s = v, l = d
        }
        i.push(o)
    }
    return i
}

function nU(r, e, t) {
    var i = r[e],
        a = r[1 - e],
        n = Math.abs(i / a),
        o = Math.ceil(Math.sqrt(n * t)),
        s = Math.floor(t / o);
    s === 0 && (s = 1, o = t);
    for (var l = [], u = 0; u < o; u++) l.push(s);
    var f = o * s,
        p = t - f;
    if (p > 0)
        for (var u = 0; u < p; u++) l[u % o] += 1;
    return l
}

function rU(r, e, t) {
    for (var i = r.r0, a = r.r, n = r.startAngle, o = r.endAngle, s = Math.abs(o - n), l = s * a, u = a - i, f = l > Math.abs(u), p = nU([l, u], f ? 0 : 1, e), c = (f ? s : u) / p.length, h = 0; h < p.length; h++)
        for (var v = (f ? u : s) / p[h], d = 0; d < p[h]; d++) {
            var m = {};
            f ? (m.startAngle = n + c * h, m.endAngle = n + c * (h + 1), m.r0 = i + v * d, m.r = i + v * (d + 1)) : (m.startAngle = n + v * d, m.endAngle = n + v * (d + 1), m.r0 = i + c * h, m.r = i + c * (h + 1)), m.clockwise = r.clockwise, m.cx = r.cx, m.cy = r.cy, t.push(m)
        }
}

function vK(r, e, t) {
    for (var i = r.width, a = r.height, n = i > a, o = nU([i, a], n ? 0 : 1, e), s = n ? "width" : "height", l = n ? "height" : "width", u = n ? "x" : "y", f = n ? "y" : "x", p = r[s] / o.length, c = 0; c < o.length; c++)
        for (var h = r[l] / o[c], v = 0; v < o[c]; v++) {
            var d = {};
            d[u] = c * p, d[f] = v * h, d[s] = p, d[l] = h, d.x += r.x, d.y += r.y, t.push(d)
        }
}

function iU(r, e, t, i) {
    return r * i - t * e
}

function dK(r, e, t, i, a, n, o, s) {
    var l = t - r,
        u = i - e,
        f = o - a,
        p = s - n,
        c = iU(f, p, l, u);
    if (Math.abs(c) < 1e-6) return null;
    var h = r - a,
        v = e - n,
        d = iU(h, v, f, p) / c;
    return d < 0 || d > 1 ? null : new St(d * l + r, d * u + e)
}

function mK(r, e, t) {
    var i = new St;
    St.sub(i, t, e), i.normalize();
    var a = new St;
    St.sub(a, r, e);
    var n = a.dot(i);
    return n
}

function Tu(r, e) {
    var t = r[r.length - 1];
    t && t[0] === e[0] && t[1] === e[1] || r.push(e)
}

function gK(r, e, t) {
    for (var i = r.length, a = [], n = 0; n < i; n++) {
        var o = r[n],
            s = r[(n + 1) % i],
            l = dK(o[0], o[1], s[0], s[1], e.x, e.y, t.x, t.y);
        l && a.push({
            projPt: mK(l, e, t),
            pt: l,
            idx: n
        })
    }
    if (a.length < 2) return [{
        points: r
    }, {
        points: r
    }];
    a.sort(function(m, g) {
        return m.projPt - g.projPt
    });
    var u = a[0],
        f = a[a.length - 1];
    if (f.idx < u.idx) {
        var p = u;
        u = f, f = p
    }
    for (var c = [u.pt.x, u.pt.y], h = [f.pt.x, f.pt.y], v = [c], d = [h], n = u.idx + 1; n <= f.idx; n++) Tu(v, r[n].slice());
    Tu(v, h), Tu(v, c);
    for (var n = f.idx + 1; n <= u.idx + i; n++) Tu(d, r[n % i].slice());
    return Tu(d, c), Tu(d, h), [{
        points: v
    }, {
        points: d
    }]
}

function aU(r) {
    var e = r.points,
        t = [],
        i = [];
    Go(e, t, i);
    var a = new it(t[0], t[1], i[0] - t[0], i[1] - t[1]),
        n = a.width,
        o = a.height,
        s = a.x,
        l = a.y,
        u = new St,
        f = new St;
    return n > o ? (u.x = f.x = s + n / 2, u.y = l, f.y = l + o) : (u.y = f.y = l + o / 2, u.x = s, f.x = s + n), gK(e, u, f)
}

function wm(r, e, t, i) {
    if (t === 1) i.push(e);
    else {
        var a = Math.floor(t / 2),
            n = r(e);
        wm(r, n[0], a, i), wm(r, n[1], t - a, i)
    }
    return i
}

function yK(r, e) {
    for (var t = [], i = 0; i < e; i++) t.push(vl(r));
    return t
}

function xK(r, e) {
    e.setStyle(r.style), e.z = r.z, e.z2 = r.z2, e.zlevel = r.zlevel
}

function _K(r) {
    for (var e = [], t = 0; t < r.length;) e.push([r[t++], r[t++]]);
    return e
}

function oU(r, e) {
    var t = [],
        i = r.shape,
        a;
    switch (r.type) {
        case "rect":
            vK(i, e, t), a = ht;
            break;
        case "sector":
            rU(i, e, t), a = pe;
            break;
        case "circle":
            rU({
                r0: 0,
                r: i.r,
                startAngle: 0,
                endAngle: Math.PI * 2,
                cx: i.cx,
                cy: i.cy
            }, e, t), a = pe;
            break;
        default:
            var n = r.getComputedTransform(),
                o = n ? Math.sqrt(Math.max(n[0] * n[0] + n[1] * n[1], n[2] * n[2] + n[3] * n[3])) : 1,
                s = k(eU(r.getUpdatedPathProxy(), o), function(g) {
                    return _K(g)
                }),
                l = s.length;
            if (l === 0) wm(aU, {
                points: s[0]
            }, e, t);
            else if (l === e)
                for (var u = 0; u < l; u++) t.push({
                    points: s[u]
                });
            else {
                var f = 0,
                    p = k(s, function(g) {
                        var y = [],
                            x = [];
                        Go(g, y, x);
                        var _ = (x[1] - y[1]) * (x[0] - y[0]);
                        return f += _, {
                            poly: g,
                            area: _
                        }
                    });
                p.sort(function(g, y) {
                    return y.area - g.area
                });
                for (var c = e, u = 0; u < l; u++) {
                    var h = p[u];
                    if (c <= 0) break;
                    var v = u === l - 1 ? c : Math.ceil(h.area / f * e);
                    v < 0 || (wm(aU, {
                        points: h.poly
                    }, v, t), c -= v)
                }
            }
            a = oe;
            break
    }
    if (!a) return yK(r, e);
    for (var d = [], u = 0; u < t.length; u++) {
        var m = new a;
        m.setShape(t[u]), xK(r, m), d.push(m)
    }
    return d
}

function SK(r, e) {
    var t = r.length,
        i = e.length;
    if (t === i) return [r, e];
    for (var a = [], n = [], o = t < i ? r : e, s = Math.min(t, i), l = Math.abs(i - t) / 6, u = (s - 2) / 6, f = Math.ceil(l / u) + 1, p = [o[0], o[1]], c = l, h = 2; h < s;) {
        var v = o[h - 2],
            d = o[h - 1],
            m = o[h++],
            g = o[h++],
            y = o[h++],
            x = o[h++],
            _ = o[h++],
            S = o[h++];
        if (c <= 0) {
            p.push(m, g, y, x, _, S);
            continue
        }
        for (var b = Math.min(c, f - 1) + 1, T = 1; T <= b; T++) {
            var C = T / b;
            ci(v, m, y, _, C, a), ci(d, g, x, S, C, n), v = a[3], d = n[3], p.push(a[1], n[1], a[2], n[2], v, d), m = a[5], g = n[5], y = a[6], x = n[6]
        }
        c -= b - 1
    }
    return o === r ? [p, e] : [r, p]
}

function sU(r, e) {
    for (var t = r.length, i = r[t - 2], a = r[t - 1], n = [], o = 0; o < e.length;) n[o++] = i, n[o++] = a;
    return n
}

function bK(r, e) {
    for (var t, i, a, n = [], o = [], s = 0; s < Math.max(r.length, e.length); s++) {
        var l = r[s],
            u = e[s],
            f = void 0,
            p = void 0;
        l ? u ? (t = SK(l, u), f = t[0], p = t[1], i = f, a = p) : (p = sU(a || l, l), f = l) : (f = sU(i || u, u), p = u), n.push(f), o.push(p)
    }
    return [n, o]
}

function lU(r) {
    for (var e = 0, t = 0, i = 0, a = r.length, n = 0, o = a - 2; n < a; o = n, n += 2) {
        var s = r[o],
            l = r[o + 1],
            u = r[n],
            f = r[n + 1],
            p = s * f - u * l;
        e += p, t += (s + u) * p, i += (l + f) * p
    }
    return e === 0 ? [r[0] || 0, r[1] || 0] : [t / e / 3, i / e / 3, e]
}

function wK(r, e, t, i) {
    for (var a = (r.length - 2) / 6, n = 1 / 0, o = 0, s = r.length, l = s - 2, u = 0; u < a; u++) {
        for (var f = u * 6, p = 0, c = 0; c < s; c += 2) {
            var h = c === 0 ? f : (f + c - 2) % l + 2,
                v = r[h] - t[0],
                d = r[h + 1] - t[1],
                m = e[c] - i[0],
                g = e[c + 1] - i[1],
                y = m - v,
                x = g - d;
            p += y * y + x * x
        }
        p < n && (n = p, o = u)
    }
    return o
}

function TK(r) {
    for (var e = [], t = r.length, i = 0; i < t; i += 2) e[i] = r[t - i - 2], e[i + 1] = r[t - i - 1];
    return e
}

function CK(r, e, t, i) {
    for (var a = [], n, o = 0; o < r.length; o++) {
        var s = r[o],
            l = e[o],
            u = lU(s),
            f = lU(l);
        n == null && (n = u[2] < 0 != f[2] < 0);
        var p = [],
            c = [],
            h = 0,
            v = 1 / 0,
            d = [],
            m = s.length;
        n && (s = TK(s));
        for (var g = wK(s, l, u, f) * 6, y = m - 2, x = 0; x < y; x += 2) {
            var _ = (g + x) % y + 2;
            p[x + 2] = s[_] - u[0], p[x + 3] = s[_ + 1] - u[1]
        }
        if (p[0] = s[g] - u[0], p[1] = s[g + 1] - u[1], t > 0)
            for (var S = i / t, b = -i / 2; b <= i / 2; b += S) {
                for (var T = Math.sin(b), C = Math.cos(b), A = 0, x = 0; x < s.length; x += 2) {
                    var D = p[x],
                        M = p[x + 1],
                        I = l[x] - f[0],
                        E = l[x + 1] - f[1],
                        P = I * C - E * T,
                        R = I * T + E * C;
                    d[x] = P, d[x + 1] = R;
                    var N = P - D,
                        V = R - M;
                    A += N * N + V * V
                }
                if (A < v) {
                    v = A, h = b;
                    for (var U = 0; U < d.length; U++) c[U] = d[U]
                }
            } else
                for (var B = 0; B < m; B += 2) c[B] = l[B] - f[0], c[B + 1] = l[B + 1] - f[1];
        a.push({
            from: p,
            to: c,
            fromCp: u,
            toCp: f,
            rotation: -h
        })
    }
    return a
}

function Jp(r) {
    return r.__isCombineMorphing
}
var fU = "__mOriginal_";

function Tm(r, e, t) {
    var i = fU + e,
        a = r[i] || r[e];
    r[i] || (r[i] = r[e]);
    var n = t.replace,
        o = t.after,
        s = t.before;
    r[e] = function() {
        var l = arguments,
            u;
        return s && s.apply(this, l), n ? u = n.apply(this, l) : u = a.apply(this, l), o && o.apply(this, l), u
    }
}

function jp(r, e) {
    var t = fU + e;
    r[t] && (r[e] = r[t], r[t] = null)
}

function uU(r, e) {
    for (var t = 0; t < r.length; t++)
        for (var i = r[t], a = 0; a < i.length;) {
            var n = i[a],
                o = i[a + 1];
            i[a++] = e[0] * n + e[2] * o + e[4], i[a++] = e[1] * n + e[3] * o + e[5]
        }
}

function pU(r, e) {
    var t = r.getUpdatedPathProxy(),
        i = e.getUpdatedPathProxy(),
        a = bK(bm(t), bm(i)),
        n = a[0],
        o = a[1],
        s = r.getComputedTransform(),
        l = e.getComputedTransform();

    function u() {
        this.transform = null
    }
    s && uU(n, s), l && uU(o, l), Tm(e, "updateTransform", {
        replace: u
    }), e.transform = null;
    var f = CK(n, o, 10, Math.PI),
        p = [];
    Tm(e, "buildPath", {
        replace: function(c) {
            for (var h = e.__morphT, v = 1 - h, d = [], m = 0; m < f.length; m++) {
                var g = f[m],
                    y = g.from,
                    x = g.to,
                    _ = g.rotation * h,
                    S = g.fromCp,
                    b = g.toCp,
                    T = Math.sin(_),
                    C = Math.cos(_);
                xo(d, S, b, h);
                for (var A = 0; A < y.length; A += 2) {
                    var D = y[A],
                        M = y[A + 1],
                        I = x[A],
                        E = x[A + 1],
                        P = D * v + I * h,
                        R = M * v + E * h;
                    p[A] = P * C - R * T + d[0], p[A + 1] = P * T + R * C + d[1]
                }
                var N = p[0],
                    V = p[1];
                c.moveTo(N, V);
                for (var A = 2; A < y.length;) {
                    var I = p[A++],
                        E = p[A++],
                        U = p[A++],
                        B = p[A++],
                        Z = p[A++],
                        K = p[A++];
                    N === I && V === E && U === Z && B === K ? c.lineTo(Z, K) : c.bezierCurveTo(I, E, U, B, Z, K), N = Z, V = K
                }
            }
        }
    })
}

function Am(r, e, t) {
    if (!r || !e) return e;
    var i = t.done,
        a = t.during;
    pU(r, e), e.__morphT = 0;

    function n() {
        jp(e, "buildPath"), jp(e, "updateTransform"), e.__morphT = -1, e.createPathProxy(), e.dirtyShape()
    }
    return e.animateTo({
        __morphT: 1
    }, q({
        during: function(o) {
            e.dirtyShape(), a && a(o)
        },
        done: function() {
            n(), i && i()
        }
    }, t)), e
}

function AK(r, e, t, i, a, n) {
    var o = 16;
    r = a === t ? 0 : Math.round(32767 * (r - t) / (a - t)), e = n === i ? 0 : Math.round(32767 * (e - i) / (n - i));
    for (var s = 0, l, u = (1 << o) / 2; u > 0; u /= 2) {
        var f = 0,
            p = 0;
        (r & u) > 0 && (f = 1), (e & u) > 0 && (p = 1), s += u * u * (3 * f ^ p), p === 0 && (f === 1 && (r = u - 1 - r, e = u - 1 - e), l = r, r = e, e = l)
    }
    return s
}

function Cm(r) {
    var e = 1 / 0,
        t = 1 / 0,
        i = -1 / 0,
        a = -1 / 0,
        n = k(r, function(s) {
            var l = s.getBoundingRect(),
                u = s.getComputedTransform(),
                f = l.x + l.width / 2 + (u ? u[4] : 0),
                p = l.y + l.height / 2 + (u ? u[5] : 0);
            return e = Math.min(f, e), t = Math.min(p, t), i = Math.max(f, i), a = Math.max(p, a), [f, p]
        }),
        o = k(n, function(s, l) {
            return {
                cp: s,
                z: AK(s[0], s[1], e, t, i, a),
                path: r[l]
            }
        });
    return o.sort(function(s, l) {
        return s.z - l.z
    }).map(function(s) {
        return s.path
    })
}

function cU(r) {
    return oU(r.path, r.count)
}

function qb() {
    return {
        fromIndividuals: [],
        toIndividuals: [],
        count: 0
    }
}

function hU(r, e, t) {
    var i = [];

    function a(S) {
        for (var b = 0; b < S.length; b++) {
            var T = S[b];
            Jp(T) ? a(T.childrenRef()) : T instanceof st && i.push(T)
        }
    }
    a(r);
    var n = i.length;
    if (!n) return qb();
    var o = t.dividePath || cU,
        s = o({
            path: e,
            count: n
        });
    if (s.length !== n) return console.error("Invalid morphing: unmatched splitted path"), qb();
    i = Cm(i), s = Cm(s);
    for (var l = t.done, u = t.during, f = t.individualDelay, p = new Lr, c = 0; c < n; c++) {
        var h = i[c],
            v = s[c];
        v.parent = e, v.copyTransform(p), f || pU(h, v)
    }
    e.__isCombineMorphing = !0, e.childrenRef = function() {
        return s
    };

    function d(S) {
        for (var b = 0; b < s.length; b++) s[b].addSelfToZr(S)
    }
    Tm(e, "addSelfToZr", {
        after: function(S) {
            d(S)
        }
    }), Tm(e, "removeSelfFromZr", {
        after: function(S) {
            for (var b = 0; b < s.length; b++) s[b].removeSelfFromZr(S)
        }
    });

    function m() {
        e.__isCombineMorphing = !1, e.__morphT = -1, e.childrenRef = null, jp(e, "addSelfToZr"), jp(e, "removeSelfFromZr")
    }
    var g = s.length;
    if (f)
        for (var y = g, x = function() {
                y--, y === 0 && (m(), l && l())
            }, c = 0; c < g; c++) {
            var _ = f ? q({
                delay: (t.delay || 0) + f(c, g, i[c], s[c]),
                done: x
            }, t) : t;
            Am(i[c], s[c], _)
        } else e.__morphT = 0, e.animateTo({
            __morphT: 1
        }, q({
            during: function(S) {
                for (var b = 0; b < g; b++) {
                    var T = s[b];
                    T.__morphT = e.__morphT, T.dirtyShape()
                }
                u && u(S)
            },
            done: function() {
                m();
                for (var S = 0; S < r.length; S++) jp(r[S], "updateTransform");
                l && l()
            }
        }, t));
    return e.__zr && d(e.__zr), {
        fromIndividuals: i,
        toIndividuals: s,
        count: g
    }
}

function vU(r, e, t) {
    var i = e.length,
        a = [],
        n = t.dividePath || cU;

    function o(h) {
        for (var v = 0; v < h.length; v++) {
            var d = h[v];
            Jp(d) ? o(d.childrenRef()) : d instanceof st && a.push(d)
        }
    }
    if (Jp(r)) {
        o(r.childrenRef());
        var s = a.length;
        if (s < i)
            for (var l = 0, u = s; u < i; u++) a.push(vl(a[l++ % s]));
        a.length = i
    } else {
        a = n({
            path: r,
            count: i
        });
        for (var f = r.getComputedTransform(), u = 0; u < a.length; u++) a[u].setLocalTransform(f);
        if (a.length !== i) return console.error("Invalid morphing: unmatched splitted path"), qb()
    }
    a = Cm(a), e = Cm(e);
    for (var p = t.individualDelay, u = 0; u < i; u++) {
        var c = p ? q({
            delay: (t.delay || 0) + p(u, i, a[u], e[u])
        }, t) : t;
        Am(a[u], e[u], c)
    }
    return {
        fromIndividuals: a,
        toIndividuals: e,
        count: e.length
    }
}

function dU(r) {
    return z(r[0])
}

function mU(r, e) {
    for (var t = [], i = r.length, a = 0; a < i; a++) t.push({
        one: r[a],
        many: []
    });
    for (var a = 0; a < e.length; a++) {
        var n = e[a].length,
            o = void 0;
        for (o = 0; o < n; o++) t[o % i].many.push(e[a][o])
    }
    for (var s = 0, a = i - 1; a >= 0; a--)
        if (!t[a].many.length) {
            var l = t[s].many;
            if (l.length <= 1)
                if (s) s = 0;
                else return t;
            var n = l.length,
                u = Math.ceil(n / 2);
            t[a].many = l.slice(u, n), t[s].many = l.slice(0, u), s++
        }
    return t
}
var DK = {
    clone: function(r) {
        for (var e = [], t = 1 - Math.pow(1 - r.path.style.opacity, 1 / r.count), i = 0; i < r.count; i++) {
            var a = vl(r.path);
            a.setStyle("opacity", t), e.push(a)
        }
        return e
    },
    split: null
};

function Dm(r, e, t, i, a, n) {
    if (!r.length || !e.length) return;
    var o = ma("update", i, a);
    if (!(o && o.duration > 0)) return;
    var s = i.getModel("universalTransition").get("delay"),
        l = Object.assign({
            setToFinal: !0
        }, o),
        u, f;
    dU(r) && (u = r, f = e), dU(e) && (u = e, f = r);

    function p(g, y, x, _, S) {
        var b = g.many,
            T = g.one;
        if (b.length === 1 && !S) {
            var C = y ? b[0] : T,
                A = y ? T : b[0];
            if (Jp(C)) p({
                many: [C],
                one: A
            }, !0, x, _, !0);
            else {
                var D = s ? q({
                    delay: s(x, _)
                }, l) : l;
                Am(C, A, D), n(C, A, C, A, D)
            }
        } else
            for (var M = q({
                    dividePath: DK[t],
                    individualDelay: s && function(V, U, B, Z) {
                        return s(V + x, _)
                    }
                }, l), I = y ? hU(b, T, M) : vU(T, b, M), E = I.fromIndividuals, P = I.toIndividuals, R = E.length, N = 0; N < R; N++) {
                var D = s ? q({
                    delay: s(N, R)
                }, l) : l;
                n(E[N], P[N], y ? b[N] : g.one, y ? g.one : b[N], D)
            }
    }
    for (var c = u ? u === r : r.length > e.length, h = u ? mU(f, u) : mU(c ? e : r, [c ? r : e]), v = 0, d = 0; d < h.length; d++) v += h[d].many.length;
    for (var m = 0, d = 0; d < h.length; d++) p(h[d], c, m, v), m += h[d].many.length
}

function po(r) {
    if (!r) return [];
    if (z(r)) {
        for (var e = [], t = 0; t < r.length; t++) e.push(po(r[t]));
        return e
    }
    var i = [];
    return r.traverse(function(a) {
        a instanceof st && !a.disableMorphing && !a.invisible && !a.ignore && i.push(a)
    }), i
}
var TU = 1e4,
    MK = 0,
    gU = 1,
    yU = 2,
    LK = lt();

function IK(r, e) {
    for (var t = r.dimensions, i = 0; i < t.length; i++) {
        var a = r.getDimensionInfo(t[i]);
        if (a && a.otherDims[e] === 0) return t[i]
    }
}

function EK(r, e, t) {
    var i = r.getDimensionInfo(t),
        a = i && i.ordinalMeta;
    if (i) {
        var n = r.get(i.name, e);
        return a && a.categories[n] || n + ""
    }
}

function xU(r, e, t, i) {
    var a = i ? "itemChildGroupId" : "itemGroupId",
        n = IK(r, a);
    if (n) {
        var o = EK(r, e, n);
        return o
    }
    var s = r.getRawDataItem(e),
        l = i ? "childGroupId" : "groupId";
    if (s && s[l]) return s[l] + "";
    if (!i) return t || r.getId(e)
}

function _U(r) {
    var e = [];
    return w(r, function(t) {
        var i = t.data,
            a = t.dataGroupId;
        if (!(i.count() > TU))
            for (var n = i.getIndices(), o = 0; o < n.length; o++) e.push({
                data: i,
                groupId: xU(i, o, a, !1),
                childGroupId: xU(i, o, a, !0),
                divide: t.divide,
                dataIndex: o
            })
    }), e
}

function Kb(r, e, t) {
    r.traverse(function(i) {
        i instanceof st && Ot(i, {
            style: {
                opacity: 0
            }
        }, e, {
            dataIndex: t,
            isFrom: !0
        })
    })
}

function jb(r) {
    if (r.parent) {
        var e = r.getComputedTransform();
        r.setLocalTransform(e), r.parent.remove(r)
    }
}

function Cu(r) {
    r.stopAnimation(), r.isGroup && r.traverse(function(e) {
        e.stopAnimation()
    })
}

function PK(r, e, t) {
    var i = ma("update", t, e);
    i && r.traverse(function(a) {
        if (a instanceof ye) {
            var n = iA(a);
            n && a.animateFrom({
                style: n
            }, i)
        }
    })
}

function RK(r, e) {
    var t = r.length;
    if (t !== e.length) return !1;
    for (var i = 0; i < t; i++) {
        var a = r[i],
            n = e[i];
        if (a.data.getId(a.dataIndex) !== n.data.getId(n.dataIndex)) return !1
    }
    return !0
}

function CU(r, e, t) {
    var i = _U(r),
        a = _U(e);

    function n(x, _, S, b, T) {
        (S || x) && _.animateFrom({
            style: S && S !== x ? O(O({}, S.style), x.style) : x.style
        }, T)
    }
    var o = !1,
        s = MK,
        l = Y(),
        u = Y();
    i.forEach(function(x) {
        x.groupId && l.set(x.groupId, !0), x.childGroupId && u.set(x.childGroupId, !0)
    });
    for (var f = 0; f < a.length; f++) {
        var p = a[f].groupId;
        if (u.get(p)) {
            s = gU;
            break
        }
        var c = a[f].childGroupId;
        if (c && l.get(c)) {
            s = yU;
            break
        }
    }

    function h(x, _) {
        return function(S) {
            var b = S.data,
                T = S.dataIndex;
            return _ ? b.getId(T) : x ? s === gU ? S.childGroupId : S.groupId : s === yU ? S.childGroupId : S.groupId
        }
    }
    var v = RK(i, a),
        d = {};
    if (!v)
        for (var f = 0; f < a.length; f++) {
            var m = a[f],
                g = m.data.getItemGraphicEl(m.dataIndex);
            g && (d[g.id] = !0)
        }

    function y(x, _) {
        var S = i[_],
            b = a[x],
            T = b.data.hostModel,
            C = S.data.getItemGraphicEl(S.dataIndex),
            A = b.data.getItemGraphicEl(b.dataIndex);
        if (C === A) {
            A && PK(A, b.dataIndex, T);
            return
        }
        C && d[C.id] || A && (Cu(A), C ? (Cu(C), jb(C), o = !0, Dm(po(C), po(A), b.divide, T, x, n)) : Kb(A, T, x))
    }
    new tr(i, a, h(!0, v), h(!1, v), null, "multiple").update(y).updateManyToOne(function(x, _) {
        var S = a[x],
            b = S.data,
            T = b.hostModel,
            C = b.getItemGraphicEl(S.dataIndex),
            A = wt(k(_, function(D) {
                return i[D].data.getItemGraphicEl(i[D].dataIndex)
            }), function(D) {
                return D && D !== C && !d[D.id]
            });
        C && (Cu(C), A.length ? (w(A, function(D) {
            Cu(D), jb(D)
        }), o = !0, Dm(po(A), po(C), S.divide, T, x, n)) : Kb(C, T, S.dataIndex))
    }).updateOneToMany(function(x, _) {
        var S = i[_],
            b = S.data.getItemGraphicEl(S.dataIndex);
        if (!(b && d[b.id])) {
            var T = wt(k(x, function(A) {
                    return a[A].data.getItemGraphicEl(a[A].dataIndex)
                }), function(A) {
                    return A && A !== b
                }),
                C = a[x[0]].data.hostModel;
            T.length && (w(T, function(A) {
                return Cu(A)
            }), b ? (Cu(b), jb(b), o = !0, Dm(po(b), po(T), S.divide, C, x[0], n)) : w(T, function(A) {
                return Kb(A, C, x[0])
            }))
        }
    }).updateManyToMany(function(x, _) {
        new tr(_, x, function(S) {
            return i[S].data.getId(i[S].dataIndex)
        }, function(S) {
            return a[S].data.getId(a[S].dataIndex)
        }).update(function(S, b) {
            y(x[S], _[b])
        }).execute()
    }).execute(), o && w(e, function(x) {
        var _ = x.data,
            S = _.hostModel,
            b = S && t.getViewOfSeriesModel(S),
            T = ma("update", S, 0);
        b && S.isAnimationEnabled() && T && T.duration > 0 && b.group.traverse(function(C) {
            C instanceof st && !C.animators.length && C.animateFrom({
                style: {
                    opacity: 0
                }
            }, T)
        })
    })
}

function SU(r) {
    var e = r.getModel("universalTransition").get("seriesKey");
    return e || r.id
}

function bU(r) {
    return z(r) ? r.sort().join(",") : r
}

function co(r) {
    if (r.hostModel) return r.hostModel.getModel("universalTransition").get("divideShape")
}

function NK(r, e) {
    var t = Y(),
        i = Y(),
        a = Y();
    w(r.oldSeries, function(o, s) {
        var l = r.oldDataGroupIds[s],
            u = r.oldData[s],
            f = SU(o),
            p = bU(f);
        i.set(p, {
            dataGroupId: l,
            data: u
        }), z(f) && w(f, function(c) {
            a.set(c, {
                key: p,
                dataGroupId: l,
                data: u
            })
        })
    });

    function n(o) {
        t.get(o) && hT("Duplicated seriesKey in universalTransition " + o)
    }
    return w(e.updatedSeries, function(o) {
        if (o.isUniversalTransitionEnabled() && o.isAnimationEnabled()) {
            var s = o.get("dataGroupId"),
                l = o.getData(),
                u = SU(o),
                f = bU(u),
                p = i.get(f);
            if (p) t.set(f, {
                oldSeries: [{
                    dataGroupId: p.dataGroupId,
                    divide: co(p.data),
                    data: p.data
                }],
                newSeries: [{
                    dataGroupId: s,
                    divide: co(l),
                    data: l
                }]
            });
            else if (z(u)) {
                var c = [];
                w(u, function(d) {
                    var m = i.get(d);
                    m.data && c.push({
                        dataGroupId: m.dataGroupId,
                        divide: co(m.data),
                        data: m.data
                    })
                }), c.length && t.set(f, {
                    oldSeries: c,
                    newSeries: [{
                        dataGroupId: s,
                        data: l,
                        divide: co(l)
                    }]
                })
            } else {
                var h = a.get(u);
                if (h) {
                    var v = t.get(h.key);
                    v || (v = {
                        oldSeries: [{
                            dataGroupId: h.dataGroupId,
                            data: h.data,
                            divide: co(h.data)
                        }],
                        newSeries: []
                    }, t.set(h.key, v)), v.newSeries.push({
                        dataGroupId: s,
                        data: l,
                        divide: co(l)
                    })
                }
            }
        }
    }), t
}

function wU(r, e) {
    for (var t = 0; t < r.length; t++) {
        var i = e.seriesIndex != null && e.seriesIndex === r[t].seriesIndex || e.seriesId != null && e.seriesId === r[t].id;
        if (i) return t
    }
}

function OK(r, e, t, i) {
    var a = [],
        n = [];
    w(Pt(r.from), function(o) {
        var s = wU(e.oldSeries, o);
        s >= 0 && a.push({
            dataGroupId: e.oldDataGroupIds[s],
            data: e.oldData[s],
            divide: co(e.oldData[s]),
            groupIdDim: o.dimension
        })
    }), w(Pt(r.to), function(o) {
        var s = wU(t.updatedSeries, o);
        if (s >= 0) {
            var l = t.updatedSeries[s].getData();
            n.push({
                dataGroupId: e.oldDataGroupIds[s],
                data: l,
                divide: co(l),
                groupIdDim: o.dimension
            })
        }
    }), a.length > 0 && n.length > 0 && CU(a, n, i)
}

function Jb(r) {
    r.registerUpdateLifecycle("series:beforeupdate", function(e, t, i) {
        w(Pt(i.seriesTransition), function(a) {
            w(Pt(a.to), function(n) {
                for (var o = i.updatedSeries, s = 0; s < o.length; s++)(n.seriesIndex != null && n.seriesIndex === o[s].seriesIndex || n.seriesId != null && n.seriesId === o[s].id) && (o[s][Of] = !0)
            })
        })
    }), r.registerUpdateLifecycle("series:transition", function(e, t, i) {
        var a = LK(t);
        if (a.oldSeries && i.updatedSeries && i.optionChanged) {
            var n = i.seriesTransition;
            if (n) w(Pt(n), function(h) {
                OK(h, a, i, t)
            });
            else {
                var o = NK(a, i);
                w(o.keys(), function(h) {
                    var v = o.get(h);
                    CU(v.oldSeries, v.newSeries, t)
                })
            }
            w(i.updatedSeries, function(h) {
                h[Of] && (h[Of] = !1)
            })
        }
        for (var s = e.getSeries(), l = a.oldSeries = [], u = a.oldDataGroupIds = [], f = a.oldData = [], p = 0; p < s.length; p++) {
            var c = s[p].getData();
            c.count() < TU && (l.push(s[p]), u.push(s[p].get("dataGroupId")), f.push(c))
        }
    })
}
_t([Lx]);
_t([Mx]);
_t([zx, Vx, Zx, i_, o_, w_, R_, H_, fS, pS, hS, ES, OS, US, WS, YS, ZS, XS, JS, t1, a1, C1]);
_t(P1);
_t(k1);
_t(yp);
_t(B1);
_t(Ip);
_t(G1);
_t(W1);
_t(tb);
_t(ab);
_t(aa);
_t(fb);
_t(pb);
_t(db);
_t(Sb);
_t(wb);
_t(Tb);
_t(Pb);
_t(kb);
_t(Hp);
_t(Zp);
_t(Bb);
_t(qp);
_t(Kp);
_t(Hb);
_t(Yb);
_t(Zb);
_t(Jb);
_t(ox);
export {
    Fe as Axis, At as ChartView, yt as ComponentModel, It as ComponentView, se as List, Dt as Model, EM as PRIORITY, Lt as SeriesModel, Fu as color, nnt as connect, cnt as dataTool, int as dependencies, ont as disConnect, nH as disconnect, snt as dispose, Ct as env, Zst as extendChartView, Hst as extendComponentModel, Wst as extendComponentView, Yst as extendSeriesModel, LL as format, unt as getCoordinateSystemDimensions, VM as getInstanceByDom, lnt as getInstanceById, pnt as getMap, ML as graphic, xL as helper, ant as init, Hf as innerDrawElementOnCanvas, hr as matrix, AL as number, ap as parseGeoJSON, ap as parseGeoJson, mr as registerAction, HM as registerCoordinateSystem, WM as registerLayout, O0 as registerLoading, Cy as registerLocale, YM as registerMap, FM as registerPostInit, GM as registerPostUpdate, P0 as registerPreprocessor, R0 as registerProcessor, BM as registerTheme, ZM as registerTransform, fv as registerUpdateLifecycle, Gn as registerVisual, fnt as setCanvasCreator, Im as setPlatformAPI, Pl as throttle, DL as time, _t as use, IL as util, Te as vector, rnt as version, G as zrUtil, Cg as zrender
};
/**i18n:6e1dbccd4192d215e143e99fb4b6a095cee3c871f5aa7cd380ca91231f35e8e0*/