{"version":3,"sources":["webpack:///./src/assets/vendor/tradingview/charting_library.min.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./src/assets/vendor/tradingview/datafeed/udf/datafeed.js"],"names":["m","a","b","constructor","hasOwnProperty","prototype","k","c","e","d","f","arguments","h","g","length","l","this","Array","isArray","widget","console","warn","window","TradingView","n","mobile","disabledFeatures","split","enabledFeatures","BARS","CANDLES","LINE","AREA","HEIKEN_ASHI","HOLLOW_CANDLES","version","gEl","document","getElementById","gId","Math","random","toString","substring","onready","addEventListener","attachEvent","css","getElementsByTagName","createElement","type","styleSheet","cssText","createTextNode","appendChild","bindEvent","unbindEvent","removeEventListener","detachEvent","id","datafeed","Error","width","height","symbol","interval","timeframe","timezone","container","path","locale","toolbar_bg","drawingsAccess","studiesAccess","widgetbar","datawindow","details","watchlist","watchlist_settings","default_symbols","overrides","studiesOverrides","brokerConfig","fullscreen","autosize","indicators_file_name","custom_css_url","auto_save_delay","debug","time_frames","text","resolution","client_id","user_id","charts_storage_url","charts_storage_api_version","logo","favorites","intervals","chartTypes","rss_news_feed","settingsAdapter","options","container_id","library_path","drawings_access","studies_access","studies_overrides","savedData","saved_data","snapshotUrl","snapshot_url","uid","customFormatters","tradingController","trading_controller","brokerFactory","disabled_features","enabled_features","numeric_formatting","newsProvider","news_provider","studyCountLimit","study_count_limit","symbolSearchRequestDelay","symbol_search_request_delay","loadLastChart","load_last_chart","settings_adapter","preset","concat","_ready_handlers","create","_innerWindow","contentWindow","_autoResizeChart","style","innerHeight","render","innerHTML","write","_onWindowResize","widgetReady","_ready","call","_initializationFinished","chartContent","json","encodeURIComponent","replace","JSON","stringify","onChartReady","push","setSymbol","tradingViewApi","changeSymbol","layout","setLayout","chartsCount","chart","activeChart","watchList","createButton","symbolInterval","getSymbolInterval","remove","splice","destroyChart","parentNode","removeChild","getVisibleRange","getVisiblePriceRange","subscribe","unsubscribe","onContextMenu","onShortcut","createShortcutAction","onGrayedObjectClicked","closePopupsAndDialogs","applyOverrides","applyStudiesOverrides","createStudyTemplate","addCustomCSSFile","save","saveChart","load","loadChart","extendedData","setLanguage","isFloatingTradingPanelVisible","toggleFloatingTradingPanel","isBottomTradingPanelVisible","toggleBottomTradingPanel","showSampleOrderDialog","mainSeriesPriceFormatter","showNoticeDialog","showConfirmDialog","selectLineTool","selectedLineTool","getSavedCharts","loadChartFromServer","saveChartToServer","removeChartFromServer","getIntervals","getStudiesList","forEach","jQuery","extend","module","exports","originalModule","webpackPolyfill","Object","children","defineProperty","enumerable","get","i","parseJSONorNot","mayBeJSON","parse","Datafeeds","datafeedURL","updateFrequency","_datafeedURL","_configuration","undefined","_symbolSearch","_symbolsStorage","_barsPulseUpdater","DataPulseUpdater","_quotesPulseUpdater","QuotesPulseUpdater","_enableLogging","_callbacks","_initialize","UDFCompatibleDatafeed","defaultConfiguration","supports_search","supports_group_request","supported_resolutions","supports_marks","supports_timescale_marks","getServerTime","callback","supports_time","_send","then","response","time","data","isNaN","catch","on","event","_fireEvent","argument","callbacksChain","onInitialized","_logMessage","message","Date","url","params","request","keys","key","value","axios","method","that","configurationData","_setupWithConfiguration","reason","onReady","setTimeout","exchanges","supportedResolutions","symbolsTypes","symbols_types","SymbolSearchComponent","SymbolsStorage","getMarks","symbolInfo","rangeStart","rangeEnd","onDataCallback","ticker","toUpperCase","from","to","getTimescaleMarks","searchSymbols","searchString","exchange","onResultReadyCallback","MAX_SEARCH_RESULTS","limit","query","s","searchArgument","_symbolResolveURL","resolveSymbol","symbolName","onSymbolResolvedCallback","onResolveErrorCallback","resolveRequestStartTime","now","onResultReady","postProcessedData","postProcessSymbolInfo","_historyURL","getBars","rangeStartDate","rangeEndDate","onErrorCallback","nodata","bars","barsCount","t","volumePresent","v","ohlPresent","o","barValue","close","open","high","low","volume","noData","nextTime","nb","arg","subscribeBars","onRealtimeCallback","listenerGUID","onResetCacheNeededCallback","unsubscribeBars","unsubscribeDataListener","calculateHistoryDepth","period","resolutionBack","intervalBack","getQuotes","symbols","errmsg","subscribeQuotes","fastSymbols","subscribeDataListener","unsubscribeQuotes","_datafeed","_exchangesList","_exchangesWaitingForData","_exchangesDataCache","_symbolsInfo","_symbolsList","_requestFullSymbolsList","group","_onExchangeDataReceived","_onAnyExchangeResponseReceived","exchangeName","tableField","name","index","symbolIndex","listedExchange","tradedExchange","fullName","hasIntraday","tickerPresent","base_name","description","full_name","legs","has_intraday","has_no_volume","listed_exchange","minmov","minmove2","fractional","pointvalue","pricescale","session","force_session_rebuild","has_daily","intraday_multipliers","has_weekly_and_monthly","has_empty_bars","volume_precision","error","allDataReady","sort","maxSearchResults","symbolsStorage","results","queryIsEmpty","searchStringUpperCase","item","positionInName","indexOf","positionInDescription","found","resultIndex","weight","weightedItem1","weightedItem2","map","weightedItem","slice","min","_subscribers","_requestsPending","update","subscriptionRecord","datesRangeRight","parseInt","valueOf","datesRangeLeft","periodLengthSeconds","_subscriptionRecord","lastBar","lastBarTime","subscribers","listeners","isNewBar","previousBar","ubscribers","setInterval","newDataCallback","NaN","requiredPeriodsCount","daysCount","_updateInterval","_fastUpdateInterval","_updateQuotes","symbolsGetter","guid"],"mappings":"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","file":"js/chunk-7387972a.113cc0e9.js","sourcesContent":["(function(){function m(a){var b;if(\"object\"!==typeof a||a.constructor&&!a.hasOwnProperty(\"constructor\")&&!(a.constructor.prototype||{}).hasOwnProperty(\"isPrototypeOf\"))return!1;for(b in a);return void 0===b||a.hasOwnProperty(b)}function k(){var a,b,c,e,d,f=arguments[0]||{},h=1,g=arguments.length,l=!1;\"boolean\"===typeof f&&(l=f,f=arguments[h]||{},h++);\"object\"!==typeof f&&\"function\"!==typeof f&&(f={});h===g&&(f=this,h--);for(;h'},onChartReady:function(a){this._ready?a.call(this):this._ready_handlers.push(a)},setSymbol:function(a,b,c){this._innerWindow().tradingViewApi.changeSymbol(a,b+\"\",c)},layout:function(){return this._innerWindow().tradingViewApi.layout()},setLayout:function(a){return this._innerWindow().tradingViewApi.setLayout(a)},\nchartsCount:function(){return this._innerWindow().tradingViewApi.chartsCount()},chart:function(a){return this._innerWindow().tradingViewApi.chart(a)},activeChart:function(){return this._innerWindow().tradingViewApi.activeChart()},watchList:function(){return this._innerWindow().tradingViewApi.watchlist()},createButton:function(a){return this._innerWindow().createButton(a)},symbolInterval:function(a){return this._innerWindow().tradingViewApi.getSymbolInterval(a)},remove:function(){window.removeEventListener(\"resize\",\nthis._onWindowResize);this._ready_handlers.splice(0,this._ready_handlers.length);delete window[this.options.uid];var a=d.gEl(this.id);a.contentWindow.destroyChart();a.parentNode.removeChild(a)},getVisibleRange:function(a){return this._innerWindow().tradingViewApi.getVisibleRange(a)},getVisiblePriceRange:function(a){return this._innerWindow().tradingViewApi.getVisiblePriceRange(a)},subscribe:function(a,b){this._innerWindow().tradingViewApi.subscribe(a,b)},unsubscribe:function(a,b){this._innerWindow().tradingViewApi.unsubscribe(a,\nb)},onContextMenu:function(a){this._innerWindow().tradingViewApi.onContextMenu(a)},onShortcut:function(a,b){this._innerWindow().createShortcutAction(a,b)},onGrayedObjectClicked:function(a){this._innerWindow().tradingViewApi.onGrayedObjectClicked(a)},closePopupsAndDialogs:function(){this._innerWindow().tradingViewApi.closePopupsAndDialogs()},applyOverrides:function(a){this.options=k(!0,this.options,{overrides:a});this._innerWindow().applyOverrides(a)},applyStudiesOverrides:function(a){this._innerWindow().applyStudiesOverrides(a)},\ncreateStudyTemplate:function(a,b){return this._innerWindow().tradingViewApi.createStudyTemplate(a,b)},addCustomCSSFile:function(a){this._innerWindow().addCustomCSSFile(a)},save:function(a){this._innerWindow().tradingViewApi.saveChart(a)},load:function(a,b){this._innerWindow().tradingViewApi.loadChart({json:a,extendedData:b})},setLanguage:function(a){this.remove();this.options.locale=a;this.create()},isFloatingTradingPanelVisible:function(){return this._innerWindow().isFloatingTradingPanelVisible()},\ntoggleFloatingTradingPanel:function(){this._innerWindow().toggleFloatingTradingPanel()},isBottomTradingPanelVisible:function(){return this._innerWindow().isBottomTradingPanelVisible()},toggleBottomTradingPanel:function(){this._innerWindow().toggleBottomTradingPanel()},showSampleOrderDialog:function(a){return this._innerWindow().showSampleOrderDialog(a)},mainSeriesPriceFormatter:function(){return this._innerWindow().tradingViewApi.mainSeriesPriceFormatter()},showNoticeDialog:function(a){this._innerWindow().tradingViewApi.showNoticeDialog(a)},\nshowConfirmDialog:function(a){this._innerWindow().tradingViewApi.showConfirmDialog(a)},selectLineTool:function(a){this._innerWindow().tradingViewApi.selectLineTool(a)},selectedLineTool:function(){return this._innerWindow().tradingViewApi.selectedLineTool()},getSavedCharts:function(a){this._innerWindow().tradingViewApi.getSavedCharts(a)},loadChartFromServer:function(a){this._innerWindow().tradingViewApi.loadChartFromServer(a)},saveChartToServer:function(a,b,c,d){this._innerWindow().tradingViewApi.saveChartToServer(a,\nb,c,d)},removeChartFromServer:function(a,b){this._innerWindow().tradingViewApi.removeChartFromServer(a,b)},getIntervals:function(){return this._innerWindow().tradingViewApi.getIntervals()},getStudiesList:function(){return this._innerWindow().tradingViewApi.getStudiesList()}};g(\"onSymbolChange\");g(\"onIntervalChange\");[[\"onTick\"],[\"onAutoSaveNeeded\"],[\"onScreenshotReady\"],[\"onBarMarkClicked\",\"onMarkClick\"],[\"onTimescaleMarkClicked\",\"onTimescaleMarkClick\"]].forEach(function(a){d.widget.prototype[a[0]]=\nfunction(b){var c=a[1]||a[0];console.warn(\"Method `\"+a[0]+'` is obsolete. Please use `widget.subscribe(\"'+c+'\", callback)` instead.');this.subscribe(c,b)}});window.TradingView&&jQuery?jQuery.extend(window.TradingView,d):window.TradingView=d}})();\n","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","'use strict';\n/*\n This class implements interaction with UDF-compatible datafeed.\n\n See UDF protocol reference at\n https://github.com/tradingview/charting_library/wiki/UDF\n*/\n\nimport axios from \"axios\"\n\nfunction parseJSONorNot(mayBeJSON) {\n if (typeof mayBeJSON === 'string') {\n return JSON.parse(mayBeJSON);\n } else {\n return mayBeJSON;\n }\n}\n\nvar Datafeeds = {};\n\nDatafeeds.UDFCompatibleDatafeed = function (datafeedURL, updateFrequency) {\n this._datafeedURL = datafeedURL;\n this._configuration = undefined;\n\n this._symbolSearch = null;\n this._symbolsStorage = null;\n this._barsPulseUpdater = new Datafeeds.DataPulseUpdater(this, updateFrequency || 10 * 1000);\n this._quotesPulseUpdater = new Datafeeds.QuotesPulseUpdater(this);\n\n this._enableLogging = false;\n this._initializationFinished = false;\n this._callbacks = {};\n\n this._initialize();\n};\n\nDatafeeds.UDFCompatibleDatafeed.prototype.defaultConfiguration = function () {\n return {\n supports_search: false,\n supports_group_request: true,\n supported_resolutions: ['1', '5', '15', '30', '60', '1D', '1W', '1M'],\n supports_marks: false,\n supports_timescale_marks: false\n };\n};\n\nDatafeeds.UDFCompatibleDatafeed.prototype.getServerTime = function (callback) {\n if (this._configuration.supports_time) {\n this._send(this._datafeedURL + '/tv/time', {})\n .then(function (response) {\n var time = +response.data;\n if (!isNaN(time)) {\n callback(time);\n }\n })\n .catch(function () {\n });\n }\n};\n\nDatafeeds.UDFCompatibleDatafeed.prototype.on = function (event, callback) {\n if (!this._callbacks.hasOwnProperty(event)) {\n this._callbacks[event] = [];\n }\n\n this._callbacks[event].push(callback);\n return this;\n};\n\nDatafeeds.UDFCompatibleDatafeed.prototype._fireEvent = function (event, argument) {\nif (this._callbacks.hasOwnProperty(event)) {\n var callbacksChain = this._callbacks[event];\n for (var i = 0; i < callbacksChain.length; ++i) {\n callbacksChain[i](argument);\n }\n this._callbacks[event] = [];\n }\n};\n\nDatafeeds.UDFCompatibleDatafeed.prototype.onInitialized = function () {\n this._initializationFinished = true;\n this._fireEvent('initialized');\n};\n\nDatafeeds.UDFCompatibleDatafeed.prototype._logMessage = function (message) {\n if (this._enableLogging) {\n var now = new Date();\n }\n};\n\nDatafeeds.UDFCompatibleDatafeed.prototype._send = function (url, params) {\n var request = url;\n if (params) {\n for (var i = 0; i < Object.keys(params).length; ++i) {\n var key = Object.keys(params)[i];\n var value = encodeURIComponent(params[key]);\n request += (i === 0 ? '?' : '&') + key + '=' + value;\n }\n }\n\n this._logMessage('New request: ' + request);\n return axios.get(request, {\n method: \"GET\",\n })\n\n // return $.ajax({\n //  type: 'GET',\n //  url: request,\n //  contentType: 'text/plain'\n // });\n};\n\nDatafeeds.UDFCompatibleDatafeed.prototype._initialize = function () {\n var that = this;\n this._send(this._datafeedURL + '/tv/config')\n .then(function (response) {\n var configurationData = parseJSONorNot(response.data); // change .data.data to .data\n that._setupWithConfiguration(configurationData);\n })\n .catch(function (reason) {\n that._setupWithConfiguration(that.defaultConfiguration());\n });\n};\n\nDatafeeds.UDFCompatibleDatafeed.prototype.onReady = function (callback) {\n var that = this;\n if (this._configuration) {\n setTimeout(function () {\n callback(that._configuration);\n }, 0);\n } else {\n this.on('configuration_ready', function () {\n callback(that._configuration);\n });\n }\n};\n\nDatafeeds.UDFCompatibleDatafeed.prototype._setupWithConfiguration = function (configurationData) {\n this._configuration = configurationData;\n\n if (!configurationData.exchanges) {\n configurationData.exchanges = [];\n }\n\n //  @obsolete; remove in 1.5\n var supportedResolutions = configurationData.supported_resolutions || configurationData.supportedResolutions;\n configurationData.supported_resolutions = supportedResolutions;\n\n //  @obsolete; remove in 1.5\n var symbolsTypes = configurationData.symbols_types || configurationData.symbolsTypes;\n configurationData.symbols_types = symbolsTypes;\n\n if (!configurationData.supports_search && !configurationData.supports_group_request) {\n throw new Error('Unsupported datafeed configuration. Must either support search, or support group request');\n }\n\n if (!configurationData.supports_search) {\n this._symbolSearch = new Datafeeds.SymbolSearchComponent(this);\n }\n\n if (configurationData.supports_group_request) {\n //  this component will call onInitialized() by itself\n this._symbolsStorage = new Datafeeds.SymbolsStorage(this);\n } else {\n this.onInitialized();\n }\n\n this._fireEvent('configuration_ready');\n this._logMessage('Initialized with ' + JSON.stringify(configurationData));\n};\n\n//  ===============================================================================================================================\n//  The functions set below is the implementation of JavaScript API.\n\nDatafeeds.UDFCompatibleDatafeed.prototype.getMarks = function (symbolInfo, rangeStart, rangeEnd, onDataCallback, resolution) {\n if (this._configuration.supports_marks) {\n\n this._send(this._datafeedURL + '/marks', {\n symbol: symbolInfo.ticker.toUpperCase(),\n from: rangeStart,\n to: rangeEnd,\n resolution: resolution\n })\n .then(function (response) {\n onDataCallback(parseJSONorNot(response.data.data));\n })\n .catch(function () {\n onDataCallback([]);\n });\n }\n};\n\nDatafeeds.UDFCompatibleDatafeed.prototype.getTimescaleMarks = function (symbolInfo, rangeStart, rangeEnd, onDataCallback, resolution) {\n if (this._configuration.supports_timescale_marks) {\n this._send(this._datafeedURL + '/timescale_marks', {\n symbol: symbolInfo.ticker.toUpperCase(),\n from: rangeStart,\n to: rangeEnd,\n resolution: resolution\n })\n .then(function (response) {\n onDataCallback(parseJSONorNot(response.data.data));\n })\n .catch(function () {\n onDataCallback([]);\n });\n }\n};\n\nDatafeeds.UDFCompatibleDatafeed.prototype.searchSymbols = function (searchString, exchange, type, onResultReadyCallback) {\n var MAX_SEARCH_RESULTS = 30;\n\n if (!this._configuration) {\n onResultReadyCallback([]);\n return;\n }\n\n if (this._configuration.supports_search) {\n this._send(this._datafeedURL + '/tv/search', {\n limit: MAX_SEARCH_RESULTS,\n query: searchString.toUpperCase(),\n type: type,\n exchange: exchange\n })\n .then(function (response) {\n var data = parseJSONorNot(response.data.data);\n if (data == null) {\n onResultReadyCallback([]);\n return\n }\n for (var i = 0; i < data.length; ++i) {\n if (!data[i].params) {\n data[i].params = [];\n }\n\n data[i].exchange = data[i].exchange || '';\n }\n\n if (typeof data.s == 'undefined' || data.s !== 'error') {\n onResultReadyCallback(data);\n } else {\n onResultReadyCallback([]);\n }\n })\n .catch(function (reason) {\n onResultReadyCallback([]);\n });\n } else {\n if (!this._symbolSearch) {\n throw new Error('Datafeed error: inconsistent configuration (symbol search)');\n }\n\n var searchArgument = {\n searchString: searchString,\n exchange: exchange,\n type: type,\n onResultReadyCallback: onResultReadyCallback\n };\n\n if (this._initializationFinished) {\n this._symbolSearch.searchSymbols(searchArgument, MAX_SEARCH_RESULTS);\n } else {\n var that = this;\n\n this.on('initialized', function () {\n that._symbolSearch.searchSymbols(searchArgument, MAX_SEARCH_RESULTS);\n });\n }\n }\n};\n\nDatafeeds.UDFCompatibleDatafeed.prototype._symbolResolveURL = '/tv/symbols';\n\n//  BEWARE: this function does not consider symbol's exchange\nDatafeeds.UDFCompatibleDatafeed.prototype.resolveSymbol = function (symbolName, onSymbolResolvedCallback, onResolveErrorCallback) {\n var that = this;\n\n if (!this._initializationFinished) {\n this.on('initialized', function () {\n that.resolveSymbol(symbolName, onSymbolResolvedCallback, onResolveErrorCallback);\n });\n\n return;\n }\n\n var resolveRequestStartTime = Date.now();\n that._logMessage('Resolve requested');\n\n function onResultReady(data) {\n var postProcessedData = data;\n if (that.postProcessSymbolInfo) {\n postProcessedData = that.postProcessSymbolInfo(postProcessedData);\n }\n\n that._logMessage('Symbol resolved: ' + (Date.now() - resolveRequestStartTime));\n\n onSymbolResolvedCallback(postProcessedData);\n }\n\n if (!this._configuration.supports_group_request) {\n this._send(this._datafeedURL + this._symbolResolveURL, {\n symbol: symbolName ? symbolName.toUpperCase() : ''\n })\n .then(function (response) {\n var data = parseJSONorNot(response.data);\n if (data.s && data.s !== 'ok') {\n onResolveErrorCallback('unknown_symbol');\n } else {\n onResultReady(data);\n }\n })\n .catch(function (reason) {\n that._logMessage('Error resolving symbol: ' + JSON.stringify([reason]));\n onResolveErrorCallback('unknown_symbol');\n });\n } else {\n if (this._initializationFinished) {\n this._symbolsStorage.resolveSymbol(symbolName, onResultReady, onResolveErrorCallback);\n } else {\n this.on('initialized', function () {\n that._symbolsStorage.resolveSymbol(symbolName, onResultReady, onResolveErrorCallback);\n });\n }\n }\n};\n\nDatafeeds.UDFCompatibleDatafeed.prototype._historyURL = '/tv/trade';\n\nDatafeeds.UDFCompatibleDatafeed.prototype.getBars = function (symbolInfo, resolution, rangeStartDate, rangeEndDate, onDataCallback, onErrorCallback) {\n //  timestamp sample: 1399939200\n if (rangeStartDate > 0 && (rangeStartDate + '').length > 10) {\n throw new Error(['Got a JS time instead of Unix one.', rangeStartDate, rangeEndDate]);\n }\n\n this._send(this._datafeedURL + this._historyURL, {\n symbol: symbolInfo.ticker.toUpperCase(),\n resolution: resolution,\n from: rangeStartDate,\n to: rangeEndDate\n })\n .then(function (response) {\n var data = parseJSONorNot(response.data);\n\n var nodata = data.s === 'no_data';\n\n if (data.s !== 'ok' && !nodata) {\n if (onErrorCallback) {\n onErrorCallback(data.s);\n }\n\n return;\n }\n\n var bars = [];\n\n //  data is JSON having format {s: \"status\" (ok, no_data, error),\n // v: [volumes], t: [times], o: [opens], h: [highs], l: [lows], c:[closes], nb: \"optional_unixtime_if_no_data\"}\n var barsCount = nodata ? 0 : data.t.length;\n\n var volumePresent = typeof data.v != 'undefined';\n var ohlPresent = typeof data.o != 'undefined';\n for (var i = 0; i < barsCount; ++i) {\n var barValue = {\n time: data.t[i] * 1000,\n close: +data.c[i]\n };\n\n if (ohlPresent) {\n barValue.open = +data.o[i];\n barValue.high = +data.h[i];\n barValue.low = +data.l[i];\n } else {\n barValue.open = barValue.high = barValue.low = +barValue.close;\n }\n\n if (volumePresent) {\n barValue.volume = +data.v[i];\n }\n\n bars.push(barValue);\n }\n onDataCallback(bars, { noData: nodata, nextTime: data.nb || data.nextTime });\n })\n .catch(function (arg) {\n console.warn(['getBars(): HTTP error', arg]);\n\n if (onErrorCallback) {\n onErrorCallback('network error: ' + JSON.stringify(arg));\n }\n });\n};\n\nDatafeeds.UDFCompatibleDatafeed.prototype.subscribeBars = function (symbolInfo, resolution, onRealtimeCallback, listenerGUID, onResetCacheNeededCallback) {\n // this._barsPulseUpdater.subscribeDataListener(symbolInfo, resolution, onRealtimeCallback, listenerGUID, onResetCacheNeededCallback);\n};\n\nDatafeeds.UDFCompatibleDatafeed.prototype.unsubscribeBars = function (listenerGUID) {\n this._barsPulseUpdater.unsubscribeDataListener(listenerGUID);\n};\n\nDatafeeds.UDFCompatibleDatafeed.prototype.calculateHistoryDepth = function (period, resolutionBack, intervalBack) {\n if (period == \"D\") {\n return {\n resolutionBack: 'M',\n intervalBack: 24\n };\n }\n};\n\nDatafeeds.UDFCompatibleDatafeed.prototype.getQuotes = function (symbols, onDataCallback, onErrorCallback) {\n this._send(this._datafeedURL + '/quotes', { symbols: symbols })\n .then(function (response) {\n var data = parseJSONorNot(response);\n if (data.s === 'ok') {\n //  JSON format is {s: \"status\", [{s: \"symbol_status\", n: \"symbol_name\", v: {\"field1\": \"value1\", \"field2\": \"value2\", ..., \"fieldN\": \"valueN\"}}]}\n if (onDataCallback) {\n onDataCallback(data.d);\n }\n } else {\n if (onErrorCallback) {\n onErrorCallback(data.errmsg);\n }\n }\n })\n .catch(function (arg) {\n if (onErrorCallback) {\n onErrorCallback('network error: ' + arg);\n }\n });\n};\n\nDatafeeds.UDFCompatibleDatafeed.prototype.subscribeQuotes = function (symbols, fastSymbols, onRealtimeCallback, listenerGUID) {\n this._quotesPulseUpdater.subscribeDataListener(symbols, fastSymbols, onRealtimeCallback, listenerGUID);\n};\n\nDatafeeds.UDFCompatibleDatafeed.prototype.unsubscribeQuotes = function (listenerGUID) {\n this._quotesPulseUpdater.unsubscribeDataListener(listenerGUID);\n};\n\n//  ==================================================================================================================================================\n//  ==================================================================================================================================================\n//  ==================================================================================================================================================\n\n/*\n  It's a symbol storage component for ExternalDatafeed. This component can\n   * interact to UDF-compatible datafeed which supports whole group info requesting\n   * do symbol resolving -- return symbol info by its name\n*/\nDatafeeds.SymbolsStorage = function (datafeed) {\n this._datafeed = datafeed;\n\n this._exchangesList = ['NYSE', 'FOREX', 'AMEX'];\n this._exchangesWaitingForData = {};\n this._exchangesDataCache = {};\n\n this._symbolsInfo = {};\n this._symbolsList = [];\n\n this._requestFullSymbolsList();\n};\n\nDatafeeds.SymbolsStorage.prototype._requestFullSymbolsList = function () {\n var that = this;\n\n for (var i = 0; i < this._exchangesList.length; ++i) {\n var exchange = this._exchangesList[i];\n\n if (this._exchangesDataCache.hasOwnProperty(exchange)) {\n continue;\n }\n\n this._exchangesDataCache[exchange] = true;\n\n this._exchangesWaitingForData[exchange] = 'waiting_for_data';\n\n this._datafeed._send(this._datafeed._datafeedURL + '/tv/symbol_info', {\n group: exchange\n })\n .then((function (exchange) {\n return function (response) {\n that._onExchangeDataReceived(exchange, parseJSONorNot(response));\n that._onAnyExchangeResponseReceived(exchange);\n };\n })(exchange))\n .catch((function (exchange) {\n return function (reason) {\n that._onAnyExchangeResponseReceived(exchange);\n };\n })(exchange));\n }\n};\n\nDatafeeds.SymbolsStorage.prototype._onExchangeDataReceived = function (exchangeName, data) {\n function tableField(data, name, index) {\n return data[name] instanceof Array ?\n data[name][index] :\n data[name];\n }\n\n try {\n for (var symbolIndex = 0; symbolIndex < data.symbol.length; ++symbolIndex) {\n var symbolName = data.symbol[symbolIndex];\n var listedExchange = tableField(data, 'exchange-listed', symbolIndex);\n var tradedExchange = tableField(data, 'exchange-traded', symbolIndex);\n var fullName = tradedExchange + ':' + symbolName;\n\n //  This feature support is not implemented yet\n //  var hasDWM = tableField(data, \"has-dwm\", symbolIndex);\n\n var hasIntraday = tableField(data, 'has-intraday', symbolIndex);\n\n var tickerPresent = typeof data.ticker != 'undefined';\n\n var symbolInfo = {\n name: symbolName,\n base_name: [listedExchange + ':' + symbolName],\n description: tableField(data, 'description', symbolIndex),\n full_name: fullName,\n legs: [fullName],\n has_intraday: hasIntraday,\n has_no_volume: tableField(data, 'has-no-volume', symbolIndex),\n listed_exchange: listedExchange,\n exchange: tradedExchange,\n minmov: tableField(data, 'minmovement', symbolIndex) || tableField(data, 'minmov', symbolIndex),\n minmove2: tableField(data, 'minmove2', symbolIndex) || tableField(data, 'minmov2', symbolIndex),\n fractional: tableField(data, 'fractional', symbolIndex),\n pointvalue: tableField(data, 'pointvalue', symbolIndex),\n pricescale: tableField(data, 'pricescale', symbolIndex),\n type: tableField(data, 'type', symbolIndex),\n session: tableField(data, 'session-regular', symbolIndex),\n ticker: tickerPresent ? tableField(data, 'ticker', symbolIndex) : symbolName,\n timezone: tableField(data, 'timezone', symbolIndex),\n supported_resolutions: tableField(data, 'supported-resolutions', symbolIndex) || this._datafeed.defaultConfiguration().supported_resolutions,\n force_session_rebuild: tableField(data, 'force-session-rebuild', symbolIndex) || false,\n has_daily: tableField(data, 'has-daily', symbolIndex) || true,\n intraday_multipliers: tableField(data, 'intraday-multipliers', symbolIndex) || ['1', '5', '15', '30', '60'],\n has_weekly_and_monthly: tableField(data, 'has-weekly-and-monthly', symbolIndex) || false,\n has_empty_bars: tableField(data, 'has-empty-bars', symbolIndex) || false,\n volume_precision: tableField(data, 'volume-precision', symbolIndex) || 0\n };\n\n this._symbolsInfo[symbolInfo.ticker] = this._symbolsInfo[symbolName] = this._symbolsInfo[fullName] = symbolInfo;\n this._symbolsList.push(symbolName);\n }\n } catch (error) {\n throw new Error('API error when processing exchange `' + exchangeName + '` symbol #' + symbolIndex + ': ' + error);\n }\n};\n\nDatafeeds.SymbolsStorage.prototype._onAnyExchangeResponseReceived = function (exchangeName) {\n delete this._exchangesWaitingForData[exchangeName];\n\n var allDataReady = Object.keys(this._exchangesWaitingForData).length === 0;\n\n if (allDataReady) {\n this._symbolsList.sort();\n this._datafeed._logMessage('All exchanges data ready');\n this._datafeed.onInitialized();\n }\n};\n\n//  BEWARE: this function does not consider symbol's exchange\nDatafeeds.SymbolsStorage.prototype.resolveSymbol = function (symbolName, onSymbolResolvedCallback, onResolveErrorCallback) {\n var that = this;\n\n setTimeout(function () {\n if (!that._symbolsInfo.hasOwnProperty(symbolName)) {\n onResolveErrorCallback('invalid symbol');\n } else {\n onSymbolResolvedCallback(that._symbolsInfo[symbolName]);\n }\n }, 0);\n};\n\n//  ==================================================================================================================================================\n//  ==================================================================================================================================================\n//  ==================================================================================================================================================\n\n/*\n  It's a symbol search component for ExternalDatafeed. This component can do symbol search only.\n  This component strongly depends on SymbolsDataStorage and cannot work without it. Maybe, it would be\n  better to merge it to SymbolsDataStorage.\n*/\n\nDatafeeds.SymbolSearchComponent = function (datafeed) {\n this._datafeed = datafeed;\n};\n\n//  searchArgument = { searchString, onResultReadyCallback}\nDatafeeds.SymbolSearchComponent.prototype.searchSymbols = function (searchArgument, maxSearchResults) {\n if (!this._datafeed._symbolsStorage) {\n throw new Error('Cannot use local symbol search when no groups information is available');\n }\n\n var symbolsStorage = this._datafeed._symbolsStorage;\n\n var results = []; // array of WeightedItem { item, weight }\n var queryIsEmpty = !searchArgument.searchString || searchArgument.searchString.length === 0;\n var searchStringUpperCase = searchArgument.searchString.toUpperCase();\n\n for (var i = 0; i < symbolsStorage._symbolsList.length; ++i) {\n var symbolName = symbolsStorage._symbolsList[i];\n var item = symbolsStorage._symbolsInfo[symbolName];\n\n if (searchArgument.type && searchArgument.type.length > 0 && item.type !== searchArgument.type) {\n continue;\n }\n\n if (searchArgument.exchange && searchArgument.exchange.length > 0 && item.exchange !== searchArgument.exchange) {\n continue;\n }\n\n var positionInName = item.name.toUpperCase().indexOf(searchStringUpperCase);\n var positionInDescription = item.description.toUpperCase().indexOf(searchStringUpperCase);\n\n if (queryIsEmpty || positionInName >= 0 || positionInDescription >= 0) {\n var found = false;\n for (var resultIndex = 0; resultIndex < results.length; resultIndex++) {\n if (results[resultIndex].item === item) {\n found = true;\n break;\n }\n }\n\n if (!found) {\n var weight = positionInName >= 0 ? positionInName : 8000 + positionInDescription;\n results.push({ item: item, weight: weight });\n }\n }\n }\n\n searchArgument.onResultReadyCallback(\n results\n .sort(function (weightedItem1, weightedItem2) {\n return weightedItem1.weight - weightedItem2.weight;\n })\n .map(function (weightedItem) {\n var item = weightedItem.item;\n return {\n symbol: item.name,\n full_name: item.full_name,\n description: item.description,\n exchange: item.exchange,\n params: [],\n type: item.type,\n ticker: item.name\n };\n })\n .slice(0, Math.min(results.length, maxSearchResults))\n );\n};\n\n//  ==================================================================================================================================================\n//  ==================================================================================================================================================\n//  ==================================================================================================================================================\n\n/*\n  This is a pulse updating components for ExternalDatafeed. They emulates realtime updates with periodic requests.\n*/\n\nDatafeeds.DataPulseUpdater = function (datafeed, updateFrequency) {\n this._datafeed = datafeed;\n this._subscribers = {};\n\n this._requestsPending = 0;\n var that = this;\n\n var update = function () {\n if (that._requestsPending > 0) {\n return;\n }\n\n for (var listenerGUID in that._subscribers) {\n var subscriptionRecord = that._subscribers[listenerGUID];\n var resolution = subscriptionRecord.resolution;\n\n var datesRangeRight = parseInt((new Date().valueOf()) / 1000);\n\n //  BEWARE: please note we really need 2 bars, not the only last one\n //  see the explanation below. `10` is the `large enough` value to work around holidays\n var datesRangeLeft = datesRangeRight - that.periodLengthSeconds(resolution, 10);\n\n that._requestsPending++;\n (function (_subscriptionRecord) { // eslint-disable-line\n that._datafeed.getBars(_subscriptionRecord.symbolInfo, resolution, datesRangeLeft, datesRangeRight, function (bars) {\n that._requestsPending--;\n\n //  means the subscription was cancelled while waiting for data\n if (!that._subscribers.hasOwnProperty(listenerGUID)) {\n return;\n }\n\n if (bars.length === 0) {\n return;\n }\n\n var lastBar = bars[bars.length - 1];\n if (!isNaN(_subscriptionRecord.lastBarTime) && lastBar.time < _subscriptionRecord.lastBarTime) {\n return;\n }\n\n var subscribers = _subscriptionRecord.listeners;\n\n //  BEWARE: this one isn't working when first update comes and this update makes a new bar. In this case\n //  _subscriptionRecord.lastBarTime = NaN\n var isNewBar = !isNaN(_subscriptionRecord.lastBarTime) && lastBar.time > _subscriptionRecord.lastBarTime;\n\n //  Pulse updating may miss some trades data (ie, if pulse period = 10 secods and new bar is started 5 seconds later after the last update, the\n //  old bar's last 5 seconds trades will be lost). Thus, at fist we should broadcast old bar updates when it's ready.\n if (isNewBar) {\n if (bars.length < 2) {\n throw new Error('Not enough bars in history for proper pulse update. Need at least 2.');\n }\n\n var previousBar = bars[bars.length - 2];\n for (var i = 0; i < subscribers.length; ++i) {\n subscribers[i](previousBar);\n }\n }\n\n _subscriptionRecord.lastBarTime = lastBar.time;\n\n for (var i = 0; i < subscribers.length; ++i) {\n s\n ubscribers[i](lastBar);\n }\n },\n\n //  on error\n function () {\n that._requestsPending--;\n });\n })(subscriptionRecord);\n }\n };\n\n if (typeof updateFrequency != 'undefined' && updateFrequency > 0) {\n setInterval(update, updateFrequency);\n }\n};\n\nDatafeeds.DataPulseUpdater.prototype.unsubscribeDataListener = function (listenerGUID) {\n this._datafeed._logMessage('Unsubscribing ' + listenerGUID);\n delete this._subscribers[listenerGUID];\n};\n\nDatafeeds.DataPulseUpdater.prototype.subscribeDataListener = function (symbolInfo, resolution, newDataCallback, listenerGUID) {\n this._datafeed._logMessage('Subscribing ' + listenerGUID);\n\n if (!this._subscribers.hasOwnProperty(listenerGUID)) {\n this._subscribers[listenerGUID] = {\n symbolInfo: symbolInfo,\n resolution: resolution,\n lastBarTime: NaN,\n listeners: []\n };\n }\n\n this._subscribers[listenerGUID].listeners.push(newDataCallback);\n};\n\nDatafeeds.DataPulseUpdater.prototype.periodLengthSeconds = function (resolution, requiredPeriodsCount) {\n var daysCount = 0;\n\n if (resolution === 'D') {\n daysCount = requiredPeriodsCount;\n } else if (resolution === 'M') {\n daysCount = 31 * requiredPeriodsCount;\n } else if (resolution === 'W') {\n daysCount = 7 * requiredPeriodsCount;\n } else {\n daysCount = requiredPeriodsCount * resolution / (24 * 60);\n }\n\n return daysCount * 24 * 60 * 60;\n};\n\nDatafeeds.QuotesPulseUpdater = function (datafeed) {\n this._datafeed = datafeed;\n this._subscribers = {};\n this._updateInterval = 60 * 1000;\n this._fastUpdateInterval = 10 * 1000;\n this._requestsPending = 0;\n\n var that = this;\n\n setInterval(function () {\n that._updateQuotes(function (subscriptionRecord) { return subscriptionRecord.symbols; });\n }, this._updateInterval);\n\n setInterval(function () {\n that._updateQuotes(function (subscriptionRecord) { return subscriptionRecord.fastSymbols.length > 0 ? subscriptionRecord.fastSymbols : subscriptionRecord.symbols; });\n }, this._fastUpdateInterval);\n};\n\nDatafeeds.QuotesPulseUpdater.prototype.subscribeDataListener = function (symbols, fastSymbols, newDataCallback, listenerGUID) {\n if (!this._subscribers.hasOwnProperty(listenerGUID)) {\n this._subscribers[listenerGUID] = {\n symbols: symbols,\n fastSymbols: fastSymbols,\n listeners: []\n };\n }\n\n this._subscribers[listenerGUID].listeners.push(newDataCallback);\n};\n\nDatafeeds.QuotesPulseUpdater.prototype.unsubscribeDataListener = function (listenerGUID) {\n delete this._subscribers[listenerGUID];\n};\n\nDatafeeds.QuotesPulseUpdater.prototype._updateQuotes = function (symbolsGetter) {\n if (this._requestsPending > 0) {\n return;\n }\n\n var that = this;\n for (var listenerGUID in this._subscribers) {\n this._requestsPending++;\n\n var subscriptionRecord = this._subscribers[listenerGUID];\n this._datafeed.getQuotes(symbolsGetter(subscriptionRecord),\n\n // onDataCallback\n (function (subscribers, guid) { // eslint-disable-line\n return function (data) {\n that._requestsPending--;\n\n // means the subscription was cancelled while waiting for data\n if (!that._subscribers.hasOwnProperty(guid)) {\n return;\n }\n\n for (var i = 0; i < subscribers.length; ++i) {\n subscribers[i](data);\n }\n };\n }(subscriptionRecord.listeners, listenerGUID)),\n // onErrorCallback\n function (error) {\n that._requestsPending--;\n });\n }\n};\n\nif (typeof module !== 'undefined' && module && module.exports) {\n module.exports = {\n UDFCompatibleDatafeed: Datafeeds.UDFCompatibleDatafeed,\n };\n}\n\nexport default {\n UDFCompatibleDatafeed: Datafeeds.UDFCompatibleDatafeed,\n}\n\n"],"sourceRoot":""}