(self.webpackChunktradingview = self.webpackChunktradingview || []).push([
    [17529], {
        994861: t => {
            t.exports = {}
        },
        668477: t => {
            t.exports = {
                "common-tooltip": "common-tooltip-EJBD96zX",
                "common-tooltip--hidden": "common-tooltip--hidden-EJBD96zX",
                "common-tooltip--horizontal": "common-tooltip--horizontal-EJBD96zX",
                "common-tooltip--farther": "common-tooltip--farther-EJBD96zX",
                "common-tooltip--vertical": "common-tooltip--vertical-EJBD96zX",
                "common-tooltip-farther": "common-tooltip-farther-EJBD96zX",
                "common-tooltip--direction_normal": "common-tooltip--direction_normal-EJBD96zX",
                "common-tooltip__body": "common-tooltip__body-EJBD96zX",
                "common-tooltip__button-container": "common-tooltip__button-container-EJBD96zX",
                "common-tooltip__body--no-buttons": "common-tooltip__body--no-buttons-EJBD96zX",
                "common-tooltip__button": "common-tooltip__button-EJBD96zX",
                "common-tooltip--direction_reversed": "common-tooltip--direction_reversed-EJBD96zX",
                "common-tooltip__ear-holder": "common-tooltip__ear-holder-EJBD96zX",
                "common-tooltip__ear-holder--below": "common-tooltip__ear-holder--below-EJBD96zX",
                "common-tooltip__ear-holder--above": "common-tooltip__ear-holder--above-EJBD96zX",
                "common-tooltip__ear-holder--before": "common-tooltip__ear-holder--before-EJBD96zX",
                "common-tooltip__ear-holder--after": "common-tooltip__ear-holder--after-EJBD96zX",
                "common-tooltip__body--with-hotkey": "common-tooltip__body--with-hotkey-EJBD96zX",
                "common-tooltip__body--width_wide": "common-tooltip__body--width_wide-EJBD96zX",
                "common-tooltip__body--width_narrow": "common-tooltip__body--width_narrow-EJBD96zX",
                "common-tooltip__body--no-padding": "common-tooltip__body--no-padding-EJBD96zX",
                "common-tooltip__hotkey-block": "common-tooltip__hotkey-block-EJBD96zX",
                "common-tooltip__hotkey-block--divider": "common-tooltip__hotkey-block--divider-EJBD96zX",
                "common-tooltip__hotkey-text": "common-tooltip__hotkey-text-EJBD96zX",
                "common-tooltip__hotkey-button": "common-tooltip__hotkey-button-EJBD96zX",
                "common-tooltip__plus-sign": "common-tooltip__plus-sign-EJBD96zX"
            }
        },
        764250: (t, e, i) => {
            "use strict";
            i.d(e, {
                ActionGroup: () => s
            });
            class o {
                constructor(t, e) {
                    this._group = t, this.hotkey = e.hotkey, this.handler = e.handler, this.desc = e.desc, this.element = e.element || null, e.isDisabled ? "function" == typeof e.isDisabled ? this.isDisabled = e.isDisabled : this.isDisabled = () => !0 : this.isDisabled = () => !1
                }
                destroy() {
                    this._group && (this._group.remove(this), this._group = null)
                }
            }
            class s {
                constructor(t, e) {
                    this._actions = [], this._manager = t, this.modal = !(!e || !e.modal), e && (this.desc = e.desc), e && e.isDisabled ? "function" == typeof e.isDisabled ? this.isDisabled = e.isDisabled : this.isDisabled = () => !0 : this.isDisabled = () => !1, this._manager.registerGroup(this)
                }
                add(t) {
                    const e = new o(this, t);
                    return this._actions.push(e), e
                }
                remove(t) {
                    for (let e = this._actions.length; e-- > 0;) this._actions[e] === t && this._actions.splice(e, 1)
                }
                handleHotkey(t, e) {
                    for (let i = this._actions.length; i-- > 0;) {
                        const o = this._actions[i];
                        if (o.hotkey === t && ((!o.element || e.target && o.element.contains(e.target)) && !o.isDisabled())) return o.handler(e), e.preventDefault(), this._callMatchedHotkeyHandler(t), !0
                    }
                    return !1
                }
                promote() {
                    this._manager.promoteGroup(this)
                }
                destroy() {
                    this._actions.length = 0, this._manager.unregisterGroup(this)
                }
                static setMatchedHotkeyHandler(t) {
                    s._matchedHotkeyHandler = t
                }
                _callMatchedHotkeyHandler(t) {
                    s._matchedHotkeyHandler && s._matchedHotkeyHandler(t)
                }
            }
        },
        163586: (t, e, i) => {
            "use strict";
            i.d(e, {
                ActionManager: () => l
            });
            var o = i(91679),
                s = i(591800),
                n = i(607423);
            class r {
                constructor(t, e) {
                    this.modifiers = t, this.code = e
                }
                altOrOptionCode() {
                    return "AltLeft" === this.code || "AltRight" === this.code
                }
                controlOrMetaCode() {
                    return s.isMacKeyboard ? "MetaLeft" === this.code || "MetaRight" === this.code || "OSLeft" === this.code || "OSRight" === this.code : "ControlLeft" === this.code || "ControlRight" === this.code
                }
            }
            class a extends o.WatchedValue {
                setValue(t, e) {
                    const i = this.value();
                    (e || void 0 === i || i.code !== t.code || i.modifiers !== t.modifiers) && super.setValue(t)
                }
            }
            class l {
                constructor() {
                    this._groups = [], this._pressedKeys = new o.WatchedValue(0), this._keyboardPressedKeysState = new a(new r(0)), this._keyDownListener = t => {
                        if (t.defaultPrevented) return;
                        const e = (0, s.hashFromEvent)(t);
                        if (this._pressedKeys.setValue(e), this._keyboardPressedKeysState.setValue(new r((0, s.modifiersFromEvent)(t), t.code)), !(0, n.isNativeUIInteraction)(e, t.target))
                            for (let i = this._groups.length; i-- > 0;) {
                                const o = this._groups[i];
                                if (!o.isDisabled()) {
                                    if (o.handleHotkey(e, t)) return;
                                    if (o.modal) return
                                }
                            }
                    }, this._keyUpListener = t => {
                        const e = (0, s.hashFromEvent)(t);
                        this._pressedKeys.setValue(e), this._keyboardPressedKeysState.setValue(new r((0, s.modifiersFromEvent)(t), ""))
                    }, this._blurEvent = () => {
                        this._pressedKeys.setValue(0), this._keyboardPressedKeysState.setValue(new r(0, ""))
                    }, this._mouseEvent = t => {
                        var e;
                        const i = (0, s.modifiersFromEvent)(t),
                            o = 255 & (null !== (e = this._pressedKeys.value()) && void 0 !== e ? e : 0);
                        this._pressedKeys.setValue(i | o)
                    }
                }
                listen(t) {
                    t.addEventListener("keydown", this._keyDownListener), t.addEventListener("keyup", this._keyUpListener), t.addEventListener("blur", this._blurEvent), t.addEventListener("mousemove", this._mouseEvent)
                }
                unlisten(t) {
                    t.removeEventListener("keydown", this._keyDownListener), t.removeEventListener("keyup", this._keyUpListener), t.removeEventListener("blur", this._blurEvent), t.removeEventListener("mousemove", this._mouseEvent)
                }
                registerGroup(t) {
                    this._groups.push(t)
                }
                unregisterGroup(t) {
                    for (let e = this._groups.length; e--;) this._groups[e] === t && this._groups.splice(e, 1)
                }
                promoteGroup(t) {
                    let e = this._groups.length - 1;
                    for (let i = this._groups.length; i--;) {
                        if (this._groups[i] === t) return void(i !== e && (this._groups.splice(i, 1), this._groups.splice(e, 0, t)));
                        this._groups[i].modal && (e = i - 1)
                    }
                }
                pressedKeys() {
                    return this._pressedKeys.readonly()
                }
                keyboardPressedKeysState() {
                    return this._keyboardPressedKeysState.readonly()
                }
            }
        },
        499994: (t, e, i) => {
            "use strict";
            i.d(e, {
                getTooltipData: () => s,
                setTooltipData: () => n
            });
            const o = new WeakMap;

            function s(t, e) {
                const i = o.get(t);
                return i instanceof Function ? i(e) : i && i[e]
            }

            function n(t, e, i) {
                if (i instanceof Function) return void o.set(t, i);
                const s = o.get(t),
                    n = void 0 === s || s instanceof Function ? {} : s;
                n[e] = i, o.set(t, n)
            }
        },
        630112: (t, e, i) => {
            "use strict";
            i.d(e, {
                empty: () => r,
                setTooltip: () => a
            });
            const o = "tooltip-root-element";
            let s;

            function n() {
                const t = document.getElementById(o);
                t ? s = t : (s = document.createElement("div"), s.id = o, document.body.appendChild(s))
            }

            function r() {
                s && (s.innerHTML = "")
            }

            function a(t) {
                r(), s && s.appendChild(t)
            }
            "interactive" === document.readyState ? n() : document.addEventListener("DOMContentLoaded", n)
        },
        112539: (t, e, i) => {
            "use strict";
            i.d(e, {
                clearSchedule: () => r,
                scheduleHide: () => l,
                scheduleRemove: () => a,
                scheduleRender: () => _
            });
            let o = 0,
                s = 0,
                n = 0;

            function r() {
                clearTimeout(o), clearTimeout(s), clearTimeout(n)
            }

            function a(t, e) {
                n = setTimeout(t, e)
            }

            function l(t, e) {
                s = setTimeout(t, e)
            }

            function _(t, e) {
                o = setTimeout(t, e)
            }
        },
        529111: (t, e, i) => {
            "use strict";
            i.d(e, {
                setTooltipColorTheme: () => n
            });
            const o = {
                    default: "",
                    white: "theme-white",
                    chart: "theme-chart",
                    "round-shadow": "theme-round-shadow"
                },
                s = Object.keys(o);

            function n(t, e) {
                const i = s.includes(e) ? o[e] : "";
                t.classList.remove(...s.map((t => o[t])).filter((t => !!t))), i && !t.classList.contains(i) && t.classList.add(i)
            }
        },
        780792: (t, e, i) => {
            "use strict";
            i.d(e, {
                AbstractIndicator: () => a
            });
            var o = i(201089),
                s = i(541558),
                n = i(876332);
            i(673747);
            const r = (0, o.getLogger)("GUI.Blocks.AbstractIndicator");
            class a {
                constructor(t) {
                    this._classSuffix = "", this._quoteSessionPrefix = "abstract-indicator", this._shortMode = !1, this._showTooltip = !0, this._subscribed = !1, this._tooltipType = "custom", this._lastTooltipText = "", this._quoteSession = t.quoteSession
                }
                getValue() {
                    return this._value
                }
                getTooltipText() {
                    return this._labelMap[this._value] || ""
                }
                getLabel() {
                    return this._labelMap[this._value] || ""
                }
                getElement() {
                    return this._el
                }
                update(t, e) {
                    this._updateValue(t, e), this._render()
                }
                setTooltipEnabled(t = !1) {
                    this._showTooltip !== t && (this._showTooltip = t, this._renderTooltip())
                }
                enableShortMode() {
                    !0 !== this._shortMode && (this._shortMode = !0, this._render())
                }
                disableShortMode() {
                    !1 !== this._shortMode && (this._shortMode = !1, this._render())
                }
                isShortModeEnabled() {
                    return this._shortMode
                }
                start() {
                    !this._subscribed && this._symbolName && (this._quoteSession || (this._quoteSession = (0, n.getQuoteSessionInstance)("simple")), this._quoteSession.subscribe(this._getQuoteSessionId(), this._symbolName, this.update.bind(this)), this._subscribed = !0)
                }
                stop() {
                    this._subscribed && this._quoteSession && this._symbolName && (this._quoteSession.unsubscribe(this._getQuoteSessionId(), this._symbolName), this._subscribed = !1)
                }
                _init(t) {
                    this._el = t.el ? t.el : document.createElement("span"), this._el.innerHTML = "", this._classMap = t.classMap, this._labelMap = t.labelMap, this._showTooltip = t.showTooltip, this._classSuffix = t.classSuffix, this._symbolName = t.symbol, t.tooltipType && (this._tooltipType = t.tooltipType), this._quoteSessionGUID = (0, s.guid)(), !0 === t.short && this.enableShortMode(), t.data && this._updateValue(t.data)
                }
                _clearClasses() {
                    Object.values(this._classMap).map((t => {
                        this._el.classList.remove(`${t}`), this._el.classList.remove(`${t}${this._classSuffix}`)
                    }))
                }
                _render() {
                    this._renderClasses(), this._renderTooltip(), this._renderLabel()
                }
                _renderLabel() {
                    this._el.textContent = this.getLabel()
                }
                _updateValue(t, e) {
                    const i = this._getValueFromData(t);
                    (e || i !== this._value) && (this._value = i)
                }
                _renderClasses() {
                    const t = this._el.classList;
                    t.add(this._componentClass, this._componentClass + this._classSuffix);
                    const e = this._classMap[this._value];
                    for (const i in this._classMap) {
                        const o = this._classMap[i];
                        o && (o === e ? t.add(o, o + this._classSuffix) : t.remove(o, o + this._classSuffix))
                    }!e && this._value && r.logWarn(`no className for status ${this._value}`)
                }
                _renderTooltip() {
                    const t = this._showTooltip ? this.getTooltipText() : "";
                    t !== this._lastTooltipText && (this._lastTooltipText = t, this._el.setAttribute("title", t), "custom" === this._tooltipType && this._el.classList.toggle("apply-common-tooltip", this._showTooltip))
                }
                _getQuoteSessionId() {
                    return `${this._quoteSessionPrefix}.${this._quoteSessionGUID}`
                }
            }
        },
        719240: (t, e, i) => {
            "use strict";
            i.d(e, {
                DataModeIndicator: () => l
            });
            var o = i(777754),
                s = (i(586463), i(994861), i(780792));
            const n = {
                connecting: "tv-data-mode--connecting",
                delayed: "tv-data-mode--delayed",
                delayed_streaming: "tv-data-mode--delayed",
                endofday: "tv-data-mode--endofday",
                forbidden: "tv-data-mode--forbidden",
                realtime: "tv-data-mode--realtime",
                snapshot: "tv-data-mode--snapshot",
                loading: "tv-data-mode--loading",
                replay: "tv-data-mode--replay"
            };

            function r() {
                return {
                    connecting: o.t(null, {
                        context: "data_mode_connecting_letter"
                    }, i(52587)),
                    delayed: o.t(null, {
                        context: "data_mode_delayed_letter"
                    }, i(469219)),
                    delayed_streaming: o.t(null, {
                        context: "data_mode_delayed_streaming_letter"
                    }, i(426211)),
                    endofday: o.t(null, {
                        context: "data_mode_end_of_day_letter"
                    }, i(960582)),
                    forbidden: o.t(null, {
                        context: "data_mode_forbidden_letter"
                    }, i(957357)),
                    realtime: o.t(null, {
                        context: "data_mode_realtime_letter"
                    }, i(647310)),
                    snapshot: o.t(null, {
                        context: "data_mode_snapshot_letter"
                    }, i(87817)),
                    loading: "",
                    replay: o.t(null, {
                        context: "data_mode_replay_letter"
                    }, i(214485))
                }
            }
            const a = {
                streaming: "realtime"
            };
            class l extends s.AbstractIndicator {
                constructor(t) {
                    super(t), this._quoteSessionPrefix = "data-mode-indicator", this._componentClass = "tv-data-mode", this._init(t)
                }
                getLabel() {
                    return !0 === this._shortMode ? this._shortLabelMap[this._value] || "" : super.getLabel()
                }
                setMode(t, e) {
                    this.update({
                        values: {
                            update_mode: t,
                            update_mode_seconds: e
                        }
                    })
                }
                hide() {
                    this._el.classList.add("i-hidden")
                }
                show() {
                    this._el.classList.remove("i-hidden")
                }
                getTooltipText() {
                    let t = "";
                    const e = this.getValue();
                    if ("" === e) return t;
                    switch (e) {
                        case "delayed":
                            t = o.t(null, void 0, i(728332));
                            break;
                        case "delayed_streaming":
                            t = o.t(null, void 0, i(887267));
                            break;
                        default:
                            t = this._labelMap[e] || t
                    }
                    return ["delayed", "delayed_streaming"].includes(e) && (t = t.format({
                        number: String(Math.round(this._modeInterval / 60))
                    })), t
                }
                _init(t = {}) {
                    const e = Object.assign({}, {
                        classMap: n,
                        classSuffix: "",
                        data: {
                            values: {
                                update_mode: "connecting"
                            }
                        },
                        labelMap: {
                            connecting: o.t(null, void 0, i(413859)),
                            delayed: o.t(null, void 0, i(78211)),
                            delayed_streaming: o.t(null, void 0, i(78211)),
                            endofday: o.t(null, void 0, i(132023)),
                            forbidden: o.t(null, void 0, i(113439)),
                            realtime: o.t(null, void 0, i(906530)),
                            snapshot: o.t(null, void 0, i(502927)),
                            loading: "",
                            replay: o.t(null, void 0, i(688506))
                        },
                        modeInterval: 600,
                        short: !1,
                        shortLabelMap: r(),
                        showTooltip: !0,
                        tooltipType: "custom"
                    }, t);
                    this._modeInterval = e.modeInterval || 600, this._shortLabelMap = e.shortLabelMap || r(), super._init(e), this._render()
                }
                _getValueFromData(t) {
                    let e;
                    return e = void 0 !== t.values && void 0 !== t.values.update_mode ? t.values.update_mode : this.getValue(), a[e] || e
                }
                _updateValue(t, e) {
                    void 0 !== t.values && void 0 !== t.values.update_mode_seconds && (this._modeInterval = t.values.update_mode_seconds), super._updateValue(t, e)
                }
            }
        },
        691805: (t, e, i) => {
            "use strict";
            i.d(e, {
                appendScript: () => s
            });
            var o = i(503031);

            function s(t) {
                const e = document.createElement("script");
                e.async = !0, e.src = t;
                const i = (0, o.getCspNonce)();
                return i && e.setAttribute("nonce", i), document.head.appendChild(e), e
            }
        },
        261030: (t, e, i) => {
            "use strict";
            i.d(e, {
                CookieSettings: () => o,
                cookieSettingsChangeEvent: () => c,
                cookieSettingsReady: () => d,
                getCookieSetting: () => T,
                setCookieSetting: () => S
            });
            var o, s = i(251954),
                n = i(268222),
                r = i(49437),
                a = i(43464),
                l = i(66974),
                _ = i(16188);
            ! function(t) {
                t.Analytics = "analytics", t.Advertising = "advertising"
            }(o || (o = {}));
            const c = "cookie_settings_changed",
                d = (0, n.createDeferredPromise)(),
                h = "cookiesSettings",
                u = "localCookiesSettings",
                m = "cookiePrivacyPreferenceBanner",
                p = {
                    [o.Analytics]: !1,
                    [o.Advertising]: !1
                };

            function S(t, e) {
                p[t] = e, _.set((0, l.isProd)() ? h : u, JSON.stringify(p), 3653, "/", a.cookieBannerDomain), s.emit(c, t, e)
            }

            function T(t) {
                return p[t]
            }

            function E() {
                return r.TVLocalStorage.removeItem(m)
            }! function() {
                const t = _.get((0, l.isProd)() ? h : u),
                    e = r.TVLocalStorage.getItem(m),
                    i = r.TVLocalStorage.getItem(h);
                if (t) {
                    e && i && (E(), r.TVLocalStorage.removeItem(h)), (0, a.checkCookiePolicyInLs)(a.oldBannerKey) && (0, a.removeOldCookieBannerKey)();
                    try {
                        const e = JSON.parse(t);
                        p[o.Analytics] = (null == e ? void 0 : e[o.Analytics]) || !1, p[o.Advertising] = (null == e ? void 0 : e[o.Advertising]) || !1
                    } catch (t) {}
                } else if ((0, a.checkCookiePolicyInLs)(a.oldBannerKey) && (S(o.Analytics, !0), S(o.Advertising, !0), (0, a.onAccept)(), (0, a.removeOldCookieBannerKey)()), e && i) {
                    const t = JSON.parse(i);
                    (0, a.setCookiePolicy)(e), S(o.Analytics, null == t ? void 0 : t[o.Analytics]), S(o.Advertising, null == t ? void 0 : t[o.Advertising]), E(), r.TVLocalStorage.removeItem(h)
                }
            }()
        },
        503031: (t, e, i) => {
            "use strict";

            function o() {
                const t = document.querySelector("script[nonce]");
                if (null !== t) return t.getAttribute("nonce") || t.nonce
            }
            i.d(e, {
                getCspNonce: () => o
            })
        },
        776734: (t, e, i) => {
            "use strict";
            async function o() {
                if (!window.user || window.user.do_not_track) return null; {
                    const t = (await Promise.all([i.e(70056), i.e(24081)]).then(i.bind(i, 823623))).getTrackerInstance();
                    return t || null
                }
            }
            i.d(e, {
                getTracker: () => o
            })
        },
        634786: (t, e, i) => {
            "use strict";
            i.d(e, {
                trackCookies: () => s
            });
            var o = i(776734);
            async function s(t, e) {
                var i;
                let s, n;
                s = "/" === window.location.pathname ? "index" : window.location.pathname.split("/")[1];
                const r = null !== (i = window.user.pro_plan) && void 0 !== i ? i : window.is_authenticated ? "free" : "visitor";
                window.is_authenticated && (n = window.user.id);
                const a = await (0, o.getTracker)();
                a && a.trackToastDialog("cookies", t, e, s, r, n)
            }
        },
        433084: (t, e, i) => {
            "use strict";
            i.d(e, {
                QuoteSession: () => s
            });
            var o = i(541558);
            class s {
                constructor(t, e = (0, o.randomHash)()) {
                    this._sessionstarted = !1, this._globalHandler = null, this._chartApi = t, this._sessionid = "qs_" + e
                }
                destroy() {
                    this._sessionstarted && (this._chartApi.quoteDeleteSession(this._sessionid), this._sessionstarted = !1)
                }
                connected() {
                    return this._chartApi.connected()
                }
                connect(t) {
                    this._globalHandler = t, this._chartApi.createSession(this._sessionid, this), this._chartApi.connect()
                }
                disconnect() {
                    this._chartApi.disconnect()
                }
                quoteAddSymbols(t) {
                    this._chartApi.quoteAddSymbols(this._sessionid, t)
                }
                quoteRemoveSymbols(t) {
                    this._chartApi.quoteRemoveSymbols(this._sessionid, t)
                }
                quoteFastSymbols(t) {
                    this._chartApi.quoteFastSymbols(this._sessionid, t)
                }
                quoteSetFields(t) {
                    this._chartApi.quoteSetFields(this._sessionid, t)
                }
                onMessage(t) {
                    var e;
                    switch (t.method) {
                        case "connected":
                            this._sessionstarted || (this._chartApi.quoteCreateSession(this._sessionid), this._sessionstarted = !0);
                            break;
                        case "disconnected":
                            this._sessionstarted = !1
                    }
                    null === (e = this._globalHandler) || void 0 === e || e.call(this, t)
                }
                quoteHibernateAll() {
                    this._chartApi.quoteHibernateAll(this._sessionid)
                }
            }
            window.TradingView.QuoteSession = s
        },
        11228: (t, e, i) => {
            "use strict";
            t = i.nmd(t);
            var o = i(707957),
                s = i(343370).default,
                n = i(12481).default,
                r = i(624444).PriceFormatter;
            const {
                uniq: a
            } = i(337779);
            var l = i(541558);
            const {
                normalizeUpdateMode: _
            } = i(461909);
            var c = i(329806).deepExtend;
            const {
                QUOTE_FIELDS_CACHE: d,
                QUOTE_FIELDS: h
            } = i(6613);
            var u;

            function m(t, e) {
                this.options = Object.assign({
                    throttleTimeout: 125
                }, e), this._connected = !1, this._symbol_data = {}, this._subscriptions = {}, this.onConnect = new o, this.onDisconnect = new o, this._quoteApi = new u(window.ChartApiInstance), this._type = t || "full", this._delayUpdateFastSymbols = n(this._updateFastSymbols, 250), this._throttledSymbolData = {}, this._formatterValuesCache = {}, this._waitingForFormatters = {}, this._snapshotValuesCache = {}, this._waitingForSnapshot = {}, this.connect()
            }
            u = i(433084).QuoteSession, m.prototype.destroy = function() {
                    this._quoteApi.destroy(), this._quoteApi = null, this._connected = !1, this.onDisconnect.fire()
                }, m.prototype.typeFields = {}, m.prototype.typeFields.simple = ["base-currency-logoid", "ch", "chp", "currency-logoid", "currency_code", "currency_id", "base_currency_id", "current_session", "description", "exchange", "format", "fractional", "is_tradable", "language", "local_description", "listed_exchange", "logoid", "lp", "lp_time", "minmov", "minmove2", "original_name", "pricescale", "pro_name", "short_name", "type", "typespecs", "update_mode", "volume", "value_unit_id"], m.prototype.typeFields.simpleDetailed = [].concat(m.prototype.typeFields.simple, ["ask", "bid", "fundamentals", "high_price", "is_tradable", "low_price", "open_price", "prev_close_price", "rch", "rchp", "rtc", "rtc_time", "status", "basic_eps_net_income", "beta_1_year", "earnings_per_share_basic_ttm", "industry", "market_cap_basic", "price_earnings_ttm", "sector", "volume", "dividends_yield", "timezone"]), m.prototype.typeFields.full = [], m.prototype.typeFields.watchlist = [].concat(m.prototype.typeFields.simple, ["rchp", "rtc", "country_code", "provider_id"]),
                m.prototype.typeFields.portfolio = ["pro_name", "short_name", "exchange", "listed_exchange", "description", "sector", "type", "typespecs", "industry", "currency_code", "currency_id", "ch", "chp", "logoid", "currency-logoid", "base-currency-logoid", "earnings_per_share_forecast_next_fq", "earnings_release_next_date", "earnings_release_date", "earnings_per_share_fq", "lp", "fractional", "minmov", "minmove2", "pricescale", "volume", "average_volume", "market_cap_basic", "total_revenue", "earnings_per_share_basic_ttm", "price_earnings_ttm", "beta_1_year", "dps_common_stock_prim_issue_fy", "dividends_yield", "fundamental_currency_code", "rates_mc", "rates_fy", "rates_ttm", "format"], m.prototype.typeFields.notes = ["short_name", "pro_name", "logoid", "currency-logoid", "base-currency-logoid", "symbol-primaryname", "type", "typespecs"], m.prototype.connect = function(t) {
                    this._quoteApi.connect(this.quoteHandler.bind(this))
                }, m.prototype.quoteHandler = function(t) {
                    var e = t.method,
                        i = t.params;
                    switch (e) {
                        case "connected":
                            this._connected || (this._connected = !0, this.onConnected());
                            break;
                        case "quote_list_fields":
                            break;
                        case "quote_symbol_data":
                            this._connected && this.onSymbolData(i[0]);
                            break;
                        case "quote_completed":
                            this._connected && this.onSymbolData({
                                symbolname: i[0],
                                complete: performance.now(),
                                values: {}
                            });
                            break;
                        case "disconnected":
                            this._connected && (this._connected = !1, this.onDisconnect.fire())
                    }
                }, m.prototype.onConnected = function() {
                    this.setFields();
                    var t = Object.keys(this._symbol_data);
                    t.length && (this._quoteApi.quoteAddSymbols(t), this._delayUpdateFastSymbols()), this.onConnect.fire()
                }, m.prototype.setFields = function() {
                    var t = m.prototype.typeFields[this._type];
                    t && t.length && this._quoteApi.quoteSetFields(t)
                }, m.prototype.onSymbolData = function(t) {
                    try {
                        t.status && d.update(t, h, !1)
                    } catch (t) {}
                    var e = t.symbolname,
                        i = this._throttledSymbolData[e];
                    i || (i = this._throttledSymbolData[e] = {
                        fnDispatch: s(this.dipatchSymbolData.bind(this), this.options.throttleTimeout)
                    }), i.cache ? c(i.cache, t) : i.cache = t, i.fnDispatch(e)
                }, m.prototype._parseUpdateMode = function(t) {
                    _(t)
                }, m.prototype.dipatchSymbolData = function(t) {
                    var e = this._symbol_data[t],
                        i = this._throttledSymbolData[t].cache;
                    if (delete this._throttledSymbolData[t].cache, this._symbol_data[t])
                        for (var o in c(e, i), e.values && this._parseUpdateMode(e.values), this._subscriptions) {
                            var s = this._subscriptions[o];
                            s.has(t) && [...s.get(t)].forEach((function(t) {
                                t(e, i)
                            }))
                        }
                }, m.prototype.subscribe = function(t, e, i) {
                    this._subscriptions[t] = this._subscriptions[t] || new Map;
                    var o = this._subscriptions[t];
                    e = [].concat(e);
                    var s = [];
                    e.forEach((function(t) {
                        this._symbol_data[t] ? o && o.has(t) || this._symbol_data[t].subscribers_count++ : (this._symbol_data[t] = {
                            subscribers_count: 1
                        }, s.push(t)), o.has(t) || o.set(t, []), o.get(t).push(i), o.get(t).fast = !0, this._symbol_data[t] && this._symbol_data[t].values && i(this._symbol_data[t], this._symbol_data[t])
                    }), this), s.length && this._connected && (this._quoteApi.quoteAddSymbols(s), this._delayUpdateFastSymbols())
                }, m.prototype.unsubscribe = function(t, e, i) {
                    e = [].concat(e);
                    for (var o = this._subscriptions[t], s = [], n = 0; n < e.length; n++) {
                        var r = e[n];
                        if (o)
                            if (o.has(r) && i) {
                                var a = o.get(r).indexOf(i);
                                ~a && o.get(r).splice(a, 1), o.get(r).length || o.delete(r)
                            } else o.delete(r);
                        o && 0 === o.size && delete this._subscriptions[t], this._symbol_data.hasOwnProperty(r) && (o && !o.has(r) && this._symbol_data[r].subscribers_count--, this._symbol_data[r].subscribers_count || (delete this._symbol_data[r], s.push(r)))
                    }
                    s.length && this._connected && (this._quoteApi.quoteRemoveSymbols(s), this._delayUpdateFastSymbols())
                }, m.prototype.setFastSymbols = function(t, e) {
                    if (this._subscriptions[t])
                        for (var i = this._subscriptions[t], o = Array.from(i.keys()), s = 0; s < o.length; ++s) {
                            var n = o[s];
                            i.get(n).fast = -1 !== e.indexOf(n)
                        }
                    this._delayUpdateFastSymbols()
                }, m.prototype._updateFastSymbols = function() {
                    if (this._connected) {
                        var t = this._fastSymbols();
                        0 === t.length ? this._quoteApi.quoteHibernateAll() : this._quoteApi.quoteFastSymbols(t)
                    }
                }, m.prototype._delayUpdateFastSymbols = m.prototype._updateFastSymbols, m.prototype._fastSymbols = function() {
                    var t = [];
                    for (var e in this._subscriptions)
                        for (var i = this._subscriptions[e], o = Array.from(i.keys()), s = 0; s < o.length; ++s) {
                            var n = o[s];
                            i.get(n).fast && t.push(n)
                        }
                    return t = a(t)
                }, m.prototype.formatter = function(t, e) {
                    var i = this;
                    if (this._waitingForFormatters[t]) return this._waitingForFormatters[t];

                    function o(t) {
                        var i = e && !t.fractional ? 1 : t.minmov;
                        return new r(t.pricescale, i, t.fractional, t.minmove2)
                    }
                    var s = new Promise((function(e, s) {
                        if (i._formatterValuesCache[t]) e(o(i._formatterValuesCache[t]));
                        else {
                            var n = l.guid();
                            i.subscribe(n, [t], (function(r) {
                                "error" === r.status && (i._waitingForFormatters[t] = null, s("Quotes snapshot is not received")),
                                    function(t) {
                                        return t && null != t.pricescale && null != t.minmov
                                    }(r.values) && (i._waitingForFormatters[t] = null, i._formatterValuesCache[t] = r.values, e(o(r.values)), i.unsubscribe(n, t))
                            }))
                        }
                    }));
                    return this._waitingForFormatters[t] = s, s
                }, m.prototype.snapshot = function(t) {
                    var e = this;
                    if (this._waitingForSnapshot[t]) return this._waitingForSnapshot[t];
                    var i = new Promise((function(i, o) {
                        if (e._snapshotValuesCache[t]) i(e._snapshotValuesCache[t]);
                        else {
                            var s = l.guid();
                            e.subscribe(s, [t], (function(n) {
                                "error" === n.status && (e._waitingForSnapshot[t] = null, o("Quotes snapshot is not received"));
                                var r = n.values;
                                r && r.minmov && r.pricescale && r.description && (e._waitingForSnapshot[t] = null, e._snapshotValuesCache[t] = r, i(r), e.unsubscribe(s, t))
                            }))
                        }
                    }));
                    return this._waitingForSnapshot[t] = i, i
                }, TradingView.QuoteSessionMultiplexer = m, t && t.exports && (t.exports = m)
        },
        667353: (t, e, i) => {
            "use strict";
            i.d(e, {
                numOfDecimalPlaces: () => s
            });
            var o = i(960521);

            function s(t) {
                return (new o.Big(t).toFixed().split(".")[1] || "").length
            }
        },
        217504: (t, e, i) => {
            "use strict";
            i.d(e, {
                getMinTick: () => n,
                makeVariableMinTickData: () => r
            });
            var o = i(960521),
                s = i(389137);

            function n(t) {
                const {
                    minTick: e,
                    price: i,
                    variableMinTickData: o,
                    shouldCheckForEquality: s
                } = t;
                return void 0 === o ? e : function(t, e, i = !1) {
                    for (let o = 0; o < e.length; o++) {
                        if (t < e[o].price) return e[o].minTick;
                        if (i && t === e[o].price) return e[o].minTick
                    }
                    return e[e.length - 1].minTick
                }(i, o, s)
            }

            function r(t, e) {
                var i, n, r, a, l;
                const _ = e.split(" ").map(Number);
                if ((0, s.isEven)(_.length) || _.some(Number.isNaN)) return [{
                    minTick: t,
                    price: 1 / 0,
                    maxIndex: 1 / 0
                }];
                const c = [];
                for (let t = 0; t < _.length; t += 2) {
                    const e = null !== (i = _[t + 1]) && void 0 !== i ? i : 1 / 0,
                        s = null !== (r = null === (n = c[c.length - 1]) || void 0 === n ? void 0 : n.price) && void 0 !== r ? r : 0,
                        d = null !== (l = null === (a = c[c.length - 1]) || void 0 === a ? void 0 : a.maxIndex) && void 0 !== l ? l : 0,
                        h = e === 1 / 0 ? 1 / 0 : new o.Big(e).minus(s).div(_[t]).plus(d).toNumber();
                    c.push({
                        minTick: _[t],
                        price: e,
                        maxIndex: h
                    })
                }
                return c
            }
        },
        461794: (t, e, i) => {
            t = i.nmd(t), TradingView.cleanButAmpersand = function(t, e) {
                var i = e ? ["&amp;"] : ["&"];
                return TradingView.clean(t, e, i)
            }, TradingView.strip_tags = function(t) {
                return t && t.replace ? t.replace(/(<([^>]+)>)/gi, "") : t
            }, TradingView.encodeSpread = function(t) {
                return encodeURIComponent(t)
            }, TradingView.clean = function(t, e, i) {
                var o = [
                        ["&", "&amp;"],
                        ["<", "&lt;"],
                        [">", "&gt;"],
                        ['"', "&quot;"],
                        ["'", "&#039;"],
                        ["'", "&#39;"]
                    ],
                    s = t;
                if (!t || !t.replace) return s;
                for (var n = 0; n < o.length; n++) {
                    var r = o[n][0],
                        a = o[n][1];
                    i && i.indexOf && -1 !== i.indexOf(e ? a : r) || (s = e ? s.replace(new RegExp(a, "g"), r) : s.replace(new RegExp(r, "g"), a))
                }
                return s
            }, t && t.exports && (t.exports = {
                clean: TradingView.clean,
                cleanButAmpersand: TradingView.cleanButAmpersand,
                stripTags: TradingView.strip_tags
            })
        },
        120780: (t, e, i) => {
            "use strict";
            i.d(e, {
                fetch: () => s
            });
            const o = (0, i(201089).getLogger)("Fetch");

            function s(t, e, i = {}) {
                {
                    e = e || {},
                        function(t) {
                            return new URL(t, document.baseURI).origin === location.origin
                        }(t) && (e.headers ? e.headers instanceof Headers || (e.headers = new Headers(e.headers)) : e.headers = new Headers, window.locale && e.headers.set("X-Language", window.locale), e.headers.set("X-Requested-With", "XMLHttpRequest")), void 0 === e.credentials && (e.credentials = "same-origin");
                    const s = window.fetch(t, e);
                    return s.then((s => {
                        if (!s.ok) {
                            let n = "";
                            e.method && (n += `${e.method.toUpperCase()} `), n += t, n += `. Status ${s.status}`, s.statusText && (n += `. ${s.statusText}`), s.headers.via && (n += `. Via: ${s.headers.via}`), i.logBodyOnError && "string" == typeof e.body && (n += `. Body: ${e.body.slice(0,1024)}`), o.logError(n)
                        }
                        return s
                    }), (i => {
                        if (i && "AbortError" === i.name) return;
                        let s = "";
                        e.method && (s += `${e.method.toUpperCase()} `), s += t, navigator.onLine ? s += `. ${i}` : s += ". User is offline.", o.logError(s)
                    })), s
                }
            }
        },
        16188: (t, e, i) => {
            "use strict";

            function o(t, e, i, o, s) {
                let n = "";
                if (o = o ? "; path=" + o : "", s = s ? "; domain=" + s : "", i) {
                    const t = new Date;
                    t.setTime(t.getTime() + 24 * i * 60 * 60 * 1e3), n = "; expires=" + t.toUTCString()
                } else n = "";
                document.cookie = t + "=" + e + n + s + o
            }

            function s(t) {
                const e = t + "=",
                    i = document.cookie.split(";");
                for (let t = 0; t < i.length; t++) {
                    let o = i[t];
                    for (;
                        " " === o.charAt(0);) o = o.substring(1, o.length);
                    if (0 === o.indexOf(e)) return o.substring(e.length, o.length)
                }
                return null
            }
            i.d(e, {
                get: () => s,
                set: () => o
            })
        },
        329806: (t, e, i) => {
            "use strict";

            function o(t, ...e) {
                return t && "object" == typeof t ? (0 === e.length || e.forEach((e => {
                    null != e && "object" == typeof e && Object.keys(e).forEach((i => {
                        const n = t[i],
                            r = e[i];
                        if (r === t) return;
                        const a = Array.isArray(r);
                        if (r && (s(r) || a)) {
                            let e;
                            e = a ? n && Array.isArray(n) ? n : [] : n && s(n) ? n : {}, t[i] = o(e, r)
                        } else void 0 !== r && (t[i] = r)
                    }))
                })), t) : t
            }

            function s(t) {
                if (!t || "[object Object]" !== Object.prototype.toString.call(t)) return !1;
                const e = Object.getPrototypeOf(t);
                if (!e) return !0;
                const i = Object.hasOwnProperty.toString,
                    o = e.hasOwnProperty("constructor") && e.constructor;
                return "function" == typeof o && i.call(o) === i.call(Object)
            }
            i.d(e, {
                deepExtend: () => o
            })
        },
        268222: (t, e, i) => {
            "use strict";

            function o() {
                let t, e;
                return {
                    promise: new Promise(((i, o) => {
                        t = i, e = o
                    })),
                    reject: e,
                    resolve: t
                }
            }
            i.d(e, {
                createDeferredPromise: () => o
            })
        },
        541558: (t, e, i) => {
            "use strict";
            i.r(e), i.d(e, {
                guid: () => s,
                randomHash: () => n,
                randomHashN: () => r
            });
            const o = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

            function s() {
                return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (t => {
                    const e = 16 * Math.random() | 0;
                    return ("x" === t ? e : 3 & e | 8).toString(16)
                }))
            }

            function n() {
                return r(12)
            }

            function r(t) {
                let e = "";
                for (let i = 0; i < t; ++i) {
                    const t = Math.floor(Math.random() * o.length);
                    e += o[t]
                }
                return e
            }
        },
        102710: t => {
            "use strict";
            t.exports = JSON.parse('{"cme":{"INDICATORS_ON_CHART":{"limit":99999}},"bovespa":{"INDICATORS_ON_CHART":{"limit":99999}},"qecomqa":{"INDICATORS_ON_CHART":{"limit":99999}}}')
        },
        409352: t => {
            "use strict";
            t.exports = JSON.parse('{"free":{"CHART_STORAGE":{"limit":1},"MULTIPLE_CHARTS":{"limit":1},"INDICATORS_ON_CHART":{"limit":3},"HISTORICAL_BARS":{"limit":5},"STUDY_ON_STUDY":{"limit":270,"child_limit":1},"SERVER_SIDE_ALERTS":{"limit":1,"complex_limit":1,"primitive_limit":5},"SCREENER_ALERTS":{"limit":1},"SCREENER_INTERVALS":{"interval":["1D","1W","1M"]},"STUDY_TEMPLATES":{"limit":1},"SIMULTANEOUS_CONNECTIONS":{"limit":1},"BACKEND_CONNECTIONS":{"limit":2},"IDEA_SOCIAL_LINKS":{"socials":["Twitter","Youtube"]},"MULTICOLOR_FLAGGED_SYMBOLS":{"limit":1}},"__legacy_pro":{"CHART_STORAGE":{"limit":99999},"MULTIPLE_CHARTS":{"limit":8},"CUSTOM_INTERVALS":{},"MULTIPLE_WATCHLISTS":{},"IMPORT_WATCHLISTS":{},"EXPORT_WATCHLISTS":{},"INDICATORS_ON_CHART":{"limit":99999},"TV_PROSTUDIES":{"study_packages":["tv-chartpatterns"]},"HISTORICAL_BARS":{"limit":10},"TV_VOLUMEBYPRICE":{"study_packages":["tv-volumebyprice"]},"STUDY_ON_STUDY":{"limit":270,"child_limit":99999},"TICK_BY_TICK_PUSH_DATA":{},"SERVER_SIDE_ALERTS":{"limit":20},"SCREENER_ALERTS":{"limit":99999},"SCREENER_AUTO_REFRESH":{},"SCREENER_NEW_AUTO_REFRESH":{},"SCREENER_EXPORT_DATA":{},"SCREENER_INTERVALS":{"interval":["1m","5m","15m","30m","1h","2h","4h","1D","1W","1M"]},"NO_SPONSORED_ADS":{},"STUDY_TEMPLATES":{"limit":99999},"SIMULTANEOUS_CONNECTIONS":{"limit":1},"BACKEND_CONNECTIONS":{"limit":10},"IDC_AVAILABLE_DELAY":{},"STATUS":{"disable_on_trial":true},"MULTIFLAGGED_SYMBOLS_LISTS":{},"BAR_REPLAY_INTRADAY":{},"SHOWS":{"disable_on_trial":true},"ALERTS_WEBHOOK":{},"DEEP_FUNDAMENTALS_HISTORY":{},"IDEA_SOCIAL_LINKS":{"socials":["Twitter","Youtube"]},"EXTENDED_SOCIAL_LINKS":{"socials":["Facebook","Instagram"],"disable_on_trial":true},"MULTI_MONITOR":{},"PUBLISH_PROTECTED_SCRIPTS":{"disable_on_trial":true},"STREAMS_ACCESS":{"followers":10},"SMS_2FA_VERIFICATION":{"disable_on_trial":true},"SOCIAL_ACTIVITY":{"disable_on_trial":true}},"__legacy_pro_realtime":{"extends":"__legacy_pro","BACKEND_CONNECTIONS":{"limit":20},"TV_PROSTUDIES":{"study_packages":["tv-prostudies","tv-chartpatterns"]},"SERVER_SIDE_ALERTS":{"limit":1000},"CAN_EDIT_PUBLIC_CHATS":{"disable_on_trial":true},"EXPORT_CHART_DATA":{},"CUSTOM_FORMULAS":{},"INTRADAY_EXOTIC_CHARTS":{},"BACKTESTING_EXPORT":{}},"__legacy_pro_premium":{"extends":"__legacy_pro_realtime","BACKEND_CONNECTIONS":{"limit":50},"CHART_PATTERNS":{"study_packages":["tv-chartpatterns","tv-chart_patterns"]},"USE_BAR_MAGNIFIER":{},"HISTORICAL_BARS":{"limit":20},"IDEA_SIGNATURE":{"disable_on_trial":true},"PROFILE_WEBSITE_FIELD":{"disable_on_trial":true},"ALERTS_NO_EXPIRATION":{},"PUBLISH_INVITE_ONLY_SCRIPTS":{"disable_on_trial":true},"EXPORT_CHART_DATA":{},"DEEP_HISTORY_BACKTEST":{},"ALERTS_ON_SECONDS":{},"PERMANENT_STREAM_RECORDS":{},"EXTENDED_SOCIAL_LINKS":{"socials":["Facebook","Instagram","Website"],"disable_on_trial":true},"SECONDS_INTERVALS":{}},"pro":{"CHART_STORAGE":{"limit":5},"MULTIPLE_CHARTS":{"limit":2},"CUSTOM_INTERVALS":{},"MULTIPLE_WATCHLISTS":{},"IMPORT_WATCHLISTS":{},"EXPORT_WATCHLISTS":{},"INDICATORS_ON_CHART":{"limit":5},"TV_PROSTUDIES":{"study_packages":["tv-chartpatterns"]},"HISTORICAL_BARS":{"limit":10},"TV_VOLUMEBYPRICE":{"study_packages":["tv-volumebyprice"]},"STUDY_ON_STUDY":{"limit":270,"child_limit":1},"TICK_BY_TICK_PUSH_DATA":{},"SERVER_SIDE_ALERTS":{"limit":20,"complex_limit":20,"primitive_limit":20},"SCREENER_ALERTS":{"limit":99999},"SCREENER_AUTO_REFRESH":{},"SCREENER_NEW_AUTO_REFRESH":{},"SCREENER_EXPORT_DATA":{},"SCREENER_INTERVALS":{"interval":["1m","5m","15m","30m","1h","2h","4h","1D","1W","1M"]},"NO_SPONSORED_ADS":{},"STUDY_TEMPLATES":{"limit":99999},"SIMULTANEOUS_CONNECTIONS":{"limit":1},"BACKEND_CONNECTIONS":{"limit":10},"IDC_AVAILABLE_DELAY":{},"STATUS":{"disable_on_trial":true},"BAR_REPLAY_INTRADAY":{"limit":1},"MULTIFLAGGED_SYMBOLS_LISTS":{},"SHOWS":{"disable_on_trial":true},"ALERTS_WEBHOOK":{},"DEEP_FUNDAMENTALS_HISTORY":{},"PUBLISH_PROTECTED_SCRIPTS":{"disable_on_trial":true},"IDEA_SOCIAL_LINKS":{"socials":["Twitter","Youtube"]},"EXTENDED_SOCIAL_LINKS":{"socials":["Facebook","Instagram"],"disable_on_trial":true},"MULTI_MONITOR":{},"MULTICOLOR_FLAGGED_SYMBOLS":{"limit":7},"INTRADAY_EXCHANGE":{},"VOLUME_PROFILE":{},"STREAMS_ACCESS":{"followers":10},"SMS_2FA_VERIFICATION":{"disable_on_trial":true},"SOCIAL_ACTIVITY":{"disable_on_trial":true}},"pro_realtime":{"extends":"pro","CHART_STORAGE":{"limit":10},"MULTIPLE_CHARTS":{"limit":4},"INDICATORS_ON_CHART":{"limit":10},"TV_PROSTUDIES":{"study_packages":["tv-prostudies","tv-chartpatterns"]},"STUDY_ON_STUDY":{"limit":270,"child_limit":9},"SERVER_SIDE_ALERTS":{"limit":100,"complex_limit":100,"primitive_limit":100},"CAN_EDIT_PUBLIC_CHATS":{"disable_on_trial":true},"SIMULTANEOUS_CONNECTIONS":{"limit":2},"BACKEND_CONNECTIONS":{"limit":20},"EXPORT_CHART_DATA":{},"CUSTOM_FORMULAS":{},"INTRADAY_EXOTIC_CHARTS":{},"KAGI_RENKO":{},"INTRADAY_SPREAD":{},"CUSTOM_CHATS":{},"BACKTESTING_EXPORT":{}},"pro_premium":{"extends":"pro_realtime","USE_BAR_MAGNIFIER":{},"CHART_STORAGE":{"limit":99999},"MULTIPLE_CHARTS":{"limit":8},"INDICATORS_ON_CHART":{"limit":25},"CHART_PATTERNS":{"study_packages":["tv-chartpatterns","tv-chart_patterns"]},"HISTORICAL_BARS":{"limit":20},"STUDY_ON_STUDY":{"limit":270,"child_limit":24},"SERVER_SIDE_ALERTS":{"limit":400,"complex_limit":400,"primitive_limit":400},"SIMULTANEOUS_CONNECTIONS":{"limit":5},"BACKEND_CONNECTIONS":{"limit":50},"IDEA_SIGNATURE":{"disable_on_trial":true},"PROFILE_WEBSITE_FIELD":{"disable_on_trial":true},"BAR_REPLAY_INTRADAY":{"limit":4},"ALERTS_NO_EXPIRATION":{},"PUBLISH_INVITE_ONLY_SCRIPTS":{"disable_on_trial":true},"EXPORT_CHART_DATA":{},"DEEP_HISTORY_BACKTEST":{},"ALERTS_ON_SECONDS":{},"PERMANENT_STREAM_RECORDS":{},"EXTENDED_SOCIAL_LINKS":{"socials":["Facebook","Instagram","Website"],"disable_on_trial":true},"SECONDS_INTERVALS":{}},"pro_expert":{"extends":"pro"},"pro_realtime_expert":{"extends":"pro_realtime"},"pro_premium_expert":{"extends":"pro_premium"}}')
        }
    }
]);