{"version":3,"sources":["webpack://fxsWidgets/../src/js/widgets/marketimpact-volatility/actions/localizationActions.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-volatility/store.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-volatility/actions/volatilityDataActions.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-volatility/actions/assetActions.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-volatility/actions/index.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-volatility/constants/seriesConfig.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-volatility/components/VolatilityChart.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-volatility/constants/chartOptions.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-volatility/components/PairDropdown.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-volatility/components/VolatilityContainer.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-volatility/index.js","webpack://fxsWidgets/../src/js/widgets/calendar-common/helpers/formatDate.js","webpack://fxsWidgets/../src/js/widgets/marketimpact-common/helpers/getInitialDate.js"],"names":["translations","fetchLocalizations","_ref","store","storeCulture","getState","config","culture","toLowerCase","currentCulture","hasOwnProperty","default","_x","apply","arguments","INITIAL_STATE","calendarApiUrl","CALENDAR_API_URL","timezoneOffset","eventId","allowDownload","zoomable","assets","take","height","data","isFetching","fetchError","items","initialDate","selectedAsset","convertAssets","split","convertCulture","input","Object","keys","includes","settingsMapper","state","resultState","_objectSpread","selectedPair","length","received","values","_store$getState$confi","mapped","map","x","date","convertDateToUserFriendly","dateUtc","getInitialDate","setState","error","fetchVolatilityData","_store$getState2","_store$getState2$conf","requested","url","concat","fetch","then","response","ok","json","status","catch","err","console","fetchAssetsAndData","cacheFetch","changeSelectedAssetAndFetchData","assetId","seriesConfig","VolatilityRatio15Min","nameKey","type","color","mapProperty","item","volatilityRatio15Min","VolatilityRatio4h","volatilityRatio4h","VolatilityRatioMedian15Min","volatilityRatioMedian15Min","VolatilityRatioMedian4h","volatilityRatioMedian4h","VolatilityChart","_Component","props","_this","translate","_callSuper","options","chart","toolbar","tools","download","zoomin","zoomout","zoom","enabled","autoScaleYaxis","animations","dropShadow","opacity","fontFamily","grid","padding","left","xaxis","tooltip","axisBorder","show","min","Date","getTime","undefined","yaxis","style","cssClass","width","offsetX","labels","formatter","value","toFixed","plotOptions","bar","columnWidth","getNumberDependingOnBars","colors","s","stroke","curve","dateFormatLocalizedSync","y","legend","position","horizontalAlign","offsetY","itemMargin","vertical","horizontal","markers","responsive","breakpoint","series","getSeries","bind","_inherits","key","nextProps","this","_this2","name","prepareSeries","_ref2","_objectDestructuringEmpty","h","Chart","Component","connectWithTranslations","PairDropdown","_classCallCheck","onOptionSelected","isOpen","class","IconCaretUp","IconCaretDown","option","id","pairs","Dropdown","selectedValue","renderTitle","renderOption","titleClass","connect","actions","VolatilityContainer","preloadDateFormatTranslation","shouldShowChart","find","a","dir","SpinnerIcon","Spinner","WidgetError","message","NoDataWidgetError","MarketImpactVolatilityWidget","createCustomStore","createStore","Provider","getOrdinalDay","day","result","slice"],"mappings":"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","file":"marketimpact-volatility.93592138e6333939d122.js","sourcesContent":["export const translations = {\r\n    \"ar\": () => import(/*webpackChunkName: 'marketimpact-volatility-t-ar'*/\"../translations/ar\"),\r\n    \"de\": () => import(/*webpackChunkName: 'marketimpact-volatility-t-de'*/\"../translations/de\"),\r\n    \"en\": () => import(/*webpackChunkName: 'marketimpact-volatility-t-en'*/\"../translations/en\"),\r\n    \"es\": () => import(/*webpackChunkName: 'marketimpact-volatility-t-es'*/\"../translations/es\"),\r\n    \"fr\": () => import(/*webpackChunkName: 'marketimpact-volatility-t-fr'*/\"../translations/fr\"),\r\n    \"id\": () => import(/*webpackChunkName: 'marketimpact-volatility-t-id'*/\"../translations/id\"),\r\n    \"ru\": () => import(/*webpackChunkName: 'marketimpact-volatility-t-ru'*/\"../translations/ru\"),\r\n    \"tr\": () => import(/*webpackChunkName: 'marketimpact-volatility-t-tr'*/\"../translations/tr\"),\r\n    \"zh-cht\": () => import(/*webpackChunkName: 'marketimpact-volatility-t-zh-cht'*/\"../translations/zh-cht\"),\r\n    \"zh-cn\": () => import(/*webpackChunkName: 'marketimpact-volatility-t-zh-cn'*/\"../translations/zh-cn\"),\r\n    \"vi\": () => import(/*webpackChunkName: 'marketimpact-volatility-t-vi'*/\"../translations/vi\"),\r\n    \"fa\": () => import(/*webpackChunkName: 'marketimpact-volatility-t-fa'*/\"../translations/fa\"),\r\n}\r\n\r\nexport const fetchLocalizations = async (store) => {\r\n    const storeCulture = store.getState().config.culture\r\n    const culture = storeCulture ? storeCulture.toLowerCase() : 'en'\r\n\r\n    const currentCulture = translations.hasOwnProperty(culture) ? culture : 'en'\r\n    const fetchedTranslations = await translations[currentCulture]()\r\n\r\n    return { translations: fetchedTranslations.default }\r\n}\r\n","import { createCustomStore } from '../common/helpers/storeHelpers'\r\nimport { translations } from './actions/localizationActions'\r\n\r\nconst INITIAL_STATE = {\r\n    config: {\r\n        culture: 'en',\r\n        calendarApiUrl: CALENDAR_API_URL,\r\n        timezoneOffset: 0,\r\n        eventId: null,\r\n        allowDownload: true,\r\n        zoomable: true,\r\n        assets: ['fxs-3212164', 'fxs-3212155', 'fxs-3212166', 'fxs-3212322', 'fxs-3212172'],\r\n        take: 60,\r\n        height: 'auto'\r\n    },\r\n    translations: null,\r\n    data: {\r\n        isFetching: true,\r\n        fetchError: false,\r\n        items: null,\r\n        initialDate: null\r\n    },\r\n    assets: { isFetching: false, fetchError: false, items: null },\r\n    selectedAsset: null\r\n}\r\n\r\nconst convertAssets = (assets) => {\r\n    const result = assets.split(',')\r\n    return result\r\n}\r\n\r\nconst convertCulture = input => {\r\n    const result = input && Object.keys(translations).includes(input.toLowerCase()) ?\r\n        input.toLowerCase() : 'en'\r\n    return result\r\n}\r\n\r\nconst settingsMapper = (state) => {\r\n    const resultState = { ...state, selectedPair: null }\r\n\r\n    if (state.config.assets && state.config.assets.length > 0) {\r\n        resultState.selectedAsset = state.config.assets[0]\r\n    }\r\n\r\n    return resultState\r\n}\r\n\r\nconst createStore = (props) => {\r\n    const result = createCustomStore(\r\n        props,\r\n        INITIAL_STATE,\r\n        {\r\n            assets: convertAssets,\r\n            culture: convertCulture\r\n        },\r\n        settingsMapper)\r\n\r\n    return result\r\n}\r\n\r\nexport { createStore }\r\n","import { convertDateToUserFriendly } from \"../../common/helpers/dateHelpers\";\r\nimport { getInitialDate } from \"../../marketimpact-common/helpers/getInitialDate\";\r\n\r\nconst requested = (store) => {\r\n    store.setState({\r\n        data: {\r\n            isFetching: true,\r\n            fetchError: false,\r\n            items: null,\r\n            initialDate: null,\r\n        },\r\n    });\r\n};\r\n\r\nconst received = (store, values) => {\r\n    const {\r\n        config: { zoomable, take },\r\n    } = store.getState();\r\n    const mapped = values.map((x) => {\r\n        let value = { ...x, date: convertDateToUserFriendly(x.dateUtc) };\r\n        return value;\r\n    });\r\n\r\n    const initialDate = zoomable && getInitialDate(take, mapped);\r\n\r\n    store.setState({\r\n        data: {\r\n            isFetching: false,\r\n            fetchError: false,\r\n            items: mapped,\r\n            initialDate: initialDate,\r\n        },\r\n    });\r\n};\r\n\r\nconst error = (store) => {\r\n    store.setState({\r\n        data: {\r\n            isFetching: false,\r\n            fetchError: true,\r\n            items: null,\r\n            initialDate: null,\r\n        },\r\n    });\r\n};\r\n\r\nexport const fetchVolatilityData = (store) => {\r\n    const {\r\n        config: { calendarApiUrl, culture, eventId, zoomable, take },\r\n        selectedAsset,\r\n    } = store.getState();\r\n    if (!selectedAsset) {\r\n        error(store);\r\n        return;\r\n    }\r\n\r\n    requested(store);\r\n\r\n    const url =\r\n        `${calendarApiUrl}/${culture}/api/v1/marketImpact/${eventId}/volatility/${selectedAsset}` +\r\n        (zoomable ? \"\" : `?take=${take}`);\r\n\r\n    fetch(url)\r\n        .then((response) => {\r\n            if (response.ok) {\r\n                response.json().then((values) => received(store, values));\r\n            } else if (response.status === 404) {\r\n                received(store, []);\r\n            } else {\r\n                error(store);\r\n            }\r\n        })\r\n        .catch((err) => {\r\n            console.error(err);\r\n            error(store);\r\n        });\r\n};\r\n\r\nexport const changeSelectedAssetAndFetchData = (store, selectedAsset) => {\r\n    store.setState({ selectedAsset });\r\n    fetchVolatilityData(store);\r\n};\r\n","import { fetchVolatilityData } from './volatilityDataActions'\r\nimport { cacheFetch } from '../../common/helpers/cacheFetchHelpers'\r\n\r\nconst requested = (store) => {\r\n    store.setState({\r\n        assets: { isFetching: true, fetchError: false, items: null }\r\n    })\r\n}\r\n\r\nconst received = (store, values) => {\r\n    store.setState({\r\n        assets: { isFetching: false, fetchError: false, items: values }\r\n    })\r\n    fetchVolatilityData(store)\r\n}\r\n\r\nconst error = (store) => {\r\n    store.setState({\r\n        assets: { isFetching: false, fetchError: true, items: null }\r\n    })\r\n}\r\n\r\nexport const fetchAssetsAndData = (store) => {\r\n    const { config: { calendarApiUrl, culture } } = store.getState()\r\n    requested(store)\r\n\r\n    const url = `${calendarApiUrl}/${culture}/api/v1/marketImpact/assets`\r\n    cacheFetch(url, true, 86400)\r\n        .then(response => {\r\n            if (response.ok) {\r\n                response.json().then(values => received(store, values))\r\n            } else if (response.status === 404) {\r\n                received(store, [])\r\n            } else {\r\n                error(store)\r\n            }\r\n        })\r\n        .catch(err => {\r\n            console.error(err)\r\n            error(store)\r\n        })\r\n}","import { changeSelectedAssetAndFetchData } from './volatilityDataActions'\r\nimport { fetchLocalizations } from './localizationActions'\r\nimport { fetchAssetsAndData } from './assetActions'\r\n\r\nexport default (store) => ({\r\n    fetchLocalizations: (state) => fetchLocalizations(store),\r\n    fetchAssetsAndData: (state) => fetchAssetsAndData(store),\r\n    changeSelectedAssetAndFetchData: (state, assetId) => changeSelectedAssetAndFetchData(store, assetId)\r\n})","const VolatilityRatio15Min = {\r\n    nameKey: 'SeriesName_15MinVolatilityRatio',\r\n    type: 'bar',\r\n    color: '#F4CFA4',\r\n    mapProperty: item => item.volatilityRatio15Min\r\n}\r\n\r\nconst VolatilityRatio4h = {\r\n    nameKey: 'SeriesName_4hVolatilityRatio',\r\n    type: 'bar',\r\n    color: '#BCCDE3',\r\n    mapProperty: item => item.volatilityRatio4h\r\n}\r\n\r\nconst VolatilityRatioMedian15Min = {\r\n    nameKey: 'SeriesName_15MinVolatilityRatioMedian',\r\n    type: 'line',\r\n    color: '#d1495b',\r\n    mapProperty: item => item.volatilityRatioMedian15Min\r\n}\r\n\r\nconst VolatilityRatioMedian4h = {\r\n    nameKey: 'SeriesName_4hVolatilityRatioMedian',\r\n    type: 'line',\r\n    color: '#304c70',\r\n    mapProperty: item => item.volatilityRatioMedian4h\r\n}\r\nexport const seriesConfig = {\r\n    VolatilityRatio15Min,\r\n    VolatilityRatio4h,\r\n    VolatilityRatioMedian15Min,\r\n    VolatilityRatioMedian4h\r\n}\r\n","import { h, Component } from 'preact'\r\nimport Chart from '../../common/components/Chart'\r\nimport { connectWithTranslations } from '../../common/helpers/translationsHelpers'\r\nimport { getChartOptions, seriesConfig } from '../constants'\r\n\r\nclass VolatilityChart extends Component {\r\n    constructor(props) {\r\n        super(props)\r\n        this.state = {\r\n            options: getChartOptions(props.translate, props.config, props.data),\r\n            series: props.data ? this.getSeries(props.data.items) : []\r\n        }\r\n\r\n        this.getSeries = this.getSeries.bind(this)\r\n    }\r\n\r\n    componentWillReceiveProps(nextProps) {\r\n        if ((this.props.data.items !== nextProps.data.items) && nextProps.data.items && nextProps.data.items.length > 0) {\r\n            const data = nextProps.data.items\r\n            const series = this.getSeries(data)\r\n            this.setState({ series })\r\n        }\r\n    }\r\n\r\n\r\n    prepareSeries(data, mapProperty) {\r\n        const result = data.map(item => ([item.date, mapProperty(item)]))\r\n        return result\r\n    }\r\n\r\n    getSeries(data) {\r\n        const series = Object.values(seriesConfig).map(s => ({\r\n            name: this.props.translate(s.nameKey),\r\n            type: s.type,\r\n            data: this.prepareSeries(data, s.mapProperty)\r\n        }))\r\n        return series\r\n    }\r\n\r\n\r\n    render({}, { series, options }) {\r\n        return (\r\n            <Chart options={options} series={series} />\r\n        )\r\n    }\r\n}\r\n\r\nexport default connectWithTranslations('config,data')(VolatilityChart)\r\n","import { seriesConfig } from \"./seriesConfig\";\r\nimport { dateFormatLocalizedSync } from \"../../common/helpers/dateHelpers\";\r\nimport { getNumberDependingOnBars } from \"../../common/helpers/chartHelpers\";\r\n\r\nexport const getChartOptions = (translate, config, data) => ({\r\n    chart: {\r\n        height: config.height || \"auto\",\r\n        toolbar: {\r\n            tools: {\r\n                download: config.allowDownload,\r\n                zoomin: config.zoomable,\r\n                zoomout: config.zoomable,\r\n            },\r\n        },\r\n        zoom: { enabled: config.zoomable, type: \"x\", autoScaleYaxis: true },\r\n        animations: { enabled: false },\r\n        dropShadow: { opacity: 0.35 },\r\n        fontFamily: \"Roboto , Arial, Helvetica, sans-serif\",\r\n    },\r\n    grid: { padding: { left: 0 } },\r\n    xaxis: {\r\n        type: \"datetime\",\r\n        tooltip: { enabled: false },\r\n        axisBorder: {\r\n            show: true,\r\n            color: \"#DDDEDF\",\r\n            height: 1,\r\n        },\r\n        min: data.initialDate\r\n            ? new Date(data.initialDate).getTime()\r\n            : undefined,\r\n    },\r\n    yaxis: {\r\n        style: { cssClass: \"apexcharts-xaxis-title\" },\r\n        axisBorder: {\r\n            show: true,\r\n            color: \"#DDDEDF\",\r\n            width: 1,\r\n            offsetX: translate(\"IsRightToLeftOriented\") ? 30 : 5,\r\n        },\r\n        labels: {\r\n            formatter: (value) => value.toFixed(3),\r\n            offsetX: translate(\"IsRightToLeftOriented\") ? -30 : -15,\r\n        },\r\n    },\r\n    plotOptions: {\r\n        bar: {\r\n            columnWidth: getNumberDependingOnBars(data),\r\n        },\r\n    },\r\n    colors: Object.values(seriesConfig).map((s) => s.color),\r\n    stroke: { width: 1, curve: \"straight\" },\r\n    tooltip: {\r\n        x: { formatter: (value) => dateFormatLocalizedSync(value, \"ll\") },\r\n        y: { formatter: (value) => value && value.toFixed(5) },\r\n    },\r\n    legend: {\r\n        position: \"top\",\r\n        horizontalAlign: \"left\",\r\n        offsetY: -3,\r\n        offsetX: -14,\r\n        itemMargin: { vertical: 5, horizontal: 5 },\r\n        markers: { width: 24 },\r\n        labels: { colors: [\"#8C8D91\"] },\r\n    },\r\n    responsive: [\r\n        {\r\n            breakpoint: 768,\r\n            options: {\r\n                chart: {\r\n                    zoom: {\r\n                        enabled: false,\r\n                    },\r\n                    toolbar: {\r\n                        show: false,\r\n                    },\r\n                },\r\n            },\r\n        },\r\n    ],\r\n});\r\n","import { h, Component } from 'preact'\r\nimport { connect } from 'unistore/preact'\r\nimport Dropdown from '../../common/components/Dropdown'\r\nimport IconCaretDown from '../../common/components/icons/IconCaretDown'\r\nimport IconCaretUp from '../../common/components/icons/IconCaretUp'\r\nimport actions from '../actions'\r\n\r\nclass PairDropdown extends Component {\r\n    constructor(props) {\r\n        super(props)\r\n\r\n        this.onOptionSelected = this.onOptionSelected.bind(this)\r\n    }\r\n\r\n    renderTitle(selectedPair, isOpen) {\r\n        return (\r\n            <span>\r\n                <span class=\"fxs_inner\">\r\n                    { selectedPair.name }\r\n                </span>\r\n                {isOpen ? <IconCaretUp /> : <IconCaretDown />}\r\n            </span>\r\n        )\r\n    }\r\n\r\n    renderOption(option) {\r\n        return (\r\n            <span>\r\n                { option.name }\r\n            </span>\r\n        )\r\n    }\r\n\r\n    onOptionSelected(option) {\r\n        if (this.props.selectedPair.id !== option.id)\r\n            this.props.changeSelectedAssetAndFetchData(option.id)\r\n    }\r\n\r\n    render({ pairs, selectedPair }) {\r\n\r\n        return (\r\n            <Dropdown\r\n                values={pairs}\r\n                selectedValue={selectedPair}\r\n                renderTitle={this.renderTitle}\r\n                renderOption={this.renderOption}\r\n                onOptionSelected={this.onOptionSelected}\r\n                titleClass=\"fxs_btn fxs_btn_line fxs_btn_xsmall\"\r\n            />\r\n        )\r\n    }\r\n}\r\n\r\nexport default connect(null, actions)(PairDropdown)","import { h, Component } from 'preact'\r\nimport { connectWithTranslations } from '../../common/helpers/translationsHelpers'\r\nimport actions from '../actions'\r\nimport VolatilityChart from './VolatilityChart'\r\nimport PairDropdown from './PairDropdown'\r\nimport Spinner from '../../common/components/Spinner'\r\nimport SpinnerIcon from '../../common/components/SpinnerIcon'\r\nimport WidgetError from '../../common/components/WidgetError'\r\nimport NoDataWidgetError from '../../common/components/NoDataWidgetError'\r\nimport { preloadDateFormatTranslation } from '../../common/helpers/dateHelpers'\r\n\r\nclass VolatilityContainer extends Component {\r\n    componentWillMount() {\r\n        this.props.fetchLocalizations()\r\n        this.props.fetchAssetsAndData()\r\n        preloadDateFormatTranslation(this.props.config.culture)\r\n    }\r\n\r\n    componentWillReceiveProps(nextProps) {\r\n        const dataIsAvailable = nextProps.data.items !== null && nextProps.data.items.length > 0\r\n        const shouldShowChart = nextProps.translations && (dataIsAvailable || (this.state.shouldShowChart && nextProps.data.items === null))\r\n\r\n        if (this.state.shouldShowChart !== shouldShowChart)\r\n            this.setState({ shouldShowChart })\r\n    }\r\n\r\n    render({ data, assets, config, selectedAsset, translate, translations }, { shouldShowChart }) {\r\n        const selectedPair = assets.items && assets.items.find(x => x.id === selectedAsset)\r\n        const pairs = config.assets && assets.items && config.assets.map(a => assets.items.find(x => x.id === a))\r\n        return (\r\n            <div class=\"fxs_widget fxs_volatility\" dir={`${!!translate('IsRightToLeftOriented') ? 'rtl' : 'auto'}`} style=\"height:450px\"  >\r\n                {selectedPair && shouldShowChart &&\r\n                    <h2 class=\"fxs_headline_small\">\r\n                        <span>{translate('ChartTitle')} </span>\r\n                        {pairs.length > 1 && <PairDropdown pairs={pairs} selectedPair={selectedPair} />}\r\n                        {data.isFetching && <SpinnerIcon />}\r\n                    </h2>\r\n                }\r\n                { (data.isFetching || assets.isFetching) && !shouldShowChart && !data.fetchError && !assets.fetchError && <Spinner /> }\r\n                { (data.fetchError || assets.fetchError) && <WidgetError message={\r\n                    <p>\r\n                        {this.props.translate('WidgetErrorMessageLine1')}\r\n                        <br />\r\n                        {this.props.translate('WidgetErrorMessageLine2')}\r\n                    </p>\r\n                } />}\r\n                {!data.isFetching && !data.fetchError && !assets.isFetching && !assets.fetchError && assets.items\r\n                    && data.items && data.items.length === 0 && <NoDataWidgetError message={\r\n                        <p>\r\n                            {this.props.translate('NoDataWidgetErrorMessageLine1')}\r\n                        </p>\r\n                    } />}\r\n                {translations && shouldShowChart && !data.fetchError && !assets.fetchError && <VolatilityChart data={data.items} />}\r\n            </div>\r\n        )\r\n    }\r\n}\r\n\r\nexport default connectWithTranslations('data, assets, selectedAsset, config', actions)(VolatilityContainer)\r\n","import { h, Component } from 'preact'\r\nimport { Provider } from 'unistore/preact'\r\nimport { createStore } from './store'\r\nimport VolatilityContainer from './components/VolatilityContainer'\r\n\r\nclass MarketImpactVolatilityWidget extends Component {\r\n    constructor(props) {\r\n        super(props)\r\n        this.store = createStore(props)\r\n    }\r\n\r\n    render(props) {\r\n        return (\r\n            <Provider store={this.store}>\r\n                <VolatilityContainer />\r\n            </Provider>\r\n        )\r\n    }\r\n}\r\n\r\nexport default MarketImpactVolatilityWidget","export const getPostDateString = (date, culture) => {\r\n    if (date === undefined || date === null) {\r\n        return \"\";\r\n    }\r\n\r\n    var locale = culture.split('-')[0];\r\n    var month = new Intl.DateTimeFormat(locale, { month: 'long' }).format(date)\r\n    \r\n    var splittedDate = date.toString().split(\" \");\r\n    var splittedHours = splittedDate[4].split(\":\");\r\n    var eventDate = month + \" \" + splittedDate[2] + \", \" + splittedHours[0] + \":\" + splittedHours[1] + \" GMT\";\r\n\r\n    return eventDate;\r\n};\r\n\r\nexport const getOrdinalDay = (day) => {\r\n    switch (day) {\r\n        case \"one\":\r\n            return \"st\";\r\n        case \"two\":\r\n            return \"nd\";\r\n        case \"few\":\r\n            return \"rd\";\r\n        default:\r\n            return \"th\";\r\n    }\r\n};\r\n","export const getInitialDate = (take, items) => {\r\n    let result = null;\r\n\r\n    if (items.length < 1 || take < 0) return result;\r\n\r\n    let position = take <= items.length ? take : items.length;\r\n    result = items.slice(0, position)[position - 1].date;\r\n\r\n    return result;\r\n};\r\n"],"sourceRoot":""}