'use strict';

$( document ).ready(function() {
  //preloader
  $(".preloader-holder").delay(300).animate({
    "opacity" : "0"
    }, 300, function() {
    $(".preloader-holder").css("display","none");
  });
});

$('.has_children a').on('click', function(){
  $(this).parent('.has_children').toggleClass('active');
  $(this).siblings('.sub-menu').toggleClass('active');
})

// menu options custom affix
var fixed_top = $(".header");
$(window).on("scroll", function(){
    if( $(window).scrollTop() > 50){  
        fixed_top.addClass("animated fadeInDown header-fixed");
    }
    else {
        fixed_top.removeClass("animated fadeInDown header-fixed");
    }
});

var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
  return new bootstrap.Tooltip(tooltipTriggerEl)
})

new WOW().init();

$('.paroller').paroller();

$(".overview-item").each(function () {
  $(this).isInViewport(function (status) {
    if (status === "entered") {
      for (var i = 0; i < document.querySelectorAll(".odometer").length; i++) {
        var el = document.querySelectorAll('.odometer')[i];
        el.innerHTML = el.getAttribute("data-odometer-final");
      }
    }
  });
});

$('.sidebar-toggeler').on('click', function(){
  $('.user-sidebar').toggleClass('active');
})


$('.investor-slider').slick({
  slidesToShow: 4,
  slidesToScroll: 1,
  arrows: false,
  dots: false,
  autoplay: true,
  cssEase: 'cubic-bezier(0.645, 0.045, 0.355, 1.000)',
  speed: 1500,
  autoplaySpeed: 1000,
  responsive: [
    {
      breakpoint: 1200,
      settings: {
        slidesToShow: 3
      }
    },
    {
      breakpoint: 768,
      settings: {
        slidesToShow: 2
      }
    },
    {
      breakpoint: 480,
      settings: {
        slidesToShow: 1
      }
    }
  ]
});


$('.testimonial-slider').slick({
  slidesToShow: 3,
  slidesToScroll: 1,
  arrows: false,
  dots: false,
  autoplay: false,
  cssEase: 'cubic-bezier(0.645, 0.045, 0.355, 1.000)',
  speed: 1500,
  autoplaySpeed: 1000,
  responsive: [
    {
      breakpoint: 1200,
      settings: {
        slidesToShow: 3
      }
    },
    {
      breakpoint: 992,
      settings: {
        slidesToShow: 2
      }
    },
    {
      breakpoint: 768,
      settings: {
        slidesToShow: 1
      }
    },
    {
      breakpoint: 480,
      settings: {
        slidesToShow: 1
      }
    }
  ]
});


$('.brand-slider').slick({
  slidesToShow: 6,
  slidesToScroll: 1,
  arrows: false,
  dots: false,
  autoplay: true,
  cssEase: 'cubic-bezier(0.645, 0.045, 0.355, 1.000)',
  speed: 1500,
  autoplaySpeed: 1000,
  responsive: [
    {
      breakpoint: 1200,
      settings: {
        slidesToShow: 5
      }
    },
    {
      breakpoint: 992,
      settings: {
        slidesToShow: 4
      }
    },
    {
      breakpoint: 768,
      settings: {
        slidesToShow: 3
      }
    },
    {
      breakpoint: 576,
      settings: {
        slidesToShow: 2
      }
    }
  ]
});



// bootstrap js


!(function (a) {
    "use strict";
    var e,
        t = localStorage.getItem("language"),
        s = "en";
    function n(e) {
        document.getElementById("header-lang-img") &&
            ("en" == e
                ? (document.getElementById("header-lang-img").src = "/user_assets/assets/images/flags/us.jpg")
                : "sp" == e
                ? (document.getElementById("header-lang-img").src = "/user_assets/assets/images/flags/spain.jpg")
                : "gr" == e
                ? (document.getElementById("header-lang-img").src = "/user_assets/assets/images/flags/germany.jpg")
                : "it" == e
                ? (document.getElementById("header-lang-img").src = "/user_assets/assets/images/flags/italy.jpg")
                : "ru" == e && (document.getElementById("header-lang-img").src = "/user_assets/assets/images/flags/russia.jpg"),
            localStorage.setItem("language", e),
            null == (t = localStorage.getItem("language")) && n(s),
            a.getJSON("/user_assets/assets/lang/" + t + ".json", function (e) {
                a("html").attr("lang", t),
                    a.each(e, function (e, t) {
                        "head" === e && a(document).attr("title", t.title), a("[key='" + e + "']").text(t);
                    });
            }));
    }
    function c() {
        for (var e = document.getElementById("topnav-menu-content").getElementsByTagName("a"), t = 0, a = e.length; t < a; t++)
            "nav-item dropdown active" === e[t].parentElement.getAttribute("class") && (e[t].parentElement.classList.remove("active"), null !== e[t].nextElementSibling && e[t].nextElementSibling.classList.remove("show"));
    }
    function r(e) {
        1 == a("#light-mode-switch").prop("checked") && "light-mode-switch" === e
            ? (a("html").removeAttr("dir"),
              a("#dark-mode-switch").prop("checked", !1),
              a("#rtl-mode-switch").prop("checked", !1),
              a("#dark-rtl-mode-switch").prop("checked", !1),
              a("#bootstrap-style").attr("href", "/user_assets/assets/css/bootstrap.min.css"),
              a("body").attr("data-layout-mode", "light"),
              a("#app-style").attr("href", "/user_assets/assets/css/app.min.css"),
              sessionStorage.setItem("is_visited", "light-mode-switch"))
            : 1 == a("#dark-mode-switch").prop("checked") && "dark-mode-switch" === e
            ? (a("html").removeAttr("dir"),
              a("#light-mode-switch").prop("checked", !1),
              a("#rtl-mode-switch").prop("checked", !1),
              a("#dark-rtl-mode-switch").prop("checked", !1),
              a("body").attr("data-layout-mode", "dark"),
              sessionStorage.setItem("is_visited", "dark-mode-switch"))
            : 1 == a("#rtl-mode-switch").prop("checked") && "rtl-mode-switch" === e
            ? (a("#light-mode-switch").prop("checked", !1),
              a("#dark-mode-switch").prop("checked", !1),
              a("#dark-rtl-mode-switch").prop("checked", !1),
              a("#bootstrap-style").attr("href", "/user_assets/assets/css/bootstrap-rtl.min.css"),
              a("#app-style").attr("href", "/user_assets/assets/css/app-rtl.min.css"),
              a("html").attr("dir", "rtl"),
              a("body").attr("data-layout-mode", "light"),
              sessionStorage.setItem("is_visited", "rtl-mode-switch"))
            : 1 == a("#dark-rtl-mode-switch").prop("checked") &&
              "dark-rtl-mode-switch" === e &&
              (a("#light-mode-switch").prop("checked", !1),
              a("#rtl-mode-switch").prop("checked", !1),
              a("#dark-mode-switch").prop("checked", !1),
              a("#bootstrap-style").attr("href", "/user_assets/assets/css/bootstrap-rtl.min.css"),
              a("#app-style").attr("href", "/user_assets/assets/css/app-rtl.min.css"),
              a("html").attr("dir", "rtl"),
              a("body").attr("data-layout-mode", "dark"),
              sessionStorage.setItem("is_visited", "dark-rtl-mode-switch"));
    }
    function o() {
        document.webkitIsFullScreen || document.mozFullScreen || document.msFullscreenElement || (console.log("pressed"), a("body").removeClass("fullscreen-enable"));
    }
    a("#side-menu").metisMenu(),
        a("#vertical-menu-btn").on("click", function (e) {
            e.preventDefault(), a("body").toggleClass("sidebar-enable"), 992 <= a(window).width() ? a("body").toggleClass("vertical-collpsed") : a("body").removeClass("vertical-collpsed");
        }),
        a("#sidebar-menu a").each(function () {
            var e = window.location.href.split(/[?#]/)[0];
            this.href == e &&
                (a(this).addClass("active"),
                a(this).parent().addClass("mm-active"),
                a(this).parent().parent().addClass("mm-show"),
                a(this).parent().parent().prev().addClass("mm-active"),
                a(this).parent().parent().parent().addClass("mm-active"),
                a(this).parent().parent().parent().parent().addClass("mm-show"),
                a(this).parent().parent().parent().parent().parent().addClass("mm-active"));
        }),
        a(document).ready(function () {
            var e;
            0 < a("#sidebar-menu").length &&
                0 < a("#sidebar-menu .mm-active .active").length &&
                300 < (e = a("#sidebar-menu .mm-active .active").offset().top) &&
                ((e -= 300), a(".vertical-menu .simplebar-content-wrapper").animate({ scrollTop: e }, "slow"));
        }),
        a(".navbar-nav a").each(function () {
            var e = window.location.href.split(/[?#]/)[0];
            this.href == e &&
                (a(this).addClass("active"),
                a(this).parent().addClass("active"),
                a(this).parent().parent().addClass("active"),
                a(this).parent().parent().parent().addClass("active"),
                a(this).parent().parent().parent().parent().addClass("active"),
                a(this).parent().parent().parent().parent().parent().addClass("active"),
                a(this).parent().parent().parent().parent().parent().parent().addClass("active"));
        }),
        a('[data-bs-toggle="fullscreen"]').on("click", function (e) {
            e.preventDefault(),
                a("body").toggleClass("fullscreen-enable"),
                document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement
                    ? document.cancelFullScreen
                        ? document.cancelFullScreen()
                        : document.mozCancelFullScreen
                        ? document.mozCancelFullScreen()
                        : document.webkitCancelFullScreen && document.webkitCancelFullScreen()
                    : document.documentElement.requestFullscreen
                    ? document.documentElement.requestFullscreen()
                    : document.documentElement.mozRequestFullScreen
                    ? document.documentElement.mozRequestFullScreen()
                    : document.documentElement.webkitRequestFullscreen && document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
        }),
        document.addEventListener("fullscreenchange", o),
        document.addEventListener("webkitfullscreenchange", o),
        document.addEventListener("mozfullscreenchange", o),
        a(".right-bar-toggle").on("click", function (e) {
            a("body").toggleClass("right-bar-enabled");
        }),
        a(document).on("click", "body", function (e) {
            0 < a(e.target).closest(".right-bar-toggle, .right-bar").length || a("body").removeClass("right-bar-enabled");
        }),
        (function () {
            if (document.getElementById("topnav-menu-content")) {
                for (var e = document.getElementById("topnav-menu-content").getElementsByTagName("a"), t = 0, a = e.length; t < a; t++)
                    e[t].onclick = function (e) {
                        "#" === e.target.getAttribute("href") && (e.target.parentElement.classList.toggle("active"), e.target.nextElementSibling.classList.toggle("show"));
                    };
                window.addEventListener("resize", c);
            }
        })(),
        [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')).map(function (e) {
            return new bootstrap.Tooltip(e);
        }),
        [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]')).map(function (e) {
            return new bootstrap.Popover(e);
        }),
        [].slice.call(document.querySelectorAll(".offcanvas")).map(function (e) {
            return new bootstrap.Offcanvas(e);
        }),
        window.sessionStorage &&
            ((e = sessionStorage.getItem("is_visited"))
                ? (a(".right-bar input:checkbox").prop("checked", !1), a("#" + e).prop("checked", !0), r(e))
                : "rtl" === a("html").attr("dir") && "dark" === a("body").attr("data-layout-mode")
                ? (a("#dark-rtl-mode-switch").prop("checked", !0), a("#light-mode-switch").prop("checked", !1), sessionStorage.setItem("is_visited", "dark-rtl-mode-switch"), r(e))
                : "rtl" === a("html").attr("dir")
                ? (a("#rtl-mode-switch").prop("checked", !0), a("#light-mode-switch").prop("checked", !1), sessionStorage.setItem("is_visited", "rtl-mode-switch"), r(e))
                : "dark" === a("body").attr("data-layout-mode")
                ? (a("#dark-mode-switch").prop("checked", !0), a("#light-mode-switch").prop("checked", !1), sessionStorage.setItem("is_visited", "dark-mode-switch"), r(e))
                : sessionStorage.setItem("is_visited", "light-mode-switch")),
        a("#light-mode-switch, #dark-mode-switch, #rtl-mode-switch, #dark-rtl-mode-switch").on("change", function (e) {
            r(e.target.id);
        }),
        a("#password-addon").on("click", function () {
            0 < a(this).siblings("input").length && ("password" == a(this).siblings("input").attr("type") ? a(this).siblings("input").attr("type", "input") : a(this).siblings("input").attr("type", "password"));
        }),
        null != t && t !== s && n(t),
        a(".language").on("click", function (e) {
            n(a(this).attr("data-lang"));
        }),
        a(window).on("load", function () {
            a("#status").fadeOut(), a("#preloader").delay(350).fadeOut("slow");
        }),
        Waves.init(),
        a("#checkAll").on("change", function () {
            a(".table-check .form-check-input").prop("checked", a(this).prop("checked"));
        }),
        a(".table-check .form-check-input").change(function () {
            a(".table-check .form-check-input:checked").length == a(".table-check .form-check-input").length ? a("#checkAll").prop("checked", !0) : a("#checkAll").prop("checked", !1);
        });
})(jQuery);

function getChartColorsArray(e) {
    if (null !== document.getElementById(e)) {
        var t = document.getElementById(e).getAttribute("data-colors");
        if (t)
            return (t = JSON.parse(t)).map(function(e) {
                var t = e.replace(" ", "");
                if (-1 === t.indexOf(",")) {
                    var a = getComputedStyle(document.documentElement).getPropertyValue(t);
                    return a || t
                }
                var r = e.split(",");
                return 2 != r.length ? t : "rgba(" + getComputedStyle(document.documentElement).getPropertyValue(r[0]) + "," + r[1] + ")"
            })
    }
}
var areaSparkline1Colors = getChartColorsArray("area-sparkline-chart-1");
areaSparkline1Colors && (options = {
    series: [{
        name: "BTC",
        data: [12, 14, 2, 47, 42, 15, 47, 75, 65, 19, 14]
    }],
    chart: {
        type: "area",
        height: 40,
        sparkline: {
            enabled: !0
        }
    },
    stroke: {
        curve: "smooth",
        width: 2
    },
    colors: areaSparkline1Colors,
    fill: {
        type: "gradient",
        gradient: {
            shadeIntensity: 1,
            inverseColors: !1,
            opacityFrom: .45,
            opacityTo: .05,
            stops: [25, 100, 100, 100]
        }
    },
    tooltip: {
        fixed: {
            enabled: !1
        },
        x: {
            show: !1
        },
        marker: {
            show: !1
        }
    }
},
(chart = new ApexCharts(document.querySelector("#area-sparkline-chart-1"),options)).render());
var areaSparkline2Colors = getChartColorsArray("area-sparkline-chart-2");
areaSparkline2Colors && (options = {
    series: [{
        name: "ETH",
        data: [25, 66, 41, 89, 63, 25, 44, 12, 36, 9, 54]
    }],
    chart: {
        type: "area",
        height: 40,
        sparkline: {
            enabled: !0
        }
    },
    stroke: {
        curve: "smooth",
        width: 2
    },
    colors: areaSparkline2Colors,
    fill: {
        type: "gradient",
        gradient: {
            shadeIntensity: 1,
            inverseColors: !1,
            opacityFrom: .45,
            opacityTo: .05,
            stops: [25, 100, 100, 100]
        }
    },
    tooltip: {
        fixed: {
            enabled: !1
        },
        x: {
            show: !1
        },
        marker: {
            show: !1
        }
    }
},
(chart = new ApexCharts(document.querySelector("#area-sparkline-chart-2"),options)).render());
var areaSparkline3Colors = getChartColorsArray("area-sparkline-chart-3");
areaSparkline3Colors && (options = {
    series: [{
        name: "LTC",
        data: [35, 53, 93, 47, 54, 24, 47, 75, 65, 19, 14]
    }],
    chart: {
        type: "area",
        height: 40,
        sparkline: {
            enabled: !0
        }
    },
    stroke: {
        curve: "smooth",
        width: 2
    },
    colors: areaSparkline3Colors,
    fill: {
        type: "gradient",
        gradient: {
            shadeIntensity: 1,
            inverseColors: !1,
            opacityFrom: .45,
            opacityTo: .05,
            stops: [25, 100, 100, 100]
        }
    },
    tooltip: {
        fixed: {
            enabled: !1
        },
        x: {
            show: !1
        },
        marker: {
            show: !1
        }
    }
},
(chart = new ApexCharts(document.querySelector("#area-sparkline-chart-3"),options)).render());
var walletOptions, walletBalanceColors = getChartColorsArray("wallet-balance-chart");
walletBalanceColors && (walletOptions = {
    series: [76, 67, 61],
    chart: {
        height: 302,
        type: "radialBar"
    },
    plotOptions: {
        radialBar: {
            offsetY: 0,
            startAngle: 0,
            endAngle: 270,
            hollow: {
                margin: 5,
                size: "35%",
                background: "transparent",
                image: void 0
            },
            track: {
                show: !0,
                startAngle: void 0,
                endAngle: void 0,
                background: "#f2f2f2",
                strokeWidth: "97%",
                opacity: 1,
                margin: 12,
                dropShadow: {
                    enabled: !1,
                    top: 0,
                    left: 0,
                    blur: 3,
                    opacity: .5
                }
            },
            dataLabels: {
                name: {
                    show: !0,
                    fontSize: "16px",
                    fontWeight: 600,
                    offsetY: -10
                },
                value: {
                    show: !0,
                    fontSize: "14px",
                    offsetY: 4,
                    formatter: function(e) {
                        return e + "%"
                    }
                },
                total: {
                    show: !0,
                    label: "Total",
                    color: "#373d3f",
                    fontSize: "16px",
                    fontFamily: void 0,
                    fontWeight: 600,
                    formatter: function(e) {
                        return e.globals.seriesTotals.reduce(function(e, t) {
                            return e + t
                        }, 0) + "%"
                    }
                }
            }
        }
    },
    stroke: {
        lineCap: "round"
    },
    colors: walletBalanceColors,
    labels: ["Ethereum", "Bitcoin", "Litecoin"],
    legend: {
        show: !1
    }
},
(chart = new ApexCharts(document.querySelector("#wallet-balance-chart"),walletOptions)).render());
var options, chart, overviewTimelineColors = getChartColorsArray("overview-chart-timeline");
overviewTimelineColors && (options = {
    series: [{
        name: "BTC",
        data: [[13273596e5, 30.95], [1327446e6, 31.34], [13275324e5, 31.18], [13276188e5, 31.05], [1327878e6, 31], [13279644e5, 30.95], [13280508e5, 31.24], [13281372e5, 31.29], [13282236e5, 31.85], [13284828e5, 31.86], [13285692e5, 32.28], [13286556e5, 32.1], [1328742e6, 32.65], [13288284e5, 32.21], [13290876e5, 32.35], [1329174e6, 32.44], [13292604e5, 32.46], [13293468e5, 32.86], [13294332e5, 32.75], [13297788e5, 32.54], [13298652e5, 32.33], [13299516e5, 32.97], [1330038e6, 33.41], [13302972e5, 33.27], [13303836e5, 33.27], [133047e7, 32.89], [13305564e5, 33.1], [13306428e5, 33.73], [1330902e6, 33.22], [13309884e5, 31.99], [13310748e5, 32.41], [13311612e5, 33.05], [13312476e5, 33.64], [13315068e5, 33.56], [13315932e5, 34.22], [13316796e5, 33.77], [1331766e6, 34.17], [13318524e5, 33.82], [13321116e5, 34.51], [1332198e6, 33.16], [13322844e5, 33.56], [13323708e5, 33.71], [13324572e5, 33.81], [13327128e5, 34.4], [13327992e5, 34.63], [13328856e5, 34.46], [1332972e6, 34.48], [13330584e5, 34.31], [13333176e5, 34.7], [1333404e6, 34.31], [13334904e5, 33.46], [13335768e5, 33.59], [13339224e5, 33.22], [13340088e5, 32.61], [13340952e5, 33.01], [13341816e5, 33.55], [1334268e6, 33.18], [13345272e5, 32.84], [13346136e5, 33.84], [13347e8, 33.39], [13347864e5, 32.91], [13348728e5, 33.06], [1335132e6, 32.62], [13352184e5, 32.4], [13353048e5, 33.13], [13353912e5, 33.26], [13354776e5, 33.58], [13357368e5, 33.55], [13358232e5, 33.77], [13359096e5, 33.76], [1335996e6, 33.32], [13360824e5, 32.61], [13363416e5, 32.52], [1336428e6, 32.67], [13365144e5, 32.52], [13366008e5, 31.92], [13366872e5, 32.2], [13369464e5, 32.23], [13370328e5, 32.33], [13371192e5, 32.36], [13372056e5, 32.01], [1337292e6, 31.31], [13375512e5, 32.01], [13376376e5, 32.01], [1337724e6, 32.18], [13378104e5, 31.54], [13378968e5, 31.6], [13382424e5, 32.05], [13383288e5, 31.29], [13384152e5, 31.05], [13385016e5, 29.82], [13387608e5, 30.31], [13388472e5, 30.7], [13389336e5, 31.69], [133902e7, 31.32], [13391064e5, 31.65], [13393656e5, 31.13], [1339452e6, 31.77], [13395384e5, 31.79], [13396248e5, 31.67], [13397112e5, 32.39], [13399704e5, 32.63], [13400568e5, 32.89], [13401432e5, 31.99], [13402296e5, 31.23], [1340316e6, 31.57], [13405752e5, 30.84], [13406616e5, 31.07], [1340748e6, 31.41], [13408344e5, 31.17], [13409208e5, 32.37], [134118e7, 32.19], [13412664e5, 32.51], [13414392e5, 32.53], [13415256e5, 31.37], [13417848e5, 30.43], [13418712e5, 30.44], [13419576e5, 30.2], [1342044e6, 30.14], [13421304e5, 30.65], [13423896e5, 30.4], [1342476e6, 30.65], [13425624e5, 31.43], [13426488e5, 31.89], [13427352e5, 31.38], [13429944e5, 30.64], [13430808e5, 30.02], [13431672e5, 30.33], [13432536e5, 30.95], [134334e7, 31.89], [13435992e5, 31.01], [13436856e5, 30.88], [1343772e6, 30.69], [13438584e5, 30.58], [13439448e5, 32.02], [1344204e6, 32.14], [13442904e5, 32.37], [13443768e5, 32.51], [13444632e5, 32.65], [13445496e5, 32.64], [13448088e5, 32.27], [13448952e5, 32.1], [13449816e5, 32.91], [1345068e6, 33.65], [13451544e5, 33.8], [13454136e5, 33.92], [13455e8, 33.75], [13455864e5, 33.84], [13456728e5, 33.5], [13457592e5, 32.26], [13460184e5, 32.32], [13461048e5, 32.06], [13461912e5, 31.96], [13462776e5, 31.46], [1346364e6, 31.27], [13467096e5, 31.43], [1346796e6, 32.26], [13468824e5, 32.79], [13469688e5, 32.46], [1347228e6, 32.13], [13473144e5, 32.43], [13474008e5, 32.42], [13474872e5, 32.81], [13475736e5, 33.34], [13478328e5, 33.41], [13479192e5, 32.57], [13480056e5, 33.12], [1348092e6, 34.53], [13481784e5, 33.83], [13484376e5, 33.41], [1348524e6, 32.9], [13486104e5, 32.53], [13486968e5, 32.8], [13487832e5, 32.44], [13490424e5, 32.62], [13491288e5, 32.57], [13492152e5, 32.6], [13493016e5, 32.68], [1349388e6, 32.47], [13496472e5, 32.23], [13497336e5, 31.68], [134982e7, 31.51], [13499064e5, 31.78], [13499928e5, 31.94], [1350252e6, 32.33], [13503384e5, 33.24], [13504248e5, 33.44], [13505112e5, 33.48], [13505976e5, 33.24], [13508568e5, 33.49], [13509432e5, 33.31], [13510296e5, 33.36], [1351116e6, 33.4], [13512024e5, 34.01], [1351638e6, 34.02], [13517244e5, 34.36], [13518108e5, 34.39], [135207e7, 34.24], [13521564e5, 34.39], [13522428e5, 33.47], [13523292e5, 32.98], [13524156e5, 32.9], [13526748e5, 32.7], [13527612e5, 32.54], [13528476e5, 32.23], [1352934e6, 32.64], [13530204e5, 32.65], [13532796e5, 32.92], [1353366e6, 32.64], [13534524e5, 32.84], [13536252e5, 33.4], [13538844e5, 33.3], [13539708e5, 33.18], [13540572e5, 33.88], [13541436e5, 34.09], [135423e7, 34.61], [13544892e5, 34.7], [13545756e5, 35.3], [1354662e6, 35.4], [13547484e5, 35.14], [13548348e5, 35.48], [1355094e6, 35.75], [13551804e5, 35.54], [13552668e5, 35.96], [13553532e5, 35.53], [13554396e5, 37.56], [13556988e5, 37.42], [13557852e5, 37.49], [13558716e5, 38.09], [1355958e6, 37.87], [13560444e5, 37.71], [13563036e5, 37.53], [13564764e5, 37.55], [13565628e5, 37.3], [13566492e5, 36.9], [13569084e5, 37.68], [13570812e5, 38.34], [13571676e5, 37.75], [1357254e6, 38.13], [13575132e5, 37.94], [13575996e5, 38.14], [1357686e6, 38.66], [13577724e5, 38.62], [13578588e5, 38.09], [1358118e6, 38.16], [13582044e5, 38.15], [13582908e5, 37.88], [13583772e5, 37.73], [13584636e5, 37.98], [13588092e5, 37.95], [13588956e5, 38.25], [1358982e6, 38.1], [13590684e5, 38.32], [13593276e5, 38.24], [1359414e6, 38.52], [13595004e5, 37.94], [13595868e5, 37.83], [13596732e5, 38.34], [13599324e5, 38.1], [13600188e5, 38.51], [13601052e5, 38.4], [13601916e5, 38.07], [1360278e6, 39.12], [13605372e5, 38.64], [13606236e5, 38.89], [136071e7, 38.81], [13607964e5, 38.61], [13608828e5, 38.63], [13612284e5, 38.99], [13613148e5, 38.77], [13614012e5, 38.34], [13614876e5, 38.55], [13617468e5, 38.11], [13618332e5, 38.59], [13619196e5, 39.6]]
    }],
    chart: {
        type: "area",
        height: 240,
        toolbar: "false"
    },
    dataLabels: {
        enabled: !1
    },
    stroke: {
        curve: "smooth",
        width: 2
    },
    markers: {
        size: 0,
        style: "hollow"
    },
    xaxis: {
        type: "datetime",
        min: new Date("01 Mar 2012").getTime(),
        tickAmount: 6
    },
    tooltip: {
        x: {
            format: "dd MMM yyyy"
        }
    },
    colors: overviewTimelineColors,
    fill: {
        type: "gradient",
        gradient: {
            shadeIntensity: 1,
            opacityFrom: .6,
            opacityTo: .05,
            stops: [42, 100, 100, 100]
        }
    }
},
(chart = new ApexCharts(document.querySelector("#overview-chart-timeline"),options)).render());
var resetCssClasses = function(e) {
    var t = document.querySelectorAll("button");
    Array.prototype.forEach.call(t, function(e) {
        e.classList.remove("active")
    }),
    e.target.classList.add("active")
};
document.querySelector("#one_month").addEventListener("click", function(e) {
    resetCssClasses(e),
    chart.updateOptions({
        xaxis: {
            min: new Date("28 Jan 2013").getTime(),
            max: new Date("27 Feb 2013").getTime()
        }
    })
}),
document.querySelector("#six_months").addEventListener("click", function(e) {
    resetCssClasses(e),
    chart.updateOptions({
        xaxis: {
            min: new Date("27 Sep 2012").getTime(),
            max: new Date("27 Feb 2013").getTime()
        }
    })
}),
document.querySelector("#one_year").addEventListener("click", function(e) {
    resetCssClasses(e),
    chart.updateOptions({
        xaxis: {
            min: new Date("27 Feb 2012").getTime(),
            max: new Date("27 Feb 2013").getTime()
        }
    })
}),
document.querySelector("#all").addEventListener("click", function(e) {
    resetCssClasses(e),
    chart.updateOptions({
        xaxis: {
            min: void 0,
            max: void 0
        }
    })
});

!(function (a) {
    "use strict";
    var e,
        t = localStorage.getItem("language"),
        s = "en";
    function n(e) {
        document.getElementById("header-lang-img") &&
            ("en" == e
                ? (document.getElementById("header-lang-img").src = "/user_assets/assets/images/flags/us.jpg")
                : "sp" == e
                ? (document.getElementById("header-lang-img").src = "/user_assets/assets/images/flags/spain.jpg")
                : "gr" == e
                ? (document.getElementById("header-lang-img").src = "/user_assets/assets/images/flags/germany.jpg")
                : "it" == e
                ? (document.getElementById("header-lang-img").src = "/user_assets/assets/images/flags/italy.jpg")
                : "ru" == e && (document.getElementById("header-lang-img").src = "/user_assets/assets/images/flags/russia.jpg"),
            localStorage.setItem("language", e),
            null == (t = localStorage.getItem("language")) && n(s),
            a.getJSON("/user_assets/assets/lang/" + t + ".json", function (e) {
                a("html").attr("lang", t),
                    a.each(e, function (e, t) {
                        "head" === e && a(document).attr("title", t.title), a("[key='" + e + "']").text(t);
                    });
            }));
    }
    function c() {
        for (var e = document.getElementById("topnav-menu-content").getElementsByTagName("a"), t = 0, a = e.length; t < a; t++)
            "nav-item dropdown active" === e[t].parentElement.getAttribute("class") && (e[t].parentElement.classList.remove("active"), null !== e[t].nextElementSibling && e[t].nextElementSibling.classList.remove("show"));
    }
    function r(e) {
        1 == a("#light-mode-switch").prop("checked") && "light-mode-switch" === e
            ? (a("html").removeAttr("dir"),
              a("#dark-mode-switch").prop("checked", !1),
              a("#rtl-mode-switch").prop("checked", !1),
              a("#dark-rtl-mode-switch").prop("checked", !1),
              a("#bootstrap-style").attr("href", "/user_assets/assets/css/bootstrap.min.css"),
              a("body").attr("data-layout-mode", "light"),
              a("#app-style").attr("href", "/user_assets/assets/css/app.min.css"),
              sessionStorage.setItem("is_visited", "light-mode-switch"))
            : 1 == a("#dark-mode-switch").prop("checked") && "dark-mode-switch" === e
            ? (a("html").removeAttr("dir"),
              a("#light-mode-switch").prop("checked", !1),
              a("#rtl-mode-switch").prop("checked", !1),
              a("#dark-rtl-mode-switch").prop("checked", !1),
              a("body").attr("data-layout-mode", "dark"),
              sessionStorage.setItem("is_visited", "dark-mode-switch"))
            : 1 == a("#rtl-mode-switch").prop("checked") && "rtl-mode-switch" === e
            ? (a("#light-mode-switch").prop("checked", !1),
              a("#dark-mode-switch").prop("checked", !1),
              a("#dark-rtl-mode-switch").prop("checked", !1),
              a("#bootstrap-style").attr("href", "/user_assets/assets/css/bootstrap-rtl.min.css"),
              a("#app-style").attr("href", "/user_assets/assets/css/app-rtl.min.css"),
              a("html").attr("dir", "rtl"),
              a("body").attr("data-layout-mode", "light"),
              sessionStorage.setItem("is_visited", "rtl-mode-switch"))
            : 1 == a("#dark-rtl-mode-switch").prop("checked") &&
              "dark-rtl-mode-switch" === e &&
              (a("#light-mode-switch").prop("checked", !1),
              a("#rtl-mode-switch").prop("checked", !1),
              a("#dark-mode-switch").prop("checked", !1),
              a("#bootstrap-style").attr("href", "/user_assets/assets/css/bootstrap-rtl.min.css"),
              a("#app-style").attr("href", "/user_assets/assets/css/app-rtl.min.css"),
              a("html").attr("dir", "rtl"),
              a("body").attr("data-layout-mode", "dark"),
              sessionStorage.setItem("is_visited", "dark-rtl-mode-switch"));
    }
    function o() {
        document.webkitIsFullScreen || document.mozFullScreen || document.msFullscreenElement || (console.log("pressed"), a("body").removeClass("fullscreen-enable"));
    }
    a("#side-menu").metisMenu(),
        a("#vertical-menu-btn").on("click", function (e) {
            e.preventDefault(), a("body").toggleClass("sidebar-enable"), 992 <= a(window).width() ? a("body").toggleClass("vertical-collpsed") : a("body").removeClass("vertical-collpsed");
        }),
        a("#sidebar-menu a").each(function () {
            var e = window.location.href.split(/[?#]/)[0];
            this.href == e &&
                (a(this).addClass("active"),
                a(this).parent().addClass("mm-active"),
                a(this).parent().parent().addClass("mm-show"),
                a(this).parent().parent().prev().addClass("mm-active"),
                a(this).parent().parent().parent().addClass("mm-active"),
                a(this).parent().parent().parent().parent().addClass("mm-show"),
                a(this).parent().parent().parent().parent().parent().addClass("mm-active"));
        }),
        a(document).ready(function () {
            var e;
            0 < a("#sidebar-menu").length &&
                0 < a("#sidebar-menu .mm-active .active").length &&
                300 < (e = a("#sidebar-menu .mm-active .active").offset().top) &&
                ((e -= 300), a(".vertical-menu .simplebar-content-wrapper").animate({ scrollTop: e }, "slow"));
        }),
        a(".navbar-nav a").each(function () {
            var e = window.location.href.split(/[?#]/)[0];
            this.href == e &&
                (a(this).addClass("active"),
                a(this).parent().addClass("active"),
                a(this).parent().parent().addClass("active"),
                a(this).parent().parent().parent().addClass("active"),
                a(this).parent().parent().parent().parent().addClass("active"),
                a(this).parent().parent().parent().parent().parent().addClass("active"),
                a(this).parent().parent().parent().parent().parent().parent().addClass("active"));
        }),
        a('[data-bs-toggle="fullscreen"]').on("click", function (e) {
            e.preventDefault(),
                a("body").toggleClass("fullscreen-enable"),
                document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement
                    ? document.cancelFullScreen
                        ? document.cancelFullScreen()
                        : document.mozCancelFullScreen
                        ? document.mozCancelFullScreen()
                        : document.webkitCancelFullScreen && document.webkitCancelFullScreen()
                    : document.documentElement.requestFullscreen
                    ? document.documentElement.requestFullscreen()
                    : document.documentElement.mozRequestFullScreen
                    ? document.documentElement.mozRequestFullScreen()
                    : document.documentElement.webkitRequestFullscreen && document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
        }),
        document.addEventListener("fullscreenchange", o),
        document.addEventListener("webkitfullscreenchange", o),
        document.addEventListener("mozfullscreenchange", o),
        a(".right-bar-toggle").on("click", function (e) {
            a("body").toggleClass("right-bar-enabled");
        }),
        a(document).on("click", "body", function (e) {
            0 < a(e.target).closest(".right-bar-toggle, .right-bar").length || a("body").removeClass("right-bar-enabled");
        }),
        (function () {
            if (document.getElementById("topnav-menu-content")) {
                for (var e = document.getElementById("topnav-menu-content").getElementsByTagName("a"), t = 0, a = e.length; t < a; t++)
                    e[t].onclick = function (e) {
                        "#" === e.target.getAttribute("href") && (e.target.parentElement.classList.toggle("active"), e.target.nextElementSibling.classList.toggle("show"));
                    };
                window.addEventListener("resize", c);
            }
        })(),
        [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')).map(function (e) {
            return new bootstrap.Tooltip(e);
        }),
        [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]')).map(function (e) {
            return new bootstrap.Popover(e);
        }),
        [].slice.call(document.querySelectorAll(".offcanvas")).map(function (e) {
            return new bootstrap.Offcanvas(e);
        }),
        window.sessionStorage &&
            ((e = sessionStorage.getItem("is_visited"))
                ? (a(".right-bar input:checkbox").prop("checked", !1), a("#" + e).prop("checked", !0), r(e))
                : "rtl" === a("html").attr("dir") && "dark" === a("body").attr("data-layout-mode")
                ? (a("#dark-rtl-mode-switch").prop("checked", !0), a("#light-mode-switch").prop("checked", !1), sessionStorage.setItem("is_visited", "dark-rtl-mode-switch"), r(e))
                : "rtl" === a("html").attr("dir")
                ? (a("#rtl-mode-switch").prop("checked", !0), a("#light-mode-switch").prop("checked", !1), sessionStorage.setItem("is_visited", "rtl-mode-switch"), r(e))
                : "dark" === a("body").attr("data-layout-mode")
                ? (a("#dark-mode-switch").prop("checked", !0), a("#light-mode-switch").prop("checked", !1), sessionStorage.setItem("is_visited", "dark-mode-switch"), r(e))
                : sessionStorage.setItem("is_visited", "light-mode-switch")),
        a("#light-mode-switch, #dark-mode-switch, #rtl-mode-switch, #dark-rtl-mode-switch").on("change", function (e) {
            r(e.target.id);
        }),
        a("#password-addon").on("click", function () {
            0 < a(this).siblings("input").length && ("password" == a(this).siblings("input").attr("type") ? a(this).siblings("input").attr("type", "input") : a(this).siblings("input").attr("type", "password"));
        }),
        null != t && t !== s && n(t),
        a(".language").on("click", function (e) {
            n(a(this).attr("data-lang"));
        }),
        a(window).on("load", function () {
            a("#status").fadeOut(), a("#preloader").delay(350).fadeOut("slow");
        }),
        Waves.init(),
        a("#checkAll").on("change", function () {
            a(".table-check .form-check-input").prop("checked", a(this).prop("checked"));
        }),
        a(".table-check .form-check-input").change(function () {
            a(".table-check .form-check-input:checked").length == a(".table-check .form-check-input").length ? a("#checkAll").prop("checked", !0) : a("#checkAll").prop("checked", !1);
        });
})(jQuery);
/*!
 * ApexCharts v3.22.2
 * (c) 2018-2020 Juned Chhipa
 * Released under the MIT License.
 */
!function(t, e) {
    "object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : (t = "undefined" != typeof globalThis ? globalThis : t || self).ApexCharts = e()
}(this, (function() {
    "use strict";
    function t(e) {
        return (t = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
            return typeof t
        }
        : function(t) {
            return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
        }
        )(e)
    }
    function e(t, e) {
        if (!(t instanceof e))
            throw new TypeError("Cannot call a class as a function")
    }
    function i(t, e) {
        for (var i = 0; i < e.length; i++) {
            var a = e[i];
            a.enumerable = a.enumerable || !1,
            a.configurable = !0,
            "value"in a && (a.writable = !0),
            Object.defineProperty(t, a.key, a)
        }
    }
    function a(t, e, a) {
        return e && i(t.prototype, e),
        a && i(t, a),
        t
    }
    function s(t, e, i) {
        return e in t ? Object.defineProperty(t, e, {
            value: i,
            enumerable: !0,
            configurable: !0,
            writable: !0
        }) : t[e] = i,
        t
    }
    function r(t, e) {
        var i = Object.keys(t);
        if (Object.getOwnPropertySymbols) {
            var a = Object.getOwnPropertySymbols(t);
            e && (a = a.filter((function(e) {
                return Object.getOwnPropertyDescriptor(t, e).enumerable
            }
            ))),
            i.push.apply(i, a)
        }
        return i
    }
    function n(t) {
        for (var e = 1; e < arguments.length; e++) {
            var i = null != arguments[e] ? arguments[e] : {};
            e % 2 ? r(Object(i), !0).forEach((function(e) {
                s(t, e, i[e])
            }
            )) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(i)) : r(Object(i)).forEach((function(e) {
                Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(i, e))
            }
            ))
        }
        return t
    }
    function o(t, e) {
        if ("function" != typeof e && null !== e)
            throw new TypeError("Super expression must either be null or a function");
        t.prototype = Object.create(e && e.prototype, {
            constructor: {
                value: t,
                writable: !0,
                configurable: !0
            }
        }),
        e && h(t, e)
    }
    function l(t) {
        return (l = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) {
            return t.__proto__ || Object.getPrototypeOf(t)
        }
        )(t)
    }
    function h(t, e) {
        return (h = Object.setPrototypeOf || function(t, e) {
            return t.__proto__ = e,
            t
        }
        )(t, e)
    }
    function c(t, e) {
        return !e || "object" != typeof e && "function" != typeof e ? function(t) {
            if (void 0 === t)
                throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return t
        }(t) : e
    }
    function d(t) {
        var e = function() {
            if ("undefined" == typeof Reflect || !Reflect.construct)
                return !1;
            if (Reflect.construct.sham)
                return !1;
            if ("function" == typeof Proxy)
                return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function() {}
                ))),
                !0
            } catch (t) {
                return !1
            }
        }();
        return function() {
            var i, a = l(t);
            if (e) {
                var s = l(this).constructor;
                i = Reflect.construct(a, arguments, s)
            } else
                i = a.apply(this, arguments);
            return c(this, i)
        }
    }
    function g(t) {
        return function(t) {
            if (Array.isArray(t))
                return u(t)
        }(t) || function(t) {
            if ("undefined" != typeof Symbol && Symbol.iterator in Object(t))
                return Array.from(t)
        }(t) || function(t, e) {
            if (!t)
                return;
            if ("string" == typeof t)
                return u(t, e);
            var i = Object.prototype.toString.call(t).slice(8, -1);
            "Object" === i && t.constructor && (i = t.constructor.name);
            if ("Map" === i || "Set" === i)
                return Array.from(t);
            if ("Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))
                return u(t, e)
        }(t) || function() {
            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }()
    }
    function u(t, e) {
        (null == e || e > t.length) && (e = t.length);
        for (var i = 0, a = new Array(e); i < e; i++)
            a[i] = t[i];
        return a
    }
    var f = function() {
        function i() {
            e(this, i)
        }
        return a(i, [{
            key: "shadeRGBColor",
            value: function(t, e) {
                var i = e.split(",")
                  , a = t < 0 ? 0 : 255
                  , s = t < 0 ? -1 * t : t
                  , r = parseInt(i[0].slice(4), 10)
                  , n = parseInt(i[1], 10)
                  , o = parseInt(i[2], 10);
                return "rgb(" + (Math.round((a - r) * s) + r) + "," + (Math.round((a - n) * s) + n) + "," + (Math.round((a - o) * s) + o) + ")"
            }
        }, {
            key: "shadeHexColor",
            value: function(t, e) {
                var i = parseInt(e.slice(1), 16)
                  , a = t < 0 ? 0 : 255
                  , s = t < 0 ? -1 * t : t
                  , r = i >> 16
                  , n = i >> 8 & 255
                  , o = 255 & i;
                return "#" + (16777216 + 65536 * (Math.round((a - r) * s) + r) + 256 * (Math.round((a - n) * s) + n) + (Math.round((a - o) * s) + o)).toString(16).slice(1)
            }
        }, {
            key: "shadeColor",
            value: function(t, e) {
                return i.isColorHex(e) ? this.shadeHexColor(t, e) : this.shadeRGBColor(t, e)
            }
        }], [{
            key: "bind",
            value: function(t, e) {
                return function() {
                    return t.apply(e, arguments)
                }
            }
        }, {
            key: "isObject",
            value: function(e) {
                return e && "object" === t(e) && !Array.isArray(e) && null != e
            }
        }, {
            key: "listToArray",
            value: function(t) {
                var e, i = [];
                for (e = 0; e < t.length; e++)
                    i[e] = t[e];
                return i
            }
        }, {
            key: "extend",
            value: function(t, e) {
                var i = this;
                "function" != typeof Object.assign && (Object.assign = function(t) {
                    if (null == t)
                        throw new TypeError("Cannot convert undefined or null to object");
                    for (var e = Object(t), i = 1; i < arguments.length; i++) {
                        var a = arguments[i];
                        if (null != a)
                            for (var s in a)
                                a.hasOwnProperty(s) && (e[s] = a[s])
                    }
                    return e
                }
                );
                var a = Object.assign({}, t);
                return this.isObject(t) && this.isObject(e) && Object.keys(e).forEach((function(r) {
                    i.isObject(e[r]) && r in t ? a[r] = i.extend(t[r], e[r]) : Object.assign(a, s({}, r, e[r]))
                }
                )),
                a
            }
        }, {
            key: "extendArray",
            value: function(t, e) {
                var a = [];
                return t.map((function(t) {
                    a.push(i.extend(e, t))
                }
                )),
                t = a
            }
        }, {
            key: "monthMod",
            value: function(t) {
                return t % 12
            }
        }, {
            key: "clone",
            value: function(e) {
                if ("[object Array]" === Object.prototype.toString.call(e)) {
                    for (var i = [], a = 0; a < e.length; a++)
                        i[a] = this.clone(e[a]);
                    return i
                }
                if ("[object Null]" === Object.prototype.toString.call(e))
                    return null;
                if ("[object Date]" === Object.prototype.toString.call(e))
                    return e;
                if ("object" === t(e)) {
                    var s = {};
                    for (var r in e)
                        e.hasOwnProperty(r) && (s[r] = this.clone(e[r]));
                    return s
                }
                return e
            }
        }, {
            key: "log10",
            value: function(t) {
                return Math.log(t) / Math.LN10
            }
        }, {
            key: "roundToBase10",
            value: function(t) {
                return Math.pow(10, Math.floor(Math.log10(t)))
            }
        }, {
            key: "roundToBase",
            value: function(t, e) {
                return Math.pow(e, Math.floor(Math.log(t) / Math.log(e)))
            }
        }, {
            key: "parseNumber",
            value: function(t) {
                return null === t ? t : parseFloat(t)
            }
        }, {
            key: "randomId",
            value: function() {
                return (Math.random() + 1).toString(36).substring(4)
            }
        }, {
            key: "noExponents",
            value: function(t) {
                var e = String(t).split(/[eE]/);
                if (1 === e.length)
                    return e[0];
                var i = ""
                  , a = t < 0 ? "-" : ""
                  , s = e[0].replace(".", "")
                  , r = Number(e[1]) + 1;
                if (r < 0) {
                    for (i = a + "0."; r++; )
                        i += "0";
                    return i + s.replace(/^-/, "")
                }
                for (r -= s.length; r--; )
                    i += "0";
                return s + i
            }
        }, {
            key: "getDimensions",
            value: function(t) {
                var e = getComputedStyle(t)
                  , i = []
                  , a = t.clientHeight
                  , s = t.clientWidth;
                return a -= parseFloat(e.paddingTop) + parseFloat(e.paddingBottom),
                s -= parseFloat(e.paddingLeft) + parseFloat(e.paddingRight),
                i.push(s),
                i.push(a),
                i
            }
        }, {
            key: "getBoundingClientRect",
            value: function(t) {
                var e = t.getBoundingClientRect();
                return {
                    top: e.top,
                    right: e.right,
                    bottom: e.bottom,
                    left: e.left,
                    width: t.clientWidth,
                    height: t.clientHeight,
                    x: e.left,
                    y: e.top
                }
            }
        }, {
            key: "getLargestStringFromArr",
            value: function(t) {
                return t.reduce((function(t, e) {
                    return Array.isArray(e) && (e = e.reduce((function(t, e) {
                        return t.length > e.length ? t : e
                    }
                    ))),
                    t.length > e.length ? t : e
                }
                ), 0)
            }
        }, {
            key: "hexToRgba",
            value: function() {
                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "#999999"
                  , e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : .6;
                "#" !== t.substring(0, 1) && (t = "#999999");
                var i = t.replace("#", "");
                i = i.match(new RegExp("(.{" + i.length / 3 + "})","g"));
                for (var a = 0; a < i.length; a++)
                    i[a] = parseInt(1 === i[a].length ? i[a] + i[a] : i[a], 16);
                return void 0 !== e && i.push(e),
                "rgba(" + i.join(",") + ")"
            }
        }, {
            key: "getOpacityFromRGBA",
            value: function(t) {
                return parseFloat(t.replace(/^.*,(.+)\)/, "$1"))
            }
        }, {
            key: "rgb2hex",
            value: function(t) {
                return (t = t.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i)) && 4 === t.length ? "#" + ("0" + parseInt(t[1], 10).toString(16)).slice(-2) + ("0" + parseInt(t[2], 10).toString(16)).slice(-2) + ("0" + parseInt(t[3], 10).toString(16)).slice(-2) : ""
            }
        }, {
            key: "isColorHex",
            value: function(t) {
                return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)|(^#[0-9A-F]{8}$)/i.test(t)
            }
        }, {
            key: "polarToCartesian",
            value: function(t, e, i, a) {
                var s = (a - 90) * Math.PI / 180;
                return {
                    x: t + i * Math.cos(s),
                    y: e + i * Math.sin(s)
                }
            }
        }, {
            key: "escapeString",
            value: function(t) {
                var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "x"
                  , i = t.toString().slice();
                return i = i.replace(/[` ~!@#$%^&*()_|+\-=?;:'",.<>{}[\]\\/]/gi, e)
            }
        }, {
            key: "negToZero",
            value: function(t) {
                return t < 0 ? 0 : t
            }
        }, {
            key: "moveIndexInArray",
            value: function(t, e, i) {
                if (i >= t.length)
                    for (var a = i - t.length + 1; a--; )
                        t.push(void 0);
                return t.splice(i, 0, t.splice(e, 1)[0]),
                t
            }
        }, {
            key: "extractNumber",
            value: function(t) {
                return parseFloat(t.replace(/[^\d.]*/g, ""))
            }
        }, {
            key: "findAncestor",
            value: function(t, e) {
                for (; (t = t.parentElement) && !t.classList.contains(e); )
                    ;
                return t
            }
        }, {
            key: "setELstyles",
            value: function(t, e) {
                for (var i in e)
                    e.hasOwnProperty(i) && (t.style.key = e[i])
            }
        }, {
            key: "isNumber",
            value: function(t) {
                return !isNaN(t) && parseFloat(Number(t)) === t && !isNaN(parseInt(t, 10))
            }
        }, {
            key: "isFloat",
            value: function(t) {
                return Number(t) === t && t % 1 != 0
            }
        }, {
            key: "isSafari",
            value: function() {
                return /^((?!chrome|android).)*safari/i.test(navigator.userAgent)
            }
        }, {
            key: "isFirefox",
            value: function() {
                return navigator.userAgent.toLowerCase().indexOf("firefox") > -1
            }
        }, {
            key: "isIE11",
            value: function() {
                if (-1 !== window.navigator.userAgent.indexOf("MSIE") || window.navigator.appVersion.indexOf("Trident/") > -1)
                    return !0
            }
        }, {
            key: "isIE",
            value: function() {
                var t = window.navigator.userAgent
                  , e = t.indexOf("MSIE ");
                if (e > 0)
                    return parseInt(t.substring(e + 5, t.indexOf(".", e)), 10);
                if (t.indexOf("Trident/") > 0) {
                    var i = t.indexOf("rv:");
                    return parseInt(t.substring(i + 3, t.indexOf(".", i)), 10)
                }
                var a = t.indexOf("Edge/");
                return a > 0 && parseInt(t.substring(a + 5, t.indexOf(".", a)), 10)
            }
        }]),
        i
    }()
      , p = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w
        }
        return a(t, [{
            key: "getDefaultFilter",
            value: function(t, e) {
                var i = this.w;
                t.unfilter(!0),
                (new window.SVG.Filter).size("120%", "180%", "-5%", "-40%"),
                "none" !== i.config.states.normal.filter ? this.applyFilter(t, e, i.config.states.normal.filter.type, i.config.states.normal.filter.value) : i.config.chart.dropShadow.enabled && this.dropShadow(t, i.config.chart.dropShadow, e)
            }
        }, {
            key: "addNormalFilter",
            value: function(t, e) {
                var i = this.w;
                i.config.chart.dropShadow.enabled && !t.node.classList.contains("apexcharts-marker") && this.dropShadow(t, i.config.chart.dropShadow, e)
            }
        }, {
            key: "addLightenFilter",
            value: function(t, e, i) {
                var a = this
                  , s = this.w
                  , r = i.intensity;
                t.unfilter(!0);
                new window.SVG.Filter;
                t.filter((function(t) {
                    var i = s.config.chart.dropShadow;
                    (i.enabled ? a.addShadow(t, e, i) : t).componentTransfer({
                        rgb: {
                            type: "linear",
                            slope: 1.5,
                            intercept: r
                        }
                    })
                }
                )),
                t.filterer.node.setAttribute("filterUnits", "userSpaceOnUse"),
                this._scaleFilterSize(t.filterer.node)
            }
        }, {
            key: "addDarkenFilter",
            value: function(t, e, i) {
                var a = this
                  , s = this.w
                  , r = i.intensity;
                t.unfilter(!0);
                new window.SVG.Filter;
                t.filter((function(t) {
                    var i = s.config.chart.dropShadow;
                    (i.enabled ? a.addShadow(t, e, i) : t).componentTransfer({
                        rgb: {
                            type: "linear",
                            slope: r
                        }
                    })
                }
                )),
                t.filterer.node.setAttribute("filterUnits", "userSpaceOnUse"),
                this._scaleFilterSize(t.filterer.node)
            }
        }, {
            key: "applyFilter",
            value: function(t, e, i) {
                var a = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : .5;
                switch (i) {
                case "none":
                    this.addNormalFilter(t, e);
                    break;
                case "lighten":
                    this.addLightenFilter(t, e, {
                        intensity: a
                    });
                    break;
                case "darken":
                    this.addDarkenFilter(t, e, {
                        intensity: a
                    })
                }
            }
        }, {
            key: "addShadow",
            value: function(t, e, i) {
                var a = i.blur
                  , s = i.top
                  , r = i.left
                  , n = i.color
                  , o = i.opacity
                  , l = t.flood(Array.isArray(n) ? n[e] : n, o).composite(t.sourceAlpha, "in").offset(r, s).gaussianBlur(a).merge(t.source);
                return t.blend(t.source, l)
            }
        }, {
            key: "dropShadow",
            value: function(t, e) {
                var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0
                  , a = e.top
                  , s = e.left
                  , r = e.blur
                  , n = e.color
                  , o = e.opacity
                  , l = e.noUserSpaceOnUse
                  , h = this.w;
                return t.unfilter(!0),
                f.isIE() && "radialBar" === h.config.chart.type || (n = Array.isArray(n) ? n[i] : n,
                t.filter((function(t) {
                    var e = null;
                    e = f.isSafari() || f.isFirefox() || f.isIE() ? t.flood(n, o).composite(t.sourceAlpha, "in").offset(s, a).gaussianBlur(r) : t.flood(n, o).composite(t.sourceAlpha, "in").offset(s, a).gaussianBlur(r).merge(t.source),
                    t.blend(t.source, e)
                }
                )),
                l || t.filterer.node.setAttribute("filterUnits", "userSpaceOnUse"),
                this._scaleFilterSize(t.filterer.node)),
                t
            }
        }, {
            key: "setSelectionFilter",
            value: function(t, e, i) {
                var a = this.w;
                if (void 0 !== a.globals.selectedDataPoints[e] && a.globals.selectedDataPoints[e].indexOf(i) > -1) {
                    t.node.setAttribute("selected", !0);
                    var s = a.config.states.active.filter;
                    "none" !== s && this.applyFilter(t, e, s.type, s.value)
                }
            }
        }, {
            key: "_scaleFilterSize",
            value: function(t) {
                !function(e) {
                    for (var i in e)
                        e.hasOwnProperty(i) && t.setAttribute(i, e[i])
                }({
                    width: "200%",
                    height: "200%",
                    x: "-50%",
                    y: "-50%"
                })
            }
        }]),
        t
    }()
      , x = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w,
            this.setEasingFunctions()
        }
        return a(t, [{
            key: "setEasingFunctions",
            value: function() {
                var t;
                if (!this.w.globals.easing) {
                    switch (this.w.config.chart.animations.easing) {
                    case "linear":
                        t = "-";
                        break;
                    case "easein":
                        t = "<";
                        break;
                    case "easeout":
                        t = ">";
                        break;
                    case "easeinout":
                        t = "<>";
                        break;
                    case "swing":
                        t = function(t) {
                            var e = 1.70158;
                            return (t -= 1) * t * ((e + 1) * t + e) + 1
                        }
                        ;
                        break;
                    case "bounce":
                        t = function(t) {
                            return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375
                        }
                        ;
                        break;
                    case "elastic":
                        t = function(t) {
                            return t === !!t ? t : Math.pow(2, -10 * t) * Math.sin((t - .075) * (2 * Math.PI) / .3) + 1
                        }
                        ;
                        break;
                    default:
                        t = "<>"
                    }
                    this.w.globals.easing = t
                }
            }
        }, {
            key: "animateLine",
            value: function(t, e, i, a) {
                t.attr(e).animate(a).attr(i)
            }
        }, {
            key: "animateCircleRadius",
            value: function(t, e, i, a, s, r) {
                e || (e = 0),
                t.attr({
                    r: e
                }).animate(a, s).attr({
                    r: i
                }).afterAll((function() {
                    r()
                }
                ))
            }
        }, {
            key: "animateCircle",
            value: function(t, e, i, a, s) {
                t.attr({
                    r: e.r,
                    cx: e.cx,
                    cy: e.cy
                }).animate(a, s).attr({
                    r: i.r,
                    cx: i.cx,
                    cy: i.cy
                })
            }
        }, {
            key: "animateRect",
            value: function(t, e, i, a, s) {
                t.attr(e).animate(a).attr(i).afterAll((function() {
                    return s()
                }
                ))
            }
        }, {
            key: "animatePathsGradually",
            value: function(t) {
                var e = t.el
                  , i = t.realIndex
                  , a = t.j
                  , s = t.fill
                  , r = t.pathFrom
                  , n = t.pathTo
                  , o = t.speed
                  , l = t.delay
                  , h = this.w
                  , c = 0;
                h.config.chart.animations.animateGradually.enabled && (c = h.config.chart.animations.animateGradually.delay),
                h.config.chart.animations.dynamicAnimation.enabled && h.globals.dataChanged && "bar" !== h.config.chart.type && (c = 0),
                this.morphSVG(e, i, a, "line" !== h.config.chart.type || h.globals.comboCharts ? s : "stroke", r, n, o, l * c)
            }
        }, {
            key: "showDelayedElements",
            value: function() {
                this.w.globals.delayedElements.forEach((function(t) {
                    t.el.classList.remove("apexcharts-element-hidden")
                }
                ))
            }
        }, {
            key: "animationCompleted",
            value: function(t) {
                var e = this.w;
                e.globals.animationEnded || (e.globals.animationEnded = !0,
                this.showDelayedElements(),
                "function" == typeof e.config.chart.events.animationEnd && e.config.chart.events.animationEnd(this.ctx, {
                    el: t,
                    w: e
                }))
            }
        }, {
            key: "morphSVG",
            value: function(t, e, i, a, s, r, n, o) {
                var l = this
                  , h = this.w;
                s || (s = t.attr("pathFrom")),
                r || (r = t.attr("pathTo"));
                var c = function(t) {
                    return "radar" === h.config.chart.type && (n = 1),
                    "M 0 ".concat(h.globals.gridHeight)
                };
                (!s || s.indexOf("undefined") > -1 || s.indexOf("NaN") > -1) && (s = c()),
                (!r || r.indexOf("undefined") > -1 || r.indexOf("NaN") > -1) && (r = c()),
                h.globals.shouldAnimate || (n = 1),
                t.plot(s).animate(1, h.globals.easing, o).plot(s).animate(n, h.globals.easing, o).plot(r).afterAll((function() {
                    f.isNumber(i) ? i === h.globals.series[h.globals.maxValsInArrayIndex].length - 2 && h.globals.shouldAnimate && l.animationCompleted(t) : "none" !== a && h.globals.shouldAnimate && (!h.globals.comboCharts && e === h.globals.series.length - 1 || h.globals.comboCharts) && l.animationCompleted(t),
                    l.showDelayedElements()
                }
                ))
            }
        }]),
        t
    }()
      , b = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w
        }
        return a(t, [{
            key: "drawLine",
            value: function(t, e, i, a) {
                var s = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : "#a8a8a8"
                  , r = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : 0
                  , n = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : null
                  , o = this.w
                  , l = o.globals.dom.Paper.line().attr({
                    x1: t,
                    y1: e,
                    x2: i,
                    y2: a,
                    stroke: s,
                    "stroke-dasharray": r,
                    "stroke-width": n
                });
                return l
            }
        }, {
            key: "drawRect",
            value: function() {
                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0
                  , e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0
                  , i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0
                  , a = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0
                  , s = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0
                  , r = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : "#fefefe"
                  , n = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : 1
                  , o = arguments.length > 7 && void 0 !== arguments[7] ? arguments[7] : null
                  , l = arguments.length > 8 && void 0 !== arguments[8] ? arguments[8] : null
                  , h = arguments.length > 9 && void 0 !== arguments[9] ? arguments[9] : 0
                  , c = this.w
                  , d = c.globals.dom.Paper.rect();
                return d.attr({
                    x: t,
                    y: e,
                    width: i > 0 ? i : 0,
                    height: a > 0 ? a : 0,
                    rx: s,
                    ry: s,
                    opacity: n,
                    "stroke-width": null !== o ? o : 0,
                    stroke: null !== l ? l : "none",
                    "stroke-dasharray": h
                }),
                d.node.setAttribute("fill", r),
                d
            }
        }, {
            key: "drawPolygon",
            value: function(t) {
                var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "#e1e1e1"
                  , i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1
                  , a = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "none"
                  , s = this.w
                  , r = s.globals.dom.Paper.polygon(t).attr({
                    fill: a,
                    stroke: e,
                    "stroke-width": i
                });
                return r
            }
        }, {
            key: "drawCircle",
            value: function(t) {
                var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null
                  , i = this.w
                  , a = i.globals.dom.Paper.circle(2 * t);
                return null !== e && a.attr(e),
                a
            }
        }, {
            key: "drawPath",
            value: function(t) {
                var e = t.d
                  , i = void 0 === e ? "" : e
                  , a = t.stroke
                  , s = void 0 === a ? "#a8a8a8" : a
                  , r = t.strokeWidth
                  , n = void 0 === r ? 1 : r
                  , o = t.fill
                  , l = t.fillOpacity
                  , h = void 0 === l ? 1 : l
                  , c = t.strokeOpacity
                  , d = void 0 === c ? 1 : c
                  , g = t.classes
                  , u = t.strokeLinecap
                  , f = void 0 === u ? null : u
                  , p = t.strokeDashArray
                  , x = void 0 === p ? 0 : p
                  , b = this.w;
                return null === f && (f = b.config.stroke.lineCap),
                (i.indexOf("undefined") > -1 || i.indexOf("NaN") > -1) && (i = "M 0 ".concat(b.globals.gridHeight)),
                b.globals.dom.Paper.path(i).attr({
                    fill: o,
                    "fill-opacity": h,
                    stroke: s,
                    "stroke-opacity": d,
                    "stroke-linecap": f,
                    "stroke-width": n,
                    "stroke-dasharray": x,
                    class: g
                })
            }
        }, {
            key: "group",
            value: function() {
                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null
                  , e = this.w
                  , i = e.globals.dom.Paper.group();
                return null !== t && i.attr(t),
                i
            }
        }, {
            key: "move",
            value: function(t, e) {
                var i = ["M", t, e].join(" ");
                return i
            }
        }, {
            key: "line",
            value: function(t, e) {
                var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null
                  , a = null;
                return null === i ? a = ["L", t, e].join(" ") : "H" === i ? a = ["H", t].join(" ") : "V" === i && (a = ["V", e].join(" ")),
                a
            }
        }, {
            key: "curve",
            value: function(t, e, i, a, s, r) {
                var n = ["C", t, e, i, a, s, r].join(" ");
                return n
            }
        }, {
            key: "quadraticCurve",
            value: function(t, e, i, a) {
                return ["Q", t, e, i, a].join(" ")
            }
        }, {
            key: "arc",
            value: function(t, e, i, a, s, r, n) {
                var o = arguments.length > 7 && void 0 !== arguments[7] && arguments[7]
                  , l = "A";
                o && (l = "a");
                var h = [l, t, e, i, a, s, r, n].join(" ");
                return h
            }
        }, {
            key: "renderPaths",
            value: function(t) {
                var e, i = t.j, a = t.realIndex, s = t.pathFrom, r = t.pathTo, o = t.stroke, l = t.strokeWidth, h = t.strokeLinecap, c = t.fill, d = t.animationDelay, g = t.initialSpeed, u = t.dataChangeSpeed, f = t.className, b = t.shouldClipToGrid, m = void 0 === b || b, v = t.bindEventsOnPaths, y = void 0 === v || v, w = t.drawShadow, k = void 0 === w || w, A = this.w, S = new p(this.ctx), C = new x(this.ctx), L = this.w.config.chart.animations.enabled, P = L && this.w.config.chart.animations.dynamicAnimation.enabled, T = !!(L && !A.globals.resized || P && A.globals.dataChanged && A.globals.shouldAnimate);
                T ? e = s : (e = r,
                A.globals.animationEnded = !0);
                var z = A.config.stroke.dashArray
                  , I = 0;
                I = Array.isArray(z) ? z[a] : A.config.stroke.dashArray;
                var M = this.drawPath({
                    d: e,
                    stroke: o,
                    strokeWidth: l,
                    fill: c,
                    fillOpacity: 1,
                    classes: f,
                    strokeLinecap: h,
                    strokeDashArray: I
                });
                if (M.attr("index", a),
                m && M.attr({
                    "clip-path": "url(#gridRectMask".concat(A.globals.cuid, ")")
                }),
                "none" !== A.config.states.normal.filter.type)
                    S.getDefaultFilter(M, a);
                else if (A.config.chart.dropShadow.enabled && k && (!A.config.chart.dropShadow.enabledOnSeries || A.config.chart.dropShadow.enabledOnSeries && -1 !== A.config.chart.dropShadow.enabledOnSeries.indexOf(a))) {
                    var E = A.config.chart.dropShadow;
                    S.dropShadow(M, E, a)
                }
                y && (M.node.addEventListener("mouseenter", this.pathMouseEnter.bind(this, M)),
                M.node.addEventListener("mouseleave", this.pathMouseLeave.bind(this, M)),
                M.node.addEventListener("mousedown", this.pathMouseDown.bind(this, M))),
                M.attr({
                    pathTo: r,
                    pathFrom: s
                });
                var X = {
                    el: M,
                    j: i,
                    realIndex: a,
                    pathFrom: s,
                    pathTo: r,
                    fill: c,
                    strokeWidth: l,
                    delay: d
                };
                return !L || A.globals.resized || A.globals.dataChanged ? !A.globals.resized && A.globals.dataChanged || C.showDelayedElements() : C.animatePathsGradually(n(n({}, X), {}, {
                    speed: g
                })),
                A.globals.dataChanged && P && T && C.animatePathsGradually(n(n({}, X), {}, {
                    speed: u
                })),
                M
            }
        }, {
            key: "drawPattern",
            value: function(t, e, i) {
                var a = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "#a8a8a8"
                  , s = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0
                  , r = this.w
                  , n = r.globals.dom.Paper.pattern(e, i, (function(r) {
                    "horizontalLines" === t ? r.line(0, 0, i, 0).stroke({
                        color: a,
                        width: s + 1
                    }) : "verticalLines" === t ? r.line(0, 0, 0, e).stroke({
                        color: a,
                        width: s + 1
                    }) : "slantedLines" === t ? r.line(0, 0, e, i).stroke({
                        color: a,
                        width: s
                    }) : "squares" === t ? r.rect(e, i).fill("none").stroke({
                        color: a,
                        width: s
                    }) : "circles" === t && r.circle(e).fill("none").stroke({
                        color: a,
                        width: s
                    })
                }
                ));
                return n
            }
        }, {
            key: "drawGradient",
            value: function(t, e, i, a, s) {
                var r, n = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : null, o = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : null, l = arguments.length > 7 && void 0 !== arguments[7] ? arguments[7] : null, h = arguments.length > 8 && void 0 !== arguments[8] ? arguments[8] : 0, c = this.w;
                e.length < 9 && 0 === e.indexOf("#") && (e = f.hexToRgba(e, a)),
                i.length < 9 && 0 === i.indexOf("#") && (i = f.hexToRgba(i, s));
                var d = 0
                  , g = 1
                  , u = 1
                  , p = null;
                null !== o && (d = void 0 !== o[0] ? o[0] / 100 : 0,
                g = void 0 !== o[1] ? o[1] / 100 : 1,
                u = void 0 !== o[2] ? o[2] / 100 : 1,
                p = void 0 !== o[3] ? o[3] / 100 : null);
                var x = !("donut" !== c.config.chart.type && "pie" !== c.config.chart.type && "polarArea" !== c.config.chart.type && "bubble" !== c.config.chart.type);
                if (r = null === l || 0 === l.length ? c.globals.dom.Paper.gradient(x ? "radial" : "linear", (function(t) {
                    t.at(d, e, a),
                    t.at(g, i, s),
                    t.at(u, i, s),
                    null !== p && t.at(p, e, a)
                }
                )) : c.globals.dom.Paper.gradient(x ? "radial" : "linear", (function(t) {
                    (Array.isArray(l[h]) ? l[h] : l).forEach((function(e) {
                        t.at(e.offset / 100, e.color, e.opacity)
                    }
                    ))
                }
                )),
                x) {
                    var b = c.globals.gridWidth / 2
                      , m = c.globals.gridHeight / 2;
                    "bubble" !== c.config.chart.type ? r.attr({
                        gradientUnits: "userSpaceOnUse",
                        cx: b,
                        cy: m,
                        r: n
                    }) : r.attr({
                        cx: .5,
                        cy: .5,
                        r: .8,
                        fx: .2,
                        fy: .2
                    })
                } else
                    "vertical" === t ? r.from(0, 0).to(0, 1) : "diagonal" === t ? r.from(0, 0).to(1, 1) : "horizontal" === t ? r.from(0, 1).to(1, 1) : "diagonal2" === t && r.from(1, 0).to(0, 1);
                return r
            }
        }, {
            key: "drawText",
            value: function(t) {
                var e, i = t.x, a = t.y, s = t.text, r = t.textAnchor, n = t.fontSize, o = t.fontFamily, l = t.fontWeight, h = t.foreColor, c = t.opacity, d = t.cssClass, g = void 0 === d ? "" : d, u = t.isPlainText, f = void 0 === u || u, p = this.w;
                return void 0 === s && (s = ""),
                r || (r = "start"),
                h && h.length || (h = p.config.chart.foreColor),
                o = o || p.config.chart.fontFamily,
                l = l || "regular",
                (e = Array.isArray(s) ? p.globals.dom.Paper.text((function(t) {
                    for (var e = 0; e < s.length; e++)
                        0 === e ? t.tspan(s[e]) : t.tspan(s[e]).newLine()
                }
                )) : f ? p.globals.dom.Paper.plain(s) : p.globals.dom.Paper.text((function(t) {
                    return t.tspan(s)
                }
                ))).attr({
                    x: i,
                    y: a,
                    "text-anchor": r,
                    "dominant-baseline": "auto",
                    "font-size": n,
                    "font-family": o,
                    "font-weight": l,
                    fill: h,
                    class: "apexcharts-text " + g
                }),
                e.node.style.fontFamily = o,
                e.node.style.opacity = c,
                e
            }
        }, {
            key: "drawMarker",
            value: function(t, e, i) {
                t = t || 0;
                var a = i.pSize || 0
                  , s = null;
                if ("square" === i.shape) {
                    var r = void 0 === i.pRadius ? a / 2 : i.pRadius;
                    null !== e && a || (a = 0,
                    r = 0);
                    var n = 1.2 * a + r
                      , o = this.drawRect(n, n, n, n, r);
                    o.attr({
                        x: t - n / 2,
                        y: e - n / 2,
                        cx: t,
                        cy: e,
                        class: i.class ? i.class : "",
                        fill: i.pointFillColor,
                        "fill-opacity": i.pointFillOpacity ? i.pointFillOpacity : 1,
                        stroke: i.pointStrokeColor,
                        "stroke-width": i.pWidth ? i.pWidth : 0,
                        "stroke-opacity": i.pointStrokeOpacity ? i.pointStrokeOpacity : 1
                    }),
                    s = o
                } else
                    "circle" !== i.shape && i.shape || (f.isNumber(e) || (a = 0,
                    e = 0),
                    s = this.drawCircle(a, {
                        cx: t,
                        cy: e,
                        class: i.class ? i.class : "",
                        stroke: i.pointStrokeColor,
                        fill: i.pointFillColor,
                        "fill-opacity": i.pointFillOpacity ? i.pointFillOpacity : 1,
                        "stroke-width": i.pWidth ? i.pWidth : 0,
                        "stroke-opacity": i.pointStrokeOpacity ? i.pointStrokeOpacity : 1
                    }));
                return s
            }
        }, {
            key: "pathMouseEnter",
            value: function(t, e) {
                var i = this.w
                  , a = new p(this.ctx)
                  , s = parseInt(t.node.getAttribute("index"), 10)
                  , r = parseInt(t.node.getAttribute("j"), 10);
                if ("function" == typeof i.config.chart.events.dataPointMouseEnter && i.config.chart.events.dataPointMouseEnter(e, this.ctx, {
                    seriesIndex: s,
                    dataPointIndex: r,
                    w: i
                }),
                this.ctx.events.fireEvent("dataPointMouseEnter", [e, this.ctx, {
                    seriesIndex: s,
                    dataPointIndex: r,
                    w: i
                }]),
                ("none" === i.config.states.active.filter.type || "true" !== t.node.getAttribute("selected")) && "none" !== i.config.states.hover.filter.type && "none" !== i.config.states.active.filter.type && !i.globals.isTouchDevice) {
                    var n = i.config.states.hover.filter;
                    a.applyFilter(t, s, n.type, n.value)
                }
            }
        }, {
            key: "pathMouseLeave",
            value: function(t, e) {
                var i = this.w
                  , a = new p(this.ctx)
                  , s = parseInt(t.node.getAttribute("index"), 10)
                  , r = parseInt(t.node.getAttribute("j"), 10);
                "function" == typeof i.config.chart.events.dataPointMouseLeave && i.config.chart.events.dataPointMouseLeave(e, this.ctx, {
                    seriesIndex: s,
                    dataPointIndex: r,
                    w: i
                }),
                this.ctx.events.fireEvent("dataPointMouseLeave", [e, this.ctx, {
                    seriesIndex: s,
                    dataPointIndex: r,
                    w: i
                }]),
                "none" !== i.config.states.active.filter.type && "true" === t.node.getAttribute("selected") || "none" !== i.config.states.hover.filter.type && a.getDefaultFilter(t, s)
            }
        }, {
            key: "pathMouseDown",
            value: function(t, e) {
                var i = this.w
                  , a = new p(this.ctx)
                  , s = parseInt(t.node.getAttribute("index"), 10)
                  , r = parseInt(t.node.getAttribute("j"), 10)
                  , n = "false";
                if ("true" === t.node.getAttribute("selected")) {
                    if (t.node.setAttribute("selected", "false"),
                    i.globals.selectedDataPoints[s].indexOf(r) > -1) {
                        var o = i.globals.selectedDataPoints[s].indexOf(r);
                        i.globals.selectedDataPoints[s].splice(o, 1)
                    }
                } else {
                    if (!i.config.states.active.allowMultipleDataPointsSelection && i.globals.selectedDataPoints.length > 0) {
                        i.globals.selectedDataPoints = [];
                        var l = i.globals.dom.Paper.select(".apexcharts-series path").members
                          , h = i.globals.dom.Paper.select(".apexcharts-series circle, .apexcharts-series rect").members
                          , c = function(t) {
                            Array.prototype.forEach.call(t, (function(t) {
                                t.node.setAttribute("selected", "false"),
                                a.getDefaultFilter(t, s)
                            }
                            ))
                        };
                        c(l),
                        c(h)
                    }
                    t.node.setAttribute("selected", "true"),
                    n = "true",
                    void 0 === i.globals.selectedDataPoints[s] && (i.globals.selectedDataPoints[s] = []),
                    i.globals.selectedDataPoints[s].push(r)
                }
                if ("true" === n) {
                    var d = i.config.states.active.filter;
                    "none" !== d && a.applyFilter(t, s, d.type, d.value)
                } else
                    "none" !== i.config.states.active.filter.type && a.getDefaultFilter(t, s);
                "function" == typeof i.config.chart.events.dataPointSelection && i.config.chart.events.dataPointSelection(e, this.ctx, {
                    selectedDataPoints: i.globals.selectedDataPoints,
                    seriesIndex: s,
                    dataPointIndex: r,
                    w: i
                }),
                e && this.ctx.events.fireEvent("dataPointSelection", [e, this.ctx, {
                    selectedDataPoints: i.globals.selectedDataPoints,
                    seriesIndex: s,
                    dataPointIndex: r,
                    w: i
                }])
            }
        }, {
            key: "rotateAroundCenter",
            value: function(t) {
                var e = t.getBBox();
                return {
                    x: e.x + e.width / 2,
                    y: e.y + e.height / 2
                }
            }
        }, {
            key: "getTextRects",
            value: function(t, e, i, a) {
                var s = !(arguments.length > 4 && void 0 !== arguments[4]) || arguments[4]
                  , r = this.w
                  , n = this.drawText({
                    x: -200,
                    y: -200,
                    text: t,
                    textAnchor: "start",
                    fontSize: e,
                    fontFamily: i,
                    foreColor: "#fff",
                    opacity: 0
                });
                a && n.attr("transform", a),
                r.globals.dom.Paper.add(n);
                var o = n.bbox();
                return s || (o = n.node.getBoundingClientRect()),
                n.remove(),
                {
                    width: o.width,
                    height: o.height
                }
            }
        }, {
            key: "placeTextWithEllipsis",
            value: function(t, e, i) {
                if ("function" == typeof t.getComputedTextLength && (t.textContent = e,
                e.length > 0 && t.getComputedTextLength() >= i / .8)) {
                    for (var a = e.length - 3; a > 0; a -= 3)
                        if (t.getSubStringLength(0, a) <= i / .8)
                            return void (t.textContent = e.substring(0, a) + "...");
                    t.textContent = "."
                }
            }
        }], [{
            key: "setAttrs",
            value: function(t, e) {
                for (var i in e)
                    e.hasOwnProperty(i) && t.setAttribute(i, e[i])
            }
        }]),
        t
    }()
      , m = function() {
        function t(i) {
            e(this, t),
            this.w = i.w,
            this.annoCtx = i
        }
        return a(t, [{
            key: "setOrientations",
            value: function(t) {
                var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null
                  , i = this.w;
                if ("vertical" === t.label.orientation) {
                    var a = null !== e ? e : 0
                      , s = i.globals.dom.baseEl.querySelector(".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='".concat(a, "']"));
                    if (null !== s) {
                        var r = s.getBoundingClientRect();
                        s.setAttribute("x", parseFloat(s.getAttribute("x")) - r.height + 4),
                        "top" === t.label.position ? s.setAttribute("y", parseFloat(s.getAttribute("y")) + r.width) : s.setAttribute("y", parseFloat(s.getAttribute("y")) - r.width);
                        var n = this.annoCtx.graphics.rotateAroundCenter(s)
                          , o = n.x
                          , l = n.y;
                        s.setAttribute("transform", "rotate(-90 ".concat(o, " ").concat(l, ")"))
                    }
                }
            }
        }, {
            key: "addBackgroundToAnno",
            value: function(t, e) {
                var i = this.w;
                if (!t || !e.label.text || e.label.text && !e.label.text.trim())
                    return null;
                var a = i.globals.dom.baseEl.querySelector(".apexcharts-grid").getBoundingClientRect()
                  , s = t.getBoundingClientRect()
                  , r = e.label.style.padding.left
                  , n = e.label.style.padding.right
                  , o = e.label.style.padding.top
                  , l = e.label.style.padding.bottom;
                "vertical" === e.label.orientation && (o = e.label.style.padding.left,
                l = e.label.style.padding.right,
                r = e.label.style.padding.top,
                n = e.label.style.padding.bottom);
                var h = s.left - a.left - r
                  , c = s.top - a.top - o
                  , d = this.annoCtx.graphics.drawRect(h - i.globals.barPadForNumericAxis, c, s.width + r + n, s.height + o + l, e.label.borderRadius, e.label.style.background, 1, e.label.borderWidth, e.label.borderColor, 0);
                return e.id && d.node.classList.add(e.id),
                d
            }
        }, {
            key: "annotationsBackground",
            value: function() {
                var t = this
                  , e = this.w
                  , i = function(i, a, s) {
                    var r = e.globals.dom.baseEl.querySelector(".apexcharts-".concat(s, "-annotations .apexcharts-").concat(s, "-annotation-label[rel='").concat(a, "']"));
                    if (r) {
                        var n = r.parentNode
                          , o = t.addBackgroundToAnno(r, i);
                        o && n.insertBefore(o.node, r)
                    }
                };
                e.config.annotations.xaxis.map((function(t, e) {
                    i(t, e, "xaxis")
                }
                )),
                e.config.annotations.yaxis.map((function(t, e) {
                    i(t, e, "yaxis")
                }
                )),
                e.config.annotations.points.map((function(t, e) {
                    i(t, e, "point")
                }
                ))
            }
        }, {
            key: "getStringX",
            value: function(t) {
                var e = this.w
                  , i = t;
                e.config.xaxis.convertedCatToNumeric && e.globals.categoryLabels.length && (t = e.globals.categoryLabels.indexOf(t) + 1);
                var a = e.globals.labels.indexOf(t)
                  , s = e.globals.dom.baseEl.querySelector(".apexcharts-xaxis-texts-g text:nth-child(" + (a + 1) + ")");
                return s && (i = parseFloat(s.getAttribute("x"))),
                i
            }
        }]),
        t
    }()
      , v = function() {
        function t(i) {
            e(this, t),
            this.w = i.w,
            this.annoCtx = i,
            this.invertAxis = this.annoCtx.invertAxis
        }
        return a(t, [{
            key: "addXaxisAnnotation",
            value: function(t, e, i) {
                var a = this.w
                  , s = this.invertAxis ? a.globals.minY : a.globals.minX
                  , r = this.invertAxis ? a.globals.maxY : a.globals.maxX
                  , n = this.invertAxis ? a.globals.yRange[0] : a.globals.xRange
                  , o = (t.x - s) / (n / a.globals.gridWidth);
                this.annoCtx.inversedReversedAxis && (o = (r - t.x) / (n / a.globals.gridWidth));
                var l = t.label.text;
                "category" !== a.config.xaxis.type && !a.config.xaxis.convertedCatToNumeric || this.invertAxis || a.globals.dataFormatXNumeric || (o = this.annoCtx.helpers.getStringX(t.x));
                var h = t.strokeDashArray;
                if (f.isNumber(o)) {
                    if (null === t.x2 || void 0 === t.x2) {
                        var c = this.annoCtx.graphics.drawLine(o + t.offsetX, 0 + t.offsetY, o + t.offsetX, a.globals.gridHeight + t.offsetY, t.borderColor, h, t.borderWidth);
                        e.appendChild(c.node),
                        t.id && c.node.classList.add(t.id)
                    } else {
                        var d = (t.x2 - s) / (n / a.globals.gridWidth);
                        if (this.annoCtx.inversedReversedAxis && (d = (r - t.x2) / (n / a.globals.gridWidth)),
                        "category" !== a.config.xaxis.type && !a.config.xaxis.convertedCatToNumeric || this.invertAxis || a.globals.dataFormatXNumeric || (d = this.annoCtx.helpers.getStringX(t.x2)),
                        d < o) {
                            var g = o;
                            o = d,
                            d = g
                        }
                        var u = this.annoCtx.graphics.drawRect(o + t.offsetX, 0 + t.offsetY, d - o, a.globals.gridHeight + t.offsetY, 0, t.fillColor, t.opacity, 1, t.borderColor, h);
                        u.node.classList.add("apexcharts-annotation-rect"),
                        u.attr("clip-path", "url(#gridRectMask".concat(a.globals.cuid, ")")),
                        e.appendChild(u.node),
                        t.id && u.node.classList.add(t.id)
                    }
                    var p = "top" === t.label.position ? 4 : a.globals.gridHeight
                      , x = this.annoCtx.graphics.getTextRects(l, parseFloat(t.label.style.fontSize))
                      , b = this.annoCtx.graphics.drawText({
                        x: o + t.label.offsetX,
                        y: p + t.label.offsetY - ("vertical" === t.label.orientation ? "top" === t.label.position ? x.width / 2 - 12 : -x.width / 2 : 0),
                        text: l,
                        textAnchor: t.label.textAnchor,
                        fontSize: t.label.style.fontSize,
                        fontFamily: t.label.style.fontFamily,
                        fontWeight: t.label.style.fontWeight,
                        foreColor: t.label.style.color,
                        cssClass: "apexcharts-xaxis-annotation-label ".concat(t.label.style.cssClass, " ").concat(t.id ? t.id : "")
                    });
                    b.attr({
                        rel: i
                    }),
                    e.appendChild(b.node),
                    this.annoCtx.helpers.setOrientations(t, i)
                }
            }
        }, {
            key: "drawXAxisAnnotations",
            value: function() {
                var t = this
                  , e = this.w
                  , i = this.annoCtx.graphics.group({
                    class: "apexcharts-xaxis-annotations"
                });
                return e.config.annotations.xaxis.map((function(e, a) {
                    t.addXaxisAnnotation(e, i.node, a)
                }
                )),
                i
            }
        }]),
        t
    }()
      , y = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w
        }
        return a(t, [{
            key: "getStackedSeriesTotals",
            value: function() {
                var t = this.w
                  , e = [];
                if (0 === t.globals.series.length)
                    return e;
                for (var i = 0; i < t.globals.series[t.globals.maxValsInArrayIndex].length; i++) {
                    for (var a = 0, s = 0; s < t.globals.series.length; s++)
                        void 0 !== t.globals.series[s][i] && (a += t.globals.series[s][i]);
                    e.push(a)
                }
                return t.globals.stackedSeriesTotals = e,
                e
            }
        }, {
            key: "getSeriesTotalByIndex",
            value: function() {
                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null;
                return null === t ? this.w.config.series.reduce((function(t, e) {
                    return t + e
                }
                ), 0) : this.w.globals.series[t].reduce((function(t, e) {
                    return t + e
                }
                ), 0)
            }
        }, {
            key: "isSeriesNull",
            value: function() {
                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null;
                return 0 === (null === t ? this.w.config.series.filter((function(t) {
                    return null !== t
                }
                )) : this.w.config.series[t].data.filter((function(t) {
                    return null !== t
                }
                ))).length
            }
        }, {
            key: "seriesHaveSameValues",
            value: function(t) {
                return this.w.globals.series[t].every((function(t, e, i) {
                    return t === i[0]
                }
                ))
            }
        }, {
            key: "getCategoryLabels",
            value: function(t) {
                var e = this.w
                  , i = t.slice();
                return e.config.xaxis.convertedCatToNumeric && (i = t.map((function(t, i) {
                    return e.config.xaxis.labels.formatter(t - e.globals.minX + 1)
                }
                ))),
                i
            }
        }, {
            key: "getLargestSeries",
            value: function() {
                var t = this.w;
                t.globals.maxValsInArrayIndex = t.globals.series.map((function(t) {
                    return t.length
                }
                )).indexOf(Math.max.apply(Math, t.globals.series.map((function(t) {
                    return t.length
                }
                ))))
            }
        }, {
            key: "getLargestMarkerSize",
            value: function() {
                var t = this.w
                  , e = 0;
                return t.globals.markers.size.forEach((function(t) {
                    e = Math.max(e, t)
                }
                )),
                t.globals.markers.largestSize = e,
                e
            }
        }, {
            key: "getSeriesTotals",
            value: function() {
                var t = this.w;
                t.globals.seriesTotals = t.globals.series.map((function(t, e) {
                    var i = 0;
                    if (Array.isArray(t))
                        for (var a = 0; a < t.length; a++)
                            i += t[a];
                    else
                        i += t;
                    return i
                }
                ))
            }
        }, {
            key: "getSeriesTotalsXRange",
            value: function(t, e) {
                var i = this.w;
                return i.globals.series.map((function(a, s) {
                    for (var r = 0, n = 0; n < a.length; n++)
                        i.globals.seriesX[s][n] > t && i.globals.seriesX[s][n] < e && (r += a[n]);
                    return r
                }
                ))
            }
        }, {
            key: "getPercentSeries",
            value: function() {
                var t = this.w;
                t.globals.seriesPercent = t.globals.series.map((function(e, i) {
                    var a = [];
                    if (Array.isArray(e))
                        for (var s = 0; s < e.length; s++) {
                            var r = t.globals.stackedSeriesTotals[s]
                              , n = 0;
                            r && (n = 100 * e[s] / r),
                            a.push(n)
                        }
                    else {
                        var o = 100 * e / t.globals.seriesTotals.reduce((function(t, e) {
                            return t + e
                        }
                        ), 0);
                        a.push(o)
                    }
                    return a
                }
                ))
            }
        }, {
            key: "getCalculatedRatios",
            value: function() {
                var t, e, i, a, s = this.w.globals, r = [], n = 0, o = [], l = .1, h = 0;
                if (s.yRange = [],
                s.isMultipleYAxis)
                    for (var c = 0; c < s.minYArr.length; c++)
                        s.yRange.push(Math.abs(s.minYArr[c] - s.maxYArr[c])),
                        o.push(0);
                else
                    s.yRange.push(Math.abs(s.minY - s.maxY));
                s.xRange = Math.abs(s.maxX - s.minX),
                s.zRange = Math.abs(s.maxZ - s.minZ);
                for (var d = 0; d < s.yRange.length; d++)
                    r.push(s.yRange[d] / s.gridHeight);
                if (e = s.xRange / s.gridWidth,
                i = Math.abs(s.initialMaxX - s.initialMinX) / s.gridWidth,
                t = s.yRange / s.gridWidth,
                a = s.xRange / s.gridHeight,
                (n = s.zRange / s.gridHeight * 16) || (n = 1),
                s.minY !== Number.MIN_VALUE && 0 !== Math.abs(s.minY) && (s.hasNegs = !0),
                s.isMultipleYAxis) {
                    o = [];
                    for (var g = 0; g < r.length; g++)
                        o.push(-s.minYArr[g] / r[g])
                } else
                    o.push(-s.minY / r[0]),
                    s.minY !== Number.MIN_VALUE && 0 !== Math.abs(s.minY) && (l = -s.minY / t,
                    h = s.minX / e);
                return {
                    yRatio: r,
                    invertedYRatio: t,
                    zRatio: n,
                    xRatio: e,
                    initialXRatio: i,
                    invertedXRatio: a,
                    baseLineInvertedY: l,
                    baseLineY: o,
                    baseLineX: h
                }
            }
        }, {
            key: "getLogSeries",
            value: function(t) {
                var e = this
                  , i = this.w;
                return i.globals.seriesLog = t.map((function(t, a) {
                    return i.config.yaxis[a] && i.config.yaxis[a].logarithmic ? t.map((function(t) {
                        return null === t ? null : e.getLogVal(t, a)
                    }
                    )) : t
                }
                )),
                i.globals.invalidLogScale ? t : i.globals.seriesLog
            }
        }, {
            key: "getLogVal",
            value: function(t, e) {
                var i = this.w;
                return (Math.log(t) - Math.log(i.globals.minYArr[e])) / (Math.log(i.globals.maxYArr[e]) - Math.log(i.globals.minYArr[e]))
            }
        }, {
            key: "getLogYRatios",
            value: function(t) {
                var e = this
                  , i = this.w
                  , a = this.w.globals;
                return a.yLogRatio = t.slice(),
                a.logYRange = a.yRange.map((function(t, s) {
                    if (i.config.yaxis[s] && e.w.config.yaxis[s].logarithmic) {
                        var r, n = -Number.MAX_VALUE, o = Number.MIN_VALUE;
                        return a.seriesLog.forEach((function(t, e) {
                            t.forEach((function(t) {
                                i.config.yaxis[e] && i.config.yaxis[e].logarithmic && (n = Math.max(t, n),
                                o = Math.min(t, o))
                            }
                            ))
                        }
                        )),
                        r = Math.pow(a.yRange[s], Math.abs(o - n) / a.yRange[s]),
                        a.yLogRatio[s] = r / a.gridHeight,
                        r
                    }
                }
                )),
                a.invalidLogScale ? t.slice() : a.yLogRatio
            }
        }], [{
            key: "checkComboSeries",
            value: function(t) {
                var e = !1
                  , i = 0;
                return t.length && void 0 !== t[0].type && (e = !0,
                t.forEach((function(t) {
                    "bar" !== t.type && "column" !== t.type && "candlestick" !== t.type || i++
                }
                ))),
                {
                    comboBarCount: i,
                    comboCharts: e
                }
            }
        }, {
            key: "extendArrayProps",
            value: function(t, e, i) {
                return e.yaxis && (e = t.extendYAxis(e, i)),
                e.annotations && (e.annotations.yaxis && (e = t.extendYAxisAnnotations(e)),
                e.annotations.xaxis && (e = t.extendXAxisAnnotations(e)),
                e.annotations.points && (e = t.extendPointAnnotations(e))),
                e
            }
        }]),
        t
    }()
      , w = function() {
        function t(i) {
            e(this, t),
            this.w = i.w,
            this.annoCtx = i
        }
        return a(t, [{
            key: "addYaxisAnnotation",
            value: function(t, e, i) {
                var a, s = this.w, r = t.strokeDashArray, n = this._getY1Y2("y1", t), o = t.label.text;
                if (null === t.y2 || void 0 === t.y2) {
                    var l = this.annoCtx.graphics.drawLine(0 + t.offsetX, n + t.offsetY, this._getYAxisAnnotationWidth(t), n + t.offsetY, t.borderColor, r, t.borderWidth);
                    e.appendChild(l.node),
                    t.id && l.node.classList.add(t.id)
                } else {
                    if ((a = this._getY1Y2("y2", t)) > n) {
                        var h = n;
                        n = a,
                        a = h
                    }
                    var c = this.annoCtx.graphics.drawRect(0 + t.offsetX, a + t.offsetY, this._getYAxisAnnotationWidth(t), n - a, 0, t.fillColor, t.opacity, 1, t.borderColor, r);
                    c.node.classList.add("apexcharts-annotation-rect"),
                    c.attr("clip-path", "url(#gridRectMask".concat(s.globals.cuid, ")")),
                    e.appendChild(c.node),
                    t.id && c.node.classList.add(t.id)
                }
                var d = "right" === t.label.position ? s.globals.gridWidth : 0
                  , g = this.annoCtx.graphics.drawText({
                    x: d + t.label.offsetX,
                    y: (a || n) + t.label.offsetY - 3,
                    text: o,
                    textAnchor: t.label.textAnchor,
                    fontSize: t.label.style.fontSize,
                    fontFamily: t.label.style.fontFamily,
                    fontWeight: t.label.style.fontWeight,
                    foreColor: t.label.style.color,
                    cssClass: "apexcharts-yaxis-annotation-label ".concat(t.label.style.cssClass, " ").concat(t.id ? t.id : "")
                });
                g.attr({
                    rel: i
                }),
                e.appendChild(g.node)
            }
        }, {
            key: "_getY1Y2",
            value: function(t, e) {
                var i, a = "y1" === t ? e.y : e.y2, s = this.w;
                if (this.annoCtx.invertAxis) {
                    var r = s.globals.labels.indexOf(a);
                    s.config.xaxis.convertedCatToNumeric && (r = s.globals.categoryLabels.indexOf(a));
                    var n = s.globals.dom.baseEl.querySelector(".apexcharts-yaxis-texts-g text:nth-child(" + (r + 1) + ")");
                    n && (i = parseFloat(n.getAttribute("y")))
                } else {
                    var o;
                    if (s.config.yaxis[e.yAxisIndex].logarithmic)
                        o = (a = new y(this.annoCtx.ctx).getLogVal(a, e.yAxisIndex)) / s.globals.yLogRatio[e.yAxisIndex];
                    else
                        o = (a - s.globals.minYArr[e.yAxisIndex]) / (s.globals.yRange[e.yAxisIndex] / s.globals.gridHeight);
                    i = s.globals.gridHeight - o,
                    s.config.yaxis[e.yAxisIndex] && s.config.yaxis[e.yAxisIndex].reversed && (i = o)
                }
                return i
            }
        }, {
            key: "_getYAxisAnnotationWidth",
            value: function(t) {
                var e = this.w;
                e.globals.gridWidth;
                return (t.width.indexOf("%") > -1 ? e.globals.gridWidth * parseInt(t.width, 10) / 100 : parseInt(t.width, 10)) + t.offsetX
            }
        }, {
            key: "drawYAxisAnnotations",
            value: function() {
                var t = this
                  , e = this.w
                  , i = this.annoCtx.graphics.group({
                    class: "apexcharts-yaxis-annotations"
                });
                return e.config.annotations.yaxis.map((function(e, a) {
                    t.addYaxisAnnotation(e, i.node, a)
                }
                )),
                i
            }
        }]),
        t
    }()
      , k = function() {
        function t(i) {
            e(this, t),
            this.w = i.w,
            this.annoCtx = i
        }
        return a(t, [{
            key: "addPointAnnotation",
            value: function(t, e, i) {
                var a = this.w
                  , s = 0
                  , r = 0
                  , n = 0;
                this.annoCtx.invertAxis && console.warn("Point annotation is not supported in horizontal bar charts.");
                var o, l = parseFloat(t.y);
                if ("string" == typeof t.x) {
                    var h = a.globals.labels.indexOf(t.x);
                    a.config.xaxis.convertedCatToNumeric && (h = a.globals.categoryLabels.indexOf(t.x)),
                    s = this.annoCtx.helpers.getStringX(t.x),
                    null === t.y && (l = a.globals.series[t.seriesIndex][h])
                } else
                    s = (t.x - a.globals.minX) / (a.globals.xRange / a.globals.gridWidth);
                a.config.yaxis[t.yAxisIndex].logarithmic ? o = (l = new y(this.annoCtx.ctx).getLogVal(l, t.yAxisIndex)) / a.globals.yLogRatio[t.yAxisIndex] : o = (l - a.globals.minYArr[t.yAxisIndex]) / (a.globals.yRange[t.yAxisIndex] / a.globals.gridHeight);
                if (r = a.globals.gridHeight - o - parseFloat(t.label.style.fontSize) - t.marker.size,
                n = a.globals.gridHeight - o,
                a.config.yaxis[t.yAxisIndex] && a.config.yaxis[t.yAxisIndex].reversed && (r = o + parseFloat(t.label.style.fontSize) + t.marker.size,
                n = o),
                f.isNumber(s)) {
                    var c = {
                        pSize: t.marker.size,
                        pWidth: t.marker.strokeWidth,
                        pointFillColor: t.marker.fillColor,
                        pointStrokeColor: t.marker.strokeColor,
                        shape: t.marker.shape,
                        pRadius: t.marker.radius,
                        class: "apexcharts-point-annotation-marker ".concat(t.marker.cssClass, " ").concat(t.id ? t.id : "")
                    }
                      , d = this.annoCtx.graphics.drawMarker(s + t.marker.offsetX, n + t.marker.offsetY, c);
                    e.appendChild(d.node);
                    var g = t.label.text ? t.label.text : ""
                      , u = this.annoCtx.graphics.drawText({
                        x: s + t.label.offsetX,
                        y: r + t.label.offsetY,
                        text: g,
                        textAnchor: t.label.textAnchor,
                        fontSize: t.label.style.fontSize,
                        fontFamily: t.label.style.fontFamily,
                        fontWeight: t.label.style.fontWeight,
                        foreColor: t.label.style.color,
                        cssClass: "apexcharts-point-annotation-label ".concat(t.label.style.cssClass, " ").concat(t.id ? t.id : "")
                    });
                    if (u.attr({
                        rel: i
                    }),
                    e.appendChild(u.node),
                    t.customSVG.SVG) {
                        var p = this.annoCtx.graphics.group({
                            class: "apexcharts-point-annotations-custom-svg " + t.customSVG.cssClass
                        });
                        p.attr({
                            transform: "translate(".concat(s + t.customSVG.offsetX, ", ").concat(r + t.customSVG.offsetY, ")")
                        }),
                        p.node.innerHTML = t.customSVG.SVG,
                        e.appendChild(p.node)
                    }
                    if (t.image.path) {
                        var x = t.image.width ? t.image.width : 20
                          , b = t.image.height ? t.image.height : 20;
                        this.annoCtx.addImage({
                            x: s + t.image.offsetX - x / 2,
                            y: r + t.image.offsetY - b / 2,
                            width: x,
                            height: b,
                            path: t.image.path,
                            appendTo: ".apexcharts-point-annotations"
                        })
                    }
                }
            }
        }, {
            key: "drawPointAnnotations",
            value: function() {
                var t = this
                  , e = this.w
                  , i = this.annoCtx.graphics.group({
                    class: "apexcharts-point-annotations"
                });
                return e.config.annotations.points.map((function(e, a) {
                    t.addPointAnnotation(e, i.node, a)
                }
                )),
                i
            }
        }]),
        t
    }();
    var A = {
        name: "en",
        options: {
            months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
            shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
            days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
            shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
            toolbar: {
                exportToSVG: "Download SVG",
                exportToPNG: "Download PNG",
                exportToCSV: "Download CSV",
                menu: "Menu",
                selection: "Selection",
                selectionZoom: "Selection Zoom",
                zoomIn: "Zoom In",
                zoomOut: "Zoom Out",
                pan: "Panning",
                reset: "Reset Zoom"
            }
        }
    }
      , S = function() {
        function t() {
            e(this, t),
            this.yAxis = {
                show: !0,
                showAlways: !1,
                showForNullSeries: !0,
                seriesName: void 0,
                opposite: !1,
                reversed: !1,
                logarithmic: !1,
                tickAmount: void 0,
                forceNiceScale: !1,
                max: void 0,
                min: void 0,
                floating: !1,
                decimalsInFloat: void 0,
                labels: {
                    show: !0,
                    minWidth: 0,
                    maxWidth: 160,
                    offsetX: 0,
                    offsetY: 0,
                    align: void 0,
                    rotate: 0,
                    padding: 20,
                    style: {
                        colors: [],
                        fontSize: "11px",
                        fontWeight: 400,
                        fontFamily: void 0,
                        cssClass: ""
                    },
                    formatter: void 0
                },
                axisBorder: {
                    show: !1,
                    color: "#e0e0e0",
                    width: 1,
                    offsetX: 0,
                    offsetY: 0
                },
                axisTicks: {
                    show: !1,
                    color: "#e0e0e0",
                    width: 6,
                    offsetX: 0,
                    offsetY: 0
                },
                title: {
                    text: void 0,
                    rotate: -90,
                    offsetY: 0,
                    offsetX: 0,
                    style: {
                        color: void 0,
                        fontSize: "11px",
                        fontWeight: 900,
                        fontFamily: void 0,
                        cssClass: ""
                    }
                },
                tooltip: {
                    enabled: !1,
                    offsetX: 0
                },
                crosshairs: {
                    show: !0,
                    position: "front",
                    stroke: {
                        color: "#b6b6b6",
                        width: 1,
                        dashArray: 0
                    }
                }
            },
            this.pointAnnotation = {
                x: 0,
                y: null,
                yAxisIndex: 0,
                seriesIndex: 0,
                marker: {
                    size: 4,
                    fillColor: "#fff",
                    strokeWidth: 2,
                    strokeColor: "#333",
                    shape: "circle",
                    offsetX: 0,
                    offsetY: 0,
                    radius: 2,
                    cssClass: ""
                },
                label: {
                    borderColor: "#c2c2c2",
                    borderWidth: 1,
                    borderRadius: 2,
                    text: void 0,
                    textAnchor: "middle",
                    offsetX: 0,
                    offsetY: 0,
                    style: {
                        background: "#fff",
                        color: void 0,
                        fontSize: "11px",
                        fontFamily: void 0,
                        fontWeight: 400,
                        cssClass: "",
                        padding: {
                            left: 5,
                            right: 5,
                            top: 2,
                            bottom: 2
                        }
                    }
                },
                customSVG: {
                    SVG: void 0,
                    cssClass: void 0,
                    offsetX: 0,
                    offsetY: 0
                },
                image: {
                    path: void 0,
                    width: 20,
                    height: 20,
                    offsetX: 0,
                    offsetY: 0
                }
            },
            this.yAxisAnnotation = {
                y: 0,
                y2: null,
                strokeDashArray: 1,
                fillColor: "#c2c2c2",
                borderColor: "#c2c2c2",
                borderWidth: 1,
                opacity: .3,
                offsetX: 0,
                offsetY: 0,
                width: "100%",
                yAxisIndex: 0,
                label: {
                    borderColor: "#c2c2c2",
                    borderWidth: 1,
                    borderRadius: 2,
                    text: void 0,
                    textAnchor: "end",
                    position: "right",
                    offsetX: 0,
                    offsetY: -3,
                    style: {
                        background: "#fff",
                        color: void 0,
                        fontSize: "11px",
                        fontFamily: void 0,
                        fontWeight: 400,
                        cssClass: "",
                        padding: {
                            left: 5,
                            right: 5,
                            top: 2,
                            bottom: 2
                        }
                    }
                }
            },
            this.xAxisAnnotation = {
                x: 0,
                x2: null,
                strokeDashArray: 1,
                fillColor: "#c2c2c2",
                borderColor: "#c2c2c2",
                borderWidth: 1,
                opacity: .3,
                offsetX: 0,
                offsetY: 0,
                label: {
                    borderColor: "#c2c2c2",
                    borderWidth: 1,
                    borderRadius: 2,
                    text: void 0,
                    textAnchor: "middle",
                    orientation: "vertical",
                    position: "top",
                    offsetX: 0,
                    offsetY: 0,
                    style: {
                        background: "#fff",
                        color: void 0,
                        fontSize: "11px",
                        fontFamily: void 0,
                        fontWeight: 400,
                        cssClass: "",
                        padding: {
                            left: 5,
                            right: 5,
                            top: 2,
                            bottom: 2
                        }
                    }
                }
            },
            this.text = {
                x: 0,
                y: 0,
                text: "",
                textAnchor: "start",
                foreColor: void 0,
                fontSize: "13px",
                fontFamily: void 0,
                fontWeight: 400,
                appendTo: ".apexcharts-annotations",
                backgroundColor: "transparent",
                borderColor: "#c2c2c2",
                borderRadius: 0,
                borderWidth: 0,
                paddingLeft: 4,
                paddingRight: 4,
                paddingTop: 2,
                paddingBottom: 2
            }
        }
        return a(t, [{
            key: "init",
            value: function() {
                return {
                    annotations: {
                        position: "front",
                        yaxis: [this.yAxisAnnotation],
                        xaxis: [this.xAxisAnnotation],
                        points: [this.pointAnnotation],
                        texts: [],
                        images: [],
                        shapes: []
                    },
                    chart: {
                        animations: {
                            enabled: !0,
                            easing: "easeinout",
                            speed: 800,
                            animateGradually: {
                                delay: 150,
                                enabled: !0
                            },
                            dynamicAnimation: {
                                enabled: !0,
                                speed: 350
                            }
                        },
                        background: "transparent",
                        locales: [A],
                        defaultLocale: "en",
                        dropShadow: {
                            enabled: !1,
                            enabledOnSeries: void 0,
                            top: 2,
                            left: 2,
                            blur: 4,
                            color: "#000",
                            opacity: .35
                        },
                        events: {
                            animationEnd: void 0,
                            beforeMount: void 0,
                            mounted: void 0,
                            updated: void 0,
                            click: void 0,
                            mouseMove: void 0,
                            legendClick: void 0,
                            markerClick: void 0,
                            selection: void 0,
                            dataPointSelection: void 0,
                            dataPointMouseEnter: void 0,
                            dataPointMouseLeave: void 0,
                            beforeZoom: void 0,
                            beforeResetZoom: void 0,
                            zoomed: void 0,
                            scrolled: void 0,
                            brushScrolled: void 0
                        },
                        foreColor: "#373d3f",
                        fontFamily: "Helvetica, Arial, sans-serif",
                        height: "auto",
                        parentHeightOffset: 15,
                        redrawOnParentResize: !0,
                        redrawOnWindowResize: !0,
                        id: void 0,
                        group: void 0,
                        offsetX: 0,
                        offsetY: 0,
                        selection: {
                            enabled: !1,
                            type: "x",
                            fill: {
                                color: "#24292e",
                                opacity: .1
                            },
                            stroke: {
                                width: 1,
                                color: "#24292e",
                                opacity: .4,
                                dashArray: 3
                            },
                            xaxis: {
                                min: void 0,
                                max: void 0
                            },
                            yaxis: {
                                min: void 0,
                                max: void 0
                            }
                        },
                        sparkline: {
                            enabled: !1
                        },
                        brush: {
                            enabled: !1,
                            autoScaleYaxis: !0,
                            target: void 0
                        },
                        stacked: !1,
                        stackType: "normal",
                        toolbar: {
                            show: !0,
                            offsetX: 0,
                            offsetY: 0,
                            tools: {
                                download: !0,
                                selection: !0,
                                zoom: !0,
                                zoomin: !0,
                                zoomout: !0,
                                pan: !0,
                                reset: !0,
                                customIcons: []
                            },
                            export: {
                                csv: {
                                    filename: void 0,
                                    columnDelimiter: ",",
                                    headerCategory: "category",
                                    headerValue: "value",
                                    dateFormatter: function(t) {
                                        return new Date(t).toDateString()
                                    }
                                }
                            },
                            autoSelected: "zoom"
                        },
                        type: "line",
                        width: "100%",
                        zoom: {
                            enabled: !0,
                            type: "x",
                            autoScaleYaxis: !1,
                            zoomedArea: {
                                fill: {
                                    color: "#90CAF9",
                                    opacity: .4
                                },
                                stroke: {
                                    color: "#0D47A1",
                                    opacity: .4,
                                    width: 1
                                }
                            }
                        }
                    },
                    plotOptions: {
                        area: {
                            fillTo: "origin"
                        },
                        bar: {
                            horizontal: !1,
                            columnWidth: "70%",
                            barHeight: "70%",
                            distributed: !1,
                            startingShape: "flat",
                            endingShape: "flat",
                            rangeBarOverlap: !0,
                            rangeBarGroupRows: !1,
                            colors: {
                                ranges: [],
                                backgroundBarColors: [],
                                backgroundBarOpacity: 1,
                                backgroundBarRadius: 0
                            },
                            dataLabels: {
                                position: "top",
                                maxItems: 100,
                                hideOverflowingLabels: !0,
                                orientation: "horizontal"
                            }
                        },
                        bubble: {
                            minBubbleRadius: void 0,
                            maxBubbleRadius: void 0
                        },
                        candlestick: {
                            colors: {
                                upward: "#00B746",
                                downward: "#EF403C"
                            },
                            wick: {
                                useFillColor: !0
                            }
                        },
                        heatmap: {
                            radius: 2,
                            enableShades: !0,
                            shadeIntensity: .5,
                            reverseNegativeShade: !1,
                            distributed: !1,
                            useFillColorAsStroke: !1,
                            colorScale: {
                                inverse: !1,
                                ranges: [],
                                min: void 0,
                                max: void 0
                            }
                        },
                        treemap: {
                            enableShades: !0,
                            shadeIntensity: .5,
                            distributed: !1,
                            reverseNegativeShade: !1,
                            useFillColorAsStroke: !1,
                            colorScale: {
                                inverse: !1,
                                ranges: [],
                                min: void 0,
                                max: void 0
                            }
                        },
                        radialBar: {
                            inverseOrder: !1,
                            startAngle: 0,
                            endAngle: 360,
                            offsetX: 0,
                            offsetY: 0,
                            hollow: {
                                margin: 5,
                                size: "50%",
                                background: "transparent",
                                image: void 0,
                                imageWidth: 150,
                                imageHeight: 150,
                                imageOffsetX: 0,
                                imageOffsetY: 0,
                                imageClipped: !0,
                                position: "front",
                                dropShadow: {
                                    enabled: !1,
                                    top: 0,
                                    left: 0,
                                    blur: 3,
                                    color: "#000",
                                    opacity: .5
                                }
                            },
                            track: {
                                show: !0,
                                startAngle: void 0,
                                endAngle: void 0,
                                background: "#f2f2f2",
                                strokeWidth: "97%",
                                opacity: 1,
                                margin: 5,
                                dropShadow: {
                                    enabled: !1,
                                    top: 0,
                                    left: 0,
                                    blur: 3,
                                    color: "#000",
                                    opacity: .5
                                }
                            },
                            dataLabels: {
                                show: !0,
                                name: {
                                    show: !0,
                                    fontSize: "16px",
                                    fontFamily: void 0,
                                    fontWeight: 600,
                                    color: void 0,
                                    offsetY: 0,
                                    formatter: function(t) {
                                        return t
                                    }
                                },
                                value: {
                                    show: !0,
                                    fontSize: "14px",
                                    fontFamily: void 0,
                                    fontWeight: 400,
                                    color: void 0,
                                    offsetY: 16,
                                    formatter: function(t) {
                                        return t + "%"
                                    }
                                },
                                total: {
                                    show: !1,
                                    label: "Total",
                                    fontSize: "16px",
                                    fontWeight: 600,
                                    fontFamily: void 0,
                                    color: void 0,
                                    formatter: function(t) {
                                        return t.globals.seriesTotals.reduce((function(t, e) {
                                            return t + e
                                        }
                                        ), 0) / t.globals.series.length + "%"
                                    }
                                }
                            }
                        },
                        pie: {
                            customScale: 1,
                            offsetX: 0,
                            offsetY: 0,
                            startAngle: 0,
                            endAngle: 360,
                            expandOnClick: !0,
                            dataLabels: {
                                offset: 0,
                                minAngleToShowLabel: 10
                            },
                            donut: {
                                size: "65%",
                                background: "transparent",
                                labels: {
                                    show: !1,
                                    name: {
                                        show: !0,
                                        fontSize: "16px",
                                        fontFamily: void 0,
                                        fontWeight: 600,
                                        color: void 0,
                                        offsetY: -10,
                                        formatter: function(t) {
                                            return t
                                        }
                                    },
                                    value: {
                                        show: !0,
                                        fontSize: "20px",
                                        fontFamily: void 0,
                                        fontWeight: 400,
                                        color: void 0,
                                        offsetY: 10,
                                        formatter: function(t) {
                                            return t
                                        }
                                    },
                                    total: {
                                        show: !1,
                                        showAlways: !1,
                                        label: "Total",
                                        fontSize: "16px",
                                        fontWeight: 400,
                                        fontFamily: void 0,
                                        color: void 0,
                                        formatter: function(t) {
                                            return t.globals.seriesTotals.reduce((function(t, e) {
                                                return t + e
                                            }
                                            ), 0)
                                        }
                                    }
                                }
                            }
                        },
                        polarArea: {
                            rings: {
                                strokeWidth: 1,
                                strokeColor: "#e8e8e8"
                            }
                        },
                        radar: {
                            size: void 0,
                            offsetX: 0,
                            offsetY: 0,
                            polygons: {
                                strokeWidth: 1,
                                strokeColors: "#e8e8e8",
                                connectorColors: "#e8e8e8",
                                fill: {
                                    colors: void 0
                                }
                            }
                        }
                    },
                    colors: void 0,
                    dataLabels: {
                        enabled: !0,
                        enabledOnSeries: void 0,
                        formatter: function(t) {
                            return null !== t ? t : ""
                        },
                        textAnchor: "middle",
                        distributed: !1,
                        offsetX: 0,
                        offsetY: 0,
                        style: {
                            fontSize: "12px",
                            fontFamily: void 0,
                            fontWeight: 600,
                            colors: void 0
                        },
                        background: {
                            enabled: !0,
                            foreColor: "#fff",
                            borderRadius: 2,
                            padding: 4,
                            opacity: .9,
                            borderWidth: 1,
                            borderColor: "#fff",
                            dropShadow: {
                                enabled: !1,
                                top: 1,
                                left: 1,
                                blur: 1,
                                color: "#000",
                                opacity: .45
                            }
                        },
                        dropShadow: {
                            enabled: !1,
                            top: 1,
                            left: 1,
                            blur: 1,
                            color: "#000",
                            opacity: .45
                        }
                    },
                    fill: {
                        type: "solid",
                        colors: void 0,
                        opacity: .85,
                        gradient: {
                            shade: "dark",
                            type: "horizontal",
                            shadeIntensity: .5,
                            gradientToColors: void 0,
                            inverseColors: !0,
                            opacityFrom: 1,
                            opacityTo: 1,
                            stops: [0, 50, 100],
                            colorStops: []
                        },
                        image: {
                            src: [],
                            width: void 0,
                            height: void 0
                        },
                        pattern: {
                            style: "squares",
                            width: 6,
                            height: 6,
                            strokeWidth: 2
                        }
                    },
                    grid: {
                        show: !0,
                        borderColor: "#e0e0e0",
                        strokeDashArray: 0,
                        position: "back",
                        xaxis: {
                            lines: {
                                show: !1
                            }
                        },
                        yaxis: {
                            lines: {
                                show: !0
                            }
                        },
                        row: {
                            colors: void 0,
                            opacity: .5
                        },
                        column: {
                            colors: void 0,
                            opacity: .5
                        },
                        padding: {
                            top: 0,
                            right: 10,
                            bottom: 0,
                            left: 12
                        }
                    },
                    labels: [],
                    legend: {
                        show: !0,
                        showForSingleSeries: !1,
                        showForNullSeries: !0,
                        showForZeroSeries: !0,
                        floating: !1,
                        position: "bottom",
                        horizontalAlign: "center",
                        inverseOrder: !1,
                        fontSize: "12px",
                        fontFamily: void 0,
                        fontWeight: 400,
                        width: void 0,
                        height: void 0,
                        formatter: void 0,
                        tooltipHoverFormatter: void 0,
                        offsetX: -20,
                        offsetY: 4,
                        labels: {
                            colors: void 0,
                            useSeriesColors: !1
                        },
                        markers: {
                            width: 12,
                            height: 12,
                            strokeWidth: 0,
                            fillColors: void 0,
                            strokeColor: "#fff",
                            radius: 12,
                            customHTML: void 0,
                            offsetX: 0,
                            offsetY: 0,
                            onClick: void 0
                        },
                        itemMargin: {
                            horizontal: 5,
                            vertical: 2
                        },
                        onItemClick: {
                            toggleDataSeries: !0
                        },
                        onItemHover: {
                            highlightDataSeries: !0
                        }
                    },
                    markers: {
                        discrete: [],
                        size: 0,
                        colors: void 0,
                        strokeColors: "#fff",
                        strokeWidth: 2,
                        strokeOpacity: .9,
                        strokeDashArray: 0,
                        fillOpacity: 1,
                        shape: "circle",
                        radius: 2,
                        offsetX: 0,
                        offsetY: 0,
                        onClick: void 0,
                        onDblClick: void 0,
                        showNullDataPoints: !0,
                        hover: {
                            size: void 0,
                            sizeOffset: 3
                        }
                    },
                    noData: {
                        text: void 0,
                        align: "center",
                        verticalAlign: "middle",
                        offsetX: 0,
                        offsetY: 0,
                        style: {
                            color: void 0,
                            fontSize: "14px",
                            fontFamily: void 0
                        }
                    },
                    responsive: [],
                    series: void 0,
                    states: {
                        normal: {
                            filter: {
                                type: "none",
                                value: 0
                            }
                        },
                        hover: {
                            filter: {
                                type: "lighten",
                                value: .1
                            }
                        },
                        active: {
                            allowMultipleDataPointsSelection: !1,
                            filter: {
                                type: "darken",
                                value: .5
                            }
                        }
                    },
                    title: {
                        text: void 0,
                        align: "left",
                        margin: 5,
                        offsetX: 0,
                        offsetY: 0,
                        floating: !1,
                        style: {
                            fontSize: "14px",
                            fontWeight: 900,
                            fontFamily: void 0,
                            color: void 0
                        }
                    },
                    subtitle: {
                        text: void 0,
                        align: "left",
                        margin: 5,
                        offsetX: 0,
                        offsetY: 30,
                        floating: !1,
                        style: {
                            fontSize: "12px",
                            fontWeight: 400,
                            fontFamily: void 0,
                            color: void 0
                        }
                    },
                    stroke: {
                        show: !0,
                        curve: "smooth",
                        lineCap: "butt",
                        width: 2,
                        colors: void 0,
                        dashArray: 0
                    },
                    tooltip: {
                        enabled: !0,
                        enabledOnSeries: void 0,
                        shared: !0,
                        followCursor: !1,
                        intersect: !1,
                        inverseOrder: !1,
                        custom: void 0,
                        fillSeriesColor: !1,
                        theme: "light",
                        style: {
                            fontSize: "12px",
                            fontFamily: void 0
                        },
                        onDatasetHover: {
                            highlightDataSeries: !1
                        },
                        x: {
                            show: !0,
                            format: "dd MMM",
                            formatter: void 0
                        },
                        y: {
                            formatter: void 0,
                            title: {
                                formatter: function(t) {
                                    return t + ": "
                                }
                            }
                        },
                        z: {
                            formatter: void 0,
                            title: "Size: "
                        },
                        marker: {
                            show: !0,
                            fillColors: void 0
                        },
                        items: {
                            display: "flex"
                        },
                        fixed: {
                            enabled: !1,
                            position: "topRight",
                            offsetX: 0,
                            offsetY: 0
                        }
                    },
                    xaxis: {
                        type: "category",
                        categories: [],
                        convertedCatToNumeric: !1,
                        sorted: !1,
                        offsetX: 0,
                        offsetY: 0,
                        labels: {
                            show: !0,
                            rotate: -45,
                            rotateAlways: !1,
                            hideOverlappingLabels: !0,
                            trim: !1,
                            minHeight: void 0,
                            maxHeight: 120,
                            showDuplicates: !0,
                            style: {
                                colors: [],
                                fontSize: "12px",
                                fontWeight: 400,
                                fontFamily: void 0,
                                cssClass: ""
                            },
                            offsetX: 0,
                            offsetY: 0,
                            format: void 0,
                            formatter: void 0,
                            datetimeUTC: !0,
                            datetimeFormatter: {
                                year: "yyyy",
                                month: "MMM 'yy",
                                day: "dd MMM",
                                hour: "HH:mm",
                                minute: "HH:mm:ss"
                            }
                        },
                        axisBorder: {
                            show: !0,
                            color: "#e0e0e0",
                            width: "100%",
                            height: 1,
                            offsetX: 0,
                            offsetY: 0
                        },
                        axisTicks: {
                            show: !0,
                            color: "#e0e0e0",
                            height: 6,
                            offsetX: 0,
                            offsetY: 0
                        },
                        tickAmount: void 0,
                        tickPlacement: "on",
                        min: void 0,
                        max: void 0,
                        range: void 0,
                        floating: !1,
                        position: "bottom",
                        title: {
                            text: void 0,
                            offsetX: 0,
                            offsetY: 0,
                            style: {
                                color: void 0,
                                fontSize: "12px",
                                fontWeight: 900,
                                fontFamily: void 0,
                                cssClass: ""
                            }
                        },
                        crosshairs: {
                            show: !0,
                            width: 1,
                            position: "back",
                            opacity: .9,
                            stroke: {
                                color: "#b6b6b6",
                                width: 1,
                                dashArray: 3
                            },
                            fill: {
                                type: "solid",
                                color: "#B1B9C4",
                                gradient: {
                                    colorFrom: "#D8E3F0",
                                    colorTo: "#BED1E6",
                                    stops: [0, 100],
                                    opacityFrom: .4,
                                    opacityTo: .5
                                }
                            },
                            dropShadow: {
                                enabled: !1,
                                left: 0,
                                top: 0,
                                blur: 1,
                                opacity: .4
                            }
                        },
                        tooltip: {
                            enabled: !0,
                            offsetY: 0,
                            formatter: void 0,
                            style: {
                                fontSize: "12px",
                                fontFamily: void 0
                            }
                        }
                    },
                    yaxis: this.yAxis,
                    theme: {
                        mode: "light",
                        palette: "palette1",
                        monochrome: {
                            enabled: !1,
                            color: "#008FFB",
                            shadeTo: "light",
                            shadeIntensity: .65
                        }
                    }
                }
            }
        }]),
        t
    }()
      , C = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w,
            this.graphics = new b(this.ctx),
            this.w.globals.isBarHorizontal && (this.invertAxis = !0),
            this.helpers = new m(this),
            this.xAxisAnnotations = new v(this),
            this.yAxisAnnotations = new w(this),
            this.pointsAnnotations = new k(this),
            this.w.globals.isBarHorizontal && this.w.config.yaxis[0].reversed && (this.inversedReversedAxis = !0),
            this.xDivision = this.w.globals.gridWidth / this.w.globals.dataPoints
        }
        return a(t, [{
            key: "drawAxesAnnotations",
            value: function() {
                var t = this.w;
                if (t.globals.axisCharts) {
                    for (var e = this.yAxisAnnotations.drawYAxisAnnotations(), i = this.xAxisAnnotations.drawXAxisAnnotations(), a = this.pointsAnnotations.drawPointAnnotations(), s = t.config.chart.animations.enabled, r = [e, i, a], n = [i.node, e.node, a.node], o = 0; o < 3; o++)
                        t.globals.dom.elGraphical.add(r[o]),
                        !s || t.globals.resized || t.globals.dataChanged || "scatter" !== t.config.chart.type && "bubble" !== t.config.chart.type && t.globals.dataPoints > 1 && n[o].classList.add("apexcharts-element-hidden"),
                        t.globals.delayedElements.push({
                            el: n[o],
                            index: 0
                        });
                    this.helpers.annotationsBackground()
                }
            }
        }, {
            key: "drawImageAnnos",
            value: function() {
                var t = this;
                this.w.config.annotations.images.map((function(e, i) {
                    t.addImage(e, i)
                }
                ))
            }
        }, {
            key: "drawTextAnnos",
            value: function() {
                var t = this;
                this.w.config.annotations.texts.map((function(e, i) {
                    t.addText(e, i)
                }
                ))
            }
        }, {
            key: "addXaxisAnnotation",
            value: function(t, e, i) {
                this.xAxisAnnotations.addXaxisAnnotation(t, e, i)
            }
        }, {
            key: "addYaxisAnnotation",
            value: function(t, e, i) {
                this.yAxisAnnotations.addYaxisAnnotation(t, e, i)
            }
        }, {
            key: "addPointAnnotation",
            value: function(t, e, i) {
                this.pointsAnnotations.addPointAnnotation(t, e, i)
            }
        }, {
            key: "addText",
            value: function(t, e) {
                var i = t.x
                  , a = t.y
                  , s = t.text
                  , r = t.textAnchor
                  , n = t.foreColor
                  , o = t.fontSize
                  , l = t.fontFamily
                  , h = t.fontWeight
                  , c = t.cssClass
                  , d = t.backgroundColor
                  , g = t.borderWidth
                  , u = t.strokeDashArray
                  , f = t.borderRadius
                  , p = t.borderColor
                  , x = t.appendTo
                  , b = void 0 === x ? ".apexcharts-annotations" : x
                  , m = t.paddingLeft
                  , v = void 0 === m ? 4 : m
                  , y = t.paddingRight
                  , w = void 0 === y ? 4 : y
                  , k = t.paddingBottom
                  , A = void 0 === k ? 2 : k
                  , S = t.paddingTop
                  , C = void 0 === S ? 2 : S
                  , L = this.w
                  , P = this.graphics.drawText({
                    x: i,
                    y: a,
                    text: s,
                    textAnchor: r || "start",
                    fontSize: o || "12px",
                    fontWeight: h || "regular",
                    fontFamily: l || L.config.chart.fontFamily,
                    foreColor: n || L.config.chart.foreColor,
                    cssClass: c
                })
                  , T = L.globals.dom.baseEl.querySelector(b);
                T && T.appendChild(P.node);
                var z = P.bbox();
                if (s) {
                    var I = this.graphics.drawRect(z.x - v, z.y - C, z.width + v + w, z.height + A + C, f, d || "transparent", 1, g, p, u);
                    T.insertBefore(I.node, P.node)
                }
            }
        }, {
            key: "addImage",
            value: function(t, e) {
                var i = this.w
                  , a = t.path
                  , s = t.x
                  , r = void 0 === s ? 0 : s
                  , n = t.y
                  , o = void 0 === n ? 0 : n
                  , l = t.width
                  , h = void 0 === l ? 20 : l
                  , c = t.height
                  , d = void 0 === c ? 20 : c
                  , g = t.appendTo
                  , u = void 0 === g ? ".apexcharts-annotations" : g
                  , f = i.globals.dom.Paper.image(a);
                f.size(h, d).move(r, o);
                var p = i.globals.dom.baseEl.querySelector(u);
                p && p.appendChild(f.node)
            }
        }, {
            key: "addXaxisAnnotationExternal",
            value: function(t, e, i) {
                return this.addAnnotationExternal({
                    params: t,
                    pushToMemory: e,
                    context: i,
                    type: "xaxis",
                    contextMethod: i.addXaxisAnnotation
                }),
                i
            }
        }, {
            key: "addYaxisAnnotationExternal",
            value: function(t, e, i) {
                return this.addAnnotationExternal({
                    params: t,
                    pushToMemory: e,
                    context: i,
                    type: "yaxis",
                    contextMethod: i.addYaxisAnnotation
                }),
                i
            }
        }, {
            key: "addPointAnnotationExternal",
            value: function(t, e, i) {
                return void 0 === this.invertAxis && (this.invertAxis = i.w.globals.isBarHorizontal),
                this.addAnnotationExternal({
                    params: t,
                    pushToMemory: e,
                    context: i,
                    type: "point",
                    contextMethod: i.addPointAnnotation
                }),
                i
            }
        }, {
            key: "addAnnotationExternal",
            value: function(t) {
                var e = t.params
                  , i = t.pushToMemory
                  , a = t.context
                  , s = t.type
                  , r = t.contextMethod
                  , n = a
                  , o = n.w
                  , l = o.globals.dom.baseEl.querySelector(".apexcharts-".concat(s, "-annotations"))
                  , h = l.childNodes.length + 1
                  , c = new S
                  , d = Object.assign({}, "xaxis" === s ? c.xAxisAnnotation : "yaxis" === s ? c.yAxisAnnotation : c.pointAnnotation)
                  , g = f.extend(d, e);
                switch (s) {
                case "xaxis":
                    this.addXaxisAnnotation(g, l, h);
                    break;
                case "yaxis":
                    this.addYaxisAnnotation(g, l, h);
                    break;
                case "point":
                    this.addPointAnnotation(g, l, h)
                }
                var u = o.globals.dom.baseEl.querySelector(".apexcharts-".concat(s, "-annotations .apexcharts-").concat(s, "-annotation-label[rel='").concat(h, "']"))
                  , p = this.helpers.addBackgroundToAnno(u, g);
                return p && l.insertBefore(p.node, u),
                i && o.globals.memory.methodsToExec.push({
                    context: n,
                    id: g.id ? g.id : f.randomId(),
                    method: r,
                    label: "addAnnotation",
                    params: e
                }),
                a
            }
        }, {
            key: "clearAnnotations",
            value: function(t) {
                var e = t.w
                  , i = e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations");
                e.globals.memory.methodsToExec.map((function(t, i) {
                    "addText" !== t.label && "addAnnotation" !== t.label || e.globals.memory.methodsToExec.splice(i, 1)
                }
                )),
                i = f.listToArray(i),
                Array.prototype.forEach.call(i, (function(t) {
                    for (; t.firstChild; )
                        t.removeChild(t.firstChild)
                }
                ))
            }
        }, {
            key: "removeAnnotation",
            value: function(t, e) {
                var i = t.w
                  , a = i.globals.dom.baseEl.querySelectorAll(".".concat(e));
                a && (i.globals.memory.methodsToExec.map((function(t, a) {
                    t.id === e && i.globals.memory.methodsToExec.splice(a, 1)
                }
                )),
                Array.prototype.forEach.call(a, (function(t) {
                    t.parentElement.removeChild(t)
                }
                )))
            }
        }]),
        t
    }()
      , L = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w,
            this.opts = null,
            this.seriesIndex = 0
        }
        return a(t, [{
            key: "clippedImgArea",
            value: function(t) {
                var e = this.w
                  , i = e.config
                  , a = parseInt(e.globals.gridWidth, 10)
                  , s = parseInt(e.globals.gridHeight, 10)
                  , r = a > s ? a : s
                  , n = t.image
                  , o = 0
                  , l = 0;
                void 0 === t.width && void 0 === t.height ? void 0 !== i.fill.image.width && void 0 !== i.fill.image.height ? (o = i.fill.image.width + 1,
                l = i.fill.image.height) : (o = r + 1,
                l = r) : (o = t.width,
                l = t.height);
                var h = document.createElementNS(e.globals.SVGNS, "pattern");
                b.setAttrs(h, {
                    id: t.patternID,
                    patternUnits: t.patternUnits ? t.patternUnits : "userSpaceOnUse",
                    width: o + "px",
                    height: l + "px"
                });
                var c = document.createElementNS(e.globals.SVGNS, "image");
                h.appendChild(c),
                c.setAttributeNS(window.SVG.xlink, "href", n),
                b.setAttrs(c, {
                    x: 0,
                    y: 0,
                    preserveAspectRatio: "none",
                    width: o + "px",
                    height: l + "px"
                }),
                c.style.opacity = t.opacity,
                e.globals.dom.elDefs.node.appendChild(h)
            }
        }, {
            key: "getSeriesIndex",
            value: function(t) {
                var e = this.w;
                return ("bar" === e.config.chart.type || "rangeBar" === e.config.chart.type) && e.config.plotOptions.bar.distributed || "heatmap" === e.config.chart.type || "treemap" === e.config.chart.type ? this.seriesIndex = t.seriesNumber : this.seriesIndex = t.seriesNumber % e.globals.series.length,
                this.seriesIndex
            }
        }, {
            key: "fillPath",
            value: function(t) {
                var e = this.w;
                this.opts = t;
                var i, a, s, r = this.w.config;
                this.seriesIndex = this.getSeriesIndex(t);
                var n = this.getFillColors()[this.seriesIndex];
                void 0 !== e.globals.seriesColors[this.seriesIndex] && (n = e.globals.seriesColors[this.seriesIndex]),
                "function" == typeof n && (n = n({
                    seriesIndex: this.seriesIndex,
                    dataPointIndex: t.dataPointIndex,
                    value: t.value,
                    w: e
                }));
                var o = this.getFillType(this.seriesIndex)
                  , l = Array.isArray(r.fill.opacity) ? r.fill.opacity[this.seriesIndex] : r.fill.opacity;
                t.color && (n = t.color);
                var h = n;
                if (-1 === n.indexOf("rgb") ? n.length < 9 && (h = f.hexToRgba(n, l)) : n.indexOf("rgba") > -1 && (l = f.getOpacityFromRGBA(n)),
                t.opacity && (l = t.opacity),
                "pattern" === o && (a = this.handlePatternFill(a, n, l, h)),
                "gradient" === o && (s = this.handleGradientFill(n, l, this.seriesIndex)),
                "image" === o) {
                    var c = r.fill.image.src
                      , d = t.patternID ? t.patternID : "";
                    this.clippedImgArea({
                        opacity: l,
                        image: Array.isArray(c) ? t.seriesNumber < c.length ? c[t.seriesNumber] : c[0] : c,
                        width: t.width ? t.width : void 0,
                        height: t.height ? t.height : void 0,
                        patternUnits: t.patternUnits,
                        patternID: "pattern".concat(e.globals.cuid).concat(t.seriesNumber + 1).concat(d)
                    }),
                    i = "url(#pattern".concat(e.globals.cuid).concat(t.seriesNumber + 1).concat(d, ")")
                } else
                    i = "gradient" === o ? s : "pattern" === o ? a : h;
                return t.solid && (i = h),
                i
            }
        }, {
            key: "getFillType",
            value: function(t) {
                var e = this.w;
                return Array.isArray(e.config.fill.type) ? e.config.fill.type[t] : e.config.fill.type
            }
        }, {
            key: "getFillColors",
            value: function() {
                var t = this.w
                  , e = t.config
                  , i = this.opts
                  , a = [];
                return t.globals.comboCharts ? "line" === t.config.series[this.seriesIndex].type ? Array.isArray(t.globals.stroke.colors) ? a = t.globals.stroke.colors : a.push(t.globals.stroke.colors) : Array.isArray(t.globals.fill.colors) ? a = t.globals.fill.colors : a.push(t.globals.fill.colors) : "line" === e.chart.type ? Array.isArray(t.globals.stroke.colors) ? a = t.globals.stroke.colors : a.push(t.globals.stroke.colors) : Array.isArray(t.globals.fill.colors) ? a = t.globals.fill.colors : a.push(t.globals.fill.colors),
                void 0 !== i.fillColors && (a = [],
                Array.isArray(i.fillColors) ? a = i.fillColors.slice() : a.push(i.fillColors)),
                a
            }
        }, {
            key: "handlePatternFill",
            value: function(t, e, i, a) {
                var s = this.w.config
                  , r = this.opts
                  , n = new b(this.ctx)
                  , o = void 0 === s.fill.pattern.strokeWidth ? Array.isArray(s.stroke.width) ? s.stroke.width[this.seriesIndex] : s.stroke.width : Array.isArray(s.fill.pattern.strokeWidth) ? s.fill.pattern.strokeWidth[this.seriesIndex] : s.fill.pattern.strokeWidth
                  , l = e;
                Array.isArray(s.fill.pattern.style) ? t = void 0 !== s.fill.pattern.style[r.seriesNumber] ? n.drawPattern(s.fill.pattern.style[r.seriesNumber], s.fill.pattern.width, s.fill.pattern.height, l, o, i) : a : t = n.drawPattern(s.fill.pattern.style, s.fill.pattern.width, s.fill.pattern.height, l, o, i);
                return t
            }
        }, {
            key: "handleGradientFill",
            value: function(t, e, i) {
                var a, s = this.w.config, r = this.opts, n = new b(this.ctx), o = new f, l = s.fill.gradient.type, h = t, c = void 0 === s.fill.gradient.opacityFrom ? e : Array.isArray(s.fill.gradient.opacityFrom) ? s.fill.gradient.opacityFrom[i] : s.fill.gradient.opacityFrom;
                h.indexOf("rgba") > -1 && (c = f.getOpacityFromRGBA(h));
                var d = void 0 === s.fill.gradient.opacityTo ? e : Array.isArray(s.fill.gradient.opacityTo) ? s.fill.gradient.opacityTo[i] : s.fill.gradient.opacityTo;
                if (void 0 === s.fill.gradient.gradientToColors || 0 === s.fill.gradient.gradientToColors.length)
                    a = "dark" === s.fill.gradient.shade ? o.shadeColor(-1 * parseFloat(s.fill.gradient.shadeIntensity), t.indexOf("rgb") > -1 ? f.rgb2hex(t) : t) : o.shadeColor(parseFloat(s.fill.gradient.shadeIntensity), t.indexOf("rgb") > -1 ? f.rgb2hex(t) : t);
                else if (s.fill.gradient.gradientToColors[r.seriesNumber]) {
                    var g = s.fill.gradient.gradientToColors[r.seriesNumber];
                    a = g,
                    g.indexOf("rgba") > -1 && (d = f.getOpacityFromRGBA(g))
                } else
                    a = t;
                if (s.fill.gradient.inverseColors) {
                    var u = h;
                    h = a,
                    a = u
                }
                return h.indexOf("rgb") > -1 && (h = f.rgb2hex(h)),
                a.indexOf("rgb") > -1 && (a = f.rgb2hex(a)),
                n.drawGradient(l, h, a, c, d, r.size, s.fill.gradient.stops, s.fill.gradient.colorStops, i)
            }
        }]),
        t
    }()
      , P = function() {
        function t(i, a) {
            e(this, t),
            this.ctx = i,
            this.w = i.w
        }
        return a(t, [{
            key: "setGlobalMarkerSize",
            value: function() {
                var t = this.w;
                if (t.globals.markers.size = Array.isArray(t.config.markers.size) ? t.config.markers.size : [t.config.markers.size],
                t.globals.markers.size.length > 0) {
                    if (t.globals.markers.size.length < t.globals.series.length + 1)
                        for (var e = 0; e <= t.globals.series.length; e++)
                            void 0 === t.globals.markers.size[e] && t.globals.markers.size.push(t.globals.markers.size[0])
                } else
                    t.globals.markers.size = t.config.series.map((function(e) {
                        return t.config.markers.size
                    }
                    ))
            }
        }, {
            key: "plotChartMarkers",
            value: function(t, e, i, a) {
                var s, r = arguments.length > 4 && void 0 !== arguments[4] && arguments[4], n = this.w, o = e, l = t, h = null, c = new b(this.ctx);
                if ((n.globals.markers.size[e] > 0 || r) && (h = c.group({
                    class: r ? "" : "apexcharts-series-markers"
                })).attr("clip-path", "url(#gridRectMarkerMask".concat(n.globals.cuid, ")")),
                Array.isArray(l.x))
                    for (var d = 0; d < l.x.length; d++) {
                        var g = i;
                        1 === i && 0 === d && (g = 0),
                        1 === i && 1 === d && (g = 1);
                        var u = "apexcharts-marker";
                        "line" !== n.config.chart.type && "area" !== n.config.chart.type || n.globals.comboCharts || n.config.tooltip.intersect || (u += " no-pointer-events");
                        var x = Array.isArray(n.config.markers.size) ? n.globals.markers.size[e] > 0 : n.config.markers.size > 0;
                        if (x || r) {
                            f.isNumber(l.y[d]) ? u += " w".concat(f.randomId()) : u = "apexcharts-nullpoint";
                            var m = this.getMarkerConfig(u, e, g);
                            n.config.series[o].data[g] && (n.config.series[o].data[g].fillColor && (m.pointFillColor = n.config.series[o].data[g].fillColor),
                            n.config.series[o].data[g].strokeColor && (m.pointStrokeColor = n.config.series[o].data[g].strokeColor)),
                            a && (m.pSize = a),
                            (s = c.drawMarker(l.x[d], l.y[d], m)).attr("rel", g),
                            s.attr("j", g),
                            s.attr("index", e),
                            s.node.setAttribute("default-marker-size", m.pSize);
                            var v = new p(this.ctx);
                            v.setSelectionFilter(s, e, g),
                            this.addEvents(s),
                            h && h.add(s)
                        } else
                            void 0 === n.globals.pointsArray[e] && (n.globals.pointsArray[e] = []),
                            n.globals.pointsArray[e].push([l.x[d], l.y[d]])
                    }
                return h
            }
        }, {
            key: "getMarkerConfig",
            value: function(t, e) {
                var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null
                  , a = this.w
                  , s = this.getMarkerStyle(e)
                  , r = a.globals.markers.size[e]
                  , n = a.config.markers;
                return null !== i && n.discrete.length && n.discrete.map((function(t) {
                    t.seriesIndex === e && t.dataPointIndex === i && (s.pointStrokeColor = t.strokeColor,
                    s.pointFillColor = t.fillColor,
                    r = t.size)
                }
                )),
                {
                    pSize: r,
                    pRadius: n.radius,
                    pWidth: Array.isArray(n.strokeWidth) ? n.strokeWidth[e] : n.strokeWidth,
                    pointStrokeColor: s.pointStrokeColor,
                    pointFillColor: s.pointFillColor,
                    shape: Array.isArray(n.shape) ? n.shape[e] : n.shape,
                    class: t,
                    pointStrokeOpacity: Array.isArray(n.strokeOpacity) ? n.strokeOpacity[e] : n.strokeOpacity,
                    pointStrokeDashArray: Array.isArray(n.strokeDashArray) ? n.strokeDashArray[e] : n.strokeDashArray,
                    pointFillOpacity: Array.isArray(n.fillOpacity) ? n.fillOpacity[e] : n.fillOpacity,
                    seriesIndex: e
                }
            }
        }, {
            key: "addEvents",
            value: function(t) {
                var e = this.w
                  , i = new b(this.ctx);
                t.node.addEventListener("mouseenter", i.pathMouseEnter.bind(this.ctx, t)),
                t.node.addEventListener("mouseleave", i.pathMouseLeave.bind(this.ctx, t)),
                t.node.addEventListener("mousedown", i.pathMouseDown.bind(this.ctx, t)),
                t.node.addEventListener("click", e.config.markers.onClick),
                t.node.addEventListener("dblclick", e.config.markers.onDblClick),
                t.node.addEventListener("touchstart", i.pathMouseDown.bind(this.ctx, t), {
                    passive: !0
                })
            }
        }, {
            key: "getMarkerStyle",
            value: function(t) {
                var e = this.w
                  , i = e.globals.markers.colors
                  , a = e.config.markers.strokeColor || e.config.markers.strokeColors;
                return {
                    pointStrokeColor: Array.isArray(a) ? a[t] : a,
                    pointFillColor: Array.isArray(i) ? i[t] : i
                }
            }
        }]),
        t
    }()
      , T = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w,
            this.initialAnim = this.w.config.chart.animations.enabled,
            this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled
        }
        return a(t, [{
            key: "draw",
            value: function(t, e, i) {
                var a = this.w
                  , s = new b(this.ctx)
                  , r = i.realIndex
                  , n = i.pointsPos
                  , o = i.zRatio
                  , l = i.elParent
                  , h = s.group({
                    class: "apexcharts-series-markers apexcharts-series-".concat(a.config.chart.type)
                });
                if (h.attr("clip-path", "url(#gridRectMarkerMask".concat(a.globals.cuid, ")")),
                Array.isArray(n.x))
                    for (var c = 0; c < n.x.length; c++) {
                        var d = e + 1
                          , g = !0;
                        0 === e && 0 === c && (d = 0),
                        0 === e && 1 === c && (d = 1);
                        var u = 0
                          , f = a.globals.markers.size[r];
                        if (o !== 1 / 0) {
                            f = a.globals.seriesZ[r][d] / o;
                            var p = a.config.plotOptions.bubble;
                            p.minBubbleRadius && f < p.minBubbleRadius && (f = p.minBubbleRadius),
                            p.maxBubbleRadius && f > p.maxBubbleRadius && (f = p.maxBubbleRadius)
                        }
                        a.config.chart.animations.enabled || (u = f);
                        var x = n.x[c]
                          , m = n.y[c];
                        if (u = u || 0,
                        null !== m && void 0 !== a.globals.series[r][d] || (g = !1),
                        g) {
                            var v = this.drawPoint(x, m, u, f, r, d, e);
                            h.add(v)
                        }
                        l.add(h)
                    }
            }
        }, {
            key: "drawPoint",
            value: function(t, e, i, a, s, r, n) {
                var o = this.w
                  , l = s
                  , h = new x(this.ctx)
                  , c = new p(this.ctx)
                  , d = new L(this.ctx)
                  , g = new P(this.ctx)
                  , u = new b(this.ctx)
                  , f = g.getMarkerConfig("apexcharts-marker", l)
                  , m = d.fillPath({
                    seriesNumber: s,
                    dataPointIndex: r,
                    patternUnits: "objectBoundingBox",
                    value: o.globals.series[s][n]
                })
                  , v = u.drawCircle(i);
                if (o.config.series[l].data[r] && o.config.series[l].data[r].fillColor && (m = o.config.series[l].data[r].fillColor),
                v.attr({
                    cx: t,
                    cy: e,
                    fill: m,
                    stroke: f.pointStrokeColor,
                    r: a,
                    "stroke-width": f.pWidth,
                    "stroke-dasharray": f.pointStrokeDashArray,
                    "stroke-opacity": f.pointStrokeOpacity
                }),
                o.config.chart.dropShadow.enabled) {
                    var y = o.config.chart.dropShadow;
                    c.dropShadow(v, y, s)
                }
                if (this.initialAnim && !o.globals.dataChanged && !o.globals.resized) {
                    var w = o.config.chart.animations.speed;
                    h.animateCircleRadius(v, 0, a, w, o.globals.easing, (function() {
                        window.setTimeout((function() {
                            h.animationCompleted(v)
                        }
                        ), 100)
                    }
                    ))
                }
                if (o.globals.dataChanged)
                    if (this.dynamicAnim) {
                        var k, A, S, C, T = o.config.chart.animations.dynamicAnimation.speed;
                        null != (C = o.globals.previousPaths[s] && o.globals.previousPaths[s][n]) && (k = C.x,
                        A = C.y,
                        S = void 0 !== C.r ? C.r : a);
                        for (var z = 0; z < o.globals.collapsedSeries.length; z++)
                            o.globals.collapsedSeries[z].index === s && (T = 1,
                            a = 0);
                        0 === t && 0 === e && (a = 0),
                        h.animateCircle(v, {
                            cx: k,
                            cy: A,
                            r: S
                        }, {
                            cx: t,
                            cy: e,
                            r: a
                        }, T, o.globals.easing)
                    } else
                        v.attr({
                            r: a
                        });
                return v.attr({
                    rel: r,
                    j: r,
                    index: s,
                    "default-marker-size": a
                }),
                c.setSelectionFilter(v, s, r),
                g.addEvents(v),
                v.node.classList.add("apexcharts-marker"),
                v
            }
        }, {
            key: "centerTextInBubble",
            value: function(t) {
                var e = this.w;
                return {
                    y: t += parseInt(e.config.dataLabels.style.fontSize, 10) / 4
                }
            }
        }]),
        t
    }()
      , z = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w
        }
        return a(t, [{
            key: "dataLabelsCorrection",
            value: function(t, e, i, a, s, r, n) {
                var o = this.w
                  , l = !1
                  , h = new b(this.ctx).getTextRects(i, n)
                  , c = h.width
                  , d = h.height;
                void 0 === o.globals.dataLabelsRects[a] && (o.globals.dataLabelsRects[a] = []),
                o.globals.dataLabelsRects[a].push({
                    x: t,
                    y: e,
                    width: c,
                    height: d
                });
                var g = o.globals.dataLabelsRects[a].length - 2
                  , u = void 0 !== o.globals.lastDrawnDataLabelsIndexes[a] ? o.globals.lastDrawnDataLabelsIndexes[a][o.globals.lastDrawnDataLabelsIndexes[a].length - 1] : 0;
                if (void 0 !== o.globals.dataLabelsRects[a][g]) {
                    var f = o.globals.dataLabelsRects[a][u];
                    (t > f.x + f.width + 2 || e > f.y + f.height + 2 || t + c < f.x) && (l = !0)
                }
                return (0 === s || r) && (l = !0),
                {
                    x: t,
                    y: e,
                    textRects: h,
                    drawnextLabel: l
                }
            }
        }, {
            key: "drawDataLabel",
            value: function(t, e, i) {
                var a = this
                  , s = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 2
                  , r = this.w
                  , n = new b(this.ctx)
                  , o = r.config.dataLabels
                  , l = 0
                  , h = 0
                  , c = i
                  , d = null;
                if (!o.enabled || !Array.isArray(t.x))
                    return d;
                d = n.group({
                    class: "apexcharts-data-labels"
                });
                for (var g = 0; g < t.x.length; g++)
                    if (l = t.x[g] + o.offsetX,
                    h = t.y[g] + o.offsetY + s,
                    !isNaN(l)) {
                        1 === i && 0 === g && (c = 0),
                        1 === i && 1 === g && (c = 1);
                        var u = r.globals.series[e][c]
                          , f = ""
                          , p = function(t) {
                            return r.config.dataLabels.formatter(t, {
                                ctx: a.ctx,
                                seriesIndex: e,
                                dataPointIndex: c,
                                w: r
                            })
                        };
                        if ("bubble" === r.config.chart.type) {
                            f = p(u = r.globals.seriesZ[e][c]),
                            h = t.y[g];
                            var x = new T(this.ctx)
                              , m = x.centerTextInBubble(h, e, c);
                            h = m.y
                        } else
                            void 0 !== u && (f = p(u));
                        this.plotDataLabelsText({
                            x: l,
                            y: h,
                            text: f,
                            i: e,
                            j: c,
                            parent: d,
                            offsetCorrection: !0,
                            dataLabelsConfig: r.config.dataLabels
                        })
                    }
                return d
            }
        }, {
            key: "plotDataLabelsText",
            value: function(t) {
                var e = this.w
                  , i = new b(this.ctx)
                  , a = t.x
                  , s = t.y
                  , r = t.i
                  , n = t.j
                  , o = t.text
                  , l = t.textAnchor
                  , h = t.fontSize
                  , c = t.parent
                  , d = t.dataLabelsConfig
                  , g = t.color
                  , u = t.alwaysDrawDataLabel
                  , f = t.offsetCorrection;
                if (!(Array.isArray(e.config.dataLabels.enabledOnSeries) && e.config.dataLabels.enabledOnSeries.indexOf(r) < 0)) {
                    var x = {
                        x: a,
                        y: s,
                        drawnextLabel: !0
                    };
                    f && (x = this.dataLabelsCorrection(a, s, o, r, n, u, parseInt(d.style.fontSize, 10))),
                    e.globals.zoomed || (a = x.x,
                    s = x.y),
                    x.textRects && (a + x.textRects.width < -20 || a > e.globals.gridWidth + 20) && (o = "");
                    var m = e.globals.dataLabels.style.colors[r];
                    (("bar" === e.config.chart.type || "rangeBar" === e.config.chart.type) && e.config.plotOptions.bar.distributed || e.config.dataLabels.distributed) && (m = e.globals.dataLabels.style.colors[n]),
                    g && (m = g);
                    var v = d.offsetX
                      , y = d.offsetY;
                    if ("bar" !== e.config.chart.type && "rangeBar" !== e.config.chart.type || (v = 0,
                    y = 0),
                    x.drawnextLabel) {
                        var w = i.drawText({
                            width: 100,
                            height: parseInt(d.style.fontSize, 10),
                            x: a + v,
                            y: s + y,
                            foreColor: m,
                            textAnchor: l || d.textAnchor,
                            text: o,
                            fontSize: h || d.style.fontSize,
                            fontFamily: d.style.fontFamily,
                            fontWeight: d.style.fontWeight || "normal"
                        });
                        if (w.attr({
                            class: "apexcharts-datalabel",
                            cx: a,
                            cy: s
                        }),
                        d.dropShadow.enabled) {
                            var k = d.dropShadow;
                            new p(this.ctx).dropShadow(w, k)
                        }
                        c.add(w),
                        void 0 === e.globals.lastDrawnDataLabelsIndexes[r] && (e.globals.lastDrawnDataLabelsIndexes[r] = []),
                        e.globals.lastDrawnDataLabelsIndexes[r].push(n)
                    }
                }
            }
        }, {
            key: "addBackgroundToDataLabel",
            value: function(t, e) {
                var i = this.w
                  , a = i.config.dataLabels.background
                  , s = a.padding
                  , r = a.padding / 2
                  , n = e.width
                  , o = e.height
                  , l = new b(this.ctx).drawRect(e.x - s, e.y - r / 2, n + 2 * s, o + r, a.borderRadius, "transparent" === i.config.chart.background ? "#fff" : i.config.chart.background, a.opacity, a.borderWidth, a.borderColor);
                a.dropShadow.enabled && new p(this.ctx).dropShadow(l, a.dropShadow);
                return l
            }
        }, {
            key: "dataLabelsBackground",
            value: function() {
                var t = this.w;
                if ("bubble" !== t.config.chart.type)
                    for (var e = t.globals.dom.baseEl.querySelectorAll(".apexcharts-datalabels text"), i = 0; i < e.length; i++) {
                        var a = e[i]
                          , s = a.getBBox()
                          , r = null;
                        if (s.width && s.height && (r = this.addBackgroundToDataLabel(a, s)),
                        r) {
                            a.parentNode.insertBefore(r.node, a);
                            var n = a.getAttribute("fill");
                            t.config.chart.animations.enabled && !t.globals.resized && !t.globals.dataChanged ? r.animate().attr({
                                fill: n
                            }) : r.attr({
                                fill: n
                            }),
                            a.setAttribute("fill", t.config.dataLabels.background.foreColor)
                        }
                    }
            }
        }, {
            key: "bringForward",
            value: function() {
                for (var t = this.w, e = t.globals.dom.baseEl.querySelectorAll(".apexcharts-datalabels"), i = t.globals.dom.baseEl.querySelector(".apexcharts-plot-series:last-child"), a = 0; a < e.length; a++)
                    i && i.insertBefore(e[a], i.nextSibling)
            }
        }]),
        t
    }()
      , I = function() {
        function t(i) {
            e(this, t),
            this.w = i.w,
            this.barCtx = i
        }
        return a(t, [{
            key: "handleBarDataLabels",
            value: function(t) {
                var e = t.x
                  , i = t.y
                  , a = t.y1
                  , s = t.y2
                  , r = t.i
                  , n = t.j
                  , o = t.realIndex
                  , l = t.series
                  , h = t.barHeight
                  , c = t.barWidth
                  , d = t.barYPosition
                  , g = t.visibleSeries
                  , u = t.renderedPath
                  , f = this.w
                  , p = new b(this.barCtx.ctx)
                  , x = Array.isArray(this.barCtx.strokeWidth) ? this.barCtx.strokeWidth[o] : this.barCtx.strokeWidth
                  , m = e + parseFloat(c * g)
                  , v = i + parseFloat(h * g);
                f.globals.isXNumeric && !f.globals.isBarHorizontal && (m = e + parseFloat(c * (g + 1)),
                v = i + parseFloat(h * (g + 1)) - x);
                var y = e
                  , w = i
                  , k = {}
                  , A = f.config.dataLabels
                  , S = this.barCtx.barOptions.dataLabels;
                void 0 !== d && this.barCtx.isTimelineBar && (v = d,
                w = d);
                var C = A.offsetX
                  , L = A.offsetY
                  , P = {
                    width: 0,
                    height: 0
                };
                if (f.config.dataLabels.enabled) {
                    var T = this.barCtx.series[r][n];
                    P = p.getTextRects(f.globals.yLabelFormatters[0](T), parseFloat(A.style.fontSize))
                }
                var z = {
                    x: e,
                    y: i,
                    i: r,
                    j: n,
                    renderedPath: u,
                    bcx: m,
                    bcy: v,
                    barHeight: h,
                    barWidth: c,
                    textRects: P,
                    strokeWidth: x,
                    dataLabelsX: y,
                    dataLabelsY: w,
                    barDataLabelsConfig: S,
                    offX: C,
                    offY: L
                };
                return k = this.barCtx.isHorizontal ? this.calculateBarsDataLabelsPosition(z) : this.calculateColumnsDataLabelsPosition(z),
                u.attr({
                    cy: k.bcy,
                    cx: k.bcx,
                    j: n,
                    val: l[r][n],
                    barHeight: h,
                    barWidth: c
                }),
                this.drawCalculatedDataLabels({
                    x: k.dataLabelsX,
                    y: k.dataLabelsY,
                    val: this.barCtx.isTimelineBar ? [a, s] : l[r][n],
                    i: o,
                    j: n,
                    barWidth: c,
                    barHeight: h,
                    textRects: P,
                    dataLabelsConfig: A
                })
            }
        }, {
            key: "calculateColumnsDataLabelsPosition",
            value: function(t) {
                var e, i = this.w, a = t.i, s = t.j, r = t.y, n = t.bcx, o = t.barWidth, l = t.barHeight, h = t.textRects, c = t.dataLabelsY, d = t.barDataLabelsConfig, g = t.strokeWidth, u = t.offX, f = t.offY;
                l = Math.abs(l);
                var p = "vertical" === i.config.plotOptions.bar.dataLabels.orientation;
                n -= g / 2;
                var x = i.globals.gridWidth / i.globals.dataPoints;
                if (e = i.globals.isXNumeric ? n - o / 2 + u : n - x + o / 2 + u,
                p) {
                    e = e + h.height / 2 - g / 2 - 2
                }
                var b = this.barCtx.series[a][s] < 0
                  , m = r;
                switch (this.barCtx.isReversed && (m = r - l + (b ? 2 * l : 0),
                r -= l),
                d.position) {
                case "center":
                    c = p ? b ? m + l / 2 + f : m + l / 2 - f : b ? m - l / 2 + h.height / 2 + f : m + l / 2 + h.height / 2 - f;
                    break;
                case "bottom":
                    c = p ? b ? m + l + f : m + l - f : b ? m - l + h.height + g + f : m + l - h.height / 2 + g - f;
                    break;
                case "top":
                    c = p ? b ? m + f : m - f : b ? m - h.height / 2 - f : m + h.height + f
                }
                return i.config.chart.stacked || (c < 0 ? c = 0 + g : c + h.height / 3 > i.globals.gridHeight && (c = i.globals.gridHeight - g)),
                {
                    bcx: n,
                    bcy: r,
                    dataLabelsX: e,
                    dataLabelsY: c
                }
            }
        }, {
            key: "calculateBarsDataLabelsPosition",
            value: function(t) {
                var e = this.w
                  , i = t.x
                  , a = t.i
                  , s = t.j
                  , r = t.bcy
                  , n = t.barHeight
                  , o = t.barWidth
                  , l = t.textRects
                  , h = t.dataLabelsX
                  , c = t.strokeWidth
                  , d = t.barDataLabelsConfig
                  , g = t.offX
                  , u = t.offY
                  , f = e.globals.gridHeight / e.globals.dataPoints;
                o = Math.abs(o);
                var p = r - (this.barCtx.isTimelineBar ? 0 : f) + n / 2 + l.height / 2 + u - 3
                  , x = this.barCtx.series[a][s] < 0
                  , b = i;
                switch (this.barCtx.isReversed && (b = i + o - (x ? 2 * o : 0),
                i = e.globals.gridWidth - o),
                d.position) {
                case "center":
                    h = x ? b + o / 2 - g : Math.max(l.width / 2, b - o / 2) + g;
                    break;
                case "bottom":
                    h = x ? b + o - c - Math.round(l.width / 2) - g : b - o + c + Math.round(l.width / 2) + g;
                    break;
                case "top":
                    h = x ? b - c + Math.round(l.width / 2) - g : b - c - Math.round(l.width / 2) + g
                }
                return e.config.chart.stacked || (h < 0 ? h = h + l.width + c : h + l.width / 2 > e.globals.gridWidth && (h = e.globals.gridWidth - l.width - c)),
                {
                    bcx: i,
                    bcy: r,
                    dataLabelsX: h,
                    dataLabelsY: p
                }
            }
        }, {
            key: "drawCalculatedDataLabels",
            value: function(t) {
                var e = t.x
                  , i = t.y
                  , a = t.val
                  , s = t.i
                  , r = t.j
                  , o = t.textRects
                  , l = t.barHeight
                  , h = t.barWidth
                  , c = t.dataLabelsConfig
                  , d = this.w
                  , g = "rotate(0)";
                "vertical" === d.config.plotOptions.bar.dataLabels.orientation && (g = "rotate(-90, ".concat(e, ", ").concat(i, ")"));
                var u = new z(this.barCtx.ctx)
                  , f = new b(this.barCtx.ctx)
                  , p = c.formatter
                  , x = null
                  , m = d.globals.collapsedSeriesIndices.indexOf(s) > -1;
                if (c.enabled && !m) {
                    x = f.group({
                        class: "apexcharts-data-labels",
                        transform: g
                    });
                    var v = "";
                    void 0 !== a && (v = p(a, {
                        seriesIndex: s,
                        dataPointIndex: r,
                        w: d
                    })),
                    0 === a && d.config.chart.stacked && (v = "");
                    var y = d.globals.series[s][r] <= 0
                      , w = d.config.plotOptions.bar.dataLabels.position;
                    if ("vertical" === d.config.plotOptions.bar.dataLabels.orientation && ("top" === w && (c.textAnchor = y ? "end" : "start"),
                    "center" === w && (c.textAnchor = "middle"),
                    "bottom" === w && (c.textAnchor = y ? "end" : "start")),
                    this.barCtx.isTimelineBar && this.barCtx.barOptions.dataLabels.hideOverflowingLabels)
                        h < f.getTextRects(v, parseFloat(c.style.fontSize)).width && (v = "");
                    d.config.chart.stacked && this.barCtx.barOptions.dataLabels.hideOverflowingLabels && (this.barCtx.isHorizontal ? (h > 0 && o.width / 1.6 > h || h < 0 && o.width / 1.6 < h) && (v = "") : o.height / 1.6 > l && (v = ""));
                    var k = n({}, c);
                    this.barCtx.isHorizontal && a < 0 && ("start" === c.textAnchor ? k.textAnchor = "end" : "end" === c.textAnchor && (k.textAnchor = "start")),
                    u.plotDataLabelsText({
                        x: e,
                        y: i,
                        text: v,
                        i: s,
                        j: r,
                        parent: x,
                        dataLabelsConfig: k,
                        alwaysDrawDataLabel: !0,
                        offsetCorrection: !0
                    })
                }
                return x
            }
        }]),
        t
    }()
      , M = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w,
            this.legendInactiveClass = "legend-mouseover-inactive"
        }
        return a(t, [{
            key: "getAllSeriesEls",
            value: function() {
                return this.w.globals.dom.baseEl.getElementsByClassName("apexcharts-series")
            }
        }, {
            key: "getSeriesByName",
            value: function(t) {
                return this.w.globals.dom.baseEl.querySelector(".apexcharts-inner .apexcharts-series[seriesName='".concat(f.escapeString(t), "']"))
            }
        }, {
            key: "isSeriesHidden",
            value: function(t) {
                var e = this.getSeriesByName(t)
                  , i = parseInt(e.getAttribute("data:realIndex"), 10);
                return {
                    isHidden: e.classList.contains("apexcharts-series-collapsed"),
                    realIndex: i
                }
            }
        }, {
            key: "addCollapsedClassToSeries",
            value: function(t, e) {
                var i = this.w;
                function a(i) {
                    for (var a = 0; a < i.length; a++)
                        i[a].index === e && t.node.classList.add("apexcharts-series-collapsed")
                }
                a(i.globals.collapsedSeries),
                a(i.globals.ancillaryCollapsedSeries)
            }
        }, {
            key: "toggleSeries",
            value: function(t) {
                var e = this.isSeriesHidden(t);
                return this.ctx.legend.legendHelpers.toggleDataSeries(e.realIndex, e.isHidden),
                e.isHidden
            }
        }, {
            key: "showSeries",
            value: function(t) {
                var e = this.isSeriesHidden(t);
                e.isHidden && this.ctx.legend.legendHelpers.toggleDataSeries(e.realIndex, !0)
            }
        }, {
            key: "hideSeries",
            value: function(t) {
                var e = this.isSeriesHidden(t);
                e.isHidden || this.ctx.legend.legendHelpers.toggleDataSeries(e.realIndex, !1)
            }
        }, {
            key: "resetSeries",
            value: function() {
                var t = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0]
                  , e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1]
                  , i = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]
                  , a = this.w
                  , s = f.clone(a.globals.initialSeries);
                a.globals.previousPaths = [],
                i ? (a.globals.collapsedSeries = [],
                a.globals.ancillaryCollapsedSeries = [],
                a.globals.collapsedSeriesIndices = [],
                a.globals.ancillaryCollapsedSeriesIndices = []) : s = this.emptyCollapsedSeries(s),
                a.config.series = s,
                t && (e && (a.globals.zoomed = !1,
                this.ctx.updateHelpers.revertDefaultAxisMinMax()),
                this.ctx.updateHelpers._updateSeries(s, a.config.chart.animations.dynamicAnimation.enabled))
            }
        }, {
            key: "emptyCollapsedSeries",
            value: function(t) {
                for (var e = this.w, i = 0; i < t.length; i++)
                    e.globals.collapsedSeriesIndices.indexOf(i) > -1 && (t[i].data = []);
                return t
            }
        }, {
            key: "toggleSeriesOnHover",
            value: function(t, e) {
                var i = this.w
                  , a = i.globals.dom.baseEl.querySelectorAll(".apexcharts-series, .apexcharts-datalabels");
                if ("mousemove" === t.type) {
                    var s = parseInt(e.getAttribute("rel"), 10) - 1
                      , r = null
                      , n = null;
                    i.globals.axisCharts || "radialBar" === i.config.chart.type ? i.globals.axisCharts ? (r = i.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(s, "']")),
                    n = i.globals.dom.baseEl.querySelector(".apexcharts-datalabels[data\\:realIndex='".concat(s, "']"))) : r = i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s + 1, "']")) : r = i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s + 1, "'] path"));
                    for (var o = 0; o < a.length; o++)
                        a[o].classList.add(this.legendInactiveClass);
                    null !== r && (i.globals.axisCharts || r.parentNode.classList.remove(this.legendInactiveClass),
                    r.classList.remove(this.legendInactiveClass),
                    null !== n && n.classList.remove(this.legendInactiveClass))
                } else if ("mouseout" === t.type)
                    for (var l = 0; l < a.length; l++)
                        a[l].classList.remove(this.legendInactiveClass)
            }
        }, {
            key: "highlightRangeInSeries",
            value: function(t, e) {
                var i = this
                  , a = this.w
                  , s = a.globals.dom.baseEl.getElementsByClassName("apexcharts-heatmap-rect")
                  , r = function(t) {
                    for (var e = 0; e < s.length; e++)
                        s[e].classList[t](i.legendInactiveClass)
                };
                if ("mousemove" === t.type) {
                    var n = parseInt(e.getAttribute("rel"), 10) - 1;
                    r("add"),
                    function(t) {
                        for (var e = 0; e < s.length; e++) {
                            var a = parseInt(s[e].getAttribute("val"), 10);
                            a >= t.from && a <= t.to && s[e].classList.remove(i.legendInactiveClass)
                        }
                    }(a.config.plotOptions.heatmap.colorScale.ranges[n])
                } else
                    "mouseout" === t.type && r("remove")
            }
        }, {
            key: "getActiveConfigSeriesIndex",
            value: function() {
                var t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0]
                  , e = this.w
                  , i = 0;
                if (e.config.series.length > 1)
                    for (var a = e.config.series.map((function(i, a) {
                        var s = !1;
                        return t && (s = "bar" === e.config.series[a].type || "column" === e.config.series[a].type),
                        i.data && i.data.length > 0 && !s ? a : -1
                    }
                    )), s = 0; s < a.length; s++)
                        if (-1 !== a[s]) {
                            i = a[s];
                            break
                        }
                return i
            }
        }, {
            key: "getPreviousPaths",
            value: function() {
                var t = this.w;
                function e(e, i, a) {
                    for (var s = e[i].childNodes, r = {
                        type: a,
                        paths: [],
                        realIndex: e[i].getAttribute("data:realIndex")
                    }, n = 0; n < s.length; n++)
                        if (s[n].hasAttribute("pathTo")) {
                            var o = s[n].getAttribute("pathTo");
                            r.paths.push({
                                d: o
                            })
                        }
                    t.globals.previousPaths.push(r)
                }
                t.globals.previousPaths = [];
                ["line", "area", "bar", "candlestick", "radar"].forEach((function(i) {
                    for (var a, s = (a = i,
                    t.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(a, "-series .apexcharts-series"))), r = 0; r < s.length; r++)
                        e(s, r, i)
                }
                )),
                this.handlePrevBubbleScatterPaths("bubble"),
                this.handlePrevBubbleScatterPaths("scatter");
                var i = t.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(t.config.chart.type, " .apexcharts-series"));
                if (i.length > 0)
                    for (var a = function(e) {
                        for (var i = t.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(t.config.chart.type, " .apexcharts-series[data\\:realIndex='").concat(e, "'] rect")), a = [], s = function(t) {
                            var e = function(e) {
                                return i[t].getAttribute(e)
                            }
                              , s = {
                                x: parseFloat(e("x")),
                                y: parseFloat(e("y")),
                                width: parseFloat(e("width")),
                                height: parseFloat(e("height"))
                            };
                            a.push({
                                rect: s,
                                color: i[t].getAttribute("color")
                            })
                        }, r = 0; r < i.length; r++)
                            s(r);
                        t.globals.previousPaths.push(a)
                    }, s = 0; s < i.length; s++)
                        a(s);
                t.globals.axisCharts || (t.globals.previousPaths = t.globals.series)
            }
        }, {
            key: "handlePrevBubbleScatterPaths",
            value: function(t) {
                var e = this.w
                  , i = e.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(t, "-series .apexcharts-series"));
                if (i.length > 0)
                    for (var a = 0; a < i.length; a++) {
                        for (var s = e.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(t, "-series .apexcharts-series[data\\:realIndex='").concat(a, "'] circle")), r = [], n = 0; n < s.length; n++)
                            r.push({
                                x: s[n].getAttribute("cx"),
                                y: s[n].getAttribute("cy"),
                                r: s[n].getAttribute("r")
                            });
                        e.globals.previousPaths.push(r)
                    }
            }
        }, {
            key: "clearPreviousPaths",
            value: function() {
                var t = this.w;
                t.globals.previousPaths = [],
                t.globals.allSeriesCollapsed = !1
            }
        }, {
            key: "handleNoData",
            value: function() {
                var t = this.w
                  , e = t.config.noData
                  , i = new b(this.ctx)
                  , a = t.globals.svgWidth / 2
                  , s = t.globals.svgHeight / 2
                  , r = "middle";
                if (t.globals.noData = !0,
                t.globals.animationEnded = !0,
                "left" === e.align ? (a = 10,
                r = "start") : "right" === e.align && (a = t.globals.svgWidth - 10,
                r = "end"),
                "top" === e.verticalAlign ? s = 50 : "bottom" === e.verticalAlign && (s = t.globals.svgHeight - 50),
                a += e.offsetX,
                s = s + parseInt(e.style.fontSize, 10) + 2 + e.offsetY,
                void 0 !== e.text && "" !== e.text) {
                    var n = i.drawText({
                        x: a,
                        y: s,
                        text: e.text,
                        textAnchor: r,
                        fontSize: e.style.fontSize,
                        fontFamily: e.style.fontFamily,
                        foreColor: e.style.color,
                        opacity: 1,
                        class: "apexcharts-text-nodata"
                    });
                    t.globals.dom.Paper.add(n)
                }
            }
        }, {
            key: "setNullSeriesToZeroValues",
            value: function(t) {
                for (var e = this.w, i = 0; i < t.length; i++)
                    if (0 === t[i].length)
                        for (var a = 0; a < t[e.globals.maxValsInArrayIndex].length; a++)
                            t[i].push(0);
                return t
            }
        }, {
            key: "hasAllSeriesEqualX",
            value: function() {
                for (var t = !0, e = this.w, i = this.filteredSeriesX(), a = 0; a < i.length - 1; a++)
                    if (i[a][0] !== i[a + 1][0]) {
                        t = !1;
                        break
                    }
                return e.globals.allSeriesHasEqualX = t,
                t
            }
        }, {
            key: "filteredSeriesX",
            value: function() {
                var t = this.w.globals.seriesX.map((function(t) {
                    return t.length > 0 ? t : []
                }
                ));
                return t
            }
        }]),
        t
    }()
      , E = function() {
        function t(i) {
            e(this, t),
            this.w = i.w,
            this.barCtx = i
        }
        return a(t, [{
            key: "initVariables",
            value: function(t) {
                var e = this.w;
                this.barCtx.series = t,
                this.barCtx.totalItems = 0,
                this.barCtx.seriesLen = 0,
                this.barCtx.visibleI = -1,
                this.barCtx.visibleItems = 1;
                for (var i = 0; i < t.length; i++)
                    if (t[i].length > 0 && (this.barCtx.seriesLen = this.barCtx.seriesLen + 1,
                    this.barCtx.totalItems += t[i].length),
                    e.globals.isXNumeric)
                        for (var a = 0; a < t[i].length; a++)
                            e.globals.seriesX[i][a] > e.globals.minX && e.globals.seriesX[i][a] < e.globals.maxX && this.barCtx.visibleItems++;
                    else
                        this.barCtx.visibleItems = e.globals.dataPoints;
                0 === this.barCtx.seriesLen && (this.barCtx.seriesLen = 1)
            }
        }, {
            key: "initialPositions",
            value: function() {
                var t, e, i, a, s, r, n, o, l = this.w, h = l.globals.dataPoints;
                this.barCtx.isTimelineBar && (h = l.globals.labels.length);
                var c = this.barCtx.seriesLen;
                if (l.config.plotOptions.bar.rangeBarGroupRows && (c = 1),
                this.barCtx.isHorizontal)
                    s = (i = l.globals.gridHeight / h) / c,
                    l.globals.isXNumeric && (s = (i = l.globals.gridHeight / this.barCtx.totalItems) / this.barCtx.seriesLen),
                    s = s * parseInt(this.barCtx.barOptions.barHeight, 10) / 100,
                    o = this.barCtx.baseLineInvertedY + l.globals.padHorizontal + (this.barCtx.isReversed ? l.globals.gridWidth : 0) - (this.barCtx.isReversed ? 2 * this.barCtx.baseLineInvertedY : 0),
                    e = (i - s * this.barCtx.seriesLen) / 2;
                else {
                    if (a = l.globals.gridWidth / this.barCtx.visibleItems,
                    l.config.xaxis.convertedCatToNumeric && (a = l.globals.gridWidth / l.globals.dataPoints),
                    r = a / this.barCtx.seriesLen * parseInt(this.barCtx.barOptions.columnWidth, 10) / 100,
                    l.globals.isXNumeric) {
                        var d = this.barCtx.xRatio;
                        l.config.xaxis.convertedCatToNumeric && (d = this.barCtx.initialXRatio),
                        l.globals.minXDiff && .5 !== l.globals.minXDiff && l.globals.minXDiff / d > 0 && (a = l.globals.minXDiff / d),
                        (r = a / this.barCtx.seriesLen * parseInt(this.barCtx.barOptions.columnWidth, 10) / 100) < 1 && (r = 1)
                    }
                    n = l.globals.gridHeight - this.barCtx.baseLineY[this.barCtx.yaxisIndex] - (this.barCtx.isReversed ? l.globals.gridHeight : 0) + (this.barCtx.isReversed ? 2 * this.barCtx.baseLineY[this.barCtx.yaxisIndex] : 0),
                    t = l.globals.padHorizontal + (a - r * this.barCtx.seriesLen) / 2
                }
                return {
                    x: t,
                    y: e,
                    yDivision: i,
                    xDivision: a,
                    barHeight: s,
                    barWidth: r,
                    zeroH: n,
                    zeroW: o
                }
            }
        }, {
            key: "getPathFillColor",
            value: function(t, e, i, a) {
                var s = this.w
                  , r = new L(this.barCtx.ctx)
                  , n = null
                  , o = this.barCtx.barOptions.distributed ? i : e;
                this.barCtx.barOptions.colors.ranges.length > 0 && this.barCtx.barOptions.colors.ranges.map((function(a) {
                    t[e][i] >= a.from && t[e][i] <= a.to && (n = a.color)
                }
                ));
                return s.config.series[e].data[i] && s.config.series[e].data[i].fillColor && (n = s.config.series[e].data[i].fillColor),
                r.fillPath({
                    seriesNumber: this.barCtx.barOptions.distributed ? o : a,
                    dataPointIndex: i,
                    color: n,
                    value: t[e][i]
                })
            }
        }, {
            key: "getStrokeWidth",
            value: function(t, e, i) {
                var a = 0
                  , s = this.w;
                return void 0 === this.barCtx.series[t][e] || null === this.barCtx.series[t][e] ? this.barCtx.isNullValue = !0 : this.barCtx.isNullValue = !1,
                s.config.stroke.show && (this.barCtx.isNullValue || (a = Array.isArray(this.barCtx.strokeWidth) ? this.barCtx.strokeWidth[i] : this.barCtx.strokeWidth)),
                a
            }
        }, {
            key: "barBackground",
            value: function(t) {
                var e = t.j
                  , i = t.i
                  , a = t.x1
                  , s = t.x2
                  , r = t.y1
                  , n = t.y2
                  , o = t.elSeries
                  , l = this.w
                  , h = new b(this.barCtx.ctx)
                  , c = new M(this.barCtx.ctx).getActiveConfigSeriesIndex();
                if (this.barCtx.barOptions.colors.backgroundBarColors.length > 0 && c === i) {
                    e >= this.barCtx.barOptions.colors.backgroundBarColors.length && (e -= this.barCtx.barOptions.colors.backgroundBarColors.length);
                    var d = this.barCtx.barOptions.colors.backgroundBarColors[e]
                      , g = h.drawRect(void 0 !== a ? a : 0, void 0 !== r ? r : 0, void 0 !== s ? s : l.globals.gridWidth, void 0 !== n ? n : l.globals.gridHeight, this.barCtx.barOptions.colors.backgroundBarRadius, d, this.barCtx.barOptions.colors.backgroundBarOpacity);
                    o.add(g),
                    g.node.classList.add("apexcharts-backgroundBar")
                }
            }
        }, {
            key: "getColumnPaths",
            value: function(t) {
                var e = t.barWidth
                  , i = t.barXPosition
                  , a = t.yRatio
                  , s = t.y1
                  , r = t.y2
                  , n = t.strokeWidth
                  , o = t.series
                  , l = t.realIndex
                  , h = t.i
                  , c = t.j
                  , d = t.w
                  , g = new b(this.barCtx.ctx);
                (n = Array.isArray(n) ? n[l] : n) || (n = 0);
                var u = {
                    barWidth: e,
                    strokeWidth: n,
                    yRatio: a,
                    barXPosition: i,
                    y1: s,
                    y2: r
                }
                  , f = this.getRoundedBars(d, u, o, h, c)
                  , p = i
                  , x = i + e
                  , m = g.move(p, f.y1)
                  , v = g.move(p, f.y1);
                return d.globals.previousPaths.length > 0 && (v = this.barCtx.getPreviousPath(l, c, !1)),
                {
                    pathTo: m = m + g.line(p, f.y2) + f.endingPath + g.line(x - n, f.y2) + g.line(x - n, f.y1) + f.startingPath + "z",
                    pathFrom: v = v + g.line(p, s) + g.line(x - n, s) + g.line(x - n, s) + g.line(x - n, s) + g.line(p, s)
                }
            }
        }, {
            key: "getBarpaths",
            value: function(t) {
                var e = t.barYPosition
                  , i = t.barHeight
                  , a = t.x1
                  , s = t.x2
                  , r = t.strokeWidth
                  , n = t.series
                  , o = t.realIndex
                  , l = t.i
                  , h = t.j
                  , c = t.w
                  , d = new b(this.barCtx.ctx);
                (r = Array.isArray(r) ? r[o] : r) || (r = 0);
                var g = {
                    barHeight: i,
                    strokeWidth: r,
                    barYPosition: e,
                    x2: s,
                    x1: a
                }
                  , u = this.getRoundedBars(c, g, n, l, h)
                  , f = d.move(u.x1, e)
                  , p = d.move(u.x1, e);
                c.globals.previousPaths.length > 0 && (p = this.barCtx.getPreviousPath(o, h, !1));
                var x = e
                  , m = e + i;
                return {
                    pathTo: f = f + d.line(u.x2, x) + u.endingPath + d.line(u.x2, m - r) + d.line(u.x1, m - r) + u.startingPath + "z",
                    pathFrom: p = p + d.line(a, x) + d.line(a, m - r) + d.line(a, m - r) + d.line(a, m - r) + d.line(a, x)
                }
            }
        }, {
            key: "getRoundedBars",
            value: function(t, e, i, a, s) {
                var r = new b(this.barCtx.ctx)
                  , n = Array.isArray(e.strokeWidth) ? e.strokeWidth[a] : e.strokeWidth;
                if (n || (n = 0),
                this.barCtx.isHorizontal) {
                    var o = null
                      , l = ""
                      , h = e.x2
                      , c = e.x1;
                    if (void 0 !== i[a][s] || null !== i[a][s]) {
                        var d = i[a][s] < 0
                          , g = e.barHeight / 2 - n;
                        switch (d && (g = -e.barHeight / 2 - n),
                        g > Math.abs(h - c) && (g = Math.abs(h - c)),
                        "rounded" === this.barCtx.barOptions.endingShape && (h = e.x2 - g / 2),
                        "rounded" === this.barCtx.barOptions.startingShape && (c = e.x1 + g / 2),
                        this.barCtx.barOptions.endingShape) {
                        case "flat":
                            o = r.line(h, e.barYPosition + e.barHeight - n);
                            break;
                        case "rounded":
                            o = r.quadraticCurve(h + g, e.barYPosition + (e.barHeight - n) / 2, h, e.barYPosition + e.barHeight - n)
                        }
                        switch (this.barCtx.barOptions.startingShape) {
                        case "flat":
                            l = r.line(c, e.barYPosition + e.barHeight - n);
                            break;
                        case "rounded":
                            l = r.quadraticCurve(c - g, e.barYPosition + e.barHeight / 2, c, e.barYPosition)
                        }
                    }
                    return {
                        endingPath: o,
                        startingPath: l,
                        x2: h,
                        x1: c
                    }
                }
                var u = null
                  , f = ""
                  , p = e.y2
                  , x = e.y1;
                if (void 0 !== i[a][s] || null !== i[a][s]) {
                    var m = i[a][s] < 0
                      , v = e.barWidth / 2 - n;
                    switch (m && (v = -e.barWidth / 2 - n),
                    v > Math.abs(p - x) && (v = Math.abs(p - x)),
                    "rounded" === this.barCtx.barOptions.endingShape && (p += v / 2),
                    "rounded" === this.barCtx.barOptions.startingShape && (x -= v / 2),
                    this.barCtx.barOptions.endingShape) {
                    case "flat":
                        u = r.line(e.barXPosition + e.barWidth - n, p);
                        break;
                    case "rounded":
                        u = r.quadraticCurve(e.barXPosition + (e.barWidth - n) / 2, p - v, e.barXPosition + e.barWidth - n, p)
                    }
                    switch (this.barCtx.barOptions.startingShape) {
                    case "flat":
                        f = r.line(e.barXPosition + e.barWidth - n, x);
                        break;
                    case "rounded":
                        f = r.quadraticCurve(e.barXPosition + (e.barWidth - n) / 2, x + v, e.barXPosition, x)
                    }
                }
                return {
                    endingPath: u,
                    startingPath: f,
                    y2: p,
                    y1: x
                }
            }
        }]),
        t
    }()
      , X = function() {
        function t(i, a) {
            e(this, t),
            this.ctx = i,
            this.w = i.w;
            var s = this.w;
            this.barOptions = s.config.plotOptions.bar,
            this.isHorizontal = this.barOptions.horizontal,
            this.strokeWidth = s.config.stroke.width,
            this.isNullValue = !1,
            this.isTimelineBar = "datetime" === s.config.xaxis.type && s.globals.seriesRangeBarTimeline.length,
            this.xyRatios = a,
            null !== this.xyRatios && (this.xRatio = a.xRatio,
            this.initialXRatio = a.initialXRatio,
            this.yRatio = a.yRatio,
            this.invertedXRatio = a.invertedXRatio,
            this.invertedYRatio = a.invertedYRatio,
            this.baseLineY = a.baseLineY,
            this.baseLineInvertedY = a.baseLineInvertedY),
            this.yaxisIndex = 0,
            this.seriesLen = 0,
            this.barHelpers = new E(this)
        }
        return a(t, [{
            key: "draw",
            value: function(t, e) {
                var i = this.w
                  , a = new b(this.ctx)
                  , s = new y(this.ctx,i);
                t = s.getLogSeries(t),
                this.series = t,
                this.yRatio = s.getLogYRatios(this.yRatio),
                this.barHelpers.initVariables(t);
                var r = a.group({
                    class: "apexcharts-bar-series apexcharts-plot-series"
                });
                i.config.dataLabels.enabled && this.totalItems > this.barOptions.dataLabels.maxItems && console.warn("WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering.");
                for (var o = 0, l = 0; o < t.length; o++,
                l++) {
                    var h, c, d, g, u = void 0, p = void 0, x = [], m = [], v = i.globals.comboCharts ? e[o] : o, w = a.group({
                        class: "apexcharts-series",
                        rel: o + 1,
                        seriesName: f.escapeString(i.globals.seriesNames[v]),
                        "data:realIndex": v
                    });
                    this.ctx.series.addCollapsedClassToSeries(w, v),
                    t[o].length > 0 && (this.visibleI = this.visibleI + 1);
                    var k = 0
                      , A = 0;
                    this.yRatio.length > 1 && (this.yaxisIndex = v),
                    this.isReversed = i.config.yaxis[this.yaxisIndex] && i.config.yaxis[this.yaxisIndex].reversed;
                    var S = this.barHelpers.initialPositions();
                    p = S.y,
                    k = S.barHeight,
                    c = S.yDivision,
                    g = S.zeroW,
                    u = S.x,
                    A = S.barWidth,
                    h = S.xDivision,
                    d = S.zeroH,
                    this.horizontal || m.push(u + A / 2);
                    for (var C = a.group({
                        class: "apexcharts-datalabels",
                        "data:realIndex": v
                    }), L = 0; L < i.globals.dataPoints; L++) {
                        var P = this.barHelpers.getStrokeWidth(o, L, v)
                          , T = null
                          , z = {
                            indexes: {
                                i: o,
                                j: L,
                                realIndex: v,
                                bc: l
                            },
                            x: u,
                            y: p,
                            strokeWidth: P,
                            elSeries: w
                        };
                        this.isHorizontal ? (T = this.drawBarPaths(n(n({}, z), {}, {
                            barHeight: k,
                            zeroW: g,
                            yDivision: c
                        })),
                        A = this.series[o][L] / this.invertedYRatio) : (T = this.drawColumnPaths(n(n({}, z), {}, {
                            xDivision: h,
                            barWidth: A,
                            zeroH: d
                        })),
                        k = this.series[o][L] / this.yRatio[this.yaxisIndex]),
                        p = T.y,
                        u = T.x,
                        L > 0 && m.push(u + A / 2),
                        x.push(p);
                        var I = this.barHelpers.getPathFillColor(t, o, L, v);
                        this.renderSeries({
                            realIndex: v,
                            pathFill: I,
                            j: L,
                            i: o,
                            pathFrom: T.pathFrom,
                            pathTo: T.pathTo,
                            strokeWidth: P,
                            elSeries: w,
                            x: u,
                            y: p,
                            series: t,
                            barHeight: k,
                            barWidth: A,
                            elDataLabelsWrap: C,
                            visibleSeries: this.visibleI,
                            type: "bar"
                        })
                    }
                    i.globals.seriesXvalues[v] = m,
                    i.globals.seriesYvalues[v] = x,
                    r.add(w)
                }
                return r
            }
        }, {
            key: "renderSeries",
            value: function(t) {
                var e = t.realIndex
                  , i = t.pathFill
                  , a = t.lineFill
                  , s = t.j
                  , r = t.i
                  , n = t.pathFrom
                  , o = t.pathTo
                  , l = t.strokeWidth
                  , h = t.elSeries
                  , c = t.x
                  , d = t.y
                  , g = t.y1
                  , u = t.y2
                  , f = t.series
                  , x = t.barHeight
                  , m = t.barWidth
                  , v = t.barYPosition
                  , y = t.elDataLabelsWrap
                  , w = t.visibleSeries
                  , k = t.type
                  , A = this.w
                  , S = new b(this.ctx);
                a || (a = this.barOptions.distributed ? A.globals.stroke.colors[s] : A.globals.stroke.colors[e]),
                A.config.series[r].data[s] && A.config.series[r].data[s].strokeColor && (a = A.config.series[r].data[s].strokeColor),
                this.isNullValue && (i = "none");
                var C = s / A.config.chart.animations.animateGradually.delay * (A.config.chart.animations.speed / A.globals.dataPoints) / 2.4
                  , L = S.renderPaths({
                    i: r,
                    j: s,
                    realIndex: e,
                    pathFrom: n,
                    pathTo: o,
                    stroke: a,
                    strokeWidth: l,
                    strokeLineCap: A.config.stroke.lineCap,
                    fill: i,
                    animationDelay: C,
                    initialSpeed: A.config.chart.animations.speed,
                    dataChangeSpeed: A.config.chart.animations.dynamicAnimation.speed,
                    className: "apexcharts-".concat(k, "-area")
                });
                L.attr("clip-path", "url(#gridRectMask".concat(A.globals.cuid, ")")),
                void 0 !== g && void 0 !== u && (L.attr("data-range-y1", g),
                L.attr("data-range-y2", u)),
                new p(this.ctx).setSelectionFilter(L, e, s),
                h.add(L);
                var P = new I(this).handleBarDataLabels({
                    x: c,
                    y: d,
                    y1: g,
                    y2: u,
                    i: r,
                    j: s,
                    series: f,
                    realIndex: e,
                    barHeight: x,
                    barWidth: m,
                    barYPosition: v,
                    renderedPath: L,
                    visibleSeries: w
                });
                return null !== P && y.add(P),
                h.add(y),
                h
            }
        }, {
            key: "drawBarPaths",
            value: function(t) {
                var e = t.indexes
                  , i = t.barHeight
                  , a = t.strokeWidth
                  , s = t.zeroW
                  , r = t.x
                  , n = t.y
                  , o = t.yDivision
                  , l = t.elSeries
                  , h = this.w
                  , c = e.i
                  , d = e.j;
                h.globals.isXNumeric && (n = (h.globals.seriesX[c][d] - h.globals.minX) / this.invertedXRatio - i);
                var g = n + i * this.visibleI;
                r = void 0 === this.series[c][d] || null === this.series[c][d] ? s : s + this.series[c][d] / this.invertedYRatio - 2 * (this.isReversed ? this.series[c][d] / this.invertedYRatio : 0);
                var u = this.barHelpers.getBarpaths({
                    barYPosition: g,
                    barHeight: i,
                    x1: s,
                    x2: r,
                    strokeWidth: a,
                    series: this.series,
                    realIndex: e.realIndex,
                    i: c,
                    j: d,
                    w: h
                });
                return h.globals.isXNumeric || (n += o),
                this.barHelpers.barBackground({
                    j: d,
                    i: c,
                    y1: g - i * this.visibleI,
                    y2: i * this.seriesLen,
                    elSeries: l
                }),
                {
                    pathTo: u.pathTo,
                    pathFrom: u.pathFrom,
                    x: r,
                    y: n,
                    barYPosition: g
                }
            }
        }, {
            key: "drawColumnPaths",
            value: function(t) {
                var e = t.indexes
                  , i = t.x
                  , a = t.y
                  , s = t.xDivision
                  , r = t.barWidth
                  , n = t.zeroH
                  , o = t.strokeWidth
                  , l = t.elSeries
                  , h = this.w
                  , c = e.i
                  , d = e.j
                  , g = e.bc;
                if (h.globals.isXNumeric) {
                    var u = c;
                    h.globals.seriesX[c].length || (u = h.globals.maxValsInArrayIndex),
                    i = (h.globals.seriesX[u][d] - h.globals.minX) / this.xRatio - r * this.seriesLen / 2
                }
                var f = i + r * this.visibleI;
                a = void 0 === this.series[c][d] || null === this.series[c][d] ? n : n - this.series[c][d] / this.yRatio[this.yaxisIndex] + 2 * (this.isReversed ? this.series[c][d] / this.yRatio[this.yaxisIndex] : 0);
                var p = this.barHelpers.getColumnPaths({
                    barXPosition: f,
                    barWidth: r,
                    y1: n,
                    y2: a,
                    strokeWidth: o,
                    series: this.series,
                    realIndex: e.realIndex,
                    i: c,
                    j: d,
                    w: h
                });
                return h.globals.isXNumeric || (i += s),
                this.barHelpers.barBackground({
                    bc: g,
                    j: d,
                    i: c,
                    x1: f - o / 2 - r * this.visibleI,
                    x2: r * this.seriesLen + o / 2,
                    elSeries: l
                }),
                {
                    pathTo: p.pathTo,
                    pathFrom: p.pathFrom,
                    x: i,
                    y: a,
                    barXPosition: f
                }
            }
        }, {
            key: "getPreviousPath",
            value: function(t, e) {
                for (var i, a = this.w, s = 0; s < a.globals.previousPaths.length; s++) {
                    var r = a.globals.previousPaths[s];
                    r.paths && r.paths.length > 0 && parseInt(r.realIndex, 10) === parseInt(t, 10) && void 0 !== a.globals.previousPaths[s].paths[e] && (i = a.globals.previousPaths[s].paths[e].d)
                }
                return i
            }
        }]),
        t
    }()
      , Y = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w,
            this.months31 = [1, 3, 5, 7, 8, 10, 12],
            this.months30 = [2, 4, 6, 9, 11],
            this.daysCntOfYear = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]
        }
        return a(t, [{
            key: "isValidDate",
            value: function(t) {
                return !isNaN(this.parseDate(t))
            }
        }, {
            key: "getTimeStamp",
            value: function(t) {
                return Date.parse(t) ? this.w.config.xaxis.labels.datetimeUTC ? new Date(new Date(t).toISOString().substr(0, 25)).getTime() : new Date(t).getTime() : t
            }
        }, {
            key: "getDate",
            value: function(t) {
                return this.w.config.xaxis.labels.datetimeUTC ? new Date(new Date(t).toUTCString()) : new Date(t)
            }
        }, {
            key: "parseDate",
            value: function(t) {
                var e = Date.parse(t);
                if (!isNaN(e))
                    return this.getTimeStamp(t);
                var i = Date.parse(t.replace(/-/g, "/").replace(/[a-z]+/gi, " "));
                return i = this.getTimeStamp(i)
            }
        }, {
            key: "parseDateWithTimezone",
            value: function(t) {
                return Date.parse(t.replace(/-/g, "/").replace(/[a-z]+/gi, " "))
            }
        }, {
            key: "formatDate",
            value: function(t, e) {
                var i = this.w.globals.locale
                  , a = this.w.config.xaxis.labels.datetimeUTC
                  , s = ["\0"].concat(g(i.months))
                  , r = ["\x01"].concat(g(i.shortMonths))
                  , n = ["\x02"].concat(g(i.days))
                  , o = ["\x03"].concat(g(i.shortDays));
                function l(t, e) {
                    var i = t + "";
                    for (e = e || 2; i.length < e; )
                        i = "0" + i;
                    return i
                }
                var h = a ? t.getUTCFullYear() : t.getFullYear();
                e = (e = (e = e.replace(/(^|[^\\])yyyy+/g, "$1" + h)).replace(/(^|[^\\])yy/g, "$1" + h.toString().substr(2, 2))).replace(/(^|[^\\])y/g, "$1" + h);
                var c = (a ? t.getUTCMonth() : t.getMonth()) + 1;
                e = (e = (e = (e = e.replace(/(^|[^\\])MMMM+/g, "$1" + s[0])).replace(/(^|[^\\])MMM/g, "$1" + r[0])).replace(/(^|[^\\])MM/g, "$1" + l(c))).replace(/(^|[^\\])M/g, "$1" + c);
                var d = a ? t.getUTCDate() : t.getDate();
                e = (e = (e = (e = e.replace(/(^|[^\\])dddd+/g, "$1" + n[0])).replace(/(^|[^\\])ddd/g, "$1" + o[0])).replace(/(^|[^\\])dd/g, "$1" + l(d))).replace(/(^|[^\\])d/g, "$1" + d);
                var u = a ? t.getUTCHours() : t.getHours()
                  , f = u > 12 ? u - 12 : 0 === u ? 12 : u;
                e = (e = (e = (e = e.replace(/(^|[^\\])HH+/g, "$1" + l(u))).replace(/(^|[^\\])H/g, "$1" + u)).replace(/(^|[^\\])hh+/g, "$1" + l(f))).replace(/(^|[^\\])h/g, "$1" + f);
                var p = a ? t.getUTCMinutes() : t.getMinutes();
                e = (e = e.replace(/(^|[^\\])mm+/g, "$1" + l(p))).replace(/(^|[^\\])m/g, "$1" + p);
                var x = a ? t.getUTCSeconds() : t.getSeconds();
                e = (e = e.replace(/(^|[^\\])ss+/g, "$1" + l(x))).replace(/(^|[^\\])s/g, "$1" + x);
                var b = a ? t.getUTCMilliseconds() : t.getMilliseconds();
                e = e.replace(/(^|[^\\])fff+/g, "$1" + l(b, 3)),
                b = Math.round(b / 10),
                e = e.replace(/(^|[^\\])ff/g, "$1" + l(b)),
                b = Math.round(b / 10);
                var m = u < 12 ? "AM" : "PM";
                e = (e = (e = e.replace(/(^|[^\\])f/g, "$1" + b)).replace(/(^|[^\\])TT+/g, "$1" + m)).replace(/(^|[^\\])T/g, "$1" + m.charAt(0));
                var v = m.toLowerCase();
                e = (e = e.replace(/(^|[^\\])tt+/g, "$1" + v)).replace(/(^|[^\\])t/g, "$1" + v.charAt(0));
                var y = -t.getTimezoneOffset()
                  , w = a || !y ? "Z" : y > 0 ? "+" : "-";
                if (!a) {
                    var k = (y = Math.abs(y)) % 60;
                    w += l(Math.floor(y / 60)) + ":" + l(k)
                }
                e = e.replace(/(^|[^\\])K/g, "$1" + w);
                var A = (a ? t.getUTCDay() : t.getDay()) + 1;
                return e = (e = (e = (e = (e = e.replace(new RegExp(n[0],"g"), n[A])).replace(new RegExp(o[0],"g"), o[A])).replace(new RegExp(s[0],"g"), s[c])).replace(new RegExp(r[0],"g"), r[c])).replace(/\\(.)/g, "$1")
            }
        }, {
            key: "getTimeUnitsfromTimestamp",
            value: function(t, e, i) {
                var a = this.w;
                void 0 !== a.config.xaxis.min && (t = a.config.xaxis.min),
                void 0 !== a.config.xaxis.max && (e = a.config.xaxis.max);
                var s = this.getDate(t)
                  , r = this.getDate(e)
                  , n = this.formatDate(s, "yyyy MM dd HH mm ss").split(" ")
                  , o = this.formatDate(r, "yyyy MM dd HH mm ss").split(" ");
                return {
                    minSecond: parseInt(n[5], 10),
                    maxSecond: parseInt(o[5], 10),
                    minMinute: parseInt(n[4], 10),
                    maxMinute: parseInt(o[4], 10),
                    minHour: parseInt(n[3], 10),
                    maxHour: parseInt(o[3], 10),
                    minDate: parseInt(n[2], 10),
                    maxDate: parseInt(o[2], 10),
                    minMonth: parseInt(n[1], 10) - 1,
                    maxMonth: parseInt(o[1], 10) - 1,
                    minYear: parseInt(n[0], 10),
                    maxYear: parseInt(o[0], 10)
                }
            }
        }, {
            key: "isLeapYear",
            value: function(t) {
                return t % 4 == 0 && t % 100 != 0 || t % 400 == 0
            }
        }, {
            key: "calculcateLastDaysOfMonth",
            value: function(t, e, i) {
                return this.determineDaysOfMonths(t, e) - i
            }
        }, {
            key: "determineDaysOfYear",
            value: function(t) {
                var e = 365;
                return this.isLeapYear(t) && (e = 366),
                e
            }
        }, {
            key: "determineRemainingDaysOfYear",
            value: function(t, e, i) {
                var a = this.daysCntOfYear[e] + i;
                return e > 1 && this.isLeapYear() && a++,
                a
            }
        }, {
            key: "determineDaysOfMonths",
            value: function(t, e) {
                var i = 30;
                switch (t = f.monthMod(t),
                !0) {
                case this.months30.indexOf(t) > -1:
                    2 === t && (i = this.isLeapYear(e) ? 29 : 28);
                    break;
                case this.months31.indexOf(t) > -1:
                default:
                    i = 31
                }
                return i
            }
        }]),
        t
    }()
      , F = function(t) {
        o(s, t);
        var i = d(s);
        function s() {
            return e(this, s),
            i.apply(this, arguments)
        }
        return a(s, [{
            key: "draw",
            value: function(t, e) {
                var i = this.w
                  , a = new b(this.ctx);
                this.rangeBarOptions = this.w.config.plotOptions.rangeBar,
                this.series = t,
                this.seriesRangeStart = i.globals.seriesRangeStart,
                this.seriesRangeEnd = i.globals.seriesRangeEnd,
                this.barHelpers.initVariables(t);
                for (var s = a.group({
                    class: "apexcharts-rangebar-series apexcharts-plot-series"
                }), r = 0; r < t.length; r++) {
                    var o, l, h, c = void 0, d = void 0, g = void 0, u = i.globals.comboCharts ? e[r] : r, p = a.group({
                        class: "apexcharts-series",
                        seriesName: f.escapeString(i.globals.seriesNames[u]),
                        rel: r + 1,
                        "data:realIndex": u
                    });
                    t[r].length > 0 && (this.visibleI = this.visibleI + 1);
                    var x = 0
                      , m = 0;
                    this.yRatio.length > 1 && (this.yaxisIndex = u);
                    var v = this.barHelpers.initialPositions();
                    d = v.y,
                    h = v.zeroW,
                    c = v.x,
                    m = v.barWidth,
                    o = v.xDivision,
                    l = v.zeroH;
                    for (var y = a.group({
                        class: "apexcharts-datalabels",
                        "data:realIndex": u
                    }), w = 0; w < i.globals.dataPoints; w++) {
                        var k = this.barHelpers.getStrokeWidth(r, w, u)
                          , A = this.seriesRangeStart[r][w]
                          , S = this.seriesRangeEnd[r][w]
                          , C = null
                          , L = null
                          , P = {
                            x: c,
                            y: d,
                            strokeWidth: k,
                            elSeries: p
                        };
                        if (g = v.yDivision,
                        x = v.barHeight,
                        this.isHorizontal) {
                            L = d + x * this.visibleI;
                            var T = this.seriesLen;
                            i.config.plotOptions.bar.rangeBarGroupRows && (T = 1);
                            var z = (g - x * T) / 2;
                            if (void 0 === i.config.series[r].data[w])
                                break;
                            if (this.isTimelineBar && i.config.series[r].data[w].x) {
                                var I = this.detectOverlappingBars({
                                    i: r,
                                    j: w,
                                    barYPosition: L,
                                    srty: z,
                                    barHeight: x,
                                    yDivision: g,
                                    initPositions: v
                                });
                                x = I.barHeight,
                                L = I.barYPosition
                            }
                            m = (C = this.drawRangeBarPaths(n({
                                indexes: {
                                    i: r,
                                    j: w,
                                    realIndex: u
                                },
                                barHeight: x,
                                barYPosition: L,
                                zeroW: h,
                                yDivision: g,
                                y1: A,
                                y2: S
                            }, P))).barWidth
                        } else
                            x = (C = this.drawRangeColumnPaths(n({
                                indexes: {
                                    i: r,
                                    j: w,
                                    realIndex: u
                                },
                                zeroH: l,
                                barWidth: m,
                                xDivision: o
                            }, P))).barHeight;
                        d = C.y,
                        c = C.x;
                        var M = this.barHelpers.getPathFillColor(t, r, w, u)
                          , E = i.globals.stroke.colors[u];
                        this.renderSeries({
                            realIndex: u,
                            pathFill: M,
                            lineFill: E,
                            j: w,
                            i: r,
                            x: c,
                            y: d,
                            y1: A,
                            y2: S,
                            pathFrom: C.pathFrom,
                            pathTo: C.pathTo,
                            strokeWidth: k,
                            elSeries: p,
                            series: t,
                            barHeight: x,
                            barYPosition: L,
                            barWidth: m,
                            elDataLabelsWrap: y,
                            visibleSeries: this.visibleI,
                            type: "rangebar"
                        })
                    }
                    s.add(p)
                }
                return s
            }
        }, {
            key: "detectOverlappingBars",
            value: function(t) {
                var e = t.i
                  , i = t.j
                  , a = t.barYPosition
                  , s = t.srty
                  , r = t.barHeight
                  , n = t.yDivision
                  , o = t.initPositions
                  , l = this.w
                  , h = []
                  , c = l.config.series[e].data[i].rangeName
                  , d = l.config.series[e].data[i].x
                  , g = l.globals.labels.indexOf(d)
                  , u = l.globals.seriesRangeBarTimeline[e].findIndex((function(t) {
                    return t.x === d && t.overlaps.length > 0
                }
                ));
                return a = l.config.plotOptions.bar.rangeBarGroupRows ? s + n * g : s + r * this.visibleI + n * g,
                u > -1 && !l.config.plotOptions.bar.rangeBarOverlap && (h = l.globals.seriesRangeBarTimeline[e][u].overlaps).indexOf(c) > -1 && (a = (r = o.barHeight / h.length) * this.visibleI + n * (100 - parseInt(this.barOptions.barHeight, 10)) / 100 / 2 + r * (this.visibleI + h.indexOf(c)) + n * g),
                {
                    barYPosition: a,
                    barHeight: r
                }
            }
        }, {
            key: "drawRangeColumnPaths",
            value: function(t) {
                var e = t.indexes
                  , i = t.x
                  , a = (t.strokeWidth,
                t.xDivision)
                  , s = t.barWidth
                  , r = t.zeroH
                  , n = this.w
                  , o = e.i
                  , l = e.j
                  , h = this.yRatio[this.yaxisIndex]
                  , c = e.realIndex
                  , d = this.getRangeValue(c, l)
                  , g = Math.min(d.start, d.end)
                  , u = Math.max(d.start, d.end);
                n.globals.isXNumeric && (i = (n.globals.seriesX[o][l] - n.globals.minX) / this.xRatio - s / 2);
                var f = i + s * this.visibleI;
                void 0 === this.series[o][l] || null === this.series[o][l] ? g = r : (g = r - g / h,
                u = r - u / h);
                var p = Math.abs(u - g)
                  , x = this.barHelpers.getColumnPaths({
                    barXPosition: f,
                    barWidth: s,
                    y1: g,
                    y2: u,
                    strokeWidth: this.strokeWidth,
                    series: this.seriesRangeEnd,
                    i: c,
                    j: l,
                    w: n
                });
                return n.globals.isXNumeric || (i += a),
                {
                    pathTo: x.pathTo,
                    pathFrom: x.pathFrom,
                    barHeight: p,
                    x: i,
                    y: u,
                    barXPosition: f
                }
            }
        }, {
            key: "drawRangeBarPaths",
            value: function(t) {
                var e = t.indexes
                  , i = t.y
                  , a = t.y1
                  , s = t.y2
                  , r = t.yDivision
                  , n = t.barHeight
                  , o = t.barYPosition
                  , l = t.zeroW
                  , h = this.w
                  , c = l + a / this.invertedYRatio
                  , d = l + s / this.invertedYRatio
                  , g = Math.abs(d - c)
                  , u = this.barHelpers.getBarpaths({
                    barYPosition: o,
                    barHeight: n,
                    x1: c,
                    x2: d,
                    strokeWidth: this.strokeWidth,
                    series: this.seriesRangeEnd,
                    i: e.realIndex,
                    j: e.j,
                    w: h
                });
                return h.globals.isXNumeric || (i += r),
                {
                    pathTo: u.pathTo,
                    pathFrom: u.pathFrom,
                    barWidth: g,
                    x: d,
                    y: i
                }
            }
        }, {
            key: "getRangeValue",
            value: function(t, e) {
                var i = this.w;
                return {
                    start: i.globals.seriesRangeStart[t][e],
                    end: i.globals.seriesRangeEnd[t][e]
                }
            }
        }, {
            key: "getTooltipValues",
            value: function(t) {
                var e = t.ctx
                  , i = t.seriesIndex
                  , a = t.dataPointIndex
                  , s = t.y1
                  , r = t.y2
                  , n = t.w
                  , o = n.globals.seriesRangeStart[i][a]
                  , l = n.globals.seriesRangeEnd[i][a]
                  , h = n.globals.labels[a]
                  , c = n.config.series[i].name
                  , d = n.config.tooltip.y.formatter
                  , g = n.config.tooltip.y.title.formatter
                  , u = {
                    w: n,
                    seriesIndex: i,
                    dataPointIndex: a
                };
                "function" == typeof g && (c = g(c, u)),
                s && r && (o = s,
                l = r,
                n.config.series[i].data[a].x && (h = n.config.series[i].data[a].x + ":"),
                "function" == typeof d && (h = d(h, u)));
                var f = ""
                  , p = ""
                  , x = n.globals.colors[i];
                if (void 0 === n.config.tooltip.x.formatter)
                    if ("datetime" === n.config.xaxis.type) {
                        var b = new Y(e);
                        f = b.formatDate(b.getDate(o), n.config.tooltip.x.format),
                        p = b.formatDate(b.getDate(l), n.config.tooltip.x.format)
                    } else
                        f = o,
                        p = l;
                else
                    f = n.config.tooltip.x.formatter(o),
                    p = n.config.tooltip.x.formatter(l);
                return {
                    start: o,
                    end: l,
                    startVal: f,
                    endVal: p,
                    ylabel: h,
                    color: x,
                    seriesName: c
                }
            }
        }, {
            key: "buildCustomTooltipHTML",
            value: function(t) {
                var e = t.color
                  , i = t.seriesName;
                return '<div class="apexcharts-tooltip-rangebar"><div> <span class="series-name" style="color: ' + e + '">' + (i || "") + '</span></div><div> <span class="category">' + t.ylabel + ' </span> <span class="value start-value">' + t.start + '</span> <span class="separator">-</span> <span class="value end-value">' + t.end + "</span></div></div>"
            }
        }]),
        s
    }(X)
      , R = function() {
        function t(i) {
            e(this, t),
            this.opts = i
        }
        return a(t, [{
            key: "line",
            value: function() {
                return {
                    chart: {
                        animations: {
                            easing: "swing"
                        }
                    },
                    dataLabels: {
                        enabled: !1
                    },
                    stroke: {
                        width: 5,
                        curve: "straight"
                    },
                    markers: {
                        size: 0,
                        hover: {
                            sizeOffset: 6
                        }
                    },
                    xaxis: {
                        crosshairs: {
                            width: 1
                        }
                    }
                }
            }
        }, {
            key: "sparkline",
            value: function(t) {
                this.opts.yaxis[0].show = !1,
                this.opts.yaxis[0].title.text = "",
                this.opts.yaxis[0].axisBorder.show = !1,
                this.opts.yaxis[0].axisTicks.show = !1,
                this.opts.yaxis[0].floating = !0;
                return f.extend(t, {
                    grid: {
                        show: !1,
                        padding: {
                            left: 0,
                            right: 0,
                            top: 0,
                            bottom: 0
                        }
                    },
                    legend: {
                        show: !1
                    },
                    xaxis: {
                        labels: {
                            show: !1
                        },
                        tooltip: {
                            enabled: !1
                        },
                        axisBorder: {
                            show: !1
                        },
                        axisTicks: {
                            show: !1
                        }
                    },
                    chart: {
                        toolbar: {
                            show: !1
                        },
                        zoom: {
                            enabled: !1
                        }
                    },
                    dataLabels: {
                        enabled: !1
                    }
                })
            }
        }, {
            key: "bar",
            value: function() {
                return {
                    chart: {
                        stacked: !1,
                        animations: {
                            easing: "swing"
                        }
                    },
                    plotOptions: {
                        bar: {
                            dataLabels: {
                                position: "center"
                            }
                        }
                    },
                    dataLabels: {
                        style: {
                            colors: ["#fff"]
                        },
                        background: {
                            enabled: !1
                        }
                    },
                    stroke: {
                        width: 0,
                        lineCap: "square"
                    },
                    fill: {
                        opacity: .85
                    },
                    legend: {
                        markers: {
                            shape: "square",
                            radius: 2,
                            size: 8
                        }
                    },
                    tooltip: {
                        shared: !1
                    },
                    xaxis: {
                        tooltip: {
                            enabled: !1
                        },
                        tickPlacement: "between",
                        crosshairs: {
                            width: "barWidth",
                            position: "back",
                            fill: {
                                type: "gradient"
                            },
                            dropShadow: {
                                enabled: !1
                            },
                            stroke: {
                                width: 0
                            }
                        }
                    }
                }
            }
        }, {
            key: "candlestick",
            value: function() {
                return {
                    stroke: {
                        width: 1,
                        colors: ["#333"]
                    },
                    fill: {
                        opacity: 1
                    },
                    dataLabels: {
                        enabled: !1
                    },
                    tooltip: {
                        shared: !0,
                        custom: function(t) {
                            var e = t.seriesIndex
                              , i = t.dataPointIndex
                              , a = t.w;
                            return '<div class="apexcharts-tooltip-candlestick"><div>Open: <span class="value">' + a.globals.seriesCandleO[e][i] + '</span></div><div>High: <span class="value">' + a.globals.seriesCandleH[e][i] + '</span></div><div>Low: <span class="value">' + a.globals.seriesCandleL[e][i] + '</span></div><div>Close: <span class="value">' + a.globals.seriesCandleC[e][i] + "</span></div></div>"
                        }
                    },
                    states: {
                        active: {
                            filter: {
                                type: "none"
                            }
                        }
                    },
                    xaxis: {
                        crosshairs: {
                            width: 1
                        }
                    }
                }
            }
        }, {
            key: "rangeBar",
            value: function() {
                return {
                    stroke: {
                        width: 0,
                        lineCap: "square"
                    },
                    plotOptions: {
                        bar: {
                            dataLabels: {
                                position: "center"
                            }
                        }
                    },
                    dataLabels: {
                        enabled: !1,
                        formatter: function(t, e) {
                            e.ctx;
                            var i = e.seriesIndex
                              , a = e.dataPointIndex
                              , s = e.w
                              , r = s.globals.seriesRangeStart[i][a];
                            return s.globals.seriesRangeEnd[i][a] - r
                        },
                        background: {
                            enabled: !1
                        },
                        style: {
                            colors: ["#fff"]
                        }
                    },
                    tooltip: {
                        shared: !1,
                        followCursor: !0,
                        custom: function(t) {
                            return t.w.config.plotOptions && t.w.config.plotOptions.bar && t.w.config.plotOptions.bar.horizontal ? function(t) {
                                var e = new F(t.ctx,null)
                                  , i = e.getTooltipValues(t)
                                  , a = i.color
                                  , s = i.seriesName
                                  , r = i.ylabel
                                  , n = i.startVal
                                  , o = i.endVal;
                                return e.buildCustomTooltipHTML({
                                    color: a,
                                    seriesName: s,
                                    ylabel: r,
                                    start: n,
                                    end: o
                                })
                            }(t) : function(t) {
                                var e = new F(t.ctx,null)
                                  , i = e.getTooltipValues(t)
                                  , a = i.color
                                  , s = i.seriesName
                                  , r = i.ylabel
                                  , n = i.start
                                  , o = i.end;
                                return e.buildCustomTooltipHTML({
                                    color: a,
                                    seriesName: s,
                                    ylabel: r,
                                    start: n,
                                    end: o
                                })
                            }(t)
                        }
                    },
                    xaxis: {
                        tickPlacement: "between",
                        tooltip: {
                            enabled: !1
                        },
                        crosshairs: {
                            stroke: {
                                width: 0
                            }
                        }
                    }
                }
            }
        }, {
            key: "area",
            value: function() {
                return {
                    stroke: {
                        width: 4
                    },
                    fill: {
                        type: "gradient",
                        gradient: {
                            inverseColors: !1,
                            shade: "light",
                            type: "vertical",
                            opacityFrom: .65,
                            opacityTo: .5,
                            stops: [0, 100, 100]
                        }
                    },
                    markers: {
                        size: 0,
                        hover: {
                            sizeOffset: 6
                        }
                    },
                    tooltip: {
                        followCursor: !1
                    }
                }
            }
        }, {
            key: "brush",
            value: function(t) {
                return f.extend(t, {
                    chart: {
                        toolbar: {
                            autoSelected: "selection",
                            show: !1
                        },
                        zoom: {
                            enabled: !1
                        }
                    },
                    dataLabels: {
                        enabled: !1
                    },
                    stroke: {
                        width: 1
                    },
                    tooltip: {
                        enabled: !1
                    },
                    xaxis: {
                        tooltip: {
                            enabled: !1
                        }
                    }
                })
            }
        }, {
            key: "stacked100",
            value: function(t) {
                t.dataLabels = t.dataLabels || {},
                t.dataLabels.formatter = t.dataLabels.formatter || void 0;
                var e = t.dataLabels.formatter;
                return t.yaxis.forEach((function(e, i) {
                    t.yaxis[i].min = 0,
                    t.yaxis[i].max = 100
                }
                )),
                "bar" === t.chart.type && (t.dataLabels.formatter = e || function(t) {
                    return "number" == typeof t && t ? t.toFixed(0) + "%" : t
                }
                ),
                t
            }
        }, {
            key: "convertCatToNumeric",
            value: function(t) {
                return t.xaxis.convertedCatToNumeric = !0,
                t
            }
        }, {
            key: "convertCatToNumericXaxis",
            value: function(t, e, i) {
                t.xaxis.type = "numeric",
                t.xaxis.labels = t.xaxis.labels || {},
                t.xaxis.labels.formatter = t.xaxis.labels.formatter || function(t) {
                    return f.isNumber(t) ? Math.floor(t) : t
                }
                ;
                var a = t.xaxis.labels.formatter
                  , s = t.xaxis.categories && t.xaxis.categories.length ? t.xaxis.categories : t.labels;
                return i && i.length && (s = i.map((function(t) {
                    return t.toString()
                }
                ))),
                s && s.length && (t.xaxis.labels.formatter = function(t) {
                    return f.isNumber(t) ? a(s[Math.floor(t) - 1]) : a(t)
                }
                ),
                t.xaxis.categories = [],
                t.labels = [],
                t.xaxis.tickAmount = t.xaxis.tickAmount || "dataPoints",
                t
            }
        }, {
            key: "bubble",
            value: function() {
                return {
                    dataLabels: {
                        style: {
                            colors: ["#fff"]
                        }
                    },
                    tooltip: {
                        shared: !1,
                        intersect: !0
                    },
                    xaxis: {
                        crosshairs: {
                            width: 0
                        }
                    },
                    fill: {
                        type: "solid",
                        gradient: {
                            shade: "light",
                            inverse: !0,
                            shadeIntensity: .55,
                            opacityFrom: .4,
                            opacityTo: .8
                        }
                    }
                }
            }
        }, {
            key: "scatter",
            value: function() {
                return {
                    dataLabels: {
                        enabled: !1
                    },
                    tooltip: {
                        shared: !1,
                        intersect: !0
                    },
                    markers: {
                        size: 6,
                        strokeWidth: 1,
                        hover: {
                            sizeOffset: 2
                        }
                    }
                }
            }
        }, {
            key: "heatmap",
            value: function() {
                return {
                    chart: {
                        stacked: !1
                    },
                    fill: {
                        opacity: 1
                    },
                    dataLabels: {
                        style: {
                            colors: ["#fff"]
                        }
                    },
                    stroke: {
                        colors: ["#fff"]
                    },
                    tooltip: {
                        followCursor: !0,
                        marker: {
                            show: !1
                        },
                        x: {
                            show: !1
                        }
                    },
                    legend: {
                        position: "top",
                        markers: {
                            shape: "square",
                            size: 10,
                            offsetY: 2
                        }
                    },
                    grid: {
                        padding: {
                            right: 20
                        }
                    }
                }
            }
        }, {
            key: "treemap",
            value: function() {
                return {
                    chart: {
                        zoom: {
                            enabled: !1
                        }
                    },
                    dataLabels: {
                        style: {
                            fontSize: 14,
                            fontWeight: 600,
                            colors: ["#fff"]
                        }
                    },
                    stroke: {
                        show: !0,
                        width: 2,
                        colors: ["#fff"]
                    },
                    legend: {
                        show: !1
                    },
                    fill: {
                        gradient: {
                            stops: [0, 100]
                        }
                    },
                    tooltip: {
                        followCursor: !0,
                        x: {
                            show: !1
                        }
                    },
                    grid: {
                        padding: {
                            left: 0,
                            right: 0
                        }
                    },
                    xaxis: {
                        crosshairs: {
                            show: !1
                        },
                        tooltip: {
                            enabled: !1
                        }
                    }
                }
            }
        }, {
            key: "pie",
            value: function() {
                return {
                    chart: {
                        toolbar: {
                            show: !1
                        }
                    },
                    plotOptions: {
                        pie: {
                            donut: {
                                labels: {
                                    show: !1
                                }
                            }
                        }
                    },
                    dataLabels: {
                        formatter: function(t) {
                            return t.toFixed(1) + "%"
                        },
                        style: {
                            colors: ["#fff"]
                        },
                        background: {
                            enabled: !1
                        },
                        dropShadow: {
                            enabled: !0
                        }
                    },
                    stroke: {
                        colors: ["#fff"]
                    },
                    fill: {
                        opacity: 1,
                        gradient: {
                            shade: "light",
                            stops: [0, 100]
                        }
                    },
                    tooltip: {
                        theme: "dark",
                        fillSeriesColor: !0
                    },
                    legend: {
                        position: "right"
                    }
                }
            }
        }, {
            key: "donut",
            value: function() {
                return {
                    chart: {
                        toolbar: {
                            show: !1
                        }
                    },
                    dataLabels: {
                        formatter: function(t) {
                            return t.toFixed(1) + "%"
                        },
                        style: {
                            colors: ["#fff"]
                        },
                        background: {
                            enabled: !1
                        },
                        dropShadow: {
                            enabled: !0
                        }
                    },
                    stroke: {
                        colors: ["#fff"]
                    },
                    fill: {
                        opacity: 1,
                        gradient: {
                            shade: "light",
                            shadeIntensity: .35,
                            stops: [80, 100],
                            opacityFrom: 1,
                            opacityTo: 1
                        }
                    },
                    tooltip: {
                        theme: "dark",
                        fillSeriesColor: !0
                    },
                    legend: {
                        position: "right"
                    }
                }
            }
        }, {
            key: "polarArea",
            value: function() {
                return this.opts.yaxis[0].tickAmount = this.opts.yaxis[0].tickAmount ? this.opts.yaxis[0].tickAmount : 6,
                {
                    chart: {
                        toolbar: {
                            show: !1
                        }
                    },
                    dataLabels: {
                        formatter: function(t) {
                            return t.toFixed(1) + "%"
                        },
                        enabled: !1
                    },
                    stroke: {
                        show: !0,
                        width: 2
                    },
                    fill: {
                        opacity: .7
                    },
                    tooltip: {
                        theme: "dark",
                        fillSeriesColor: !0
                    },
                    legend: {
                        position: "right"
                    }
                }
            }
        }, {
            key: "radar",
            value: function() {
                return this.opts.yaxis[0].labels.offsetY = this.opts.yaxis[0].labels.offsetY ? this.opts.yaxis[0].labels.offsetY : 6,
                {
                    dataLabels: {
                        enabled: !1,
                        style: {
                            fontSize: "11px"
                        }
                    },
                    stroke: {
                        width: 2
                    },
                    markers: {
                        size: 3,
                        strokeWidth: 1,
                        strokeOpacity: 1
                    },
                    fill: {
                        opacity: .2
                    },
                    tooltip: {
                        shared: !1,
                        intersect: !0,
                        followCursor: !0
                    },
                    grid: {
                        show: !1
                    },
                    xaxis: {
                        labels: {
                            formatter: function(t) {
                                return t
                            },
                            style: {
                                colors: ["#a8a8a8"],
                                fontSize: "11px"
                            }
                        },
                        tooltip: {
                            enabled: !1
                        },
                        crosshairs: {
                            show: !1
                        }
                    }
                }
            }
        }, {
            key: "radialBar",
            value: function() {
                return {
                    chart: {
                        animations: {
                            dynamicAnimation: {
                                enabled: !0,
                                speed: 800
                            }
                        },
                        toolbar: {
                            show: !1
                        }
                    },
                    fill: {
                        gradient: {
                            shade: "dark",
                            shadeIntensity: .4,
                            inverseColors: !1,
                            type: "diagonal2",
                            opacityFrom: 1,
                            opacityTo: 1,
                            stops: [70, 98, 100]
                        }
                    },
                    legend: {
                        show: !1,
                        position: "right"
                    },
                    tooltip: {
                        enabled: !1,
                        fillSeriesColor: !0
                    }
                }
            }
        }]),
        t
    }()
      , D = function() {
        function i(t) {
            e(this, i),
            this.opts = t
        }
        return a(i, [{
            key: "init",
            value: function(e) {
                var i = e.responsiveOverride
                  , a = this.opts
                  , s = new S
                  , r = new R(a);
                this.chartType = a.chart.type,
                "histogram" === this.chartType && (a.chart.type = "bar",
                a = f.extend({
                    plotOptions: {
                        bar: {
                            columnWidth: "99.99%"
                        }
                    }
                }, a)),
                a = this.extendYAxis(a),
                a = this.extendAnnotations(a);
                var n = s.init()
                  , o = {};
                if (a && "object" === t(a)) {
                    var l = {};
                    l = -1 !== ["line", "area", "bar", "candlestick", "rangeBar", "histogram", "bubble", "scatter", "heatmap", "treemap", "pie", "polarArea", "donut", "radar", "radialBar"].indexOf(a.chart.type) ? r[a.chart.type]() : r.line(),
                    a.chart.brush && a.chart.brush.enabled && (l = r.brush(l)),
                    a.chart.stacked && "100%" === a.chart.stackType && (a = r.stacked100(a)),
                    this.checkForDarkTheme(window.Apex),
                    this.checkForDarkTheme(a),
                    a.xaxis = a.xaxis || window.Apex.xaxis || {},
                    i || (a.xaxis.convertedCatToNumeric = !1),
                    ((a = this.checkForCatToNumericXAxis(this.chartType, l, a)).chart.sparkline && a.chart.sparkline.enabled || window.Apex.chart && window.Apex.chart.sparkline && window.Apex.chart.sparkline.enabled) && (l = r.sparkline(l)),
                    o = f.extend(n, l)
                }
                var h = f.extend(o, window.Apex);
                return n = f.extend(h, a),
                n = this.handleUserInputErrors(n)
            }
        }, {
            key: "checkForCatToNumericXAxis",
            value: function(t, e, i) {
                var a = new R(i)
                  , s = "bar" === t && i.plotOptions && i.plotOptions.bar && i.plotOptions.bar.horizontal
                  , r = "pie" === t || "polarArea" === t || "donut" === t || "radar" === t || "radialBar" === t || "heatmap" === t
                  , n = "datetime" !== i.xaxis.type && "numeric" !== i.xaxis.type
                  , o = i.xaxis.tickPlacement ? i.xaxis.tickPlacement : e.xaxis && e.xaxis.tickPlacement;
                return s || r || !n || "between" === o || (i = a.convertCatToNumeric(i)),
                i
            }
        }, {
            key: "extendYAxis",
            value: function(t, e) {
                var i = new S;
                (void 0 === t.yaxis || !t.yaxis || Array.isArray(t.yaxis) && 0 === t.yaxis.length) && (t.yaxis = {}),
                t.yaxis.constructor !== Array && window.Apex.yaxis && window.Apex.yaxis.constructor !== Array && (t.yaxis = f.extend(t.yaxis, window.Apex.yaxis)),
                t.yaxis.constructor !== Array ? t.yaxis = [f.extend(i.yAxis, t.yaxis)] : t.yaxis = f.extendArray(t.yaxis, i.yAxis);
                var a = !1;
                t.yaxis.forEach((function(t) {
                    t.logarithmic && (a = !0)
                }
                ));
                var s = t.series;
                return e && !s && (s = e.config.series),
                a && s.length !== t.yaxis.length && s.length && (t.yaxis = s.map((function(e, a) {
                    if (e.name || (s[a].name = "series-".concat(a + 1)),
                    t.yaxis[a])
                        return t.yaxis[a].seriesName = s[a].name,
                        t.yaxis[a];
                    var r = f.extend(i.yAxis, t.yaxis[0]);
                    return r.show = !1,
                    r
                }
                ))),
                a && s.length > 1 && s.length !== t.yaxis.length && console.warn("A multi-series logarithmic chart should have equal number of series and y-axes. Please make sure to equalize both."),
                t
            }
        }, {
            key: "extendAnnotations",
            value: function(t) {
                return void 0 === t.annotations && (t.annotations = {},
                t.annotations.yaxis = [],
                t.annotations.xaxis = [],
                t.annotations.points = []),
                t = this.extendYAxisAnnotations(t),
                t = this.extendXAxisAnnotations(t),
                t = this.extendPointAnnotations(t)
            }
        }, {
            key: "extendYAxisAnnotations",
            value: function(t) {
                var e = new S;
                return t.annotations.yaxis = f.extendArray(void 0 !== t.annotations.yaxis ? t.annotations.yaxis : [], e.yAxisAnnotation),
                t
            }
        }, {
            key: "extendXAxisAnnotations",
            value: function(t) {
                var e = new S;
                return t.annotations.xaxis = f.extendArray(void 0 !== t.annotations.xaxis ? t.annotations.xaxis : [], e.xAxisAnnotation),
                t
            }
        }, {
            key: "extendPointAnnotations",
            value: function(t) {
                var e = new S;
                return t.annotations.points = f.extendArray(void 0 !== t.annotations.points ? t.annotations.points : [], e.pointAnnotation),
                t
            }
        }, {
            key: "checkForDarkTheme",
            value: function(t) {
                t.theme && "dark" === t.theme.mode && (t.tooltip || (t.tooltip = {}),
                "light" !== t.tooltip.theme && (t.tooltip.theme = "dark"),
                t.chart.foreColor || (t.chart.foreColor = "#f6f7f8"),
                t.chart.background || (t.chart.background = "#424242"),
                t.theme.palette || (t.theme.palette = "palette4"))
            }
        }, {
            key: "handleUserInputErrors",
            value: function(t) {
                var e = t;
                if (e.tooltip.shared && e.tooltip.intersect)
                    throw new Error("tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.");
                if (("bar" === e.chart.type || "rangeBar" === e.chart.type) && e.plotOptions.bar.horizontal) {
                    if (e.yaxis.length > 1)
                        throw new Error("Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false");
                    e.yaxis[0].reversed && (e.yaxis[0].opposite = !0),
                    e.xaxis.tooltip.enabled = !1,
                    e.yaxis[0].tooltip.enabled = !1,
                    e.chart.zoom.enabled = !1
                }
                return "bar" !== e.chart.type && "rangeBar" !== e.chart.type || e.tooltip.shared && ("barWidth" === e.xaxis.crosshairs.width && e.series.length > 1 && (console.warn('crosshairs.width = "barWidth" is only supported in single series, not in a multi-series barChart.'),
                e.xaxis.crosshairs.width = "tickWidth"),
                e.plotOptions.bar.horizontal && (e.states.hover.type = "none",
                e.tooltip.shared = !1),
                e.tooltip.followCursor || (console.warn("followCursor option in shared columns cannot be turned off. Please set %ctooltip.followCursor: true", "color: blue;"),
                e.tooltip.followCursor = !0)),
                "candlestick" === e.chart.type && e.yaxis[0].reversed && (console.warn("Reversed y-axis in candlestick chart is not supported."),
                e.yaxis[0].reversed = !1),
                e.chart.group && 0 === e.yaxis[0].labels.minWidth && console.warn("It looks like you have multiple charts in synchronization. You must provide yaxis.labels.minWidth which must be EQUAL for all grouped charts to prevent incorrect behaviour."),
                Array.isArray(e.stroke.width) && "line" !== e.chart.type && "area" !== e.chart.type && (console.warn("stroke.width option accepts array only for line and area charts. Reverted back to Number"),
                e.stroke.width = e.stroke.width[0]),
                e
            }
        }]),
        i
    }()
      , H = function() {
        function t() {
            e(this, t)
        }
        return a(t, [{
            key: "initGlobalVars",
            value: function(t) {
                t.series = [],
                t.seriesCandleO = [],
                t.seriesCandleH = [],
                t.seriesCandleL = [],
                t.seriesCandleC = [],
                t.seriesRangeStart = [],
                t.seriesRangeEnd = [],
                t.seriesRangeBarTimeline = [],
                t.seriesPercent = [],
                t.seriesX = [],
                t.seriesZ = [],
                t.seriesNames = [],
                t.seriesTotals = [],
                t.seriesLog = [],
                t.seriesColors = [],
                t.stackedSeriesTotals = [],
                t.seriesXvalues = [],
                t.seriesYvalues = [],
                t.labels = [],
                t.categoryLabels = [],
                t.timescaleLabels = [],
                t.noLabelsProvided = !1,
                t.resizeTimer = null,
                t.selectionResizeTimer = null,
                t.delayedElements = [],
                t.pointsArray = [],
                t.dataLabelsRects = [],
                t.isXNumeric = !1,
                t.xaxisLabelsCount = 0,
                t.skipLastTimelinelabel = !1,
                t.skipFirstTimelinelabel = !1,
                t.isDataXYZ = !1,
                t.isMultiLineX = !1,
                t.isMultipleYAxis = !1,
                t.maxY = -Number.MAX_VALUE,
                t.minY = Number.MIN_VALUE,
                t.minYArr = [],
                t.maxYArr = [],
                t.maxX = -Number.MAX_VALUE,
                t.minX = Number.MAX_VALUE,
                t.initialMaxX = -Number.MAX_VALUE,
                t.initialMinX = Number.MAX_VALUE,
                t.maxDate = 0,
                t.minDate = Number.MAX_VALUE,
                t.minZ = Number.MAX_VALUE,
                t.maxZ = -Number.MAX_VALUE,
                t.minXDiff = Number.MAX_VALUE,
                t.yAxisScale = [],
                t.xAxisScale = null,
                t.xAxisTicksPositions = [],
                t.yLabelsCoords = [],
                t.yTitleCoords = [],
                t.barPadForNumericAxis = 0,
                t.padHorizontal = 0,
                t.xRange = 0,
                t.yRange = [],
                t.zRange = 0,
                t.dataPoints = 0,
                t.xTickAmount = 0
            }
        }, {
            key: "globalVars",
            value: function(t) {
                return {
                    chartID: null,
                    cuid: null,
                    events: {
                        beforeMount: [],
                        mounted: [],
                        updated: [],
                        clicked: [],
                        selection: [],
                        dataPointSelection: [],
                        zoomed: [],
                        scrolled: []
                    },
                    colors: [],
                    clientX: null,
                    clientY: null,
                    fill: {
                        colors: []
                    },
                    stroke: {
                        colors: []
                    },
                    dataLabels: {
                        style: {
                            colors: []
                        }
                    },
                    radarPolygons: {
                        fill: {
                            colors: []
                        }
                    },
                    markers: {
                        colors: [],
                        size: t.markers.size,
                        largestSize: 0
                    },
                    animationEnded: !1,
                    isTouchDevice: "ontouchstart"in window || navigator.msMaxTouchPoints,
                    isDirty: !1,
                    isExecCalled: !1,
                    initialConfig: null,
                    initialSeries: [],
                    lastXAxis: [],
                    lastYAxis: [],
                    columnSeries: null,
                    labels: [],
                    timescaleLabels: [],
                    noLabelsProvided: !1,
                    allSeriesCollapsed: !1,
                    collapsedSeries: [],
                    collapsedSeriesIndices: [],
                    ancillaryCollapsedSeries: [],
                    ancillaryCollapsedSeriesIndices: [],
                    risingSeries: [],
                    dataFormatXNumeric: !1,
                    capturedSeriesIndex: -1,
                    capturedDataPointIndex: -1,
                    selectedDataPoints: [],
                    goldenPadding: 35,
                    invalidLogScale: !1,
                    ignoreYAxisIndexes: [],
                    yAxisSameScaleIndices: [],
                    maxValsInArrayIndex: 0,
                    radialSize: 0,
                    selection: void 0,
                    zoomEnabled: "zoom" === t.chart.toolbar.autoSelected && t.chart.toolbar.tools.zoom && t.chart.zoom.enabled,
                    panEnabled: "pan" === t.chart.toolbar.autoSelected && t.chart.toolbar.tools.pan,
                    selectionEnabled: "selection" === t.chart.toolbar.autoSelected && t.chart.toolbar.tools.selection,
                    yaxis: null,
                    mousedown: !1,
                    lastClientPosition: {},
                    visibleXRange: void 0,
                    yValueDecimal: 0,
                    total: 0,
                    SVGNS: "http://www.w3.org/2000/svg",
                    svgWidth: 0,
                    svgHeight: 0,
                    noData: !1,
                    locale: {},
                    dom: {},
                    memory: {
                        methodsToExec: []
                    },
                    shouldAnimate: !0,
                    skipLastTimelinelabel: !1,
                    skipFirstTimelinelabel: !1,
                    delayedElements: [],
                    axisCharts: !0,
                    isDataXYZ: !1,
                    resized: !1,
                    resizeTimer: null,
                    comboCharts: !1,
                    dataChanged: !1,
                    previousPaths: [],
                    allSeriesHasEqualX: !0,
                    pointsArray: [],
                    dataLabelsRects: [],
                    lastDrawnDataLabelsIndexes: [],
                    hasNullValues: !1,
                    easing: null,
                    zoomed: !1,
                    gridWidth: 0,
                    gridHeight: 0,
                    rotateXLabels: !1,
                    defaultLabels: !1,
                    xLabelFormatter: void 0,
                    yLabelFormatters: [],
                    xaxisTooltipFormatter: void 0,
                    ttKeyFormatter: void 0,
                    ttVal: void 0,
                    ttZFormatter: void 0,
                    LINE_HEIGHT_RATIO: 1.618,
                    xAxisLabelsHeight: 0,
                    xAxisLabelsWidth: 0,
                    yAxisLabelsWidth: 0,
                    scaleX: 1,
                    scaleY: 1,
                    translateX: 0,
                    translateY: 0,
                    translateYAxisX: [],
                    yAxisWidths: [],
                    translateXAxisY: 0,
                    translateXAxisX: 0,
                    tooltip: null
                }
            }
        }, {
            key: "init",
            value: function(t) {
                var e = this.globalVars(t);
                return this.initGlobalVars(e),
                e.initialConfig = f.extend({}, t),
                e.initialSeries = f.clone(t.series),
                e.lastXAxis = f.clone(e.initialConfig.xaxis),
                e.lastYAxis = f.clone(e.initialConfig.yaxis),
                e
            }
        }]),
        t
    }()
      , N = function() {
        function t(i) {
            e(this, t),
            this.opts = i
        }
        return a(t, [{
            key: "init",
            value: function() {
                var t = new D(this.opts).init({
                    responsiveOverride: !1
                });
                return {
                    config: t,
                    globals: (new H).init(t)
                }
            }
        }]),
        t
    }()
      , O = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w,
            this.twoDSeries = [],
            this.threeDSeries = [],
            this.twoDSeriesX = [],
            this.coreUtils = new y(this.ctx)
        }
        return a(t, [{
            key: "isMultiFormat",
            value: function() {
                return this.isFormatXY() || this.isFormat2DArray()
            }
        }, {
            key: "isFormatXY",
            value: function() {
                var t = this.w.config.series.slice()
                  , e = new M(this.ctx);
                if (this.activeSeriesIndex = e.getActiveConfigSeriesIndex(),
                void 0 !== t[this.activeSeriesIndex].data && t[this.activeSeriesIndex].data.length > 0 && null !== t[this.activeSeriesIndex].data[0] && void 0 !== t[this.activeSeriesIndex].data[0].x && null !== t[this.activeSeriesIndex].data[0])
                    return !0
            }
        }, {
            key: "isFormat2DArray",
            value: function() {
                var t = this.w.config.series.slice()
                  , e = new M(this.ctx);
                if (this.activeSeriesIndex = e.getActiveConfigSeriesIndex(),
                void 0 !== t[this.activeSeriesIndex].data && t[this.activeSeriesIndex].data.length > 0 && void 0 !== t[this.activeSeriesIndex].data[0] && null !== t[this.activeSeriesIndex].data[0] && t[this.activeSeriesIndex].data[0].constructor === Array)
                    return !0
            }
        }, {
            key: "handleFormat2DArray",
            value: function(t, e) {
                var i = this.w.config
                  , a = this.w.globals;
                i.xaxis.sorted && ("datetime" === i.xaxis.type ? t[e].data.sort((function(t, e) {
                    return new Date(t[0]).getTime() - new Date(e[0]).getTime()
                }
                )) : "numeric" === i.xaxis.type && t[e].data.sort((function(t, e) {
                    return t[0] - e[0]
                }
                )));
                for (var s = 0; s < t[e].data.length; s++)
                    if (void 0 !== t[e].data[s][1] && (Array.isArray(t[e].data[s][1]) && 4 === t[e].data[s][1].length ? this.twoDSeries.push(f.parseNumber(t[e].data[s][1][3])) : 5 === t[e].data[s].length ? this.twoDSeries.push(f.parseNumber(t[e].data[s][4])) : this.twoDSeries.push(f.parseNumber(t[e].data[s][1])),
                    a.dataFormatXNumeric = !0),
                    "datetime" === i.xaxis.type) {
                        var r = new Date(t[e].data[s][0]);
                        r = new Date(r).getTime(),
                        this.twoDSeriesX.push(r)
                    } else
                        this.twoDSeriesX.push(t[e].data[s][0]);
                for (var n = 0; n < t[e].data.length; n++)
                    void 0 !== t[e].data[n][2] && (this.threeDSeries.push(t[e].data[n][2]),
                    a.isDataXYZ = !0)
            }
        }, {
            key: "handleFormatXY",
            value: function(t, e) {
                var i = this.w.config
                  , a = this.w.globals
                  , s = new Y(this.ctx)
                  , r = e;
                a.collapsedSeriesIndices.indexOf(e) > -1 && (r = this.activeSeriesIndex),
                i.xaxis.sorted && ("datetime" === i.xaxis.type ? t[e].data.sort((function(t, e) {
                    return new Date(t.x).getTime() - new Date(e.x).getTime()
                }
                )) : "numeric" === i.xaxis.type && t[e].data.sort((function(t, e) {
                    return t.x - e.x
                }
                )));
                for (var n = 0; n < t[e].data.length; n++)
                    void 0 !== t[e].data[n].y && (Array.isArray(t[e].data[n].y) ? this.twoDSeries.push(f.parseNumber(t[e].data[n].y[t[e].data[n].y.length - 1])) : this.twoDSeries.push(f.parseNumber(t[e].data[n].y)));
                for (var o = 0; o < t[r].data.length; o++) {
                    var l = "string" == typeof t[r].data[o].x
                      , h = Array.isArray(t[r].data[o].x)
                      , c = !h && !!s.isValidDate(t[r].data[o].x.toString());
                    if (l || c)
                        if (l || i.xaxis.convertedCatToNumeric) {
                            var d = a.isBarHorizontal && a.isRangeData;
                            "datetime" !== i.xaxis.type || d ? (this.fallbackToCategory = !0,
                            this.twoDSeriesX.push(t[r].data[o].x)) : this.twoDSeriesX.push(s.parseDate(t[r].data[o].x))
                        } else
                            "datetime" === i.xaxis.type ? this.twoDSeriesX.push(s.parseDate(t[r].data[o].x.toString())) : (a.dataFormatXNumeric = !0,
                            a.isXNumeric = !0,
                            this.twoDSeriesX.push(parseFloat(t[r].data[o].x)));
                    else
                        h ? (this.fallbackToCategory = !0,
                        this.twoDSeriesX.push(t[r].data[o].x)) : (a.isXNumeric = !0,
                        a.dataFormatXNumeric = !0,
                        this.twoDSeriesX.push(t[r].data[o].x))
                }
                if (t[e].data[0] && void 0 !== t[e].data[0].z) {
                    for (var g = 0; g < t[e].data.length; g++)
                        this.threeDSeries.push(t[e].data[g].z);
                    a.isDataXYZ = !0
                }
            }
        }, {
            key: "handleRangeData",
            value: function(t, e) {
                var i = this.w.config
                  , a = this.w.globals
                  , s = {};
                return this.isFormat2DArray() ? s = this.handleRangeDataFormat("array", t, e) : this.isFormatXY() && (s = this.handleRangeDataFormat("xy", t, e)),
                a.seriesRangeStart.push(s.start),
                a.seriesRangeEnd.push(s.end),
                "datetime" === i.xaxis.type && a.seriesRangeBarTimeline.push(s.rangeUniques),
                a.seriesRangeBarTimeline.forEach((function(t, e) {
                    t && t.forEach((function(t, e) {
                        t.y.forEach((function(e, i) {
                            for (var a = 0; a < t.y.length; a++)
                                if (i !== a) {
                                    var s = e.y1
                                      , r = e.y2
                                      , n = t.y[a].y1;
                                    s <= t.y[a].y2 && n <= r && (t.overlaps.indexOf(e.rangeName) < 0 && t.overlaps.push(e.rangeName),
                                    t.overlaps.indexOf(t.y[a].rangeName) < 0 && t.overlaps.push(t.y[a].rangeName))
                                }
                        }
                        ))
                    }
                    ))
                }
                )),
                s
            }
        }, {
            key: "handleCandleStickData",
            value: function(t, e) {
                var i = this.w.globals
                  , a = {};
                return this.isFormat2DArray() ? a = this.handleCandleStickDataFormat("array", t, e) : this.isFormatXY() && (a = this.handleCandleStickDataFormat("xy", t, e)),
                i.seriesCandleO[e] = a.o,
                i.seriesCandleH[e] = a.h,
                i.seriesCandleL[e] = a.l,
                i.seriesCandleC[e] = a.c,
                a
            }
        }, {
            key: "handleRangeDataFormat",
            value: function(t, e, i) {
                var a = []
                  , s = []
                  , r = e[i].data.filter((function(t, e, i) {
                    return e === i.findIndex((function(e) {
                        return e.x === t.x
                    }
                    ))
                }
                )).map((function(t, e) {
                    return {
                        x: t.x,
                        overlaps: [],
                        y: []
                    }
                }
                ))
                  , n = "Please provide [Start, End] values in valid format. Read more https://apexcharts.com/docs/series/#rangecharts"
                  , o = new M(this.ctx).getActiveConfigSeriesIndex();
                if ("array" === t) {
                    if (2 !== e[o].data[0][1].length)
                        throw new Error(n);
                    for (var l = 0; l < e[i].data.length; l++)
                        a.push(e[i].data[l][1][0]),
                        s.push(e[i].data[l][1][1])
                } else if ("xy" === t) {
                    if (2 !== e[o].data[0].y.length)
                        throw new Error(n);
                    for (var h = function(t) {
                        var n = f.randomId()
                          , o = e[i].data[t].x
                          , l = {
                            y1: e[i].data[t].y[0],
                            y2: e[i].data[t].y[1],
                            rangeName: n
                        };
                        e[i].data[t].rangeName = n;
                        var h = r.findIndex((function(t) {
                            return t.x === o
                        }
                        ));
                        r[h].y.push(l),
                        a.push(l.y1),
                        s.push(l.y2)
                    }, c = 0; c < e[i].data.length; c++)
                        h(c)
                }
                return {
                    start: a,
                    end: s,
                    rangeUniques: r
                }
            }
        }, {
            key: "handleCandleStickDataFormat",
            value: function(t, e, i) {
                var a = this.w
                  , s = []
                  , r = []
                  , n = []
                  , o = []
                  , l = "Please provide [Open, High, Low and Close] values in valid format. Read more https://apexcharts.com/docs/series/#candlestick";
                if ("array" === t) {
                    if (!Array.isArray(e[i].data[0][1]) && 5 !== e[i].data[0].length || Array.isArray(e[i].data[0][1]) && 4 !== e[i].data[0][1].length)
                        throw new Error(l);
                    if (5 === e[i].data[0].length)
                        for (var h = 0; h < e[i].data.length; h++)
                            s.push(e[i].data[h][1]),
                            r.push(e[i].data[h][2]),
                            n.push(e[i].data[h][3]),
                            o.push(e[i].data[h][4]);
                    else
                        for (var c = 0; c < e[i].data.length; c++)
                            s.push(e[i].data[c][1][0]),
                            r.push(e[i].data[c][1][1]),
                            n.push(e[i].data[c][1][2]),
                            o.push(e[i].data[c][1][3])
                } else if ("xy" === t) {
                    if (!a.globals.comboCharts && 4 !== e[i].data[0].y.length || a.globals.comboCharts && "candlestick" === e[i].type && e[i].data.length && 4 !== e[i].data[0].y.length)
                        throw new Error(l);
                    for (var d = 0; d < e[i].data.length; d++)
                        s.push(e[i].data[d].y[0]),
                        r.push(e[i].data[d].y[1]),
                        n.push(e[i].data[d].y[2]),
                        o.push(e[i].data[d].y[3])
                }
                return {
                    o: s,
                    h: r,
                    l: n,
                    c: o
                }
            }
        }, {
            key: "parseDataAxisCharts",
            value: function(t) {
                for (var e = this, i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.ctx, a = this.w.config, s = this.w.globals, r = new Y(i), n = a.labels.length > 0 ? a.labels.slice() : a.xaxis.categories.slice(), o = function() {
                    for (var t = 0; t < n.length; t++)
                        if ("string" == typeof n[t]) {
                            if (!r.isValidDate(n[t]))
                                throw new Error("You have provided invalid Date format. Please provide a valid JavaScript Date");
                            e.twoDSeriesX.push(r.parseDate(n[t]))
                        } else
                            e.twoDSeriesX.push(n[t])
                }, l = 0; l < t.length; l++) {
                    if (this.twoDSeries = [],
                    this.twoDSeriesX = [],
                    this.threeDSeries = [],
                    void 0 === t[l].data)
                        return void console.error("It is a possibility that you may have not included 'data' property in series.");
                    if ("rangeBar" !== a.chart.type && "rangeArea" !== a.chart.type && "rangeBar" !== t[l].type && "rangeArea" !== t[l].type || (s.isRangeData = !0,
                    this.handleRangeData(t, l)),
                    this.isMultiFormat())
                        this.isFormat2DArray() ? this.handleFormat2DArray(t, l) : this.isFormatXY() && this.handleFormatXY(t, l),
                        "candlestick" !== a.chart.type && "candlestick" !== t[l].type || this.handleCandleStickData(t, l),
                        s.series.push(this.twoDSeries),
                        s.labels.push(this.twoDSeriesX),
                        s.seriesX.push(this.twoDSeriesX),
                        l !== this.activeSeriesIndex || this.fallbackToCategory || (s.isXNumeric = !0);
                    else {
                        "datetime" === a.xaxis.type ? (s.isXNumeric = !0,
                        o(),
                        s.seriesX.push(this.twoDSeriesX)) : "numeric" === a.xaxis.type && (s.isXNumeric = !0,
                        n.length > 0 && (this.twoDSeriesX = n,
                        s.seriesX.push(this.twoDSeriesX))),
                        s.labels.push(this.twoDSeriesX);
                        var h = t[l].data.map((function(t) {
                            return f.parseNumber(t)
                        }
                        ));
                        s.series.push(h)
                    }
                    s.seriesZ.push(this.threeDSeries),
                    void 0 !== t[l].name ? s.seriesNames.push(t[l].name) : s.seriesNames.push("series-" + parseInt(l + 1, 10)),
                    void 0 !== t[l].color ? s.seriesColors.push(t[l].color) : s.seriesColors.push(void 0)
                }
                return this.w
            }
        }, {
            key: "parseDataNonAxisCharts",
            value: function(t) {
                var e = this.w.globals
                  , i = this.w.config;
                e.series = t.slice(),
                e.seriesNames = i.labels.slice();
                for (var a = 0; a < e.series.length; a++)
                    void 0 === e.seriesNames[a] && e.seriesNames.push("series-" + (a + 1));
                return this.w
            }
        }, {
            key: "handleExternalLabelsData",
            value: function(t) {
                var e = this.w.config
                  , i = this.w.globals;
                if (e.xaxis.categories.length > 0)
                    i.labels = e.xaxis.categories;
                else if (e.labels.length > 0)
                    i.labels = e.labels.slice();
                else if (this.fallbackToCategory) {
                    if (i.labels = i.labels[0],
                    i.seriesRangeBarTimeline.length && (i.seriesRangeBarTimeline.map((function(t) {
                        t.forEach((function(t) {
                            i.labels.indexOf(t.x) < 0 && t.x && i.labels.push(t.x)
                        }
                        ))
                    }
                    )),
                    i.labels = i.labels.filter((function(t, e, i) {
                        return i.indexOf(t) === e
                    }
                    ))),
                    e.xaxis.convertedCatToNumeric)
                        new R(e).convertCatToNumericXaxis(e, this.ctx, i.seriesX[0]),
                        this._generateExternalLabels(t)
                } else
                    this._generateExternalLabels(t)
            }
        }, {
            key: "_generateExternalLabels",
            value: function(t) {
                var e = this.w.globals
                  , i = this.w.config
                  , a = [];
                if (e.axisCharts) {
                    if (e.series.length > 0)
                        for (var s = 0; s < e.series[e.maxValsInArrayIndex].length; s++)
                            a.push(s + 1);
                    e.seriesX = [];
                    for (var r = 0; r < t.length; r++)
                        e.seriesX.push(a);
                    e.isXNumeric = !0
                }
                if (0 === a.length) {
                    a = e.axisCharts ? [] : e.series.map((function(t, e) {
                        return e + 1
                    }
                    ));
                    for (var n = 0; n < t.length; n++)
                        e.seriesX.push(a)
                }
                e.labels = a,
                i.xaxis.convertedCatToNumeric && (e.categoryLabels = a.map((function(t) {
                    return i.xaxis.labels.formatter(t)
                }
                ))),
                e.noLabelsProvided = !0
            }
        }, {
            key: "parseData",
            value: function(t) {
                var e = this.w
                  , i = e.config
                  , a = e.globals;
                if (this.excludeCollapsedSeriesInYAxis(),
                this.fallbackToCategory = !1,
                this.ctx.core.resetGlobals(),
                this.ctx.core.isMultipleY(),
                a.axisCharts ? this.parseDataAxisCharts(t) : this.parseDataNonAxisCharts(t),
                this.coreUtils.getLargestSeries(),
                "bar" === i.chart.type && i.chart.stacked) {
                    var s = new M(this.ctx);
                    a.series = s.setNullSeriesToZeroValues(a.series)
                }
                this.coreUtils.getSeriesTotals(),
                a.axisCharts && this.coreUtils.getStackedSeriesTotals(),
                this.coreUtils.getPercentSeries(),
                a.dataFormatXNumeric || a.isXNumeric && ("numeric" !== i.xaxis.type || 0 !== i.labels.length || 0 !== i.xaxis.categories.length) || this.handleExternalLabelsData(t);
                for (var r = this.coreUtils.getCategoryLabels(a.labels), n = 0; n < r.length; n++)
                    if (Array.isArray(r[n])) {
                        a.isMultiLineX = !0;
                        break
                    }
            }
        }, {
            key: "excludeCollapsedSeriesInYAxis",
            value: function() {
                var t = this
                  , e = this.w;
                e.globals.ignoreYAxisIndexes = e.globals.collapsedSeries.map((function(i, a) {
                    if (t.w.globals.isMultipleYAxis && !e.config.chart.stacked)
                        return i.index
                }
                ))
            }
        }]),
        t
    }()
      , W = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w,
            this.tooltipKeyFormat = "dd MMM"
        }
        return a(t, [{
            key: "xLabelFormat",
            value: function(t, e, i, a) {
                var s = this.w;
                if ("datetime" === s.config.xaxis.type && void 0 === s.config.xaxis.labels.formatter && void 0 === s.config.tooltip.x.formatter) {
                    var r = new Y(this.ctx);
                    return r.formatDate(r.getDate(e), s.config.tooltip.x.format)
                }
                return t(e, i, a)
            }
        }, {
            key: "defaultGeneralFormatter",
            value: function(t) {
                return Array.isArray(t) ? t.map((function(t) {
                    return t
                }
                )) : t
            }
        }, {
            key: "defaultYFormatter",
            value: function(t, e, i) {
                var a = this.w;
                return f.isNumber(t) && (t = 0 !== a.globals.yValueDecimal ? t.toFixed(void 0 !== e.decimalsInFloat ? e.decimalsInFloat : a.globals.yValueDecimal) : a.globals.maxYArr[i] - a.globals.minYArr[i] < 5 ? t.toFixed(1) : t.toFixed(0)),
                t
            }
        }, {
            key: "setLabelFormatters",
            value: function() {
                var t = this
                  , e = this.w;
                return e.globals.xLabelFormatter = function(e) {
                    return t.defaultGeneralFormatter(e)
                }
                ,
                e.globals.xaxisTooltipFormatter = function(e) {
                    return t.defaultGeneralFormatter(e)
                }
                ,
                e.globals.ttKeyFormatter = function(e) {
                    return t.defaultGeneralFormatter(e)
                }
                ,
                e.globals.ttZFormatter = function(t) {
                    return t
                }
                ,
                e.globals.legendFormatter = function(e) {
                    return t.defaultGeneralFormatter(e)
                }
                ,
                void 0 !== e.config.xaxis.labels.formatter ? e.globals.xLabelFormatter = e.config.xaxis.labels.formatter : e.globals.xLabelFormatter = function(t) {
                    if (f.isNumber(t)) {
                        if (!e.config.xaxis.convertedCatToNumeric && "numeric" === e.config.xaxis.type && e.globals.dataPoints < 50)
                            return t.toFixed(1);
                        if (e.globals.isBarHorizontal)
                            if (e.globals.maxY - e.globals.minYArr < 4)
                                return t.toFixed(1);
                        return t.toFixed(0)
                    }
                    return t
                }
                ,
                "function" == typeof e.config.tooltip.x.formatter ? e.globals.ttKeyFormatter = e.config.tooltip.x.formatter : e.globals.ttKeyFormatter = e.globals.xLabelFormatter,
                "function" == typeof e.config.xaxis.tooltip.formatter && (e.globals.xaxisTooltipFormatter = e.config.xaxis.tooltip.formatter),
                (Array.isArray(e.config.tooltip.y) || void 0 !== e.config.tooltip.y.formatter) && (e.globals.ttVal = e.config.tooltip.y),
                void 0 !== e.config.tooltip.z.formatter && (e.globals.ttZFormatter = e.config.tooltip.z.formatter),
                void 0 !== e.config.legend.formatter && (e.globals.legendFormatter = e.config.legend.formatter),
                e.config.yaxis.forEach((function(i, a) {
                    void 0 !== i.labels.formatter ? e.globals.yLabelFormatters[a] = i.labels.formatter : e.globals.yLabelFormatters[a] = function(s) {
                        return e.globals.xyCharts ? Array.isArray(s) ? s.map((function(e) {
                            return t.defaultYFormatter(e, i, a)
                        }
                        )) : t.defaultYFormatter(s, i, a) : s
                    }
                }
                )),
                e.globals
            }
        }, {
            key: "heatmapLabelFormatters",
            value: function() {
                var t = this.w;
                if ("heatmap" === t.config.chart.type) {
                    t.globals.yAxisScale[0].result = t.globals.seriesNames.slice();
                    var e = t.globals.seriesNames.reduce((function(t, e) {
                        return t.length > e.length ? t : e
                    }
                    ), 0);
                    t.globals.yAxisScale[0].niceMax = e,
                    t.globals.yAxisScale[0].niceMin = e
                }
            }
        }]),
        t
    }()
      , B = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w
        }
        return a(t, [{
            key: "getLabel",
            value: function(t, e, i, a) {
                var s = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : []
                  , r = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : "12px"
                  , n = this.w
                  , o = void 0 === t[a] ? "" : t[a]
                  , l = o
                  , h = n.globals.xLabelFormatter
                  , c = n.config.xaxis.labels.formatter
                  , d = !1
                  , g = new W(this.ctx)
                  , u = o;
                l = g.xLabelFormat(h, o, u, {
                    i: a,
                    dateFormatter: new Y(this.ctx).formatDate,
                    w: n
                }),
                void 0 !== c && (l = c(o, t[a], {
                    i: a,
                    dateFormatter: new Y(this.ctx).formatDate,
                    w: n
                }));
                var f = function(t) {
                    var i = null;
                    return e.forEach((function(t) {
                        "month" === t.unit ? i = "year" : "day" === t.unit ? i = "month" : "hour" === t.unit ? i = "day" : "minute" === t.unit && (i = "hour")
                    }
                    )),
                    i === t
                };
                e.length > 0 ? (d = f(e[a].unit),
                i = e[a].position,
                l = e[a].value) : "datetime" === n.config.xaxis.type && void 0 === c && (l = ""),
                void 0 === l && (l = ""),
                l = Array.isArray(l) ? l : l.toString();
                var p = new b(this.ctx)
                  , x = {};
                x = n.globals.rotateXLabels ? p.getTextRects(l, parseInt(r, 10), null, "rotate(".concat(n.config.xaxis.labels.rotate, " 0 0)"), !1) : p.getTextRects(l, parseInt(r, 10));
                var m = !n.config.xaxis.labels.showDuplicates && this.ctx.timeScale && "hours" !== this.ctx.timeScale.tickInterval && "minutes" !== this.ctx.timeScale.tickInterval;
                return !Array.isArray(l) && (0 === l.indexOf("NaN") || 0 === l.toLowerCase().indexOf("invalid") || l.toLowerCase().indexOf("infinity") >= 0 || s.indexOf(l) >= 0 && m) && (l = ""),
                {
                    x: i,
                    text: l,
                    textRect: x,
                    isBold: d
                }
            }
        }, {
            key: "checkLabelBasedOnTickamount",
            value: function(t, e, i) {
                var a = this.w
                  , s = a.config.xaxis.tickAmount;
                return "dataPoints" === s && (s = Math.round(a.globals.gridWidth / 120)),
                s > i || t % Math.round(i / (s + 1)) == 0 || (e.text = ""),
                e
            }
        }, {
            key: "checkForOverflowingLabels",
            value: function(t, e, i, a, s) {
                var r = this.w;
                if (0 === t && r.globals.skipFirstTimelinelabel && (e.text = ""),
                t === i - 1 && r.globals.skipLastTimelinelabel && (e.text = ""),
                r.config.xaxis.labels.hideOverlappingLabels && a.length > 0) {
                    var n = s[s.length - 1];
                    e.x < n.textRect.width / (r.globals.rotateXLabels ? Math.abs(r.config.xaxis.labels.rotate) / 12 : 1.01) + n.x && (e.text = "")
                }
                return e
            }
        }, {
            key: "checkForReversedLabels",
            value: function(t, e) {
                var i = this.w;
                return i.config.yaxis[t] && i.config.yaxis[t].reversed && e.reverse(),
                e
            }
        }, {
            key: "isYAxisHidden",
            value: function(t) {
                var e = this.w
                  , i = new y(this.ctx);
                return !e.config.yaxis[t].show || !e.config.yaxis[t].showForNullSeries && i.isSeriesNull(t) && -1 === e.globals.collapsedSeriesIndices.indexOf(t)
            }
        }, {
            key: "getYAxisForeColor",
            value: function(t, e) {
                var i = this.w;
                return Array.isArray(t) && i.globals.yAxisScale[e] && this.ctx.theme.pushExtraColors(t, i.globals.yAxisScale[e].result.length, !1),
                t
            }
        }, {
            key: "drawYAxisTicks",
            value: function(t, e, i, a, s, r, n) {
                var o = this.w
                  , l = new b(this.ctx)
                  , h = o.globals.translateY;
                if (a.show && e > 0) {
                    !0 === o.config.yaxis[s].opposite && (t += a.width);
                    for (var c = e; c >= 0; c--) {
                        var d = h + e / 10 + o.config.yaxis[s].labels.offsetY - 1;
                        o.globals.isBarHorizontal && (d = r * c),
                        "heatmap" === o.config.chart.type && (d += r / 2);
                        var g = l.drawLine(t + i.offsetX - a.width + a.offsetX, d + a.offsetY, t + i.offsetX + a.offsetX, d + a.offsetY, a.color);
                        n.add(g),
                        h += r
                    }
                }
            }
        }]),
        t
    }()
      , V = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w
        }
        return a(t, [{
            key: "fixSvgStringForIe11",
            value: function(t) {
                if (!f.isIE11())
                    return t;
                var e = 0
                  , i = t.replace(/xmlns="http:\/\/www.w3.org\/2000\/svg"/g, (function(t) {
                    return 2 === ++e ? 'xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.com/svgjs"' : t
                }
                ));
                return i = (i = i.replace(/xmlns:NS\d+=""/g, "")).replace(/NS\d+:(\w+:\w+=")/g, "$1")
            }
        }, {
            key: "getSvgString",
            value: function() {
                var t = this.w.globals.dom.Paper.svg();
                return this.fixSvgStringForIe11(t)
            }
        }, {
            key: "cleanup",
            value: function() {
                var t = this.w
                  , e = t.globals.dom.baseEl.getElementsByClassName("apexcharts-xcrosshairs")
                  , i = t.globals.dom.baseEl.getElementsByClassName("apexcharts-ycrosshairs")
                  , a = t.globals.dom.baseEl.querySelectorAll(".apexcharts-zoom-rect, .apexcharts-selection-rect");
                Array.prototype.forEach.call(a, (function(t) {
                    t.setAttribute("width", 0)
                }
                )),
                e && e[0] && (e[0].setAttribute("x", -500),
                e[0].setAttribute("x1", -500),
                e[0].setAttribute("x2", -500)),
                i && i[0] && (i[0].setAttribute("y", -100),
                i[0].setAttribute("y1", -100),
                i[0].setAttribute("y2", -100))
            }
        }, {
            key: "svgUrl",
            value: function() {
                this.cleanup();
                var t = this.getSvgString()
                  , e = new Blob([t],{
                    type: "image/svg+xml;charset=utf-8"
                });
                return URL.createObjectURL(e)
            }
        }, {
            key: "dataURI",
            value: function() {
                var t = this;
                return new Promise((function(e) {
                    var i = t.w;
                    t.cleanup();
                    var a = document.createElement("canvas");
                    a.width = i.globals.svgWidth,
                    a.height = parseInt(i.globals.dom.elWrap.style.height, 10);
                    var s = "transparent" === i.config.chart.background ? "#fff" : i.config.chart.background
                      , r = a.getContext("2d");
                    r.fillStyle = s,
                    r.fillRect(0, 0, a.width, a.height);
                    var n = t.getSvgString();
                    if (window.canvg && f.isIE11()) {
                        var o = window.canvg.Canvg.fromString(r, n, {
                            ignoreClear: !0,
                            ignoreDimensions: !0
                        });
                        o.start();
                        var l = a.msToBlob();
                        o.stop(),
                        e({
                            blob: l
                        })
                    } else {
                        var h = "data:image/svg+xml," + encodeURIComponent(n)
                          , c = new Image;
                        c.crossOrigin = "anonymous",
                        c.onload = function() {
                            if (r.drawImage(c, 0, 0),
                            a.msToBlob) {
                                var t = a.msToBlob();
                                e({
                                    blob: t
                                })
                            } else {
                                var i = a.toDataURL("image/png");
                                e({
                                    imgURI: i
                                })
                            }
                        }
                        ,
                        c.src = h
                    }
                }
                ))
            }
        }, {
            key: "exportToSVG",
            value: function() {
                this.triggerDownload(this.svgUrl(), null, ".svg")
            }
        }, {
            key: "exportToPng",
            value: function() {
                var t = this;
                this.dataURI().then((function(e) {
                    var i = e.imgURI
                      , a = e.blob;
                    a ? navigator.msSaveOrOpenBlob(a, t.w.globals.chartID + ".png") : t.triggerDownload(i, null, ".png")
                }
                ))
            }
        }, {
            key: "exportToCSV",
            value: function(t) {
                var e = this
                  , i = t.series
                  , a = t.columnDelimiter
                  , s = t.lineDelimiter
                  , r = void 0 === s ? "\n" : s
                  , n = this.w
                  , o = []
                  , l = []
                  , h = "data:text/csv;charset=utf-8,"
                  , c = new O(this.ctx)
                  , d = new B(this.ctx)
                  , g = function(t) {
                    var i = "";
                    if (n.globals.axisCharts) {
                        if ("category" === n.config.xaxis.type || n.config.xaxis.convertedCatToNumeric)
                            if (n.globals.isBarHorizontal) {
                                var a = n.globals.yLabelFormatters[0]
                                  , s = new M(e.ctx).getActiveConfigSeriesIndex();
                                i = a(n.globals.labels[t], {
                                    seriesIndex: s,
                                    dataPointIndex: t,
                                    w: n
                                })
                            } else
                                i = d.getLabel(n.globals.labels, n.globals.timescaleLabels, 0, t).text;
                        "datetime" === n.config.xaxis.type && (n.config.xaxis.categories.length ? i = n.config.xaxis.categories[t] : n.config.labels.length && (i = n.config.labels[t]))
                    } else
                        i = n.config.labels[t];
                    return i
                };
                o.push(n.config.chart.toolbar.export.csv.headerCategory),
                i.map((function(t, e) {
                    n.globals.axisCharts && o.push(t.name ? t.name : "series-".concat(e))
                }
                )),
                n.globals.axisCharts || (o.push(n.config.chart.toolbar.export.csv.headerValue),
                l.push(o.join(a))),
                i.map((function(t, e) {
                    n.globals.axisCharts ? function(t, e) {
                        if (o.length && 0 === e && l.push(o.join(a)),
                        t.data && t.data.length)
                            for (var s = 0; s < t.data.length; s++) {
                                o = [];
                                var r = g(s);
                                if (r || (c.isFormatXY() ? r = i[e].data[s].x : c.isFormat2DArray() && (r = i[e].data[s] ? i[e].data[s][0] : "")),
                                0 === e) {
                                    o.push((d = r,
                                    "datetime" === n.config.xaxis.type && String(d).length >= 10 ? n.config.chart.toolbar.export.csv.dateFormatter(r) : r));
                                    for (var h = 0; h < n.globals.series.length; h++)
                                        o.push(n.globals.series[h][s])
                                }
                                ("candlestick" === n.config.chart.type || t.type && "candlestick" === t.type) && (o.pop(),
                                o.push(n.globals.seriesCandleO[e][s]),
                                o.push(n.globals.seriesCandleH[e][s]),
                                o.push(n.globals.seriesCandleL[e][s]),
                                o.push(n.globals.seriesCandleC[e][s])),
                                "rangeBar" === n.config.chart.type && (o.pop(),
                                o.push(n.globals.seriesRangeStart[e][s]),
                                o.push(n.globals.seriesRangeEnd[e][s])),
                                o.length && l.push(o.join(a))
                            }
                        var d
                    }(t, e) : ((o = []).push(n.globals.labels[e]),
                    o.push(n.globals.series[e]),
                    l.push(o.join(a)))
                }
                )),
                h += l.join(r),
                this.triggerDownload(encodeURI(h), n.config.chart.toolbar.export.csv.filename, ".csv")
            }
        }, {
            key: "triggerDownload",
            value: function(t, e, i) {
                var a = document.createElement("a");
                a.href = t,
                a.download = (e || this.w.globals.chartID) + i,
                document.body.appendChild(a),
                a.click(),
                document.body.removeChild(a)
            }
        }]),
        t
    }()
      , G = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w;
            var a = this.w;
            this.axesUtils = new B(i),
            this.xaxisLabels = a.globals.labels.slice(),
            a.globals.timescaleLabels.length > 0 && !a.globals.isBarHorizontal && (this.xaxisLabels = a.globals.timescaleLabels.slice()),
            this.drawnLabels = [],
            this.drawnLabelsRects = [],
            "top" === a.config.xaxis.position ? this.offY = 0 : this.offY = a.globals.gridHeight + 1,
            this.offY = this.offY + a.config.xaxis.axisBorder.offsetY,
            this.isCategoryBarHorizontal = "bar" === a.config.chart.type && a.config.plotOptions.bar.horizontal,
            this.xaxisFontSize = a.config.xaxis.labels.style.fontSize,
            this.xaxisFontFamily = a.config.xaxis.labels.style.fontFamily,
            this.xaxisForeColors = a.config.xaxis.labels.style.colors,
            this.xaxisBorderWidth = a.config.xaxis.axisBorder.width,
            this.isCategoryBarHorizontal && (this.xaxisBorderWidth = a.config.yaxis[0].axisBorder.width.toString()),
            this.xaxisBorderWidth.indexOf("%") > -1 ? this.xaxisBorderWidth = a.globals.gridWidth * parseInt(this.xaxisBorderWidth, 10) / 100 : this.xaxisBorderWidth = parseInt(this.xaxisBorderWidth, 10),
            this.xaxisBorderHeight = a.config.xaxis.axisBorder.height,
            this.yaxis = a.config.yaxis[0]
        }
        return a(t, [{
            key: "drawXaxis",
            value: function() {
                var t, e = this, i = this.w, a = new b(this.ctx), s = a.group({
                    class: "apexcharts-xaxis",
                    transform: "translate(".concat(i.config.xaxis.offsetX, ", ").concat(i.config.xaxis.offsetY, ")")
                }), r = a.group({
                    class: "apexcharts-xaxis-texts-g",
                    transform: "translate(".concat(i.globals.translateXAxisX, ", ").concat(i.globals.translateXAxisY, ")")
                });
                s.add(r);
                for (var n = i.globals.padHorizontal, o = [], l = 0; l < this.xaxisLabels.length; l++)
                    o.push(this.xaxisLabels[l]);
                var h = o.length;
                if (i.globals.isXNumeric) {
                    var c = h > 1 ? h - 1 : h;
                    t = i.globals.gridWidth / c,
                    n = n + t / 2 + i.config.xaxis.labels.offsetX
                } else
                    t = i.globals.gridWidth / o.length,
                    n = n + t + i.config.xaxis.labels.offsetX;
                if (i.config.xaxis.labels.show)
                    for (var d = function(s) {
                        var l = n - t / 2 + i.config.xaxis.labels.offsetX;
                        0 === s && 1 === h && t / 2 === n && 1 === i.globals.dataPoints && (l = i.globals.gridWidth / 2);
                        var c = e.axesUtils.getLabel(o, i.globals.timescaleLabels, l, s, e.drawnLabels, e.xaxisFontSize)
                          , d = 28;
                        i.globals.rotateXLabels && (d = 22);
                        (c = void 0 !== i.config.xaxis.tickAmount && "dataPoints" !== i.config.xaxis.tickAmount && "datetime" !== i.config.xaxis.type ? e.axesUtils.checkLabelBasedOnTickamount(s, c, h) : e.axesUtils.checkForOverflowingLabels(s, c, h, e.drawnLabels, e.drawnLabelsRects)).text && i.globals.xaxisLabelsCount++;
                        var g = a.drawText({
                            x: c.x,
                            y: e.offY + i.config.xaxis.labels.offsetY + d - ("top" === i.config.xaxis.position ? i.globals.xAxisHeight + i.config.xaxis.axisTicks.height - 2 : 0),
                            text: c.text,
                            textAnchor: "middle",
                            fontWeight: c.isBold ? 600 : i.config.xaxis.labels.style.fontWeight,
                            fontSize: e.xaxisFontSize,
                            fontFamily: e.xaxisFontFamily,
                            foreColor: Array.isArray(e.xaxisForeColors) ? i.config.xaxis.convertedCatToNumeric ? e.xaxisForeColors[i.globals.minX + s - 1] : e.xaxisForeColors[s] : e.xaxisForeColors,
                            isPlainText: !1,
                            cssClass: "apexcharts-xaxis-label " + i.config.xaxis.labels.style.cssClass
                        });
                        r.add(g);
                        var u = document.createElementNS(i.globals.SVGNS, "title");
                        u.textContent = Array.isArray(c.text) ? c.text.join(" ") : c.text,
                        g.node.appendChild(u),
                        "" !== c.text && (e.drawnLabels.push(c.text),
                        e.drawnLabelsRects.push(c)),
                        n += t
                    }, g = 0; g <= h - 1; g++)
                        d(g);
                if (void 0 !== i.config.xaxis.title.text) {
                    var u = a.group({
                        class: "apexcharts-xaxis-title"
                    })
                      , f = a.drawText({
                        x: i.globals.gridWidth / 2 + i.config.xaxis.title.offsetX,
                        y: this.offY - parseFloat(this.xaxisFontSize) + i.globals.xAxisLabelsHeight + i.config.xaxis.title.offsetY,
                        text: i.config.xaxis.title.text,
                        textAnchor: "middle",
                        fontSize: i.config.xaxis.title.style.fontSize,
                        fontFamily: i.config.xaxis.title.style.fontFamily,
                        fontWeight: i.config.xaxis.title.style.fontWeight,
                        foreColor: i.config.xaxis.title.style.color,
                        cssClass: "apexcharts-xaxis-title-text " + i.config.xaxis.title.style.cssClass
                    });
                    u.add(f),
                    s.add(u)
                }
                if (i.config.xaxis.axisBorder.show) {
                    var p = i.globals.barPadForNumericAxis
                      , x = a.drawLine(i.globals.padHorizontal + i.config.xaxis.axisBorder.offsetX - p, this.offY, this.xaxisBorderWidth + p, this.offY, i.config.xaxis.axisBorder.color, 0, this.xaxisBorderHeight);
                    s.add(x)
                }
                return s
            }
        }, {
            key: "drawXaxisInversed",
            value: function(t) {
                var e, i, a = this, s = this.w, r = new b(this.ctx), n = s.config.yaxis[0].opposite ? s.globals.translateYAxisX[t] : 0, o = r.group({
                    class: "apexcharts-yaxis apexcharts-xaxis-inversed",
                    rel: t
                }), l = r.group({
                    class: "apexcharts-yaxis-texts-g apexcharts-xaxis-inversed-texts-g",
                    transform: "translate(" + n + ", 0)"
                });
                o.add(l);
                var h = [];
                if (s.config.yaxis[t].show)
                    for (var c = 0; c < this.xaxisLabels.length; c++)
                        h.push(this.xaxisLabels[c]);
                e = s.globals.gridHeight / h.length,
                i = -e / 2.2;
                var d = s.globals.yLabelFormatters[0]
                  , g = s.config.yaxis[0].labels;
                if (g.show)
                    for (var u = function(n) {
                        var o = void 0 === h[n] ? "" : h[n];
                        o = d(o, {
                            seriesIndex: t,
                            dataPointIndex: n,
                            w: s
                        });
                        var c = a.axesUtils.getYAxisForeColor(g.style.colors, t)
                          , u = 0;
                        Array.isArray(o) && (u = o.length / 2 * parseInt(g.style.fontSize, 10));
                        var f = r.drawText({
                            x: g.offsetX - 15,
                            y: i + e + g.offsetY - u,
                            text: o,
                            textAnchor: a.yaxis.opposite ? "start" : "end",
                            foreColor: Array.isArray(c) ? c[n] : c,
                            fontSize: g.style.fontSize,
                            fontFamily: g.style.fontFamily,
                            fontWeight: g.style.fontWeight,
                            isPlainText: !1,
                            cssClass: "apexcharts-yaxis-label " + g.style.cssClass
                        });
                        l.add(f);
                        var p = document.createElementNS(s.globals.SVGNS, "title");
                        if (p.textContent = o.text,
                        f.node.appendChild(p),
                        0 !== s.config.yaxis[t].labels.rotate) {
                            var x = r.rotateAroundCenter(f.node);
                            f.node.setAttribute("transform", "rotate(".concat(s.config.yaxis[t].labels.rotate, " 0 ").concat(x.y, ")"))
                        }
                        i += e
                    }, f = 0; f <= h.length - 1; f++)
                        u(f);
                if (void 0 !== s.config.yaxis[0].title.text) {
                    var p = r.group({
                        class: "apexcharts-yaxis-title apexcharts-xaxis-title-inversed",
                        transform: "translate(" + n + ", 0)"
                    })
                      , x = r.drawText({
                        x: 0,
                        y: s.globals.gridHeight / 2,
                        text: s.config.yaxis[0].title.text,
                        textAnchor: "middle",
                        foreColor: s.config.yaxis[0].title.style.color,
                        fontSize: s.config.yaxis[0].title.style.fontSize,
                        fontWeight: s.config.yaxis[0].title.style.fontWeight,
                        fontFamily: s.config.yaxis[0].title.style.fontFamily,
                        cssClass: "apexcharts-yaxis-title-text " + s.config.yaxis[0].title.style.cssClass
                    });
                    p.add(x),
                    o.add(p)
                }
                var m = 0;
                this.isCategoryBarHorizontal && s.config.yaxis[0].opposite && (m = s.globals.gridWidth);
                var v = s.config.xaxis.axisBorder;
                if (v.show) {
                    var y = r.drawLine(s.globals.padHorizontal + v.offsetX + m, 1 + v.offsetY, s.globals.padHorizontal + v.offsetX + m, s.globals.gridHeight + v.offsetY, v.color, 0);
                    o.add(y)
                }
                return s.config.yaxis[0].axisTicks.show && this.axesUtils.drawYAxisTicks(m, h.length, s.config.yaxis[0].axisBorder, s.config.yaxis[0].axisTicks, 0, e, o),
                o
            }
        }, {
            key: "drawXaxisTicks",
            value: function(t, e) {
                var i = this.w
                  , a = t;
                if (!(t < 0 || t - 2 > i.globals.gridWidth)) {
                    var s = this.offY + i.config.xaxis.axisTicks.offsetY
                      , r = s + i.config.xaxis.axisTicks.height;
                    if ("top" === i.config.xaxis.position && (r = s - i.config.xaxis.axisTicks.height),
                    i.config.xaxis.axisTicks.show) {
                        var n = new b(this.ctx).drawLine(t + i.config.xaxis.axisTicks.offsetX, s + i.config.xaxis.offsetY, a + i.config.xaxis.axisTicks.offsetX, r + i.config.xaxis.offsetY, i.config.xaxis.axisTicks.color);
                        e.add(n),
                        n.node.classList.add("apexcharts-xaxis-tick")
                    }
                }
            }
        }, {
            key: "getXAxisTicksPositions",
            value: function() {
                var t = this.w
                  , e = []
                  , i = this.xaxisLabels.length
                  , a = t.globals.padHorizontal;
                if (t.globals.timescaleLabels.length > 0)
                    for (var s = 0; s < i; s++)
                        a = this.xaxisLabels[s].position,
                        e.push(a);
                else
                    for (var r = i, n = 0; n < r; n++) {
                        var o = r;
                        t.globals.isXNumeric && "bar" !== t.config.chart.type && (o -= 1),
                        a += t.globals.gridWidth / o,
                        e.push(a)
                    }
                return e
            }
        }, {
            key: "xAxisLabelCorrections",
            value: function() {
                var t = this.w
                  , e = new b(this.ctx)
                  , i = t.globals.dom.baseEl.querySelector(".apexcharts-xaxis-texts-g")
                  , a = t.globals.dom.baseEl.querySelectorAll(".apexcharts-xaxis-texts-g text")
                  , s = t.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis-inversed text")
                  , r = t.globals.dom.baseEl.querySelectorAll(".apexcharts-xaxis-inversed-texts-g text tspan");
                if (t.globals.rotateXLabels || t.config.xaxis.labels.rotateAlways)
                    for (var n = 0; n < a.length; n++) {
                        var o = e.rotateAroundCenter(a[n]);
                        o.y = o.y - 1,
                        o.x = o.x + 1,
                        a[n].setAttribute("transform", "rotate(".concat(t.config.xaxis.labels.rotate, " ").concat(o.x, " ").concat(o.y, ")")),
                        a[n].setAttribute("text-anchor", "end");
                        i.setAttribute("transform", "translate(0, ".concat(-10, ")"));
                        var l = a[n].childNodes;
                        t.config.xaxis.labels.trim && Array.prototype.forEach.call(l, (function(i) {
                            e.placeTextWithEllipsis(i, i.textContent, t.config.xaxis.labels.maxHeight - ("bottom" === t.config.legend.position ? 20 : 10))
                        }
                        ))
                    }
                else
                    !function() {
                        for (var i = t.globals.gridWidth / (t.globals.labels.length + 1), s = 0; s < a.length; s++) {
                            var r = a[s].childNodes;
                            t.config.xaxis.labels.trim && "datetime" !== t.config.xaxis.type && Array.prototype.forEach.call(r, (function(t) {
                                e.placeTextWithEllipsis(t, t.textContent, i)
                            }
                            ))
                        }
                    }();
                if (s.length > 0) {
                    var h = s[s.length - 1].getBBox()
                      , c = s[0].getBBox();
                    h.x < -20 && s[s.length - 1].parentNode.removeChild(s[s.length - 1]),
                    c.x + c.width > t.globals.gridWidth && !t.globals.isBarHorizontal && s[0].parentNode.removeChild(s[0]);
                    for (var d = 0; d < r.length; d++)
                        e.placeTextWithEllipsis(r[d], r[d].textContent, t.config.yaxis[0].labels.maxWidth - 2 * parseFloat(t.config.yaxis[0].title.style.fontSize) - 20)
                }
            }
        }]),
        t
    }()
      , _ = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w;
            var a = this.w;
            this.xaxisLabels = a.globals.labels.slice(),
            this.axesUtils = new B(i),
            this.isTimelineBar = "datetime" === a.config.xaxis.type && a.globals.seriesRangeBarTimeline.length,
            a.globals.timescaleLabels.length > 0 && (this.xaxisLabels = a.globals.timescaleLabels.slice())
        }
        return a(t, [{
            key: "drawGridArea",
            value: function() {
                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null
                  , e = this.w
                  , i = new b(this.ctx);
                null === t && (t = i.group({
                    class: "apexcharts-grid"
                }));
                var a = i.drawLine(e.globals.padHorizontal, 1, e.globals.padHorizontal, e.globals.gridHeight, "transparent")
                  , s = i.drawLine(e.globals.padHorizontal, e.globals.gridHeight, e.globals.gridWidth, e.globals.gridHeight, "transparent");
                return t.add(s),
                t.add(a),
                t
            }
        }, {
            key: "drawGrid",
            value: function() {
                var t = null;
                return this.w.globals.axisCharts && (t = this.renderGrid(),
                this.drawGridArea(t.el)),
                t
            }
        }, {
            key: "createGridMask",
            value: function() {
                var t = this.w
                  , e = t.globals
                  , i = new b(this.ctx)
                  , a = Array.isArray(t.config.stroke.width) ? 0 : t.config.stroke.width;
                if (Array.isArray(t.config.stroke.width)) {
                    var s = 0;
                    t.config.stroke.width.forEach((function(t) {
                        s = Math.max(s, t)
                    }
                    )),
                    a = s
                }
                e.dom.elGridRectMask = document.createElementNS(e.SVGNS, "clipPath"),
                e.dom.elGridRectMask.setAttribute("id", "gridRectMask".concat(e.cuid)),
                e.dom.elGridRectMarkerMask = document.createElementNS(e.SVGNS, "clipPath"),
                e.dom.elGridRectMarkerMask.setAttribute("id", "gridRectMarkerMask".concat(e.cuid));
                var r = t.config.chart.type
                  , n = 0
                  , o = 0;
                ("bar" === r || "rangeBar" === r || t.globals.comboBarCount > 0) && t.globals.isXNumeric && !t.globals.isBarHorizontal && (n = t.config.grid.padding.left,
                o = t.config.grid.padding.right,
                e.barPadForNumericAxis > n && (n = e.barPadForNumericAxis,
                o = e.barPadForNumericAxis)),
                e.dom.elGridRect = i.drawRect(-a / 2 - n - 2, -a / 2, e.gridWidth + a + o + n + 4, e.gridHeight + a, 0, "#fff"),
                new y(this).getLargestMarkerSize();
                var l = t.globals.markers.largestSize + 1;
                e.dom.elGridRectMarker = i.drawRect(2 * -l, 2 * -l, e.gridWidth + 4 * l, e.gridHeight + 4 * l, 0, "#fff"),
                e.dom.elGridRectMask.appendChild(e.dom.elGridRect.node),
                e.dom.elGridRectMarkerMask.appendChild(e.dom.elGridRectMarker.node);
                var h = e.dom.baseEl.querySelector("defs");
                h.appendChild(e.dom.elGridRectMask),
                h.appendChild(e.dom.elGridRectMarkerMask)
            }
        }, {
            key: "_drawGridLines",
            value: function(t) {
                var e = t.i
                  , i = t.x1
                  , a = t.y1
                  , s = t.x2
                  , r = t.y2
                  , n = t.xCount
                  , o = t.parent
                  , l = this.w;
                0 === e && l.globals.skipFirstTimelinelabel || e === n - 1 && l.globals.skipLastTimelinelabel && !l.config.xaxis.labels.formatter || "radar" === l.config.chart.type || (l.config.grid.xaxis.lines.show && this._drawGridLine({
                    x1: i,
                    y1: a,
                    x2: s,
                    y2: r,
                    parent: o
                }),
                new G(this.ctx).drawXaxisTicks(i, this.elg))
            }
        }, {
            key: "_drawGridLine",
            value: function(t) {
                var e = t.x1
                  , i = t.y1
                  , a = t.x2
                  , s = t.y2
                  , r = t.parent
                  , n = this.w
                  , o = r.node.classList.contains("apexcharts-gridlines-horizontal")
                  , l = n.config.grid.strokeDashArray
                  , h = n.globals.barPadForNumericAxis
                  , c = new b(this).drawLine(e - (o ? h : 0), i, a + (o ? h : 0), s, n.config.grid.borderColor, l);
                c.node.classList.add("apexcharts-gridline"),
                r.add(c)
            }
        }, {
            key: "_drawGridBandRect",
            value: function(t) {
                var e = t.c
                  , i = t.x1
                  , a = t.y1
                  , s = t.x2
                  , r = t.y2
                  , n = t.type
                  , o = this.w
                  , l = new b(this.ctx)
                  , h = o.globals.barPadForNumericAxis;
                if ("column" !== n || "datetime" !== o.config.xaxis.type) {
                    var c = o.config.grid[n].colors[e]
                      , d = l.drawRect(i - ("row" === n ? h : 0), a, s + ("row" === n ? 2 * h : 0), r, 0, c, o.config.grid[n].opacity);
                    this.elg.add(d),
                    d.attr("clip-path", "url(#gridRectMask".concat(o.globals.cuid, ")")),
                    d.node.classList.add("apexcharts-grid-".concat(n))
                }
            }
        }, {
            key: "_drawXYLines",
            value: function(t) {
                var e = this
                  , i = t.xCount
                  , a = t.tickAmount
                  , s = this.w;
                if (s.config.grid.xaxis.lines.show || s.config.xaxis.axisTicks.show) {
                    var r, n = s.globals.padHorizontal, o = s.globals.gridHeight;
                    s.globals.timescaleLabels.length ? function(t) {
                        for (var a = t.xC, s = t.x1, r = t.y1, n = t.x2, o = t.y2, l = 0; l < a; l++)
                            s = e.xaxisLabels[l].position,
                            n = e.xaxisLabels[l].position,
                            e._drawGridLines({
                                i: l,
                                x1: s,
                                y1: r,
                                x2: n,
                                y2: o,
                                xCount: i,
                                parent: e.elgridLinesV
                            })
                    }({
                        xC: i,
                        x1: n,
                        y1: 0,
                        x2: r,
                        y2: o
                    }) : (s.globals.isXNumeric && (i = s.globals.xAxisScale.result.length),
                    s.config.xaxis.convertedCatToNumeric && (i = s.globals.xaxisLabelsCount),
                    function(t) {
                        var a = t.xC
                          , r = t.x1
                          , n = t.y1
                          , o = t.x2
                          , l = t.y2;
                        if (void 0 !== s.config.xaxis.tickAmount && "dataPoints" !== s.config.xaxis.tickAmount)
                            s.globals.dom.baseEl.querySelectorAll(".apexcharts-text.apexcharts-xaxis-label tspan:not(:empty)").forEach((function(t, a) {
                                var s = t.getBBox();
                                e._drawGridLines({
                                    i: a,
                                    x1: s.x + s.width / 2,
                                    y1: n,
                                    x2: s.x + s.width / 2,
                                    y2: l,
                                    xCount: i,
                                    parent: e.elgridLinesV
                                })
                            }
                            ));
                        else
                            for (var h = 0; h < a + (s.globals.isXNumeric ? 0 : 1); h++)
                                0 === h && 1 === a && 1 === s.globals.dataPoints && (o = r = s.globals.gridWidth / 2),
                                e._drawGridLines({
                                    i: h,
                                    x1: r,
                                    y1: n,
                                    x2: o,
                                    y2: l,
                                    xCount: i,
                                    parent: e.elgridLinesV
                                }),
                                o = r += s.globals.gridWidth / (s.globals.isXNumeric ? a - 1 : a)
                    }({
                        xC: i,
                        x1: n,
                        y1: 0,
                        x2: r,
                        y2: o
                    }))
                }
                if (s.config.grid.yaxis.lines.show) {
                    var l = 0
                      , h = 0
                      , c = s.globals.gridWidth
                      , d = a + 1;
                    this.isTimelineBar && (d = s.globals.labels.length);
                    for (var g = 0; g < d + (this.isTimelineBar ? 1 : 0); g++)
                        this._drawGridLine({
                            x1: 0,
                            y1: l,
                            x2: c,
                            y2: h,
                            parent: this.elgridLinesH
                        }),
                        h = l += s.globals.gridHeight / (this.isTimelineBar ? d : a)
                }
            }
        }, {
            key: "_drawInvertedXYLines",
            value: function(t) {
                var e = t.xCount
                  , i = this.w;
                if (i.config.grid.xaxis.lines.show || i.config.xaxis.axisTicks.show)
                    for (var a, s = i.globals.padHorizontal, r = i.globals.gridHeight, n = 0; n < e + 1; n++) {
                        i.config.grid.xaxis.lines.show && this._drawGridLine({
                            x1: s,
                            y1: 0,
                            x2: a,
                            y2: r,
                            parent: this.elgridLinesV
                        }),
                        new G(this.ctx).drawXaxisTicks(s, this.elg),
                        a = s = s + i.globals.gridWidth / e + .3
                    }
                if (i.config.grid.yaxis.lines.show)
                    for (var o = 0, l = 0, h = i.globals.gridWidth, c = 0; c < i.globals.dataPoints + 1; c++)
                        this._drawGridLine({
                            x1: 0,
                            y1: o,
                            x2: h,
                            y2: l,
                            parent: this.elgridLinesH
                        }),
                        l = o += i.globals.gridHeight / i.globals.dataPoints
            }
        }, {
            key: "renderGrid",
            value: function() {
                var t = this.w
                  , e = new b(this.ctx);
                this.elg = e.group({
                    class: "apexcharts-grid"
                }),
                this.elgridLinesH = e.group({
                    class: "apexcharts-gridlines-horizontal"
                }),
                this.elgridLinesV = e.group({
                    class: "apexcharts-gridlines-vertical"
                }),
                this.elg.add(this.elgridLinesH),
                this.elg.add(this.elgridLinesV),
                t.config.grid.show || (this.elgridLinesV.hide(),
                this.elgridLinesH.hide());
                for (var i, a = t.globals.yAxisScale.length ? t.globals.yAxisScale[0].result.length - 1 : 5, s = 0; s < t.globals.series.length && (void 0 !== t.globals.yAxisScale[s] && (a = t.globals.yAxisScale[s].result.length - 1),
                !(a > 2)); s++)
                    ;
                return !t.globals.isBarHorizontal || this.isTimelineBar ? (i = this.xaxisLabels.length,
                this.isTimelineBar && (a = t.globals.labels.length,
                t.config.xaxis.tickAmount && t.config.xaxis.labels.formatter && (i = t.config.xaxis.tickAmount)),
                this._drawXYLines({
                    xCount: i,
                    tickAmount: a
                })) : (i = a,
                a = t.globals.xTickAmount,
                this._drawInvertedXYLines({
                    xCount: i,
                    tickAmount: a
                })),
                this.drawGridBands(i, a),
                {
                    el: this.elg,
                    xAxisTickWidth: t.globals.gridWidth / i
                }
            }
        }, {
            key: "drawGridBands",
            value: function(t, e) {
                var i = this.w;
                if (void 0 !== i.config.grid.row.colors && i.config.grid.row.colors.length > 0)
                    for (var a = 0, s = i.globals.gridHeight / e, r = i.globals.gridWidth, n = 0, o = 0; n < e; n++,
                    o++)
                        o >= i.config.grid.row.colors.length && (o = 0),
                        this._drawGridBandRect({
                            c: o,
                            x1: 0,
                            y1: a,
                            x2: r,
                            y2: s,
                            type: "row"
                        }),
                        a += i.globals.gridHeight / e;
                if (void 0 !== i.config.grid.column.colors && i.config.grid.column.colors.length > 0)
                    for (var l = i.globals.isBarHorizontal || "category" !== i.config.xaxis.type && !i.config.xaxis.convertedCatToNumeric ? t : t - 1, h = i.globals.padHorizontal, c = i.globals.padHorizontal + i.globals.gridWidth / l, d = i.globals.gridHeight, g = 0, u = 0; g < t; g++,
                    u++)
                        u >= i.config.grid.column.colors.length && (u = 0),
                        this._drawGridBandRect({
                            c: u,
                            x1: h,
                            y1: 0,
                            x2: c,
                            y2: d,
                            type: "column"
                        }),
                        h += i.globals.gridWidth / l
            }
        }]),
        t
    }()
      , j = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w
        }
        return a(t, [{
            key: "niceScale",
            value: function(t, e) {
                var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 10
                  , a = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0
                  , s = arguments.length > 4 ? arguments[4] : void 0
                  , r = this.w
                  , n = Math.abs(e - t);
                if ("dataPoints" === (i = this._adjustTicksForSmallRange(i, a, n)) && (i = r.globals.dataPoints - 1),
                t === Number.MIN_VALUE && 0 === e || !f.isNumber(t) && !f.isNumber(e) || t === Number.MIN_VALUE && e === -Number.MAX_VALUE) {
                    t = 0,
                    e = i;
                    var o = this.linearScale(t, e, i);
                    return o
                }
                t > e ? (console.warn("axis.min cannot be greater than axis.max"),
                e = t + .1) : t === e && (t = 0 === t ? 0 : t - .5,
                e = 0 === e ? 2 : e + .5);
                var l = [];
                n < 1 && s && ("candlestick" === r.config.chart.type || "candlestick" === r.config.series[a].type || r.globals.isRangeData) && (e *= 1.01);
                var h = i + 1;
                h < 2 ? h = 2 : h > 2 && (h -= 2);
                var c = n / h
                  , d = Math.floor(f.log10(c))
                  , g = Math.pow(10, d)
                  , u = Math.round(c / g);
                u < 1 && (u = 1);
                var p = u * g
                  , x = p * Math.floor(t / p)
                  , b = p * Math.ceil(e / p)
                  , m = x;
                if (s && n > 2) {
                    for (; l.push(m),
                    !((m += p) > b); )
                        ;
                    return {
                        result: l,
                        niceMin: l[0],
                        niceMax: l[l.length - 1]
                    }
                }
                var v = t;
                (l = []).push(v);
                for (var y = Math.abs(e - t) / i, w = 0; w <= i; w++)
                    v += y,
                    l.push(v);
                return l[l.length - 2] >= e && l.pop(),
                {
                    result: l,
                    niceMin: l[0],
                    niceMax: l[l.length - 1]
                }
            }
        }, {
            key: "linearScale",
            value: function(t, e) {
                var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 10
                  , a = arguments.length > 3 ? arguments[3] : void 0
                  , s = Math.abs(e - t)
                  , r = s / (i = this._adjustTicksForSmallRange(i, a, s));
                i === Number.MAX_VALUE && (i = 10,
                r = 1);
                for (var n = [], o = t; i >= 0; )
                    n.push(o),
                    o += r,
                    i -= 1;
                return {
                    result: n,
                    niceMin: n[0],
                    niceMax: n[n.length - 1]
                }
            }
        }, {
            key: "logarithmicScale",
            value: function(t, e, i, a) {
                (e <= 0 || e === Number.MIN_VALUE) && (e = .01);
                for (var s = Math.log(e) / Math.log(10), r = Math.log(i) / Math.log(10), n = Math.abs(i - e) / a, o = [], l = e; a >= 0; )
                    o.push(l),
                    l += n,
                    a -= 1;
                var h = o.map((function(t, a) {
                    t <= 0 && (t = .01);
                    var n = (r - s) / (i - e)
                      , o = Math.pow(10, s + n * (t - s));
                    return Math.round(o / f.roundToBase(o, 10)) * f.roundToBase(o, 10)
                }
                ));
                return 0 === h[0] && (h[0] = 1),
                {
                    result: h,
                    niceMin: h[0],
                    niceMax: h[h.length - 1]
                }
            }
        }, {
            key: "_adjustTicksForSmallRange",
            value: function(t, e, i) {
                var a = t;
                if (void 0 !== e && this.w.config.yaxis[e].labels.formatter) {
                    var s = this.w.config.yaxis[e].labels.formatter(1);
                    f.isNumber(Number(s)) && !f.isFloat(s) && (a = Math.ceil(i))
                }
                return a < t ? a : t
            }
        }, {
            key: "setYScaleForIndex",
            value: function(t, e, i) {
                var a = this.w.globals
                  , s = this.w.config
                  , r = a.isBarHorizontal ? s.xaxis : s.yaxis[t];
                void 0 === a.yAxisScale[t] && (a.yAxisScale[t] = []);
                var n = Math.abs(i - e);
                if (r.logarithmic && n <= 5 && (a.invalidLogScale = !0),
                r.logarithmic && n > 5)
                    a.allSeriesCollapsed = !1,
                    a.yAxisScale[t] = this.logarithmicScale(t, e, i, r.tickAmount ? r.tickAmount : Math.floor(Math.log10(i)));
                else if (i !== -Number.MAX_VALUE && f.isNumber(i))
                    if (a.allSeriesCollapsed = !1,
                    void 0 === r.min && void 0 === r.max || r.forceNiceScale) {
                        var o = void 0 === s.yaxis[t].max && void 0 === s.yaxis[t].min || s.yaxis[t].forceNiceScale;
                        a.yAxisScale[t] = this.niceScale(e, i, r.tickAmount ? r.tickAmount : n < 5 && n > 1 ? n + 1 : 5, t, o)
                    } else
                        a.yAxisScale[t] = this.linearScale(e, i, r.tickAmount, t);
                else
                    a.yAxisScale[t] = this.linearScale(0, 5, 5)
            }
        }, {
            key: "setXScale",
            value: function(t, e) {
                var i = this.w
                  , a = i.globals
                  , s = i.config.xaxis
                  , r = Math.abs(e - t);
                return e !== -Number.MAX_VALUE && f.isNumber(e) ? a.xAxisScale = this.niceScale(t, e, s.tickAmount ? s.tickAmount : r < 5 && r > 1 ? r + 1 : 5, 0) : a.xAxisScale = this.linearScale(0, 5, 5),
                a.xAxisScale
            }
        }, {
            key: "setMultipleYScales",
            value: function() {
                var t = this
                  , e = this.w.globals
                  , i = this.w.config
                  , a = e.minYArr.concat([])
                  , s = e.maxYArr.concat([])
                  , r = [];
                i.yaxis.forEach((function(e, n) {
                    var o = n;
                    i.series.forEach((function(t, i) {
                        t.name === e.seriesName && (o = i,
                        n !== i ? r.push({
                            index: i,
                            similarIndex: n,
                            alreadyExists: !0
                        }) : r.push({
                            index: i
                        }))
                    }
                    ));
                    var l = a[o]
                      , h = s[o];
                    t.setYScaleForIndex(n, l, h)
                }
                )),
                this.sameScaleInMultipleAxes(a, s, r)
            }
        }, {
            key: "sameScaleInMultipleAxes",
            value: function(t, e, i) {
                var a = this
                  , s = this.w.config
                  , r = this.w.globals
                  , n = [];
                i.forEach((function(t) {
                    t.alreadyExists && (void 0 === n[t.index] && (n[t.index] = []),
                    n[t.index].push(t.index),
                    n[t.index].push(t.similarIndex))
                }
                )),
                r.yAxisSameScaleIndices = n,
                n.forEach((function(t, e) {
                    n.forEach((function(i, a) {
                        var s, r;
                        e !== a && (s = t,
                        r = i,
                        s.filter((function(t) {
                            return -1 !== r.indexOf(t)
                        }
                        ))).length > 0 && (n[e] = n[e].concat(n[a]))
                    }
                    ))
                }
                ));
                var o = n.map((function(t) {
                    return t.filter((function(e, i) {
                        return t.indexOf(e) === i
                    }
                    ))
                }
                )).map((function(t) {
                    return t.sort()
                }
                ));
                n = n.filter((function(t) {
                    return !!t
                }
                ));
                var l = o.slice()
                  , h = l.map((function(t) {
                    return JSON.stringify(t)
                }
                ));
                l = l.filter((function(t, e) {
                    return h.indexOf(JSON.stringify(t)) === e
                }
                ));
                var c = []
                  , d = [];
                t.forEach((function(t, i) {
                    l.forEach((function(a, s) {
                        a.indexOf(i) > -1 && (void 0 === c[s] && (c[s] = [],
                        d[s] = []),
                        c[s].push({
                            key: i,
                            value: t
                        }),
                        d[s].push({
                            key: i,
                            value: e[i]
                        }))
                    }
                    ))
                }
                ));
                var g = Array.apply(null, Array(l.length)).map(Number.prototype.valueOf, Number.MIN_VALUE)
                  , u = Array.apply(null, Array(l.length)).map(Number.prototype.valueOf, -Number.MAX_VALUE);
                c.forEach((function(t, e) {
                    t.forEach((function(t, i) {
                        g[e] = Math.min(t.value, g[e])
                    }
                    ))
                }
                )),
                d.forEach((function(t, e) {
                    t.forEach((function(t, i) {
                        u[e] = Math.max(t.value, u[e])
                    }
                    ))
                }
                )),
                t.forEach((function(t, e) {
                    d.forEach((function(t, i) {
                        var n = g[i]
                          , o = u[i];
                        s.chart.stacked && (o = 0,
                        t.forEach((function(t, e) {
                            t.value !== -Number.MAX_VALUE && (o += t.value),
                            n !== Number.MIN_VALUE && (n += c[i][e].value)
                        }
                        ))),
                        t.forEach((function(i, l) {
                            t[l].key === e && (void 0 !== s.yaxis[e].min && (n = "function" == typeof s.yaxis[e].min ? s.yaxis[e].min(r.minY) : s.yaxis[e].min),
                            void 0 !== s.yaxis[e].max && (o = "function" == typeof s.yaxis[e].max ? s.yaxis[e].max(r.maxY) : s.yaxis[e].max),
                            a.setYScaleForIndex(e, n, o))
                        }
                        ))
                    }
                    ))
                }
                ))
            }
        }, {
            key: "autoScaleY",
            value: function(t, e, i) {
                t || (t = this);
                var a = t.w;
                if (a.globals.isMultipleYAxis || a.globals.collapsedSeries.length)
                    return console.warn("autoScaleYaxis is not supported in a multi-yaxis chart."),
                    e;
                var s = a.globals.seriesX[0]
                  , r = a.config.chart.stacked;
                return e.forEach((function(t, n) {
                    for (var o = 0, l = 0; l < s.length; l++)
                        if (s[l] >= i.xaxis.min) {
                            o = l;
                            break
                        }
                    var h, c, d = a.globals.minYArr[n], g = a.globals.maxYArr[n], u = a.globals.stackedSeriesTotals;
                    a.globals.series.forEach((function(n, l) {
                        var f = n[o];
                        r ? (f = u[o],
                        h = c = f,
                        u.forEach((function(t, e) {
                            s[e] <= i.xaxis.max && s[e] >= i.xaxis.min && (t > c && null !== t && (c = t),
                            n[e] < h && null !== n[e] && (h = n[e]))
                        }
                        ))) : (h = c = f,
                        n.forEach((function(t, e) {
                            if (s[e] <= i.xaxis.max && s[e] >= i.xaxis.min) {
                                var r = t
                                  , n = t;
                                a.globals.series.forEach((function(i, a) {
                                    null !== t && (r = Math.min(i[e], r),
                                    n = Math.max(i[e], n))
                                }
                                )),
                                n > c && null !== n && (c = n),
                                r < h && null !== r && (h = r)
                            }
                        }
                        ))),
                        void 0 === h && void 0 === c && (h = d,
                        c = g),
                        (c *= c < 0 ? .9 : 1.1) < 0 && c < g && (c = g),
                        (h *= h < 0 ? 1.1 : .9) < 0 && h > d && (h = d),
                        e.length > 1 ? (e[l].min = void 0 === t.min ? h : t.min,
                        e[l].max = void 0 === t.max ? c : t.max) : (e[0].min = void 0 === t.min ? h : t.min,
                        e[0].max = void 0 === t.max ? c : t.max)
                    }
                    ))
                }
                )),
                e
            }
        }]),
        t
    }()
      , U = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w,
            this.scales = new j(i)
        }
        return a(t, [{
            key: "init",
            value: function() {
                this.setYRange(),
                this.setXRange(),
                this.setZRange()
            }
        }, {
            key: "getMinYMaxY",
            value: function(t) {
                var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : Number.MAX_VALUE
                  , i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : -Number.MAX_VALUE
                  , a = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : null
                  , s = this.w.config
                  , r = this.w.globals
                  , n = -Number.MAX_VALUE
                  , o = Number.MIN_VALUE;
                null === a && (a = t + 1);
                var l = r.series
                  , h = l
                  , c = l;
                "candlestick" === s.chart.type ? (h = r.seriesCandleL,
                c = r.seriesCandleH) : r.isRangeData && (h = r.seriesRangeStart,
                c = r.seriesRangeEnd);
                for (var d = t; d < a; d++) {
                    r.dataPoints = Math.max(r.dataPoints, l[d].length);
                    for (var g = 0; g < r.series[d].length; g++) {
                        var u = l[d][g];
                        null !== u && f.isNumber(u) ? (n = Math.max(n, c[d][g]),
                        e = Math.min(e, h[d][g]),
                        i = Math.max(i, h[d][g]),
                        "candlestick" === this.w.config.chart.type && (n = Math.max(n, r.seriesCandleO[d][g]),
                        n = Math.max(n, r.seriesCandleH[d][g]),
                        n = Math.max(n, r.seriesCandleL[d][g]),
                        i = n = Math.max(n, r.seriesCandleC[d][g])),
                        f.isFloat(u) && (u = f.noExponents(u),
                        r.yValueDecimal = Math.max(r.yValueDecimal, u.toString().split(".")[1].length)),
                        o > h[d][g] && h[d][g] < 0 && (o = h[d][g])) : r.hasNullValues = !0
                    }
                }
                return "rangeBar" === s.chart.type && r.seriesRangeStart.length && r.isBarHorizontal && "datetime" === s.xaxis.type && (o = e),
                "bar" === s.chart.type && (o < 0 && n < 0 && (n = 0),
                o === Number.MIN_VALUE && (o = 0)),
                {
                    minY: o,
                    maxY: n,
                    lowestY: e,
                    highestY: i
                }
            }
        }, {
            key: "setYRange",
            value: function() {
                var t = this.w.globals
                  , e = this.w.config;
                t.maxY = -Number.MAX_VALUE,
                t.minY = Number.MIN_VALUE;
                var i = Number.MAX_VALUE;
                if (t.isMultipleYAxis)
                    for (var a = 0; a < t.series.length; a++) {
                        var s = this.getMinYMaxY(a, i, null, a + 1);
                        t.minYArr.push(s.minY),
                        t.maxYArr.push(s.maxY),
                        i = s.lowestY
                    }
                var r = this.getMinYMaxY(0, i, null, t.series.length);
                if (t.minY = r.minY,
                t.maxY = r.maxY,
                i = r.lowestY,
                e.chart.stacked && this._setStackedMinMax(),
                ("line" === e.chart.type || "area" === e.chart.type || "candlestick" === e.chart.type || "rangeBar" === e.chart.type && !t.isBarHorizontal) && t.minY === Number.MIN_VALUE && i !== -Number.MAX_VALUE && i !== t.maxY) {
                    var n = t.maxY - i;
                    i >= 0 && i <= 10 && (n = 0),
                    t.minY = i - 5 * n / 100,
                    i > 0 && t.minY < 0 && (t.minY = 0),
                    t.maxY = t.maxY + 5 * n / 100
                }
                if (e.yaxis.forEach((function(e, i) {
                    void 0 !== e.max && ("number" == typeof e.max ? t.maxYArr[i] = e.max : "function" == typeof e.max && (t.maxYArr[i] = e.max(t.maxY)),
                    t.maxY = t.maxYArr[i]),
                    void 0 !== e.min && ("number" == typeof e.min ? t.minYArr[i] = e.min : "function" == typeof e.min && (t.minYArr[i] = e.min(t.minY)),
                    t.minY = t.minYArr[i])
                }
                )),
                t.isBarHorizontal) {
                    ["min", "max"].forEach((function(i) {
                        void 0 !== e.xaxis[i] && "number" == typeof e.xaxis[i] && ("min" === i ? t.minY = e.xaxis[i] : t.maxY = e.xaxis[i])
                    }
                    ))
                }
                return t.isMultipleYAxis ? (this.scales.setMultipleYScales(),
                t.minY = i,
                t.yAxisScale.forEach((function(e, i) {
                    t.minYArr[i] = e.niceMin,
                    t.maxYArr[i] = e.niceMax
                }
                ))) : (this.scales.setYScaleForIndex(0, t.minY, t.maxY),
                t.minY = t.yAxisScale[0].niceMin,
                t.maxY = t.yAxisScale[0].niceMax,
                t.minYArr[0] = t.yAxisScale[0].niceMin,
                t.maxYArr[0] = t.yAxisScale[0].niceMax),
                {
                    minY: t.minY,
                    maxY: t.maxY,
                    minYArr: t.minYArr,
                    maxYArr: t.maxYArr
                }
            }
        }, {
            key: "setXRange",
            value: function() {
                var t = this.w.globals
                  , e = this.w.config
                  , i = "numeric" === e.xaxis.type || "datetime" === e.xaxis.type || "category" === e.xaxis.type && !t.noLabelsProvided || t.noLabelsProvided || t.isXNumeric;
                if (t.isXNumeric && function() {
                    for (var e = 0; e < t.series.length; e++)
                        if (t.labels[e])
                            for (var i = 0; i < t.labels[e].length; i++)
                                null !== t.labels[e][i] && f.isNumber(t.labels[e][i]) && (t.maxX = Math.max(t.maxX, t.labels[e][i]),
                                t.initialMaxX = Math.max(t.maxX, t.labels[e][i]),
                                t.minX = Math.min(t.minX, t.labels[e][i]),
                                t.initialMinX = Math.min(t.minX, t.labels[e][i]))
                }(),
                t.noLabelsProvided && 0 === e.xaxis.categories.length && (t.maxX = t.labels[t.labels.length - 1],
                t.initialMaxX = t.labels[t.labels.length - 1],
                t.minX = 1,
                t.initialMinX = 1),
                t.isXNumeric || t.noLabelsProvided || t.dataFormatXNumeric) {
                    var a;
                    if (void 0 === e.xaxis.tickAmount ? (a = Math.round(t.svgWidth / 150),
                    "numeric" === e.xaxis.type && t.dataPoints < 30 && (a = t.dataPoints - 1),
                    a > t.dataPoints && 0 !== t.dataPoints && (a = t.dataPoints - 1)) : "dataPoints" === e.xaxis.tickAmount ? (t.series.length > 1 && (a = t.series[t.maxValsInArrayIndex].length - 1),
                    t.isXNumeric && (a = t.maxX - t.minX - 1)) : a = e.xaxis.tickAmount,
                    t.xTickAmount = a,
                    void 0 !== e.xaxis.max && "number" == typeof e.xaxis.max && (t.maxX = e.xaxis.max),
                    void 0 !== e.xaxis.min && "number" == typeof e.xaxis.min && (t.minX = e.xaxis.min),
                    void 0 !== e.xaxis.range && (t.minX = t.maxX - e.xaxis.range),
                    t.minX !== Number.MAX_VALUE && t.maxX !== -Number.MAX_VALUE)
                        if (e.xaxis.convertedCatToNumeric && !t.dataFormatXNumeric) {
                            for (var s = [], r = t.minX - 1; r < t.maxX; r++)
                                s.push(r + 1);
                            t.xAxisScale = {
                                result: s,
                                niceMin: s[0],
                                niceMax: s[s.length - 1]
                            }
                        } else
                            t.xAxisScale = this.scales.setXScale(t.minX, t.maxX);
                    else
                        t.xAxisScale = this.scales.linearScale(1, a, a),
                        t.noLabelsProvided && t.labels.length > 0 && (t.xAxisScale = this.scales.linearScale(1, t.labels.length, a - 1),
                        t.seriesX = t.labels.slice());
                    i && (t.labels = t.xAxisScale.result.slice())
                }
                return t.isBarHorizontal && t.labels.length && (t.xTickAmount = t.labels.length),
                this._handleSingleDataPoint(),
                this._getMinXDiff(),
                {
                    minX: t.minX,
                    maxX: t.maxX
                }
            }
        }, {
            key: "setZRange",
            value: function() {
                var t = this.w.globals;
                if (t.isDataXYZ)
                    for (var e = 0; e < t.series.length; e++)
                        if (void 0 !== t.seriesZ[e])
                            for (var i = 0; i < t.seriesZ[e].length; i++)
                                null !== t.seriesZ[e][i] && f.isNumber(t.seriesZ[e][i]) && (t.maxZ = Math.max(t.maxZ, t.seriesZ[e][i]),
                                t.minZ = Math.min(t.minZ, t.seriesZ[e][i]))
            }
        }, {
            key: "_handleSingleDataPoint",
            value: function() {
                var t = this.w.globals
                  , e = this.w.config;
                if (t.minX === t.maxX) {
                    var i = new Y(this.ctx);
                    if ("datetime" === e.xaxis.type) {
                        var a = i.getDate(t.minX);
                        a.setUTCDate(a.getDate() - 2),
                        t.minX = new Date(a).getTime();
                        var s = i.getDate(t.maxX);
                        s.setUTCDate(s.getDate() + 2),
                        t.maxX = new Date(s).getTime()
                    } else
                        ("numeric" === e.xaxis.type || "category" === e.xaxis.type && !t.noLabelsProvided) && (t.minX = t.minX - 2,
                        t.initialMinX = t.minX,
                        t.maxX = t.maxX + 2,
                        t.initialMaxX = t.maxX)
                }
            }
        }, {
            key: "_getMinXDiff",
            value: function() {
                var t = this.w.globals;
                t.isXNumeric && t.seriesX.forEach((function(e, i) {
                    1 === e.length && e.push(t.seriesX[t.maxValsInArrayIndex][t.seriesX[t.maxValsInArrayIndex].length - 1]);
                    var a = e.slice();
                    a.sort((function(t, e) {
                        return t - e
                    }
                    )),
                    a.forEach((function(e, a) {
                        if (a > 0) {
                            var s = e - t.seriesX[i][a - 1];
                            s > 0 && (t.minXDiff = Math.min(s, t.minXDiff))
                        }
                    }
                    )),
                    1 === t.dataPoints && t.minXDiff === Number.MAX_VALUE && (t.minXDiff = .5)
                }
                ))
            }
        }, {
            key: "_setStackedMinMax",
            value: function() {
                var t = this.w.globals
                  , e = []
                  , i = [];
                if (t.series.length)
                    for (var a = 0; a < t.series[t.maxValsInArrayIndex].length; a++)
                        for (var s = 0, r = 0, n = 0; n < t.series.length; n++)
                            null !== t.series[n][a] && f.isNumber(t.series[n][a]) && (t.series[n][a] > 0 ? s = s + parseFloat(t.series[n][a]) + 1e-4 : r += parseFloat(t.series[n][a])),
                            n === t.series.length - 1 && (e.push(s),
                            i.push(r));
                for (var o = 0; o < e.length; o++)
                    t.maxY = Math.max(t.maxY, e[o]),
                    t.minY = Math.min(t.minY, i[o])
            }
        }]),
        t
    }()
      , q = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w;
            var a = this.w;
            this.xaxisFontSize = a.config.xaxis.labels.style.fontSize,
            this.axisFontFamily = a.config.xaxis.labels.style.fontFamily,
            this.xaxisForeColors = a.config.xaxis.labels.style.colors,
            this.isCategoryBarHorizontal = "bar" === a.config.chart.type && a.config.plotOptions.bar.horizontal,
            this.xAxisoffX = 0,
            "bottom" === a.config.xaxis.position && (this.xAxisoffX = a.globals.gridHeight),
            this.drawnLabels = [],
            this.axesUtils = new B(i)
        }
        return a(t, [{
            key: "drawYaxis",
            value: function(t) {
                var e = this
                  , i = this.w
                  , a = new b(this.ctx)
                  , s = i.config.yaxis[t].labels.style
                  , r = s.fontSize
                  , n = s.fontFamily
                  , o = s.fontWeight
                  , l = a.group({
                    class: "apexcharts-yaxis",
                    rel: t,
                    transform: "translate(" + i.globals.translateYAxisX[t] + ", 0)"
                });
                if (this.axesUtils.isYAxisHidden(t))
                    return l;
                var h = a.group({
                    class: "apexcharts-yaxis-texts-g"
                });
                l.add(h);
                var c = i.globals.yAxisScale[t].result.length - 1
                  , d = i.globals.gridHeight / c
                  , g = i.globals.translateY
                  , u = i.globals.yLabelFormatters[t]
                  , f = i.globals.yAxisScale[t].result.slice();
                f = this.axesUtils.checkForReversedLabels(t, f);
                var p = "";
                if (i.config.yaxis[t].labels.show)
                    for (var x = function(l) {
                        var x = f[l];
                        x = u(x, l);
                        var b = i.config.yaxis[t].labels.padding;
                        i.config.yaxis[t].opposite && 0 !== i.config.yaxis.length && (b *= -1);
                        var m = e.axesUtils.getYAxisForeColor(s.colors, t)
                          , v = a.drawText({
                            x: b,
                            y: g + c / 10 + i.config.yaxis[t].labels.offsetY + 1,
                            text: x,
                            textAnchor: i.config.yaxis[t].opposite ? "start" : "end",
                            fontSize: r,
                            fontFamily: n,
                            fontWeight: o,
                            foreColor: Array.isArray(m) ? m[l] : m,
                            isPlainText: !1,
                            cssClass: "apexcharts-yaxis-label " + s.cssClass
                        });
                        if (l === c && (p = v),
                        h.add(v),
                        0 !== i.config.yaxis[t].labels.rotate) {
                            var y = a.rotateAroundCenter(p.node)
                              , w = a.rotateAroundCenter(v.node);
                            v.node.setAttribute("transform", "rotate(".concat(i.config.yaxis[t].labels.rotate, " ").concat(y.x, " ").concat(w.y, ")"))
                        }
                        g += d
                    }, m = c; m >= 0; m--)
                        x(m);
                if (void 0 !== i.config.yaxis[t].title.text) {
                    var v = a.group({
                        class: "apexcharts-yaxis-title"
                    })
                      , y = 0;
                    i.config.yaxis[t].opposite && (y = i.globals.translateYAxisX[t]);
                    var w = a.drawText({
                        x: y,
                        y: i.globals.gridHeight / 2 + i.globals.translateY + i.config.yaxis[t].title.offsetY,
                        text: i.config.yaxis[t].title.text,
                        textAnchor: "end",
                        foreColor: i.config.yaxis[t].title.style.color,
                        fontSize: i.config.yaxis[t].title.style.fontSize,
                        fontWeight: i.config.yaxis[t].title.style.fontWeight,
                        fontFamily: i.config.yaxis[t].title.style.fontFamily,
                        cssClass: "apexcharts-yaxis-title-text " + i.config.yaxis[t].title.style.cssClass
                    });
                    v.add(w),
                    l.add(v)
                }
                var k = i.config.yaxis[t].axisBorder
                  , A = 31 + k.offsetX;
                if (i.config.yaxis[t].opposite && (A = -31 - k.offsetX),
                k.show) {
                    var S = a.drawLine(A, i.globals.translateY + k.offsetY - 2, A, i.globals.gridHeight + i.globals.translateY + k.offsetY + 2, k.color, 0, k.width);
                    l.add(S)
                }
                return i.config.yaxis[t].axisTicks.show && this.axesUtils.drawYAxisTicks(A, c, k, i.config.yaxis[t].axisTicks, t, d, l),
                l
            }
        }, {
            key: "drawYaxisInversed",
            value: function(t) {
                var e = this.w
                  , i = new b(this.ctx)
                  , a = i.group({
                    class: "apexcharts-xaxis apexcharts-yaxis-inversed"
                })
                  , s = i.group({
                    class: "apexcharts-xaxis-texts-g",
                    transform: "translate(".concat(e.globals.translateXAxisX, ", ").concat(e.globals.translateXAxisY, ")")
                });
                a.add(s);
                var r = e.globals.yAxisScale[t].result.length - 1
                  , n = e.globals.gridWidth / r + .1
                  , o = n + e.config.xaxis.labels.offsetX
                  , l = e.globals.xLabelFormatter
                  , h = e.globals.yAxisScale[t].result.slice()
                  , c = e.globals.timescaleLabels;
                c.length > 0 && (this.xaxisLabels = c.slice(),
                r = (h = c.slice()).length),
                h = this.axesUtils.checkForReversedLabels(t, h);
                var d = c.length;
                if (e.config.xaxis.labels.show)
                    for (var g = d ? 0 : r; d ? g < d : g >= 0; d ? g++ : g--) {
                        var u = h[g];
                        u = l(u, g);
                        var f = e.globals.gridWidth + e.globals.padHorizontal - (o - n + e.config.xaxis.labels.offsetX);
                        if (c.length) {
                            var p = this.axesUtils.getLabel(h, c, f, g, this.drawnLabels, this.xaxisFontSize);
                            f = p.x,
                            u = p.text,
                            this.drawnLabels.push(p.text),
                            0 === g && e.globals.skipFirstTimelinelabel && (u = ""),
                            g === h.length - 1 && e.globals.skipLastTimelinelabel && (u = "")
                        }
                        var x = i.drawText({
                            x: f,
                            y: this.xAxisoffX + e.config.xaxis.labels.offsetY + 30 - ("top" === e.config.xaxis.position ? e.globals.xAxisHeight + e.config.xaxis.axisTicks.height - 2 : 0),
                            text: u,
                            textAnchor: "middle",
                            foreColor: Array.isArray(this.xaxisForeColors) ? this.xaxisForeColors[t] : this.xaxisForeColors,
                            fontSize: this.xaxisFontSize,
                            fontFamily: this.xaxisFontFamily,
                            fontWeight: e.config.xaxis.labels.style.fontWeight,
                            isPlainText: !1,
                            cssClass: "apexcharts-xaxis-label " + e.config.xaxis.labels.style.cssClass
                        });
                        s.add(x),
                        x.tspan(u);
                        var m = document.createElementNS(e.globals.SVGNS, "title");
                        m.textContent = u,
                        x.node.appendChild(m),
                        o += n
                    }
                return this.inversedYAxisTitleText(a),
                this.inversedYAxisBorder(a),
                a
            }
        }, {
            key: "inversedYAxisBorder",
            value: function(t) {
                var e = this.w
                  , i = new b(this.ctx)
                  , a = e.config.xaxis.axisBorder;
                if (a.show) {
                    var s = 0;
                    "bar" === e.config.chart.type && e.globals.isXNumeric && (s -= 15);
                    var r = i.drawLine(e.globals.padHorizontal + s + a.offsetX, this.xAxisoffX, e.globals.gridWidth, this.xAxisoffX, a.color, 0, a.height);
                    t.add(r)
                }
            }
        }, {
            key: "inversedYAxisTitleText",
            value: function(t) {
                var e = this.w
                  , i = new b(this.ctx);
                if (void 0 !== e.config.xaxis.title.text) {
                    var a = i.group({
                        class: "apexcharts-xaxis-title apexcharts-yaxis-title-inversed"
                    })
                      , s = i.drawText({
                        x: e.globals.gridWidth / 2 + e.config.xaxis.title.offsetX,
                        y: this.xAxisoffX + parseFloat(this.xaxisFontSize) + parseFloat(e.config.xaxis.title.style.fontSize) + e.config.xaxis.title.offsetY + 20,
                        text: e.config.xaxis.title.text,
                        textAnchor: "middle",
                        fontSize: e.config.xaxis.title.style.fontSize,
                        fontFamily: e.config.xaxis.title.style.fontFamily,
                        fontWeight: e.config.xaxis.title.style.fontWeight,
                        foreColor: e.config.xaxis.title.style.color,
                        cssClass: "apexcharts-xaxis-title-text " + e.config.xaxis.title.style.cssClass
                    });
                    a.add(s),
                    t.add(a)
                }
            }
        }, {
            key: "yAxisTitleRotate",
            value: function(t, e) {
                var i = this.w
                  , a = new b(this.ctx)
                  , s = {
                    width: 0,
                    height: 0
                }
                  , r = {
                    width: 0,
                    height: 0
                }
                  , n = i.globals.dom.baseEl.querySelector(" .apexcharts-yaxis[rel='".concat(t, "'] .apexcharts-yaxis-texts-g"));
                null !== n && (s = n.getBoundingClientRect());
                var o = i.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(t, "'] .apexcharts-yaxis-title text"));
                if (null !== o && (r = o.getBoundingClientRect()),
                null !== o) {
                    var l = this.xPaddingForYAxisTitle(t, s, r, e);
                    o.setAttribute("x", l.xPos - (e ? 10 : 0))
                }
                if (null !== o) {
                    var h = a.rotateAroundCenter(o);
                    o.setAttribute("transform", "rotate(".concat(e ? -1 * i.config.yaxis[t].title.rotate : i.config.yaxis[t].title.rotate, " ").concat(h.x, " ").concat(h.y, ")"))
                }
            }
        }, {
            key: "xPaddingForYAxisTitle",
            value: function(t, e, i, a) {
                var s = this.w
                  , r = 0
                  , n = 0
                  , o = 10;
                return void 0 === s.config.yaxis[t].title.text || t < 0 ? {
                    xPos: n,
                    padd: 0
                } : (a ? (n = e.width + s.config.yaxis[t].title.offsetX + i.width / 2 + o / 2,
                0 === (r += 1) && (n -= o / 2)) : (n = -1 * e.width + s.config.yaxis[t].title.offsetX + o / 2 + i.width / 2,
                s.globals.isBarHorizontal && (o = 25,
                n = -1 * e.width - s.config.yaxis[t].title.offsetX - o)),
                {
                    xPos: n,
                    padd: o
                })
            }
        }, {
            key: "setYAxisXPosition",
            value: function(t, e) {
                var i = this.w
                  , a = 0
                  , s = 0
                  , r = 18
                  , n = 1;
                i.config.yaxis.length > 1 && (this.multipleYs = !0),
                i.config.yaxis.map((function(o, l) {
                    var h = i.globals.ignoreYAxisIndexes.indexOf(l) > -1 || !o.show || o.floating || 0 === t[l].width
                      , c = t[l].width + e[l].width;
                    o.opposite ? i.globals.isBarHorizontal ? (s = i.globals.gridWidth + i.globals.translateX - 1,
                    i.globals.translateYAxisX[l] = s - o.labels.offsetX) : (s = i.globals.gridWidth + i.globals.translateX + n,
                    h || (n = n + c + 20),
                    i.globals.translateYAxisX[l] = s - o.labels.offsetX + 20) : (a = i.globals.translateX - r,
                    h || (r = r + c + 20),
                    i.globals.translateYAxisX[l] = a + o.labels.offsetX)
                }
                ))
            }
        }, {
            key: "setYAxisTextAlignments",
            value: function() {
                var t = this.w
                  , e = t.globals.dom.baseEl.getElementsByClassName("apexcharts-yaxis");
                (e = f.listToArray(e)).forEach((function(e, i) {
                    var a = t.config.yaxis[i];
                    if (a && void 0 !== a.labels.align) {
                        var s = t.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(i, "'] .apexcharts-yaxis-texts-g"))
                          , r = t.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis[rel='".concat(i, "'] .apexcharts-yaxis-label"));
                        r = f.listToArray(r);
                        var n = s.getBoundingClientRect();
                        "left" === a.labels.align ? (r.forEach((function(t, e) {
                            t.setAttribute("text-anchor", "start")
                        }
                        )),
                        a.opposite || s.setAttribute("transform", "translate(-".concat(n.width, ", 0)"))) : "center" === a.labels.align ? (r.forEach((function(t, e) {
                            t.setAttribute("text-anchor", "middle")
                        }
                        )),
                        s.setAttribute("transform", "translate(".concat(n.width / 2 * (a.opposite ? 1 : -1), ", 0)"))) : "right" === a.labels.align && (r.forEach((function(t, e) {
                            t.setAttribute("text-anchor", "end")
                        }
                        )),
                        a.opposite && s.setAttribute("transform", "translate(".concat(n.width, ", 0)")))
                    }
                }
                ))
            }
        }]),
        t
    }()
      , Z = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w,
            this.documentEvent = f.bind(this.documentEvent, this)
        }
        return a(t, [{
            key: "addEventListener",
            value: function(t, e) {
                var i = this.w;
                i.globals.events.hasOwnProperty(t) ? i.globals.events[t].push(e) : i.globals.events[t] = [e]
            }
        }, {
            key: "removeEventListener",
            value: function(t, e) {
                var i = this.w;
                if (i.globals.events.hasOwnProperty(t)) {
                    var a = i.globals.events[t].indexOf(e);
                    -1 !== a && i.globals.events[t].splice(a, 1)
                }
            }
        }, {
            key: "fireEvent",
            value: function(t, e) {
                var i = this.w;
                if (i.globals.events.hasOwnProperty(t)) {
                    e && e.length || (e = []);
                    for (var a = i.globals.events[t], s = a.length, r = 0; r < s; r++)
                        a[r].apply(null, e)
                }
            }
        }, {
            key: "setupEventHandlers",
            value: function() {
                var t = this
                  , e = this.w
                  , i = this.ctx
                  , a = e.globals.dom.baseEl.querySelector(e.globals.chartClass);
                this.ctx.eventList.forEach((function(t) {
                    a.addEventListener(t, (function(t) {
                        var a = Object.assign({}, e, {
                            seriesIndex: e.globals.capturedSeriesIndex,
                            dataPointIndex: e.globals.capturedDataPointIndex
                        });
                        "mousemove" === t.type || "touchmove" === t.type ? "function" == typeof e.config.chart.events.mouseMove && e.config.chart.events.mouseMove(t, i, a) : ("mouseup" === t.type && 1 === t.which || "touchend" === t.type) && ("function" == typeof e.config.chart.events.click && e.config.chart.events.click(t, i, a),
                        i.ctx.events.fireEvent("click", [t, i, a]))
                    }
                    ), {
                        capture: !1,
                        passive: !0
                    })
                }
                )),
                this.ctx.eventList.forEach((function(i) {
                    e.globals.dom.baseEl.addEventListener(i, t.documentEvent)
                }
                )),
                this.ctx.core.setupBrushHandler()
            }
        }, {
            key: "documentEvent",
            value: function(t) {
                var e = this.w
                  , i = t.target.className;
                if ("click" === t.type) {
                    var a = e.globals.dom.baseEl.querySelector(".apexcharts-menu");
                    a && a.classList.contains("apexcharts-menu-open") && "apexcharts-menu-icon" !== i && a.classList.remove("apexcharts-menu-open")
                }
                e.globals.clientX = "touchmove" === t.type ? t.touches[0].clientX : t.clientX,
                e.globals.clientY = "touchmove" === t.type ? t.touches[0].clientY : t.clientY
            }
        }]),
        t
    }()
      , $ = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w
        }
        return a(t, [{
            key: "setCurrentLocaleValues",
            value: function(t) {
                var e = this.w.config.chart.locales;
                window.Apex.chart && window.Apex.chart.locales && window.Apex.chart.locales.length > 0 && (e = this.w.config.chart.locales.concat(window.Apex.chart.locales));
                var i = e.filter((function(e) {
                    return e.name === t
                }
                ))[0];
                if (!i)
                    throw new Error("Wrong locale name provided. Please make sure you set the correct locale name in options");
                var a = f.extend(A, i);
                this.w.globals.locale = a.options
            }
        }]),
        t
    }()
      , J = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w
        }
        return a(t, [{
            key: "drawAxis",
            value: function(t, e) {
                var i, a, s = this.w.globals, r = this.w.config, n = new G(this.ctx), o = new q(this.ctx);
                s.axisCharts && "radar" !== t && (s.isBarHorizontal ? (a = o.drawYaxisInversed(0),
                i = n.drawXaxisInversed(0),
                s.dom.elGraphical.add(i),
                s.dom.elGraphical.add(a)) : (i = n.drawXaxis(),
                s.dom.elGraphical.add(i),
                r.yaxis.map((function(t, e) {
                    -1 === s.ignoreYAxisIndexes.indexOf(e) && (a = o.drawYaxis(e),
                    s.dom.Paper.add(a))
                }
                ))));
                r.yaxis.map((function(t, e) {
                    -1 === s.ignoreYAxisIndexes.indexOf(e) && o.yAxisTitleRotate(e, t.opposite)
                }
                ))
            }
        }]),
        t
    }()
      , Q = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w
        }
        return a(t, [{
            key: "drawXCrosshairs",
            value: function() {
                var t = this.w
                  , e = new b(this.ctx)
                  , i = new p(this.ctx)
                  , a = t.config.xaxis.crosshairs.fill.gradient
                  , s = t.config.xaxis.crosshairs.dropShadow
                  , r = t.config.xaxis.crosshairs.fill.type
                  , n = a.colorFrom
                  , o = a.colorTo
                  , l = a.opacityFrom
                  , h = a.opacityTo
                  , c = a.stops
                  , d = s.enabled
                  , g = s.left
                  , u = s.top
                  , x = s.blur
                  , m = s.color
                  , v = s.opacity
                  , y = t.config.xaxis.crosshairs.fill.color;
                if (t.config.xaxis.crosshairs.show) {
                    "gradient" === r && (y = e.drawGradient("vertical", n, o, l, h, null, c, null));
                    var w = e.drawRect();
                    1 === t.config.xaxis.crosshairs.width && (w = e.drawLine()),
                    w.attr({
                        class: "apexcharts-xcrosshairs",
                        x: 0,
                        y: 0,
                        y2: t.globals.gridHeight,
                        width: f.isNumber(t.config.xaxis.crosshairs.width) ? t.config.xaxis.crosshairs.width : 0,
                        height: t.globals.gridHeight,
                        fill: y,
                        filter: "none",
                        "fill-opacity": t.config.xaxis.crosshairs.opacity,
                        stroke: t.config.xaxis.crosshairs.stroke.color,
                        "stroke-width": t.config.xaxis.crosshairs.stroke.width,
                        "stroke-dasharray": t.config.xaxis.crosshairs.stroke.dashArray
                    }),
                    d && (w = i.dropShadow(w, {
                        left: g,
                        top: u,
                        blur: x,
                        color: m,
                        opacity: v
                    })),
                    t.globals.dom.elGraphical.add(w)
                }
            }
        }, {
            key: "drawYCrosshairs",
            value: function() {
                var t = this.w
                  , e = new b(this.ctx)
                  , i = t.config.yaxis[0].crosshairs
                  , a = t.globals.barPadForNumericAxis;
                if (t.config.yaxis[0].crosshairs.show) {
                    var s = e.drawLine(-a, 0, t.globals.gridWidth + a, 0, i.stroke.color, i.stroke.dashArray, i.stroke.width);
                    s.attr({
                        class: "apexcharts-ycrosshairs"
                    }),
                    t.globals.dom.elGraphical.add(s)
                }
                var r = e.drawLine(-a, 0, t.globals.gridWidth + a, 0, i.stroke.color, 0, 0);
                r.attr({
                    class: "apexcharts-ycrosshairs-hidden"
                }),
                t.globals.dom.elGraphical.add(r)
            }
        }]),
        t
    }()
      , K = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w
        }
        return a(t, [{
            key: "checkResponsiveConfig",
            value: function(t) {
                var e = this
                  , i = this.w
                  , a = i.config;
                if (0 !== a.responsive.length) {
                    var s = a.responsive.slice();
                    s.sort((function(t, e) {
                        return t.breakpoint > e.breakpoint ? 1 : e.breakpoint > t.breakpoint ? -1 : 0
                    }
                    )).reverse();
                    var r = new D({})
                      , n = function() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}
                          , a = s[0].breakpoint
                          , n = window.innerWidth > 0 ? window.innerWidth : screen.width;
                        if (n > a) {
                            var o = y.extendArrayProps(r, i.globals.initialConfig, i);
                            t = f.extend(o, t),
                            t = f.extend(i.config, t),
                            e.overrideResponsiveOptions(t)
                        } else
                            for (var l = 0; l < s.length; l++)
                                n < s[l].breakpoint && (t = y.extendArrayProps(r, s[l].options, i),
                                t = f.extend(i.config, t),
                                e.overrideResponsiveOptions(t))
                    };
                    if (t) {
                        var o = y.extendArrayProps(r, t, i);
                        o = f.extend(i.config, o),
                        n(o = f.extend(o, t))
                    } else
                        n({})
                }
            }
        }, {
            key: "overrideResponsiveOptions",
            value: function(t) {
                var e = new D(t).init({
                    responsiveOverride: !0
                });
                this.w.config = e
            }
        }]),
        t
    }()
      , tt = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.colors = [],
            this.w = i.w;
            var a = this.w;
            this.isColorFn = !1,
            this.isHeatmapDistributed = "treemap" === a.config.chart.type && a.config.plotOptions.treemap.distributed || "heatmap" === a.config.chart.type && a.config.plotOptions.heatmap.distributed,
            this.isBarDistributed = a.config.plotOptions.bar.distributed && ("bar" === a.config.chart.type || "rangeBar" === a.config.chart.type)
        }
        return a(t, [{
            key: "init",
            value: function() {
                this.setDefaultColors()
            }
        }, {
            key: "setDefaultColors",
            value: function() {
                var t = this
                  , e = this.w
                  , i = new f;
                if (e.globals.dom.elWrap.classList.add("apexcharts-theme-".concat(e.config.theme.mode)),
                void 0 === e.config.colors ? e.globals.colors = this.predefined() : (e.globals.colors = e.config.colors,
                Array.isArray(e.config.colors) && e.config.colors.length > 0 && "function" == typeof e.config.colors[0] && (e.globals.colors = e.config.series.map((function(i, a) {
                    var s = e.config.colors[a];
                    return s || (s = e.config.colors[0]),
                    "function" == typeof s ? (t.isColorFn = !0,
                    s({
                        value: e.globals.axisCharts ? e.globals.series[a][0] ? e.globals.series[a][0] : 0 : e.globals.series[a],
                        seriesIndex: a,
                        dataPointIndex: a,
                        w: e
                    })) : s
                }
                )))),
                e.globals.seriesColors.map((function(t, i) {
                    t && (e.globals.colors[i] = t)
                }
                )),
                e.config.theme.monochrome.enabled) {
                    var a = []
                      , s = e.globals.series.length;
                    (this.isBarDistributed || this.isHeatmapDistributed) && (s = e.globals.series[0].length * e.globals.series.length);
                    for (var r = e.config.theme.monochrome.color, n = 1 / (s / e.config.theme.monochrome.shadeIntensity), o = e.config.theme.monochrome.shadeTo, l = 0, h = 0; h < s; h++) {
                        var c = void 0;
                        "dark" === o ? (c = i.shadeColor(-1 * l, r),
                        l += n) : (c = i.shadeColor(l, r),
                        l += n),
                        a.push(c)
                    }
                    e.globals.colors = a.slice()
                }
                var d = e.globals.colors.slice();
                this.pushExtraColors(e.globals.colors);
                ["fill", "stroke"].forEach((function(i) {
                    void 0 === e.config[i].colors ? e.globals[i].colors = t.isColorFn ? e.config.colors : d : e.globals[i].colors = e.config[i].colors.slice(),
                    t.pushExtraColors(e.globals[i].colors)
                }
                )),
                void 0 === e.config.dataLabels.style.colors ? e.globals.dataLabels.style.colors = d : e.globals.dataLabels.style.colors = e.config.dataLabels.style.colors.slice(),
                this.pushExtraColors(e.globals.dataLabels.style.colors, 50),
                void 0 === e.config.plotOptions.radar.polygons.fill.colors ? e.globals.radarPolygons.fill.colors = ["dark" === e.config.theme.mode ? "#424242" : "#fff"] : e.globals.radarPolygons.fill.colors = e.config.plotOptions.radar.polygons.fill.colors.slice(),
                this.pushExtraColors(e.globals.radarPolygons.fill.colors, 20),
                void 0 === e.config.markers.colors ? e.globals.markers.colors = d : e.globals.markers.colors = e.config.markers.colors.slice(),
                this.pushExtraColors(e.globals.markers.colors)
            }
        }, {
            key: "pushExtraColors",
            value: function(t, e) {
                var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null
                  , a = this.w
                  , s = e || a.globals.series.length;
                if (null === i && (i = this.isBarDistributed || this.isHeatmapDistributed || "heatmap" === a.config.chart.type && a.config.plotOptions.heatmap.colorScale.inverse),
                i && a.globals.series.length && (s = a.globals.series[a.globals.maxValsInArrayIndex].length * a.globals.series.length),
                t.length < s)
                    for (var r = s - t.length, n = 0; n < r; n++)
                        t.push(t[n])
            }
        }, {
            key: "updateThemeOptions",
            value: function(t) {
                t.chart = t.chart || {},
                t.tooltip = t.tooltip || {};
                var e = t.theme.mode || "light"
                  , i = t.theme.palette ? t.theme.palette : "dark" === e ? "palette4" : "palette1"
                  , a = t.chart.foreColor ? t.chart.foreColor : "dark" === e ? "#f6f7f8" : "#373d3f";
                return t.tooltip.theme = e,
                t.chart.foreColor = a,
                t.theme.palette = i,
                t
            }
        }, {
            key: "predefined",
            value: function() {
                switch (this.w.config.theme.palette) {
                case "palette1":
                    this.colors = ["#008FFB", "#00E396", "#FEB019", "#FF4560", "#775DD0"];
                    break;
                case "palette2":
                    this.colors = ["#3f51b5", "#03a9f4", "#4caf50", "#f9ce1d", "#FF9800"];
                    break;
                case "palette3":
                    this.colors = ["#33b2df", "#546E7A", "#d4526e", "#13d8aa", "#A5978B"];
                    break;
                case "palette4":
                    this.colors = ["#4ecdc4", "#c7f464", "#81D4FA", "#fd6a6a", "#546E7A"];
                    break;
                case "palette5":
                    this.colors = ["#2b908f", "#f9a3a4", "#90ee7e", "#fa4443", "#69d2e7"];
                    break;
                case "palette6":
                    this.colors = ["#449DD1", "#F86624", "#EA3546", "#662E9B", "#C5D86D"];
                    break;
                case "palette7":
                    this.colors = ["#D7263D", "#1B998B", "#2E294E", "#F46036", "#E2C044"];
                    break;
                case "palette8":
                    this.colors = ["#662E9B", "#F86624", "#F9C80E", "#EA3546", "#43BCCD"];
                    break;
                case "palette9":
                    this.colors = ["#5C4742", "#A5978B", "#8D5B4C", "#5A2A27", "#C4BBAF"];
                    break;
                case "palette10":
                    this.colors = ["#A300D6", "#7D02EB", "#5653FE", "#2983FF", "#00B1F2"];
                    break;
                default:
                    this.colors = ["#008FFB", "#00E396", "#FEB019", "#FF4560", "#775DD0"]
                }
                return this.colors
            }
        }]),
        t
    }()
      , et = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w
        }
        return a(t, [{
            key: "draw",
            value: function() {
                this.drawTitleSubtitle("title"),
                this.drawTitleSubtitle("subtitle")
            }
        }, {
            key: "drawTitleSubtitle",
            value: function(t) {
                var e = this.w
                  , i = "title" === t ? e.config.title : e.config.subtitle
                  , a = e.globals.svgWidth / 2
                  , s = i.offsetY
                  , r = "middle";
                if ("left" === i.align ? (a = 10,
                r = "start") : "right" === i.align && (a = e.globals.svgWidth - 10,
                r = "end"),
                a += i.offsetX,
                s = s + parseInt(i.style.fontSize, 10) + i.margin / 2,
                void 0 !== i.text) {
                    var n = new b(this.ctx).drawText({
                        x: a,
                        y: s,
                        text: i.text,
                        textAnchor: r,
                        fontSize: i.style.fontSize,
                        fontFamily: i.style.fontFamily,
                        fontWeight: i.style.fontWeight,
                        foreColor: i.style.color,
                        opacity: 1
                    });
                    n.node.setAttribute("class", "apexcharts-".concat(t, "-text")),
                    e.globals.dom.Paper.add(n)
                }
            }
        }]),
        t
    }()
      , it = function() {
        function t(i) {
            e(this, t),
            this.w = i.w,
            this.dCtx = i
        }
        return a(t, [{
            key: "getTitleSubtitleCoords",
            value: function(t) {
                var e = this.w
                  , i = 0
                  , a = 0
                  , s = "title" === t ? e.config.title.floating : e.config.subtitle.floating
                  , r = e.globals.dom.baseEl.querySelector(".apexcharts-".concat(t, "-text"));
                if (null !== r && !s) {
                    var n = r.getBoundingClientRect();
                    i = n.width,
                    a = e.globals.axisCharts ? n.height + 5 : n.height
                }
                return {
                    width: i,
                    height: a
                }
            }
        }, {
            key: "getLegendsRect",
            value: function() {
                var t = this.w
                  , e = t.globals.dom.baseEl.querySelector(".apexcharts-legend");
                t.config.legend.height || "top" !== t.config.legend.position && "bottom" !== t.config.legend.position || (e.style.maxHeight = t.globals.svgHeight / 2 + "px");
                var i = Object.assign({}, f.getBoundingClientRect(e));
                return null !== e && !t.config.legend.floating && t.config.legend.show ? this.dCtx.lgRect = {
                    x: i.x,
                    y: i.y,
                    height: i.height,
                    width: 0 === i.height ? 0 : i.width
                } : this.dCtx.lgRect = {
                    x: 0,
                    y: 0,
                    height: 0,
                    width: 0
                },
                "left" !== t.config.legend.position && "right" !== t.config.legend.position || 1.5 * this.dCtx.lgRect.width > t.globals.svgWidth && (this.dCtx.lgRect.width = t.globals.svgWidth / 1.5),
                this.dCtx.lgRect
            }
        }, {
            key: "getLargestStringFromMultiArr",
            value: function(t, e) {
                var i = t;
                if (this.w.globals.isMultiLineX) {
                    var a = e.map((function(t, e) {
                        return Array.isArray(t) ? t.length : 1
                    }
                    ))
                      , s = Math.max.apply(Math, g(a));
                    i = e[a.indexOf(s)]
                }
                return i
            }
        }]),
        t
    }()
      , at = function() {
        function t(i) {
            e(this, t),
            this.w = i.w,
            this.dCtx = i
        }
        return a(t, [{
            key: "getxAxisLabelsCoords",
            value: function() {
                var t, e = this.w, i = e.globals.labels.slice();
                if (e.config.xaxis.convertedCatToNumeric && 0 === i.length && (i = e.globals.categoryLabels),
                e.globals.timescaleLabels.length > 0) {
                    var a = this.getxAxisTimeScaleLabelsCoords();
                    t = {
                        width: a.width,
                        height: a.height
                    },
                    e.globals.rotateXLabels = !1
                } else {
                    this.dCtx.lgWidthForSideLegends = "left" !== e.config.legend.position && "right" !== e.config.legend.position || e.config.legend.floating ? 0 : this.dCtx.lgRect.width;
                    var s = e.globals.xLabelFormatter
                      , r = f.getLargestStringFromArr(i)
                      , n = this.dCtx.dimHelpers.getLargestStringFromMultiArr(r, i);
                    e.globals.isBarHorizontal && (n = r = e.globals.yAxisScale[0].result.reduce((function(t, e) {
                        return t.length > e.length ? t : e
                    }
                    ), 0));
                    var o = new W(this.dCtx.ctx)
                      , l = r;
                    r = o.xLabelFormat(s, r, l, {
                        i: void 0,
                        dateFormatter: new Y(this.dCtx.ctx).formatDate,
                        w: e
                    }),
                    n = o.xLabelFormat(s, n, l, {
                        i: void 0,
                        dateFormatter: new Y(this.dCtx.ctx).formatDate,
                        w: e
                    }),
                    (e.config.xaxis.convertedCatToNumeric && void 0 === r || "" === String(r).trim()) && (n = r = "1");
                    var h = new b(this.dCtx.ctx)
                      , c = h.getTextRects(r, e.config.xaxis.labels.style.fontSize)
                      , d = c;
                    if (r !== n && (d = h.getTextRects(n, e.config.xaxis.labels.style.fontSize)),
                    (t = {
                        width: c.width >= d.width ? c.width : d.width,
                        height: c.height >= d.height ? c.height : d.height
                    }).width * i.length > e.globals.svgWidth - this.dCtx.lgWidthForSideLegends - this.dCtx.yAxisWidth - this.dCtx.gridPad.left - this.dCtx.gridPad.right && 0 !== e.config.xaxis.labels.rotate || e.config.xaxis.labels.rotateAlways) {
                        if (!e.globals.isBarHorizontal) {
                            e.globals.rotateXLabels = !0;
                            var g = function(t) {
                                return h.getTextRects(t, e.config.xaxis.labels.style.fontSize, e.config.xaxis.labels.style.fontFamily, "rotate(".concat(e.config.xaxis.labels.rotate, " 0 0)"), !1)
                            };
                            c = g(r),
                            r !== n && (d = g(n)),
                            t.height = (c.height > d.height ? c.height : d.height) / 1.5,
                            t.width = c.width > d.width ? c.width : d.width
                        }
                    } else
                        e.globals.rotateXLabels = !1
                }
                return e.config.xaxis.labels.show || (t = {
                    width: 0,
                    height: 0
                }),
                {
                    width: t.width,
                    height: t.height
                }
            }
        }, {
            key: "getxAxisTitleCoords",
            value: function() {
                var t = this.w
                  , e = 0
                  , i = 0;
                if (void 0 !== t.config.xaxis.title.text) {
                    var a = new b(this.dCtx.ctx).getTextRects(t.config.xaxis.title.text, t.config.xaxis.title.style.fontSize);
                    e = a.width,
                    i = a.height
                }
                return {
                    width: e,
                    height: i
                }
            }
        }, {
            key: "getxAxisTimeScaleLabelsCoords",
            value: function() {
                var t, e = this.w;
                this.dCtx.timescaleLabels = e.globals.timescaleLabels.slice();
                var i = this.dCtx.timescaleLabels.map((function(t) {
                    return t.value
                }
                ))
                  , a = i.reduce((function(t, e) {
                    return void 0 === t ? (console.error("You have possibly supplied invalid Date format. Please supply a valid JavaScript Date"),
                    0) : t.length > e.length ? t : e
                }
                ), 0);
                return 1.05 * (t = new b(this.dCtx.ctx).getTextRects(a, e.config.xaxis.labels.style.fontSize)).width * i.length > e.globals.gridWidth && 0 !== e.config.xaxis.labels.rotate && (e.globals.overlappingXLabels = !0),
                t
            }
        }, {
            key: "additionalPaddingXLabels",
            value: function(t) {
                var e = this
                  , i = this.w
                  , a = i.globals
                  , s = i.config
                  , r = s.xaxis.type
                  , n = t.width;
                a.skipLastTimelinelabel = !1,
                a.skipFirstTimelinelabel = !1;
                var o = i.config.yaxis[0].opposite && i.globals.isBarHorizontal
                  , l = function(t, s) {
                    (function(t) {
                        return -1 !== a.collapsedSeriesIndices.indexOf(t)
                    }
                    )(s) || function(t) {
                        if (e.dCtx.timescaleLabels && e.dCtx.timescaleLabels.length) {
                            var s = e.dCtx.timescaleLabels[0]
                              , o = e.dCtx.timescaleLabels[e.dCtx.timescaleLabels.length - 1].position + n / 1.75 - e.dCtx.yAxisWidthRight
                              , l = s.position - n / 1.75 + e.dCtx.yAxisWidthLeft;
                            o > a.svgWidth - a.translateX && (a.skipLastTimelinelabel = !0),
                            l < 0 && (a.skipFirstTimelinelabel = !0)
                        } else
                            "datetime" === r ? e.dCtx.gridPad.right < n && !a.rotateXLabels && (a.skipLastTimelinelabel = !0) : "datetime" !== r && e.dCtx.gridPad.right < n / 2 - e.dCtx.yAxisWidthRight && !a.rotateXLabels && ("between" !== i.config.xaxis.tickPlacement || i.globals.isBarHorizontal) && (e.dCtx.xPadRight = n / 2 + 1)
                    }()
                };
                s.yaxis.forEach((function(t, i) {
                    o ? (e.dCtx.gridPad.left < n && (e.dCtx.xPadLeft = n / 2 + 1),
                    e.dCtx.xPadRight = n / 2 + 1) : l(0, i)
                }
                ))
            }
        }]),
        t
    }()
      , st = function() {
        function t(i) {
            e(this, t),
            this.w = i.w,
            this.dCtx = i
        }
        return a(t, [{
            key: "getyAxisLabelsCoords",
            value: function() {
                var t = this
                  , e = this.w
                  , i = []
                  , a = 10
                  , s = new B(this.dCtx.ctx);
                return e.config.yaxis.map((function(r, n) {
                    var o = e.globals.yAxisScale[n];
                    if (!s.isYAxisHidden(n) && r.labels.show && o.result.length) {
                        var l = e.globals.yLabelFormatters[n]
                          , h = String(o.niceMin).length > String(o.niceMax).length ? o.niceMin : o.niceMax
                          , c = l(h, {
                            seriesIndex: n,
                            dataPointIndex: -1,
                            w: e
                        })
                          , d = c;
                        if (void 0 !== c && 0 !== c.length || (c = h),
                        e.globals.isBarHorizontal) {
                            a = 0;
                            var g = e.globals.labels.slice();
                            c = l(c = f.getLargestStringFromArr(g), {
                                seriesIndex: n,
                                dataPointIndex: -1,
                                w: e
                            }),
                            d = t.dCtx.dimHelpers.getLargestStringFromMultiArr(c, g)
                        }
                        var u = new b(t.dCtx.ctx)
                          , p = u.getTextRects(c, r.labels.style.fontSize)
                          , x = p;
                        c !== d && (x = u.getTextRects(d, r.labels.style.fontSize)),
                        i.push({
                            width: (x.width > p.width ? x.width : p.width) + a,
                            height: x.height > p.height ? x.height : p.height
                        })
                    } else
                        i.push({
                            width: 0,
                            height: 0
                        })
                }
                )),
                i
            }
        }, {
            key: "getyAxisTitleCoords",
            value: function() {
                var t = this
                  , e = this.w
                  , i = [];
                return e.config.yaxis.map((function(e, a) {
                    if (e.show && void 0 !== e.title.text) {
                        var s = new b(t.dCtx.ctx).getTextRects(e.title.text, e.title.style.fontSize, e.title.style.fontFamily, "rotate(-90 0 0)", !1);
                        i.push({
                            width: s.width,
                            height: s.height
                        })
                    } else
                        i.push({
                            width: 0,
                            height: 0
                        })
                }
                )),
                i
            }
        }, {
            key: "getTotalYAxisWidth",
            value: function() {
                var t = this.w
                  , e = 0
                  , i = 0
                  , a = 0
                  , s = t.globals.yAxisScale.length > 1 ? 10 : 0
                  , r = new B(this.dCtx.ctx)
                  , n = function(n, o) {
                    var l = t.config.yaxis[o].floating
                      , h = 0;
                    n.width > 0 && !l ? (h = n.width + s,
                    function(e) {
                        return t.globals.ignoreYAxisIndexes.indexOf(e) > -1
                    }(o) && (h = h - n.width - s)) : h = l || r.isYAxisHidden(o) ? 0 : 5,
                    t.config.yaxis[o].opposite ? a += h : i += h,
                    e += h
                };
                return t.globals.yLabelsCoords.map((function(t, e) {
                    n(t, e)
                }
                )),
                t.globals.yTitleCoords.map((function(t, e) {
                    n(t, e)
                }
                )),
                t.globals.isBarHorizontal && (e = t.globals.yLabelsCoords[0].width + t.globals.yTitleCoords[0].width + 15),
                this.dCtx.yAxisWidthLeft = i,
                this.dCtx.yAxisWidthRight = a,
                e
            }
        }]),
        t
    }()
      , rt = function() {
        function t(i) {
            e(this, t),
            this.w = i.w,
            this.dCtx = i
        }
        return a(t, [{
            key: "gridPadForColumnsInNumericAxis",
            value: function(t) {
                var e = this.w;
                if (e.globals.noData || e.globals.allSeriesCollapsed)
                    return 0;
                var i = e.config.chart.type
                  , a = 0
                  , s = "bar" === i || "rangeBar" === i ? e.config.series.length : 1;
                if (e.globals.comboBarCount > 0 && (s = e.globals.comboBarCount),
                e.globals.collapsedSeries.forEach((function(t) {
                    "bar" !== t.type && "rangeBar" !== t.type || (s -= 1)
                }
                )),
                e.config.chart.stacked && (s = 1),
                ("bar" === i || "rangeBar" === i || e.globals.comboBarCount > 0) && e.globals.isXNumeric && !e.globals.isBarHorizontal && s > 0) {
                    var r, n, o = Math.abs(e.globals.initialMaxX - e.globals.initialMinX);
                    o <= 3 && (o = e.globals.dataPoints),
                    r = o / t,
                    e.globals.minXDiff && e.globals.minXDiff / r > 0 && (n = e.globals.minXDiff / r),
                    n > t / 2 && (n /= 2),
                    (a = n / s * parseInt(e.config.plotOptions.bar.columnWidth, 10) / 100) < 1 && (a = 1),
                    a = a / (s > 1 ? 1 : 1.5) + 5,
                    e.globals.barPadForNumericAxis = a
                }
                return a
            }
        }, {
            key: "gridPadFortitleSubtitle",
            value: function() {
                var t = this
                  , e = this.w
                  , i = e.globals
                  , a = this.dCtx.isSparkline || !e.globals.axisCharts ? 0 : 10;
                ["title", "subtitle"].forEach((function(i) {
                    void 0 !== e.config[i].text ? a += e.config[i].margin : a += t.dCtx.isSparkline || !e.globals.axisCharts ? 0 : 5
                }
                )),
                !e.config.legend.show || "bottom" !== e.config.legend.position || e.config.legend.floating || e.globals.axisCharts || (a += 10);
                var s = this.dCtx.dimHelpers.getTitleSubtitleCoords("title")
                  , r = this.dCtx.dimHelpers.getTitleSubtitleCoords("subtitle");
                i.gridHeight = i.gridHeight - s.height - r.height - a,
                i.translateY = i.translateY + s.height + r.height + a
            }
        }, {
            key: "setGridXPosForDualYAxis",
            value: function(t, e) {
                var i = this.w
                  , a = new B(this.dCtx.ctx);
                i.config.yaxis.map((function(s, r) {
                    -1 !== i.globals.ignoreYAxisIndexes.indexOf(r) || s.floating || a.isYAxisHidden(r) || (s.opposite && (i.globals.translateX = i.globals.translateX - (e[r].width + t[r].width) - parseInt(i.config.yaxis[r].labels.style.fontSize, 10) / 1.2 - 12),
                    i.globals.translateX < 2 && (i.globals.translateX = 2))
                }
                ))
            }
        }]),
        t
    }()
      , nt = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w,
            this.lgRect = {},
            this.yAxisWidth = 0,
            this.yAxisWidthLeft = 0,
            this.yAxisWidthRight = 0,
            this.xAxisHeight = 0,
            this.isSparkline = this.w.config.chart.sparkline.enabled,
            this.dimHelpers = new it(this),
            this.dimYAxis = new st(this),
            this.dimXAxis = new at(this),
            this.dimGrid = new rt(this),
            this.lgWidthForSideLegends = 0,
            this.gridPad = this.w.config.grid.padding,
            this.xPadRight = 0,
            this.xPadLeft = 0
        }
        return a(t, [{
            key: "plotCoords",
            value: function() {
                var t = this.w.globals;
                this.lgRect = this.dimHelpers.getLegendsRect(),
                t.axisCharts ? this.setDimensionsForAxisCharts() : this.setDimensionsForNonAxisCharts(),
                this.dimGrid.gridPadFortitleSubtitle(),
                t.gridHeight = t.gridHeight - this.gridPad.top - this.gridPad.bottom,
                t.gridWidth = t.gridWidth - this.gridPad.left - this.gridPad.right - this.xPadRight - this.xPadLeft;
                var e = this.dimGrid.gridPadForColumnsInNumericAxis(t.gridWidth);
                t.gridWidth = t.gridWidth - 2 * e,
                t.translateX = t.translateX + this.gridPad.left + this.xPadLeft + (e > 0 ? e + 4 : 0),
                t.translateY = t.translateY + this.gridPad.top
            }
        }, {
            key: "setDimensionsForAxisCharts",
            value: function() {
                var t = this
                  , e = this.w
                  , i = e.globals
                  , a = this.dimYAxis.getyAxisLabelsCoords()
                  , s = this.dimYAxis.getyAxisTitleCoords();
                e.globals.yLabelsCoords = [],
                e.globals.yTitleCoords = [],
                e.config.yaxis.map((function(t, i) {
                    e.globals.yLabelsCoords.push({
                        width: a[i].width,
                        index: i
                    }),
                    e.globals.yTitleCoords.push({
                        width: s[i].width,
                        index: i
                    })
                }
                )),
                this.yAxisWidth = this.dimYAxis.getTotalYAxisWidth();
                var r = this.dimXAxis.getxAxisLabelsCoords()
                  , n = this.dimXAxis.getxAxisTitleCoords();
                this.conditionalChecksForAxisCoords(r, n),
                i.translateXAxisY = e.globals.rotateXLabels ? this.xAxisHeight / 8 : -4,
                i.translateXAxisX = e.globals.rotateXLabels && e.globals.isXNumeric && e.config.xaxis.labels.rotate <= -45 ? -this.xAxisWidth / 4 : 0,
                e.globals.isBarHorizontal && (i.rotateXLabels = !1,
                i.translateXAxisY = parseInt(e.config.xaxis.labels.style.fontSize, 10) / 1.5 * -1),
                i.translateXAxisY = i.translateXAxisY + e.config.xaxis.labels.offsetY,
                i.translateXAxisX = i.translateXAxisX + e.config.xaxis.labels.offsetX;
                var o = this.yAxisWidth
                  , l = this.xAxisHeight;
                i.xAxisLabelsHeight = this.xAxisHeight,
                i.xAxisLabelsWidth = this.xAxisWidth,
                i.xAxisHeight = this.xAxisHeight;
                var h = 10;
                ("radar" === e.config.chart.type || this.isSparkline) && (o = 0,
                l = i.goldenPadding),
                this.isSparkline && (this.lgRect = {
                    height: 0,
                    width: 0
                }),
                (this.isSparkline || "treemap" === e.config.chart.type) && (o = 0,
                l = 0,
                h = 0),
                this.isSparkline || this.dimXAxis.additionalPaddingXLabels(r);
                var c = function() {
                    i.translateX = o,
                    i.gridHeight = i.svgHeight - t.lgRect.height - l - (t.isSparkline || "treemap" === e.config.chart.type ? 0 : e.globals.rotateXLabels ? 10 : 15),
                    i.gridWidth = i.svgWidth - o
                };
                switch ("top" === e.config.xaxis.position && (h = i.xAxisHeight - e.config.xaxis.axisTicks.height - 5),
                e.config.legend.position) {
                case "bottom":
                    i.translateY = h,
                    c();
                    break;
                case "top":
                    i.translateY = this.lgRect.height + h,
                    c();
                    break;
                case "left":
                    i.translateY = h,
                    i.translateX = this.lgRect.width + o,
                    i.gridHeight = i.svgHeight - l - 12,
                    i.gridWidth = i.svgWidth - this.lgRect.width - o;
                    break;
                case "right":
                    i.translateY = h,
                    i.translateX = o,
                    i.gridHeight = i.svgHeight - l - 12,
                    i.gridWidth = i.svgWidth - this.lgRect.width - o - 5;
                    break;
                default:
                    throw new Error("Legend position not supported")
                }
                this.dimGrid.setGridXPosForDualYAxis(s, a),
                new q(this.ctx).setYAxisXPosition(a, s)
            }
        }, {
            key: "setDimensionsForNonAxisCharts",
            value: function() {
                var t = this.w
                  , e = t.globals
                  , i = t.config
                  , a = 0;
                t.config.legend.show && !t.config.legend.floating && (a = 20);
                var s = "pie" === i.chart.type || "polarArea" === i.chart.type || "donut" === i.chart.type ? "pie" : "radialBar"
                  , r = i.plotOptions[s].offsetY
                  , n = i.plotOptions[s].offsetX;
                if (!i.legend.show || i.legend.floating)
                    return e.gridHeight = e.svgHeight - i.grid.padding.left + i.grid.padding.right,
                    e.gridWidth = e.gridHeight,
                    e.translateY = r,
                    void (e.translateX = n + (e.svgWidth - e.gridWidth) / 2);
                switch (i.legend.position) {
                case "bottom":
                    e.gridHeight = e.svgHeight - this.lgRect.height - e.goldenPadding,
                    e.gridWidth = e.svgWidth,
                    e.translateY = r - 10,
                    e.translateX = n + (e.svgWidth - e.gridWidth) / 2;
                    break;
                case "top":
                    e.gridHeight = e.svgHeight - this.lgRect.height - e.goldenPadding,
                    e.gridWidth = e.svgWidth,
                    e.translateY = this.lgRect.height + r + 10,
                    e.translateX = n + (e.svgWidth - e.gridWidth) / 2;
                    break;
                case "left":
                    e.gridWidth = e.svgWidth - this.lgRect.width - a,
                    e.gridHeight = "auto" !== i.chart.height ? e.svgHeight : e.gridWidth,
                    e.translateY = r,
                    e.translateX = n + this.lgRect.width + a;
                    break;
                case "right":
                    e.gridWidth = e.svgWidth - this.lgRect.width - a - 5,
                    e.gridHeight = "auto" !== i.chart.height ? e.svgHeight : e.gridWidth,
                    e.translateY = r,
                    e.translateX = n + 10;
                    break;
                default:
                    throw new Error("Legend position not supported")
                }
            }
        }, {
            key: "conditionalChecksForAxisCoords",
            value: function(t, e) {
                var i = this.w;
                this.xAxisHeight = (t.height + e.height) * (i.globals.isMultiLineX ? 1.2 : i.globals.LINE_HEIGHT_RATIO) + (i.globals.rotateXLabels ? 22 : 10),
                this.xAxisWidth = t.width,
                this.xAxisHeight - e.height > i.config.xaxis.labels.maxHeight && (this.xAxisHeight = i.config.xaxis.labels.maxHeight),
                i.config.xaxis.labels.minHeight && this.xAxisHeight < i.config.xaxis.labels.minHeight && (this.xAxisHeight = i.config.xaxis.labels.minHeight),
                i.config.xaxis.floating && (this.xAxisHeight = 0);
                var a = 0
                  , s = 0;
                i.config.yaxis.forEach((function(t) {
                    a += t.labels.minWidth,
                    s += t.labels.maxWidth
                }
                )),
                this.yAxisWidth < a && (this.yAxisWidth = a),
                this.yAxisWidth > s && (this.yAxisWidth = s)
            }
        }]),
        t
    }()
      , ot = function() {
        function t(i) {
            e(this, t),
            this.w = i.w,
            this.lgCtx = i
        }
        return a(t, [{
            key: "getLegendStyles",
            value: function() {
                var t = document.createElement("style");
                t.setAttribute("type", "text/css");
                var e = document.createTextNode("\t\n    \t\n      .apexcharts-legend {\t\n        display: flex;\t\n        overflow: auto;\t\n        padding: 0 10px;\t\n      }\t\n      .apexcharts-legend.position-bottom, .apexcharts-legend.position-top {\t\n        flex-wrap: wrap\t\n      }\t\n      .apexcharts-legend.position-right, .apexcharts-legend.position-left {\t\n        flex-direction: column;\t\n        bottom: 0;\t\n      }\t\n      .apexcharts-legend.position-bottom.apexcharts-align-left, .apexcharts-legend.position-top.apexcharts-align-left, .apexcharts-legend.position-right, .apexcharts-legend.position-left {\t\n        justify-content: flex-start;\t\n      }\t\n      .apexcharts-legend.position-bottom.apexcharts-align-center, .apexcharts-legend.position-top.apexcharts-align-center {\t\n        justify-content: center;  \t\n      }\t\n      .apexcharts-legend.position-bottom.apexcharts-align-right, .apexcharts-legend.position-top.apexcharts-align-right {\t\n        justify-content: flex-end;\t\n      }\t\n      .apexcharts-legend-series {\t\n        cursor: pointer;\t\n        line-height: normal;\t\n      }\t\n      .apexcharts-legend.position-bottom .apexcharts-legend-series, .apexcharts-legend.position-top .apexcharts-legend-series{\t\n        display: flex;\t\n        align-items: center;\t\n      }\t\n      .apexcharts-legend-text {\t\n        position: relative;\t\n        font-size: 14px;\t\n      }\t\n      .apexcharts-legend-text *, .apexcharts-legend-marker * {\t\n        pointer-events: none;\t\n      }\t\n      .apexcharts-legend-marker {\t\n        position: relative;\t\n        display: inline-block;\t\n        cursor: pointer;\t\n        margin-right: 3px;\t\n        border-style: solid;\n      }\t\n      \t\n      .apexcharts-legend.apexcharts-align-right .apexcharts-legend-series, .apexcharts-legend.apexcharts-align-left .apexcharts-legend-series{\t\n        display: inline-block;\t\n      }\t\n      .apexcharts-legend-series.apexcharts-no-click {\t\n        cursor: auto;\t\n      }\t\n      .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series {\t\n        display: none !important;\t\n      }\t\n      .apexcharts-inactive-legend {\t\n        opacity: 0.45;\t\n      }");
                return t.appendChild(e),
                t
            }
        }, {
            key: "getLegendBBox",
            value: function() {
                var t = this.w.globals.dom.baseEl.querySelector(".apexcharts-legend").getBoundingClientRect()
                  , e = t.width;
                return {
                    clwh: t.height,
                    clww: e
                }
            }
        }, {
            key: "appendToForeignObject",
            value: function() {
                var t = this.w.globals;
                t.dom.elLegendForeign = document.createElementNS(t.SVGNS, "foreignObject");
                var e = t.dom.elLegendForeign;
                e.setAttribute("x", 0),
                e.setAttribute("y", 0),
                e.setAttribute("width", t.svgWidth),
                e.setAttribute("height", t.svgHeight),
                t.dom.elLegendWrap.setAttribute("xmlns", "http://www.w3.org/1999/xhtml"),
                e.appendChild(t.dom.elLegendWrap),
                e.appendChild(this.getLegendStyles()),
                t.dom.Paper.node.insertBefore(e, t.dom.elGraphical.node)
            }
        }, {
            key: "toggleDataSeries",
            value: function(t, e) {
                var i = this
                  , a = this.w;
                if (a.globals.axisCharts || "radialBar" === a.config.chart.type) {
                    a.globals.resized = !0;
                    var s = null
                      , r = null;
                    if (a.globals.risingSeries = [],
                    a.globals.axisCharts ? (s = a.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(t, "']")),
                    r = parseInt(s.getAttribute("data:realIndex"), 10)) : (s = a.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(t + 1, "']")),
                    r = parseInt(s.getAttribute("rel"), 10) - 1),
                    e)
                        [{
                            cs: a.globals.collapsedSeries,
                            csi: a.globals.collapsedSeriesIndices
                        }, {
                            cs: a.globals.ancillaryCollapsedSeries,
                            csi: a.globals.ancillaryCollapsedSeriesIndices
                        }].forEach((function(t) {
                            i.riseCollapsedSeries(t.cs, t.csi, r)
                        }
                        ));
                    else
                        this.hideSeries({
                            seriesEl: s,
                            realIndex: r
                        })
                } else {
                    var n = a.globals.dom.Paper.select(" .apexcharts-series[rel='".concat(t + 1, "'] path"))
                      , o = a.config.chart.type;
                    if ("pie" === o || "polarArea" === o || "donut" === o) {
                        var l = a.config.plotOptions.pie.donut.labels;
                        new b(this.lgCtx.ctx).pathMouseDown(n.members[0], null),
                        this.lgCtx.ctx.pie.printDataLabelsInner(n.members[0].node, l)
                    }
                    n.fire("click")
                }
            }
        }, {
            key: "hideSeries",
            value: function(t) {
                var e = t.seriesEl
                  , i = t.realIndex
                  , a = this.w
                  , s = f.clone(a.config.series);
                if (a.globals.axisCharts) {
                    var r = !1;
                    if (a.config.yaxis[i] && a.config.yaxis[i].show && a.config.yaxis[i].showAlways && (r = !0,
                    a.globals.ancillaryCollapsedSeriesIndices.indexOf(i) < 0 && (a.globals.ancillaryCollapsedSeries.push({
                        index: i,
                        data: s[i].data.slice(),
                        type: e.parentNode.className.baseVal.split("-")[1]
                    }),
                    a.globals.ancillaryCollapsedSeriesIndices.push(i))),
                    !r) {
                        a.globals.collapsedSeries.push({
                            index: i,
                            data: s[i].data.slice(),
                            type: e.parentNode.className.baseVal.split("-")[1]
                        }),
                        a.globals.collapsedSeriesIndices.push(i);
                        var n = a.globals.risingSeries.indexOf(i);
                        a.globals.risingSeries.splice(n, 1)
                    }
                } else
                    a.globals.collapsedSeries.push({
                        index: i,
                        data: s[i]
                    }),
                    a.globals.collapsedSeriesIndices.push(i);
                for (var o = e.childNodes, l = 0; l < o.length; l++)
                    o[l].classList.contains("apexcharts-series-markers-wrap") && (o[l].classList.contains("apexcharts-hide") ? o[l].classList.remove("apexcharts-hide") : o[l].classList.add("apexcharts-hide"));
                a.globals.allSeriesCollapsed = a.globals.collapsedSeries.length === a.config.series.length,
                s = this._getSeriesBasedOnCollapsedState(s),
                this.lgCtx.ctx.updateHelpers._updateSeries(s, a.config.chart.animations.dynamicAnimation.enabled)
            }
        }, {
            key: "riseCollapsedSeries",
            value: function(t, e, i) {
                var a = this.w
                  , s = f.clone(a.config.series);
                if (t.length > 0) {
                    for (var r = 0; r < t.length; r++)
                        t[r].index === i && (a.globals.axisCharts ? (s[i].data = t[r].data.slice(),
                        t.splice(r, 1),
                        e.splice(r, 1),
                        a.globals.risingSeries.push(i)) : (s[i] = t[r].data,
                        t.splice(r, 1),
                        e.splice(r, 1),
                        a.globals.risingSeries.push(i)));
                    s = this._getSeriesBasedOnCollapsedState(s),
                    this.lgCtx.ctx.updateHelpers._updateSeries(s, a.config.chart.animations.dynamicAnimation.enabled)
                }
            }
        }, {
            key: "_getSeriesBasedOnCollapsedState",
            value: function(t) {
                var e = this.w;
                return e.globals.axisCharts ? t.forEach((function(i, a) {
                    e.globals.collapsedSeriesIndices.indexOf(a) > -1 && (t[a].data = [])
                }
                )) : t.forEach((function(i, a) {
                    e.globals.collapsedSeriesIndices.indexOf(a) > -1 && (t[a] = 0)
                }
                )),
                t
            }
        }]),
        t
    }()
      , lt = function() {
        function t(i, a) {
            e(this, t),
            this.ctx = i,
            this.w = i.w,
            this.onLegendClick = this.onLegendClick.bind(this),
            this.onLegendHovered = this.onLegendHovered.bind(this),
            this.isBarsDistributed = "bar" === this.w.config.chart.type && this.w.config.plotOptions.bar.distributed && 1 === this.w.config.series.length,
            this.legendHelpers = new ot(this)
        }
        return a(t, [{
            key: "init",
            value: function() {
                var t = this.w
                  , e = t.globals
                  , i = t.config;
                if ((i.legend.showForSingleSeries && 1 === e.series.length || this.isBarsDistributed || e.series.length > 1 || !e.axisCharts) && i.legend.show) {
                    for (; e.dom.elLegendWrap.firstChild; )
                        e.dom.elLegendWrap.removeChild(e.dom.elLegendWrap.firstChild);
                    this.drawLegends(),
                    f.isIE11() ? document.getElementsByTagName("head")[0].appendChild(this.legendHelpers.getLegendStyles()) : this.legendHelpers.appendToForeignObject(),
                    "bottom" === i.legend.position || "top" === i.legend.position ? this.legendAlignHorizontal() : "right" !== i.legend.position && "left" !== i.legend.position || this.legendAlignVertical()
                }
            }
        }, {
            key: "drawLegends",
            value: function() {
                var t = this
                  , e = this.w
                  , i = e.config.legend.fontFamily
                  , a = e.globals.seriesNames
                  , s = e.globals.colors.slice();
                if ("heatmap" === e.config.chart.type) {
                    var r = e.config.plotOptions.heatmap.colorScale.ranges;
                    a = r.map((function(t) {
                        return t.name ? t.name : t.from + " - " + t.to
                    }
                    )),
                    s = r.map((function(t) {
                        return t.color
                    }
                    ))
                } else
                    this.isBarsDistributed && (a = e.globals.labels.slice());
                for (var n = e.globals.legendFormatter, o = e.config.legend.inverseOrder, l = o ? a.length - 1 : 0; o ? l >= 0 : l <= a.length - 1; o ? l-- : l++) {
                    var h = n(a[l], {
                        seriesIndex: l,
                        w: e
                    })
                      , c = !1
                      , d = !1;
                    if (e.globals.collapsedSeries.length > 0)
                        for (var g = 0; g < e.globals.collapsedSeries.length; g++)
                            e.globals.collapsedSeries[g].index === l && (c = !0);
                    if (e.globals.ancillaryCollapsedSeriesIndices.length > 0)
                        for (var u = 0; u < e.globals.ancillaryCollapsedSeriesIndices.length; u++)
                            e.globals.ancillaryCollapsedSeriesIndices[u] === l && (d = !0);
                    var p = document.createElement("span");
                    p.classList.add("apexcharts-legend-marker");
                    var x = e.config.legend.markers.offsetX
                      , m = e.config.legend.markers.offsetY
                      , v = e.config.legend.markers.height
                      , w = e.config.legend.markers.width
                      , k = e.config.legend.markers.strokeWidth
                      , A = e.config.legend.markers.strokeColor
                      , S = e.config.legend.markers.radius
                      , C = p.style;
                    C.background = s[l],
                    C.color = s[l],
                    C.setProperty("background", s[l], "important"),
                    e.config.legend.markers.fillColors && e.config.legend.markers.fillColors[l] && (C.background = e.config.legend.markers.fillColors[l]),
                    void 0 !== e.globals.seriesColors[l] && (C.background = e.globals.seriesColors[l],
                    C.color = e.globals.seriesColors[l]),
                    C.height = Array.isArray(v) ? parseFloat(v[l]) + "px" : parseFloat(v) + "px",
                    C.width = Array.isArray(w) ? parseFloat(w[l]) + "px" : parseFloat(w) + "px",
                    C.left = Array.isArray(x) ? x[l] : x,
                    C.top = Array.isArray(m) ? m[l] : m,
                    C.borderWidth = Array.isArray(k) ? k[l] : k,
                    C.borderColor = Array.isArray(A) ? A[l] : A,
                    C.borderRadius = Array.isArray(S) ? parseFloat(S[l]) + "px" : parseFloat(S) + "px",
                    e.config.legend.markers.customHTML && (Array.isArray(e.config.legend.markers.customHTML) ? e.config.legend.markers.customHTML[l] && (p.innerHTML = e.config.legend.markers.customHTML[l]()) : p.innerHTML = e.config.legend.markers.customHTML()),
                    b.setAttrs(p, {
                        rel: l + 1,
                        "data:collapsed": c || d
                    }),
                    (c || d) && p.classList.add("apexcharts-inactive-legend");
                    var L = document.createElement("div")
                      , P = document.createElement("span");
                    P.classList.add("apexcharts-legend-text"),
                    P.innerHTML = Array.isArray(h) ? h.join(" ") : h;
                    var T = e.config.legend.labels.useSeriesColors ? e.globals.colors[l] : e.config.legend.labels.colors;
                    T || (T = e.config.chart.foreColor),
                    P.style.color = T,
                    P.style.fontSize = parseFloat(e.config.legend.fontSize) + "px",
                    P.style.fontWeight = e.config.legend.fontWeight,
                    P.style.fontFamily = i || e.config.chart.fontFamily,
                    b.setAttrs(P, {
                        rel: l + 1,
                        i: l,
                        "data:default-text": encodeURIComponent(h),
                        "data:collapsed": c || d
                    }),
                    L.appendChild(p),
                    L.appendChild(P);
                    var z = new y(this.ctx);
                    if (!e.config.legend.showForZeroSeries)
                        0 === z.getSeriesTotalByIndex(l) && z.seriesHaveSameValues(l) && !z.isSeriesNull(l) && -1 === e.globals.collapsedSeriesIndices.indexOf(l) && -1 === e.globals.ancillaryCollapsedSeriesIndices.indexOf(l) && L.classList.add("apexcharts-hidden-zero-series");
                    e.config.legend.showForNullSeries || z.isSeriesNull(l) && -1 === e.globals.collapsedSeriesIndices.indexOf(l) && -1 === e.globals.ancillaryCollapsedSeriesIndices.indexOf(l) && L.classList.add("apexcharts-hidden-null-series"),
                    e.globals.dom.elLegendWrap.appendChild(L),
                    e.globals.dom.elLegendWrap.classList.add("apexcharts-align-".concat(e.config.legend.horizontalAlign)),
                    e.globals.dom.elLegendWrap.classList.add("position-" + e.config.legend.position),
                    L.classList.add("apexcharts-legend-series"),
                    L.style.margin = "".concat(e.config.legend.itemMargin.vertical, "px ").concat(e.config.legend.itemMargin.horizontal, "px"),
                    e.globals.dom.elLegendWrap.style.width = e.config.legend.width ? e.config.legend.width + "px" : "",
                    e.globals.dom.elLegendWrap.style.height = e.config.legend.height ? e.config.legend.height + "px" : "",
                    b.setAttrs(L, {
                        rel: l + 1,
                        seriesName: f.escapeString(a[l]),
                        "data:collapsed": c || d
                    }),
                    (c || d) && L.classList.add("apexcharts-inactive-legend"),
                    e.config.legend.onItemClick.toggleDataSeries || L.classList.add("apexcharts-no-click")
                }
                e.globals.dom.elWrap.addEventListener("click", t.onLegendClick, !0),
                e.config.legend.onItemHover.highlightDataSeries && (e.globals.dom.elWrap.addEventListener("mousemove", t.onLegendHovered, !0),
                e.globals.dom.elWrap.addEventListener("mouseout", t.onLegendHovered, !0))
            }
        }, {
            key: "setLegendWrapXY",
            value: function(t, e) {
                var i = this.w
                  , a = i.globals.dom.baseEl.querySelector(".apexcharts-legend")
                  , s = a.getBoundingClientRect()
                  , r = 0
                  , n = 0;
                if ("bottom" === i.config.legend.position)
                    n += i.globals.svgHeight - s.height / 2;
                else if ("top" === i.config.legend.position) {
                    var o = new nt(this.ctx)
                      , l = o.dimHelpers.getTitleSubtitleCoords("title").height
                      , h = o.dimHelpers.getTitleSubtitleCoords("subtitle").height;
                    n = n + (l > 0 ? l - 10 : 0) + (h > 0 ? h - 10 : 0)
                }
                a.style.position = "absolute",
                r = r + t + i.config.legend.offsetX,
                n = n + e + i.config.legend.offsetY,
                a.style.left = r + "px",
                a.style.top = n + "px",
                "bottom" === i.config.legend.position ? (a.style.top = "auto",
                a.style.bottom = 5 - i.config.legend.offsetY + "px") : "right" === i.config.legend.position && (a.style.left = "auto",
                a.style.right = 25 + i.config.legend.offsetX + "px");
                ["width", "height"].forEach((function(t) {
                    a.style[t] && (a.style[t] = parseInt(i.config.legend[t], 10) + "px")
                }
                ))
            }
        }, {
            key: "legendAlignHorizontal",
            value: function() {
                var t = this.w;
                t.globals.dom.baseEl.querySelector(".apexcharts-legend").style.right = 0;
                var e = this.legendHelpers.getLegendBBox()
                  , i = new nt(this.ctx)
                  , a = i.dimHelpers.getTitleSubtitleCoords("title")
                  , s = i.dimHelpers.getTitleSubtitleCoords("subtitle")
                  , r = 0;
                "bottom" === t.config.legend.position ? r = -e.clwh / 1.8 : "top" === t.config.legend.position && (r = a.height + s.height + t.config.title.margin + t.config.subtitle.margin - 10),
                this.setLegendWrapXY(20, r)
            }
        }, {
            key: "legendAlignVertical",
            value: function() {
                var t = this.w
                  , e = this.legendHelpers.getLegendBBox()
                  , i = 0;
                "left" === t.config.legend.position && (i = 20),
                "right" === t.config.legend.position && (i = t.globals.svgWidth - e.clww - 10),
                this.setLegendWrapXY(i, 20)
            }
        }, {
            key: "onLegendHovered",
            value: function(t) {
                var e = this.w
                  , i = t.target.classList.contains("apexcharts-legend-text") || t.target.classList.contains("apexcharts-legend-marker");
                if ("heatmap" === e.config.chart.type || this.isBarsDistributed) {
                    if (i) {
                        var a = parseInt(t.target.getAttribute("rel"), 10) - 1;
                        this.ctx.events.fireEvent("legendHover", [this.ctx, a, this.w]),
                        new M(this.ctx).highlightRangeInSeries(t, t.target)
                    }
                } else
                    !t.target.classList.contains("apexcharts-inactive-legend") && i && new M(this.ctx).toggleSeriesOnHover(t, t.target)
            }
        }, {
            key: "onLegendClick",
            value: function(t) {
                var e = this.w;
                if (t.target.classList.contains("apexcharts-legend-text") || t.target.classList.contains("apexcharts-legend-marker")) {
                    var i = parseInt(t.target.getAttribute("rel"), 10) - 1
                      , a = "true" === t.target.getAttribute("data:collapsed")
                      , s = this.w.config.chart.events.legendClick;
                    "function" == typeof s && s(this.ctx, i, this.w),
                    this.ctx.events.fireEvent("legendClick", [this.ctx, i, this.w]);
                    var r = this.w.config.legend.markers.onClick;
                    "function" == typeof r && t.target.classList.contains("apexcharts-legend-marker") && (r(this.ctx, i, this.w),
                    this.ctx.events.fireEvent("legendMarkerClick", [this.ctx, i, this.w])),
                    "treemap" !== e.config.chart.type && "heatmap" !== e.config.chart.type && !this.isBarsDistributed && e.config.legend.onItemClick.toggleDataSeries && this.legendHelpers.toggleDataSeries(i, a)
                }
            }
        }]),
        t
    }()
      , ht = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w,
            this.ev = this.w.config.chart.events,
            this.selectedClass = "apexcharts-selected",
            this.localeValues = this.w.globals.locale.toolbar
        }
        return a(t, [{
            key: "createToolbar",
            value: function() {
                var t = this
                  , e = this.w
                  , i = function() {
                    return document.createElement("div")
                }
                  , a = i();
                if (a.setAttribute("class", "apexcharts-toolbar"),
                a.style.top = e.config.chart.toolbar.offsetY + "px",
                a.style.right = 3 - e.config.chart.toolbar.offsetX + "px",
                e.globals.dom.elWrap.appendChild(a),
                this.elZoom = i(),
                this.elZoomIn = i(),
                this.elZoomOut = i(),
                this.elPan = i(),
                this.elSelection = i(),
                this.elZoomReset = i(),
                this.elMenuIcon = i(),
                this.elMenu = i(),
                this.elCustomIcons = [],
                this.t = e.config.chart.toolbar.tools,
                Array.isArray(this.t.customIcons))
                    for (var s = 0; s < this.t.customIcons.length; s++)
                        this.elCustomIcons.push(i());
                var r = []
                  , n = function(i, a, s) {
                    var n = i.toLowerCase();
                    t.t[n] && e.config.chart.zoom.enabled && r.push({
                        el: a,
                        icon: "string" == typeof t.t[n] ? t.t[n] : s,
                        title: t.localeValues[i],
                        class: "apexcharts-".concat(n, "-icon")
                    })
                };
                n("zoomIn", this.elZoomIn, '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">\n    <path d="M0 0h24v24H0z" fill="none"/>\n    <path d="M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4V7zm-1-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/>\n</svg>\n'),
                n("zoomOut", this.elZoomOut, '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">\n    <path d="M0 0h24v24H0z" fill="none"/>\n    <path d="M7 11v2h10v-2H7zm5-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/>\n</svg>\n');
                var o = function(i) {
                    t.t[i] && e.config.chart[i].enabled && r.push({
                        el: "zoom" === i ? t.elZoom : t.elSelection,
                        icon: "string" == typeof t.t[i] ? t.t[i] : "zoom" === i ? '<svg xmlns="http://www.w3.org/2000/svg" fill="#000000" height="24" viewBox="0 0 24 24" width="24">\n    <path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/>\n    <path d="M0 0h24v24H0V0z" fill="none"/>\n    <path d="M12 10h-2v2H9v-2H7V9h2V7h1v2h2v1z"/>\n</svg>' : '<svg fill="#6E8192" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">\n    <path d="M0 0h24v24H0z" fill="none"/>\n    <path d="M3 5h2V3c-1.1 0-2 .9-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2c0-1.1-.9-2-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2z"/>\n</svg>',
                        title: t.localeValues["zoom" === i ? "selectionZoom" : "selection"],
                        class: e.globals.isTouchDevice ? "apexcharts-element-hidden" : "apexcharts-".concat(i, "-icon")
                    })
                };
                o("zoom"),
                o("selection"),
                this.t.pan && e.config.chart.zoom.enabled && r.push({
                    el: this.elPan,
                    icon: "string" == typeof this.t.pan ? this.t.pan : '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="#000000" height="24" viewBox="0 0 24 24" width="24">\n    <defs>\n        <path d="M0 0h24v24H0z" id="a"/>\n    </defs>\n    <clipPath id="b">\n        <use overflow="visible" xlink:href="#a"/>\n    </clipPath>\n    <path clip-path="url(#b)" d="M23 5.5V20c0 2.2-1.8 4-4 4h-7.3c-1.08 0-2.1-.43-2.85-1.19L1 14.83s1.26-1.23 1.3-1.25c.22-.19.49-.29.79-.29.22 0 .42.06.6.16.04.01 4.31 2.46 4.31 2.46V4c0-.83.67-1.5 1.5-1.5S11 3.17 11 4v7h1V1.5c0-.83.67-1.5 1.5-1.5S15 .67 15 1.5V11h1V2.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5V11h1V5.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5z"/>\n</svg>',
                    title: this.localeValues.pan,
                    class: e.globals.isTouchDevice ? "apexcharts-element-hidden" : "apexcharts-pan-icon"
                }),
                n("reset", this.elZoomReset, '<svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">\n    <path d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"/>\n    <path d="M0 0h24v24H0z" fill="none"/>\n</svg>'),
                this.t.download && r.push({
                    el: this.elMenuIcon,
                    icon: "string" == typeof this.t.download ? this.t.download : '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/></svg>',
                    title: this.localeValues.menu,
                    class: "apexcharts-menu-icon"
                });
                for (var l = 0; l < this.elCustomIcons.length; l++)
                    r.push({
                        el: this.elCustomIcons[l],
                        icon: this.t.customIcons[l].icon,
                        title: this.t.customIcons[l].title,
                        index: this.t.customIcons[l].index,
                        class: "apexcharts-toolbar-custom-icon " + this.t.customIcons[l].class
                    });
                r.forEach((function(t, e) {
                    t.index && f.moveIndexInArray(r, e, t.index)
                }
                ));
                for (var h = 0; h < r.length; h++)
                    b.setAttrs(r[h].el, {
                        class: r[h].class,
                        title: r[h].title
                    }),
                    r[h].el.innerHTML = r[h].icon,
                    a.appendChild(r[h].el);
                this._createHamburgerMenu(a),
                e.globals.zoomEnabled ? this.elZoom.classList.add(this.selectedClass) : e.globals.panEnabled ? this.elPan.classList.add(this.selectedClass) : e.globals.selectionEnabled && this.elSelection.classList.add(this.selectedClass),
                this.addToolbarEventListeners()
            }
        }, {
            key: "_createHamburgerMenu",
            value: function(t) {
                this.elMenuItems = [],
                t.appendChild(this.elMenu),
                b.setAttrs(this.elMenu, {
                    class: "apexcharts-menu"
                });
                var e = [{
                    name: "exportSVG",
                    title: this.localeValues.exportToSVG
                }, {
                    name: "exportPNG",
                    title: this.localeValues.exportToPNG
                }, {
                    name: "exportCSV",
                    title: this.localeValues.exportToCSV
                }];
                this.w.globals.allSeriesHasEqualX || e.splice(2, 1);
                for (var i = 0; i < e.length; i++)
                    this.elMenuItems.push(document.createElement("div")),
                    this.elMenuItems[i].innerHTML = e[i].title,
                    b.setAttrs(this.elMenuItems[i], {
                        class: "apexcharts-menu-item ".concat(e[i].name),
                        title: e[i].title
                    }),
                    this.elMenu.appendChild(this.elMenuItems[i])
            }
        }, {
            key: "addToolbarEventListeners",
            value: function() {
                var t = this;
                this.elZoomReset.addEventListener("click", this.handleZoomReset.bind(this)),
                this.elSelection.addEventListener("click", this.toggleZoomSelection.bind(this, "selection")),
                this.elZoom.addEventListener("click", this.toggleZoomSelection.bind(this, "zoom")),
                this.elZoomIn.addEventListener("click", this.handleZoomIn.bind(this)),
                this.elZoomOut.addEventListener("click", this.handleZoomOut.bind(this)),
                this.elPan.addEventListener("click", this.togglePanning.bind(this)),
                this.elMenuIcon.addEventListener("click", this.toggleMenu.bind(this)),
                this.elMenuItems.forEach((function(e) {
                    e.classList.contains("exportSVG") ? e.addEventListener("click", t.handleDownload.bind(t, "svg")) : e.classList.contains("exportPNG") ? e.addEventListener("click", t.handleDownload.bind(t, "png")) : e.classList.contains("exportCSV") && e.addEventListener("click", t.handleDownload.bind(t, "csv"))
                }
                ));
                for (var e = 0; e < this.t.customIcons.length; e++)
                    this.elCustomIcons[e].addEventListener("click", this.t.customIcons[e].click.bind(this, this.ctx, this.ctx.w))
            }
        }, {
            key: "toggleZoomSelection",
            value: function(t) {
                this.ctx.getSyncedCharts().forEach((function(e) {
                    e.ctx.toolbar.toggleOtherControls();
                    var i = "selection" === t ? e.ctx.toolbar.elSelection : e.ctx.toolbar.elZoom
                      , a = "selection" === t ? "selectionEnabled" : "zoomEnabled";
                    e.w.globals[a] = !e.w.globals[a],
                    i.classList.contains(e.ctx.toolbar.selectedClass) ? i.classList.remove(e.ctx.toolbar.selectedClass) : i.classList.add(e.ctx.toolbar.selectedClass)
                }
                ))
            }
        }, {
            key: "getToolbarIconsReference",
            value: function() {
                var t = this.w;
                this.elZoom || (this.elZoom = t.globals.dom.baseEl.querySelector(".apexcharts-zoom-icon")),
                this.elPan || (this.elPan = t.globals.dom.baseEl.querySelector(".apexcharts-pan-icon")),
                this.elSelection || (this.elSelection = t.globals.dom.baseEl.querySelector(".apexcharts-selection-icon"))
            }
        }, {
            key: "enableZoomPanFromToolbar",
            value: function(t) {
                this.toggleOtherControls(),
                "pan" === t ? this.w.globals.panEnabled = !0 : this.w.globals.zoomEnabled = !0;
                var e = "pan" === t ? this.elPan : this.elZoom
                  , i = "pan" === t ? this.elZoom : this.elPan;
                e && e.classList.add(this.selectedClass),
                i && i.classList.remove(this.selectedClass)
            }
        }, {
            key: "togglePanning",
            value: function() {
                this.ctx.getSyncedCharts().forEach((function(t) {
                    t.ctx.toolbar.toggleOtherControls(),
                    t.w.globals.panEnabled = !t.w.globals.panEnabled,
                    t.ctx.toolbar.elPan.classList.contains(t.ctx.toolbar.selectedClass) ? t.ctx.toolbar.elPan.classList.remove(t.ctx.toolbar.selectedClass) : t.ctx.toolbar.elPan.classList.add(t.ctx.toolbar.selectedClass)
                }
                ))
            }
        }, {
            key: "toggleOtherControls",
            value: function() {
                var t = this
                  , e = this.w;
                e.globals.panEnabled = !1,
                e.globals.zoomEnabled = !1,
                e.globals.selectionEnabled = !1,
                this.getToolbarIconsReference(),
                [this.elPan, this.elSelection, this.elZoom].forEach((function(e) {
                    e && e.classList.remove(t.selectedClass)
                }
                ))
            }
        }, {
            key: "handleZoomIn",
            value: function() {
                var t = this.w
                  , e = (t.globals.minX + t.globals.maxX) / 2
                  , i = (t.globals.minX + e) / 2
                  , a = (t.globals.maxX + e) / 2
                  , s = this._getNewMinXMaxX(i, a);
                t.globals.disableZoomIn || this.zoomUpdateOptions(s.minX, s.maxX)
            }
        }, {
            key: "handleZoomOut",
            value: function() {
                var t = this.w;
                if (!("datetime" === t.config.xaxis.type && new Date(t.globals.minX).getUTCFullYear() < 1e3)) {
                    var e = (t.globals.minX + t.globals.maxX) / 2
                      , i = t.globals.minX - (e - t.globals.minX)
                      , a = t.globals.maxX - (e - t.globals.maxX)
                      , s = this._getNewMinXMaxX(i, a);
                    t.globals.disableZoomOut || this.zoomUpdateOptions(s.minX, s.maxX)
                }
            }
        }, {
            key: "_getNewMinXMaxX",
            value: function(t, e) {
                var i = this.w.config.xaxis.convertedCatToNumeric;
                return {
                    minX: i ? Math.floor(t) : t,
                    maxX: i ? Math.floor(e) : e
                }
            }
        }, {
            key: "zoomUpdateOptions",
            value: function(t, e) {
                var i = this.w;
                if (void 0 !== t || void 0 !== e) {
                    if (!(i.config.xaxis.convertedCatToNumeric && (t < 1 && (t = 1,
                    e = i.globals.dataPoints),
                    e - t < 2))) {
                        var a = {
                            min: t,
                            max: e
                        }
                          , s = this.getBeforeZoomRange(a);
                        s && (a = s.xaxis);
                        var r = {
                            xaxis: a
                        }
                          , n = f.clone(i.globals.initialConfig.yaxis);
                        if (i.config.chart.zoom.autoScaleYaxis)
                            n = new j(this.ctx).autoScaleY(this.ctx, n, {
                                xaxis: a
                            });
                        i.config.chart.group || (r.yaxis = n),
                        this.w.globals.zoomed = !0,
                        this.ctx.updateHelpers._updateOptions(r, !1, this.w.config.chart.animations.dynamicAnimation.enabled),
                        this.zoomCallback(a, n)
                    }
                } else
                    this.handleZoomReset()
            }
        }, {
            key: "zoomCallback",
            value: function(t, e) {
                "function" == typeof this.ev.zoomed && this.ev.zoomed(this.ctx, {
                    xaxis: t,
                    yaxis: e
                })
            }
        }, {
            key: "getBeforeZoomRange",
            value: function(t, e) {
                var i = null;
                return "function" == typeof this.ev.beforeZoom && (i = this.ev.beforeZoom(this, {
                    xaxis: t,
                    yaxis: e
                })),
                i
            }
        }, {
            key: "toggleMenu",
            value: function() {
                var t = this;
                window.setTimeout((function() {
                    t.elMenu.classList.contains("apexcharts-menu-open") ? t.elMenu.classList.remove("apexcharts-menu-open") : t.elMenu.classList.add("apexcharts-menu-open")
                }
                ), 0)
            }
        }, {
            key: "handleDownload",
            value: function(t) {
                var e = this.w
                  , i = new V(this.ctx);
                switch (t) {
                case "svg":
                    i.exportToSVG(this.ctx);
                    break;
                case "png":
                    i.exportToPng(this.ctx);
                    break;
                case "csv":
                    i.exportToCSV({
                        series: e.config.series,
                        columnDelimiter: e.config.chart.toolbar.export.csv.columnDelimiter
                    })
                }
            }
        }, {
            key: "handleZoomReset",
            value: function(t) {
                this.ctx.getSyncedCharts().forEach((function(t) {
                    var e = t.w;
                    if (e.globals.lastXAxis.min = void 0,
                    e.globals.lastXAxis.max = void 0,
                    t.updateHelpers.revertDefaultAxisMinMax(),
                    "function" == typeof e.config.chart.events.beforeResetZoom) {
                        var i = e.config.chart.events.beforeResetZoom(t, e);
                        i && t.updateHelpers.revertDefaultAxisMinMax(i)
                    }
                    "function" == typeof e.config.chart.events.zoomed && t.ctx.toolbar.zoomCallback({
                        min: e.config.xaxis.min,
                        max: e.config.xaxis.max
                    }),
                    e.globals.zoomed = !1;
                    var a = t.ctx.series.emptyCollapsedSeries(f.clone(e.globals.initialSeries));
                    t.updateHelpers._updateSeries(a, e.config.chart.animations.dynamicAnimation.enabled)
                }
                ))
            }
        }, {
            key: "destroy",
            value: function() {
                this.elZoom = null,
                this.elZoomIn = null,
                this.elZoomOut = null,
                this.elPan = null,
                this.elSelection = null,
                this.elZoomReset = null,
                this.elMenuIcon = null
            }
        }]),
        t
    }()
      , ct = function(t) {
        o(s, t);
        var i = d(s);
        function s(t) {
            var a;
            return e(this, s),
            (a = i.call(this, t)).ctx = t,
            a.w = t.w,
            a.dragged = !1,
            a.graphics = new b(a.ctx),
            a.eventList = ["mousedown", "mouseleave", "mousemove", "touchstart", "touchmove", "mouseup", "touchend"],
            a.clientX = 0,
            a.clientY = 0,
            a.startX = 0,
            a.endX = 0,
            a.dragX = 0,
            a.startY = 0,
            a.endY = 0,
            a.dragY = 0,
            a.moveDirection = "none",
            a
        }
        return a(s, [{
            key: "init",
            value: function(t) {
                var e = this
                  , i = t.xyRatios
                  , a = this.w
                  , s = this;
                this.xyRatios = i,
                this.zoomRect = this.graphics.drawRect(0, 0, 0, 0),
                this.selectionRect = this.graphics.drawRect(0, 0, 0, 0),
                this.gridRect = a.globals.dom.baseEl.querySelector(".apexcharts-grid"),
                this.zoomRect.node.classList.add("apexcharts-zoom-rect"),
                this.selectionRect.node.classList.add("apexcharts-selection-rect"),
                a.globals.dom.elGraphical.add(this.zoomRect),
                a.globals.dom.elGraphical.add(this.selectionRect),
                "x" === a.config.chart.selection.type ? this.slDraggableRect = this.selectionRect.draggable({
                    minX: 0,
                    minY: 0,
                    maxX: a.globals.gridWidth,
                    maxY: a.globals.gridHeight
                }).on("dragmove", this.selectionDragging.bind(this, "dragging")) : "y" === a.config.chart.selection.type ? this.slDraggableRect = this.selectionRect.draggable({
                    minX: 0,
                    maxX: a.globals.gridWidth
                }).on("dragmove", this.selectionDragging.bind(this, "dragging")) : this.slDraggableRect = this.selectionRect.draggable().on("dragmove", this.selectionDragging.bind(this, "dragging")),
                this.preselectedSelection(),
                this.hoverArea = a.globals.dom.baseEl.querySelector("".concat(a.globals.chartClass, " .apexcharts-svg")),
                this.hoverArea.classList.add("apexcharts-zoomable"),
                this.eventList.forEach((function(t) {
                    e.hoverArea.addEventListener(t, s.svgMouseEvents.bind(s, i), {
                        capture: !1,
                        passive: !0
                    })
                }
                ))
            }
        }, {
            key: "destroy",
            value: function() {
                this.slDraggableRect && (this.slDraggableRect.draggable(!1),
                this.slDraggableRect.off(),
                this.selectionRect.off()),
                this.selectionRect = null,
                this.zoomRect = null,
                this.gridRect = null
            }
        }, {
            key: "svgMouseEvents",
            value: function(t, e) {
                var i = this.w
                  , a = this
                  , s = this.ctx.toolbar
                  , r = i.globals.zoomEnabled ? i.config.chart.zoom.type : i.config.chart.selection.type
                  , n = i.config.chart.toolbar.autoSelected;
                e.shiftKey ? (this.shiftWasPressed = !0,
                s.enableZoomPanFromToolbar("pan" === n ? "zoom" : "pan")) : this.shiftWasPressed && (s.enableZoomPanFromToolbar(n),
                this.shiftWasPressed = !1);
                var o = e.target.classList;
                if (!(o.contains("apexcharts-selection-rect") || o.contains("apexcharts-legend-marker") || o.contains("apexcharts-legend-text") || e.target.parentNode.classList.contains("apexcharts-toolbar"))) {
                    if (a.clientX = "touchmove" === e.type || "touchstart" === e.type ? e.touches[0].clientX : "touchend" === e.type ? e.changedTouches[0].clientX : e.clientX,
                    a.clientY = "touchmove" === e.type || "touchstart" === e.type ? e.touches[0].clientY : "touchend" === e.type ? e.changedTouches[0].clientY : e.clientY,
                    "mousedown" === e.type && 1 === e.which) {
                        var l = a.gridRect.getBoundingClientRect();
                        a.startX = a.clientX - l.left,
                        a.startY = a.clientY - l.top,
                        a.dragged = !1,
                        a.w.globals.mousedown = !0
                    }
                    if (("mousemove" === e.type && 1 === e.which || "touchmove" === e.type) && (a.dragged = !0,
                    i.globals.panEnabled ? (i.globals.selection = null,
                    a.w.globals.mousedown && a.panDragging({
                        context: a,
                        zoomtype: r,
                        xyRatios: t
                    })) : (a.w.globals.mousedown && i.globals.zoomEnabled || a.w.globals.mousedown && i.globals.selectionEnabled) && (a.selection = a.selectionDrawing({
                        context: a,
                        zoomtype: r
                    }))),
                    "mouseup" === e.type || "touchend" === e.type || "mouseleave" === e.type) {
                        var h = a.gridRect.getBoundingClientRect();
                        a.w.globals.mousedown && (a.endX = a.clientX - h.left,
                        a.endY = a.clientY - h.top,
                        a.dragX = Math.abs(a.endX - a.startX),
                        a.dragY = Math.abs(a.endY - a.startY),
                        (i.globals.zoomEnabled || i.globals.selectionEnabled) && a.selectionDrawn({
                            context: a,
                            zoomtype: r
                        }),
                        i.globals.panEnabled && i.config.xaxis.convertedCatToNumeric && a.delayedPanScrolled()),
                        i.globals.zoomEnabled && a.hideSelectionRect(this.selectionRect),
                        a.dragged = !1,
                        a.w.globals.mousedown = !1
                    }
                    this.makeSelectionRectDraggable()
                }
            }
        }, {
            key: "makeSelectionRectDraggable",
            value: function() {
                var t = this.w;
                if (this.selectionRect) {
                    var e = this.selectionRect.node.getBoundingClientRect();
                    e.width > 0 && e.height > 0 && this.slDraggableRect.selectize({
                        points: "l, r",
                        pointSize: 8,
                        pointType: "rect"
                    }).resize({
                        constraint: {
                            minX: 0,
                            minY: 0,
                            maxX: t.globals.gridWidth,
                            maxY: t.globals.gridHeight
                        }
                    }).on("resizing", this.selectionDragging.bind(this, "resizing"))
                }
            }
        }, {
            key: "preselectedSelection",
            value: function() {
                var t = this.w
                  , e = this.xyRatios;
                if (!t.globals.zoomEnabled)
                    if (void 0 !== t.globals.selection && null !== t.globals.selection)
                        this.drawSelectionRect(t.globals.selection);
                    else if (void 0 !== t.config.chart.selection.xaxis.min && void 0 !== t.config.chart.selection.xaxis.max) {
                        var i = (t.config.chart.selection.xaxis.min - t.globals.minX) / e.xRatio
                          , a = {
                            x: i,
                            y: 0,
                            width: t.globals.gridWidth - (t.globals.maxX - t.config.chart.selection.xaxis.max) / e.xRatio - i,
                            height: t.globals.gridHeight,
                            translateX: 0,
                            translateY: 0,
                            selectionEnabled: !0
                        };
                        this.drawSelectionRect(a),
                        this.makeSelectionRectDraggable(),
                        "function" == typeof t.config.chart.events.selection && t.config.chart.events.selection(this.ctx, {
                            xaxis: {
                                min: t.config.chart.selection.xaxis.min,
                                max: t.config.chart.selection.xaxis.max
                            },
                            yaxis: {}
                        })
                    }
            }
        }, {
            key: "drawSelectionRect",
            value: function(t) {
                var e = t.x
                  , i = t.y
                  , a = t.width
                  , s = t.height
                  , r = t.translateX
                  , n = void 0 === r ? 0 : r
                  , o = t.translateY
                  , l = void 0 === o ? 0 : o
                  , h = this.w
                  , c = this.zoomRect
                  , d = this.selectionRect;
                if (this.dragged || null !== h.globals.selection) {
                    var g = {
                        transform: "translate(" + n + ", " + l + ")"
                    };
                    h.globals.zoomEnabled && this.dragged && (a < 0 && (a = 1),
                    c.attr({
                        x: e,
                        y: i,
                        width: a,
                        height: s,
                        fill: h.config.chart.zoom.zoomedArea.fill.color,
                        "fill-opacity": h.config.chart.zoom.zoomedArea.fill.opacity,
                        stroke: h.config.chart.zoom.zoomedArea.stroke.color,
                        "stroke-width": h.config.chart.zoom.zoomedArea.stroke.width,
                        "stroke-opacity": h.config.chart.zoom.zoomedArea.stroke.opacity
                    }),
                    b.setAttrs(c.node, g)),
                    h.globals.selectionEnabled && (d.attr({
                        x: e,
                        y: i,
                        width: a > 0 ? a : 0,
                        height: s > 0 ? s : 0,
                        fill: h.config.chart.selection.fill.color,
                        "fill-opacity": h.config.chart.selection.fill.opacity,
                        stroke: h.config.chart.selection.stroke.color,
                        "stroke-width": h.config.chart.selection.stroke.width,
                        "stroke-dasharray": h.config.chart.selection.stroke.dashArray,
                        "stroke-opacity": h.config.chart.selection.stroke.opacity
                    }),
                    b.setAttrs(d.node, g))
                }
            }
        }, {
            key: "hideSelectionRect",
            value: function(t) {
                t && t.attr({
                    x: 0,
                    y: 0,
                    width: 0,
                    height: 0
                })
            }
        }, {
            key: "selectionDrawing",
            value: function(t) {
                var e = t.context
                  , i = t.zoomtype
                  , a = this.w
                  , s = e
                  , r = this.gridRect.getBoundingClientRect()
                  , n = s.startX - 1
                  , o = s.startY
                  , l = !1
                  , h = !1
                  , c = s.clientX - r.left - n
                  , d = s.clientY - r.top - o
                  , g = {};
                return Math.abs(c + n) > a.globals.gridWidth ? c = a.globals.gridWidth - n : s.clientX - r.left < 0 && (c = n),
                n > s.clientX - r.left && (l = !0,
                c = Math.abs(c)),
                o > s.clientY - r.top && (h = !0,
                d = Math.abs(d)),
                g = "x" === i ? {
                    x: l ? n - c : n,
                    y: 0,
                    width: c,
                    height: a.globals.gridHeight
                } : "y" === i ? {
                    x: 0,
                    y: h ? o - d : o,
                    width: a.globals.gridWidth,
                    height: d
                } : {
                    x: l ? n - c : n,
                    y: h ? o - d : o,
                    width: c,
                    height: d
                },
                s.drawSelectionRect(g),
                s.selectionDragging("resizing"),
                g
            }
        }, {
            key: "selectionDragging",
            value: function(t, e) {
                var i = this
                  , a = this.w
                  , s = this.xyRatios
                  , r = this.selectionRect
                  , n = 0;
                "resizing" === t && (n = 30);
                var o = function(t) {
                    return parseFloat(r.node.getAttribute(t))
                }
                  , l = {
                    x: o("x"),
                    y: o("y"),
                    width: o("width"),
                    height: o("height")
                };
                a.globals.selection = l,
                "function" == typeof a.config.chart.events.selection && a.globals.selectionEnabled && (clearTimeout(this.w.globals.selectionResizeTimer),
                this.w.globals.selectionResizeTimer = window.setTimeout((function() {
                    var t = i.gridRect.getBoundingClientRect()
                      , e = r.node.getBoundingClientRect()
                      , n = {
                        xaxis: {
                            min: a.globals.xAxisScale.niceMin + (e.left - t.left) * s.xRatio,
                            max: a.globals.xAxisScale.niceMin + (e.right - t.left) * s.xRatio
                        },
                        yaxis: {
                            min: a.globals.yAxisScale[0].niceMin + (t.bottom - e.bottom) * s.yRatio[0],
                            max: a.globals.yAxisScale[0].niceMax - (e.top - t.top) * s.yRatio[0]
                        }
                    };
                    a.config.chart.events.selection(i.ctx, n),
                    a.config.chart.brush.enabled && void 0 !== a.config.chart.events.brushScrolled && a.config.chart.events.brushScrolled(i.ctx, n)
                }
                ), n))
            }
        }, {
            key: "selectionDrawn",
            value: function(t) {
                var e = t.context
                  , i = t.zoomtype
                  , a = this.w
                  , s = e
                  , r = this.xyRatios
                  , n = this.ctx.toolbar;
                if (s.startX > s.endX) {
                    var o = s.startX;
                    s.startX = s.endX,
                    s.endX = o
                }
                if (s.startY > s.endY) {
                    var l = s.startY;
                    s.startY = s.endY,
                    s.endY = l
                }
                var h = a.globals.xAxisScale.niceMin + s.startX * r.xRatio
                  , c = a.globals.xAxisScale.niceMin + s.endX * r.xRatio
                  , d = []
                  , g = [];
                if (a.config.yaxis.forEach((function(t, e) {
                    d.push(a.globals.yAxisScale[e].niceMax - r.yRatio[e] * s.startY),
                    g.push(a.globals.yAxisScale[e].niceMax - r.yRatio[e] * s.endY)
                }
                )),
                s.dragged && (s.dragX > 10 || s.dragY > 10) && h !== c)
                    if (a.globals.zoomEnabled) {
                        var u = f.clone(a.globals.initialConfig.yaxis)
                          , p = f.clone(a.globals.initialConfig.xaxis);
                        if (a.globals.zoomed = !0,
                        a.config.xaxis.convertedCatToNumeric && (h = Math.floor(h),
                        c = Math.floor(c),
                        h < 1 && (h = 1,
                        c = a.globals.dataPoints),
                        c - h < 2 && (c = h + 1)),
                        "xy" !== i && "x" !== i || (p = {
                            min: h,
                            max: c
                        }),
                        "xy" !== i && "y" !== i || u.forEach((function(t, e) {
                            u[e].min = g[e],
                            u[e].max = d[e]
                        }
                        )),
                        a.config.chart.zoom.autoScaleYaxis) {
                            var x = new j(s.ctx);
                            u = x.autoScaleY(s.ctx, u, {
                                xaxis: p
                            })
                        }
                        if (n) {
                            var b = n.getBeforeZoomRange(p, u);
                            b && (p = b.xaxis ? b.xaxis : p,
                            u = b.yaxis ? b.yaxis : u)
                        }
                        var m = {
                            xaxis: p
                        };
                        a.config.chart.group || (m.yaxis = u),
                        s.ctx.updateHelpers._updateOptions(m, !1, s.w.config.chart.animations.dynamicAnimation.enabled),
                        "function" == typeof a.config.chart.events.zoomed && n.zoomCallback(p, u)
                    } else if (a.globals.selectionEnabled) {
                        var v, y = null;
                        v = {
                            min: h,
                            max: c
                        },
                        "xy" !== i && "y" !== i || (y = f.clone(a.config.yaxis)).forEach((function(t, e) {
                            y[e].min = g[e],
                            y[e].max = d[e]
                        }
                        )),
                        a.globals.selection = s.selection,
                        "function" == typeof a.config.chart.events.selection && a.config.chart.events.selection(s.ctx, {
                            xaxis: v,
                            yaxis: y
                        })
                    }
            }
        }, {
            key: "panDragging",
            value: function(t) {
                var e = t.context
                  , i = this.w
                  , a = e;
                if (void 0 !== i.globals.lastClientPosition.x) {
                    var s = i.globals.lastClientPosition.x - a.clientX
                      , r = i.globals.lastClientPosition.y - a.clientY;
                    Math.abs(s) > Math.abs(r) && s > 0 ? this.moveDirection = "left" : Math.abs(s) > Math.abs(r) && s < 0 ? this.moveDirection = "right" : Math.abs(r) > Math.abs(s) && r > 0 ? this.moveDirection = "up" : Math.abs(r) > Math.abs(s) && r < 0 && (this.moveDirection = "down")
                }
                i.globals.lastClientPosition = {
                    x: a.clientX,
                    y: a.clientY
                };
                var n = i.globals.minX
                  , o = i.globals.maxX;
                i.config.xaxis.convertedCatToNumeric || a.panScrolled(n, o)
            }
        }, {
            key: "delayedPanScrolled",
            value: function() {
                var t = this.w
                  , e = t.globals.minX
                  , i = t.globals.maxX
                  , a = (t.globals.maxX - t.globals.minX) / 2;
                "left" === this.moveDirection ? (e = t.globals.minX + a,
                i = t.globals.maxX + a) : "right" === this.moveDirection && (e = t.globals.minX - a,
                i = t.globals.maxX - a),
                e = Math.floor(e),
                i = Math.floor(i),
                this.updateScrolledChart({
                    xaxis: {
                        min: e,
                        max: i
                    }
                }, e, i)
            }
        }, {
            key: "panScrolled",
            value: function(t, e) {
                var i = this.w
                  , a = this.xyRatios
                  , s = f.clone(i.globals.initialConfig.yaxis);
                "left" === this.moveDirection ? (t = i.globals.minX + i.globals.gridWidth / 15 * a.xRatio,
                e = i.globals.maxX + i.globals.gridWidth / 15 * a.xRatio) : "right" === this.moveDirection && (t = i.globals.minX - i.globals.gridWidth / 15 * a.xRatio,
                e = i.globals.maxX - i.globals.gridWidth / 15 * a.xRatio),
                (t < i.globals.initialMinX || e > i.globals.initialMaxX) && (t = i.globals.minX,
                e = i.globals.maxX);
                var r = {
                    min: t,
                    max: e
                };
                i.config.chart.zoom.autoScaleYaxis && (s = new j(this.ctx).autoScaleY(this.ctx, s, {
                    xaxis: r
                }));
                var n = {
                    xaxis: {
                        min: t,
                        max: e
                    }
                };
                i.config.chart.group || (n.yaxis = s),
                this.updateScrolledChart(n, t, e)
            }
        }, {
            key: "updateScrolledChart",
            value: function(t, e, i) {
                var a = this.w;
                this.ctx.updateHelpers._updateOptions(t, !1, !1),
                "function" == typeof a.config.chart.events.scrolled && a.config.chart.events.scrolled(this.ctx, {
                    xaxis: {
                        min: e,
                        max: i
                    }
                })
            }
        }]),
        s
    }(ht)
      , dt = function() {
        function t(i) {
            e(this, t),
            this.w = i.w,
            this.ttCtx = i,
            this.ctx = i.ctx
        }
        return a(t, [{
            key: "getNearestValues",
            value: function(t) {
                var e = t.hoverArea
                  , i = t.elGrid
                  , a = t.clientX
                  , s = t.clientY
                  , r = this.w
                  , n = r.globals.gridWidth
                  , o = n / (r.globals.dataPoints - 1)
                  , l = i.getBoundingClientRect()
                  , h = this.hasBars();
                !r.globals.comboCharts && !h || r.config.xaxis.convertedCatToNumeric || (o = n / r.globals.dataPoints);
                var c = a - l.left - r.globals.barPadForNumericAxis
                  , d = s - l.top;
                c < 0 || d < 0 || c > r.globals.gridWidth || d > r.globals.gridHeight ? (e.classList.remove("hovering-zoom"),
                e.classList.remove("hovering-pan")) : r.globals.zoomEnabled ? (e.classList.remove("hovering-pan"),
                e.classList.add("hovering-zoom")) : r.globals.panEnabled && (e.classList.remove("hovering-zoom"),
                e.classList.add("hovering-pan"));
                var g = Math.round(c / o);
                h && !r.config.xaxis.convertedCatToNumeric && (g = Math.ceil(c / o),
                g -= 1);
                for (var u, p = null, x = null, b = [], m = 0; m < r.globals.seriesXvalues.length; m++)
                    b.push([r.globals.seriesXvalues[m][0] - 1e-6].concat(r.globals.seriesXvalues[m]));
                return b = b.map((function(t) {
                    return t.filter((function(t) {
                        return t
                    }
                    ))
                }
                )),
                u = r.globals.seriesYvalues.map((function(t) {
                    return t.filter((function(t) {
                        return f.isNumber(t)
                    }
                    ))
                }
                )),
                r.globals.isXNumeric && (p = (x = this.closestInMultiArray(c, d, b, u)).index,
                g = x.j,
                null !== p && (b = r.globals.seriesXvalues[p],
                g = (x = this.closestInArray(c, b)).index)),
                r.globals.capturedSeriesIndex = null === p ? -1 : p,
                (!g || g < 1) && (g = 0),
                r.globals.capturedDataPointIndex = g,
                {
                    capturedSeries: p,
                    j: g,
                    hoverX: c,
                    hoverY: d
                }
            }
        }, {
            key: "closestInMultiArray",
            value: function(t, e, i, a) {
                var s = this.w
                  , r = 0
                  , n = null
                  , o = -1;
                s.globals.series.length > 1 ? r = this.getFirstActiveXArray(i) : n = 0;
                var l = a[r][0]
                  , h = i[r][0]
                  , c = Math.abs(t - h)
                  , d = Math.abs(e - l)
                  , g = d + c;
                return a.map((function(s, r) {
                    s.map((function(s, l) {
                        var h = Math.abs(e - a[r][l])
                          , u = Math.abs(t - i[r][l])
                          , f = u + h;
                        f < g && (g = f,
                        c = u,
                        d = h,
                        n = r,
                        o = l)
                    }
                    ))
                }
                )),
                {
                    index: n,
                    j: o
                }
            }
        }, {
            key: "getFirstActiveXArray",
            value: function(t) {
                for (var e = 0, i = t.map((function(t, e) {
                    return t.length > 0 ? e : -1
                }
                )), a = 0; a < i.length; a++)
                    if (-1 !== i[a]) {
                        e = i[a];
                        break
                    }
                return e
            }
        }, {
            key: "closestInArray",
            value: function(t, e) {
                for (var i = e[0], a = null, s = Math.abs(t - i), r = 0; r < e.length; r++) {
                    var n = Math.abs(t - e[r]);
                    n < s && (s = n,
                    a = r)
                }
                return {
                    index: a
                }
            }
        }, {
            key: "isXoverlap",
            value: function(t) {
                var e = []
                  , i = this.w.globals.seriesX.filter((function(t) {
                    return void 0 !== t[0]
                }
                ));
                if (i.length > 0)
                    for (var a = 0; a < i.length - 1; a++)
                        void 0 !== i[a][t] && void 0 !== i[a + 1][t] && i[a][t] !== i[a + 1][t] && e.push("unEqual");
                return 0 === e.length
            }
        }, {
            key: "isInitialSeriesSameLen",
            value: function() {
                for (var t = !0, e = this.w.globals.initialSeries, i = 0; i < e.length - 1; i++)
                    if (e[i].data.length !== e[i + 1].data.length) {
                        t = !1;
                        break
                    }
                return t
            }
        }, {
            key: "getBarsHeight",
            value: function(t) {
                return g(t).reduce((function(t, e) {
                    return t + e.getBBox().height
                }
                ), 0)
            }
        }, {
            key: "getElMarkers",
            value: function() {
                return this.w.globals.dom.baseEl.querySelectorAll(" .apexcharts-series-markers")
            }
        }, {
            key: "getAllMarkers",
            value: function() {
                var t = this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers-wrap");
                (t = g(t)).sort((function(t, e) {
                    return Number(e.getAttribute("data:realIndex")) < Number(t.getAttribute("data:realIndex")) ? 0 : -1
                }
                ));
                var e = [];
                return t.forEach((function(t) {
                    e.push(t.querySelector(".apexcharts-marker"))
                }
                )),
                e
            }
        }, {
            key: "hasMarkers",
            value: function() {
                return this.getElMarkers().length > 0
            }
        }, {
            key: "getElBars",
            value: function() {
                return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-bar-series,  .apexcharts-candlestick-series, .apexcharts-rangebar-series")
            }
        }, {
            key: "hasBars",
            value: function() {
                return this.getElBars().length > 0
            }
        }, {
            key: "getHoverMarkerSize",
            value: function(t) {
                var e = this.w
                  , i = e.config.markers.hover.size;
                return void 0 === i && (i = e.globals.markers.size[t] + e.config.markers.hover.sizeOffset),
                i
            }
        }, {
            key: "toggleAllTooltipSeriesGroups",
            value: function(t) {
                var e = this.w
                  , i = this.ttCtx;
                0 === i.allTooltipSeriesGroups.length && (i.allTooltipSeriesGroups = e.globals.dom.baseEl.querySelectorAll(".apexcharts-tooltip-series-group"));
                for (var a = i.allTooltipSeriesGroups, s = 0; s < a.length; s++)
                    "enable" === t ? (a[s].classList.add("apexcharts-active"),
                    a[s].style.display = e.config.tooltip.items.display) : (a[s].classList.remove("apexcharts-active"),
                    a[s].style.display = "none")
            }
        }]),
        t
    }()
      , gt = function() {
        function t(i) {
            e(this, t),
            this.w = i.w,
            this.ctx = i.ctx,
            this.ttCtx = i,
            this.tooltipUtil = new dt(i)
        }
        return a(t, [{
            key: "drawSeriesTexts",
            value: function(t) {
                var e = t.shared
                  , i = void 0 === e || e
                  , a = t.ttItems
                  , s = t.i
                  , r = void 0 === s ? 0 : s
                  , n = t.j
                  , o = void 0 === n ? null : n
                  , l = t.y1
                  , h = t.y2
                  , c = t.e
                  , d = this.w;
                void 0 !== d.config.tooltip.custom ? this.handleCustomTooltip({
                    i: r,
                    j: o,
                    y1: l,
                    y2: h,
                    w: d
                }) : this.toggleActiveInactiveSeries(i);
                var g = this.getValuesToPrint({
                    i: r,
                    j: o
                });
                this.printLabels({
                    i: r,
                    j: o,
                    values: g,
                    ttItems: a,
                    shared: i,
                    e: c
                });
                var u = this.ttCtx.getElTooltip();
                this.ttCtx.tooltipRect.ttWidth = u.getBoundingClientRect().width,
                this.ttCtx.tooltipRect.ttHeight = u.getBoundingClientRect().height
            }
        }, {
            key: "printLabels",
            value: function(t) {
                var e, i = this, a = t.i, s = t.j, r = t.values, o = t.ttItems, l = t.shared, h = t.e, c = this.w, d = r.xVal, g = r.zVal, u = r.xAxisTTVal, f = "", p = c.globals.colors[a];
                null !== s && c.config.plotOptions.bar.distributed && (p = c.globals.colors[s]);
                for (var x = function(t, r) {
                    var x = i.getFormatters(a);
                    f = i.getSeriesName({
                        fn: x.yLbTitleFormatter,
                        index: a,
                        seriesIndex: a,
                        j: s
                    }),
                    "treemap" === c.config.chart.type && (f = x.yLbTitleFormatter(String(c.config.series[a].data[s].x), {
                        series: c.globals.series,
                        seriesIndex: a,
                        dataPointIndex: s,
                        w: c
                    }));
                    var b = c.config.tooltip.inverseOrder ? r : t;
                    if (c.globals.axisCharts) {
                        var m = function(t) {
                            return x.yLbFormatter(c.globals.series[t][s], {
                                series: c.globals.series,
                                seriesIndex: t,
                                dataPointIndex: s,
                                w: c
                            })
                        };
                        l ? (x = i.getFormatters(b),
                        f = i.getSeriesName({
                            fn: x.yLbTitleFormatter,
                            index: b,
                            seriesIndex: a,
                            j: s
                        }),
                        p = c.globals.colors[b],
                        e = m(b)) : (h && h.target && h.target.getAttribute("fill") && (p = h.target.getAttribute("fill")),
                        e = m(a))
                    }
                    null === s && (e = x.yLbFormatter(c.globals.series[a], n(n({}, c), {}, {
                        seriesIndex: a,
                        dataPointIndex: a
                    }))),
                    i.DOMHandling({
                        i: a,
                        t: b,
                        j: s,
                        ttItems: o,
                        values: {
                            val: e,
                            xVal: d,
                            xAxisTTVal: u,
                            zVal: g
                        },
                        seriesName: f,
                        shared: l,
                        pColor: p
                    })
                }, b = 0, m = c.globals.series.length - 1; b < c.globals.series.length; b++,
                m--)
                    x(b, m)
            }
        }, {
            key: "getFormatters",
            value: function(t) {
                var e, i = this.w, a = i.globals.yLabelFormatters[t];
                return void 0 !== i.globals.ttVal ? Array.isArray(i.globals.ttVal) ? (a = i.globals.ttVal[t] && i.globals.ttVal[t].formatter,
                e = i.globals.ttVal[t] && i.globals.ttVal[t].title && i.globals.ttVal[t].title.formatter) : (a = i.globals.ttVal.formatter,
                "function" == typeof i.globals.ttVal.title.formatter && (e = i.globals.ttVal.title.formatter)) : e = i.config.tooltip.y.title.formatter,
                "function" != typeof a && (a = i.globals.yLabelFormatters[0] ? i.globals.yLabelFormatters[0] : function(t) {
                    return t
                }
                ),
                "function" != typeof e && (e = function(t) {
                    return t
                }
                ),
                {
                    yLbFormatter: a,
                    yLbTitleFormatter: e
                }
            }
        }, {
            key: "getSeriesName",
            value: function(t) {
                var e = t.fn
                  , i = t.index
                  , a = t.seriesIndex
                  , s = t.j
                  , r = this.w;
                return e(String(r.globals.seriesNames[i]), {
                    series: r.globals.series,
                    seriesIndex: a,
                    dataPointIndex: s,
                    w: r
                })
            }
        }, {
            key: "DOMHandling",
            value: function(t) {
                t.i;
                var e = t.t
                  , i = (t.j,
                t.ttItems)
                  , a = t.values
                  , s = t.seriesName
                  , r = t.shared
                  , n = t.pColor
                  , o = this.w
                  , l = this.ttCtx
                  , h = a.val
                  , c = a.xVal
                  , d = a.xAxisTTVal
                  , g = a.zVal
                  , u = null;
                u = i[e].children,
                o.config.tooltip.fillSeriesColor && (i[e].style.backgroundColor = n,
                u[0].style.display = "none"),
                l.showTooltipTitle && (null === l.tooltipTitle && (l.tooltipTitle = o.globals.dom.baseEl.querySelector(".apexcharts-tooltip-title")),
                l.tooltipTitle.innerHTML = c),
                l.blxaxisTooltip && (l.xaxisTooltipText.innerHTML = "" !== d ? d : c);
                var f = i[e].querySelector(".apexcharts-tooltip-text-label");
                f && (f.innerHTML = s || "");
                var p = i[e].querySelector(".apexcharts-tooltip-text-value");
                (p && (p.innerHTML = void 0 !== h ? h : ""),
                u[0] && u[0].classList.contains("apexcharts-tooltip-marker") && (o.config.tooltip.marker.fillColors && Array.isArray(o.config.tooltip.marker.fillColors) && (n = o.config.tooltip.marker.fillColors[e]),
                u[0].style.backgroundColor = n),
                o.config.tooltip.marker.show || (u[0].style.display = "none"),
                null !== g) && (i[e].querySelector(".apexcharts-tooltip-text-z-label").innerHTML = o.config.tooltip.z.title,
                i[e].querySelector(".apexcharts-tooltip-text-z-value").innerHTML = void 0 !== g ? g : "");
                r && u[0] && (null == h || o.globals.collapsedSeriesIndices.indexOf(e) > -1 ? u[0].parentNode.style.display = "none" : u[0].parentNode.style.display = o.config.tooltip.items.display)
            }
        }, {
            key: "toggleActiveInactiveSeries",
            value: function(t) {
                var e = this.w;
                if (t)
                    this.tooltipUtil.toggleAllTooltipSeriesGroups("enable");
                else {
                    this.tooltipUtil.toggleAllTooltipSeriesGroups("disable");
                    var i = e.globals.dom.baseEl.querySelector(".apexcharts-tooltip-series-group");
                    i && (i.classList.add("apexcharts-active"),
                    i.style.display = e.config.tooltip.items.display)
                }
            }
        }, {
            key: "getValuesToPrint",
            value: function(t) {
                var e = t.i
                  , i = t.j
                  , a = this.w
                  , s = this.ctx.series.filteredSeriesX()
                  , r = ""
                  , n = ""
                  , o = null
                  , l = null
                  , h = {
                    series: a.globals.series,
                    seriesIndex: e,
                    dataPointIndex: i,
                    w: a
                }
                  , c = a.globals.ttZFormatter;
                null === i ? l = a.globals.series[e] : a.globals.isXNumeric && "treemap" !== a.config.chart.type ? (r = s[e][i],
                0 === s[e].length && (r = s[this.tooltipUtil.getFirstActiveXArray(s)][i])) : r = void 0 !== a.globals.labels[i] ? a.globals.labels[i] : "";
                var d = r;
                a.globals.isXNumeric && "datetime" === a.config.xaxis.type ? r = new W(this.ctx).xLabelFormat(a.globals.ttKeyFormatter, d, d, {
                    i: void 0,
                    dateFormatter: new Y(this.ctx).formatDate,
                    w: this.w
                }) : a.globals.isBarHorizontal || (r = a.globals.xLabelFormatter(d, h));
                return void 0 !== a.config.tooltip.x.formatter && (r = a.globals.ttKeyFormatter(d, h)),
                a.globals.seriesZ.length > 0 && a.globals.seriesZ[e].length > 0 && (o = c(a.globals.seriesZ[e][i], a)),
                n = "function" == typeof a.config.xaxis.tooltip.formatter ? a.globals.xaxisTooltipFormatter(d, h) : r,
                {
                    val: Array.isArray(l) ? l.join(" ") : l,
                    xVal: Array.isArray(r) ? r.join(" ") : r,
                    xAxisTTVal: Array.isArray(n) ? n.join(" ") : n,
                    zVal: o
                }
            }
        }, {
            key: "handleCustomTooltip",
            value: function(t) {
                var e = t.i
                  , i = t.j
                  , a = t.y1
                  , s = t.y2
                  , r = t.w
                  , n = this.ttCtx.getElTooltip()
                  , o = r.config.tooltip.custom;
                Array.isArray(o) && o[e] && (o = o[e]),
                n.innerHTML = o({
                    ctx: this.ctx,
                    series: r.globals.series,
                    seriesIndex: e,
                    dataPointIndex: i,
                    y1: a,
                    y2: s,
                    w: r
                })
            }
        }]),
        t
    }()
      , ut = function() {
        function t(i) {
            e(this, t),
            this.ttCtx = i,
            this.ctx = i.ctx,
            this.w = i.w
        }
        return a(t, [{
            key: "moveXCrosshairs",
            value: function(t) {
                var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null
                  , i = this.ttCtx
                  , a = this.w
                  , s = i.getElXCrosshairs()
                  , r = t - i.xcrosshairsWidth / 2
                  , n = a.globals.labels.slice().length;
                if (null !== e && (r = a.globals.gridWidth / n * e),
                null !== s && (s.setAttribute("x", r),
                s.setAttribute("x1", r),
                s.setAttribute("x2", r),
                s.setAttribute("y2", a.globals.gridHeight),
                s.classList.add("apexcharts-active")),
                r < 0 && (r = 0),
                r > a.globals.gridWidth && (r = a.globals.gridWidth),
                i.blxaxisTooltip) {
                    var o = r;
                    "tickWidth" !== a.config.xaxis.crosshairs.width && "barWidth" !== a.config.xaxis.crosshairs.width || (o = r + i.xcrosshairsWidth / 2),
                    this.moveXAxisTooltip(o)
                }
            }
        }, {
            key: "moveYCrosshairs",
            value: function(t) {
                var e = this.ttCtx;
                null !== e.ycrosshairs && b.setAttrs(e.ycrosshairs, {
                    y1: t,
                    y2: t
                }),
                null !== e.ycrosshairsHidden && b.setAttrs(e.ycrosshairsHidden, {
                    y1: t,
                    y2: t
                })
            }
        }, {
            key: "moveXAxisTooltip",
            value: function(t) {
                var e = this.w
                  , i = this.ttCtx;
                if (null !== i.xaxisTooltip) {
                    i.xaxisTooltip.classList.add("apexcharts-active");
                    var a = i.xaxisOffY + e.config.xaxis.tooltip.offsetY + e.globals.translateY + 1 + e.config.xaxis.offsetY;
                    if (t -= i.xaxisTooltip.getBoundingClientRect().width / 2,
                    !isNaN(t)) {
                        t += e.globals.translateX;
                        var s;
                        s = new b(this.ctx).getTextRects(i.xaxisTooltipText.innerHTML),
                        i.xaxisTooltipText.style.minWidth = s.width + "px",
                        i.xaxisTooltip.style.left = t + "px",
                        i.xaxisTooltip.style.top = a + "px"
                    }
                }
            }
        }, {
            key: "moveYAxisTooltip",
            value: function(t) {
                var e = this.w
                  , i = this.ttCtx;
                null === i.yaxisTTEls && (i.yaxisTTEls = e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxistooltip"));
                var a = parseInt(i.ycrosshairsHidden.getAttribute("y1"), 10)
                  , s = e.globals.translateY + a
                  , r = i.yaxisTTEls[t].getBoundingClientRect().height
                  , n = e.globals.translateYAxisX[t] - 2;
                e.config.yaxis[t].opposite && (n -= 26),
                s -= r / 2,
                -1 === e.globals.ignoreYAxisIndexes.indexOf(t) ? (i.yaxisTTEls[t].classList.add("apexcharts-active"),
                i.yaxisTTEls[t].style.top = s + "px",
                i.yaxisTTEls[t].style.left = n + e.config.yaxis[t].tooltip.offsetX + "px") : i.yaxisTTEls[t].classList.remove("apexcharts-active")
            }
        }, {
            key: "moveTooltip",
            value: function(t, e) {
                var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null
                  , a = this.w
                  , s = this.ttCtx
                  , r = s.getElTooltip()
                  , n = s.tooltipRect
                  , o = null !== i ? parseFloat(i) : 1
                  , l = parseFloat(t) + o + 5
                  , h = parseFloat(e) + o / 2;
                if (l > a.globals.gridWidth / 2 && (l = l - n.ttWidth - o - 15),
                l > a.globals.gridWidth - n.ttWidth - 10 && (l = a.globals.gridWidth - n.ttWidth),
                l < -20 && (l = -20),
                a.config.tooltip.followCursor) {
                    var c = s.getElGrid()
                      , d = c.getBoundingClientRect();
                    h = s.e.clientY + a.globals.translateY - d.top - n.ttHeight / 2
                }
                if (!a.config.tooltip.followCursor) {
                    var g = this.positionChecks(n, l, h);
                    l = g.x,
                    h = g.y
                }
                isNaN(l) || (l += a.globals.translateX,
                r.style.left = l + "px",
                r.style.top = h + "px")
            }
        }, {
            key: "positionChecks",
            value: function(t, e, i) {
                var a = this.w;
                return t.ttHeight / 2 + i > a.globals.gridHeight && (i = a.globals.gridHeight - t.ttHeight + a.globals.translateY),
                i < 0 && (i = 0),
                {
                    x: e,
                    y: i
                }
            }
        }, {
            key: "moveMarkers",
            value: function(t, e) {
                var i = this.w
                  , a = this.ttCtx;
                if (i.globals.markers.size[t] > 0)
                    for (var s = i.globals.dom.baseEl.querySelectorAll(" .apexcharts-series[data\\:realIndex='".concat(t, "'] .apexcharts-marker")), r = 0; r < s.length; r++)
                        parseInt(s[r].getAttribute("rel"), 10) === e && (a.marker.resetPointsSize(),
                        a.marker.enlargeCurrentPoint(e, s[r]));
                else
                    a.marker.resetPointsSize(),
                    this.moveDynamicPointOnHover(e, t)
            }
        }, {
            key: "moveDynamicPointOnHover",
            value: function(t, e) {
                var i, a, s = this.w, r = this.ttCtx, n = s.globals.pointsArray, o = r.tooltipUtil.getHoverMarkerSize(e), l = s.config.series[e].type;
                if (!l || "column" !== l && "candlestick" !== l) {
                    i = n[e][t][0],
                    a = n[e][t][1] ? n[e][t][1] : 0;
                    var h = s.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(e, "'] .apexcharts-series-markers circle"));
                    h && a < s.globals.gridHeight && a > 0 && (h.setAttribute("r", o),
                    h.setAttribute("cx", i),
                    h.setAttribute("cy", a)),
                    this.moveXCrosshairs(i),
                    r.fixedTooltip || this.moveTooltip(i, a, o)
                }
            }
        }, {
            key: "moveDynamicPointsOnHover",
            value: function(t) {
                var e, i = this.ttCtx, a = i.w, s = 0, r = 0, n = a.globals.pointsArray;
                e = new M(this.ctx).getActiveConfigSeriesIndex(!0);
                var o = i.tooltipUtil.getHoverMarkerSize(e);
                n[e] && (s = n[e][t][0],
                r = n[e][t][1]);
                var l = i.tooltipUtil.getAllMarkers();
                if (null !== l)
                    for (var h = 0; h < a.globals.series.length; h++) {
                        var c = n[h];
                        if (a.globals.comboCharts && void 0 === c && l.splice(h, 0, null),
                        c && c.length) {
                            var d = n[h][t][1];
                            l[h].setAttribute("cx", s),
                            null !== d && !isNaN(d) && d < a.globals.gridHeight && d > 0 ? (l[h] && l[h].setAttribute("r", o),
                            l[h] && l[h].setAttribute("cy", d)) : l[h] && l[h].setAttribute("r", 0)
                        }
                    }
                if (this.moveXCrosshairs(s),
                !i.fixedTooltip) {
                    var g = r || a.globals.gridHeight;
                    this.moveTooltip(s, g, o)
                }
            }
        }, {
            key: "moveStickyTooltipOverBars",
            value: function(t) {
                var e, i = this.w, a = this.ttCtx, s = i.globals.columnSeries ? i.globals.columnSeries.length : i.globals.series.length, r = s >= 2 && s % 2 == 0 ? Math.floor(s / 2) : Math.floor(s / 2) + 1, n = i.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[rel='".concat(r, "'] path[j='").concat(t, "'], .apexcharts-candlestick-series .apexcharts-series[rel='").concat(r, "'] path[j='").concat(t, "'], .apexcharts-rangebar-series .apexcharts-series[rel='").concat(r, "'] path[j='").concat(t, "']")), o = n ? parseFloat(n.getAttribute("cx")) : 0, l = n ? parseFloat(n.getAttribute("barWidth")) : 0;
                i.globals.isXNumeric ? o -= s % 2 != 0 ? l / 2 : 0 : (o = a.xAxisTicksPositions[t - 1] + a.dataPointsDividedWidth / 2,
                isNaN(o) && (o = a.xAxisTicksPositions[t] - a.dataPointsDividedWidth / 2));
                var h = a.getElGrid().getBoundingClientRect();
                if (e = a.e.clientY - h.top - a.tooltipRect.ttHeight / 2,
                this.moveXCrosshairs(o),
                !a.fixedTooltip) {
                    var c = e || i.globals.gridHeight;
                    this.moveTooltip(o, c)
                }
            }
        }]),
        t
    }()
      , ft = function() {
        function t(i) {
            e(this, t),
            this.w = i.w,
            this.ttCtx = i,
            this.ctx = i.ctx,
            this.tooltipPosition = new ut(i)
        }
        return a(t, [{
            key: "drawDynamicPoints",
            value: function() {
                var t = this.w
                  , e = new b(this.ctx)
                  , i = new P(this.ctx)
                  , a = t.globals.dom.baseEl.querySelectorAll(".apexcharts-series");
                a = g(a),
                t.config.chart.stacked && a.sort((function(t, e) {
                    return parseFloat(t.getAttribute("data:realIndex")) - parseFloat(e.getAttribute("data:realIndex"))
                }
                ));
                for (var s = 0; s < a.length; s++) {
                    var r = a[s].querySelector(".apexcharts-series-markers-wrap");
                    if (null !== r) {
                        var n = void 0
                          , o = "apexcharts-marker w".concat((Math.random() + 1).toString(36).substring(4));
                        "line" !== t.config.chart.type && "area" !== t.config.chart.type || t.globals.comboCharts || t.config.tooltip.intersect || (o += " no-pointer-events");
                        var l = i.getMarkerConfig(o, s);
                        (n = e.drawMarker(0, 0, l)).node.setAttribute("default-marker-size", 0);
                        var h = document.createElementNS(t.globals.SVGNS, "g");
                        h.classList.add("apexcharts-series-markers"),
                        h.appendChild(n.node),
                        r.appendChild(h)
                    }
                }
            }
        }, {
            key: "enlargeCurrentPoint",
            value: function(t, e) {
                var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null
                  , a = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : null
                  , s = this.w;
                "bubble" !== s.config.chart.type && this.newPointSize(t, e);
                var r = e.getAttribute("cx")
                  , n = e.getAttribute("cy");
                if (null !== i && null !== a && (r = i,
                n = a),
                this.tooltipPosition.moveXCrosshairs(r),
                !this.fixedTooltip) {
                    if ("radar" === s.config.chart.type) {
                        var o = this.ttCtx.getElGrid()
                          , l = o.getBoundingClientRect();
                        r = this.ttCtx.e.clientX - l.left
                    }
                    this.tooltipPosition.moveTooltip(r, n, s.config.markers.hover.size)
                }
            }
        }, {
            key: "enlargePoints",
            value: function(t) {
                for (var e = this.w, i = this, a = this.ttCtx, s = t, r = e.globals.dom.baseEl.querySelectorAll(".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker"), n = e.config.markers.hover.size, o = 0; o < r.length; o++) {
                    var l = r[o].getAttribute("rel")
                      , h = r[o].getAttribute("index");
                    if (void 0 === n && (n = e.globals.markers.size[h] + e.config.markers.hover.sizeOffset),
                    s === parseInt(l, 10)) {
                        i.newPointSize(s, r[o]);
                        var c = r[o].getAttribute("cx")
                          , d = r[o].getAttribute("cy");
                        i.tooltipPosition.moveXCrosshairs(c),
                        a.fixedTooltip || i.tooltipPosition.moveTooltip(c, d, n)
                    } else
                        i.oldPointSize(r[o])
                }
            }
        }, {
            key: "newPointSize",
            value: function(t, e) {
                var i = this.w
                  , a = i.config.markers.hover.size
                  , s = 0 === t ? e.parentNode.firstChild : e.parentNode.lastChild;
                if ("0" !== s.getAttribute("default-marker-size")) {
                    var r = parseInt(s.getAttribute("index"), 10);
                    void 0 === a && (a = i.globals.markers.size[r] + i.config.markers.hover.sizeOffset),
                    s.setAttribute("r", a)
                }
            }
        }, {
            key: "oldPointSize",
            value: function(t) {
                var e = parseFloat(t.getAttribute("default-marker-size"));
                t.setAttribute("r", e)
            }
        }, {
            key: "resetPointsSize",
            value: function() {
                for (var t = this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker"), e = 0; e < t.length; e++) {
                    var i = parseFloat(t[e].getAttribute("default-marker-size"));
                    f.isNumber(i) ? t[e].setAttribute("r", i) : t[e].setAttribute("r", 0)
                }
            }
        }]),
        t
    }()
      , pt = function() {
        function t(i) {
            e(this, t),
            this.w = i.w,
            this.ttCtx = i
        }
        return a(t, [{
            key: "getAttr",
            value: function(t, e) {
                return parseFloat(t.target.getAttribute(e))
            }
        }, {
            key: "handleHeatTreeTooltip",
            value: function(t) {
                var e = t.e
                  , i = t.opt
                  , a = t.x
                  , s = t.y
                  , r = t.type
                  , n = this.ttCtx
                  , o = this.w;
                if (e.target.classList.contains("apexcharts-".concat(r, "-rect"))) {
                    var l = this.getAttr(e, "i")
                      , h = this.getAttr(e, "j")
                      , c = this.getAttr(e, "cx")
                      , d = this.getAttr(e, "cy")
                      , g = this.getAttr(e, "width")
                      , u = this.getAttr(e, "height");
                    if (n.tooltipLabels.drawSeriesTexts({
                        ttItems: i.ttItems,
                        i: l,
                        j: h,
                        shared: !1,
                        e: e
                    }),
                    o.globals.capturedSeriesIndex = l,
                    o.globals.capturedDataPointIndex = h,
                    a = c + n.tooltipRect.ttWidth / 2 + g,
                    s = d + n.tooltipRect.ttHeight / 2 - u / 2,
                    n.tooltipPosition.moveXCrosshairs(c + g / 2),
                    a > o.globals.gridWidth / 2 && (a = c - n.tooltipRect.ttWidth / 2 + g),
                    n.w.config.tooltip.followCursor) {
                        var f = n.getElGrid().getBoundingClientRect();
                        (a = n.e.clientX - f.left + 10) > o.globals.gridWidth / 2 && (a = a - n.tooltipRect.ttWidth - 10),
                        s = n.e.clientY - f.top + o.globals.translateY / 2 - 10
                    }
                }
                return {
                    x: a,
                    y: s
                }
            }
        }, {
            key: "handleMarkerTooltip",
            value: function(t) {
                var e, i, a = t.e, s = t.opt, r = t.x, n = t.y, o = this.w, l = this.ttCtx;
                if (a.target.classList.contains("apexcharts-marker")) {
                    var h = parseInt(s.paths.getAttribute("cx"), 10)
                      , c = parseInt(s.paths.getAttribute("cy"), 10)
                      , d = parseFloat(s.paths.getAttribute("val"));
                    if (i = parseInt(s.paths.getAttribute("rel"), 10),
                    e = parseInt(s.paths.parentNode.parentNode.parentNode.getAttribute("rel"), 10) - 1,
                    l.intersect) {
                        var g = f.findAncestor(s.paths, "apexcharts-series");
                        g && (e = parseInt(g.getAttribute("data:realIndex"), 10))
                    }
                    if (l.tooltipLabels.drawSeriesTexts({
                        ttItems: s.ttItems,
                        i: e,
                        j: i,
                        shared: !l.showOnIntersect && o.config.tooltip.shared,
                        e: a
                    }),
                    "mouseup" === a.type && l.markerClick(a, e, i),
                    o.globals.capturedSeriesIndex = e,
                    o.globals.capturedDataPointIndex = i,
                    r = h,
                    n = c + o.globals.translateY - 1.4 * l.tooltipRect.ttHeight,
                    l.w.config.tooltip.followCursor) {
                        var u = l.getElGrid().getBoundingClientRect();
                        n = l.e.clientY + o.globals.translateY - u.top
                    }
                    d < 0 && (n = c),
                    l.marker.enlargeCurrentPoint(i, s.paths, r, n)
                }
                return {
                    x: r,
                    y: n
                }
            }
        }, {
            key: "handleBarTooltip",
            value: function(t) {
                var e, i, a = t.e, s = t.opt, r = this.w, n = this.ttCtx, o = n.getElTooltip(), l = 0, h = 0, c = 0, d = this.getBarTooltipXY({
                    e: a,
                    opt: s
                });
                e = d.i;
                var g = d.barHeight
                  , u = d.j;
                if (r.globals.capturedSeriesIndex = e,
                r.globals.capturedDataPointIndex = u,
                r.globals.isBarHorizontal && n.tooltipUtil.hasBars() || !r.config.tooltip.shared ? (h = d.x,
                c = d.y,
                i = Array.isArray(r.config.stroke.width) ? r.config.stroke.width[e] : r.config.stroke.width,
                l = h) : r.globals.comboCharts || r.config.tooltip.shared || (l /= 2),
                isNaN(c) ? c = r.globals.svgHeight - n.tooltipRect.ttHeight : c < 0 && (c = 0),
                h + n.tooltipRect.ttWidth > r.globals.gridWidth ? h -= n.tooltipRect.ttWidth : h < 0 && (h = 0),
                n.w.config.tooltip.followCursor) {
                    var f = n.getElGrid().getBoundingClientRect();
                    c = n.e.clientY - f.top
                }
                if (null === n.tooltip && (n.tooltip = r.globals.dom.baseEl.querySelector(".apexcharts-tooltip")),
                r.config.tooltip.shared || (r.globals.comboBarCount > 0 ? n.tooltipPosition.moveXCrosshairs(l + i / 2) : n.tooltipPosition.moveXCrosshairs(l)),
                !n.fixedTooltip && (!r.config.tooltip.shared || r.globals.isBarHorizontal && n.tooltipUtil.hasBars())) {
                    var p = r.globals.isMultipleYAxis ? r.config.yaxis[x] && r.config.yaxis[x].reversed : r.config.yaxis[0].reversed;
                    p && (h -= n.tooltipRect.ttWidth) < 0 && (h = 0),
                    o.style.left = h + r.globals.translateX + "px";
                    var x = parseInt(s.paths.parentNode.getAttribute("data:realIndex"), 10);
                    !p || r.globals.isBarHorizontal && n.tooltipUtil.hasBars() || (c = c + g - 2 * (r.globals.series[e][u] < 0 ? g : 0)),
                    n.tooltipRect.ttHeight + c > r.globals.gridHeight ? (c = r.globals.gridHeight - n.tooltipRect.ttHeight + r.globals.translateY,
                    o.style.top = c + "px") : o.style.top = c + r.globals.translateY - n.tooltipRect.ttHeight / 2 + "px"
                }
            }
        }, {
            key: "getBarTooltipXY",
            value: function(t) {
                var e = t.e
                  , i = t.opt
                  , a = this.w
                  , s = null
                  , r = this.ttCtx
                  , n = 0
                  , o = 0
                  , l = 0
                  , h = 0
                  , c = 0
                  , d = e.target.classList;
                if (d.contains("apexcharts-bar-area") || d.contains("apexcharts-candlestick-area") || d.contains("apexcharts-rangebar-area")) {
                    var g = e.target
                      , u = g.getBoundingClientRect()
                      , f = i.elGrid.getBoundingClientRect()
                      , p = u.height;
                    c = u.height;
                    var x = u.width
                      , b = parseInt(g.getAttribute("cx"), 10)
                      , m = parseInt(g.getAttribute("cy"), 10);
                    h = parseFloat(g.getAttribute("barWidth"));
                    var v = "touchmove" === e.type ? e.touches[0].clientX : e.clientX;
                    s = parseInt(g.getAttribute("j"), 10),
                    n = parseInt(g.parentNode.getAttribute("rel"), 10) - 1;
                    var y = g.getAttribute("data-range-y1")
                      , w = g.getAttribute("data-range-y2");
                    a.globals.comboCharts && (n = parseInt(g.parentNode.getAttribute("data:realIndex"), 10)),
                    r.tooltipLabels.drawSeriesTexts({
                        ttItems: i.ttItems,
                        i: n,
                        j: s,
                        y1: y ? parseInt(y, 10) : null,
                        y2: w ? parseInt(w, 10) : null,
                        shared: !r.showOnIntersect && a.config.tooltip.shared,
                        e: e
                    }),
                    a.config.tooltip.followCursor ? a.globals.isBarHorizontal ? (o = v - f.left + 15,
                    l = m - r.dataPointsDividedHeight + p / 2 - r.tooltipRect.ttHeight / 2) : (o = a.globals.isXNumeric ? b - x / 2 : b - r.dataPointsDividedWidth + x / 2,
                    l = e.clientY - f.top - r.tooltipRect.ttHeight / 2 - 15) : a.globals.isBarHorizontal ? ((o = b) < r.xyRatios.baseLineInvertedY && (o = b - r.tooltipRect.ttWidth),
                    l = m - r.dataPointsDividedHeight + p / 2 - r.tooltipRect.ttHeight / 2) : (o = a.globals.isXNumeric ? b - x / 2 : b - r.dataPointsDividedWidth + x / 2,
                    l = m)
                }
                return {
                    x: o,
                    y: l,
                    barHeight: c,
                    barWidth: h,
                    i: n,
                    j: s
                }
            }
        }]),
        t
    }()
      , xt = function() {
        function t(i) {
            e(this, t),
            this.w = i.w,
            this.ttCtx = i
        }
        return a(t, [{
            key: "drawXaxisTooltip",
            value: function() {
                var t = this.w
                  , e = this.ttCtx
                  , i = "bottom" === t.config.xaxis.position;
                e.xaxisOffY = i ? t.globals.gridHeight + 1 : -t.globals.xAxisHeight - t.config.xaxis.axisTicks.height + 3;
                var a = i ? "apexcharts-xaxistooltip apexcharts-xaxistooltip-bottom" : "apexcharts-xaxistooltip apexcharts-xaxistooltip-top"
                  , s = t.globals.dom.elWrap;
                e.blxaxisTooltip && (null === t.globals.dom.baseEl.querySelector(".apexcharts-xaxistooltip") && (e.xaxisTooltip = document.createElement("div"),
                e.xaxisTooltip.setAttribute("class", a + " apexcharts-theme-" + t.config.tooltip.theme),
                s.appendChild(e.xaxisTooltip),
                e.xaxisTooltipText = document.createElement("div"),
                e.xaxisTooltipText.classList.add("apexcharts-xaxistooltip-text"),
                e.xaxisTooltipText.style.fontFamily = t.config.xaxis.tooltip.style.fontFamily || t.config.chart.fontFamily,
                e.xaxisTooltipText.style.fontSize = t.config.xaxis.tooltip.style.fontSize,
                e.xaxisTooltip.appendChild(e.xaxisTooltipText)))
            }
        }, {
            key: "drawYaxisTooltip",
            value: function() {
                for (var t = this.w, e = this.ttCtx, i = function(i) {
                    var a = t.config.yaxis[i].opposite || t.config.yaxis[i].crosshairs.opposite;
                    e.yaxisOffX = a ? t.globals.gridWidth + 1 : 1;
                    var s = "apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i, a ? " apexcharts-yaxistooltip-right" : " apexcharts-yaxistooltip-left");
                    t.globals.yAxisSameScaleIndices.map((function(e, a) {
                        e.map((function(e, a) {
                            a === i && (s += t.config.yaxis[a].show ? " " : " apexcharts-yaxistooltip-hidden")
                        }
                        ))
                    }
                    ));
                    var r = t.globals.dom.elWrap;
                    null === t.globals.dom.baseEl.querySelector(".apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i)) && (e.yaxisTooltip = document.createElement("div"),
                    e.yaxisTooltip.setAttribute("class", s + " apexcharts-theme-" + t.config.tooltip.theme),
                    r.appendChild(e.yaxisTooltip),
                    0 === i && (e.yaxisTooltipText = []),
                    e.yaxisTooltipText[i] = document.createElement("div"),
                    e.yaxisTooltipText[i].classList.add("apexcharts-yaxistooltip-text"),
                    e.yaxisTooltip.appendChild(e.yaxisTooltipText[i]))
                }, a = 0; a < t.config.yaxis.length; a++)
                    i(a)
            }
        }, {
            key: "setXCrosshairWidth",
            value: function() {
                var t = this.w
                  , e = this.ttCtx
                  , i = e.getElXCrosshairs();
                if (e.xcrosshairsWidth = parseInt(t.config.xaxis.crosshairs.width, 10),
                t.globals.comboCharts) {
                    var a = t.globals.dom.baseEl.querySelector(".apexcharts-bar-area");
                    if (null !== a && "barWidth" === t.config.xaxis.crosshairs.width) {
                        var s = parseFloat(a.getAttribute("barWidth"));
                        e.xcrosshairsWidth = s
                    } else if ("tickWidth" === t.config.xaxis.crosshairs.width) {
                        var r = t.globals.labels.length;
                        e.xcrosshairsWidth = t.globals.gridWidth / r
                    }
                } else if ("tickWidth" === t.config.xaxis.crosshairs.width) {
                    var n = t.globals.labels.length;
                    e.xcrosshairsWidth = t.globals.gridWidth / n
                } else if ("barWidth" === t.config.xaxis.crosshairs.width) {
                    var o = t.globals.dom.baseEl.querySelector(".apexcharts-bar-area");
                    if (null !== o) {
                        var l = parseFloat(o.getAttribute("barWidth"));
                        e.xcrosshairsWidth = l
                    } else
                        e.xcrosshairsWidth = 1
                }
                t.globals.isBarHorizontal && (e.xcrosshairsWidth = 0),
                null !== i && e.xcrosshairsWidth > 0 && i.setAttribute("width", e.xcrosshairsWidth)
            }
        }, {
            key: "handleYCrosshair",
            value: function() {
                var t = this.w
                  , e = this.ttCtx;
                e.ycrosshairs = t.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs"),
                e.ycrosshairsHidden = t.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs-hidden")
            }
        }, {
            key: "drawYaxisTooltipText",
            value: function(t, e, i) {
                var a = this.ttCtx
                  , s = this.w
                  , r = s.globals.yLabelFormatters[t];
                if (a.yaxisTooltips[t]) {
                    var n = a.getElGrid().getBoundingClientRect()
                      , o = (e - n.top) * i.yRatio[t]
                      , l = s.globals.maxYArr[t] - s.globals.minYArr[t]
                      , h = s.globals.minYArr[t] + (l - o);
                    a.tooltipPosition.moveYCrosshairs(e - n.top),
                    a.yaxisTooltipText[t].innerHTML = r(h),
                    a.tooltipPosition.moveYAxisTooltip(t)
                }
            }
        }]),
        t
    }()
      , bt = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w;
            var a = this.w;
            this.tConfig = a.config.tooltip,
            this.tooltipUtil = new dt(this),
            this.tooltipLabels = new gt(this),
            this.tooltipPosition = new ut(this),
            this.marker = new ft(this),
            this.intersect = new pt(this),
            this.axesTooltip = new xt(this),
            this.showOnIntersect = this.tConfig.intersect,
            this.showTooltipTitle = this.tConfig.x.show,
            this.fixedTooltip = this.tConfig.fixed.enabled,
            this.xaxisTooltip = null,
            this.yaxisTTEls = null,
            this.isBarShared = !a.globals.isBarHorizontal && this.tConfig.shared
        }
        return a(t, [{
            key: "getElTooltip",
            value: function(t) {
                return t || (t = this),
                t.w.globals.dom.baseEl.querySelector(".apexcharts-tooltip")
            }
        }, {
            key: "getElXCrosshairs",
            value: function() {
                return this.w.globals.dom.baseEl.querySelector(".apexcharts-xcrosshairs")
            }
        }, {
            key: "getElGrid",
            value: function() {
                return this.w.globals.dom.baseEl.querySelector(".apexcharts-grid")
            }
        }, {
            key: "drawTooltip",
            value: function(t) {
                var e = this.w;
                this.xyRatios = t,
                this.blxaxisTooltip = e.config.xaxis.tooltip.enabled && e.globals.axisCharts,
                this.yaxisTooltips = e.config.yaxis.map((function(t, i) {
                    return !!(t.show && t.tooltip.enabled && e.globals.axisCharts)
                }
                )),
                this.allTooltipSeriesGroups = [],
                e.globals.axisCharts || (this.showTooltipTitle = !1);
                var i = document.createElement("div");
                if (i.classList.add("apexcharts-tooltip"),
                i.classList.add("apexcharts-theme-".concat(this.tConfig.theme)),
                e.globals.dom.elWrap.appendChild(i),
                e.globals.axisCharts) {
                    this.axesTooltip.drawXaxisTooltip(),
                    this.axesTooltip.drawYaxisTooltip(),
                    this.axesTooltip.setXCrosshairWidth(),
                    this.axesTooltip.handleYCrosshair();
                    var a = new G(this.ctx);
                    this.xAxisTicksPositions = a.getXAxisTicksPositions()
                }
                if (!e.globals.comboCharts && !this.tConfig.intersect && "bar" !== e.config.chart.type && "rangeBar" !== e.config.chart.type || this.tConfig.shared || (this.showOnIntersect = !0),
                0 !== e.config.markers.size && 0 !== e.globals.markers.largestSize || this.marker.drawDynamicPoints(this),
                e.globals.collapsedSeries.length !== e.globals.series.length) {
                    this.dataPointsDividedHeight = e.globals.gridHeight / e.globals.dataPoints,
                    this.dataPointsDividedWidth = e.globals.gridWidth / e.globals.dataPoints,
                    this.showTooltipTitle && (this.tooltipTitle = document.createElement("div"),
                    this.tooltipTitle.classList.add("apexcharts-tooltip-title"),
                    this.tooltipTitle.style.fontFamily = this.tConfig.style.fontFamily || e.config.chart.fontFamily,
                    this.tooltipTitle.style.fontSize = this.tConfig.style.fontSize,
                    i.appendChild(this.tooltipTitle));
                    var s = e.globals.series.length;
                    (e.globals.xyCharts || e.globals.comboCharts) && this.tConfig.shared && (s = this.showOnIntersect ? 1 : e.globals.series.length),
                    this.legendLabels = e.globals.dom.baseEl.querySelectorAll(".apexcharts-legend-text"),
                    this.ttItems = this.createTTElements(s),
                    this.addSVGEvents()
                }
            }
        }, {
            key: "createTTElements",
            value: function(t) {
                for (var e = this.w, i = [], a = this.getElTooltip(), s = 0; s < t; s++) {
                    var r = document.createElement("div");
                    r.classList.add("apexcharts-tooltip-series-group"),
                    r.style.order = e.config.tooltip.inverseOrder ? t - s : s + 1,
                    this.tConfig.shared && this.tConfig.enabledOnSeries && Array.isArray(this.tConfig.enabledOnSeries) && this.tConfig.enabledOnSeries.indexOf(s) < 0 && r.classList.add("apexcharts-tooltip-series-group-hidden");
                    var n = document.createElement("span");
                    n.classList.add("apexcharts-tooltip-marker"),
                    n.style.backgroundColor = e.globals.colors[s],
                    r.appendChild(n);
                    var o = document.createElement("div");
                    o.classList.add("apexcharts-tooltip-text"),
                    o.style.fontFamily = this.tConfig.style.fontFamily || e.config.chart.fontFamily,
                    o.style.fontSize = this.tConfig.style.fontSize;
                    var l = document.createElement("div");
                    l.classList.add("apexcharts-tooltip-y-group");
                    var h = document.createElement("span");
                    h.classList.add("apexcharts-tooltip-text-label"),
                    l.appendChild(h);
                    var c = document.createElement("span");
                    c.classList.add("apexcharts-tooltip-text-value"),
                    l.appendChild(c);
                    var d = document.createElement("div");
                    d.classList.add("apexcharts-tooltip-z-group");
                    var g = document.createElement("span");
                    g.classList.add("apexcharts-tooltip-text-z-label"),
                    d.appendChild(g);
                    var u = document.createElement("span");
                    u.classList.add("apexcharts-tooltip-text-z-value"),
                    d.appendChild(u),
                    o.appendChild(l),
                    o.appendChild(d),
                    r.appendChild(o),
                    a.appendChild(r),
                    i.push(r)
                }
                return i
            }
        }, {
            key: "addSVGEvents",
            value: function() {
                var t = this.w
                  , e = t.config.chart.type
                  , i = this.getElTooltip()
                  , a = !("bar" !== e && "candlestick" !== e && "rangeBar" !== e)
                  , s = "area" === e || "line" === e || "scatter" === e || "bubble" === e || "radar" === e
                  , r = t.globals.dom.Paper.node
                  , n = this.getElGrid();
                n && (this.seriesBound = n.getBoundingClientRect());
                var o, l = [], h = [], c = {
                    hoverArea: r,
                    elGrid: n,
                    tooltipEl: i,
                    tooltipY: l,
                    tooltipX: h,
                    ttItems: this.ttItems
                };
                if (t.globals.axisCharts && (s ? o = t.globals.dom.baseEl.querySelectorAll(".apexcharts-series[data\\:longestSeries='true'] .apexcharts-marker") : a ? o = t.globals.dom.baseEl.querySelectorAll(".apexcharts-series .apexcharts-bar-area, .apexcharts-series .apexcharts-candlestick-area, .apexcharts-series .apexcharts-rangebar-area") : "heatmap" !== e && "treemap" !== e || (o = t.globals.dom.baseEl.querySelectorAll(".apexcharts-series .apexcharts-heatmap, .apexcharts-series .apexcharts-treemap")),
                o && o.length))
                    for (var d = 0; d < o.length; d++)
                        l.push(o[d].getAttribute("cy")),
                        h.push(o[d].getAttribute("cx"));
                if (t.globals.xyCharts && !this.showOnIntersect || t.globals.comboCharts && !this.showOnIntersect || a && this.tooltipUtil.hasBars() && this.tConfig.shared)
                    this.addPathsEventListeners([r], c);
                else if (a && !t.globals.comboCharts || s && this.showOnIntersect)
                    this.addDatapointEventsListeners(c);
                else if (!t.globals.axisCharts || "heatmap" === e || "treemap" === e) {
                    var g = t.globals.dom.baseEl.querySelectorAll(".apexcharts-series");
                    this.addPathsEventListeners(g, c)
                }
                if (this.showOnIntersect) {
                    var u = t.globals.dom.baseEl.querySelectorAll(".apexcharts-line-series .apexcharts-marker, .apexcharts-area-series .apexcharts-marker");
                    u.length > 0 && this.addPathsEventListeners(u, c),
                    this.tooltipUtil.hasBars() && !this.tConfig.shared && this.addDatapointEventsListeners(c)
                }
            }
        }, {
            key: "drawFixedTooltipRect",
            value: function() {
                var t = this.w
                  , e = this.getElTooltip()
                  , i = e.getBoundingClientRect()
                  , a = i.width + 10
                  , s = i.height + 10
                  , r = this.tConfig.fixed.offsetX
                  , n = this.tConfig.fixed.offsetY
                  , o = this.tConfig.fixed.position.toLowerCase();
                return o.indexOf("right") > -1 && (r = r + t.globals.svgWidth - a + 10),
                o.indexOf("bottom") > -1 && (n = n + t.globals.svgHeight - s - 10),
                e.style.left = r + "px",
                e.style.top = n + "px",
                {
                    x: r,
                    y: n,
                    ttWidth: a,
                    ttHeight: s
                }
            }
        }, {
            key: "addDatapointEventsListeners",
            value: function(t) {
                var e = this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers .apexcharts-marker, .apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-rangebar-area");
                this.addPathsEventListeners(e, t)
            }
        }, {
            key: "addPathsEventListeners",
            value: function(t, e) {
                for (var i = this, a = function(a) {
                    var s = {
                        paths: t[a],
                        tooltipEl: e.tooltipEl,
                        tooltipY: e.tooltipY,
                        tooltipX: e.tooltipX,
                        elGrid: e.elGrid,
                        hoverArea: e.hoverArea,
                        ttItems: e.ttItems
                    };
                    ["mousemove", "mouseup", "touchmove", "mouseout", "touchend"].map((function(e) {
                        return t[a].addEventListener(e, i.seriesHover.bind(i, s), {
                            capture: !1,
                            passive: !0
                        })
                    }
                    ))
                }, s = 0; s < t.length; s++)
                    a(s)
            }
        }, {
            key: "seriesHover",
            value: function(t, e) {
                var i = this
                  , a = []
                  , s = this.w;
                s.config.chart.group && (a = this.ctx.getGroupedCharts()),
                s.globals.axisCharts && (s.globals.minX === -1 / 0 && s.globals.maxX === 1 / 0 || 0 === s.globals.dataPoints) || (a.length ? a.forEach((function(a) {
                    var s = i.getElTooltip(a)
                      , r = {
                        paths: t.paths,
                        tooltipEl: s,
                        tooltipY: t.tooltipY,
                        tooltipX: t.tooltipX,
                        elGrid: t.elGrid,
                        hoverArea: t.hoverArea,
                        ttItems: a.w.globals.tooltip.ttItems
                    };
                    a.w.globals.minX === i.w.globals.minX && a.w.globals.maxX === i.w.globals.maxX && a.w.globals.tooltip.seriesHoverByContext({
                        chartCtx: a,
                        ttCtx: a.w.globals.tooltip,
                        opt: r,
                        e: e
                    })
                }
                )) : this.seriesHoverByContext({
                    chartCtx: this.ctx,
                    ttCtx: this.w.globals.tooltip,
                    opt: t,
                    e: e
                }))
            }
        }, {
            key: "seriesHoverByContext",
            value: function(t) {
                var e = t.chartCtx
                  , i = t.ttCtx
                  , a = t.opt
                  , s = t.e
                  , r = e.w
                  , n = this.getElTooltip();
                (i.tooltipRect = {
                    x: 0,
                    y: 0,
                    ttWidth: n.getBoundingClientRect().width,
                    ttHeight: n.getBoundingClientRect().height
                },
                i.e = s,
                !i.tooltipUtil.hasBars() || r.globals.comboCharts || i.isBarShared) || this.tConfig.onDatasetHover.highlightDataSeries && new M(e).toggleSeriesOnHover(s, s.target.parentNode);
                i.fixedTooltip && i.drawFixedTooltipRect(),
                r.globals.axisCharts ? i.axisChartsTooltips({
                    e: s,
                    opt: a,
                    tooltipRect: i.tooltipRect
                }) : i.nonAxisChartsTooltips({
                    e: s,
                    opt: a,
                    tooltipRect: i.tooltipRect
                })
            }
        }, {
            key: "axisChartsTooltips",
            value: function(t) {
                var e, i, a = t.e, s = t.opt, r = this.w, n = s.elGrid.getBoundingClientRect(), o = "touchmove" === a.type ? a.touches[0].clientX : a.clientX, l = "touchmove" === a.type ? a.touches[0].clientY : a.clientY;
                if (this.clientY = l,
                this.clientX = o,
                r.globals.capturedSeriesIndex = -1,
                r.globals.capturedDataPointIndex = -1,
                l < n.top || l > n.top + n.height)
                    this.handleMouseOut(s);
                else {
                    if (Array.isArray(this.tConfig.enabledOnSeries) && !r.config.tooltip.shared) {
                        var h = parseInt(s.paths.getAttribute("index"), 10);
                        if (this.tConfig.enabledOnSeries.indexOf(h) < 0)
                            return void this.handleMouseOut(s)
                    }
                    var c = this.getElTooltip()
                      , d = this.getElXCrosshairs()
                      , g = r.globals.xyCharts || "bar" === r.config.chart.type && !r.globals.isBarHorizontal && this.tooltipUtil.hasBars() && this.tConfig.shared || r.globals.comboCharts && this.tooltipUtil.hasBars();
                    if (r.globals.isBarHorizontal && this.tooltipUtil.hasBars() && (g = !1),
                    "mousemove" === a.type || "touchmove" === a.type || "mouseup" === a.type) {
                        null !== d && d.classList.add("apexcharts-active");
                        var u = this.yaxisTooltips.filter((function(t) {
                            return !0 === t
                        }
                        ));
                        if (null !== this.ycrosshairs && u.length && this.ycrosshairs.classList.add("apexcharts-active"),
                        g && !this.showOnIntersect)
                            this.handleStickyTooltip(a, o, l, s);
                        else if ("heatmap" === r.config.chart.type || "treemap" === r.config.chart.type) {
                            var f = this.intersect.handleHeatTreeTooltip({
                                e: a,
                                opt: s,
                                x: e,
                                y: i,
                                type: r.config.chart.type
                            });
                            e = f.x,
                            i = f.y,
                            c.style.left = e + "px",
                            c.style.top = i + "px"
                        } else
                            this.tooltipUtil.hasBars() && this.intersect.handleBarTooltip({
                                e: a,
                                opt: s
                            }),
                            this.tooltipUtil.hasMarkers() && this.intersect.handleMarkerTooltip({
                                e: a,
                                opt: s,
                                x: e,
                                y: i
                            });
                        if (this.yaxisTooltips.length)
                            for (var p = 0; p < r.config.yaxis.length; p++)
                                this.axesTooltip.drawYaxisTooltipText(p, l, this.xyRatios);
                        s.tooltipEl.classList.add("apexcharts-active")
                    } else
                        "mouseout" !== a.type && "touchend" !== a.type || this.handleMouseOut(s)
                }
            }
        }, {
            key: "nonAxisChartsTooltips",
            value: function(t) {
                var e = t.e
                  , i = t.opt
                  , a = t.tooltipRect
                  , s = this.w
                  , r = i.paths.getAttribute("rel")
                  , n = this.getElTooltip()
                  , o = s.globals.dom.elWrap.getBoundingClientRect();
                if ("mousemove" === e.type || "touchmove" === e.type) {
                    n.classList.add("apexcharts-active"),
                    this.tooltipLabels.drawSeriesTexts({
                        ttItems: i.ttItems,
                        i: parseInt(r, 10) - 1,
                        shared: !1
                    });
                    var l = s.globals.clientX - o.left - a.ttWidth / 2
                      , h = s.globals.clientY - o.top - a.ttHeight - 10;
                    n.style.left = l + "px",
                    n.style.top = h + "px"
                } else
                    "mouseout" !== e.type && "touchend" !== e.type || n.classList.remove("apexcharts-active")
            }
        }, {
            key: "handleStickyTooltip",
            value: function(t, e, i, a) {
                var s = this.w
                  , r = this.tooltipUtil.getNearestValues({
                    context: this,
                    hoverArea: a.hoverArea,
                    elGrid: a.elGrid,
                    clientX: e,
                    clientY: i
                })
                  , n = r.j
                  , o = r.capturedSeries;
                r.hoverX < 0 || r.hoverX > s.globals.gridWidth ? this.handleMouseOut(a) : null !== o ? this.handleStickyCapturedSeries(t, o, a, n) : this.tooltipUtil.isXoverlap(n) && this.create(t, this, 0, n, a.ttItems)
            }
        }, {
            key: "handleStickyCapturedSeries",
            value: function(t, e, i, a) {
                var s = this.w;
                null === s.globals.series[e][a] ? this.handleMouseOut(i) : void 0 !== s.globals.series[e][a] ? this.tConfig.shared && this.tooltipUtil.isXoverlap(a) && this.tooltipUtil.isInitialSeriesSameLen() ? this.create(t, this, e, a, i.ttItems) : this.create(t, this, e, a, i.ttItems, !1) : this.tooltipUtil.isXoverlap(a) && this.create(t, this, 0, a, i.ttItems)
            }
        }, {
            key: "deactivateHoverFilter",
            value: function() {
                for (var t = this.w, e = new b(this.ctx), i = t.globals.dom.Paper.select(".apexcharts-bar-area"), a = 0; a < i.length; a++)
                    e.pathMouseLeave(i[a])
            }
        }, {
            key: "handleMouseOut",
            value: function(t) {
                var e = this.w
                  , i = this.getElXCrosshairs();
                if (t.tooltipEl.classList.remove("apexcharts-active"),
                this.deactivateHoverFilter(),
                "bubble" !== e.config.chart.type && this.marker.resetPointsSize(),
                null !== i && i.classList.remove("apexcharts-active"),
                null !== this.ycrosshairs && this.ycrosshairs.classList.remove("apexcharts-active"),
                this.blxaxisTooltip && this.xaxisTooltip.classList.remove("apexcharts-active"),
                this.yaxisTooltips.length) {
                    null === this.yaxisTTEls && (this.yaxisTTEls = e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxistooltip"));
                    for (var a = 0; a < this.yaxisTTEls.length; a++)
                        this.yaxisTTEls[a].classList.remove("apexcharts-active")
                }
                e.config.legend.tooltipHoverFormatter && this.legendLabels.forEach((function(t) {
                    var e = t.getAttribute("data:default-text");
                    t.innerHTML = decodeURIComponent(e)
                }
                ))
            }
        }, {
            key: "markerClick",
            value: function(t, e, i) {
                var a = this.w;
                "function" == typeof a.config.chart.events.markerClick && a.config.chart.events.markerClick(t, this.ctx, {
                    seriesIndex: e,
                    dataPointIndex: i,
                    w: a
                }),
                this.ctx.events.fireEvent("markerClick", [t, this.ctx, {
                    seriesIndex: e,
                    dataPointIndex: i,
                    w: a
                }])
            }
        }, {
            key: "create",
            value: function(t, e, i, a, s) {
                var r = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : null
                  , n = this.w
                  , o = e;
                "mouseup" === t.type && this.markerClick(t, i, a),
                null === r && (r = this.tConfig.shared);
                var l = this.tooltipUtil.hasMarkers()
                  , h = this.tooltipUtil.getElBars();
                if (n.config.legend.tooltipHoverFormatter) {
                    var c = n.config.legend.tooltipHoverFormatter
                      , d = Array.from(this.legendLabels);
                    d.forEach((function(t) {
                        var e = t.getAttribute("data:default-text");
                        t.innerHTML = decodeURIComponent(e)
                    }
                    ));
                    for (var g = 0; g < d.length; g++) {
                        var u = d[g]
                          , f = parseInt(u.getAttribute("i"), 10)
                          , p = decodeURIComponent(u.getAttribute("data:default-text"))
                          , x = c(p, {
                            seriesIndex: r ? f : i,
                            dataPointIndex: a,
                            w: n
                        });
                        if (r)
                            u.innerHTML = n.globals.collapsedSeriesIndices.indexOf(f) < 0 ? x : p;
                        else if (u.innerHTML = f === i ? x : p,
                        i === f)
                            break
                    }
                }
                if (r) {
                    if (o.tooltipLabels.drawSeriesTexts({
                        ttItems: s,
                        i: i,
                        j: a,
                        shared: !this.showOnIntersect && this.tConfig.shared
                    }),
                    l && (n.globals.markers.largestSize > 0 ? o.marker.enlargePoints(a) : o.tooltipPosition.moveDynamicPointsOnHover(a)),
                    this.tooltipUtil.hasBars() && (this.barSeriesHeight = this.tooltipUtil.getBarsHeight(h),
                    this.barSeriesHeight > 0)) {
                        var m = new b(this.ctx)
                          , v = n.globals.dom.Paper.select(".apexcharts-bar-area[j='".concat(a, "']"));
                        this.deactivateHoverFilter(),
                        this.tooltipPosition.moveStickyTooltipOverBars(a);
                        for (var y = 0; y < v.length; y++)
                            m.pathMouseEnter(v[y])
                    }
                } else
                    o.tooltipLabels.drawSeriesTexts({
                        shared: !1,
                        ttItems: s,
                        i: i,
                        j: a
                    }),
                    this.tooltipUtil.hasBars() && o.tooltipPosition.moveStickyTooltipOverBars(a),
                    l && o.tooltipPosition.moveMarkers(i, a)
            }
        }]),
        t
    }()
      , mt = function(t) {
        o(s, t);
        var i = d(s);
        function s() {
            return e(this, s),
            i.apply(this, arguments)
        }
        return a(s, [{
            key: "draw",
            value: function(t, e) {
                var i = this
                  , a = this.w;
                this.graphics = new b(this.ctx),
                this.bar = new X(this.ctx,this.xyRatios);
                var s = new y(this.ctx,a);
                t = s.getLogSeries(t),
                this.yRatio = s.getLogYRatios(this.yRatio),
                this.barHelpers.initVariables(t),
                "100%" === a.config.chart.stackType && (t = a.globals.seriesPercent.slice()),
                this.series = t,
                this.totalItems = 0,
                this.prevY = [],
                this.prevX = [],
                this.prevYF = [],
                this.prevXF = [],
                this.prevYVal = [],
                this.prevXVal = [],
                this.xArrj = [],
                this.xArrjF = [],
                this.xArrjVal = [],
                this.yArrj = [],
                this.yArrjF = [],
                this.yArrjVal = [];
                for (var r = 0; r < t.length; r++)
                    t[r].length > 0 && (this.totalItems += t[r].length);
                for (var o = this.graphics.group({
                    class: "apexcharts-bar-series apexcharts-plot-series"
                }), l = 0, h = 0, c = function(s, r) {
                    var c = void 0
                      , d = void 0
                      , g = void 0
                      , u = void 0
                      , p = []
                      , x = []
                      , b = a.globals.comboCharts ? e[s] : s;
                    i.yRatio.length > 1 && (i.yaxisIndex = b),
                    i.isReversed = a.config.yaxis[i.yaxisIndex] && a.config.yaxis[i.yaxisIndex].reversed;
                    var m = i.graphics.group({
                        class: "apexcharts-series",
                        seriesName: f.escapeString(a.globals.seriesNames[b]),
                        rel: s + 1,
                        "data:realIndex": b
                    });
                    i.ctx.series.addCollapsedClassToSeries(m, b);
                    var v = i.graphics.group({
                        class: "apexcharts-datalabels",
                        "data:realIndex": b
                    })
                      , y = 0
                      , w = 0
                      , k = i.initialPositions(l, h, c, d, g, u);
                    h = k.y,
                    y = k.barHeight,
                    d = k.yDivision,
                    u = k.zeroW,
                    l = k.x,
                    w = k.barWidth,
                    c = k.xDivision,
                    g = k.zeroH,
                    i.yArrj = [],
                    i.yArrjF = [],
                    i.yArrjVal = [],
                    i.xArrj = [],
                    i.xArrjF = [],
                    i.xArrjVal = [],
                    1 === i.prevY.length && i.prevY[0].every((function(t) {
                        return isNaN(t)
                    }
                    )) && (i.prevY[0] = i.prevY[0].map((function(t) {
                        return g
                    }
                    )),
                    i.prevYF[0] = i.prevYF[0].map((function(t) {
                        return 0
                    }
                    )));
                    for (var A = 0; A < a.globals.dataPoints; A++) {
                        var S = i.barHelpers.getStrokeWidth(s, A, b)
                          , C = {
                            indexes: {
                                i: s,
                                j: A,
                                realIndex: b,
                                bc: r
                            },
                            strokeWidth: S,
                            x: l,
                            y: h,
                            elSeries: m
                        }
                          , L = null;
                        i.isHorizontal ? (L = i.drawStackedBarPaths(n(n({}, C), {}, {
                            zeroW: u,
                            barHeight: y,
                            yDivision: d
                        })),
                        w = i.series[s][A] / i.invertedYRatio) : (L = i.drawStackedColumnPaths(n(n({}, C), {}, {
                            xDivision: c,
                            barWidth: w,
                            zeroH: g
                        })),
                        y = i.series[s][A] / i.yRatio[i.yaxisIndex]),
                        h = L.y,
                        l = L.x,
                        p.push(l),
                        x.push(h);
                        var P = i.barHelpers.getPathFillColor(t, s, A, b);
                        m = i.renderSeries({
                            realIndex: b,
                            pathFill: P,
                            j: A,
                            i: s,
                            pathFrom: L.pathFrom,
                            pathTo: L.pathTo,
                            strokeWidth: S,
                            elSeries: m,
                            x: l,
                            y: h,
                            series: t,
                            barHeight: y,
                            barWidth: w,
                            elDataLabelsWrap: v,
                            type: "bar",
                            visibleSeries: 0
                        })
                    }
                    a.globals.seriesXvalues[b] = p,
                    a.globals.seriesYvalues[b] = x,
                    i.prevY.push(i.yArrj),
                    i.prevYF.push(i.yArrjF),
                    i.prevYVal.push(i.yArrjVal),
                    i.prevX.push(i.xArrj),
                    i.prevXF.push(i.xArrjF),
                    i.prevXVal.push(i.xArrjVal),
                    o.add(m)
                }, d = 0, g = 0; d < t.length; d++,
                g++)
                    c(d, g);
                return o
            }
        }, {
            key: "initialPositions",
            value: function(t, e, i, a, s, r) {
                var n, o, l = this.w;
                return this.isHorizontal ? (n = (n = a = l.globals.gridHeight / l.globals.dataPoints) * parseInt(l.config.plotOptions.bar.barHeight, 10) / 100,
                r = this.baseLineInvertedY + l.globals.padHorizontal + (this.isReversed ? l.globals.gridWidth : 0) - (this.isReversed ? 2 * this.baseLineInvertedY : 0),
                e = (a - n) / 2) : (o = i = l.globals.gridWidth / l.globals.dataPoints,
                o = l.globals.isXNumeric && l.globals.dataPoints > 1 ? (i = l.globals.minXDiff / this.xRatio) * parseInt(this.barOptions.columnWidth, 10) / 100 : o * parseInt(l.config.plotOptions.bar.columnWidth, 10) / 100,
                s = this.baseLineY[this.yaxisIndex] + (this.isReversed ? l.globals.gridHeight : 0) - (this.isReversed ? 2 * this.baseLineY[this.yaxisIndex] : 0),
                t = l.globals.padHorizontal + (i - o) / 2),
                {
                    x: t,
                    y: e,
                    yDivision: a,
                    xDivision: i,
                    barHeight: n,
                    barWidth: o,
                    zeroH: s,
                    zeroW: r
                }
            }
        }, {
            key: "drawStackedBarPaths",
            value: function(t) {
                for (var e, i = t.indexes, a = t.barHeight, s = t.strokeWidth, r = t.zeroW, n = t.x, o = t.y, l = t.yDivision, h = t.elSeries, c = this.w, d = o, g = i.i, u = i.j, f = 0, p = 0; p < this.prevXF.length; p++)
                    f += this.prevXF[p][u];
                if (g > 0) {
                    var x = r;
                    this.prevXVal[g - 1][u] < 0 ? x = this.series[g][u] >= 0 ? this.prevX[g - 1][u] + f - 2 * (this.isReversed ? f : 0) : this.prevX[g - 1][u] : this.prevXVal[g - 1][u] >= 0 && (x = this.series[g][u] >= 0 ? this.prevX[g - 1][u] : this.prevX[g - 1][u] - f + 2 * (this.isReversed ? f : 0)),
                    e = x
                } else
                    e = r;
                n = null === this.series[g][u] ? e : e + this.series[g][u] / this.invertedYRatio - 2 * (this.isReversed ? this.series[g][u] / this.invertedYRatio : 0),
                this.xArrj.push(n),
                this.xArrjF.push(Math.abs(e - n)),
                this.xArrjVal.push(this.series[g][u]);
                var b = this.barHelpers.getBarpaths({
                    barYPosition: d,
                    barHeight: a,
                    x1: e,
                    x2: n,
                    strokeWidth: s,
                    series: this.series,
                    realIndex: i.realIndex,
                    i: g,
                    j: u,
                    w: c
                });
                return this.barHelpers.barBackground({
                    j: u,
                    i: g,
                    y1: d,
                    y2: a,
                    elSeries: h
                }),
                o += l,
                {
                    pathTo: b.pathTo,
                    pathFrom: b.pathFrom,
                    x: n,
                    y: o
                }
            }
        }, {
            key: "drawStackedColumnPaths",
            value: function(t) {
                var e = t.indexes
                  , i = t.x
                  , a = t.y
                  , s = t.xDivision
                  , r = t.barWidth
                  , n = t.zeroH
                  , o = (t.strokeWidth,
                t.elSeries)
                  , l = this.w
                  , h = e.i
                  , c = e.j
                  , d = e.bc;
                if (l.globals.isXNumeric) {
                    var g = l.globals.seriesX[h][c];
                    g || (g = 0),
                    i = (g - l.globals.minX) / this.xRatio - r / 2
                }
                for (var u, f = i, p = 0, x = 0; x < this.prevYF.length; x++)
                    p += isNaN(this.prevYF[x][c]) ? 0 : this.prevYF[x][c];
                if (h > 0 && !l.globals.isXNumeric || h > 0 && l.globals.isXNumeric && l.globals.seriesX[h - 1][c] === l.globals.seriesX[h][c]) {
                    var b, m, v = Math.min(this.yRatio.length + 1, h + 1);
                    if (void 0 !== this.prevY[h - 1])
                        for (var y = 1; y < v; y++)
                            if (!isNaN(this.prevY[h - y][c])) {
                                m = this.prevY[h - y][c];
                                break
                            }
                    for (var w = 1; w < v; w++) {
                        if (this.prevYVal[h - w][c] < 0) {
                            b = this.series[h][c] >= 0 ? m - p + 2 * (this.isReversed ? p : 0) : m;
                            break
                        }
                        if (this.prevYVal[h - w][c] >= 0) {
                            b = this.series[h][c] >= 0 ? m : m + p - 2 * (this.isReversed ? p : 0);
                            break
                        }
                    }
                    void 0 === b && (b = l.globals.gridHeight),
                    u = this.prevYF[0].every((function(t) {
                        return 0 === t
                    }
                    )) && this.prevYF.slice(1, h).every((function(t) {
                        return t.every((function(t) {
                            return isNaN(t)
                        }
                        ))
                    }
                    )) ? l.globals.gridHeight - n : b
                } else
                    u = l.globals.gridHeight - n;
                a = u - this.series[h][c] / this.yRatio[this.yaxisIndex] + 2 * (this.isReversed ? this.series[h][c] / this.yRatio[this.yaxisIndex] : 0),
                this.yArrj.push(a),
                this.yArrjF.push(Math.abs(u - a)),
                this.yArrjVal.push(this.series[h][c]);
                var k = this.barHelpers.getColumnPaths({
                    barXPosition: f,
                    barWidth: r,
                    y1: u,
                    y2: a,
                    yRatio: this.yRatio[this.yaxisIndex],
                    strokeWidth: this.strokeWidth,
                    series: this.series,
                    realIndex: e.realIndex,
                    i: h,
                    j: c,
                    w: l
                });
                return this.barHelpers.barBackground({
                    bc: d,
                    j: c,
                    i: h,
                    x1: f,
                    x2: r,
                    elSeries: o
                }),
                i += s,
                {
                    pathTo: k.pathTo,
                    pathFrom: k.pathFrom,
                    x: l.globals.isXNumeric ? i - s : i,
                    y: a
                }
            }
        }]),
        s
    }(X)
      , vt = function(t) {
        o(s, t);
        var i = d(s);
        function s() {
            return e(this, s),
            i.apply(this, arguments)
        }
        return a(s, [{
            key: "draw",
            value: function(t, e) {
                var i = this.w
                  , a = new b(this.ctx)
                  , s = new L(this.ctx);
                this.candlestickOptions = this.w.config.plotOptions.candlestick;
                var r = new y(this.ctx,i);
                t = r.getLogSeries(t),
                this.series = t,
                this.yRatio = r.getLogYRatios(this.yRatio),
                this.barHelpers.initVariables(t);
                for (var n = a.group({
                    class: "apexcharts-candlestick-series apexcharts-plot-series"
                }), o = 0; o < t.length; o++) {
                    var l, h, c = void 0, d = void 0, g = [], u = [], p = i.globals.comboCharts ? e[o] : o, x = a.group({
                        class: "apexcharts-series",
                        seriesName: f.escapeString(i.globals.seriesNames[p]),
                        rel: o + 1,
                        "data:realIndex": p
                    });
                    t[o].length > 0 && (this.visibleI = this.visibleI + 1);
                    var m, v;
                    this.yRatio.length > 1 && (this.yaxisIndex = p);
                    var w = this.barHelpers.initialPositions();
                    d = w.y,
                    m = w.barHeight,
                    c = w.x,
                    v = w.barWidth,
                    l = w.xDivision,
                    h = w.zeroH,
                    u.push(c + v / 2);
                    for (var k = a.group({
                        class: "apexcharts-datalabels",
                        "data:realIndex": p
                    }), A = 0; A < i.globals.dataPoints; A++) {
                        var S, C = this.barHelpers.getStrokeWidth(o, A, p), P = this.drawCandleStickPaths({
                            indexes: {
                                i: o,
                                j: A,
                                realIndex: p
                            },
                            x: c,
                            y: d,
                            xDivision: l,
                            barWidth: v,
                            zeroH: h,
                            strokeWidth: C,
                            elSeries: x
                        });
                        d = P.y,
                        c = P.x,
                        S = P.color,
                        A > 0 && u.push(c + v / 2),
                        g.push(d);
                        var T = s.fillPath({
                            seriesNumber: p,
                            dataPointIndex: A,
                            color: S,
                            value: t[o][A]
                        })
                          , z = this.candlestickOptions.wick.useFillColor ? S : void 0;
                        this.renderSeries({
                            realIndex: p,
                            pathFill: T,
                            lineFill: z,
                            j: A,
                            i: o,
                            pathFrom: P.pathFrom,
                            pathTo: P.pathTo,
                            strokeWidth: C,
                            elSeries: x,
                            x: c,
                            y: d,
                            series: t,
                            barHeight: m,
                            barWidth: v,
                            elDataLabelsWrap: k,
                            visibleSeries: this.visibleI,
                            type: "candlestick"
                        })
                    }
                    i.globals.seriesXvalues[p] = u,
                    i.globals.seriesYvalues[p] = g,
                    n.add(x)
                }
                return n
            }
        }, {
            key: "drawCandleStickPaths",
            value: function(t) {
                var e = t.indexes
                  , i = t.x
                  , a = (t.y,
                t.xDivision)
                  , s = t.barWidth
                  , r = t.zeroH
                  , n = t.strokeWidth
                  , o = this.w
                  , l = new b(this.ctx)
                  , h = e.i
                  , c = e.j
                  , d = !0
                  , g = o.config.plotOptions.candlestick.colors.upward
                  , u = o.config.plotOptions.candlestick.colors.downward
                  , f = this.yRatio[this.yaxisIndex]
                  , p = e.realIndex
                  , x = this.getOHLCValue(p, c)
                  , m = r
                  , v = r;
                x.o > x.c && (d = !1);
                var y = Math.min(x.o, x.c)
                  , w = Math.max(x.o, x.c);
                o.globals.isXNumeric && (i = (o.globals.seriesX[p][c] - o.globals.minX) / this.xRatio - s / 2);
                var k = i + s * this.visibleI;
                void 0 === this.series[h][c] || null === this.series[h][c] ? y = r : (y = r - y / f,
                w = r - w / f,
                m = r - x.h / f,
                v = r - x.l / f);
                var A = l.move(k, r)
                  , S = l.move(k, y);
                return o.globals.previousPaths.length > 0 && (S = this.getPreviousPath(p, c, !0)),
                A = l.move(k, w) + l.line(k + s / 2, w) + l.line(k + s / 2, m) + l.line(k + s / 2, w) + l.line(k + s, w) + l.line(k + s, y) + l.line(k + s / 2, y) + l.line(k + s / 2, v) + l.line(k + s / 2, y) + l.line(k, y) + l.line(k, w - n / 2),
                S += l.move(k, y),
                o.globals.isXNumeric || (i += a),
                {
                    pathTo: A,
                    pathFrom: S,
                    x: i,
                    y: w,
                    barXPosition: k,
                    color: d ? g : u
                }
            }
        }, {
            key: "getOHLCValue",
            value: function(t, e) {
                var i = this.w;
                return {
                    o: i.globals.seriesCandleO[t][e],
                    h: i.globals.seriesCandleH[t][e],
                    l: i.globals.seriesCandleL[t][e],
                    c: i.globals.seriesCandleC[t][e]
                }
            }
        }]),
        s
    }(X)
      , yt = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w
        }
        return a(t, [{
            key: "checkColorRange",
            value: function() {
                var t = this.w
                  , e = !1
                  , i = t.config.plotOptions[t.config.chart.type];
                return i.colorScale.ranges.length > 0 && i.colorScale.ranges.map((function(t, i) {
                    t.from <= 0 && (e = !0)
                }
                )),
                e
            }
        }, {
            key: "getShadeColor",
            value: function(t, e, i, a) {
                var s = this.w
                  , r = 1
                  , n = s.config.plotOptions[t].shadeIntensity
                  , o = this.determineColor(t, e, i);
                s.globals.hasNegs || a ? r = s.config.plotOptions[t].reverseNegativeShade ? o.percent < 0 ? o.percent / 100 * (1.25 * n) : (1 - o.percent / 100) * (1.25 * n) : o.percent <= 0 ? 1 - (1 + o.percent / 100) * n : (1 - o.percent / 100) * n : (r = 1 - o.percent / 100,
                "treemap" === t && (r = (1 - o.percent / 100) * (1.25 * n)));
                var l = o.color
                  , h = new f;
                return s.config.plotOptions[t].enableShades && (r < 0 && (r = 0),
                l = "dark" === this.w.config.theme.mode ? f.hexToRgba(h.shadeColor(-1 * r, o.color), s.config.fill.opacity) : f.hexToRgba(h.shadeColor(r, o.color), s.config.fill.opacity)),
                {
                    color: l,
                    colorProps: o
                }
            }
        }, {
            key: "determineColor",
            value: function(t, e, i) {
                var a = this.w
                  , s = a.globals.series[e][i]
                  , r = a.config.plotOptions[t]
                  , n = r.colorScale.inverse ? i : e;
                a.config.plotOptions[t].distributed && (n = i);
                var o = a.globals.colors[n]
                  , l = null
                  , h = Math.min.apply(Math, g(a.globals.series[e]))
                  , c = Math.max.apply(Math, g(a.globals.series[e]));
                r.distributed || "heatmap" !== t || (h = a.globals.minY,
                c = a.globals.maxY),
                void 0 !== r.colorScale.min && (h = r.colorScale.min < a.globals.minY ? r.colorScale.min : a.globals.minY,
                c = r.colorScale.max > a.globals.maxY ? r.colorScale.max : a.globals.maxY);
                var d = Math.abs(c) + Math.abs(h)
                  , u = 100 * s / (0 === d ? d - 1e-6 : d);
                r.colorScale.ranges.length > 0 && r.colorScale.ranges.map((function(t, e) {
                    if (s >= t.from && s <= t.to) {
                        o = t.color,
                        l = t.foreColor ? t.foreColor : null,
                        h = t.from,
                        c = t.to;
                        var i = Math.abs(c) + Math.abs(h);
                        u = 100 * s / (0 === i ? i - 1e-6 : i)
                    }
                }
                ));
                return {
                    color: o,
                    foreColor: l,
                    percent: u
                }
            }
        }, {
            key: "calculateDataLabels",
            value: function(t) {
                var e = t.text
                  , i = t.x
                  , a = t.y
                  , s = t.i
                  , r = t.j
                  , n = t.colorProps
                  , o = t.fontSize
                  , l = this.w.config.dataLabels
                  , h = new b(this.ctx)
                  , c = new z(this.ctx)
                  , d = null;
                if (l.enabled) {
                    d = h.group({
                        class: "apexcharts-data-labels"
                    });
                    var g = l.offsetX
                      , u = l.offsetY
                      , f = i + g
                      , p = a + parseFloat(l.style.fontSize) / 3 + u;
                    c.plotDataLabelsText({
                        x: f,
                        y: p,
                        text: e,
                        i: s,
                        j: r,
                        color: n.foreColor,
                        parent: d,
                        fontSize: o,
                        dataLabelsConfig: l
                    })
                }
                return d
            }
        }, {
            key: "addListeners",
            value: function(t) {
                var e = new b(this.ctx);
                t.node.addEventListener("mouseenter", e.pathMouseEnter.bind(this, t)),
                t.node.addEventListener("mouseleave", e.pathMouseLeave.bind(this, t)),
                t.node.addEventListener("mousedown", e.pathMouseDown.bind(this, t))
            }
        }]),
        t
    }()
      , wt = function() {
        function t(i, a) {
            e(this, t),
            this.ctx = i,
            this.w = i.w,
            this.xRatio = a.xRatio,
            this.yRatio = a.yRatio,
            this.dynamicAnim = this.w.config.chart.animations.dynamicAnimation,
            this.helpers = new yt(i),
            this.rectRadius = this.w.config.plotOptions.heatmap.radius,
            this.strokeWidth = this.w.config.stroke.show ? this.w.config.stroke.width : 0
        }
        return a(t, [{
            key: "draw",
            value: function(t) {
                var e = this.w
                  , i = new b(this.ctx)
                  , a = i.group({
                    class: "apexcharts-heatmap"
                });
                a.attr("clip-path", "url(#gridRectMask".concat(e.globals.cuid, ")"));
                var s = e.globals.gridWidth / e.globals.dataPoints
                  , r = e.globals.gridHeight / e.globals.series.length
                  , n = 0
                  , o = !1;
                this.negRange = this.helpers.checkColorRange();
                var l = t.slice();
                e.config.yaxis[0].reversed && (o = !0,
                l.reverse());
                for (var h = o ? 0 : l.length - 1; o ? h < l.length : h >= 0; o ? h++ : h--) {
                    var c = i.group({
                        class: "apexcharts-series apexcharts-heatmap-series",
                        seriesName: f.escapeString(e.globals.seriesNames[h]),
                        rel: h + 1,
                        "data:realIndex": h
                    });
                    if (this.ctx.series.addCollapsedClassToSeries(c, h),
                    e.config.chart.dropShadow.enabled) {
                        var d = e.config.chart.dropShadow;
                        new p(this.ctx).dropShadow(c, d, h)
                    }
                    for (var g = 0, u = e.config.plotOptions.heatmap.shadeIntensity, x = 0; x < l[h].length; x++) {
                        var m = this.helpers.getShadeColor(e.config.chart.type, h, x, this.negRange)
                          , v = m.color
                          , y = m.colorProps;
                        if ("image" === e.config.fill.type)
                            v = new L(this.ctx).fillPath({
                                seriesNumber: h,
                                dataPointIndex: x,
                                opacity: e.globals.hasNegs ? y.percent < 0 ? 1 - (1 + y.percent / 100) : u + y.percent / 100 : y.percent / 100,
                                patternID: f.randomId(),
                                width: e.config.fill.image.width ? e.config.fill.image.width : s,
                                height: e.config.fill.image.height ? e.config.fill.image.height : r
                            });
                        var w = this.rectRadius
                          , k = i.drawRect(g, n, s, r, w);
                        if (k.attr({
                            cx: g,
                            cy: n
                        }),
                        k.node.classList.add("apexcharts-heatmap-rect"),
                        c.add(k),
                        k.attr({
                            fill: v,
                            i: h,
                            index: h,
                            j: x,
                            val: l[h][x],
                            "stroke-width": this.strokeWidth,
                            stroke: e.config.plotOptions.heatmap.useFillColorAsStroke ? v : e.globals.stroke.colors[0],
                            color: v
                        }),
                        this.helpers.addListeners(k),
                        e.config.chart.animations.enabled && !e.globals.dataChanged) {
                            var A = 1;
                            e.globals.resized || (A = e.config.chart.animations.speed),
                            this.animateHeatMap(k, g, n, s, r, A)
                        }
                        if (e.globals.dataChanged) {
                            var S = 1;
                            if (this.dynamicAnim.enabled && e.globals.shouldAnimate) {
                                S = this.dynamicAnim.speed;
                                var C = e.globals.previousPaths[h] && e.globals.previousPaths[h][x] && e.globals.previousPaths[h][x].color;
                                C || (C = "rgba(255, 255, 255, 0)"),
                                this.animateHeatColor(k, f.isColorHex(C) ? C : f.rgb2hex(C), f.isColorHex(v) ? v : f.rgb2hex(v), S)
                            }
                        }
                        var P = (0,
                        e.config.dataLabels.formatter)(e.globals.series[h][x], {
                            value: e.globals.series[h][x],
                            seriesIndex: h,
                            dataPointIndex: x,
                            w: e
                        })
                          , T = this.helpers.calculateDataLabels({
                            text: P,
                            x: g + s / 2,
                            y: n + r / 2,
                            i: h,
                            j: x,
                            colorProps: y,
                            series: l
                        });
                        null !== T && c.add(T),
                        g += s
                    }
                    n += r,
                    a.add(c)
                }
                var z = e.globals.yAxisScale[0].result.slice();
                e.config.yaxis[0].reversed ? z.unshift("") : z.push(""),
                e.globals.yAxisScale[0].result = z;
                var I = e.globals.gridHeight / e.globals.series.length;
                return e.config.yaxis[0].labels.offsetY = -I / 2,
                a
            }
        }, {
            key: "animateHeatMap",
            value: function(t, e, i, a, s, r) {
                var n = new x(this.ctx);
                n.animateRect(t, {
                    x: e + a / 2,
                    y: i + s / 2,
                    width: 0,
                    height: 0
                }, {
                    x: e,
                    y: i,
                    width: a,
                    height: s
                }, r, (function() {
                    n.animationCompleted(t)
                }
                ))
            }
        }, {
            key: "animateHeatColor",
            value: function(t, e, i, a) {
                t.attr({
                    fill: e
                }).animate(a).attr({
                    fill: i
                })
            }
        }]),
        t
    }()
      , kt = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w
        }
        return a(t, [{
            key: "drawYAxisTexts",
            value: function(t, e, i, a) {
                var s = this.w
                  , r = s.config.yaxis[0]
                  , n = s.globals.yLabelFormatters[0];
                return new b(this.ctx).drawText({
                    x: t + r.labels.offsetX,
                    y: e + r.labels.offsetY,
                    text: n(a, i),
                    textAnchor: "middle",
                    fontSize: r.labels.style.fontSize,
                    fontFamily: r.labels.style.fontFamily,
                    foreColor: Array.isArray(r.labels.style.colors) ? r.labels.style.colors[i] : r.labels.style.colors
                })
            }
        }]),
        t
    }()
      , At = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w;
            var a = this.w;
            this.chartType = this.w.config.chart.type,
            this.initialAnim = this.w.config.chart.animations.enabled,
            this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled,
            this.animBeginArr = [0],
            this.animDur = 0,
            this.donutDataLabels = this.w.config.plotOptions.pie.donut.labels,
            this.lineColorArr = void 0 !== a.globals.stroke.colors ? a.globals.stroke.colors : a.globals.colors,
            this.defaultSize = Math.min(a.globals.gridWidth, a.globals.gridHeight),
            this.centerY = this.defaultSize / 2,
            this.centerX = a.globals.gridWidth / 2,
            "radialBar" === a.config.chart.type ? this.fullAngle = 360 : this.fullAngle = Math.abs(a.config.plotOptions.pie.endAngle - a.config.plotOptions.pie.startAngle),
            this.initialAngle = a.config.plotOptions.pie.startAngle % this.fullAngle,
            a.globals.radialSize = this.defaultSize / 2.05 - a.config.stroke.width - (a.config.chart.sparkline.enabled ? 0 : a.config.chart.dropShadow.blur),
            this.donutSize = a.globals.radialSize * parseInt(a.config.plotOptions.pie.donut.size, 10) / 100,
            this.maxY = 0,
            this.sliceLabels = [],
            this.sliceSizes = [],
            this.prevSectorAngleArr = []
        }
        return a(t, [{
            key: "draw",
            value: function(t) {
                var e = this
                  , i = this.w
                  , a = new b(this.ctx);
                if (this.ret = a.group({
                    class: "apexcharts-pie"
                }),
                i.globals.noData)
                    return this.ret;
                for (var s = 0, r = 0; r < t.length; r++)
                    s += f.negToZero(t[r]);
                var n = []
                  , o = a.group();
                0 === s && (s = 1e-5),
                t.forEach((function(t) {
                    e.maxY = Math.max(e.maxY, t)
                }
                )),
                i.config.yaxis[0].max && (this.maxY = i.config.yaxis[0].max),
                "polarArea" === this.chartType && this.drawPolarElements();
                for (var l = 0; l < t.length; l++) {
                    var h = this.fullAngle * f.negToZero(t[l]) / s;
                    n.push(h),
                    "polarArea" === this.chartType ? (n[l] = this.fullAngle / t.length,
                    this.sliceSizes.push(i.globals.radialSize * t[l] / this.maxY)) : this.sliceSizes.push(i.globals.radialSize)
                }
                if (i.globals.dataChanged) {
                    for (var c, d = 0, g = 0; g < i.globals.previousPaths.length; g++)
                        d += f.negToZero(i.globals.previousPaths[g]);
                    for (var u = 0; u < i.globals.previousPaths.length; u++)
                        c = this.fullAngle * f.negToZero(i.globals.previousPaths[u]) / d,
                        this.prevSectorAngleArr.push(c)
                }
                this.donutSize < 0 && (this.donutSize = 0);
                var p = i.config.plotOptions.pie.customScale
                  , x = i.globals.gridWidth / 2
                  , m = i.globals.gridHeight / 2
                  , v = x - i.globals.gridWidth / 2 * p
                  , y = m - i.globals.gridHeight / 2 * p;
                if ("donut" === this.chartType) {
                    var w = a.drawCircle(this.donutSize);
                    w.attr({
                        cx: this.centerX,
                        cy: this.centerY,
                        fill: i.config.plotOptions.pie.donut.background ? i.config.plotOptions.pie.donut.background : "transparent"
                    }),
                    o.add(w)
                }
                var k = this.drawArcs(n, t);
                if (this.sliceLabels.forEach((function(t) {
                    k.add(t)
                }
                )),
                o.attr({
                    transform: "translate(".concat(v, ", ").concat(y, ") scale(").concat(p, ")")
                }),
                o.add(k),
                this.ret.add(o),
                this.donutDataLabels.show) {
                    var A = this.renderInnerDataLabels(this.donutDataLabels, {
                        hollowSize: this.donutSize,
                        centerX: this.centerX,
                        centerY: this.centerY,
                        opacity: this.donutDataLabels.show,
                        translateX: v,
                        translateY: y
                    });
                    this.ret.add(A)
                }
                return this.ret
            }
        }, {
            key: "drawArcs",
            value: function(t, e) {
                var i = this.w
                  , a = new p(this.ctx)
                  , s = new b(this.ctx)
                  , r = new L(this.ctx)
                  , n = s.group({
                    class: "apexcharts-slices"
                })
                  , o = this.initialAngle
                  , l = this.initialAngle
                  , h = this.initialAngle
                  , c = this.initialAngle;
                this.strokeWidth = i.config.stroke.show ? i.config.stroke.width : 0;
                for (var d = 0; d < t.length; d++) {
                    var g = s.group({
                        class: "apexcharts-series apexcharts-pie-series",
                        seriesName: f.escapeString(i.globals.seriesNames[d]),
                        rel: d + 1,
                        "data:realIndex": d
                    });
                    n.add(g),
                    l = c,
                    h = (o = h) + t[d],
                    c = l + this.prevSectorAngleArr[d];
                    var u = h < o ? this.fullAngle + h - o : h - o
                      , x = r.fillPath({
                        seriesNumber: d,
                        size: this.sliceSizes[d],
                        value: e[d]
                    })
                      , m = this.getChangedPath(l, c)
                      , v = s.drawPath({
                        d: m,
                        stroke: Array.isArray(this.lineColorArr) ? this.lineColorArr[d] : this.lineColorArr,
                        strokeWidth: 0,
                        fill: x,
                        fillOpacity: i.config.fill.opacity,
                        classes: "apexcharts-pie-area apexcharts-".concat(this.chartType.toLowerCase(), "-slice-").concat(d)
                    });
                    if (v.attr({
                        index: 0,
                        j: d
                    }),
                    i.config.chart.dropShadow.enabled) {
                        var y = i.config.chart.dropShadow;
                        a.dropShadow(v, y, d)
                    }
                    this.addListeners(v, this.donutDataLabels),
                    b.setAttrs(v.node, {
                        "data:angle": u,
                        "data:startAngle": o,
                        "data:strokeWidth": this.strokeWidth,
                        "data:value": e[d]
                    });
                    var w = {
                        x: 0,
                        y: 0
                    };
                    "pie" === this.chartType || "polarArea" === this.chartType ? w = f.polarToCartesian(this.centerX, this.centerY, i.globals.radialSize / 1.25 + i.config.plotOptions.pie.dataLabels.offset, (o + u / 2) % this.fullAngle) : "donut" === this.chartType && (w = f.polarToCartesian(this.centerX, this.centerY, (i.globals.radialSize + this.donutSize) / 2 + i.config.plotOptions.pie.dataLabels.offset, (o + u / 2) % this.fullAngle)),
                    g.add(v);
                    var k = 0;
                    if (!this.initialAnim || i.globals.resized || i.globals.dataChanged ? this.animBeginArr.push(0) : (0 === (k = u / this.fullAngle * i.config.chart.animations.speed) && (k = 1),
                    this.animDur = k + this.animDur,
                    this.animBeginArr.push(this.animDur)),
                    this.dynamicAnim && i.globals.dataChanged ? this.animatePaths(v, {
                        size: this.sliceSizes[d],
                        endAngle: h,
                        startAngle: o,
                        prevStartAngle: l,
                        prevEndAngle: c,
                        animateStartingPos: !0,
                        i: d,
                        animBeginArr: this.animBeginArr,
                        shouldSetPrevPaths: !0,
                        dur: i.config.chart.animations.dynamicAnimation.speed
                    }) : this.animatePaths(v, {
                        size: this.sliceSizes[d],
                        endAngle: h,
                        startAngle: o,
                        i: d,
                        totalItems: t.length - 1,
                        animBeginArr: this.animBeginArr,
                        dur: k
                    }),
                    i.config.plotOptions.pie.expandOnClick && "polarArea" !== this.chartType && v.click(this.pieClicked.bind(this, d)),
                    i.config.dataLabels.enabled) {
                        var A = w.x
                          , S = w.y
                          , C = 100 * u / this.fullAngle + "%";
                        if (0 !== u && i.config.plotOptions.pie.dataLabels.minAngleToShowLabel < t[d]) {
                            var P = i.config.dataLabels.formatter;
                            void 0 !== P && (C = P(i.globals.seriesPercent[d][0], {
                                seriesIndex: d,
                                w: i
                            }));
                            var T = i.globals.dataLabels.style.colors[d]
                              , z = s.group({
                                class: "apexcharts-datalabels"
                            })
                              , I = s.drawText({
                                x: A,
                                y: S,
                                text: C,
                                textAnchor: "middle",
                                fontSize: i.config.dataLabels.style.fontSize,
                                fontFamily: i.config.dataLabels.style.fontFamily,
                                fontWeight: i.config.dataLabels.style.fontWeight,
                                foreColor: T
                            });
                            if (z.add(I),
                            i.config.dataLabels.dropShadow.enabled) {
                                var M = i.config.dataLabels.dropShadow;
                                a.dropShadow(I, M)
                            }
                            I.node.classList.add("apexcharts-pie-label"),
                            i.config.chart.animations.animate && !1 === i.globals.resized && (I.node.classList.add("apexcharts-pie-label-delay"),
                            I.node.style.animationDelay = i.config.chart.animations.speed / 940 + "s"),
                            this.sliceLabels.push(z)
                        }
                    }
                }
                return n
            }
        }, {
            key: "addListeners",
            value: function(t, e) {
                var i = new b(this.ctx);
                t.node.addEventListener("mouseenter", i.pathMouseEnter.bind(this, t)),
                t.node.addEventListener("mouseleave", i.pathMouseLeave.bind(this, t)),
                t.node.addEventListener("mouseleave", this.revertDataLabelsInner.bind(this, t.node, e)),
                t.node.addEventListener("mousedown", i.pathMouseDown.bind(this, t)),
                this.donutDataLabels.total.showAlways || (t.node.addEventListener("mouseenter", this.printDataLabelsInner.bind(this, t.node, e)),
                t.node.addEventListener("mousedown", this.printDataLabelsInner.bind(this, t.node, e)))
            }
        }, {
            key: "animatePaths",
            value: function(t, e) {
                var i = this.w
                  , a = e.endAngle < e.startAngle ? this.fullAngle + e.endAngle - e.startAngle : e.endAngle - e.startAngle
                  , s = a
                  , r = e.startAngle
                  , n = e.startAngle;
                void 0 !== e.prevStartAngle && void 0 !== e.prevEndAngle && (r = e.prevEndAngle,
                s = e.prevEndAngle < e.prevStartAngle ? this.fullAngle + e.prevEndAngle - e.prevStartAngle : e.prevEndAngle - e.prevStartAngle),
                e.i === i.config.series.length - 1 && (a + n > this.fullAngle ? e.endAngle = e.endAngle - (a + n) : a + n < this.fullAngle && (e.endAngle = e.endAngle + (this.fullAngle - (a + n)))),
                a === this.fullAngle && (a = this.fullAngle - .01),
                this.animateArc(t, r, n, a, s, e)
            }
        }, {
            key: "animateArc",
            value: function(t, e, i, a, s, r) {
                var n, o = this, l = this.w, h = new x(this.ctx), c = r.size;
                (isNaN(e) || isNaN(s)) && (e = i,
                s = a,
                r.dur = 0);
                var d = a
                  , g = i
                  , u = e < i ? this.fullAngle + e - i : e - i;
                l.globals.dataChanged && r.shouldSetPrevPaths && r.prevEndAngle && (n = o.getPiePath({
                    me: o,
                    startAngle: r.prevStartAngle,
                    angle: r.prevEndAngle < r.prevStartAngle ? this.fullAngle + r.prevEndAngle - r.prevStartAngle : r.prevEndAngle - r.prevStartAngle,
                    size: c
                }),
                t.attr({
                    d: n
                })),
                0 !== r.dur ? t.animate(r.dur, l.globals.easing, r.animBeginArr[r.i]).afterAll((function() {
                    "pie" !== o.chartType && "donut" !== o.chartType && "polarArea" !== o.chartType || this.animate(l.config.chart.animations.dynamicAnimation.speed).attr({
                        "stroke-width": o.strokeWidth
                    }),
                    r.i === l.config.series.length - 1 && h.animationCompleted(t)
                }
                )).during((function(l) {
                    d = u + (a - u) * l,
                    r.animateStartingPos && (d = s + (a - s) * l,
                    g = e - s + (i - (e - s)) * l),
                    n = o.getPiePath({
                        me: o,
                        startAngle: g,
                        angle: d,
                        size: c
                    }),
                    t.node.setAttribute("data:pathOrig", n),
                    t.attr({
                        d: n
                    })
                }
                )) : (n = o.getPiePath({
                    me: o,
                    startAngle: g,
                    angle: a,
                    size: c
                }),
                r.isTrack || (l.globals.animationEnded = !0),
                t.node.setAttribute("data:pathOrig", n),
                t.attr({
                    d: n,
                    "stroke-width": o.strokeWidth
                }))
            }
        }, {
            key: "pieClicked",
            value: function(t) {
                var e, i = this.w, a = this, s = a.sliceSizes[t] + (i.config.plotOptions.pie.expandOnClick ? 4 : 0), r = i.globals.dom.Paper.select(".apexcharts-".concat(a.chartType.toLowerCase(), "-slice-").concat(t)).members[0];
                if ("true" !== r.attr("data:pieClicked")) {
                    var n = i.globals.dom.baseEl.getElementsByClassName("apexcharts-pie-area");
                    Array.prototype.forEach.call(n, (function(t) {
                        t.setAttribute("data:pieClicked", "false");
                        var e = t.getAttribute("data:pathOrig");
                        t.setAttribute("d", e)
                    }
                    )),
                    r.attr("data:pieClicked", "true");
                    var o = parseInt(r.attr("data:startAngle"), 10)
                      , l = parseInt(r.attr("data:angle"), 10);
                    e = a.getPiePath({
                        me: a,
                        startAngle: o,
                        angle: l,
                        size: s
                    }),
                    360 !== l && r.plot(e)
                } else {
                    r.attr({
                        "data:pieClicked": "false"
                    }),
                    this.revertDataLabelsInner(r.node, this.donutDataLabels);
                    var h = r.attr("data:pathOrig");
                    r.attr({
                        d: h
                    })
                }
            }
        }, {
            key: "getChangedPath",
            value: function(t, e) {
                var i = "";
                return this.dynamicAnim && this.w.globals.dataChanged && (i = this.getPiePath({
                    me: this,
                    startAngle: t,
                    angle: e - t,
                    size: this.size
                })),
                i
            }
        }, {
            key: "getPiePath",
            value: function(t) {
                var e = t.me
                  , i = t.startAngle
                  , a = t.angle
                  , s = t.size
                  , r = i
                  , n = Math.PI * (r - 90) / 180
                  , o = a + i;
                Math.ceil(o) >= this.fullAngle + this.w.config.plotOptions.pie.startAngle % this.fullAngle && (o = this.fullAngle + this.w.config.plotOptions.pie.startAngle % this.fullAngle - .01),
                Math.ceil(o) > this.fullAngle && (o -= this.fullAngle);
                var l = Math.PI * (o - 90) / 180
                  , h = e.centerX + s * Math.cos(n)
                  , c = e.centerY + s * Math.sin(n)
                  , d = e.centerX + s * Math.cos(l)
                  , g = e.centerY + s * Math.sin(l)
                  , u = f.polarToCartesian(e.centerX, e.centerY, e.donutSize, o)
                  , p = f.polarToCartesian(e.centerX, e.centerY, e.donutSize, r)
                  , x = a > 180 ? 1 : 0
                  , b = ["M", h, c, "A", s, s, 0, x, 1, d, g];
                return "donut" === e.chartType ? [].concat(b, ["L", u.x, u.y, "A", e.donutSize, e.donutSize, 0, x, 0, p.x, p.y, "L", h, c, "z"]).join(" ") : "pie" === e.chartType || "polarArea" === e.chartType ? [].concat(b, ["L", e.centerX, e.centerY, "L", h, c]).join(" ") : [].concat(b).join(" ")
            }
        }, {
            key: "drawPolarElements",
            value: function() {
                var t = this.w
                  , e = new j(this.ctx)
                  , i = new b(this.ctx)
                  , a = new kt(this.ctx)
                  , s = i.group()
                  , r = i.group()
                  , n = e.niceScale(0, Math.ceil(this.maxY), t.config.yaxis[0].tickAmount, 0, !0)
                  , o = n.result.reverse()
                  , l = n.result.length;
                this.maxY = n.niceMax;
                for (var h = t.globals.radialSize, c = h / (l - 1), d = 0; d < l - 1; d++) {
                    var g = i.drawCircle(h);
                    if (g.attr({
                        cx: this.centerX,
                        cy: this.centerY,
                        fill: "none",
                        "stroke-width": t.config.plotOptions.polarArea.rings.strokeWidth,
                        stroke: t.config.plotOptions.polarArea.rings.strokeColor
                    }),
                    t.config.yaxis[0].show) {
                        var u = a.drawYAxisTexts(this.centerX, this.centerY - h + parseInt(t.config.yaxis[0].labels.style.fontSize, 10) / 2, d, o[d]);
                        r.add(u)
                    }
                    s.add(g),
                    h -= c
                }
                this.ret.add(s),
                this.ret.add(r)
            }
        }, {
            key: "renderInnerDataLabels",
            value: function(t, e) {
                var i = this.w
                  , a = new b(this.ctx)
                  , s = a.group({
                    class: "apexcharts-datalabels-group",
                    transform: "translate(".concat(e.translateX ? e.translateX : 0, ", ").concat(e.translateY ? e.translateY : 0, ") scale(").concat(i.config.plotOptions.pie.customScale, ")")
                })
                  , r = t.total.show;
                s.node.style.opacity = e.opacity;
                var n, o, l = e.centerX, h = e.centerY;
                n = void 0 === t.name.color ? i.globals.colors[0] : t.name.color;
                var c = t.name.fontSize
                  , d = t.name.fontFamily
                  , g = t.value.fontWeight;
                o = void 0 === t.value.color ? i.config.chart.foreColor : t.value.color;
                var u = t.value.formatter
                  , f = ""
                  , p = "";
                if (r ? (n = t.total.color,
                c = t.total.fontSize,
                d = t.total.fontFamily,
                g = t.total.fontWeight,
                p = t.total.label,
                f = t.total.formatter(i)) : 1 === i.globals.series.length && (f = u(i.globals.series[0], i),
                p = i.globals.seriesNames[0]),
                p && (p = t.name.formatter(p, t.total.show, i)),
                t.name.show) {
                    var x = a.drawText({
                        x: l,
                        y: h + parseFloat(t.name.offsetY),
                        text: p,
                        textAnchor: "middle",
                        foreColor: n,
                        fontSize: c,
                        fontWeight: g,
                        fontFamily: d
                    });
                    x.node.classList.add("apexcharts-datalabel-label"),
                    s.add(x)
                }
                if (t.value.show) {
                    var m = t.name.show ? parseFloat(t.value.offsetY) + 16 : t.value.offsetY
                      , v = a.drawText({
                        x: l,
                        y: h + m,
                        text: f,
                        textAnchor: "middle",
                        foreColor: o,
                        fontWeight: t.value.fontWeight,
                        fontSize: t.value.fontSize,
                        fontFamily: t.value.fontFamily
                    });
                    v.node.classList.add("apexcharts-datalabel-value"),
                    s.add(v)
                }
                return s
            }
        }, {
            key: "printInnerLabels",
            value: function(t, e, i, a) {
                var s, r = this.w;
                a ? s = void 0 === t.name.color ? r.globals.colors[parseInt(a.parentNode.getAttribute("rel"), 10) - 1] : t.name.color : r.globals.series.length > 1 && t.total.show && (s = t.total.color);
                var n = r.globals.dom.baseEl.querySelector(".apexcharts-datalabel-label")
                  , o = r.globals.dom.baseEl.querySelector(".apexcharts-datalabel-value");
                i = (0,
                t.value.formatter)(i, r),
                a || "function" != typeof t.total.formatter || (i = t.total.formatter(r));
                var l = e === t.total.label;
                e = t.name.formatter(e, l, r),
                null !== n && (n.textContent = e),
                null !== o && (o.textContent = i),
                null !== n && (n.style.fill = s)
            }
        }, {
            key: "printDataLabelsInner",
            value: function(t, e) {
                var i = this.w
                  , a = t.getAttribute("data:value")
                  , s = i.globals.seriesNames[parseInt(t.parentNode.getAttribute("rel"), 10) - 1];
                i.globals.series.length > 1 && this.printInnerLabels(e, s, a, t);
                var r = i.globals.dom.baseEl.querySelector(".apexcharts-datalabels-group");
                null !== r && (r.style.opacity = 1)
            }
        }, {
            key: "revertDataLabelsInner",
            value: function(t, e, i) {
                var a = this
                  , s = this.w
                  , r = s.globals.dom.baseEl.querySelector(".apexcharts-datalabels-group")
                  , n = !1
                  , o = s.globals.dom.baseEl.getElementsByClassName("apexcharts-pie-area")
                  , l = function(t) {
                    var i = t.makeSliceOut
                      , s = t.printLabel;
                    Array.prototype.forEach.call(o, (function(t) {
                        "true" === t.getAttribute("data:pieClicked") && (i && (n = !0),
                        s && a.printDataLabelsInner(t, e))
                    }
                    ))
                };
                if (l({
                    makeSliceOut: !0,
                    printLabel: !1
                }),
                e.total.show && s.globals.series.length > 1)
                    n && !e.total.showAlways ? l({
                        makeSliceOut: !1,
                        printLabel: !0
                    }) : this.printInnerLabels(e, e.total.label, e.total.formatter(s));
                else if (l({
                    makeSliceOut: !1,
                    printLabel: !0
                }),
                !n)
                    if (s.globals.selectedDataPoints.length && s.globals.series.length > 1)
                        if (s.globals.selectedDataPoints[0].length > 0) {
                            var h = s.globals.selectedDataPoints[0]
                              , c = s.globals.dom.baseEl.querySelector(".apexcharts-".concat(this.chartType.toLowerCase(), "-slice-").concat(h));
                            this.printDataLabelsInner(c, e)
                        } else
                            r && s.globals.selectedDataPoints.length && 0 === s.globals.selectedDataPoints[0].length && (r.style.opacity = 0);
                    else
                        r && s.globals.series.length > 1 && (r.style.opacity = 0)
            }
        }]),
        t
    }()
      , St = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w,
            this.chartType = this.w.config.chart.type,
            this.initialAnim = this.w.config.chart.animations.enabled,
            this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled,
            this.animDur = 0;
            var a = this.w;
            this.graphics = new b(this.ctx),
            this.lineColorArr = void 0 !== a.globals.stroke.colors ? a.globals.stroke.colors : a.globals.colors,
            this.defaultSize = a.globals.svgHeight < a.globals.svgWidth ? a.globals.gridHeight + 1.5 * a.globals.goldenPadding : a.globals.gridWidth,
            this.maxValue = this.w.globals.maxY,
            this.minValue = this.w.globals.minY,
            this.polygons = a.config.plotOptions.radar.polygons,
            this.strokeWidth = a.config.stroke.show ? a.config.stroke.width : 0,
            this.size = this.defaultSize / 2.1 - this.strokeWidth - a.config.chart.dropShadow.blur,
            a.config.xaxis.labels.show && (this.size = this.size - a.globals.xAxisLabelsWidth / 1.75),
            void 0 !== a.config.plotOptions.radar.size && (this.size = a.config.plotOptions.radar.size),
            this.dataRadiusOfPercent = [],
            this.dataRadius = [],
            this.angleArr = [],
            this.yaxisLabelsTextsPos = []
        }
        return a(t, [{
            key: "draw",
            value: function(t) {
                var e = this
                  , i = this.w
                  , a = new L(this.ctx)
                  , s = []
                  , r = new z(this.ctx);
                t.length && (this.dataPointsLen = t[i.globals.maxValsInArrayIndex].length),
                this.disAngle = 2 * Math.PI / this.dataPointsLen;
                var o = i.globals.gridWidth / 2
                  , l = i.globals.gridHeight / 2
                  , h = o + i.config.plotOptions.radar.offsetX
                  , c = l + i.config.plotOptions.radar.offsetY
                  , d = this.graphics.group({
                    class: "apexcharts-radar-series apexcharts-plot-series",
                    transform: "translate(".concat(h || 0, ", ").concat(c || 0, ")")
                })
                  , g = []
                  , u = null
                  , x = null;
                if (this.yaxisLabels = this.graphics.group({
                    class: "apexcharts-yaxis"
                }),
                t.forEach((function(t, o) {
                    var l = t.length === i.globals.dataPoints
                      , h = e.graphics.group().attr({
                        class: "apexcharts-series",
                        "data:longestSeries": l,
                        seriesName: f.escapeString(i.globals.seriesNames[o]),
                        rel: o + 1,
                        "data:realIndex": o
                    });
                    e.dataRadiusOfPercent[o] = [],
                    e.dataRadius[o] = [],
                    e.angleArr[o] = [],
                    t.forEach((function(t, i) {
                        var a = Math.abs(e.maxValue - e.minValue);
                        t += Math.abs(e.minValue),
                        e.dataRadiusOfPercent[o][i] = t / a,
                        e.dataRadius[o][i] = e.dataRadiusOfPercent[o][i] * e.size,
                        e.angleArr[o][i] = i * e.disAngle
                    }
                    )),
                    g = e.getDataPointsPos(e.dataRadius[o], e.angleArr[o]);
                    var c = e.createPaths(g, {
                        x: 0,
                        y: 0
                    });
                    u = e.graphics.group({
                        class: "apexcharts-series-markers-wrap apexcharts-element-hidden"
                    }),
                    x = e.graphics.group({
                        class: "apexcharts-datalabels",
                        "data:realIndex": o
                    }),
                    i.globals.delayedElements.push({
                        el: u.node,
                        index: o
                    });
                    var d = {
                        i: o,
                        realIndex: o,
                        animationDelay: o,
                        initialSpeed: i.config.chart.animations.speed,
                        dataChangeSpeed: i.config.chart.animations.dynamicAnimation.speed,
                        className: "apexcharts-radar",
                        shouldClipToGrid: !1,
                        bindEventsOnPaths: !1,
                        stroke: i.globals.stroke.colors[o],
                        strokeLineCap: i.config.stroke.lineCap
                    }
                      , b = null;
                    i.globals.previousPaths.length > 0 && (b = e.getPreviousPath(o));
                    for (var m = 0; m < c.linePathsTo.length; m++) {
                        var v = e.graphics.renderPaths(n(n({}, d), {}, {
                            pathFrom: null === b ? c.linePathsFrom[m] : b,
                            pathTo: c.linePathsTo[m],
                            strokeWidth: Array.isArray(e.strokeWidth) ? e.strokeWidth[o] : e.strokeWidth,
                            fill: "none",
                            drawShadow: !1
                        }));
                        h.add(v);
                        var y = a.fillPath({
                            seriesNumber: o
                        })
                          , w = e.graphics.renderPaths(n(n({}, d), {}, {
                            pathFrom: null === b ? c.areaPathsFrom[m] : b,
                            pathTo: c.areaPathsTo[m],
                            strokeWidth: 0,
                            fill: y,
                            drawShadow: !1
                        }));
                        if (i.config.chart.dropShadow.enabled) {
                            var k = new p(e.ctx)
                              , A = i.config.chart.dropShadow;
                            k.dropShadow(w, Object.assign({}, A, {
                                noUserSpaceOnUse: !0
                            }), o)
                        }
                        h.add(w)
                    }
                    t.forEach((function(t, a) {
                        var s = new P(e.ctx).getMarkerConfig("apexcharts-marker", o, a)
                          , l = e.graphics.drawMarker(g[a].x, g[a].y, s);
                        l.attr("rel", a),
                        l.attr("j", a),
                        l.attr("index", o),
                        l.node.setAttribute("default-marker-size", s.pSize);
                        var c = e.graphics.group({
                            class: "apexcharts-series-markers"
                        });
                        c && c.add(l),
                        u.add(c),
                        h.add(u);
                        var d = i.config.dataLabels;
                        if (d.enabled) {
                            var f = d.formatter(i.globals.series[o][a], {
                                seriesIndex: o,
                                dataPointIndex: a,
                                w: i
                            });
                            r.plotDataLabelsText({
                                x: g[a].x,
                                y: g[a].y,
                                text: f,
                                textAnchor: "middle",
                                i: o,
                                j: o,
                                parent: x,
                                offsetCorrection: !1,
                                dataLabelsConfig: n({}, d)
                            })
                        }
                        h.add(x)
                    }
                    )),
                    s.push(h)
                }
                )),
                this.drawPolygons({
                    parent: d
                }),
                i.config.xaxis.labels.show) {
                    var b = this.drawXAxisTexts();
                    d.add(b)
                }
                return d.add(this.yaxisLabels),
                s.forEach((function(t) {
                    d.add(t)
                }
                )),
                d
            }
        }, {
            key: "drawPolygons",
            value: function(t) {
                for (var e = this, i = this.w, a = t.parent, s = new kt(this.ctx), r = i.globals.yAxisScale[0].result.reverse(), n = r.length, o = [], l = this.size / (n - 1), h = 0; h < n; h++)
                    o[h] = l * h;
                o.reverse();
                var c = []
                  , d = [];
                o.forEach((function(t, i) {
                    var a = e.getPolygonPos(t)
                      , s = "";
                    a.forEach((function(t, a) {
                        if (0 === i) {
                            var r = e.graphics.drawLine(t.x, t.y, 0, 0, Array.isArray(e.polygons.connectorColors) ? e.polygons.connectorColors[a] : e.polygons.connectorColors);
                            d.push(r)
                        }
                        0 === a && e.yaxisLabelsTextsPos.push({
                            x: t.x,
                            y: t.y
                        }),
                        s += t.x + "," + t.y + " "
                    }
                    )),
                    c.push(s)
                }
                )),
                c.forEach((function(t, s) {
                    var r = e.polygons.strokeColors
                      , n = e.polygons.strokeWidth
                      , o = e.graphics.drawPolygon(t, Array.isArray(r) ? r[s] : r, Array.isArray(n) ? n[s] : n, i.globals.radarPolygons.fill.colors[s]);
                    a.add(o)
                }
                )),
                d.forEach((function(t) {
                    a.add(t)
                }
                )),
                i.config.yaxis[0].show && this.yaxisLabelsTextsPos.forEach((function(t, i) {
                    var a = s.drawYAxisTexts(t.x, t.y, i, r[i]);
                    e.yaxisLabels.add(a)
                }
                ))
            }
        }, {
            key: "drawXAxisTexts",
            value: function() {
                var t = this
                  , e = this.w
                  , i = e.config.xaxis.labels
                  , a = this.graphics.group({
                    class: "apexcharts-xaxis"
                })
                  , s = this.getPolygonPos(this.size);
                return e.globals.labels.forEach((function(r, o) {
                    var l = e.config.xaxis.labels.formatter
                      , h = new z(t.ctx);
                    if (s[o]) {
                        var c = t.getTextPos(s[o], t.size)
                          , d = l(r, {
                            seriesIndex: -1,
                            dataPointIndex: o,
                            w: e
                        });
                        h.plotDataLabelsText({
                            x: c.newX,
                            y: c.newY,
                            text: d,
                            textAnchor: c.textAnchor,
                            i: o,
                            j: o,
                            parent: a,
                            color: Array.isArray(i.style.colors) && i.style.colors[o] ? i.style.colors[o] : "#a8a8a8",
                            dataLabelsConfig: n({
                                textAnchor: c.textAnchor,
                                dropShadow: {
                                    enabled: !1
                                }
                            }, i),
                            offsetCorrection: !1
                        })
                    }
                }
                )),
                a
            }
        }, {
            key: "createPaths",
            value: function(t, e) {
                var i = this
                  , a = []
                  , s = []
                  , r = []
                  , n = [];
                if (t.length) {
                    s = [this.graphics.move(e.x, e.y)],
                    n = [this.graphics.move(e.x, e.y)];
                    var o = this.graphics.move(t[0].x, t[0].y)
                      , l = this.graphics.move(t[0].x, t[0].y);
                    t.forEach((function(e, a) {
                        o += i.graphics.line(e.x, e.y),
                        l += i.graphics.line(e.x, e.y),
                        a === t.length - 1 && (o += "Z",
                        l += "Z")
                    }
                    )),
                    a.push(o),
                    r.push(l)
                }
                return {
                    linePathsFrom: s,
                    linePathsTo: a,
                    areaPathsFrom: n,
                    areaPathsTo: r
                }
            }
        }, {
            key: "getTextPos",
            value: function(t, e) {
                var i = "middle"
                  , a = t.x
                  , s = t.y;
                return Math.abs(t.x) >= 10 ? t.x > 0 ? (i = "start",
                a += 10) : t.x < 0 && (i = "end",
                a -= 10) : i = "middle",
                Math.abs(t.y) >= e - 10 && (t.y < 0 ? s -= 10 : t.y > 0 && (s += 10)),
                {
                    textAnchor: i,
                    newX: a,
                    newY: s
                }
            }
        }, {
            key: "getPreviousPath",
            value: function(t) {
                for (var e = this.w, i = null, a = 0; a < e.globals.previousPaths.length; a++) {
                    var s = e.globals.previousPaths[a];
                    s.paths.length > 0 && parseInt(s.realIndex, 10) === parseInt(t, 10) && void 0 !== e.globals.previousPaths[a].paths[0] && (i = e.globals.previousPaths[a].paths[0].d)
                }
                return i
            }
        }, {
            key: "getDataPointsPos",
            value: function(t, e) {
                var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : this.dataPointsLen;
                t = t || [],
                e = e || [];
                for (var a = [], s = 0; s < i; s++) {
                    var r = {};
                    r.x = t[s] * Math.sin(e[s]),
                    r.y = -t[s] * Math.cos(e[s]),
                    a.push(r)
                }
                return a
            }
        }, {
            key: "getPolygonPos",
            value: function(t) {
                for (var e = [], i = 2 * Math.PI / this.dataPointsLen, a = 0; a < this.dataPointsLen; a++) {
                    var s = {};
                    s.x = t * Math.sin(a * i),
                    s.y = -t * Math.cos(a * i),
                    e.push(s)
                }
                return e
            }
        }]),
        t
    }()
      , Ct = function(t) {
        o(s, t);
        var i = d(s);
        function s(t) {
            var a;
            e(this, s),
            (a = i.call(this, t)).ctx = t,
            a.w = t.w,
            a.animBeginArr = [0],
            a.animDur = 0;
            var r = a.w;
            return a.startAngle = r.config.plotOptions.radialBar.startAngle,
            a.endAngle = r.config.plotOptions.radialBar.endAngle,
            a.totalAngle = Math.abs(r.config.plotOptions.radialBar.endAngle - r.config.plotOptions.radialBar.startAngle),
            a.trackStartAngle = r.config.plotOptions.radialBar.track.startAngle,
            a.trackEndAngle = r.config.plotOptions.radialBar.track.endAngle,
            a.radialDataLabels = r.config.plotOptions.radialBar.dataLabels,
            a.trackStartAngle || (a.trackStartAngle = a.startAngle),
            a.trackEndAngle || (a.trackEndAngle = a.endAngle),
            360 === a.endAngle && (a.endAngle = 359.99),
            a.margin = parseInt(r.config.plotOptions.radialBar.track.margin, 10),
            a
        }
        return a(s, [{
            key: "draw",
            value: function(t) {
                var e = this.w
                  , i = new b(this.ctx)
                  , a = i.group({
                    class: "apexcharts-radialbar"
                });
                if (e.globals.noData)
                    return a;
                var s = i.group()
                  , r = this.defaultSize / 2
                  , n = e.globals.gridWidth / 2
                  , o = this.defaultSize / 2.05;
                e.config.chart.sparkline.enabled || (o = o - e.config.stroke.width - e.config.chart.dropShadow.blur);
                var l = e.globals.fill.colors;
                if (e.config.plotOptions.radialBar.track.show) {
                    var h = this.drawTracks({
                        size: o,
                        centerX: n,
                        centerY: r,
                        colorArr: l,
                        series: t
                    });
                    s.add(h)
                }
                var c = this.drawArcs({
                    size: o,
                    centerX: n,
                    centerY: r,
                    colorArr: l,
                    series: t
                })
                  , d = 360;
                e.config.plotOptions.radialBar.startAngle < 0 && (d = this.totalAngle);
                var g = (360 - d) / 360;
                if (e.globals.radialSize = o - o * g,
                this.radialDataLabels.value.show) {
                    var u = Math.max(this.radialDataLabels.value.offsetY, this.radialDataLabels.name.offsetY);
                    e.globals.radialSize += u * g
                }
                return s.add(c.g),
                "front" === e.config.plotOptions.radialBar.hollow.position && (c.g.add(c.elHollow),
                c.dataLabels && c.g.add(c.dataLabels)),
                a.add(s),
                a
            }
        }, {
            key: "drawTracks",
            value: function(t) {
                var e = this.w
                  , i = new b(this.ctx)
                  , a = i.group({
                    class: "apexcharts-tracks"
                })
                  , s = new p(this.ctx)
                  , r = new L(this.ctx)
                  , n = this.getStrokeWidth(t);
                t.size = t.size - n / 2;
                for (var o = 0; o < t.series.length; o++) {
                    var l = i.group({
                        class: "apexcharts-radialbar-track apexcharts-track"
                    });
                    a.add(l),
                    l.attr({
                        rel: o + 1
                    }),
                    t.size = t.size - n - this.margin;
                    var h = e.config.plotOptions.radialBar.track
                      , c = r.fillPath({
                        seriesNumber: 0,
                        size: t.size,
                        fillColors: Array.isArray(h.background) ? h.background[o] : h.background,
                        solid: !0
                    })
                      , d = this.trackStartAngle
                      , g = this.trackEndAngle;
                    Math.abs(g) + Math.abs(d) >= 360 && (g = 360 - Math.abs(this.startAngle) - .1);
                    var u = i.drawPath({
                        d: "",
                        stroke: c,
                        strokeWidth: n * parseInt(h.strokeWidth, 10) / 100,
                        fill: "none",
                        strokeOpacity: h.opacity,
                        classes: "apexcharts-radialbar-area"
                    });
                    if (h.dropShadow.enabled) {
                        var f = h.dropShadow;
                        s.dropShadow(u, f)
                    }
                    l.add(u),
                    u.attr("id", "apexcharts-radialbarTrack-" + o),
                    this.animatePaths(u, {
                        centerX: t.centerX,
                        centerY: t.centerY,
                        endAngle: g,
                        startAngle: d,
                        size: t.size,
                        i: o,
                        totalItems: 2,
                        animBeginArr: 0,
                        dur: 0,
                        isTrack: !0,
                        easing: e.globals.easing
                    })
                }
                return a
            }
        }, {
            key: "drawArcs",
            value: function(t) {
                var e = this.w
                  , i = new b(this.ctx)
                  , a = new L(this.ctx)
                  , s = new p(this.ctx)
                  , r = i.group()
                  , n = this.getStrokeWidth(t);
                t.size = t.size - n / 2;
                var o = e.config.plotOptions.radialBar.hollow.background
                  , l = t.size - n * t.series.length - this.margin * t.series.length - n * parseInt(e.config.plotOptions.radialBar.track.strokeWidth, 10) / 100 / 2
                  , h = l - e.config.plotOptions.radialBar.hollow.margin;
                void 0 !== e.config.plotOptions.radialBar.hollow.image && (o = this.drawHollowImage(t, r, l, o));
                var c = this.drawHollow({
                    size: h,
                    centerX: t.centerX,
                    centerY: t.centerY,
                    fill: o || "transparent"
                });
                if (e.config.plotOptions.radialBar.hollow.dropShadow.enabled) {
                    var d = e.config.plotOptions.radialBar.hollow.dropShadow;
                    s.dropShadow(c, d)
                }
                var g = 1;
                !this.radialDataLabels.total.show && e.globals.series.length > 1 && (g = 0);
                var u = null;
                this.radialDataLabels.show && (u = this.renderInnerDataLabels(this.radialDataLabels, {
                    hollowSize: l,
                    centerX: t.centerX,
                    centerY: t.centerY,
                    opacity: g
                })),
                "back" === e.config.plotOptions.radialBar.hollow.position && (r.add(c),
                u && r.add(u));
                var x = !1;
                e.config.plotOptions.radialBar.inverseOrder && (x = !0);
                for (var m = x ? t.series.length - 1 : 0; x ? m >= 0 : m < t.series.length; x ? m-- : m++) {
                    var v = i.group({
                        class: "apexcharts-series apexcharts-radial-series",
                        seriesName: f.escapeString(e.globals.seriesNames[m])
                    });
                    r.add(v),
                    v.attr({
                        rel: m + 1,
                        "data:realIndex": m
                    }),
                    this.ctx.series.addCollapsedClassToSeries(v, m),
                    t.size = t.size - n - this.margin;
                    var y = a.fillPath({
                        seriesNumber: m,
                        size: t.size,
                        value: t.series[m]
                    })
                      , w = this.startAngle
                      , k = void 0
                      , A = f.negToZero(t.series[m] > 100 ? 100 : t.series[m]) / 100
                      , S = Math.round(this.totalAngle * A) + this.startAngle
                      , C = void 0;
                    e.globals.dataChanged && (k = this.startAngle,
                    C = Math.round(this.totalAngle * f.negToZero(e.globals.previousPaths[m]) / 100) + k),
                    Math.abs(S) + Math.abs(w) >= 360 && (S -= .01),
                    Math.abs(C) + Math.abs(k) >= 360 && (C -= .01);
                    var P = S - w
                      , T = Array.isArray(e.config.stroke.dashArray) ? e.config.stroke.dashArray[m] : e.config.stroke.dashArray
                      , z = i.drawPath({
                        d: "",
                        stroke: y,
                        strokeWidth: n,
                        fill: "none",
                        fillOpacity: e.config.fill.opacity,
                        classes: "apexcharts-radialbar-area apexcharts-radialbar-slice-" + m,
                        strokeDashArray: T
                    });
                    if (b.setAttrs(z.node, {
                        "data:angle": P,
                        "data:value": t.series[m]
                    }),
                    e.config.chart.dropShadow.enabled) {
                        var I = e.config.chart.dropShadow;
                        s.dropShadow(z, I, m)
                    }
                    this.addListeners(z, this.radialDataLabels),
                    v.add(z),
                    z.attr({
                        index: 0,
                        j: m
                    });
                    var M = 0;
                    !this.initialAnim || e.globals.resized || e.globals.dataChanged || (M = (S - w) / 360 * e.config.chart.animations.speed,
                    this.animDur = M / (1.2 * t.series.length) + this.animDur,
                    this.animBeginArr.push(this.animDur)),
                    e.globals.dataChanged && (M = (S - w) / 360 * e.config.chart.animations.dynamicAnimation.speed,
                    this.animDur = M / (1.2 * t.series.length) + this.animDur,
                    this.animBeginArr.push(this.animDur)),
                    this.animatePaths(z, {
                        centerX: t.centerX,
                        centerY: t.centerY,
                        endAngle: S,
                        startAngle: w,
                        prevEndAngle: C,
                        prevStartAngle: k,
                        size: t.size,
                        i: m,
                        totalItems: 2,
                        animBeginArr: this.animBeginArr,
                        dur: M,
                        shouldSetPrevPaths: !0,
                        easing: e.globals.easing
                    })
                }
                return {
                    g: r,
                    elHollow: c,
                    dataLabels: u
                }
            }
        }, {
            key: "drawHollow",
            value: function(t) {
                var e = new b(this.ctx).drawCircle(2 * t.size);
                return e.attr({
                    class: "apexcharts-radialbar-hollow",
                    cx: t.centerX,
                    cy: t.centerY,
                    r: t.size,
                    fill: t.fill
                }),
                e
            }
        }, {
            key: "drawHollowImage",
            value: function(t, e, i, a) {
                var s = this.w
                  , r = new L(this.ctx)
                  , n = f.randomId()
                  , o = s.config.plotOptions.radialBar.hollow.image;
                if (s.config.plotOptions.radialBar.hollow.imageClipped)
                    r.clippedImgArea({
                        width: i,
                        height: i,
                        image: o,
                        patternID: "pattern".concat(s.globals.cuid).concat(n)
                    }),
                    a = "url(#pattern".concat(s.globals.cuid).concat(n, ")");
                else {
                    var l = s.config.plotOptions.radialBar.hollow.imageWidth
                      , h = s.config.plotOptions.radialBar.hollow.imageHeight;
                    if (void 0 === l && void 0 === h) {
                        var c = s.globals.dom.Paper.image(o).loaded((function(e) {
                            this.move(t.centerX - e.width / 2 + s.config.plotOptions.radialBar.hollow.imageOffsetX, t.centerY - e.height / 2 + s.config.plotOptions.radialBar.hollow.imageOffsetY)
                        }
                        ));
                        e.add(c)
                    } else {
                        var d = s.globals.dom.Paper.image(o).loaded((function(e) {
                            this.move(t.centerX - l / 2 + s.config.plotOptions.radialBar.hollow.imageOffsetX, t.centerY - h / 2 + s.config.plotOptions.radialBar.hollow.imageOffsetY),
                            this.size(l, h)
                        }
                        ));
                        e.add(d)
                    }
                }
                return a
            }
        }, {
            key: "getStrokeWidth",
            value: function(t) {
                var e = this.w;
                return t.size * (100 - parseInt(e.config.plotOptions.radialBar.hollow.size, 10)) / 100 / (t.series.length + 1) - this.margin
            }
        }]),
        s
    }(At)
      , Lt = function() {
        function t(i) {
            e(this, t),
            this.w = i.w,
            this.lineCtx = i
        }
        return a(t, [{
            key: "sameValueSeriesFix",
            value: function(t, e) {
                var i = this.w;
                if ("line" === i.config.chart.type && ("gradient" === i.config.fill.type || "gradient" === i.config.fill.type[t]) && new y(this.lineCtx.ctx,i).seriesHaveSameValues(t)) {
                    var a = e[t].slice();
                    a[a.length - 1] = a[a.length - 1] + 1e-6,
                    e[t] = a
                }
                return e
            }
        }, {
            key: "calculatePoints",
            value: function(t) {
                var e = t.series
                  , i = t.realIndex
                  , a = t.x
                  , s = t.y
                  , r = t.i
                  , n = t.j
                  , o = t.prevY
                  , l = this.w
                  , h = []
                  , c = [];
                if (0 === n) {
                    var d = this.lineCtx.categoryAxisCorrection + l.config.markers.offsetX;
                    l.globals.isXNumeric && (d = (l.globals.seriesX[i][0] - l.globals.minX) / this.lineCtx.xRatio + l.config.markers.offsetX),
                    h.push(d),
                    c.push(f.isNumber(e[r][0]) ? o + l.config.markers.offsetY : null),
                    h.push(a + l.config.markers.offsetX),
                    c.push(f.isNumber(e[r][n + 1]) ? s + l.config.markers.offsetY : null)
                } else
                    h.push(a + l.config.markers.offsetX),
                    c.push(f.isNumber(e[r][n + 1]) ? s + l.config.markers.offsetY : null);
                return {
                    x: h,
                    y: c
                }
            }
        }, {
            key: "checkPreviousPaths",
            value: function(t) {
                for (var e = t.pathFromLine, i = t.pathFromArea, a = t.realIndex, s = this.w, r = 0; r < s.globals.previousPaths.length; r++) {
                    var n = s.globals.previousPaths[r];
                    ("line" === n.type || "area" === n.type) && n.paths.length > 0 && parseInt(n.realIndex, 10) === parseInt(a, 10) && ("line" === n.type ? (this.lineCtx.appendPathFrom = !1,
                    e = s.globals.previousPaths[r].paths[0].d) : "area" === n.type && (this.lineCtx.appendPathFrom = !1,
                    i = s.globals.previousPaths[r].paths[0].d,
                    s.config.stroke.show && s.globals.previousPaths[r].paths[1] && (e = s.globals.previousPaths[r].paths[1].d)))
                }
                return {
                    pathFromLine: e,
                    pathFromArea: i
                }
            }
        }, {
            key: "determineFirstPrevY",
            value: function(t) {
                var e = t.i
                  , i = t.series
                  , a = t.prevY
                  , s = t.lineYPosition
                  , r = this.w;
                if (void 0 !== i[e][0])
                    a = (s = r.config.chart.stacked && e > 0 ? this.lineCtx.prevSeriesY[e - 1][0] : this.lineCtx.zeroY) - i[e][0] / this.lineCtx.yRatio[this.lineCtx.yaxisIndex] + 2 * (this.lineCtx.isReversed ? i[e][0] / this.lineCtx.yRatio[this.lineCtx.yaxisIndex] : 0);
                else if (r.config.chart.stacked && e > 0 && void 0 === i[e][0])
                    for (var n = e - 1; n >= 0; n--)
                        if (null !== i[n][0] && void 0 !== i[n][0]) {
                            a = s = this.lineCtx.prevSeriesY[n][0];
                            break
                        }
                return {
                    prevY: a,
                    lineYPosition: s
                }
            }
        }]),
        t
    }()
      , Pt = function() {
        function t(i, a, s) {
            e(this, t),
            this.ctx = i,
            this.w = i.w,
            this.xyRatios = a,
            this.pointsChart = !("bubble" !== this.w.config.chart.type && "scatter" !== this.w.config.chart.type) || s,
            this.scatter = new T(this.ctx),
            this.noNegatives = this.w.globals.minX === Number.MAX_VALUE,
            this.lineHelpers = new Lt(this),
            this.markers = new P(this.ctx),
            this.prevSeriesY = [],
            this.categoryAxisCorrection = 0,
            this.yaxisIndex = 0
        }
        return a(t, [{
            key: "draw",
            value: function(t, e, i) {
                var a = this.w
                  , s = new b(this.ctx)
                  , r = a.globals.comboCharts ? e : a.config.chart.type
                  , n = s.group({
                    class: "apexcharts-".concat(r, "-series apexcharts-plot-series")
                })
                  , o = new y(this.ctx,a);
                this.yRatio = this.xyRatios.yRatio,
                this.zRatio = this.xyRatios.zRatio,
                this.xRatio = this.xyRatios.xRatio,
                this.baseLineY = this.xyRatios.baseLineY,
                t = o.getLogSeries(t),
                this.yRatio = o.getLogYRatios(this.yRatio);
                for (var l = [], h = 0; h < t.length; h++) {
                    t = this.lineHelpers.sameValueSeriesFix(h, t);
                    var c = a.globals.comboCharts ? i[h] : h;
                    this._initSerieVariables(t, h, c);
                    var d = []
                      , g = []
                      , u = a.globals.padHorizontal + this.categoryAxisCorrection;
                    this.ctx.series.addCollapsedClassToSeries(this.elSeries, c),
                    a.globals.isXNumeric && a.globals.seriesX.length > 0 && (u = (a.globals.seriesX[c][0] - a.globals.minX) / this.xRatio),
                    g.push(u);
                    var f, p = u, x = p, m = this.zeroY;
                    m = this.lineHelpers.determineFirstPrevY({
                        i: h,
                        series: t,
                        prevY: m,
                        lineYPosition: 0
                    }).prevY,
                    d.push(m),
                    f = m;
                    var v = this._calculatePathsFrom({
                        series: t,
                        i: h,
                        realIndex: c,
                        prevX: x,
                        prevY: m
                    })
                      , w = this._iterateOverDataPoints({
                        series: t,
                        realIndex: c,
                        i: h,
                        x: u,
                        y: 1,
                        pX: p,
                        pY: f,
                        pathsFrom: v,
                        linePaths: [],
                        areaPaths: [],
                        seriesIndex: i,
                        lineYPosition: 0,
                        xArrj: g,
                        yArrj: d
                    });
                    this._handlePaths({
                        type: r,
                        realIndex: c,
                        i: h,
                        paths: w
                    }),
                    this.elSeries.add(this.elPointsMain),
                    this.elSeries.add(this.elDataLabelsWrap),
                    l.push(this.elSeries)
                }
                if (a.config.chart.stacked)
                    for (var k = l.length; k > 0; k--)
                        n.add(l[k - 1]);
                else
                    for (var A = 0; A < l.length; A++)
                        n.add(l[A]);
                return n
            }
        }, {
            key: "_initSerieVariables",
            value: function(t, e, i) {
                var a = this.w
                  , s = new b(this.ctx);
                this.xDivision = a.globals.gridWidth / (a.globals.dataPoints - ("on" === a.config.xaxis.tickPlacement ? 1 : 0)),
                this.strokeWidth = Array.isArray(a.config.stroke.width) ? a.config.stroke.width[i] : a.config.stroke.width,
                this.yRatio.length > 1 && (this.yaxisIndex = i),
                this.isReversed = a.config.yaxis[this.yaxisIndex] && a.config.yaxis[this.yaxisIndex].reversed,
                this.zeroY = a.globals.gridHeight - this.baseLineY[this.yaxisIndex] - (this.isReversed ? a.globals.gridHeight : 0) + (this.isReversed ? 2 * this.baseLineY[this.yaxisIndex] : 0),
                this.areaBottomY = this.zeroY,
                (this.zeroY > a.globals.gridHeight || "end" === a.config.plotOptions.area.fillTo) && (this.areaBottomY = a.globals.gridHeight),
                this.categoryAxisCorrection = this.xDivision / 2,
                this.elSeries = s.group({
                    class: "apexcharts-series",
                    seriesName: f.escapeString(a.globals.seriesNames[i])
                }),
                this.elPointsMain = s.group({
                    class: "apexcharts-series-markers-wrap",
                    "data:realIndex": i
                }),
                this.elDataLabelsWrap = s.group({
                    class: "apexcharts-datalabels",
                    "data:realIndex": i
                });
                var r = t[e].length === a.globals.dataPoints;
                this.elSeries.attr({
                    "data:longestSeries": r,
                    rel: e + 1,
                    "data:realIndex": i
                }),
                this.appendPathFrom = !0
            }
        }, {
            key: "_calculatePathsFrom",
            value: function(t) {
                var e, i, a, s, r = t.series, n = t.i, o = t.realIndex, l = t.prevX, h = t.prevY, c = this.w, d = new b(this.ctx);
                if (null === r[n][0]) {
                    for (var g = 0; g < r[n].length; g++)
                        if (null !== r[n][g]) {
                            l = this.xDivision * g,
                            h = this.zeroY - r[n][g] / this.yRatio[this.yaxisIndex],
                            e = d.move(l, h),
                            i = d.move(l, this.areaBottomY);
                            break
                        }
                } else
                    e = d.move(l, h),
                    i = d.move(l, this.areaBottomY) + d.line(l, h);
                if (a = d.move(-1, this.zeroY) + d.line(-1, this.zeroY),
                s = d.move(-1, this.zeroY) + d.line(-1, this.zeroY),
                c.globals.previousPaths.length > 0) {
                    var u = this.lineHelpers.checkPreviousPaths({
                        pathFromLine: a,
                        pathFromArea: s,
                        realIndex: o
                    });
                    a = u.pathFromLine,
                    s = u.pathFromArea
                }
                return {
                    prevX: l,
                    prevY: h,
                    linePath: e,
                    areaPath: i,
                    pathFromLine: a,
                    pathFromArea: s
                }
            }
        }, {
            key: "_handlePaths",
            value: function(t) {
                var e = t.type
                  , i = t.realIndex
                  , a = t.i
                  , s = t.paths
                  , r = this.w
                  , o = new b(this.ctx)
                  , l = new L(this.ctx);
                this.prevSeriesY.push(s.yArrj),
                r.globals.seriesXvalues[i] = s.xArrj,
                r.globals.seriesYvalues[i] = s.yArrj,
                this.pointsChart || r.globals.delayedElements.push({
                    el: this.elPointsMain.node,
                    index: i
                });
                var h = {
                    i: a,
                    realIndex: i,
                    animationDelay: a,
                    initialSpeed: r.config.chart.animations.speed,
                    dataChangeSpeed: r.config.chart.animations.dynamicAnimation.speed,
                    className: "apexcharts-".concat(e)
                };
                if ("area" === e)
                    for (var c = l.fillPath({
                        seriesNumber: i
                    }), d = 0; d < s.areaPaths.length; d++) {
                        var g = o.renderPaths(n(n({}, h), {}, {
                            pathFrom: s.pathFromArea,
                            pathTo: s.areaPaths[d],
                            stroke: "none",
                            strokeWidth: 0,
                            strokeLineCap: null,
                            fill: c
                        }));
                        this.elSeries.add(g)
                    }
                if (r.config.stroke.show && !this.pointsChart) {
                    var u = null;
                    u = "line" === e ? l.fillPath({
                        seriesNumber: i,
                        i: a
                    }) : r.globals.stroke.colors[i];
                    for (var f = 0; f < s.linePaths.length; f++) {
                        var p = o.renderPaths(n(n({}, h), {}, {
                            pathFrom: s.pathFromLine,
                            pathTo: s.linePaths[f],
                            stroke: u,
                            strokeWidth: this.strokeWidth,
                            strokeLineCap: r.config.stroke.lineCap,
                            fill: "none"
                        }));
                        this.elSeries.add(p)
                    }
                }
            }
        }, {
            key: "_iterateOverDataPoints",
            value: function(t) {
                for (var e = t.series, i = t.realIndex, a = t.i, s = t.x, r = t.y, n = t.pX, o = t.pY, l = t.pathsFrom, h = t.linePaths, c = t.areaPaths, d = t.seriesIndex, g = t.lineYPosition, u = t.xArrj, p = t.yArrj, x = this.w, m = new b(this.ctx), v = this.yRatio, y = l.prevY, w = l.linePath, k = l.areaPath, A = l.pathFromLine, S = l.pathFromArea, C = f.isNumber(x.globals.minYArr[i]) ? x.globals.minYArr[i] : x.globals.minY, L = x.globals.dataPoints > 1 ? x.globals.dataPoints - 1 : x.globals.dataPoints, P = 0; P < L; P++) {
                    var T = void 0 === e[a][P + 1] || null === e[a][P + 1];
                    if (x.globals.isXNumeric) {
                        var z = x.globals.seriesX[i][P + 1];
                        void 0 === x.globals.seriesX[i][P + 1] && (z = x.globals.seriesX[i][L - 1]),
                        s = (z - x.globals.minX) / this.xRatio
                    } else
                        s += this.xDivision;
                    if (x.config.chart.stacked)
                        if (a > 0 && x.globals.collapsedSeries.length < x.config.series.length - 1) {
                            g = this.prevSeriesY[function(t) {
                                for (var e = t, i = 0; i < x.globals.series.length; i++)
                                    if (x.globals.collapsedSeriesIndices.indexOf(t) > -1) {
                                        e--;
                                        break
                                    }
                                return e >= 0 ? e : 0
                            }(a - 1)][P + 1]
                        } else
                            g = this.zeroY;
                    else
                        g = this.zeroY;
                    r = T ? g - C / v[this.yaxisIndex] + 2 * (this.isReversed ? C / v[this.yaxisIndex] : 0) : g - e[a][P + 1] / v[this.yaxisIndex] + 2 * (this.isReversed ? e[a][P + 1] / v[this.yaxisIndex] : 0),
                    u.push(s),
                    p.push(r);
                    var I = this.lineHelpers.calculatePoints({
                        series: e,
                        x: s,
                        y: r,
                        realIndex: i,
                        i: a,
                        j: P,
                        prevY: y
                    })
                      , M = this._createPaths({
                        series: e,
                        i: a,
                        realIndex: i,
                        j: P,
                        x: s,
                        y: r,
                        pX: n,
                        pY: o,
                        linePath: w,
                        areaPath: k,
                        linePaths: h,
                        areaPaths: c,
                        seriesIndex: d
                    });
                    c = M.areaPaths,
                    h = M.linePaths,
                    n = M.pX,
                    o = M.pY,
                    k = M.areaPath,
                    w = M.linePath,
                    this.appendPathFrom && (A += m.line(s, this.zeroY),
                    S += m.line(s, this.zeroY)),
                    this.handleNullDataPoints(e, I, a, P, i),
                    this._handleMarkersAndLabels({
                        pointsPos: I,
                        series: e,
                        x: s,
                        y: r,
                        prevY: y,
                        i: a,
                        j: P,
                        realIndex: i
                    })
                }
                return {
                    yArrj: p,
                    xArrj: u,
                    pathFromArea: S,
                    areaPaths: c,
                    pathFromLine: A,
                    linePaths: h
                }
            }
        }, {
            key: "_handleMarkersAndLabels",
            value: function(t) {
                var e = t.pointsPos
                  , i = (t.series,
                t.x,
                t.y,
                t.prevY,
                t.i)
                  , a = t.j
                  , s = t.realIndex
                  , r = this.w
                  , n = new z(this.ctx);
                if (this.pointsChart)
                    this.scatter.draw(this.elSeries, a, {
                        realIndex: s,
                        pointsPos: e,
                        zRatio: this.zRatio,
                        elParent: this.elPointsMain
                    });
                else {
                    r.globals.series[i].length > 1 && this.elPointsMain.node.classList.add("apexcharts-element-hidden");
                    var o = this.markers.plotChartMarkers(e, s, a + 1);
                    null !== o && this.elPointsMain.add(o)
                }
                var l = n.drawDataLabel(e, s, a + 1, null);
                null !== l && this.elDataLabelsWrap.add(l)
            }
        }, {
            key: "_createPaths",
            value: function(t) {
                var e = t.series
                  , i = t.i
                  , a = t.realIndex
                  , s = t.j
                  , r = t.x
                  , n = t.y
                  , o = t.pX
                  , l = t.pY
                  , h = t.linePath
                  , c = t.areaPath
                  , d = t.linePaths
                  , g = t.areaPaths
                  , u = t.seriesIndex
                  , f = this.w
                  , p = new b(this.ctx)
                  , x = f.config.stroke.curve
                  , m = this.areaBottomY;
                if (Array.isArray(f.config.stroke.curve) && (x = Array.isArray(u) ? f.config.stroke.curve[u[i]] : f.config.stroke.curve[i]),
                "smooth" === x) {
                    var v = .35 * (r - o);
                    f.globals.hasNullValues ? (null !== e[i][s] && (null !== e[i][s + 1] ? (h = p.move(o, l) + p.curve(o + v, l, r - v, n, r + 1, n),
                    c = p.move(o + 1, l) + p.curve(o + v, l, r - v, n, r + 1, n) + p.line(r, m) + p.line(o, m) + "z") : (h = p.move(o, l),
                    c = p.move(o, l) + "z")),
                    d.push(h),
                    g.push(c)) : (h += p.curve(o + v, l, r - v, n, r, n),
                    c += p.curve(o + v, l, r - v, n, r, n)),
                    o = r,
                    l = n,
                    s === e[i].length - 2 && (c = c + p.curve(o, l, r, n, r, m) + p.move(r, n) + "z",
                    f.globals.hasNullValues || (d.push(h),
                    g.push(c)))
                } else {
                    if (null === e[i][s + 1]) {
                        h += p.move(r, n);
                        var y = f.globals.isXNumeric ? (f.globals.seriesX[a][s] - f.globals.minX) / this.xRatio : r - this.xDivision;
                        c = c + p.line(y, m) + p.move(r, n) + "z"
                    }
                    null === e[i][s] && (h += p.move(r, n),
                    c += p.move(r, m)),
                    "stepline" === x ? (h = h + p.line(r, null, "H") + p.line(null, n, "V"),
                    c = c + p.line(r, null, "H") + p.line(null, n, "V")) : "straight" === x && (h += p.line(r, n),
                    c += p.line(r, n)),
                    s === e[i].length - 2 && (c = c + p.line(r, m) + p.move(r, n) + "z",
                    d.push(h),
                    g.push(c))
                }
                return {
                    linePaths: d,
                    areaPaths: g,
                    pX: o,
                    pY: l,
                    linePath: h,
                    areaPath: c
                }
            }
        }, {
            key: "handleNullDataPoints",
            value: function(t, e, i, a, s) {
                var r = this.w;
                if (null === t[i][a] && r.config.markers.showNullDataPoints || 1 === t[i].length) {
                    var n = this.markers.plotChartMarkers(e, s, a + 1, this.strokeWidth - r.config.markers.strokeWidth / 2, !0);
                    null !== n && this.elPointsMain.add(n)
                }
            }
        }]),
        t
    }();
    window.TreemapSquared = {},
    window.TreemapSquared.generate = function() {
        function t(e, i, a, s) {
            this.xoffset = e,
            this.yoffset = i,
            this.height = s,
            this.width = a,
            this.shortestEdge = function() {
                return Math.min(this.height, this.width)
            }
            ,
            this.getCoordinates = function(t) {
                var e, i = [], a = this.xoffset, s = this.yoffset, n = r(t) / this.height, o = r(t) / this.width;
                if (this.width >= this.height)
                    for (e = 0; e < t.length; e++)
                        i.push([a, s, a + n, s + t[e] / n]),
                        s += t[e] / n;
                else
                    for (e = 0; e < t.length; e++)
                        i.push([a, s, a + t[e] / o, s + o]),
                        a += t[e] / o;
                return i
            }
            ,
            this.cutArea = function(e) {
                var i;
                if (this.width >= this.height) {
                    var a = e / this.height
                      , s = this.width - a;
                    i = new t(this.xoffset + a,this.yoffset,s,this.height)
                } else {
                    var r = e / this.width
                      , n = this.height - r;
                    i = new t(this.xoffset,this.yoffset + r,this.width,n)
                }
                return i
            }
        }
        function e(e, a, s, n, o) {
            return n = void 0 === n ? 0 : n,
            o = void 0 === o ? 0 : o,
            function(t) {
                var e, i, a = [];
                for (e = 0; e < t.length; e++)
                    for (i = 0; i < t[e].length; i++)
                        a.push(t[e][i]);
                return a
            }(i(function(t, e) {
                var i, a = [], s = e / r(t);
                for (i = 0; i < t.length; i++)
                    a[i] = t[i] * s;
                return a
            }(e, a * s), [], new t(n,o,a,s), []))
        }
        function i(t, e, s, n) {
            var o, l, h;
            if (0 !== t.length)
                return o = s.shortestEdge(),
                function(t, e, i) {
                    var s;
                    if (0 === t.length)
                        return !0;
                    (s = t.slice()).push(e);
                    var r = a(t, i)
                      , n = a(s, i);
                    return r >= n
                }(e, l = t[0], o) ? (e.push(l),
                i(t.slice(1), e, s, n)) : (h = s.cutArea(r(e), n),
                n.push(s.getCoordinates(e)),
                i(t, [], h, n)),
                n;
            n.push(s.getCoordinates(e))
        }
        function a(t, e) {
            var i = Math.min.apply(Math, t)
              , a = Math.max.apply(Math, t)
              , s = r(t);
            return Math.max(Math.pow(e, 2) * a / Math.pow(s, 2), Math.pow(s, 2) / (Math.pow(e, 2) * i))
        }
        function s(t) {
            return t && t.constructor === Array
        }
        function r(t) {
            var e, i = 0;
            for (e = 0; e < t.length; e++)
                i += t[e];
            return i
        }
        function n(t) {
            var e, i = 0;
            if (s(t[0]))
                for (e = 0; e < t.length; e++)
                    i += n(t[e]);
            else
                i = r(t);
            return i
        }
        return function t(i, a, r, o, l) {
            o = void 0 === o ? 0 : o,
            l = void 0 === l ? 0 : l;
            var h, c, d = [], g = [];
            if (s(i[0])) {
                for (c = 0; c < i.length; c++)
                    d[c] = n(i[c]);
                for (h = e(d, a, r, o, l),
                c = 0; c < i.length; c++)
                    g.push(t(i[c], h[c][2] - h[c][0], h[c][3] - h[c][1], h[c][0], h[c][1]))
            } else
                g = e(i, a, r, o, l);
            return g
        }
    }();
    var Tt, zt, It = function() {
        function t(i, a) {
            e(this, t),
            this.ctx = i,
            this.w = i.w,
            this.strokeWidth = this.w.config.stroke.width,
            this.helpers = new yt(i),
            this.dynamicAnim = this.w.config.chart.animations.dynamicAnimation,
            this.labels = []
        }
        return a(t, [{
            key: "draw",
            value: function(t) {
                var e = this
                  , i = this.w
                  , a = new b(this.ctx)
                  , s = new L(this.ctx)
                  , r = a.group({
                    class: "apexcharts-treemap"
                })
                  , n = [];
                return t.forEach((function(t) {
                    var e = t.map((function(t) {
                        return Math.abs(t)
                    }
                    ));
                    n.push(e)
                }
                )),
                this.negRange = this.helpers.checkColorRange(),
                i.config.series.forEach((function(t, i) {
                    t.data.forEach((function(t) {
                        Array.isArray(e.labels[i]) || (e.labels[i] = []),
                        e.labels[i].push(t.x)
                    }
                    ))
                }
                )),
                window.TreemapSquared.generate(n, i.globals.gridWidth, i.globals.gridHeight).forEach((function(n, o) {
                    var l = a.group({
                        class: "apexcharts-series apexcharts-treemap-series",
                        seriesName: f.escapeString(i.globals.seriesNames[o]),
                        rel: o + 1,
                        "data:realIndex": o
                    });
                    if (i.config.chart.dropShadow.enabled) {
                        var h = i.config.chart.dropShadow;
                        new p(e.ctx).dropShadow(r, h, o)
                    }
                    var c = a.group({
                        class: "apexcharts-data-labels"
                    });
                    n.forEach((function(r, n) {
                        var h = r[0]
                          , c = r[1]
                          , d = r[2]
                          , g = r[3]
                          , u = a.drawRect(h, c, d - h, g - c, 0, "#fff", 1, e.strokeWidth, i.config.plotOptions.treemap.useFillColorAsStroke ? p : i.globals.stroke.colors[o]);
                        u.attr({
                            cx: h,
                            cy: c,
                            i: o,
                            j: n,
                            width: d - h,
                            height: g - c
                        });
                        var f = e.helpers.getShadeColor(i.config.chart.type, o, n, e.negRange)
                          , p = f.color;
                        void 0 !== i.config.series[o].data[n] && i.config.series[o].data[n].fillColor && (p = i.config.series[o].data[n].fillColor);
                        var x = s.fillPath({
                            color: p,
                            seriesNumber: o,
                            dataPointIndex: n
                        });
                        u.node.classList.add("apexcharts-treemap-rect"),
                        u.attr({
                            fill: x
                        }),
                        e.helpers.addListeners(u);
                        var b = {
                            x: h + (d - h) / 2,
                            y: c + (g - c) / 2,
                            width: 0,
                            height: 0
                        }
                          , m = {
                            x: h,
                            y: c,
                            width: d - h,
                            height: g - c
                        };
                        if (i.config.chart.animations.enabled && !i.globals.dataChanged) {
                            var v = 1;
                            i.globals.resized || (v = i.config.chart.animations.speed),
                            e.animateTreemap(u, b, m, v)
                        }
                        if (i.globals.dataChanged) {
                            var y = 1;
                            e.dynamicAnim.enabled && i.globals.shouldAnimate && (y = e.dynamicAnim.speed,
                            i.globals.previousPaths[o][n] && i.globals.previousPaths[o][n].rect && (b = i.globals.previousPaths[o][n].rect),
                            e.animateTreemap(u, b, m, y))
                        }
                        var w = e.getFontSize(r)
                          , k = i.config.dataLabels.formatter(e.labels[o][n], {
                            value: i.globals.series[o][n],
                            seriesIndex: o,
                            dataPointIndex: n,
                            w: i
                        })
                          , A = e.helpers.calculateDataLabels({
                            text: k,
                            x: (h + d) / 2,
                            y: (c + g) / 2 + e.strokeWidth / 2 + w / 3,
                            i: o,
                            j: n,
                            colorProps: f,
                            fontSize: w,
                            series: t
                        });
                        i.config.dataLabels.enabled && A && e.rotateToFitLabel(A, k, h, c, d, g),
                        l.add(u),
                        null !== A && l.add(A)
                    }
                    )),
                    l.add(c),
                    r.add(l)
                }
                )),
                r
            }
        }, {
            key: "getFontSize",
            value: function(t) {
                var e = this.w;
                var i, a, s, r, n = function t(e) {
                    var i, a = 0;
                    if (Array.isArray(e[0]))
                        for (i = 0; i < e.length; i++)
                            a += t(e[i]);
                    else
                        for (i = 0; i < e.length; i++)
                            a += e[i].length;
                    return a
                }(this.labels) / function t(e) {
                    var i, a = 0;
                    if (Array.isArray(e[0]))
                        for (i = 0; i < e.length; i++)
                            a += t(e[i]);
                    else
                        for (i = 0; i < e.length; i++)
                            a += 1;
                    return a
                }(this.labels);
                return i = t[2] - t[0],
                a = t[3] - t[1],
                s = i * a,
                r = Math.pow(s, .5),
                Math.min(r / n, parseInt(e.config.dataLabels.style.fontSize, 10))
            }
        }, {
            key: "rotateToFitLabel",
            value: function(t, e, i, a, s, r) {
                var n = new b(this.ctx)
                  , o = n.getTextRects(e);
                if (o.width + 5 > s - i && o.width <= r - a) {
                    var l = n.rotateAroundCenter(t.node);
                    t.node.setAttribute("transform", "rotate(-90 ".concat(l.x, " ").concat(l.y, ")"))
                }
            }
        }, {
            key: "animateTreemap",
            value: function(t, e, i, a) {
                var s = new x(this.ctx);
                s.animateRect(t, {
                    x: e.x,
                    y: e.y,
                    width: e.width,
                    height: e.height
                }, {
                    x: i.x,
                    y: i.y,
                    width: i.width,
                    height: i.height
                }, a, (function() {
                    s.animationCompleted(t)
                }
                ))
            }
        }]),
        t
    }(), Mt = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w,
            this.timeScaleArray = [],
            this.utc = this.w.config.xaxis.labels.datetimeUTC
        }
        return a(t, [{
            key: "calculateTimeScaleTicks",
            value: function(t, e) {
                var i = this
                  , a = this.w;
                if (a.globals.allSeriesCollapsed)
                    return a.globals.labels = [],
                    a.globals.timescaleLabels = [],
                    [];
                var s = new Y(this.ctx)
                  , r = (e - t) / 864e5;
                this.determineInterval(r),
                a.globals.disableZoomIn = !1,
                a.globals.disableZoomOut = !1,
                r < .005 ? a.globals.disableZoomIn = !0 : r > 5e4 && (a.globals.disableZoomOut = !0);
                var o = s.getTimeUnitsfromTimestamp(t, e, this.utc)
                  , l = a.globals.gridWidth / r
                  , h = l / 24
                  , c = h / 60
                  , d = c / 60
                  , g = Math.floor(24 * r)
                  , u = Math.floor(24 * r * 60)
                  , f = Math.floor(24 * r * 60 * 60)
                  , p = Math.floor(r)
                  , x = Math.floor(r / 30)
                  , b = Math.floor(r / 365)
                  , m = {
                    minSecond: o.minSecond,
                    minMinute: o.minMinute,
                    minHour: o.minHour,
                    minDate: o.minDate,
                    minMonth: o.minMonth,
                    minYear: o.minYear
                }
                  , v = {
                    firstVal: m,
                    currentSecond: m.minSecond,
                    currentMinute: m.minMinute,
                    currentHour: m.minHour,
                    currentMonthDate: m.minDate,
                    currentDate: m.minDate,
                    currentMonth: m.minMonth,
                    currentYear: m.minYear,
                    daysWidthOnXAxis: l,
                    hoursWidthOnXAxis: h,
                    minutesWidthOnXAxis: c,
                    secondsWidthOnXAxis: d,
                    numberOfSeconds: f,
                    numberOfMinutes: u,
                    numberOfHours: g,
                    numberOfDays: p,
                    numberOfMonths: x,
                    numberOfYears: b
                };
                switch (this.tickInterval) {
                case "years":
                    this.generateYearScale(v);
                    break;
                case "months":
                case "half_year":
                    this.generateMonthScale(v);
                    break;
                case "months_days":
                case "months_fortnight":
                case "days":
                case "week_days":
                    this.generateDayScale(v);
                    break;
                case "hours":
                    this.generateHourScale(v);
                    break;
                case "minutes":
                    this.generateMinuteScale(v)
                }
                var y = this.timeScaleArray.map((function(t) {
                    var e = {
                        position: t.position,
                        unit: t.unit,
                        year: t.year,
                        day: t.day ? t.day : 1,
                        hour: t.hour ? t.hour : 0,
                        month: t.month + 1
                    };
                    return "month" === t.unit ? n(n({}, e), {}, {
                        day: 1,
                        value: t.value + 1
                    }) : "day" === t.unit || "hour" === t.unit ? n(n({}, e), {}, {
                        value: t.value
                    }) : "minute" === t.unit ? n(n({}, e), {}, {
                        value: t.value,
                        minute: t.value
                    }) : t
                }
                ));
                return y.filter((function(t) {
                    var e = 1
                      , s = Math.ceil(a.globals.gridWidth / 120)
                      , r = t.value;
                    void 0 !== a.config.xaxis.tickAmount && (s = a.config.xaxis.tickAmount),
                    y.length > s && (e = Math.floor(y.length / s));
                    var n = !1
                      , o = !1;
                    switch (i.tickInterval) {
                    case "years":
                        "year" === t.unit && (n = !0);
                        break;
                    case "half_year":
                        e = 7,
                        "year" === t.unit && (n = !0);
                        break;
                    case "months":
                        e = 1,
                        "year" === t.unit && (n = !0);
                        break;
                    case "months_fortnight":
                        e = 15,
                        "year" !== t.unit && "month" !== t.unit || (n = !0),
                        30 === r && (o = !0);
                        break;
                    case "months_days":
                        e = 10,
                        "month" === t.unit && (n = !0),
                        30 === r && (o = !0);
                        break;
                    case "week_days":
                        e = 8,
                        "month" === t.unit && (n = !0);
                        break;
                    case "days":
                        e = 1,
                        "month" === t.unit && (n = !0);
                        break;
                    case "hours":
                        "day" === t.unit && (n = !0);
                        break;
                    case "minutes":
                        r % 5 != 0 && (o = !0)
                    }
                    if ("minutes" === i.tickInterval || "hours" === i.tickInterval) {
                        if (!o)
                            return !0
                    } else if ((r % e == 0 || n) && !o)
                        return !0
                }
                ))
            }
        }, {
            key: "recalcDimensionsBasedOnFormat",
            value: function(t, e) {
                var i = this.w
                  , a = this.formatDates(t)
                  , s = this.removeOverlappingTS(a);
                i.globals.timescaleLabels = s.slice(),
                new nt(this.ctx).plotCoords()
            }
        }, {
            key: "determineInterval",
            value: function(t) {
                switch (!0) {
                case t > 1825:
                    this.tickInterval = "years";
                    break;
                case t > 800 && t <= 1825:
                    this.tickInterval = "half_year";
                    break;
                case t > 180 && t <= 800:
                    this.tickInterval = "months";
                    break;
                case t > 90 && t <= 180:
                    this.tickInterval = "months_fortnight";
                    break;
                case t > 60 && t <= 90:
                    this.tickInterval = "months_days";
                    break;
                case t > 30 && t <= 60:
                    this.tickInterval = "week_days";
                    break;
                case t > 2 && t <= 30:
                    this.tickInterval = "days";
                    break;
                case t > .1 && t <= 2:
                    this.tickInterval = "hours";
                    break;
                case t < .1:
                    this.tickInterval = "minutes";
                    break;
                default:
                    this.tickInterval = "days"
                }
            }
        }, {
            key: "generateYearScale",
            value: function(t) {
                var e = t.firstVal
                  , i = t.currentMonth
                  , a = t.currentYear
                  , s = t.daysWidthOnXAxis
                  , r = t.numberOfYears
                  , n = e.minYear
                  , o = 0
                  , l = new Y(this.ctx)
                  , h = "year";
                if (e.minDate > 1 || e.minMonth > 0) {
                    var c = l.determineRemainingDaysOfYear(e.minYear, e.minMonth, e.minDate);
                    o = (l.determineDaysOfYear(e.minYear) - c + 1) * s,
                    n = e.minYear + 1,
                    this.timeScaleArray.push({
                        position: o,
                        value: n,
                        unit: h,
                        year: n,
                        month: f.monthMod(i + 1)
                    })
                } else
                    1 === e.minDate && 0 === e.minMonth && this.timeScaleArray.push({
                        position: o,
                        value: n,
                        unit: h,
                        year: a,
                        month: f.monthMod(i + 1)
                    });
                for (var d = n, g = o, u = 0; u < r; u++)
                    d++,
                    g = l.determineDaysOfYear(d - 1) * s + g,
                    this.timeScaleArray.push({
                        position: g,
                        value: d,
                        unit: h,
                        year: d,
                        month: 1
                    })
            }
        }, {
            key: "generateMonthScale",
            value: function(t) {
                var e = t.firstVal
                  , i = t.currentMonthDate
                  , a = t.currentMonth
                  , s = t.currentYear
                  , r = t.daysWidthOnXAxis
                  , n = t.numberOfMonths
                  , o = a
                  , l = 0
                  , h = new Y(this.ctx)
                  , c = "month"
                  , d = 0;
                if (e.minDate > 1) {
                    l = (h.determineDaysOfMonths(a + 1, e.minYear) - i + 1) * r,
                    o = f.monthMod(a + 1);
                    var g = s + d
                      , u = f.monthMod(o)
                      , p = o;
                    0 === o && (c = "year",
                    p = g,
                    u = 1,
                    g += d += 1),
                    this.timeScaleArray.push({
                        position: l,
                        value: p,
                        unit: c,
                        year: g,
                        month: u
                    })
                } else
                    this.timeScaleArray.push({
                        position: l,
                        value: o,
                        unit: c,
                        year: s,
                        month: f.monthMod(a)
                    });
                for (var x = o + 1, b = l, m = 0, v = 1; m < n; m++,
                v++) {
                    0 === (x = f.monthMod(x)) ? (c = "year",
                    d += 1) : c = "month";
                    var y = this._getYear(s, x, d);
                    b = h.determineDaysOfMonths(x, y) * r + b;
                    var w = 0 === x ? y : x;
                    this.timeScaleArray.push({
                        position: b,
                        value: w,
                        unit: c,
                        year: y,
                        month: 0 === x ? 1 : x
                    }),
                    x++
                }
            }
        }, {
            key: "generateDayScale",
            value: function(t) {
                var e = t.firstVal
                  , i = t.currentMonth
                  , a = t.currentYear
                  , s = t.hoursWidthOnXAxis
                  , r = t.numberOfDays
                  , n = new Y(this.ctx)
                  , o = "day"
                  , l = e.minDate + 1
                  , h = l
                  , c = function(t, e, i) {
                    return t > n.determineDaysOfMonths(e + 1, i) ? (h = 1,
                    o = "month",
                    g = e += 1,
                    e) : e
                }
                  , d = (24 - e.minHour) * s
                  , g = l
                  , u = c(h, i, a);
                0 === e.minHour && 1 === e.minDate && (d = 0,
                g = f.monthMod(e.minMonth),
                o = "month",
                h = e.minDate,
                r++),
                this.timeScaleArray.push({
                    position: d,
                    value: g,
                    unit: o,
                    year: this._getYear(a, u, 0),
                    month: f.monthMod(u),
                    day: h
                });
                for (var p = d, x = 0; x < r; x++) {
                    o = "day",
                    u = c(h += 1, u, this._getYear(a, u, 0));
                    var b = this._getYear(a, u, 0);
                    p = 24 * s + p;
                    var m = 1 === h ? f.monthMod(u) : h;
                    this.timeScaleArray.push({
                        position: p,
                        value: m,
                        unit: o,
                        year: b,
                        month: f.monthMod(u),
                        day: m
                    })
                }
            }
        }, {
            key: "generateHourScale",
            value: function(t) {
                var e = t.firstVal
                  , i = t.currentDate
                  , a = t.currentMonth
                  , s = t.currentYear
                  , r = t.minutesWidthOnXAxis
                  , n = t.numberOfHours
                  , o = new Y(this.ctx)
                  , l = "hour"
                  , h = function(t, e) {
                    return t > o.determineDaysOfMonths(e + 1, s) && (x = 1,
                    e += 1),
                    {
                        month: e,
                        date: x
                    }
                }
                  , c = function(t, e) {
                    return t > o.determineDaysOfMonths(e + 1, s) ? e += 1 : e
                }
                  , d = 60 - (e.minMinute + e.minSecond / 60)
                  , g = d * r
                  , u = e.minHour + 1
                  , p = u + 1;
                60 === d && (g = 0,
                p = (u = e.minHour) + 1);
                var x = i
                  , b = c(x, a);
                this.timeScaleArray.push({
                    position: g,
                    value: u,
                    unit: l,
                    day: x,
                    hour: p,
                    year: s,
                    month: f.monthMod(b)
                });
                for (var m = g, v = 0; v < n; v++) {
                    if (l = "hour",
                    p >= 24)
                        p = 0,
                        l = "day",
                        b = h(x += 1, b).month,
                        b = c(x, b);
                    var y = this._getYear(s, b, 0);
                    m = 0 === p && 0 === v ? d * r : 60 * r + m;
                    var w = 0 === p ? x : p;
                    this.timeScaleArray.push({
                        position: m,
                        value: w,
                        unit: l,
                        hour: p,
                        day: x,
                        year: y,
                        month: f.monthMod(b)
                    }),
                    p++
                }
            }
        }, {
            key: "generateMinuteScale",
            value: function(t) {
                var e = t.firstVal
                  , i = (t.currentSecond,
                t.currentMinute,
                t.currentHour)
                  , a = t.currentDate
                  , s = t.currentMonth
                  , r = t.currentYear
                  , n = t.minutesWidthOnXAxis
                  , o = t.secondsWidthOnXAxis
                  , l = t.numberOfMinutes
                  , h = "minute"
                  , c = (60 - e.minSecond) * o
                  , d = e.minMinute + 1
                  , g = d + 1
                  , u = a
                  , p = s
                  , x = r
                  , b = i;
                this.timeScaleArray.push({
                    position: c,
                    value: d,
                    unit: h,
                    day: u,
                    hour: b,
                    minute: g,
                    year: x,
                    month: f.monthMod(p)
                });
                for (var m = c, v = 0; v < l; v++)
                    g >= 60 && (g = 0,
                    24 === (b += 1) && (b = 0)),
                    m = n + m,
                    this.timeScaleArray.push({
                        position: m,
                        value: g,
                        unit: h,
                        hour: b,
                        minute: g,
                        day: u,
                        year: this._getYear(r, p, 0),
                        month: f.monthMod(p)
                    }),
                    g++
            }
        }, {
            key: "createRawDateString",
            value: function(t, e) {
                var i = t.year;
                return i += "-" + ("0" + t.month.toString()).slice(-2),
                "day" === t.unit ? i += "day" === t.unit ? "-" + ("0" + e).slice(-2) : "-01" : i += "-" + ("0" + (t.day ? t.day : "1")).slice(-2),
                "hour" === t.unit ? i += "hour" === t.unit ? "T" + ("0" + e).slice(-2) : "T00" : i += "T" + ("0" + (t.hour ? t.hour : "0")).slice(-2),
                i += "minute" === t.unit ? ":" + ("0" + e).slice(-2) + ":00" : ":00:00",
                this.utc && (i += ".000Z"),
                i
            }
        }, {
            key: "formatDates",
            value: function(t) {
                var e = this
                  , i = this.w;
                return t.map((function(t) {
                    var a = t.value.toString()
                      , s = new Y(e.ctx)
                      , r = e.createRawDateString(t, a)
                      , n = s.getDate(s.parseDate(r));
                    if (e.utc || (n = s.getDate(s.parseDateWithTimezone(r))),
                    void 0 === i.config.xaxis.labels.format) {
                        var o = "dd MMM"
                          , l = i.config.xaxis.labels.datetimeFormatter;
                        "year" === t.unit && (o = l.year),
                        "month" === t.unit && (o = l.month),
                        "day" === t.unit && (o = l.day),
                        "hour" === t.unit && (o = l.hour),
                        "minute" === t.unit && (o = l.minute),
                        a = s.formatDate(n, o)
                    } else
                        a = s.formatDate(n, i.config.xaxis.labels.format);
                    return {
                        dateString: r,
                        position: t.position,
                        value: a,
                        unit: t.unit,
                        year: t.year,
                        month: t.month
                    }
                }
                ))
            }
        }, {
            key: "removeOverlappingTS",
            value: function(t) {
                var e, i = this, a = new b(this.ctx), s = !1;
                t.length > 0 && t[0].value && t.every((function(e) {
                    return e.value.length === t[0].value.length
                }
                )) && (s = !0,
                e = a.getTextRects(t[0].value).width);
                var r = 0
                  , n = t.map((function(n, o) {
                    if (o > 0 && i.w.config.xaxis.labels.hideOverlappingLabels) {
                        var l = s ? e : a.getTextRects(t[r].value).width
                          , h = t[r].position;
                        return n.position > h + l + 10 ? (r = o,
                        n) : null
                    }
                    return n
                }
                ));
                return n = n.filter((function(t) {
                    return null !== t
                }
                ))
            }
        }, {
            key: "_getYear",
            value: function(t, e, i) {
                return t + Math.floor(e / 12) + i
            }
        }]),
        t
    }(), Et = function() {
        function t(i, a) {
            e(this, t),
            this.ctx = a,
            this.w = a.w,
            this.el = i
        }
        return a(t, [{
            key: "setupElements",
            value: function() {
                var t = this.w.globals
                  , e = this.w.config
                  , i = e.chart.type;
                t.axisCharts = ["line", "area", "bar", "rangeBar", "candlestick", "scatter", "bubble", "radar", "heatmap", "treemap"].indexOf(i) > -1,
                t.xyCharts = ["line", "area", "bar", "rangeBar", "candlestick", "scatter", "bubble"].indexOf(i) > -1,
                t.isBarHorizontal = ("bar" === e.chart.type || "rangeBar" === e.chart.type) && e.plotOptions.bar.horizontal,
                t.chartClass = ".apexcharts" + t.chartID,
                t.dom.baseEl = this.el,
                t.dom.elWrap = document.createElement("div"),
                b.setAttrs(t.dom.elWrap, {
                    id: t.chartClass.substring(1),
                    class: "apexcharts-canvas " + t.chartClass.substring(1)
                }),
                this.el.appendChild(t.dom.elWrap),
                t.dom.Paper = new window.SVG.Doc(t.dom.elWrap),
                t.dom.Paper.attr({
                    class: "apexcharts-svg",
                    "xmlns:data": "ApexChartsNS",
                    transform: "translate(".concat(e.chart.offsetX, ", ").concat(e.chart.offsetY, ")")
                }),
                t.dom.Paper.node.style.background = e.chart.background,
                this.setSVGDimensions(),
                t.dom.elGraphical = t.dom.Paper.group().attr({
                    class: "apexcharts-inner apexcharts-graphical"
                }),
                t.dom.elAnnotations = t.dom.Paper.group().attr({
                    class: "apexcharts-annotations"
                }),
                t.dom.elDefs = t.dom.Paper.defs(),
                t.dom.elLegendWrap = document.createElement("div"),
                t.dom.elLegendWrap.classList.add("apexcharts-legend"),
                t.dom.elWrap.appendChild(t.dom.elLegendWrap),
                t.dom.Paper.add(t.dom.elGraphical),
                t.dom.elGraphical.add(t.dom.elDefs)
            }
        }, {
            key: "plotChartType",
            value: function(t, e) {
                var i = this.w
                  , a = i.config
                  , s = i.globals
                  , r = {
                    series: [],
                    i: []
                }
                  , n = {
                    series: [],
                    i: []
                }
                  , o = {
                    series: [],
                    i: []
                }
                  , l = {
                    series: [],
                    i: []
                }
                  , h = {
                    series: [],
                    i: []
                }
                  , c = {
                    series: [],
                    i: []
                };
                s.series.map((function(e, d) {
                    void 0 !== t[d].type ? ("column" === t[d].type || "bar" === t[d].type ? (s.series.length > 1 && a.plotOptions.bar.horizontal && console.warn("Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`"),
                    h.series.push(e),
                    h.i.push(d),
                    i.globals.columnSeries = h.series) : "area" === t[d].type ? (n.series.push(e),
                    n.i.push(d)) : "line" === t[d].type ? (r.series.push(e),
                    r.i.push(d)) : "scatter" === t[d].type ? (o.series.push(e),
                    o.i.push(d)) : "bubble" === t[d].type ? (l.series.push(e),
                    l.i.push(d)) : "candlestick" === t[d].type ? (c.series.push(e),
                    c.i.push(d)) : console.warn("You have specified an unrecognized chart type. Available types for this propery are line/area/column/bar/scatter/bubble"),
                    s.comboCharts = !0) : (r.series.push(e),
                    r.i.push(d))
                }
                ));
                var d = new Pt(this.ctx,e)
                  , g = new vt(this.ctx,e);
                this.ctx.pie = new At(this.ctx);
                var u = new Ct(this.ctx);
                this.ctx.rangeBar = new F(this.ctx,e);
                var f = new St(this.ctx)
                  , p = [];
                if (s.comboCharts) {
                    if (n.series.length > 0 && p.push(d.draw(n.series, "area", n.i)),
                    h.series.length > 0)
                        if (i.config.chart.stacked) {
                            var x = new mt(this.ctx,e);
                            p.push(x.draw(h.series, h.i))
                        } else {
                            var b = new X(this.ctx,e);
                            p.push(b.draw(h.series, h.i))
                        }
                    if (r.series.length > 0 && p.push(d.draw(r.series, "line", r.i)),
                    c.series.length > 0 && p.push(g.draw(c.series, c.i)),
                    o.series.length > 0) {
                        var m = new Pt(this.ctx,e,!0);
                        p.push(m.draw(o.series, "scatter", o.i))
                    }
                    if (l.series.length > 0) {
                        var v = new Pt(this.ctx,e,!0);
                        p.push(v.draw(l.series, "bubble", l.i))
                    }
                } else
                    switch (a.chart.type) {
                    case "line":
                        p = d.draw(s.series, "line");
                        break;
                    case "area":
                        p = d.draw(s.series, "area");
                        break;
                    case "bar":
                        if (a.chart.stacked)
                            p = new mt(this.ctx,e).draw(s.series);
                        else
                            p = new X(this.ctx,e).draw(s.series);
                        break;
                    case "candlestick":
                        p = new vt(this.ctx,e).draw(s.series);
                        break;
                    case "rangeBar":
                        p = this.ctx.rangeBar.draw(s.series);
                        break;
                    case "heatmap":
                        p = new wt(this.ctx,e).draw(s.series);
                        break;
                    case "treemap":
                        p = new It(this.ctx,e).draw(s.series);
                        break;
                    case "pie":
                    case "donut":
                    case "polarArea":
                        p = this.ctx.pie.draw(s.series);
                        break;
                    case "radialBar":
                        p = u.draw(s.series);
                        break;
                    case "radar":
                        p = f.draw(s.series);
                        break;
                    default:
                        p = d.draw(s.series)
                    }
                return p
            }
        }, {
            key: "setSVGDimensions",
            value: function() {
                var t = this.w.globals
                  , e = this.w.config;
                t.svgWidth = e.chart.width,
                t.svgHeight = e.chart.height;
                var i = f.getDimensions(this.el)
                  , a = e.chart.width.toString().split(/[0-9]+/g).pop();
                if ("%" === a ? f.isNumber(i[0]) && (0 === i[0].width && (i = f.getDimensions(this.el.parentNode)),
                t.svgWidth = i[0] * parseInt(e.chart.width, 10) / 100) : "px" !== a && "" !== a || (t.svgWidth = parseInt(e.chart.width, 10)),
                "auto" !== t.svgHeight && "" !== t.svgHeight)
                    if ("%" === e.chart.height.toString().split(/[0-9]+/g).pop()) {
                        var s = f.getDimensions(this.el.parentNode);
                        t.svgHeight = s[1] * parseInt(e.chart.height, 10) / 100
                    } else
                        t.svgHeight = parseInt(e.chart.height, 10);
                else
                    t.axisCharts ? t.svgHeight = t.svgWidth / 1.61 : t.svgHeight = t.svgWidth / 1.2;
                t.svgWidth < 0 && (t.svgWidth = 0),
                t.svgHeight < 0 && (t.svgHeight = 0),
                b.setAttrs(t.dom.Paper.node, {
                    width: t.svgWidth,
                    height: t.svgHeight
                });
                var r = e.chart.sparkline.enabled ? 0 : t.axisCharts ? e.chart.parentHeightOffset : 0;
                t.dom.Paper.node.parentNode.parentNode.style.minHeight = t.svgHeight + r + "px",
                t.dom.elWrap.style.width = t.svgWidth + "px",
                t.dom.elWrap.style.height = t.svgHeight + "px"
            }
        }, {
            key: "shiftGraphPosition",
            value: function() {
                var t = this.w.globals
                  , e = t.translateY
                  , i = {
                    transform: "translate(" + t.translateX + ", " + e + ")"
                };
                b.setAttrs(t.dom.elGraphical.node, i)
            }
        }, {
            key: "resizeNonAxisCharts",
            value: function() {
                var t = this.w
                  , e = t.globals
                  , i = 0
                  , a = t.config.chart.sparkline.enabled ? 1 : 15;
                a += t.config.grid.padding.bottom,
                "top" !== t.config.legend.position && "bottom" !== t.config.legend.position || !t.config.legend.show || t.config.legend.floating || (i = new lt(this.ctx).legendHelpers.getLegendBBox().clwh + 10);
                var s = t.globals.dom.baseEl.querySelector(".apexcharts-radialbar, .apexcharts-pie")
                  , r = 2.05 * t.globals.radialSize;
                if (s && !t.config.chart.sparkline.enabled) {
                    var n = f.getBoundingClientRect(s);
                    r = n.bottom;
                    var o = n.bottom - n.top;
                    r = Math.max(2.05 * t.globals.radialSize, o)
                }
                var l = r + e.translateY + i + a;
                e.dom.elLegendForeign && e.dom.elLegendForeign.setAttribute("height", l),
                e.dom.elWrap.style.height = l + "px",
                b.setAttrs(e.dom.Paper.node, {
                    height: l
                }),
                e.dom.Paper.node.parentNode.parentNode.style.minHeight = l + "px"
            }
        }, {
            key: "coreCalculations",
            value: function() {
                new U(this.ctx).init()
            }
        }, {
            key: "resetGlobals",
            value: function() {
                var t = this
                  , e = function() {
                    return t.w.config.series.map((function(t) {
                        return []
                    }
                    ))
                }
                  , i = new H
                  , a = this.w.globals;
                i.initGlobalVars(a),
                a.seriesXvalues = e(),
                a.seriesYvalues = e()
            }
        }, {
            key: "isMultipleY",
            value: function() {
                if (this.w.config.yaxis.constructor === Array && this.w.config.yaxis.length > 1)
                    return this.w.globals.isMultipleYAxis = !0,
                    !0
            }
        }, {
            key: "xySettings",
            value: function() {
                var t = null
                  , e = this.w;
                if (e.globals.axisCharts) {
                    if ("back" === e.config.xaxis.crosshairs.position)
                        new Q(this.ctx).drawXCrosshairs();
                    if ("back" === e.config.yaxis[0].crosshairs.position)
                        new Q(this.ctx).drawYCrosshairs();
                    if ("datetime" === e.config.xaxis.type && void 0 === e.config.xaxis.labels.formatter) {
                        this.ctx.timeScale = new Mt(this.ctx);
                        var i = [];
                        isFinite(e.globals.minX) && isFinite(e.globals.maxX) && !e.globals.isBarHorizontal ? i = this.ctx.timeScale.calculateTimeScaleTicks(e.globals.minX, e.globals.maxX) : e.globals.isBarHorizontal && (i = this.ctx.timeScale.calculateTimeScaleTicks(e.globals.minY, e.globals.maxY)),
                        this.ctx.timeScale.recalcDimensionsBasedOnFormat(i)
                    }
                    t = new y(this.ctx).getCalculatedRatios()
                }
                return t
            }
        }, {
            key: "updateSourceChart",
            value: function(t) {
                this.ctx.w.globals.selection = void 0,
                this.ctx.updateHelpers._updateOptions({
                    chart: {
                        selection: {
                            xaxis: {
                                min: t.w.globals.minX,
                                max: t.w.globals.maxX
                            }
                        }
                    }
                }, !1, !1)
            }
        }, {
            key: "setupBrushHandler",
            value: function() {
                var t = this
                  , e = this.w;
                if (e.config.chart.brush.enabled && "function" != typeof e.config.chart.events.selection) {
                    var i = e.config.chart.brush.targets || [e.config.chart.brush.target];
                    i.forEach((function(e) {
                        var i = ApexCharts.getChartByID(e);
                        i.w.globals.brushSource = t.ctx,
                        "function" != typeof i.w.config.chart.events.zoomed && (i.w.config.chart.events.zoomed = function() {
                            t.updateSourceChart(i)
                        }
                        ),
                        "function" != typeof i.w.config.chart.events.scrolled && (i.w.config.chart.events.scrolled = function() {
                            t.updateSourceChart(i)
                        }
                        )
                    }
                    )),
                    e.config.chart.events.selection = function(t, a) {
                        i.forEach((function(t) {
                            var i = ApexCharts.getChartByID(t)
                              , s = f.clone(e.config.yaxis);
                            if (e.config.chart.brush.autoScaleYaxis && 1 === i.w.globals.series.length) {
                                var r = new j(i);
                                s = r.autoScaleY(i, s, a)
                            }
                            var o = i.w.config.yaxis.reduce((function(t, e, a) {
                                return [].concat(g(t), [n(n({}, i.w.config.yaxis[a]), {}, {
                                    min: s[0].min,
                                    max: s[0].max
                                })])
                            }
                            ), []);
                            i.ctx.updateHelpers._updateOptions({
                                xaxis: {
                                    min: a.xaxis.min,
                                    max: a.xaxis.max
                                },
                                yaxis: o
                            }, !1, !1, !1, !1)
                        }
                        ))
                    }
                }
            }
        }]),
        t
    }(), Xt = function() {
        function i(t) {
            e(this, i),
            this.ctx = t,
            this.w = t.w
        }
        return a(i, [{
            key: "_updateOptions",
            value: function(e) {
                var i = this
                  , a = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]
                  , s = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]
                  , r = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3]
                  , n = arguments.length > 4 && void 0 !== arguments[4] && arguments[4]
                  , o = [this.ctx];
                r && (o = this.ctx.getSyncedCharts()),
                this.ctx.w.globals.isExecCalled && (o = [this.ctx],
                this.ctx.w.globals.isExecCalled = !1),
                o.forEach((function(r) {
                    var o = r.w;
                    return o.globals.shouldAnimate = s,
                    a || (o.globals.resized = !0,
                    o.globals.dataChanged = !0,
                    s && r.series.getPreviousPaths()),
                    e && "object" === t(e) && (r.config = new D(e),
                    e = y.extendArrayProps(r.config, e, o),
                    r.w.globals.chartID !== i.ctx.w.globals.chartID && delete e.series,
                    o.config = f.extend(o.config, e),
                    n && (o.globals.lastXAxis = e.xaxis ? f.clone(e.xaxis) : [],
                    o.globals.lastYAxis = e.yaxis ? f.clone(e.yaxis) : [],
                    o.globals.initialConfig = f.extend({}, o.config),
                    o.globals.initialSeries = f.clone(o.config.series))),
                    r.update(e)
                }
                ))
            }
        }, {
            key: "_updateSeries",
            value: function(t, e) {
                var i, a = this, s = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], r = this.w;
                return r.globals.shouldAnimate = e,
                r.globals.dataChanged = !0,
                e && this.ctx.series.getPreviousPaths(),
                r.globals.axisCharts ? (0 === (i = t.map((function(t, e) {
                    return a._extendSeries(t, e)
                }
                ))).length && (i = [{
                    data: []
                }]),
                r.config.series = i) : r.config.series = t.slice(),
                s && (r.globals.initialSeries = f.clone(r.config.series)),
                this.ctx.update()
            }
        }, {
            key: "_extendSeries",
            value: function(t, e) {
                var i = this.w
                  , a = i.config.series[e];
                return n(n({}, i.config.series[e]), {}, {
                    name: t.name ? t.name : a && a.name,
                    color: t.color ? t.color : a && a.color,
                    type: t.type ? t.type : a && a.type,
                    data: t.data ? t.data : a && a.data
                })
            }
        }, {
            key: "toggleDataPointSelection",
            value: function(t, e) {
                var i = this.w
                  , a = null
                  , s = ".apexcharts-series[data\\:realIndex='".concat(t, "']");
                return i.globals.axisCharts ? a = i.globals.dom.Paper.select("".concat(s, " path[j='").concat(e, "'], ").concat(s, " circle[j='").concat(e, "'], ").concat(s, " rect[j='").concat(e, "']")).members[0] : void 0 === e && (a = i.globals.dom.Paper.select("".concat(s, " path[j='").concat(t, "']")).members[0],
                "pie" !== i.config.chart.type && "polarArea" !== i.config.chart.type && "donut" !== i.config.chart.type || this.ctx.pie.pieClicked(t)),
                a ? (new b(this.ctx).pathMouseDown(a, null),
                a.node ? a.node : null) : (console.warn("toggleDataPointSelection: Element not found"),
                null)
            }
        }, {
            key: "forceXAxisUpdate",
            value: function(t) {
                var e = this.w;
                if (["min", "max"].forEach((function(i) {
                    void 0 !== t.xaxis[i] && (e.config.xaxis[i] = t.xaxis[i],
                    e.globals.lastXAxis[i] = t.xaxis[i])
                }
                )),
                t.xaxis.categories && t.xaxis.categories.length && (e.config.xaxis.categories = t.xaxis.categories),
                e.config.xaxis.convertedCatToNumeric) {
                    var i = new R(t);
                    t = i.convertCatToNumericXaxis(t, this.ctx)
                }
                return t
            }
        }, {
            key: "forceYAxisUpdate",
            value: function(t) {
                var e = this.w;
                return e.config.chart.stacked && "100%" === e.config.chart.stackType && (Array.isArray(t.yaxis) ? t.yaxis.forEach((function(e, i) {
                    t.yaxis[i].min = 0,
                    t.yaxis[i].max = 100
                }
                )) : (t.yaxis.min = 0,
                t.yaxis.max = 100)),
                t
            }
        }, {
            key: "revertDefaultAxisMinMax",
            value: function(t) {
                var e = this
                  , i = this.w
                  , a = i.globals.lastXAxis
                  , s = i.globals.lastYAxis;
                t && t.xaxis && (a = t.xaxis),
                t && t.yaxis && (s = t.yaxis),
                i.config.xaxis.min = a.min,
                i.config.xaxis.max = a.max;
                var r = function(t) {
                    void 0 !== s[t] && (i.config.yaxis[t].min = s[t].min,
                    i.config.yaxis[t].max = s[t].max)
                };
                i.config.yaxis.map((function(t, a) {
                    i.globals.zoomed || void 0 !== s[a] ? r(a) : void 0 !== e.ctx.opts.yaxis[a] && (t.min = e.ctx.opts.yaxis[a].min,
                    t.max = e.ctx.opts.yaxis[a].max)
                }
                ))
            }
        }]),
        i
    }();
    Tt = "undefined" != typeof window ? window : void 0,
    zt = function(e, i) {
        var a = (void 0 !== this ? this : e).SVG = function(t) {
            if (a.supported)
                return t = new a.Doc(t),
                a.parser.draw || a.prepare(),
                t
        }
        ;
        if (a.ns = "http://www.w3.org/2000/svg",
        a.xmlns = "http://www.w3.org/2000/xmlns/",
        a.xlink = "http://www.w3.org/1999/xlink",
        a.svgjs = "http://svgjs.com/svgjs",
        a.supported = !0,
        !a.supported)
            return !1;
        a.did = 1e3,
        a.eid = function(t) {
            return "Svgjs" + d(t) + a.did++
        }
        ,
        a.create = function(t) {
            var e = i.createElementNS(this.ns, t);
            return e.setAttribute("id", this.eid(t)),
            e
        }
        ,
        a.extend = function() {
            var t, e;
            e = (t = [].slice.call(arguments)).pop();
            for (var i = t.length - 1; i >= 0; i--)
                if (t[i])
                    for (var s in e)
                        t[i].prototype[s] = e[s];
            a.Set && a.Set.inherit && a.Set.inherit()
        }
        ,
        a.invent = function(t) {
            var e = "function" == typeof t.create ? t.create : function() {
                this.constructor.call(this, a.create(t.create))
            }
            ;
            return t.inherit && (e.prototype = new t.inherit),
            t.extend && a.extend(e, t.extend),
            t.construct && a.extend(t.parent || a.Container, t.construct),
            e
        }
        ,
        a.adopt = function(t) {
            return t ? t.instance ? t.instance : ((i = "svg" == t.nodeName ? t.parentNode instanceof e.SVGElement ? new a.Nested : new a.Doc : "linearGradient" == t.nodeName ? new a.Gradient("linear") : "radialGradient" == t.nodeName ? new a.Gradient("radial") : a[d(t.nodeName)] ? new (a[d(t.nodeName)]) : new a.Element(t)).type = t.nodeName,
            i.node = t,
            t.instance = i,
            i instanceof a.Doc && i.namespace().defs(),
            i.setData(JSON.parse(t.getAttribute("svgjs:data")) || {}),
            i) : null;
            var i
        }
        ,
        a.prepare = function() {
            var t = i.getElementsByTagName("body")[0]
              , e = (t ? new a.Doc(t) : a.adopt(i.documentElement).nested()).size(2, 0);
            a.parser = {
                body: t || i.documentElement,
                draw: e.style("opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden").node,
                poly: e.polyline().node,
                path: e.path().node,
                native: a.create("svg")
            }
        }
        ,
        a.parser = {
            native: a.create("svg")
        },
        i.addEventListener("DOMContentLoaded", (function() {
            a.parser.draw || a.prepare()
        }
        ), !1),
        a.regex = {
            numberAndUnit: /^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i,
            hex: /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,
            rgb: /rgb\((\d+),(\d+),(\d+)\)/,
            reference: /#([a-z0-9\-_]+)/i,
            transforms: /\)\s*,?\s*/,
            whitespace: /\s/g,
            isHex: /^#[a-f0-9]{3,6}$/i,
            isRgb: /^rgb\(/,
            isCss: /[^:]+:[^;]+;?/,
            isBlank: /^(\s+)?$/,
            isNumber: /^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,
            isPercent: /^-?[\d\.]+%$/,
            isImage: /\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i,
            delimiter: /[\s,]+/,
            hyphen: /([^e])\-/gi,
            pathLetters: /[MLHVCSQTAZ]/gi,
            isPathLetter: /[MLHVCSQTAZ]/i,
            numbersWithDots: /((\d?\.\d+(?:e[+-]?\d+)?)((?:\.\d+(?:e[+-]?\d+)?)+))+/gi,
            dots: /\./g
        },
        a.utils = {
            map: function(t, e) {
                for (var i = t.length, a = [], s = 0; s < i; s++)
                    a.push(e(t[s]));
                return a
            },
            filter: function(t, e) {
                for (var i = t.length, a = [], s = 0; s < i; s++)
                    e(t[s]) && a.push(t[s]);
                return a
            },
            filterSVGElements: function(t) {
                return this.filter(t, (function(t) {
                    return t instanceof e.SVGElement
                }
                ))
            }
        },
        a.defaults = {
            attrs: {
                "fill-opacity": 1,
                "stroke-opacity": 1,
                "stroke-width": 0,
                "stroke-linejoin": "miter",
                "stroke-linecap": "butt",
                fill: "#000000",
                stroke: "#000000",
                opacity: 1,
                x: 0,
                y: 0,
                cx: 0,
                cy: 0,
                width: 0,
                height: 0,
                r: 0,
                rx: 0,
                ry: 0,
                offset: 0,
                "stop-opacity": 1,
                "stop-color": "#000000",
                "font-size": 16,
                "font-family": "Helvetica, Arial, sans-serif",
                "text-anchor": "start"
            }
        },
        a.Color = function(e) {
            var i, s;
            this.r = 0,
            this.g = 0,
            this.b = 0,
            e && ("string" == typeof e ? a.regex.isRgb.test(e) ? (i = a.regex.rgb.exec(e.replace(a.regex.whitespace, "")),
            this.r = parseInt(i[1]),
            this.g = parseInt(i[2]),
            this.b = parseInt(i[3])) : a.regex.isHex.test(e) && (i = a.regex.hex.exec(4 == (s = e).length ? ["#", s.substring(1, 2), s.substring(1, 2), s.substring(2, 3), s.substring(2, 3), s.substring(3, 4), s.substring(3, 4)].join("") : s),
            this.r = parseInt(i[1], 16),
            this.g = parseInt(i[2], 16),
            this.b = parseInt(i[3], 16)) : "object" === t(e) && (this.r = e.r,
            this.g = e.g,
            this.b = e.b))
        }
        ,
        a.extend(a.Color, {
            toString: function() {
                return this.toHex()
            },
            toHex: function() {
                return "#" + g(this.r) + g(this.g) + g(this.b)
            },
            toRgb: function() {
                return "rgb(" + [this.r, this.g, this.b].join() + ")"
            },
            brightness: function() {
                return this.r / 255 * .3 + this.g / 255 * .59 + this.b / 255 * .11
            },
            morph: function(t) {
                return this.destination = new a.Color(t),
                this
            },
            at: function(t) {
                return this.destination ? (t = t < 0 ? 0 : t > 1 ? 1 : t,
                new a.Color({
                    r: ~~(this.r + (this.destination.r - this.r) * t),
                    g: ~~(this.g + (this.destination.g - this.g) * t),
                    b: ~~(this.b + (this.destination.b - this.b) * t)
                })) : this
            }
        }),
        a.Color.test = function(t) {
            return t += "",
            a.regex.isHex.test(t) || a.regex.isRgb.test(t)
        }
        ,
        a.Color.isRgb = function(t) {
            return t && "number" == typeof t.r && "number" == typeof t.g && "number" == typeof t.b
        }
        ,
        a.Color.isColor = function(t) {
            return a.Color.isRgb(t) || a.Color.test(t)
        }
        ,
        a.Array = function(t, e) {
            0 == (t = (t || []).valueOf()).length && e && (t = e.valueOf()),
            this.value = this.parse(t)
        }
        ,
        a.extend(a.Array, {
            toString: function() {
                return this.value.join(" ")
            },
            valueOf: function() {
                return this.value
            },
            parse: function(t) {
                return t = t.valueOf(),
                Array.isArray(t) ? t : this.split(t)
            }
        }),
        a.PointArray = function(t, e) {
            a.Array.call(this, t, e || [[0, 0]])
        }
        ,
        a.PointArray.prototype = new a.Array,
        a.PointArray.prototype.constructor = a.PointArray;
        for (var s = {
            M: function(t, e, i) {
                return e.x = i.x = t[0],
                e.y = i.y = t[1],
                ["M", e.x, e.y]
            },
            L: function(t, e) {
                return e.x = t[0],
                e.y = t[1],
                ["L", t[0], t[1]]
            },
            H: function(t, e) {
                return e.x = t[0],
                ["H", t[0]]
            },
            V: function(t, e) {
                return e.y = t[0],
                ["V", t[0]]
            },
            C: function(t, e) {
                return e.x = t[4],
                e.y = t[5],
                ["C", t[0], t[1], t[2], t[3], t[4], t[5]]
            },
            Q: function(t, e) {
                return e.x = t[2],
                e.y = t[3],
                ["Q", t[0], t[1], t[2], t[3]]
            },
            Z: function(t, e, i) {
                return e.x = i.x,
                e.y = i.y,
                ["Z"]
            }
        }, r = "mlhvqtcsaz".split(""), n = 0, o = r.length; n < o; ++n)
            s[r[n]] = function(t) {
                return function(e, i, a) {
                    if ("H" == t)
                        e[0] = e[0] + i.x;
                    else if ("V" == t)
                        e[0] = e[0] + i.y;
                    else if ("A" == t)
                        e[5] = e[5] + i.x,
                        e[6] = e[6] + i.y;
                    else
                        for (var r = 0, n = e.length; r < n; ++r)
                            e[r] = e[r] + (r % 2 ? i.y : i.x);
                    return s[t](e, i, a)
                }
            }(r[n].toUpperCase());
        a.PathArray = function(t, e) {
            a.Array.call(this, t, e || [["M", 0, 0]])
        }
        ,
        a.PathArray.prototype = new a.Array,
        a.PathArray.prototype.constructor = a.PathArray,
        a.extend(a.PathArray, {
            toString: function() {
                return function(t) {
                    for (var e = 0, i = t.length, a = ""; e < i; e++)
                        a += t[e][0],
                        null != t[e][1] && (a += t[e][1],
                        null != t[e][2] && (a += " ",
                        a += t[e][2],
                        null != t[e][3] && (a += " ",
                        a += t[e][3],
                        a += " ",
                        a += t[e][4],
                        null != t[e][5] && (a += " ",
                        a += t[e][5],
                        a += " ",
                        a += t[e][6],
                        null != t[e][7] && (a += " ",
                        a += t[e][7])))));
                    return a + " "
                }(this.value)
            },
            move: function(t, e) {
                var i = this.bbox();
                return i.x,
                i.y,
                this
            },
            at: function(t) {
                if (!this.destination)
                    return this;
                for (var e = this.value, i = this.destination.value, s = [], r = new a.PathArray, n = 0, o = e.length; n < o; n++) {
                    s[n] = [e[n][0]];
                    for (var l = 1, h = e[n].length; l < h; l++)
                        s[n][l] = e[n][l] + (i[n][l] - e[n][l]) * t;
                    "A" === s[n][0] && (s[n][4] = +(0 != s[n][4]),
                    s[n][5] = +(0 != s[n][5]))
                }
                return r.value = s,
                r
            },
            parse: function(t) {
                if (t instanceof a.PathArray)
                    return t.valueOf();
                var e, i = {
                    M: 2,
                    L: 2,
                    H: 1,
                    V: 1,
                    C: 6,
                    S: 4,
                    Q: 4,
                    T: 2,
                    A: 7,
                    Z: 0
                };
                t = "string" == typeof t ? t.replace(a.regex.numbersWithDots, h).replace(a.regex.pathLetters, " $& ").replace(a.regex.hyphen, "$1 -").trim().split(a.regex.delimiter) : t.reduce((function(t, e) {
                    return [].concat.call(t, e)
                }
                ), []);
                var r = []
                  , n = new a.Point
                  , o = new a.Point
                  , l = 0
                  , c = t.length;
                do {
                    a.regex.isPathLetter.test(t[l]) ? (e = t[l],
                    ++l) : "M" == e ? e = "L" : "m" == e && (e = "l"),
                    r.push(s[e].call(null, t.slice(l, l += i[e.toUpperCase()]).map(parseFloat), n, o))
                } while (c > l);
                return r
            },
            bbox: function() {
                return a.parser.draw || a.prepare(),
                a.parser.path.setAttribute("d", this.toString()),
                a.parser.path.getBBox()
            }
        }),
        a.Number = a.invent({
            create: function(t, e) {
                this.value = 0,
                this.unit = e || "",
                "number" == typeof t ? this.value = isNaN(t) ? 0 : isFinite(t) ? t : t < 0 ? -34e37 : 34e37 : "string" == typeof t ? (e = t.match(a.regex.numberAndUnit)) && (this.value = parseFloat(e[1]),
                "%" == e[5] ? this.value /= 100 : "s" == e[5] && (this.value *= 1e3),
                this.unit = e[5]) : t instanceof a.Number && (this.value = t.valueOf(),
                this.unit = t.unit)
            },
            extend: {
                toString: function() {
                    return ("%" == this.unit ? ~~(1e8 * this.value) / 1e6 : "s" == this.unit ? this.value / 1e3 : this.value) + this.unit
                },
                toJSON: function() {
                    return this.toString()
                },
                valueOf: function() {
                    return this.value
                },
                plus: function(t) {
                    return t = new a.Number(t),
                    new a.Number(this + t,this.unit || t.unit)
                },
                minus: function(t) {
                    return t = new a.Number(t),
                    new a.Number(this - t,this.unit || t.unit)
                },
                times: function(t) {
                    return t = new a.Number(t),
                    new a.Number(this * t,this.unit || t.unit)
                },
                divide: function(t) {
                    return t = new a.Number(t),
                    new a.Number(this / t,this.unit || t.unit)
                },
                to: function(t) {
                    var e = new a.Number(this);
                    return "string" == typeof t && (e.unit = t),
                    e
                },
                morph: function(t) {
                    return this.destination = new a.Number(t),
                    t.relative && (this.destination.value += this.value),
                    this
                },
                at: function(t) {
                    return this.destination ? new a.Number(this.destination).minus(this).times(t).plus(this) : this
                }
            }
        }),
        a.Element = a.invent({
            create: function(t) {
                this._stroke = a.defaults.attrs.stroke,
                this._event = null,
                this.dom = {},
                (this.node = t) && (this.type = t.nodeName,
                this.node.instance = this,
                this._stroke = t.getAttribute("stroke") || this._stroke)
            },
            extend: {
                x: function(t) {
                    return this.attr("x", t)
                },
                y: function(t) {
                    return this.attr("y", t)
                },
                cx: function(t) {
                    return null == t ? this.x() + this.width() / 2 : this.x(t - this.width() / 2)
                },
                cy: function(t) {
                    return null == t ? this.y() + this.height() / 2 : this.y(t - this.height() / 2)
                },
                move: function(t, e) {
                    return this.x(t).y(e)
                },
                center: function(t, e) {
                    return this.cx(t).cy(e)
                },
                width: function(t) {
                    return this.attr("width", t)
                },
                height: function(t) {
                    return this.attr("height", t)
                },
                size: function(t, e) {
                    var i = u(this, t, e);
                    return this.width(new a.Number(i.width)).height(new a.Number(i.height))
                },
                clone: function(t) {
                    this.writeDataToDom();
                    var e = x(this.node.cloneNode(!0));
                    return t ? t.add(e) : this.after(e),
                    e
                },
                remove: function() {
                    return this.parent() && this.parent().removeElement(this),
                    this
                },
                replace: function(t) {
                    return this.after(t).remove(),
                    t
                },
                addTo: function(t) {
                    return t.put(this)
                },
                putIn: function(t) {
                    return t.add(this)
                },
                id: function(t) {
                    return this.attr("id", t)
                },
                show: function() {
                    return this.style("display", "")
                },
                hide: function() {
                    return this.style("display", "none")
                },
                visible: function() {
                    return "none" != this.style("display")
                },
                toString: function() {
                    return this.attr("id")
                },
                classes: function() {
                    var t = this.attr("class");
                    return null == t ? [] : t.trim().split(a.regex.delimiter)
                },
                hasClass: function(t) {
                    return -1 != this.classes().indexOf(t)
                },
                addClass: function(t) {
                    if (!this.hasClass(t)) {
                        var e = this.classes();
                        e.push(t),
                        this.attr("class", e.join(" "))
                    }
                    return this
                },
                removeClass: function(t) {
                    return this.hasClass(t) && this.attr("class", this.classes().filter((function(e) {
                        return e != t
                    }
                    )).join(" ")),
                    this
                },
                toggleClass: function(t) {
                    return this.hasClass(t) ? this.removeClass(t) : this.addClass(t)
                },
                reference: function(t) {
                    return a.get(this.attr(t))
                },
                parent: function(t) {
                    var i = this;
                    if (!i.node.parentNode)
                        return null;
                    if (i = a.adopt(i.node.parentNode),
                    !t)
                        return i;
                    for (; i && i.node instanceof e.SVGElement; ) {
                        if ("string" == typeof t ? i.matches(t) : i instanceof t)
                            return i;
                        if (!i.node.parentNode || "#document" == i.node.parentNode.nodeName)
                            return null;
                        i = a.adopt(i.node.parentNode)
                    }
                },
                doc: function() {
                    return this instanceof a.Doc ? this : this.parent(a.Doc)
                },
                parents: function(t) {
                    var e = []
                      , i = this;
                    do {
                        if (!(i = i.parent(t)) || !i.node)
                            break;
                        e.push(i)
                    } while (i.parent);
                    return e
                },
                matches: function(t) {
                    return function(t, e) {
                        return (t.matches || t.matchesSelector || t.msMatchesSelector || t.mozMatchesSelector || t.webkitMatchesSelector || t.oMatchesSelector).call(t, e)
                    }(this.node, t)
                },
                native: function() {
                    return this.node
                },
                svg: function(t) {
                    var e = i.createElement("svg");
                    if (!(t && this instanceof a.Parent))
                        return e.appendChild(t = i.createElement("svg")),
                        this.writeDataToDom(),
                        t.appendChild(this.node.cloneNode(!0)),
                        e.innerHTML.replace(/^<svg>/, "").replace(/<\/svg>$/, "");
                    e.innerHTML = "<svg>" + t.replace(/\n/, "").replace(/<([\w:-]+)([^<]+?)\/>/g, "<$1$2></$1>") + "</svg>";
                    for (var s = 0, r = e.firstChild.childNodes.length; s < r; s++)
                        this.node.appendChild(e.firstChild.firstChild);
                    return this
                },
                writeDataToDom: function() {
                    return (this.each || this.lines) && (this.each ? this : this.lines()).each((function() {
                        this.writeDataToDom()
                    }
                    )),
                    this.node.removeAttribute("svgjs:data"),
                    Object.keys(this.dom).length && this.node.setAttribute("svgjs:data", JSON.stringify(this.dom)),
                    this
                },
                setData: function(t) {
                    return this.dom = t,
                    this
                },
                is: function(t) {
                    return function(t, e) {
                        return t instanceof e
                    }(this, t)
                }
            }
        }),
        a.easing = {
            "-": function(t) {
                return t
            },
            "<>": function(t) {
                return -Math.cos(t * Math.PI) / 2 + .5
            },
            ">": function(t) {
                return Math.sin(t * Math.PI / 2)
            },
            "<": function(t) {
                return 1 - Math.cos(t * Math.PI / 2)
            }
        },
        a.morph = function(t) {
            return function(e, i) {
                return new a.MorphObj(e,i).at(t)
            }
        }
        ,
        a.Situation = a.invent({
            create: function(t) {
                this.init = !1,
                this.reversed = !1,
                this.reversing = !1,
                this.duration = new a.Number(t.duration).valueOf(),
                this.delay = new a.Number(t.delay).valueOf(),
                this.start = +new Date + this.delay,
                this.finish = this.start + this.duration,
                this.ease = t.ease,
                this.loop = 0,
                this.loops = !1,
                this.animations = {},
                this.attrs = {},
                this.styles = {},
                this.transforms = [],
                this.once = {}
            }
        }),
        a.FX = a.invent({
            create: function(t) {
                this._target = t,
                this.situations = [],
                this.active = !1,
                this.situation = null,
                this.paused = !1,
                this.lastPos = 0,
                this.pos = 0,
                this.absPos = 0,
                this._speed = 1
            },
            extend: {
                animate: function(e, i, s) {
                    "object" === t(e) && (i = e.ease,
                    s = e.delay,
                    e = e.duration);
                    var r = new a.Situation({
                        duration: e || 1e3,
                        delay: s || 0,
                        ease: a.easing[i || "-"] || i
                    });
                    return this.queue(r),
                    this
                },
                target: function(t) {
                    return t && t instanceof a.Element ? (this._target = t,
                    this) : this._target
                },
                timeToAbsPos: function(t) {
                    return (t - this.situation.start) / (this.situation.duration / this._speed)
                },
                absPosToTime: function(t) {
                    return this.situation.duration / this._speed * t + this.situation.start
                },
                startAnimFrame: function() {
                    this.stopAnimFrame(),
                    this.animationFrame = e.requestAnimationFrame(function() {
                        this.step()
                    }
                    .bind(this))
                },
                stopAnimFrame: function() {
                    e.cancelAnimationFrame(this.animationFrame)
                },
                start: function() {
                    return !this.active && this.situation && (this.active = !0,
                    this.startCurrent()),
                    this
                },
                startCurrent: function() {
                    return this.situation.start = +new Date + this.situation.delay / this._speed,
                    this.situation.finish = this.situation.start + this.situation.duration / this._speed,
                    this.initAnimations().step()
                },
                queue: function(t) {
                    return ("function" == typeof t || t instanceof a.Situation) && this.situations.push(t),
                    this.situation || (this.situation = this.situations.shift()),
                    this
                },
                dequeue: function() {
                    return this.stop(),
                    this.situation = this.situations.shift(),
                    this.situation && (this.situation instanceof a.Situation ? this.start() : this.situation.call(this)),
                    this
                },
                initAnimations: function() {
                    var t, e = this.situation;
                    if (e.init)
                        return this;
                    for (var i in e.animations) {
                        t = this.target()[i](),
                        Array.isArray(t) || (t = [t]),
                        Array.isArray(e.animations[i]) || (e.animations[i] = [e.animations[i]]);
                        for (var s = t.length; s--; )
                            e.animations[i][s]instanceof a.Number && (t[s] = new a.Number(t[s])),
                            e.animations[i][s] = t[s].morph(e.animations[i][s])
                    }
                    for (var i in e.attrs)
                        e.attrs[i] = new a.MorphObj(this.target().attr(i),e.attrs[i]);
                    for (var i in e.styles)
                        e.styles[i] = new a.MorphObj(this.target().style(i),e.styles[i]);
                    return e.initialTransformation = this.target().matrixify(),
                    e.init = !0,
                    this
                },
                clearQueue: function() {
                    return this.situations = [],
                    this
                },
                clearCurrent: function() {
                    return this.situation = null,
                    this
                },
                stop: function(t, e) {
                    var i = this.active;
                    return this.active = !1,
                    e && this.clearQueue(),
                    t && this.situation && (!i && this.startCurrent(),
                    this.atEnd()),
                    this.stopAnimFrame(),
                    this.clearCurrent()
                },
                after: function(t) {
                    var e = this.last();
                    return this.target().on("finished.fx", (function i(a) {
                        a.detail.situation == e && (t.call(this, e),
                        this.off("finished.fx", i))
                    }
                    )),
                    this._callStart()
                },
                during: function(t) {
                    var e = this.last()
                      , i = function(i) {
                        i.detail.situation == e && t.call(this, i.detail.pos, a.morph(i.detail.pos), i.detail.eased, e)
                    };
                    return this.target().off("during.fx", i).on("during.fx", i),
                    this.after((function() {
                        this.off("during.fx", i)
                    }
                    )),
                    this._callStart()
                },
                afterAll: function(t) {
                    var e = function e(i) {
                        t.call(this),
                        this.off("allfinished.fx", e)
                    };
                    return this.target().off("allfinished.fx", e).on("allfinished.fx", e),
                    this._callStart()
                },
                last: function() {
                    return this.situations.length ? this.situations[this.situations.length - 1] : this.situation
                },
                add: function(t, e, i) {
                    return this.last()[i || "animations"][t] = e,
                    this._callStart()
                },
                step: function(t) {
                    var e, i, a;
                    t || (this.absPos = this.timeToAbsPos(+new Date)),
                    !1 !== this.situation.loops ? (e = Math.max(this.absPos, 0),
                    i = Math.floor(e),
                    !0 === this.situation.loops || i < this.situation.loops ? (this.pos = e - i,
                    a = this.situation.loop,
                    this.situation.loop = i) : (this.absPos = this.situation.loops,
                    this.pos = 1,
                    a = this.situation.loop - 1,
                    this.situation.loop = this.situation.loops),
                    this.situation.reversing && (this.situation.reversed = this.situation.reversed != Boolean((this.situation.loop - a) % 2))) : (this.absPos = Math.min(this.absPos, 1),
                    this.pos = this.absPos),
                    this.pos < 0 && (this.pos = 0),
                    this.situation.reversed && (this.pos = 1 - this.pos);
                    var s = this.situation.ease(this.pos);
                    for (var r in this.situation.once)
                        r > this.lastPos && r <= s && (this.situation.once[r].call(this.target(), this.pos, s),
                        delete this.situation.once[r]);
                    return this.active && this.target().fire("during", {
                        pos: this.pos,
                        eased: s,
                        fx: this,
                        situation: this.situation
                    }),
                    this.situation ? (this.eachAt(),
                    1 == this.pos && !this.situation.reversed || this.situation.reversed && 0 == this.pos ? (this.stopAnimFrame(),
                    this.target().fire("finished", {
                        fx: this,
                        situation: this.situation
                    }),
                    this.situations.length || (this.target().fire("allfinished"),
                    this.situations.length || (this.target().off(".fx"),
                    this.active = !1)),
                    this.active ? this.dequeue() : this.clearCurrent()) : !this.paused && this.active && this.startAnimFrame(),
                    this.lastPos = s,
                    this) : this
                },
                eachAt: function() {
                    var t, e = this, i = this.target(), s = this.situation;
                    for (var r in s.animations)
                        t = [].concat(s.animations[r]).map((function(t) {
                            return "string" != typeof t && t.at ? t.at(s.ease(e.pos), e.pos) : t
                        }
                        )),
                        i[r].apply(i, t);
                    for (var r in s.attrs)
                        t = [r].concat(s.attrs[r]).map((function(t) {
                            return "string" != typeof t && t.at ? t.at(s.ease(e.pos), e.pos) : t
                        }
                        )),
                        i.attr.apply(i, t);
                    for (var r in s.styles)
                        t = [r].concat(s.styles[r]).map((function(t) {
                            return "string" != typeof t && t.at ? t.at(s.ease(e.pos), e.pos) : t
                        }
                        )),
                        i.style.apply(i, t);
                    if (s.transforms.length) {
                        t = s.initialTransformation,
                        r = 0;
                        for (var n = s.transforms.length; r < n; r++) {
                            var o = s.transforms[r];
                            o instanceof a.Matrix ? t = o.relative ? t.multiply((new a.Matrix).morph(o).at(s.ease(this.pos))) : t.morph(o).at(s.ease(this.pos)) : (o.relative || o.undo(t.extract()),
                            t = t.multiply(o.at(s.ease(this.pos))))
                        }
                        i.matrix(t)
                    }
                    return this
                },
                once: function(t, e, i) {
                    var a = this.last();
                    return i || (t = a.ease(t)),
                    a.once[t] = e,
                    this
                },
                _callStart: function() {
                    return setTimeout(function() {
                        this.start()
                    }
                    .bind(this), 0),
                    this
                }
            },
            parent: a.Element,
            construct: {
                animate: function(t, e, i) {
                    return (this.fx || (this.fx = new a.FX(this))).animate(t, e, i)
                },
                delay: function(t) {
                    return (this.fx || (this.fx = new a.FX(this))).delay(t)
                },
                stop: function(t, e) {
                    return this.fx && this.fx.stop(t, e),
                    this
                },
                finish: function() {
                    return this.fx && this.fx.finish(),
                    this
                }
            }
        }),
        a.MorphObj = a.invent({
            create: function(t, e) {
                return a.Color.isColor(e) ? new a.Color(t).morph(e) : a.regex.delimiter.test(t) ? a.regex.pathLetters.test(t) ? new a.PathArray(t).morph(e) : new a.Array(t).morph(e) : a.regex.numberAndUnit.test(e) ? new a.Number(t).morph(e) : (this.value = t,
                void (this.destination = e))
            },
            extend: {
                at: function(t, e) {
                    return e < 1 ? this.value : this.destination
                },
                valueOf: function() {
                    return this.value
                }
            }
        }),
        a.extend(a.FX, {
            attr: function(e, i, a) {
                if ("object" === t(e))
                    for (var s in e)
                        this.attr(s, e[s]);
                else
                    this.add(e, i, "attrs");
                return this
            },
            plot: function(t, e, i, a) {
                return 4 == arguments.length ? this.plot([t, e, i, a]) : this.add("plot", new (this.target().morphArray)(t))
            }
        }),
        a.Box = a.invent({
            create: function(e, i, s, r) {
                if (!("object" !== t(e) || e instanceof a.Element))
                    return a.Box.call(this, null != e.left ? e.left : e.x, null != e.top ? e.top : e.y, e.width, e.height);
                4 == arguments.length && (this.x = e,
                this.y = i,
                this.width = s,
                this.height = r),
                b(this)
            }
        }),
        a.BBox = a.invent({
            create: function(t) {
                if (a.Box.apply(this, [].slice.call(arguments)),
                t instanceof a.Element) {
                    var e;
                    try {
                        if (!i.documentElement.contains) {
                            for (var s = t.node; s.parentNode; )
                                s = s.parentNode;
                            if (s != i)
                                throw new Error("Element not in the dom")
                        }
                        e = t.node.getBBox()
                    } catch (i) {
                        if (t instanceof a.Shape) {
                            a.parser.draw || a.prepare();
                            var r = t.clone(a.parser.draw.instance).show();
                            e = r.node.getBBox(),
                            r.remove()
                        } else
                            e = {
                                x: t.node.clientLeft,
                                y: t.node.clientTop,
                                width: t.node.clientWidth,
                                height: t.node.clientHeight
                            }
                    }
                    a.Box.call(this, e)
                }
            },
            inherit: a.Box,
            parent: a.Element,
            construct: {
                bbox: function() {
                    return new a.BBox(this)
                }
            }
        }),
        a.BBox.prototype.constructor = a.BBox,
        a.Matrix = a.invent({
            create: function(e) {
                var i = p([1, 0, 0, 1, 0, 0]);
                e = e instanceof a.Element ? e.matrixify() : "string" == typeof e ? p(e.split(a.regex.delimiter).map(parseFloat)) : 6 == arguments.length ? p([].slice.call(arguments)) : Array.isArray(e) ? p(e) : "object" === t(e) ? e : i;
                for (var s = v.length - 1; s >= 0; --s)
                    this[v[s]] = null != e[v[s]] ? e[v[s]] : i[v[s]]
            },
            extend: {
                extract: function() {
                    var t = f(this, 0, 1)
                      , e = (f(this, 1, 0),
                    180 / Math.PI * Math.atan2(t.y, t.x) - 90);
                    return {
                        x: this.e,
                        y: this.f,
                        transformedX: (this.e * Math.cos(e * Math.PI / 180) + this.f * Math.sin(e * Math.PI / 180)) / Math.sqrt(this.a * this.a + this.b * this.b),
                        transformedY: (this.f * Math.cos(e * Math.PI / 180) + this.e * Math.sin(-e * Math.PI / 180)) / Math.sqrt(this.c * this.c + this.d * this.d),
                        rotation: e,
                        a: this.a,
                        b: this.b,
                        c: this.c,
                        d: this.d,
                        e: this.e,
                        f: this.f,
                        matrix: new a.Matrix(this)
                    }
                },
                clone: function() {
                    return new a.Matrix(this)
                },
                morph: function(t) {
                    return this.destination = new a.Matrix(t),
                    this
                },
                multiply: function(t) {
                    return new a.Matrix(this.native().multiply(function(t) {
                        return t instanceof a.Matrix || (t = new a.Matrix(t)),
                        t
                    }(t).native()))
                },
                inverse: function() {
                    return new a.Matrix(this.native().inverse())
                },
                translate: function(t, e) {
                    return new a.Matrix(this.native().translate(t || 0, e || 0))
                },
                native: function() {
                    for (var t = a.parser.native.createSVGMatrix(), e = v.length - 1; e >= 0; e--)
                        t[v[e]] = this[v[e]];
                    return t
                },
                toString: function() {
                    return "matrix(" + m(this.a) + "," + m(this.b) + "," + m(this.c) + "," + m(this.d) + "," + m(this.e) + "," + m(this.f) + ")"
                }
            },
            parent: a.Element,
            construct: {
                ctm: function() {
                    return new a.Matrix(this.node.getCTM())
                },
                screenCTM: function() {
                    if (this instanceof a.Nested) {
                        var t = this.rect(1, 1)
                          , e = t.node.getScreenCTM();
                        return t.remove(),
                        new a.Matrix(e)
                    }
                    return new a.Matrix(this.node.getScreenCTM())
                }
            }
        }),
        a.Point = a.invent({
            create: function(e, i) {
                var a;
                a = Array.isArray(e) ? {
                    x: e[0],
                    y: e[1]
                } : "object" === t(e) ? {
                    x: e.x,
                    y: e.y
                } : null != e ? {
                    x: e,
                    y: null != i ? i : e
                } : {
                    x: 0,
                    y: 0
                },
                this.x = a.x,
                this.y = a.y
            },
            extend: {
                clone: function() {
                    return new a.Point(this)
                },
                morph: function(t, e) {
                    return this.destination = new a.Point(t,e),
                    this
                }
            }
        }),
        a.extend(a.Element, {
            point: function(t, e) {
                return new a.Point(t,e).transform(this.screenCTM().inverse())
            }
        }),
        a.extend(a.Element, {
            attr: function(e, i, s) {
                if (null == e) {
                    for (e = {},
                    s = (i = this.node.attributes).length - 1; s >= 0; s--)
                        e[i[s].nodeName] = a.regex.isNumber.test(i[s].nodeValue) ? parseFloat(i[s].nodeValue) : i[s].nodeValue;
                    return e
                }
                if ("object" === t(e))
                    for (var r in e)
                        this.attr(r, e[r]);
                else if (null === i)
                    this.node.removeAttribute(e);
                else {
                    if (null == i)
                        return null == (i = this.node.getAttribute(e)) ? a.defaults.attrs[e] : a.regex.isNumber.test(i) ? parseFloat(i) : i;
                    "stroke-width" == e ? this.attr("stroke", parseFloat(i) > 0 ? this._stroke : null) : "stroke" == e && (this._stroke = i),
                    "fill" != e && "stroke" != e || (a.regex.isImage.test(i) && (i = this.doc().defs().image(i, 0, 0)),
                    i instanceof a.Image && (i = this.doc().defs().pattern(0, 0, (function() {
                        this.add(i)
                    }
                    )))),
                    "number" == typeof i ? i = new a.Number(i) : a.Color.isColor(i) ? i = new a.Color(i) : Array.isArray(i) && (i = new a.Array(i)),
                    "leading" == e ? this.leading && this.leading(i) : "string" == typeof s ? this.node.setAttributeNS(s, e, i.toString()) : this.node.setAttribute(e, i.toString()),
                    !this.rebuild || "font-size" != e && "x" != e || this.rebuild(e, i)
                }
                return this
            }
        }),
        a.extend(a.Element, {
            transform: function(e, i) {
                var s;
                return "object" !== t(e) ? (s = new a.Matrix(this).extract(),
                "string" == typeof e ? s[e] : s) : (s = new a.Matrix(this),
                i = !!i || !!e.relative,
                null != e.a && (s = i ? s.multiply(new a.Matrix(e)) : new a.Matrix(e)),
                this.attr("transform", s))
            }
        }),
        a.extend(a.Element, {
            untransform: function() {
                return this.attr("transform", null)
            },
            matrixify: function() {
                return (this.attr("transform") || "").split(a.regex.transforms).slice(0, -1).map((function(t) {
                    var e = t.trim().split("(");
                    return [e[0], e[1].split(a.regex.delimiter).map((function(t) {
                        return parseFloat(t)
                    }
                    ))]
                }
                )).reduce((function(t, e) {
                    return "matrix" == e[0] ? t.multiply(p(e[1])) : t[e[0]].apply(t, e[1])
                }
                ), new a.Matrix)
            },
            toParent: function(t) {
                if (this == t)
                    return this;
                var e = this.screenCTM()
                  , i = t.screenCTM().inverse();
                return this.addTo(t).untransform().transform(i.multiply(e)),
                this
            },
            toDoc: function() {
                return this.toParent(this.doc())
            }
        }),
        a.Transformation = a.invent({
            create: function(e, i) {
                if (arguments.length > 1 && "boolean" != typeof i)
                    return this.constructor.call(this, [].slice.call(arguments));
                if (Array.isArray(e))
                    for (var a = 0, s = this.arguments.length; a < s; ++a)
                        this[this.arguments[a]] = e[a];
                else if ("object" === t(e))
                    for (a = 0,
                    s = this.arguments.length; a < s; ++a)
                        this[this.arguments[a]] = e[this.arguments[a]];
                this.inversed = !1,
                !0 === i && (this.inversed = !0)
            }
        }),
        a.Translate = a.invent({
            parent: a.Matrix,
            inherit: a.Transformation,
            create: function(t, e) {
                this.constructor.apply(this, [].slice.call(arguments))
            },
            extend: {
                arguments: ["transformedX", "transformedY"],
                method: "translate"
            }
        }),
        a.extend(a.Element, {
            style: function(e, i) {
                if (0 == arguments.length)
                    return this.node.style.cssText || "";
                if (arguments.length < 2)
                    if ("object" === t(e))
                        for (var s in e)
                            this.style(s, e[s]);
                    else {
                        if (!a.regex.isCss.test(e))
                            return this.node.style[c(e)];
                        for (e = e.split(/\s*;\s*/).filter((function(t) {
                            return !!t
                        }
                        )).map((function(t) {
                            return t.split(/\s*:\s*/)
                        }
                        )); i = e.pop(); )
                            this.style(i[0], i[1])
                    }
                else
                    this.node.style[c(e)] = null === i || a.regex.isBlank.test(i) ? "" : i;
                return this
            }
        }),
        a.Parent = a.invent({
            create: function(t) {
                this.constructor.call(this, t)
            },
            inherit: a.Element,
            extend: {
                children: function() {
                    return a.utils.map(a.utils.filterSVGElements(this.node.childNodes), (function(t) {
                        return a.adopt(t)
                    }
                    ))
                },
                add: function(t, e) {
                    return null == e ? this.node.appendChild(t.node) : t.node != this.node.childNodes[e] && this.node.insertBefore(t.node, this.node.childNodes[e]),
                    this
                },
                put: function(t, e) {
                    return this.add(t, e),
                    t
                },
                has: function(t) {
                    return this.index(t) >= 0
                },
                index: function(t) {
                    return [].slice.call(this.node.childNodes).indexOf(t.node)
                },
                get: function(t) {
                    return a.adopt(this.node.childNodes[t])
                },
                first: function() {
                    return this.get(0)
                },
                last: function() {
                    return this.get(this.node.childNodes.length - 1)
                },
                each: function(t, e) {
                    for (var i = this.children(), s = 0, r = i.length; s < r; s++)
                        i[s]instanceof a.Element && t.apply(i[s], [s, i]),
                        e && i[s]instanceof a.Container && i[s].each(t, e);
                    return this
                },
                removeElement: function(t) {
                    return this.node.removeChild(t.node),
                    this
                },
                clear: function() {
                    for (; this.node.hasChildNodes(); )
                        this.node.removeChild(this.node.lastChild);
                    return delete this._defs,
                    this
                },
                defs: function() {
                    return this.doc().defs()
                }
            }
        }),
        a.extend(a.Parent, {
            ungroup: function(t, e) {
                return 0 === e || this instanceof a.Defs || this.node == a.parser.draw || (t = t || (this instanceof a.Doc ? this : this.parent(a.Parent)),
                e = e || 1 / 0,
                this.each((function() {
                    return this instanceof a.Defs ? this : this instanceof a.Parent ? this.ungroup(t, e - 1) : this.toParent(t)
                }
                )),
                this.node.firstChild || this.remove()),
                this
            },
            flatten: function(t, e) {
                return this.ungroup(t, e)
            }
        }),
        a.Container = a.invent({
            create: function(t) {
                this.constructor.call(this, t)
            },
            inherit: a.Parent
        }),
        a.ViewBox = a.invent({
            parent: a.Container,
            construct: {}
        }),
        ["click", "dblclick", "mousedown", "mouseup", "mouseover", "mouseout", "mousemove", "touchstart", "touchmove", "touchleave", "touchend", "touchcancel"].forEach((function(t) {
            a.Element.prototype[t] = function(e) {
                return a.on(this.node, t, e),
                this
            }
        }
        )),
        a.listeners = [],
        a.handlerMap = [],
        a.listenerId = 0,
        a.on = function(t, e, i, s, r) {
            var n = i.bind(s || t.instance || t)
              , o = (a.handlerMap.indexOf(t) + 1 || a.handlerMap.push(t)) - 1
              , l = e.split(".")[0]
              , h = e.split(".")[1] || "*";
            a.listeners[o] = a.listeners[o] || {},
            a.listeners[o][l] = a.listeners[o][l] || {},
            a.listeners[o][l][h] = a.listeners[o][l][h] || {},
            i._svgjsListenerId || (i._svgjsListenerId = ++a.listenerId),
            a.listeners[o][l][h][i._svgjsListenerId] = n,
            t.addEventListener(l, n, r || !1)
        }
        ,
        a.off = function(t, e, i) {
            var s = a.handlerMap.indexOf(t)
              , r = e && e.split(".")[0]
              , n = e && e.split(".")[1]
              , o = "";
            if (-1 != s)
                if (i) {
                    if ("function" == typeof i && (i = i._svgjsListenerId),
                    !i)
                        return;
                    a.listeners[s][r] && a.listeners[s][r][n || "*"] && (t.removeEventListener(r, a.listeners[s][r][n || "*"][i], !1),
                    delete a.listeners[s][r][n || "*"][i])
                } else if (n && r) {
                    if (a.listeners[s][r] && a.listeners[s][r][n]) {
                        for (var l in a.listeners[s][r][n])
                            a.off(t, [r, n].join("."), l);
                        delete a.listeners[s][r][n]
                    }
                } else if (n)
                    for (var h in a.listeners[s])
                        for (var o in a.listeners[s][h])
                            n === o && a.off(t, [h, n].join("."));
                else if (r) {
                    if (a.listeners[s][r]) {
                        for (var o in a.listeners[s][r])
                            a.off(t, [r, o].join("."));
                        delete a.listeners[s][r]
                    }
                } else {
                    for (var h in a.listeners[s])
                        a.off(t, h);
                    delete a.listeners[s],
                    delete a.handlerMap[s]
                }
        }
        ,
        a.extend(a.Element, {
            on: function(t, e, i, s) {
                return a.on(this.node, t, e, i, s),
                this
            },
            off: function(t, e) {
                return a.off(this.node, t, e),
                this
            },
            fire: function(t, i) {
                return t instanceof e.Event ? this.node.dispatchEvent(t) : this.node.dispatchEvent(t = new a.CustomEvent(t,{
                    detail: i,
                    cancelable: !0
                })),
                this._event = t,
                this
            },
            event: function() {
                return this._event
            }
        }),
        a.Defs = a.invent({
            create: "defs",
            inherit: a.Container
        }),
        a.G = a.invent({
            create: "g",
            inherit: a.Container,
            extend: {
                x: function(t) {
                    return null == t ? this.transform("x") : this.transform({
                        x: t - this.x()
                    }, !0)
                }
            },
            construct: {
                group: function() {
                    return this.put(new a.G)
                }
            }
        }),
        a.Doc = a.invent({
            create: function(t) {
                t && ("svg" == (t = "string" == typeof t ? i.getElementById(t) : t).nodeName ? this.constructor.call(this, t) : (this.constructor.call(this, a.create("svg")),
                t.appendChild(this.node),
                this.size("100%", "100%")),
                this.namespace().defs())
            },
            inherit: a.Container,
            extend: {
                namespace: function() {
                    return this.attr({
                        xmlns: a.ns,
                        version: "1.1"
                    }).attr("xmlns:xlink", a.xlink, a.xmlns).attr("xmlns:svgjs", a.svgjs, a.xmlns)
                },
                defs: function() {
                    var t;
                    return this._defs || ((t = this.node.getElementsByTagName("defs")[0]) ? this._defs = a.adopt(t) : this._defs = new a.Defs,
                    this.node.appendChild(this._defs.node)),
                    this._defs
                },
                parent: function() {
                    return this.node.parentNode && "#document" != this.node.parentNode.nodeName ? this.node.parentNode : null
                },
                remove: function() {
                    return this.parent() && this.parent().removeChild(this.node),
                    this
                },
                clear: function() {
                    for (; this.node.hasChildNodes(); )
                        this.node.removeChild(this.node.lastChild);
                    return delete this._defs,
                    a.parser.draw && !a.parser.draw.parentNode && this.node.appendChild(a.parser.draw),
                    this
                },
                clone: function(t) {
                    this.writeDataToDom();
                    var e = this.node
                      , i = x(e.cloneNode(!0));
                    return t ? (t.node || t).appendChild(i.node) : e.parentNode.insertBefore(i.node, e.nextSibling),
                    i
                }
            }
        }),
        a.extend(a.Element, {}),
        a.Gradient = a.invent({
            create: function(t) {
                this.constructor.call(this, a.create(t + "Gradient")),
                this.type = t
            },
            inherit: a.Container,
            extend: {
                at: function(t, e, i) {
                    return this.put(new a.Stop).update(t, e, i)
                },
                update: function(t) {
                    return this.clear(),
                    "function" == typeof t && t.call(this, this),
                    this
                },
                fill: function() {
                    return "url(#" + this.id() + ")"
                },
                toString: function() {
                    return this.fill()
                },
                attr: function(t, e, i) {
                    return "transform" == t && (t = "gradientTransform"),
                    a.Container.prototype.attr.call(this, t, e, i)
                }
            },
            construct: {
                gradient: function(t, e) {
                    return this.defs().gradient(t, e)
                }
            }
        }),
        a.extend(a.Gradient, a.FX, {
            from: function(t, e) {
                return "radial" == (this._target || this).type ? this.attr({
                    fx: new a.Number(t),
                    fy: new a.Number(e)
                }) : this.attr({
                    x1: new a.Number(t),
                    y1: new a.Number(e)
                })
            },
            to: function(t, e) {
                return "radial" == (this._target || this).type ? this.attr({
                    cx: new a.Number(t),
                    cy: new a.Number(e)
                }) : this.attr({
                    x2: new a.Number(t),
                    y2: new a.Number(e)
                })
            }
        }),
        a.extend(a.Defs, {
            gradient: function(t, e) {
                return this.put(new a.Gradient(t)).update(e)
            }
        }),
        a.Stop = a.invent({
            create: "stop",
            inherit: a.Element,
            extend: {
                update: function(t) {
                    return ("number" == typeof t || t instanceof a.Number) && (t = {
                        offset: arguments[0],
                        color: arguments[1],
                        opacity: arguments[2]
                    }),
                    null != t.opacity && this.attr("stop-opacity", t.opacity),
                    null != t.color && this.attr("stop-color", t.color),
                    null != t.offset && this.attr("offset", new a.Number(t.offset)),
                    this
                }
            }
        }),
        a.Pattern = a.invent({
            create: "pattern",
            inherit: a.Container,
            extend: {
                fill: function() {
                    return "url(#" + this.id() + ")"
                },
                update: function(t) {
                    return this.clear(),
                    "function" == typeof t && t.call(this, this),
                    this
                },
                toString: function() {
                    return this.fill()
                },
                attr: function(t, e, i) {
                    return "transform" == t && (t = "patternTransform"),
                    a.Container.prototype.attr.call(this, t, e, i)
                }
            },
            construct: {
                pattern: function(t, e, i) {
                    return this.defs().pattern(t, e, i)
                }
            }
        }),
        a.extend(a.Defs, {
            pattern: function(t, e, i) {
                return this.put(new a.Pattern).update(i).attr({
                    x: 0,
                    y: 0,
                    width: t,
                    height: e,
                    patternUnits: "userSpaceOnUse"
                })
            }
        }),
        a.Shape = a.invent({
            create: function(t) {
                this.constructor.call(this, t)
            },
            inherit: a.Element
        }),
        a.Symbol = a.invent({
            create: "symbol",
            inherit: a.Container,
            construct: {
                symbol: function() {
                    return this.put(new a.Symbol)
                }
            }
        }),
        a.Use = a.invent({
            create: "use",
            inherit: a.Shape,
            extend: {
                element: function(t, e) {
                    return this.attr("href", (e || "") + "#" + t, a.xlink)
                }
            },
            construct: {
                use: function(t, e) {
                    return this.put(new a.Use).element(t, e)
                }
            }
        }),
        a.Rect = a.invent({
            create: "rect",
            inherit: a.Shape,
            construct: {
                rect: function(t, e) {
                    return this.put(new a.Rect).size(t, e)
                }
            }
        }),
        a.Circle = a.invent({
            create: "circle",
            inherit: a.Shape,
            construct: {
                circle: function(t) {
                    return this.put(new a.Circle).rx(new a.Number(t).divide(2)).move(0, 0)
                }
            }
        }),
        a.extend(a.Circle, a.FX, {
            rx: function(t) {
                return this.attr("r", t)
            },
            ry: function(t) {
                return this.rx(t)
            }
        }),
        a.Ellipse = a.invent({
            create: "ellipse",
            inherit: a.Shape,
            construct: {
                ellipse: function(t, e) {
                    return this.put(new a.Ellipse).size(t, e).move(0, 0)
                }
            }
        }),
        a.extend(a.Ellipse, a.Rect, a.FX, {
            rx: function(t) {
                return this.attr("rx", t)
            },
            ry: function(t) {
                return this.attr("ry", t)
            }
        }),
        a.extend(a.Circle, a.Ellipse, {
            x: function(t) {
                return null == t ? this.cx() - this.rx() : this.cx(t + this.rx())
            },
            y: function(t) {
                return null == t ? this.cy() - this.ry() : this.cy(t + this.ry())
            },
            cx: function(t) {
                return null == t ? this.attr("cx") : this.attr("cx", t)
            },
            cy: function(t) {
                return null == t ? this.attr("cy") : this.attr("cy", t)
            },
            width: function(t) {
                return null == t ? 2 * this.rx() : this.rx(new a.Number(t).divide(2))
            },
            height: function(t) {
                return null == t ? 2 * this.ry() : this.ry(new a.Number(t).divide(2))
            },
            size: function(t, e) {
                var i = u(this, t, e);
                return this.rx(new a.Number(i.width).divide(2)).ry(new a.Number(i.height).divide(2))
            }
        }),
        a.Line = a.invent({
            create: "line",
            inherit: a.Shape,
            extend: {
                array: function() {
                    return new a.PointArray([[this.attr("x1"), this.attr("y1")], [this.attr("x2"), this.attr("y2")]])
                },
                plot: function(t, e, i, s) {
                    return null == t ? this.array() : (t = void 0 !== e ? {
                        x1: t,
                        y1: e,
                        x2: i,
                        y2: s
                    } : new a.PointArray(t).toLine(),
                    this.attr(t))
                },
                move: function(t, e) {
                    return this.attr(this.array().move(t, e).toLine())
                },
                size: function(t, e) {
                    var i = u(this, t, e);
                    return this.attr(this.array().size(i.width, i.height).toLine())
                }
            },
            construct: {
                line: function(t, e, i, s) {
                    return a.Line.prototype.plot.apply(this.put(new a.Line), null != t ? [t, e, i, s] : [0, 0, 0, 0])
                }
            }
        }),
        a.Polyline = a.invent({
            create: "polyline",
            inherit: a.Shape,
            construct: {
                polyline: function(t) {
                    return this.put(new a.Polyline).plot(t || new a.PointArray)
                }
            }
        }),
        a.Polygon = a.invent({
            create: "polygon",
            inherit: a.Shape,
            construct: {
                polygon: function(t) {
                    return this.put(new a.Polygon).plot(t || new a.PointArray)
                }
            }
        }),
        a.extend(a.Polyline, a.Polygon, {
            array: function() {
                return this._array || (this._array = new a.PointArray(this.attr("points")))
            },
            plot: function(t) {
                return null == t ? this.array() : this.clear().attr("points", "string" == typeof t ? t : this._array = new a.PointArray(t))
            },
            clear: function() {
                return delete this._array,
                this
            },
            move: function(t, e) {
                return this.attr("points", this.array().move(t, e))
            },
            size: function(t, e) {
                var i = u(this, t, e);
                return this.attr("points", this.array().size(i.width, i.height))
            }
        }),
        a.extend(a.Line, a.Polyline, a.Polygon, {
            morphArray: a.PointArray,
            x: function(t) {
                return null == t ? this.bbox().x : this.move(t, this.bbox().y)
            },
            y: function(t) {
                return null == t ? this.bbox().y : this.move(this.bbox().x, t)
            },
            width: function(t) {
                var e = this.bbox();
                return null == t ? e.width : this.size(t, e.height)
            },
            height: function(t) {
                var e = this.bbox();
                return null == t ? e.height : this.size(e.width, t)
            }
        }),
        a.Path = a.invent({
            create: "path",
            inherit: a.Shape,
            extend: {
                morphArray: a.PathArray,
                array: function() {
                    return this._array || (this._array = new a.PathArray(this.attr("d")))
                },
                plot: function(t) {
                    return null == t ? this.array() : this.clear().attr("d", "string" == typeof t ? t : this._array = new a.PathArray(t))
                },
                clear: function() {
                    return delete this._array,
                    this
                }
            },
            construct: {
                path: function(t) {
                    return this.put(new a.Path).plot(t || new a.PathArray)
                }
            }
        }),
        a.Image = a.invent({
            create: "image",
            inherit: a.Shape,
            extend: {
                load: function(t) {
                    if (!t)
                        return this;
                    var i = this
                      , s = new e.Image;
                    return a.on(s, "load", (function() {
                        a.off(s);
                        var e = i.parent(a.Pattern);
                        null !== e && (0 == i.width() && 0 == i.height() && i.size(s.width, s.height),
                        e && 0 == e.width() && 0 == e.height() && e.size(i.width(), i.height()),
                        "function" == typeof i._loaded && i._loaded.call(i, {
                            width: s.width,
                            height: s.height,
                            ratio: s.width / s.height,
                            url: t
                        }))
                    }
                    )),
                    a.on(s, "error", (function(t) {
                        a.off(s),
                        "function" == typeof i._error && i._error.call(i, t)
                    }
                    )),
                    this.attr("href", s.src = this.src = t, a.xlink)
                },
                loaded: function(t) {
                    return this._loaded = t,
                    this
                },
                error: function(t) {
                    return this._error = t,
                    this
                }
            },
            construct: {
                image: function(t, e, i) {
                    return this.put(new a.Image).load(t).size(e || 0, i || e || 0)
                }
            }
        }),
        a.Text = a.invent({
            create: function() {
                this.constructor.call(this, a.create("text")),
                this.dom.leading = new a.Number(1.3),
                this._rebuild = !0,
                this._build = !1,
                this.attr("font-family", a.defaults.attrs["font-family"])
            },
            inherit: a.Shape,
            extend: {
                x: function(t) {
                    return null == t ? this.attr("x") : this.attr("x", t)
                },
                text: function(t) {
                    if (void 0 === t) {
                        t = "";
                        for (var e = this.node.childNodes, i = 0, s = e.length; i < s; ++i)
                            0 != i && 3 != e[i].nodeType && 1 == a.adopt(e[i]).dom.newLined && (t += "\n"),
                            t += e[i].textContent;
                        return t
                    }
                    if (this.clear().build(!0),
                    "function" == typeof t)
                        t.call(this, this);
                    else {
                        i = 0;
                        for (var r = (t = t.split("\n")).length; i < r; i++)
                            this.tspan(t[i]).newLine()
                    }
                    return this.build(!1).rebuild()
                },
                size: function(t) {
                    return this.attr("font-size", t).rebuild()
                },
                leading: function(t) {
                    return null == t ? this.dom.leading : (this.dom.leading = new a.Number(t),
                    this.rebuild())
                },
                lines: function() {
                    var t = (this.textPath && this.textPath() || this).node
                      , e = a.utils.map(a.utils.filterSVGElements(t.childNodes), (function(t) {
                        return a.adopt(t)
                    }
                    ));
                    return new a.Set(e)
                },
                rebuild: function(t) {
                    if ("boolean" == typeof t && (this._rebuild = t),
                    this._rebuild) {
                        var e = this
                          , i = 0
                          , s = this.dom.leading * new a.Number(this.attr("font-size"));
                        this.lines().each((function() {
                            this.dom.newLined && (e.textPath() || this.attr("x", e.attr("x")),
                            "\n" == this.text() ? i += s : (this.attr("dy", s + i),
                            i = 0))
                        }
                        )),
                        this.fire("rebuild")
                    }
                    return this
                },
                build: function(t) {
                    return this._build = !!t,
                    this
                },
                setData: function(t) {
                    return this.dom = t,
                    this.dom.leading = new a.Number(t.leading || 1.3),
                    this
                }
            },
            construct: {
                text: function(t) {
                    return this.put(new a.Text).text(t)
                },
                plain: function(t) {
                    return this.put(new a.Text).plain(t)
                }
            }
        }),
        a.Tspan = a.invent({
            create: "tspan",
            inherit: a.Shape,
            extend: {
                text: function(t) {
                    return null == t ? this.node.textContent + (this.dom.newLined ? "\n" : "") : ("function" == typeof t ? t.call(this, this) : this.plain(t),
                    this)
                },
                dx: function(t) {
                    return this.attr("dx", t)
                },
                dy: function(t) {
                    return this.attr("dy", t)
                },
                newLine: function() {
                    var t = this.parent(a.Text);
                    return this.dom.newLined = !0,
                    this.dy(t.dom.leading * t.attr("font-size")).attr("x", t.x())
                }
            }
        }),
        a.extend(a.Text, a.Tspan, {
            plain: function(t) {
                return !1 === this._build && this.clear(),
                this.node.appendChild(i.createTextNode(t)),
                this
            },
            tspan: function(t) {
                var e = (this.textPath && this.textPath() || this).node
                  , i = new a.Tspan;
                return !1 === this._build && this.clear(),
                e.appendChild(i.node),
                i.text(t)
            },
            clear: function() {
                for (var t = (this.textPath && this.textPath() || this).node; t.hasChildNodes(); )
                    t.removeChild(t.lastChild);
                return this
            },
            length: function() {
                return this.node.getComputedTextLength()
            }
        }),
        a.TextPath = a.invent({
            create: "textPath",
            inherit: a.Parent,
            parent: a.Text,
            construct: {
                morphArray: a.PathArray,
                array: function() {
                    var t = this.track();
                    return t ? t.array() : null
                },
                plot: function(t) {
                    var e = this.track()
                      , i = null;
                    return e && (i = e.plot(t)),
                    null == t ? i : this
                },
                track: function() {
                    var t = this.textPath();
                    if (t)
                        return t.reference("href")
                },
                textPath: function() {
                    if (this.node.firstChild && "textPath" == this.node.firstChild.nodeName)
                        return a.adopt(this.node.firstChild)
                }
            }
        }),
        a.Nested = a.invent({
            create: function() {
                this.constructor.call(this, a.create("svg")),
                this.style("overflow", "visible")
            },
            inherit: a.Container,
            construct: {
                nested: function() {
                    return this.put(new a.Nested)
                }
            }
        });
        var l = {
            stroke: ["color", "width", "opacity", "linecap", "linejoin", "miterlimit", "dasharray", "dashoffset"],
            fill: ["color", "opacity", "rule"],
            prefix: function(t, e) {
                return "color" == e ? t : t + "-" + e
            }
        };
        function h(t, e, i, s) {
            return i + s.replace(a.regex.dots, " .")
        }
        function c(t) {
            return t.toLowerCase().replace(/-(.)/g, (function(t, e) {
                return e.toUpperCase()
            }
            ))
        }
        function d(t) {
            return t.charAt(0).toUpperCase() + t.slice(1)
        }
        function g(t) {
            var e = t.toString(16);
            return 1 == e.length ? "0" + e : e
        }
        function u(t, e, i) {
            if (null == e || null == i) {
                var a = t.bbox();
                null == e ? e = a.width / a.height * i : null == i && (i = a.height / a.width * e)
            }
            return {
                width: e,
                height: i
            }
        }
        function f(t, e, i) {
            return {
                x: e * t.a + i * t.c + 0,
                y: e * t.b + i * t.d + 0
            }
        }
        function p(t) {
            return {
                a: t[0],
                b: t[1],
                c: t[2],
                d: t[3],
                e: t[4],
                f: t[5]
            }
        }
        function x(t) {
            for (var i = t.childNodes.length - 1; i >= 0; i--)
                t.childNodes[i]instanceof e.SVGElement && x(t.childNodes[i]);
            return a.adopt(t).id(a.eid(t.nodeName))
        }
        function b(t) {
            return null == t.x && (t.x = 0,
            t.y = 0,
            t.width = 0,
            t.height = 0),
            t.w = t.width,
            t.h = t.height,
            t.x2 = t.x + t.width,
            t.y2 = t.y + t.height,
            t.cx = t.x + t.width / 2,
            t.cy = t.y + t.height / 2,
            t
        }
        function m(t) {
            return Math.abs(t) > 1e-37 ? t : 0
        }
        ["fill", "stroke"].forEach((function(t) {
            var e = {};
            e[t] = function(e) {
                if (void 0 === e)
                    return this;
                if ("string" == typeof e || a.Color.isRgb(e) || e && "function" == typeof e.fill)
                    this.attr(t, e);
                else
                    for (var i = l[t].length - 1; i >= 0; i--)
                        null != e[l[t][i]] && this.attr(l.prefix(t, l[t][i]), e[l[t][i]]);
                return this
            }
            ,
            a.extend(a.Element, a.FX, e)
        }
        )),
        a.extend(a.Element, a.FX, {
            translate: function(t, e) {
                return this.transform({
                    x: t,
                    y: e
                })
            },
            matrix: function(t) {
                return this.attr("transform", new a.Matrix(6 == arguments.length ? [].slice.call(arguments) : t))
            },
            opacity: function(t) {
                return this.attr("opacity", t)
            },
            dx: function(t) {
                return this.x(new a.Number(t).plus(this instanceof a.FX ? 0 : this.x()), !0)
            },
            dy: function(t) {
                return this.y(new a.Number(t).plus(this instanceof a.FX ? 0 : this.y()), !0)
            }
        }),
        a.extend(a.Path, {
            length: function() {
                return this.node.getTotalLength()
            },
            pointAt: function(t) {
                return this.node.getPointAtLength(t)
            }
        }),
        a.Set = a.invent({
            create: function(t) {
                Array.isArray(t) ? this.members = t : this.clear()
            },
            extend: {
                add: function() {
                    for (var t = [].slice.call(arguments), e = 0, i = t.length; e < i; e++)
                        this.members.push(t[e]);
                    return this
                },
                remove: function(t) {
                    var e = this.index(t);
                    return e > -1 && this.members.splice(e, 1),
                    this
                },
                each: function(t) {
                    for (var e = 0, i = this.members.length; e < i; e++)
                        t.apply(this.members[e], [e, this.members]);
                    return this
                },
                clear: function() {
                    return this.members = [],
                    this
                },
                length: function() {
                    return this.members.length
                },
                has: function(t) {
                    return this.index(t) >= 0
                },
                index: function(t) {
                    return this.members.indexOf(t)
                },
                get: function(t) {
                    return this.members[t]
                },
                first: function() {
                    return this.get(0)
                },
                last: function() {
                    return this.get(this.members.length - 1)
                },
                valueOf: function() {
                    return this.members
                }
            },
            construct: {
                set: function(t) {
                    return new a.Set(t)
                }
            }
        }),
        a.FX.Set = a.invent({
            create: function(t) {
                this.set = t
            }
        }),
        a.Set.inherit = function() {
            var t = [];
            for (var e in a.Shape.prototype)
                "function" == typeof a.Shape.prototype[e] && "function" != typeof a.Set.prototype[e] && t.push(e);
            for (var e in t.forEach((function(t) {
                a.Set.prototype[t] = function() {
                    for (var e = 0, i = this.members.length; e < i; e++)
                        this.members[e] && "function" == typeof this.members[e][t] && this.members[e][t].apply(this.members[e], arguments);
                    return "animate" == t ? this.fx || (this.fx = new a.FX.Set(this)) : this
                }
            }
            )),
            t = [],
            a.FX.prototype)
                "function" == typeof a.FX.prototype[e] && "function" != typeof a.FX.Set.prototype[e] && t.push(e);
            t.forEach((function(t) {
                a.FX.Set.prototype[t] = function() {
                    for (var e = 0, i = this.set.members.length; e < i; e++)
                        this.set.members[e].fx[t].apply(this.set.members[e].fx, arguments);
                    return this
                }
            }
            ))
        }
        ,
        a.extend(a.Element, {}),
        a.extend(a.Element, {
            remember: function(e, i) {
                if ("object" === t(arguments[0]))
                    for (var a in e)
                        this.remember(a, e[a]);
                else {
                    if (1 == arguments.length)
                        return this.memory()[e];
                    this.memory()[e] = i
                }
                return this
            },
            forget: function() {
                if (0 == arguments.length)
                    this._memory = {};
                else
                    for (var t = arguments.length - 1; t >= 0; t--)
                        delete this.memory()[arguments[t]];
                return this
            },
            memory: function() {
                return this._memory || (this._memory = {})
            }
        }),
        a.get = function(t) {
            var e = i.getElementById(function(t) {
                var e = (t || "").toString().match(a.regex.reference);
                if (e)
                    return e[1]
            }(t) || t);
            return a.adopt(e)
        }
        ,
        a.select = function(t, e) {
            return new a.Set(a.utils.map((e || i).querySelectorAll(t), (function(t) {
                return a.adopt(t)
            }
            )))
        }
        ,
        a.extend(a.Parent, {
            select: function(t) {
                return a.select(t, this.node)
            }
        });
        var v = "abcdef".split("");
        if ("function" != typeof e.CustomEvent) {
            var y = function(t, e) {
                e = e || {
                    bubbles: !1,
                    cancelable: !1,
                    detail: void 0
                };
                var a = i.createEvent("CustomEvent");
                return a.initCustomEvent(t, e.bubbles, e.cancelable, e.detail),
                a
            };
            y.prototype = e.Event.prototype,
            a.CustomEvent = y
        } else
            a.CustomEvent = e.CustomEvent;
        return a
    }
    ,
    "function" == typeof define && define.amd ? define((function() {
        return zt(Tt, Tt.document)
    }
    )) : "object" === ("undefined" == typeof exports ? "undefined" : t(exports)) && "undefined" != typeof module ? module.exports = Tt.document ? zt(Tt, Tt.document) : function(t) {
        return zt(t, t.document)
    }
    : Tt.SVG = zt(Tt, Tt.document),
    /*! svg.filter.js - v2.0.2 - 2016-02-24
  * https://github.com/wout/svg.filter.js
  * Copyright (c) 2016 Wout Fierens; Licensed MIT */
    function() {
        SVG.Filter = SVG.invent({
            create: "filter",
            inherit: SVG.Parent,
            extend: {
                source: "SourceGraphic",
                sourceAlpha: "SourceAlpha",
                background: "BackgroundImage",
                backgroundAlpha: "BackgroundAlpha",
                fill: "FillPaint",
                stroke: "StrokePaint",
                autoSetIn: !0,
                put: function(t, e) {
                    return this.add(t, e),
                    !t.attr("in") && this.autoSetIn && t.attr("in", this.source),
                    t.attr("result") || t.attr("result", t),
                    t
                },
                blend: function(t, e, i) {
                    return this.put(new SVG.BlendEffect(t,e,i))
                },
                colorMatrix: function(t, e) {
                    return this.put(new SVG.ColorMatrixEffect(t,e))
                },
                convolveMatrix: function(t) {
                    return this.put(new SVG.ConvolveMatrixEffect(t))
                },
                componentTransfer: function(t) {
                    return this.put(new SVG.ComponentTransferEffect(t))
                },
                composite: function(t, e, i) {
                    return this.put(new SVG.CompositeEffect(t,e,i))
                },
                flood: function(t, e) {
                    return this.put(new SVG.FloodEffect(t,e))
                },
                offset: function(t, e) {
                    return this.put(new SVG.OffsetEffect(t,e))
                },
                image: function(t) {
                    return this.put(new SVG.ImageEffect(t))
                },
                merge: function() {
                    var t = [void 0];
                    for (var e in arguments)
                        t.push(arguments[e]);
                    return this.put(new (SVG.MergeEffect.bind.apply(SVG.MergeEffect, t)))
                },
                gaussianBlur: function(t, e) {
                    return this.put(new SVG.GaussianBlurEffect(t,e))
                },
                morphology: function(t, e) {
                    return this.put(new SVG.MorphologyEffect(t,e))
                },
                diffuseLighting: function(t, e, i) {
                    return this.put(new SVG.DiffuseLightingEffect(t,e,i))
                },
                displacementMap: function(t, e, i, a, s) {
                    return this.put(new SVG.DisplacementMapEffect(t,e,i,a,s))
                },
                specularLighting: function(t, e, i, a) {
                    return this.put(new SVG.SpecularLightingEffect(t,e,i,a))
                },
                tile: function() {
                    return this.put(new SVG.TileEffect)
                },
                turbulence: function(t, e, i, a, s) {
                    return this.put(new SVG.TurbulenceEffect(t,e,i,a,s))
                },
                toString: function() {
                    return "url(#" + this.attr("id") + ")"
                }
            }
        }),
        SVG.extend(SVG.Defs, {
            filter: function(t) {
                var e = this.put(new SVG.Filter);
                return "function" == typeof t && t.call(e, e),
                e
            }
        }),
        SVG.extend(SVG.Container, {
            filter: function(t) {
                return this.defs().filter(t)
            }
        }),
        SVG.extend(SVG.Element, SVG.G, SVG.Nested, {
            filter: function(t) {
                return this.filterer = t instanceof SVG.Element ? t : this.doc().filter(t),
                this.doc() && this.filterer.doc() !== this.doc() && this.doc().defs().add(this.filterer),
                this.attr("filter", this.filterer),
                this.filterer
            },
            unfilter: function(t) {
                return this.filterer && !0 === t && this.filterer.remove(),
                delete this.filterer,
                this.attr("filter", null)
            }
        }),
        SVG.Effect = SVG.invent({
            create: function() {
                this.constructor.call(this)
            },
            inherit: SVG.Element,
            extend: {
                in: function(t) {
                    return null == t ? this.parent() && this.parent().select('[result="' + this.attr("in") + '"]').get(0) || this.attr("in") : this.attr("in", t)
                },
                result: function(t) {
                    return null == t ? this.attr("result") : this.attr("result", t)
                },
                toString: function() {
                    return this.result()
                }
            }
        }),
        SVG.ParentEffect = SVG.invent({
            create: function() {
                this.constructor.call(this)
            },
            inherit: SVG.Parent,
            extend: {
                in: function(t) {
                    return null == t ? this.parent() && this.parent().select('[result="' + this.attr("in") + '"]').get(0) || this.attr("in") : this.attr("in", t)
                },
                result: function(t) {
                    return null == t ? this.attr("result") : this.attr("result", t)
                },
                toString: function() {
                    return this.result()
                }
            }
        });
        var t = {
            blend: function(t, e) {
                return this.parent() && this.parent().blend(this, t, e)
            },
            colorMatrix: function(t, e) {
                return this.parent() && this.parent().colorMatrix(t, e).in(this)
            },
            convolveMatrix: function(t) {
                return this.parent() && this.parent().convolveMatrix(t).in(this)
            },
            componentTransfer: function(t) {
                return this.parent() && this.parent().componentTransfer(t).in(this)
            },
            composite: function(t, e) {
                return this.parent() && this.parent().composite(this, t, e)
            },
            flood: function(t, e) {
                return this.parent() && this.parent().flood(t, e)
            },
            offset: function(t, e) {
                return this.parent() && this.parent().offset(t, e).in(this)
            },
            image: function(t) {
                return this.parent() && this.parent().image(t)
            },
            merge: function() {
                return this.parent() && this.parent().merge.apply(this.parent(), [this].concat(arguments))
            },
            gaussianBlur: function(t, e) {
                return this.parent() && this.parent().gaussianBlur(t, e).in(this)
            },
            morphology: function(t, e) {
                return this.parent() && this.parent().morphology(t, e).in(this)
            },
            diffuseLighting: function(t, e, i) {
                return this.parent() && this.parent().diffuseLighting(t, e, i).in(this)
            },
            displacementMap: function(t, e, i, a) {
                return this.parent() && this.parent().displacementMap(this, t, e, i, a)
            },
            specularLighting: function(t, e, i, a) {
                return this.parent() && this.parent().specularLighting(t, e, i, a).in(this)
            },
            tile: function() {
                return this.parent() && this.parent().tile().in(this)
            },
            turbulence: function(t, e, i, a, s) {
                return this.parent() && this.parent().turbulence(t, e, i, a, s).in(this)
            }
        };
        SVG.extend(SVG.Effect, t),
        SVG.extend(SVG.ParentEffect, t),
        SVG.ChildEffect = SVG.invent({
            create: function() {
                this.constructor.call(this)
            },
            inherit: SVG.Element,
            extend: {
                in: function(t) {
                    this.attr("in", t)
                }
            }
        });
        var e = {
            blend: function(t, e, i) {
                this.attr({
                    in: t,
                    in2: e,
                    mode: i || "normal"
                })
            },
            colorMatrix: function(t, e) {
                "matrix" == t && (e = s(e)),
                this.attr({
                    type: t,
                    values: void 0 === e ? null : e
                })
            },
            convolveMatrix: function(t) {
                t = s(t),
                this.attr({
                    order: Math.sqrt(t.split(" ").length),
                    kernelMatrix: t
                })
            },
            composite: function(t, e, i) {
                this.attr({
                    in: t,
                    in2: e,
                    operator: i
                })
            },
            flood: function(t, e) {
                this.attr("flood-color", t),
                null != e && this.attr("flood-opacity", e)
            },
            offset: function(t, e) {
                this.attr({
                    dx: t,
                    dy: e
                })
            },
            image: function(t) {
                this.attr("href", t, SVG.xlink)
            },
            displacementMap: function(t, e, i, a, s) {
                this.attr({
                    in: t,
                    in2: e,
                    scale: i,
                    xChannelSelector: a,
                    yChannelSelector: s
                })
            },
            gaussianBlur: function(t, e) {
                null != t || null != e ? this.attr("stdDeviation", r(Array.prototype.slice.call(arguments))) : this.attr("stdDeviation", "0 0")
            },
            morphology: function(t, e) {
                this.attr({
                    operator: t,
                    radius: e
                })
            },
            tile: function() {},
            turbulence: function(t, e, i, a, s) {
                this.attr({
                    numOctaves: e,
                    seed: i,
                    stitchTiles: a,
                    baseFrequency: t,
                    type: s
                })
            }
        }
          , i = {
            merge: function() {
                var t;
                if (arguments[0]instanceof SVG.Set) {
                    var e = this;
                    arguments[0].each((function(t) {
                        this instanceof SVG.MergeNode ? e.put(this) : (this instanceof SVG.Effect || this instanceof SVG.ParentEffect) && e.put(new SVG.MergeNode(this))
                    }
                    ))
                } else {
                    t = Array.isArray(arguments[0]) ? arguments[0] : arguments;
                    for (var i = 0; i < t.length; i++)
                        t[i]instanceof SVG.MergeNode ? this.put(t[i]) : this.put(new SVG.MergeNode(t[i]))
                }
            },
            componentTransfer: function(t) {
                if (this.rgb = new SVG.Set,
                ["r", "g", "b", "a"].forEach(function(t) {
                    this[t] = new (SVG["Func" + t.toUpperCase()])("identity"),
                    this.rgb.add(this[t]),
                    this.node.appendChild(this[t].node)
                }
                .bind(this)),
                t)
                    for (var e in t.rgb && (["r", "g", "b"].forEach(function(e) {
                        this[e].attr(t.rgb)
                    }
                    .bind(this)),
                    delete t.rgb),
                    t)
                        this[e].attr(t[e])
            },
            diffuseLighting: function(t, e, i) {
                this.attr({
                    surfaceScale: t,
                    diffuseConstant: e,
                    kernelUnitLength: i
                })
            },
            specularLighting: function(t, e, i, a) {
                this.attr({
                    surfaceScale: t,
                    diffuseConstant: e,
                    specularExponent: i,
                    kernelUnitLength: a
                })
            }
        }
          , a = {
            distantLight: function(t, e) {
                this.attr({
                    azimuth: t,
                    elevation: e
                })
            },
            pointLight: function(t, e, i) {
                this.attr({
                    x: t,
                    y: e,
                    z: i
                })
            },
            spotLight: function(t, e, i, a, s, r) {
                this.attr({
                    x: t,
                    y: e,
                    z: i,
                    pointsAtX: a,
                    pointsAtY: s,
                    pointsAtZ: r
                })
            },
            mergeNode: function(t) {
                this.attr("in", t)
            }
        };
        function s(t) {
            return Array.isArray(t) && (t = new SVG.Array(t)),
            t.toString().replace(/^\s+/, "").replace(/\s+$/, "").replace(/\s+/g, " ")
        }
        function r(t) {
            if (!Array.isArray(t))
                return t;
            for (var e = 0, i = t.length, a = []; e < i; e++)
                a.push(t[e]);
            return a.join(" ")
        }
        function n() {
            var t = function() {};
            for (var e in "function" == typeof arguments[arguments.length - 1] && (t = arguments[arguments.length - 1],
            Array.prototype.splice.call(arguments, arguments.length - 1, 1)),
            arguments)
                for (var i in arguments[e])
                    t(arguments[e][i], i, arguments[e])
        }
        ["r", "g", "b", "a"].forEach((function(t) {
            a["Func" + t.toUpperCase()] = function(t) {
                switch (this.attr("type", t),
                t) {
                case "table":
                    this.attr("tableValues", arguments[1]);
                    break;
                case "linear":
                    this.attr("slope", arguments[1]),
                    this.attr("intercept", arguments[2]);
                    break;
                case "gamma":
                    this.attr("amplitude", arguments[1]),
                    this.attr("exponent", arguments[2]),
                    this.attr("offset", arguments[2])
                }
            }
        }
        )),
        n(e, (function(t, e) {
            var i = e.charAt(0).toUpperCase() + e.slice(1);
            SVG[i + "Effect"] = SVG.invent({
                create: function() {
                    this.constructor.call(this, SVG.create("fe" + i)),
                    t.apply(this, arguments),
                    this.result(this.attr("id") + "Out")
                },
                inherit: SVG.Effect,
                extend: {}
            })
        }
        )),
        n(i, (function(t, e) {
            var i = e.charAt(0).toUpperCase() + e.slice(1);
            SVG[i + "Effect"] = SVG.invent({
                create: function() {
                    this.constructor.call(this, SVG.create("fe" + i)),
                    t.apply(this, arguments),
                    this.result(this.attr("id") + "Out")
                },
                inherit: SVG.ParentEffect,
                extend: {}
            })
        }
        )),
        n(a, (function(t, e) {
            var i = e.charAt(0).toUpperCase() + e.slice(1);
            SVG[i] = SVG.invent({
                create: function() {
                    this.constructor.call(this, SVG.create("fe" + i)),
                    t.apply(this, arguments)
                },
                inherit: SVG.ChildEffect,
                extend: {}
            })
        }
        )),
        SVG.extend(SVG.MergeEffect, {
            in: function(t) {
                return t instanceof SVG.MergeNode ? this.add(t, 0) : this.add(new SVG.MergeNode(t), 0),
                this
            }
        }),
        SVG.extend(SVG.CompositeEffect, SVG.BlendEffect, SVG.DisplacementMapEffect, {
            in2: function(t) {
                return null == t ? this.parent() && this.parent().select('[result="' + this.attr("in2") + '"]').get(0) || this.attr("in2") : this.attr("in2", t)
            }
        }),
        SVG.filter = {
            sepiatone: [.343, .669, .119, 0, 0, .249, .626, .13, 0, 0, .172, .334, .111, 0, 0, 0, 0, 0, 1, 0]
        }
    }
    .call(void 0),
    function() {
        function t(t, s, r, n, o, l, h) {
            for (var c = t.slice(s, r || h), d = n.slice(o, l || h), g = 0, u = {
                pos: [0, 0],
                start: [0, 0]
            }, f = {
                pos: [0, 0],
                start: [0, 0]
            }; ; ) {
                if (c[g] = e.call(u, c[g]),
                d[g] = e.call(f, d[g]),
                c[g][0] != d[g][0] || "M" == c[g][0] || "A" == c[g][0] && (c[g][4] != d[g][4] || c[g][5] != d[g][5]) ? (Array.prototype.splice.apply(c, [g, 1].concat(a.call(u, c[g]))),
                Array.prototype.splice.apply(d, [g, 1].concat(a.call(f, d[g])))) : (c[g] = i.call(u, c[g]),
                d[g] = i.call(f, d[g])),
                ++g == c.length && g == d.length)
                    break;
                g == c.length && c.push(["C", u.pos[0], u.pos[1], u.pos[0], u.pos[1], u.pos[0], u.pos[1]]),
                g == d.length && d.push(["C", f.pos[0], f.pos[1], f.pos[0], f.pos[1], f.pos[0], f.pos[1]])
            }
            return {
                start: c,
                dest: d
            }
        }
        function e(t) {
            switch (t[0]) {
            case "z":
            case "Z":
                t[0] = "L",
                t[1] = this.start[0],
                t[2] = this.start[1];
                break;
            case "H":
                t[0] = "L",
                t[2] = this.pos[1];
                break;
            case "V":
                t[0] = "L",
                t[2] = t[1],
                t[1] = this.pos[0];
                break;
            case "T":
                t[0] = "Q",
                t[3] = t[1],
                t[4] = t[2],
                t[1] = this.reflection[1],
                t[2] = this.reflection[0];
                break;
            case "S":
                t[0] = "C",
                t[6] = t[4],
                t[5] = t[3],
                t[4] = t[2],
                t[3] = t[1],
                t[2] = this.reflection[1],
                t[1] = this.reflection[0]
            }
            return t
        }
        function i(t) {
            var e = t.length;
            return this.pos = [t[e - 2], t[e - 1]],
            -1 != "SCQT".indexOf(t[0]) && (this.reflection = [2 * this.pos[0] - t[e - 4], 2 * this.pos[1] - t[e - 3]]),
            t
        }
        function a(t) {
            var e = [t];
            switch (t[0]) {
            case "M":
                return this.pos = this.start = [t[1], t[2]],
                e;
            case "L":
                t[5] = t[3] = t[1],
                t[6] = t[4] = t[2],
                t[1] = this.pos[0],
                t[2] = this.pos[1];
                break;
            case "Q":
                t[6] = t[4],
                t[5] = t[3],
                t[4] = 1 * t[4] / 3 + 2 * t[2] / 3,
                t[3] = 1 * t[3] / 3 + 2 * t[1] / 3,
                t[2] = 1 * this.pos[1] / 3 + 2 * t[2] / 3,
                t[1] = 1 * this.pos[0] / 3 + 2 * t[1] / 3;
                break;
            case "A":
                t = (e = function(t, e) {
                    var i, a, s, r, n, o, l, h, c, d, g, u, f, p, x, b, m, v, y, w, k, A, S, C, L, P, T = Math.abs(e[1]), z = Math.abs(e[2]), I = e[3] % 360, M = e[4], E = e[5], X = e[6], Y = e[7], F = new SVG.Point(t), R = new SVG.Point(X,Y), D = [];
                    if (0 === T || 0 === z || F.x === R.x && F.y === R.y)
                        return [["C", F.x, F.y, R.x, R.y, R.x, R.y]];
                    i = new SVG.Point((F.x - R.x) / 2,(F.y - R.y) / 2).transform((new SVG.Matrix).rotate(I)),
                    (a = i.x * i.x / (T * T) + i.y * i.y / (z * z)) > 1 && (T *= a = Math.sqrt(a),
                    z *= a);
                    s = (new SVG.Matrix).rotate(I).scale(1 / T, 1 / z).rotate(-I),
                    F = F.transform(s),
                    R = R.transform(s),
                    r = [R.x - F.x, R.y - F.y],
                    o = r[0] * r[0] + r[1] * r[1],
                    n = Math.sqrt(o),
                    r[0] /= n,
                    r[1] /= n,
                    l = o < 4 ? Math.sqrt(1 - o / 4) : 0,
                    M === E && (l *= -1);
                    h = new SVG.Point((R.x + F.x) / 2 + l * -r[1],(R.y + F.y) / 2 + l * r[0]),
                    c = new SVG.Point(F.x - h.x,F.y - h.y),
                    d = new SVG.Point(R.x - h.x,R.y - h.y),
                    g = Math.acos(c.x / Math.sqrt(c.x * c.x + c.y * c.y)),
                    c.y < 0 && (g *= -1);
                    u = Math.acos(d.x / Math.sqrt(d.x * d.x + d.y * d.y)),
                    d.y < 0 && (u *= -1);
                    E && g > u && (u += 2 * Math.PI);
                    !E && g < u && (u -= 2 * Math.PI);
                    for (p = Math.ceil(2 * Math.abs(g - u) / Math.PI),
                    b = [],
                    m = g,
                    f = (u - g) / p,
                    x = 4 * Math.tan(f / 4) / 3,
                    k = 0; k <= p; k++)
                        y = Math.cos(m),
                        v = Math.sin(m),
                        w = new SVG.Point(h.x + y,h.y + v),
                        b[k] = [new SVG.Point(w.x + x * v,w.y - x * y), w, new SVG.Point(w.x - x * v,w.y + x * y)],
                        m += f;
                    for (b[0][0] = b[0][1].clone(),
                    b[b.length - 1][2] = b[b.length - 1][1].clone(),
                    s = (new SVG.Matrix).rotate(I).scale(T, z).rotate(-I),
                    k = 0,
                    A = b.length; k < A; k++)
                        b[k][0] = b[k][0].transform(s),
                        b[k][1] = b[k][1].transform(s),
                        b[k][2] = b[k][2].transform(s);
                    for (k = 1,
                    A = b.length; k < A; k++)
                        S = (w = b[k - 1][2]).x,
                        C = w.y,
                        L = (w = b[k][0]).x,
                        P = w.y,
                        X = (w = b[k][1]).x,
                        Y = w.y,
                        D.push(["C", S, C, L, P, X, Y]);
                    return D
                }(this.pos, t))[0]
            }
            return t[0] = "C",
            this.pos = [t[5], t[6]],
            this.reflection = [2 * t[5] - t[3], 2 * t[6] - t[4]],
            e
        }
        function s(t, e) {
            if (!1 === e)
                return !1;
            for (var i = e, a = t.length; i < a; ++i)
                if ("M" == t[i][0])
                    return i;
            return !1
        }
        SVG.extend(SVG.PathArray, {
            morph: function(e) {
                for (var i = this.value, a = this.parse(e), r = 0, n = 0, o = !1, l = !1; !1 !== r || !1 !== n; ) {
                    var h;
                    o = s(i, !1 !== r && r + 1),
                    l = s(a, !1 !== n && n + 1),
                    !1 === r && (r = 0 == (h = new SVG.PathArray(c.start).bbox()).height || 0 == h.width ? i.push(i[0]) - 1 : i.push(["M", h.x + h.width / 2, h.y + h.height / 2]) - 1),
                    !1 === n && (n = 0 == (h = new SVG.PathArray(c.dest).bbox()).height || 0 == h.width ? a.push(a[0]) - 1 : a.push(["M", h.x + h.width / 2, h.y + h.height / 2]) - 1);
                    var c = t(i, r, o, a, n, l);
                    i = i.slice(0, r).concat(c.start, !1 === o ? [] : i.slice(o)),
                    a = a.slice(0, n).concat(c.dest, !1 === l ? [] : a.slice(l)),
                    r = !1 !== o && r + c.start.length,
                    n = !1 !== l && n + c.dest.length
                }
                return this.value = i,
                this.destination = new SVG.PathArray,
                this.destination.value = a,
                this
            }
        })
    }(),
    /*! svg.draggable.js - v2.2.2 - 2019-01-08
  * https://github.com/svgdotjs/svg.draggable.js
  * Copyright (c) 2019 Wout Fierens; Licensed MIT */
    function() {
        function t(t) {
            t.remember("_draggable", this),
            this.el = t
        }
        t.prototype.init = function(t, e) {
            var i = this;
            this.constraint = t,
            this.value = e,
            this.el.on("mousedown.drag", (function(t) {
                i.start(t)
            }
            )),
            this.el.on("touchstart.drag", (function(t) {
                i.start(t)
            }
            ))
        }
        ,
        t.prototype.transformPoint = function(t, e) {
            var i = (t = t || window.event).changedTouches && t.changedTouches[0] || t;
            return this.p.x = i.clientX - (e || 0),
            this.p.y = i.clientY,
            this.p.matrixTransform(this.m)
        }
        ,
        t.prototype.getBBox = function() {
            var t = this.el.bbox();
            return this.el instanceof SVG.Nested && (t = this.el.rbox()),
            (this.el instanceof SVG.G || this.el instanceof SVG.Use || this.el instanceof SVG.Nested) && (t.x = this.el.x(),
            t.y = this.el.y()),
            t
        }
        ,
        t.prototype.start = function(t) {
            if ("click" != t.type && "mousedown" != t.type && "mousemove" != t.type || 1 == (t.which || t.buttons)) {
                var e = this;
                if (this.el.fire("beforedrag", {
                    event: t,
                    handler: this
                }),
                !this.el.event().defaultPrevented) {
                    t.preventDefault(),
                    t.stopPropagation(),
                    this.parent = this.parent || this.el.parent(SVG.Nested) || this.el.parent(SVG.Doc),
                    this.p = this.parent.node.createSVGPoint(),
                    this.m = this.el.node.getScreenCTM().inverse();
                    var i, a = this.getBBox();
                    if (this.el instanceof SVG.Text)
                        switch (i = this.el.node.getComputedTextLength(),
                        this.el.attr("text-anchor")) {
                        case "middle":
                            i /= 2;
                            break;
                        case "start":
                            i = 0
                        }
                    this.startPoints = {
                        point: this.transformPoint(t, i),
                        box: a,
                        transform: this.el.transform()
                    },
                    SVG.on(window, "mousemove.drag", (function(t) {
                        e.drag(t)
                    }
                    )),
                    SVG.on(window, "touchmove.drag", (function(t) {
                        e.drag(t)
                    }
                    )),
                    SVG.on(window, "mouseup.drag", (function(t) {
                        e.end(t)
                    }
                    )),
                    SVG.on(window, "touchend.drag", (function(t) {
                        e.end(t)
                    }
                    )),
                    this.el.fire("dragstart", {
                        event: t,
                        p: this.startPoints.point,
                        m: this.m,
                        handler: this
                    })
                }
            }
        }
        ,
        t.prototype.drag = function(t) {
            var e = this.getBBox()
              , i = this.transformPoint(t)
              , a = this.startPoints.box.x + i.x - this.startPoints.point.x
              , s = this.startPoints.box.y + i.y - this.startPoints.point.y
              , r = this.constraint
              , n = i.x - this.startPoints.point.x
              , o = i.y - this.startPoints.point.y;
            if (this.el.fire("dragmove", {
                event: t,
                p: i,
                m: this.m,
                handler: this
            }),
            this.el.event().defaultPrevented)
                return i;
            if ("function" == typeof r) {
                var l = r.call(this.el, a, s, this.m);
                "boolean" == typeof l && (l = {
                    x: l,
                    y: l
                }),
                !0 === l.x ? this.el.x(a) : !1 !== l.x && this.el.x(l.x),
                !0 === l.y ? this.el.y(s) : !1 !== l.y && this.el.y(l.y)
            } else
                "object" == typeof r && (null != r.minX && a < r.minX ? n = (a = r.minX) - this.startPoints.box.x : null != r.maxX && a > r.maxX - e.width && (n = (a = r.maxX - e.width) - this.startPoints.box.x),
                null != r.minY && s < r.minY ? o = (s = r.minY) - this.startPoints.box.y : null != r.maxY && s > r.maxY - e.height && (o = (s = r.maxY - e.height) - this.startPoints.box.y),
                null != r.snapToGrid && (a -= a % r.snapToGrid,
                s -= s % r.snapToGrid,
                n -= n % r.snapToGrid,
                o -= o % r.snapToGrid),
                this.el instanceof SVG.G ? this.el.matrix(this.startPoints.transform).transform({
                    x: n,
                    y: o
                }, !0) : this.el.move(a, s));
            return i
        }
        ,
        t.prototype.end = function(t) {
            var e = this.drag(t);
            this.el.fire("dragend", {
                event: t,
                p: e,
                m: this.m,
                handler: this
            }),
            SVG.off(window, "mousemove.drag"),
            SVG.off(window, "touchmove.drag"),
            SVG.off(window, "mouseup.drag"),
            SVG.off(window, "touchend.drag")
        }
        ,
        SVG.extend(SVG.Element, {
            draggable: function(e, i) {
                "function" != typeof e && "object" != typeof e || (i = e,
                e = !0);
                var a = this.remember("_draggable") || new t(this);
                return (e = void 0 === e || e) ? a.init(i || {}, e) : (this.off("mousedown.drag"),
                this.off("touchstart.drag")),
                this
            }
        })
    }
    .call(void 0),
    function() {
        function t(t) {
            this.el = t,
            t.remember("_selectHandler", this),
            this.pointSelection = {
                isSelected: !1
            },
            this.rectSelection = {
                isSelected: !1
            },
            this.pointsList = {
                lt: [0, 0],
                rt: ["width", 0],
                rb: ["width", "height"],
                lb: [0, "height"],
                t: ["width", 0],
                r: ["width", "height"],
                b: ["width", "height"],
                l: [0, "height"]
            },
            this.pointCoord = function(t, e, i) {
                var a = "string" != typeof t ? t : e[t];
                return i ? a / 2 : a
            }
            ,
            this.pointCoords = function(t, e) {
                var i = this.pointsList[t];
                return {
                    x: this.pointCoord(i[0], e, "t" === t || "b" === t),
                    y: this.pointCoord(i[1], e, "r" === t || "l" === t)
                }
            }
        }
        t.prototype.init = function(t, e) {
            var i = this.el.bbox();
            this.options = {};
            var a = this.el.selectize.defaults.points;
            for (var s in this.el.selectize.defaults)
                this.options[s] = this.el.selectize.defaults[s],
                void 0 !== e[s] && (this.options[s] = e[s]);
            var r = ["points", "pointsExclude"];
            for (var s in r) {
                var n = this.options[r[s]];
                "string" == typeof n ? n = n.length > 0 ? n.split(/\s*,\s*/i) : [] : "boolean" == typeof n && "points" === r[s] && (n = n ? a : []),
                this.options[r[s]] = n
            }
            this.options.points = [a, this.options.points].reduce((function(t, e) {
                return t.filter((function(t) {
                    return e.indexOf(t) > -1
                }
                ))
            }
            )),
            this.options.points = [this.options.points, this.options.pointsExclude].reduce((function(t, e) {
                return t.filter((function(t) {
                    return e.indexOf(t) < 0
                }
                ))
            }
            )),
            this.parent = this.el.parent(),
            this.nested = this.nested || this.parent.group(),
            this.nested.matrix(new SVG.Matrix(this.el).translate(i.x, i.y)),
            this.options.deepSelect && -1 !== ["line", "polyline", "polygon"].indexOf(this.el.type) ? this.selectPoints(t) : this.selectRect(t),
            this.observe(),
            this.cleanup()
        }
        ,
        t.prototype.selectPoints = function(t) {
            return this.pointSelection.isSelected = t,
            this.pointSelection.set || (this.pointSelection.set = this.parent.set(),
            this.drawPoints()),
            this
        }
        ,
        t.prototype.getPointArray = function() {
            var t = this.el.bbox();
            return this.el.array().valueOf().map((function(e) {
                return [e[0] - t.x, e[1] - t.y]
            }
            ))
        }
        ,
        t.prototype.drawPoints = function() {
            for (var t = this, e = this.getPointArray(), i = 0, a = e.length; i < a; ++i) {
                var s = function(e) {
                    return function(i) {
                        (i = i || window.event).preventDefault ? i.preventDefault() : i.returnValue = !1,
                        i.stopPropagation();
                        var a = i.pageX || i.touches[0].pageX
                          , s = i.pageY || i.touches[0].pageY;
                        t.el.fire("point", {
                            x: a,
                            y: s,
                            i: e,
                            event: i
                        })
                    }
                }(i)
                  , r = this.drawPoint(e[i][0], e[i][1]).addClass(this.options.classPoints).addClass(this.options.classPoints + "_point").on("touchstart", s).on("mousedown", s);
                this.pointSelection.set.add(r)
            }
        }
        ,
        t.prototype.drawPoint = function(t, e) {
            var i = this.options.pointType;
            switch (i) {
            case "circle":
                return this.drawCircle(t, e);
            case "rect":
                return this.drawRect(t, e);
            default:
                if ("function" == typeof i)
                    return i.call(this, t, e);
                throw new Error("Unknown " + i + " point type!")
            }
        }
        ,
        t.prototype.drawCircle = function(t, e) {
            return this.nested.circle(this.options.pointSize).center(t, e)
        }
        ,
        t.prototype.drawRect = function(t, e) {
            return this.nested.rect(this.options.pointSize, this.options.pointSize).center(t, e)
        }
        ,
        t.prototype.updatePointSelection = function() {
            var t = this.getPointArray();
            this.pointSelection.set.each((function(e) {
                this.cx() === t[e][0] && this.cy() === t[e][1] || this.center(t[e][0], t[e][1])
            }
            ))
        }
        ,
        t.prototype.updateRectSelection = function() {
            var t = this
              , e = this.el.bbox();
            if (this.rectSelection.set.get(0).attr({
                width: e.width,
                height: e.height
            }),
            this.options.points.length && this.options.points.map((function(i, a) {
                var s = t.pointCoords(i, e);
                t.rectSelection.set.get(a + 1).center(s.x, s.y)
            }
            )),
            this.options.rotationPoint) {
                var i = this.rectSelection.set.length();
                this.rectSelection.set.get(i - 1).center(e.width / 2, 20)
            }
        }
        ,
        t.prototype.selectRect = function(t) {
            var e = this
              , i = this.el.bbox();
            function a(t) {
                return function(i) {
                    (i = i || window.event).preventDefault ? i.preventDefault() : i.returnValue = !1,
                    i.stopPropagation();
                    var a = i.pageX || i.touches[0].pageX
                      , s = i.pageY || i.touches[0].pageY;
                    e.el.fire(t, {
                        x: a,
                        y: s,
                        event: i
                    })
                }
            }
            if (this.rectSelection.isSelected = t,
            this.rectSelection.set = this.rectSelection.set || this.parent.set(),
            this.rectSelection.set.get(0) || this.rectSelection.set.add(this.nested.rect(i.width, i.height).addClass(this.options.classRect)),
            this.options.points.length && this.rectSelection.set.length() < 2) {
                this.options.points.map((function(t, s) {
                    var r = e.pointCoords(t, i)
                      , n = e.drawPoint(r.x, r.y).attr("class", e.options.classPoints + "_" + t).on("mousedown", a(t)).on("touchstart", a(t));
                    e.rectSelection.set.add(n)
                }
                )),
                this.rectSelection.set.each((function() {
                    this.addClass(e.options.classPoints)
                }
                ))
            }
            if (this.options.rotationPoint && (this.options.points && !this.rectSelection.set.get(9) || !this.options.points && !this.rectSelection.set.get(1))) {
                var s = function(t) {
                    (t = t || window.event).preventDefault ? t.preventDefault() : t.returnValue = !1,
                    t.stopPropagation();
                    var i = t.pageX || t.touches[0].pageX
                      , a = t.pageY || t.touches[0].pageY;
                    e.el.fire("rot", {
                        x: i,
                        y: a,
                        event: t
                    })
                }
                  , r = this.drawPoint(i.width / 2, 20).attr("class", this.options.classPoints + "_rot").on("touchstart", s).on("mousedown", s);
                this.rectSelection.set.add(r)
            }
        }
        ,
        t.prototype.handler = function() {
            var t = this.el.bbox();
            this.nested.matrix(new SVG.Matrix(this.el).translate(t.x, t.y)),
            this.rectSelection.isSelected && this.updateRectSelection(),
            this.pointSelection.isSelected && this.updatePointSelection()
        }
        ,
        t.prototype.observe = function() {
            var t = this;
            if (MutationObserver)
                if (this.rectSelection.isSelected || this.pointSelection.isSelected)
                    this.observerInst = this.observerInst || new MutationObserver((function() {
                        t.handler()
                    }
                    )),
                    this.observerInst.observe(this.el.node, {
                        attributes: !0
                    });
                else
                    try {
                        this.observerInst.disconnect(),
                        delete this.observerInst
                    } catch (t) {}
            else
                this.el.off("DOMAttrModified.select"),
                (this.rectSelection.isSelected || this.pointSelection.isSelected) && this.el.on("DOMAttrModified.select", (function() {
                    t.handler()
                }
                ))
        }
        ,
        t.prototype.cleanup = function() {
            !this.rectSelection.isSelected && this.rectSelection.set && (this.rectSelection.set.each((function() {
                this.remove()
            }
            )),
            this.rectSelection.set.clear(),
            delete this.rectSelection.set),
            !this.pointSelection.isSelected && this.pointSelection.set && (this.pointSelection.set.each((function() {
                this.remove()
            }
            )),
            this.pointSelection.set.clear(),
            delete this.pointSelection.set),
            this.pointSelection.isSelected || this.rectSelection.isSelected || (this.nested.remove(),
            delete this.nested)
        }
        ,
        SVG.extend(SVG.Element, {
            selectize: function(e, i) {
                return "object" == typeof e && (i = e,
                e = !0),
                (this.remember("_selectHandler") || new t(this)).init(void 0 === e || e, i || {}),
                this
            }
        }),
        SVG.Element.prototype.selectize.defaults = {
            points: ["lt", "rt", "rb", "lb", "t", "r", "b", "l"],
            pointsExclude: [],
            classRect: "svg_select_boundingRect",
            classPoints: "svg_select_points",
            pointSize: 7,
            rotationPoint: !0,
            deepSelect: !1,
            pointType: "circle"
        }
    }(),
    function() {
        (function() {
            function t(t) {
                t.remember("_resizeHandler", this),
                this.el = t,
                this.parameters = {},
                this.lastUpdateCall = null,
                this.p = t.doc().node.createSVGPoint()
            }
            t.prototype.transformPoint = function(t, e, i) {
                return this.p.x = t - (this.offset.x - window.pageXOffset),
                this.p.y = e - (this.offset.y - window.pageYOffset),
                this.p.matrixTransform(i || this.m)
            }
            ,
            t.prototype._extractPosition = function(t) {
                return {
                    x: null != t.clientX ? t.clientX : t.touches[0].clientX,
                    y: null != t.clientY ? t.clientY : t.touches[0].clientY
                }
            }
            ,
            t.prototype.init = function(t) {
                var e = this;
                if (this.stop(),
                "stop" !== t) {
                    for (var i in this.options = {},
                    this.el.resize.defaults)
                        this.options[i] = this.el.resize.defaults[i],
                        void 0 !== t[i] && (this.options[i] = t[i]);
                    this.el.on("lt.resize", (function(t) {
                        e.resize(t || window.event)
                    }
                    )),
                    this.el.on("rt.resize", (function(t) {
                        e.resize(t || window.event)
                    }
                    )),
                    this.el.on("rb.resize", (function(t) {
                        e.resize(t || window.event)
                    }
                    )),
                    this.el.on("lb.resize", (function(t) {
                        e.resize(t || window.event)
                    }
                    )),
                    this.el.on("t.resize", (function(t) {
                        e.resize(t || window.event)
                    }
                    )),
                    this.el.on("r.resize", (function(t) {
                        e.resize(t || window.event)
                    }
                    )),
                    this.el.on("b.resize", (function(t) {
                        e.resize(t || window.event)
                    }
                    )),
                    this.el.on("l.resize", (function(t) {
                        e.resize(t || window.event)
                    }
                    )),
                    this.el.on("rot.resize", (function(t) {
                        e.resize(t || window.event)
                    }
                    )),
                    this.el.on("point.resize", (function(t) {
                        e.resize(t || window.event)
                    }
                    )),
                    this.update()
                }
            }
            ,
            t.prototype.stop = function() {
                return this.el.off("lt.resize"),
                this.el.off("rt.resize"),
                this.el.off("rb.resize"),
                this.el.off("lb.resize"),
                this.el.off("t.resize"),
                this.el.off("r.resize"),
                this.el.off("b.resize"),
                this.el.off("l.resize"),
                this.el.off("rot.resize"),
                this.el.off("point.resize"),
                this
            }
            ,
            t.prototype.resize = function(t) {
                var e = this;
                this.m = this.el.node.getScreenCTM().inverse(),
                this.offset = {
                    x: window.pageXOffset,
                    y: window.pageYOffset
                };
                var i = this._extractPosition(t.detail.event);
                if (this.parameters = {
                    type: this.el.type,
                    p: this.transformPoint(i.x, i.y),
                    x: t.detail.x,
                    y: t.detail.y,
                    box: this.el.bbox(),
                    rotation: this.el.transform().rotation
                },
                "text" === this.el.type && (this.parameters.fontSize = this.el.attr()["font-size"]),
                void 0 !== t.detail.i) {
                    var a = this.el.array().valueOf();
                    this.parameters.i = t.detail.i,
                    this.parameters.pointCoords = [a[t.detail.i][0], a[t.detail.i][1]]
                }
                switch (t.type) {
                case "lt":
                    this.calc = function(t, e) {
                        var i = this.snapToGrid(t, e);
                        if (this.parameters.box.width - i[0] > 0 && this.parameters.box.height - i[1] > 0) {
                            if ("text" === this.parameters.type)
                                return this.el.move(this.parameters.box.x + i[0], this.parameters.box.y),
                                void this.el.attr("font-size", this.parameters.fontSize - i[0]);
                            i = this.checkAspectRatio(i),
                            this.el.move(this.parameters.box.x + i[0], this.parameters.box.y + i[1]).size(this.parameters.box.width - i[0], this.parameters.box.height - i[1])
                        }
                    }
                    ;
                    break;
                case "rt":
                    this.calc = function(t, e) {
                        var i = this.snapToGrid(t, e, 2);
                        if (this.parameters.box.width + i[0] > 0 && this.parameters.box.height - i[1] > 0) {
                            if ("text" === this.parameters.type)
                                return this.el.move(this.parameters.box.x - i[0], this.parameters.box.y),
                                void this.el.attr("font-size", this.parameters.fontSize + i[0]);
                            i = this.checkAspectRatio(i, !0),
                            this.el.move(this.parameters.box.x, this.parameters.box.y + i[1]).size(this.parameters.box.width + i[0], this.parameters.box.height - i[1])
                        }
                    }
                    ;
                    break;
                case "rb":
                    this.calc = function(t, e) {
                        var i = this.snapToGrid(t, e, 0);
                        if (this.parameters.box.width + i[0] > 0 && this.parameters.box.height + i[1] > 0) {
                            if ("text" === this.parameters.type)
                                return this.el.move(this.parameters.box.x - i[0], this.parameters.box.y),
                                void this.el.attr("font-size", this.parameters.fontSize + i[0]);
                            i = this.checkAspectRatio(i),
                            this.el.move(this.parameters.box.x, this.parameters.box.y).size(this.parameters.box.width + i[0], this.parameters.box.height + i[1])
                        }
                    }
                    ;
                    break;
                case "lb":
                    this.calc = function(t, e) {
                        var i = this.snapToGrid(t, e, 1);
                        if (this.parameters.box.width - i[0] > 0 && this.parameters.box.height + i[1] > 0) {
                            if ("text" === this.parameters.type)
                                return this.el.move(this.parameters.box.x + i[0], this.parameters.box.y),
                                void this.el.attr("font-size", this.parameters.fontSize - i[0]);
                            i = this.checkAspectRatio(i, !0),
                            this.el.move(this.parameters.box.x + i[0], this.parameters.box.y).size(this.parameters.box.width - i[0], this.parameters.box.height + i[1])
                        }
                    }
                    ;
                    break;
                case "t":
                    this.calc = function(t, e) {
                        var i = this.snapToGrid(t, e, 2);
                        if (this.parameters.box.height - i[1] > 0) {
                            if ("text" === this.parameters.type)
                                return;
                            this.el.move(this.parameters.box.x, this.parameters.box.y + i[1]).height(this.parameters.box.height - i[1])
                        }
                    }
                    ;
                    break;
                case "r":
                    this.calc = function(t, e) {
                        var i = this.snapToGrid(t, e, 0);
                        if (this.parameters.box.width + i[0] > 0) {
                            if ("text" === this.parameters.type)
                                return;
                            this.el.move(this.parameters.box.x, this.parameters.box.y).width(this.parameters.box.width + i[0])
                        }
                    }
                    ;
                    break;
                case "b":
                    this.calc = function(t, e) {
                        var i = this.snapToGrid(t, e, 0);
                        if (this.parameters.box.height + i[1] > 0) {
                            if ("text" === this.parameters.type)
                                return;
                            this.el.move(this.parameters.box.x, this.parameters.box.y).height(this.parameters.box.height + i[1])
                        }
                    }
                    ;
                    break;
                case "l":
                    this.calc = function(t, e) {
                        var i = this.snapToGrid(t, e, 1);
                        if (this.parameters.box.width - i[0] > 0) {
                            if ("text" === this.parameters.type)
                                return;
                            this.el.move(this.parameters.box.x + i[0], this.parameters.box.y).width(this.parameters.box.width - i[0])
                        }
                    }
                    ;
                    break;
                case "rot":
                    this.calc = function(t, e) {
                        var i = t + this.parameters.p.x
                          , a = e + this.parameters.p.y
                          , s = Math.atan2(this.parameters.p.y - this.parameters.box.y - this.parameters.box.height / 2, this.parameters.p.x - this.parameters.box.x - this.parameters.box.width / 2)
                          , r = Math.atan2(a - this.parameters.box.y - this.parameters.box.height / 2, i - this.parameters.box.x - this.parameters.box.width / 2)
                          , n = this.parameters.rotation + 180 * (r - s) / Math.PI + this.options.snapToAngle / 2;
                        this.el.center(this.parameters.box.cx, this.parameters.box.cy).rotate(n - n % this.options.snapToAngle, this.parameters.box.cx, this.parameters.box.cy)
                    }
                    ;
                    break;
                case "point":
                    this.calc = function(t, e) {
                        var i = this.snapToGrid(t, e, this.parameters.pointCoords[0], this.parameters.pointCoords[1])
                          , a = this.el.array().valueOf();
                        a[this.parameters.i][0] = this.parameters.pointCoords[0] + i[0],
                        a[this.parameters.i][1] = this.parameters.pointCoords[1] + i[1],
                        this.el.plot(a)
                    }
                }
                this.el.fire("resizestart", {
                    dx: this.parameters.x,
                    dy: this.parameters.y,
                    event: t
                }),
                SVG.on(window, "touchmove.resize", (function(t) {
                    e.update(t || window.event)
                }
                )),
                SVG.on(window, "touchend.resize", (function() {
                    e.done()
                }
                )),
                SVG.on(window, "mousemove.resize", (function(t) {
                    e.update(t || window.event)
                }
                )),
                SVG.on(window, "mouseup.resize", (function() {
                    e.done()
                }
                ))
            }
            ,
            t.prototype.update = function(t) {
                if (t) {
                    var e = this._extractPosition(t)
                      , i = this.transformPoint(e.x, e.y)
                      , a = i.x - this.parameters.p.x
                      , s = i.y - this.parameters.p.y;
                    this.lastUpdateCall = [a, s],
                    this.calc(a, s),
                    this.el.fire("resizing", {
                        dx: a,
                        dy: s,
                        event: t
                    })
                } else
                    this.lastUpdateCall && this.calc(this.lastUpdateCall[0], this.lastUpdateCall[1])
            }
            ,
            t.prototype.done = function() {
                this.lastUpdateCall = null,
                SVG.off(window, "mousemove.resize"),
                SVG.off(window, "mouseup.resize"),
                SVG.off(window, "touchmove.resize"),
                SVG.off(window, "touchend.resize"),
                this.el.fire("resizedone")
            }
            ,
            t.prototype.snapToGrid = function(t, e, i, a) {
                var s;
                return void 0 !== a ? s = [(i + t) % this.options.snapToGrid, (a + e) % this.options.snapToGrid] : (i = null == i ? 3 : i,
                s = [(this.parameters.box.x + t + (1 & i ? 0 : this.parameters.box.width)) % this.options.snapToGrid, (this.parameters.box.y + e + (2 & i ? 0 : this.parameters.box.height)) % this.options.snapToGrid]),
                t < 0 && (s[0] -= this.options.snapToGrid),
                e < 0 && (s[1] -= this.options.snapToGrid),
                t -= Math.abs(s[0]) < this.options.snapToGrid / 2 ? s[0] : s[0] - (t < 0 ? -this.options.snapToGrid : this.options.snapToGrid),
                e -= Math.abs(s[1]) < this.options.snapToGrid / 2 ? s[1] : s[1] - (e < 0 ? -this.options.snapToGrid : this.options.snapToGrid),
                this.constraintToBox(t, e, i, a)
            }
            ,
            t.prototype.constraintToBox = function(t, e, i, a) {
                var s, r, n = this.options.constraint || {};
                return void 0 !== a ? (s = i,
                r = a) : (s = this.parameters.box.x + (1 & i ? 0 : this.parameters.box.width),
                r = this.parameters.box.y + (2 & i ? 0 : this.parameters.box.height)),
                void 0 !== n.minX && s + t < n.minX && (t = n.minX - s),
                void 0 !== n.maxX && s + t > n.maxX && (t = n.maxX - s),
                void 0 !== n.minY && r + e < n.minY && (e = n.minY - r),
                void 0 !== n.maxY && r + e > n.maxY && (e = n.maxY - r),
                [t, e]
            }
            ,
            t.prototype.checkAspectRatio = function(t, e) {
                if (!this.options.saveAspectRatio)
                    return t;
                var i = t.slice()
                  , a = this.parameters.box.width / this.parameters.box.height
                  , s = this.parameters.box.width + t[0]
                  , r = this.parameters.box.height - t[1]
                  , n = s / r;
                return n < a ? (i[1] = s / a - this.parameters.box.height,
                e && (i[1] = -i[1])) : n > a && (i[0] = this.parameters.box.width - r * a,
                e && (i[0] = -i[0])),
                i
            }
            ,
            SVG.extend(SVG.Element, {
                resize: function(e) {
                    return (this.remember("_resizeHandler") || new t(this)).init(e || {}),
                    this
                }
            }),
            SVG.Element.prototype.resize.defaults = {
                snapToAngle: .1,
                snapToGrid: 1,
                constraint: {},
                saveAspectRatio: !1
            }
        }
        ).call(this)
    }();
    !function(t, e) {
        void 0 === e && (e = {});
        var i = e.insertAt;
        if (t && "undefined" != typeof document) {
            var a = document.head || document.getElementsByTagName("head")[0]
              , s = document.createElement("style");
            s.type = "text/css",
            "top" === i && a.firstChild ? a.insertBefore(s, a.firstChild) : a.appendChild(s),
            s.styleSheet ? s.styleSheet.cssText = t : s.appendChild(document.createTextNode(t))
        }
    }('.apexcharts-canvas {\n  position: relative;\n  user-select: none;\n  /* cannot give overflow: hidden as it will crop tooltips which overflow outside chart area */\n}\n\n\n/* scrollbar is not visible by default for legend, hence forcing the visibility */\n.apexcharts-canvas ::-webkit-scrollbar {\n  -webkit-appearance: none;\n  width: 6px;\n}\n\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\n  border-radius: 4px;\n  background-color: rgba(0, 0, 0, .5);\n  box-shadow: 0 0 1px rgba(255, 255, 255, .5);\n  -webkit-box-shadow: 0 0 1px rgba(255, 255, 255, .5);\n}\n\n\n.apexcharts-inner {\n  position: relative;\n}\n\n.apexcharts-text tspan {\n  font-family: inherit;\n}\n\n.legend-mouseover-inactive {\n  transition: 0.15s ease all;\n  opacity: 0.20;\n}\n\n.apexcharts-series-collapsed {\n  opacity: 0;\n}\n\n.apexcharts-tooltip {\n  border-radius: 5px;\n  box-shadow: 2px 2px 6px -4px #999;\n  cursor: default;\n  font-size: 14px;\n  left: 62px;\n  opacity: 0;\n  pointer-events: none;\n  position: absolute;\n  top: 20px;\n  display: flex;\n  flex-direction: column;\n  overflow: hidden;\n  white-space: nowrap;\n  z-index: 12;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-tooltip.apexcharts-active {\n  opacity: 1;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-tooltip.apexcharts-theme-light {\n  border: 1px solid #e3e3e3;\n  background: rgba(255, 255, 255, 0.96);\n}\n\n.apexcharts-tooltip.apexcharts-theme-dark {\n  color: #fff;\n  background: rgba(30, 30, 30, 0.8);\n}\n\n.apexcharts-tooltip * {\n  font-family: inherit;\n}\n\n\n.apexcharts-tooltip-title {\n  padding: 6px;\n  font-size: 15px;\n  margin-bottom: 4px;\n}\n\n.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title {\n  background: #ECEFF1;\n  border-bottom: 1px solid #ddd;\n}\n\n.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title {\n  background: rgba(0, 0, 0, 0.7);\n  border-bottom: 1px solid #333;\n}\n\n.apexcharts-tooltip-text-value,\n.apexcharts-tooltip-text-z-value {\n  display: inline-block;\n  font-weight: 600;\n  margin-left: 5px;\n}\n\n.apexcharts-tooltip-text-z-label:empty,\n.apexcharts-tooltip-text-z-value:empty {\n  display: none;\n}\n\n.apexcharts-tooltip-text-value,\n.apexcharts-tooltip-text-z-value {\n  font-weight: 600;\n}\n\n.apexcharts-tooltip-marker {\n  width: 12px;\n  height: 12px;\n  position: relative;\n  top: 0px;\n  margin-right: 10px;\n  border-radius: 50%;\n}\n\n.apexcharts-tooltip-series-group {\n  padding: 0 10px;\n  display: none;\n  text-align: left;\n  justify-content: left;\n  align-items: center;\n}\n\n.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker {\n  opacity: 1;\n}\n\n.apexcharts-tooltip-series-group.apexcharts-active,\n.apexcharts-tooltip-series-group:last-child {\n  padding-bottom: 4px;\n}\n\n.apexcharts-tooltip-series-group-hidden {\n  opacity: 0;\n  height: 0;\n  line-height: 0;\n  padding: 0 !important;\n}\n\n.apexcharts-tooltip-y-group {\n  padding: 6px 0 5px;\n}\n\n.apexcharts-tooltip-candlestick {\n  padding: 4px 8px;\n}\n\n.apexcharts-tooltip-candlestick>div {\n  margin: 4px 0;\n}\n\n.apexcharts-tooltip-candlestick span.value {\n  font-weight: bold;\n}\n\n.apexcharts-tooltip-rangebar {\n  padding: 5px 8px;\n}\n\n.apexcharts-tooltip-rangebar .category {\n  font-weight: 600;\n  color: #777;\n}\n\n.apexcharts-tooltip-rangebar .series-name {\n  font-weight: bold;\n  display: block;\n  margin-bottom: 5px;\n}\n\n.apexcharts-xaxistooltip {\n  opacity: 0;\n  padding: 9px 10px;\n  pointer-events: none;\n  color: #373d3f;\n  font-size: 13px;\n  text-align: center;\n  border-radius: 2px;\n  position: absolute;\n  z-index: 10;\n  background: #ECEFF1;\n  border: 1px solid #90A4AE;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-xaxistooltip.apexcharts-theme-dark {\n  background: rgba(0, 0, 0, 0.7);\n  border: 1px solid rgba(0, 0, 0, 0.5);\n  color: #fff;\n}\n\n.apexcharts-xaxistooltip:after,\n.apexcharts-xaxistooltip:before {\n  left: 50%;\n  border: solid transparent;\n  content: " ";\n  height: 0;\n  width: 0;\n  position: absolute;\n  pointer-events: none;\n}\n\n.apexcharts-xaxistooltip:after {\n  border-color: rgba(236, 239, 241, 0);\n  border-width: 6px;\n  margin-left: -6px;\n}\n\n.apexcharts-xaxistooltip:before {\n  border-color: rgba(144, 164, 174, 0);\n  border-width: 7px;\n  margin-left: -7px;\n}\n\n.apexcharts-xaxistooltip-bottom:after,\n.apexcharts-xaxistooltip-bottom:before {\n  bottom: 100%;\n}\n\n.apexcharts-xaxistooltip-top:after,\n.apexcharts-xaxistooltip-top:before {\n  top: 100%;\n}\n\n.apexcharts-xaxistooltip-bottom:after {\n  border-bottom-color: #ECEFF1;\n}\n\n.apexcharts-xaxistooltip-bottom:before {\n  border-bottom-color: #90A4AE;\n}\n\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after {\n  border-bottom-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before {\n  border-bottom-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-xaxistooltip-top:after {\n  border-top-color: #ECEFF1\n}\n\n.apexcharts-xaxistooltip-top:before {\n  border-top-color: #90A4AE;\n}\n\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after {\n  border-top-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before {\n  border-top-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-xaxistooltip.apexcharts-active {\n  opacity: 1;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-yaxistooltip {\n  opacity: 0;\n  padding: 4px 10px;\n  pointer-events: none;\n  color: #373d3f;\n  font-size: 13px;\n  text-align: center;\n  border-radius: 2px;\n  position: absolute;\n  z-index: 10;\n  background: #ECEFF1;\n  border: 1px solid #90A4AE;\n}\n\n.apexcharts-yaxistooltip.apexcharts-theme-dark {\n  background: rgba(0, 0, 0, 0.7);\n  border: 1px solid rgba(0, 0, 0, 0.5);\n  color: #fff;\n}\n\n.apexcharts-yaxistooltip:after,\n.apexcharts-yaxistooltip:before {\n  top: 50%;\n  border: solid transparent;\n  content: " ";\n  height: 0;\n  width: 0;\n  position: absolute;\n  pointer-events: none;\n}\n\n.apexcharts-yaxistooltip:after {\n  border-color: rgba(236, 239, 241, 0);\n  border-width: 6px;\n  margin-top: -6px;\n}\n\n.apexcharts-yaxistooltip:before {\n  border-color: rgba(144, 164, 174, 0);\n  border-width: 7px;\n  margin-top: -7px;\n}\n\n.apexcharts-yaxistooltip-left:after,\n.apexcharts-yaxistooltip-left:before {\n  left: 100%;\n}\n\n.apexcharts-yaxistooltip-right:after,\n.apexcharts-yaxistooltip-right:before {\n  right: 100%;\n}\n\n.apexcharts-yaxistooltip-left:after {\n  border-left-color: #ECEFF1;\n}\n\n.apexcharts-yaxistooltip-left:before {\n  border-left-color: #90A4AE;\n}\n\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after {\n  border-left-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before {\n  border-left-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-yaxistooltip-right:after {\n  border-right-color: #ECEFF1;\n}\n\n.apexcharts-yaxistooltip-right:before {\n  border-right-color: #90A4AE;\n}\n\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after {\n  border-right-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before {\n  border-right-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-yaxistooltip.apexcharts-active {\n  opacity: 1;\n}\n\n.apexcharts-yaxistooltip-hidden {\n  display: none;\n}\n\n.apexcharts-xcrosshairs,\n.apexcharts-ycrosshairs {\n  pointer-events: none;\n  opacity: 0;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-xcrosshairs.apexcharts-active,\n.apexcharts-ycrosshairs.apexcharts-active {\n  opacity: 1;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-ycrosshairs-hidden {\n  opacity: 0;\n}\n\n.apexcharts-selection-rect {\n  cursor: move;\n}\n\n.svg_select_boundingRect, .svg_select_points_rot {\n  pointer-events: none;\n  opacity: 0;\n  visibility: hidden;\n}\n.apexcharts-selection-rect + g .svg_select_boundingRect,\n.apexcharts-selection-rect + g .svg_select_points_rot {\n  opacity: 0;\n  visibility: hidden;\n}\n\n.apexcharts-selection-rect + g .svg_select_points_l,\n.apexcharts-selection-rect + g .svg_select_points_r {\n  cursor: ew-resize;\n  opacity: 1;\n  visibility: visible;\n}\n\n.svg_select_points {\n  fill: #efefef;\n  stroke: #333;\n  rx: 2;\n}\n\n.apexcharts-svg.apexcharts-zoomable.hovering-zoom {\n  cursor: crosshair\n}\n\n.apexcharts-svg.apexcharts-zoomable.hovering-pan {\n  cursor: move\n}\n\n.apexcharts-zoom-icon,\n.apexcharts-zoomin-icon,\n.apexcharts-zoomout-icon,\n.apexcharts-reset-icon,\n.apexcharts-pan-icon,\n.apexcharts-selection-icon,\n.apexcharts-menu-icon,\n.apexcharts-toolbar-custom-icon {\n  cursor: pointer;\n  width: 20px;\n  height: 20px;\n  line-height: 24px;\n  color: #6E8192;\n  text-align: center;\n}\n\n.apexcharts-zoom-icon svg,\n.apexcharts-zoomin-icon svg,\n.apexcharts-zoomout-icon svg,\n.apexcharts-reset-icon svg,\n.apexcharts-menu-icon svg {\n  fill: #6E8192;\n}\n\n.apexcharts-selection-icon svg {\n  fill: #444;\n  transform: scale(0.76)\n}\n\n.apexcharts-theme-dark .apexcharts-zoom-icon svg,\n.apexcharts-theme-dark .apexcharts-zoomin-icon svg,\n.apexcharts-theme-dark .apexcharts-zoomout-icon svg,\n.apexcharts-theme-dark .apexcharts-reset-icon svg,\n.apexcharts-theme-dark .apexcharts-pan-icon svg,\n.apexcharts-theme-dark .apexcharts-selection-icon svg,\n.apexcharts-theme-dark .apexcharts-menu-icon svg,\n.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg {\n  fill: #f3f4f5;\n}\n\n.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg,\n.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg,\n.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg {\n  fill: #008FFB;\n}\n\n.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg,\n.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg,\n.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg,\n.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg,\n.apexcharts-theme-light .apexcharts-reset-icon:hover svg,\n.apexcharts-theme-light .apexcharts-menu-icon:hover svg {\n  fill: #333;\n}\n\n.apexcharts-selection-icon,\n.apexcharts-menu-icon {\n  position: relative;\n}\n\n.apexcharts-reset-icon {\n  margin-left: 5px;\n}\n\n.apexcharts-zoom-icon,\n.apexcharts-reset-icon,\n.apexcharts-menu-icon {\n  transform: scale(0.85);\n}\n\n.apexcharts-zoomin-icon,\n.apexcharts-zoomout-icon {\n  transform: scale(0.7)\n}\n\n.apexcharts-zoomout-icon {\n  margin-right: 3px;\n}\n\n.apexcharts-pan-icon {\n  transform: scale(0.62);\n  position: relative;\n  left: 1px;\n  top: 0px;\n}\n\n.apexcharts-pan-icon svg {\n  fill: #fff;\n  stroke: #6E8192;\n  stroke-width: 2;\n}\n\n.apexcharts-pan-icon.apexcharts-selected svg {\n  stroke: #008FFB;\n}\n\n.apexcharts-pan-icon:not(.apexcharts-selected):hover svg {\n  stroke: #333;\n}\n\n.apexcharts-toolbar {\n  position: absolute;\n  z-index: 11;\n  max-width: 176px;\n  text-align: right;\n  border-radius: 3px;\n  padding: 0px 6px 2px 6px;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n}\n\n.apexcharts-menu {\n  background: #fff;\n  position: absolute;\n  top: 100%;\n  border: 1px solid #ddd;\n  border-radius: 3px;\n  padding: 3px;\n  right: 10px;\n  opacity: 0;\n  min-width: 110px;\n  transition: 0.15s ease all;\n  pointer-events: none;\n}\n\n.apexcharts-menu.apexcharts-menu-open {\n  opacity: 1;\n  pointer-events: all;\n  transition: 0.15s ease all;\n}\n\n.apexcharts-menu-item {\n  padding: 6px 7px;\n  font-size: 12px;\n  cursor: pointer;\n}\n\n.apexcharts-theme-light .apexcharts-menu-item:hover {\n  background: #eee;\n}\n\n.apexcharts-theme-dark .apexcharts-menu {\n  background: rgba(0, 0, 0, 0.7);\n  color: #fff;\n}\n\n@media screen and (min-width: 768px) {\n  .apexcharts-canvas:hover .apexcharts-toolbar {\n    opacity: 1;\n  }\n}\n\n.apexcharts-datalabel.apexcharts-element-hidden {\n  opacity: 0;\n}\n\n.apexcharts-pie-label,\n.apexcharts-datalabels,\n.apexcharts-datalabel,\n.apexcharts-datalabel-label,\n.apexcharts-datalabel-value {\n  cursor: default;\n  pointer-events: none;\n}\n\n.apexcharts-pie-label-delay {\n  opacity: 0;\n  animation-name: opaque;\n  animation-duration: 0.3s;\n  animation-fill-mode: forwards;\n  animation-timing-function: ease;\n}\n\n.apexcharts-canvas .apexcharts-element-hidden {\n  opacity: 0;\n}\n\n.apexcharts-hide .apexcharts-series-points {\n  opacity: 0;\n}\n\n.apexcharts-gridline,\n.apexcharts-annotation-rect,\n.apexcharts-tooltip .apexcharts-marker,\n.apexcharts-area-series .apexcharts-area,\n.apexcharts-line,\n.apexcharts-zoom-rect,\n.apexcharts-toolbar svg,\n.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,\n.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,\n.apexcharts-radar-series path,\n.apexcharts-radar-series polygon {\n  pointer-events: none;\n}\n\n\n/* markers */\n\n.apexcharts-marker {\n  transition: 0.15s ease all;\n}\n\n@keyframes opaque {\n  0% {\n    opacity: 0;\n  }\n  100% {\n    opacity: 1;\n  }\n}\n\n\n/* Resize generated styles */\n\n@keyframes resizeanim {\n  from {\n    opacity: 0;\n  }\n  to {\n    opacity: 0;\n  }\n}\n\n.resize-triggers {\n  animation: 1ms resizeanim;\n  visibility: hidden;\n  opacity: 0;\n}\n\n.resize-triggers,\n.resize-triggers>div,\n.contract-trigger:before {\n  content: " ";\n  display: block;\n  position: absolute;\n  top: 0;\n  left: 0;\n  height: 100%;\n  width: 100%;\n  overflow: hidden;\n}\n\n.resize-triggers>div {\n  background: #eee;\n  overflow: auto;\n}\n\n.contract-trigger:before {\n  width: 200%;\n  height: 200%;\n}'),
    function() {
        function t(t) {
            var e = t.__resizeTriggers__
              , i = e.firstElementChild
              , a = e.lastElementChild
              , s = i ? i.firstElementChild : null;
            a && (a.scrollLeft = a.scrollWidth,
            a.scrollTop = a.scrollHeight),
            s && (s.style.width = i.offsetWidth + 1 + "px",
            s.style.height = i.offsetHeight + 1 + "px"),
            i && (i.scrollLeft = i.scrollWidth,
            i.scrollTop = i.scrollHeight)
        }
        function e(e) {
            var i = this;
            t(this),
            this.__resizeRAF__ && r(this.__resizeRAF__),
            this.__resizeRAF__ = s((function() {
                (function(t) {
                    return t.offsetWidth != t.__resizeLast__.width || t.offsetHeight != t.__resizeLast__.height
                }
                )(i) && (i.__resizeLast__.width = i.offsetWidth,
                i.__resizeLast__.height = i.offsetHeight,
                i.__resizeListeners__.forEach((function(t) {
                    t.call(e)
                }
                )))
            }
            ))
        }
        var i, a, s = (i = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function(t) {
            return window.setTimeout(t, 20)
        }
        ,
        function(t) {
            return i(t)
        }
        ), r = (a = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.clearTimeout,
        function(t) {
            return a(t)
        }
        ), n = !1, o = "animationstart", l = "Webkit Moz O ms".split(" "), h = "webkitAnimationStart animationstart oAnimationStart MSAnimationStart".split(" "), c = document.createElement("fakeelement");
        if (void 0 !== c.style.animationName && (n = !0),
        !1 === n)
            for (var d = 0; d < l.length; d++)
                if (void 0 !== c.style[l[d] + "AnimationName"]) {
                    o = h[d];
                    break
                }
        window.addResizeListener = function(i, a) {
            i.__resizeTriggers__ || ("static" == getComputedStyle(i).position && (i.style.position = "relative"),
            i.__resizeLast__ = {},
            i.__resizeListeners__ = [],
            (i.__resizeTriggers__ = document.createElement("div")).className = "resize-triggers",
            i.__resizeTriggers__.innerHTML = '<div class="expand-trigger"><div></div></div><div class="contract-trigger"></div>',
            i.appendChild(i.__resizeTriggers__),
            t(i),
            i.addEventListener("scroll", e, !0),
            o && i.__resizeTriggers__.addEventListener(o, (function(e) {
                "resizeanim" == e.animationName && t(i)
            }
            ))),
            i.__resizeListeners__.push(a)
        }
        ,
        window.removeResizeListener = function(t, i) {
            t && (t.__resizeListeners__.splice(t.__resizeListeners__.indexOf(i), 1),
            t.__resizeListeners__.length || (t.removeEventListener("scroll", e),
            t.__resizeTriggers__.parentNode && (t.__resizeTriggers__ = !t.removeChild(t.__resizeTriggers__))))
        }
    }(),
    void 0 === window.Apex && (window.Apex = {});
    var Yt = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w
        }
        return a(t, [{
            key: "initModules",
            value: function() {
                this.ctx.publicMethods = ["updateOptions", "updateSeries", "appendData", "appendSeries", "toggleSeries", "showSeries", "hideSeries", "setLocale", "resetSeries", "zoomX", "toggleDataPointSelection", "dataURI", "addXaxisAnnotation", "addYaxisAnnotation", "addPointAnnotation", "clearAnnotations", "removeAnnotation", "paper", "destroy"],
                this.ctx.eventList = ["click", "mousedown", "mousemove", "touchstart", "touchmove", "mouseup", "touchend"],
                this.ctx.animations = new x(this.ctx),
                this.ctx.axes = new J(this.ctx),
                this.ctx.core = new Et(this.ctx.el,this.ctx),
                this.ctx.config = new D({}),
                this.ctx.data = new O(this.ctx),
                this.ctx.grid = new _(this.ctx),
                this.ctx.graphics = new b(this.ctx),
                this.ctx.coreUtils = new y(this.ctx),
                this.ctx.crosshairs = new Q(this.ctx),
                this.ctx.events = new Z(this.ctx),
                this.ctx.exports = new V(this.ctx),
                this.ctx.localization = new $(this.ctx),
                this.ctx.options = new S,
                this.ctx.responsive = new K(this.ctx),
                this.ctx.series = new M(this.ctx),
                this.ctx.theme = new tt(this.ctx),
                this.ctx.formatters = new W(this.ctx),
                this.ctx.titleSubtitle = new et(this.ctx),
                this.ctx.legend = new lt(this.ctx),
                this.ctx.toolbar = new ht(this.ctx),
                this.ctx.dimensions = new nt(this.ctx),
                this.ctx.updateHelpers = new Xt(this.ctx),
                this.ctx.zoomPanSelection = new ct(this.ctx),
                this.ctx.w.globals.tooltip = new bt(this.ctx)
            }
        }]),
        t
    }()
      , Ft = function() {
        function t(i) {
            e(this, t),
            this.ctx = i,
            this.w = i.w
        }
        return a(t, [{
            key: "clear",
            value: function(t) {
                var e = t.isUpdating;
                this.ctx.zoomPanSelection && this.ctx.zoomPanSelection.destroy(),
                this.ctx.toolbar && this.ctx.toolbar.destroy(),
                this.ctx.animations = null,
                this.ctx.axes = null,
                this.ctx.annotations = null,
                this.ctx.core = null,
                this.ctx.data = null,
                this.ctx.grid = null,
                this.ctx.series = null,
                this.ctx.responsive = null,
                this.ctx.theme = null,
                this.ctx.formatters = null,
                this.ctx.titleSubtitle = null,
                this.ctx.legend = null,
                this.ctx.dimensions = null,
                this.ctx.options = null,
                this.ctx.crosshairs = null,
                this.ctx.zoomPanSelection = null,
                this.ctx.updateHelpers = null,
                this.ctx.toolbar = null,
                this.ctx.localization = null,
                this.ctx.w.globals.tooltip = null,
                this.clearDomElements({
                    isUpdating: e
                })
            }
        }, {
            key: "killSVG",
            value: function(t) {
                t.each((function(t, e) {
                    this.removeClass("*"),
                    this.off(),
                    this.stop()
                }
                ), !0),
                t.ungroup(),
                t.clear()
            }
        }, {
            key: "clearDomElements",
            value: function(t) {
                var e = this
                  , i = t.isUpdating
                  , a = this.w.globals.dom.Paper.node;
                a.parentNode && a.parentNode.parentNode && !i && (a.parentNode.parentNode.style.minHeight = "unset");
                var s = this.w.globals.dom.baseEl;
                s && this.ctx.eventList.forEach((function(t) {
                    s.removeEventListener(t, e.ctx.events.documentEvent)
                }
                ));
                var r = this.w.globals.dom;
                if (null !== this.ctx.el)
                    for (; this.ctx.el.firstChild; )
                        this.ctx.el.removeChild(this.ctx.el.firstChild);
                this.killSVG(r.Paper),
                r.Paper.remove(),
                r.elWrap = null,
                r.elGraphical = null,
                r.elAnnotations = null,
                r.elLegendWrap = null,
                r.baseEl = null,
                r.elGridRect = null,
                r.elGridRectMask = null,
                r.elGridRectMarkerMask = null,
                r.elDefs = null
            }
        }]),
        t
    }();
    return function() {
        function t(i, a) {
            e(this, t),
            this.opts = a,
            this.ctx = this,
            this.w = new N(a).init(),
            this.el = i,
            this.w.globals.cuid = f.randomId(),
            this.w.globals.chartID = this.w.config.chart.id ? f.escapeString(this.w.config.chart.id) : this.w.globals.cuid,
            new Yt(this).initModules(),
            this.create = f.bind(this.create, this),
            this.windowResizeHandler = this._windowResizeHandler.bind(this)
        }
        return a(t, [{
            key: "render",
            value: function() {
                var t = this;
                return new Promise((function(e, i) {
                    if (null !== t.el) {
                        void 0 === Apex._chartInstances && (Apex._chartInstances = []),
                        t.w.config.chart.id && Apex._chartInstances.push({
                            id: t.w.globals.chartID,
                            group: t.w.config.chart.group,
                            chart: t
                        }),
                        t.setLocale(t.w.config.chart.defaultLocale);
                        var a = t.w.config.chart.events.beforeMount;
                        "function" == typeof a && a(t, t.w),
                        t.events.fireEvent("beforeMount", [t, t.w]),
                        window.addEventListener("resize", t.windowResizeHandler),
                        window.addResizeListener(t.el.parentNode, t._parentResizeCallback.bind(t));
                        var s = t.create(t.w.config.series, {});
                        if (!s)
                            return e(t);
                        t.mount(s).then((function() {
                            "function" == typeof t.w.config.chart.events.mounted && t.w.config.chart.events.mounted(t, t.w),
                            t.events.fireEvent("mounted", [t, t.w]),
                            e(s)
                        }
                        )).catch((function(t) {
                            i(t)
                        }
                        ))
                    } else
                        i(new Error("Element not found"))
                }
                ))
            }
        }, {
            key: "create",
            value: function(t, e) {
                var i = this.w;
                new Yt(this).initModules();
                var a = this.w.globals;
                (a.noData = !1,
                a.animationEnded = !1,
                this.responsive.checkResponsiveConfig(e),
                i.config.xaxis.convertedCatToNumeric) && new R(i.config).convertCatToNumericXaxis(i.config, this.ctx);
                if (null === this.el)
                    return a.animationEnded = !0,
                    null;
                if (this.core.setupElements(),
                "treemap" === i.config.chart.type && (i.config.grid.show = !1,
                i.config.yaxis[0].show = !1),
                0 === a.svgWidth)
                    return a.animationEnded = !0,
                    null;
                var s = y.checkComboSeries(t);
                a.comboCharts = s.comboCharts,
                a.comboBarCount = s.comboBarCount;
                var r = t.every((function(t) {
                    return t.data && 0 === t.data.length
                }
                ));
                (0 === t.length || r) && this.series.handleNoData(),
                this.events.setupEventHandlers(),
                this.data.parseData(t),
                this.theme.init(),
                new P(this).setGlobalMarkerSize(),
                this.formatters.setLabelFormatters(),
                this.titleSubtitle.draw(),
                a.noData && a.collapsedSeries.length !== a.series.length && !i.config.legend.showForSingleSeries || this.legend.init(),
                this.series.hasAllSeriesEqualX(),
                a.axisCharts && (this.core.coreCalculations(),
                "category" !== i.config.xaxis.type && this.formatters.setLabelFormatters()),
                this.formatters.heatmapLabelFormatters(),
                this.dimensions.plotCoords();
                var n = this.core.xySettings();
                this.grid.createGridMask();
                var o = this.core.plotChartType(t, n)
                  , l = new z(this);
                l.bringForward(),
                i.config.dataLabels.background.enabled && l.dataLabelsBackground(),
                this.core.shiftGraphPosition();
                var h = {
                    plot: {
                        left: i.globals.translateX,
                        top: i.globals.translateY,
                        width: i.globals.gridWidth,
                        height: i.globals.gridHeight
                    }
                };
                return {
                    elGraph: o,
                    xyRatios: n,
                    elInner: i.globals.dom.elGraphical,
                    dimensions: h
                }
            }
        }, {
            key: "mount",
            value: function() {
                var t = this
                  , e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null
                  , i = this
                  , a = i.w;
                return new Promise((function(s, r) {
                    if (null === i.el)
                        return r(new Error("Not enough data to display or target element not found"));
                    (null === e || a.globals.allSeriesCollapsed) && i.series.handleNoData(),
                    "treemap" !== a.config.chart.type && i.axes.drawAxis(a.config.chart.type, e.xyRatios),
                    i.grid = new _(i);
                    var n = i.grid.drawGrid();
                    i.annotations = new C(i),
                    i.annotations.drawImageAnnos(),
                    i.annotations.drawTextAnnos(),
                    "back" === a.config.grid.position && n && a.globals.dom.elGraphical.add(n.el);
                    var o = new G(t.ctx)
                      , l = new q(t.ctx);
                    if (null !== n && (o.xAxisLabelCorrections(n.xAxisTickWidth),
                    l.setYAxisTextAlignments()),
                    "back" === a.config.annotations.position && (a.globals.dom.Paper.add(a.globals.dom.elAnnotations),
                    i.annotations.drawAxesAnnotations()),
                    Array.isArray(e.elGraph))
                        for (var h = 0; h < e.elGraph.length; h++)
                            a.globals.dom.elGraphical.add(e.elGraph[h]);
                    else
                        a.globals.dom.elGraphical.add(e.elGraph);
                    if ("front" === a.config.grid.position && n && a.globals.dom.elGraphical.add(n.el),
                    "front" === a.config.xaxis.crosshairs.position && i.crosshairs.drawXCrosshairs(),
                    "front" === a.config.yaxis[0].crosshairs.position && i.crosshairs.drawYCrosshairs(),
                    "front" === a.config.annotations.position && (a.globals.dom.Paper.add(a.globals.dom.elAnnotations),
                    i.annotations.drawAxesAnnotations()),
                    !a.globals.noData) {
                        if (a.config.tooltip.enabled && !a.globals.noData && i.w.globals.tooltip.drawTooltip(e.xyRatios),
                        a.globals.axisCharts && (a.globals.isXNumeric || a.config.xaxis.convertedCatToNumeric))
                            (a.config.chart.zoom.enabled || a.config.chart.selection && a.config.chart.selection.enabled || a.config.chart.pan && a.config.chart.pan.enabled) && i.zoomPanSelection.init({
                                xyRatios: e.xyRatios
                            });
                        else {
                            var c = a.config.chart.toolbar.tools;
                            ["zoom", "zoomin", "zoomout", "selection", "pan", "reset"].forEach((function(t) {
                                c[t] = !1
                            }
                            ))
                        }
                        a.config.chart.toolbar.show && !a.globals.allSeriesCollapsed && i.toolbar.createToolbar()
                    }
                    a.globals.memory.methodsToExec.length > 0 && a.globals.memory.methodsToExec.forEach((function(t) {
                        t.method(t.params, !1, t.context)
                    }
                    )),
                    a.globals.axisCharts || a.globals.noData || i.core.resizeNonAxisCharts(),
                    s(i)
                }
                ))
            }
        }, {
            key: "destroy",
            value: function() {
                window.removeEventListener("resize", this.windowResizeHandler),
                window.removeResizeListener(this.el.parentNode, this._parentResizeCallback.bind(this));
                var t = this.w.config.chart.id;
                t && Apex._chartInstances.forEach((function(e, i) {
                    e.id === f.escapeString(t) && Apex._chartInstances.splice(i, 1)
                }
                )),
                new Ft(this.ctx).clear({
                    isUpdating: !1
                })
            }
        }, {
            key: "updateOptions",
            value: function(t) {
                var e = this
                  , i = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]
                  , a = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]
                  , s = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3]
                  , r = !(arguments.length > 4 && void 0 !== arguments[4]) || arguments[4]
                  , n = this.w;
                return n.globals.selection = void 0,
                t.series && (this.series.resetSeries(!1, !0, !1),
                t.series.length && t.series[0].data && (t.series = t.series.map((function(t, i) {
                    return e.updateHelpers._extendSeries(t, i)
                }
                ))),
                this.updateHelpers.revertDefaultAxisMinMax()),
                t.xaxis && (t = this.updateHelpers.forceXAxisUpdate(t)),
                t.yaxis && (t = this.updateHelpers.forceYAxisUpdate(t)),
                n.globals.collapsedSeriesIndices.length > 0 && this.series.clearPreviousPaths(),
                t.theme && (t = this.theme.updateThemeOptions(t)),
                this.updateHelpers._updateOptions(t, i, a, s, r)
            }
        }, {
            key: "updateSeries",
            value: function() {
                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []
                  , e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1]
                  , i = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2];
                return this.series.resetSeries(!1),
                this.updateHelpers.revertDefaultAxisMinMax(),
                this.updateHelpers._updateSeries(t, e, i)
            }
        }, {
            key: "appendSeries",
            value: function(t) {
                var e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1]
                  , i = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]
                  , a = this.w.config.series.slice();
                return a.push(t),
                this.series.resetSeries(!1),
                this.updateHelpers.revertDefaultAxisMinMax(),
                this.updateHelpers._updateSeries(a, e, i)
            }
        }, {
            key: "appendData",
            value: function(t) {
                var e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1]
                  , i = this;
                i.w.globals.dataChanged = !0,
                i.series.getPreviousPaths();
                for (var a = i.w.config.series.slice(), s = 0; s < a.length; s++)
                    if (null !== t[s] && void 0 !== t[s])
                        for (var r = 0; r < t[s].data.length; r++)
                            a[s].data.push(t[s].data[r]);
                return i.w.config.series = a,
                e && (i.w.globals.initialSeries = f.clone(i.w.config.series)),
                this.update()
            }
        }, {
            key: "update",
            value: function(t) {
                var e = this;
                return new Promise((function(i, a) {
                    new Ft(e.ctx).clear({
                        isUpdating: !0
                    });
                    var s = e.create(e.w.config.series, t);
                    if (!s)
                        return i(e);
                    e.mount(s).then((function() {
                        "function" == typeof e.w.config.chart.events.updated && e.w.config.chart.events.updated(e, e.w),
                        e.events.fireEvent("updated", [e, e.w]),
                        e.w.globals.isDirty = !0,
                        i(e)
                    }
                    )).catch((function(t) {
                        a(t)
                    }
                    ))
                }
                ))
            }
        }, {
            key: "getSyncedCharts",
            value: function() {
                var t = this.getGroupedCharts()
                  , e = [this];
                return t.length && (e = [],
                t.forEach((function(t) {
                    e.push(t)
                }
                ))),
                e
            }
        }, {
            key: "getGroupedCharts",
            value: function() {
                var t = this;
                return Apex._chartInstances.filter((function(t) {
                    if (t.group)
                        return !0
                }
                )).map((function(e) {
                    return t.w.config.chart.group === e.group ? e.chart : t
                }
                ))
            }
        }, {
            key: "toggleSeries",
            value: function(t) {
                return this.series.toggleSeries(t)
            }
        }, {
            key: "showSeries",
            value: function(t) {
                this.series.showSeries(t)
            }
        }, {
            key: "hideSeries",
            value: function(t) {
                this.series.hideSeries(t)
            }
        }, {
            key: "resetSeries",
            value: function() {
                var t = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0]
                  , e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];
                this.series.resetSeries(t, e)
            }
        }, {
            key: "addEventListener",
            value: function(t, e) {
                this.events.addEventListener(t, e)
            }
        }, {
            key: "removeEventListener",
            value: function(t, e) {
                this.events.removeEventListener(t, e)
            }
        }, {
            key: "addXaxisAnnotation",
            value: function(t) {
                var e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1]
                  , i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0
                  , a = this;
                i && (a = i),
                a.annotations.addXaxisAnnotationExternal(t, e, a)
            }
        }, {
            key: "addYaxisAnnotation",
            value: function(t) {
                var e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1]
                  , i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0
                  , a = this;
                i && (a = i),
                a.annotations.addYaxisAnnotationExternal(t, e, a)
            }
        }, {
            key: "addPointAnnotation",
            value: function(t) {
                var e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1]
                  , i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0
                  , a = this;
                i && (a = i),
                a.annotations.addPointAnnotationExternal(t, e, a)
            }
        }, {
            key: "clearAnnotations",
            value: function() {
                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0
                  , e = this;
                t && (e = t),
                e.annotations.clearAnnotations(e)
            }
        }, {
            key: "removeAnnotation",
            value: function(t) {
                var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : void 0
                  , i = this;
                e && (i = e),
                i.annotations.removeAnnotation(i, t)
            }
        }, {
            key: "getChartArea",
            value: function() {
                return this.w.globals.dom.baseEl.querySelector(".apexcharts-inner")
            }
        }, {
            key: "getSeriesTotalXRange",
            value: function(t, e) {
                return this.coreUtils.getSeriesTotalsXRange(t, e)
            }
        }, {
            key: "getHighestValueInSeries",
            value: function() {
                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0
                  , e = new U(this.ctx);
                return e.getMinYMaxY(t).highestY
            }
        }, {
            key: "getLowestValueInSeries",
            value: function() {
                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0
                  , e = new U(this.ctx);
                return e.getMinYMaxY(t).lowestY
            }
        }, {
            key: "getSeriesTotal",
            value: function() {
                return this.w.globals.seriesTotals
            }
        }, {
            key: "toggleDataPointSelection",
            value: function(t, e) {
                return this.updateHelpers.toggleDataPointSelection(t, e)
            }
        }, {
            key: "zoomX",
            value: function(t, e) {
                this.ctx.toolbar.zoomUpdateOptions(t, e)
            }
        }, {
            key: "setLocale",
            value: function(t) {
                this.localization.setCurrentLocaleValues(t)
            }
        }, {
            key: "dataURI",
            value: function() {
                return new V(this.ctx).dataURI()
            }
        }, {
            key: "paper",
            value: function() {
                return this.w.globals.dom.Paper
            }
        }, {
            key: "_parentResizeCallback",
            value: function() {
                !this.w.globals.noData && this.w.globals.animationEnded && this.w.config.chart.redrawOnParentResize && this._windowResize()
            }
        }, {
            key: "_windowResize",
            value: function() {
                var t = this;
                clearTimeout(this.w.globals.resizeTimer),
                this.w.globals.resizeTimer = window.setTimeout((function() {
                    t.w.globals.resized = !0,
                    t.w.globals.dataChanged = !1,
                    t.ctx.update()
                }
                ), 150)
            }
        }, {
            key: "_windowResizeHandler",
            value: function() {
                var t = this.w.config.chart.redrawOnWindowResize;
                "function" == typeof t && (t = t()),
                t && this._windowResize()
            }
        }], [{
            key: "getChartByID",
            value: function(t) {
                var e = f.escapeString(t)
                  , i = Apex._chartInstances.filter((function(t) {
                    return t.id === e
                }
                ))[0];
                return i && i.chart
            }
        }, {
            key: "initOnLoad",
            value: function() {
                for (var e = document.querySelectorAll("[data-apexcharts]"), i = 0; i < e.length; i++) {
                    new t(e[i],JSON.parse(e[i].getAttribute("data-options"))).render()
                }
            }
        }, {
            key: "exec",
            value: function(t, e) {
                var i = this.getChartByID(t);
                if (i) {
                    i.w.globals.isExecCalled = !0;
                    var a = null;
                    if (-1 !== i.publicMethods.indexOf(e)) {
                        for (var s = arguments.length, r = new Array(s > 2 ? s - 2 : 0), n = 2; n < s; n++)
                            r[n - 2] = arguments[n];
                        a = i[e].apply(i, r)
                    }
                    return a
                }
            }
        }, {
            key: "merge",
            value: function(t, e) {
                return f.extend(t, e)
            }
        }]),
        t
    }()
}
));
/*!
  * Bootstrap v5.2.0 (https://getbootstrap.com/)
  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
  */
!function(t, e) {
    "object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : (t = "undefined" != typeof globalThis ? globalThis : t || self).bootstrap = e()
}(this, (function() {
    "use strict";
    const t = "transitionend"
      , e = t => {
        let e = t.getAttribute("data-bs-target");
        if (!e || "#" === e) {
            let i = t.getAttribute("href");
            if (!i || !i.includes("#") && !i.startsWith("."))
                return null;
            i.includes("#") && !i.startsWith("#") && (i = `#${i.split("#")[1]}`),
            e = i && "#" !== i ? i.trim() : null
        }
        return e
    }
      , i = t => {
        const i = e(t);
        return i && document.querySelector(i) ? i : null
    }
      , n = t => {
        const i = e(t);
        return i ? document.querySelector(i) : null
    }
      , s = e => {
        e.dispatchEvent(new Event(t))
    }
      , o = t => !(!t || "object" != typeof t) && (void 0 !== t.jquery && (t = t[0]),
    void 0 !== t.nodeType)
      , r = t => o(t) ? t.jquery ? t[0] : t : "string" == typeof t && t.length > 0 ? document.querySelector(t) : null
      , a = t => {
        if (!o(t) || 0 === t.getClientRects().length)
            return !1;
        const e = "visible" === getComputedStyle(t).getPropertyValue("visibility")
          , i = t.closest("details:not([open])");
        if (!i)
            return e;
        if (i !== t) {
            const e = t.closest("summary");
            if (e && e.parentNode !== i)
                return !1;
            if (null === e)
                return !1
        }
        return e
    }
      , l = t => !t || t.nodeType !== Node.ELEMENT_NODE || !!t.classList.contains("disabled") || (void 0 !== t.disabled ? t.disabled : t.hasAttribute("disabled") && "false" !== t.getAttribute("disabled"))
      , c = t => {
        if (!document.documentElement.attachShadow)
            return null;
        if ("function" == typeof t.getRootNode) {
            const e = t.getRootNode();
            return e instanceof ShadowRoot ? e : null
        }
        return t instanceof ShadowRoot ? t : t.parentNode ? c(t.parentNode) : null
    }
      , h = () => {}
      , d = t => {
        t.offsetHeight
    }
      , u = () => window.jQuery && !document.body.hasAttribute("data-bs-no-jquery") ? window.jQuery : null
      , f = []
      , p = () => "rtl" === document.documentElement.dir
      , g = t => {
        var e;
        e = () => {
            const e = u();
            if (e) {
                const i = t.NAME
                  , n = e.fn[i];
                e.fn[i] = t.jQueryInterface,
                e.fn[i].Constructor = t,
                e.fn[i].noConflict = () => (e.fn[i] = n,
                t.jQueryInterface)
            }
        }
        ,
        "loading" === document.readyState ? (f.length || document.addEventListener("DOMContentLoaded", ( () => {
            for (const t of f)
                t()
        }
        )),
        f.push(e)) : e()
    }
      , m = t => {
        "function" == typeof t && t()
    }
      , _ = (e, i, n=!0) => {
        if (!n)
            return void m(e);
        const o = (t => {
            if (!t)
                return 0;
            let {transitionDuration: e, transitionDelay: i} = window.getComputedStyle(t);
            const n = Number.parseFloat(e)
              , s = Number.parseFloat(i);
            return n || s ? (e = e.split(",")[0],
            i = i.split(",")[0],
            1e3 * (Number.parseFloat(e) + Number.parseFloat(i))) : 0
        }
        )(i) + 5;
        let r = !1;
        const a = ({target: n}) => {
            n === i && (r = !0,
            i.removeEventListener(t, a),
            m(e))
        }
        ;
        i.addEventListener(t, a),
        setTimeout(( () => {
            r || s(i)
        }
        ), o)
    }
      , b = (t, e, i, n) => {
        const s = t.length;
        let o = t.indexOf(e);
        return -1 === o ? !i && n ? t[s - 1] : t[0] : (o += i ? 1 : -1,
        n && (o = (o + s) % s),
        t[Math.max(0, Math.min(o, s - 1))])
    }
      , v = /[^.]*(?=\..*)\.|.*/
      , y = /\..*/
      , w = /::\d+$/
      , A = {};
    let E = 1;
    const T = {
        mouseenter: "mouseover",
        mouseleave: "mouseout"
    }
      , C = new Set(["click", "dblclick", "mouseup", "mousedown", "contextmenu", "mousewheel", "DOMMouseScroll", "mouseover", "mouseout", "mousemove", "selectstart", "selectend", "keydown", "keypress", "keyup", "orientationchange", "touchstart", "touchmove", "touchend", "touchcancel", "pointerdown", "pointermove", "pointerup", "pointerleave", "pointercancel", "gesturestart", "gesturechange", "gestureend", "focus", "blur", "change", "reset", "select", "submit", "focusin", "focusout", "load", "unload", "beforeunload", "resize", "move", "DOMContentLoaded", "readystatechange", "error", "abort", "scroll"]);
    function O(t, e) {
        return e && `${e}::${E++}` || t.uidEvent || E++
    }
    function x(t) {
        const e = O(t);
        return t.uidEvent = e,
        A[e] = A[e] || {},
        A[e]
    }
    function k(t, e, i=null) {
        return Object.values(t).find((t => t.callable === e && t.delegationSelector === i))
    }
    function L(t, e, i) {
        const n = "string" == typeof e
          , s = n ? i : e || i;
        let o = N(t);
        return C.has(o) || (o = t),
        [n, s, o]
    }
    function D(t, e, i, n, s) {
        if ("string" != typeof e || !t)
            return;
        let[o,r,a] = L(e, i, n);
        if (e in T) {
            const t = t => function(e) {
                if (!e.relatedTarget || e.relatedTarget !== e.delegateTarget && !e.delegateTarget.contains(e.relatedTarget))
                    return t.call(this, e)
            }
            ;
            r = t(r)
        }
        const l = x(t)
          , c = l[a] || (l[a] = {})
          , h = k(c, r, o ? i : null);
        if (h)
            return void (h.oneOff = h.oneOff && s);
        const d = O(r, e.replace(v, ""))
          , u = o ? function(t, e, i) {
            return function n(s) {
                const o = t.querySelectorAll(e);
                for (let {target: r} = s; r && r !== this; r = r.parentNode)
                    for (const a of o)
                        if (a === r)
                            return j(s, {
                                delegateTarget: r
                            }),
                            n.oneOff && P.off(t, s.type, e, i),
                            i.apply(r, [s])
            }
        }(t, i, r) : function(t, e) {
            return function i(n) {
                return j(n, {
                    delegateTarget: t
                }),
                i.oneOff && P.off(t, n.type, e),
                e.apply(t, [n])
            }
        }(t, r);
        u.delegationSelector = o ? i : null,
        u.callable = r,
        u.oneOff = s,
        u.uidEvent = d,
        c[d] = u,
        t.addEventListener(a, u, o)
    }
    function S(t, e, i, n, s) {
        const o = k(e[i], n, s);
        o && (t.removeEventListener(i, o, Boolean(s)),
        delete e[i][o.uidEvent])
    }
    function I(t, e, i, n) {
        const s = e[i] || {};
        for (const o of Object.keys(s))
            if (o.includes(n)) {
                const n = s[o];
                S(t, e, i, n.callable, n.delegationSelector)
            }
    }
    function N(t) {
        return t = t.replace(y, ""),
        T[t] || t
    }
    const P = {
        on(t, e, i, n) {
            D(t, e, i, n, !1)
        },
        one(t, e, i, n) {
            D(t, e, i, n, !0)
        },
        off(t, e, i, n) {
            if ("string" != typeof e || !t)
                return;
            const [s,o,r] = L(e, i, n)
              , a = r !== e
              , l = x(t)
              , c = l[r] || {}
              , h = e.startsWith(".");
            if (void 0 === o) {
                if (h)
                    for (const i of Object.keys(l))
                        I(t, l, i, e.slice(1));
                for (const i of Object.keys(c)) {
                    const n = i.replace(w, "");
                    if (!a || e.includes(n)) {
                        const e = c[i];
                        S(t, l, r, e.callable, e.delegationSelector)
                    }
                }
            } else {
                if (!Object.keys(c).length)
                    return;
                S(t, l, r, o, s ? i : null)
            }
        },
        trigger(t, e, i) {
            if ("string" != typeof e || !t)
                return null;
            const n = u();
            let s = null
              , o = !0
              , r = !0
              , a = !1;
            e !== N(e) && n && (s = n.Event(e, i),
            n(t).trigger(s),
            o = !s.isPropagationStopped(),
            r = !s.isImmediatePropagationStopped(),
            a = s.isDefaultPrevented());
            let l = new Event(e,{
                bubbles: o,
                cancelable: !0
            });
            return l = j(l, i),
            a && l.preventDefault(),
            r && t.dispatchEvent(l),
            l.defaultPrevented && s && s.preventDefault(),
            l
        }
    };
    function j(t, e) {
        for (const [i,n] of Object.entries(e || {}))
            try {
                t[i] = n
            } catch (e) {
                Object.defineProperty(t, i, {
                    configurable: !0,
                    get: () => n
                })
            }
        return t
    }
    const M = new Map
      , H = {
        set(t, e, i) {
            M.has(t) || M.set(t, new Map);
            const n = M.get(t);
            n.has(e) || 0 === n.size ? n.set(e, i) : console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)
        },
        get: (t, e) => M.has(t) && M.get(t).get(e) || null,
        remove(t, e) {
            if (!M.has(t))
                return;
            const i = M.get(t);
            i.delete(e),
            0 === i.size && M.delete(t)
        }
    };
    function $(t) {
        if ("true" === t)
            return !0;
        if ("false" === t)
            return !1;
        if (t === Number(t).toString())
            return Number(t);
        if ("" === t || "null" === t)
            return null;
        if ("string" != typeof t)
            return t;
        try {
            return JSON.parse(decodeURIComponent(t))
        } catch (e) {
            return t
        }
    }
    function W(t) {
        return t.replace(/[A-Z]/g, (t => `-${t.toLowerCase()}`))
    }
    const B = {
        setDataAttribute(t, e, i) {
            t.setAttribute(`data-bs-${W(e)}`, i)
        },
        removeDataAttribute(t, e) {
            t.removeAttribute(`data-bs-${W(e)}`)
        },
        getDataAttributes(t) {
            if (!t)
                return {};
            const e = {}
              , i = Object.keys(t.dataset).filter((t => t.startsWith("bs") && !t.startsWith("bsConfig")));
            for (const n of i) {
                let i = n.replace(/^bs/, "");
                i = i.charAt(0).toLowerCase() + i.slice(1, i.length),
                e[i] = $(t.dataset[n])
            }
            return e
        },
        getDataAttribute: (t, e) => $(t.getAttribute(`data-bs-${W(e)}`))
    };
    class F {
        static get Default() {
            return {}
        }
        static get DefaultType() {
            return {}
        }
        static get NAME() {
            throw new Error('You have to implement the static method "NAME", for each component!')
        }
        _getConfig(t) {
            return t = this._mergeConfigObj(t),
            t = this._configAfterMerge(t),
            this._typeCheckConfig(t),
            t
        }
        _configAfterMerge(t) {
            return t
        }
        _mergeConfigObj(t, e) {
            const i = o(e) ? B.getDataAttribute(e, "config") : {};
            return {
                ...this.constructor.Default,
                ..."object" == typeof i ? i : {},
                ...o(e) ? B.getDataAttributes(e) : {},
                ..."object" == typeof t ? t : {}
            }
        }
        _typeCheckConfig(t, e=this.constructor.DefaultType) {
            for (const n of Object.keys(e)) {
                const s = e[n]
                  , r = t[n]
                  , a = o(r) ? "element" : null == (i = r) ? `${i}` : Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();
                if (!new RegExp(s).test(a))
                    throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${a}" but expected type "${s}".`)
            }
            var i
        }
    }
    class z extends F {
        constructor(t, e) {
            super(),
            (t = r(t)) && (this._element = t,
            this._config = this._getConfig(e),
            H.set(this._element, this.constructor.DATA_KEY, this))
        }
        dispose() {
            H.remove(this._element, this.constructor.DATA_KEY),
            P.off(this._element, this.constructor.EVENT_KEY);
            for (const t of Object.getOwnPropertyNames(this))
                this[t] = null
        }
        _queueCallback(t, e, i=!0) {
            _(t, e, i)
        }
        _getConfig(t) {
            return t = this._mergeConfigObj(t, this._element),
            t = this._configAfterMerge(t),
            this._typeCheckConfig(t),
            t
        }
        static getInstance(t) {
            return H.get(r(t), this.DATA_KEY)
        }
        static getOrCreateInstance(t, e={}) {
            return this.getInstance(t) || new this(t,"object" == typeof e ? e : null)
        }
        static get VERSION() {
            return "5.2.0"
        }
        static get DATA_KEY() {
            return `bs.${this.NAME}`
        }
        static get EVENT_KEY() {
            return `.${this.DATA_KEY}`
        }
        static eventName(t) {
            return `${t}${this.EVENT_KEY}`
        }
    }
    const R = (t, e="hide") => {
        const i = `click.dismiss${t.EVENT_KEY}`
          , s = t.NAME;
        P.on(document, i, `[data-bs-dismiss="${s}"]`, (function(i) {
            if (["A", "AREA"].includes(this.tagName) && i.preventDefault(),
            l(this))
                return;
            const o = n(this) || this.closest(`.${s}`);
            t.getOrCreateInstance(o)[e]()
        }
        ))
    }
    ;
    class q extends z {
        static get NAME() {
            return "alert"
        }
        close() {
            if (P.trigger(this._element, "close.bs.alert").defaultPrevented)
                return;
            this._element.classList.remove("show");
            const t = this._element.classList.contains("fade");
            this._queueCallback(( () => this._destroyElement()), this._element, t)
        }
        _destroyElement() {
            this._element.remove(),
            P.trigger(this._element, "closed.bs.alert"),
            this.dispose()
        }
        static jQueryInterface(t) {
            return this.each((function() {
                const e = q.getOrCreateInstance(this);
                if ("string" == typeof t) {
                    if (void 0 === e[t] || t.startsWith("_") || "constructor" === t)
                        throw new TypeError(`No method named "${t}"`);
                    e[t](this)
                }
            }
            ))
        }
    }
    R(q, "close"),
    g(q);
    const V = '[data-bs-toggle="button"]';
    class K extends z {
        static get NAME() {
            return "button"
        }
        toggle() {
            this._element.setAttribute("aria-pressed", this._element.classList.toggle("active"))
        }
        static jQueryInterface(t) {
            return this.each((function() {
                const e = K.getOrCreateInstance(this);
                "toggle" === t && e[t]()
            }
            ))
        }
    }
    P.on(document, "click.bs.button.data-api", V, (t => {
        t.preventDefault();
        const e = t.target.closest(V);
        K.getOrCreateInstance(e).toggle()
    }
    )),
    g(K);
    const Q = {
        find: (t, e=document.documentElement) => [].concat(...Element.prototype.querySelectorAll.call(e, t)),
        findOne: (t, e=document.documentElement) => Element.prototype.querySelector.call(e, t),
        children: (t, e) => [].concat(...t.children).filter((t => t.matches(e))),
        parents(t, e) {
            const i = [];
            let n = t.parentNode.closest(e);
            for (; n; )
                i.push(n),
                n = n.parentNode.closest(e);
            return i
        },
        prev(t, e) {
            let i = t.previousElementSibling;
            for (; i; ) {
                if (i.matches(e))
                    return [i];
                i = i.previousElementSibling
            }
            return []
        },
        next(t, e) {
            let i = t.nextElementSibling;
            for (; i; ) {
                if (i.matches(e))
                    return [i];
                i = i.nextElementSibling
            }
            return []
        },
        focusableChildren(t) {
            const e = ["a", "button", "input", "textarea", "select", "details", "[tabindex]", '[contenteditable="true"]'].map((t => `${t}:not([tabindex^="-"])`)).join(",");
            return this.find(e, t).filter((t => !l(t) && a(t)))
        }
    }
      , X = {
        endCallback: null,
        leftCallback: null,
        rightCallback: null
    }
      , Y = {
        endCallback: "(function|null)",
        leftCallback: "(function|null)",
        rightCallback: "(function|null)"
    };
    class U extends F {
        constructor(t, e) {
            super(),
            this._element = t,
            t && U.isSupported() && (this._config = this._getConfig(e),
            this._deltaX = 0,
            this._supportPointerEvents = Boolean(window.PointerEvent),
            this._initEvents())
        }
        static get Default() {
            return X
        }
        static get DefaultType() {
            return Y
        }
        static get NAME() {
            return "swipe"
        }
        dispose() {
            P.off(this._element, ".bs.swipe")
        }
        _start(t) {
            this._supportPointerEvents ? this._eventIsPointerPenTouch(t) && (this._deltaX = t.clientX) : this._deltaX = t.touches[0].clientX
        }
        _end(t) {
            this._eventIsPointerPenTouch(t) && (this._deltaX = t.clientX - this._deltaX),
            this._handleSwipe(),
            m(this._config.endCallback)
        }
        _move(t) {
            this._deltaX = t.touches && t.touches.length > 1 ? 0 : t.touches[0].clientX - this._deltaX
        }
        _handleSwipe() {
            const t = Math.abs(this._deltaX);
            if (t <= 40)
                return;
            const e = t / this._deltaX;
            this._deltaX = 0,
            e && m(e > 0 ? this._config.rightCallback : this._config.leftCallback)
        }
        _initEvents() {
            this._supportPointerEvents ? (P.on(this._element, "pointerdown.bs.swipe", (t => this._start(t))),
            P.on(this._element, "pointerup.bs.swipe", (t => this._end(t))),
            this._element.classList.add("pointer-event")) : (P.on(this._element, "touchstart.bs.swipe", (t => this._start(t))),
            P.on(this._element, "touchmove.bs.swipe", (t => this._move(t))),
            P.on(this._element, "touchend.bs.swipe", (t => this._end(t))))
        }
        _eventIsPointerPenTouch(t) {
            return this._supportPointerEvents && ("pen" === t.pointerType || "touch" === t.pointerType)
        }
        static isSupported() {
            return "ontouchstart"in document.documentElement || navigator.maxTouchPoints > 0
        }
    }
    const G = "next"
      , J = "prev"
      , Z = "left"
      , tt = "right"
      , et = "slid.bs.carousel"
      , it = "carousel"
      , nt = "active"
      , st = {
        ArrowLeft: tt,
        ArrowRight: Z
    }
      , ot = {
        interval: 5e3,
        keyboard: !0,
        pause: "hover",
        ride: !1,
        touch: !0,
        wrap: !0
    }
      , rt = {
        interval: "(number|boolean)",
        keyboard: "boolean",
        pause: "(string|boolean)",
        ride: "(boolean|string)",
        touch: "boolean",
        wrap: "boolean"
    };
    class at extends z {
        constructor(t, e) {
            super(t, e),
            this._interval = null,
            this._activeElement = null,
            this._isSliding = !1,
            this.touchTimeout = null,
            this._swipeHelper = null,
            this._indicatorsElement = Q.findOne(".carousel-indicators", this._element),
            this._addEventListeners(),
            this._config.ride === it && this.cycle()
        }
        static get Default() {
            return ot
        }
        static get DefaultType() {
            return rt
        }
        static get NAME() {
            return "carousel"
        }
        next() {
            this._slide(G)
        }
        nextWhenVisible() {
            !document.hidden && a(this._element) && this.next()
        }
        prev() {
            this._slide(J)
        }
        pause() {
            this._isSliding && s(this._element),
            this._clearInterval()
        }
        cycle() {
            this._clearInterval(),
            this._updateInterval(),
            this._interval = setInterval(( () => this.nextWhenVisible()), this._config.interval)
        }
        _maybeEnableCycle() {
            this._config.ride && (this._isSliding ? P.one(this._element, et, ( () => this.cycle())) : this.cycle())
        }
        to(t) {
            const e = this._getItems();
            if (t > e.length - 1 || t < 0)
                return;
            if (this._isSliding)
                return void P.one(this._element, et, ( () => this.to(t)));
            const i = this._getItemIndex(this._getActive());
            if (i === t)
                return;
            const n = t > i ? G : J;
            this._slide(n, e[t])
        }
        dispose() {
            this._swipeHelper && this._swipeHelper.dispose(),
            super.dispose()
        }
        _configAfterMerge(t) {
            return t.defaultInterval = t.interval,
            t
        }
        _addEventListeners() {
            this._config.keyboard && P.on(this._element, "keydown.bs.carousel", (t => this._keydown(t))),
            "hover" === this._config.pause && (P.on(this._element, "mouseenter.bs.carousel", ( () => this.pause())),
            P.on(this._element, "mouseleave.bs.carousel", ( () => this._maybeEnableCycle()))),
            this._config.touch && U.isSupported() && this._addTouchEventListeners()
        }
        _addTouchEventListeners() {
            for (const t of Q.find(".carousel-item img", this._element))
                P.on(t, "dragstart.bs.carousel", (t => t.preventDefault()));
            const t = {
                leftCallback: () => this._slide(this._directionToOrder(Z)),
                rightCallback: () => this._slide(this._directionToOrder(tt)),
                endCallback: () => {
                    "hover" === this._config.pause && (this.pause(),
                    this.touchTimeout && clearTimeout(this.touchTimeout),
                    this.touchTimeout = setTimeout(( () => this._maybeEnableCycle()), 500 + this._config.interval))
                }
            };
            this._swipeHelper = new U(this._element,t)
        }
        _keydown(t) {
            if (/input|textarea/i.test(t.target.tagName))
                return;
            const e = st[t.key];
            e && (t.preventDefault(),
            this._slide(this._directionToOrder(e)))
        }
        _getItemIndex(t) {
            return this._getItems().indexOf(t)
        }
        _setActiveIndicatorElement(t) {
            if (!this._indicatorsElement)
                return;
            const e = Q.findOne(".active", this._indicatorsElement);
            e.classList.remove(nt),
            e.removeAttribute("aria-current");
            const i = Q.findOne(`[data-bs-slide-to="${t}"]`, this._indicatorsElement);
            i && (i.classList.add(nt),
            i.setAttribute("aria-current", "true"))
        }
        _updateInterval() {
            const t = this._activeElement || this._getActive();
            if (!t)
                return;
            const e = Number.parseInt(t.getAttribute("data-bs-interval"), 10);
            this._config.interval = e || this._config.defaultInterval
        }
        _slide(t, e=null) {
            if (this._isSliding)
                return;
            const i = this._getActive()
              , n = t === G
              , s = e || b(this._getItems(), i, n, this._config.wrap);
            if (s === i)
                return;
            const o = this._getItemIndex(s)
              , r = e => P.trigger(this._element, e, {
                relatedTarget: s,
                direction: this._orderToDirection(t),
                from: this._getItemIndex(i),
                to: o
            });
            if (r("slide.bs.carousel").defaultPrevented)
                return;
            if (!i || !s)
                return;
            const a = Boolean(this._interval);
            this.pause(),
            this._isSliding = !0,
            this._setActiveIndicatorElement(o),
            this._activeElement = s;
            const l = n ? "carousel-item-start" : "carousel-item-end"
              , c = n ? "carousel-item-next" : "carousel-item-prev";
            s.classList.add(c),
            d(s),
            i.classList.add(l),
            s.classList.add(l),
            this._queueCallback(( () => {
                s.classList.remove(l, c),
                s.classList.add(nt),
                i.classList.remove(nt, c, l),
                this._isSliding = !1,
                r(et)
            }
            ), i, this._isAnimated()),
            a && this.cycle()
        }
        _isAnimated() {
            return this._element.classList.contains("slide")
        }
        _getActive() {
            return Q.findOne(".active.carousel-item", this._element)
        }
        _getItems() {
            return Q.find(".carousel-item", this._element)
        }
        _clearInterval() {
            this._interval && (clearInterval(this._interval),
            this._interval = null)
        }
        _directionToOrder(t) {
            return p() ? t === Z ? J : G : t === Z ? G : J
        }
        _orderToDirection(t) {
            return p() ? t === J ? Z : tt : t === J ? tt : Z
        }
        static jQueryInterface(t) {
            return this.each((function() {
                const e = at.getOrCreateInstance(this, t);
                if ("number" != typeof t) {
                    if ("string" == typeof t) {
                        if (void 0 === e[t] || t.startsWith("_") || "constructor" === t)
                            throw new TypeError(`No method named "${t}"`);
                        e[t]()
                    }
                } else
                    e.to(t)
            }
            ))
        }
    }
    P.on(document, "click.bs.carousel.data-api", "[data-bs-slide], [data-bs-slide-to]", (function(t) {
        const e = n(this);
        if (!e || !e.classList.contains(it))
            return;
        t.preventDefault();
        const i = at.getOrCreateInstance(e)
          , s = this.getAttribute("data-bs-slide-to");
        return s ? (i.to(s),
        void i._maybeEnableCycle()) : "next" === B.getDataAttribute(this, "slide") ? (i.next(),
        void i._maybeEnableCycle()) : (i.prev(),
        void i._maybeEnableCycle())
    }
    )),
    P.on(window, "load.bs.carousel.data-api", ( () => {
        const t = Q.find('[data-bs-ride="carousel"]');
        for (const e of t)
            at.getOrCreateInstance(e)
    }
    )),
    g(at);
    const lt = "show"
      , ct = "collapse"
      , ht = "collapsing"
      , dt = '[data-bs-toggle="collapse"]'
      , ut = {
        parent: null,
        toggle: !0
    }
      , ft = {
        parent: "(null|element)",
        toggle: "boolean"
    };
    class pt extends z {
        constructor(t, e) {
            super(t, e),
            this._isTransitioning = !1,
            this._triggerArray = [];
            const n = Q.find(dt);
            for (const t of n) {
                const e = i(t)
                  , n = Q.find(e).filter((t => t === this._element));
                null !== e && n.length && this._triggerArray.push(t)
            }
            this._initializeChildren(),
            this._config.parent || this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()),
            this._config.toggle && this.toggle()
        }
        static get Default() {
            return ut
        }
        static get DefaultType() {
            return ft
        }
        static get NAME() {
            return "collapse"
        }
        toggle() {
            this._isShown() ? this.hide() : this.show()
        }
        show() {
            if (this._isTransitioning || this._isShown())
                return;
            let t = [];
            if (this._config.parent && (t = this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t => t !== this._element)).map((t => pt.getOrCreateInstance(t, {
                toggle: !1
            })))),
            t.length && t[0]._isTransitioning)
                return;
            if (P.trigger(this._element, "show.bs.collapse").defaultPrevented)
                return;
            for (const e of t)
                e.hide();
            const e = this._getDimension();
            this._element.classList.remove(ct),
            this._element.classList.add(ht),
            this._element.style[e] = 0,
            this._addAriaAndCollapsedClass(this._triggerArray, !0),
            this._isTransitioning = !0;
            const i = `scroll${e[0].toUpperCase() + e.slice(1)}`;
            this._queueCallback(( () => {
                this._isTransitioning = !1,
                this._element.classList.remove(ht),
                this._element.classList.add(ct, lt),
                this._element.style[e] = "",
                P.trigger(this._element, "shown.bs.collapse")
            }
            ), this._element, !0),
            this._element.style[e] = `${this._element[i]}px`
        }
        hide() {
            if (this._isTransitioning || !this._isShown())
                return;
            if (P.trigger(this._element, "hide.bs.collapse").defaultPrevented)
                return;
            const t = this._getDimension();
            this._element.style[t] = `${this._element.getBoundingClientRect()[t]}px`,
            d(this._element),
            this._element.classList.add(ht),
            this._element.classList.remove(ct, lt);
            for (const t of this._triggerArray) {
                const e = n(t);
                e && !this._isShown(e) && this._addAriaAndCollapsedClass([t], !1)
            }
            this._isTransitioning = !0,
            this._element.style[t] = "",
            this._queueCallback(( () => {
                this._isTransitioning = !1,
                this._element.classList.remove(ht),
                this._element.classList.add(ct),
                P.trigger(this._element, "hidden.bs.collapse")
            }
            ), this._element, !0)
        }
        _isShown(t=this._element) {
            return t.classList.contains(lt)
        }
        _configAfterMerge(t) {
            return t.toggle = Boolean(t.toggle),
            t.parent = r(t.parent),
            t
        }
        _getDimension() {
            return this._element.classList.contains("collapse-horizontal") ? "width" : "height"
        }
        _initializeChildren() {
            if (!this._config.parent)
                return;
            const t = this._getFirstLevelChildren(dt);
            for (const e of t) {
                const t = n(e);
                t && this._addAriaAndCollapsedClass([e], this._isShown(t))
            }
        }
        _getFirstLevelChildren(t) {
            const e = Q.find(":scope .collapse .collapse", this._config.parent);
            return Q.find(t, this._config.parent).filter((t => !e.includes(t)))
        }
        _addAriaAndCollapsedClass(t, e) {
            if (t.length)
                for (const i of t)
                    i.classList.toggle("collapsed", !e),
                    i.setAttribute("aria-expanded", e)
        }
        static jQueryInterface(t) {
            const e = {};
            return "string" == typeof t && /show|hide/.test(t) && (e.toggle = !1),
            this.each((function() {
                const i = pt.getOrCreateInstance(this, e);
                if ("string" == typeof t) {
                    if (void 0 === i[t])
                        throw new TypeError(`No method named "${t}"`);
                    i[t]()
                }
            }
            ))
        }
    }
    P.on(document, "click.bs.collapse.data-api", dt, (function(t) {
        ("A" === t.target.tagName || t.delegateTarget && "A" === t.delegateTarget.tagName) && t.preventDefault();
        const e = i(this)
          , n = Q.find(e);
        for (const t of n)
            pt.getOrCreateInstance(t, {
                toggle: !1
            }).toggle()
    }
    )),
    g(pt);
    var gt = "top"
      , mt = "bottom"
      , _t = "right"
      , bt = "left"
      , vt = "auto"
      , yt = [gt, mt, _t, bt]
      , wt = "start"
      , At = "end"
      , Et = "clippingParents"
      , Tt = "viewport"
      , Ct = "popper"
      , Ot = "reference"
      , xt = yt.reduce((function(t, e) {
        return t.concat([e + "-" + wt, e + "-" + At])
    }
    ), [])
      , kt = [].concat(yt, [vt]).reduce((function(t, e) {
        return t.concat([e, e + "-" + wt, e + "-" + At])
    }
    ), [])
      , Lt = "beforeRead"
      , Dt = "read"
      , St = "afterRead"
      , It = "beforeMain"
      , Nt = "main"
      , Pt = "afterMain"
      , jt = "beforeWrite"
      , Mt = "write"
      , Ht = "afterWrite"
      , $t = [Lt, Dt, St, It, Nt, Pt, jt, Mt, Ht];
    function Wt(t) {
        return t ? (t.nodeName || "").toLowerCase() : null
    }
    function Bt(t) {
        if (null == t)
            return window;
        if ("[object Window]" !== t.toString()) {
            var e = t.ownerDocument;
            return e && e.defaultView || window
        }
        return t
    }
    function Ft(t) {
        return t instanceof Bt(t).Element || t instanceof Element
    }
    function zt(t) {
        return t instanceof Bt(t).HTMLElement || t instanceof HTMLElement
    }
    function Rt(t) {
        return "undefined" != typeof ShadowRoot && (t instanceof Bt(t).ShadowRoot || t instanceof ShadowRoot)
    }
    const qt = {
        name: "applyStyles",
        enabled: !0,
        phase: "write",
        fn: function(t) {
            var e = t.state;
            Object.keys(e.elements).forEach((function(t) {
                var i = e.styles[t] || {}
                  , n = e.attributes[t] || {}
                  , s = e.elements[t];
                zt(s) && Wt(s) && (Object.assign(s.style, i),
                Object.keys(n).forEach((function(t) {
                    var e = n[t];
                    !1 === e ? s.removeAttribute(t) : s.setAttribute(t, !0 === e ? "" : e)
                }
                )))
            }
            ))
        },
        effect: function(t) {
            var e = t.state
              , i = {
                popper: {
                    position: e.options.strategy,
                    left: "0",
                    top: "0",
                    margin: "0"
                },
                arrow: {
                    position: "absolute"
                },
                reference: {}
            };
            return Object.assign(e.elements.popper.style, i.popper),
            e.styles = i,
            e.elements.arrow && Object.assign(e.elements.arrow.style, i.arrow),
            function() {
                Object.keys(e.elements).forEach((function(t) {
                    var n = e.elements[t]
                      , s = e.attributes[t] || {}
                      , o = Object.keys(e.styles.hasOwnProperty(t) ? e.styles[t] : i[t]).reduce((function(t, e) {
                        return t[e] = "",
                        t
                    }
                    ), {});
                    zt(n) && Wt(n) && (Object.assign(n.style, o),
                    Object.keys(s).forEach((function(t) {
                        n.removeAttribute(t)
                    }
                    )))
                }
                ))
            }
        },
        requires: ["computeStyles"]
    };
    function Vt(t) {
        return t.split("-")[0]
    }
    var Kt = Math.max
      , Qt = Math.min
      , Xt = Math.round;
    function Yt(t, e) {
        void 0 === e && (e = !1);
        var i = t.getBoundingClientRect()
          , n = 1
          , s = 1;
        if (zt(t) && e) {
            var o = t.offsetHeight
              , r = t.offsetWidth;
            r > 0 && (n = Xt(i.width) / r || 1),
            o > 0 && (s = Xt(i.height) / o || 1)
        }
        return {
            width: i.width / n,
            height: i.height / s,
            top: i.top / s,
            right: i.right / n,
            bottom: i.bottom / s,
            left: i.left / n,
            x: i.left / n,
            y: i.top / s
        }
    }
    function Ut(t) {
        var e = Yt(t)
          , i = t.offsetWidth
          , n = t.offsetHeight;
        return Math.abs(e.width - i) <= 1 && (i = e.width),
        Math.abs(e.height - n) <= 1 && (n = e.height),
        {
            x: t.offsetLeft,
            y: t.offsetTop,
            width: i,
            height: n
        }
    }
    function Gt(t, e) {
        var i = e.getRootNode && e.getRootNode();
        if (t.contains(e))
            return !0;
        if (i && Rt(i)) {
            var n = e;
            do {
                if (n && t.isSameNode(n))
                    return !0;
                n = n.parentNode || n.host
            } while (n)
        }
        return !1
    }
    function Jt(t) {
        return Bt(t).getComputedStyle(t)
    }
    function Zt(t) {
        return ["table", "td", "th"].indexOf(Wt(t)) >= 0
    }
    function te(t) {
        return ((Ft(t) ? t.ownerDocument : t.document) || window.document).documentElement
    }
    function ee(t) {
        return "html" === Wt(t) ? t : t.assignedSlot || t.parentNode || (Rt(t) ? t.host : null) || te(t)
    }
    function ie(t) {
        return zt(t) && "fixed" !== Jt(t).position ? t.offsetParent : null
    }
    function ne(t) {
        for (var e = Bt(t), i = ie(t); i && Zt(i) && "static" === Jt(i).position; )
            i = ie(i);
        return i && ("html" === Wt(i) || "body" === Wt(i) && "static" === Jt(i).position) ? e : i || function(t) {
            var e = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox");
            if (-1 !== navigator.userAgent.indexOf("Trident") && zt(t) && "fixed" === Jt(t).position)
                return null;
            var i = ee(t);
            for (Rt(i) && (i = i.host); zt(i) && ["html", "body"].indexOf(Wt(i)) < 0; ) {
                var n = Jt(i);
                if ("none" !== n.transform || "none" !== n.perspective || "paint" === n.contain || -1 !== ["transform", "perspective"].indexOf(n.willChange) || e && "filter" === n.willChange || e && n.filter && "none" !== n.filter)
                    return i;
                i = i.parentNode
            }
            return null
        }(t) || e
    }
    function se(t) {
        return ["top", "bottom"].indexOf(t) >= 0 ? "x" : "y"
    }
    function oe(t, e, i) {
        return Kt(t, Qt(e, i))
    }
    function re(t) {
        return Object.assign({}, {
            top: 0,
            right: 0,
            bottom: 0,
            left: 0
        }, t)
    }
    function ae(t, e) {
        return e.reduce((function(e, i) {
            return e[i] = t,
            e
        }
        ), {})
    }
    const le = {
        name: "arrow",
        enabled: !0,
        phase: "main",
        fn: function(t) {
            var e, i = t.state, n = t.name, s = t.options, o = i.elements.arrow, r = i.modifiersData.popperOffsets, a = Vt(i.placement), l = se(a), c = [bt, _t].indexOf(a) >= 0 ? "height" : "width";
            if (o && r) {
                var h = function(t, e) {
                    return re("number" != typeof (t = "function" == typeof t ? t(Object.assign({}, e.rects, {
                        placement: e.placement
                    })) : t) ? t : ae(t, yt))
                }(s.padding, i)
                  , d = Ut(o)
                  , u = "y" === l ? gt : bt
                  , f = "y" === l ? mt : _t
                  , p = i.rects.reference[c] + i.rects.reference[l] - r[l] - i.rects.popper[c]
                  , g = r[l] - i.rects.reference[l]
                  , m = ne(o)
                  , _ = m ? "y" === l ? m.clientHeight || 0 : m.clientWidth || 0 : 0
                  , b = p / 2 - g / 2
                  , v = h[u]
                  , y = _ - d[c] - h[f]
                  , w = _ / 2 - d[c] / 2 + b
                  , A = oe(v, w, y)
                  , E = l;
                i.modifiersData[n] = ((e = {})[E] = A,
                e.centerOffset = A - w,
                e)
            }
        },
        effect: function(t) {
            var e = t.state
              , i = t.options.element
              , n = void 0 === i ? "[data-popper-arrow]" : i;
            null != n && ("string" != typeof n || (n = e.elements.popper.querySelector(n))) && Gt(e.elements.popper, n) && (e.elements.arrow = n)
        },
        requires: ["popperOffsets"],
        requiresIfExists: ["preventOverflow"]
    };
    function ce(t) {
        return t.split("-")[1]
    }
    var he = {
        top: "auto",
        right: "auto",
        bottom: "auto",
        left: "auto"
    };
    function de(t) {
        var e, i = t.popper, n = t.popperRect, s = t.placement, o = t.variation, r = t.offsets, a = t.position, l = t.gpuAcceleration, c = t.adaptive, h = t.roundOffsets, d = t.isFixed, u = r.x, f = void 0 === u ? 0 : u, p = r.y, g = void 0 === p ? 0 : p, m = "function" == typeof h ? h({
            x: f,
            y: g
        }) : {
            x: f,
            y: g
        };
        f = m.x,
        g = m.y;
        var _ = r.hasOwnProperty("x")
          , b = r.hasOwnProperty("y")
          , v = bt
          , y = gt
          , w = window;
        if (c) {
            var A = ne(i)
              , E = "clientHeight"
              , T = "clientWidth";
            A === Bt(i) && "static" !== Jt(A = te(i)).position && "absolute" === a && (E = "scrollHeight",
            T = "scrollWidth"),
            (s === gt || (s === bt || s === _t) && o === At) && (y = mt,
            g -= (d && A === w && w.visualViewport ? w.visualViewport.height : A[E]) - n.height,
            g *= l ? 1 : -1),
            s !== bt && (s !== gt && s !== mt || o !== At) || (v = _t,
            f -= (d && A === w && w.visualViewport ? w.visualViewport.width : A[T]) - n.width,
            f *= l ? 1 : -1)
        }
        var C, O = Object.assign({
            position: a
        }, c && he), x = !0 === h ? function(t) {
            var e = t.x
              , i = t.y
              , n = window.devicePixelRatio || 1;
            return {
                x: Xt(e * n) / n || 0,
                y: Xt(i * n) / n || 0
            }
        }({
            x: f,
            y: g
        }) : {
            x: f,
            y: g
        };
        return f = x.x,
        g = x.y,
        l ? Object.assign({}, O, ((C = {})[y] = b ? "0" : "",
        C[v] = _ ? "0" : "",
        C.transform = (w.devicePixelRatio || 1) <= 1 ? "translate(" + f + "px, " + g + "px)" : "translate3d(" + f + "px, " + g + "px, 0)",
        C)) : Object.assign({}, O, ((e = {})[y] = b ? g + "px" : "",
        e[v] = _ ? f + "px" : "",
        e.transform = "",
        e))
    }
    const ue = {
        name: "computeStyles",
        enabled: !0,
        phase: "beforeWrite",
        fn: function(t) {
            var e = t.state
              , i = t.options
              , n = i.gpuAcceleration
              , s = void 0 === n || n
              , o = i.adaptive
              , r = void 0 === o || o
              , a = i.roundOffsets
              , l = void 0 === a || a
              , c = {
                placement: Vt(e.placement),
                variation: ce(e.placement),
                popper: e.elements.popper,
                popperRect: e.rects.popper,
                gpuAcceleration: s,
                isFixed: "fixed" === e.options.strategy
            };
            null != e.modifiersData.popperOffsets && (e.styles.popper = Object.assign({}, e.styles.popper, de(Object.assign({}, c, {
                offsets: e.modifiersData.popperOffsets,
                position: e.options.strategy,
                adaptive: r,
                roundOffsets: l
            })))),
            null != e.modifiersData.arrow && (e.styles.arrow = Object.assign({}, e.styles.arrow, de(Object.assign({}, c, {
                offsets: e.modifiersData.arrow,
                position: "absolute",
                adaptive: !1,
                roundOffsets: l
            })))),
            e.attributes.popper = Object.assign({}, e.attributes.popper, {
                "data-popper-placement": e.placement
            })
        },
        data: {}
    };
    var fe = {
        passive: !0
    };
    const pe = {
        name: "eventListeners",
        enabled: !0,
        phase: "write",
        fn: function() {},
        effect: function(t) {
            var e = t.state
              , i = t.instance
              , n = t.options
              , s = n.scroll
              , o = void 0 === s || s
              , r = n.resize
              , a = void 0 === r || r
              , l = Bt(e.elements.popper)
              , c = [].concat(e.scrollParents.reference, e.scrollParents.popper);
            return o && c.forEach((function(t) {
                t.addEventListener("scroll", i.update, fe)
            }
            )),
            a && l.addEventListener("resize", i.update, fe),
            function() {
                o && c.forEach((function(t) {
                    t.removeEventListener("scroll", i.update, fe)
                }
                )),
                a && l.removeEventListener("resize", i.update, fe)
            }
        },
        data: {}
    };
    var ge = {
        left: "right",
        right: "left",
        bottom: "top",
        top: "bottom"
    };
    function me(t) {
        return t.replace(/left|right|bottom|top/g, (function(t) {
            return ge[t]
        }
        ))
    }
    var _e = {
        start: "end",
        end: "start"
    };
    function be(t) {
        return t.replace(/start|end/g, (function(t) {
            return _e[t]
        }
        ))
    }
    function ve(t) {
        var e = Bt(t);
        return {
            scrollLeft: e.pageXOffset,
            scrollTop: e.pageYOffset
        }
    }
    function ye(t) {
        return Yt(te(t)).left + ve(t).scrollLeft
    }
    function we(t) {
        var e = Jt(t)
          , i = e.overflow
          , n = e.overflowX
          , s = e.overflowY;
        return /auto|scroll|overlay|hidden/.test(i + s + n)
    }
    function Ae(t) {
        return ["html", "body", "#document"].indexOf(Wt(t)) >= 0 ? t.ownerDocument.body : zt(t) && we(t) ? t : Ae(ee(t))
    }
    function Ee(t, e) {
        var i;
        void 0 === e && (e = []);
        var n = Ae(t)
          , s = n === (null == (i = t.ownerDocument) ? void 0 : i.body)
          , o = Bt(n)
          , r = s ? [o].concat(o.visualViewport || [], we(n) ? n : []) : n
          , a = e.concat(r);
        return s ? a : a.concat(Ee(ee(r)))
    }
    function Te(t) {
        return Object.assign({}, t, {
            left: t.x,
            top: t.y,
            right: t.x + t.width,
            bottom: t.y + t.height
        })
    }
    function Ce(t, e) {
        return e === Tt ? Te(function(t) {
            var e = Bt(t)
              , i = te(t)
              , n = e.visualViewport
              , s = i.clientWidth
              , o = i.clientHeight
              , r = 0
              , a = 0;
            return n && (s = n.width,
            o = n.height,
            /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (r = n.offsetLeft,
            a = n.offsetTop)),
            {
                width: s,
                height: o,
                x: r + ye(t),
                y: a
            }
        }(t)) : Ft(e) ? function(t) {
            var e = Yt(t);
            return e.top = e.top + t.clientTop,
            e.left = e.left + t.clientLeft,
            e.bottom = e.top + t.clientHeight,
            e.right = e.left + t.clientWidth,
            e.width = t.clientWidth,
            e.height = t.clientHeight,
            e.x = e.left,
            e.y = e.top,
            e
        }(e) : Te(function(t) {
            var e, i = te(t), n = ve(t), s = null == (e = t.ownerDocument) ? void 0 : e.body, o = Kt(i.scrollWidth, i.clientWidth, s ? s.scrollWidth : 0, s ? s.clientWidth : 0), r = Kt(i.scrollHeight, i.clientHeight, s ? s.scrollHeight : 0, s ? s.clientHeight : 0), a = -n.scrollLeft + ye(t), l = -n.scrollTop;
            return "rtl" === Jt(s || i).direction && (a += Kt(i.clientWidth, s ? s.clientWidth : 0) - o),
            {
                width: o,
                height: r,
                x: a,
                y: l
            }
        }(te(t)))
    }
    function Oe(t) {
        var e, i = t.reference, n = t.element, s = t.placement, o = s ? Vt(s) : null, r = s ? ce(s) : null, a = i.x + i.width / 2 - n.width / 2, l = i.y + i.height / 2 - n.height / 2;
        switch (o) {
        case gt:
            e = {
                x: a,
                y: i.y - n.height
            };
            break;
        case mt:
            e = {
                x: a,
                y: i.y + i.height
            };
            break;
        case _t:
            e = {
                x: i.x + i.width,
                y: l
            };
            break;
        case bt:
            e = {
                x: i.x - n.width,
                y: l
            };
            break;
        default:
            e = {
                x: i.x,
                y: i.y
            }
        }
        var c = o ? se(o) : null;
        if (null != c) {
            var h = "y" === c ? "height" : "width";
            switch (r) {
            case wt:
                e[c] = e[c] - (i[h] / 2 - n[h] / 2);
                break;
            case At:
                e[c] = e[c] + (i[h] / 2 - n[h] / 2)
            }
        }
        return e
    }
    function xe(t, e) {
        void 0 === e && (e = {});
        var i = e
          , n = i.placement
          , s = void 0 === n ? t.placement : n
          , o = i.boundary
          , r = void 0 === o ? Et : o
          , a = i.rootBoundary
          , l = void 0 === a ? Tt : a
          , c = i.elementContext
          , h = void 0 === c ? Ct : c
          , d = i.altBoundary
          , u = void 0 !== d && d
          , f = i.padding
          , p = void 0 === f ? 0 : f
          , g = re("number" != typeof p ? p : ae(p, yt))
          , m = h === Ct ? Ot : Ct
          , _ = t.rects.popper
          , b = t.elements[u ? m : h]
          , v = function(t, e, i) {
            var n = "clippingParents" === e ? function(t) {
                var e = Ee(ee(t))
                  , i = ["absolute", "fixed"].indexOf(Jt(t).position) >= 0 && zt(t) ? ne(t) : t;
                return Ft(i) ? e.filter((function(t) {
                    return Ft(t) && Gt(t, i) && "body" !== Wt(t)
                }
                )) : []
            }(t) : [].concat(e)
              , s = [].concat(n, [i])
              , o = s[0]
              , r = s.reduce((function(e, i) {
                var n = Ce(t, i);
                return e.top = Kt(n.top, e.top),
                e.right = Qt(n.right, e.right),
                e.bottom = Qt(n.bottom, e.bottom),
                e.left = Kt(n.left, e.left),
                e
            }
            ), Ce(t, o));
            return r.width = r.right - r.left,
            r.height = r.bottom - r.top,
            r.x = r.left,
            r.y = r.top,
            r
        }(Ft(b) ? b : b.contextElement || te(t.elements.popper), r, l)
          , y = Yt(t.elements.reference)
          , w = Oe({
            reference: y,
            element: _,
            strategy: "absolute",
            placement: s
        })
          , A = Te(Object.assign({}, _, w))
          , E = h === Ct ? A : y
          , T = {
            top: v.top - E.top + g.top,
            bottom: E.bottom - v.bottom + g.bottom,
            left: v.left - E.left + g.left,
            right: E.right - v.right + g.right
        }
          , C = t.modifiersData.offset;
        if (h === Ct && C) {
            var O = C[s];
            Object.keys(T).forEach((function(t) {
                var e = [_t, mt].indexOf(t) >= 0 ? 1 : -1
                  , i = [gt, mt].indexOf(t) >= 0 ? "y" : "x";
                T[t] += O[i] * e
            }
            ))
        }
        return T
    }
    function ke(t, e) {
        void 0 === e && (e = {});
        var i = e
          , n = i.placement
          , s = i.boundary
          , o = i.rootBoundary
          , r = i.padding
          , a = i.flipVariations
          , l = i.allowedAutoPlacements
          , c = void 0 === l ? kt : l
          , h = ce(n)
          , d = h ? a ? xt : xt.filter((function(t) {
            return ce(t) === h
        }
        )) : yt
          , u = d.filter((function(t) {
            return c.indexOf(t) >= 0
        }
        ));
        0 === u.length && (u = d);
        var f = u.reduce((function(e, i) {
            return e[i] = xe(t, {
                placement: i,
                boundary: s,
                rootBoundary: o,
                padding: r
            })[Vt(i)],
            e
        }
        ), {});
        return Object.keys(f).sort((function(t, e) {
            return f[t] - f[e]
        }
        ))
    }
    const Le = {
        name: "flip",
        enabled: !0,
        phase: "main",
        fn: function(t) {
            var e = t.state
              , i = t.options
              , n = t.name;
            if (!e.modifiersData[n]._skip) {
                for (var s = i.mainAxis, o = void 0 === s || s, r = i.altAxis, a = void 0 === r || r, l = i.fallbackPlacements, c = i.padding, h = i.boundary, d = i.rootBoundary, u = i.altBoundary, f = i.flipVariations, p = void 0 === f || f, g = i.allowedAutoPlacements, m = e.options.placement, _ = Vt(m), b = l || (_ !== m && p ? function(t) {
                    if (Vt(t) === vt)
                        return [];
                    var e = me(t);
                    return [be(t), e, be(e)]
                }(m) : [me(m)]), v = [m].concat(b).reduce((function(t, i) {
                    return t.concat(Vt(i) === vt ? ke(e, {
                        placement: i,
                        boundary: h,
                        rootBoundary: d,
                        padding: c,
                        flipVariations: p,
                        allowedAutoPlacements: g
                    }) : i)
                }
                ), []), y = e.rects.reference, w = e.rects.popper, A = new Map, E = !0, T = v[0], C = 0; C < v.length; C++) {
                    var O = v[C]
                      , x = Vt(O)
                      , k = ce(O) === wt
                      , L = [gt, mt].indexOf(x) >= 0
                      , D = L ? "width" : "height"
                      , S = xe(e, {
                        placement: O,
                        boundary: h,
                        rootBoundary: d,
                        altBoundary: u,
                        padding: c
                    })
                      , I = L ? k ? _t : bt : k ? mt : gt;
                    y[D] > w[D] && (I = me(I));
                    var N = me(I)
                      , P = [];
                    if (o && P.push(S[x] <= 0),
                    a && P.push(S[I] <= 0, S[N] <= 0),
                    P.every((function(t) {
                        return t
                    }
                    ))) {
                        T = O,
                        E = !1;
                        break
                    }
                    A.set(O, P)
                }
                if (E)
                    for (var j = function(t) {
                        var e = v.find((function(e) {
                            var i = A.get(e);
                            if (i)
                                return i.slice(0, t).every((function(t) {
                                    return t
                                }
                                ))
                        }
                        ));
                        if (e)
                            return T = e,
                            "break"
                    }, M = p ? 3 : 1; M > 0 && "break" !== j(M); M--)
                        ;
                e.placement !== T && (e.modifiersData[n]._skip = !0,
                e.placement = T,
                e.reset = !0)
            }
        },
        requiresIfExists: ["offset"],
        data: {
            _skip: !1
        }
    };
    function De(t, e, i) {
        return void 0 === i && (i = {
            x: 0,
            y: 0
        }),
        {
            top: t.top - e.height - i.y,
            right: t.right - e.width + i.x,
            bottom: t.bottom - e.height + i.y,
            left: t.left - e.width - i.x
        }
    }
    function Se(t) {
        return [gt, _t, mt, bt].some((function(e) {
            return t[e] >= 0
        }
        ))
    }
    const Ie = {
        name: "hide",
        enabled: !0,
        phase: "main",
        requiresIfExists: ["preventOverflow"],
        fn: function(t) {
            var e = t.state
              , i = t.name
              , n = e.rects.reference
              , s = e.rects.popper
              , o = e.modifiersData.preventOverflow
              , r = xe(e, {
                elementContext: "reference"
            })
              , a = xe(e, {
                altBoundary: !0
            })
              , l = De(r, n)
              , c = De(a, s, o)
              , h = Se(l)
              , d = Se(c);
            e.modifiersData[i] = {
                referenceClippingOffsets: l,
                popperEscapeOffsets: c,
                isReferenceHidden: h,
                hasPopperEscaped: d
            },
            e.attributes.popper = Object.assign({}, e.attributes.popper, {
                "data-popper-reference-hidden": h,
                "data-popper-escaped": d
            })
        }
    }
      , Ne = {
        name: "offset",
        enabled: !0,
        phase: "main",
        requires: ["popperOffsets"],
        fn: function(t) {
            var e = t.state
              , i = t.options
              , n = t.name
              , s = i.offset
              , o = void 0 === s ? [0, 0] : s
              , r = kt.reduce((function(t, i) {
                return t[i] = function(t, e, i) {
                    var n = Vt(t)
                      , s = [bt, gt].indexOf(n) >= 0 ? -1 : 1
                      , o = "function" == typeof i ? i(Object.assign({}, e, {
                        placement: t
                    })) : i
                      , r = o[0]
                      , a = o[1];
                    return r = r || 0,
                    a = (a || 0) * s,
                    [bt, _t].indexOf(n) >= 0 ? {
                        x: a,
                        y: r
                    } : {
                        x: r,
                        y: a
                    }
                }(i, e.rects, o),
                t
            }
            ), {})
              , a = r[e.placement]
              , l = a.x
              , c = a.y;
            null != e.modifiersData.popperOffsets && (e.modifiersData.popperOffsets.x += l,
            e.modifiersData.popperOffsets.y += c),
            e.modifiersData[n] = r
        }
    }
      , Pe = {
        name: "popperOffsets",
        enabled: !0,
        phase: "read",
        fn: function(t) {
            var e = t.state
              , i = t.name;
            e.modifiersData[i] = Oe({
                reference: e.rects.reference,
                element: e.rects.popper,
                strategy: "absolute",
                placement: e.placement
            })
        },
        data: {}
    }
      , je = {
        name: "preventOverflow",
        enabled: !0,
        phase: "main",
        fn: function(t) {
            var e = t.state
              , i = t.options
              , n = t.name
              , s = i.mainAxis
              , o = void 0 === s || s
              , r = i.altAxis
              , a = void 0 !== r && r
              , l = i.boundary
              , c = i.rootBoundary
              , h = i.altBoundary
              , d = i.padding
              , u = i.tether
              , f = void 0 === u || u
              , p = i.tetherOffset
              , g = void 0 === p ? 0 : p
              , m = xe(e, {
                boundary: l,
                rootBoundary: c,
                padding: d,
                altBoundary: h
            })
              , _ = Vt(e.placement)
              , b = ce(e.placement)
              , v = !b
              , y = se(_)
              , w = "x" === y ? "y" : "x"
              , A = e.modifiersData.popperOffsets
              , E = e.rects.reference
              , T = e.rects.popper
              , C = "function" == typeof g ? g(Object.assign({}, e.rects, {
                placement: e.placement
            })) : g
              , O = "number" == typeof C ? {
                mainAxis: C,
                altAxis: C
            } : Object.assign({
                mainAxis: 0,
                altAxis: 0
            }, C)
              , x = e.modifiersData.offset ? e.modifiersData.offset[e.placement] : null
              , k = {
                x: 0,
                y: 0
            };
            if (A) {
                if (o) {
                    var L, D = "y" === y ? gt : bt, S = "y" === y ? mt : _t, I = "y" === y ? "height" : "width", N = A[y], P = N + m[D], j = N - m[S], M = f ? -T[I] / 2 : 0, H = b === wt ? E[I] : T[I], $ = b === wt ? -T[I] : -E[I], W = e.elements.arrow, B = f && W ? Ut(W) : {
                        width: 0,
                        height: 0
                    }, F = e.modifiersData["arrow#persistent"] ? e.modifiersData["arrow#persistent"].padding : {
                        top: 0,
                        right: 0,
                        bottom: 0,
                        left: 0
                    }, z = F[D], R = F[S], q = oe(0, E[I], B[I]), V = v ? E[I] / 2 - M - q - z - O.mainAxis : H - q - z - O.mainAxis, K = v ? -E[I] / 2 + M + q + R + O.mainAxis : $ + q + R + O.mainAxis, Q = e.elements.arrow && ne(e.elements.arrow), X = Q ? "y" === y ? Q.clientTop || 0 : Q.clientLeft || 0 : 0, Y = null != (L = null == x ? void 0 : x[y]) ? L : 0, U = N + K - Y, G = oe(f ? Qt(P, N + V - Y - X) : P, N, f ? Kt(j, U) : j);
                    A[y] = G,
                    k[y] = G - N
                }
                if (a) {
                    var J, Z = "x" === y ? gt : bt, tt = "x" === y ? mt : _t, et = A[w], it = "y" === w ? "height" : "width", nt = et + m[Z], st = et - m[tt], ot = -1 !== [gt, bt].indexOf(_), rt = null != (J = null == x ? void 0 : x[w]) ? J : 0, at = ot ? nt : et - E[it] - T[it] - rt + O.altAxis, lt = ot ? et + E[it] + T[it] - rt - O.altAxis : st, ct = f && ot ? function(t, e, i) {
                        var n = oe(t, e, i);
                        return n > i ? i : n
                    }(at, et, lt) : oe(f ? at : nt, et, f ? lt : st);
                    A[w] = ct,
                    k[w] = ct - et
                }
                e.modifiersData[n] = k
            }
        },
        requiresIfExists: ["offset"]
    };
    function Me(t, e, i) {
        void 0 === i && (i = !1);
        var n, s, o = zt(e), r = zt(e) && function(t) {
            var e = t.getBoundingClientRect()
              , i = Xt(e.width) / t.offsetWidth || 1
              , n = Xt(e.height) / t.offsetHeight || 1;
            return 1 !== i || 1 !== n
        }(e), a = te(e), l = Yt(t, r), c = {
            scrollLeft: 0,
            scrollTop: 0
        }, h = {
            x: 0,
            y: 0
        };
        return (o || !o && !i) && (("body" !== Wt(e) || we(a)) && (c = (n = e) !== Bt(n) && zt(n) ? {
            scrollLeft: (s = n).scrollLeft,
            scrollTop: s.scrollTop
        } : ve(n)),
        zt(e) ? ((h = Yt(e, !0)).x += e.clientLeft,
        h.y += e.clientTop) : a && (h.x = ye(a))),
        {
            x: l.left + c.scrollLeft - h.x,
            y: l.top + c.scrollTop - h.y,
            width: l.width,
            height: l.height
        }
    }
    function He(t) {
        var e = new Map
          , i = new Set
          , n = [];
        function s(t) {
            i.add(t.name),
            [].concat(t.requires || [], t.requiresIfExists || []).forEach((function(t) {
                if (!i.has(t)) {
                    var n = e.get(t);
                    n && s(n)
                }
            }
            )),
            n.push(t)
        }
        return t.forEach((function(t) {
            e.set(t.name, t)
        }
        )),
        t.forEach((function(t) {
            i.has(t.name) || s(t)
        }
        )),
        n
    }
    var $e = {
        placement: "bottom",
        modifiers: [],
        strategy: "absolute"
    };
    function We() {
        for (var t = arguments.length, e = new Array(t), i = 0; i < t; i++)
            e[i] = arguments[i];
        return !e.some((function(t) {
            return !(t && "function" == typeof t.getBoundingClientRect)
        }
        ))
    }
    function Be(t) {
        void 0 === t && (t = {});
        var e = t
          , i = e.defaultModifiers
          , n = void 0 === i ? [] : i
          , s = e.defaultOptions
          , o = void 0 === s ? $e : s;
        return function(t, e, i) {
            void 0 === i && (i = o);
            var s, r, a = {
                placement: "bottom",
                orderedModifiers: [],
                options: Object.assign({}, $e, o),
                modifiersData: {},
                elements: {
                    reference: t,
                    popper: e
                },
                attributes: {},
                styles: {}
            }, l = [], c = !1, h = {
                state: a,
                setOptions: function(i) {
                    var s = "function" == typeof i ? i(a.options) : i;
                    d(),
                    a.options = Object.assign({}, o, a.options, s),
                    a.scrollParents = {
                        reference: Ft(t) ? Ee(t) : t.contextElement ? Ee(t.contextElement) : [],
                        popper: Ee(e)
                    };
                    var r, c, u = function(t) {
                        var e = He(t);
                        return $t.reduce((function(t, i) {
                            return t.concat(e.filter((function(t) {
                                return t.phase === i
                            }
                            )))
                        }
                        ), [])
                    }((r = [].concat(n, a.options.modifiers),
                    c = r.reduce((function(t, e) {
                        var i = t[e.name];
                        return t[e.name] = i ? Object.assign({}, i, e, {
                            options: Object.assign({}, i.options, e.options),
                            data: Object.assign({}, i.data, e.data)
                        }) : e,
                        t
                    }
                    ), {}),
                    Object.keys(c).map((function(t) {
                        return c[t]
                    }
                    ))));
                    return a.orderedModifiers = u.filter((function(t) {
                        return t.enabled
                    }
                    )),
                    a.orderedModifiers.forEach((function(t) {
                        var e = t.name
                          , i = t.options
                          , n = void 0 === i ? {} : i
                          , s = t.effect;
                        if ("function" == typeof s) {
                            var o = s({
                                state: a,
                                name: e,
                                instance: h,
                                options: n
                            });
                            l.push(o || function() {}
                            )
                        }
                    }
                    )),
                    h.update()
                },
                forceUpdate: function() {
                    if (!c) {
                        var t = a.elements
                          , e = t.reference
                          , i = t.popper;
                        if (We(e, i)) {
                            a.rects = {
                                reference: Me(e, ne(i), "fixed" === a.options.strategy),
                                popper: Ut(i)
                            },
                            a.reset = !1,
                            a.placement = a.options.placement,
                            a.orderedModifiers.forEach((function(t) {
                                return a.modifiersData[t.name] = Object.assign({}, t.data)
                            }
                            ));
                            for (var n = 0; n < a.orderedModifiers.length; n++)
                                if (!0 !== a.reset) {
                                    var s = a.orderedModifiers[n]
                                      , o = s.fn
                                      , r = s.options
                                      , l = void 0 === r ? {} : r
                                      , d = s.name;
                                    "function" == typeof o && (a = o({
                                        state: a,
                                        options: l,
                                        name: d,
                                        instance: h
                                    }) || a)
                                } else
                                    a.reset = !1,
                                    n = -1
                        }
                    }
                },
                update: (s = function() {
                    return new Promise((function(t) {
                        h.forceUpdate(),
                        t(a)
                    }
                    ))
                }
                ,
                function() {
                    return r || (r = new Promise((function(t) {
                        Promise.resolve().then((function() {
                            r = void 0,
                            t(s())
                        }
                        ))
                    }
                    ))),
                    r
                }
                ),
                destroy: function() {
                    d(),
                    c = !0
                }
            };
            if (!We(t, e))
                return h;
            function d() {
                l.forEach((function(t) {
                    return t()
                }
                )),
                l = []
            }
            return h.setOptions(i).then((function(t) {
                !c && i.onFirstUpdate && i.onFirstUpdate(t)
            }
            )),
            h
        }
    }
    var Fe = Be()
      , ze = Be({
        defaultModifiers: [pe, Pe, ue, qt]
    })
      , Re = Be({
        defaultModifiers: [pe, Pe, ue, qt, Ne, Le, je, le, Ie]
    });
    const qe = Object.freeze(Object.defineProperty({
        __proto__: null,
        popperGenerator: Be,
        detectOverflow: xe,
        createPopperBase: Fe,
        createPopper: Re,
        createPopperLite: ze,
        top: gt,
        bottom: mt,
        right: _t,
        left: bt,
        auto: vt,
        basePlacements: yt,
        start: wt,
        end: At,
        clippingParents: Et,
        viewport: Tt,
        popper: Ct,
        reference: Ot,
        variationPlacements: xt,
        placements: kt,
        beforeRead: Lt,
        read: Dt,
        afterRead: St,
        beforeMain: It,
        main: Nt,
        afterMain: Pt,
        beforeWrite: jt,
        write: Mt,
        afterWrite: Ht,
        modifierPhases: $t,
        applyStyles: qt,
        arrow: le,
        computeStyles: ue,
        eventListeners: pe,
        flip: Le,
        hide: Ie,
        offset: Ne,
        popperOffsets: Pe,
        preventOverflow: je
    }, Symbol.toStringTag, {
        value: "Module"
    }))
      , Ve = "dropdown"
      , Ke = "ArrowUp"
      , Qe = "ArrowDown"
      , Xe = "click.bs.dropdown.data-api"
      , Ye = "keydown.bs.dropdown.data-api"
      , Ue = "show"
      , Ge = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)'
      , Je = `${Ge}.show`
      , Ze = ".dropdown-menu"
      , ti = p() ? "top-end" : "top-start"
      , ei = p() ? "top-start" : "top-end"
      , ii = p() ? "bottom-end" : "bottom-start"
      , ni = p() ? "bottom-start" : "bottom-end"
      , si = p() ? "left-start" : "right-start"
      , oi = p() ? "right-start" : "left-start"
      , ri = {
        autoClose: !0,
        boundary: "clippingParents",
        display: "dynamic",
        offset: [0, 2],
        popperConfig: null,
        reference: "toggle"
    }
      , ai = {
        autoClose: "(boolean|string)",
        boundary: "(string|element)",
        display: "string",
        offset: "(array|string|function)",
        popperConfig: "(null|object|function)",
        reference: "(string|element|object)"
    };
    class li extends z {
        constructor(t, e) {
            super(t, e),
            this._popper = null,
            this._parent = this._element.parentNode,
            this._menu = Q.findOne(Ze, this._parent),
            this._inNavbar = this._detectNavbar()
        }
        static get Default() {
            return ri
        }
        static get DefaultType() {
            return ai
        }
        static get NAME() {
            return Ve
        }
        toggle() {
            return this._isShown() ? this.hide() : this.show()
        }
        show() {
            if (l(this._element) || this._isShown())
                return;
            const t = {
                relatedTarget: this._element
            };
            if (!P.trigger(this._element, "show.bs.dropdown", t).defaultPrevented) {
                if (this._createPopper(),
                "ontouchstart"in document.documentElement && !this._parent.closest(".navbar-nav"))
                    for (const t of [].concat(...document.body.children))
                        P.on(t, "mouseover", h);
                this._element.focus(),
                this._element.setAttribute("aria-expanded", !0),
                this._menu.classList.add(Ue),
                this._element.classList.add(Ue),
                P.trigger(this._element, "shown.bs.dropdown", t)
            }
        }
        hide() {
            if (l(this._element) || !this._isShown())
                return;
            const t = {
                relatedTarget: this._element
            };
            this._completeHide(t)
        }
        dispose() {
            this._popper && this._popper.destroy(),
            super.dispose()
        }
        update() {
            this._inNavbar = this._detectNavbar(),
            this._popper && this._popper.update()
        }
        _completeHide(t) {
            if (!P.trigger(this._element, "hide.bs.dropdown", t).defaultPrevented) {
                if ("ontouchstart"in document.documentElement)
                    for (const t of [].concat(...document.body.children))
                        P.off(t, "mouseover", h);
                this._popper && this._popper.destroy(),
                this._menu.classList.remove(Ue),
                this._element.classList.remove(Ue),
                this._element.setAttribute("aria-expanded", "false"),
                B.removeDataAttribute(this._menu, "popper"),
                P.trigger(this._element, "hidden.bs.dropdown", t)
            }
        }
        _getConfig(t) {
            if ("object" == typeof (t = super._getConfig(t)).reference && !o(t.reference) && "function" != typeof t.reference.getBoundingClientRect)
                throw new TypeError(`${Ve.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
            return t
        }
        _createPopper() {
            if (void 0 === qe)
                throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");
            let t = this._element;
            "parent" === this._config.reference ? t = this._parent : o(this._config.reference) ? t = r(this._config.reference) : "object" == typeof this._config.reference && (t = this._config.reference);
            const e = this._getPopperConfig();
            this._popper = Re(t, this._menu, e)
        }
        _isShown() {
            return this._menu.classList.contains(Ue)
        }
        _getPlacement() {
            const t = this._parent;
            if (t.classList.contains("dropend"))
                return si;
            if (t.classList.contains("dropstart"))
                return oi;
            if (t.classList.contains("dropup-center"))
                return "top";
            if (t.classList.contains("dropdown-center"))
                return "bottom";
            const e = "end" === getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();
            return t.classList.contains("dropup") ? e ? ei : ti : e ? ni : ii
        }
        _detectNavbar() {
            return null !== this._element.closest(".navbar")
        }
        _getOffset() {
            const {offset: t} = this._config;
            return "string" == typeof t ? t.split(",").map((t => Number.parseInt(t, 10))) : "function" == typeof t ? e => t(e, this._element) : t
        }
        _getPopperConfig() {
            const t = {
                placement: this._getPlacement(),
                modifiers: [{
                    name: "preventOverflow",
                    options: {
                        boundary: this._config.boundary
                    }
                }, {
                    name: "offset",
                    options: {
                        offset: this._getOffset()
                    }
                }]
            };
            return (this._inNavbar || "static" === this._config.display) && (B.setDataAttribute(this._menu, "popper", "static"),
            t.modifiers = [{
                name: "applyStyles",
                enabled: !1
            }]),
            {
                ...t,
                ..."function" == typeof this._config.popperConfig ? this._config.popperConfig(t) : this._config.popperConfig
            }
        }
        _selectMenuItem({key: t, target: e}) {
            const i = Q.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)", this._menu).filter((t => a(t)));
            i.length && b(i, e, t === Qe, !i.includes(e)).focus()
        }
        static jQueryInterface(t) {
            return this.each((function() {
                const e = li.getOrCreateInstance(this, t);
                if ("string" == typeof t) {
                    if (void 0 === e[t])
                        throw new TypeError(`No method named "${t}"`);
                    e[t]()
                }
            }
            ))
        }
        static clearMenus(t) {
            if (2 === t.button || "keyup" === t.type && "Tab" !== t.key)
                return;
            const e = Q.find(Je);
            for (const i of e) {
                const e = li.getInstance(i);
                if (!e || !1 === e._config.autoClose)
                    continue;
                const n = t.composedPath()
                  , s = n.includes(e._menu);
                if (n.includes(e._element) || "inside" === e._config.autoClose && !s || "outside" === e._config.autoClose && s)
                    continue;
                if (e._menu.contains(t.target) && ("keyup" === t.type && "Tab" === t.key || /input|select|option|textarea|form/i.test(t.target.tagName)))
                    continue;
                const o = {
                    relatedTarget: e._element
                };
                "click" === t.type && (o.clickEvent = t),
                e._completeHide(o)
            }
        }
        static dataApiKeydownHandler(t) {
            const e = /input|textarea/i.test(t.target.tagName)
              , i = "Escape" === t.key
              , n = [Ke, Qe].includes(t.key);
            if (!n && !i)
                return;
            if (e && !i)
                return;
            t.preventDefault();
            const s = Q.findOne(Ge, t.delegateTarget.parentNode)
              , o = li.getOrCreateInstance(s);
            if (n)
                return t.stopPropagation(),
                o.show(),
                void o._selectMenuItem(t);
            o._isShown() && (t.stopPropagation(),
            o.hide(),
            s.focus())
        }
    }
    P.on(document, Ye, Ge, li.dataApiKeydownHandler),
    P.on(document, Ye, Ze, li.dataApiKeydownHandler),
    P.on(document, Xe, li.clearMenus),
    P.on(document, "keyup.bs.dropdown.data-api", li.clearMenus),
    P.on(document, Xe, Ge, (function(t) {
        t.preventDefault(),
        li.getOrCreateInstance(this).toggle()
    }
    )),
    g(li);
    const ci = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top"
      , hi = ".sticky-top"
      , di = "padding-right"
      , ui = "margin-right";
    class fi {
        constructor() {
            this._element = document.body
        }
        getWidth() {
            const t = document.documentElement.clientWidth;
            return Math.abs(window.innerWidth - t)
        }
        hide() {
            const t = this.getWidth();
            this._disableOverFlow(),
            this._setElementAttributes(this._element, di, (e => e + t)),
            this._setElementAttributes(ci, di, (e => e + t)),
            this._setElementAttributes(hi, ui, (e => e - t))
        }
        reset() {
            this._resetElementAttributes(this._element, "overflow"),
            this._resetElementAttributes(this._element, di),
            this._resetElementAttributes(ci, di),
            this._resetElementAttributes(hi, ui)
        }
        isOverflowing() {
            return this.getWidth() > 0
        }
        _disableOverFlow() {
            this._saveInitialAttribute(this._element, "overflow"),
            this._element.style.overflow = "hidden"
        }
        _setElementAttributes(t, e, i) {
            const n = this.getWidth();
            this._applyManipulationCallback(t, (t => {
                if (t !== this._element && window.innerWidth > t.clientWidth + n)
                    return;
                this._saveInitialAttribute(t, e);
                const s = window.getComputedStyle(t).getPropertyValue(e);
                t.style.setProperty(e, `${i(Number.parseFloat(s))}px`)
            }
            ))
        }
        _saveInitialAttribute(t, e) {
            const i = t.style.getPropertyValue(e);
            i && B.setDataAttribute(t, e, i)
        }
        _resetElementAttributes(t, e) {
            this._applyManipulationCallback(t, (t => {
                const i = B.getDataAttribute(t, e);
                null !== i ? (B.removeDataAttribute(t, e),
                t.style.setProperty(e, i)) : t.style.removeProperty(e)
            }
            ))
        }
        _applyManipulationCallback(t, e) {
            if (o(t))
                e(t);
            else
                for (const i of Q.find(t, this._element))
                    e(i)
        }
    }
    const pi = "show"
      , gi = "mousedown.bs.backdrop"
      , mi = {
        className: "modal-backdrop",
        clickCallback: null,
        isAnimated: !1,
        isVisible: !0,
        rootElement: "body"
    }
      , _i = {
        className: "string",
        clickCallback: "(function|null)",
        isAnimated: "boolean",
        isVisible: "boolean",
        rootElement: "(element|string)"
    };
    class bi extends F {
        constructor(t) {
            super(),
            this._config = this._getConfig(t),
            this._isAppended = !1,
            this._element = null
        }
        static get Default() {
            return mi
        }
        static get DefaultType() {
            return _i
        }
        static get NAME() {
            return "backdrop"
        }
        show(t) {
            if (!this._config.isVisible)
                return void m(t);
            this._append();
            const e = this._getElement();
            this._config.isAnimated && d(e),
            e.classList.add(pi),
            this._emulateAnimation(( () => {
                m(t)
            }
            ))
        }
        hide(t) {
            this._config.isVisible ? (this._getElement().classList.remove(pi),
            this._emulateAnimation(( () => {
                this.dispose(),
                m(t)
            }
            ))) : m(t)
        }
        dispose() {
            this._isAppended && (P.off(this._element, gi),
            this._element.remove(),
            this._isAppended = !1)
        }
        _getElement() {
            if (!this._element) {
                const t = document.createElement("div");
                t.className = this._config.className,
                this._config.isAnimated && t.classList.add("fade"),
                this._element = t
            }
            return this._element
        }
        _configAfterMerge(t) {
            return t.rootElement = r(t.rootElement),
            t
        }
        _append() {
            if (this._isAppended)
                return;
            const t = this._getElement();
            this._config.rootElement.append(t),
            P.on(t, gi, ( () => {
                m(this._config.clickCallback)
            }
            )),
            this._isAppended = !0
        }
        _emulateAnimation(t) {
            _(t, this._getElement(), this._config.isAnimated)
        }
    }
    const vi = ".bs.focustrap"
      , yi = "backward"
      , wi = {
        autofocus: !0,
        trapElement: null
    }
      , Ai = {
        autofocus: "boolean",
        trapElement: "element"
    };
    class Ei extends F {
        constructor(t) {
            super(),
            this._config = this._getConfig(t),
            this._isActive = !1,
            this._lastTabNavDirection = null
        }
        static get Default() {
            return wi
        }
        static get DefaultType() {
            return Ai
        }
        static get NAME() {
            return "focustrap"
        }
        activate() {
            this._isActive || (this._config.autofocus && this._config.trapElement.focus(),
            P.off(document, vi),
            P.on(document, "focusin.bs.focustrap", (t => this._handleFocusin(t))),
            P.on(document, "keydown.tab.bs.focustrap", (t => this._handleKeydown(t))),
            this._isActive = !0)
        }
        deactivate() {
            this._isActive && (this._isActive = !1,
            P.off(document, vi))
        }
        _handleFocusin(t) {
            const {trapElement: e} = this._config;
            if (t.target === document || t.target === e || e.contains(t.target))
                return;
            const i = Q.focusableChildren(e);
            0 === i.length ? e.focus() : this._lastTabNavDirection === yi ? i[i.length - 1].focus() : i[0].focus()
        }
        _handleKeydown(t) {
            "Tab" === t.key && (this._lastTabNavDirection = t.shiftKey ? yi : "forward")
        }
    }
    const Ti = "hidden.bs.modal"
      , Ci = "show.bs.modal"
      , Oi = "modal-open"
      , xi = "show"
      , ki = "modal-static"
      , Li = {
        backdrop: !0,
        focus: !0,
        keyboard: !0
    }
      , Di = {
        backdrop: "(boolean|string)",
        focus: "boolean",
        keyboard: "boolean"
    };
    class Si extends z {
        constructor(t, e) {
            super(t, e),
            this._dialog = Q.findOne(".modal-dialog", this._element),
            this._backdrop = this._initializeBackDrop(),
            this._focustrap = this._initializeFocusTrap(),
            this._isShown = !1,
            this._isTransitioning = !1,
            this._scrollBar = new fi,
            this._addEventListeners()
        }
        static get Default() {
            return Li
        }
        static get DefaultType() {
            return Di
        }
        static get NAME() {
            return "modal"
        }
        toggle(t) {
            return this._isShown ? this.hide() : this.show(t)
        }
        show(t) {
            this._isShown || this._isTransitioning || P.trigger(this._element, Ci, {
                relatedTarget: t
            }).defaultPrevented || (this._isShown = !0,
            this._isTransitioning = !0,
            this._scrollBar.hide(),
            document.body.classList.add(Oi),
            this._adjustDialog(),
            this._backdrop.show(( () => this._showElement(t))))
        }
        hide() {
            this._isShown && !this._isTransitioning && (P.trigger(this._element, "hide.bs.modal").defaultPrevented || (this._isShown = !1,
            this._isTransitioning = !0,
            this._focustrap.deactivate(),
            this._element.classList.remove(xi),
            this._queueCallback(( () => this._hideModal()), this._element, this._isAnimated())))
        }
        dispose() {
            for (const t of [window, this._dialog])
                P.off(t, ".bs.modal");
            this._backdrop.dispose(),
            this._focustrap.deactivate(),
            super.dispose()
        }
        handleUpdate() {
            this._adjustDialog()
        }
        _initializeBackDrop() {
            return new bi({
                isVisible: Boolean(this._config.backdrop),
                isAnimated: this._isAnimated()
            })
        }
        _initializeFocusTrap() {
            return new Ei({
                trapElement: this._element
            })
        }
        _showElement(t) {
            document.body.contains(this._element) || document.body.append(this._element),
            this._element.style.display = "block",
            this._element.removeAttribute("aria-hidden"),
            this._element.setAttribute("aria-modal", !0),
            this._element.setAttribute("role", "dialog"),
            this._element.scrollTop = 0;
            const e = Q.findOne(".modal-body", this._dialog);
            e && (e.scrollTop = 0),
            d(this._element),
            this._element.classList.add(xi),
            this._queueCallback(( () => {
                this._config.focus && this._focustrap.activate(),
                this._isTransitioning = !1,
                P.trigger(this._element, "shown.bs.modal", {
                    relatedTarget: t
                })
            }
            ), this._dialog, this._isAnimated())
        }
        _addEventListeners() {
            P.on(this._element, "keydown.dismiss.bs.modal", (t => {
                if ("Escape" === t.key)
                    return this._config.keyboard ? (t.preventDefault(),
                    void this.hide()) : void this._triggerBackdropTransition()
            }
            )),
            P.on(window, "resize.bs.modal", ( () => {
                this._isShown && !this._isTransitioning && this._adjustDialog()
            }
            )),
            P.on(this._element, "mousedown.dismiss.bs.modal", (t => {
                t.target === t.currentTarget && ("static" !== this._config.backdrop ? this._config.backdrop && this.hide() : this._triggerBackdropTransition())
            }
            ))
        }
        _hideModal() {
            this._element.style.display = "none",
            this._element.setAttribute("aria-hidden", !0),
            this._element.removeAttribute("aria-modal"),
            this._element.removeAttribute("role"),
            this._isTransitioning = !1,
            this._backdrop.hide(( () => {
                document.body.classList.remove(Oi),
                this._resetAdjustments(),
                this._scrollBar.reset(),
                P.trigger(this._element, Ti)
            }
            ))
        }
        _isAnimated() {
            return this._element.classList.contains("fade")
        }
        _triggerBackdropTransition() {
            if (P.trigger(this._element, "hidePrevented.bs.modal").defaultPrevented)
                return;
            const t = this._element.scrollHeight > document.documentElement.clientHeight
              , e = this._element.style.overflowY;
            "hidden" === e || this._element.classList.contains(ki) || (t || (this._element.style.overflowY = "hidden"),
            this._element.classList.add(ki),
            this._queueCallback(( () => {
                this._element.classList.remove(ki),
                this._queueCallback(( () => {
                    this._element.style.overflowY = e
                }
                ), this._dialog)
            }
            ), this._dialog),
            this._element.focus())
        }
        _adjustDialog() {
            const t = this._element.scrollHeight > document.documentElement.clientHeight
              , e = this._scrollBar.getWidth()
              , i = e > 0;
            if (i && !t) {
                const t = p() ? "paddingLeft" : "paddingRight";
                this._element.style[t] = `${e}px`
            }
            if (!i && t) {
                const t = p() ? "paddingRight" : "paddingLeft";
                this._element.style[t] = `${e}px`
            }
        }
        _resetAdjustments() {
            this._element.style.paddingLeft = "",
            this._element.style.paddingRight = ""
        }
        static jQueryInterface(t, e) {
            return this.each((function() {
                const i = Si.getOrCreateInstance(this, t);
                if ("string" == typeof t) {
                    if (void 0 === i[t])
                        throw new TypeError(`No method named "${t}"`);
                    i[t](e)
                }
            }
            ))
        }
    }
    P.on(document, "click.bs.modal.data-api", '[data-bs-toggle="modal"]', (function(t) {
        const e = n(this);
        ["A", "AREA"].includes(this.tagName) && t.preventDefault(),
        P.one(e, Ci, (t => {
            t.defaultPrevented || P.one(e, Ti, ( () => {
                a(this) && this.focus()
            }
            ))
        }
        ));
        const i = Q.findOne(".modal.show");
        i && Si.getInstance(i).hide(),
        Si.getOrCreateInstance(e).toggle(this)
    }
    )),
    R(Si),
    g(Si);
    const Ii = "show"
      , Ni = "showing"
      , Pi = "hiding"
      , ji = ".offcanvas.show"
      , Mi = "hidePrevented.bs.offcanvas"
      , Hi = "hidden.bs.offcanvas"
      , $i = {
        backdrop: !0,
        keyboard: !0,
        scroll: !1
    }
      , Wi = {
        backdrop: "(boolean|string)",
        keyboard: "boolean",
        scroll: "boolean"
    };
    class Bi extends z {
        constructor(t, e) {
            super(t, e),
            this._isShown = !1,
            this._backdrop = this._initializeBackDrop(),
            this._focustrap = this._initializeFocusTrap(),
            this._addEventListeners()
        }
        static get Default() {
            return $i
        }
        static get DefaultType() {
            return Wi
        }
        static get NAME() {
            return "offcanvas"
        }
        toggle(t) {
            return this._isShown ? this.hide() : this.show(t)
        }
        show(t) {
            this._isShown || P.trigger(this._element, "show.bs.offcanvas", {
                relatedTarget: t
            }).defaultPrevented || (this._isShown = !0,
            this._backdrop.show(),
            this._config.scroll || (new fi).hide(),
            this._element.setAttribute("aria-modal", !0),
            this._element.setAttribute("role", "dialog"),
            this._element.classList.add(Ni),
            this._queueCallback(( () => {
                this._config.scroll && !this._config.backdrop || this._focustrap.activate(),
                this._element.classList.add(Ii),
                this._element.classList.remove(Ni),
                P.trigger(this._element, "shown.bs.offcanvas", {
                    relatedTarget: t
                })
            }
            ), this._element, !0))
        }
        hide() {
            this._isShown && (P.trigger(this._element, "hide.bs.offcanvas").defaultPrevented || (this._focustrap.deactivate(),
            this._element.blur(),
            this._isShown = !1,
            this._element.classList.add(Pi),
            this._backdrop.hide(),
            this._queueCallback(( () => {
                this._element.classList.remove(Ii, Pi),
                this._element.removeAttribute("aria-modal"),
                this._element.removeAttribute("role"),
                this._config.scroll || (new fi).reset(),
                P.trigger(this._element, Hi)
            }
            ), this._element, !0)))
        }
        dispose() {
            this._backdrop.dispose(),
            this._focustrap.deactivate(),
            super.dispose()
        }
        _initializeBackDrop() {
            const t = Boolean(this._config.backdrop);
            return new bi({
                className: "offcanvas-backdrop",
                isVisible: t,
                isAnimated: !0,
                rootElement: this._element.parentNode,
                clickCallback: t ? () => {
                    "static" !== this._config.backdrop ? this.hide() : P.trigger(this._element, Mi)
                }
                : null
            })
        }
        _initializeFocusTrap() {
            return new Ei({
                trapElement: this._element
            })
        }
        _addEventListeners() {
            P.on(this._element, "keydown.dismiss.bs.offcanvas", (t => {
                "Escape" === t.key && (this._config.keyboard ? this.hide() : P.trigger(this._element, Mi))
            }
            ))
        }
        static jQueryInterface(t) {
            return this.each((function() {
                const e = Bi.getOrCreateInstance(this, t);
                if ("string" == typeof t) {
                    if (void 0 === e[t] || t.startsWith("_") || "constructor" === t)
                        throw new TypeError(`No method named "${t}"`);
                    e[t](this)
                }
            }
            ))
        }
    }
    P.on(document, "click.bs.offcanvas.data-api", '[data-bs-toggle="offcanvas"]', (function(t) {
        const e = n(this);
        if (["A", "AREA"].includes(this.tagName) && t.preventDefault(),
        l(this))
            return;
        P.one(e, Hi, ( () => {
            a(this) && this.focus()
        }
        ));
        const i = Q.findOne(ji);
        i && i !== e && Bi.getInstance(i).hide(),
        Bi.getOrCreateInstance(e).toggle(this)
    }
    )),
    P.on(window, "load.bs.offcanvas.data-api", ( () => {
        for (const t of Q.find(ji))
            Bi.getOrCreateInstance(t).show()
    }
    )),
    P.on(window, "resize.bs.offcanvas", ( () => {
        for (const t of Q.find("[aria-modal][class*=show][class*=offcanvas-]"))
            "fixed" !== getComputedStyle(t).position && Bi.getOrCreateInstance(t).hide()
    }
    )),
    R(Bi),
    g(Bi);
    const Fi = new Set(["background", "cite", "href", "itemtype", "longdesc", "poster", "src", "xlink:href"])
      , zi = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i
      , Ri = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i
      , qi = (t, e) => {
        const i = t.nodeName.toLowerCase();
        return e.includes(i) ? !Fi.has(i) || Boolean(zi.test(t.nodeValue) || Ri.test(t.nodeValue)) : e.filter((t => t instanceof RegExp)).some((t => t.test(i)))
    }
      , Vi = {
        "*": ["class", "dir", "id", "lang", "role", /^aria-[\w-]*$/i],
        a: ["target", "href", "title", "rel"],
        area: [],
        b: [],
        br: [],
        col: [],
        code: [],
        div: [],
        em: [],
        hr: [],
        h1: [],
        h2: [],
        h3: [],
        h4: [],
        h5: [],
        h6: [],
        i: [],
        img: ["src", "srcset", "alt", "title", "width", "height"],
        li: [],
        ol: [],
        p: [],
        pre: [],
        s: [],
        small: [],
        span: [],
        sub: [],
        sup: [],
        strong: [],
        u: [],
        ul: []
    }
      , Ki = {
        allowList: Vi,
        content: {},
        extraClass: "",
        html: !1,
        sanitize: !0,
        sanitizeFn: null,
        template: "<div></div>"
    }
      , Qi = {
        allowList: "object",
        content: "object",
        extraClass: "(string|function)",
        html: "boolean",
        sanitize: "boolean",
        sanitizeFn: "(null|function)",
        template: "string"
    }
      , Xi = {
        entry: "(string|element|function|null)",
        selector: "(string|element)"
    };
    class Yi extends F {
        constructor(t) {
            super(),
            this._config = this._getConfig(t)
        }
        static get Default() {
            return Ki
        }
        static get DefaultType() {
            return Qi
        }
        static get NAME() {
            return "TemplateFactory"
        }
        getContent() {
            return Object.values(this._config.content).map((t => this._resolvePossibleFunction(t))).filter(Boolean)
        }
        hasContent() {
            return this.getContent().length > 0
        }
        changeContent(t) {
            return this._checkContent(t),
            this._config.content = {
                ...this._config.content,
                ...t
            },
            this
        }
        toHtml() {
            const t = document.createElement("div");
            t.innerHTML = this._maybeSanitize(this._config.template);
            for (const [e,i] of Object.entries(this._config.content))
                this._setContent(t, i, e);
            const e = t.children[0]
              , i = this._resolvePossibleFunction(this._config.extraClass);
            return i && e.classList.add(...i.split(" ")),
            e
        }
        _typeCheckConfig(t) {
            super._typeCheckConfig(t),
            this._checkContent(t.content)
        }
        _checkContent(t) {
            for (const [e,i] of Object.entries(t))
                super._typeCheckConfig({
                    selector: e,
                    entry: i
                }, Xi)
        }
        _setContent(t, e, i) {
            const n = Q.findOne(i, t);
            n && ((e = this._resolvePossibleFunction(e)) ? o(e) ? this._putElementInTemplate(r(e), n) : this._config.html ? n.innerHTML = this._maybeSanitize(e) : n.textContent = e : n.remove())
        }
        _maybeSanitize(t) {
            return this._config.sanitize ? function(t, e, i) {
                if (!t.length)
                    return t;
                if (i && "function" == typeof i)
                    return i(t);
                const n = (new window.DOMParser).parseFromString(t, "text/html")
                  , s = [].concat(...n.body.querySelectorAll("*"));
                for (const t of s) {
                    const i = t.nodeName.toLowerCase();
                    if (!Object.keys(e).includes(i)) {
                        t.remove();
                        continue
                    }
                    const n = [].concat(...t.attributes)
                      , s = [].concat(e["*"] || [], e[i] || []);
                    for (const e of n)
                        qi(e, s) || t.removeAttribute(e.nodeName)
                }
                return n.body.innerHTML
            }(t, this._config.allowList, this._config.sanitizeFn) : t
        }
        _resolvePossibleFunction(t) {
            return "function" == typeof t ? t(this) : t
        }
        _putElementInTemplate(t, e) {
            if (this._config.html)
                return e.innerHTML = "",
                void e.append(t);
            e.textContent = t.textContent
        }
    }
    const Ui = new Set(["sanitize", "allowList", "sanitizeFn"])
      , Gi = "fade"
      , Ji = "show"
      , Zi = ".modal"
      , tn = "hide.bs.modal"
      , en = "hover"
      , nn = "focus"
      , sn = {
        AUTO: "auto",
        TOP: "top",
        RIGHT: p() ? "left" : "right",
        BOTTOM: "bottom",
        LEFT: p() ? "right" : "left"
    }
      , on = {
        allowList: Vi,
        animation: !0,
        boundary: "clippingParents",
        container: !1,
        customClass: "",
        delay: 0,
        fallbackPlacements: ["top", "right", "bottom", "left"],
        html: !1,
        offset: [0, 0],
        placement: "top",
        popperConfig: null,
        sanitize: !0,
        sanitizeFn: null,
        selector: !1,
        template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
        title: "",
        trigger: "hover focus"
    }
      , rn = {
        allowList: "object",
        animation: "boolean",
        boundary: "(string|element)",
        container: "(string|element|boolean)",
        customClass: "(string|function)",
        delay: "(number|object)",
        fallbackPlacements: "array",
        html: "boolean",
        offset: "(array|string|function)",
        placement: "(string|function)",
        popperConfig: "(null|object|function)",
        sanitize: "boolean",
        sanitizeFn: "(null|function)",
        selector: "(string|boolean)",
        template: "string",
        title: "(string|element|function)",
        trigger: "string"
    };
    class an extends z {
        constructor(t, e) {
            if (void 0 === qe)
                throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");
            super(t, e),
            this._isEnabled = !0,
            this._timeout = 0,
            this._isHovered = !1,
            this._activeTrigger = {},
            this._popper = null,
            this._templateFactory = null,
            this._newContent = null,
            this.tip = null,
            this._setListeners()
        }
        static get Default() {
            return on
        }
        static get DefaultType() {
            return rn
        }
        static get NAME() {
            return "tooltip"
        }
        enable() {
            this._isEnabled = !0
        }
        disable() {
            this._isEnabled = !1
        }
        toggleEnabled() {
            this._isEnabled = !this._isEnabled
        }
        toggle(t) {
            if (this._isEnabled) {
                if (t) {
                    const e = this._initializeOnDelegatedTarget(t);
                    return e._activeTrigger.click = !e._activeTrigger.click,
                    void (e._isWithActiveTrigger() ? e._enter() : e._leave())
                }
                this._isShown() ? this._leave() : this._enter()
            }
        }
        dispose() {
            clearTimeout(this._timeout),
            P.off(this._element.closest(Zi), tn, this._hideModalHandler),
            this.tip && this.tip.remove(),
            this._disposePopper(),
            super.dispose()
        }
        show() {
            if ("none" === this._element.style.display)
                throw new Error("Please use show on visible elements");
            if (!this._isWithContent() || !this._isEnabled)
                return;
            const t = P.trigger(this._element, this.constructor.eventName("show"))
              , e = (c(this._element) || this._element.ownerDocument.documentElement).contains(this._element);
            if (t.defaultPrevented || !e)
                return;
            this.tip && (this.tip.remove(),
            this.tip = null);
            const i = this._getTipElement();
            this._element.setAttribute("aria-describedby", i.getAttribute("id"));
            const {container: n} = this._config;
            if (this._element.ownerDocument.documentElement.contains(this.tip) || (n.append(i),
            P.trigger(this._element, this.constructor.eventName("inserted"))),
            this._popper ? this._popper.update() : this._popper = this._createPopper(i),
            i.classList.add(Ji),
            "ontouchstart"in document.documentElement)
                for (const t of [].concat(...document.body.children))
                    P.on(t, "mouseover", h);
            this._queueCallback(( () => {
                const t = this._isHovered;
                this._isHovered = !1,
                P.trigger(this._element, this.constructor.eventName("shown")),
                t && this._leave()
            }
            ), this.tip, this._isAnimated())
        }
        hide() {
            if (!this._isShown())
                return;
            if (P.trigger(this._element, this.constructor.eventName("hide")).defaultPrevented)
                return;
            const t = this._getTipElement();
            if (t.classList.remove(Ji),
            "ontouchstart"in document.documentElement)
                for (const t of [].concat(...document.body.children))
                    P.off(t, "mouseover", h);
            this._activeTrigger.click = !1,
            this._activeTrigger.focus = !1,
            this._activeTrigger.hover = !1,
            this._isHovered = !1,
            this._queueCallback(( () => {
                this._isWithActiveTrigger() || (this._isHovered || t.remove(),
                this._element.removeAttribute("aria-describedby"),
                P.trigger(this._element, this.constructor.eventName("hidden")),
                this._disposePopper())
            }
            ), this.tip, this._isAnimated())
        }
        update() {
            this._popper && this._popper.update()
        }
        _isWithContent() {
            return Boolean(this._getTitle())
        }
        _getTipElement() {
            return this.tip || (this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())),
            this.tip
        }
        _createTipElement(t) {
            const e = this._getTemplateFactory(t).toHtml();
            if (!e)
                return null;
            e.classList.remove(Gi, Ji),
            e.classList.add(`bs-${this.constructor.NAME}-auto`);
            const i = (t => {
                do {
                    t += Math.floor(1e6 * Math.random())
                } while (document.getElementById(t));
                return t
            }
            )(this.constructor.NAME).toString();
            return e.setAttribute("id", i),
            this._isAnimated() && e.classList.add(Gi),
            e
        }
        setContent(t) {
            this._newContent = t,
            this._isShown() && (this._disposePopper(),
            this.show())
        }
        _getTemplateFactory(t) {
            return this._templateFactory ? this._templateFactory.changeContent(t) : this._templateFactory = new Yi({
                ...this._config,
                content: t,
                extraClass: this._resolvePossibleFunction(this._config.customClass)
            }),
            this._templateFactory
        }
        _getContentForTemplate() {
            return {
                ".tooltip-inner": this._getTitle()
            }
        }
        _getTitle() {
            return this._resolvePossibleFunction(this._config.title) || this._config.originalTitle
        }
        _initializeOnDelegatedTarget(t) {
            return this.constructor.getOrCreateInstance(t.delegateTarget, this._getDelegateConfig())
        }
        _isAnimated() {
            return this._config.animation || this.tip && this.tip.classList.contains(Gi)
        }
        _isShown() {
            return this.tip && this.tip.classList.contains(Ji)
        }
        _createPopper(t) {
            const e = "function" == typeof this._config.placement ? this._config.placement.call(this, t, this._element) : this._config.placement
              , i = sn[e.toUpperCase()];
            return Re(this._element, t, this._getPopperConfig(i))
        }
        _getOffset() {
            const {offset: t} = this._config;
            return "string" == typeof t ? t.split(",").map((t => Number.parseInt(t, 10))) : "function" == typeof t ? e => t(e, this._element) : t
        }
        _resolvePossibleFunction(t) {
            return "function" == typeof t ? t.call(this._element) : t
        }
        _getPopperConfig(t) {
            const e = {
                placement: t,
                modifiers: [{
                    name: "flip",
                    options: {
                        fallbackPlacements: this._config.fallbackPlacements
                    }
                }, {
                    name: "offset",
                    options: {
                        offset: this._getOffset()
                    }
                }, {
                    name: "preventOverflow",
                    options: {
                        boundary: this._config.boundary
                    }
                }, {
                    name: "arrow",
                    options: {
                        element: `.${this.constructor.NAME}-arrow`
                    }
                }, {
                    name: "preSetPlacement",
                    enabled: !0,
                    phase: "beforeMain",
                    fn: t => {
                        this._getTipElement().setAttribute("data-popper-placement", t.state.placement)
                    }
                }]
            };
            return {
                ...e,
                ..."function" == typeof this._config.popperConfig ? this._config.popperConfig(e) : this._config.popperConfig
            }
        }
        _setListeners() {
            const t = this._config.trigger.split(" ");
            for (const e of t)
                if ("click" === e)
                    P.on(this._element, this.constructor.eventName("click"), this._config.selector, (t => this.toggle(t)));
                else if ("manual" !== e) {
                    const t = e === en ? this.constructor.eventName("mouseenter") : this.constructor.eventName("focusin")
                      , i = e === en ? this.constructor.eventName("mouseleave") : this.constructor.eventName("focusout");
                    P.on(this._element, t, this._config.selector, (t => {
                        const e = this._initializeOnDelegatedTarget(t);
                        e._activeTrigger["focusin" === t.type ? nn : en] = !0,
                        e._enter()
                    }
                    )),
                    P.on(this._element, i, this._config.selector, (t => {
                        const e = this._initializeOnDelegatedTarget(t);
                        e._activeTrigger["focusout" === t.type ? nn : en] = e._element.contains(t.relatedTarget),
                        e._leave()
                    }
                    ))
                }
            this._hideModalHandler = () => {
                this._element && this.hide()
            }
            ,
            P.on(this._element.closest(Zi), tn, this._hideModalHandler),
            this._config.selector ? this._config = {
                ...this._config,
                trigger: "manual",
                selector: ""
            } : this._fixTitle()
        }
        _fixTitle() {
            const t = this._config.originalTitle;
            t && (this._element.getAttribute("aria-label") || this._element.textContent.trim() || this._element.setAttribute("aria-label", t),
            this._element.removeAttribute("title"))
        }
        _enter() {
            this._isShown() || this._isHovered ? this._isHovered = !0 : (this._isHovered = !0,
            this._setTimeout(( () => {
                this._isHovered && this.show()
            }
            ), this._config.delay.show))
        }
        _leave() {
            this._isWithActiveTrigger() || (this._isHovered = !1,
            this._setTimeout(( () => {
                this._isHovered || this.hide()
            }
            ), this._config.delay.hide))
        }
        _setTimeout(t, e) {
            clearTimeout(this._timeout),
            this._timeout = setTimeout(t, e)
        }
        _isWithActiveTrigger() {
            return Object.values(this._activeTrigger).includes(!0)
        }
        _getConfig(t) {
            const e = B.getDataAttributes(this._element);
            for (const t of Object.keys(e))
                Ui.has(t) && delete e[t];
            return t = {
                ...e,
                ..."object" == typeof t && t ? t : {}
            },
            t = this._mergeConfigObj(t),
            t = this._configAfterMerge(t),
            this._typeCheckConfig(t),
            t
        }
        _configAfterMerge(t) {
            return t.container = !1 === t.container ? document.body : r(t.container),
            "number" == typeof t.delay && (t.delay = {
                show: t.delay,
                hide: t.delay
            }),
            t.originalTitle = this._element.getAttribute("title") || "",
            "number" == typeof t.title && (t.title = t.title.toString()),
            "number" == typeof t.content && (t.content = t.content.toString()),
            t
        }
        _getDelegateConfig() {
            const t = {};
            for (const e in this._config)
                this.constructor.Default[e] !== this._config[e] && (t[e] = this._config[e]);
            return t
        }
        _disposePopper() {
            this._popper && (this._popper.destroy(),
            this._popper = null)
        }
        static jQueryInterface(t) {
            return this.each((function() {
                const e = an.getOrCreateInstance(this, t);
                if ("string" == typeof t) {
                    if (void 0 === e[t])
                        throw new TypeError(`No method named "${t}"`);
                    e[t]()
                }
            }
            ))
        }
    }
    g(an);
    const ln = {
        ...an.Default,
        content: "",
        offset: [0, 8],
        placement: "right",
        template: '<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',
        trigger: "click"
    }
      , cn = {
        ...an.DefaultType,
        content: "(null|string|element|function)"
    };
    class hn extends an {
        static get Default() {
            return ln
        }
        static get DefaultType() {
            return cn
        }
        static get NAME() {
            return "popover"
        }
        _isWithContent() {
            return this._getTitle() || this._getContent()
        }
        _getContentForTemplate() {
            return {
                ".popover-header": this._getTitle(),
                ".popover-body": this._getContent()
            }
        }
        _getContent() {
            return this._resolvePossibleFunction(this._config.content)
        }
        static jQueryInterface(t) {
            return this.each((function() {
                const e = hn.getOrCreateInstance(this, t);
                if ("string" == typeof t) {
                    if (void 0 === e[t])
                        throw new TypeError(`No method named "${t}"`);
                    e[t]()
                }
            }
            ))
        }
    }
    g(hn);
    const dn = "click.bs.scrollspy"
      , un = "active"
      , fn = "[href]"
      , pn = {
        offset: null,
        rootMargin: "0px 0px -25%",
        smoothScroll: !1,
        target: null
    }
      , gn = {
        offset: "(number|null)",
        rootMargin: "string",
        smoothScroll: "boolean",
        target: "element"
    };
    class mn extends z {
        constructor(t, e) {
            super(t, e),
            this._targetLinks = new Map,
            this._observableSections = new Map,
            this._rootElement = "visible" === getComputedStyle(this._element).overflowY ? null : this._element,
            this._activeTarget = null,
            this._observer = null,
            this._previousScrollData = {
                visibleEntryTop: 0,
                parentScrollTop: 0
            },
            this.refresh()
        }
        static get Default() {
            return pn
        }
        static get DefaultType() {
            return gn
        }
        static get NAME() {
            return "scrollspy"
        }
        refresh() {
            this._initializeTargetsAndObservables(),
            this._maybeEnableSmoothScroll(),
            this._observer ? this._observer.disconnect() : this._observer = this._getNewObserver();
            for (const t of this._observableSections.values())
                this._observer.observe(t)
        }
        dispose() {
            this._observer.disconnect(),
            super.dispose()
        }
        _configAfterMerge(t) {
            return t.target = r(t.target) || document.body,
            t
        }
        _maybeEnableSmoothScroll() {
            this._config.smoothScroll && (P.off(this._config.target, dn),
            P.on(this._config.target, dn, fn, (t => {
                const e = this._observableSections.get(t.target.hash);
                if (e) {
                    t.preventDefault();
                    const i = this._rootElement || window
                      , n = e.offsetTop - this._element.offsetTop;
                    if (i.scrollTo)
                        return void i.scrollTo({
                            top: n,
                            behavior: "smooth"
                        });
                    i.scrollTop = n
                }
            }
            )))
        }
        _getNewObserver() {
            const t = {
                root: this._rootElement,
                threshold: [.1, .5, 1],
                rootMargin: this._getRootMargin()
            };
            return new IntersectionObserver((t => this._observerCallback(t)),t)
        }
        _observerCallback(t) {
            const e = t => this._targetLinks.get(`#${t.target.id}`)
              , i = t => {
                this._previousScrollData.visibleEntryTop = t.target.offsetTop,
                this._process(e(t))
            }
              , n = (this._rootElement || document.documentElement).scrollTop
              , s = n >= this._previousScrollData.parentScrollTop;
            this._previousScrollData.parentScrollTop = n;
            for (const o of t) {
                if (!o.isIntersecting) {
                    this._activeTarget = null,
                    this._clearActiveClass(e(o));
                    continue
                }
                const t = o.target.offsetTop >= this._previousScrollData.visibleEntryTop;
                if (s && t) {
                    if (i(o),
                    !n)
                        return
                } else
                    s || t || i(o)
            }
        }
        _getRootMargin() {
            return this._config.offset ? `${this._config.offset}px 0px -30%` : this._config.rootMargin
        }
        _initializeTargetsAndObservables() {
            this._targetLinks = new Map,
            this._observableSections = new Map;
            const t = Q.find(fn, this._config.target);
            for (const e of t) {
                if (!e.hash || l(e))
                    continue;
                const t = Q.findOne(e.hash, this._element);
                a(t) && (this._targetLinks.set(e.hash, e),
                this._observableSections.set(e.hash, t))
            }
        }
        _process(t) {
            this._activeTarget !== t && (this._clearActiveClass(this._config.target),
            this._activeTarget = t,
            t.classList.add(un),
            this._activateParents(t),
            P.trigger(this._element, "activate.bs.scrollspy", {
                relatedTarget: t
            }))
        }
        _activateParents(t) {
            if (t.classList.contains("dropdown-item"))
                Q.findOne(".dropdown-toggle", t.closest(".dropdown")).classList.add(un);
            else
                for (const e of Q.parents(t, ".nav, .list-group"))
                    for (const t of Q.prev(e, ".nav-link, .nav-item > .nav-link, .list-group-item"))
                        t.classList.add(un)
        }
        _clearActiveClass(t) {
            t.classList.remove(un);
            const e = Q.find("[href].active", t);
            for (const t of e)
                t.classList.remove(un)
        }
        static jQueryInterface(t) {
            return this.each((function() {
                const e = mn.getOrCreateInstance(this, t);
                if ("string" == typeof t) {
                    if (void 0 === e[t] || t.startsWith("_") || "constructor" === t)
                        throw new TypeError(`No method named "${t}"`);
                    e[t]()
                }
            }
            ))
        }
    }
    P.on(window, "load.bs.scrollspy.data-api", ( () => {
        for (const t of Q.find('[data-bs-spy="scroll"]'))
            mn.getOrCreateInstance(t)
    }
    )),
    g(mn);
    const _n = "ArrowLeft"
      , bn = "ArrowRight"
      , vn = "ArrowUp"
      , yn = "ArrowDown"
      , wn = "active"
      , An = "fade"
      , En = "show"
      , Tn = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'
      , Cn = `.nav-link:not(.dropdown-toggle), .list-group-item:not(.dropdown-toggle), [role="tab"]:not(.dropdown-toggle), ${Tn}`;
    class On extends z {
        constructor(t) {
            super(t),
            this._parent = this._element.closest('.list-group, .nav, [role="tablist"]'),
            this._parent && (this._setInitialAttributes(this._parent, this._getChildren()),
            P.on(this._element, "keydown.bs.tab", (t => this._keydown(t))))
        }
        static get NAME() {
            return "tab"
        }
        show() {
            const t = this._element;
            if (this._elemIsActive(t))
                return;
            const e = this._getActiveElem()
              , i = e ? P.trigger(e, "hide.bs.tab", {
                relatedTarget: t
            }) : null;
            P.trigger(t, "show.bs.tab", {
                relatedTarget: e
            }).defaultPrevented || i && i.defaultPrevented || (this._deactivate(e, t),
            this._activate(t, e))
        }
        _activate(t, e) {
            t && (t.classList.add(wn),
            this._activate(n(t)),
            this._queueCallback(( () => {
                "tab" === t.getAttribute("role") ? (t.focus(),
                t.removeAttribute("tabindex"),
                t.setAttribute("aria-selected", !0),
                this._toggleDropDown(t, !0),
                P.trigger(t, "shown.bs.tab", {
                    relatedTarget: e
                })) : t.classList.add(En)
            }
            ), t, t.classList.contains(An)))
        }
        _deactivate(t, e) {
            t && (t.classList.remove(wn),
            t.blur(),
            this._deactivate(n(t)),
            this._queueCallback(( () => {
                "tab" === t.getAttribute("role") ? (t.setAttribute("aria-selected", !1),
                t.setAttribute("tabindex", "-1"),
                this._toggleDropDown(t, !1),
                P.trigger(t, "hidden.bs.tab", {
                    relatedTarget: e
                })) : t.classList.remove(En)
            }
            ), t, t.classList.contains(An)))
        }
        _keydown(t) {
            if (![_n, bn, vn, yn].includes(t.key))
                return;
            t.stopPropagation(),
            t.preventDefault();
            const e = [bn, yn].includes(t.key)
              , i = b(this._getChildren().filter((t => !l(t))), t.target, e, !0);
            i && On.getOrCreateInstance(i).show()
        }
        _getChildren() {
            return Q.find(Cn, this._parent)
        }
        _getActiveElem() {
            return this._getChildren().find((t => this._elemIsActive(t))) || null
        }
        _setInitialAttributes(t, e) {
            this._setAttributeIfNotExists(t, "role", "tablist");
            for (const t of e)
                this._setInitialAttributesOnChild(t)
        }
        _setInitialAttributesOnChild(t) {
            t = this._getInnerElement(t);
            const e = this._elemIsActive(t)
              , i = this._getOuterElement(t);
            t.setAttribute("aria-selected", e),
            i !== t && this._setAttributeIfNotExists(i, "role", "presentation"),
            e || t.setAttribute("tabindex", "-1"),
            this._setAttributeIfNotExists(t, "role", "tab"),
            this._setInitialAttributesOnTargetPanel(t)
        }
        _setInitialAttributesOnTargetPanel(t) {
            const e = n(t);
            e && (this._setAttributeIfNotExists(e, "role", "tabpanel"),
            t.id && this._setAttributeIfNotExists(e, "aria-labelledby", `#${t.id}`))
        }
        _toggleDropDown(t, e) {
            const i = this._getOuterElement(t);
            if (!i.classList.contains("dropdown"))
                return;
            const n = (t, n) => {
                const s = Q.findOne(t, i);
                s && s.classList.toggle(n, e)
            }
            ;
            n(".dropdown-toggle", wn),
            n(".dropdown-menu", En),
            n(".dropdown-item", wn),
            i.setAttribute("aria-expanded", e)
        }
        _setAttributeIfNotExists(t, e, i) {
            t.hasAttribute(e) || t.setAttribute(e, i)
        }
        _elemIsActive(t) {
            return t.classList.contains(wn)
        }
        _getInnerElement(t) {
            return t.matches(Cn) ? t : Q.findOne(Cn, t)
        }
        _getOuterElement(t) {
            return t.closest(".nav-item, .list-group-item") || t
        }
        static jQueryInterface(t) {
            return this.each((function() {
                const e = On.getOrCreateInstance(this);
                if ("string" == typeof t) {
                    if (void 0 === e[t] || t.startsWith("_") || "constructor" === t)
                        throw new TypeError(`No method named "${t}"`);
                    e[t]()
                }
            }
            ))
        }
    }
    P.on(document, "click.bs.tab", Tn, (function(t) {
        ["A", "AREA"].includes(this.tagName) && t.preventDefault(),
        l(this) || On.getOrCreateInstance(this).show()
    }
    )),
    P.on(window, "load.bs.tab", ( () => {
        for (const t of Q.find('.active[data-bs-toggle="tab"], .active[data-bs-toggle="pill"], .active[data-bs-toggle="list"]'))
            On.getOrCreateInstance(t)
    }
    )),
    g(On);
    const xn = "hide"
      , kn = "show"
      , Ln = "showing"
      , Dn = {
        animation: "boolean",
        autohide: "boolean",
        delay: "number"
    }
      , Sn = {
        animation: !0,
        autohide: !0,
        delay: 5e3
    };
    class In extends z {
        constructor(t, e) {
            super(t, e),
            this._timeout = null,
            this._hasMouseInteraction = !1,
            this._hasKeyboardInteraction = !1,
            this._setListeners()
        }
        static get Default() {
            return Sn
        }
        static get DefaultType() {
            return Dn
        }
        static get NAME() {
            return "toast"
        }
        show() {
            P.trigger(this._element, "show.bs.toast").defaultPrevented || (this._clearTimeout(),
            this._config.animation && this._element.classList.add("fade"),
            this._element.classList.remove(xn),
            d(this._element),
            this._element.classList.add(kn, Ln),
            this._queueCallback(( () => {
                this._element.classList.remove(Ln),
                P.trigger(this._element, "shown.bs.toast"),
                this._maybeScheduleHide()
            }
            ), this._element, this._config.animation))
        }
        hide() {
            this.isShown() && (P.trigger(this._element, "hide.bs.toast").defaultPrevented || (this._element.classList.add(Ln),
            this._queueCallback(( () => {
                this._element.classList.add(xn),
                this._element.classList.remove(Ln, kn),
                P.trigger(this._element, "hidden.bs.toast")
            }
            ), this._element, this._config.animation)))
        }
        dispose() {
            this._clearTimeout(),
            this.isShown() && this._element.classList.remove(kn),
            super.dispose()
        }
        isShown() {
            return this._element.classList.contains(kn)
        }
        _maybeScheduleHide() {
            this._config.autohide && (this._hasMouseInteraction || this._hasKeyboardInteraction || (this._timeout = setTimeout(( () => {
                this.hide()
            }
            ), this._config.delay)))
        }
        _onInteraction(t, e) {
            switch (t.type) {
            case "mouseover":
            case "mouseout":
                this._hasMouseInteraction = e;
                break;
            case "focusin":
            case "focusout":
                this._hasKeyboardInteraction = e
            }
            if (e)
                return void this._clearTimeout();
            const i = t.relatedTarget;
            this._element === i || this._element.contains(i) || this._maybeScheduleHide()
        }
        _setListeners() {
            P.on(this._element, "mouseover.bs.toast", (t => this._onInteraction(t, !0))),
            P.on(this._element, "mouseout.bs.toast", (t => this._onInteraction(t, !1))),
            P.on(this._element, "focusin.bs.toast", (t => this._onInteraction(t, !0))),
            P.on(this._element, "focusout.bs.toast", (t => this._onInteraction(t, !1)))
        }
        _clearTimeout() {
            clearTimeout(this._timeout),
            this._timeout = null
        }
        static jQueryInterface(t) {
            return this.each((function() {
                const e = In.getOrCreateInstance(this, t);
                if ("string" == typeof t) {
                    if (void 0 === e[t])
                        throw new TypeError(`No method named "${t}"`);
                    e[t](this)
                }
            }
            ))
        }
    }
    return R(In),
    g(In),
    {
        Alert: q,
        Button: K,
        Carousel: at,
        Collapse: pt,
        Dropdown: li,
        Modal: Si,
        Offcanvas: Bi,
        Popover: hn,
        ScrollSpy: mn,
        Tab: On,
        Toast: In,
        Tooltip: an
    }
}
));
//# sourceMappingURL=bootstrap.bundle.min.js.map
/*! 
 * jQuery Steps v1.1.0 - 09/04/2014
 * Copyright (c) 2014 Rafael Staib (http://www.jquery-steps.com)
 * Licensed under MIT http://www.opensource.org/licenses/MIT
 */
!function(a, b) {
    function c(a, b) {
        o(a).push(b)
    }
    function d(d, e, f) {
        var g = d.children(e.headerTag)
          , h = d.children(e.bodyTag);
        g.length > h.length ? R(Z, "contents") : g.length < h.length && R(Z, "titles");
        var i = e.startIndex;
        if (f.stepCount = g.length,
        e.saveState && a.cookie) {
            var j = a.cookie(U + q(d))
              , k = parseInt(j, 0);
            !isNaN(k) && k < f.stepCount && (i = k)
        }
        f.currentIndex = i,
        g.each(function(e) {
            var f = a(this)
              , g = h.eq(e)
              , i = g.data("mode")
              , j = null == i ? $.html : r($, /^\s*$/.test(i) || isNaN(i) ? i : parseInt(i, 0))
              , k = j === $.html || g.data("url") === b ? "" : g.data("url")
              , l = j !== $.html && "1" === g.data("loaded")
              , m = a.extend({}, bb, {
                title: f.html(),
                content: j === $.html ? g.html() : "",
                contentUrl: k,
                contentMode: j,
                contentLoaded: l
            });
            c(d, m)
        })
    }
    function e(a) {
        a.triggerHandler("canceled")
    }
    function f(a, b) {
        return a.currentIndex - b
    }
    function g(b, c) {
        var d = i(b);
        b.unbind(d).removeData("uid").removeData("options").removeData("state").removeData("steps").removeData("eventNamespace").find(".actions a").unbind(d),
        b.removeClass(c.clearFixCssClass + " vertical");
        var e = b.find(".content > *");
        e.removeData("loaded").removeData("mode").removeData("url"),
        e.removeAttr("id").removeAttr("role").removeAttr("tabindex").removeAttr("class").removeAttr("style")._removeAria("labelledby")._removeAria("hidden"),
        b.find(".content > [data-mode='async'],.content > [data-mode='iframe']").empty();
        var f = a('<{0} class="{1}"></{0}>'.format(b.get(0).tagName, b.attr("class")))
          , g = b._id();
        return null != g && "" !== g && f._id(g),
        f.html(b.find(".content").html()),
        b.after(f),
        b.remove(),
        f
    }
    function h(a, b) {
        var c = a.find(".steps li").eq(b.currentIndex);
        a.triggerHandler("finishing", [b.currentIndex]) ? (c.addClass("done").removeClass("error"),
        a.triggerHandler("finished", [b.currentIndex])) : c.addClass("error")
    }
    function i(a) {
        var b = a.data("eventNamespace");
        return null == b && (b = "." + q(a),
        a.data("eventNamespace", b)),
        b
    }
    function j(a, b) {
        var c = q(a);
        return a.find("#" + c + V + b)
    }
    function k(a, b) {
        var c = q(a);
        return a.find("#" + c + W + b)
    }
    function l(a, b) {
        var c = q(a);
        return a.find("#" + c + X + b)
    }
    function m(a) {
        return a.data("options")
    }
    function n(a) {
        return a.data("state")
    }
    function o(a) {
        return a.data("steps")
    }
    function p(a, b) {
        var c = o(a);
        return (0 > b || b >= c.length) && R(Y),
        c[b]
    }
    function q(a) {
        var b = a.data("uid");
        return null == b && (b = a._id(),
        null == b && (b = "steps-uid-".concat(T),
        a._id(b)),
        T++,
        a.data("uid", b)),
        b
    }
    function r(a, c) {
        if (S("enumType", a),
        S("keyOrValue", c),
        "string" == typeof c) {
            var d = a[c];
            return d === b && R("The enum key '{0}' does not exist.", c),
            d
        }
        if ("number" == typeof c) {
            for (var e in a)
                if (a[e] === c)
                    return c;
            R("Invalid enum value '{0}'.", c)
        } else
            R("Invalid key or value type.")
    }
    function s(a, b, c) {
        return B(a, b, c, v(c, 1))
    }
    function t(a, b, c) {
        return B(a, b, c, f(c, 1))
    }
    function u(a, b, c, d) {
        if ((0 > d || d >= c.stepCount) && R(Y),
        !(b.forceMoveForward && d < c.currentIndex)) {
            var e = c.currentIndex;
            return a.triggerHandler("stepChanging", [c.currentIndex, d]) ? (c.currentIndex = d,
            O(a, b, c),
            E(a, b, c, e),
            D(a, b, c),
            A(a, b, c),
            P(a, b, c, d, e, function() {
                a.triggerHandler("stepChanged", [d, e])
            })) : a.find(".steps li").eq(e).addClass("error"),
            !0
        }
    }
    function v(a, b) {
        return a.currentIndex + b
    }
    function w(b) {
        var c = a.extend(!0, {}, cb, b);
        return this.each(function() {
            var b = a(this)
              , e = {
                currentIndex: c.startIndex,
                currentStep: null,
                stepCount: 0,
                transitionElement: null
            };
            b.data("options", c),
            b.data("state", e),
            b.data("steps", []),
            d(b, c, e),
            J(b, c, e),
            G(b, c),
            c.autoFocus && 0 === T && j(b, c.startIndex).focus(),
            b.triggerHandler("init", [c.startIndex])
        })
    }
    function x(b, c, d, e, f) {
        (0 > e || e > d.stepCount) && R(Y),
        f = a.extend({}, bb, f),
        y(b, e, f),
        d.currentIndex !== d.stepCount && d.currentIndex >= e && (d.currentIndex++,
        O(b, c, d)),
        d.stepCount++;
        var g = b.find(".content")
          , h = a("<{0}>{1}</{0}>".format(c.headerTag, f.title))
          , i = a("<{0}></{0}>".format(c.bodyTag));
        return (null == f.contentMode || f.contentMode === $.html) && i.html(f.content),
        0 === e ? g.prepend(i).prepend(h) : k(b, e - 1).after(i).after(h),
        K(b, d, i, e),
        N(b, c, d, h, e),
        F(b, c, d, e),
        e === d.currentIndex && E(b, c, d),
        D(b, c, d),
        b
    }
    function y(a, b, c) {
        o(a).splice(b, 0, c)
    }
    function z(b) {
        var c = a(this)
          , d = m(c)
          , e = n(c);
        if (d.suppressPaginationOnFocus && c.find(":focus").is(":input"))
            return b.preventDefault(),
            !1;
        var f = {
            left: 37,
            right: 39
        };
        b.keyCode === f.left ? (b.preventDefault(),
        t(c, d, e)) : b.keyCode === f.right && (b.preventDefault(),
        s(c, d, e))
    }
    function A(b, c, d) {
        if (d.stepCount > 0) {
            var e = d.currentIndex
              , f = p(b, e);
            if (!c.enableContentCache || !f.contentLoaded)
                switch (r($, f.contentMode)) {
                case $.iframe:
                    b.find(".content > .body").eq(d.currentIndex).empty().html('<iframe src="' + f.contentUrl + '" frameborder="0" scrolling="no" />').data("loaded", "1");
                    break;
                case $.async:
                    var g = k(b, e)._aria("busy", "true").empty().append(M(c.loadingTemplate, {
                        text: c.labels.loading
                    }));
                    a.ajax({
                        url: f.contentUrl,
                        cache: !1
                    }).done(function(a) {
                        g.empty().html(a)._aria("busy", "false").data("loaded", "1"),
                        b.triggerHandler("contentLoaded", [e])
                    })
                }
        }
    }
    function B(a, b, c, d) {
        var e = c.currentIndex;
        if (d >= 0 && d < c.stepCount && !(b.forceMoveForward && d < c.currentIndex)) {
            var f = j(a, d)
              , g = f.parent()
              , h = g.hasClass("disabled");
            return g._enableAria(),
            f.click(),
            e === c.currentIndex && h ? (g._enableAria(!1),
            !1) : !0
        }
        return !1
    }
    function C(b) {
        b.preventDefault();
        var c = a(this)
          , d = c.parent().parent().parent().parent()
          , f = m(d)
          , g = n(d)
          , i = c.attr("href");
        switch (i.substring(i.lastIndexOf("#") + 1)) {
        case "cancel":
            e(d);
            break;
        case "finish":
            h(d, g);
            break;
        case "next":
            s(d, f, g);
            break;
        case "previous":
            t(d, f, g)
        }
    }
    function D(a, b, c) {
        if (b.enablePagination) {
            var d = a.find(".actions a[href$='#finish']").parent()
              , e = a.find(".actions a[href$='#next']").parent();
            if (!b.forceMoveForward) {
                var f = a.find(".actions a[href$='#previous']").parent();
                f._enableAria(c.currentIndex > 0)
            }
            b.enableFinishButton && b.showFinishButtonAlways ? (d._enableAria(c.stepCount > 0),
            e._enableAria(c.stepCount > 1 && c.stepCount > c.currentIndex + 1)) : (d._showAria(b.enableFinishButton && c.stepCount === c.currentIndex + 1),
            e._showAria(0 === c.stepCount || c.stepCount > c.currentIndex + 1)._enableAria(c.stepCount > c.currentIndex + 1 || !b.enableFinishButton))
        }
    }
    function E(b, c, d, e) {
        var f = j(b, d.currentIndex)
          , g = a('<span class="current-info audible">' + c.labels.current + " </span>")
          , h = b.find(".content > .title");
        if (null != e) {
            var i = j(b, e);
            i.parent().addClass("done").removeClass("error")._selectAria(!1),
            h.eq(e).removeClass("current").next(".body").removeClass("current"),
            g = i.find(".current-info"),
            f.focus()
        }
        f.prepend(g).parent()._selectAria().removeClass("done")._enableAria(),
        h.eq(d.currentIndex).addClass("current").next(".body").addClass("current")
    }
    function F(a, b, c, d) {
        for (var e = q(a), f = d; f < c.stepCount; f++) {
            var g = e + V + f
              , h = e + W + f
              , i = e + X + f
              , j = a.find(".title").eq(f)._id(i);
            a.find(".steps a").eq(f)._id(g)._aria("controls", h).attr("href", "#" + i).html(M(b.titleTemplate, {
                index: f + 1,
                title: j.html()
            })),
            a.find(".body").eq(f)._id(h)._aria("labelledby", i)
        }
    }
    function G(a, b) {
        var c = i(a);
        a.bind("canceled" + c, b.onCanceled),
        a.bind("contentLoaded" + c, b.onContentLoaded),
        a.bind("finishing" + c, b.onFinishing),
        a.bind("finished" + c, b.onFinished),
        a.bind("init" + c, b.onInit),
        a.bind("stepChanging" + c, b.onStepChanging),
        a.bind("stepChanged" + c, b.onStepChanged),
        b.enableKeyNavigation && a.bind("keyup" + c, z),
        a.find(".actions a").bind("click" + c, C)
    }
    function H(a, b, c, d) {
        return 0 > d || d >= c.stepCount || c.currentIndex === d ? !1 : (I(a, d),
        c.currentIndex > d && (c.currentIndex--,
        O(a, b, c)),
        c.stepCount--,
        l(a, d).remove(),
        k(a, d).remove(),
        j(a, d).parent().remove(),
        0 === d && a.find(".steps li").first().addClass("first"),
        d === c.stepCount && a.find(".steps li").eq(d).addClass("last"),
        F(a, b, c, d),
        D(a, b, c),
        !0)
    }
    function I(a, b) {
        o(a).splice(b, 1)
    }
    function J(b, c, d) {
        var e = '<{0} class="{1}">{2}</{0}>'
          , f = r(_, c.stepsOrientation)
          , g = f === _.vertical ? " vertical" : ""
          , h = a(e.format(c.contentContainerTag, "content " + c.clearFixCssClass, b.html()))
          , i = a(e.format(c.stepsContainerTag, "steps " + c.clearFixCssClass, '<ul role="tablist"></ul>'))
          , j = h.children(c.headerTag)
          , k = h.children(c.bodyTag);
        b.attr("role", "application").empty().append(i).append(h).addClass(c.cssClass + " " + c.clearFixCssClass + g),
        k.each(function(c) {
            K(b, d, a(this), c)
        }),
        j.each(function(e) {
            N(b, c, d, a(this), e)
        }),
        E(b, c, d),
        L(b, c, d)
    }
    function K(a, b, c, d) {
        var e = q(a)
          , f = e + W + d
          , g = e + X + d;
        c._id(f).attr("role", "tabpanel")._aria("labelledby", g).addClass("body")._showAria(b.currentIndex === d)
    }
    function L(a, b, c) {
        if (b.enablePagination) {
            var d = '<{0} class="actions {1}"><ul role="menu" aria-label="{2}">{3}</ul></{0}>'
              , e = '<li><a href="#{0}" role="menuitem">{1}</a></li>'
              , f = "";
            b.forceMoveForward || (f += e.format("previous", b.labels.previous)),
            f += e.format("next", b.labels.next),
            b.enableFinishButton && (f += e.format("finish", b.labels.finish)),
            b.enableCancelButton && (f += e.format("cancel", b.labels.cancel)),
            a.append(d.format(b.actionContainerTag, b.clearFixCssClass, b.labels.pagination, f)),
            D(a, b, c),
            A(a, b, c)
        }
    }
    function M(a, c) {
        for (var d = a.match(/#([a-z]*)#/gi), e = 0; e < d.length; e++) {
            var f = d[e]
              , g = f.substring(1, f.length - 1);
            c[g] === b && R("The key '{0}' does not exist in the substitute collection!", g),
            a = a.replace(f, c[g])
        }
        return a
    }
    function N(b, c, d, e, f) {
        var g = q(b)
          , h = g + V + f
          , j = g + W + f
          , k = g + X + f
          , l = b.find(".steps > ul")
          , m = M(c.titleTemplate, {
            index: f + 1,
            title: e.html()
        })
          , n = a('<li role="tab"><a id="' + h + '" href="#' + k + '" aria-controls="' + j + '">' + m + "</a></li>");
        n._enableAria(c.enableAllSteps || d.currentIndex > f),
        d.currentIndex > f && n.addClass("done"),
        e._id(k).attr("tabindex", "-1").addClass("title"),
        0 === f ? l.prepend(n) : l.find("li").eq(f - 1).after(n),
        0 === f && l.find("li").removeClass("first").eq(f).addClass("first"),
        f === d.stepCount - 1 && l.find("li").removeClass("last").eq(f).addClass("last"),
        n.children("a").bind("click" + i(b), Q)
    }
    function O(b, c, d) {
        c.saveState && a.cookie && a.cookie(U + q(b), d.currentIndex)
    }
    function P(b, c, d, e, f, g) {
        var h = b.find(".content > .body")
          , i = r(ab, c.transitionEffect)
          , j = c.transitionEffectSpeed
          , k = h.eq(e)
          , l = h.eq(f);
        switch (i) {
        case ab.fade:
        case ab.slide:
            var m = i === ab.fade ? "fadeOut" : "slideUp"
              , o = i === ab.fade ? "fadeIn" : "slideDown";
            d.transitionElement = k,
            l[m](j, function() {
                var b = a(this)._showAria(!1).parent().parent()
                  , c = n(b);
                c.transitionElement && (c.transitionElement[o](j, function() {
                    a(this)._showAria()
                }).promise().done(g),
                c.transitionElement = null)
            });
            break;
        case ab.slideLeft:
            var p = l.outerWidth(!0)
              , q = e > f ? -p : p
              , s = e > f ? p : -p;
            a.when(l.animate({
                left: q
            }, j, function() {
                a(this)._showAria(!1)
            }), k.css("left", s + "px")._showAria().animate({
                left: 0
            }, j)).done(g);
            break;
        default:
            a.when(l._showAria(!1), k._showAria()).done(g)
        }
    }
    function Q(b) {
        b.preventDefault();
        var c = a(this)
          , d = c.parent().parent().parent().parent()
          , e = m(d)
          , f = n(d)
          , g = f.currentIndex;
        if (c.parent().is(":not(.disabled):not(.current)")) {
            var h = c.attr("href")
              , i = parseInt(h.substring(h.lastIndexOf("-") + 1), 0);
            u(d, e, f, i)
        }
        return g === f.currentIndex ? (j(d, g).focus(),
        !1) : void 0
    }
    function R(a) {
        throw arguments.length > 1 && (a = a.format(Array.prototype.slice.call(arguments, 1))),
        new Error(a)
    }
    function S(a, b) {
        null == b && R("The argument '{0}' is null or undefined.", a)
    }
    a.fn.extend({
        _aria: function(a, b) {
            return this.attr("aria-" + a, b)
        },
        _removeAria: function(a) {
            return this.removeAttr("aria-" + a)
        },
        _enableAria: function(a) {
            return null == a || a ? this.removeClass("disabled")._aria("disabled", "false") : this.addClass("disabled")._aria("disabled", "true")
        },
        _showAria: function(a) {
            return null == a || a ? this.show()._aria("hidden", "false") : this.hide()._aria("hidden", "true")
        },
        _selectAria: function(a) {
            return null == a || a ? this.addClass("current")._aria("selected", "true") : this.removeClass("current")._aria("selected", "false")
        },
        _id: function(a) {
            return a ? this.attr("id", a) : this.attr("id")
        }
    }),
    String.prototype.format || (String.prototype.format = function() {
        for (var b = 1 === arguments.length && a.isArray(arguments[0]) ? arguments[0] : arguments, c = this, d = 0; d < b.length; d++) {
            var e = new RegExp("\\{" + d + "\\}","gm");
            c = c.replace(e, b[d])
        }
        return c
    }
    );
    var T = 0
      , U = "jQu3ry_5teps_St@te_"
      , V = "-t-"
      , W = "-p-"
      , X = "-h-"
      , Y = "Index out of range."
      , Z = "One or more corresponding step {0} are missing.";
    a.fn.steps = function(b) {
        return a.fn.steps[b] ? a.fn.steps[b].apply(this, Array.prototype.slice.call(arguments, 1)) : "object" != typeof b && b ? void a.error("Method " + b + " does not exist on jQuery.steps") : w.apply(this, arguments)
    }
    ,
    a.fn.steps.add = function(a) {
        var b = n(this);
        return x(this, m(this), b, b.stepCount, a)
    }
    ,
    a.fn.steps.destroy = function() {
        return g(this, m(this))
    }
    ,
    a.fn.steps.finish = function() {
        h(this, n(this))
    }
    ,
    a.fn.steps.getCurrentIndex = function() {
        return n(this).currentIndex
    }
    ,
    a.fn.steps.getCurrentStep = function() {
        return p(this, n(this).currentIndex)
    }
    ,
    a.fn.steps.getStep = function(a) {
        return p(this, a)
    }
    ,
    a.fn.steps.insert = function(a, b) {
        return x(this, m(this), n(this), a, b)
    }
    ,
    a.fn.steps.next = function() {
        return s(this, m(this), n(this))
    }
    ,
    a.fn.steps.previous = function() {
        return t(this, m(this), n(this))
    }
    ,
    a.fn.steps.remove = function(a) {
        return H(this, m(this), n(this), a)
    }
    ,
    a.fn.steps.setStep = function() {
        throw new Error("Not yet implemented!")
    }
    ,
    a.fn.steps.skip = function() {
        throw new Error("Not yet implemented!")
    }
    ;
    var $ = a.fn.steps.contentMode = {
        html: 0,
        iframe: 1,
        async: 2
    }
      , _ = a.fn.steps.stepsOrientation = {
        horizontal: 0,
        vertical: 1
    }
      , ab = a.fn.steps.transitionEffect = {
        none: 0,
        fade: 1,
        slide: 2,
        slideLeft: 3
    }
      , bb = a.fn.steps.stepModel = {
        title: "",
        content: "",
        contentUrl: "",
        contentMode: $.html,
        contentLoaded: !1
    }
      , cb = a.fn.steps.defaults = {
        headerTag: "h1",
        bodyTag: "div",
        contentContainerTag: "div",
        actionContainerTag: "div",
        stepsContainerTag: "div",
        cssClass: "wizard",
        clearFixCssClass: "clearfix",
        stepsOrientation: _.horizontal,
        titleTemplate: '<span class="number">#index#.</span> #title#',
        loadingTemplate: '<span class="spinner"></span> #text#',
        autoFocus: !1,
        enableAllSteps: !1,
        enableKeyNavigation: !0,
        enablePagination: !0,
        suppressPaginationOnFocus: !0,
        enableContentCache: !0,
        enableCancelButton: !1,
        enableFinishButton: !0,
        preloadContent: !1,
        showFinishButtonAlways: !1,
        forceMoveForward: !1,
        saveState: !1,
        startIndex: 0,
        transitionEffect: ab.none,
        transitionEffectSpeed: 200,
        onStepChanging: function() {
            return !0
        },
        onStepChanged: function() {},
        onCanceled: function() {},
        onFinishing: function() {
            return !0
        },
        onFinished: function() {},
        onContentLoaded: function() {},
        onInit: function() {},
        labels: {
            cancel: "Cancel",
            current: "current step:",
            pagination: "Pagination",
            finish: "Finish",
            next: "Next",
            previous: "Previous",
            loading: "Loading ..."
        }
    }
}(jQuery);
/*!
* metismenu https://github.com/onokumus/metismenu#readme
* A jQuery menu plugin
* @version 3.0.6
* @author Osman Nuri Okumus <onokumus@gmail.com> (https://github.com/onokumus)
* @license: MIT 
*/
!function(e, n) {
    "object" == typeof exports && "undefined" != typeof module ? module.exports = n(require("jquery")) : "function" == typeof define && define.amd ? define(["jquery"], n) : (e = e || self).metisMenu = n(e.jQuery)
}(this, function(o) {
    "use strict";
    function a() {
        return (a = Object.assign || function(e) {
            for (var n = 1; n < arguments.length; n++) {
                var t = arguments[n];
                for (var i in t)
                    Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i])
            }
            return e
        }
        ).apply(this, arguments)
    }
    o = o && Object.prototype.hasOwnProperty.call(o, "default") ? o.default : o;
    var i, n, r, s = (n = "transitionend",
    r = {
        TRANSITION_END: "mmTransitionEnd",
        triggerTransitionEnd: function(e) {
            i(e).trigger(n)
        },
        supportsTransitionEnd: function() {
            return Boolean(n)
        }
    },
    (i = o).fn.mmEmulateTransitionEnd = e,
    i.event.special[r.TRANSITION_END] = {
        bindType: n,
        delegateType: n,
        handle: function(e) {
            if (i(e.target).is(this))
                return e.handleObj.handler.apply(this, arguments)
        }
    },
    r);
    function e(e) {
        var n = this
          , t = !1;
        return i(this).one(r.TRANSITION_END, function() {
            t = !0
        }),
        setTimeout(function() {
            t || r.triggerTransitionEnd(n)
        }, e),
        this
    }
    var t = "metisMenu"
      , g = "metisMenu"
      , l = "." + g
      , h = o.fn[t]
      , f = {
        toggle: !0,
        preventDefault: !0,
        triggerElement: "a",
        parentTrigger: "li",
        subMenu: "ul"
    }
      , d = {
        SHOW: "show" + l,
        SHOWN: "shown" + l,
        HIDE: "hide" + l,
        HIDDEN: "hidden" + l,
        CLICK_DATA_API: "click" + l + ".data-api"
    }
      , u = "metismenu"
      , c = "mm-active"
      , p = "mm-show"
      , m = "mm-collapse"
      , T = "mm-collapsing"
      , v = function() {
        function r(e, n) {
            this.element = e,
            this.config = a({}, f, {}, n),
            this.transitioning = null,
            this.init()
        }
        var e = r.prototype;
        return e.init = function() {
            var a = this
              , s = this.config
              , e = o(this.element);
            e.addClass(u),
            e.find(s.parentTrigger + "." + c).children(s.triggerElement).attr("aria-expanded", "true"),
            e.find(s.parentTrigger + "." + c).parents(s.parentTrigger).addClass(c),
            e.find(s.parentTrigger + "." + c).parents(s.parentTrigger).children(s.triggerElement).attr("aria-expanded", "true"),
            e.find(s.parentTrigger + "." + c).has(s.subMenu).children(s.subMenu).addClass(m + " " + p),
            e.find(s.parentTrigger).not("." + c).has(s.subMenu).children(s.subMenu).addClass(m),
            e.find(s.parentTrigger).children(s.triggerElement).on(d.CLICK_DATA_API, function(e) {
                var n = o(this);
                if ("true" !== n.attr("aria-disabled")) {
                    s.preventDefault && "#" === n.attr("href") && e.preventDefault();
                    var t = n.parent(s.parentTrigger)
                      , i = t.siblings(s.parentTrigger)
                      , r = i.children(s.triggerElement);
                    t.hasClass(c) ? (n.attr("aria-expanded", "false"),
                    a.removeActive(t)) : (n.attr("aria-expanded", "true"),
                    a.setActive(t),
                    s.toggle && (a.removeActive(i),
                    r.attr("aria-expanded", "false"))),
                    s.onTransitionStart && s.onTransitionStart(e)
                }
            })
        }
        ,
        e.setActive = function(e) {
            o(e).addClass(c);
            var n = o(e).children(this.config.subMenu);
            0 < n.length && !n.hasClass(p) && this.show(n)
        }
        ,
        e.removeActive = function(e) {
            o(e).removeClass(c);
            var n = o(e).children(this.config.subMenu + "." + p);
            0 < n.length && this.hide(n)
        }
        ,
        e.show = function(e) {
            var n = this;
            if (!this.transitioning && !o(e).hasClass(T)) {
                var t = o(e)
                  , i = o.Event(d.SHOW);
                if (t.trigger(i),
                !i.isDefaultPrevented()) {
                    if (t.parent(this.config.parentTrigger).addClass(c),
                    this.config.toggle) {
                        var r = t.parent(this.config.parentTrigger).siblings().children(this.config.subMenu + "." + p);
                        this.hide(r)
                    }
                    t.removeClass(m).addClass(T).height(0),
                    this.setTransitioning(!0);
                    t.height(e[0].scrollHeight).one(s.TRANSITION_END, function() {
                        n.config && n.element && (t.removeClass(T).addClass(m + " " + p).height(""),
                        n.setTransitioning(!1),
                        t.trigger(d.SHOWN))
                    }).mmEmulateTransitionEnd(350)
                }
            }
        }
        ,
        e.hide = function(e) {
            var n = this;
            if (!this.transitioning && o(e).hasClass(p)) {
                var t = o(e)
                  , i = o.Event(d.HIDE);
                if (t.trigger(i),
                !i.isDefaultPrevented()) {
                    t.parent(this.config.parentTrigger).removeClass(c),
                    t.height(t.height())[0].offsetHeight,
                    t.addClass(T).removeClass(m).removeClass(p),
                    this.setTransitioning(!0);
                    var r = function() {
                        n.config && n.element && (n.transitioning && n.config.onTransitionEnd && n.config.onTransitionEnd(),
                        n.setTransitioning(!1),
                        t.trigger(d.HIDDEN),
                        t.removeClass(T).addClass(m))
                    };
                    0 === t.height() || "none" === t.css("display") ? r() : t.height(0).one(s.TRANSITION_END, r).mmEmulateTransitionEnd(350)
                }
            }
        }
        ,
        e.setTransitioning = function(e) {
            this.transitioning = e
        }
        ,
        e.dispose = function() {
            o.removeData(this.element, g),
            o(this.element).find(this.config.parentTrigger).children(this.config.triggerElement).off(d.CLICK_DATA_API),
            this.transitioning = null,
            this.config = null,
            this.element = null
        }
        ,
        r.jQueryInterface = function(i) {
            return this.each(function() {
                var e = o(this)
                  , n = e.data(g)
                  , t = a({}, f, {}, e.data(), {}, "object" == typeof i && i ? i : {});
                if (n || (n = new r(this,t),
                e.data(g, n)),
                "string" == typeof i) {
                    if (void 0 === n[i])
                        throw new Error('No method named "' + i + '"');
                    n[i]()
                }
            })
        }
        ,
        r
    }();
    return o.fn[t] = v.jQueryInterface,
    o.fn[t].Constructor = v,
    o.fn[t].noConflict = function() {
        return o.fn[t] = h,
        v.jQueryInterface
    }
    ,
    v
});
//# sourceMappingURL=metisMenu.min.js.map
!function(t, e) {
    "use strict";
    "function" == typeof define && define.amd ? define([], function() {
        return t.Waves = e.call(t),
        t.Waves
    }) : "object" == typeof exports ? module.exports = e.call(t) : t.Waves = e.call(t)
}("object" == typeof global ? global : this, function() {
    "use strict";
    function t(t) {
        return null !== t && t === t.window
    }
    function e(e) {
        return t(e) ? e : 9 === e.nodeType && e.defaultView
    }
    function n(t) {
        var e = typeof t;
        return "function" === e || "object" === e && !!t
    }
    function o(t) {
        return n(t) && t.nodeType > 0
    }
    function a(t) {
        var e = f.call(t);
        return "[object String]" === e ? d(t) : n(t) && /^\[object (Array|HTMLCollection|NodeList|Object)\]$/.test(e) && t.hasOwnProperty("length") ? t : o(t) ? [t] : []
    }
    function i(t) {
        var n, o, a = {
            top: 0,
            left: 0
        }, i = t && t.ownerDocument;
        return n = i.documentElement,
        void 0 !== t.getBoundingClientRect && (a = t.getBoundingClientRect()),
        o = e(i),
        {
            top: a.top + o.pageYOffset - n.clientTop,
            left: a.left + o.pageXOffset - n.clientLeft
        }
    }
    function r(t) {
        var e = "";
        for (var n in t)
            t.hasOwnProperty(n) && (e += n + ":" + t[n] + ";");
        return e
    }
    function s(t, e, n) {
        if (n) {
            n.classList.remove("waves-rippling");
            var o = n.getAttribute("data-x")
              , a = n.getAttribute("data-y")
              , i = n.getAttribute("data-scale")
              , s = n.getAttribute("data-translate")
              , u = 350 - (Date.now() - Number(n.getAttribute("data-hold")));
            u < 0 && (u = 0),
            "mousemove" === t.type && (u = 150);
            var c = "mousemove" === t.type ? 2500 : v.duration;
            setTimeout(function() {
                var t = {
                    top: a + "px",
                    left: o + "px",
                    opacity: "0",
                    "-webkit-transition-duration": c + "ms",
                    "-moz-transition-duration": c + "ms",
                    "-o-transition-duration": c + "ms",
                    "transition-duration": c + "ms",
                    "-webkit-transform": i + " " + s,
                    "-moz-transform": i + " " + s,
                    "-ms-transform": i + " " + s,
                    "-o-transform": i + " " + s,
                    transform: i + " " + s
                };
                n.setAttribute("style", r(t)),
                setTimeout(function() {
                    try {
                        e.removeChild(n)
                    } catch (t) {
                        return !1
                    }
                }, c)
            }, u)
        }
    }
    function u(t) {
        if (!1 === h.allowEvent(t))
            return null;
        for (var e = null, n = t.target || t.srcElement; n.parentElement; ) {
            if (!(n instanceof SVGElement) && n.classList.contains("waves-effect")) {
                e = n;
                break
            }
            n = n.parentElement
        }
        return e
    }
    function c(t) {
        var e = u(t);
        if (null !== e) {
            if (e.disabled || e.getAttribute("disabled") || e.classList.contains("disabled"))
                return;
            if (h.registerEvent(t),
            "touchstart" === t.type && v.delay) {
                var n = !1
                  , o = setTimeout(function() {
                    o = null,
                    v.show(t, e)
                }, v.delay)
                  , a = function(a) {
                    o && (clearTimeout(o),
                    o = null,
                    v.show(t, e)),
                    n || (n = !0,
                    v.hide(a, e)),
                    r()
                }
                  , i = function(t) {
                    o && (clearTimeout(o),
                    o = null),
                    a(t),
                    r()
                };
                e.addEventListener("touchmove", i, !1),
                e.addEventListener("touchend", a, !1),
                e.addEventListener("touchcancel", a, !1);
                var r = function() {
                    e.removeEventListener("touchmove", i),
                    e.removeEventListener("touchend", a),
                    e.removeEventListener("touchcancel", a)
                }
            } else
                v.show(t, e),
                m && (e.addEventListener("touchend", v.hide, !1),
                e.addEventListener("touchcancel", v.hide, !1)),
                e.addEventListener("mouseup", v.hide, !1),
                e.addEventListener("mouseleave", v.hide, !1)
        }
    }
    var l = l || {}
      , d = document.querySelectorAll.bind(document)
      , f = Object.prototype.toString
      , m = "ontouchstart"in window
      , v = {
        duration: 750,
        delay: 200,
        show: function(t, e, n) {
            if (2 === t.button)
                return !1;
            e = e || this;
            var o = document.createElement("div");
            o.className = "waves-ripple waves-rippling",
            e.appendChild(o);
            var a = i(e)
              , s = 0
              , u = 0;
            "touches"in t && t.touches.length ? (s = t.touches[0].pageY - a.top,
            u = t.touches[0].pageX - a.left) : (s = t.pageY - a.top,
            u = t.pageX - a.left),
            u = u >= 0 ? u : 0,
            s = s >= 0 ? s : 0;
            var c = "scale(" + e.clientWidth / 100 * 3 + ")"
              , l = "translate(0,0)";
            n && (l = "translate(" + n.x + "px, " + n.y + "px)"),
            o.setAttribute("data-hold", Date.now()),
            o.setAttribute("data-x", u),
            o.setAttribute("data-y", s),
            o.setAttribute("data-scale", c),
            o.setAttribute("data-translate", l);
            var d = {
                top: s + "px",
                left: u + "px"
            };
            o.classList.add("waves-notransition"),
            o.setAttribute("style", r(d)),
            o.classList.remove("waves-notransition"),
            d["-webkit-transform"] = c + " " + l,
            d["-moz-transform"] = c + " " + l,
            d["-ms-transform"] = c + " " + l,
            d["-o-transform"] = c + " " + l,
            d.transform = c + " " + l,
            d.opacity = "1";
            var f = "mousemove" === t.type ? 2500 : v.duration;
            d["-webkit-transition-duration"] = f + "ms",
            d["-moz-transition-duration"] = f + "ms",
            d["-o-transition-duration"] = f + "ms",
            d["transition-duration"] = f + "ms",
            o.setAttribute("style", r(d))
        },
        hide: function(t, e) {
            for (var n = (e = e || this).getElementsByClassName("waves-rippling"), o = 0, a = n.length; o < a; o++)
                s(t, e, n[o]);
            m && (e.removeEventListener("touchend", v.hide),
            e.removeEventListener("touchcancel", v.hide)),
            e.removeEventListener("mouseup", v.hide),
            e.removeEventListener("mouseleave", v.hide)
        }
    }
      , p = {
        input: function(t) {
            var e = t.parentNode;
            if ("i" !== e.tagName.toLowerCase() || !e.classList.contains("waves-effect")) {
                var n = document.createElement("i");
                n.className = t.className + " waves-input-wrapper",
                t.className = "waves-button-input",
                e.replaceChild(n, t),
                n.appendChild(t);
                var o = window.getComputedStyle(t, null)
                  , a = o.color
                  , i = o.backgroundColor;
                n.setAttribute("style", "color:" + a + ";background:" + i),
                t.setAttribute("style", "background-color:rgba(0,0,0,0);")
            }
        },
        img: function(t) {
            var e = t.parentNode;
            if ("i" !== e.tagName.toLowerCase() || !e.classList.contains("waves-effect")) {
                var n = document.createElement("i");
                e.replaceChild(n, t),
                n.appendChild(t)
            }
        }
    }
      , h = {
        touches: 0,
        allowEvent: function(t) {
            var e = !0;
            return /^(mousedown|mousemove)$/.test(t.type) && h.touches && (e = !1),
            e
        },
        registerEvent: function(t) {
            var e = t.type;
            "touchstart" === e ? h.touches += 1 : /^(touchend|touchcancel)$/.test(e) && setTimeout(function() {
                h.touches && (h.touches -= 1)
            }, 500)
        }
    };
    return l.init = function(t) {
        var e = document.body;
        "duration"in (t = t || {}) && (v.duration = t.duration),
        "delay"in t && (v.delay = t.delay),
        m && (e.addEventListener("touchstart", c, !1),
        e.addEventListener("touchcancel", h.registerEvent, !1),
        e.addEventListener("touchend", h.registerEvent, !1)),
        e.addEventListener("mousedown", c, !1)
    }
    ,
    l.attach = function(t, e) {
        t = a(t),
        "[object Array]" === f.call(e) && (e = e.join(" ")),
        e = e ? " " + e : "";
        for (var n, o, i = 0, r = t.length; i < r; i++)
            o = (n = t[i]).tagName.toLowerCase(),
            -1 !== ["input", "img"].indexOf(o) && (p[o](n),
            n = n.parentElement),
            -1 === n.className.indexOf("waves-effect") && (n.className += " waves-effect" + e)
    }
    ,
    l.ripple = function(t, e) {
        var n = (t = a(t)).length;
        if (e = e || {},
        e.wait = e.wait || 0,
        e.position = e.position || null,
        n)
            for (var o, r, s, u = {}, c = 0, l = {
                type: "mousedown",
                button: 1
            }; c < n; c++)
                if (o = t[c],
                r = e.position || {
                    x: o.clientWidth / 2,
                    y: o.clientHeight / 2
                },
                s = i(o),
                u.x = s.left + r.x,
                u.y = s.top + r.y,
                l.pageX = u.x,
                l.pageY = u.y,
                v.show(l, o),
                e.wait >= 0 && null !== e.wait) {
                    var d = {
                        type: "mouseup",
                        button: 1
                    };
                    setTimeout(function(t, e) {
                        return function() {
                            v.hide(t, e)
                        }
                    }(d, o), e.wait)
                }
    }
    ,
    l.calm = function(t) {
        for (var e = {
            type: "mouseup",
            button: 1
        }, n = 0, o = (t = a(t)).length; n < o; n++)
            v.hide(e, t[n])
    }
    ,
    l.displayEffect = function(t) {
        l.init(t)
    }
    ,
    l
});
//# sourceMappingURL=waves.min.js.map
/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
!function(n) {
    "function" == typeof define && define.amd ? define(["jquery"], n) : "object" == typeof module && module.exports ? module.exports = function(e, t) {
        return void 0 === t && (t = "undefined" != typeof window ? require("jquery") : require("jquery")(e)),
        n(t),
        t
    }
    : n(jQuery)
}(function(u) {
    var e = function() {
        if (u && u.fn && u.fn.select2 && u.fn.select2.amd)
            var e = u.fn.select2.amd;
        var t, n, r, h, o, s, f, g, m, v, y, _, i, a, b;
        function w(e, t) {
            return i.call(e, t)
        }
        function l(e, t) {
            var n, r, i, o, s, a, l, c, u, d, p, h = t && t.split("/"), f = y.map, g = f && f["*"] || {};
            if (e) {
                for (s = (e = e.split("/")).length - 1,
                y.nodeIdCompat && b.test(e[s]) && (e[s] = e[s].replace(b, "")),
                "." === e[0].charAt(0) && h && (e = h.slice(0, h.length - 1).concat(e)),
                u = 0; u < e.length; u++)
                    if ("." === (p = e[u]))
                        e.splice(u, 1),
                        --u;
                    else if (".." === p) {
                        if (0 === u || 1 === u && ".." === e[2] || ".." === e[u - 1])
                            continue;
                        0 < u && (e.splice(u - 1, 2),
                        u -= 2)
                    }
                e = e.join("/")
            }
            if ((h || g) && f) {
                for (u = (n = e.split("/")).length; 0 < u; --u) {
                    if (r = n.slice(0, u).join("/"),
                    h)
                        for (d = h.length; 0 < d; --d)
                            if (i = (i = f[h.slice(0, d).join("/")]) && i[r]) {
                                o = i,
                                a = u;
                                break
                            }
                    if (o)
                        break;
                    !l && g && g[r] && (l = g[r],
                    c = u)
                }
                !o && l && (o = l,
                a = c),
                o && (n.splice(0, a, o),
                e = n.join("/"))
            }
            return e
        }
        function A(t, n) {
            return function() {
                var e = a.call(arguments, 0);
                return "string" != typeof e[0] && 1 === e.length && e.push(null),
                s.apply(h, e.concat([t, n]))
            }
        }
        function x(t) {
            return function(e) {
                m[t] = e
            }
        }
        function D(e) {
            if (w(v, e)) {
                var t = v[e];
                delete v[e],
                _[e] = !0,
                o.apply(h, t)
            }
            if (!w(m, e) && !w(_, e))
                throw new Error("No " + e);
            return m[e]
        }
        function c(e) {
            var t, n = e ? e.indexOf("!") : -1;
            return -1 < n && (t = e.substring(0, n),
            e = e.substring(n + 1, e.length)),
            [t, e]
        }
        function S(e) {
            return e ? c(e) : []
        }
        return e && e.requirejs || (e ? n = e : e = {},
        m = {},
        v = {},
        y = {},
        _ = {},
        i = Object.prototype.hasOwnProperty,
        a = [].slice,
        b = /\.js$/,
        f = function(e, t) {
            var n, r, i = c(e), o = i[0], s = t[1];
            return e = i[1],
            o && (n = D(o = l(o, s))),
            o ? e = n && n.normalize ? n.normalize(e, (r = s,
            function(e) {
                return l(e, r)
            }
            )) : l(e, s) : (o = (i = c(e = l(e, s)))[0],
            e = i[1],
            o && (n = D(o))),
            {
                f: o ? o + "!" + e : e,
                n: e,
                pr: o,
                p: n
            }
        }
        ,
        g = {
            require: function(e) {
                return A(e)
            },
            exports: function(e) {
                var t = m[e];
                return void 0 !== t ? t : m[e] = {}
            },
            module: function(e) {
                return {
                    id: e,
                    uri: "",
                    exports: m[e],
                    config: (t = e,
                    function() {
                        return y && y.config && y.config[t] || {}
                    }
                    )
                };
                var t
            }
        },
        o = function(e, t, n, r) {
            var i, o, s, a, l, c, u, d = [], p = typeof n;
            if (c = S(r = r || e),
            "undefined" == p || "function" == p) {
                for (t = !t.length && n.length ? ["require", "exports", "module"] : t,
                l = 0; l < t.length; l += 1)
                    if ("require" === (o = (a = f(t[l], c)).f))
                        d[l] = g.require(e);
                    else if ("exports" === o)
                        d[l] = g.exports(e),
                        u = !0;
                    else if ("module" === o)
                        i = d[l] = g.module(e);
                    else if (w(m, o) || w(v, o) || w(_, o))
                        d[l] = D(o);
                    else {
                        if (!a.p)
                            throw new Error(e + " missing " + o);
                        a.p.load(a.n, A(r, !0), x(o), {}),
                        d[l] = m[o]
                    }
                s = n ? n.apply(m[e], d) : void 0,
                e && (i && i.exports !== h && i.exports !== m[e] ? m[e] = i.exports : s === h && u || (m[e] = s))
            } else
                e && (m[e] = n)
        }
        ,
        t = n = s = function(e, t, n, r, i) {
            if ("string" == typeof e)
                return g[e] ? g[e](t) : D(f(e, S(t)).f);
            if (!e.splice) {
                if ((y = e).deps && s(y.deps, y.callback),
                !t)
                    return;
                t.splice ? (e = t,
                t = n,
                n = null) : e = h
            }
            return t = t || function() {}
            ,
            "function" == typeof n && (n = r,
            r = i),
            r ? o(h, e, t, n) : setTimeout(function() {
                o(h, e, t, n)
            }, 4),
            s
        }
        ,
        s.config = function(e) {
            return s(e)
        }
        ,
        t._defined = m,
        (r = function(e, t, n) {
            if ("string" != typeof e)
                throw new Error("See almond README: incorrect module build, no module name");
            t.splice || (n = t,
            t = []),
            w(m, e) || w(v, e) || (v[e] = [e, t, n])
        }
        ).amd = {
            jQuery: !0
        },
        e.requirejs = t,
        e.require = n,
        e.define = r),
        e.define("almond", function() {}),
        e.define("jquery", [], function() {
            var e = u || $;
            return null == e && console && console.error && console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),
            e
        }),
        e.define("select2/utils", ["jquery"], function(o) {
            var i = {};
            function u(e) {
                var t = e.prototype
                  , n = [];
                for (var r in t) {
                    "function" == typeof t[r] && "constructor" !== r && n.push(r)
                }
                return n
            }
            i.Extend = function(e, t) {
                var n = {}.hasOwnProperty;
                function r() {
                    this.constructor = e
                }
                for (var i in t)
                    n.call(t, i) && (e[i] = t[i]);
                return r.prototype = t.prototype,
                e.prototype = new r,
                e.__super__ = t.prototype,
                e
            }
            ,
            i.Decorate = function(r, i) {
                var e = u(i)
                  , t = u(r);
                function o() {
                    var e = Array.prototype.unshift
                      , t = i.prototype.constructor.length
                      , n = r.prototype.constructor;
                    0 < t && (e.call(arguments, r.prototype.constructor),
                    n = i.prototype.constructor),
                    n.apply(this, arguments)
                }
                i.displayName = r.displayName,
                o.prototype = new function() {
                    this.constructor = o
                }
                ;
                for (var n = 0; n < t.length; n++) {
                    var s = t[n];
                    o.prototype[s] = r.prototype[s]
                }
                function a(e) {
                    var t = function() {};
                    e in o.prototype && (t = o.prototype[e]);
                    var n = i.prototype[e];
                    return function() {
                        return Array.prototype.unshift.call(arguments, t),
                        n.apply(this, arguments)
                    }
                }
                for (var l = 0; l < e.length; l++) {
                    var c = e[l];
                    o.prototype[c] = a(c)
                }
                return o
            }
            ;
            function e() {
                this.listeners = {}
            }
            e.prototype.on = function(e, t) {
                this.listeners = this.listeners || {},
                e in this.listeners ? this.listeners[e].push(t) : this.listeners[e] = [t]
            }
            ,
            e.prototype.trigger = function(e) {
                var t = Array.prototype.slice
                  , n = t.call(arguments, 1);
                this.listeners = this.listeners || {},
                null == n && (n = []),
                0 === n.length && n.push({}),
                (n[0]._type = e)in this.listeners && this.invoke(this.listeners[e], t.call(arguments, 1)),
                "*"in this.listeners && this.invoke(this.listeners["*"], arguments)
            }
            ,
            e.prototype.invoke = function(e, t) {
                for (var n = 0, r = e.length; n < r; n++)
                    e[n].apply(this, t)
            }
            ,
            i.Observable = e,
            i.generateChars = function(e) {
                for (var t = "", n = 0; n < e; n++) {
                    t += Math.floor(36 * Math.random()).toString(36)
                }
                return t
            }
            ,
            i.bind = function(e, t) {
                return function() {
                    e.apply(t, arguments)
                }
            }
            ,
            i._convertData = function(e) {
                for (var t in e) {
                    var n = t.split("-")
                      , r = e;
                    if (1 !== n.length) {
                        for (var i = 0; i < n.length; i++) {
                            var o = n[i];
                            (o = o.substring(0, 1).toLowerCase() + o.substring(1))in r || (r[o] = {}),
                            i == n.length - 1 && (r[o] = e[t]),
                            r = r[o]
                        }
                        delete e[t]
                    }
                }
                return e
            }
            ,
            i.hasScroll = function(e, t) {
                var n = o(t)
                  , r = t.style.overflowX
                  , i = t.style.overflowY;
                return (r !== i || "hidden" !== i && "visible" !== i) && ("scroll" === r || "scroll" === i || (n.innerHeight() < t.scrollHeight || n.innerWidth() < t.scrollWidth))
            }
            ,
            i.escapeMarkup = function(e) {
                var t = {
                    "\\": "&#92;",
                    "&": "&amp;",
                    "<": "&lt;",
                    ">": "&gt;",
                    '"': "&quot;",
                    "'": "&#39;",
                    "/": "&#47;"
                };
                return "string" != typeof e ? e : String(e).replace(/[&<>"'\/\\]/g, function(e) {
                    return t[e]
                })
            }
            ,
            i.appendMany = function(e, t) {
                if ("1.7" === o.fn.jquery.substr(0, 3)) {
                    var n = o();
                    o.map(t, function(e) {
                        n = n.add(e)
                    }),
                    t = n
                }
                e.append(t)
            }
            ,
            i.__cache = {};
            var n = 0;
            return i.GetUniqueElementId = function(e) {
                var t = e.getAttribute("data-select2-id");
                return null == t && (e.id ? (t = e.id,
                e.setAttribute("data-select2-id", t)) : (e.setAttribute("data-select2-id", ++n),
                t = n.toString())),
                t
            }
            ,
            i.StoreData = function(e, t, n) {
                var r = i.GetUniqueElementId(e);
                i.__cache[r] || (i.__cache[r] = {}),
                i.__cache[r][t] = n
            }
            ,
            i.GetData = function(e, t) {
                var n = i.GetUniqueElementId(e);
                return t ? i.__cache[n] && null != i.__cache[n][t] ? i.__cache[n][t] : o(e).data(t) : i.__cache[n]
            }
            ,
            i.RemoveData = function(e) {
                var t = i.GetUniqueElementId(e);
                null != i.__cache[t] && delete i.__cache[t],
                e.removeAttribute("data-select2-id")
            }
            ,
            i
        }),
        e.define("select2/results", ["jquery", "./utils"], function(h, f) {
            function r(e, t, n) {
                this.$element = e,
                this.data = n,
                this.options = t,
                r.__super__.constructor.call(this)
            }
            return f.Extend(r, f.Observable),
            r.prototype.render = function() {
                var e = h('<ul class="select2-results__options" role="listbox"></ul>');
                return this.options.get("multiple") && e.attr("aria-multiselectable", "true"),
                this.$results = e
            }
            ,
            r.prototype.clear = function() {
                this.$results.empty()
            }
            ,
            r.prototype.displayMessage = function(e) {
                var t = this.options.get("escapeMarkup");
                this.clear(),
                this.hideLoading();
                var n = h('<li role="alert" aria-live="assertive" class="select2-results__option"></li>')
                  , r = this.options.get("translations").get(e.message);
                n.append(t(r(e.args))),
                n[0].className += " select2-results__message",
                this.$results.append(n)
            }
            ,
            r.prototype.hideMessages = function() {
                this.$results.find(".select2-results__message").remove()
            }
            ,
            r.prototype.append = function(e) {
                this.hideLoading();
                var t = [];
                if (null != e.results && 0 !== e.results.length) {
                    e.results = this.sort(e.results);
                    for (var n = 0; n < e.results.length; n++) {
                        var r = e.results[n]
                          , i = this.option(r);
                        t.push(i)
                    }
                    this.$results.append(t)
                } else
                    0 === this.$results.children().length && this.trigger("results:message", {
                        message: "noResults"
                    })
            }
            ,
            r.prototype.position = function(e, t) {
                t.find(".select2-results").append(e)
            }
            ,
            r.prototype.sort = function(e) {
                return this.options.get("sorter")(e)
            }
            ,
            r.prototype.highlightFirstItem = function() {
                var e = this.$results.find(".select2-results__option[aria-selected]")
                  , t = e.filter("[aria-selected=true]");
                0 < t.length ? t.first().trigger("mouseenter") : e.first().trigger("mouseenter"),
                this.ensureHighlightVisible()
            }
            ,
            r.prototype.setClasses = function() {
                var t = this;
                this.data.current(function(e) {
                    var r = h.map(e, function(e) {
                        return e.id.toString()
                    });
                    t.$results.find(".select2-results__option[aria-selected]").each(function() {
                        var e = h(this)
                          , t = f.GetData(this, "data")
                          , n = "" + t.id;
                        null != t.element && t.element.selected || null == t.element && -1 < h.inArray(n, r) ? e.attr("aria-selected", "true") : e.attr("aria-selected", "false")
                    })
                })
            }
            ,
            r.prototype.showLoading = function(e) {
                this.hideLoading();
                var t = {
                    disabled: !0,
                    loading: !0,
                    text: this.options.get("translations").get("searching")(e)
                }
                  , n = this.option(t);
                n.className += " loading-results",
                this.$results.prepend(n)
            }
            ,
            r.prototype.hideLoading = function() {
                this.$results.find(".loading-results").remove()
            }
            ,
            r.prototype.option = function(e) {
                var t = document.createElement("li");
                t.className = "select2-results__option";
                var n = {
                    role: "option",
                    "aria-selected": "false"
                }
                  , r = window.Element.prototype.matches || window.Element.prototype.msMatchesSelector || window.Element.prototype.webkitMatchesSelector;
                for (var i in (null != e.element && r.call(e.element, ":disabled") || null == e.element && e.disabled) && (delete n["aria-selected"],
                n["aria-disabled"] = "true"),
                null == e.id && delete n["aria-selected"],
                null != e._resultId && (t.id = e._resultId),
                e.title && (t.title = e.title),
                e.children && (n.role = "group",
                n["aria-label"] = e.text,
                delete n["aria-selected"]),
                n) {
                    var o = n[i];
                    t.setAttribute(i, o)
                }
                if (e.children) {
                    var s = h(t)
                      , a = document.createElement("strong");
                    a.className = "select2-results__group";
                    h(a);
                    this.template(e, a);
                    for (var l = [], c = 0; c < e.children.length; c++) {
                        var u = e.children[c]
                          , d = this.option(u);
                        l.push(d)
                    }
                    var p = h("<ul></ul>", {
                        class: "select2-results__options select2-results__options--nested"
                    });
                    p.append(l),
                    s.append(a),
                    s.append(p)
                } else
                    this.template(e, t);
                return f.StoreData(t, "data", e),
                t
            }
            ,
            r.prototype.bind = function(t, e) {
                var l = this
                  , n = t.id + "-results";
                this.$results.attr("id", n),
                t.on("results:all", function(e) {
                    l.clear(),
                    l.append(e.data),
                    t.isOpen() && (l.setClasses(),
                    l.highlightFirstItem())
                }),
                t.on("results:append", function(e) {
                    l.append(e.data),
                    t.isOpen() && l.setClasses()
                }),
                t.on("query", function(e) {
                    l.hideMessages(),
                    l.showLoading(e)
                }),
                t.on("select", function() {
                    t.isOpen() && (l.setClasses(),
                    l.options.get("scrollAfterSelect") && l.highlightFirstItem())
                }),
                t.on("unselect", function() {
                    t.isOpen() && (l.setClasses(),
                    l.options.get("scrollAfterSelect") && l.highlightFirstItem())
                }),
                t.on("open", function() {
                    l.$results.attr("aria-expanded", "true"),
                    l.$results.attr("aria-hidden", "false"),
                    l.setClasses(),
                    l.ensureHighlightVisible()
                }),
                t.on("close", function() {
                    l.$results.attr("aria-expanded", "false"),
                    l.$results.attr("aria-hidden", "true"),
                    l.$results.removeAttr("aria-activedescendant")
                }),
                t.on("results:toggle", function() {
                    var e = l.getHighlightedResults();
                    0 !== e.length && e.trigger("mouseup")
                }),
                t.on("results:select", function() {
                    var e = l.getHighlightedResults();
                    if (0 !== e.length) {
                        var t = f.GetData(e[0], "data");
                        "true" == e.attr("aria-selected") ? l.trigger("close", {}) : l.trigger("select", {
                            data: t
                        })
                    }
                }),
                t.on("results:previous", function() {
                    var e = l.getHighlightedResults()
                      , t = l.$results.find("[aria-selected]")
                      , n = t.index(e);
                    if (!(n <= 0)) {
                        var r = n - 1;
                        0 === e.length && (r = 0);
                        var i = t.eq(r);
                        i.trigger("mouseenter");
                        var o = l.$results.offset().top
                          , s = i.offset().top
                          , a = l.$results.scrollTop() + (s - o);
                        0 === r ? l.$results.scrollTop(0) : s - o < 0 && l.$results.scrollTop(a)
                    }
                }),
                t.on("results:next", function() {
                    var e = l.getHighlightedResults()
                      , t = l.$results.find("[aria-selected]")
                      , n = t.index(e) + 1;
                    if (!(n >= t.length)) {
                        var r = t.eq(n);
                        r.trigger("mouseenter");
                        var i = l.$results.offset().top + l.$results.outerHeight(!1)
                          , o = r.offset().top + r.outerHeight(!1)
                          , s = l.$results.scrollTop() + o - i;
                        0 === n ? l.$results.scrollTop(0) : i < o && l.$results.scrollTop(s)
                    }
                }),
                t.on("results:focus", function(e) {
                    e.element.addClass("select2-results__option--highlighted")
                }),
                t.on("results:message", function(e) {
                    l.displayMessage(e)
                }),
                h.fn.mousewheel && this.$results.on("mousewheel", function(e) {
                    var t = l.$results.scrollTop()
                      , n = l.$results.get(0).scrollHeight - t + e.deltaY
                      , r = 0 < e.deltaY && t - e.deltaY <= 0
                      , i = e.deltaY < 0 && n <= l.$results.height();
                    r ? (l.$results.scrollTop(0),
                    e.preventDefault(),
                    e.stopPropagation()) : i && (l.$results.scrollTop(l.$results.get(0).scrollHeight - l.$results.height()),
                    e.preventDefault(),
                    e.stopPropagation())
                }),
                this.$results.on("mouseup", ".select2-results__option[aria-selected]", function(e) {
                    var t = h(this)
                      , n = f.GetData(this, "data");
                    "true" !== t.attr("aria-selected") ? l.trigger("select", {
                        originalEvent: e,
                        data: n
                    }) : l.options.get("multiple") ? l.trigger("unselect", {
                        originalEvent: e,
                        data: n
                    }) : l.trigger("close", {})
                }),
                this.$results.on("mouseenter", ".select2-results__option[aria-selected]", function(e) {
                    var t = f.GetData(this, "data");
                    l.getHighlightedResults().removeClass("select2-results__option--highlighted"),
                    l.trigger("results:focus", {
                        data: t,
                        element: h(this)
                    })
                })
            }
            ,
            r.prototype.getHighlightedResults = function() {
                return this.$results.find(".select2-results__option--highlighted")
            }
            ,
            r.prototype.destroy = function() {
                this.$results.remove()
            }
            ,
            r.prototype.ensureHighlightVisible = function() {
                var e = this.getHighlightedResults();
                if (0 !== e.length) {
                    var t = this.$results.find("[aria-selected]").index(e)
                      , n = this.$results.offset().top
                      , r = e.offset().top
                      , i = this.$results.scrollTop() + (r - n)
                      , o = r - n;
                    i -= 2 * e.outerHeight(!1),
                    t <= 2 ? this.$results.scrollTop(0) : (o > this.$results.outerHeight() || o < 0) && this.$results.scrollTop(i)
                }
            }
            ,
            r.prototype.template = function(e, t) {
                var n = this.options.get("templateResult")
                  , r = this.options.get("escapeMarkup")
                  , i = n(e, t);
                null == i ? t.style.display = "none" : "string" == typeof i ? t.innerHTML = r(i) : h(t).append(i)
            }
            ,
            r
        }),
        e.define("select2/keys", [], function() {
            return {
                BACKSPACE: 8,
                TAB: 9,
                ENTER: 13,
                SHIFT: 16,
                CTRL: 17,
                ALT: 18,
                ESC: 27,
                SPACE: 32,
                PAGE_UP: 33,
                PAGE_DOWN: 34,
                END: 35,
                HOME: 36,
                LEFT: 37,
                UP: 38,
                RIGHT: 39,
                DOWN: 40,
                DELETE: 46
            }
        }),
        e.define("select2/selection/base", ["jquery", "../utils", "../keys"], function(n, r, i) {
            function o(e, t) {
                this.$element = e,
                this.options = t,
                o.__super__.constructor.call(this)
            }
            return r.Extend(o, r.Observable),
            o.prototype.render = function() {
                var e = n('<span class="select2-selection" role="combobox"  aria-haspopup="true" aria-expanded="false"></span>');
                return this._tabindex = 0,
                null != r.GetData(this.$element[0], "old-tabindex") ? this._tabindex = r.GetData(this.$element[0], "old-tabindex") : null != this.$element.attr("tabindex") && (this._tabindex = this.$element.attr("tabindex")),
                e.attr("title", this.$element.attr("title")),
                e.attr("tabindex", this._tabindex),
                e.attr("aria-disabled", "false"),
                this.$selection = e
            }
            ,
            o.prototype.bind = function(e, t) {
                var n = this
                  , r = e.id + "-results";
                this.container = e,
                this.$selection.on("focus", function(e) {
                    n.trigger("focus", e)
                }),
                this.$selection.on("blur", function(e) {
                    n._handleBlur(e)
                }),
                this.$selection.on("keydown", function(e) {
                    n.trigger("keypress", e),
                    e.which === i.SPACE && e.preventDefault()
                }),
                e.on("results:focus", function(e) {
                    n.$selection.attr("aria-activedescendant", e.data._resultId)
                }),
                e.on("selection:update", function(e) {
                    n.update(e.data)
                }),
                e.on("open", function() {
                    n.$selection.attr("aria-expanded", "true"),
                    n.$selection.attr("aria-owns", r),
                    n._attachCloseHandler(e)
                }),
                e.on("close", function() {
                    n.$selection.attr("aria-expanded", "false"),
                    n.$selection.removeAttr("aria-activedescendant"),
                    n.$selection.removeAttr("aria-owns"),
                    n.$selection.trigger("focus"),
                    n._detachCloseHandler(e)
                }),
                e.on("enable", function() {
                    n.$selection.attr("tabindex", n._tabindex),
                    n.$selection.attr("aria-disabled", "false")
                }),
                e.on("disable", function() {
                    n.$selection.attr("tabindex", "-1"),
                    n.$selection.attr("aria-disabled", "true")
                })
            }
            ,
            o.prototype._handleBlur = function(e) {
                var t = this;
                window.setTimeout(function() {
                    document.activeElement == t.$selection[0] || n.contains(t.$selection[0], document.activeElement) || t.trigger("blur", e)
                }, 1)
            }
            ,
            o.prototype._attachCloseHandler = function(e) {
                n(document.body).on("mousedown.select2." + e.id, function(e) {
                    var t = n(e.target).closest(".select2");
                    n(".select2.select2-container--open").each(function() {
                        this != t[0] && r.GetData(this, "element").select2("close")
                    })
                })
            }
            ,
            o.prototype._detachCloseHandler = function(e) {
                n(document.body).off("mousedown.select2." + e.id)
            }
            ,
            o.prototype.position = function(e, t) {
                t.find(".selection").append(e)
            }
            ,
            o.prototype.destroy = function() {
                this._detachCloseHandler(this.container)
            }
            ,
            o.prototype.update = function(e) {
                throw new Error("The `update` method must be defined in child classes.")
            }
            ,
            o.prototype.isEnabled = function() {
                return !this.isDisabled()
            }
            ,
            o.prototype.isDisabled = function() {
                return this.options.get("disabled")
            }
            ,
            o
        }),
        e.define("select2/selection/single", ["jquery", "./base", "../utils", "../keys"], function(e, t, n, r) {
            function i() {
                i.__super__.constructor.apply(this, arguments)
            }
            return n.Extend(i, t),
            i.prototype.render = function() {
                var e = i.__super__.render.call(this);
                return e.addClass("select2-selection--single"),
                e.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),
                e
            }
            ,
            i.prototype.bind = function(t, e) {
                var n = this;
                i.__super__.bind.apply(this, arguments);
                var r = t.id + "-container";
                this.$selection.find(".select2-selection__rendered").attr("id", r).attr("role", "textbox").attr("aria-readonly", "true"),
                this.$selection.attr("aria-labelledby", r),
                this.$selection.on("mousedown", function(e) {
                    1 === e.which && n.trigger("toggle", {
                        originalEvent: e
                    })
                }),
                this.$selection.on("focus", function(e) {}),
                this.$selection.on("blur", function(e) {}),
                t.on("focus", function(e) {
                    t.isOpen() || n.$selection.trigger("focus")
                })
            }
            ,
            i.prototype.clear = function() {
                var e = this.$selection.find(".select2-selection__rendered");
                e.empty(),
                e.removeAttr("title")
            }
            ,
            i.prototype.display = function(e, t) {
                var n = this.options.get("templateSelection");
                return this.options.get("escapeMarkup")(n(e, t))
            }
            ,
            i.prototype.selectionContainer = function() {
                return e("<span></span>")
            }
            ,
            i.prototype.update = function(e) {
                if (0 !== e.length) {
                    var t = e[0]
                      , n = this.$selection.find(".select2-selection__rendered")
                      , r = this.display(t, n);
                    n.empty().append(r);
                    var i = t.title || t.text;
                    i ? n.attr("title", i) : n.removeAttr("title")
                } else
                    this.clear()
            }
            ,
            i
        }),
        e.define("select2/selection/multiple", ["jquery", "./base", "../utils"], function(i, e, l) {
            function n(e, t) {
                n.__super__.constructor.apply(this, arguments)
            }
            return l.Extend(n, e),
            n.prototype.render = function() {
                var e = n.__super__.render.call(this);
                return e.addClass("select2-selection--multiple"),
                e.html('<ul class="select2-selection__rendered"></ul>'),
                e
            }
            ,
            n.prototype.bind = function(e, t) {
                var r = this;
                n.__super__.bind.apply(this, arguments),
                this.$selection.on("click", function(e) {
                    r.trigger("toggle", {
                        originalEvent: e
                    })
                }),
                this.$selection.on("click", ".select2-selection__choice__remove", function(e) {
                    if (!r.isDisabled()) {
                        var t = i(this).parent()
                          , n = l.GetData(t[0], "data");
                        r.trigger("unselect", {
                            originalEvent: e,
                            data: n
                        })
                    }
                })
            }
            ,
            n.prototype.clear = function() {
                var e = this.$selection.find(".select2-selection__rendered");
                e.empty(),
                e.removeAttr("title")
            }
            ,
            n.prototype.display = function(e, t) {
                var n = this.options.get("templateSelection");
                return this.options.get("escapeMarkup")(n(e, t))
            }
            ,
            n.prototype.selectionContainer = function() {
                return i('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;</span></li>')
            }
            ,
            n.prototype.update = function(e) {
                if (this.clear(),
                0 !== e.length) {
                    for (var t = [], n = 0; n < e.length; n++) {
                        var r = e[n]
                          , i = this.selectionContainer()
                          , o = this.display(r, i);
                        i.append(o);
                        var s = r.title || r.text;
                        s && i.attr("title", s),
                        l.StoreData(i[0], "data", r),
                        t.push(i)
                    }
                    var a = this.$selection.find(".select2-selection__rendered");
                    l.appendMany(a, t)
                }
            }
            ,
            n
        }),
        e.define("select2/selection/placeholder", ["../utils"], function(e) {
            function t(e, t, n) {
                this.placeholder = this.normalizePlaceholder(n.get("placeholder")),
                e.call(this, t, n)
            }
            return t.prototype.normalizePlaceholder = function(e, t) {
                return "string" == typeof t && (t = {
                    id: "",
                    text: t
                }),
                t
            }
            ,
            t.prototype.createPlaceholder = function(e, t) {
                var n = this.selectionContainer();
                return n.html(this.display(t)),
                n.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),
                n
            }
            ,
            t.prototype.update = function(e, t) {
                var n = 1 == t.length && t[0].id != this.placeholder.id;
                if (1 < t.length || n)
                    return e.call(this, t);
                this.clear();
                var r = this.createPlaceholder(this.placeholder);
                this.$selection.find(".select2-selection__rendered").append(r)
            }
            ,
            t
        }),
        e.define("select2/selection/allowClear", ["jquery", "../keys", "../utils"], function(i, r, a) {
            function e() {}
            return e.prototype.bind = function(e, t, n) {
                var r = this;
                e.call(this, t, n),
                null == this.placeholder && this.options.get("debug") && window.console && console.error && console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),
                this.$selection.on("mousedown", ".select2-selection__clear", function(e) {
                    r._handleClear(e)
                }),
                t.on("keypress", function(e) {
                    r._handleKeyboardClear(e, t)
                })
            }
            ,
            e.prototype._handleClear = function(e, t) {
                if (!this.isDisabled()) {
                    var n = this.$selection.find(".select2-selection__clear");
                    if (0 !== n.length) {
                        t.stopPropagation();
                        var r = a.GetData(n[0], "data")
                          , i = this.$element.val();
                        this.$element.val(this.placeholder.id);
                        var o = {
                            data: r
                        };
                        if (this.trigger("clear", o),
                        o.prevented)
                            this.$element.val(i);
                        else {
                            for (var s = 0; s < r.length; s++)
                                if (o = {
                                    data: r[s]
                                },
                                this.trigger("unselect", o),
                                o.prevented)
                                    return void this.$element.val(i);
                            this.$element.trigger("input").trigger("change"),
                            this.trigger("toggle", {})
                        }
                    }
                }
            }
            ,
            e.prototype._handleKeyboardClear = function(e, t, n) {
                n.isOpen() || t.which != r.DELETE && t.which != r.BACKSPACE || this._handleClear(t)
            }
            ,
            e.prototype.update = function(e, t) {
                if (e.call(this, t),
                !(0 < this.$selection.find(".select2-selection__placeholder").length || 0 === t.length)) {
                    var n = this.options.get("translations").get("removeAllItems")
                      , r = i('<span class="select2-selection__clear" title="' + n() + '">&times;</span>');
                    a.StoreData(r[0], "data", t),
                    this.$selection.find(".select2-selection__rendered").prepend(r)
                }
            }
            ,
            e
        }),
        e.define("select2/selection/search", ["jquery", "../utils", "../keys"], function(r, a, l) {
            function e(e, t, n) {
                e.call(this, t, n)
            }
            return e.prototype.render = function(e) {
                var t = r('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="searchbox" aria-autocomplete="list" /></li>');
                this.$searchContainer = t,
                this.$search = t.find("input");
                var n = e.call(this);
                return this._transferTabIndex(),
                n
            }
            ,
            e.prototype.bind = function(e, t, n) {
                var r = this
                  , i = t.id + "-results";
                e.call(this, t, n),
                t.on("open", function() {
                    r.$search.attr("aria-controls", i),
                    r.$search.trigger("focus")
                }),
                t.on("close", function() {
                    r.$search.val(""),
                    r.$search.removeAttr("aria-controls"),
                    r.$search.removeAttr("aria-activedescendant"),
                    r.$search.trigger("focus")
                }),
                t.on("enable", function() {
                    r.$search.prop("disabled", !1),
                    r._transferTabIndex()
                }),
                t.on("disable", function() {
                    r.$search.prop("disabled", !0)
                }),
                t.on("focus", function(e) {
                    r.$search.trigger("focus")
                }),
                t.on("results:focus", function(e) {
                    e.data._resultId ? r.$search.attr("aria-activedescendant", e.data._resultId) : r.$search.removeAttr("aria-activedescendant")
                }),
                this.$selection.on("focusin", ".select2-search--inline", function(e) {
                    r.trigger("focus", e)
                }),
                this.$selection.on("focusout", ".select2-search--inline", function(e) {
                    r._handleBlur(e)
                }),
                this.$selection.on("keydown", ".select2-search--inline", function(e) {
                    if (e.stopPropagation(),
                    r.trigger("keypress", e),
                    r._keyUpPrevented = e.isDefaultPrevented(),
                    e.which === l.BACKSPACE && "" === r.$search.val()) {
                        var t = r.$searchContainer.prev(".select2-selection__choice");
                        if (0 < t.length) {
                            var n = a.GetData(t[0], "data");
                            r.searchRemoveChoice(n),
                            e.preventDefault()
                        }
                    }
                }),
                this.$selection.on("click", ".select2-search--inline", function(e) {
                    r.$search.val() && e.stopPropagation()
                });
                var o = document.documentMode
                  , s = o && o <= 11;
                this.$selection.on("input.searchcheck", ".select2-search--inline", function(e) {
                    s ? r.$selection.off("input.search input.searchcheck") : r.$selection.off("keyup.search")
                }),
                this.$selection.on("keyup.search input.search", ".select2-search--inline", function(e) {
                    if (s && "input" === e.type)
                        r.$selection.off("input.search input.searchcheck");
                    else {
                        var t = e.which;
                        t != l.SHIFT && t != l.CTRL && t != l.ALT && t != l.TAB && r.handleSearch(e)
                    }
                })
            }
            ,
            e.prototype._transferTabIndex = function(e) {
                this.$search.attr("tabindex", this.$selection.attr("tabindex")),
                this.$selection.attr("tabindex", "-1")
            }
            ,
            e.prototype.createPlaceholder = function(e, t) {
                this.$search.attr("placeholder", t.text)
            }
            ,
            e.prototype.update = function(e, t) {
                var n = this.$search[0] == document.activeElement;
                this.$search.attr("placeholder", ""),
                e.call(this, t),
                this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),
                this.resizeSearch(),
                n && this.$search.trigger("focus")
            }
            ,
            e.prototype.handleSearch = function() {
                if (this.resizeSearch(),
                !this._keyUpPrevented) {
                    var e = this.$search.val();
                    this.trigger("query", {
                        term: e
                    })
                }
                this._keyUpPrevented = !1
            }
            ,
            e.prototype.searchRemoveChoice = function(e, t) {
                this.trigger("unselect", {
                    data: t
                }),
                this.$search.val(t.text),
                this.handleSearch()
            }
            ,
            e.prototype.resizeSearch = function() {
                this.$search.css("width", "25px");
                var e = "";
                "" !== this.$search.attr("placeholder") ? e = this.$selection.find(".select2-selection__rendered").width() : e = .75 * (this.$search.val().length + 1) + "em";
                this.$search.css("width", e)
            }
            ,
            e
        }),
        e.define("select2/selection/eventRelay", ["jquery"], function(s) {
            function e() {}
            return e.prototype.bind = function(e, t, n) {
                var r = this
                  , i = ["open", "opening", "close", "closing", "select", "selecting", "unselect", "unselecting", "clear", "clearing"]
                  , o = ["opening", "closing", "selecting", "unselecting", "clearing"];
                e.call(this, t, n),
                t.on("*", function(e, t) {
                    if (-1 !== s.inArray(e, i)) {
                        t = t || {};
                        var n = s.Event("select2:" + e, {
                            params: t
                        });
                        r.$element.trigger(n),
                        -1 !== s.inArray(e, o) && (t.prevented = n.isDefaultPrevented())
                    }
                })
            }
            ,
            e
        }),
        e.define("select2/translation", ["jquery", "require"], function(t, n) {
            function r(e) {
                this.dict = e || {}
            }
            return r.prototype.all = function() {
                return this.dict
            }
            ,
            r.prototype.get = function(e) {
                return this.dict[e]
            }
            ,
            r.prototype.extend = function(e) {
                this.dict = t.extend({}, e.all(), this.dict)
            }
            ,
            r._cache = {},
            r.loadPath = function(e) {
                if (!(e in r._cache)) {
                    var t = n(e);
                    r._cache[e] = t
                }
                return new r(r._cache[e])
            }
            ,
            r
        }),
        e.define("select2/diacritics", [], function() {
            return {
                "Ⓐ": "A",
                "Ａ": "A",
                "À": "A",
                "Á": "A",
                "Â": "A",
                "Ầ": "A",
                "Ấ": "A",
                "Ẫ": "A",
                "Ẩ": "A",
                "Ã": "A",
                "Ā": "A",
                "Ă": "A",
                "Ằ": "A",
                "Ắ": "A",
                "Ẵ": "A",
                "Ẳ": "A",
                "Ȧ": "A",
                "Ǡ": "A",
                "Ä": "A",
                "Ǟ": "A",
                "Ả": "A",
                "Å": "A",
                "Ǻ": "A",
                "Ǎ": "A",
                "Ȁ": "A",
                "Ȃ": "A",
                "Ạ": "A",
                "Ậ": "A",
                "Ặ": "A",
                "Ḁ": "A",
                "Ą": "A",
                "Ⱥ": "A",
                "Ɐ": "A",
                "Ꜳ": "AA",
                "Æ": "AE",
                "Ǽ": "AE",
                "Ǣ": "AE",
                "Ꜵ": "AO",
                "Ꜷ": "AU",
                "Ꜹ": "AV",
                "Ꜻ": "AV",
                "Ꜽ": "AY",
                "Ⓑ": "B",
                "Ｂ": "B",
                "Ḃ": "B",
                "Ḅ": "B",
                "Ḇ": "B",
                "Ƀ": "B",
                "Ƃ": "B",
                "Ɓ": "B",
                "Ⓒ": "C",
                "Ｃ": "C",
                "Ć": "C",
                "Ĉ": "C",
                "Ċ": "C",
                "Č": "C",
                "Ç": "C",
                "Ḉ": "C",
                "Ƈ": "C",
                "Ȼ": "C",
                "Ꜿ": "C",
                "Ⓓ": "D",
                "Ｄ": "D",
                "Ḋ": "D",
                "Ď": "D",
                "Ḍ": "D",
                "Ḑ": "D",
                "Ḓ": "D",
                "Ḏ": "D",
                "Đ": "D",
                "Ƌ": "D",
                "Ɗ": "D",
                "Ɖ": "D",
                "Ꝺ": "D",
                "Ǳ": "DZ",
                "Ǆ": "DZ",
                "ǲ": "Dz",
                "ǅ": "Dz",
                "Ⓔ": "E",
                "Ｅ": "E",
                "È": "E",
                "É": "E",
                "Ê": "E",
                "Ề": "E",
                "Ế": "E",
                "Ễ": "E",
                "Ể": "E",
                "Ẽ": "E",
                "Ē": "E",
                "Ḕ": "E",
                "Ḗ": "E",
                "Ĕ": "E",
                "Ė": "E",
                "Ë": "E",
                "Ẻ": "E",
                "Ě": "E",
                "Ȅ": "E",
                "Ȇ": "E",
                "Ẹ": "E",
                "Ệ": "E",
                "Ȩ": "E",
                "Ḝ": "E",
                "Ę": "E",
                "Ḙ": "E",
                "Ḛ": "E",
                "Ɛ": "E",
                "Ǝ": "E",
                "Ⓕ": "F",
                "Ｆ": "F",
                "Ḟ": "F",
                "Ƒ": "F",
                "Ꝼ": "F",
                "Ⓖ": "G",
                "Ｇ": "G",
                "Ǵ": "G",
                "Ĝ": "G",
                "Ḡ": "G",
                "Ğ": "G",
                "Ġ": "G",
                "Ǧ": "G",
                "Ģ": "G",
                "Ǥ": "G",
                "Ɠ": "G",
                "Ꞡ": "G",
                "Ᵹ": "G",
                "Ꝿ": "G",
                "Ⓗ": "H",
                "Ｈ": "H",
                "Ĥ": "H",
                "Ḣ": "H",
                "Ḧ": "H",
                "Ȟ": "H",
                "Ḥ": "H",
                "Ḩ": "H",
                "Ḫ": "H",
                "Ħ": "H",
                "Ⱨ": "H",
                "Ⱶ": "H",
                "Ɥ": "H",
                "Ⓘ": "I",
                "Ｉ": "I",
                "Ì": "I",
                "Í": "I",
                "Î": "I",
                "Ĩ": "I",
                "Ī": "I",
                "Ĭ": "I",
                "İ": "I",
                "Ï": "I",
                "Ḯ": "I",
                "Ỉ": "I",
                "Ǐ": "I",
                "Ȉ": "I",
                "Ȋ": "I",
                "Ị": "I",
                "Į": "I",
                "Ḭ": "I",
                "Ɨ": "I",
                "Ⓙ": "J",
                "Ｊ": "J",
                "Ĵ": "J",
                "Ɉ": "J",
                "Ⓚ": "K",
                "Ｋ": "K",
                "Ḱ": "K",
                "Ǩ": "K",
                "Ḳ": "K",
                "Ķ": "K",
                "Ḵ": "K",
                "Ƙ": "K",
                "Ⱪ": "K",
                "Ꝁ": "K",
                "Ꝃ": "K",
                "Ꝅ": "K",
                "Ꞣ": "K",
                "Ⓛ": "L",
                "Ｌ": "L",
                "Ŀ": "L",
                "Ĺ": "L",
                "Ľ": "L",
                "Ḷ": "L",
                "Ḹ": "L",
                "Ļ": "L",
                "Ḽ": "L",
                "Ḻ": "L",
                "Ł": "L",
                "Ƚ": "L",
                "Ɫ": "L",
                "Ⱡ": "L",
                "Ꝉ": "L",
                "Ꝇ": "L",
                "Ꞁ": "L",
                "Ǉ": "LJ",
                "ǈ": "Lj",
                "Ⓜ": "M",
                "Ｍ": "M",
                "Ḿ": "M",
                "Ṁ": "M",
                "Ṃ": "M",
                "Ɱ": "M",
                "Ɯ": "M",
                "Ⓝ": "N",
                "Ｎ": "N",
                "Ǹ": "N",
                "Ń": "N",
                "Ñ": "N",
                "Ṅ": "N",
                "Ň": "N",
                "Ṇ": "N",
                "Ņ": "N",
                "Ṋ": "N",
                "Ṉ": "N",
                "Ƞ": "N",
                "Ɲ": "N",
                "Ꞑ": "N",
                "Ꞥ": "N",
                "Ǌ": "NJ",
                "ǋ": "Nj",
                "Ⓞ": "O",
                "Ｏ": "O",
                "Ò": "O",
                "Ó": "O",
                "Ô": "O",
                "Ồ": "O",
                "Ố": "O",
                "Ỗ": "O",
                "Ổ": "O",
                "Õ": "O",
                "Ṍ": "O",
                "Ȭ": "O",
                "Ṏ": "O",
                "Ō": "O",
                "Ṑ": "O",
                "Ṓ": "O",
                "Ŏ": "O",
                "Ȯ": "O",
                "Ȱ": "O",
                "Ö": "O",
                "Ȫ": "O",
                "Ỏ": "O",
                "Ő": "O",
                "Ǒ": "O",
                "Ȍ": "O",
                "Ȏ": "O",
                "Ơ": "O",
                "Ờ": "O",
                "Ớ": "O",
                "Ỡ": "O",
                "Ở": "O",
                "Ợ": "O",
                "Ọ": "O",
                "Ộ": "O",
                "Ǫ": "O",
                "Ǭ": "O",
                "Ø": "O",
                "Ǿ": "O",
                "Ɔ": "O",
                "Ɵ": "O",
                "Ꝋ": "O",
                "Ꝍ": "O",
                "Œ": "OE",
                "Ƣ": "OI",
                "Ꝏ": "OO",
                "Ȣ": "OU",
                "Ⓟ": "P",
                "Ｐ": "P",
                "Ṕ": "P",
                "Ṗ": "P",
                "Ƥ": "P",
                "Ᵽ": "P",
                "Ꝑ": "P",
                "Ꝓ": "P",
                "Ꝕ": "P",
                "Ⓠ": "Q",
                "Ｑ": "Q",
                "Ꝗ": "Q",
                "Ꝙ": "Q",
                "Ɋ": "Q",
                "Ⓡ": "R",
                "Ｒ": "R",
                "Ŕ": "R",
                "Ṙ": "R",
                "Ř": "R",
                "Ȑ": "R",
                "Ȓ": "R",
                "Ṛ": "R",
                "Ṝ": "R",
                "Ŗ": "R",
                "Ṟ": "R",
                "Ɍ": "R",
                "Ɽ": "R",
                "Ꝛ": "R",
                "Ꞧ": "R",
                "Ꞃ": "R",
                "Ⓢ": "S",
                "Ｓ": "S",
                "ẞ": "S",
                "Ś": "S",
                "Ṥ": "S",
                "Ŝ": "S",
                "Ṡ": "S",
                "Š": "S",
                "Ṧ": "S",
                "Ṣ": "S",
                "Ṩ": "S",
                "Ș": "S",
                "Ş": "S",
                "Ȿ": "S",
                "Ꞩ": "S",
                "Ꞅ": "S",
                "Ⓣ": "T",
                "Ｔ": "T",
                "Ṫ": "T",
                "Ť": "T",
                "Ṭ": "T",
                "Ț": "T",
                "Ţ": "T",
                "Ṱ": "T",
                "Ṯ": "T",
                "Ŧ": "T",
                "Ƭ": "T",
                "Ʈ": "T",
                "Ⱦ": "T",
                "Ꞇ": "T",
                "Ꜩ": "TZ",
                "Ⓤ": "U",
                "Ｕ": "U",
                "Ù": "U",
                "Ú": "U",
                "Û": "U",
                "Ũ": "U",
                "Ṹ": "U",
                "Ū": "U",
                "Ṻ": "U",
                "Ŭ": "U",
                "Ü": "U",
                "Ǜ": "U",
                "Ǘ": "U",
                "Ǖ": "U",
                "Ǚ": "U",
                "Ủ": "U",
                "Ů": "U",
                "Ű": "U",
                "Ǔ": "U",
                "Ȕ": "U",
                "Ȗ": "U",
                "Ư": "U",
                "Ừ": "U",
                "Ứ": "U",
                "Ữ": "U",
                "Ử": "U",
                "Ự": "U",
                "Ụ": "U",
                "Ṳ": "U",
                "Ų": "U",
                "Ṷ": "U",
                "Ṵ": "U",
                "Ʉ": "U",
                "Ⓥ": "V",
                "Ｖ": "V",
                "Ṽ": "V",
                "Ṿ": "V",
                "Ʋ": "V",
                "Ꝟ": "V",
                "Ʌ": "V",
                "Ꝡ": "VY",
                "Ⓦ": "W",
                "Ｗ": "W",
                "Ẁ": "W",
                "Ẃ": "W",
                "Ŵ": "W",
                "Ẇ": "W",
                "Ẅ": "W",
                "Ẉ": "W",
                "Ⱳ": "W",
                "Ⓧ": "X",
                "Ｘ": "X",
                "Ẋ": "X",
                "Ẍ": "X",
                "Ⓨ": "Y",
                "Ｙ": "Y",
                "Ỳ": "Y",
                "Ý": "Y",
                "Ŷ": "Y",
                "Ỹ": "Y",
                "Ȳ": "Y",
                "Ẏ": "Y",
                "Ÿ": "Y",
                "Ỷ": "Y",
                "Ỵ": "Y",
                "Ƴ": "Y",
                "Ɏ": "Y",
                "Ỿ": "Y",
                "Ⓩ": "Z",
                "Ｚ": "Z",
                "Ź": "Z",
                "Ẑ": "Z",
                "Ż": "Z",
                "Ž": "Z",
                "Ẓ": "Z",
                "Ẕ": "Z",
                "Ƶ": "Z",
                "Ȥ": "Z",
                "Ɀ": "Z",
                "Ⱬ": "Z",
                "Ꝣ": "Z",
                "ⓐ": "a",
                "ａ": "a",
                "ẚ": "a",
                "à": "a",
                "á": "a",
                "â": "a",
                "ầ": "a",
                "ấ": "a",
                "ẫ": "a",
                "ẩ": "a",
                "ã": "a",
                "ā": "a",
                "ă": "a",
                "ằ": "a",
                "ắ": "a",
                "ẵ": "a",
                "ẳ": "a",
                "ȧ": "a",
                "ǡ": "a",
                "ä": "a",
                "ǟ": "a",
                "ả": "a",
                "å": "a",
                "ǻ": "a",
                "ǎ": "a",
                "ȁ": "a",
                "ȃ": "a",
                "ạ": "a",
                "ậ": "a",
                "ặ": "a",
                "ḁ": "a",
                "ą": "a",
                "ⱥ": "a",
                "ɐ": "a",
                "ꜳ": "aa",
                "æ": "ae",
                "ǽ": "ae",
                "ǣ": "ae",
                "ꜵ": "ao",
                "ꜷ": "au",
                "ꜹ": "av",
                "ꜻ": "av",
                "ꜽ": "ay",
                "ⓑ": "b",
                "ｂ": "b",
                "ḃ": "b",
                "ḅ": "b",
                "ḇ": "b",
                "ƀ": "b",
                "ƃ": "b",
                "ɓ": "b",
                "ⓒ": "c",
                "ｃ": "c",
                "ć": "c",
                "ĉ": "c",
                "ċ": "c",
                "č": "c",
                "ç": "c",
                "ḉ": "c",
                "ƈ": "c",
                "ȼ": "c",
                "ꜿ": "c",
                "ↄ": "c",
                "ⓓ": "d",
                "ｄ": "d",
                "ḋ": "d",
                "ď": "d",
                "ḍ": "d",
                "ḑ": "d",
                "ḓ": "d",
                "ḏ": "d",
                "đ": "d",
                "ƌ": "d",
                "ɖ": "d",
                "ɗ": "d",
                "ꝺ": "d",
                "ǳ": "dz",
                "ǆ": "dz",
                "ⓔ": "e",
                "ｅ": "e",
                "è": "e",
                "é": "e",
                "ê": "e",
                "ề": "e",
                "ế": "e",
                "ễ": "e",
                "ể": "e",
                "ẽ": "e",
                "ē": "e",
                "ḕ": "e",
                "ḗ": "e",
                "ĕ": "e",
                "ė": "e",
                "ë": "e",
                "ẻ": "e",
                "ě": "e",
                "ȅ": "e",
                "ȇ": "e",
                "ẹ": "e",
                "ệ": "e",
                "ȩ": "e",
                "ḝ": "e",
                "ę": "e",
                "ḙ": "e",
                "ḛ": "e",
                "ɇ": "e",
                "ɛ": "e",
                "ǝ": "e",
                "ⓕ": "f",
                "ｆ": "f",
                "ḟ": "f",
                "ƒ": "f",
                "ꝼ": "f",
                "ⓖ": "g",
                "ｇ": "g",
                "ǵ": "g",
                "ĝ": "g",
                "ḡ": "g",
                "ğ": "g",
                "ġ": "g",
                "ǧ": "g",
                "ģ": "g",
                "ǥ": "g",
                "ɠ": "g",
                "ꞡ": "g",
                "ᵹ": "g",
                "ꝿ": "g",
                "ⓗ": "h",
                "ｈ": "h",
                "ĥ": "h",
                "ḣ": "h",
                "ḧ": "h",
                "ȟ": "h",
                "ḥ": "h",
                "ḩ": "h",
                "ḫ": "h",
                "ẖ": "h",
                "ħ": "h",
                "ⱨ": "h",
                "ⱶ": "h",
                "ɥ": "h",
                "ƕ": "hv",
                "ⓘ": "i",
                "ｉ": "i",
                "ì": "i",
                "í": "i",
                "î": "i",
                "ĩ": "i",
                "ī": "i",
                "ĭ": "i",
                "ï": "i",
                "ḯ": "i",
                "ỉ": "i",
                "ǐ": "i",
                "ȉ": "i",
                "ȋ": "i",
                "ị": "i",
                "į": "i",
                "ḭ": "i",
                "ɨ": "i",
                "ı": "i",
                "ⓙ": "j",
                "ｊ": "j",
                "ĵ": "j",
                "ǰ": "j",
                "ɉ": "j",
                "ⓚ": "k",
                "ｋ": "k",
                "ḱ": "k",
                "ǩ": "k",
                "ḳ": "k",
                "ķ": "k",
                "ḵ": "k",
                "ƙ": "k",
                "ⱪ": "k",
                "ꝁ": "k",
                "ꝃ": "k",
                "ꝅ": "k",
                "ꞣ": "k",
                "ⓛ": "l",
                "ｌ": "l",
                "ŀ": "l",
                "ĺ": "l",
                "ľ": "l",
                "ḷ": "l",
                "ḹ": "l",
                "ļ": "l",
                "ḽ": "l",
                "ḻ": "l",
                "ſ": "l",
                "ł": "l",
                "ƚ": "l",
                "ɫ": "l",
                "ⱡ": "l",
                "ꝉ": "l",
                "ꞁ": "l",
                "ꝇ": "l",
                "ǉ": "lj",
                "ⓜ": "m",
                "ｍ": "m",
                "ḿ": "m",
                "ṁ": "m",
                "ṃ": "m",
                "ɱ": "m",
                "ɯ": "m",
                "ⓝ": "n",
                "ｎ": "n",
                "ǹ": "n",
                "ń": "n",
                "ñ": "n",
                "ṅ": "n",
                "ň": "n",
                "ṇ": "n",
                "ņ": "n",
                "ṋ": "n",
                "ṉ": "n",
                "ƞ": "n",
                "ɲ": "n",
                "ŉ": "n",
                "ꞑ": "n",
                "ꞥ": "n",
                "ǌ": "nj",
                "ⓞ": "o",
                "ｏ": "o",
                "ò": "o",
                "ó": "o",
                "ô": "o",
                "ồ": "o",
                "ố": "o",
                "ỗ": "o",
                "ổ": "o",
                "õ": "o",
                "ṍ": "o",
                "ȭ": "o",
                "ṏ": "o",
                "ō": "o",
                "ṑ": "o",
                "ṓ": "o",
                "ŏ": "o",
                "ȯ": "o",
                "ȱ": "o",
                "ö": "o",
                "ȫ": "o",
                "ỏ": "o",
                "ő": "o",
                "ǒ": "o",
                "ȍ": "o",
                "ȏ": "o",
                "ơ": "o",
                "ờ": "o",
                "ớ": "o",
                "ỡ": "o",
                "ở": "o",
                "ợ": "o",
                "ọ": "o",
                "ộ": "o",
                "ǫ": "o",
                "ǭ": "o",
                "ø": "o",
                "ǿ": "o",
                "ɔ": "o",
                "ꝋ": "o",
                "ꝍ": "o",
                "ɵ": "o",
                "œ": "oe",
                "ƣ": "oi",
                "ȣ": "ou",
                "ꝏ": "oo",
                "ⓟ": "p",
                "ｐ": "p",
                "ṕ": "p",
                "ṗ": "p",
                "ƥ": "p",
                "ᵽ": "p",
                "ꝑ": "p",
                "ꝓ": "p",
                "ꝕ": "p",
                "ⓠ": "q",
                "ｑ": "q",
                "ɋ": "q",
                "ꝗ": "q",
                "ꝙ": "q",
                "ⓡ": "r",
                "ｒ": "r",
                "ŕ": "r",
                "ṙ": "r",
                "ř": "r",
                "ȑ": "r",
                "ȓ": "r",
                "ṛ": "r",
                "ṝ": "r",
                "ŗ": "r",
                "ṟ": "r",
                "ɍ": "r",
                "ɽ": "r",
                "ꝛ": "r",
                "ꞧ": "r",
                "ꞃ": "r",
                "ⓢ": "s",
                "ｓ": "s",
                "ß": "s",
                "ś": "s",
                "ṥ": "s",
                "ŝ": "s",
                "ṡ": "s",
                "š": "s",
                "ṧ": "s",
                "ṣ": "s",
                "ṩ": "s",
                "ș": "s",
                "ş": "s",
                "ȿ": "s",
                "ꞩ": "s",
                "ꞅ": "s",
                "ẛ": "s",
                "ⓣ": "t",
                "ｔ": "t",
                "ṫ": "t",
                "ẗ": "t",
                "ť": "t",
                "ṭ": "t",
                "ț": "t",
                "ţ": "t",
                "ṱ": "t",
                "ṯ": "t",
                "ŧ": "t",
                "ƭ": "t",
                "ʈ": "t",
                "ⱦ": "t",
                "ꞇ": "t",
                "ꜩ": "tz",
                "ⓤ": "u",
                "ｕ": "u",
                "ù": "u",
                "ú": "u",
                "û": "u",
                "ũ": "u",
                "ṹ": "u",
                "ū": "u",
                "ṻ": "u",
                "ŭ": "u",
                "ü": "u",
                "ǜ": "u",
                "ǘ": "u",
                "ǖ": "u",
                "ǚ": "u",
                "ủ": "u",
                "ů": "u",
                "ű": "u",
                "ǔ": "u",
                "ȕ": "u",
                "ȗ": "u",
                "ư": "u",
                "ừ": "u",
                "ứ": "u",
                "ữ": "u",
                "ử": "u",
                "ự": "u",
                "ụ": "u",
                "ṳ": "u",
                "ų": "u",
                "ṷ": "u",
                "ṵ": "u",
                "ʉ": "u",
                "ⓥ": "v",
                "ｖ": "v",
                "ṽ": "v",
                "ṿ": "v",
                "ʋ": "v",
                "ꝟ": "v",
                "ʌ": "v",
                "ꝡ": "vy",
                "ⓦ": "w",
                "ｗ": "w",
                "ẁ": "w",
                "ẃ": "w",
                "ŵ": "w",
                "ẇ": "w",
                "ẅ": "w",
                "ẘ": "w",
                "ẉ": "w",
                "ⱳ": "w",
                "ⓧ": "x",
                "ｘ": "x",
                "ẋ": "x",
                "ẍ": "x",
                "ⓨ": "y",
                "ｙ": "y",
                "ỳ": "y",
                "ý": "y",
                "ŷ": "y",
                "ỹ": "y",
                "ȳ": "y",
                "ẏ": "y",
                "ÿ": "y",
                "ỷ": "y",
                "ẙ": "y",
                "ỵ": "y",
                "ƴ": "y",
                "ɏ": "y",
                "ỿ": "y",
                "ⓩ": "z",
                "ｚ": "z",
                "ź": "z",
                "ẑ": "z",
                "ż": "z",
                "ž": "z",
                "ẓ": "z",
                "ẕ": "z",
                "ƶ": "z",
                "ȥ": "z",
                "ɀ": "z",
                "ⱬ": "z",
                "ꝣ": "z",
                "Ά": "Α",
                "Έ": "Ε",
                "Ή": "Η",
                "Ί": "Ι",
                "Ϊ": "Ι",
                "Ό": "Ο",
                "Ύ": "Υ",
                "Ϋ": "Υ",
                "Ώ": "Ω",
                "ά": "α",
                "έ": "ε",
                "ή": "η",
                "ί": "ι",
                "ϊ": "ι",
                "ΐ": "ι",
                "ό": "ο",
                "ύ": "υ",
                "ϋ": "υ",
                "ΰ": "υ",
                "ώ": "ω",
                "ς": "σ",
                "’": "'"
            }
        }),
        e.define("select2/data/base", ["../utils"], function(r) {
            function n(e, t) {
                n.__super__.constructor.call(this)
            }
            return r.Extend(n, r.Observable),
            n.prototype.current = function(e) {
                throw new Error("The `current` method must be defined in child classes.")
            }
            ,
            n.prototype.query = function(e, t) {
                throw new Error("The `query` method must be defined in child classes.")
            }
            ,
            n.prototype.bind = function(e, t) {}
            ,
            n.prototype.destroy = function() {}
            ,
            n.prototype.generateResultId = function(e, t) {
                var n = e.id + "-result-";
                return n += r.generateChars(4),
                null != t.id ? n += "-" + t.id.toString() : n += "-" + r.generateChars(4),
                n
            }
            ,
            n
        }),
        e.define("select2/data/select", ["./base", "../utils", "jquery"], function(e, a, l) {
            function n(e, t) {
                this.$element = e,
                this.options = t,
                n.__super__.constructor.call(this)
            }
            return a.Extend(n, e),
            n.prototype.current = function(e) {
                var n = []
                  , r = this;
                this.$element.find(":selected").each(function() {
                    var e = l(this)
                      , t = r.item(e);
                    n.push(t)
                }),
                e(n)
            }
            ,
            n.prototype.select = function(i) {
                var o = this;
                if (i.selected = !0,
                l(i.element).is("option"))
                    return i.element.selected = !0,
                    void this.$element.trigger("input").trigger("change");
                if (this.$element.prop("multiple"))
                    this.current(function(e) {
                        var t = [];
                        (i = [i]).push.apply(i, e);
                        for (var n = 0; n < i.length; n++) {
                            var r = i[n].id;
                            -1 === l.inArray(r, t) && t.push(r)
                        }
                        o.$element.val(t),
                        o.$element.trigger("input").trigger("change")
                    });
                else {
                    var e = i.id;
                    this.$element.val(e),
                    this.$element.trigger("input").trigger("change")
                }
            }
            ,
            n.prototype.unselect = function(i) {
                var o = this;
                if (this.$element.prop("multiple")) {
                    if (i.selected = !1,
                    l(i.element).is("option"))
                        return i.element.selected = !1,
                        void this.$element.trigger("input").trigger("change");
                    this.current(function(e) {
                        for (var t = [], n = 0; n < e.length; n++) {
                            var r = e[n].id;
                            r !== i.id && -1 === l.inArray(r, t) && t.push(r)
                        }
                        o.$element.val(t),
                        o.$element.trigger("input").trigger("change")
                    })
                }
            }
            ,
            n.prototype.bind = function(e, t) {
                var n = this;
                (this.container = e).on("select", function(e) {
                    n.select(e.data)
                }),
                e.on("unselect", function(e) {
                    n.unselect(e.data)
                })
            }
            ,
            n.prototype.destroy = function() {
                this.$element.find("*").each(function() {
                    a.RemoveData(this)
                })
            }
            ,
            n.prototype.query = function(r, e) {
                var i = []
                  , o = this;
                this.$element.children().each(function() {
                    var e = l(this);
                    if (e.is("option") || e.is("optgroup")) {
                        var t = o.item(e)
                          , n = o.matches(r, t);
                        null !== n && i.push(n)
                    }
                }),
                e({
                    results: i
                })
            }
            ,
            n.prototype.addOptions = function(e) {
                a.appendMany(this.$element, e)
            }
            ,
            n.prototype.option = function(e) {
                var t;
                e.children ? (t = document.createElement("optgroup")).label = e.text : void 0 !== (t = document.createElement("option")).textContent ? t.textContent = e.text : t.innerText = e.text,
                void 0 !== e.id && (t.value = e.id),
                e.disabled && (t.disabled = !0),
                e.selected && (t.selected = !0),
                e.title && (t.title = e.title);
                var n = l(t)
                  , r = this._normalizeItem(e);
                return r.element = t,
                a.StoreData(t, "data", r),
                n
            }
            ,
            n.prototype.item = function(e) {
                var t = {};
                if (null != (t = a.GetData(e[0], "data")))
                    return t;
                if (e.is("option"))
                    t = {
                        id: e.val(),
                        text: e.text(),
                        disabled: e.prop("disabled"),
                        selected: e.prop("selected"),
                        title: e.prop("title")
                    };
                else if (e.is("optgroup")) {
                    t = {
                        text: e.prop("label"),
                        children: [],
                        title: e.prop("title")
                    };
                    for (var n = e.children("option"), r = [], i = 0; i < n.length; i++) {
                        var o = l(n[i])
                          , s = this.item(o);
                        r.push(s)
                    }
                    t.children = r
                }
                return (t = this._normalizeItem(t)).element = e[0],
                a.StoreData(e[0], "data", t),
                t
            }
            ,
            n.prototype._normalizeItem = function(e) {
                e !== Object(e) && (e = {
                    id: e,
                    text: e
                });
                return null != (e = l.extend({}, {
                    text: ""
                }, e)).id && (e.id = e.id.toString()),
                null != e.text && (e.text = e.text.toString()),
                null == e._resultId && e.id && null != this.container && (e._resultId = this.generateResultId(this.container, e)),
                l.extend({}, {
                    selected: !1,
                    disabled: !1
                }, e)
            }
            ,
            n.prototype.matches = function(e, t) {
                return this.options.get("matcher")(e, t)
            }
            ,
            n
        }),
        e.define("select2/data/array", ["./select", "../utils", "jquery"], function(e, f, g) {
            function r(e, t) {
                this._dataToConvert = t.get("data") || [],
                r.__super__.constructor.call(this, e, t)
            }
            return f.Extend(r, e),
            r.prototype.bind = function(e, t) {
                r.__super__.bind.call(this, e, t),
                this.addOptions(this.convertToOptions(this._dataToConvert))
            }
            ,
            r.prototype.select = function(n) {
                var e = this.$element.find("option").filter(function(e, t) {
                    return t.value == n.id.toString()
                });
                0 === e.length && (e = this.option(n),
                this.addOptions(e)),
                r.__super__.select.call(this, n)
            }
            ,
            r.prototype.convertToOptions = function(e) {
                var t = this
                  , n = this.$element.find("option")
                  , r = n.map(function() {
                    return t.item(g(this)).id
                }).get()
                  , i = [];
                function o(e) {
                    return function() {
                        return g(this).val() == e.id
                    }
                }
                for (var s = 0; s < e.length; s++) {
                    var a = this._normalizeItem(e[s]);
                    if (0 <= g.inArray(a.id, r)) {
                        var l = n.filter(o(a))
                          , c = this.item(l)
                          , u = g.extend(!0, {}, a, c)
                          , d = this.option(u);
                        l.replaceWith(d)
                    } else {
                        var p = this.option(a);
                        if (a.children) {
                            var h = this.convertToOptions(a.children);
                            f.appendMany(p, h)
                        }
                        i.push(p)
                    }
                }
                return i
            }
            ,
            r
        }),
        e.define("select2/data/ajax", ["./array", "../utils", "jquery"], function(e, t, o) {
            function n(e, t) {
                this.ajaxOptions = this._applyDefaults(t.get("ajax")),
                null != this.ajaxOptions.processResults && (this.processResults = this.ajaxOptions.processResults),
                n.__super__.constructor.call(this, e, t)
            }
            return t.Extend(n, e),
            n.prototype._applyDefaults = function(e) {
                var t = {
                    data: function(e) {
                        return o.extend({}, e, {
                            q: e.term
                        })
                    },
                    transport: function(e, t, n) {
                        var r = o.ajax(e);
                        return r.then(t),
                        r.fail(n),
                        r
                    }
                };
                return o.extend({}, t, e, !0)
            }
            ,
            n.prototype.processResults = function(e) {
                return e
            }
            ,
            n.prototype.query = function(n, r) {
                var i = this;
                null != this._request && (o.isFunction(this._request.abort) && this._request.abort(),
                this._request = null);
                var t = o.extend({
                    type: "GET"
                }, this.ajaxOptions);
                function e() {
                    var e = t.transport(t, function(e) {
                        var t = i.processResults(e, n);
                        i.options.get("debug") && window.console && console.error && (t && t.results && o.isArray(t.results) || console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),
                        r(t)
                    }, function() {
                        "status"in e && (0 === e.status || "0" === e.status) || i.trigger("results:message", {
                            message: "errorLoading"
                        })
                    });
                    i._request = e
                }
                "function" == typeof t.url && (t.url = t.url.call(this.$element, n)),
                "function" == typeof t.data && (t.data = t.data.call(this.$element, n)),
                this.ajaxOptions.delay && null != n.term ? (this._queryTimeout && window.clearTimeout(this._queryTimeout),
                this._queryTimeout = window.setTimeout(e, this.ajaxOptions.delay)) : e()
            }
            ,
            n
        }),
        e.define("select2/data/tags", ["jquery"], function(u) {
            function e(e, t, n) {
                var r = n.get("tags")
                  , i = n.get("createTag");
                void 0 !== i && (this.createTag = i);
                var o = n.get("insertTag");
                if (void 0 !== o && (this.insertTag = o),
                e.call(this, t, n),
                u.isArray(r))
                    for (var s = 0; s < r.length; s++) {
                        var a = r[s]
                          , l = this._normalizeItem(a)
                          , c = this.option(l);
                        this.$element.append(c)
                    }
            }
            return e.prototype.query = function(e, c, u) {
                var d = this;
                this._removeOldTags(),
                null != c.term && null == c.page ? e.call(this, c, function e(t, n) {
                    for (var r = t.results, i = 0; i < r.length; i++) {
                        var o = r[i]
                          , s = null != o.children && !e({
                            results: o.children
                        }, !0);
                        if ((o.text || "").toUpperCase() === (c.term || "").toUpperCase() || s)
                            return !n && (t.data = r,
                            void u(t))
                    }
                    if (n)
                        return !0;
                    var a = d.createTag(c);
                    if (null != a) {
                        var l = d.option(a);
                        l.attr("data-select2-tag", !0),
                        d.addOptions([l]),
                        d.insertTag(r, a)
                    }
                    t.results = r,
                    u(t)
                }) : e.call(this, c, u)
            }
            ,
            e.prototype.createTag = function(e, t) {
                var n = u.trim(t.term);
                return "" === n ? null : {
                    id: n,
                    text: n
                }
            }
            ,
            e.prototype.insertTag = function(e, t, n) {
                t.unshift(n)
            }
            ,
            e.prototype._removeOldTags = function(e) {
                this.$element.find("option[data-select2-tag]").each(function() {
                    this.selected || u(this).remove()
                })
            }
            ,
            e
        }),
        e.define("select2/data/tokenizer", ["jquery"], function(d) {
            function e(e, t, n) {
                var r = n.get("tokenizer");
                void 0 !== r && (this.tokenizer = r),
                e.call(this, t, n)
            }
            return e.prototype.bind = function(e, t, n) {
                e.call(this, t, n),
                this.$search = t.dropdown.$search || t.selection.$search || n.find(".select2-search__field")
            }
            ,
            e.prototype.query = function(e, t, n) {
                var i = this;
                t.term = t.term || "";
                var r = this.tokenizer(t, this.options, function(e) {
                    var t, n = i._normalizeItem(e);
                    if (!i.$element.find("option").filter(function() {
                        return d(this).val() === n.id
                    }).length) {
                        var r = i.option(n);
                        r.attr("data-select2-tag", !0),
                        i._removeOldTags(),
                        i.addOptions([r])
                    }
                    t = n,
                    i.trigger("select", {
                        data: t
                    })
                });
                r.term !== t.term && (this.$search.length && (this.$search.val(r.term),
                this.$search.trigger("focus")),
                t.term = r.term),
                e.call(this, t, n)
            }
            ,
            e.prototype.tokenizer = function(e, t, n, r) {
                for (var i = n.get("tokenSeparators") || [], o = t.term, s = 0, a = this.createTag || function(e) {
                    return {
                        id: e.term,
                        text: e.term
                    }
                }
                ; s < o.length; ) {
                    var l = o[s];
                    if (-1 !== d.inArray(l, i)) {
                        var c = o.substr(0, s)
                          , u = a(d.extend({}, t, {
                            term: c
                        }));
                        null != u ? (r(u),
                        o = o.substr(s + 1) || "",
                        s = 0) : s++
                    } else
                        s++
                }
                return {
                    term: o
                }
            }
            ,
            e
        }),
        e.define("select2/data/minimumInputLength", [], function() {
            function e(e, t, n) {
                this.minimumInputLength = n.get("minimumInputLength"),
                e.call(this, t, n)
            }
            return e.prototype.query = function(e, t, n) {
                t.term = t.term || "",
                t.term.length < this.minimumInputLength ? this.trigger("results:message", {
                    message: "inputTooShort",
                    args: {
                        minimum: this.minimumInputLength,
                        input: t.term,
                        params: t
                    }
                }) : e.call(this, t, n)
            }
            ,
            e
        }),
        e.define("select2/data/maximumInputLength", [], function() {
            function e(e, t, n) {
                this.maximumInputLength = n.get("maximumInputLength"),
                e.call(this, t, n)
            }
            return e.prototype.query = function(e, t, n) {
                t.term = t.term || "",
                0 < this.maximumInputLength && t.term.length > this.maximumInputLength ? this.trigger("results:message", {
                    message: "inputTooLong",
                    args: {
                        maximum: this.maximumInputLength,
                        input: t.term,
                        params: t
                    }
                }) : e.call(this, t, n)
            }
            ,
            e
        }),
        e.define("select2/data/maximumSelectionLength", [], function() {
            function e(e, t, n) {
                this.maximumSelectionLength = n.get("maximumSelectionLength"),
                e.call(this, t, n)
            }
            return e.prototype.bind = function(e, t, n) {
                var r = this;
                e.call(this, t, n),
                t.on("select", function() {
                    r._checkIfMaximumSelected()
                })
            }
            ,
            e.prototype.query = function(e, t, n) {
                var r = this;
                this._checkIfMaximumSelected(function() {
                    e.call(r, t, n)
                })
            }
            ,
            e.prototype._checkIfMaximumSelected = function(e, n) {
                var r = this;
                this.current(function(e) {
                    var t = null != e ? e.length : 0;
                    0 < r.maximumSelectionLength && t >= r.maximumSelectionLength ? r.trigger("results:message", {
                        message: "maximumSelected",
                        args: {
                            maximum: r.maximumSelectionLength
                        }
                    }) : n && n()
                })
            }
            ,
            e
        }),
        e.define("select2/dropdown", ["jquery", "./utils"], function(t, e) {
            function n(e, t) {
                this.$element = e,
                this.options = t,
                n.__super__.constructor.call(this)
            }
            return e.Extend(n, e.Observable),
            n.prototype.render = function() {
                var e = t('<span class="select2-dropdown"><span class="select2-results"></span></span>');
                return e.attr("dir", this.options.get("dir")),
                this.$dropdown = e
            }
            ,
            n.prototype.bind = function() {}
            ,
            n.prototype.position = function(e, t) {}
            ,
            n.prototype.destroy = function() {
                this.$dropdown.remove()
            }
            ,
            n
        }),
        e.define("select2/dropdown/search", ["jquery", "../utils"], function(o, e) {
            function t() {}
            return t.prototype.render = function(e) {
                var t = e.call(this)
                  , n = o('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="searchbox" aria-autocomplete="list" /></span>');
                return this.$searchContainer = n,
                this.$search = n.find("input"),
                t.prepend(n),
                t
            }
            ,
            t.prototype.bind = function(e, t, n) {
                var r = this
                  , i = t.id + "-results";
                e.call(this, t, n),
                this.$search.on("keydown", function(e) {
                    r.trigger("keypress", e),
                    r._keyUpPrevented = e.isDefaultPrevented()
                }),
                this.$search.on("input", function(e) {
                    o(this).off("keyup")
                }),
                this.$search.on("keyup input", function(e) {
                    r.handleSearch(e)
                }),
                t.on("open", function() {
                    r.$search.attr("tabindex", 0),
                    r.$search.attr("aria-controls", i),
                    r.$search.trigger("focus"),
                    window.setTimeout(function() {
                        r.$search.trigger("focus")
                    }, 0)
                }),
                t.on("close", function() {
                    r.$search.attr("tabindex", -1),
                    r.$search.removeAttr("aria-controls"),
                    r.$search.removeAttr("aria-activedescendant"),
                    r.$search.val(""),
                    r.$search.trigger("blur")
                }),
                t.on("focus", function() {
                    t.isOpen() || r.$search.trigger("focus")
                }),
                t.on("results:all", function(e) {
                    null != e.query.term && "" !== e.query.term || (r.showSearch(e) ? r.$searchContainer.removeClass("select2-search--hide") : r.$searchContainer.addClass("select2-search--hide"))
                }),
                t.on("results:focus", function(e) {
                    e.data._resultId ? r.$search.attr("aria-activedescendant", e.data._resultId) : r.$search.removeAttr("aria-activedescendant")
                })
            }
            ,
            t.prototype.handleSearch = function(e) {
                if (!this._keyUpPrevented) {
                    var t = this.$search.val();
                    this.trigger("query", {
                        term: t
                    })
                }
                this._keyUpPrevented = !1
            }
            ,
            t.prototype.showSearch = function(e, t) {
                return !0
            }
            ,
            t
        }),
        e.define("select2/dropdown/hidePlaceholder", [], function() {
            function e(e, t, n, r) {
                this.placeholder = this.normalizePlaceholder(n.get("placeholder")),
                e.call(this, t, n, r)
            }
            return e.prototype.append = function(e, t) {
                t.results = this.removePlaceholder(t.results),
                e.call(this, t)
            }
            ,
            e.prototype.normalizePlaceholder = function(e, t) {
                return "string" == typeof t && (t = {
                    id: "",
                    text: t
                }),
                t
            }
            ,
            e.prototype.removePlaceholder = function(e, t) {
                for (var n = t.slice(0), r = t.length - 1; 0 <= r; r--) {
                    var i = t[r];
                    this.placeholder.id === i.id && n.splice(r, 1)
                }
                return n
            }
            ,
            e
        }),
        e.define("select2/dropdown/infiniteScroll", ["jquery"], function(n) {
            function e(e, t, n, r) {
                this.lastParams = {},
                e.call(this, t, n, r),
                this.$loadingMore = this.createLoadingMore(),
                this.loading = !1
            }
            return e.prototype.append = function(e, t) {
                this.$loadingMore.remove(),
                this.loading = !1,
                e.call(this, t),
                this.showLoadingMore(t) && (this.$results.append(this.$loadingMore),
                this.loadMoreIfNeeded())
            }
            ,
            e.prototype.bind = function(e, t, n) {
                var r = this;
                e.call(this, t, n),
                t.on("query", function(e) {
                    r.lastParams = e,
                    r.loading = !0
                }),
                t.on("query:append", function(e) {
                    r.lastParams = e,
                    r.loading = !0
                }),
                this.$results.on("scroll", this.loadMoreIfNeeded.bind(this))
            }
            ,
            e.prototype.loadMoreIfNeeded = function() {
                var e = n.contains(document.documentElement, this.$loadingMore[0]);
                if (!this.loading && e) {
                    var t = this.$results.offset().top + this.$results.outerHeight(!1);
                    this.$loadingMore.offset().top + this.$loadingMore.outerHeight(!1) <= t + 50 && this.loadMore()
                }
            }
            ,
            e.prototype.loadMore = function() {
                this.loading = !0;
                var e = n.extend({}, {
                    page: 1
                }, this.lastParams);
                e.page++,
                this.trigger("query:append", e)
            }
            ,
            e.prototype.showLoadingMore = function(e, t) {
                return t.pagination && t.pagination.more
            }
            ,
            e.prototype.createLoadingMore = function() {
                var e = n('<li class="select2-results__option select2-results__option--load-more"role="option" aria-disabled="true"></li>')
                  , t = this.options.get("translations").get("loadingMore");
                return e.html(t(this.lastParams)),
                e
            }
            ,
            e
        }),
        e.define("select2/dropdown/attachBody", ["jquery", "../utils"], function(f, a) {
            function e(e, t, n) {
                this.$dropdownParent = f(n.get("dropdownParent") || document.body),
                e.call(this, t, n)
            }
            return e.prototype.bind = function(e, t, n) {
                var r = this;
                e.call(this, t, n),
                t.on("open", function() {
                    r._showDropdown(),
                    r._attachPositioningHandler(t),
                    r._bindContainerResultHandlers(t)
                }),
                t.on("close", function() {
                    r._hideDropdown(),
                    r._detachPositioningHandler(t)
                }),
                this.$dropdownContainer.on("mousedown", function(e) {
                    e.stopPropagation()
                })
            }
            ,
            e.prototype.destroy = function(e) {
                e.call(this),
                this.$dropdownContainer.remove()
            }
            ,
            e.prototype.position = function(e, t, n) {
                t.attr("class", n.attr("class")),
                t.removeClass("select2"),
                t.addClass("select2-container--open"),
                t.css({
                    position: "absolute",
                    top: -999999
                }),
                this.$container = n
            }
            ,
            e.prototype.render = function(e) {
                var t = f("<span></span>")
                  , n = e.call(this);
                return t.append(n),
                this.$dropdownContainer = t
            }
            ,
            e.prototype._hideDropdown = function(e) {
                this.$dropdownContainer.detach()
            }
            ,
            e.prototype._bindContainerResultHandlers = function(e, t) {
                if (!this._containerResultsHandlersBound) {
                    var n = this;
                    t.on("results:all", function() {
                        n._positionDropdown(),
                        n._resizeDropdown()
                    }),
                    t.on("results:append", function() {
                        n._positionDropdown(),
                        n._resizeDropdown()
                    }),
                    t.on("results:message", function() {
                        n._positionDropdown(),
                        n._resizeDropdown()
                    }),
                    t.on("select", function() {
                        n._positionDropdown(),
                        n._resizeDropdown()
                    }),
                    t.on("unselect", function() {
                        n._positionDropdown(),
                        n._resizeDropdown()
                    }),
                    this._containerResultsHandlersBound = !0
                }
            }
            ,
            e.prototype._attachPositioningHandler = function(e, t) {
                var n = this
                  , r = "scroll.select2." + t.id
                  , i = "resize.select2." + t.id
                  , o = "orientationchange.select2." + t.id
                  , s = this.$container.parents().filter(a.hasScroll);
                s.each(function() {
                    a.StoreData(this, "select2-scroll-position", {
                        x: f(this).scrollLeft(),
                        y: f(this).scrollTop()
                    })
                }),
                s.on(r, function(e) {
                    var t = a.GetData(this, "select2-scroll-position");
                    f(this).scrollTop(t.y)
                }),
                f(window).on(r + " " + i + " " + o, function(e) {
                    n._positionDropdown(),
                    n._resizeDropdown()
                })
            }
            ,
            e.prototype._detachPositioningHandler = function(e, t) {
                var n = "scroll.select2." + t.id
                  , r = "resize.select2." + t.id
                  , i = "orientationchange.select2." + t.id;
                this.$container.parents().filter(a.hasScroll).off(n),
                f(window).off(n + " " + r + " " + i)
            }
            ,
            e.prototype._positionDropdown = function() {
                var e = f(window)
                  , t = this.$dropdown.hasClass("select2-dropdown--above")
                  , n = this.$dropdown.hasClass("select2-dropdown--below")
                  , r = null
                  , i = this.$container.offset();
                i.bottom = i.top + this.$container.outerHeight(!1);
                var o = {
                    height: this.$container.outerHeight(!1)
                };
                o.top = i.top,
                o.bottom = i.top + o.height;
                var s = this.$dropdown.outerHeight(!1)
                  , a = e.scrollTop()
                  , l = e.scrollTop() + e.height()
                  , c = a < i.top - s
                  , u = l > i.bottom + s
                  , d = {
                    left: i.left,
                    top: o.bottom
                }
                  , p = this.$dropdownParent;
                "static" === p.css("position") && (p = p.offsetParent());
                var h = {
                    top: 0,
                    left: 0
                };
                (f.contains(document.body, p[0]) || p[0].isConnected) && (h = p.offset()),
                d.top -= h.top,
                d.left -= h.left,
                t || n || (r = "below"),
                u || !c || t ? !c && u && t && (r = "below") : r = "above",
                ("above" == r || t && "below" !== r) && (d.top = o.top - h.top - s),
                null != r && (this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--" + r),
                this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--" + r)),
                this.$dropdownContainer.css(d)
            }
            ,
            e.prototype._resizeDropdown = function() {
                var e = {
                    width: this.$container.outerWidth(!1) + "px"
                };
                this.options.get("dropdownAutoWidth") && (e.minWidth = e.width,
                e.position = "relative",
                e.width = "auto"),
                this.$dropdown.css(e)
            }
            ,
            e.prototype._showDropdown = function(e) {
                this.$dropdownContainer.appendTo(this.$dropdownParent),
                this._positionDropdown(),
                this._resizeDropdown()
            }
            ,
            e
        }),
        e.define("select2/dropdown/minimumResultsForSearch", [], function() {
            function e(e, t, n, r) {
                this.minimumResultsForSearch = n.get("minimumResultsForSearch"),
                this.minimumResultsForSearch < 0 && (this.minimumResultsForSearch = 1 / 0),
                e.call(this, t, n, r)
            }
            return e.prototype.showSearch = function(e, t) {
                return !(function e(t) {
                    for (var n = 0, r = 0; r < t.length; r++) {
                        var i = t[r];
                        i.children ? n += e(i.children) : n++
                    }
                    return n
                }(t.data.results) < this.minimumResultsForSearch) && e.call(this, t)
            }
            ,
            e
        }),
        e.define("select2/dropdown/selectOnClose", ["../utils"], function(o) {
            function e() {}
            return e.prototype.bind = function(e, t, n) {
                var r = this;
                e.call(this, t, n),
                t.on("close", function(e) {
                    r._handleSelectOnClose(e)
                })
            }
            ,
            e.prototype._handleSelectOnClose = function(e, t) {
                if (t && null != t.originalSelect2Event) {
                    var n = t.originalSelect2Event;
                    if ("select" === n._type || "unselect" === n._type)
                        return
                }
                var r = this.getHighlightedResults();
                if (!(r.length < 1)) {
                    var i = o.GetData(r[0], "data");
                    null != i.element && i.element.selected || null == i.element && i.selected || this.trigger("select", {
                        data: i
                    })
                }
            }
            ,
            e
        }),
        e.define("select2/dropdown/closeOnSelect", [], function() {
            function e() {}
            return e.prototype.bind = function(e, t, n) {
                var r = this;
                e.call(this, t, n),
                t.on("select", function(e) {
                    r._selectTriggered(e)
                }),
                t.on("unselect", function(e) {
                    r._selectTriggered(e)
                })
            }
            ,
            e.prototype._selectTriggered = function(e, t) {
                var n = t.originalEvent;
                n && (n.ctrlKey || n.metaKey) || this.trigger("close", {
                    originalEvent: n,
                    originalSelect2Event: t
                })
            }
            ,
            e
        }),
        e.define("select2/i18n/en", [], function() {
            return {
                errorLoading: function() {
                    return "The results could not be loaded."
                },
                inputTooLong: function(e) {
                    var t = e.input.length - e.maximum
                      , n = "Please delete " + t + " character";
                    return 1 != t && (n += "s"),
                    n
                },
                inputTooShort: function(e) {
                    return "Please enter " + (e.minimum - e.input.length) + " or more characters"
                },
                loadingMore: function() {
                    return "Loading more results…"
                },
                maximumSelected: function(e) {
                    var t = "You can only select " + e.maximum + " item";
                    return 1 != e.maximum && (t += "s"),
                    t
                },
                noResults: function() {
                    return "No results found"
                },
                searching: function() {
                    return "Searching…"
                },
                removeAllItems: function() {
                    return "Remove all items"
                }
            }
        }),
        e.define("select2/defaults", ["jquery", "require", "./results", "./selection/single", "./selection/multiple", "./selection/placeholder", "./selection/allowClear", "./selection/search", "./selection/eventRelay", "./utils", "./translation", "./diacritics", "./data/select", "./data/array", "./data/ajax", "./data/tags", "./data/tokenizer", "./data/minimumInputLength", "./data/maximumInputLength", "./data/maximumSelectionLength", "./dropdown", "./dropdown/search", "./dropdown/hidePlaceholder", "./dropdown/infiniteScroll", "./dropdown/attachBody", "./dropdown/minimumResultsForSearch", "./dropdown/selectOnClose", "./dropdown/closeOnSelect", "./i18n/en"], function(c, u, d, p, h, f, g, m, v, y, s, t, _, $, b, w, A, x, D, S, E, C, O, T, q, L, I, j, e) {
            function n() {
                this.reset()
            }
            return n.prototype.apply = function(e) {
                if (null == (e = c.extend(!0, {}, this.defaults, e)).dataAdapter) {
                    if (null != e.ajax ? e.dataAdapter = b : null != e.data ? e.dataAdapter = $ : e.dataAdapter = _,
                    0 < e.minimumInputLength && (e.dataAdapter = y.Decorate(e.dataAdapter, x)),
                    0 < e.maximumInputLength && (e.dataAdapter = y.Decorate(e.dataAdapter, D)),
                    0 < e.maximumSelectionLength && (e.dataAdapter = y.Decorate(e.dataAdapter, S)),
                    e.tags && (e.dataAdapter = y.Decorate(e.dataAdapter, w)),
                    null == e.tokenSeparators && null == e.tokenizer || (e.dataAdapter = y.Decorate(e.dataAdapter, A)),
                    null != e.query) {
                        var t = u(e.amdBase + "compat/query");
                        e.dataAdapter = y.Decorate(e.dataAdapter, t)
                    }
                    if (null != e.initSelection) {
                        var n = u(e.amdBase + "compat/initSelection");
                        e.dataAdapter = y.Decorate(e.dataAdapter, n)
                    }
                }
                if (null == e.resultsAdapter && (e.resultsAdapter = d,
                null != e.ajax && (e.resultsAdapter = y.Decorate(e.resultsAdapter, T)),
                null != e.placeholder && (e.resultsAdapter = y.Decorate(e.resultsAdapter, O)),
                e.selectOnClose && (e.resultsAdapter = y.Decorate(e.resultsAdapter, I))),
                null == e.dropdownAdapter) {
                    if (e.multiple)
                        e.dropdownAdapter = E;
                    else {
                        var r = y.Decorate(E, C);
                        e.dropdownAdapter = r
                    }
                    if (0 !== e.minimumResultsForSearch && (e.dropdownAdapter = y.Decorate(e.dropdownAdapter, L)),
                    e.closeOnSelect && (e.dropdownAdapter = y.Decorate(e.dropdownAdapter, j)),
                    null != e.dropdownCssClass || null != e.dropdownCss || null != e.adaptDropdownCssClass) {
                        var i = u(e.amdBase + "compat/dropdownCss");
                        e.dropdownAdapter = y.Decorate(e.dropdownAdapter, i)
                    }
                    e.dropdownAdapter = y.Decorate(e.dropdownAdapter, q)
                }
                if (null == e.selectionAdapter) {
                    if (e.multiple ? e.selectionAdapter = h : e.selectionAdapter = p,
                    null != e.placeholder && (e.selectionAdapter = y.Decorate(e.selectionAdapter, f)),
                    e.allowClear && (e.selectionAdapter = y.Decorate(e.selectionAdapter, g)),
                    e.multiple && (e.selectionAdapter = y.Decorate(e.selectionAdapter, m)),
                    null != e.containerCssClass || null != e.containerCss || null != e.adaptContainerCssClass) {
                        var o = u(e.amdBase + "compat/containerCss");
                        e.selectionAdapter = y.Decorate(e.selectionAdapter, o)
                    }
                    e.selectionAdapter = y.Decorate(e.selectionAdapter, v)
                }
                e.language = this._resolveLanguage(e.language),
                e.language.push("en");
                for (var s = [], a = 0; a < e.language.length; a++) {
                    var l = e.language[a];
                    -1 === s.indexOf(l) && s.push(l)
                }
                return e.language = s,
                e.translations = this._processTranslations(e.language, e.debug),
                e
            }
            ,
            n.prototype.reset = function() {
                function a(e) {
                    return e.replace(/[^\u0000-\u007E]/g, function(e) {
                        return t[e] || e
                    })
                }
                this.defaults = {
                    amdBase: "./",
                    amdLanguageBase: "./i18n/",
                    closeOnSelect: !0,
                    debug: !1,
                    dropdownAutoWidth: !1,
                    escapeMarkup: y.escapeMarkup,
                    language: {},
                    matcher: function e(t, n) {
                        if ("" === c.trim(t.term))
                            return n;
                        if (n.children && 0 < n.children.length) {
                            for (var r = c.extend(!0, {}, n), i = n.children.length - 1; 0 <= i; i--)
                                null == e(t, n.children[i]) && r.children.splice(i, 1);
                            return 0 < r.children.length ? r : e(t, r)
                        }
                        var o = a(n.text).toUpperCase()
                          , s = a(t.term).toUpperCase();
                        return -1 < o.indexOf(s) ? n : null
                    },
                    minimumInputLength: 0,
                    maximumInputLength: 0,
                    maximumSelectionLength: 0,
                    minimumResultsForSearch: 0,
                    selectOnClose: !1,
                    scrollAfterSelect: !1,
                    sorter: function(e) {
                        return e
                    },
                    templateResult: function(e) {
                        return e.text
                    },
                    templateSelection: function(e) {
                        return e.text
                    },
                    theme: "default",
                    width: "resolve"
                }
            }
            ,
            n.prototype.applyFromElement = function(e, t) {
                var n = e.language
                  , r = this.defaults.language
                  , i = t.prop("lang")
                  , o = t.closest("[lang]").prop("lang")
                  , s = Array.prototype.concat.call(this._resolveLanguage(i), this._resolveLanguage(n), this._resolveLanguage(r), this._resolveLanguage(o));
                return e.language = s,
                e
            }
            ,
            n.prototype._resolveLanguage = function(e) {
                if (!e)
                    return [];
                if (c.isEmptyObject(e))
                    return [];
                if (c.isPlainObject(e))
                    return [e];
                var t;
                t = c.isArray(e) ? e : [e];
                for (var n = [], r = 0; r < t.length; r++)
                    if (n.push(t[r]),
                    "string" == typeof t[r] && 0 < t[r].indexOf("-")) {
                        var i = t[r].split("-")[0];
                        n.push(i)
                    }
                return n
            }
            ,
            n.prototype._processTranslations = function(e, t) {
                for (var n = new s, r = 0; r < e.length; r++) {
                    var i = new s
                      , o = e[r];
                    if ("string" == typeof o)
                        try {
                            i = s.loadPath(o)
                        } catch (e) {
                            try {
                                o = this.defaults.amdLanguageBase + o,
                                i = s.loadPath(o)
                            } catch (e) {
                                t && window.console && console.warn && console.warn('Select2: The language file for "' + o + '" could not be automatically loaded. A fallback will be used instead.')
                            }
                        }
                    else
                        i = c.isPlainObject(o) ? new s(o) : o;
                    n.extend(i)
                }
                return n
            }
            ,
            n.prototype.set = function(e, t) {
                var n = {};
                n[c.camelCase(e)] = t;
                var r = y._convertData(n);
                c.extend(!0, this.defaults, r)
            }
            ,
            new n
        }),
        e.define("select2/options", ["require", "jquery", "./defaults", "./utils"], function(r, d, i, p) {
            function e(e, t) {
                if (this.options = e,
                null != t && this.fromElement(t),
                null != t && (this.options = i.applyFromElement(this.options, t)),
                this.options = i.apply(this.options),
                t && t.is("input")) {
                    var n = r(this.get("amdBase") + "compat/inputData");
                    this.options.dataAdapter = p.Decorate(this.options.dataAdapter, n)
                }
            }
            return e.prototype.fromElement = function(e) {
                var t = ["select2"];
                null == this.options.multiple && (this.options.multiple = e.prop("multiple")),
                null == this.options.disabled && (this.options.disabled = e.prop("disabled")),
                null == this.options.dir && (e.prop("dir") ? this.options.dir = e.prop("dir") : e.closest("[dir]").prop("dir") ? this.options.dir = e.closest("[dir]").prop("dir") : this.options.dir = "ltr"),
                e.prop("disabled", this.options.disabled),
                e.prop("multiple", this.options.multiple),
                p.GetData(e[0], "select2Tags") && (this.options.debug && window.console && console.warn && console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),
                p.StoreData(e[0], "data", p.GetData(e[0], "select2Tags")),
                p.StoreData(e[0], "tags", !0)),
                p.GetData(e[0], "ajaxUrl") && (this.options.debug && window.console && console.warn && console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),
                e.attr("ajax--url", p.GetData(e[0], "ajaxUrl")),
                p.StoreData(e[0], "ajax-Url", p.GetData(e[0], "ajaxUrl")));
                var n = {};
                function r(e, t) {
                    return t.toUpperCase()
                }
                for (var i = 0; i < e[0].attributes.length; i++) {
                    var o = e[0].attributes[i].name
                      , s = "data-";
                    if (o.substr(0, s.length) == s) {
                        var a = o.substring(s.length)
                          , l = p.GetData(e[0], a);
                        n[a.replace(/-([a-z])/g, r)] = l
                    }
                }
                d.fn.jquery && "1." == d.fn.jquery.substr(0, 2) && e[0].dataset && (n = d.extend(!0, {}, e[0].dataset, n));
                var c = d.extend(!0, {}, p.GetData(e[0]), n);
                for (var u in c = p._convertData(c))
                    -1 < d.inArray(u, t) || (d.isPlainObject(this.options[u]) ? d.extend(this.options[u], c[u]) : this.options[u] = c[u]);
                return this
            }
            ,
            e.prototype.get = function(e) {
                return this.options[e]
            }
            ,
            e.prototype.set = function(e, t) {
                this.options[e] = t
            }
            ,
            e
        }),
        e.define("select2/core", ["jquery", "./options", "./utils", "./keys"], function(o, c, u, r) {
            var d = function(e, t) {
                null != u.GetData(e[0], "select2") && u.GetData(e[0], "select2").destroy(),
                this.$element = e,
                this.id = this._generateId(e),
                t = t || {},
                this.options = new c(t,e),
                d.__super__.constructor.call(this);
                var n = e.attr("tabindex") || 0;
                u.StoreData(e[0], "old-tabindex", n),
                e.attr("tabindex", "-1");
                var r = this.options.get("dataAdapter");
                this.dataAdapter = new r(e,this.options);
                var i = this.render();
                this._placeContainer(i);
                var o = this.options.get("selectionAdapter");
                this.selection = new o(e,this.options),
                this.$selection = this.selection.render(),
                this.selection.position(this.$selection, i);
                var s = this.options.get("dropdownAdapter");
                this.dropdown = new s(e,this.options),
                this.$dropdown = this.dropdown.render(),
                this.dropdown.position(this.$dropdown, i);
                var a = this.options.get("resultsAdapter");
                this.results = new a(e,this.options,this.dataAdapter),
                this.$results = this.results.render(),
                this.results.position(this.$results, this.$dropdown);
                var l = this;
                this._bindAdapters(),
                this._registerDomEvents(),
                this._registerDataEvents(),
                this._registerSelectionEvents(),
                this._registerDropdownEvents(),
                this._registerResultsEvents(),
                this._registerEvents(),
                this.dataAdapter.current(function(e) {
                    l.trigger("selection:update", {
                        data: e
                    })
                }),
                e.addClass("select2-hidden-accessible"),
                e.attr("aria-hidden", "true"),
                this._syncAttributes(),
                u.StoreData(e[0], "select2", this),
                e.data("select2", this)
            };
            return u.Extend(d, u.Observable),
            d.prototype._generateId = function(e) {
                return "select2-" + (null != e.attr("id") ? e.attr("id") : null != e.attr("name") ? e.attr("name") + "-" + u.generateChars(2) : u.generateChars(4)).replace(/(:|\.|\[|\]|,)/g, "")
            }
            ,
            d.prototype._placeContainer = function(e) {
                e.insertAfter(this.$element);
                var t = this._resolveWidth(this.$element, this.options.get("width"));
                null != t && e.css("width", t)
            }
            ,
            d.prototype._resolveWidth = function(e, t) {
                var n = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;
                if ("resolve" == t) {
                    var r = this._resolveWidth(e, "style");
                    return null != r ? r : this._resolveWidth(e, "element")
                }
                if ("element" == t) {
                    var i = e.outerWidth(!1);
                    return i <= 0 ? "auto" : i + "px"
                }
                if ("style" != t)
                    return "computedstyle" != t ? t : window.getComputedStyle(e[0]).width;
                var o = e.attr("style");
                if ("string" != typeof o)
                    return null;
                for (var s = o.split(";"), a = 0, l = s.length; a < l; a += 1) {
                    var c = s[a].replace(/\s/g, "").match(n);
                    if (null !== c && 1 <= c.length)
                        return c[1]
                }
                return null
            }
            ,
            d.prototype._bindAdapters = function() {
                this.dataAdapter.bind(this, this.$container),
                this.selection.bind(this, this.$container),
                this.dropdown.bind(this, this.$container),
                this.results.bind(this, this.$container)
            }
            ,
            d.prototype._registerDomEvents = function() {
                var t = this;
                this.$element.on("change.select2", function() {
                    t.dataAdapter.current(function(e) {
                        t.trigger("selection:update", {
                            data: e
                        })
                    })
                }),
                this.$element.on("focus.select2", function(e) {
                    t.trigger("focus", e)
                }),
                this._syncA = u.bind(this._syncAttributes, this),
                this._syncS = u.bind(this._syncSubtree, this),
                this.$element[0].attachEvent && this.$element[0].attachEvent("onpropertychange", this._syncA);
                var e = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
                null != e ? (this._observer = new e(function(e) {
                    t._syncA(),
                    t._syncS(null, e)
                }
                ),
                this._observer.observe(this.$element[0], {
                    attributes: !0,
                    childList: !0,
                    subtree: !1
                })) : this.$element[0].addEventListener && (this.$element[0].addEventListener("DOMAttrModified", t._syncA, !1),
                this.$element[0].addEventListener("DOMNodeInserted", t._syncS, !1),
                this.$element[0].addEventListener("DOMNodeRemoved", t._syncS, !1))
            }
            ,
            d.prototype._registerDataEvents = function() {
                var n = this;
                this.dataAdapter.on("*", function(e, t) {
                    n.trigger(e, t)
                })
            }
            ,
            d.prototype._registerSelectionEvents = function() {
                var n = this
                  , r = ["toggle", "focus"];
                this.selection.on("toggle", function() {
                    n.toggleDropdown()
                }),
                this.selection.on("focus", function(e) {
                    n.focus(e)
                }),
                this.selection.on("*", function(e, t) {
                    -1 === o.inArray(e, r) && n.trigger(e, t)
                })
            }
            ,
            d.prototype._registerDropdownEvents = function() {
                var n = this;
                this.dropdown.on("*", function(e, t) {
                    n.trigger(e, t)
                })
            }
            ,
            d.prototype._registerResultsEvents = function() {
                var n = this;
                this.results.on("*", function(e, t) {
                    n.trigger(e, t)
                })
            }
            ,
            d.prototype._registerEvents = function() {
                var n = this;
                this.on("open", function() {
                    n.$container.addClass("select2-container--open")
                }),
                this.on("close", function() {
                    n.$container.removeClass("select2-container--open")
                }),
                this.on("enable", function() {
                    n.$container.removeClass("select2-container--disabled")
                }),
                this.on("disable", function() {
                    n.$container.addClass("select2-container--disabled")
                }),
                this.on("blur", function() {
                    n.$container.removeClass("select2-container--focus")
                }),
                this.on("query", function(t) {
                    n.isOpen() || n.trigger("open", {}),
                    this.dataAdapter.query(t, function(e) {
                        n.trigger("results:all", {
                            data: e,
                            query: t
                        })
                    })
                }),
                this.on("query:append", function(t) {
                    this.dataAdapter.query(t, function(e) {
                        n.trigger("results:append", {
                            data: e,
                            query: t
                        })
                    })
                }),
                this.on("keypress", function(e) {
                    var t = e.which;
                    n.isOpen() ? t === r.ESC || t === r.TAB || t === r.UP && e.altKey ? (n.close(e),
                    e.preventDefault()) : t === r.ENTER ? (n.trigger("results:select", {}),
                    e.preventDefault()) : t === r.SPACE && e.ctrlKey ? (n.trigger("results:toggle", {}),
                    e.preventDefault()) : t === r.UP ? (n.trigger("results:previous", {}),
                    e.preventDefault()) : t === r.DOWN && (n.trigger("results:next", {}),
                    e.preventDefault()) : (t === r.ENTER || t === r.SPACE || t === r.DOWN && e.altKey) && (n.open(),
                    e.preventDefault())
                })
            }
            ,
            d.prototype._syncAttributes = function() {
                this.options.set("disabled", this.$element.prop("disabled")),
                this.isDisabled() ? (this.isOpen() && this.close(),
                this.trigger("disable", {})) : this.trigger("enable", {})
            }
            ,
            d.prototype._isChangeMutation = function(e, t) {
                var n = !1
                  , r = this;
                if (!e || !e.target || "OPTION" === e.target.nodeName || "OPTGROUP" === e.target.nodeName) {
                    if (t)
                        if (t.addedNodes && 0 < t.addedNodes.length)
                            for (var i = 0; i < t.addedNodes.length; i++) {
                                t.addedNodes[i].selected && (n = !0)
                            }
                        else
                            t.removedNodes && 0 < t.removedNodes.length ? n = !0 : o.isArray(t) && o.each(t, function(e, t) {
                                if (r._isChangeMutation(e, t))
                                    return !(n = !0)
                            });
                    else
                        n = !0;
                    return n
                }
            }
            ,
            d.prototype._syncSubtree = function(e, t) {
                var n = this._isChangeMutation(e, t)
                  , r = this;
                n && this.dataAdapter.current(function(e) {
                    r.trigger("selection:update", {
                        data: e
                    })
                })
            }
            ,
            d.prototype.trigger = function(e, t) {
                var n = d.__super__.trigger
                  , r = {
                    open: "opening",
                    close: "closing",
                    select: "selecting",
                    unselect: "unselecting",
                    clear: "clearing"
                };
                if (void 0 === t && (t = {}),
                e in r) {
                    var i = r[e]
                      , o = {
                        prevented: !1,
                        name: e,
                        args: t
                    };
                    if (n.call(this, i, o),
                    o.prevented)
                        return void (t.prevented = !0)
                }
                n.call(this, e, t)
            }
            ,
            d.prototype.toggleDropdown = function() {
                this.isDisabled() || (this.isOpen() ? this.close() : this.open())
            }
            ,
            d.prototype.open = function() {
                this.isOpen() || this.isDisabled() || this.trigger("query", {})
            }
            ,
            d.prototype.close = function(e) {
                this.isOpen() && this.trigger("close", {
                    originalEvent: e
                })
            }
            ,
            d.prototype.isEnabled = function() {
                return !this.isDisabled()
            }
            ,
            d.prototype.isDisabled = function() {
                return this.options.get("disabled")
            }
            ,
            d.prototype.isOpen = function() {
                return this.$container.hasClass("select2-container--open")
            }
            ,
            d.prototype.hasFocus = function() {
                return this.$container.hasClass("select2-container--focus")
            }
            ,
            d.prototype.focus = function(e) {
                this.hasFocus() || (this.$container.addClass("select2-container--focus"),
                this.trigger("focus", {}))
            }
            ,
            d.prototype.enable = function(e) {
                this.options.get("debug") && window.console && console.warn && console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),
                null != e && 0 !== e.length || (e = [!0]);
                var t = !e[0];
                this.$element.prop("disabled", t)
            }
            ,
            d.prototype.data = function() {
                this.options.get("debug") && 0 < arguments.length && window.console && console.warn && console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');
                var t = [];
                return this.dataAdapter.current(function(e) {
                    t = e
                }),
                t
            }
            ,
            d.prototype.val = function(e) {
                if (this.options.get("debug") && window.console && console.warn && console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),
                null == e || 0 === e.length)
                    return this.$element.val();
                var t = e[0];
                o.isArray(t) && (t = o.map(t, function(e) {
                    return e.toString()
                })),
                this.$element.val(t).trigger("input").trigger("change")
            }
            ,
            d.prototype.destroy = function() {
                this.$container.remove(),
                this.$element[0].detachEvent && this.$element[0].detachEvent("onpropertychange", this._syncA),
                null != this._observer ? (this._observer.disconnect(),
                this._observer = null) : this.$element[0].removeEventListener && (this.$element[0].removeEventListener("DOMAttrModified", this._syncA, !1),
                this.$element[0].removeEventListener("DOMNodeInserted", this._syncS, !1),
                this.$element[0].removeEventListener("DOMNodeRemoved", this._syncS, !1)),
                this._syncA = null,
                this._syncS = null,
                this.$element.off(".select2"),
                this.$element.attr("tabindex", u.GetData(this.$element[0], "old-tabindex")),
                this.$element.removeClass("select2-hidden-accessible"),
                this.$element.attr("aria-hidden", "false"),
                u.RemoveData(this.$element[0]),
                this.$element.removeData("select2"),
                this.dataAdapter.destroy(),
                this.selection.destroy(),
                this.dropdown.destroy(),
                this.results.destroy(),
                this.dataAdapter = null,
                this.selection = null,
                this.dropdown = null,
                this.results = null
            }
            ,
            d.prototype.render = function() {
                var e = o('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');
                return e.attr("dir", this.options.get("dir")),
                this.$container = e,
                this.$container.addClass("select2-container--" + this.options.get("theme")),
                u.StoreData(e[0], "element", this.$element),
                e
            }
            ,
            d
        }),
        e.define("jquery-mousewheel", ["jquery"], function(e) {
            return e
        }),
        e.define("jquery.select2", ["jquery", "jquery-mousewheel", "./select2/core", "./select2/defaults", "./select2/utils"], function(i, e, o, t, s) {
            if (null == i.fn.select2) {
                var a = ["open", "close", "destroy"];
                i.fn.select2 = function(t) {
                    if ("object" == typeof (t = t || {}))
                        return this.each(function() {
                            var e = i.extend(!0, {}, t);
                            new o(i(this),e)
                        }),
                        this;
                    if ("string" != typeof t)
                        throw new Error("Invalid arguments for Select2: " + t);
                    var n, r = Array.prototype.slice.call(arguments, 1);
                    return this.each(function() {
                        var e = s.GetData(this, "select2");
                        null == e && window.console && console.error && console.error("The select2('" + t + "') method was called on an element that is not using Select2."),
                        n = e[t].apply(e, r)
                    }),
                    -1 < i.inArray(t, a) ? this : n
                }
            }
            return null == i.fn.select2.defaults && (i.fn.select2.defaults = t),
            o
        }),
        {
            define: e.define,
            require: e.require
        }
    }()
      , t = e.require("jquery.select2");
    return u.fn.select2.amd = e,
    t
});
/**
 * SimpleBar.js - v4.2.3
 * Scrollbars, simpler.
 * https://grsmto.github.io/simplebar/
 *
 * Made by Adrien Denat from a fork by Jonathan Nicol
 * Under MIT License
 */

!function(t, e) {
    "object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : (t = t || self).SimpleBar = e()
}(this, function() {
    "use strict";
    var t = function(t) {
        if ("function" != typeof t)
            throw TypeError(String(t) + " is not a function");
        return t
    }
      , e = function(t) {
        try {
            return !!t()
        } catch (t) {
            return !0
        }
    }
      , i = {}.toString
      , r = function(t) {
        return i.call(t).slice(8, -1)
    }
      , n = "".split
      , s = e(function() {
        return !Object("z").propertyIsEnumerable(0)
    }) ? function(t) {
        return "String" == r(t) ? n.call(t, "") : Object(t)
    }
    : Object
      , o = function(t) {
        if (null == t)
            throw TypeError("Can't call method on " + t);
        return t
    }
      , a = function(t) {
        return Object(o(t))
    }
      , l = Math.ceil
      , c = Math.floor
      , u = function(t) {
        return isNaN(t = +t) ? 0 : (t > 0 ? c : l)(t)
    }
      , h = Math.min
      , f = function(t) {
        return t > 0 ? h(u(t), 9007199254740991) : 0
    }
      , d = function(t) {
        return "object" == typeof t ? null !== t : "function" == typeof t
    }
      , p = Array.isArray || function(t) {
        return "Array" == r(t)
    }
      , v = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : {};
    function g(t, e) {
        return t(e = {
            exports: {}
        }, e.exports),
        e.exports
    }
    var b, m, y, x, E = "object" == typeof window && window && window.Math == Math ? window : "object" == typeof self && self && self.Math == Math ? self : Function("return this")(), w = !e(function() {
        return 7 != Object.defineProperty({}, "a", {
            get: function() {
                return 7
            }
        }).a
    }), O = E.document, _ = d(O) && d(O.createElement), S = !w && !e(function() {
        return 7 != Object.defineProperty((t = "div",
        _ ? O.createElement(t) : {}), "a", {
            get: function() {
                return 7
            }
        }).a;
        var t
    }), L = function(t) {
        if (!d(t))
            throw TypeError(String(t) + " is not an object");
        return t
    }, A = function(t, e) {
        if (!d(t))
            return t;
        var i, r;
        if (e && "function" == typeof (i = t.toString) && !d(r = i.call(t)))
            return r;
        if ("function" == typeof (i = t.valueOf) && !d(r = i.call(t)))
            return r;
        if (!e && "function" == typeof (i = t.toString) && !d(r = i.call(t)))
            return r;
        throw TypeError("Can't convert object to primitive value")
    }, M = Object.defineProperty, k = {
        f: w ? M : function(t, e, i) {
            if (L(t),
            e = A(e, !0),
            L(i),
            S)
                try {
                    return M(t, e, i)
                } catch (t) {}
            if ("get"in i || "set"in i)
                throw TypeError("Accessors not supported");
            return "value"in i && (t[e] = i.value),
            t
        }
    }, W = function(t, e) {
        return {
            enumerable: !(1 & t),
            configurable: !(2 & t),
            writable: !(4 & t),
            value: e
        }
    }, T = w ? function(t, e, i) {
        return k.f(t, e, W(1, i))
    }
    : function(t, e, i) {
        return t[e] = i,
        t
    }
    , R = function(t, e) {
        try {
            T(E, t, e)
        } catch (i) {
            E[t] = e
        }
        return e
    }, j = g(function(t) {
        var e = E["__core-js_shared__"] || R("__core-js_shared__", {});
        (t.exports = function(t, i) {
            return e[t] || (e[t] = void 0 !== i ? i : {})
        }
        )("versions", []).push({
            version: "3.0.1",
            mode: "global",
            copyright: "© 2019 Denis Pushkarev (zloirock.ru)"
        })
    }), C = 0, N = Math.random(), z = function(t) {
        return "Symbol(".concat(void 0 === t ? "" : t, ")_", (++C + N).toString(36))
    }, D = !e(function() {
        return !String(Symbol())
    }), V = j("wks"), I = E.Symbol, B = function(t) {
        return V[t] || (V[t] = D && I[t] || (D ? I : z)("Symbol." + t))
    }, P = B("species"), H = function(t, e) {
        var i;
        return p(t) && ("function" != typeof (i = t.constructor) || i !== Array && !p(i.prototype) ? d(i) && null === (i = i[P]) && (i = void 0) : i = void 0),
        new (void 0 === i ? Array : i)(0 === e ? 0 : e)
    }, F = function(e, i) {
        var r = 1 == e
          , n = 2 == e
          , o = 3 == e
          , l = 4 == e
          , c = 6 == e
          , u = 5 == e || c
          , h = i || H;
        return function(i, d, p) {
            for (var v, g, b = a(i), m = s(b), y = function(e, i, r) {
                if (t(e),
                void 0 === i)
                    return e;
                switch (r) {
                case 0:
                    return function() {
                        return e.call(i)
                    }
                    ;
                case 1:
                    return function(t) {
                        return e.call(i, t)
                    }
                    ;
                case 2:
                    return function(t, r) {
                        return e.call(i, t, r)
                    }
                    ;
                case 3:
                    return function(t, r, n) {
                        return e.call(i, t, r, n)
                    }
                }
                return function() {
                    return e.apply(i, arguments)
                }
            }(d, p, 3), x = f(m.length), E = 0, w = r ? h(i, x) : n ? h(i, 0) : void 0; x > E; E++)
                if ((u || E in m) && (g = y(v = m[E], E, b),
                e))
                    if (r)
                        w[E] = g;
                    else if (g)
                        switch (e) {
                        case 3:
                            return !0;
                        case 5:
                            return v;
                        case 6:
                            return E;
                        case 2:
                            w.push(v)
                        }
                    else if (l)
                        return !1;
            return c ? -1 : o || l ? l : w
        }
    }, q = B("species"), $ = {}.propertyIsEnumerable, Y = Object.getOwnPropertyDescriptor, X = {
        f: Y && !$.call({
            1: 2
        }, 1) ? function(t) {
            var e = Y(this, t);
            return !!e && e.enumerable
        }
        : $
    }, G = function(t) {
        return s(o(t))
    }, K = {}.hasOwnProperty, U = function(t, e) {
        return K.call(t, e)
    }, J = Object.getOwnPropertyDescriptor, Q = {
        f: w ? J : function(t, e) {
            if (t = G(t),
            e = A(e, !0),
            S)
                try {
                    return J(t, e)
                } catch (t) {}
            if (U(t, e))
                return W(!X.f.call(t, e), t[e])
        }
    }, Z = j("native-function-to-string", Function.toString), tt = E.WeakMap, et = "function" == typeof tt && /native code/.test(Z.call(tt)), it = j("keys"), rt = {}, nt = E.WeakMap;
    if (et) {
        var st = new nt
          , ot = st.get
          , at = st.has
          , lt = st.set;
        b = function(t, e) {
            return lt.call(st, t, e),
            e
        }
        ,
        m = function(t) {
            return ot.call(st, t) || {}
        }
        ,
        y = function(t) {
            return at.call(st, t)
        }
    } else {
        var ct = it[x = "state"] || (it[x] = z(x));
        rt[ct] = !0,
        b = function(t, e) {
            return T(t, ct, e),
            e
        }
        ,
        m = function(t) {
            return U(t, ct) ? t[ct] : {}
        }
        ,
        y = function(t) {
            return U(t, ct)
        }
    }
    var ut, ht, ft = {
        set: b,
        get: m,
        has: y,
        enforce: function(t) {
            return y(t) ? m(t) : b(t, {})
        },
        getterFor: function(t) {
            return function(e) {
                var i;
                if (!d(e) || (i = m(e)).type !== t)
                    throw TypeError("Incompatible receiver, " + t + " required");
                return i
            }
        }
    }, dt = g(function(t) {
        var e = ft.get
          , i = ft.enforce
          , r = String(Z).split("toString");
        j("inspectSource", function(t) {
            return Z.call(t)
        }),
        (t.exports = function(t, e, n, s) {
            var o = !!s && !!s.unsafe
              , a = !!s && !!s.enumerable
              , l = !!s && !!s.noTargetGet;
            "function" == typeof n && ("string" != typeof e || U(n, "name") || T(n, "name", e),
            i(n).source = r.join("string" == typeof e ? e : "")),
            t !== E ? (o ? !l && t[e] && (a = !0) : delete t[e],
            a ? t[e] = n : T(t, e, n)) : a ? t[e] = n : R(e, n)
        }
        )(Function.prototype, "toString", function() {
            return "function" == typeof this && e(this).source || Z.call(this)
        })
    }), pt = Math.max, vt = Math.min, gt = (ut = !1,
    function(t, e, i) {
        var r, n = G(t), s = f(n.length), o = function(t, e) {
            var i = u(t);
            return i < 0 ? pt(i + e, 0) : vt(i, e)
        }(i, s);
        if (ut && e != e) {
            for (; s > o; )
                if ((r = n[o++]) != r)
                    return !0
        } else
            for (; s > o; o++)
                if ((ut || o in n) && n[o] === e)
                    return ut || o || 0;
        return !ut && -1
    }
    ), bt = function(t, e) {
        var i, r = G(t), n = 0, s = [];
        for (i in r)
            !U(rt, i) && U(r, i) && s.push(i);
        for (; e.length > n; )
            U(r, i = e[n++]) && (~gt(s, i) || s.push(i));
        return s
    }, mt = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"], yt = mt.concat("length", "prototype"), xt = {
        f: Object.getOwnPropertyNames || function(t) {
            return bt(t, yt)
        }
    }, Et = {
        f: Object.getOwnPropertySymbols
    }, wt = E.Reflect, Ot = wt && wt.ownKeys || function(t) {
        var e = xt.f(L(t))
          , i = Et.f;
        return i ? e.concat(i(t)) : e
    }
    , _t = function(t, e) {
        for (var i = Ot(e), r = k.f, n = Q.f, s = 0; s < i.length; s++) {
            var o = i[s];
            U(t, o) || r(t, o, n(e, o))
        }
    }, St = /#|\.prototype\./, Lt = function(t, i) {
        var r = Mt[At(t)];
        return r == Wt || r != kt && ("function" == typeof i ? e(i) : !!i)
    }, At = Lt.normalize = function(t) {
        return String(t).replace(St, ".").toLowerCase()
    }
    , Mt = Lt.data = {}, kt = Lt.NATIVE = "N", Wt = Lt.POLYFILL = "P", Tt = Lt, Rt = Q.f, jt = function(t, e) {
        var i, r, n, s, o, a = t.target, l = t.global, c = t.stat;
        if (i = l ? E : c ? E[a] || R(a, {}) : (E[a] || {}).prototype)
            for (r in e) {
                if (s = e[r],
                n = t.noTargetGet ? (o = Rt(i, r)) && o.value : i[r],
                !Tt(l ? r : a + (c ? "." : "#") + r, t.forced) && void 0 !== n) {
                    if (typeof s == typeof n)
                        continue;
                    _t(s, n)
                }
                (t.sham || n && n.sham) && T(s, "sham", !0),
                dt(i, r, s, t)
            }
    }, Ct = F(2);
    jt({
        target: "Array",
        proto: !0,
        forced: !(ht = "filter",
        !e(function() {
            var t = [];
            return (t.constructor = {})[q] = function() {
                return {
                    foo: 1
                }
            }
            ,
            1 !== t[ht](Boolean).foo
        }))
    }, {
        filter: function(t) {
            return Ct(this, t, arguments[1])
        }
    });
    var Nt = function(t, i) {
        var r = [][t];
        return !r || !e(function() {
            r.call(null, i || function() {
                throw 1
            }
            , 1)
        })
    }
      , zt = [].forEach
      , Dt = F(0)
      , Vt = Nt("forEach") ? function(t) {
        return Dt(this, t, arguments[1])
    }
    : zt;
    jt({
        target: "Array",
        proto: !0,
        forced: [].forEach != Vt
    }, {
        forEach: Vt
    });
    jt({
        target: "Array",
        proto: !0,
        forced: Nt("reduce")
    }, {
        reduce: function(e) {
            return function(e, i, r, n, o) {
                t(i);
                var l = a(e)
                  , c = s(l)
                  , u = f(l.length)
                  , h = o ? u - 1 : 0
                  , d = o ? -1 : 1;
                if (r < 2)
                    for (; ; ) {
                        if (h in c) {
                            n = c[h],
                            h += d;
                            break
                        }
                        if (h += d,
                        o ? h < 0 : u <= h)
                            throw TypeError("Reduce of empty array with no initial value")
                    }
                for (; o ? h >= 0 : u > h; h += d)
                    h in c && (n = i(n, c[h], h, l));
                return n
            }(this, e, arguments.length, arguments[1], !1)
        }
    });
    var It = k.f
      , Bt = Function.prototype
      , Pt = Bt.toString
      , Ht = /^\s*function ([^ (]*)/;
    !w || "name"in Bt || It(Bt, "name", {
        configurable: !0,
        get: function() {
            try {
                return Pt.call(this).match(Ht)[1]
            } catch (t) {
                return ""
            }
        }
    });
    var Ft = Object.keys || function(t) {
        return bt(t, mt)
    }
      , qt = Object.assign
      , $t = !qt || e(function() {
        var t = {}
          , e = {}
          , i = Symbol();
        return t[i] = 7,
        "abcdefghijklmnopqrst".split("").forEach(function(t) {
            e[t] = t
        }),
        7 != qt({}, t)[i] || "abcdefghijklmnopqrst" != Ft(qt({}, e)).join("")
    }) ? function(t, e) {
        for (var i = a(t), r = arguments.length, n = 1, o = Et.f, l = X.f; r > n; )
            for (var c, u = s(arguments[n++]), h = o ? Ft(u).concat(o(u)) : Ft(u), f = h.length, d = 0; f > d; )
                l.call(u, c = h[d++]) && (i[c] = u[c]);
        return i
    }
    : qt;
    jt({
        target: "Object",
        stat: !0,
        forced: Object.assign !== $t
    }, {
        assign: $t
    });
    var Yt = "\t\n\v\f\r                　\u2028\u2029\ufeff"
      , Xt = "[" + Yt + "]"
      , Gt = RegExp("^" + Xt + Xt + "*")
      , Kt = RegExp(Xt + Xt + "*$")
      , Ut = E.parseInt
      , Jt = /^[-+]?0[xX]/
      , Qt = 8 !== Ut(Yt + "08") || 22 !== Ut(Yt + "0x16") ? function(t, e) {
        var i = function(t, e) {
            return t = String(o(t)),
            1 & e && (t = t.replace(Gt, "")),
            2 & e && (t = t.replace(Kt, "")),
            t
        }(String(t), 3);
        return Ut(i, e >>> 0 || (Jt.test(i) ? 16 : 10))
    }
    : Ut;
    jt({
        global: !0,
        forced: parseInt != Qt
    }, {
        parseInt: Qt
    });
    var Zt, te, ee = RegExp.prototype.exec, ie = String.prototype.replace, re = ee, ne = (Zt = /a/,
    te = /b*/g,
    ee.call(Zt, "a"),
    ee.call(te, "a"),
    0 !== Zt.lastIndex || 0 !== te.lastIndex), se = void 0 !== /()??/.exec("")[1];
    (ne || se) && (re = function(t) {
        var e, i, r, n, s = this;
        return se && (i = new RegExp("^" + s.source + "$(?!\\s)",function() {
            var t = L(this)
              , e = "";
            return t.global && (e += "g"),
            t.ignoreCase && (e += "i"),
            t.multiline && (e += "m"),
            t.unicode && (e += "u"),
            t.sticky && (e += "y"),
            e
        }
        .call(s))),
        ne && (e = s.lastIndex),
        r = ee.call(s, t),
        ne && r && (s.lastIndex = s.global ? r.index + r[0].length : e),
        se && r && r.length > 1 && ie.call(r[0], i, function() {
            for (n = 1; n < arguments.length - 2; n++)
                void 0 === arguments[n] && (r[n] = void 0)
        }),
        r
    }
    );
    var oe = re;
    jt({
        target: "RegExp",
        proto: !0,
        forced: /./.exec !== oe
    }, {
        exec: oe
    });
    var ae = function(t, e, i) {
        return e + (i ? function(t, e, i) {
            var r, n, s = String(o(t)), a = u(e), l = s.length;
            return a < 0 || a >= l ? i ? "" : void 0 : (r = s.charCodeAt(a)) < 55296 || r > 56319 || a + 1 === l || (n = s.charCodeAt(a + 1)) < 56320 || n > 57343 ? i ? s.charAt(a) : r : i ? s.slice(a, a + 2) : n - 56320 + (r - 55296 << 10) + 65536
        }(t, e, !0).length : 1)
    }
      , le = function(t, e) {
        var i = t.exec;
        if ("function" == typeof i) {
            var n = i.call(t, e);
            if ("object" != typeof n)
                throw TypeError("RegExp exec method returned something other than an Object or null");
            return n
        }
        if ("RegExp" !== r(t))
            throw TypeError("RegExp#exec called on incompatible receiver");
        return oe.call(t, e)
    }
      , ce = B("species")
      , ue = !e(function() {
        var t = /./;
        return t.exec = function() {
            var t = [];
            return t.groups = {
                a: "7"
            },
            t
        }
        ,
        "7" !== "".replace(t, "$<a>")
    })
      , he = !e(function() {
        var t = /(?:)/
          , e = t.exec;
        t.exec = function() {
            return e.apply(this, arguments)
        }
        ;
        var i = "ab".split(t);
        return 2 !== i.length || "a" !== i[0] || "b" !== i[1]
    })
      , fe = function(t, i, r, n) {
        var s = B(t)
          , o = !e(function() {
            var e = {};
            return e[s] = function() {
                return 7
            }
            ,
            7 != ""[t](e)
        })
          , a = o && !e(function() {
            var e = !1
              , i = /a/;
            return i.exec = function() {
                return e = !0,
                null
            }
            ,
            "split" === t && (i.constructor = {},
            i.constructor[ce] = function() {
                return i
            }
            ),
            i[s](""),
            !e
        });
        if (!o || !a || "replace" === t && !ue || "split" === t && !he) {
            var l = /./[s]
              , c = r(s, ""[t], function(t, e, i, r, n) {
                return e.exec === oe ? o && !n ? {
                    done: !0,
                    value: l.call(e, i, r)
                } : {
                    done: !0,
                    value: t.call(i, e, r)
                } : {
                    done: !1
                }
            })
              , u = c[0]
              , h = c[1];
            dt(String.prototype, t, u),
            dt(RegExp.prototype, s, 2 == i ? function(t, e) {
                return h.call(t, this, e)
            }
            : function(t) {
                return h.call(t, this)
            }
            ),
            n && T(RegExp.prototype[s], "sham", !0)
        }
    };
    fe("match", 1, function(t, e, i) {
        return [function(e) {
            var i = o(this)
              , r = null == e ? void 0 : e[t];
            return void 0 !== r ? r.call(e, i) : new RegExp(e)[t](String(i))
        }
        , function(t) {
            var r = i(e, t, this);
            if (r.done)
                return r.value;
            var n = L(t)
              , s = String(this);
            if (!n.global)
                return le(n, s);
            var o = n.unicode;
            n.lastIndex = 0;
            for (var a, l = [], c = 0; null !== (a = le(n, s)); ) {
                var u = String(a[0]);
                l[c] = u,
                "" === u && (n.lastIndex = ae(s, f(n.lastIndex), o)),
                c++
            }
            return 0 === c ? null : l
        }
        ]
    });
    var de = Math.max
      , pe = Math.min
      , ve = Math.floor
      , ge = /\$([$&`']|\d\d?|<[^>]*>)/g
      , be = /\$([$&`']|\d\d?)/g;
    fe("replace", 2, function(t, e, i) {
        return [function(i, r) {
            var n = o(this)
              , s = null == i ? void 0 : i[t];
            return void 0 !== s ? s.call(i, n, r) : e.call(String(n), i, r)
        }
        , function(t, n) {
            var s = i(e, t, this, n);
            if (s.done)
                return s.value;
            var o = L(t)
              , a = String(this)
              , l = "function" == typeof n;
            l || (n = String(n));
            var c = o.global;
            if (c) {
                var h = o.unicode;
                o.lastIndex = 0
            }
            for (var d = []; ; ) {
                var p = le(o, a);
                if (null === p)
                    break;
                if (d.push(p),
                !c)
                    break;
                "" === String(p[0]) && (o.lastIndex = ae(a, f(o.lastIndex), h))
            }
            for (var v, g = "", b = 0, m = 0; m < d.length; m++) {
                p = d[m];
                for (var y = String(p[0]), x = de(pe(u(p.index), a.length), 0), E = [], w = 1; w < p.length; w++)
                    E.push(void 0 === (v = p[w]) ? v : String(v));
                var O = p.groups;
                if (l) {
                    var _ = [y].concat(E, x, a);
                    void 0 !== O && _.push(O);
                    var S = String(n.apply(void 0, _))
                } else
                    S = r(y, a, x, E, O, n);
                x >= b && (g += a.slice(b, x) + S,
                b = x + y.length)
            }
            return g + a.slice(b)
        }
        ];
        function r(t, i, r, n, s, o) {
            var l = r + t.length
              , c = n.length
              , u = be;
            return void 0 !== s && (s = a(s),
            u = ge),
            e.call(o, u, function(e, o) {
                var a;
                switch (o.charAt(0)) {
                case "$":
                    return "$";
                case "&":
                    return t;
                case "`":
                    return i.slice(0, r);
                case "'":
                    return i.slice(l);
                case "<":
                    a = s[o.slice(1, -1)];
                    break;
                default:
                    var u = +o;
                    if (0 === u)
                        return e;
                    if (u > c) {
                        var h = ve(u / 10);
                        return 0 === h ? e : h <= c ? void 0 === n[h - 1] ? o.charAt(1) : n[h - 1] + o.charAt(1) : e
                    }
                    a = n[u - 1]
                }
                return void 0 === a ? "" : a
            })
        }
    });
    for (var me in {
        CSSRuleList: 0,
        CSSStyleDeclaration: 0,
        CSSValueList: 0,
        ClientRectList: 0,
        DOMRectList: 0,
        DOMStringList: 0,
        DOMTokenList: 1,
        DataTransferItemList: 0,
        FileList: 0,
        HTMLAllCollection: 0,
        HTMLCollection: 0,
        HTMLFormElement: 0,
        HTMLSelectElement: 0,
        MediaList: 0,
        MimeTypeArray: 0,
        NamedNodeMap: 0,
        NodeList: 1,
        PaintRequestList: 0,
        Plugin: 0,
        PluginArray: 0,
        SVGLengthList: 0,
        SVGNumberList: 0,
        SVGPathSegList: 0,
        SVGPointList: 0,
        SVGStringList: 0,
        SVGTransformList: 0,
        SourceBufferList: 0,
        StyleSheetList: 0,
        TextTrackCueList: 0,
        TextTrackList: 0,
        TouchList: 0
    }) {
        var ye = E[me]
          , xe = ye && ye.prototype;
        if (xe && xe.forEach !== Vt)
            try {
                T(xe, "forEach", Vt)
            } catch (t) {
                xe.forEach = Vt
            }
    }
    var Ee = "Expected a function"
      , we = NaN
      , Oe = "[object Symbol]"
      , _e = /^\s+|\s+$/g
      , Se = /^[-+]0x[0-9a-f]+$/i
      , Le = /^0b[01]+$/i
      , Ae = /^0o[0-7]+$/i
      , Me = parseInt
      , ke = "object" == typeof v && v && v.Object === Object && v
      , We = "object" == typeof self && self && self.Object === Object && self
      , Te = ke || We || Function("return this")()
      , Re = Object.prototype.toString
      , je = Math.max
      , Ce = Math.min
      , Ne = function() {
        return Te.Date.now()
    };
    function ze(t, e, i) {
        var r, n, s, o, a, l, c = 0, u = !1, h = !1, f = !0;
        if ("function" != typeof t)
            throw new TypeError(Ee);
        function d(e) {
            var i = r
              , s = n;
            return r = n = void 0,
            c = e,
            o = t.apply(s, i)
        }
        function p(t) {
            var i = t - l;
            return void 0 === l || i >= e || i < 0 || h && t - c >= s
        }
        function v() {
            var t = Ne();
            if (p(t))
                return g(t);
            a = setTimeout(v, function(t) {
                var i = e - (t - l);
                return h ? Ce(i, s - (t - c)) : i
            }(t))
        }
        function g(t) {
            return a = void 0,
            f && r ? d(t) : (r = n = void 0,
            o)
        }
        function b() {
            var t = Ne()
              , i = p(t);
            if (r = arguments,
            n = this,
            l = t,
            i) {
                if (void 0 === a)
                    return function(t) {
                        return c = t,
                        a = setTimeout(v, e),
                        u ? d(t) : o
                    }(l);
                if (h)
                    return a = setTimeout(v, e),
                    d(l)
            }
            return void 0 === a && (a = setTimeout(v, e)),
            o
        }
        return e = Ve(e) || 0,
        De(i) && (u = !!i.leading,
        s = (h = "maxWait"in i) ? je(Ve(i.maxWait) || 0, e) : s,
        f = "trailing"in i ? !!i.trailing : f),
        b.cancel = function() {
            void 0 !== a && clearTimeout(a),
            c = 0,
            r = l = n = a = void 0
        }
        ,
        b.flush = function() {
            return void 0 === a ? o : g(Ne())
        }
        ,
        b
    }
    function De(t) {
        var e = typeof t;
        return !!t && ("object" == e || "function" == e)
    }
    function Ve(t) {
        if ("number" == typeof t)
            return t;
        if (function(t) {
            return "symbol" == typeof t || function(t) {
                return !!t && "object" == typeof t
            }(t) && Re.call(t) == Oe
        }(t))
            return we;
        if (De(t)) {
            var e = "function" == typeof t.valueOf ? t.valueOf() : t;
            t = De(e) ? e + "" : e
        }
        if ("string" != typeof t)
            return 0 === t ? t : +t;
        t = t.replace(_e, "");
        var i = Le.test(t);
        return i || Ae.test(t) ? Me(t.slice(2), i ? 2 : 8) : Se.test(t) ? we : +t
    }
    var Ie = function(t, e, i) {
        var r = !0
          , n = !0;
        if ("function" != typeof t)
            throw new TypeError(Ee);
        return De(i) && (r = "leading"in i ? !!i.leading : r,
        n = "trailing"in i ? !!i.trailing : n),
        ze(t, e, {
            leading: r,
            maxWait: e,
            trailing: n
        })
    }
      , Be = "Expected a function"
      , Pe = NaN
      , He = "[object Symbol]"
      , Fe = /^\s+|\s+$/g
      , qe = /^[-+]0x[0-9a-f]+$/i
      , $e = /^0b[01]+$/i
      , Ye = /^0o[0-7]+$/i
      , Xe = parseInt
      , Ge = "object" == typeof v && v && v.Object === Object && v
      , Ke = "object" == typeof self && self && self.Object === Object && self
      , Ue = Ge || Ke || Function("return this")()
      , Je = Object.prototype.toString
      , Qe = Math.max
      , Ze = Math.min
      , ti = function() {
        return Ue.Date.now()
    };
    function ei(t) {
        var e = typeof t;
        return !!t && ("object" == e || "function" == e)
    }
    function ii(t) {
        if ("number" == typeof t)
            return t;
        if (function(t) {
            return "symbol" == typeof t || function(t) {
                return !!t && "object" == typeof t
            }(t) && Je.call(t) == He
        }(t))
            return Pe;
        if (ei(t)) {
            var e = "function" == typeof t.valueOf ? t.valueOf() : t;
            t = ei(e) ? e + "" : e
        }
        if ("string" != typeof t)
            return 0 === t ? t : +t;
        t = t.replace(Fe, "");
        var i = $e.test(t);
        return i || Ye.test(t) ? Xe(t.slice(2), i ? 2 : 8) : qe.test(t) ? Pe : +t
    }
    var ri = function(t, e, i) {
        var r, n, s, o, a, l, c = 0, u = !1, h = !1, f = !0;
        if ("function" != typeof t)
            throw new TypeError(Be);
        function d(e) {
            var i = r
              , s = n;
            return r = n = void 0,
            c = e,
            o = t.apply(s, i)
        }
        function p(t) {
            var i = t - l;
            return void 0 === l || i >= e || i < 0 || h && t - c >= s
        }
        function v() {
            var t = ti();
            if (p(t))
                return g(t);
            a = setTimeout(v, function(t) {
                var i = e - (t - l);
                return h ? Ze(i, s - (t - c)) : i
            }(t))
        }
        function g(t) {
            return a = void 0,
            f && r ? d(t) : (r = n = void 0,
            o)
        }
        function b() {
            var t = ti()
              , i = p(t);
            if (r = arguments,
            n = this,
            l = t,
            i) {
                if (void 0 === a)
                    return function(t) {
                        return c = t,
                        a = setTimeout(v, e),
                        u ? d(t) : o
                    }(l);
                if (h)
                    return a = setTimeout(v, e),
                    d(l)
            }
            return void 0 === a && (a = setTimeout(v, e)),
            o
        }
        return e = ii(e) || 0,
        ei(i) && (u = !!i.leading,
        s = (h = "maxWait"in i) ? Qe(ii(i.maxWait) || 0, e) : s,
        f = "trailing"in i ? !!i.trailing : f),
        b.cancel = function() {
            void 0 !== a && clearTimeout(a),
            c = 0,
            r = l = n = a = void 0
        }
        ,
        b.flush = function() {
            return void 0 === a ? o : g(ti())
        }
        ,
        b
    }
      , ni = "Expected a function"
      , si = "__lodash_hash_undefined__"
      , oi = "[object Function]"
      , ai = "[object GeneratorFunction]"
      , li = /^\[object .+?Constructor\]$/
      , ci = "object" == typeof v && v && v.Object === Object && v
      , ui = "object" == typeof self && self && self.Object === Object && self
      , hi = ci || ui || Function("return this")();
    var fi = Array.prototype
      , di = Function.prototype
      , pi = Object.prototype
      , vi = hi["__core-js_shared__"]
      , gi = function() {
        var t = /[^.]+$/.exec(vi && vi.keys && vi.keys.IE_PROTO || "");
        return t ? "Symbol(src)_1." + t : ""
    }()
      , bi = di.toString
      , mi = pi.hasOwnProperty
      , yi = pi.toString
      , xi = RegExp("^" + bi.call(mi).replace(/[\\^$.*+?()[\]{}|]/g, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$")
      , Ei = fi.splice
      , wi = Wi(hi, "Map")
      , Oi = Wi(Object, "create");
    function _i(t) {
        var e = -1
          , i = t ? t.length : 0;
        for (this.clear(); ++e < i; ) {
            var r = t[e];
            this.set(r[0], r[1])
        }
    }
    function Si(t) {
        var e = -1
          , i = t ? t.length : 0;
        for (this.clear(); ++e < i; ) {
            var r = t[e];
            this.set(r[0], r[1])
        }
    }
    function Li(t) {
        var e = -1
          , i = t ? t.length : 0;
        for (this.clear(); ++e < i; ) {
            var r = t[e];
            this.set(r[0], r[1])
        }
    }
    function Ai(t, e) {
        for (var i, r, n = t.length; n--; )
            if ((i = t[n][0]) === (r = e) || i != i && r != r)
                return n;
        return -1
    }
    function Mi(t) {
        return !(!Ri(t) || (e = t,
        gi && gi in e)) && (function(t) {
            var e = Ri(t) ? yi.call(t) : "";
            return e == oi || e == ai
        }(t) || function(t) {
            var e = !1;
            if (null != t && "function" != typeof t.toString)
                try {
                    e = !!(t + "")
                } catch (t) {}
            return e
        }(t) ? xi : li).test(function(t) {
            if (null != t) {
                try {
                    return bi.call(t)
                } catch (t) {}
                try {
                    return t + ""
                } catch (t) {}
            }
            return ""
        }(t));
        var e
    }
    function ki(t, e) {
        var i, r, n = t.__data__;
        return ("string" == (r = typeof (i = e)) || "number" == r || "symbol" == r || "boolean" == r ? "__proto__" !== i : null === i) ? n["string" == typeof e ? "string" : "hash"] : n.map
    }
    function Wi(t, e) {
        var i = function(t, e) {
            return null == t ? void 0 : t[e]
        }(t, e);
        return Mi(i) ? i : void 0
    }
    function Ti(t, e) {
        if ("function" != typeof t || e && "function" != typeof e)
            throw new TypeError(ni);
        var i = function() {
            var r = arguments
              , n = e ? e.apply(this, r) : r[0]
              , s = i.cache;
            if (s.has(n))
                return s.get(n);
            var o = t.apply(this, r);
            return i.cache = s.set(n, o),
            o
        };
        return i.cache = new (Ti.Cache || Li),
        i
    }
    function Ri(t) {
        var e = typeof t;
        return !!t && ("object" == e || "function" == e)
    }
    _i.prototype.clear = function() {
        this.__data__ = Oi ? Oi(null) : {}
    }
    ,
    _i.prototype.delete = function(t) {
        return this.has(t) && delete this.__data__[t]
    }
    ,
    _i.prototype.get = function(t) {
        var e = this.__data__;
        if (Oi) {
            var i = e[t];
            return i === si ? void 0 : i
        }
        return mi.call(e, t) ? e[t] : void 0
    }
    ,
    _i.prototype.has = function(t) {
        var e = this.__data__;
        return Oi ? void 0 !== e[t] : mi.call(e, t)
    }
    ,
    _i.prototype.set = function(t, e) {
        return this.__data__[t] = Oi && void 0 === e ? si : e,
        this
    }
    ,
    Si.prototype.clear = function() {
        this.__data__ = []
    }
    ,
    Si.prototype.delete = function(t) {
        var e = this.__data__
          , i = Ai(e, t);
        return !(i < 0 || (i == e.length - 1 ? e.pop() : Ei.call(e, i, 1),
        0))
    }
    ,
    Si.prototype.get = function(t) {
        var e = this.__data__
          , i = Ai(e, t);
        return i < 0 ? void 0 : e[i][1]
    }
    ,
    Si.prototype.has = function(t) {
        return Ai(this.__data__, t) > -1
    }
    ,
    Si.prototype.set = function(t, e) {
        var i = this.__data__
          , r = Ai(i, t);
        return r < 0 ? i.push([t, e]) : i[r][1] = e,
        this
    }
    ,
    Li.prototype.clear = function() {
        this.__data__ = {
            hash: new _i,
            map: new (wi || Si),
            string: new _i
        }
    }
    ,
    Li.prototype.delete = function(t) {
        return ki(this, t).delete(t)
    }
    ,
    Li.prototype.get = function(t) {
        return ki(this, t).get(t)
    }
    ,
    Li.prototype.has = function(t) {
        return ki(this, t).has(t)
    }
    ,
    Li.prototype.set = function(t, e) {
        return ki(this, t).set(t, e),
        this
    }
    ,
    Ti.Cache = Li;
    var ji = Ti
      , Ci = function() {
        if ("undefined" != typeof Map)
            return Map;
        function t(t, e) {
            var i = -1;
            return t.some(function(t, r) {
                return t[0] === e && (i = r,
                !0)
            }),
            i
        }
        return function() {
            function e() {
                this.__entries__ = []
            }
            return Object.defineProperty(e.prototype, "size", {
                get: function() {
                    return this.__entries__.length
                },
                enumerable: !0,
                configurable: !0
            }),
            e.prototype.get = function(e) {
                var i = t(this.__entries__, e)
                  , r = this.__entries__[i];
                return r && r[1]
            }
            ,
            e.prototype.set = function(e, i) {
                var r = t(this.__entries__, e);
                ~r ? this.__entries__[r][1] = i : this.__entries__.push([e, i])
            }
            ,
            e.prototype.delete = function(e) {
                var i = this.__entries__
                  , r = t(i, e);
                ~r && i.splice(r, 1)
            }
            ,
            e.prototype.has = function(e) {
                return !!~t(this.__entries__, e)
            }
            ,
            e.prototype.clear = function() {
                this.__entries__.splice(0)
            }
            ,
            e.prototype.forEach = function(t, e) {
                void 0 === e && (e = null);
                for (var i = 0, r = this.__entries__; i < r.length; i++) {
                    var n = r[i];
                    t.call(e, n[1], n[0])
                }
            }
            ,
            e
        }()
    }()
      , Ni = "undefined" != typeof window && "undefined" != typeof document && window.document === document
      , zi = "undefined" != typeof global && global.Math === Math ? global : "undefined" != typeof self && self.Math === Math ? self : "undefined" != typeof window && window.Math === Math ? window : Function("return this")()
      , Di = "function" == typeof requestAnimationFrame ? requestAnimationFrame.bind(zi) : function(t) {
        return setTimeout(function() {
            return t(Date.now())
        }, 1e3 / 60)
    }
      , Vi = 2;
    var Ii = 20
      , Bi = ["top", "right", "bottom", "left", "width", "height", "size", "weight"]
      , Pi = "undefined" != typeof MutationObserver
      , Hi = function() {
        function t() {
            this.connected_ = !1,
            this.mutationEventsAdded_ = !1,
            this.mutationsObserver_ = null,
            this.observers_ = [],
            this.onTransitionEnd_ = this.onTransitionEnd_.bind(this),
            this.refresh = function(t, e) {
                var i = !1
                  , r = !1
                  , n = 0;
                function s() {
                    i && (i = !1,
                    t()),
                    r && a()
                }
                function o() {
                    Di(s)
                }
                function a() {
                    var t = Date.now();
                    if (i) {
                        if (t - n < Vi)
                            return;
                        r = !0
                    } else
                        i = !0,
                        r = !1,
                        setTimeout(o, e);
                    n = t
                }
                return a
            }(this.refresh.bind(this), Ii)
        }
        return t.prototype.addObserver = function(t) {
            ~this.observers_.indexOf(t) || this.observers_.push(t),
            this.connected_ || this.connect_()
        }
        ,
        t.prototype.removeObserver = function(t) {
            var e = this.observers_
              , i = e.indexOf(t);
            ~i && e.splice(i, 1),
            !e.length && this.connected_ && this.disconnect_()
        }
        ,
        t.prototype.refresh = function() {
            this.updateObservers_() && this.refresh()
        }
        ,
        t.prototype.updateObservers_ = function() {
            var t = this.observers_.filter(function(t) {
                return t.gatherActive(),
                t.hasActive()
            });
            return t.forEach(function(t) {
                return t.broadcastActive()
            }),
            t.length > 0
        }
        ,
        t.prototype.connect_ = function() {
            Ni && !this.connected_ && (document.addEventListener("transitionend", this.onTransitionEnd_),
            window.addEventListener("resize", this.refresh),
            Pi ? (this.mutationsObserver_ = new MutationObserver(this.refresh),
            this.mutationsObserver_.observe(document, {
                attributes: !0,
                childList: !0,
                characterData: !0,
                subtree: !0
            })) : (document.addEventListener("DOMSubtreeModified", this.refresh),
            this.mutationEventsAdded_ = !0),
            this.connected_ = !0)
        }
        ,
        t.prototype.disconnect_ = function() {
            Ni && this.connected_ && (document.removeEventListener("transitionend", this.onTransitionEnd_),
            window.removeEventListener("resize", this.refresh),
            this.mutationsObserver_ && this.mutationsObserver_.disconnect(),
            this.mutationEventsAdded_ && document.removeEventListener("DOMSubtreeModified", this.refresh),
            this.mutationsObserver_ = null,
            this.mutationEventsAdded_ = !1,
            this.connected_ = !1)
        }
        ,
        t.prototype.onTransitionEnd_ = function(t) {
            var e = t.propertyName
              , i = void 0 === e ? "" : e;
            Bi.some(function(t) {
                return !!~i.indexOf(t)
            }) && this.refresh()
        }
        ,
        t.getInstance = function() {
            return this.instance_ || (this.instance_ = new t),
            this.instance_
        }
        ,
        t.instance_ = null,
        t
    }()
      , Fi = function(t, e) {
        for (var i = 0, r = Object.keys(e); i < r.length; i++) {
            var n = r[i];
            Object.defineProperty(t, n, {
                value: e[n],
                enumerable: !1,
                writable: !1,
                configurable: !0
            })
        }
        return t
    }
      , qi = function(t) {
        return t && t.ownerDocument && t.ownerDocument.defaultView || zi
    }
      , $i = Ji(0, 0, 0, 0);
    function Yi(t) {
        return parseFloat(t) || 0
    }
    function Xi(t) {
        for (var e = [], i = 1; i < arguments.length; i++)
            e[i - 1] = arguments[i];
        return e.reduce(function(e, i) {
            return e + Yi(t["border-" + i + "-width"])
        }, 0)
    }
    function Gi(t) {
        var e = t.clientWidth
          , i = t.clientHeight;
        if (!e && !i)
            return $i;
        var r = qi(t).getComputedStyle(t)
          , n = function(t) {
            for (var e = {}, i = 0, r = ["top", "right", "bottom", "left"]; i < r.length; i++) {
                var n = r[i]
                  , s = t["padding-" + n];
                e[n] = Yi(s)
            }
            return e
        }(r)
          , s = n.left + n.right
          , o = n.top + n.bottom
          , a = Yi(r.width)
          , l = Yi(r.height);
        if ("border-box" === r.boxSizing && (Math.round(a + s) !== e && (a -= Xi(r, "left", "right") + s),
        Math.round(l + o) !== i && (l -= Xi(r, "top", "bottom") + o)),
        !function(t) {
            return t === qi(t).document.documentElement
        }(t)) {
            var c = Math.round(a + s) - e
              , u = Math.round(l + o) - i;
            1 !== Math.abs(c) && (a -= c),
            1 !== Math.abs(u) && (l -= u)
        }
        return Ji(n.left, n.top, a, l)
    }
    var Ki = "undefined" != typeof SVGGraphicsElement ? function(t) {
        return t instanceof qi(t).SVGGraphicsElement
    }
    : function(t) {
        return t instanceof qi(t).SVGElement && "function" == typeof t.getBBox
    }
    ;
    function Ui(t) {
        return Ni ? Ki(t) ? function(t) {
            var e = t.getBBox();
            return Ji(0, 0, e.width, e.height)
        }(t) : Gi(t) : $i
    }
    function Ji(t, e, i, r) {
        return {
            x: t,
            y: e,
            width: i,
            height: r
        }
    }
    var Qi = function() {
        function t(t) {
            this.broadcastWidth = 0,
            this.broadcastHeight = 0,
            this.contentRect_ = Ji(0, 0, 0, 0),
            this.target = t
        }
        return t.prototype.isActive = function() {
            var t = Ui(this.target);
            return this.contentRect_ = t,
            t.width !== this.broadcastWidth || t.height !== this.broadcastHeight
        }
        ,
        t.prototype.broadcastRect = function() {
            var t = this.contentRect_;
            return this.broadcastWidth = t.width,
            this.broadcastHeight = t.height,
            t
        }
        ,
        t
    }()
      , Zi = function() {
        return function(t, e) {
            var i, r, n, s, o, a, l, c = (r = (i = e).x,
            n = i.y,
            s = i.width,
            o = i.height,
            a = "undefined" != typeof DOMRectReadOnly ? DOMRectReadOnly : Object,
            l = Object.create(a.prototype),
            Fi(l, {
                x: r,
                y: n,
                width: s,
                height: o,
                top: n,
                right: r + s,
                bottom: o + n,
                left: r
            }),
            l);
            Fi(this, {
                target: t,
                contentRect: c
            })
        }
    }()
      , tr = function() {
        function t(t, e, i) {
            if (this.activeObservations_ = [],
            this.observations_ = new Ci,
            "function" != typeof t)
                throw new TypeError("The callback provided as parameter 1 is not a function.");
            this.callback_ = t,
            this.controller_ = e,
            this.callbackCtx_ = i
        }
        return t.prototype.observe = function(t) {
            if (!arguments.length)
                throw new TypeError("1 argument required, but only 0 present.");
            if ("undefined" != typeof Element && Element instanceof Object) {
                if (!(t instanceof qi(t).Element))
                    throw new TypeError('parameter 1 is not of type "Element".');
                var e = this.observations_;
                e.has(t) || (e.set(t, new Qi(t)),
                this.controller_.addObserver(this),
                this.controller_.refresh())
            }
        }
        ,
        t.prototype.unobserve = function(t) {
            if (!arguments.length)
                throw new TypeError("1 argument required, but only 0 present.");
            if ("undefined" != typeof Element && Element instanceof Object) {
                if (!(t instanceof qi(t).Element))
                    throw new TypeError('parameter 1 is not of type "Element".');
                var e = this.observations_;
                e.has(t) && (e.delete(t),
                e.size || this.controller_.removeObserver(this))
            }
        }
        ,
        t.prototype.disconnect = function() {
            this.clearActive(),
            this.observations_.clear(),
            this.controller_.removeObserver(this)
        }
        ,
        t.prototype.gatherActive = function() {
            var t = this;
            this.clearActive(),
            this.observations_.forEach(function(e) {
                e.isActive() && t.activeObservations_.push(e)
            })
        }
        ,
        t.prototype.broadcastActive = function() {
            if (this.hasActive()) {
                var t = this.callbackCtx_
                  , e = this.activeObservations_.map(function(t) {
                    return new Zi(t.target,t.broadcastRect())
                });
                this.callback_.call(t, e, t),
                this.clearActive()
            }
        }
        ,
        t.prototype.clearActive = function() {
            this.activeObservations_.splice(0)
        }
        ,
        t.prototype.hasActive = function() {
            return this.activeObservations_.length > 0
        }
        ,
        t
    }()
      , er = "undefined" != typeof WeakMap ? new WeakMap : new Ci
      , ir = function() {
        return function t(e) {
            if (!(this instanceof t))
                throw new TypeError("Cannot call a class as a function.");
            if (!arguments.length)
                throw new TypeError("1 argument required, but only 0 present.");
            var i = Hi.getInstance()
              , r = new tr(e,i,this);
            er.set(this, r)
        }
    }();
    ["observe", "unobserve", "disconnect"].forEach(function(t) {
        ir.prototype[t] = function() {
            var e;
            return (e = er.get(this))[t].apply(e, arguments)
        }
    });
    var rr = void 0 !== zi.ResizeObserver ? zi.ResizeObserver : ir
      , nr = !("undefined" == typeof window || !window.document || !window.document.createElement);
    function sr() {
        if ("undefined" == typeof document)
            return 0;
        var t = document.body
          , e = document.createElement("div")
          , i = e.style;
        i.position = "fixed",
        i.left = 0,
        i.visibility = "hidden",
        i.overflowY = "scroll",
        t.appendChild(e);
        var r = e.getBoundingClientRect().right;
        return t.removeChild(e),
        r
    }
    var or = function() {
        function t(e, i) {
            var r = this;
            this.onScroll = function() {
                r.scrollXTicking || (window.requestAnimationFrame(r.scrollX),
                r.scrollXTicking = !0),
                r.scrollYTicking || (window.requestAnimationFrame(r.scrollY),
                r.scrollYTicking = !0)
            }
            ,
            this.scrollX = function() {
                r.axis.x.isOverflowing && (r.showScrollbar("x"),
                r.positionScrollbar("x")),
                r.scrollXTicking = !1
            }
            ,
            this.scrollY = function() {
                r.axis.y.isOverflowing && (r.showScrollbar("y"),
                r.positionScrollbar("y")),
                r.scrollYTicking = !1
            }
            ,
            this.onMouseEnter = function() {
                r.showScrollbar("x"),
                r.showScrollbar("y")
            }
            ,
            this.onMouseMove = function(t) {
                r.mouseX = t.clientX,
                r.mouseY = t.clientY,
                (r.axis.x.isOverflowing || r.axis.x.forceVisible) && r.onMouseMoveForAxis("x"),
                (r.axis.y.isOverflowing || r.axis.y.forceVisible) && r.onMouseMoveForAxis("y")
            }
            ,
            this.onMouseLeave = function() {
                r.onMouseMove.cancel(),
                (r.axis.x.isOverflowing || r.axis.x.forceVisible) && r.onMouseLeaveForAxis("x"),
                (r.axis.y.isOverflowing || r.axis.y.forceVisible) && r.onMouseLeaveForAxis("y"),
                r.mouseX = -1,
                r.mouseY = -1
            }
            ,
            this.onWindowResize = function() {
                r.scrollbarWidth = sr(),
                r.hideNativeScrollbar()
            }
            ,
            this.hideScrollbars = function() {
                r.axis.x.track.rect = r.axis.x.track.el.getBoundingClientRect(),
                r.axis.y.track.rect = r.axis.y.track.el.getBoundingClientRect(),
                r.isWithinBounds(r.axis.y.track.rect) || (r.axis.y.scrollbar.el.classList.remove(r.classNames.visible),
                r.axis.y.isVisible = !1),
                r.isWithinBounds(r.axis.x.track.rect) || (r.axis.x.scrollbar.el.classList.remove(r.classNames.visible),
                r.axis.x.isVisible = !1)
            }
            ,
            this.onPointerEvent = function(t) {
                var e, i;
                r.axis.x.scrollbar.rect = r.axis.x.scrollbar.el.getBoundingClientRect(),
                r.axis.y.scrollbar.rect = r.axis.y.scrollbar.el.getBoundingClientRect(),
                (r.axis.x.isOverflowing || r.axis.x.forceVisible) && (i = r.isWithinBounds(r.axis.x.scrollbar.rect)),
                (r.axis.y.isOverflowing || r.axis.y.forceVisible) && (e = r.isWithinBounds(r.axis.y.scrollbar.rect)),
                (e || i) && (t.preventDefault(),
                t.stopPropagation(),
                "mousedown" === t.type && (e && r.onDragStart(t, "y"),
                i && r.onDragStart(t, "x")))
            }
            ,
            this.drag = function(e) {
                var i = r.axis[r.draggedAxis].track
                  , n = i.rect[r.axis[r.draggedAxis].sizeAttr]
                  , s = r.axis[r.draggedAxis].scrollbar
                  , o = r.contentWrapperEl[r.axis[r.draggedAxis].scrollSizeAttr]
                  , a = parseInt(r.elStyles[r.axis[r.draggedAxis].sizeAttr], 10);
                e.preventDefault(),
                e.stopPropagation();
                var l = (("y" === r.draggedAxis ? e.pageY : e.pageX) - i.rect[r.axis[r.draggedAxis].offsetAttr] - r.axis[r.draggedAxis].dragOffset) / (n - s.size) * (o - a);
                "x" === r.draggedAxis && (l = r.isRtl && t.getRtlHelpers().isRtlScrollbarInverted ? l - (n + s.size) : l,
                l = r.isRtl && t.getRtlHelpers().isRtlScrollingInverted ? -l : l),
                r.contentWrapperEl[r.axis[r.draggedAxis].scrollOffsetAttr] = l
            }
            ,
            this.onEndDrag = function(t) {
                t.preventDefault(),
                t.stopPropagation(),
                r.el.classList.remove(r.classNames.dragging),
                document.removeEventListener("mousemove", r.drag, !0),
                document.removeEventListener("mouseup", r.onEndDrag, !0),
                r.removePreventClickId = window.setTimeout(function() {
                    document.removeEventListener("click", r.preventClick, !0),
                    document.removeEventListener("dblclick", r.preventClick, !0),
                    r.removePreventClickId = null
                })
            }
            ,
            this.preventClick = function(t) {
                t.preventDefault(),
                t.stopPropagation()
            }
            ,
            this.el = e,
            this.flashTimeout,
            this.contentEl,
            this.contentWrapperEl,
            this.offsetEl,
            this.maskEl,
            this.globalObserver,
            this.mutationObserver,
            this.resizeObserver,
            this.scrollbarWidth,
            this.minScrollbarWidth = 20,
            this.options = Object.assign({}, t.defaultOptions, i),
            this.classNames = Object.assign({}, t.defaultOptions.classNames, this.options.classNames),
            this.isRtl,
            this.axis = {
                x: {
                    scrollOffsetAttr: "scrollLeft",
                    sizeAttr: "width",
                    scrollSizeAttr: "scrollWidth",
                    offsetAttr: "left",
                    overflowAttr: "overflowX",
                    dragOffset: 0,
                    isOverflowing: !0,
                    isVisible: !1,
                    forceVisible: !1,
                    track: {},
                    scrollbar: {}
                },
                y: {
                    scrollOffsetAttr: "scrollTop",
                    sizeAttr: "height",
                    scrollSizeAttr: "scrollHeight",
                    offsetAttr: "top",
                    overflowAttr: "overflowY",
                    dragOffset: 0,
                    isOverflowing: !0,
                    isVisible: !1,
                    forceVisible: !1,
                    track: {},
                    scrollbar: {}
                }
            },
            this.removePreventClickId = null,
            this.el.SimpleBar || (this.recalculate = Ie(this.recalculate.bind(this), 64),
            this.onMouseMove = Ie(this.onMouseMove.bind(this), 64),
            this.hideScrollbars = ri(this.hideScrollbars.bind(this), this.options.timeout),
            this.onWindowResize = ri(this.onWindowResize.bind(this), 64, {
                leading: !0
            }),
            t.getRtlHelpers = ji(t.getRtlHelpers),
            this.init())
        }
        t.getRtlHelpers = function() {
            var e = document.createElement("div");
            e.innerHTML = '<div class="hs-dummy-scrollbar-size"><div style="height: 200%; width: 200%; margin: 10px 0;"></div></div>';
            var i = e.firstElementChild;
            document.body.appendChild(i);
            var r = i.firstElementChild;
            i.scrollLeft = 0;
            var n = t.getOffset(i)
              , s = t.getOffset(r);
            i.scrollLeft = 999;
            var o = t.getOffset(r);
            return {
                isRtlScrollingInverted: n.left !== s.left && s.left - o.left != 0,
                isRtlScrollbarInverted: n.left !== s.left
            }
        }
        ,
        t.initHtmlApi = function() {
            this.initDOMLoadedElements = this.initDOMLoadedElements.bind(this),
            "undefined" != typeof MutationObserver && (this.globalObserver = new MutationObserver(function(e) {
                e.forEach(function(e) {
                    Array.prototype.forEach.call(e.addedNodes, function(e) {
                        1 === e.nodeType && (e.hasAttribute("data-simplebar") ? !e.SimpleBar && new t(e,t.getElOptions(e)) : Array.prototype.forEach.call(e.querySelectorAll("[data-simplebar]"), function(e) {
                            !e.SimpleBar && new t(e,t.getElOptions(e))
                        }))
                    }),
                    Array.prototype.forEach.call(e.removedNodes, function(t) {
                        1 === t.nodeType && (t.hasAttribute("data-simplebar") ? t.SimpleBar && t.SimpleBar.unMount() : Array.prototype.forEach.call(t.querySelectorAll("[data-simplebar]"), function(t) {
                            t.SimpleBar && t.SimpleBar.unMount()
                        }))
                    })
                })
            }
            ),
            this.globalObserver.observe(document, {
                childList: !0,
                subtree: !0
            })),
            "complete" === document.readyState || "loading" !== document.readyState && !document.documentElement.doScroll ? window.setTimeout(this.initDOMLoadedElements) : (document.addEventListener("DOMContentLoaded", this.initDOMLoadedElements),
            window.addEventListener("load", this.initDOMLoadedElements))
        }
        ,
        t.getElOptions = function(t) {
            return Array.prototype.reduce.call(t.attributes, function(t, e) {
                var i = e.name.match(/data-simplebar-(.+)/);
                if (i) {
                    var r = i[1].replace(/\W+(.)/g, function(t, e) {
                        return e.toUpperCase()
                    });
                    switch (e.value) {
                    case "true":
                        t[r] = !0;
                        break;
                    case "false":
                        t[r] = !1;
                        break;
                    case void 0:
                        t[r] = !0;
                        break;
                    default:
                        t[r] = e.value
                    }
                }
                return t
            }, {})
        }
        ,
        t.removeObserver = function() {
            this.globalObserver.disconnect()
        }
        ,
        t.initDOMLoadedElements = function() {
            document.removeEventListener("DOMContentLoaded", this.initDOMLoadedElements),
            window.removeEventListener("load", this.initDOMLoadedElements),
            Array.prototype.forEach.call(document.querySelectorAll("[data-simplebar]"), function(e) {
                e.SimpleBar || new t(e,t.getElOptions(e))
            })
        }
        ,
        t.getOffset = function(t) {
            var e = t.getBoundingClientRect();
            return {
                top: e.top + (window.pageYOffset || document.documentElement.scrollTop),
                left: e.left + (window.pageXOffset || document.documentElement.scrollLeft)
            }
        }
        ;
        var e = t.prototype;
        return e.init = function() {
            this.el.SimpleBar = this,
            nr && (this.initDOM(),
            this.scrollbarWidth = sr(),
            this.recalculate(),
            this.initListeners())
        }
        ,
        e.initDOM = function() {
            var t = this;
            if (Array.prototype.filter.call(this.el.children, function(e) {
                return e.classList.contains(t.classNames.wrapper)
            }).length)
                this.wrapperEl = this.el.querySelector("." + this.classNames.wrapper),
                this.contentWrapperEl = this.el.querySelector("." + this.classNames.contentWrapper),
                this.offsetEl = this.el.querySelector("." + this.classNames.offset),
                this.maskEl = this.el.querySelector("." + this.classNames.mask),
                this.contentEl = this.el.querySelector("." + this.classNames.contentEl),
                this.placeholderEl = this.el.querySelector("." + this.classNames.placeholder),
                this.heightAutoObserverWrapperEl = this.el.querySelector("." + this.classNames.heightAutoObserverWrapperEl),
                this.heightAutoObserverEl = this.el.querySelector("." + this.classNames.heightAutoObserverEl),
                this.axis.x.track.el = this.findChild(this.el, "." + this.classNames.track + "." + this.classNames.horizontal),
                this.axis.y.track.el = this.findChild(this.el, "." + this.classNames.track + "." + this.classNames.vertical);
            else {
                for (this.wrapperEl = document.createElement("div"),
                this.contentWrapperEl = document.createElement("div"),
                this.offsetEl = document.createElement("div"),
                this.maskEl = document.createElement("div"),
                this.contentEl = document.createElement("div"),
                this.placeholderEl = document.createElement("div"),
                this.heightAutoObserverWrapperEl = document.createElement("div"),
                this.heightAutoObserverEl = document.createElement("div"),
                this.wrapperEl.classList.add(this.classNames.wrapper),
                this.contentWrapperEl.classList.add(this.classNames.contentWrapper),
                this.offsetEl.classList.add(this.classNames.offset),
                this.maskEl.classList.add(this.classNames.mask),
                this.contentEl.classList.add(this.classNames.contentEl),
                this.placeholderEl.classList.add(this.classNames.placeholder),
                this.heightAutoObserverWrapperEl.classList.add(this.classNames.heightAutoObserverWrapperEl),
                this.heightAutoObserverEl.classList.add(this.classNames.heightAutoObserverEl); this.el.firstChild; )
                    this.contentEl.appendChild(this.el.firstChild);
                this.contentWrapperEl.appendChild(this.contentEl),
                this.offsetEl.appendChild(this.contentWrapperEl),
                this.maskEl.appendChild(this.offsetEl),
                this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl),
                this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl),
                this.wrapperEl.appendChild(this.maskEl),
                this.wrapperEl.appendChild(this.placeholderEl),
                this.el.appendChild(this.wrapperEl)
            }
            if (!this.axis.x.track.el || !this.axis.y.track.el) {
                var e = document.createElement("div")
                  , i = document.createElement("div");
                e.classList.add(this.classNames.track),
                i.classList.add(this.classNames.scrollbar),
                e.appendChild(i),
                this.axis.x.track.el = e.cloneNode(!0),
                this.axis.x.track.el.classList.add(this.classNames.horizontal),
                this.axis.y.track.el = e.cloneNode(!0),
                this.axis.y.track.el.classList.add(this.classNames.vertical),
                this.el.appendChild(this.axis.x.track.el),
                this.el.appendChild(this.axis.y.track.el)
            }
            this.axis.x.scrollbar.el = this.axis.x.track.el.querySelector("." + this.classNames.scrollbar),
            this.axis.y.scrollbar.el = this.axis.y.track.el.querySelector("." + this.classNames.scrollbar),
            this.options.autoHide || (this.axis.x.scrollbar.el.classList.add(this.classNames.visible),
            this.axis.y.scrollbar.el.classList.add(this.classNames.visible)),
            this.el.setAttribute("data-simplebar", "init")
        }
        ,
        e.initListeners = function() {
            var t = this;
            this.options.autoHide && this.el.addEventListener("mouseenter", this.onMouseEnter),
            ["mousedown", "click", "dblclick"].forEach(function(e) {
                t.el.addEventListener(e, t.onPointerEvent, !0)
            }),
            ["touchstart", "touchend", "touchmove"].forEach(function(e) {
                t.el.addEventListener(e, t.onPointerEvent, {
                    capture: !0,
                    passive: !0
                })
            }),
            this.el.addEventListener("mousemove", this.onMouseMove),
            this.el.addEventListener("mouseleave", this.onMouseLeave),
            this.contentWrapperEl.addEventListener("scroll", this.onScroll),
            window.addEventListener("resize", this.onWindowResize),
            this.resizeObserver = new rr(this.recalculate),
            this.resizeObserver.observe(this.el),
            this.resizeObserver.observe(this.contentEl)
        }
        ,
        e.recalculate = function() {
            var t = this.heightAutoObserverEl.offsetHeight <= 1
              , e = this.heightAutoObserverEl.offsetWidth <= 1;
            this.elStyles = window.getComputedStyle(this.el),
            this.isRtl = "rtl" === this.elStyles.direction,
            this.contentEl.style.padding = this.elStyles.paddingTop + " " + this.elStyles.paddingRight + " " + this.elStyles.paddingBottom + " " + this.elStyles.paddingLeft,
            this.wrapperEl.style.margin = "-" + this.elStyles.paddingTop + " -" + this.elStyles.paddingRight + " -" + this.elStyles.paddingBottom + " -" + this.elStyles.paddingLeft,
            this.contentWrapperEl.style.height = t ? "auto" : "100%",
            this.placeholderEl.style.width = e ? this.contentEl.offsetWidth + "px" : "auto",
            this.placeholderEl.style.height = this.contentEl.scrollHeight + "px",
            this.axis.x.isOverflowing = this.contentWrapperEl.scrollWidth > this.contentWrapperEl.offsetWidth,
            this.axis.y.isOverflowing = this.contentWrapperEl.scrollHeight > this.contentWrapperEl.offsetHeight,
            this.axis.x.isOverflowing = "hidden" !== this.elStyles.overflowX && this.axis.x.isOverflowing,
            this.axis.y.isOverflowing = "hidden" !== this.elStyles.overflowY && this.axis.y.isOverflowing,
            this.axis.x.forceVisible = "x" === this.options.forceVisible || !0 === this.options.forceVisible,
            this.axis.y.forceVisible = "y" === this.options.forceVisible || !0 === this.options.forceVisible,
            this.hideNativeScrollbar(),
            this.axis.x.track.rect = this.axis.x.track.el.getBoundingClientRect(),
            this.axis.y.track.rect = this.axis.y.track.el.getBoundingClientRect(),
            this.axis.x.scrollbar.size = this.getScrollbarSize("x"),
            this.axis.y.scrollbar.size = this.getScrollbarSize("y"),
            this.axis.x.scrollbar.el.style.width = this.axis.x.scrollbar.size + "px",
            this.axis.y.scrollbar.el.style.height = this.axis.y.scrollbar.size + "px",
            this.positionScrollbar("x"),
            this.positionScrollbar("y"),
            this.toggleTrackVisibility("x"),
            this.toggleTrackVisibility("y")
        }
        ,
        e.getScrollbarSize = function(t) {
            void 0 === t && (t = "y");
            var e, i = this.scrollbarWidth ? this.contentWrapperEl[this.axis[t].scrollSizeAttr] : this.contentWrapperEl[this.axis[t].scrollSizeAttr] - this.minScrollbarWidth, r = this.axis[t].track.rect[this.axis[t].sizeAttr];
            if (this.axis[t].isOverflowing) {
                var n = r / i;
                return e = Math.max(~~(n * r), this.options.scrollbarMinSize),
                this.options.scrollbarMaxSize && (e = Math.min(e, this.options.scrollbarMaxSize)),
                e
            }
        }
        ,
        e.positionScrollbar = function(e) {
            void 0 === e && (e = "y");
            var i = this.contentWrapperEl[this.axis[e].scrollSizeAttr]
              , r = this.axis[e].track.rect[this.axis[e].sizeAttr]
              , n = parseInt(this.elStyles[this.axis[e].sizeAttr], 10)
              , s = this.axis[e].scrollbar
              , o = this.contentWrapperEl[this.axis[e].scrollOffsetAttr]
              , a = (o = "x" === e && this.isRtl && t.getRtlHelpers().isRtlScrollingInverted ? -o : o) / (i - n)
              , l = ~~((r - s.size) * a);
            l = "x" === e && this.isRtl && t.getRtlHelpers().isRtlScrollbarInverted ? l + (r - s.size) : l,
            s.el.style.transform = "x" === e ? "translate3d(" + l + "px, 0, 0)" : "translate3d(0, " + l + "px, 0)"
        }
        ,
        e.toggleTrackVisibility = function(t) {
            void 0 === t && (t = "y");
            var e = this.axis[t].track.el
              , i = this.axis[t].scrollbar.el;
            this.axis[t].isOverflowing || this.axis[t].forceVisible ? (e.style.visibility = "visible",
            this.contentWrapperEl.style[this.axis[t].overflowAttr] = "scroll") : (e.style.visibility = "hidden",
            this.contentWrapperEl.style[this.axis[t].overflowAttr] = "hidden"),
            this.axis[t].isOverflowing ? i.style.display = "block" : i.style.display = "none"
        }
        ,
        e.hideNativeScrollbar = function() {
            if (this.offsetEl.style[this.isRtl ? "left" : "right"] = this.axis.y.isOverflowing || this.axis.y.forceVisible ? "-" + (this.scrollbarWidth || this.minScrollbarWidth) + "px" : 0,
            this.offsetEl.style.bottom = this.axis.x.isOverflowing || this.axis.x.forceVisible ? "-" + (this.scrollbarWidth || this.minScrollbarWidth) + "px" : 0,
            !this.scrollbarWidth) {
                var t = [this.isRtl ? "paddingLeft" : "paddingRight"];
                this.contentWrapperEl.style[t] = this.axis.y.isOverflowing || this.axis.y.forceVisible ? this.minScrollbarWidth + "px" : 0,
                this.contentWrapperEl.style.paddingBottom = this.axis.x.isOverflowing || this.axis.x.forceVisible ? this.minScrollbarWidth + "px" : 0
            }
        }
        ,
        e.onMouseMoveForAxis = function(t) {
            void 0 === t && (t = "y"),
            this.axis[t].track.rect = this.axis[t].track.el.getBoundingClientRect(),
            this.axis[t].scrollbar.rect = this.axis[t].scrollbar.el.getBoundingClientRect(),
            this.isWithinBounds(this.axis[t].scrollbar.rect) ? this.axis[t].scrollbar.el.classList.add(this.classNames.hover) : this.axis[t].scrollbar.el.classList.remove(this.classNames.hover),
            this.isWithinBounds(this.axis[t].track.rect) ? (this.showScrollbar(t),
            this.axis[t].track.el.classList.add(this.classNames.hover)) : this.axis[t].track.el.classList.remove(this.classNames.hover)
        }
        ,
        e.onMouseLeaveForAxis = function(t) {
            void 0 === t && (t = "y"),
            this.axis[t].track.el.classList.remove(this.classNames.hover),
            this.axis[t].scrollbar.el.classList.remove(this.classNames.hover)
        }
        ,
        e.showScrollbar = function(t) {
            void 0 === t && (t = "y");
            var e = this.axis[t].scrollbar.el;
            this.axis[t].isVisible || (e.classList.add(this.classNames.visible),
            this.axis[t].isVisible = !0),
            this.options.autoHide && this.hideScrollbars()
        }
        ,
        e.onDragStart = function(t, e) {
            void 0 === e && (e = "y");
            var i = this.axis[e].scrollbar.el
              , r = "y" === e ? t.pageY : t.pageX;
            this.axis[e].dragOffset = r - i.getBoundingClientRect()[this.axis[e].offsetAttr],
            this.draggedAxis = e,
            this.el.classList.add(this.classNames.dragging),
            document.addEventListener("mousemove", this.drag, !0),
            document.addEventListener("mouseup", this.onEndDrag, !0),
            null === this.removePreventClickId ? (document.addEventListener("click", this.preventClick, !0),
            document.addEventListener("dblclick", this.preventClick, !0)) : (window.clearTimeout(this.removePreventClickId),
            this.removePreventClickId = null)
        }
        ,
        e.getContentElement = function() {
            return this.contentEl
        }
        ,
        e.getScrollElement = function() {
            return this.contentWrapperEl
        }
        ,
        e.removeListeners = function() {
            var t = this;
            this.options.autoHide && this.el.removeEventListener("mouseenter", this.onMouseEnter),
            ["mousedown", "click", "dblclick"].forEach(function(e) {
                t.el.removeEventListener(e, t.onPointerEvent, !0)
            }),
            ["touchstart", "touchend", "touchmove"].forEach(function(e) {
                t.el.removeEventListener(e, t.onPointerEvent, {
                    capture: !0,
                    passive: !0
                })
            }),
            this.el.removeEventListener("mousemove", this.onMouseMove),
            this.el.removeEventListener("mouseleave", this.onMouseLeave),
            this.contentWrapperEl.removeEventListener("scroll", this.onScroll),
            window.removeEventListener("resize", this.onWindowResize),
            this.mutationObserver && this.mutationObserver.disconnect(),
            this.resizeObserver.disconnect(),
            this.recalculate.cancel(),
            this.onMouseMove.cancel(),
            this.hideScrollbars.cancel(),
            this.onWindowResize.cancel()
        }
        ,
        e.unMount = function() {
            this.removeListeners(),
            this.el.SimpleBar = null
        }
        ,
        e.isChildNode = function(t) {
            return null !== t && (t === this.el || this.isChildNode(t.parentNode))
        }
        ,
        e.isWithinBounds = function(t) {
            return this.mouseX >= t.left && this.mouseX <= t.left + t.width && this.mouseY >= t.top && this.mouseY <= t.top + t.height
        }
        ,
        e.findChild = function(t, e) {
            var i = t.matches || t.webkitMatchesSelector || t.mozMatchesSelector || t.msMatchesSelector;
            return Array.prototype.filter.call(t.children, function(t) {
                return i.call(t, e)
            })[0]
        }
        ,
        t
    }();
    return or.defaultOptions = {
        autoHide: !0,
        forceVisible: !1,
        classNames: {
            contentEl: "simplebar-content",
            contentWrapper: "simplebar-content-wrapper",
            offset: "simplebar-offset",
            mask: "simplebar-mask",
            wrapper: "simplebar-wrapper",
            placeholder: "simplebar-placeholder",
            scrollbar: "simplebar-scrollbar",
            track: "simplebar-track",
            heightAutoObserverWrapperEl: "simplebar-height-auto-observer-wrapper",
            heightAutoObserverEl: "simplebar-height-auto-observer",
            visible: "simplebar-visible",
            horizontal: "simplebar-horizontal",
            vertical: "simplebar-vertical",
            hover: "simplebar-hover",
            dragging: "simplebar-dragging"
        },
        scrollbarMinSize: 25,
        scrollbarMaxSize: 0,
        timeout: 1e3
    },
    nr && or.initHtmlApi(),
    or
});
!function(e) {
    e(["jquery"], function(e) {
        return function() {
            function t(e, t, n) {
                return g({
                    type: O.error,
                    iconClass: m().iconClasses.error,
                    message: e,
                    optionsOverride: n,
                    title: t
                })
            }
            function n(t, n) {
                return t || (t = m()),
                v = e("#" + t.containerId),
                v.length ? v : (n && (v = d(t)),
                v)
            }
            function o(e, t, n) {
                return g({
                    type: O.info,
                    iconClass: m().iconClasses.info,
                    message: e,
                    optionsOverride: n,
                    title: t
                })
            }
            function s(e) {
                C = e
            }
            function i(e, t, n) {
                return g({
                    type: O.success,
                    iconClass: m().iconClasses.success,
                    message: e,
                    optionsOverride: n,
                    title: t
                })
            }
            function a(e, t, n) {
                return g({
                    type: O.warning,
                    iconClass: m().iconClasses.warning,
                    message: e,
                    optionsOverride: n,
                    title: t
                })
            }
            function r(e, t) {
                var o = m();
                v || n(o),
                u(e, o, t) || l(o)
            }
            function c(t) {
                var o = m();
                return v || n(o),
                t && 0 === e(":focus", t).length ? void h(t) : void (v.children().length && v.remove())
            }
            function l(t) {
                for (var n = v.children(), o = n.length - 1; o >= 0; o--)
                    u(e(n[o]), t)
            }
            function u(t, n, o) {
                var s = !(!o || !o.force) && o.force;
                return !(!t || !s && 0 !== e(":focus", t).length) && (t[n.hideMethod]({
                    duration: n.hideDuration,
                    easing: n.hideEasing,
                    complete: function() {
                        h(t)
                    }
                }),
                !0)
            }
            function d(t) {
                return v = e("<div/>").attr("id", t.containerId).addClass(t.positionClass),
                v.appendTo(e(t.target)),
                v
            }
            function p() {
                return {
                    tapToDismiss: !0,
                    toastClass: "toast",
                    containerId: "toast-container",
                    debug: !1,
                    showMethod: "fadeIn",
                    showDuration: 300,
                    showEasing: "swing",
                    onShown: void 0,
                    hideMethod: "fadeOut",
                    hideDuration: 1e3,
                    hideEasing: "swing",
                    onHidden: void 0,
                    closeMethod: !1,
                    closeDuration: !1,
                    closeEasing: !1,
                    closeOnHover: !0,
                    extendedTimeOut: 1e3,
                    iconClasses: {
                        error: "toast-error",
                        info: "toast-info",
                        success: "toast-success",
                        warning: "toast-warning"
                    },
                    iconClass: "toast-info",
                    positionClass: "toast-top-right",
                    timeOut: 5e3,
                    titleClass: "toast-title",
                    messageClass: "toast-message",
                    escapeHtml: !1,
                    target: "body",
                    closeHtml: '<button type="button">&times;</button>',
                    closeClass: "toast-close-button",
                    newestOnTop: !0,
                    preventDuplicates: !1,
                    progressBar: !1,
                    progressClass: "toast-progress",
                    rtl: !1
                }
            }
            function f(e) {
                C && C(e)
            }
            function g(t) {
                function o(e) {
                    return null == e && (e = ""),
                    e.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/'/g, "&#39;").replace(/</g, "&lt;").replace(/>/g, "&gt;")
                }
                function s() {
                    c(),
                    u(),
                    d(),
                    p(),
                    g(),
                    C(),
                    l(),
                    i()
                }
                function i() {
                    var e = "";
                    switch (t.iconClass) {
                    case "toast-success":
                    case "toast-info":
                        e = "polite";
                        break;
                    default:
                        e = "assertive"
                    }
                    I.attr("aria-live", e)
                }
                function a() {
                    E.closeOnHover && I.hover(H, D),
                    !E.onclick && E.tapToDismiss && I.click(b),
                    E.closeButton && j && j.click(function(e) {
                        e.stopPropagation ? e.stopPropagation() : void 0 !== e.cancelBubble && e.cancelBubble !== !0 && (e.cancelBubble = !0),
                        E.onCloseClick && E.onCloseClick(e),
                        b(!0)
                    }),
                    E.onclick && I.click(function(e) {
                        E.onclick(e),
                        b()
                    })
                }
                function r() {
                    I.hide(),
                    I[E.showMethod]({
                        duration: E.showDuration,
                        easing: E.showEasing,
                        complete: E.onShown
                    }),
                    E.timeOut > 0 && (k = setTimeout(b, E.timeOut),
                    F.maxHideTime = parseFloat(E.timeOut),
                    F.hideEta = (new Date).getTime() + F.maxHideTime,
                    E.progressBar && (F.intervalId = setInterval(x, 10)))
                }
                function c() {
                    t.iconClass && I.addClass(E.toastClass).addClass(y)
                }
                function l() {
                    E.newestOnTop ? v.prepend(I) : v.append(I)
                }
                function u() {
                    if (t.title) {
                        var e = t.title;
                        E.escapeHtml && (e = o(t.title)),
                        M.append(e).addClass(E.titleClass),
                        I.append(M)
                    }
                }
                function d() {
                    if (t.message) {
                        var e = t.message;
                        E.escapeHtml && (e = o(t.message)),
                        B.append(e).addClass(E.messageClass),
                        I.append(B)
                    }
                }
                function p() {
                    E.closeButton && (j.addClass(E.closeClass).attr("role", "button"),
                    I.prepend(j))
                }
                function g() {
                    E.progressBar && (q.addClass(E.progressClass),
                    I.prepend(q))
                }
                function C() {
                    E.rtl && I.addClass("rtl")
                }
                function O(e, t) {
                    if (e.preventDuplicates) {
                        if (t.message === w)
                            return !0;
                        w = t.message
                    }
                    return !1
                }
                function b(t) {
                    var n = t && E.closeMethod !== !1 ? E.closeMethod : E.hideMethod
                      , o = t && E.closeDuration !== !1 ? E.closeDuration : E.hideDuration
                      , s = t && E.closeEasing !== !1 ? E.closeEasing : E.hideEasing;
                    if (!e(":focus", I).length || t)
                        return clearTimeout(F.intervalId),
                        I[n]({
                            duration: o,
                            easing: s,
                            complete: function() {
                                h(I),
                                clearTimeout(k),
                                E.onHidden && "hidden" !== P.state && E.onHidden(),
                                P.state = "hidden",
                                P.endTime = new Date,
                                f(P)
                            }
                        })
                }
                function D() {
                    (E.timeOut > 0 || E.extendedTimeOut > 0) && (k = setTimeout(b, E.extendedTimeOut),
                    F.maxHideTime = parseFloat(E.extendedTimeOut),
                    F.hideEta = (new Date).getTime() + F.maxHideTime)
                }
                function H() {
                    clearTimeout(k),
                    F.hideEta = 0,
                    I.stop(!0, !0)[E.showMethod]({
                        duration: E.showDuration,
                        easing: E.showEasing
                    })
                }
                function x() {
                    var e = (F.hideEta - (new Date).getTime()) / F.maxHideTime * 100;
                    q.width(e + "%")
                }
                var E = m()
                  , y = t.iconClass || E.iconClass;
                if ("undefined" != typeof t.optionsOverride && (E = e.extend(E, t.optionsOverride),
                y = t.optionsOverride.iconClass || y),
                !O(E, t)) {
                    T++,
                    v = n(E, !0);
                    var k = null
                      , I = e("<div/>")
                      , M = e("<div/>")
                      , B = e("<div/>")
                      , q = e("<div/>")
                      , j = e(E.closeHtml)
                      , F = {
                        intervalId: null,
                        hideEta: null,
                        maxHideTime: null
                    }
                      , P = {
                        toastId: T,
                        state: "visible",
                        startTime: new Date,
                        options: E,
                        map: t
                    };
                    return s(),
                    r(),
                    a(),
                    f(P),
                    E.debug && console && console.log(P),
                    I
                }
            }
            function m() {
                return e.extend({}, p(), b.options)
            }
            function h(e) {
                v || (v = n()),
                e.is(":visible") || (e.remove(),
                e = null,
                0 === v.children().length && (v.remove(),
                w = void 0))
            }
            var v, C, w, T = 0, O = {
                error: "error",
                info: "info",
                success: "success",
                warning: "warning"
            }, b = {
                clear: r,
                remove: c,
                error: t,
                getContainer: n,
                info: o,
                options: {},
                subscribe: s,
                success: i,
                version: "2.1.4",
                warning: a
            };
            return b
        }()
    })
}("function" == typeof define && define.amd ? define : function(e, t) {
    "undefined" != typeof module && module.exports ? module.exports = t(require("jquery")) : window.toastr = t(window.jQuery)
}
);
//# sourceMappingURL=toastr.js.map
