(self.webpackChunktradingview = self.webpackChunktradingview || []).push([
    [78318], {
        78217: t => {
            t.exports = {
                "tv-circle-logo-pair": "tv-circle-logo-pair-ocURKVwI",
                "tv-circle-logo-pair--xxxxsmall": "tv-circle-logo-pair--xxxxsmall-ocURKVwI",
                "tv-circle-logo-pair--xxxsmall": "tv-circle-logo-pair--xxxsmall-ocURKVwI",
                "tv-circle-logo-pair--xxsmall": "tv-circle-logo-pair--xxsmall-ocURKVwI",
                "tv-circle-logo-pair--xsmall": "tv-circle-logo-pair--xsmall-ocURKVwI",
                "tv-circle-logo-pair--small": "tv-circle-logo-pair--small-ocURKVwI",
                "tv-circle-logo-pair--medium": "tv-circle-logo-pair--medium-ocURKVwI",
                "tv-circle-logo-pair--large": "tv-circle-logo-pair--large-ocURKVwI",
                "tv-circle-logo-pair--xlarge": "tv-circle-logo-pair--xlarge-ocURKVwI",
                "tv-circle-logo-pair--xxlarge": "tv-circle-logo-pair--xxlarge-ocURKVwI",
                "tv-circle-logo-pair--xxxlarge": "tv-circle-logo-pair--xxxlarge-ocURKVwI",
                "tv-circle-logo-pair__logo": "tv-circle-logo-pair__logo-ocURKVwI",
                "tv-circle-logo-pair__logo--xxxxsmall": "tv-circle-logo-pair__logo--xxxxsmall-ocURKVwI",
                "tv-circle-logo-pair__logo--xxxsmall": "tv-circle-logo-pair__logo--xxxsmall-ocURKVwI",
                "tv-circle-logo-pair__logo--xxsmall": "tv-circle-logo-pair__logo--xxsmall-ocURKVwI",
                "tv-circle-logo-pair__logo--xsmall": "tv-circle-logo-pair__logo--xsmall-ocURKVwI",
                "tv-circle-logo-pair__logo--small": "tv-circle-logo-pair__logo--small-ocURKVwI",
                "tv-circle-logo-pair__logo--medium": "tv-circle-logo-pair__logo--medium-ocURKVwI",
                "tv-circle-logo-pair__logo--large": "tv-circle-logo-pair__logo--large-ocURKVwI",
                "tv-circle-logo-pair__logo--xlarge": "tv-circle-logo-pair__logo--xlarge-ocURKVwI",
                "tv-circle-logo-pair__logo--xxlarge": "tv-circle-logo-pair__logo--xxlarge-ocURKVwI",
                "tv-circle-logo-pair__logo--xxxlarge": "tv-circle-logo-pair__logo--xxxlarge-ocURKVwI",
                "tv-circle-logo-pair__logo-empty": "tv-circle-logo-pair__logo-empty-ocURKVwI"
            }
        },
        456057: t => {
            t.exports = {
                "tv-circle-logo": "tv-circle-logo-PsAlMQQF",
                "tv-circle-logo--xxxsmall": "tv-circle-logo--xxxsmall-PsAlMQQF",
                "tv-circle-logo--xxsmall": "tv-circle-logo--xxsmall-PsAlMQQF",
                "tv-circle-logo--xsmall": "tv-circle-logo--xsmall-PsAlMQQF",
                "tv-circle-logo--small": "tv-circle-logo--small-PsAlMQQF",
                "tv-circle-logo--medium": "tv-circle-logo--medium-PsAlMQQF",
                "tv-circle-logo--large": "tv-circle-logo--large-PsAlMQQF",
                "tv-circle-logo--xlarge": "tv-circle-logo--xlarge-PsAlMQQF",
                "tv-circle-logo--xxlarge": "tv-circle-logo--xxlarge-PsAlMQQF",
                "tv-circle-logo--xxxlarge": "tv-circle-logo--xxxlarge-PsAlMQQF",
                "tv-circle-logo--visually-hidden": "tv-circle-logo--visually-hidden-PsAlMQQF"
            }
        },
        72224: t => {
            t.exports = {
                fade: "fade-zUA5953i",
                hidden: "hidden-zUA5953i",
                floatingTooltip: "floatingTooltip-zUA5953i"
            }
        },
        467236: (t, e, i) => {
            "use strict";
            i.d(e, {
                getCircleLogoAnyHtml: () => o
            });
            var s = i(857430),
                r = i(348091);

            function o(t) {
                const {
                    logoUrls: e,
                    ...i
                } = t;
                return 1 === e.length ? (0, s.getCircleLogoHtml)({
                    logoUrl: e[0],
                    ...i
                }) : 2 === e.length ? (0, r.getCircleLogoPairHtml)({
                    primaryLogoUrl: e[0],
                    secondaryLogoUrl: e[1],
                    ...i
                }) : (0, s.getCircleLogoHtml)({
                    logoUrl: void 0,
                    ...i
                })
            }
        },
        348091: (t, e, i) => {
            "use strict";
            i.d(e, {
                getCircleLogoPairHtml: () => r
            });
            var s = i(115078);

            function r(t) {
                const {
                    primaryLogoUrl: e,
                    secondaryLogoUrl: i,
                    size: r,
                    className: a
                } = t;
                return `<span class="${(0,s.getBlockStyleClasses)(r,a)}">\n\t\t\t${o({logoUrl:i,size:r})}\n\t\t\t${o({logoUrl:e,size:r})}\n\t\t</span>`
            }

            function o(t) {
                const {
                    logoUrl: e,
                    size: i
                } = t, r = (0, s.getLogoStyleClasses)(i, Boolean(e));
                return void 0 === e ? `<span class="${r}"></span>` : `<img class="${r}" crossorigin src="${e}" alt="" />`
            }
        },
        115078: (t, e, i) => {
            "use strict";
            i.d(e, {
                getBlockStyleClasses: () => a,
                getLogoStyleClasses: () => n
            });
            var s = i(497754),
                r = i(78217),
                o = i.n(r);

            function a(t, e) {
                return s(o()["tv-circle-logo-pair"], o()[`tv-circle-logo-pair--${t}`], e)
            }

            function n(t, e = !0) {
                return s(o()["tv-circle-logo-pair__logo"], o()[`tv-circle-logo-pair__logo--${t}`], !e && o()["tv-circle-logo-pair__logo-empty"])
            }
        },
        857430: (t, e, i) => {
            "use strict";
            i.d(e, {
                getCircleLogoHtml: () => r
            });
            var s = i(842060);
            i(456057);

            function r(t) {
                const e = (0, s.getStyleClasses)(t.size, t.className);
                return (0, s.isCircleLogoWithUrlProps)(t) ? `<img class="${e}" crossorigin src="${t.logoUrl}" alt="">` : `<span class="${e}">${t.placeholderLetter||""}</span>`
            }
        },
        195317: (t, e, i) => {
            "use strict";
            i.d(e, {
                MiniChartPlot: () => c
            });
            var s = i(650151),
                r = i(55243),
                o = i(518439),
                a = i(501372),
                n = i(293659),
                l = i(264552);
            class c extends n.MiniChartPlotBase {
                constructor(t, e, i, s, r, o) {
                    super(t, e, i, r), this._seriesDataSource = null, this._cachedData = null, this._minBarIndex = null, this._maxBarIndex = null, this._studyPlots = s, this._options = r, o && this._loadCache(o)
                }
                destroy() {
                    var t;
                    null === (t = this._seriesDataSource) || void 0 === t || t.destroy(), super.destroy()
                }
                reloadCache(t) {
                    this._cache = t, t ? this._loadCache(t) : (this._minBarIndex = null, this._maxBarIndex = null, this._cachedData = null, this._onData().then((() => {
                        this.fitContent()
                    })))
                }
                requestData() {
                    const t = this._getSeriesDataSource();
                    this._status.setValue(0), this._noData.setValue(null), t.modifySeries(this.extendedSymbol(), (0, l.getServerInterval)(this.resolution()), this._miniChart.timeframe().value()), t.isStarted() || t.start()
                }
                clearSourceData() {
                    var t;
                    null === (t = this._seriesDataSource) || void 0 === t || t.clearData(), this._studyPlots().forEach((t => t.clearSourceData()))
                }
                moveSourceData(t) {
                    var e;
                    null === (e = this._seriesDataSource) || void 0 === e || e.moveData(t)
                }
                onTickmarksAdded(t, e) {
                    const i = this.maxBarIndex();
                    this._isLastSessionInterval.value() && null !== i && i >= t && i <= e && (this.updateData(!1, !0), this.fitContent())
                }
                disconnect() {
                    var t;
                    null === (t = this._seriesDataSource) || void 0 === t || t.stop()
                }
                isConnected() {
                    var t;
                    return Boolean(null === (t = this._seriesDataSource) || void 0 === t ? void 0 : t.isStarted())
                }
                clearData() {
                    if (super.clearData(), this._minBarIndex = null, this._maxBarIndex = null, null !== this._seriesDataSource && (this._seriesDataSource.stop(), this.clearSourceData()), this._cache) {
                        const {
                            minBarIndex: t,
                            maxBarIndex: e,
                            symbolInfo: i
                        } = this._cache;
                        this._minBarIndex = t, this._maxBarIndex = e, i && (this._symbolInfo = i, this._initBarBuilder(i).then((() => {
                            this._isDestroyed.value() || this._onData().then((() => {
                                this.fitContent()
                            }))
                        })))
                    }
                }
                seriesDataSource() {
                    return this._getSeriesDataSource()
                }
                firstBar() {
                    return (0, n.isTimePointIndex)(this._minBarIndex) ? this._bars().search(this._minBarIndex) : this._bars().first()
                }
                lastBar() {
                    return (0, n.isTimePointIndex)(this._maxBarIndex) ? this._bars().search(this._maxBarIndex, o.PlotRowSearchMode.NearestLeft) : this._bars().last()
                }
                minBarIndex() {
                    return this._minBarIndex
                }
                maxBarIndex() {
                    return this._maxBarIndex
                }
                cacheData() {
                    var t, e;
                    const i = null === (e = null === (t = this._seriesDataSource) || void 0 === t ? void 0 : t.data()) || void 0 === e ? void 0 : e.clone(),
                        s = this._symbolInfo,
                        r = this._minBarIndex,
                        o = this._maxBarIndex;
                    return i && null !== s && null !== r && null !== o ? {
                        data: i,
                        symbolInfo: s,
                        minBarIndex: r,
                        maxBarIndex: o
                    } : null
                }
                _isMainPlot() {
                    return !0
                }
                _dataUpdated(t, e, i) {
                    if (super._dataUpdated(t, e, i), !this._isLastSessionInterval.value() || !this._miniChart.supportRealtimeUpdates() || !i) return;
                    const s = i.lastBarSession;
                    0 !== s && 1 !== s || 2 !== e.lastBarSession || Promise.resolve().then((() => {
                        this._miniChart.setTimeframe(this._miniChart.timeframe().value(), !1, !0)
                    }))
                }
                _onChartStyleChanged() {
                    (0, s.assert)(0 === this._studyPlots().length, "Dynamic style change is not supported if there are additional plots"), super._onChartStyleChanged()
                }
                _beforeDataReady() {
                    super._beforeDataReady(), this._studyPlots().forEach((t => t.deleteView()))
                }
                _getSeriesDataSource() {
                    if (null === this._seriesDataSource) {
                        const t = this._seriesDataSource = new a.SeriesDataSource(this.chartSession(), "s"),
                            e = t.dataEvents();
                        e.symbolResolved().subscribe(this, this._onSymbolResolved), e.symbolNotPermitted().subscribe(this, this._onSymbolNotPermitted), e.symbolGroupNotPermitted().subscribe(this, this._onSymbolGroupNotPermitted), e.symbolInvalid().subscribe(this, this._onSymbolInvalid), e.symbolError().subscribe(this, this._onSymbolError), e.intradayExchangeNotPermitted().subscribe(this, this._onResolutionOrExchangeNotPermittedError), e.customIntervalNotPermitted().subscribe(this, this._onResolutionOrExchangeNotPermittedError), e.completed().subscribe(this, this._onDataCompleted), e.seriesError().subscribe(this, this._onDataError), e.seriesTimeFrame().subscribe(this, this._onTimeFrame), e.dataUpdated().subscribe(this, this._onDataInternal), e.created().subscribe(null, (() => performance.mark("RFD", {
                            detail: "Request first data"
                        })), !0), e.created().subscribe(null, (() => t.setFutureTickmarksMode("full_single_session"))), e.dataUpdated().subscribe(null, (() => {
                            performance.mark("FDR", {
                                detail: "First data response"
                            }), performance.measure("Response idle", "RFD", "FDR")
                        }), !0)
                    }
                    return this._seriesDataSource
                }
                _bars() {
                    var t, e;
                    return this._cachedData ? this._cachedData.seriesData.bars() : null !== (e = null === (t = this._seriesDataSource) || void 0 === t ? void 0 : t.data().bars()) && void 0 !== e ? e : new r.PlotList
                }
                _onTimeFrame(t, e) {
                    this._cachedData || (this._minBarIndex = t, this._maxBarIndex = e), this.updateData(!1), this._studyPlots().forEach((t => t.updateData(!1, !0)))
                }
                _onDataCompleted() {
                    this._cachedData && (this._cachedData = null), super._onDataCompleted(), this.updateData(!1, !0), this.fitContent()
                }
                _onDataInternal(t, e, i) {
                    this._onData(e || null == i ? void 0 : i.index)
                }
                async _loadCache(t) {
                    const {
                        data: e,
                        symbolInfo: i,
                        minBarIndex: s,
                        maxBarIndex: r
                    } = t;
                    this._minBarIndex = s, this._maxBarIndex = r, this._cachedData = {
                            symbol: this.extendedSymbol(),
                            resolution: this.resolution(),
                            timeFrame: this._miniChart.timeframe().value(),
                            seriesData: e
                        },
                        this._symbolInfo = i;
                    const o = await this._initBarBuilder(i);
                    !this._isDestroyed.value() && this._symbolInfo && (this._symbolInfo !== i && o.update(this._symbolInfo), await this._onData(), this._status.setValue(3), this.fitContent())
                }
            }
        },
        254688: (t, e, i) => {
            "use strict";
            i.d(e, {
                LightweightMiniChart: () => W
            });
            var s = i(431057),
                r = i(998034),
                o = i(650151),
                a = i(960095),
                n = i(444372),
                l = i(338619),
                c = i(242238),
                h = i(81951),
                d = i(378975),
                m = i(432059),
                u = i(941285),
                _ = i(553220),
                g = i(319448),
                p = i(69184),
                v = i(195317);
            const f = (0, s.defaultHorzScaleBehavior)();
            class b extends f {
                constructor() {
                    super(...arguments), this._lastHash = ""
                }
                shouldResetTickmarkLabels(t) {
                    const e = this.calculateItemsHash(t),
                        i = e !== this._lastHash;
                    return this._lastHash = e, i
                }
                calculateItemsHash(t) {
                    return t.reduce(((t, e) => t + e.index), "")
                }
            }
            var y = i(942634),
                S = i(805578),
                T = i(375397),
                D = i(566238),
                P = i(72224);
            const x = (0, l.getLogger)("Chart.MiniChart"),
                w = {
                    value: "12M",
                    type: "period-back"
                },
                C = {
                    top: .01,
                    bottom: .01
                },
                F = {
                    chartType: "area",
                    lineWidth: 2,
                    priceLineVisible: !1,
                    crosshairMarkerVisible: !1,
                    lastValueVisible: !1,
                    scaleMargins: C
                },
                k = {
                    lineWidth: 2,
                    priceLineVisible: !1,
                    crosshairMarkerVisible: !1,
                    lastValueVisible: !1,
                    scaleMargins: C
                },
                M = {
                    priceLineVisible: !1,
                    lastValueVisible: !1,
                    scaleMargins: C
                },
                I = {
                    priceLineVisible: !1,
                    lastValueVisible: !1,
                    scaleMargins: C
                },
                R = {
                    scaleMargins: C
                },
                L = {
                    scaleMargins: {
                        top: .8,
                        bottom: 0
                    },
                    priceScaleId: "overlay",
                    upColor: (0, m.applyTransparency)(a.colorsPalette["color-minty-green-500"], 50),
                    downColor: (0, m.applyTransparency)(a.colorsPalette["color-ripe-red-500"], 50),
                    visible: !1,
                    lastValueVisible: !1,
                    priceLineVisible: !1
                },
                E = {
                    visible: !1,
                    color: a.colorsPalette["color-tv-blue-500"],
                    lineWidth: 1,
                    length: 9,
                    lastValueVisible: !1,
                    priceLineVisible: !1
                },
                N = {
                    spinner: {
                        visible: !1,
                        width: 4,
                        color: a.colorsPalette["color-brand"]
                    },
                    fade: {
                        visible: !1
                    },
                    clearDataOnSymbolChange: !0,
                    clearDataOnTimeframeChange: !0
                },
                V = {
                    onFirstData: null,
                    description: "",
                    showDescription: !0,
                    valuesTracking: "0",
                    timeframe: {
                        visible: !1,
                        value: w.value
                    },
                    chartOptions: {
                        minWidth: 0,
                        minHeight: 0,
                        chart: {
                            grid: {
                                horzLines: {
                                    color: "rgba(120, 123, 134, 0.1)",
                                    visible: !1
                                },
                                vertLines: {
                                    color: "#ffffff",
                                    visible: !1
                                }
                            },
                            crosshair: {
                                horzLine: {
                                    visible: !1,
                                    style: 3,
                                    width: 1,
                                    labelVisible: !1
                                },
                                vertLine: {
                                    visible: !1,
                                    style: 3,
                                    width: 1,
                                    labelVisible: !1
                                }
                            },
                            layout: {
                                fontFamily: "Trebuchet MS",
                                fontSize: 10,
                                textColor: "#83888D",
                                background: {
                                    type: s.ColorType.Solid,
                                    color: "transparent"
                                }
                            },
                            watermark: {
                                visible: !1,
                                color: "#83888D",
                                fontSize: 12
                            },
                            rightPriceScale: {
                                visible: !0,
                                borderVisible: !1,
                                entireTextOnly: !0,
                                mode: s.PriceScaleMode.Normal
                            },
                            leftPriceScale: {
                                visible: !1,
                                borderVisible: !1,
                                entireTextOnly: !0,
                                mode: s.PriceScaleMode.Normal
                            },
                            timeScale: {
                                borderVisible: !1,
                                timeVisible: !0,
                                secondsVisible: !1,
                                lockVisibleTimeRangeOnResize: !0
                            },
                            handleScale: !1,
                            handleScroll: !1
                        },
                        series: F,
                        volume: L,
                        ma: E,
                        loading: N
                    }
                },
                U = {
                    "1y": {
                        value: "12M",
                        type: "period-back"
                    },
                    "5y": {
                        value: "60M",
                        type: "period-back"
                    },
                    max: {
                        value: "ALL",
                        type: "period-back"
                    }
                };

            function O(t, e, i, r, o, a) {
                return !!t.dayAndTimeTickMarkFixEnabled && (r === s.TickMarkType.Time ? function(t) {
                    return t.value.endsWith("M") || t.value.endsWith("Y") || ["YTD", "ALL"].includes(t.value)
                }(e) : !(!o || !a || r <= a) && (r === s.TickMarkType.DayOfMonth && (i.getMonth() !== o.getMonth() || i.getFullYear() !== o.getFullYear())))
            }
            const A = (() => {
                let t = null,
                    e = null,
                    i = null;
                return (r, o, a, n, l, c) => {
                    var h;
                    const d = {},
                        m = new Date(1e3 * n);
                    i !== a.value && (t = null, e = null, i = a.value);
                    let u = !1;
                    if (o) {
                        u = (null !== (h = o.suppressFn) && void 0 !== h ? h : O)(o, a, m, l, t, e)
                    }
                    if (t = m, e = l, u) return "";
                    switch (l) {
                        case s.TickMarkType.Year:
                            (null == o ? void 0 : o.hideYearsTickMarks) ? d.month = "short": d.year = "numeric";
                            break;
                        case s.TickMarkType.Month:
                            d.month = "short";
                            break;
                        case s.TickMarkType.DayOfMonth:
                            d.day = "numeric";
                            break;
                        case s.TickMarkType.Time:
                            d.hour12 = "12-hours" === r, d.hour = "2-digit", d.minute = "2-digit";
                            break;
                        case s.TickMarkType.TimeWithSeconds:
                            d.hour12 = "12-hours" === r, d.hour = "2-digit", d.minute = "2-digit", d.second = "2-digit"
                    }
                    const _ = new Date(m.getUTCFullYear(), m.getUTCMonth(), m.getUTCDate(), m.getUTCHours(), m.getUTCMinutes(), m.getUTCSeconds(), m.getUTCMilliseconds());
                    return t = m, e = l, _.toLocaleString(c, d)
                }
            })();
            window.lightweightMiniChartInstances = window.lightweightMiniChartInstances || {};
            const B = window.lightweightMiniChartInstances;
            let z = 0;
            const H = {
                acquire: () => (0, S.ownership)(new c.ChartSession(window.ChartApiInstance, !0))
            };
            class W {
                constructor(t, e, i, o, a) {
                    var n, l, c, d;
                    this._isDestroyed = !1, this._studyPlots = [], this._elTimeframe = null, this._timeframeView = null, this._tickmarks = new Map, this._cachedTickmarks = new Map, this._chartSession = null, this._chartSessionConnected = null, this._connectCallback = null, this._connected = !1, this._loadErrorTimeout = null, this._isLoading = !1, this._spinner = null, this._floatingTooltip = null, this._onCrosshairMoveBound = null, this._atomicUpdateIsGoing = !1, this._seriesUpDownColors = {}, this._isDWMResolution = !1, this._updateTimerId = null, this._width = new T.WatchedValue(0), this._height = new T.WatchedValue(0), this._status = new T.WatchedValue("loading"), this._timeScaleSizeChanged = new y.Delegate, this._onPlotStatusChanged = () => {
                        const t = this._mainPlot.status().value(),
                            e = this._studyPlots.every((t => 0 !== t.status().value()));
                        switch (t) {
                            case 3:
                                e && this._onPlotsDataReady();
                                break;
                            case 2:
                                this._onMainPlotDataError();
                                break;
                            case 1:
                                this._onMainPlotSymbolResolvingError()
                        }
                        if (this._options.chartOptions.loading.fade.visible) switch (this._cachedTickmarks.size > 0 || t) {
                            case 0:
                                this._innerContainer.classList.add(P.fade);
                                break;
                            case 2:
                            case 1:
                            case 3:
                            case !0:
                                this._innerContainer.classList.remove(P.fade)
                        }
                        this._updateStatus()
                    }, this._timeFrameOptions = null !== (l = null === (n = null == o ? void 0 : o.timeframe) || void 0 === n ? void 0 : n.options) && void 0 !== l ? l : (0, h.getMiniTimeFrameOptions)(), this._options = (0, r.default)({}, V, o), this._chartSessionProvider = null != a ? a : H, this._container = e, this._innerContainer = e.ownerDocument.createElement("div"), this._innerContainer.style.width = "100%", this._innerContainer.style.height = "100%", this._innerContainer.style.minHeight = "inherit", this._innerContainer.style.minWidth = "inherit", e.appendChild(this._innerContainer), this._widget = (0, s.createChartEx)(this._innerContainer, new b, { ...null === (c = this._options.chartOptions) || void 0 === c ? void 0 : c.chart,
                        autoSize: !0
                    }), this._tooltipContainer = i, this._timeframe = new D.WatchedObject({
                        type: "period-back",
                        value: this._options.timeframe.value
                    }), this._mainPlot = this._createMainPlot(t), this.setTimeframe(this._timeframe.value(), !0);
                    const m = null === (d = this._options.cache) || void 0 === d ? void 0 : d.loadData(this._timeframe.value().value);
                    m ? (this._cachedTickmarks = m.tickmarks, this._tickmarks = new Map(this._cachedTickmarks), this._createTooltipDateFormatter()) : this.connect(), this._parentResizeObserver = new ResizeObserver((t => {
                        this._mainPlot.fitContent();
                        for (const e of t)
                            if (e.contentBoxSize) {
                                const t = e.contentBoxSize[0];
                                this._width.setValue(t.inlineSize), this._height.setValue(t.blockSize)
                            }
                    })), this._parentResizeObserver.observe(e);
                    const u = e.getBoundingClientRect();
                    this._width.setValue(u.width), this._height.setValue(u.height), this._createFloatingTooltip(), this._createLegend(), this._updateSeriesUpDownColors(), this._boundTimeScaleSizeChangedHandler = this._timeScaleSizeChangedHandler.bind(this), this._widget.timeScale().subscribeSizeChange(this._boundTimeScaleSizeChangedHandler), z += 1, this._innerContainer.dataset.lightweightMiniChartId = `${z}`, B[this._innerContainer.dataset.lightweightMiniChartId] = this
                }
                container() {
                    return this._container
                }
                getChartContainer() {
                    var t, e, i, s, r;
                    return null !== (r = null === (s = null === (i = null === (e = null === (t = this._container.getElementsByTagName("div").item(0)) || void 0 === t ? void 0 : t.getElementsByTagName("table").item(0)) || void 0 === e ? void 0 : e.getElementsByTagName("tr").item(0)) || void 0 === i ? void 0 : i.getElementsByTagName("td").item(1)) || void 0 === s ? void 0 : s.getElementsByTagName("div").item(0)) && void 0 !== r ? r : null
                }
                width() {
                    return this._width.readonly()
                }
                height() {
                    return this._height.readonly()
                }
                status() {
                    return this._status.readonly()
                }
                seriesDataSource() {
                    return this._mainPlot.seriesDataSource()
                }
                supportRealtimeUpdates() {
                    return Boolean(this._options.doNotDisconnectOnDataReady)
                }
                connect(t) {
                    var e;
                    (0, o.assert)(!(null === (e = this._options.cache) || void 0 === e ? void 0 : e.loadData(this._timeframe.value().value)), "Chart can not to connect if there is an existing cache data"), "function" == typeof t && (this._connectCallback = t), this._clearReconnectionTimeout(), this.connected() || (this._showLoading(), this._mainPlot.clearData(), this._studyPlots.forEach((t => t.clearData())), this._chartSession || (this._chartSession = this._chartSessionProvider.acquire(), this._chartSession.criticalError().subscribe(this, this._onChartSessionCriticalError), this._chartSessionConnected = this._chartSession.isConnected().spawn(), this._chartSessionConnected.subscribe(this._onChartSessionIsConnectedChanged.bind(this), {
                        callWithLast: !0
                    })), this._chartSession.connect(this._onData.bind(this)), this._chartSession.isConnected().value() && this._requestData(), this._clearLoadErrorTimeout(), this._loadErrorTimeout = setTimeout((() => {
                        this.showMessage(n.t(null, void 0, i(653273))), "function" == typeof this._options.onFirstData && (this._options.onFirstData(), this._options.onFirstData = null)
                    }), 15e3))
                }
                disconnect() {
                    var t;
                    this._studyPlots.forEach((t => t.disconnect())), this._mainPlot.disconnect(), null === (t = this._chartSession) || void 0 === t || t.disconnect(), this._connected = !1, this._clearLoadErrorTimeout()
                }
                connected() {
                    return Boolean(this._connected && this._chartSession && this._chartSession.isConnected().value())
                }
                setTimeframe(t, e, i) {
                    var s;
                    const r = this._timeframe.value();
                    let o = t;
                    const a = U[o.value];
                    void 0 !== a && (o = a);
                    const n = this._timeframeIsAvailable(o) ? o : w;
                    this._timeframe.setValue(n), this._activeRange = this._timeframe.value().value, this._timeframeView && this._options.timeframe.visible && this._timeframeView.update({
                        activeRange: this._activeRange
                    });
                    const l = null === (s = this._options.cache) || void 0 === s ? void 0 : s.loadData(this._timeframe.value().value);
                    if (l) return this._cachedTickmarks = l.tickmarks, this._tickmarks = new Map(this._cachedTickmarks), this._createTooltipDateFormatter(), void this._mainPlot.reloadCache(l.mainPlot);
                    this._cachedTickmarks.size && (this._cachedTickmarks = new Map, this._tickmarks = new Map, this._mainPlot.reloadCache(), this._mainPlot.clearData()), (!e && r !== this._timeframe.value() || i) && this._requestDataOnTimeframeChange()
                }
                chartSession() {
                    return (0, o.ensureNotNull)(this._chartSession)
                }
                widget() {
                    return this._widget
                }
                timeframe() {
                    return this._timeframe.readonly()
                }
                setTimeFrameOptions(t, e) {
                    if (t === this._timeFrameOptions) return;
                    const i = this.resolution();
                    this._timeFrameOptions = t, e ? this.setTimeframe(e) : this.resolution() !== i && this._requestDataOnTimeframeChange(), this._initTimeframesRenderer()
                }
                timeFrameOptions() {
                    return this._timeFrameOptions
                }
                resolution() {
                    const t = this._timeFrameOptions.find((t => t.value.value === this.timeframe().value().value));
                    return (0, o.ensureDefined)(null == t ? void 0 : t.targetResolution)
                }
                changeSymbol(t, e) {
                    void 0 !== e && this._updateSeriesOptions(e), this._options.chartOptions.loading.clearDataOnSymbolChange && (this._mainPlot.clearData(), this._mainPlot.deleteView(), this._studyPlots.forEach((t => t.clearData())), this._studyPlots.forEach((t => t.deleteView()))), this._mainPlot.setSymbol(t, this._options.chartOptions.series), this._mainPlot.requestData(), this._studyPlots.forEach((t => t.requestData())), this.connect()
                }
                updateSeriesOptions(t) {
                    this._atomicUpdateIsGoing = !0, this._updateSeriesOptions(t), this._updateSeriesUpDownColors(), this._mainPlot.updateSeriesOptions(t), this._atomicUpdateIsGoing = !1
                }
                getSeriesOptions() {
                    return this._mainPlot.currentSeriesOptions()
                }
                showMessage(t) {
                    this._hideLoading(), this._mainPlot.deleteView(), this._studyPlots.forEach((t => t.deleteView())), this._widget.applyOptions({
                        watermark: {
                            visible: !0,
                            text: t
                        }
                    })
                }
                hideMessage() {
                    this._widget.applyOptions({
                        watermark: {
                            visible: !1
                        }
                    })
                }
                from() {
                    const t = this._timeFrameOptions.find((t => t.value.value === this.timeframe().value().value));
                    return [null == t ? void 0 : t.from]
                }
                enable(t) {
                    this.connect(t)
                }
                disable() {
                    this.disconnect()
                }
                destroy() {
                    var t, e, i, s;
                    this._boundTimeScaleSizeChangedHandler && (this._widget.timeScale().unsubscribeSizeChange(this._boundTimeScaleSizeChangedHandler), this._boundTimeScaleSizeChangedHandler = void 0), this._parentResizeObserver.disconnect(), this.disconnect(), this._destroyFloatingTooltip(), this._widget.remove(), this._mainPlot.symbolResolved().unsubscribeAll(null), this._mainPlot.timeFrameInvalidated().unsubscribeAll(this), this._mainPlot.destroy(), this._studyPlots.forEach((t => t.destroy())),
                        null === (t = this._timeframeView) || void 0 === t || t.destroy(), null === (e = this._chartSessionConnected) || void 0 === e || e.destroy(), null === (i = this._chartSession) || void 0 === i || i.criticalError().unsubscribeAll(this), null === (s = this._chartSession) || void 0 === s || s.release(), delete B[this._innerContainer.dataset.lightweightMiniChartId], this._innerContainer.remove(), this._isDestroyed = !0
                }
                updateAvailableTimeframes() {
                    this._mainPlot.symbolInfo() ? (this._timeframeView && this._options.timeframe.visible && this._timeframeView.update({
                        ranges: this._getAvailableTimeFrames()
                    }), this.setTimeframe(this._timeframe.value())) : x.logWarn("Updating available resolutions without full symbol info")
                }
                mainPlot() {
                    return this._mainPlot
                }
                hasStudyPlots() {
                    return this._studyPlots.length > 0
                }
                studyPlots() {
                    return this._studyPlots
                }
                addStudyPlot(t) {
                    return this._studyPlots.push(t), t.status().subscribe(this._onPlotStatusChanged), this.connected() ? t.requestData() : this.connect(), t.forcePercentageMode() && this._mainPlot.switchToPercentageScaleMode(), this._updateStatus(), {
                        noData: t.noData(),
                        status: t.status(),
                        remove: () => {
                            this._removeStudyPlot(t)
                        },
                        symbol: () => t.symbol(),
                        extendedSymbol: () => t.extendedSymbol(),
                        options: () => t.currentSeriesOptions()
                    }
                }
                indexToTime(t) {
                    var e, i;
                    return null !== (i = null === (e = (this._tickmarks.size ? this._tickmarks : this._cachedTickmarks).get(t)) || void 0 === e ? void 0 : e.time) && void 0 !== i ? i : null
                }
                subscribeCrosshairMove(t) {
                    this.unsubscribeCrosshairMove(), this._onCrosshairMoveBound = e => {
                        t(this._onCrosshairMoveHandler(e))
                    }, this._widget.subscribeCrosshairMove(this._onCrosshairMoveBound)
                }
                unsubscribeCrosshairMove() {
                    this._onCrosshairMoveBound && this._widget.unsubscribeCrosshairMove(this._onCrosshairMoveBound)
                }
                updateChartRightMarginAccordingToTitles() {
                    var t;
                    const e = null === (t = this.mainPlot().currentSeriesOptions().horzMargins) || void 0 === t ? void 0 : t.rightPx;
                    if (e) this.mainPlot().updateHorzMargins({
                        rightPx: e
                    });
                    else {
                        const t = [this.mainPlot(), ...this._studyPlots];
                        let e = 0;
                        for (const i of t)
                            for (const t of i.titles()) e = Math.max(e, t.length);
                        this.mainPlot().updateHorzMargins({
                            rightPx: 12 * e
                        })
                    }
                    this.mainPlot().fitContent()
                }
                activeRange() {
                    return this._activeRange
                }
                timeScaleSizeChanged() {
                    return this._timeScaleSizeChanged
                }
                _getChartPlotClass() {
                    return v.MiniChartPlot
                }
                _createMainPlot(t) {
                    var e, i;
                    const s = new(this._getChartPlotClass())(this, this._options.chartOptions.series, this._options.chartOptions.volume, (() => this._studyPlots), this._options.mainPlotOptions, null === (i = null === (e = this._options.cache) || void 0 === e ? void 0 : e.loadData(this._timeframe.value().value)) || void 0 === i ? void 0 : i.mainPlot);
                    return s.setSymbol(t), s.symbolResolved().subscribe(this, this._onSymbolResolved), s.timeFrameInvalidated().subscribe(this, this._onTimeFrameInvalidated), s.status().subscribe(this._onPlotStatusChanged), s
                }
                _onCrosshairMoveHandler(t) {
                    if (this._atomicUpdateIsGoing) return;
                    const {
                        point: e,
                        time: i,
                        seriesData: s
                    } = t;
                    if (void 0 === e || void 0 === i) return;
                    const r = this._mainPlot.series();
                    if (void 0 === s.get(r)) return;
                    let o;
                    const a = [],
                        n = this._mainPlot.currentSeriesOptions();
                    if (o = "Area" === r.seriesType() || "Line" === r.seriesType() ? n.tooltipType || "line" : "ohlc",
                        a.push(...this._mainPlot.getLegendData(t, this._seriesUpDownColors)), this._studyPlots.forEach((e => {
                            a.push(...e.getLegendData(t))
                        })), 0 === a.length) return;
                    const l = n.tooltipLegendColorOrder;
                    (null == l ? void 0 : l.size) && a.sort(((t, e) => {
                        var i, s;
                        const r = null !== (i = l.get(t.color)) && void 0 !== i ? i : -1,
                            o = null !== (s = l.get(e.color)) && void 0 !== s ? s : -1;
                        return (r > -1 ? r : 1 / 0) - (o > -1 ? o : 1 / 0)
                    }));
                    const c = new Date(1e3 * i);
                    let h = this._tooltipDateTimeFormatter.format(c);
                    return this._isDWMResolution || (h += " " + function(t) {
                        if (0 === t) return "UTC";
                        const e = Math.abs(t),
                            i = Math.floor(e / 60),
                            s = e - 60 * i;
                        return `UTC${Math.sign(t)<=0?"+":"-"}${i}${s>0?`:${s}`:""}`
                    }(c.getTimezoneOffset())), {
                        point: e,
                        time: h,
                        prices: a,
                        type: o
                    }
                }
                _removeStudyPlot(t) {
                    const e = this._studyPlots.indexOf(t);
                    (0, o.assert)(-1 !== e), this._studyPlots.splice(e, 1), t.status().unsubscribe(this._onPlotStatusChanged), t.deleteView(), t.clearData(), t.destroy(), this._studyPlots.every((t => !t.forcePercentageMode())) && this._mainPlot.restoreOriginalScaleMode(), this._updateStatus()
                }
                _updateSeriesUpDownColors() {
                    var t, e;
                    const i = this._options.chartOptions.series;
                    switch (i.chartType) {
                        case "candlesticks":
                            this._seriesUpDownColors.Candlestick = {
                                up: null !== (t = i.borderUpColor) && void 0 !== t ? t : i.upColor,
                                down: null !== (e = i.borderDownColor) && void 0 !== e ? e : i.downColor
                            };
                            break;
                        case "bars":
                            this._seriesUpDownColors.Bar = {
                                up: i.upColor,
                                down: i.downColor
                            }
                    }
                }
                _updateSeriesOptions(t) {
                    this._options.chartOptions.series = function(t) {
                        var e;
                        let i;
                        switch (null !== (e = t.chartType) && void 0 !== e ? e : "area") {
                            case "bars":
                                i = M;
                                break;
                            case "candlesticks":
                                i = I;
                                break;
                            case "area":
                                i = F;
                                break;
                            case "line":
                                i = k;
                                break;
                            case "histogram":
                                i = R
                        }
                        return (0, r.default)({}, i, t)
                    }(t)
                }
                _onPlotsDataReady() {
                    "function" == typeof this._options.onFirstData && (this._options.onFirstData(), this._options.onFirstData = null), this._hideLoading(), this.hideMessage(), this._clearLoadErrorTimeout(), this._options.doNotDisconnectOnDataReady || this.disconnect(), this._createReconnectionTimeout(), this._saveCache()
                }
                _saveCache() {
                    const {
                        cache: t
                    } = this._options;
                    if (!t) return;
                    const e = this._prepareCacheData();
                    e && (t.saveData(this._timeframe.value().value, e), this._cachedTickmarks = e.tickmarks)
                }
                _prepareCacheData() {
                    if (!this._tickmarks.size) return null;
                    const t = this._mainPlot.cacheData();
                    return t ? {
                        mainPlot: t,
                        tickmarks: new Map(this._tickmarks)
                    } : null
                }
                _onMainPlotDataError() {
                    this._hideLoading(), this.showMessage(n.t(null, void 0, i(57335))), this._clearLoadErrorTimeout(), this.disconnect()
                }
                _onMainPlotSymbolResolvingError() {
                    this._hideLoading(), this.showMessage(n.t(null, void 0, i(653273))), this._clearLoadErrorTimeout(), this.disconnect()
                }
                _createReconnectionTimeout() {
                    if (this._options.doNotDisconnectOnDataReady) return;
                    const t = this._options.updateTimeout;
                    void 0 !== t && t > 0 && (this._updateTimerId = setTimeout((() => {
                        this._updateTimerId = null, this.connected() ? this._requestData() : this.connect()
                    }), t))
                }
                _clearReconnectionTimeout() {
                    null !== this._updateTimerId && (clearInterval(this._updateTimerId), this._updateTimerId = null)
                }
                _clearLoadErrorTimeout() {
                    this._loadErrorTimeout && (clearTimeout(this._loadErrorTimeout), this._loadErrorTimeout = null)
                }
                _initTimeframesRenderer() {
                    var t, e, s;
                    if (!this._options.timeframe.visible) return; {
                        const i = this._timeFrameOptions.length < 2;
                        if (null === (t = this._timeframeView) || void 0 === t || t.update({
                                hidden: i
                            }), null === (s = null !== (e = this._elTimeframe) && void 0 !== e ? e : this._options.timeframe.container) || void 0 === s || s.classList.toggle(P.hidden, i), i) return
                    }
                    if (this._elTimeframe) return;
                    this._options.timeframe.container ? this._elTimeframe = this._options.timeframe.container : (this._elTimeframe = document.createElement("div"), this._container.appendChild(this._elTimeframe));
                    const r = (t, e) => {
                        const i = this._timeFrameOptions.length < 2,
                            s = (0, o.ensureNotNull)(this._elTimeframe);
                        s.classList.toggle(P.hidden, i), this._timeframeView = new t.TimeFrameViewRenderer(s, {
                            name: "minichart_timeframe",
                            activeRange: this._activeRange,
                            ranges: this._getAvailableTimeFrames(),
                            onSelectRange: t => {
                                this.setTimeframe({
                                    value: t,
                                    type: "period-back"
                                })
                            },
                            size: this._options.timeframe.size,
                            theme: e,
                            hidden: i
                        })
                    };
                    Promise.all([i.e(62564), i.e(67402), i.e(82321), i.e(31891)]).then(i.bind(i, 358450)).then((t => {
                        (this._options.timeframe.getTheme || (() => Promise.resolve(void 0)))().then((e => r(t, e)))
                    }))
                }
                _createLegend() {
                    this._options.legend && this._options.legend.visible && Promise.all([i.e(13427), i.e(22748), i.e(24806), i.e(82321), i.e(42980)]).then(i.bind(i, 718520)).then((t => t.createLegend(this._options.legend.container, this._options.legend.items)))
                }
                _getAvailableTimeFrames() {
                    const t = [];
                    for (const e of this._timeFrameOptions) this._timeframeIsAvailable(e.value) && t.push({
                        value: e.value.value,
                        text: e.text,
                        description: e.description
                    });
                    return t
                }
                _timeframeIsAvailable(t) {
                    const e = this._timeFrameOptions.find((e => e.value.value === t.value));
                    if (!e) return !1;
                    const i = this.mainPlot().symbolInfo();
                    if (!i || i.pro_name !== this._mainPlot.symbol()) return !0;
                    if (i.has_intraday) return !0;
                    return !d.Interval.parse(e.targetResolution).isIntraday()
                }
                _onChartSessionIsConnectedChanged(t) {
                    var e;
                    t !== this._connected && (t ? (this._connected = !0, "function" == typeof this._connectCallback && this._connectCallback(), null === (e = this._chartSession) || void 0 === e || e.switchTimezone("Etc/UTC"), this._requestData()) : (this._connected = !1, this._mainPlot.disconnect(), this._studyPlots.forEach((t => t.disconnect()))))
                }
                _onChartSessionCriticalError() {
                    this._connected = !1
                }
                _createTooltipDateFormatter() {
                    const t = d.Interval.parse(this.resolution());
                    let e, i;
                    this._isDWMResolution = t.isDWM(), this._widget.timeScale().applyOptions({
                        timeVisible: !this._isDWMResolution,
                        secondsVisible: t.isSeconds()
                    });
                    const {
                        dateFormat: s = "dd MMM 'yy",
                        timeHoursFormat: r = "24-hours",
                        suppressTickMarks: o
                    } = this._options.chartOptions;
                    this._isDWMResolution ? e = i = new _.DateFormatter(s) : (e = new g.DateTimeFormatter({
                        dateFormat: s,
                        timeFormat: (0, p.getTimeFormatForInterval)(t, r)
                    }), i = new g.DateTimeFormatter({
                        dateFormat: s,
                        timeFormat: (0, p.getTimeFormatForInterval)(t, r),
                        dateTimeSeparator: "\n"
                    })), this._tooltipDateTimeFormatter = i, this._widget.applyOptions({
                        localization: {
                            timeFormatter: t => e.format(new Date(1e3 * t))
                        },
                        timeScale: {
                            tickMarkFormatter: A.bind(null, r, o, this._timeframe.value())
                        }
                    }), this._widget.applyOptions({
                        timeScale: {
                            timeVisible: !d.Interval.parse(this._mainPlot.resolution()).isDWM()
                        }
                    })
                }
                _requestData() {
                    this._createTooltipDateFormatter(), this._clearReconnectionTimeout(), this._mainPlot.requestData(), this._studyPlots.forEach((t => t.requestData()))
                }
                _onData(t) {
                    if (this._mainPlot.isConnected()) switch (t.method) {
                        case "timescale_update":
                            {
                                const e = t.params;
                                if (e.clear) {
                                    this._tickmarks.clear(), this._mainPlot.clearSourceData();
                                    for (const t of this._studyPlots) t.clearSourceData()
                                }
                                if (e.index_diff.length > 0) {
                                    this._mainPlot.moveSourceData(e.index_diff);
                                    for (const t of this._studyPlots) t.moveSourceData(e.index_diff)
                                }
                                const i = e.marks;
                                let s = 1 / 0,
                                    r = -1 / 0;
                                for (const t of i) this._tickmarks.has(t.index) || (s = Math.min(s, t.index), r = Math.max(r, t.index)),
                                this._tickmarks.set(t.index, t);Number.isFinite(s) && this._mainPlot.onTickmarksAdded(s, r),
                                this._saveCache();
                                break
                            }
                    }
                }
                _onSymbolResolved() {
                    this.updateAvailableTimeframes(), this._initTimeframesRenderer()
                }
                _onTimeFrameInvalidated() {
                    var t;
                    this._activeRange = void 0, null === (t = this._timeframeView) || void 0 === t || t.update({
                        activeRange: void 0
                    })
                }
                _showLoading() {
                    if (this._isLoading) return;
                    this.hideMessage();
                    const t = this._options.chartOptions.loading;
                    t.spinner.visible && (null === this._spinner && (this._spinner = new u.Spinner("mini").setStyle({
                        color: t.spinner.color,
                        width: t.spinner.width.toString(),
                        zIndex: "10"
                    })), this._spinner.spin(this._innerContainer)), t.fade.visible && this._innerContainer.classList.add(P.fade), this._isLoading = !0
                }
                _hideLoading() {
                    this._isLoading && (this._spinner && this._spinner.stop(), this._isLoading = !1)
                }
                _createFloatingTooltip() {
                    const t = this._options.valuesTracking;
                    if ("3" === t || "0" === t) return;
                    if (this._tooltipContainer) {
                        const {
                            position: t
                        } = window.getComputedStyle(this._tooltipContainer), e = ["relative", "fixed", "absolute"];
                        e.includes(t) || x.logWarn("Container position property must be: " + e.join(", "))
                    }
                    const e = async () => {
                        var t;
                        const e = await Promise.all([i.e(18077), i.e(82321), i.e(10748)]).then(i.bind(i, 667704));
                        this._isDestroyed || (this._floatingTooltip = new e.FloatingPriceTimeTooltipRenderer(null !== (t = this._tooltipContainer) && void 0 !== t ? t : void 0, this._innerContainer, P.floatingTooltip))
                    };
                    let s;
                    this.subscribeCrosshairMove((i => {
                        var r;
                        let o;
                        if (i) {
                            const {
                                point: e,
                                ...s
                            } = i;
                            o = { ...s,
                                cursorPosition: {
                                    x: this._widget.priceScale("left").width() + e.x,
                                    y: e.y
                                },
                                lineColor: "2" === t ? null === (r = s.prices[0]) || void 0 === r ? void 0 : r.color : void 0
                            }
                        }
                        null === this._floatingTooltip ? (s = s || e(), s.then((() => {
                            var t;
                            return null === (t = this._floatingTooltip) || void 0 === t ? void 0 : t.update(o)
                        }))) : this._floatingTooltip.update(o)
                    }))
                }
                _destroyFloatingTooltip() {
                    this._floatingTooltip && (this._floatingTooltip.destroy(), this.unsubscribeCrosshairMove(), this._floatingTooltip = null)
                }
                _requestDataOnTimeframeChange() {
                    this._options.chartOptions.loading.clearDataOnTimeframeChange && (this.mainPlot().clearData(), this.mainPlot().deleteView(), this._studyPlots.forEach((t => t.clearData())), this._studyPlots.forEach((t => t.deleteView()))), this.connected() ? this._requestData() : this.connect()
                }
                _updateStatus() {
                    const t = [this._mainPlot.status().value(), ...this._studyPlots.map((t => t.status().value()))],
                        e = t.every((t => 0 !== t)) ? 3 === t[0] ? "ready" : "error" : "loading";
                    this._status.setValue(e)
                }
                _timeScaleSizeChangedHandler(t, e) {
                    this._timeScaleSizeChanged.fire(t, e)
                }
            }
        },
        17966: (t, e, i) => {
            "use strict";
            i.d(e, {
                getCircleLogoAnyHtml: () => s.getCircleLogoAnyHtml
            });
            var s = i(467236)
        },
        264552: (t, e, i) => {
            "use strict";
            i.d(e, {
                getServerInterval: () => r
            });
            var s = i(378975);

            function r(t) {
                return s.Interval.isRange(t) ? "1" : t
            }
        },
        942634: (t, e, i) => {
            "use strict";
            i.d(e, {
                Delegate: () => o
            });
            const s = (0, i(692558).getLogger)("Common.Delegate");

            function r(t) {
                return !t.singleShot
            }
            class o {
                constructor() {
                    this.fire = this._fireImpl.bind(this), this._listeners = []
                }
                subscribe(t, e, i) {
                    this._listeners.push({
                        object: t,
                        member: e,
                        singleShot: !!i,
                        skip: !1
                    })
                }
                unsubscribe(t, e) {
                    for (let i = 0; i < this._listeners.length; ++i) {
                        const s = this._listeners[i];
                        if (s.object === t && s.member === e) {
                            s.skip = !0, this._listeners.splice(i, 1);
                            break
                        }
                    }
                }
                unsubscribeAll(t) {
                    for (let e = this._listeners.length - 1; e >= 0; --e) {
                        const i = this._listeners[e];
                        i.object === t && (i.skip = !0, this._listeners.splice(e, 1))
                    }
                }
                destroy() {
                    this._listeners = []
                }
                _fireImpl(...t) {
                    const e = this._listeners;
                    this._listeners = this._listeners.filter(r);
                    const i = e.length;
                    for (let r = 0; r < i; ++r) {
                        const i = e[r];
                        if (!i.skip) try {
                            i.member.apply(i.object || null, t)
                        } catch (t) {
                            s.logError(`${t&&(t.stack||t.message)}`)
                        }
                    }
                }
            }
        },
        553220: (t, e, i) => {
            "use strict";
            i.d(e, {
                DateFormatter: () => o
            });
            var s = i(339709),
                r = i(246125);
            class o {
                constructor(t = "yyyy-MM-dd", e = !1) {
                    this._dateFormatFunc = e ? (0, r.getDateFormatWithWeekday)(t) : r.dateFormatFunctions[t]
                }
                format(t) {
                    return s.customFormatters && s.customFormatters.dateFormatter ? s.customFormatters.dateFormatter.format(t) : this._dateFormatFunc(t, !1)
                }
                formatLocal(t) {
                    return s.customFormatters.dateFormatter ? s.customFormatters.dateFormatter.formatLocal ? s.customFormatters.dateFormatter.formatLocal(t) : s.customFormatters.dateFormatter.format(t) : this._dateFormatFunc(t, !0)
                }
                parse(t) {
                    if ("" === t) return {
                        res: !1
                    };
                    let e = t;
                    return s.customFormatters && s.customFormatters.dateFormatter && !s.customFormatters.dateFormatter.parse && console.warn("You need to provide a `parse` function as part of `dateFormatter`"), s.customFormatters && s.customFormatters.dateFormatter && s.customFormatters.dateFormatter.parse && (e = String(s.customFormatters.dateFormatter.parse(t))), {
                        res: !0,
                        value: e
                    }
                }
            }
        },
        319448: (t, e, i) => {
            "use strict";
            i.d(e, {
                DateTimeFormatter: () => a
            });
            var s = i(300484),
                r = i(553220);
            const o = {
                dateFormat: "yyyy-MM-dd",
                withWeekday: !1,
                timeFormat: s.hourMinuteSecondFormat,
                dateTimeSeparator: " "
            };
            class a {
                constructor(t = {}) {
                    const e = Object.assign({}, o, t);
                    this._dateFormatter = new r.DateFormatter(e.dateFormat, e.withWeekday), this._timeFormatter = new s.TimeFormatter(e.timeFormat), this._separator = e.dateTimeSeparator
                }
                format(t) {
                    return `${this._dateFormatter.format(t)}${this._separator}${this._timeFormatter.format(t)}`
                }
                formatLocal(t) {
                    return `${this._dateFormatter.formatLocal(t)}${this._separator}${this._timeFormatter.formatLocal(t)}`
                }
            }
        },
        300484: (t, e, i) => {
            "use strict";
            i.d(e, {
                TimeFormatter: () => a,
                hourMinuteFormat: () => o.hourMinuteFormat,
                hourMinuteNonZeroSecondFormat: () => o.hourMinuteNonZeroSecondFormat,
                hourMinuteSecondFormat: () => o.hourMinuteSecondFormat,
                hourMinuteSecondMillisecFormat: () => o.hourMinuteSecondMillisecFormat,
                twelveHourMinuteFormat: () => o.twelveHourMinuteFormat,
                twelveHourMinuteNonZeroSecondFormat: () => o.twelveHourMinuteNonZeroSecondFormat,
                twelveHourMinuteSecondFormat: () => o.twelveHourMinuteSecondFormat
            });
            var s = i(339709),
                r = i(574313),
                o = i(411559);
            class a {
                constructor(t) {
                    this._isTwelveHoursFormat = !1, this._valuesAndDelimeters = [];
                    const e = t || o.hourMinuteSecondFormat,
                        i = new RegExp("%h|%m|%s\\+|%ss\\+|%ss|%ampm|%s", "g");
                    let s = i.exec(e),
                        r = 0;
                    for (; null !== s;) {
                        const t = s[0];
                        "%ampm" === t && (this._isTwelveHoursFormat = !0);
                        const o = e.substring(r, s.index);
                        "" !== o && this._valuesAndDelimeters.push(o), this._valuesAndDelimeters.push(t), r = s.index + t.length, s = i.exec(e)
                    }
                }
                format(t) {
                    return s.customFormatters.timeFormatter ? s.customFormatters.timeFormatter.format(t) : this._formatTime(t, !1)
                }
                formatLocal(t) {
                    return s.customFormatters.timeFormatter ? s.customFormatters.timeFormatter.formatLocal ? s.customFormatters.timeFormatter.formatLocal(t) : s.customFormatters.timeFormatter.format(t) : this._formatTime(t, !0)
                }
                _formatTime(t, e) {
                    let i = e ? t.getHours() : t.getUTCHours();
                    const s = e ? t.getMinutes() : t.getUTCMinutes(),
                        o = e ? t.getSeconds() : t.getUTCSeconds(),
                        a = e ? t.getMilliseconds() : t.getUTCMilliseconds();
                    let n = "";
                    this._isTwelveHoursFormat && (n = i >= 12 ? "PM" : "AM", i %= 12, i = i || 12);
                    let l = "",
                        c = !1;
                    for (let t = this._valuesAndDelimeters.length - 1; t >= 0; t--) {
                        const e = this._valuesAndDelimeters[t];
                        let h;
                        switch (e) {
                            case "%h":
                                h = (0, r.numberToStringWithLeadingZero)(i, 2);
                                break;
                            case "%m":
                                h = (0, r.numberToStringWithLeadingZero)(s, 2);
                                break;
                            case "%s+":
                                0 !== o ? h = (0, r.numberToStringWithLeadingZero)(o, 2) : (h = "", c = !0);
                                break;
                            case "%s":
                                h = (0, r.numberToStringWithLeadingZero)(o, 2);
                                break;
                            case "%ss":
                                h = (0, r.numberToStringWithLeadingZero)(a, 3);
                                break;
                            case "%ss+":
                                0 !== a ? h = (0, r.numberToStringWithLeadingZero)(a, 3) : (h = "", c = !0);
                                break;
                            case "%ampm":
                                h = n;
                                break;
                            default:
                                if (c) {
                                    c = !1;
                                    continue
                                }
                                h = e
                        }
                        l = h + l
                    }
                    return l
                }
            }
        },
        124066: (t, e, i) => {
            "use strict";
            var s;
            i.d(e, {
                    SymbolErrorPermissionDeniedReason: () => s,
                    invalidSymbol: () => o,
                    permissionDenied: () => r
                }),
                function(t) {
                    t.Symbol = "symbol", t.GroupPermission = "group"
                }(s || (s = {}));
            const r = "permission denied",
                o = "invalid symbol"
        },
        320771: (t, e, i) => {
            "use strict";
            i.d(e, {
                SeriesDataEvents: () => r
            });
            var s = i(942634);
            class r {
                constructor() {
                    this._created = new s.Delegate, this._modified = new s.Delegate, this._loading = new s.Delegate, this._completed = new s.Delegate, this._error = new s.Delegate, this._symbolError = new s.Delegate, this._symbolResolved = new s.Delegate, this._seriesError = new s.Delegate, this._symbolNotPermitted = new s.Delegate, this._symbolInvalid = new s.Delegate, this._symbolGroupNotPermitted = new s.Delegate, this._chartTypeNotPermitted = new s.Delegate, this._intradaySpreadNotPermitted = new s.Delegate, this._intradayExchangeNotPermitted = new s.Delegate, this._customIntervalNotPermitted = new s.Delegate, this._secondsIntervalNotPermitted = new s.Delegate, this._ticksIntervalNotPermitted = new s.Delegate, this._barReceived = new s.Delegate, this._seriesTimeFrame = new s.Delegate, this._dataUpdated = new s.Delegate, this._unsupportedResolutionRequested = new s.Delegate
                }
                destroy() {
                    this._created.destroy(), this._modified.destroy(), this._loading.destroy(), this._completed.destroy(),
                        this._error.destroy(), this._symbolError.destroy(), this._symbolResolved.destroy(), this._seriesError.destroy(), this._symbolInvalid.destroy(), this._symbolNotPermitted.destroy(), this._symbolGroupNotPermitted.destroy(), this._chartTypeNotPermitted.destroy(), this._intradaySpreadNotPermitted.destroy(), this._intradayExchangeNotPermitted.destroy(), this._customIntervalNotPermitted.destroy(), this._secondsIntervalNotPermitted.destroy(), this._ticksIntervalNotPermitted.destroy(), this._barReceived.destroy(), this._seriesTimeFrame.destroy(), this._dataUpdated.destroy(), this._unsupportedResolutionRequested.destroy()
                }
                created() {
                    return this._created
                }
                modified() {
                    return this._modified
                }
                loading() {
                    return this._loading
                }
                completed() {
                    return this._completed
                }
                error() {
                    return this._error
                }
                symbolError() {
                    return this._symbolError
                }
                symbolResolved() {
                    return this._symbolResolved
                }
                seriesError() {
                    return this._seriesError
                }
                symbolInvalid() {
                    return this._symbolInvalid
                }
                symbolNotPermitted() {
                    return this._symbolNotPermitted
                }
                symbolGroupNotPermitted() {
                    return this._symbolGroupNotPermitted
                }
                chartTypeNotPermitted() {
                    return this._chartTypeNotPermitted
                }
                intradaySpreadNotPermitted() {
                    return this._intradaySpreadNotPermitted
                }
                intradayExchangeNotPermitted() {
                    return this._intradayExchangeNotPermitted
                }
                customIntervalNotPermitted() {
                    return this._customIntervalNotPermitted
                }
                secondsIntervalNotPermitted() {
                    return this._secondsIntervalNotPermitted
                }
                ticksIntervalNotPermitted() {
                    return this._ticksIntervalNotPermitted
                }
                barReceived() {
                    return this._barReceived
                }
                seriesTimeFrame() {
                    return this._seriesTimeFrame
                }
                dataUpdated() {
                    return this._dataUpdated
                }
                unsupportedResolutionRequested() {
                    return this._unsupportedResolutionRequested
                }
                fireCompleted(t) {
                    this._completed.fire(t)
                }
                fireCreated(t) {
                    this._created.fire(t)
                }
                fireModified() {
                    this._modified.fire()
                }
                fireLoading(t) {
                    this._loading.fire(t)
                }
                fireError() {
                    this._error.fire()
                }
                fireSymbolError(t) {
                    this._symbolError.fire(t), this.fireError()
                }
                fireSymbolResolved(t) {
                    this._symbolResolved.fire(t)
                }
                fireSeriesError(t) {
                    this._seriesError.fire(t), this.fireError()
                }
                fireSymbolInvalid() {
                    this._symbolInvalid.fire()
                }
                fireSymbolNotPermitted(t) {
                    this._symbolNotPermitted.fire(t)
                }
                fireSymbolGroupNotPermitted(t) {
                    this._symbolGroupNotPermitted.fire(t)
                }
                fireChartTypeNotPermitted(t) {
                    this._chartTypeNotPermitted.fire(t), this.fireError()
                }
                fireIntradaySpreadNotPermitted() {
                    this._intradaySpreadNotPermitted.fire(), this.fireError()
                }
                fireIntradayExchangeNotPermitted() {
                    this._intradayExchangeNotPermitted.fire(), this.fireError()
                }
                fireCustomIntervalNotPermitted(t) {
                    this._customIntervalNotPermitted.fire(t), this.fireError()
                }
                fireSecondsIntervalNotPermitted() {
                    this._secondsIntervalNotPermitted.fire(), this.fireError()
                }
                fireTicksIntervalNotPermitted() {
                    this._ticksIntervalNotPermitted.fire(), this.fireError()
                }
                fireBarReceived(t) {
                    this._barReceived.fire(t)
                }
                fireSeriesTimeFrame(t, e, i, s, r) {
                    this._seriesTimeFrame.fire(t, e, i, s, r)
                }
                fireDataUpdated(t, e, i, s) {
                    this._dataUpdated.fire(t, e, i, s)
                }
                fireUnsupportedResolutionRequested() {
                    this._unsupportedResolutionRequested.fire()
                }
            }
        },
        501571: (t, e, i) => {
            "use strict";
            i.d(e, {
                INVALID_TIME_POINT_INDEX: () => s,
                UNPLOTTABLE_TIME_POINT_INDEX: () => r
            });
            const s = -2e6,
                r = -1e6
        },
        467332: (t, e, i) => {
            "use strict";
            i.d(e, {
                getTimeFrames: () => o
            });
            var s = i(444372),
                r = i(855016);

            function o() {
                return {
                    "1d": {
                        text: s.t(null, void 0, i(207075)),
                        value: {
                            value: "1D",
                            type: "period-back"
                        },
                        targetResolution: (0, r.stringAsResolution)("1"),
                        description: (0, r.daysStringLiteral)(1)
                    },
                    "5d": {
                        text: s.t(null, void 0, i(558628)),
                        value: {
                            value: "5D",
                            type: "period-back"
                        },
                        targetResolution: (0, r.stringAsResolution)("5"),
                        description: (0, r.daysStringLiteral)(5)
                    },
                    "1w": {
                        text: s.t(null, void 0, i(189696)),
                        value: {
                            value: "7D",
                            type: "period-back"
                        },
                        targetResolution: (0, r.stringAsResolution)("15"),
                        description: (0, r.weeksStringLiteral)(1)
                    },
                    "1m": {
                        text: s.t(null, void 0, i(333493)),
                        value: {
                            value: "1M",
                            type: "period-back"
                        },
                        targetResolution: (0, r.stringAsResolution)("30"),
                        description: (0, r.monthsStringLiteral)(1)
                    },
                    "3m": {
                        text: s.t(null, void 0, i(318717)),
                        value: {
                            value: "3M",
                            type: "period-back"
                        },
                        targetResolution: (0, r.stringAsResolution)("60"),
                        description: (0, r.monthsStringLiteral)(3)
                    },
                    "6m": {
                        text: s.t(null, void 0, i(869411)),
                        value: {
                            value: "6M",
                            type: "period-back"
                        },
                        targetResolution: (0, r.stringAsResolution)("120"),
                        description: (0, r.monthsStringLiteral)(6)
                    },
                    "12m": {
                        text: s.t(null, void 0, i(186322)),
                        value: {
                            value: "12M",
                            type: "period-back"
                        },
                        targetResolution: (0, r.stringAsResolution)("1D"),
                        description: (0, r.yearsStringLiteral)(1)
                    },
                    "24m": {
                        text: s.t(null, void 0, i(745391)),
                        value: {
                            value: "24M",
                            type: "period-back"
                        },
                        targetResolution: (0, r.stringAsResolution)("1W"),
                        description: (0, r.yearsStringLiteral)(2)
                    },
                    "36m": {
                        text: s.t(null, void 0, i(189992)),
                        value: {
                            value: "36M",
                            type: "period-back"
                        },
                        targetResolution: (0, r.stringAsResolution)("1W"),
                        description: (0, r.yearsStringLiteral)(3)
                    },
                    "60m": {
                        text: s.t(null, void 0, i(772834)),
                        value: {
                            value: "60M",
                            type: "period-back"
                        },
                        targetResolution: (0, r.stringAsResolution)("1W"),
                        description: (0, r.yearsStringLiteral)(5)
                    },
                    "120m": {
                        text: s.t(null, void 0, i(27969)),
                        value: {
                            value: "120M",
                            type: "period-back"
                        },
                        targetResolution: (0, r.stringAsResolution)("1M"),
                        description: (0, r.yearsStringLiteral)(10)
                    },
                    ytd: {
                        text: s.t(null, void 0, i(168881)),
                        value: {
                            value: "YTD",
                            type: "period-back"
                        },
                        targetResolution: (0, r.stringAsResolution)("1D"),
                        description: s.t(null, void 0, i(251478))
                    },
                    all: {
                        text: s.t(null, void 0, i(580066)),
                        value: {
                            value: "ALL",
                            type: "period-back"
                        },
                        targetResolution: (0, r.stringAsResolution)("1M")
                    },
                    lastsession: {
                        text: s.t(null, void 0, i(207075)),
                        value: {
                            value: "LASTSESSION",
                            type: "period-back"
                        },
                        targetResolution: (0, r.stringAsResolution)("1"),
                        description: (0, r.daysStringLiteral)(1)
                    }
                }
            }
        },
        471771: (t, e, i) => {
            "use strict";
            i.d(e, {
                getActualTimeFrame: () => r
            });
            var s = i(467332);

            function r(t) {
                const e = new Set(Object.values((0, s.getTimeFrames)()).map((t => t.value.value)));
                if (e.has(t)) return t;
                const i = t.toUpperCase();
                return e.has(i) ? i : "12M"
            }
        },
        135732: (t, e, i) => {
            "use strict";
            i.d(e, {
                trackWidgetLoadMetaInfo: () => r
            });
            var s = i(439563);
            async function r(t) {
                var e;
                Math.random() > .005 || null === (e = await (0, s.getEmbedWidgetTracker)()) || void 0 === e || e.trackWidgetLoadMetaInfo(t)
            }
        }
    }
]);