1 2<!doctype html> 3<html > 4<head id="ctl00_Head1"><meta charset="utf-8" /><title> 5 Trading Economics - Analytics - Pricing 6</title><meta id="metaDesc" name="description" content="Get Free Economic Indicators Charts, Historical Data and Forecasts for 196 Countries." /><meta id="metaKeyword" name="keywords" content="Economic Indicators, Data, Charts" /><meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1,maximum-scale=1" /><meta name="theme-color" content="#333333" /><link rel="preconnect" href="https://d3e5kp2e91w0k0.cloudfront.net" crossorigin="anonymous" /><link rel="preconnect" href="https://d2n2sd20z6hutz.cloudfront.net" crossorigin="anonymous" /><link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin="anonymous" /> 7<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.2.3/css/bootstrap.min.css" integrity="sha512-SbiR/eusphKoMVVXysTKG/7VseWii+Y3FdHrt0EpKgpToZeemhqHeZeLWLhJutz/2ut2Vw1uQEj2MbRF+TVBUA==" crossorigin="anonymous" referrerpolicy="no-referrer" /> 8<link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-icons/1.10.2/font/bootstrap-icons.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> 9<noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-icons/1.10.2/font/bootstrap-icons.min.css"></noscript> 10 11<link href="https://d2n2sd20z6hutz.cloudfront.net/stylesheet.min.css" rel="stylesheet" /> 12 <link href="https://d2n2sd20z6hutz.cloudfront.net/stylesheet-dark.min.css" rel="stylesheet" /> 13
14<script>(function () { var p = new URLSearchParams(window.location.search); if (!p.has('_auth')) return; p.delete('_auth'); var qs = p.toString(); history.replaceState({}, '', window.location.pathname + (qs ? '?' + qs : '')); window.location.reload(); })();</script>
14
15<script>(function () { function h(n) { return new RegExp('(?:^|;\\s*)' + n.replace(/\./g, '\\.') + '=').test(document.cookie); } if (h('TEIsLoggedIn') || !h('.ASPXAUTH')) return; var e = '; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/', s = ['', '; domain=tradingeconomics.com', '; domain=.tradingeconomics.com'];['.ASPXAUTH', 'TEUsername', 'TENickName', 'TERole', 'TEUserInfo', 'TEName', 'TEUserEmail'].forEach(function (n) { if (!h(n)) return; s.forEach(function (d) { document.cookie = n + '=' + e + d; }); }); document.cookie = 'TEIsLoggedIn=false; domain=.tradingeconomics.com; path=/; SameSite=Lax; Secure; max-age=31536000'; })();</script>
15
16<script type="text/javascript">var TEChartSettings = {}; var TESymbol = ''; var TECountry = ''; var TECategory = ''; var TEFrequency = ''; var TELanguage = ''; var TELastUpdate = '20260831000000'; var TEChartVersion = ''; var symbol = ''; var symbolType = ''; var hasCalendar = false; var isLoggedIn = document.cookie.indexOf('.ASPXAUTH') > -1; var TERole = (document.cookie.match(/(?:^|;\s*)TERole=([^;]*)/) || [])[1] || ''; var TEAlertsName = ''; var TEChartsDatasource = 'https://d3ii0wo49og5mi.cloudfront.net'; var IsMobile = false; var TEChartsMeta = ''; var TEForecast = []; var TEAuthorization = ''; var TESecurify = ''; var TESecurifyUrl = ''; var TEType = ''; var TEChartUrl = '/analytics/pricing.aspx?source=menu'; var TEComparable = 0; var isAlertsLoaded = false; var IsDarkMode = (function () { try { return localStorage.getItem('IsDarkMode') === 'true'; } catch (e) { return false; } })(); var isPakoLoaded = false; var TEChartsToken = '20260324:loboantunes'; var TEObfuscationkey = 'tradingeconomics-charts-core-api-key'; var isCopyright = false;var TEStreamId= '';</script>
16
17<script type="text/javascript">var DEBUG = false; if (window.location.host.indexOf('localhost') > -1) DEBUG = true; else if (window.location.href.indexOf('debug') > -1) DEBUG = true; if (!DEBUG) { if (!window.console) window.console = {}; var methods = ["log", "debug", "info"]; for (var i = 0; i < methods.length; i++) { console[methods[i]] = function () { }; } }</script>
17
18<script>window.googletag = window.googletag || { cmd: [] };</script>
18 19<link rel="icon" href="https://d3e5kp2e91w0k0.cloudfront.net/favicon.svg" type="image/svg+xml" /><link rel="canonical" href="https://tradingeconomics.com/analytics/pricing.aspx?source=menu" /></head> 20<body> 21
21<script>(function(){var c=localStorage.getItem('IsDarkMode')==='true';if(c)document.body.classList.add('dark-theme');window.IsDarkMode=c;})();</script>
21 22 <form method="post" action="./pricing.aspx?source=menu" id="aspnetForm"> 23<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="Ob0b+MUu41Y+hcCfzoBsH/q+s0sghSB06tvR/lail8h8sDcZIEeG40DcnFWAP/xrf3GB+wBeWACuWtUpFB6r3SH0RzA=" /> 24 25<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="70BF057E" /> 26 27 <nav id="ctl00_NavigationUC1_ctl00_menu" class="navbar navbar-dark fixed-top" role="navigation"> 28 <div class="container"> 29 30 <div class="navbar-header navbar-header-search" id="searchMobileHeader"> 31 <div class="d-flex justify-content-between"> 32 <a class="navbar-brand" style="width: 100%" role="form"> 33 <input type="text" placeholder="Search" 34 id="thisIstheTinySearchBoxIdTag" 35 autocomplete="off" 36 class="nav-search-input-class navbar-search-2" /> 37 </a> 38 <ul id="thisIstheTinySearchResultsIdTag" class="dropdown-menu navbar-search-1"> 39 <li> 40 <div class="container-fluid"> 41 <div id="dpSearch-resultCnt-tiny" class="dpTaResult"> 42 </div> 43 </div> 44 </li> 45 </ul> 46 <div class="navbar-mobile-close-search"> 47 <a noref class="navbar-mobile-item" id="thisIsTheTinyRemoveId"><i class="bi bi-x-lg"></i></a> 48 </div> 49 </div> 50 </div> 51 52 <div class="navbar-header navbar-collapse float-end" id="mainHeader"> 53 <div class="d-flex"> 54 <button type="button" class="navbar-toggler" data-bs-toggle="offcanvas" data-bs-target="#tesidemenu" aria-label="TradingEconomcis Menu"> 55 <span class="navbar-toggler-icon"></span> 56 </button> 57 <div class="logo-banner d-flex justify-content-between float-right"> 58 <a class="navbar-brand" href="/"> 59 60<svg width="129" height="35" version="1.1" viewBox="0 0 34.131 9.2604" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" aria-label = "Trading Economics logo"> 61 <g fill="#858585" stroke="#858585" stroke-width=".1" ><path d="m1.3315 8.5517v-3.7879h2.8086v0.64079h-2.0438v0.83974h1.9017v0.6382h-1.9017v1.0309h2.1162v0.6382z"/><path d="m7.2846 7.1591 0.74156 0.23513q-0.17053 0.62012-0.56844 0.92242-0.39532 0.29972-1.0051 0.29972-0.75448 0-1.2402-0.51418-0.48576-0.51676-0.48576-1.4108 0-0.94568 0.48834-1.4676 0.48834-0.52452 1.2842-0.52452 0.69505 0 1.1291 0.41083 0.25838 0.24288 0.38757 0.69763l-0.75706 0.18087q-0.067179-0.29456-0.28164-0.46509-0.21187-0.17053-0.51676-0.17053-0.42116 0-0.68471 0.30231-0.26097 0.30231-0.26097 0.97927 0 0.7183 0.25838 1.0232 0.25838 0.30489 0.67179 0.30489 0.30489 0 0.52452-0.19379 0.21962-0.19379 0.31523-0.60978z"/><path d="m8.5275 6.681q0-0.57878 0.17312-0.97152 0.12919-0.28939 0.3514-0.51935 0.22479-0.22996 0.49093-0.34106 0.35398-0.14986 0.81649-0.14986 0.83716 0 1.3384 0.51935 0.50385 0.51935 0.50385 1.4444 0 0.91726-0.49868 1.4366-0.49868 0.51676-1.3333 0.51676-0.84491 0-1.3436-0.51418-0.49868-0.51676-0.49868-1.4211zm0.78807-0.025838q0 0.64337 0.29714 0.97669 0.29714 0.33073 0.75448 0.33073 0.45734 0 0.74931-0.32815 0.29456-0.33073 0.29456-0.9896 0-0.65112-0.2868-0.97152-0.28422-0.32039-0.75706-0.32039-0.47284 0-0.76223 0.32556-0.28939 0.32298-0.28939 0.97669z"/><path d="m12.806 8.5517v-3.7879h0.74414l1.5503 2.5296v-2.5296h0.71055v3.7879h-0.7674l-1.527-2.4701v2.4701z"/><path d="m16.465 6.681q0-0.57878 0.17312-0.97152 0.12919-0.28939 0.3514-0.51935 0.22479-0.22996 0.49093-0.34106 0.35398-0.14986 0.81649-0.14986 0.83716 0 1.3384 0.51935 0.50384 0.51935 0.50384 1.4444 0 0.91726-0.49868 1.4366-0.49868 0.51676-1.3333 0.51676-0.84491 0-1.3436-0.51418-0.49868-0.51676-0.49868-1.4211zm0.78807-0.025838q0 0.64337 0.29714 0.97669 0.29714 0.33073 0.75448 0.33073t0.74931-0.32815q0.29456-0.33073 0.29456-0.9896 0-0.65112-0.2868-0.97152-0.28422-0.32039-0.75706-0.32039t-0.76223 0.32556q-0.28939 0.32298-0.28939 0.97669z"/><path d="m20.726 8.5517v-3.7879h1.1446l0.6873 2.5838 0.67955-2.5838h1.1472v3.7879h-0.71055v-2.9817l-0.75189 2.9817h-0.73639l-0.74931-2.9817v2.9817z"/><path d="m25.121 8.5517v-3.7879h0.76481v3.7879z"/><path d="m29.038 7.1591 0.74156 0.23513q-0.17053 0.62012-0.56844 0.92242-0.39532 0.29972-1.0051 0.29972-0.75448 0-1.2402-0.51418-0.48576-0.51676-0.48576-1.4108 0-0.94568 0.48834-1.4676 0.48834-0.52452 1.2842-0.52452 0.69505 0 1.1291 0.41083 0.25838 0.24288 0.38757 0.69763l-0.75706 0.18087q
61-0.06718-0.29456-0.28164-0.46509-0.21187-0.17053-0.51676-0.17053-0.42116 0-0.68471 0.30231-0.26097 0.30231-0.26097 0.97927 0 0.7183 0.25838 1.0232 0.25838 0.30489 0.67179 0.30489 0.30489 0 0.52452-0.19379 0.21962-0.19379 0.31523-0.60978z"/><path d="m30.242 7.3193 0.74414-0.072347q0.06718 0.37465 0.2713 0.55035 0.2067 0.1757 0.55552 0.1757 0.36949 0 0.55552-0.15503 0.18862-0.15761 0.18862-0.3669 0-0.13436-0.0801-0.22738-0.077514-0.095602-0.27388-0.16536-0.13436-0.046509-0.61237-0.16536-0.61495-0.15245-0.863-0.37465-0.34882-0.31264-0.34882-0.76223 0-0.28939 0.16278-0.54002 0.16536-0.25321 0.47284-0.38499 0.31006-0.13178 0.74672-0.13178 0.71314 0 1.0723 0.31264 0.36174 0.31264 0.37982 0.83457l-0.76481 0.03359q-0.04909-0.29197-0.21187-0.41858-0.1602-0.12919-0.48317-0.12919-0.33331 0-0.52193 0.13694-0.12144 0.08785-0.12144 0.23513 0 0.13436 0.11369 0.22996 0.14469 0.12144 0.7028 0.25321t0.82424 0.27389q0.26872 0.13953 0.41858 0.38499 0.15244 0.24288 0.15244 0.60203 0 0.32556-0.18087 0.60978-0.18087 0.28422-0.5116 0.42375-0.33073 0.13694-0.82424 0.13694-0.7183 0-1.1033-0.33073-0.38499-0.33331-0.45992-0.96893z"/></g> 62 <g fill="#ddd" stroke="#ddd" stroke-width=".1" ><path d="m1.4629 4.2437v-2.8324h-1.0116v-0.57671h2.7091v0.57671h-1.0092v2.8324z"/><path d="m3.607 4.2437v-3.4091h1.4487q0.54648 0 0.79297 0.093018 0.24882 0.090692 0.39765 0.32556 0.14883 0.23487 0.14883 0.53718 0 0.3837-0.22557 0.63484-0.22557 0.24882-0.67438 0.31393 0.22324 0.13022 0.36742 0.28603 0.1465 0.1558 0.393 0.55345l0.41625 0.66508h-0.82321l-0.49764-0.74182q-0.2651-0.39765-0.36277-0.49997-0.097668-0.10464-0.20696-0.14185-0.1093-0.039532-0.34649-0.039532h-0.13953v1.4232zm0.68833-1.9673h0.50927q0.49532 0 0.61857-0.041858t0.19301-0.14418q0.069763-0.10232 0.069763-0.2558 0-0.17208-0.093018-0.27673-0.090692-0.10697-0.25812-0.13488-0.083716-0.011627-0.50229-0.011627h-0.53718z"/><path d="m10.118 4.2437h-0.74879l-0.29766-0.77437h-1.3627l-0.28138 0.77437h-0.73019l1.3278-3.4091h0.72786zm-1.2674-1.3488-0.46974-1.265-0.46044 1.265z"/><path d="m10.481 0.8346h1.2581q0.42556 0 0.6488 0.065112 0.29998 0.088367 0.51392 0.31393 0.21394 0.22557 0.32556 0.55345 0.11162 0.32556 0.11162 0.8046 0 0.4209-0.10464 0.72554-0.1279 0.37207-0.36509 0.60229-0.17906 0.17441-0.48369 0.27208-0.22789 0.072089-0.60926 0.072089h-1.2953zm0.68833 0.57671v2.258h0.51392q0.28835 0 0.41625-0.032556 0.16743-0.041858 0.27673-0.14185 0.11162-0.099994 0.18138-0.32789 0.06976-0.23022 0.06976-0.62554t-0.06976-0.60694-0.19534-0.33021q-0.12557-0.1186-0.31858-0.16046-0.14418-0.032556-0.56508-0.032556z"/><path d="m13.902 4.2437v-3.4091h0.68833v3.4091z"/><path d="m15.253 4.2437v-3.4091h0.66973l1.3953 2.2766v-2.2766h0.6395v3.4091h-0.69066l-1.3743-2.2231v2.2231z"/><path d="m20.271 2.9903v-0.57438h1.4836v1.3581q-0.21627 0.20929-0.62787 0.36974-0.40928 0.15813-0.83018 0.15813-0.53485 0-0.9325-0.22324-0.39765-0.22557-0.59764-0.64182-0.19999-0.41858-0.19999-0.90925 0-0.53253 0.22324-0.94645 0.22324-0.41393 0.65345-0.63484 0.32789-0.16976 0.81623-0.16976 0.63484 0 0.99064 0.26743 0.35812 0.2651 0.46044 0.73484l-0.68368 0.1279q-0.072088-0.25115-0.27208-0.39532-0.19766-0.1465-0.49532-0.1465-0.45114 0-0.71856 0.28603-0.2651 0.28603-0.2651 0.84879 0 0.60694 0.26975 0.91157 0.26975 0.30231 0.70693 0.30231 0.21627 0 0.43253-0.083716 0.21859-0.086041 0.3744-0.20696v-0.43253z"/></g> 63</svg> 64 </a> 65 <div class="d-flex align-items-center nav-options"> 66 67 <div class="d-flex align-items-center nav-entry-link-group"> 68 <a class="nav-entry-link d-none d-md-block" href="/calendar"><span>Calendar</span></a> 69 <a class="nav-entry-link d-none d-md-block" href="/stream"><span>News</span></a> 70 <div class="dropdown"> 71 <a href="#" class="dropdown d-flex nav-entry-link d-none d-md-block" data-bs-toggle="dropdown"><span>Markets</span></a> 72 <ul class="dropdown-menu nav-dropdown-menu"> 73 <li class='dropdown-item nav-dropdown-item'><a href="/commodities">Commodities</a></li> 74 <li class='dropdown-item nav-dropdown-item'><a href="/stocks">Indexes</a></li> 75 <li class='dropdown-item nav-dropdown-item'><a href="/shares">Shares</a></li> 76 <li class='dropdown-item nav-dropdown-item'><a href="/currencies">Currencies</a></li> 77 <li class='dropdown-item nav-dropdown-item'><a href="/crypto">Crypto</a></li> 78 <li class='dropdown-item nav-dropdown-item'><a href="/bonds">Bonds</a></li> 79 <li class='dropdown-item nav-dropdown-item'><a href="/earnings">Earnings</a></li> 80 </ul> 81 </div> 82 83 <a class="nav-entry-link d-none d-lg-block" href="/indicators"><span>Indicators</span></a> 84 <a class="nav-entry-link d-none d-xl-block" href="/countries"><span >Countries</span></a> 85 <div class="dropdown"> 86 <a href="#" class="dropdown d-flex nav-entry-link d-none d-md-block" data-bs-toggle="dropdown"><span>Forecasts</span></a> 87 <ul class="dropdown-menu nav-dropdown-menu"> 88 <li class='dropdown-item nav-dropdown-item'><a href="/forecast/commodity">Commodities</a></li> 89 <li class='dropdown-item nav-dropdown-item'><a href="/forecast/stock-market">Indexes</a></li> 90 <li class='dropdown-item nav-dropdown-item'><a href="/forecast/currency">Currencies</a></li> 91 <li class='dropdown-item nav-dropdown-item'><a href="/forecast/crypto">Crypto</a></li> 92 <li class='dropdown-item nav-dropdown-item'><a href="/forecast/government-bond-10y">Bonds</a></li> 93 <li class='dropdown-item nav-dropdown-item'><a href="/forecasts">Countries</a></li> 94 <li class='dropdown-item nav-dropdown-item'><a href="/indicators?g=forecast">Indicators</a></li> 95 </ul> 96 </div> 97 </div> 98 99 <div class="search-li d-none d-lg-block"> 100 <a noref id="thisIsTheSearchPlaceholderId" class="nav-searchbox-class stickydropdown d-block" title="Search"> 101 <div id="thisIsTheSearchBoxWrapperId" class="typeahead-searchbox-glyphicon-wrapper d-flex "> 102 <input type="text" placeholder="Search" aria-label="Search" id="thisIstheSearchBoxIdTag" autocomplete="off" 103 class="d-none d-md-block nav-search-input-class"> 104 </div> 105 </a> 106 107 <ul id="thisIstheSearchResultsIdTag" class="dropdown-menu nav-dropdown-menu typeahead-wrapper"> 108 <li> 109 <div class="container"> 110 <div id="dpSearch-resultCnt" class="dpTaResult"> 111 </div> 112 </div> 113 </li> 114 </ul> 115 </div> 116 117 <div> 118 <a class="d-block d-lg-none navbar-mobile-item" id="thisIsTheTinyGlyphiconId"><i class="bi bi-search me-2"></i></a> 119 </div> 120 121 <div class="userOptionsMenu"> 122 <a title="User Menu" data-bs-toggle="offcanvas" href="#offcanvasGuest" role="button" aria-controls="offcanvasGuest">
122<i class="bi bi-person"></i></a> 123 </div> 124 125 </div> 126 </div> 127 </div> 128 </div> 129 130 131 <div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasGuest" aria-labelledby="offcanvasGuestLabel"> 132 <div class="offcanvas-header"> 133 <h5 class="offcanvas-title" id="offcanvasGuestLabel"><b>Members</b></h5> 134 <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button> 135 </div> 136 <div class="offcanvas-body user-offcanvas-body"> 137 <div class="list-group list-group-user"> 138 <a href="/analytics/pricing.aspx?source=menu " class="user-item list-group-item"> 139 <b class="list-group-item-heading"><i class="bi bi-save2-fill me-2"></i> DATA PLANS</b><br> 140 <span class="list-group-item-text">Download historical data for 20 million indicators using your browser.</span> 141 </a> 142 <div class="user-item list-group-item"> 143 144 <div class="navbar-user-link"> 145 <a href="/analytics/pricing.aspx?source=menu" class="navbar-te-link mx-1">Subscription Plans</a> 146 | 147 <a href="/analytics/features.aspx?source=menu" class="navbar-te-link mx-1">Features</a> 148 </div> 149 150 </div> 151 </div> 152 <div class="list-group list-group-user"> 153 154 <a href="/api/" class="user-item list-group-item"> 155 <b class="list-group-item-heading"><i class="bi bi-phone mx-1 me-2"></i>API GATEWAY</b><br> 156 <span class="list-group-item-text mx-1">Direct access to our data from your apps using any programing language.</span> 157 </a> 158 <div class="user-item list-group-item"> 159 <div> 160 <a href="/api/?source=menu" class="navbar-te-link mx-1">Features</a> | 161 <a href="https://docs.tradingeconomics.com/" target="_blank" class="navbar-te-link mx-1">Docs</a> | 162 <a href="https://developer.tradingeconomics.com/" class="navbar-te-link mx-1">Developer</a> 163 </div> 164 </div> 165 </div> 166 167 168 <div class="list-group list-group-user"> 169 170 171 <a class="user-item list-group-item" href="https://sso.tradingeconomics.com/sso/login?returnurl=https://tradingeconomics.com/analytics/pricing.aspx?source=menu"><i class="bi bi-person-fill"></i> Already a user? <b>Login</b></a> 172 173 </div> 174 175<style> 176 .form-switch { 177 width: 3.5em !important; 178 height: 2em !important 179 } 180 .bi-sun-fill { 181 font-size: 12px; 182 color: #ddd !important; 183 } 184 .bi-moon-fill { 185 font-size: 10px; 186 color: #333 !important; 187 } 188 .darkmode-toggle-container { 189 width: auto; 190 padding: 0px; 191 margin-left: 0px; 192 margin-top: 0px; 193 border: none; 194 } 195 .form-check-div-sun { 196 width: 20px; 197 margin-bottom: 3px; 198 margin-left: -54px; 199 position: relative 200 } 201 .form-check-div-moon { 202 width: 20px; 203 margin-bottom: 3px; 204 margin-left: 3px; 205 position: relative 206 } 207 .dk-switch-right-menu{ 208 padding-left:10px; 209 } 210</style> 211<div class="list-group list-group-user dk-switch-right-menu"> 212 <div class="d-flex align-items-center darkmode-toggle-container"> 213 <div class="form-check form-switch darkmode-form-switch user-item"> 214 <input class="form-check-input p-1" type="checkbox" role="button" id="flexSwitchCheckChecked"> 215 </div> 216 <div class="form-check-div-sun"> 217 <label class="form-check-label form-check-label-sun p-1 d-inline" for="flexSwitchCheckChecked"><i class="bi bi-sun-fill"></i></label> 218 </div> 219 <div class="form-check-div-moon"> 220 <label class="form-check-label form-check-label-moon p-1 d-inline" for="flexSwitchCheckChecked"><i class="bi bi-moon-fill"></i></label> 221 </div> 222</div> 223</div> 224 225
226<script> 227 function SetTheme(isDark) { 228 console.log('Changing theme', isDark); 229 if (IsDarkMode != isDark) { 230 IsDarkMode = isDark; 231 document.body.classList.toggle("dark-theme"); 232 localStorage.setItem('IsDarkMode', IsDarkMode); 233 234 IsDarkMode ? ga('event', 'te_darkmode_on') : ga('event', 'te_darkmode_off'); 235 window.location.reload(); 236 } 237 } 238 document.addEventListener('DOMContentLoaded', function () { 239 let checkbox = document.getElementById("flexSwitchCheckChecked"); 240 let sundiv = document.getElementsByClassName("form-check-label-sun")[0]; 241 let moondiv = document.getElementsByClassName("form-check-label-moon")[0]; 242 243 if (IsDarkMode) { 244 sundiv.classList.add("d-none"); 245 moondiv.classList.remove("d-none"); 246 } else { 247 moondiv.classList.add("d-none"); 248 sundiv.classList.remove("d-none"); 249 } 250 checkbox.checked = IsDarkMode; 251 }); 252 253 254 255 document.getElementById("flexSwitchCheckChecked").addEventListener("change", function () { 256 SetTheme(!IsDarkMode) 257 }); 258 259</script>
259 260 </div> 261 </div> 262 263 264 <div class="offcanvas offcanvas-start" tabindex="-1" id="tesidemenu" aria-labelledby="tesidemenuoptions"> 265 <div class="offcanvas-header"> 266 <h5 class="offcanvas-title" id="offcanvasWithBothOptionsLabel"></h5> 267 <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button> 268 </div> 269 <div class="offcanvas-body"> 270 271 <div class="row navbar-nav-scroll" style="--bs-scroll-height: 95vh;"> 272 <div class="accordion" id="accordionNavbar"> 273 <div class="accordion-item"> 274 <div class="accordion-header menu-main-option"><a class="nav-link accordion-button navmenu-mobile-item" href="/calendar" target="_self"><i class="bi bi-calendar3 me-2"></i>Calendar</a></div> 275 </div> 276 <div class="accordion-item"> 277 <div class="accordion-header menu-main-option"><a class="nav-link accordion-button navmenu-mobile-item" href="/stream" target="_self"><i class="bi bi-layout-text-sidebar me-2"></i>News</a></div> 278 </div> 279 <div class="accordion-item"> 280 <div class="accordion-header menu-main-option d-flex align-items-center"> 281 <button class="accordion-button navmenu-mobile-item collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseMarkets" aria-expanded="false" aria-controls="collapseTwo"> 282 <i class="bi bi-arrow-down-up me-2"></i>Markets 283 <i class="bi bi-caret-up-fill ms-auto caret-toggle"></i> 284 </button> 285 286 </div> 287 <div id="collapseMarkets" class="accordion-collapse collapse " data-bs-parent="#accordionNavbar"> 288 <div class="accordion-body mobile-accordion-body"> 289 <ul class="nav navbar-nav navbarMobile"> 290 <li><a class="navmobile-link nav-link" href="/commodities" target="_self">Commodities</a></li> 291 <li><a class="navmobile-link nav-link" href="/stocks" target="_self">Indexes</a></li> 292 <li><a class="navmobile-link nav-link" href="/shares" target="_self">Shares</a></li> 293 <li><a class="navmobile-link nav-link" href="/currencies" target="_self">Currencies</a></li> 294 <li><a class="navmobile-link nav-link" href="/crypto" target="_self">Crypto</a></li> 295 <li><a class="navmobile-link nav-link" href="/bonds" target="_self">Bonds</a></li> 296 <li><a class="navmobile-link nav-link" href="/earnings" target="_self">Earnings</a></li> 297 <li><a class="navmobile-link nav-link" href="/holidays" target="_self">Holidays</a></li> 298 </ul> 299 </div> 300 </div> 301 </div> 302 303 <div class="accordion-item"> 304 <div class="accordion-header menu-main-option d-flex align-items-center"> 305 <button class="accordion-button navmenu-mobile-item collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseCountries" aria-expanded="false" aria-controls="collapseTwo"> 306 <i class="bi bi-globe me-2"></i>Countries<i class="bi bi-caret-down-fill ms-auto caret-toggle"></i> 307 </button> 308 </div> 309 <div id="collapseCountries" class="accordion-collapse collapse " data-bs-parent="#accordionNavbar"> 310 <div class="accordion-body mobile-accordion-body"> 311 <ul class="nav navbar-nav navbarMobile"> 312 <li><a class="navmobile-link nav-link" href="/united-states/indicators" target="_self">United States</a></li> 313 <li><a class="navmobile-link nav-link" href="/united-kingdom/indicators" target="_self">United Kingdom</a></li> 314 <li><a class="navmobile-link nav-link" href="/euro-area/indicators" target="_self">Euro Area</a></li> 315 <li><a class="navmobile-link nav-link" href="/australia/indicators" target="_self">Australia</a></li> 316 <li><a class="navmobile-link nav-link" href="/canada/indicators" target="_self">Canada</a></li> 317 <li><a class="navmobile-link nav-link" href="/japan/indicators" target="_self">Japan</a></li> 318 <li><a class="navmobile-link nav-link" href="/china/indicators" target="_self">China</a></li> 319 <li><a class="navmobile-link nav-link" href="/brazil/indicators" target="_self">Brazil</a></li> 320 <li><a class="navmobile-link nav-link" href="/russia/indicators" target="_self">Russia</a></li> 321 <li><a class="navmobile-link nav-link" href="/india/indicators" target="_self">India</a></li> 322 <li><a class='navmobile-link nav-link' href="/countries" target="_self"><i class="bi bi-plus-square me-2"></i>More Countries</a></li> 323 </ul> 324 </div> 325 </div> 326 </div> 327 328 329 <div class="accordion-item"> 330 <div class="accordion-header menu-main-option d-flex align-items-center"> 331 <button class="accordion-button
331navmenu-mobile-item collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseIndicators" aria-expanded="false" aria-controls="collapseTwo"> 332 <i class="bi bi-bar-chart-fill me-2"></i>Indicators 333 <i class="bi bi-caret-down-fill ms-auto caret-toggle"></i> 334 </button> 335 336 </div> 337 <div id="collapseIndicators" class="accordion-collapse collapse show" data-bs-parent="#accordionNavbar"> 338 <div class="accordion-body mobile-accordion-body"> 339 <ul class="nav navbar-nav navbarMobile"> 340 <li><a class="navmobile-link nav-link" href="/country-list/interest-rate" target="_self">Interest Rate</a></li> 341 <li><a class="navmobile-link nav-link" href="/country-list/inflation-rate" target="_self">Inflation Rate</a></li> 342 <li><a class="navmobile-link nav-link" href="/country-list/unemployment-rate" target="_self">Unemployment Rate</a></li> 343 <li><a class="navmobile-link nav-link" href="/country-list/gdp-growth-rate" target="_self">GDP Growth</a></li> 344 <li><a class="navmobile-link nav-link" href="/country-list/gdp-per-capita" target="_self">GDP per Capita</a></li> 345 <li><a class="navmobile-link nav-link" href="/country-list/current-account-to-gdp" target="_self">Current Account</a></li> 346 <li><a class="navmobile-link nav-link" href="/country-list/gold-reserves" target="_self">Gold Reserves</a></li> 347 <li><a class="navmobile-link nav-link" href="/country-list/government-debt-to-gdp" target="_self">Government Debt</a></li> 348 <li><a class="navmobile-link nav-link" href="/country-list/crude-oil-production" target="_self">Crude Oil Production</a></li> 349 <li><a class="navmobile-link nav-link" href="/country-list/gasoline-prices" target="_self">Gasoline Prices</a></li> 350 <li><a class="navmobile-link nav-link" href="/country-list/rating" target="_self">Credit Rating</a></li> 351 <li><a class='navmobile-link nav-link' href="/indicators" target="_self"><i class="bi bi-plus-square me-2"></i>More Indicators</a></li> 352 </ul> 353 </div> 354 </div> 355 </div> 356 357 358 <div class="accordion-item"> 359 <div class="accordion-header menu-main-option d-flex align-items-center"> 360 <button class="accordion-button navmenu-mobile-item collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseForecasts" aria-expanded="false" aria-controls="collapseTwo"> 361 <i class="bi bi-graph-down-arrow me-2"></i>Forecasts 362 <i class="bi bi-caret-down-fill ms-auto caret-toggle"></i> 363 </button> 364 365 </div> 366 <div id="collapseForecasts" class="accordion-collapse collapse " data-bs-parent="#accordionNavbar"> 367 <div class="accordion-body mobile-accordion-body"> 368 <ul class="nav navbar-nav navbarMobile"> 369 <li class="d-block d-sm-none"><a class="navmobile-link nav-link" href="/indicators?g=forecast" target="_self">Markets & Indicators</a></li> 370 <li class="d-block d-sm-none"><a class="navmobile-link nav-link" href="/forecasts" target="_self">Countries</a></li> 371 <li class="d-none d-sm-block"><a class='navmobile-link nav-link' href="/forecasts">Countries</a></li> 372 <li class="d-none d-sm-block"><a class='navmobile-link nav-link' href="/indicators?g=forecast">Indicators</a></li> 373 <li class="d-none d-sm-block"><a class='navmobile-link nav-link' href="/forecast/commodity">Commodities</a></li> 374 <li class="d-none d-sm-block"><a class='navmobile-link nav-link' href="/forecast/stock-market">Indexes</a></li> 375 <li class="d-none d-sm-block"><a class='navmobile-link nav-link' href="/forecast/currency">Currencies</a></li> 376 <li class="d-none d-sm-block"><a class='navmobile-link nav-link' href="/forecast/crypto">Crypto</a></li> 377 <li class="d-none d-sm-block"><a class='navmobile-link nav-link' href="/forecast/government-bond-10y">Bonds</a></li> 378 </ul> 379 </div> 380 </div> 381 </div> 382 383 384 <div class="accordion-item"> 385 <div class="accordion-header menu-main-option d-flex align-items-center"> 386 <button class="accordion-button
386navmenu-mobile-item collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseSolutions" aria-expanded="false" aria-controls="collapseTwo"> 387 <i class="bi bi-code-square me-2"></i>Solutions 388 <i class="bi bi-caret-down-fill ms-auto caret-toggle"></i> 389 </button> 390 391 </div> 392 <div id="collapseSolutions" class="accordion-collapse collapse" data-bs-parent="#accordionNavbar"> 393 <div class="accordion-body mobile-accordion-body"> 394 <ul class="nav navbar-nav navbarMobile"> 395 <li><a class="navmobile-link nav-link" href="/analytics/features.aspx" title="Data Subscriptions">Data Subscriptions</a></li> 396 <li><a class="navmobile-link nav-link" href="/api/" title="API Access">API Access</a></li> 397 <li><a class="navmobile-link nav-link" href="/analytics/pricing.aspx?source=nav" title="Pricing">Pricing</a></li> 398 </ul> 399 </div> 400 </div> 401 </div> 402 403 <div class="accordion-item"> 404 <div class="accordion-header menu-main-option d-flex align-items-center"> 405 <button class="accordion-button navmenu-mobile-item collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseApps" aria-expanded="false" aria-controls="collapseTwo"> 406 <i class="bi bi-phone me-2"></i>Apps 407 <i class="bi bi-caret-down-fill ms-auto caret-toggle"></i> 408 </button> 409 410 </div> 411 412 <div id="collapseApps" class="accordion-collapse collapse" data-bs-parent="#accordionNavbar"> 413 <div class="accordion-body mobile-accordion-body"> 414 <ul class="nav navbar-nav navbarMobile"> 415 <li><a class="navmobile-link nav-link" href="https://itunes.apple.com/us/app/trading-economics/id1142178921?mt=8" target="_self">App Store</a></li> 416 <li><a class="navmobile-link nav-link" href="https://play.google.com/store/apps/details?id=com.tradingeconomics.calendar" target="_self">Google Play</a></li> 417 <li><a class="navmobile-link nav-link" href="https://www.twitter.com/teconomics" target="_self">Twitter</a></li> 418 </ul> 419 </div> 420 </div> 421 </div> 422 423 <div class="accordion-item"> 424 <div class="accordion-header menu-main-option d-flex align-items-center"> 425 <button class="accordion-button navmenu-mobile-item collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseMore" aria-expanded="false" aria-controls="collapseTwo"> 426 <i class="bi bi-question-circle me-2"></i>About 427 <i class="bi bi-caret-down-fill ms-auto caret-toggle"></i> 428 </button> 429 430 </div> 431 432 <div id="collapseMore" class="accordion-collapse collapse" data-bs-parent="#accordionNavbar"> 433 <div class="accordion-body mobile-accordion-body"> 434 <ul class="nav navbar-nav navbarMobile"> 435 <li><a class="navmobile-link nav-link" href="/api/customers.aspx" target="_self">Customers</a></li> 436 <li><a class="navmobile-link nav-link" href="/investors.aspx" target="_self">Investors</a></li> 437 <li><a class="navmobile-link nav-link" href="/careers.aspx" target="_self">Careers</a></li> 438 <li><a class="navmobile-link nav-link" href="/about-te.aspx" target="_self">About us</a></li> 439 <li><a class="navmobile-link nav-link" href="/contact.aspx" target="_self">Contact</a></li> 440 </ul> 441 </div> 442 </div> 443 </div> 444 445 446 <div class="accordion-item d-block d-md-none" style="border: none"> 447 <div class="accordion-header menu-main-option accordion-last-item" style="padding: 30px 0px !important;"></div> 448 </div> 449 </div> 450 451 </div> 452 </div> 453 </div> 454 </div> 455</nav> 456
457<script> 458 document.addEventListener('DOMContentLoaded', function () { 459 let accordionHeaders = document.querySelectorAll('.menu-main-option'); 460 461 accordionHeaders.forEach(function (header) { 462 header.addEventListener('click', function () { 463 let caretIcon = header.querySelector('.caret-toggle'); 464 465 let allCaretIcons = document.querySelectorAll('.menu-main-option .caret-toggle'); 466 467 allCaretIcons.forEach(function (icon) { 468 if (icon !== caretIcon) { 469 icon.classList.remove('bi-caret-up-fill'); 470 icon.classList.add('bi-caret-down-fill'); 471 } 472 }); 473 caretIcon.classList.toggle('bi-caret-down-fill'); 474 caretIcon.classList.toggle('bi-caret-up-fill'); 475 }); 476 }); 477 }); 478 479 480 481 function handleClientLogout(e) { 482 e.preventDefault(); 483 try { 484 var cookiesToDelete = ['aspxauth']; 485 document.cookie.split(';').forEach(function (c) { 486 var name = c.split('=')[0].trim(); 487 if (cookiesToDelete.some(function (entry) { return name.toLowerCase().includes(entry); }) || name.startsWith('TE')) { 488 document.cookie = name + '=;expires=' + new Date(0).toUTCString() + ';path=/'; 489 } 490 }); 491 492 var voteInfo = {}; 493 494 Object.keys(localStorage).forEach(function (key) { 495 if (key.startsWith('voteInfo-')) { 496 voteInfo[key] = localStorage.getItem(key); 497 } 498 }); 499 500 localStorage.clear(); 501 502 Object.keys(voteInfo).forEach(function (key) { 503 localStorage.setItem(key, voteInfo[key]); 504 }); 505 506 sessionStorage.clear(); 507 window.location.href = e.currentTarget.href; 508 } catch (err) { 509 console.error('JS Logout failed:', err); 510 window.location.href = e.currentTarget.href; 511 } 512 } 513</script>
513 514 515 516<style>.page-title{color:#fff;white-space:nowrap}body.dark-theme .page-title{color:#fff;font-weight:300}.pagemenu{position:fixed;top:50px;right:0;left:0;z-index:100;height:40px;width:100%;background-color:#4f81bd;border-bottom:1px solid #cfcfcf}.pagemenu .container{display:flex;flex-direction:column;justify-content:center;height:100%}.pagemenu h1{padding-top:10px;font-weight:bold}@media only screen and (max-width:415px){.pagemenu h1{font-size:1em;padding-top:10px}}</style> 517 518<style>body {padding-top: 140px;}.pagemenu {top: 50px;}.pagetabs {top: 90px;}.navbar-default .navbar-nav>.active>a{ background-color: whitesmoke;} .navbar .navbar-expand-lg>.active, .navbar .navbar-expand-lg>.active>a{background-color: #f5f5f5;} .navbar .navbar-expand-lg>li:hover, .navbar .navbar-expand-lg>li:hover>a{background-color: #fff;} .nav-link:focus{color: #000;}</style> 519 520<style>.title-notes {padding-left: 10px;font-size: .7em;padding-top: 3px;font-weight:lighter;} 521.pagetabs{overflow:visible} 522.pagetabs .container{overflow:visible} 523.pagetabs #pagemenutabs{flex-wrap:nowrap!important;white-space:nowrap;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:#bfbfbf transparent} 524.pagetabs #pagemenutabs::-webkit-scrollbar{height:6px} 525.pagetabs #pagemenutabs::-webkit-scrollbar-thumb{background:#bfbfbf;border-radius:3px} 526.pagetabs #pagemenutabs::-webkit-scrollbar-track{background:transparent} 527.pagetabs #pagemenutabs>li.nav-item{flex:0 0 auto;white-space:nowrap} 528.pagetabs #pagemenutabs>li.nav-item>.nav-link{white-space:nowrap}</style> 529 530<style> 531 @media only screen and (max-width: 1000px){ .te-content{ margin-top: 35px; }} 532</style> 533<div id="ctl00_ctl08_pageMenu"> 534 535 <div class="pagemenu"> 536 <div class="container"> 537 <div class="row"> 538 <div class='col-xl-12' style="display: flex; flex-direction: row"> 539 <h1 class='page-title'>JOIN TRADING ECONOMICS</h1> 540 </div> 541 </div> 542 </div> 543 </div> 544 545</div> 546<div id="ctl00_ctl08_pageTabs" class="pagetabs"> 547 548 <div class="container " style=""> 549 550 <ul id="pagemenutabs" role="tablist" class="nav nav-tabs d-flex flex-nowrap nav-h-scroll " style="border-bottom: none;"> 551 552 <li role="presentation" class="nav-item "> 553 <a 554 role="tab" 555 class="nav-link " href="/analytics/features.aspx" 556 557 558 559 560 561 562 class="" 563 564 > 565 Features 566 567 </a> 568 </li> 569 570 <li role="presentation" class="nav-item "> 571 <a 572 role="tab" 573 class="nav-link " href="/analytics/databases.aspx" 574 575 576 577 578 579 580 class="" 581 582 > 583 Indicators 584 585 </a> 586 </li> 587 588 <li role="presentation" class="nav-item "> 589 <a 590 role="tab" 591 class="nav-link " href="/analytics/calendar.aspx" 592 593 594 595 596 597 598 class="" 599 600 > 601 Calendar 602 603 </a> 604 </li> 605 606 <li role="presentation" class="nav-item "> 607 <a 608 role="tab"
609 class="nav-link " href="/analytics/markets.aspx" 610 611 612 613 614 615 616 class="" 617 618 > 619 Markets 620 621 </a> 622 </li> 623 624 <li role="presentation" class="nav-item "> 625 <a 626 role="tab" 627 class="nav-link " href="/analytics/financials.aspx" 628 629 630 631 632 633 634 class="" 635 636 > 637 Financials 638 639 </a> 640 </li> 641 642 <li role="presentation" class="nav-item "> 643 <a 644 role="tab" 645 class="nav-link " href="/analytics/excel.aspx" 646 647 648 649 650 651 652 class="" 653 654 > 655 Excel 656 657 </a> 658 </li> 659 660 <li role="presentation" class="nav-item "> 661 <a 662 role="tab" 663 class="nav-link " href="/analytics/apps.aspx" 664 665 666 667 668 669 670 class="" 671 672 > 673 Apps 674 675 </a> 676 </li> 677 678 <li role="presentation" class="nav-item "> 679 <a 680 role="tab" 681 class="nav-link " href="/analytics/api.aspx" 682 683 684 685 686 687 688 class="" 689 690 > 691 API 692 693 </a> 694 </li> 695 696 <li role="presentation" class="nav-item "> 697 <a 698 role="tab" 699 class="nav-link " href="/analytics/ai.aspx" 700 701 702 703 704 705 706 class="" 707 708 > 709 AI 710 711 </a> 712 </li> 713 714 <li role="presentation" class="nav-item "> 715 <a 716 role="tab" 717 class="nav-link " href="/analytics/customers.aspx" 718 719 720 721 722 723 724 class="" 725 726 > 727 Customers 728 729 </a> 730 </li> 731 732 <li role="presentation" class="nav-item "> 733 <a 734 role="tab" 735 class="nav-link active" href="/analytics/pricing.aspx" 736 737 738 739 740 741 742 class="" 743 744 > 745 Pricing 746 747 </a> 748 </li> 749 750 </ul> 751 752 753 754 </div> 755 756 757</div> 758 759<style>@media only screen and (max-width: 767.98px){ .pagetabs .nav-tabs>li.active>a {background-color: #f5f5f5;} }</style> 760 761 <div class="container"> 762 <div class="row te-content"> 763 <div class='col-xl-12' role="main"> 764 765 766 767<link rel="stylesheet" href="https://d3e5kp2e91w0k0.cloudfront.net/pricing/pricing-style.css?v=20260316"> 768 769<div id="pricing-container" class="container pricing-container"></div> 770
771<script src="https://d3e5kp2e91w0k0.cloudfront.net/pricing/pricing-data.js?v=20260316"></script>
771
772<script src="https://d3e5kp2e91w0k0.cloudfront.net/pricing/pricing-render.js?v=20260316"></script>
772 773 <br /><br /> 774 775<div style="font-size: .7em; text-align: center;"> 776 We accept all major credit cards and Paypal. Bank wire transfers are also accepted for quarterly and yearly plans.<br /> 777 The trial fee is not refundable and if the trial expires and you haven't cancelled it you will be automatically charged.<br /> 778 You can upgrade, downgrade or cancel your account at anytime but there is no refund or credit for unused days.<br /> 779 To prevent abuse, trial users are limited to 100000 data points and 100 requests for data. <br /> 780</div> 781 782 </div> 783 784 </div> 785 </div> 786 <div class="container-fluid te-footer" style="margin-bottom: -23px"> 787 <footer> 788 <div class="container"> 789 <div class="row"> 790 <div id="ctl00_Footer1_PanelFooter"> 791 792 <br /> <br /> 793 <div> 794 <div class="row"> 795 <div class="col-lg-2 col-md-2 col-6"> 796 <div class="footerHeader">Indicators</div> 797 <a id="ctl00_Footer1_HyperLink6" class="footerItems" href="../">Homepage</a><br /> 798 <a id="ctl00_Footer1_HyperLink17" class="footerItems" href="../countries">Countries</a><br /> 799 <a id="ctl00_Footer1_HyperLink18" class="footerItems" href="../indicators">Indicators</a><br /> 800 <a id="ctl00_Footer1_HyperLink1" class="footerItems" href="../calendar">Calendar</a><br /> 801 <a id="ctl00_Footer1_HyperLink2" class="footerItems" href="../forecasts">Forecasts</a><br /> 802 <a id="ctl00_Footer1_HyperLink11" class="footerItems" href="../country-list/rating">Ratings</a> 803 804 </div> 805 <div class="col-lg-2 col-md-2 col-6"> 806 <div class="footerHeader">Solutions</div> 807 <a href="/analytics/features.aspx?source=footer"><span class="footerItems">Data Subscriptions</span></a><br /> 808 <a href="/api/?source=footer"><span class="footerItems">API Access</span></a><br /> 809 <a href="/analytics/excel.aspx"><span class="footerItems">Excel Add-In</span></a><br /> 810 <a href="https://developer.tradingeconomics.com/" target="_blank"><span class="footerItems">Developer Account</span></a><br /> 811 <a href="https://docs.tradingeconomics.com/" target="_blank"><span class="footerItems">Documentation</span></a><br /> 812 <a href="/analytics/pricing.aspx?source=footer" target="_blank"><span class="footerItems">Pricing</span></a><br /> 813 <br /> 814 </div> 815 <div class="col-lg-2 col-md-2 col-6"> 816 <div class="footerHeader">About Us</div> 817 <a id="ctl00_Footer1_HyperLink8" class="footerItems" href="../api/customers.aspx">Customers</a><br /> 818 <a id="ctl00_Footer1_HyperLink23" class="footerItems" href="../careers.aspx">Careers</a><br /> 819 <a id="ctl00_Footer1_HyperLink21" class="footerItems" href="../investors.aspx">Investors</a><br /> 820 <a id="ctl00_Footer1_HyperLink20" class="footerItems" href="../advertise.aspx">Advertisers</a><br /> 821 <a id="ctl00_Footer1_HyperLink19" class="footerItems" href="../about-te.aspx">About us</a><br /> 822 <a id="ctl00_Footer1_HyperLink9" class="footerItems" href="../privacy-policy.aspx">Privacy</a> 823 </div> 824 825 <div class="col-lg-2 col-md-2 col-6"> 826 <div class="footerHeader">Contact Us</div> 827 <a href="/contact.aspx"><span class="footerItems">Submit Request</span></a><br /><br /> 828 829 <br /> 830 <br /> 831 </div> 832 833 <div class="col-lg-2 col-md-2 col-6"> 834 <a href="https://itunes.apple.com/us/app/trading-economics/id1142178921?mt=8" class="footer-appstore" title="IOs app on Apple" style="margin-top: 30px"> 835 <img alt="IOs app on Apple" src="https://d3e5kp2e91w0k0.cloudfront.net/images/appstore-lrg.svg" width="129" height="45" loading="lazy" decoding="async"/> 836 </a> 837 <a href="https://play.google.com/store/apps/details?id=com.tradingeconomics.calendar" class="footer-appstore" title="Android app on Google Play" style="margin-top: 4px"> 838 <img alt="Android app on Google Play" src="https://d3e5kp2e91w0k0.cloudfront.net/images/google-play.png" width="129" height="45" loading="lazy" decoding="async"/> 839 </a> 840 </div> 841 </div> 842 </div> 843 <br /> 844 845<div> 846 <div class="row"> 847 <div class="col-lg-1 col-md-2 col-6"> 848 <a class="footer-languages" href="https://tradingeconomics.com" target="_self">English</a><br /> 849 <a class="footer-languages" href="https://es.tradingeconomics.com" target="_self">Español</a><br /> 850 <a class="footer-languages" href="https://pt.tradingeconomics.com" target="_self">Português</a><br /> 851 <a class="footer-languages" href="https://fr.tradingeconomics.com" target="_self">Français</a><br /> 852 </div> 853 <div class="col-lg-1 col-md-2 col-6"> 854 <a class="footer-languages" href="https://de.tradingeconomics.com" target="_self">
854Deutsch</a><br /> 855 <a class="footer-languages" href="https://it.tradingeconomics.com" target="_self">Italiano</a><br /> 856 <a class="footer-languages" href="https://pl.tradingeconomics.com" target="_self">Polski</a><br /> 857 <a class="footer-languages" href="https://id.tradingeconomics.com" target="_self">Indonesian</a><br /> 858 </div> 859 <div class="col-lg-1 col-md-2 col-6"> 860 861 <a class="footer-languages" href="https://ru.tradingeconomics.com" target="_self">Ð ÑÑÑкий</a><br /> 862 <a class="footer-languages" href="https://tr.tradingeconomics.com" target="_self">Türkçe</a><br /> 863 <a class="footer-languages" href="https://ar.tradingeconomics.com" target="_self">Ø§ÙØ¹Ø±Ø¨ÙØ©</a><br /> 864 </div> 865 <div class="col-lg-1 col-md-2 col-6"> 866 <a class="footer-languages" href="https://zh.tradingeconomics.com" target="_self">ç®ä½ä¸æ</a><br /> 867 <a class="footer-languages" href="https://jp.tradingeconomics.com" target="_self">æ¥æ¬èª</a><br /> 868 <a class="footer-languages" href="https://ko.tradingeconomics.com" target="_self">íêµì´</a><br /> 869 870 </div> 871 </div> 872</div> 873<br /> 874 <div class="footer-copyright"> 875 <br /> 876 <span>Copyright ©2026 TRADING ECONOMICS<br /> 877 All Rights Reserved</span><br /> 878 </div> 879 <br /> 880 <br /> 881 882 883</div> 884 885 886 </div> 887 </div> 888 </footer> 889 </div> 890 </form> 891
892<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
892 893 894
895<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.1/js/bootstrap.bundle.min.js" defer></script>
895 896 897 898 899<!-- Start of HubSpot Embed Code -->
900<script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/49557271.js"></script>
900 901<!-- End of HubSpot Embed Code --> 902 903
904<script>function extractor_multi(n) { if (!n) return ""; var t = n.split(/\s/); return t && t[0] ? [t.slice(Math.max(0, t.length - 5), t.length).join(" "), t.slice(Math.max(0, t.length - 4), t.length).join(" "), t.slice(Math.max(0, t.length - 3), t.length).join(" "), t.slice(Math.max(0, t.length - 2), t.length).join(" "), t.slice(Math.max(0, t.length - 1), t.length).join(" "),] : "" } function capitaliseFirstLetter(n) { return ((n = (n + "").toLowerCase()) + "").replace(/^([a-z])|\s+([a-z])/g, function (n) { return n.toUpperCase() }).replace(/Gdp/g, "GDP").replace(/Ppp/g, "PPP").replace(/cpi/gi, "CPI").replace(/S\&t/g, "S&T").replace(/S\&p/g, "S&P") } function searchQueryEncode(n) { return whiteSpaceKiller(n.replace(/\%/g, "percent ").replace(/\,|\\|_/g, " ")).trim().replace(/\s|\t/g, "-").replace(/\:|\(|\)/g, "").toLowerCase() } function whiteSpaceKiller(n) { return (n = n.replace(/\s\s/g, " ")).match(/\s\s/) ? whiteSpaceKiller(n) : n } !function (n) { var t = function () { "use strict"; return { isMsie: function () { return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2] : !1 }, isBlankString: function (n) { return !n || /^\s*$/.test(n) }, escapeRegExChars: function (n) { return n.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&") }, isString: function (n) { return "string" == typeof n }, isNumber: function (n) { return "number" == typeof n }, isArray: n.isArray, isFunction: n.isFunction, isObject: n.isPlainObject, isUndefined: function (n) { return "undefined" == typeof n }, toStr: function (n) { return t.isUndefined(n) || null === n ? "" : n + "" }, bind: n.proxy, each: function (t, i) { function r(n, t) { return i(t, n) } n.each(t, r) }, map: n.map, filter: n.grep, every: function (t, i) { var r = !0; return t ? (n.each(t, function (n, u) { if (!(r = i.call(null, u, n, t))) return !1 }), !!r) : r }, some: function (t, i) { var r = !1; return t ? (n.each(t, function (n, u) { if ((r = i.call(null, u, n, t))) return !1 }), !!r) : r }, mixin: n.extend, getUniqueId: function () { var n = 0; return function () { return n++ } }(), templatify: function (t) { function i() { return String(t) } return n.isFunction(t) ? t : i }, defer: function (n) { setTimeout(n, 0) }, debounce: function (n, t, i) { var r, u; return function () { var f, e, o = this, s = arguments; return f = function () { r = null; i || (u = n.apply(o, s)) }, e = i && !r, clearTimeout(r), r = setTimeout(f, t), e && (u = n.apply(o, s)), u } }, throttle: function (n, t) { var u, f, i, e, r, o; return r = 0, o = function () { r = new Date; i = null; e = n.apply(u, f) }, function () { var s = new Date, h = t - (s - r); return u = this, f = arguments, 0 >= h ? (clearTimeout(i), i = null, r = s, e = n.apply(u, f)) : i || (i = setTimeout(o, h)), e } }, noop: function () { } } }(), f = "0.10.5", e = function () { "use strict"; function n(n) { return n = t.toStr(n), n ? n.split(/\s+/) : [] } function i(n) { return n = t.toStr(n), n ? n.split(/\W+/) : [] } function r(n) { return function () { var i = [].slice.call(arguments, 0); return function (r) { var u = []; return t.each(i, function (i) { u = u.concat(n(t.toStr(r[i]))) }), u } } } return { nonword: i, whitespace: n, obj: { nonword: r(i), whitespace: r(n) } } }(), r = function () { "use strict"; function i(i) { this.maxSize = t.isNumber(i) ? i : 100; this.reset(); this.maxSize <= 0 && (this.set = this.get = n.noop) } function r() { this.head = this.tail = null } function u(n, t) { this.key = n; this.val = t; this.prev = this.next = null } return t.mixin(i.prototype, { set: function (n, t) { var i, r = this.list.tail; this.size >= this.maxSize && (this.list.remove(r), delete this.hash[r.key]); (i = this.hash[n]) ? (i.val = t, this.list.moveToFront(i)) : (i = new u(n, t), this.list.add(i), this.hash[n] = i, this.size++) }, get: function (n) { var t = this.hash[n]; if (t) return (this.list.moveToFront(t), t.val) }, reset: function () { this.size = 0; this.hash = {}; this.list = new r } }), t.mixin(r.prototype, { add: function (n) { this.head && (n.next = this.head, this.head.prev = n); this.head = n; this.tail = this.tail || n }, remove: function (n) { n.prev ? n.prev.next = n.next : this.head = n.next; n.next ? n.next.prev = n.prev : this.tail = n.prev }, moveToFront: function (n) { this.remove(n); this.add(n) } }), i }(), o = function () { "use strict"; function i(n) { this.prefix = ["__", n, "__"].join(""); this.ttlKey = "__ttl__"; this.keyMatcher = new RegExp("^" + t.escapeRegExChars(this.prefix)) } function r() { return (new Date).getTime() } function u(n) { return JSON.stringify(t.isUndefined(n) ? null : n) } function f(n) { return JSON.parse(n) } var n, e; try { n = window.localStorage; n.setItem("~~~", "!"); n.removeItem("~~~") } catch (o) { n = null } return e = n && window.JSON ? { _prefix: function (n) { return this.prefix + n }
904, _ttlKey: function (n) { return this._prefix(n) + this.ttlKey }, get: function (t) { return this.isExpired(t) && this.remove(t), f(n.getItem(this._prefix(t))) }, set: function (i, f, e) { return t.isNumber(e) ? n.setItem(this._ttlKey(i), u(r() + e)) : n.removeItem(this._ttlKey(i)), n.setItem(this._prefix(i), u(f)) }, remove: function (t) { return n.removeItem(this._ttlKey(t)), n.removeItem(this._prefix(t)), this }, clear: function () { for (var r, i = [], u = n.length, t = 0; u > t; t++)(r = n.key(t)).match(this.keyMatcher) && i.push(r.replace(this.keyMatcher, "")); for (t = i.length; t--;)this.remove(i[t]); return this }, isExpired: function (i) { var u = f(n.getItem(this._ttlKey(i))); return t.isNumber(u) && r() > u ? !0 : !1 } } : { get: t.noop, set: t.noop, remove: t.noop, clear: t.noop, isExpired: t.noop }, t.mixin(i.prototype, e), i }(), u = function () { "use strict"; function i(t) { t = t || {}; this.cancelled = !1; this.lastUrl = null; this._send = t.transport ? s(t.transport) : n.ajax; this._get = t.rateLimiter ? t.rateLimiter(this._get) : this._get; this._cache = t.cache === !1 ? new r(0) : o } function s(i) { return function (r, u) { function e(n) { t.defer(function () { f.resolve(n) }) } function o(n) { t.defer(function () { f.reject(n) }) } var f = n.Deferred(); return i(r, u, e, o), f } } var u = 0, f = {}, e = 6, o = new r(10); return i.setMaxPendingRequests = function (n) { e = n }, i.resetCache = function () { o.reset() }, t.mixin(i.prototype, { _get: function (n, t, i) { function o(t) { i && i(null, t); r._cache.set(n, t) } function s() { i && i(!0) } function c() { u--; delete f[n]; r.onDeckRequestArgs && (r._get.apply(r, r.onDeckRequestArgs), r.onDeckRequestArgs = null) } var h, r = this; this.cancelled || n !== this.lastUrl || ((h = f[n]) ? h.done(o).fail(s) : e > u ? (u++, f[n] = this._send(n, t).done(o).fail(s).always(c)) : this.onDeckRequestArgs = [].slice.call(arguments, 0)) }, get: function (n, i, r) { var u; return t.isFunction(i) && (r = i, i = {}), this.cancelled = !1, this.lastUrl = n, (u = this._cache.get(n)) ? t.defer(function () { r && r(null, u) }) : this._get(n, i, r), !!u }, cancel: function () { this.cancelled = !0 } }), i }(), s = function () { "use strict"; function i(t) { t = t || {}; t.datumTokenizer && t.queryTokenizer || n.error("datumTokenizer and queryTokenizer are both required"); this.datumTokenizer = t.datumTokenizer; this.queryTokenizer = t.queryTokenizer; this.reset() } function r(n) { return n = t.filter(n, function (n) { return !!n }), n = t.map(n, function (n) { return n.toLowerCase() }) } function u() { return { ids: [], children: {} } } function f(n) { for (var i = {}, r = [], t = 0, u = n.length; u > t; t++)i[n[t]] || (i[n[t]] = !0, r.push(n[t])); return r } function e(n, t) { function u(n, t) { return n - t } var i = 0, r = 0, f = [], e, o; for (n = n.sort(u), t = t.sort(u), e = n.length, o = t.length; e > i && o > r;)n[i] < t[r] ? i++ : n[i] > t[r] ? r++ : (f.push(n[i]), i++, r++); return f } return t.mixin(i.prototype, { bootstrap: function (n) { this.datums = n.datums; this.trie = n.trie }, add: function (n) { var i = this; n = t.isArray(n) ? n : [n]; t.each(n, function (n) { var f, e; f = i.datums.push(n) - 1; e = r(i.datumTokenizer(n)); t.each(e, function (n) { for (var r, t = i.trie, e = n.split(""); r = e.shift();)t = t.children[r] || (t.children[r] = u()), t.ids.push(f) }) }) }, get: function (n) { var u, i, o = this; return u = r(this.queryTokenizer(n)), t.each(u, function (n) { var t, r, f, u; if (i && 0 === i.length) return !1; for (t = o.trie, r = n.split(""); t && (f = r.shift());)t = t.children[f]; return t && 0 === r.length ? (u = t.ids.slice(0), void (i = i ? e(i, u) : u)) : (i = [], !1) }), i ? t.map(f(i), function (n) { return o.datums[n] }) : [] }, reset: function () { this.datums = []; this.trie = u() }, serialize: function () { return { datums: this.datums, trie: this.trie } } }), i }(), i = function () { "use strict"; function i(n) { return n.local || null } function r(i) { var r, u; return u = { url: null, thumbprint: "", ttl: 864e5, filter: null, ajax: {} }, (r = i.prefetch || null) && (r = t.isString(r) ? { url: r } : r, r = t.mixin(u, r), r.thumbprint = f + r.thumbprint, r.ajax.type = r.ajax.type || "GET", r.ajax.dataType = r.ajax.dataType || "json", !r.url && n.error("prefetch requires url to be set")), r } function u(i) { function f(n) { return function (i) { return t.debounce(i, n) } } function e(n) { return function (i) { return t.throttle(i, n) } } var r, u; return u = { url: null, cache: !0, wildcard: "%QUERY", replace: null, rateLimitBy: "debounce", rateLimitWait: 300, send: null, filter: null, ajax: {} }, (r = i.remote || null) && (r = t.isString(r) ? { url: r } : r, r = t.mixin(u, r), r.rateLimiter = /^throttle$/i.test(r.rateLimitBy) ? e(r.rateLimitWait) : f(r.rateLimitWait), r.ajax.type = r.ajax.type || "GET", r.ajax.dataType = r.ajax.dataType || "json", delete r.rateLimitBy, delete r.rateLimitWait, !r.url && n.error("remote requires url to be set")), r } return { local: i, prefetch: r, remote: u } }(); !function (r) { "use strict"; function h(t) { t && (t.local || t.prefetch || t.remote) || n.error("one of local, prefetch, or remote is required"); this.limit = t.limit || 5; this.sorter = l(t.sorter); this.dupDetector = t.dupDetector || a; this.local = i.local(t); this.prefetch = i.prefetch(t); this.remote = i.remote(t); this.cacheKey = this.prefetch ? this.prefetch.cacheKey || this.prefetch.url : null; this.index = new s({ datumTokenizer: t.datumTokenizer, queryTokenizer: t.queryTokenizer }); this.storage = this.cacheKey ? new o(this.cacheKey) : null } function l(n) { function i(t) { return t.sort(n) } function r(n) { return n } return t.isFunction(n) ? i : r } function a() { return !1 } var c, f; return c = r.Bloodhound, f = { data: "data", protocol: "protocol", thumbprint: "thumbprint" }, r.Bloodhound = h, h.noConflict = function () { return r.Bloodhound = c, h }, h.tokenizers = e, t.mixin(h.prototype, { _loadPrefetch: function (t) { function f(n) { i.clear(); i.add(t.filter ? t.filter(n) : n); i._saveToStorage(i.index.serialize(), t.thumbprint, t.ttl) } var u, r, i = this; return (u = this._readFromStorage(t.thumbprint)) ? (this.index.bootstrap(u), r = n.Deferred().resolve()) : r = n.ajax(t.url, t.ajax).done(f), r }, _getFromRemote: function (n, t) { function f(n, i) { t(n ? [] : u.remote.filter ? u.remote.filter(i) : i) } var i, r, u = this; if (this.transport) return n = n || "", r = encodeURIComponent(n), i = this.remote.replace ? this.remote.replace(this.remote.url, n) : this.remote.url.replace(this.remote.wildcard, r), this.transport.get(i, this.remote.ajax, f) }, _cancelLastRemoteRequest: function () { this.transport && this.transport.cancel() }, _saveToStorage: function (n, t, i) { this.storage && (this.storage.set(f.data, n, i), this.storage.set(f.protocol, location.protocol, i), this.storage.set(f.thumbprint, t, i)) }, _readFromStorage: function (n) { var i, t = {}; return this.storage && (t.data = this.storage.get(f.data), t.protocol = this.storage.get(f.protocol), t.thumbprint = this.storage.get(f.thumbprint)), i = t.thumbprint !== n || t.protocol !== location.protocol, t.data && !i ? t.data : null }, _initialize: function () { function f() { e.add(t.isFunction(i) ? i() : i) } var r, e = this, i = this.local; return r = this.prefetch ? this._loadPrefetch(this.prefetch) : n.Deferred().resolve(), i && r.done(f), this.transport = this.remote ? new u(this.remote) : null, this.initPromise = r.promise() }, initialize: function (n) { return !this.initPromise || n ? this._initialize() : this.initPromise }, add: function (n) { this.index.add(n) }, get: function (n, i) { function e(n) { var f = r.slice(0); t.each(n, function (n) { var i; return i = t.some(f, function (t) { return u.dupDetector(n, t) }), !i && f.push(n), f.length < u.limit }); i && i(u.sorter(f)) } var u = this, r = [], f = !1; r = this.index.get(n); r = this.sorter(r).slice(0, this.limit); r.length < this.limit ? f = this._getFromRemote(n, e) : this._cancelLastRemoteRequest(); f || (r.length > 0 || !this.transport) && i && i(r) }, clear: function () { this.index.reset() }, clearPrefetchCache: function () { this.storage && this.storage.clear() }, clearRemoteCache: function () { this.transport && u.resetCache() }
904, ttAdapter: function () { return t.bind(this.get, this) } }), h }(this) }(window.jQuery); !function (n, t) { "use strict"; "undefined" != typeof module && module.exports ? module.exports = t(require("jquery")(n)) : "function" == typeof define && define.amd ? define("bootstrap3-typeahead", ["jquery"], function (n) { return t(n) }) : t(n.jQuery) }(this, function (n) { "use strict"; var t, i, r; void 0 === t && (t = {}); t.default = ['<div class="ieacac-tabs hidden-xs">', '<ul class="iecac-menu-tabs">', "<\/ul>", "<\/div>",]; i = function (i, r) { var e, o, f, u; if (this.$element = n(i), this.options = n.extend({}, n.fn.iec_typeahead.defaults, r), this.matcher = this.options.matcher || this.matcher, this.wrapper = this.options.wrapper || [], this.table_chart_button = this.options.table_chart_button || !1, this.goDirectly = this.options.goDirectly || !1, this.lang = "string" == typeof iec_language ? window.iec_language : "en", this.sorter = this.options.sorter || this.sorter, this.allow_more = this.options.allow_more || !1, this.go_for_context = this.options.go_for_context || this.options.goForContext || !1, this.in_context_length = this.options.in_context_length || this.options.inContextLength || 0, this.in_context_stack = [], this.rendered = 0, this.select = this.options.select || this.select, this.allow_facilitator_more = this.options.allow_facilitator_more || this.options.allowNavigator || !1, this.on_facilitator_more_click = this.options.on_facilitator_more_click || this.options.onNavigatorMoreClick || !1, this.autoSelect = "boolean" != typeof this.options.autoSelect || this.options.autoSelect, this.expandable = "boolean" == typeof this.options.expandable && this.options.expandable, this.highlighter = this.options.highlighter || this.highlighter, this.render = this.options.render || this.render, this.updater = this.options.updater || this.updater, this.source = this.options.source, this.delay = "number" == typeof this.options.delay ? this.options.delay : 100, this.forceRenderToTextBox = void 0 === this.options.forceRenderToTextBox || this.options.forceRenderToTextBox, this.selectionHandler = void 0 !== this.options.selectionHandler && this.options.selectionHandler, this.$menu = n(this.options.menu), this.options.setClasses && this.options.setClasses.ul) { e = this.options.setClasses.ul.split(" "); for (o in e) this.$menu.addClass(e[o]) } if (this.options.setStyles && this.options.setStyles.ul) for (f in this.options.setStyles.ul) this.options.setStyles.ul[f].p && (console.log("setting style", this.options.setStyles.ul[f]), this.$menu.style(this.options.setStyles.ul[f].p, this.options.setStyles.ul[f].v, this.options.setStyles.ul[f].i)); this.shown = !1; this.tabs = []; this.stance = 0; this.req_num = 0; this.listen(); this.showHintOnFocus = "boolean" == typeof this.options.showHintOnFocus && this.options.showHintOnFocus; this.afterSelect = this.options.afterSelect || this.afterSelect; this.appendMenuTo = this.options.appendMenuTo || !1; this.originalQuery = !1; this.searching_for_something = !1; this.renderAnimation = this.options.renderAnimation || !1; u = {}; void 0 !== t ? u = t : void 0 !== r.typeahead_little_helper && (u = this.options.typeahead_little_helper); this.typeahead_little_helper = u; void 0 === this.options.typeahead_little_helper && (this.options.typeahead_little_helper = u); this.classname = u[this.wrapper] ? n(u[this.wrapper][0])[0].className || "none" : "none"; this.own_special_class = "ieconomics-" + Math.round(1e6 * Math.random()) + "-logic"; this.$element.data("ieconomics", this.own_special_class); this.$element.addClass(this.own_special_class) }; i.prototype = { constructor: i, afterSelect: function (t) { if (t && "go" == t) { console.log("trigger:", t); this.renderAnimation && this.renderAnimation(); var i = (n("#searchu").val() || n("#searchd").val()).trim().toLowerCase(); window.searchQueryEncode && (i = searchQueryEncode(i)); window.location.href = "http://" + window.location.host + "/" + i } }, select: function (t) { var i = this.$menu.find(".active").data("value"), u = !0, r; if (i || (i = this.$element.val(), u = !1), r = { raw: this.$menu.find(".active").data("raw") || i, value: i, isListed: u, type: this.$menu.find(".active").data("type") }, this.selectionHandler) return this.selectionHandler("https://tradingeconomics.com" + i, r, n("#" + this.options.searchBoxId).val()); if ("go_more_results" != i) { if (this.autoSelect || i) { if ("go_facilitator_modal" == i) return this.hide(), event.preventDefault(), event.stopPropagation(), this.mouse_ignore = !0, this.focusout(), void (this.on_facilitator_more_click && this.on_facilitator_more_click()); this.goDirectly ? (this.renderAnimation && this.renderAnimation(), this.hide(), n("#searchButton").attr("style", "background-image: url('/cdn/ie/img/roundload.gif')!important;background-color: #fff;"), window.location.href = "http://" + window.location.host + "/" + ("en" == this.lang ? "" : this.lang + "/") + searchQueryEncode(i)) : (this.$element.val(this.updater(i)).change(), this.table_chart_button && t ? this.afterSelect(t, r) : this.afterSelect(null, r)) } else this.table_chart_button && t ? this.afterSelect(t, r) : this.afterSelect("go", r); return this.hide(), this.mouse_ignore = !0, "" } window.location.href = "https://tradingeconomics.com" + ("en" == this.lang ? "" : this.lang + "/") + "more/" + (n("#searchu").val() || n("#searchd").val()).trim().toLowerCase().replace(/\s/, "-") }, updater: function (n) { return this.query, n }, setSource: function (n) { this.source = n }, show: function () { var u, t = n.extend({}, this.$element.position(), { height: this.$element[0].offsetHeight }), r, i; return u = "function" == typeof this.options.scrollHeight ? this.options.scrollHeight.call() : this.options.scrollHeight, r = t.top + t.height + u, i = t.left, this.options.align && "left" == this.options.align && (console.log("fix left", this.$menu.width()), i = t.left + this.$element.width() - (0 != this.$menu.width() ? this.$menu.width() : 556)), this.appendMenuTo ? this.appendMenuTo.append(this.$menu.css({ top: r, left: i, display: "table" })) : this.forceRenderToTextBox ? this.$menu.insertAfter(this.$element).css({ top: r, left: i, display: "table" }) : this.$menu.show(), this.shown = !0, this }, hide: function () { return this.shown && (this.$menu.hide(), this.shown = !1), this }, lookup: function (t) { if (this.originalQuery = !1, this.have_news = !0, this.query = null != t ? t : this.$element.val() || "", this.query.length > this.options.minLength && (this.searching_for_something = setTimeout(function () { }, 1e3)), this.query.length < this.options.minLength && !this.showHintOnFocus) return this.shown ? this.hide() : this; var i, r = n.proxy(function () { var t = "?"; this.options && "thisIstheSearchBoxIdTag" == this.options.searchBoxId && (t = "&"); this.options && "thisIstheTinySearchBoxIdTag" == this.options.searchBoxId && (t = "&"); this.options && "ac" == this.options.wrapper && (t = "&");
904 (i = n.isFunction(this.source) ? this.source(encodeURIComponent(this.query) + t + "stance=" + ++this.req_num, n.proxy(this.process, this)) : this.source) && this.process(i) }, this); clearTimeout(this.lookupWorker); this.lookupWorker = setTimeout(r, this.delay) }, process: function (t) { this.have_news = !1; clearTimeout(this.searching_for_something); var i = this; if (t[0]) { if (t[0].stance && !(t[0].stance == i.req_num || "searching" == t[0].stance)) return; (t[0].total || 0 === t[0].total) && (i.setBadges(t[0]), t = t.slice(1, t.length + 1)) } return t = n.grep(t, function (n) { return i.matcher(n.name) }), (t = this.sorter(t)).length ? "all" == this.options.items ? this.render(t).show() : this.focused ? this.render(t).show() : void 0 : this.shown ? this.hide() : this }, setBadges: function (i) { var f, u, r; if (this.tabs = [], 0 == this.tabs.length) { f = t[this.wrapper]; for (u in f) if (r = (n(f[u]).find("span").attr("class") || "").replace("iec-menu-tabs-nresults numresults-", ""), !(r.length < 1)) if (r != i.tab) this.tabs.push({ l: u, tab: r }); else { if ("all" == r && 0 === i.total) return console.info("zero"), this.focused = !1, this.hide(); this.populate(u, r, i.total) } this.stance++; this.fetchAndPopulate(this.stance) } }, fetchAndPopulate: function (n) { var t = this; t.stance > n || t.tabs[0] && jQuery.getJSON("http://" + iec_api + "/src/iecac/" + t.query + "?tab=" + t.tabs[0].tab + " &onlystats=true", function () { }).done(function (i) { t.populate(t.tabs[0].l, t.tabs[0].tab, i[0].total); t.stance > n || (t.tabs = t.tabs.slice(1, t.tabs.length), t.fetchAndPopulate(n)) }) }, populate: function (i, r, u) { (u || 0 === u) && (t[this.wrapper][i] = n(t[this.wrapper][i]).find("span").text("(" + u + ")").parent().prop("outerHTML"), n(".numresults-" + r).text("(" + u + ")")) }, matcher: function (n) { return n ? "no results" == n ? -1 : "searching" == n ? -1 : ~n.toLowerCase().indexOf(this.query.toLowerCase()) > -1 ? -1 : ~n.toLowerCase().indexOf(this.query.toLowerCase()) : -1 }, sorter: function (n) { return n }, highlighter: function (n) { var t = extractor_multi(this.query), i = 0; return n ? (n.match(RegExp("(" + (t[0] || "").trim() + ")", "ig")) || (n.match(RegExp("(" + t[1] + ")", "ig")) ? i = 1 : n.match(RegExp("(" + t[2] + ")", "ig")) ? i = 2 : n.match(RegExp("(" + t[3] + ")", "ig")) ? i = 3 : n.match(RegExp("(" + t[4] + ")", "ig")) && (i = 4)), n.replace(RegExp("(" + t[i] + ")", "ig"), function (n, t) { return "<strong>" + t + "<\/strong>" })) : "" }, reorderByCategory: function (n) { n.sort((n, t) => t.importance - n.importance); let r = ["General", "Markets", "Stocks", "Financials"], i = {}; for (var t = 0; t < n.length; t++) { let r = ""; "mkt" == n[t].type ? (r = "Stocks", n[t].type = "Stocks") : "idx" == n[t].type || "commodity" == n[t].type || "bond" == n[t].type || "forex" == n[t].type || "crypto" == n[t].type ? (r = "Markets", n[t].type = "Markets") : "financials" == n[t].type ? (r = "Financials", n[t].type = "Financials") : (r = "General", n[t].type = "General"); i[r] || (i[r] = []); i[r].push(n[t]) } r = n.map(n => n.type); let u = {}; for (let n of r) n in i && (u[n] = i[n]); return u }, addtabs: function (n) { let r = Object.keys(n), t = 0, i = 0; r.forEach(r => { let u = $('<li class="list-group-tab list-group-first-tab"><p>' + r + '<\/p><button type="button" class="btn-close btn-tab-close" aria-label="Close"><\/button><\/li>'), f = $('<li class="list-group-tab"><p>' + r + "<\/p><\/li>"); 0 == t ? this.$menu.children().eq(t).before(u) : this.$menu.children().eq(i).before(f); i = i + n[r].length + 1; t++; u.find(".btn-close").click(function () { $("#dpSearch-resultCnt").hide(); $(".nav-entry-link-group").removeClass("d-none"); $("#thisIsTheSearchBoxWrapperId").removeClass("is-wide-open"); $("#thisIstheSearchBoxIdTag").style("width", "") }) }) }, render: function (t) { var e = t, i, u, r, f; t[0] && void 0 !== t[0].page && (e = t[1]); i = this; t.length; u = this.reorderByCategory(e); let o = Object.keys(u).reduce((n, t) => n.concat(u[t]), []); return (t = n(o).map(function (t, r) { var f, u; return t || (i.in_context_stack = [], i.rendered = 0), f = i.options.items, (i.allow_facilitator_more && f > 1 && (f -= 1), !(i.rendered > f)) ? (r.full_name = r.pretty_name || r.full_name || r.name, r.name = r.pretty_name || r.name, r.the_url = r.url || r.the_url || r.value, r.value = r.the_url, (t = n(i.options.item)).addClass("list-group-item"), t.data("value", (r.value || "").toLowerCase()), t.data("type", (r.type || "").toLowerCase()), t.data("raw", r.value), t.find("a").prop("title", r.full_name || r.name), t.find("a").prop("href", "https://tradingeconomics.com" + r.the_url), t.find("a > .iec-dd-val").html(i.highlighter(r.name)), t.find("a > .iec-dd-symbol").html(r.symbol), u = !1, r.url && r.url.indexOf(":") > 0 && ("GOV" != (u = r.url.split(":")[1].toUpperCase()) && "IND" != u && "CUR" != u && "COM" != u || (u = !1)), r.origin = u || r.origin, r.origin ? t.find("a > .iec-dd-origin").html(r.origin.toUpperCase()) : t.find("a > .iec-dd-origin").addClass("iec-dd-origin-empty"), i.rendered++, t[0]) : void 0 }), this.autoSelect && t.first().addClass("active"), this.options.renderDiv ? this.$menu = n("#" + this.options.renderDiv) : this.$menu.html(this.options.typeahead_little_helper[this.wrapper].join("\n")), this.$menu.empty(), this.$menu.append(t), i.allow_more && t.length > 1) && (r = n('<li data-value="go_more_results" class="list-group-item">'), f = n("#" + this.options.searchBoxId).val().trim().toLowerCase(), this.options.moreUrlFormat && (f = this.options.moreUrlFormat + n("#" + this.options.searchBoxId).val().trim().toLowerCase()), r.append('<a href="https://tradingeconomics.com' + f + '"><span class="iec-dd-symbol d-none d-lg-inline hidden-lg"><\/span><span class="iec-dd-val iec-typeadead-more">More<\/span><span class="iec-dd-origin iec-dd-origin-empty hidden-xs"><\/span><\/a>'), this.$menu.append(r)), i.allow_facilitator_more && ((r = n('<li class="more-facilitator-modal" data-value="go_facilitator_modal">')).append('<a href="#" ><span class="iec-dd-symbol d-none d-lg-inline hidden-lg"><\/span><span class="iec-dd-val iec-typeadead-more">More<\/span><span class="iec-dd-origin iec-dd-origin-empty hidden-xs"><\/span><\/a>'), this.$menu.append(r)), this.addtabs(u), this }, next: function () { var t = this.$menu.find(".active").removeClass("active").next(); t.length || (t = n(this.$menu.find("li")[0])); t.addClass("active") }, prev: function () { var t = this.$menu.find(".active").removeClass("active").prev(); t.length || (t = this.$menu.find("li").last()); "DIV" != n(t[0]).get(0).tagName && t.addClass("active") }, listen: function () { this.$element.on("focus", n.proxy(this.focus, this)).on("blur", n.proxy(this.blur, this)).on("focusout", n.proxy(this.focusout, this)).on("keypress", n.proxy(this.keypress, this)).on("keyup", n.proxy(this.keyup, this));
904 this.eventSupported("keydown") && this.$element.on("keydown", n.proxy(this.keydown, this)); this.$menu.on("click", n.proxy(this.click, this)).on("mouseenter", "li", n.proxy(this.mouseenter, this)).on("mouseleave", "li", n.proxy(this.mouseleave, this)) }, destroy: function () { this.$element.data("typeahead", null); this.$element.off("focus").off("focusout").off("blur").off("keypress").off("keyup"); this.eventSupported("keydown") && this.$element.off("keydown"); this.$menu.remove() }, eventSupported: function (n) { var t = n in this.$element; return t || (this.$element.setAttribute(n, "return;"), t = "function" == typeof this.$element[n]), t }, move: function (t) { if (this.shown) { switch (t.keyCode) { case 9: case 13: case 27: case 39: t.preventDefault(); break; case 38: if (t.shiftKey || (t.preventDefault(), this.prev(), this.originalQuery || (this.originalQuery = this.$element.val()), "more results" == (i = n(n("." + this.classname).parent().find("> li.active")[0]).find("span.iec-dd-val").text()).toLowerCase() || "more" == i.toLowerCase())) return; "" == i.toLowerCase() && (i = this.originalQuery); this.$element.val(i.replace(/\s\s/g, " ").trim().toLowerCase()); break; case 40: var i; if (t.shiftKey || (t.preventDefault(), this.classname.indexOf(" ") > 1 && (this.classname = this.classname.substr(0, this.classname.indexOf(" "))), this.next(), this.originalQuery || (this.originalQuery = this.$element.val()), "more results" == (i = n(n("." + this.classname).parent().find("> li.active")[0]).find("span.iec-dd-val").text()).toLowerCase() || "more" == i.toLowerCase())) return; "" == i.toLowerCase() && (i = this.originalQuery); this.$element.val(i.replace(/\s\s/g, " ").trim().toLowerCase()) }t.stopPropagation() } }, keydown: function (t) { this.suppressKeyPressRepeat = ~n.inArray(t.keyCode, [40, 38, 9, 13, 27, 39]); this.shown || 40 != t.keyCode ? this.move(t) : this.lookup("") }, keypress: function (n) { this.suppressKeyPressRepeat || this.move(n) }, keyup: function (t) { switch (t.keyCode) { case 40: case 38: case 16: case 17: case 18: break; case 9: case 39: if (!this.shown) return; this.select(); break; case 13: if (console.log("event this?", this.shown, this.autoSelect), !this.shown) { if (!this.autoSelect) { if (this.selectionHandler) { var i = { raw: "https://tradingeconomics.com" + this.$element.val(), value: this.$element.val(), isListed: !1, type: !1 }; return this.selectionHandler("https://tradingeconomics.com" + this.$element.val(), i, n("#" + this.options.searchBoxId).val()) } this.goDirectly || this.afterSelect("go") } return } this.select(); this.goDirectly || this.afterSelect("go"); break; case 27: if (!this.shown) return; this.hide(); break; default: this.lookup() }t.stopPropagation(); t.preventDefault() }, focus: function () { if (!this.focused) { if (this.focused = !0, this.went_away) return this.$element.blur(), void (this.went_away = !1); this.show(); (0 === this.options.minLength && !this.$element.val() || this.options.showHintOnFocus) && this.lookup() } }, focusout: function () { this.focused = !1; this.mousedover || !this.shown || n("#" + this.options.renderDiv).is(":hover") || this.hide() }, click: function (n) { console.log("CLICKED -> e.target", n.target); n.preventDefault(); n.target.className.toString().indexOf("menu-tabs") > -1 || this.select() }, mouseenter: function (t) { this.mousedover = !0; this.$menu.find(".active").removeClass("active"); n(t.currentTarget).addClass("active") }, mouseleave: function () { this.mousedover = !1; this.mouse_ignore ? this.mouse_ignore = !1 : this.focused || (this.$element.focus(), this.focused = !0) } }; r = n.fn.typeahead; n.fn.iec_typeahead = function (t) { var r = arguments; return this.each(function () { var f = n(this), u = f.data("typeahead"); u || f.data("typeahead", u = new i(this, "object" == typeof t && t)); "string" == typeof t && (r.length > 1 ? u[t].apply(u, Array.prototype.slice.call(r, 1)) : u[t]()) }) }; n.fn.iec_typeahead.defaults = { source: [], items: 8, menu: '<ul class="typeahead dropdown-menu"><\/ul>', item: '<li><a href="#"><span class="iec-dd-symbol d-none d-lg-inline hidden-lg"><\/span><span class="iec-dd-val"><\/span><span class="iec-dd-origin hidden-xs"><\/span><\/a><\/li>', minLength: 2, scrollHeight: 0, autoSelect: !0 }; n.fn.iec_typeahead.Constructor = i; n.fn.iec_typeahead.noConflict = function () { return n.fn.typeahead = r, this };
904 n(document).on("focus.typeahead.data-api", '[data-provide="typeahead"]', function () { var t = n(this); t.data("typeahead") || t.iec_typeahead(t.data()) }) }), function (n) { if (!n.fn.style) { var t = function (n) { return n.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&") }; CSSStyleDeclaration.prototype.getPropertyValue || (CSSStyleDeclaration.prototype.getPropertyValue = function (n) { return this.getAttribute(n) }, CSSStyleDeclaration.prototype.setProperty = function (n, i, r) { if (this.setAttribute(n, i), "" != (r = void 0 !== r ? r : "")) { var u = RegExp(t(n) + "\\s*:\\s*" + t(i) + "(\\s*;)?", "gmi"); this.cssText = this.cssText.replace(u, n + ": " + i + " !" + r + ";") } }, CSSStyleDeclaration.prototype.removeProperty = function (n) { return this.removeAttribute(n) }, CSSStyleDeclaration.prototype.getPropertyPriority = function (n) { return RegExp(t(n) + "\\s*:\\s*[^\\s]*\\s*!important(\\s*;)?", "gmi").test(this.cssText) ? "important" : "" }); n.fn.style = function (n, t, i) { if (void 0 === this.get(0)) return this; var r = this.get(0).style; return void 0 !== n ? void 0 !== t ? (i = void 0 !== i ? i : "", r.setProperty(n, t, i), this) : r.getPropertyValue(n) : r } } }(jQuery); !function () { function o(t, r, u) { r.isListed ? "go_more_results" == t || t.indexOf("go_more_results") > 0 ? i(u || $("#" + n).val()) : window.location.href = t : i(u || $("#" + n).val()) } function i(n) { if (n && "" != n) { var t = r + encodeURIComponent(n); window.location = t } } var r = "/search.aspx?q=", n = "thisIstheSearchBoxIdTag", u = !1, t = !1, c = !1, f = new Bloodhound({ datumTokenizer: Bloodhound.tokenizers.obj.whitespace("value"), queryTokenizer: Bloodhound.tokenizers.whitespace, limit: 250, remote: { url: "https://brains.tradingeconomics.com/v2/search/all", replace: function (n, t) { var i = n + "?q=" + t + "&as=true&p=0&t=te-ta&nofacets=true&pp=7"; return console.log("_url", i), i } } }); f.initialize(); $("#" + n).iec_typeahead({ items: 7, autoSelect: !1, wrapper: "default", expandable: !0, source: f.ttAdapter(), goDirectly: !0, allow_more: !0, searchBoxId: n, renderDiv: "dpSearch-resultCnt", forceRenderToTextBox: !1, selectionHandler: o, moreUrlFormat: r }); $("#thisIstheTinySearchBoxIdTag").iec_typeahead({ items: 7, autoSelect: !1, wrapper: "default", expandable: !0, source: f.ttAdapter(), goDirectly: !0, allow_more: !0, searchBoxId: "thisIstheTinySearchBoxIdTag", renderDiv: "dpSearch-resultCnt-tiny", forceRenderToTextBox: !1, selectionHandler: o, moreUrlFormat: r }); $("#" + n).on("focus", function () { e() }); $("#" + n).on("focusout", function (t) { $(t.target).attr("id") != n && (c = !1, s()) }); var e = function () { if (myResultsDisplayer = "#dpSearch-resultCnt", !t) { t = !0; var r = $(".navbar-collapse").width(), u = $(".navbar-header").width(), i = Math.min(Math.max(600, r - u - 100), 900); ga("event", "te-search-focus"); console.log("expand"); $("#thisIsTheSearchBoxWrapperId").toggleClass("is-wide-open"); $("#" + n).animate({ width: i }, 301); $("#" + n).toggleClass("d-none d-md-block"); $("#" + n).animate({ width: i }, 10); $(".nav-entry-link-group").addClass("d-none"); $("#" + n).focus(); $("#" + n).val() && $("#" + n).val().length && (console.log("expand immediatly"), h()) } }, s = function () { t && (t = !1, $("#thisIsTheSearchBoxWrapperId").toggleClass("is-wide-open"), $("#" + n).toggleClass("d-none d-md-block"), l(), $("#" + n).css("width", ""), $(".nav-entry-link-group").removeClass("d-none")) }, h = function () { u || (u = !0) }, l = function () { u = !1 }; $("#thisIsTheBigGlyphiconId").click(function () { t ? i($("#" + n).val()) : e() }); $("#thisIsTheSmallGlyphiconId1").click(function () { t ? i($("#" + n).val()) : e() }); $("#thisIsTheTinyGlyphiconId").click(function () { console.log("tiny click"); t || function () { myResultsDisplayer = "#dpSearch-resultCnt-tiny"; $("#mainHeader").hide(300, function () { }); $("#searchMobileHeader").show(300, function () { }); $("#thisIstheTinySearchBoxIdTag").focus(); $("#thisIstheTinySearchBoxIdTag").val() && $("#thisIstheTinySearchBoxIdTag").val().length && (console.log("expand immediatly"), h()) }() }); $("#thisIsTheTinyRemoveId").click(function () { $("#searchMobileHeader").hide(300, function () { }); $("#mainHeader").show(300, function () { }) }); $(document).on("click", function () { !t || $("#dpSearch-resultCnt").is(":hover") || $("#" + n).is(":hover") || $("#" + n).is(":focus") || $("#thisIsTheSearchPlaceholderId").is(":hover") || s() }) }();</script>
vendor: 73 bytes, lines 904-907
904 905 906 907<script async src="https://www.googletagmanager.com/gtag/js?id=
907G-SZ14JCTXWQ
vendor: 13 bytes, line 907
907"></script>
908<script> 909 window.dataLayer = window.dataLayer || []; 910 function ga() { dataLayer.push(arguments); } 911 ga('js', new Date()); 912 ga('consent', 'default', { 913 'ad_personalization': 'granted', 914 'ad_storage': 'granted', 915 'ad_user_data': 'granted', 916 'analytics_storage': 'granted', 917 'functionality_storage': 'granted', 918 'personalization_storage': 'granted', 919 'security_storage': 'granted' 920 }); 921 ga('config', 'G-SZ14JCTXWQ', { 922 'user_properties': { 923 'isLoggedIn': isLoggedIn ? 'true' : 'false', 924 'IsDarkMode': IsDarkMode ? 'true' : 'false' 925 } 926 }); 927</script>
927 928 929</body> 930</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.