CINXE.COM
RFM - Só Grandes Músicas
<!DOCTYPE html> <html lang="pt-pt"> <head> <title>RFM - Só Grandes Músicas</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="robots" content="index, follow, max-image-preview:large" /> <meta name="googlebot" content="index, follow, max-image-preview:large" /> <meta name="id" content="rfm.pt" /> <meta name="author" content="RFM" /> <meta name="revisit-after" content="1 days" /> <meta name="description" content="RFM Online - Só grandes músicas, também na Internet." /> <meta name="keywords" content="Rock in Rio, Bruno Mars, RFM, Rádio, Radio, Music, Humor, Comédia, Nilton, Café da Manhã, Top 25, Jazzy, Dance It, Latinas, 90s, Rocks, Toca Portugal, Oceano Pacífico, 80s RFM, 80srfm, Somnii, radio online, rádio online, emissão online, 6pm, Fridayboyz" /> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"> <meta name="HandheldFriendly" content="True" /> <meta name="MobileOptimized" content="320" /> <meta name="mobile-web-app-capable" content="yes" /> <meta name="apple-itunes-app" content="app-id=1413710774" /> <link rel="manifest" href="/manifest.json" /> <link rel="preconnect" href="https://rfmsite2023-images.azureedge.net/" /> <link rel="dns-prefetch" href="https://rfmsite2023-images.azureedge.net/" /> <link rel="preconnect" href="https://cdnjs.cloudflare.com/" /> <link rel="dns-prefetch" href="https://cdnjs.cloudflare.com/" /> <link rel="preconnect" href="https://cdns.eu1.gigya.com" /> <link rel="dns-prefetch" href="https://cdns.eu1.gigya.com" /> <link rel="preconnect" href="https://www.google-analytics.com" /> <link rel="dns-prefetch" href="https://www.google-analytics.com" /> <link rel="preconnect" href="https://gapt.hit.gemius.pl" /> <link rel="dns-prefetch" href="https://gapt.hit.gemius.pl" /> <link rel="preconnect" href="https://www.googletagmanager.com" /> <link rel="dns-prefetch" href="https://www.googletagmanager.com" /> <!-- Favico --> <link rel="icon" type="image/png" href="https://rfm.pt/favicon-96x96.png" sizes="96x96" /> <link rel="icon" type="image/svg+xml" href="https://rfm.pt/favicon.svg" /> <link rel="shortcut icon" href="https://rfm.pt/favicon.ico" /> <link rel="apple-touch-icon" sizes="180x180" href="https://rfm.pt/apple-touch-icon.png" /> <meta name="apple-mobile-web-app-title" content="RFM" /> <link rel="manifest" href="https://rfm.pt/manifest.json" /> <script type="text/javascript"> var siteUrl = "https://rfm.pt/"; </script> <meta property="og:type" content="website" /> <meta property="og:title" content="RFM - Só Grandes Músicas" /> <meta property="og:description" content="RFM Online - Só grandes músicas, também na Internet." /> <meta property="og:image" content="https://images.rfm.pt/img_rfm_partilha29260980.jpg" /> <meta property="og:url" content="https://rfm.pt/" /> <meta property="og:site_name" content="RFM" /> <!--Tag AMP --> <link rel="canonical" href="https://rfm.pt/" /> <meta property="fb:pages" content="53498842922" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:site" content="@rfmportugal" /> <meta name="twitter:site:id" content="282123042" /> <meta name="twitter:title" content="RFM - Só Grandes Músicas" /> <meta name="twitter:description" content="RFM Online - Só grandes músicas, também na Internet." /> <meta name="twitter:image" content="https://images.rfm.pt/img_rfm_partilha29260980.jpg" /> <meta name="twitter:url" content="https://rfm.pt/" /> <meta property="fb:app_id" content="205173995773" /> <link rel="image_src" href="https://images.rfm.pt/img_rfm_partilha29260980.jpg" /> <link rel="search" type="application/opensearchdescription+xml" title="RFM Search" href="https://rfm.pt/opensearch.xml" /> <link rel="alternate" type="application/rss+xml" title="RFM - Últimas da Atualidade" href="https://rfm.pt/rssfeed" /> <!-- Sitelinks Search Box --> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "RadioStation", "name": "RFM", "url": "https://rfm.pt/", "logo": "https://rfmsite2023-images.azureedge.net/images/logoMain.png", "image":{"@type":"ImageObject","url":"https://rfmsite2023-images.azureedge.net/images/logoMain.png"}, "address" :{ "@type": "PostalAddress", "streetAddress": "Quinta do Bom Pastor, Estrada da Buraca 8-12", "addressLocality": "Lisboa", "postalCode": "1549-025", "addressCountry": "PT" }, "telephone": "+351213239200", "sameAs": [ "https://www.facebook.com/rfmoficial/", "https://www.instagram.com/rfmportugal/", "https://twitter.com/rfmportugal", "https://www.youtube.com/RFMsoGrandesMusicas" ] } </script> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "WebSite", "name": "RFM", "url": "https://rfm.pt/" } </script> <!-- Preload css --> <link rel="preload" href="https://rfmsite2023-images.azureedge.net/css/normalize.min.css?v=2.9" as="style"/> <link rel="preload" href="https://rfm.pt/css/main.min.css?v=2.9" as="style"/> <link rel="preload" href="https://rfmsite2023-images.azureedge.net/css/menu.min.css?v=2.9" as="style"/> <link rel="preload" href="https://rfmsite2023-images.azureedge.net/css/mediaqueries.min.css?v=2.9" as="style"/> <link rel="preload" href="https://rfmsite2023-images.azureedge.net/css/slick.min.css?v=2.9" as="style"/> <link rel="preload" href="https://rfmsite2023-images.azureedge.net/css/slick-theme.min.css?v=2.9" as="style"/> <!-- Fim Preload css --> <!-- Preload js --> <link rel="preload" href="https://rfmsite2023-images.azureedge.net/js/navbar.min.js?v=2.8" as="script" /> <link rel="preload" href="https://rfmsite2023-images.azureedge.net/js/scripts.min.js?v=2.8" as="script" /> <link rel="preload" href="https://rfmsite2023-images.azureedge.net/js/lazysizes.min.js?v=2.8" as="script" /> <link rel="preload" href="https://rfmsite2023-images.azureedge.net/js/pub/anti-adblocker.js?v=2.8" as="script" /> <!-- Fim Preload js --> <!--css's--> <link rel="stylesheet" media="all" type="text/css" href="https://rfmsite2023-images.azureedge.net/css/normalize.min.css?v=2.9" /> <link rel="stylesheet" media="all" type="text/css" href="https://rfm.pt/css/main.min.css?v=2.9" /> <link rel="stylesheet" media="all" type="text/css" href="https://rfmsite2023-images.azureedge.net/css/menu.min.css?v=2.9" /> <link rel="stylesheet" media="all" type="text/css" href="https://rfmsite2023-images.azureedge.net/css/mediaqueries.min.css?v=2.9" /> <link rel="stylesheet" media="all" type="text/css" href="https://rfmsite2023-images.azureedge.net/css/slick.min.css?v=2.9" /> <link rel="stylesheet" media="all" type="text/css" href="https://rfmsite2023-images.azureedge.net/css/slick-theme.min.css?v=2.9" /> <!-- Fim css's--> <!-- js's --> <script>!function (e, t) { "use strict"; "object" == typeof module && "object" == typeof module.exports ? module.exports = e.document ? t(e, !0) : function (e) { if (!e.document) throw new Error("jQuery requires a window with a document"); return t(e) } : t(e) }("undefined" != typeof window ? window : this, function (ie, e) { "use strict"; var oe = [], r = Object.getPrototypeOf, ae = oe.slice, g = oe.flat ? function (e) { return oe.flat.call(e) } : function (e) { return oe.concat.apply([], e) }, s = oe.push, se = oe.indexOf, n = {}, i = n.toString, ue = n.hasOwnProperty, o = ue.toString, a = o.call(Object), le = {}, v = function (e) { return "function" == typeof e && "number" != typeof e.nodeType && "function" != typeof e.item }, y = function (e) { return null != e && e === e.window }, C = ie.document, u = { type: !0, src: !0, nonce: !0, noModule: !0 }; function m(e, t, n) { var r, i, o = (n = n || C).createElement("script"); if (o.text = e, t) for (r in u) (i = t[r] || t.getAttribute && t.getAttribute(r)) && o.setAttribute(r, i); n.head.appendChild(o).parentNode.removeChild(o) } function x(e) { return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? n[i.call(e)] || "object" : typeof e } var t = "3.7.1", l = /HTML$/i, ce = function (e, t) { return new ce.fn.init(e, t) }; function c(e) { var t = !!e && "length" in e && e.length, n = x(e); return !v(e) && !y(e) && ("array" === n || 0 === t || "number" == typeof t && 0 < t && t - 1 in e) } function fe(e, t) { return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase() } ce.fn = ce.prototype = { jquery: t, constructor: ce, length: 0, toArray: function () { return ae.call(this) }, get: function (e) { return null == e ? ae.call(this) : e < 0 ? this[e + this.length] : this[e] }, pushStack: function (e) { var t = ce.merge(this.constructor(), e); return t.prevObject = this, t }, each: function (e) { return ce.each(this, e) }, map: function (n) { return this.pushStack(ce.map(this, function (e, t) { return n.call(e, t, e) })) }, slice: function () { return this.pushStack(ae.apply(this, arguments)) }, first: function () { return this.eq(0) }, last: function () { return this.eq(-1) }, even: function () { return this.pushStack(ce.grep(this, function (e, t) { return (t + 1) % 2 })) }, odd: function () { return this.pushStack(ce.grep(this, function (e, t) { return t % 2 })) }, eq: function (e) { var t = this.length, n = +e + (e < 0 ? t : 0); return this.pushStack(0 <= n && n < t ? [this[n]] : []) }, end: function () { return this.prevObject || this.constructor() }, push: s, sort: oe.sort, splice: oe.splice }, ce.extend = ce.fn.extend = function () { var e, t, n, r, i, o, a = arguments[0] || {}, s = 1, u = arguments.length, l = !1; for ("boolean" == typeof a && (l = a, a = arguments[s] || {}, s++), "object" == typeof a || v(a) || (a = {}), s === u && (a = this, s--); s < u; s++)if (null != (e = arguments[s])) for (t in e) r = e[t], "__proto__" !== t && a !== r && (l && r && (ce.isPlainObject(r) || (i = Array.isArray(r))) ? (n = a[t], o = i && !Array.isArray(n) ? [] : i || ce.isPlainObject(n) ? n : {}, i = !1, a[t] = ce.extend(l, o, r)) : void 0 !== r && (a[t] = r)); return a }, ce.extend({ expando: "jQuery" + (t + Math.random()).replace(/\D/g, ""), isReady: !0, error: function (e) { throw new Error(e) }, noop: function () { }, isPlainObject: function (e) { var t, n; return !(!e || "[object Object]" !== i.call(e)) && (!(t = r(e)) || "function" == typeof (n = ue.call(t, "constructor") && t.constructor) && o.call(n) === a) }, isEmptyObject: function (e) { var t; for (t in e) return !1; return !0 }, globalEval: function (e, t, n) { m(e, { nonce: t && t.nonce }, n) }, each: function (e, t) { var n, r = 0; if (c(e)) { for (n = e.length; r < n; r++)if (!1 === t.call(e[r], r, e[r])) break } else for (r in e) if (!1 === t.call(e[r], r, e[r])) break; return e }, text: function (e) { var t, n = "", r = 0, i = e.nodeType; if (!i) while (t = e[r++]) n += ce.text(t); return 1 === i || 11 === i ? e.textContent : 9 === i ? e.documentElement.textContent : 3 === i || 4 === i ? e.nodeValue : n }, makeArray: function (e, t) { var n = t || []; return null != e && (c(Object(e)) ? ce.merge(n, "string" == typeof e ? [e] : e) : s.call(n, e)), n }, inArray: function (e, t, n) { return null == t ? -1 : se.call(t, e, n) }, isXMLDoc: function (e) { var t = e && e.namespaceURI, n = e && (e.ownerDocument || e).documentElement; return !l.test(t || n && n.nodeName || "HTML") }, merge: function (e, t) { for (var n = +t.length, r = 0, i = e.length; r < n; r++)e[i++] = t[r]; return e.length = i, e }, grep: function (e, t, n) { for (var r = [], i = 0, o = e.length, a = !n; i < o; i++)!t(e[i], i) !== a && r.push(e[i]); return r }, map: function (e, t, n) { var r, i, o = 0, a = []; if (c(e)) for (r = e.length; o < r; o++)null != (i = t(e[o], o, n)) && a.push(i); else for (o in e) null != (i = t(e[o], o, n)) && a.push(i); return g(a) }, guid: 1, support: le }), "function" == typeof Symbol && (ce.fn[Symbol.iterator] = oe[Symbol.iterator]), ce.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function (e, t) { n["[object " + t + "]"] = t.toLowerCase() }); var pe = oe.pop, de = oe.sort, he = oe.splice, ge = "[\\x20\\t\\r\\n\\f]", ve = new RegExp("^" + ge + "+|((?:^|[^\\\\])(?:\\\\.)*)" + ge + "+$", "g"); ce.contains = function (e, t) { var n = t && t.parentNode; return e === n || !(!n || 1 !== n.nodeType || !(e.contains ? e.contains(n) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(n))) }; var f = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; function p(e, t) { return t ? "\0" === e ? "\ufffd" : e.slice(0, -1) + "\\" + e.charCodeAt(e.length - 1).toString(16) + " " : "\\" + e } ce.escapeSelector = function (e) { return (e + "").replace(f, p) }; var ye = C, me = s; !function () { var e, b, w, o, a, T, r, C, d, i, k = me, S = ce.expando, E = 0, n = 0, s = W(), c = W(), u = W(), h = W(), l = function (e, t) { return e === t && (a = !0), 0 }, f = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", t = "(?:\\\\[\\da-fA-F]{1,6}" + ge + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", p = "\\[" + ge + "*(" + t + ")(?:" + ge + "*([*^$|!~]?=)" + ge + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + t + "))|)" + ge + "*\\]", g = ":(" + t + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + p + ")*)|.*)\\)|)", v = new RegExp(ge + "+", "g"), y = new RegExp("^" + ge + "*," + ge + "*"), m = new RegExp("^" + ge + "*([>+~]|" + ge + ")" + ge + "*"), x = new RegExp(ge + "|>"), j = new RegExp(g), A = new RegExp("^" + t + "$"), D = { ID: new RegExp("^#(" + t + ")"), CLASS: new RegExp("^\\.(" + t + ")"), TAG: new RegExp("^(" + t + "|[*])"), ATTR: new RegExp("^" + p), PSEUDO: new RegExp("^" + g), CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + ge + "*(even|odd|(([+-]|)(\\d*)n|)" + ge + "*(?:([+-]|)" + ge + "*(\\d+)|))" + ge + "*\\)|)", "i"), bool: new RegExp("^(?:" + f + ")$", "i"), needsContext: new RegExp("^" + ge + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + ge + "*((?:-\\d)?\\d*)" + ge + "*\\)|)(?=[^-]|$)", "i") }, N = /^(?:input|select|textarea|button)$/i, q = /^h\d$/i, L = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, H = /[+~]/, O = new RegExp("\\\\[\\da-fA-F]{1,6}" + ge + "?|\\\\([^\\r\\n\\f])", "g"), P = function (e, t) { var n = "0x" + e.slice(1) - 65536; return t || (n < 0 ? String.fromCharCode(n + 65536) : String.fromCharCode(n >> 10 | 55296, 1023 & n | 56320)) }, M = function () { V() }, R = J(function (e) { return !0 === e.disabled && fe(e, "fieldset") }, { dir: "parentNode", next: "legend" }); try { k.apply(oe = ae.call(ye.childNodes), ye.childNodes), oe[ye.childNodes.length].nodeType } catch (e) { k = { apply: function (e, t) { me.apply(e, ae.call(t)) }, call: function (e) { me.apply(e, ae.call(arguments, 1)) } } } function I(t, e, n, r) { var i, o, a, s, u, l, c, f = e && e.ownerDocument, p = e ? e.nodeType : 9; if (n = n || [], "string" != typeof t || !t || 1 !== p && 9 !== p && 11 !== p) return n; if (!r && (V(e), e = e || T, C)) { if (11 !== p && (u = L.exec(t))) if (i = u[1]) { if (9 === p) { if (!(a = e.getElementById(i))) return n; if (a.id === i) return k.call(n, a), n } else if (f && (a = f.getElementById(i)) && I.contains(e, a) && a.id === i) return k.call(n, a), n } else { if (u[2]) return k.apply(n, e.getElementsByTagName(t)), n; if ((i = u[3]) && e.getElementsByClassName) return k.apply(n, e.getElementsByClassName(i)), n } if (!(h[t + " "] || d && d.test(t))) { if (c = t, f = e, 1 === p && (x.test(t) || m.test(t))) { (f = H.test(t) && U(e.parentNode) || e) == e && le.scope || ((s = e.getAttribute("id")) ? s = ce.escapeSelector(s) : e.setAttribute("id", s = S)), o = (l = Y(t)).length; while (o--) l[o] = (s ? "#" + s : ":scope") + " " + Q(l[o]); c = l.join(",") } try { return k.apply(n, f.querySelectorAll(c)), n } catch (e) { h(t, !0) } finally { s === S && e.removeAttribute("id") } } } return re(t.replace(ve, "$1"), e, n, r) } function W() { var r = []; return function e(t, n) { return r.push(t + " ") > b.cacheLength && delete e[r.shift()], e[t + " "] = n } } function F(e) { return e[S] = !0, e } function $(e) { var t = T.createElement("fieldset"); try { return !!e(t) } catch (e) { return !1 } finally { t.parentNode && t.parentNode.removeChild(t), t = null } } function B(t) { return function (e) { return fe(e, "input") && e.type === t } } function _(t) { return function (e) { return (fe(e, "input") || fe(e, "button")) && e.type === t } } function z(t) { return function (e) { return "form" in e ? e.parentNode && !1 === e.disabled ? "label" in e ? "label" in e.parentNode ? e.parentNode.disabled === t : e.disabled === t : e.isDisabled === t || e.isDisabled !== !t && R(e) === t : e.disabled === t : "label" in e && e.disabled === t } } function X(a) { return F(function (o) { return o = +o, F(function (e, t) { var n, r = a([], e.length, o), i = r.length; while (i--) e[n = r[i]] && (e[n] = !(t[n] = e[n])) }) }) } function U(e) { return e && "undefined" != typeof e.getElementsByTagName && e } function V(e) { var t, n = e ? e.ownerDocument || e : ye; return n != T && 9 === n.nodeType && n.documentElement && (r = (T = n).documentElement, C = !ce.isXMLDoc(T), i = r.matches || r.webkitMatchesSelector || r.msMatchesSelector, r.msMatchesSelector && ye != T && (t = T.defaultView) && t.top !== t && t.addEventListener("unload", M), le.getById = $(function (e) { return r.appendChild(e).id = ce.expando, !T.getElementsByName || !T.getElementsByName(ce.expando).length }), le.disconnectedMatch = $(function (e) { return i.call(e, "*") }), le.scope = $(function () { return T.querySelectorAll(":scope") }), le.cssHas = $(function () { try { return T.querySelector(":has(*,:jqfake)"), !1 } catch (e) { return !0 } }), le.getById ? (b.filter.ID = function (e) { var t = e.replace(O, P); return function (e) { return e.getAttribute("id") === t } }, b.find.ID = function (e, t) { if ("undefined" != typeof t.getElementById && C) { var n = t.getElementById(e); return n ? [n] : [] } }) : (b.filter.ID = function (e) { var n = e.replace(O, P); return function (e) { var t = "undefined" != typeof e.getAttributeNode && e.getAttributeNode("id"); return t && t.value === n } }, b.find.ID = function (e, t) { if ("undefined" != typeof t.getElementById && C) { var n, r, i, o = t.getElementById(e); if (o) { if ((n = o.getAttributeNode("id")) && n.value === e) return [o]; i = t.getElementsByName(e), r = 0; while (o = i[r++]) if ((n = o.getAttributeNode("id")) && n.value === e) return [o] } return [] } }), b.find.TAG = function (e, t) { return "undefined" != typeof t.getElementsByTagName ? t.getElementsByTagName(e) : t.querySelectorAll(e) }, b.find.CLASS = function (e, t) { if ("undefined" != typeof t.getElementsByClassName && C) return t.getElementsByClassName(e) }, d = [], $(function (e) { var t; r.appendChild(e).innerHTML = "<a id='" + S + "' href='' disabled='disabled'></a><select id='" + S + "-\r\\' disabled='disabled'><option selected=''></option></select>", e.querySelectorAll("[selected]").length || d.push("\\[" + ge + "*(?:value|" + f + ")"), e.querySelectorAll("[id~=" + S + "-]").length || d.push("~="), e.querySelectorAll("a#" + S + "+*").length || d.push(".#.+[+~]"), e.querySelectorAll(":checked").length || d.push(":checked"), (t = T.createElement("input")).setAttribute("type", "hidden"), e.appendChild(t).setAttribute("name", "D"), r.appendChild(e).disabled = !0, 2 !== e.querySelectorAll(":disabled").length && d.push(":enabled", ":disabled"), (t = T.createElement("input")).setAttribute("name", ""), e.appendChild(t), e.querySelectorAll("[name='']").length || d.push("\\[" + ge + "*name" + ge + "*=" + ge + "*(?:''|\"\")") }), le.cssHas || d.push(":has"), d = d.length && new RegExp(d.join("|")), l = function (e, t) { if (e === t) return a = !0, 0; var n = !e.compareDocumentPosition - !t.compareDocumentPosition; return n || (1 & (n = (e.ownerDocument || e) == (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !le.sortDetached && t.compareDocumentPosition(e) === n ? e === T || e.ownerDocument == ye && I.contains(ye, e) ? -1 : t === T || t.ownerDocument == ye && I.contains(ye, t) ? 1 : o ? se.call(o, e) - se.call(o, t) : 0 : 4 & n ? -1 : 1) }), T } for (e in I.matches = function (e, t) { return I(e, null, null, t) }, I.matchesSelector = function (e, t) { if (V(e), C && !h[t + " "] && (!d || !d.test(t))) try { var n = i.call(e, t); if (n || le.disconnectedMatch || e.document && 11 !== e.document.nodeType) return n } catch (e) { h(t, !0) } return 0 < I(t, T, null, [e]).length }, I.contains = function (e, t) { return (e.ownerDocument || e) != T && V(e), ce.contains(e, t) }, I.attr = function (e, t) { (e.ownerDocument || e) != T && V(e); var n = b.attrHandle[t.toLowerCase()], r = n && ue.call(b.attrHandle, t.toLowerCase()) ? n(e, t, !C) : void 0; return void 0 !== r ? r : e.getAttribute(t) }, I.error = function (e) { throw new Error("Syntax error, unrecognized expression: " + e) }, ce.uniqueSort = function (e) { var t, n = [], r = 0, i = 0; if (a = !le.sortStable, o = !le.sortStable && ae.call(e, 0), de.call(e, l), a) { while (t = e[i++]) t === e[i] && (r = n.push(i)); while (r--) he.call(e, n[r], 1) } return o = null, e }, ce.fn.uniqueSort = function () { return this.pushStack(ce.uniqueSort(ae.apply(this))) }, (b = ce.expr = { cacheLength: 50, createPseudo: F, match: D, attrHandle: {}, find: {}, relative: { ">": { dir: "parentNode", first: !0 }, " ": { dir: "parentNode" }, "+": { dir: "previousSibling", first: !0 }, "~": { dir: "previousSibling" } }, preFilter: { ATTR: function (e) { return e[1] = e[1].replace(O, P), e[3] = (e[3] || e[4] || e[5] || "").replace(O, P), "~=" === e[2] && (e[3] = " " + e[3] + " "), e.slice(0, 4) }, CHILD: function (e) { return e[1] = e[1].toLowerCase(), "nth" === e[1].slice(0, 3) ? (e[3] || I.error(e[0]), e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])), e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && I.error(e[0]), e }, PSEUDO: function (e) { var t, n = !e[6] && e[2]; return D.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && j.test(n) && (t = Y(n, !0)) && (t = n.indexOf(")", n.length - t) - n.length) && (e[0] = e[0].slice(0, t), e[2] = n.slice(0, t)), e.slice(0, 3)) } }, filter: { TAG: function (e) { var t = e.replace(O, P).toLowerCase(); return "*" === e ? function () { return !0 } : function (e) { return fe(e, t) } }, CLASS: function (e) { var t = s[e + " "]; return t || (t = new RegExp("(^|" + ge + ")" + e + "(" + ge + "|$)")) && s(e, function (e) { return t.test("string" == typeof e.className && e.className || "undefined" != typeof e.getAttribute && e.getAttribute("class") || "") }) }, ATTR: function (n, r, i) { return function (e) { var t = I.attr(e, n); return null == t ? "!=" === r : !r || (t += "", "=" === r ? t === i : "!=" === r ? t !== i : "^=" === r ? i && 0 === t.indexOf(i) : "*=" === r ? i && -1 < t.indexOf(i) : "$=" === r ? i && t.slice(-i.length) === i : "~=" === r ? -1 < (" " + t.replace(v, " ") + " ").indexOf(i) : "|=" === r && (t === i || t.slice(0, i.length + 1) === i + "-")) } }, CHILD: function (d, e, t, h, g) { var v = "nth" !== d.slice(0, 3), y = "last" !== d.slice(-4), m = "of-type" === e; return 1 === h && 0 === g ? function (e) { return !!e.parentNode } : function (e, t, n) { var r, i, o, a, s, u = v !== y ? "nextSibling" : "previousSibling", l = e.parentNode, c = m && e.nodeName.toLowerCase(), f = !n && !m, p = !1; if (l) { if (v) { while (u) { o = e; while (o = o[u]) if (m ? fe(o, c) : 1 === o.nodeType) return !1; s = u = "only" === d && !s && "nextSibling" } return !0 } if (s = [y ? l.firstChild : l.lastChild], y && f) { p = (a = (r = (i = l[S] || (l[S] = {}))[d] || [])[0] === E && r[1]) && r[2], o = a && l.childNodes[a]; while (o = ++a && o && o[u] || (p = a = 0) || s.pop()) if (1 === o.nodeType && ++p && o === e) { i[d] = [E, a, p]; break } } else if (f && (p = a = (r = (i = e[S] || (e[S] = {}))[d] || [])[0] === E && r[1]), !1 === p) while (o = ++a && o && o[u] || (p = a = 0) || s.pop()) if ((m ? fe(o, c) : 1 === o.nodeType) && ++p && (f && ((i = o[S] || (o[S] = {}))[d] = [E, p]), o === e)) break; return (p -= g) === h || p % h == 0 && 0 <= p / h } } }, PSEUDO: function (e, o) { var t, a = b.pseudos[e] || b.setFilters[e.toLowerCase()] || I.error("unsupported pseudo: " + e); return a[S] ? a(o) : 1 < a.length ? (t = [e, e, "", o], b.setFilters.hasOwnProperty(e.toLowerCase()) ? F(function (e, t) { var n, r = a(e, o), i = r.length; while (i--) e[n = se.call(e, r[i])] = !(t[n] = r[i]) }) : function (e) { return a(e, 0, t) }) : a } }, pseudos: { not: F(function (e) { var r = [], i = [], s = ne(e.replace(ve, "$1")); return s[S] ? F(function (e, t, n, r) { var i, o = s(e, null, r, []), a = e.length; while (a--) (i = o[a]) && (e[a] = !(t[a] = i)) }) : function (e, t, n) { return r[0] = e, s(r, null, n, i), r[0] = null, !i.pop() } }), has: F(function (t) { return function (e) { return 0 < I(t, e).length } }), contains: F(function (t) { return t = t.replace(O, P), function (e) { return -1 < (e.textContent || ce.text(e)).indexOf(t) } }), lang: F(function (n) { return A.test(n || "") || I.error("unsupported lang: " + n), n = n.replace(O, P).toLowerCase(), function (e) { var t; do { if (t = C ? e.lang : e.getAttribute("xml:lang") || e.getAttribute("lang")) return (t = t.toLowerCase()) === n || 0 === t.indexOf(n + "-") } while ((e = e.parentNode) && 1 === e.nodeType); return !1 } }), target: function (e) { var t = ie.location && ie.location.hash; return t && t.slice(1) === e.id }, root: function (e) { return e === r }, focus: function (e) { return e === function () { try { return T.activeElement } catch (e) { } }() && T.hasFocus() && !!(e.type || e.href || ~e.tabIndex) }, enabled: z(!1), disabled: z(!0), checked: function (e) { return fe(e, "input") && !!e.checked || fe(e, "option") && !!e.selected }, selected: function (e) { return e.parentNode && e.parentNode.selectedIndex, !0 === e.selected }, empty: function (e) { for (e = e.firstChild; e; e = e.nextSibling)if (e.nodeType < 6) return !1; return !0 }, parent: function (e) { return !b.pseudos.empty(e) }, header: function (e) { return q.test(e.nodeName) }, input: function (e) { return N.test(e.nodeName) }, button: function (e) { return fe(e, "input") && "button" === e.type || fe(e, "button") }, text: function (e) { var t; return fe(e, "input") && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase()) }, first: X(function () { return [0] }), last: X(function (e, t) { return [t - 1] }), eq: X(function (e, t, n) { return [n < 0 ? n + t : n] }), even: X(function (e, t) { for (var n = 0; n < t; n += 2)e.push(n); return e }), odd: X(function (e, t) { for (var n = 1; n < t; n += 2)e.push(n); return e }), lt: X(function (e, t, n) { var r; for (r = n < 0 ? n + t : t < n ? t : n; 0 <= --r;)e.push(r); return e }), gt: X(function (e, t, n) { for (var r = n < 0 ? n + t : n; ++r < t;)e.push(r); return e }) } }).pseudos.nth = b.pseudos.eq, { radio: !0, checkbox: !0, file: !0, password: !0, image: !0 }) b.pseudos[e] = B(e); for (e in { submit: !0, reset: !0 }) b.pseudos[e] = _(e); function G() { } function Y(e, t) { var n, r, i, o, a, s, u, l = c[e + " "]; if (l) return t ? 0 : l.slice(0); a = e, s = [], u = b.preFilter; while (a) { for (o in n && !(r = y.exec(a)) || (r && (a = a.slice(r[0].length) || a), s.push(i = [])), n = !1, (r = m.exec(a)) && (n = r.shift(), i.push({ value: n, type: r[0].replace(ve, " ") }), a = a.slice(n.length)), b.filter) !(r = D[o].exec(a)) || u[o] && !(r = u[o](r)) || (n = r.shift(), i.push({ value: n, type: o, matches: r }), a = a.slice(n.length)); if (!n) break } return t ? a.length : a ? I.error(e) : c(e, s).slice(0) } function Q(e) { for (var t = 0, n = e.length, r = ""; t < n; t++)r += e[t].value; return r } function J(a, e, t) { var s = e.dir, u = e.next, l = u || s, c = t && "parentNode" === l, f = n++; return e.first ? function (e, t, n) { while (e = e[s]) if (1 === e.nodeType || c) return a(e, t, n); return !1 } : function (e, t, n) { var r, i, o = [E, f]; if (n) { while (e = e[s]) if ((1 === e.nodeType || c) && a(e, t, n)) return !0 } else while (e = e[s]) if (1 === e.nodeType || c) if (i = e[S] || (e[S] = {}), u && fe(e, u)) e = e[s] || e; else { if ((r = i[l]) && r[0] === E && r[1] === f) return o[2] = r[2]; if ((i[l] = o)[2] = a(e, t, n)) return !0 } return !1 } } function K(i) { return 1 < i.length ? function (e, t, n) { var r = i.length; while (r--) if (!i[r](e, t, n)) return !1; return !0 } : i[0] } function Z(e, t, n, r, i) { for (var o, a = [], s = 0, u = e.length, l = null != t; s < u; s++)(o = e[s]) && (n && !n(o, r, i) || (a.push(o), l && t.push(s))); return a } function ee(d, h, g, v, y, e) { return v && !v[S] && (v = ee(v)), y && !y[S] && (y = ee(y, e)), F(function (e, t, n, r) { var i, o, a, s, u = [], l = [], c = t.length, f = e || function (e, t, n) { for (var r = 0, i = t.length; r < i; r++)I(e, t[r], n); return n }(h || "*", n.nodeType ? [n] : n, []), p = !d || !e && h ? f : Z(f, u, d, n, r); if (g ? g(p, s = y || (e ? d : c || v) ? [] : t, n, r) : s = p, v) { i = Z(s, l), v(i, [], n, r), o = i.length; while (o--) (a = i[o]) && (s[l[o]] = !(p[l[o]] = a)) } if (e) { if (y || d) { if (y) { i = [], o = s.length; while (o--) (a = s[o]) && i.push(p[o] = a); y(null, s = [], i, r) } o = s.length; while (o--) (a = s[o]) && -1 < (i = y ? se.call(e, a) : u[o]) && (e[i] = !(t[i] = a)) } } else s = Z(s === t ? s.splice(c, s.length) : s), y ? y(null, t, s, r) : k.apply(t, s) }) } function te(e) { for (var i, t, n, r = e.length, o = b.relative[e[0].type], a = o || b.relative[" "], s = o ? 1 : 0, u = J(function (e) { return e === i }, a, !0), l = J(function (e) { return -1 < se.call(i, e) }, a, !0), c = [function (e, t, n) { var r = !o && (n || t != w) || ((i = t).nodeType ? u(e, t, n) : l(e, t, n)); return i = null, r }]; s < r; s++)if (t = b.relative[e[s].type]) c = [J(K(c), t)]; else { if ((t = b.filter[e[s].type].apply(null, e[s].matches))[S]) { for (n = ++s; n < r; n++)if (b.relative[e[n].type]) break; return ee(1 < s && K(c), 1 < s && Q(e.slice(0, s - 1).concat({ value: " " === e[s - 2].type ? "*" : "" })).replace(ve, "$1"), t, s < n && te(e.slice(s, n)), n < r && te(e = e.slice(n)), n < r && Q(e)) } c.push(t) } return K(c) } function ne(e, t) { var n, v, y, m, x, r, i = [], o = [], a = u[e + " "]; if (!a) { t || (t = Y(e)), n = t.length; while (n--) (a = te(t[n]))[S] ? i.push(a) : o.push(a); (a = u(e, (v = o, m = 0 < (y = i).length, x = 0 < v.length, r = function (e, t, n, r, i) { var o, a, s, u = 0, l = "0", c = e && [], f = [], p = w, d = e || x && b.find.TAG("*", i), h = E += null == p ? 1 : Math.random() || .1, g = d.length; for (i && (w = t == T || t || i); l !== g && null != (o = d[l]); l++) { if (x && o) { a = 0, t || o.ownerDocument == T || (V(o), n = !C); while (s = v[a++]) if (s(o, t || T, n)) { k.call(r, o); break } i && (E = h) } m && ((o = !s && o) && u--, e && c.push(o)) } if (u += l, m && l !== u) { a = 0; while (s = y[a++]) s(c, f, t, n); if (e) { if (0 < u) while (l--) c[l] || f[l] || (f[l] = pe.call(r)); f = Z(f) } k.apply(r, f), i && !e && 0 < f.length && 1 < u + y.length && ce.uniqueSort(r) } return i && (E = h, w = p), c }, m ? F(r) : r))).selector = e } return a } function re(e, t, n, r) { var i, o, a, s, u, l = "function" == typeof e && e, c = !r && Y(e = l.selector || e); if (n = n || [], 1 === c.length) { if (2 < (o = c[0] = c[0].slice(0)).length && "ID" === (a = o[0]).type && 9 === t.nodeType && C && b.relative[o[1].type]) { if (!(t = (b.find.ID(a.matches[0].replace(O, P), t) || [])[0])) return n; l && (t = t.parentNode), e = e.slice(o.shift().value.length) } i = D.needsContext.test(e) ? 0 : o.length; while (i--) { if (a = o[i], b.relative[s = a.type]) break; if ((u = b.find[s]) && (r = u(a.matches[0].replace(O, P), H.test(o[0].type) && U(t.parentNode) || t))) { if (o.splice(i, 1), !(e = r.length && Q(o))) return k.apply(n, r), n; break } } } return (l || ne(e, c))(r, t, !C, n, !t || H.test(e) && U(t.parentNode) || t), n } G.prototype = b.filters = b.pseudos, b.setFilters = new G, le.sortStable = S.split("").sort(l).join("") === S, V(), le.sortDetached = $(function (e) { return 1 & e.compareDocumentPosition(T.createElement("fieldset")) }), ce.find = I, ce.expr[":"] = ce.expr.pseudos, ce.unique = ce.uniqueSort, I.compile = ne, I.select = re, I.setDocument = V, I.tokenize = Y, I.escape = ce.escapeSelector, I.getText = ce.text, I.isXML = ce.isXMLDoc, I.selectors = ce.expr, I.support = ce.support, I.uniqueSort = ce.uniqueSort }(); var d = function (e, t, n) { var r = [], i = void 0 !== n; while ((e = e[t]) && 9 !== e.nodeType) if (1 === e.nodeType) { if (i && ce(e).is(n)) break; r.push(e) } return r }, h = function (e, t) { for (var n = []; e; e = e.nextSibling)1 === e.nodeType && e !== t && n.push(e); return n }, b = ce.expr.match.needsContext, w = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i; function T(e, n, r) { return v(n) ? ce.grep(e, function (e, t) { return !!n.call(e, t, e) !== r }) : n.nodeType ? ce.grep(e, function (e) { return e === n !== r }) : "string" != typeof n ? ce.grep(e, function (e) { return -1 < se.call(n, e) !== r }) : ce.filter(n, e, r) } ce.filter = function (e, t, n) { var r = t[0]; return n && (e = ":not(" + e + ")"), 1 === t.length && 1 === r.nodeType ? ce.find.matchesSelector(r, e) ? [r] : [] : ce.find.matches(e, ce.grep(t, function (e) { return 1 === e.nodeType })) }, ce.fn.extend({ find: function (e) { var t, n, r = this.length, i = this; if ("string" != typeof e) return this.pushStack(ce(e).filter(function () { for (t = 0; t < r; t++)if (ce.contains(i[t], this)) return !0 })); for (n = this.pushStack([]), t = 0; t < r; t++)ce.find(e, i[t], n); return 1 < r ? ce.uniqueSort(n) : n }, filter: function (e) { return this.pushStack(T(this, e || [], !1)) }, not: function (e) { return this.pushStack(T(this, e || [], !0)) }, is: function (e) { return !!T(this, "string" == typeof e && b.test(e) ? ce(e) : e || [], !1).length } }); var k, S = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/; (ce.fn.init = function (e, t, n) { var r, i; if (!e) return this; if (n = n || k, "string" == typeof e) { if (!(r = "<" === e[0] && ">" === e[e.length - 1] && 3 <= e.length ? [null, e, null] : S.exec(e)) || !r[1] && t) return !t || t.jquery ? (t || n).find(e) : this.constructor(t).find(e); if (r[1]) { if (t = t instanceof ce ? t[0] : t, ce.merge(this, ce.parseHTML(r[1], t && t.nodeType ? t.ownerDocument || t : C, !0)), w.test(r[1]) && ce.isPlainObject(t)) for (r in t) v(this[r]) ? this[r](t[r]) : this.attr(r, t[r]); return this } return (i = C.getElementById(r[2])) && (this[0] = i, this.length = 1), this } return e.nodeType ? (this[0] = e, this.length = 1, this) : v(e) ? void 0 !== n.ready ? n.ready(e) : e(ce) : ce.makeArray(e, this) }).prototype = ce.fn, k = ce(C); var E = /^(?:parents|prev(?:Until|All))/, j = { children: !0, contents: !0, next: !0, prev: !0 }; function A(e, t) { while ((e = e[t]) && 1 !== e.nodeType); return e } ce.fn.extend({ has: function (e) { var t = ce(e, this), n = t.length; return this.filter(function () { for (var e = 0; e < n; e++)if (ce.contains(this, t[e])) return !0 }) }, closest: function (e, t) { var n, r = 0, i = this.length, o = [], a = "string" != typeof e && ce(e); if (!b.test(e)) for (; r < i; r++)for (n = this[r]; n && n !== t; n = n.parentNode)if (n.nodeType < 11 && (a ? -1 < a.index(n) : 1 === n.nodeType && ce.find.matchesSelector(n, e))) { o.push(n); break } return this.pushStack(1 < o.length ? ce.uniqueSort(o) : o) }, index: function (e) { return e ? "string" == typeof e ? se.call(ce(e), this[0]) : se.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1 }, add: function (e, t) { return this.pushStack(ce.uniqueSort(ce.merge(this.get(), ce(e, t)))) }, addBack: function (e) { return this.add(null == e ? this.prevObject : this.prevObject.filter(e)) } }), ce.each({ parent: function (e) { var t = e.parentNode; return t && 11 !== t.nodeType ? t : null }, parents: function (e) { return d(e, "parentNode") }, parentsUntil: function (e, t, n) { return d(e, "parentNode", n) }, next: function (e) { return A(e, "nextSibling") }, prev: function (e) { return A(e, "previousSibling") }, nextAll: function (e) { return d(e, "nextSibling") }, prevAll: function (e) { return d(e, "previousSibling") }, nextUntil: function (e, t, n) { return d(e, "nextSibling", n) }, prevUntil: function (e, t, n) { return d(e, "previousSibling", n) }, siblings: function (e) { return h((e.parentNode || {}).firstChild, e) }, children: function (e) { return h(e.firstChild) }, contents: function (e) { return null != e.contentDocument && r(e.contentDocument) ? e.contentDocument : (fe(e, "template") && (e = e.content || e), ce.merge([], e.childNodes)) } }, function (r, i) { ce.fn[r] = function (e, t) { var n = ce.map(this, i, e); return "Until" !== r.slice(-5) && (t = e), t && "string" == typeof t && (n = ce.filter(t, n)), 1 < this.length && (j[r] || ce.uniqueSort(n), E.test(r) && n.reverse()), this.pushStack(n) } }); var D = /[^\x20\t\r\n\f]+/g; function N(e) { return e } function q(e) { throw e } function L(e, t, n, r) { var i; try { e && v(i = e.promise) ? i.call(e).done(t).fail(n) : e && v(i = e.then) ? i.call(e, t, n) : t.apply(void 0, [e].slice(r)) } catch (e) { n.apply(void 0, [e]) } } ce.Callbacks = function (r) { var e, n; r = "string" == typeof r ? (e = r, n = {}, ce.each(e.match(D) || [], function (e, t) { n[t] = !0 }), n) : ce.extend({}, r); var i, t, o, a, s = [], u = [], l = -1, c = function () { for (a = a || r.once, o = i = !0; u.length; l = -1) { t = u.shift(); while (++l < s.length) !1 === s[l].apply(t[0], t[1]) && r.stopOnFalse && (l = s.length, t = !1) } r.memory || (t = !1), i = !1, a && (s = t ? [] : "") }, f = { add: function () { return s && (t && !i && (l = s.length - 1, u.push(t)), function n(e) { ce.each(e, function (e, t) { v(t) ? r.unique && f.has(t) || s.push(t) : t && t.length && "string" !== x(t) && n(t) }) }(arguments), t && !i && c()), this }, remove: function () { return ce.each(arguments, function (e, t) { var n; while (-1 < (n = ce.inArray(t, s, n))) s.splice(n, 1), n <= l && l-- }), this }, has: function (e) { return e ? -1 < ce.inArray(e, s) : 0 < s.length }, empty: function () { return s && (s = []), this }, disable: function () { return a = u = [], s = t = "", this }, disabled: function () { return !s }, lock: function () { return a = u = [], t || i || (s = t = ""), this }, locked: function () { return !!a }, fireWith: function (e, t) { return a || (t = [e, (t = t || []).slice ? t.slice() : t], u.push(t), i || c()), this }, fire: function () { return f.fireWith(this, arguments), this }, fired: function () { return !!o } }; return f }, ce.extend({ Deferred: function (e) { var o = [["notify", "progress", ce.Callbacks("memory"), ce.Callbacks("memory"), 2], ["resolve", "done", ce.Callbacks("once memory"), ce.Callbacks("once memory"), 0, "resolved"], ["reject", "fail", ce.Callbacks("once memory"), ce.Callbacks("once memory"), 1, "rejected"]], i = "pending", a = { state: function () { return i }, always: function () { return s.done(arguments).fail(arguments), this }, "catch": function (e) { return a.then(null, e) }, pipe: function () { var i = arguments; return ce.Deferred(function (r) { ce.each(o, function (e, t) { var n = v(i[t[4]]) && i[t[4]]; s[t[1]](function () { var e = n && n.apply(this, arguments); e && v(e.promise) ? e.promise().progress(r.notify).done(r.resolve).fail(r.reject) : r[t[0] + "With"](this, n ? [e] : arguments) }) }), i = null }).promise() }, then: function (t, n, r) { var u = 0; function l(i, o, a, s) { return function () { var n = this, r = arguments, e = function () { var e, t; if (!(i < u)) { if ((e = a.apply(n, r)) === o.promise()) throw new TypeError("Thenable self-resolution"); t = e && ("object" == typeof e || "function" == typeof e) && e.then, v(t) ? s ? t.call(e, l(u, o, N, s), l(u, o, q, s)) : (u++, t.call(e, l(u, o, N, s), l(u, o, q, s), l(u, o, N, o.notifyWith))) : (a !== N && (n = void 0, r = [e]), (s || o.resolveWith)(n, r)) } }, t = s ? e : function () { try { e() } catch (e) { ce.Deferred.exceptionHook && ce.Deferred.exceptionHook(e, t.error), u <= i + 1 && (a !== q && (n = void 0, r = [e]), o.rejectWith(n, r)) } }; i ? t() : (ce.Deferred.getErrorHook ? t.error = ce.Deferred.getErrorHook() : ce.Deferred.getStackHook && (t.error = ce.Deferred.getStackHook()), ie.setTimeout(t)) } } return ce.Deferred(function (e) { o[0][3].add(l(0, e, v(r) ? r : N, e.notifyWith)), o[1][3].add(l(0, e, v(t) ? t : N)), o[2][3].add(l(0, e, v(n) ? n : q)) }).promise() }, promise: function (e) { return null != e ? ce.extend(e, a) : a } }, s = {}; return ce.each(o, function (e, t) { var n = t[2], r = t[5]; a[t[1]] = n.add, r && n.add(function () { i = r }, o[3 - e][2].disable, o[3 - e][3].disable, o[0][2].lock, o[0][3].lock), n.add(t[3].fire), s[t[0]] = function () { return s[t[0] + "With"](this === s ? void 0 : this, arguments), this }, s[t[0] + "With"] = n.fireWith }), a.promise(s), e && e.call(s, s), s }, when: function (e) { var n = arguments.length, t = n, r = Array(t), i = ae.call(arguments), o = ce.Deferred(), a = function (t) { return function (e) { r[t] = this, i[t] = 1 < arguments.length ? ae.call(arguments) : e, --n || o.resolveWith(r, i) } }; if (n <= 1 && (L(e, o.done(a(t)).resolve, o.reject, !n), "pending" === o.state() || v(i[t] && i[t].then))) return o.then(); while (t--) L(i[t], a(t), o.reject); return o.promise() } }); var H = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; ce.Deferred.exceptionHook = function (e, t) { ie.console && ie.console.warn && e && H.test(e.name) && ie.console.warn("jQuery.Deferred exception: " + e.message, e.stack, t) }, ce.readyException = function (e) { ie.setTimeout(function () { throw e }) }; var O = ce.Deferred(); function P() { C.removeEventListener("DOMContentLoaded", P), ie.removeEventListener("load", P), ce.ready() } ce.fn.ready = function (e) { return O.then(e)["catch"](function (e) { ce.readyException(e) }), this }, ce.extend({ isReady: !1, readyWait: 1, ready: function (e) { (!0 === e ? --ce.readyWait : ce.isReady) || (ce.isReady = !0) !== e && 0 < --ce.readyWait || O.resolveWith(C, [ce]) } }), ce.ready.then = O.then, "complete" === C.readyState || "loading" !== C.readyState && !C.documentElement.doScroll ? ie.setTimeout(ce.ready) : (C.addEventListener("DOMContentLoaded", P), ie.addEventListener("load", P)); var M = function (e, t, n, r, i, o, a) { var s = 0, u = e.length, l = null == n; if ("object" === x(n)) for (s in i = !0, n) M(e, t, s, n[s], !0, o, a); else if (void 0 !== r && (i = !0, v(r) || (a = !0), l && (a ? (t.call(e, r), t = null) : (l = t, t = function (e, t, n) { return l.call(ce(e), n) })), t)) for (; s < u; s++)t(e[s], n, a ? r : r.call(e[s], s, t(e[s], n))); return i ? e : l ? t.call(e) : u ? t(e[0], n) : o }, R = /^-ms-/, I = /-([a-z])/g; function W(e, t) { return t.toUpperCase() } function F(e) { return e.replace(R, "ms-").replace(I, W) } var $ = function (e) { return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType }; function B() { this.expando = ce.expando + B.uid++ } B.uid = 1, B.prototype = { cache: function (e) { var t = e[this.expando]; return t || (t = {}, $(e) && (e.nodeType ? e[this.expando] = t : Object.defineProperty(e, this.expando, { value: t, configurable: !0 }))), t }, set: function (e, t, n) { var r, i = this.cache(e); if ("string" == typeof t) i[F(t)] = n; else for (r in t) i[F(r)] = t[r]; return i }, get: function (e, t) { return void 0 === t ? this.cache(e) : e[this.expando] && e[this.expando][F(t)] }, access: function (e, t, n) { return void 0 === t || t && "string" == typeof t && void 0 === n ? this.get(e, t) : (this.set(e, t, n), void 0 !== n ? n : t) }, remove: function (e, t) { var n, r = e[this.expando]; if (void 0 !== r) { if (void 0 !== t) { n = (t = Array.isArray(t) ? t.map(F) : (t = F(t)) in r ? [t] : t.match(D) || []).length; while (n--) delete r[t[n]] } (void 0 === t || ce.isEmptyObject(r)) && (e.nodeType ? e[this.expando] = void 0 : delete e[this.expando]) } }, hasData: function (e) { var t = e[this.expando]; return void 0 !== t && !ce.isEmptyObject(t) } }; var _ = new B, z = new B, X = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, U = /[A-Z]/g; function V(e, t, n) { var r, i; if (void 0 === n && 1 === e.nodeType) if (r = "data-" + t.replace(U, "-$&").toLowerCase(), "string" == typeof (n = e.getAttribute(r))) { try { n = "true" === (i = n) || "false" !== i && ("null" === i ? null : i === +i + "" ? +i : X.test(i) ? JSON.parse(i) : i) } catch (e) { } z.set(e, t, n) } else n = void 0; return n } ce.extend({ hasData: function (e) { return z.hasData(e) || _.hasData(e) }, data: function (e, t, n) { return z.access(e, t, n) }, removeData: function (e, t) { z.remove(e, t) }, _data: function (e, t, n) { return _.access(e, t, n) }, _removeData: function (e, t) { _.remove(e, t) } }), ce.fn.extend({ data: function (n, e) { var t, r, i, o = this[0], a = o && o.attributes; if (void 0 === n) { if (this.length && (i = z.get(o), 1 === o.nodeType && !_.get(o, "hasDataAttrs"))) { t = a.length; while (t--) a[t] && 0 === (r = a[t].name).indexOf("data-") && (r = F(r.slice(5)), V(o, r, i[r])); _.set(o, "hasDataAttrs", !0) } return i } return "object" == typeof n ? this.each(function () { z.set(this, n) }) : M(this, function (e) { var t; if (o && void 0 === e) return void 0 !== (t = z.get(o, n)) ? t : void 0 !== (t = V(o, n)) ? t : void 0; this.each(function () { z.set(this, n, e) }) }, null, e, 1 < arguments.length, null, !0) }, removeData: function (e) { return this.each(function () { z.remove(this, e) }) } }), ce.extend({ queue: function (e, t, n) { var r; if (e) return t = (t || "fx") + "queue", r = _.get(e, t), n && (!r || Array.isArray(n) ? r = _.access(e, t, ce.makeArray(n)) : r.push(n)), r || [] }, dequeue: function (e, t) { t = t || "fx"; var n = ce.queue(e, t), r = n.length, i = n.shift(), o = ce._queueHooks(e, t); "inprogress" === i && (i = n.shift(), r--), i && ("fx" === t && n.unshift("inprogress"), delete o.stop, i.call(e, function () { ce.dequeue(e, t) }, o)), !r && o && o.empty.fire() }, _queueHooks: function (e, t) { var n = t + "queueHooks"; return _.get(e, n) || _.access(e, n, { empty: ce.Callbacks("once memory").add(function () { _.remove(e, [t + "queue", n]) }) }) } }), ce.fn.extend({ queue: function (t, n) { var e = 2; return "string" != typeof t && (n = t, t = "fx", e--), arguments.length < e ? ce.queue(this[0], t) : void 0 === n ? this : this.each(function () { var e = ce.queue(this, t, n); ce._queueHooks(this, t), "fx" === t && "inprogress" !== e[0] && ce.dequeue(this, t) }) }, dequeue: function (e) { return this.each(function () { ce.dequeue(this, e) }) }, clearQueue: function (e) { return this.queue(e || "fx", []) }, promise: function (e, t) { var n, r = 1, i = ce.Deferred(), o = this, a = this.length, s = function () { --r || i.resolveWith(o, [o]) }; "string" != typeof e && (t = e, e = void 0), e = e || "fx"; while (a--) (n = _.get(o[a], e + "queueHooks")) && n.empty && (r++, n.empty.add(s)); return s(), i.promise(t) } }); var G = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, Y = new RegExp("^(?:([+-])=|)(" + G + ")([a-z%]*)$", "i"), Q = ["Top", "Right", "Bottom", "Left"], J = C.documentElement, K = function (e) { return ce.contains(e.ownerDocument, e) }, Z = { composed: !0 }; J.getRootNode && (K = function (e) { return ce.contains(e.ownerDocument, e) || e.getRootNode(Z) === e.ownerDocument }); var ee = function (e, t) { return "none" === (e = t || e).style.display || "" === e.style.display && K(e) && "none" === ce.css(e, "display") }; function te(e, t, n, r) { var i, o, a = 20, s = r ? function () { return r.cur() } : function () { return ce.css(e, t, "") }, u = s(), l = n && n[3] || (ce.cssNumber[t] ? "" : "px"), c = e.nodeType && (ce.cssNumber[t] || "px" !== l && +u) && Y.exec(ce.css(e, t)); if (c && c[3] !== l) { u /= 2, l = l || c[3], c = +u || 1; while (a--) ce.style(e, t, c + l), (1 - o) * (1 - (o = s() / u || .5)) <= 0 && (a = 0), c /= o; c *= 2, ce.style(e, t, c + l), n = n || [] } return n && (c = +c || +u || 0, i = n[1] ? c + (n[1] + 1) * n[2] : +n[2], r && (r.unit = l, r.start = c, r.end = i)), i } var ne = {}; function re(e, t) { for (var n, r, i, o, a, s, u, l = [], c = 0, f = e.length; c < f; c++)(r = e[c]).style && (n = r.style.display, t ? ("none" === n && (l[c] = _.get(r, "display") || null, l[c] || (r.style.display = "")), "" === r.style.display && ee(r) && (l[c] = (u = a = o = void 0, a = (i = r).ownerDocument, s = i.nodeName, (u = ne[s]) || (o = a.body.appendChild(a.createElement(s)), u = ce.css(o, "display"), o.parentNode.removeChild(o), "none" === u && (u = "block"), ne[s] = u)))) : "none" !== n && (l[c] = "none", _.set(r, "display", n))); for (c = 0; c < f; c++)null != l[c] && (e[c].style.display = l[c]); return e } ce.fn.extend({ show: function () { return re(this, !0) }, hide: function () { return re(this) }, toggle: function (e) { return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function () { ee(this) ? ce(this).show() : ce(this).hide() }) } }); var xe, be, we = /^(?:checkbox|radio)$/i, Te = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i, Ce = /^$|^module$|\/(?:java|ecma)script/i; xe = C.createDocumentFragment().appendChild(C.createElement("div")), (be = C.createElement("input")).setAttribute("type", "radio"), be.setAttribute("checked", "checked"), be.setAttribute("name", "t"), xe.appendChild(be), le.checkClone = xe.cloneNode(!0).cloneNode(!0).lastChild.checked, xe.innerHTML = "<textarea>x</textarea>", le.noCloneChecked = !!xe.cloneNode(!0).lastChild.defaultValue, xe.innerHTML = "<option></option>", le.option = !!xe.lastChild; var ke = { thead: [1, "<table>", "</table>"], col: [2, "<table><colgroup>", "</colgroup></table>"], tr: [2, "<table><tbody>", "</tbody></table>"], td: [3, "<table><tbody><tr>", "</tr></tbody></table>"], _default: [0, "", ""] }; function Se(e, t) { var n; return n = "undefined" != typeof e.getElementsByTagName ? e.getElementsByTagName(t || "*") : "undefined" != typeof e.querySelectorAll ? e.querySelectorAll(t || "*") : [], void 0 === t || t && fe(e, t) ? ce.merge([e], n) : n } function Ee(e, t) { for (var n = 0, r = e.length; n < r; n++)_.set(e[n], "globalEval", !t || _.get(t[n], "globalEval")) } ke.tbody = ke.tfoot = ke.colgroup = ke.caption = ke.thead, ke.th = ke.td, le.option || (ke.optgroup = ke.option = [1, "<select multiple='multiple'>", "</select>"]); var je = /<|&#?\w+;/; function Ae(e, t, n, r, i) { for (var o, a, s, u, l, c, f = t.createDocumentFragment(), p = [], d = 0, h = e.length; d < h; d++)if ((o = e[d]) || 0 === o) if ("object" === x(o)) ce.merge(p, o.nodeType ? [o] : o); else if (je.test(o)) { a = a || f.appendChild(t.createElement("div")), s = (Te.exec(o) || ["", ""])[1].toLowerCase(), u = ke[s] || ke._default, a.innerHTML = u[1] + ce.htmlPrefilter(o) + u[2], c = u[0]; while (c--) a = a.lastChild; ce.merge(p, a.childNodes), (a = f.firstChild).textContent = "" } else p.push(t.createTextNode(o)); f.textContent = "", d = 0; while (o = p[d++]) if (r && -1 < ce.inArray(o, r)) i && i.push(o); else if (l = K(o), a = Se(f.appendChild(o), "script"), l && Ee(a), n) { c = 0; while (o = a[c++]) Ce.test(o.type || "") && n.push(o) } return f } var De = /^([^.]*)(?:\.(.+)|)/; function Ne() { return !0 } function qe() { return !1 } function Le(e, t, n, r, i, o) { var a, s; if ("object" == typeof t) { for (s in "string" != typeof n && (r = r || n, n = void 0), t) Le(e, s, n, r, t[s], o); return e } if (null == r && null == i ? (i = n, r = n = void 0) : null == i && ("string" == typeof n ? (i = r, r = void 0) : (i = r, r = n, n = void 0)), !1 === i) i = qe; else if (!i) return e; return 1 === o && (a = i, (i = function (e) { return ce().off(e), a.apply(this, arguments) }).guid = a.guid || (a.guid = ce.guid++)), e.each(function () { ce.event.add(this, t, i, r, n) }) } function He(e, r, t) { t ? (_.set(e, r, !1), ce.event.add(e, r, { namespace: !1, handler: function (e) { var t, n = _.get(this, r); if (1 & e.isTrigger && this[r]) { if (n) (ce.event.special[r] || {}).delegateType && e.stopPropagation(); else if (n = ae.call(arguments), _.set(this, r, n), this[r](), t = _.get(this, r), _.set(this, r, !1), n !== t) return e.stopImmediatePropagation(), e.preventDefault(), t } else n && (_.set(this, r, ce.event.trigger(n[0], n.slice(1), this)), e.stopPropagation(), e.isImmediatePropagationStopped = Ne) } })) : void 0 === _.get(e, r) && ce.event.add(e, r, Ne) } ce.event = { global: {}, add: function (t, e, n, r, i) { var o, a, s, u, l, c, f, p, d, h, g, v = _.get(t); if ($(t)) { n.handler && (n = (o = n).handler, i = o.selector), i && ce.find.matchesSelector(J, i), n.guid || (n.guid = ce.guid++), (u = v.events) || (u = v.events = Object.create(null)), (a = v.handle) || (a = v.handle = function (e) { return "undefined" != typeof ce && ce.event.triggered !== e.type ? ce.event.dispatch.apply(t, arguments) : void 0 }), l = (e = (e || "").match(D) || [""]).length; while (l--) d = g = (s = De.exec(e[l]) || [])[1], h = (s[2] || "").split(".").sort(), d && (f = ce.event.special[d] || {}, d = (i ? f.delegateType : f.bindType) || d, f = ce.event.special[d] || {}, c = ce.extend({ type: d, origType: g, data: r, handler: n, guid: n.guid, selector: i, needsContext: i && ce.expr.match.needsContext.test(i), namespace: h.join(".") }, o), (p = u[d]) || ((p = u[d] = []).delegateCount = 0, f.setup && !1 !== f.setup.call(t, r, h, a) || t.addEventListener && t.addEventListener(d, a)), f.add && (f.add.call(t, c), c.handler.guid || (c.handler.guid = n.guid)), i ? p.splice(p.delegateCount++, 0, c) : p.push(c), ce.event.global[d] = !0) } }, remove: function (e, t, n, r, i) { var o, a, s, u, l, c, f, p, d, h, g, v = _.hasData(e) && _.get(e); if (v && (u = v.events)) { l = (t = (t || "").match(D) || [""]).length; while (l--) if (d = g = (s = De.exec(t[l]) || [])[1], h = (s[2] || "").split(".").sort(), d) { f = ce.event.special[d] || {}, p = u[d = (r ? f.delegateType : f.bindType) || d] || [], s = s[2] && new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)"), a = o = p.length; while (o--) c = p[o], !i && g !== c.origType || n && n.guid !== c.guid || s && !s.test(c.namespace) || r && r !== c.selector && ("**" !== r || !c.selector) || (p.splice(o, 1), c.selector && p.delegateCount--, f.remove && f.remove.call(e, c)); a && !p.length && (f.teardown && !1 !== f.teardown.call(e, h, v.handle) || ce.removeEvent(e, d, v.handle), delete u[d]) } else for (d in u) ce.event.remove(e, d + t[l], n, r, !0); ce.isEmptyObject(u) && _.remove(e, "handle events") } }, dispatch: function (e) { var t, n, r, i, o, a, s = new Array(arguments.length), u = ce.event.fix(e), l = (_.get(this, "events") || Object.create(null))[u.type] || [], c = ce.event.special[u.type] || {}; for (s[0] = u, t = 1; t < arguments.length; t++)s[t] = arguments[t]; if (u.delegateTarget = this, !c.preDispatch || !1 !== c.preDispatch.call(this, u)) { a = ce.event.handlers.call(this, u, l), t = 0; while ((i = a[t++]) && !u.isPropagationStopped()) { u.currentTarget = i.elem, n = 0; while ((o = i.handlers[n++]) && !u.isImmediatePropagationStopped()) u.rnamespace && !1 !== o.namespace && !u.rnamespace.test(o.namespace) || (u.handleObj = o, u.data = o.data, void 0 !== (r = ((ce.event.special[o.origType] || {}).handle || o.handler).apply(i.elem, s)) && !1 === (u.result = r) && (u.preventDefault(), u.stopPropagation())) } return c.postDispatch && c.postDispatch.call(this, u), u.result } }, handlers: function (e, t) { var n, r, i, o, a, s = [], u = t.delegateCount, l = e.target; if (u && l.nodeType && !("click" === e.type && 1 <= e.button)) for (; l !== this; l = l.parentNode || this)if (1 === l.nodeType && ("click" !== e.type || !0 !== l.disabled)) { for (o = [], a = {}, n = 0; n < u; n++)void 0 === a[i = (r = t[n]).selector + " "] && (a[i] = r.needsContext ? -1 < ce(i, this).index(l) : ce.find(i, this, null, [l]).length), a[i] && o.push(r); o.length && s.push({ elem: l, handlers: o }) } return l = this, u < t.length && s.push({ elem: l, handlers: t.slice(u) }), s }, addProp: function (t, e) { Object.defineProperty(ce.Event.prototype, t, { enumerable: !0, configurable: !0, get: v(e) ? function () { if (this.originalEvent) return e(this.originalEvent) } : function () { if (this.originalEvent) return this.originalEvent[t] }, set: function (e) { Object.defineProperty(this, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) } }) }, fix: function (e) { return e[ce.expando] ? e : new ce.Event(e) }, special: { load: { noBubble: !0 }, click: { setup: function (e) { var t = this || e; return we.test(t.type) && t.click && fe(t, "input") && He(t, "click", !0), !1 }, trigger: function (e) { var t = this || e; return we.test(t.type) && t.click && fe(t, "input") && He(t, "click"), !0 }, _default: function (e) { var t = e.target; return we.test(t.type) && t.click && fe(t, "input") && _.get(t, "click") || fe(t, "a") } }, beforeunload: { postDispatch: function (e) { void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result) } } } }, ce.removeEvent = function (e, t, n) { e.removeEventListener && e.removeEventListener(t, n) }, ce.Event = function (e, t) { if (!(this instanceof ce.Event)) return new ce.Event(e, t); e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && !1 === e.returnValue ? Ne : qe, this.target = e.target && 3 === e.target.nodeType ? e.target.parentNode : e.target, this.currentTarget = e.currentTarget, this.relatedTarget = e.relatedTarget) : this.type = e, t && ce.extend(this, t), this.timeStamp = e && e.timeStamp || Date.now(), this[ce.expando] = !0 }, ce.Event.prototype = { constructor: ce.Event, isDefaultPrevented: qe, isPropagationStopped: qe, isImmediatePropagationStopped: qe, isSimulated: !1, preventDefault: function () { var e = this.originalEvent; this.isDefaultPrevented = Ne, e && !this.isSimulated && e.preventDefault() }, stopPropagation: function () { var e = this.originalEvent; this.isPropagationStopped = Ne, e && !this.isSimulated && e.stopPropagation() }, stopImmediatePropagation: function () { var e = this.originalEvent; this.isImmediatePropagationStopped = Ne, e && !this.isSimulated && e.stopImmediatePropagation(), this.stopPropagation() } }, ce.each({ altKey: !0, bubbles: !0, cancelable: !0, changedTouches: !0, ctrlKey: !0, detail: !0, eventPhase: !0, metaKey: !0, pageX: !0, pageY: !0, shiftKey: !0, view: !0, "char": !0, code: !0, charCode: !0, key: !0, keyCode: !0, button: !0, buttons: !0, clientX: !0, clientY: !0, offsetX: !0, offsetY: !0, pointerId: !0, pointerType: !0, screenX: !0, screenY: !0, targetTouches: !0, toElement: !0, touches: !0, which: !0 }, ce.event.addProp), ce.each({ focus: "focusin", blur: "focusout" }, function (r, i) { function o(e) { if (C.documentMode) { var t = _.get(this, "handle"), n = ce.event.fix(e); n.type = "focusin" === e.type ? "focus" : "blur", n.isSimulated = !0, t(e), n.target === n.currentTarget && t(n) } else ce.event.simulate(i, e.target, ce.event.fix(e)) } ce.event.special[r] = { setup: function () { var e; if (He(this, r, !0), !C.documentMode) return !1; (e = _.get(this, i)) || this.addEventListener(i, o), _.set(this, i, (e || 0) + 1) }, trigger: function () { return He(this, r), !0 }, teardown: function () { var e; if (!C.documentMode) return !1; (e = _.get(this, i) - 1) ? _.set(this, i, e) : (this.removeEventListener(i, o), _.remove(this, i)) }, _default: function (e) { return _.get(e.target, r) }, delegateType: i }, ce.event.special[i] = { setup: function () { var e = this.ownerDocument || this.document || this, t = C.documentMode ? this : e, n = _.get(t, i); n || (C.documentMode ? this.addEventListener(i, o) : e.addEventListener(r, o, !0)), _.set(t, i, (n || 0) + 1) }, teardown: function () { var e = this.ownerDocument || this.document || this, t = C.documentMode ? this : e, n = _.get(t, i) - 1; n ? _.set(t, i, n) : (C.documentMode ? this.removeEventListener(i, o) : e.removeEventListener(r, o, !0), _.remove(t, i)) } } }), ce.each({ mouseenter: "mouseover", mouseleave: "mouseout", pointerenter: "pointerover", pointerleave: "pointerout" }, function (e, i) { ce.event.special[e] = { delegateType: i, bindType: i, handle: function (e) { var t, n = e.relatedTarget, r = e.handleObj; return n && (n === this || ce.contains(this, n)) || (e.type = r.origType, t = r.handler.apply(this, arguments), e.type = i), t } } }), ce.fn.extend({ on: function (e, t, n, r) { return Le(this, e, t, n, r) }, one: function (e, t, n, r) { return Le(this, e, t, n, r, 1) }, off: function (e, t, n) { var r, i; if (e && e.preventDefault && e.handleObj) return r = e.handleObj, ce(e.delegateTarget).off(r.namespace ? r.origType + "." + r.namespace : r.origType, r.selector, r.handler), this; if ("object" == typeof e) { for (i in e) this.off(i, t, e[i]); return this } return !1 !== t && "function" != typeof t || (n = t, t = void 0), !1 === n && (n = qe), this.each(function () { ce.event.remove(this, e, n, t) }) } }); var Oe = /<script|<style|<link/i, Pe = /checked\s*(?:[^=]|=\s*.checked.)/i, Me = /^\s*<!\[CDATA\[|\]\]>\s*$/g; function Re(e, t) { return fe(e, "table") && fe(11 !== t.nodeType ? t : t.firstChild, "tr") && ce(e).children("tbody")[0] || e } function Ie(e) { return e.type = (null !== e.getAttribute("type")) + "/" + e.type, e } function We(e) { return "true/" === (e.type || "").slice(0, 5) ? e.type = e.type.slice(5) : e.removeAttribute("type"), e } function Fe(e, t) { var n, r, i, o, a, s; if (1 === t.nodeType) { if (_.hasData(e) && (s = _.get(e).events)) for (i in _.remove(t, "handle events"), s) for (n = 0, r = s[i].length; n < r; n++)ce.event.add(t, i, s[i][n]); z.hasData(e) && (o = z.access(e), a = ce.extend({}, o), z.set(t, a)) } } function $e(n, r, i, o) { r = g(r); var e, t, a, s, u, l, c = 0, f = n.length, p = f - 1, d = r[0], h = v(d); if (h || 1 < f && "string" == typeof d && !le.checkClone && Pe.test(d)) return n.each(function (e) { var t = n.eq(e); h && (r[0] = d.call(this, e, t.html())), $e(t, r, i, o) }); if (f && (t = (e = Ae(r, n[0].ownerDocument, !1, n, o)).firstChild, 1 === e.childNodes.length && (e = t), t || o)) { for (s = (a = ce.map(Se(e, "script"), Ie)).length; c < f; c++)u = e, c !== p && (u = ce.clone(u, !0, !0), s && ce.merge(a, Se(u, "script"))), i.call(n[c], u, c); if (s) for (l = a[a.length - 1].ownerDocument, ce.map(a, We), c = 0; c < s; c++)u = a[c], Ce.test(u.type || "") && !_.access(u, "globalEval") && ce.contains(l, u) && (u.src && "module" !== (u.type || "").toLowerCase() ? ce._evalUrl && !u.noModule && ce._evalUrl(u.src, { nonce: u.nonce || u.getAttribute("nonce") }, l) : m(u.textContent.replace(Me, ""), u, l)) } return n } function Be(e, t, n) { for (var r, i = t ? ce.filter(t, e) : e, o = 0; null != (r = i[o]); o++)n || 1 !== r.nodeType || ce.cleanData(Se(r)), r.parentNode && (n && K(r) && Ee(Se(r, "script")), r.parentNode.removeChild(r)); return e } ce.extend({ htmlPrefilter: function (e) { return e }, clone: function (e, t, n) { var r, i, o, a, s, u, l, c = e.cloneNode(!0), f = K(e); if (!(le.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || ce.isXMLDoc(e))) for (a = Se(c), r = 0, i = (o = Se(e)).length; r < i; r++)s = o[r], u = a[r], void 0, "input" === (l = u.nodeName.toLowerCase()) && we.test(s.type) ? u.checked = s.checked : "input" !== l && "textarea" !== l || (u.defaultValue = s.defaultValue); if (t) if (n) for (o = o || Se(e), a = a || Se(c), r = 0, i = o.length; r < i; r++)Fe(o[r], a[r]); else Fe(e, c); return 0 < (a = Se(c, "script")).length && Ee(a, !f && Se(e, "script")), c }, cleanData: function (e) { for (var t, n, r, i = ce.event.special, o = 0; void 0 !== (n = e[o]); o++)if ($(n)) { if (t = n[_.expando]) { if (t.events) for (r in t.events) i[r] ? ce.event.remove(n, r) : ce.removeEvent(n, r, t.handle); n[_.expando] = void 0 } n[z.expando] && (n[z.expando] = void 0) } } }), ce.fn.extend({ detach: function (e) { return Be(this, e, !0) }, remove: function (e) { return Be(this, e) }, text: function (e) { return M(this, function (e) { return void 0 === e ? ce.text(this) : this.empty().each(function () { 1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = e) }) }, null, e, arguments.length) }, append: function () { return $e(this, arguments, function (e) { 1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || Re(this, e).appendChild(e) }) }, prepend: function () { return $e(this, arguments, function (e) { if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) { var t = Re(this, e); t.insertBefore(e, t.firstChild) } }) }, before: function () { return $e(this, arguments, function (e) { this.parentNode && this.parentNode.insertBefore(e, this) }) }, after: function () { return $e(this, arguments, function (e) { this.parentNode && this.parentNode.insertBefore(e, this.nextSibling) }) }, empty: function () { for (var e, t = 0; null != (e = this[t]); t++)1 === e.nodeType && (ce.cleanData(Se(e, !1)), e.textContent = ""); return this }, clone: function (e, t) { return e = null != e && e, t = null == t ? e : t, this.map(function () { return ce.clone(this, e, t) }) }, html: function (e) { return M(this, function (e) { var t = this[0] || {}, n = 0, r = this.length; if (void 0 === e && 1 === t.nodeType) return t.innerHTML; if ("string" == typeof e && !Oe.test(e) && !ke[(Te.exec(e) || ["", ""])[1].toLowerCase()]) { e = ce.htmlPrefilter(e); try { for (; n < r; n++)1 === (t = this[n] || {}).nodeType && (ce.cleanData(Se(t, !1)), t.innerHTML = e); t = 0 } catch (e) { } } t && this.empty().append(e) }, null, e, arguments.length) }, replaceWith: function () { var n = []; return $e(this, arguments, function (e) { var t = this.parentNode; ce.inArray(this, n) < 0 && (ce.cleanData(Se(this)), t && t.replaceChild(e, this)) }, n) } }), ce.each({ appendTo: "append", prependTo: "prepend", insertBefore: "before", insertAfter: "after", replaceAll: "replaceWith" }, function (e, a) { ce.fn[e] = function (e) { for (var t, n = [], r = ce(e), i = r.length - 1, o = 0; o <= i; o++)t = o === i ? this : this.clone(!0), ce(r[o])[a](t), s.apply(n, t.get()); return this.pushStack(n) } }); var _e = new RegExp("^(" + G + ")(?!px)[a-z%]+$", "i"), ze = /^--/, Xe = function (e) { var t = e.ownerDocument.defaultView; return t && t.opener || (t = ie), t.getComputedStyle(e) }, Ue = function (e, t, n) { var r, i, o = {}; for (i in t) o[i] = e.style[i], e.style[i] = t[i]; for (i in r = n.call(e), t) e.style[i] = o[i]; return r }, Ve = new RegExp(Q.join("|"), "i"); function Ge(e, t, n) { var r, i, o, a, s = ze.test(t), u = e.style; return (n = n || Xe(e)) && (a = n.getPropertyValue(t) || n[t], s && a && (a = a.replace(ve, "$1") || void 0), "" !== a || K(e) || (a = ce.style(e, t)), !le.pixelBoxStyles() && _e.test(a) && Ve.test(t) && (r = u.width, i = u.minWidth, o = u.maxWidth, u.minWidth = u.maxWidth = u.width = a, a = n.width, u.width = r, u.minWidth = i, u.maxWidth = o)), void 0 !== a ? a + "" : a } function Ye(e, t) { return { get: function () { if (!e()) return (this.get = t).apply(this, arguments); delete this.get } } } !function () { function e() { if (l) { u.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0", l.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%", J.appendChild(u).appendChild(l); var e = ie.getComputedStyle(l); n = "1%" !== e.top, s = 12 === t(e.marginLeft), l.style.right = "60%", o = 36 === t(e.right), r = 36 === t(e.width), l.style.position = "absolute", i = 12 === t(l.offsetWidth / 3), J.removeChild(u), l = null } } function t(e) { return Math.round(parseFloat(e)) } var n, r, i, o, a, s, u = C.createElement("div"), l = C.createElement("div"); l.style && (l.style.backgroundClip = "content-box", l.cloneNode(!0).style.backgroundClip = "", le.clearCloneStyle = "content-box" === l.style.backgroundClip, ce.extend(le, { boxSizingReliable: function () { return e(), r }, pixelBoxStyles: function () { return e(), o }, pixelPosition: function () { return e(), n }, reliableMarginLeft: function () { return e(), s }, scrollboxSize: function () { return e(), i }, reliableTrDimensions: function () { var e, t, n, r; return null == a && (e = C.createElement("table"), t = C.createElement("tr"), n = C.createElement("div"), e.style.cssText = "position:absolute;left:-11111px;border-collapse:separate", t.style.cssText = "box-sizing:content-box;border:1px solid", t.style.height = "1px", n.style.height = "9px", n.style.display = "block", J.appendChild(e).appendChild(t).appendChild(n), r = ie.getComputedStyle(t), a = parseInt(r.height, 10) + parseInt(r.borderTopWidth, 10) + parseInt(r.borderBottomWidth, 10) === t.offsetHeight, J.removeChild(e)), a } })) }(); var Qe = ["Webkit", "Moz", "ms"], Je = C.createElement("div").style, Ke = {}; function Ze(e) { var t = ce.cssProps[e] || Ke[e]; return t || (e in Je ? e : Ke[e] = function (e) { var t = e[0].toUpperCase() + e.slice(1), n = Qe.length; while (n--) if ((e = Qe[n] + t) in Je) return e }(e) || e) } var et = /^(none|table(?!-c[ea]).+)/, tt = { position: "absolute", visibility: "hidden", display: "block" }, nt = { letterSpacing: "0", fontWeight: "400" }; function rt(e, t, n) { var r = Y.exec(t); return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : t } function it(e, t, n, r, i, o) { var a = "width" === t ? 1 : 0, s = 0, u = 0, l = 0; if (n === (r ? "border" : "content")) return 0; for (; a < 4; a += 2)"margin" === n && (l += ce.css(e, n + Q[a], !0, i)), r ? ("content" === n && (u -= ce.css(e, "padding" + Q[a], !0, i)), "margin" !== n && (u -= ce.css(e, "border" + Q[a] + "Width", !0, i))) : (u += ce.css(e, "padding" + Q[a], !0, i), "padding" !== n ? u += ce.css(e, "border" + Q[a] + "Width", !0, i) : s += ce.css(e, "border" + Q[a] + "Width", !0, i)); return !r && 0 <= o && (u += Math.max(0, Math.ceil(e["offset" + t[0].toUpperCase() + t.slice(1)] - o - u - s - .5)) || 0), u + l } function ot(e, t, n) { var r = Xe(e), i = (!le.boxSizingReliable() || n) && "border-box" === ce.css(e, "boxSizing", !1, r), o = i, a = Ge(e, t, r), s = "offset" + t[0].toUpperCase() + t.slice(1); if (_e.test(a)) { if (!n) return a; a = "auto" } return (!le.boxSizingReliable() && i || !le.reliableTrDimensions() && fe(e, "tr") || "auto" === a || !parseFloat(a) && "inline" === ce.css(e, "display", !1, r)) && e.getClientRects().length && (i = "border-box" === ce.css(e, "boxSizing", !1, r), (o = s in e) && (a = e[s])), (a = parseFloat(a) || 0) + it(e, t, n || (i ? "border" : "content"), o, r, a) + "px" } function at(e, t, n, r, i) { return new at.prototype.init(e, t, n, r, i) } ce.extend({ cssHooks: { opacity: { get: function (e, t) { if (t) { var n = Ge(e, "opacity"); return "" === n ? "1" : n } } } }, cssNumber: { animationIterationCount: !0, aspectRatio: !0, borderImageSlice: !0, columnCount: !0, flexGrow: !0, flexShrink: !0, fontWeight: !0, gridArea: !0, gridColumn: !0, gridColumnEnd: !0, gridColumnStart: !0, gridRow: !0, gridRowEnd: !0, gridRowStart: !0, lineHeight: !0, opacity: !0, order: !0, orphans: !0, scale: !0, widows: !0, zIndex: !0, zoom: !0, fillOpacity: !0, floodOpacity: !0, stopOpacity: !0, strokeMiterlimit: !0, strokeOpacity: !0 }, cssProps: {}, style: function (e, t, n, r) { if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) { var i, o, a, s = F(t), u = ze.test(t), l = e.style; if (u || (t = Ze(s)), a = ce.cssHooks[t] || ce.cssHooks[s], void 0 === n) return a && "get" in a && void 0 !== (i = a.get(e, !1, r)) ? i : l[t]; "string" === (o = typeof n) && (i = Y.exec(n)) && i[1] && (n = te(e, t, i), o = "number"), null != n && n == n && ("number" !== o || u || (n += i && i[3] || (ce.cssNumber[s] ? "" : "px")), le.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (l[t] = "inherit"), a && "set" in a && void 0 === (n = a.set(e, n, r)) || (u ? l.setProperty(t, n) : l[t] = n)) } }, css: function (e, t, n, r) { var i, o, a, s = F(t); return ze.test(t) || (t = Ze(s)), (a = ce.cssHooks[t] || ce.cssHooks[s]) && "get" in a && (i = a.get(e, !0, n)), void 0 === i && (i = Ge(e, t, r)), "normal" === i && t in nt && (i = nt[t]), "" === n || n ? (o = parseFloat(i), !0 === n || isFinite(o) ? o || 0 : i) : i } }), ce.each(["height", "width"], function (e, u) { ce.cssHooks[u] = { get: function (e, t, n) { if (t) return !et.test(ce.css(e, "display")) || e.getClientRects().length && e.getBoundingClientRect().width ? ot(e, u, n) : Ue(e, tt, function () { return ot(e, u, n) }) }, set: function (e, t, n) { var r, i = Xe(e), o = !le.scrollboxSize() && "absolute" === i.position, a = (o || n) && "border-box" === ce.css(e, "boxSizing", !1, i), s = n ? it(e, u, n, a, i) : 0; return a && o && (s -= Math.ceil(e["offset" + u[0].toUpperCase() + u.slice(1)] - parseFloat(i[u]) - it(e, u, "border", !1, i) - .5)), s && (r = Y.exec(t)) && "px" !== (r[3] || "px") && (e.style[u] = t, t = ce.css(e, u)), rt(0, t, s) } } }), ce.cssHooks.marginLeft = Ye(le.reliableMarginLeft, function (e, t) { if (t) return (parseFloat(Ge(e, "marginLeft")) || e.getBoundingClientRect().left - Ue(e, { marginLeft: 0 }, function () { return e.getBoundingClientRect().left })) + "px" }), ce.each({ margin: "", padding: "", border: "Width" }, function (i, o) { ce.cssHooks[i + o] = { expand: function (e) { for (var t = 0, n = {}, r = "string" == typeof e ? e.split(" ") : [e]; t < 4; t++)n[i + Q[t] + o] = r[t] || r[t - 2] || r[0]; return n } }, "margin" !== i && (ce.cssHooks[i + o].set = rt) }), ce.fn.extend({ css: function (e, t) { return M(this, function (e, t, n) { var r, i, o = {}, a = 0; if (Array.isArray(t)) { for (r = Xe(e), i = t.length; a < i; a++)o[t[a]] = ce.css(e, t[a], !1, r); return o } return void 0 !== n ? ce.style(e, t, n) : ce.css(e, t) }, e, t, 1 < arguments.length) } }), ((ce.Tween = at).prototype = { constructor: at, init: function (e, t, n, r, i, o) { this.elem = e, this.prop = n, this.easing = i || ce.easing._default, this.options = t, this.start = this.now = this.cur(), this.end = r, this.unit = o || (ce.cssNumber[n] ? "" : "px") }, cur: function () { var e = at.propHooks[this.prop]; return e && e.get ? e.get(this) : at.propHooks._default.get(this) }, run: function (e) { var t, n = at.propHooks[this.prop]; return this.options.duration ? this.pos = t = ce.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : this.pos = t = e, this.now = (this.end - this.start) * t + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), n && n.set ? n.set(this) : at.propHooks._default.set(this), this } }).init.prototype = at.prototype, (at.propHooks = { _default: { get: function (e) { var t; return 1 !== e.elem.nodeType || null != e.elem[e.prop] && null == e.elem.style[e.prop] ? e.elem[e.prop] : (t = ce.css(e.elem, e.prop, "")) && "auto" !== t ? t : 0 }, set: function (e) { ce.fx.step[e.prop] ? ce.fx.step[e.prop](e) : 1 !== e.elem.nodeType || !ce.cssHooks[e.prop] && null == e.elem.style[Ze(e.prop)] ? e.elem[e.prop] = e.now : ce.style(e.elem, e.prop, e.now + e.unit) } } }).scrollTop = at.propHooks.scrollLeft = { set: function (e) { e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now) } }, ce.easing = { linear: function (e) { return e }, swing: function (e) { return .5 - Math.cos(e * Math.PI) / 2 }, _default: "swing" }, ce.fx = at.prototype.init, ce.fx.step = {}; var st, ut, lt, ct, ft = /^(?:toggle|show|hide)$/, pt = /queueHooks$/; function dt() { ut && (!1 === C.hidden && ie.requestAnimationFrame ? ie.requestAnimationFrame(dt) : ie.setTimeout(dt, ce.fx.interval), ce.fx.tick()) } function ht() { return ie.setTimeout(function () { st = void 0 }), st = Date.now() } function gt(e, t) { var n, r = 0, i = { height: e }; for (t = t ? 1 : 0; r < 4; r += 2 - t)i["margin" + (n = Q[r])] = i["padding" + n] = e; return t && (i.opacity = i.width = e), i } function vt(e, t, n) { for (var r, i = (yt.tweeners[t] || []).concat(yt.tweeners["*"]), o = 0, a = i.length; o < a; o++)if (r = i[o].call(n, t, e)) return r } function yt(o, e, t) { var n, a, r = 0, i = yt.prefilters.length, s = ce.Deferred().always(function () { delete u.elem }), u = function () { if (a) return !1; for (var e = st || ht(), t = Math.max(0, l.startTime + l.duration - e), n = 1 - (t / l.duration || 0), r = 0, i = l.tweens.length; r < i; r++)l.tweens[r].run(n); return s.notifyWith(o, [l, n, t]), n < 1 && i ? t : (i || s.notifyWith(o, [l, 1, 0]), s.resolveWith(o, [l]), !1) }, l = s.promise({ elem: o, props: ce.extend({}, e), opts: ce.extend(!0, { specialEasing: {}, easing: ce.easing._default }, t), originalProperties: e, originalOptions: t, startTime: st || ht(), duration: t.duration, tweens: [], createTween: function (e, t) { var n = ce.Tween(o, l.opts, e, t, l.opts.specialEasing[e] || l.opts.easing); return l.tweens.push(n), n }, stop: function (e) { var t = 0, n = e ? l.tweens.length : 0; if (a) return this; for (a = !0; t < n; t++)l.tweens[t].run(1); return e ? (s.notifyWith(o, [l, 1, 0]), s.resolveWith(o, [l, e])) : s.rejectWith(o, [l, e]), this } }), c = l.props; for (!function (e, t) { var n, r, i, o, a; for (n in e) if (i = t[r = F(n)], o = e[n], Array.isArray(o) && (i = o[1], o = e[n] = o[0]), n !== r && (e[r] = o, delete e[n]), (a = ce.cssHooks[r]) && "expand" in a) for (n in o = a.expand(o), delete e[r], o) n in e || (e[n] = o[n], t[n] = i); else t[r] = i }(c, l.opts.specialEasing); r < i; r++)if (n = yt.prefilters[r].call(l, o, c, l.opts)) return v(n.stop) && (ce._queueHooks(l.elem, l.opts.queue).stop = n.stop.bind(n)), n; return ce.map(c, vt, l), v(l.opts.start) && l.opts.start.call(o, l), l.progress(l.opts.progress).done(l.opts.done, l.opts.complete).fail(l.opts.fail).always(l.opts.always), ce.fx.timer(ce.extend(u, { elem: o, anim: l, queue: l.opts.queue })), l } ce.Animation = ce.extend(yt, { tweeners: { "*": [function (e, t) { var n = this.createTween(e, t); return te(n.elem, e, Y.exec(t), n), n }] }, tweener: function (e, t) { v(e) ? (t = e, e = ["*"]) : e = e.match(D); for (var n, r = 0, i = e.length; r < i; r++)n = e[r], yt.tweeners[n] = yt.tweeners[n] || [], yt.tweeners[n].unshift(t) }, prefilters: [function (e, t, n) { var r, i, o, a, s, u, l, c, f = "width" in t || "height" in t, p = this, d = {}, h = e.style, g = e.nodeType && ee(e), v = _.get(e, "fxshow"); for (r in n.queue || (null == (a = ce._queueHooks(e, "fx")).unqueued && (a.unqueued = 0, s = a.empty.fire, a.empty.fire = function () { a.unqueued || s() }), a.unqueued++, p.always(function () { p.always(function () { a.unqueued--, ce.queue(e, "fx").length || a.empty.fire() }) })), t) if (i = t[r], ft.test(i)) { if (delete t[r], o = o || "toggle" === i, i === (g ? "hide" : "show")) { if ("show" !== i || !v || void 0 === v[r]) continue; g = !0 } d[r] = v && v[r] || ce.style(e, r) } if ((u = !ce.isEmptyObject(t)) || !ce.isEmptyObject(d)) for (r in f && 1 === e.nodeType && (n.overflow = [h.overflow, h.overflowX, h.overflowY], null == (l = v && v.display) && (l = _.get(e, "display")), "none" === (c = ce.css(e, "display")) && (l ? c = l : (re([e], !0), l = e.style.display || l, c = ce.css(e, "display"), re([e]))), ("inline" === c || "inline-block" === c && null != l) && "none" === ce.css(e, "float") && (u || (p.done(function () { h.display = l }), null == l && (c = h.display, l = "none" === c ? "" : c)), h.display = "inline-block")), n.overflow && (h.overflow = "hidden", p.always(function () { h.overflow = n.overflow[0], h.overflowX = n.overflow[1], h.overflowY = n.overflow[2] })), u = !1, d) u || (v ? "hidden" in v && (g = v.hidden) : v = _.access(e, "fxshow", { display: l }), o && (v.hidden = !g), g && re([e], !0), p.done(function () { for (r in g || re([e]), _.remove(e, "fxshow"), d) ce.style(e, r, d[r]) })), u = vt(g ? v[r] : 0, r, p), r in v || (v[r] = u.start, g && (u.end = u.start, u.start = 0)) }], prefilter: function (e, t) { t ? yt.prefilters.unshift(e) : yt.prefilters.push(e) } }), ce.speed = function (e, t, n) { var r = e && "object" == typeof e ? ce.extend({}, e) : { complete: n || !n && t || v(e) && e, duration: e, easing: n && t || t && !v(t) && t }; return ce.fx.off ? r.duration = 0 : "number" != typeof r.duration && (r.duration in ce.fx.speeds ? r.duration = ce.fx.speeds[r.duration] : r.duration = ce.fx.speeds._default), null != r.queue && !0 !== r.queue || (r.queue = "fx"), r.old = r.complete, r.complete = function () { v(r.old) && r.old.call(this), r.queue && ce.dequeue(this, r.queue) }, r }, ce.fn.extend({ fadeTo: function (e, t, n, r) { return this.filter(ee).css("opacity", 0).show().end().animate({ opacity: t }, e, n, r) }, animate: function (t, e, n, r) { var i = ce.isEmptyObject(t), o = ce.speed(e, n, r), a = function () { var e = yt(this, ce.extend({}, t), o); (i || _.get(this, "finish")) && e.stop(!0) }; return a.finish = a, i || !1 === o.queue ? this.each(a) : this.queue(o.queue, a) }, stop: function (i, e, o) { var a = function (e) { var t = e.stop; delete e.stop, t(o) }; return "string" != typeof i && (o = e, e = i, i = void 0), e && this.queue(i || "fx", []), this.each(function () { var e = !0, t = null != i && i + "queueHooks", n = ce.timers, r = _.get(this); if (t) r[t] && r[t].stop && a(r[t]); else for (t in r) r[t] && r[t].stop && pt.test(t) && a(r[t]); for (t = n.length; t--;)n[t].elem !== this || null != i && n[t].queue !== i || (n[t].anim.stop(o), e = !1, n.splice(t, 1)); !e && o || ce.dequeue(this, i) }) }, finish: function (a) { return !1 !== a && (a = a || "fx"), this.each(function () { var e, t = _.get(this), n = t[a + "queue"], r = t[a + "queueHooks"], i = ce.timers, o = n ? n.length : 0; for (t.finish = !0, ce.queue(this, a, []), r && r.stop && r.stop.call(this, !0), e = i.length; e--;)i[e].elem === this && i[e].queue === a && (i[e].anim.stop(!0), i.splice(e, 1)); for (e = 0; e < o; e++)n[e] && n[e].finish && n[e].finish.call(this); delete t.finish }) } }), ce.each(["toggle", "show", "hide"], function (e, r) { var i = ce.fn[r]; ce.fn[r] = function (e, t, n) { return null == e || "boolean" == typeof e ? i.apply(this, arguments) : this.animate(gt(r, !0), e, t, n) } }), ce.each({ slideDown: gt("show"), slideUp: gt("hide"), slideToggle: gt("toggle"), fadeIn: { opacity: "show" }, fadeOut: { opacity: "hide" }, fadeToggle: { opacity: "toggle" } }, function (e, r) { ce.fn[e] = function (e, t, n) { return this.animate(r, e, t, n) } }), ce.timers = [], ce.fx.tick = function () { var e, t = 0, n = ce.timers; for (st = Date.now(); t < n.length; t++)(e = n[t])() || n[t] !== e || n.splice(t--, 1); n.length || ce.fx.stop(), st = void 0 }, ce.fx.timer = function (e) { ce.timers.push(e), ce.fx.start() }, ce.fx.interval = 13, ce.fx.start = function () { ut || (ut = !0, dt()) }, ce.fx.stop = function () { ut = null }, ce.fx.speeds = { slow: 600, fast: 200, _default: 400 }, ce.fn.delay = function (r, e) { return r = ce.fx && ce.fx.speeds[r] || r, e = e || "fx", this.queue(e, function (e, t) { var n = ie.setTimeout(e, r); t.stop = function () { ie.clearTimeout(n) } }) }, lt = C.createElement("input"), ct = C.createElement("select").appendChild(C.createElement("option")), lt.type = "checkbox", le.checkOn = "" !== lt.value, le.optSelected = ct.selected, (lt = C.createElement("input")).value = "t", lt.type = "radio", le.radioValue = "t" === lt.value; var mt, xt = ce.expr.attrHandle; ce.fn.extend({ attr: function (e, t) { return M(this, ce.attr, e, t, 1 < arguments.length) }, removeAttr: function (e) { return this.each(function () { ce.removeAttr(this, e) }) } }), ce.extend({ attr: function (e, t, n) { var r, i, o = e.nodeType; if (3 !== o && 8 !== o && 2 !== o) return "undefined" == typeof e.getAttribute ? ce.prop(e, t, n) : (1 === o && ce.isXMLDoc(e) || (i = ce.attrHooks[t.toLowerCase()] || (ce.expr.match.bool.test(t) ? mt : void 0)), void 0 !== n ? null === n ? void ce.removeAttr(e, t) : i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r : (e.setAttribute(t, n + ""), n) : i && "get" in i && null !== (r = i.get(e, t)) ? r : null == (r = ce.find.attr(e, t)) ? void 0 : r) }, attrHooks: { type: { set: function (e, t) { if (!le.radioValue && "radio" === t && fe(e, "input")) { var n = e.value; return e.setAttribute("type", t), n && (e.value = n), t } } } }, removeAttr: function (e, t) { var n, r = 0, i = t && t.match(D); if (i && 1 === e.nodeType) while (n = i[r++]) e.removeAttribute(n) } }), mt = { set: function (e, t, n) { return !1 === t ? ce.removeAttr(e, n) : e.setAttribute(n, n), n } }, ce.each(ce.expr.match.bool.source.match(/\w+/g), function (e, t) { var a = xt[t] || ce.find.attr; xt[t] = function (e, t, n) { var r, i, o = t.toLowerCase(); return n || (i = xt[o], xt[o] = r, r = null != a(e, t, n) ? o : null, xt[o] = i), r } }); var bt = /^(?:input|select|textarea|button)$/i, wt = /^(?:a|area)$/i; function Tt(e) { return (e.match(D) || []).join(" ") } function Ct(e) { return e.getAttribute && e.getAttribute("class") || "" } function kt(e) { return Array.isArray(e) ? e : "string" == typeof e && e.match(D) || [] } ce.fn.extend({ prop: function (e, t) { return M(this, ce.prop, e, t, 1 < arguments.length) }, removeProp: function (e) { return this.each(function () { delete this[ce.propFix[e] || e] }) } }), ce.extend({ prop: function (e, t, n) { var r, i, o = e.nodeType; if (3 !== o && 8 !== o && 2 !== o) return 1 === o && ce.isXMLDoc(e) || (t = ce.propFix[t] || t, i = ce.propHooks[t]), void 0 !== n ? i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r : e[t] = n : i && "get" in i && null !== (r = i.get(e, t)) ? r : e[t] }, propHooks: { tabIndex: { get: function (e) { var t = ce.find.attr(e, "tabindex"); return t ? parseInt(t, 10) : bt.test(e.nodeName) || wt.test(e.nodeName) && e.href ? 0 : -1 } } }, propFix: { "for": "htmlFor", "class": "className" } }), le.optSelected || (ce.propHooks.selected = { get: function (e) { var t = e.parentNode; return t && t.parentNode && t.parentNode.selectedIndex, null }, set: function (e) { var t = e.parentNode; t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex) } }), ce.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function () { ce.propFix[this.toLowerCase()] = this }), ce.fn.extend({ addClass: function (t) { var e, n, r, i, o, a; return v(t) ? this.each(function (e) { ce(this).addClass(t.call(this, e, Ct(this))) }) : (e = kt(t)).length ? this.each(function () { if (r = Ct(this), n = 1 === this.nodeType && " " + Tt(r) + " ") { for (o = 0; o < e.length; o++)i = e[o], n.indexOf(" " + i + " ") < 0 && (n += i + " "); a = Tt(n), r !== a && this.setAttribute("class", a) } }) : this }, removeClass: function (t) { var e, n, r, i, o, a; return v(t) ? this.each(function (e) { ce(this).removeClass(t.call(this, e, Ct(this))) }) : arguments.length ? (e = kt(t)).length ? this.each(function () { if (r = Ct(this), n = 1 === this.nodeType && " " + Tt(r) + " ") { for (o = 0; o < e.length; o++) { i = e[o]; while (-1 < n.indexOf(" " + i + " ")) n = n.replace(" " + i + " ", " ") } a = Tt(n), r !== a && this.setAttribute("class", a) } }) : this : this.attr("class", "") }, toggleClass: function (t, n) { var e, r, i, o, a = typeof t, s = "string" === a || Array.isArray(t); return v(t) ? this.each(function (e) { ce(this).toggleClass(t.call(this, e, Ct(this), n), n) }) : "boolean" == typeof n && s ? n ? this.addClass(t) : this.removeClass(t) : (e = kt(t), this.each(function () { if (s) for (o = ce(this), i = 0; i < e.length; i++)r = e[i], o.hasClass(r) ? o.removeClass(r) : o.addClass(r); else void 0 !== t && "boolean" !== a || ((r = Ct(this)) && _.set(this, "__className__", r), this.setAttribute && this.setAttribute("class", r || !1 === t ? "" : _.get(this, "__className__") || "")) })) }, hasClass: function (e) { var t, n, r = 0; t = " " + e + " "; while (n = this[r++]) if (1 === n.nodeType && -1 < (" " + Tt(Ct(n)) + " ").indexOf(t)) return !0; return !1 } }); var St = /\r/g; ce.fn.extend({ val: function (n) { var r, e, i, t = this[0]; return arguments.length ? (i = v(n), this.each(function (e) { var t; 1 === this.nodeType && (null == (t = i ? n.call(this, e, ce(this).val()) : n) ? t = "" : "number" == typeof t ? t += "" : Array.isArray(t) && (t = ce.map(t, function (e) { return null == e ? "" : e + "" })), (r = ce.valHooks[this.type] || ce.valHooks[this.nodeName.toLowerCase()]) && "set" in r && void 0 !== r.set(this, t, "value") || (this.value = t)) })) : t ? (r = ce.valHooks[t.type] || ce.valHooks[t.nodeName.toLowerCase()]) && "get" in r && void 0 !== (e = r.get(t, "value")) ? e : "string" == typeof (e = t.value) ? e.replace(St, "") : null == e ? "" : e : void 0 } }), ce.extend({ valHooks: { option: { get: function (e) { var t = ce.find.attr(e, "value"); return null != t ? t : Tt(ce.text(e)) } }, select: { get: function (e) { var t, n, r, i = e.options, o = e.selectedIndex, a = "select-one" === e.type, s = a ? null : [], u = a ? o + 1 : i.length; for (r = o < 0 ? u : a ? o : 0; r < u; r++)if (((n = i[r]).selected || r === o) && !n.disabled && (!n.parentNode.disabled || !fe(n.parentNode, "optgroup"))) { if (t = ce(n).val(), a) return t; s.push(t) } return s }, set: function (e, t) { var n, r, i = e.options, o = ce.makeArray(t), a = i.length; while (a--) ((r = i[a]).selected = -1 < ce.inArray(ce.valHooks.option.get(r), o)) && (n = !0); return n || (e.selectedIndex = -1), o } } } }), ce.each(["radio", "checkbox"], function () { ce.valHooks[this] = { set: function (e, t) { if (Array.isArray(t)) return e.checked = -1 < ce.inArray(ce(e).val(), t) } }, le.checkOn || (ce.valHooks[this].get = function (e) { return null === e.getAttribute("value") ? "on" : e.value }) }); var Et = ie.location, jt = { guid: Date.now() }, At = /\?/; ce.parseXML = function (e) { var t, n; if (!e || "string" != typeof e) return null; try { t = (new ie.DOMParser).parseFromString(e, "text/xml") } catch (e) { } return n = t && t.getElementsByTagName("parsererror")[0], t && !n || ce.error("Invalid XML: " + (n ? ce.map(n.childNodes, function (e) { return e.textContent }).join("\n") : e)), t }; var Dt = /^(?:focusinfocus|focusoutblur)$/, Nt = function (e) { e.stopPropagation() }; ce.extend(ce.event, { trigger: function (e, t, n, r) { var i, o, a, s, u, l, c, f, p = [n || C], d = ue.call(e, "type") ? e.type : e, h = ue.call(e, "namespace") ? e.namespace.split(".") : []; if (o = f = a = n = n || C, 3 !== n.nodeType && 8 !== n.nodeType && !Dt.test(d + ce.event.triggered) && (-1 < d.indexOf(".") && (d = (h = d.split(".")).shift(), h.sort()), u = d.indexOf(":") < 0 && "on" + d, (e = e[ce.expando] ? e : new ce.Event(d, "object" == typeof e && e)).isTrigger = r ? 2 : 3, e.namespace = h.join("."), e.rnamespace = e.namespace ? new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, e.result = void 0, e.target || (e.target = n), t = null == t ? [e] : ce.makeArray(t, [e]), c = ce.event.special[d] || {}, r || !c.trigger || !1 !== c.trigger.apply(n, t))) { if (!r && !c.noBubble && !y(n)) { for (s = c.delegateType || d, Dt.test(s + d) || (o = o.parentNode); o; o = o.parentNode)p.push(o), a = o; a === (n.ownerDocument || C) && p.push(a.defaultView || a.parentWindow || ie) } i = 0; while ((o = p[i++]) && !e.isPropagationStopped()) f = o, e.type = 1 < i ? s : c.bindType || d, (l = (_.get(o, "events") || Object.create(null))[e.type] && _.get(o, "handle")) && l.apply(o, t), (l = u && o[u]) && l.apply && $(o) && (e.result = l.apply(o, t), !1 === e.result && e.preventDefault()); return e.type = d, r || e.isDefaultPrevented() || c._default && !1 !== c._default.apply(p.pop(), t) || !$(n) || u && v(n[d]) && !y(n) && ((a = n[u]) && (n[u] = null), ce.event.triggered = d, e.isPropagationStopped() && f.addEventListener(d, Nt), n[d](), e.isPropagationStopped() && f.removeEventListener(d, Nt), ce.event.triggered = void 0, a && (n[u] = a)), e.result } }, simulate: function (e, t, n) { var r = ce.extend(new ce.Event, n, { type: e, isSimulated: !0 }); ce.event.trigger(r, null, t) } }), ce.fn.extend({ trigger: function (e, t) { return this.each(function () { ce.event.trigger(e, t, this) }) }, triggerHandler: function (e, t) { var n = this[0]; if (n) return ce.event.trigger(e, t, n, !0) } }); var qt = /\[\]$/, Lt = /\r?\n/g, Ht = /^(?:submit|button|image|reset|file)$/i, Ot = /^(?:input|select|textarea|keygen)/i; function Pt(n, e, r, i) { var t; if (Array.isArray(e)) ce.each(e, function (e, t) { r || qt.test(n) ? i(n, t) : Pt(n + "[" + ("object" == typeof t && null != t ? e : "") + "]", t, r, i) }); else if (r || "object" !== x(e)) i(n, e); else for (t in e) Pt(n + "[" + t + "]", e[t], r, i) } ce.param = function (e, t) { var n, r = [], i = function (e, t) { var n = v(t) ? t() : t; r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(null == n ? "" : n) }; if (null == e) return ""; if (Array.isArray(e) || e.jquery && !ce.isPlainObject(e)) ce.each(e, function () { i(this.name, this.value) }); else for (n in e) Pt(n, e[n], t, i); return r.join("&") }, ce.fn.extend({ serialize: function () { return ce.param(this.serializeArray()) }, serializeArray: function () { return this.map(function () { var e = ce.prop(this, "elements"); return e ? ce.makeArray(e) : this }).filter(function () { var e = this.type; return this.name && !ce(this).is(":disabled") && Ot.test(this.nodeName) && !Ht.test(e) && (this.checked || !we.test(e)) }).map(function (e, t) { var n = ce(this).val(); return null == n ? null : Array.isArray(n) ? ce.map(n, function (e) { return { name: t.name, value: e.replace(Lt, "\r\n") } }) : { name: t.name, value: n.replace(Lt, "\r\n") } }).get() } }); var Mt = /%20/g, Rt = /#.*$/, It = /([?&])_=[^&]*/, Wt = /^(.*?):[ \t]*([^\r\n]*)$/gm, Ft = /^(?:GET|HEAD)$/, $t = /^\/\//, Bt = {}, _t = {}, zt = "*/".concat("*"), Xt = C.createElement("a"); function Ut(o) { return function (e, t) { "string" != typeof e && (t = e, e = "*"); var n, r = 0, i = e.toLowerCase().match(D) || []; if (v(t)) while (n = i[r++]) "+" === n[0] ? (n = n.slice(1) || "*", (o[n] = o[n] || []).unshift(t)) : (o[n] = o[n] || []).push(t) } } function Vt(t, i, o, a) { var s = {}, u = t === _t; function l(e) { var r; return s[e] = !0, ce.each(t[e] || [], function (e, t) { var n = t(i, o, a); return "string" != typeof n || u || s[n] ? u ? !(r = n) : void 0 : (i.dataTypes.unshift(n), l(n), !1) }), r } return l(i.dataTypes[0]) || !s["*"] && l("*") } function Gt(e, t) { var n, r, i = ce.ajaxSettings.flatOptions || {}; for (n in t) void 0 !== t[n] && ((i[n] ? e : r || (r = {}))[n] = t[n]); return r && ce.extend(!0, e, r), e } Xt.href = Et.href, ce.extend({ active: 0, lastModified: {}, etag: {}, ajaxSettings: { url: Et.href, type: "GET", isLocal: /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol), global: !0, processData: !0, async: !0, contentType: "application/x-www-form-urlencoded; charset=UTF-8", accepts: { "*": zt, text: "text/plain", html: "text/html", xml: "application/xml, text/xml", json: "application/json, text/javascript" }, contents: { xml: /\bxml\b/, html: /\bhtml/, json: /\bjson\b/ }, responseFields: { xml: "responseXML", text: "responseText", json: "responseJSON" }, converters: { "* text": String, "text html": !0, "text json": JSON.parse, "text xml": ce.parseXML }, flatOptions: { url: !0, context: !0 } }, ajaxSetup: function (e, t) { return t ? Gt(Gt(e, ce.ajaxSettings), t) : Gt(ce.ajaxSettings, e) }, ajaxPrefilter: Ut(Bt), ajaxTransport: Ut(_t), ajax: function (e, t) { "object" == typeof e && (t = e, e = void 0), t = t || {}; var c, f, p, n, d, r, h, g, i, o, v = ce.ajaxSetup({}, t), y = v.context || v, m = v.context && (y.nodeType || y.jquery) ? ce(y) : ce.event, x = ce.Deferred(), b = ce.Callbacks("once memory"), w = v.statusCode || {}, a = {}, s = {}, u = "canceled", T = { readyState: 0, getResponseHeader: function (e) { var t; if (h) { if (!n) { n = {}; while (t = Wt.exec(p)) n[t[1].toLowerCase() + " "] = (n[t[1].toLowerCase() + " "] || []).concat(t[2]) } t = n[e.toLowerCase() + " "] } return null == t ? null : t.join(", ") }, getAllResponseHeaders: function () { return h ? p : null }, setRequestHeader: function (e, t) { return null == h && (e = s[e.toLowerCase()] = s[e.toLowerCase()] || e, a[e] = t), this }, overrideMimeType: function (e) { return null == h && (v.mimeType = e), this }, statusCode: function (e) { var t; if (e) if (h) T.always(e[T.status]); else for (t in e) w[t] = [w[t], e[t]]; return this }, abort: function (e) { var t = e || u; return c && c.abort(t), l(0, t), this } }; if (x.promise(T), v.url = ((e || v.url || Et.href) + "").replace($t, Et.protocol + "//"), v.type = t.method || t.type || v.method || v.type, v.dataTypes = (v.dataType || "*").toLowerCase().match(D) || [""], null == v.crossDomain) { r = C.createElement("a"); try { r.href = v.url, r.href = r.href, v.crossDomain = Xt.protocol + "//" + Xt.host != r.protocol + "//" + r.host } catch (e) { v.crossDomain = !0 } } if (v.data && v.processData && "string" != typeof v.data && (v.data = ce.param(v.data, v.traditional)), Vt(Bt, v, t, T), h) return T; for (i in (g = ce.event && v.global) && 0 == ce.active++ && ce.event.trigger("ajaxStart"), v.type = v.type.toUpperCase(), v.hasContent = !Ft.test(v.type), f = v.url.replace(Rt, ""), v.hasContent ? v.data && v.processData && 0 === (v.contentType || "").indexOf("application/x-www-form-urlencoded") && (v.data = v.data.replace(Mt, "+")) : (o = v.url.slice(f.length), v.data && (v.processData || "string" == typeof v.data) && (f += (At.test(f) ? "&" : "?") + v.data, delete v.data), !1 === v.cache && (f = f.replace(It, "$1"), o = (At.test(f) ? "&" : "?") + "_=" + jt.guid++ + o), v.url = f + o), v.ifModified && (ce.lastModified[f] && T.setRequestHeader("If-Modified-Since", ce.lastModified[f]), ce.etag[f] && T.setRequestHeader("If-None-Match", ce.etag[f])), (v.data && v.hasContent && !1 !== v.contentType || t.contentType) && T.setRequestHeader("Content-Type", v.contentType), T.setRequestHeader("Accept", v.dataTypes[0] && v.accepts[v.dataTypes[0]] ? v.accepts[v.dataTypes[0]] + ("*" !== v.dataTypes[0] ? ", " + zt + "; q=0.01" : "") : v.accepts["*"]), v.headers) T.setRequestHeader(i, v.headers[i]); if (v.beforeSend && (!1 === v.beforeSend.call(y, T, v) || h)) return T.abort(); if (u = "abort", b.add(v.complete), T.done(v.success), T.fail(v.error), c = Vt(_t, v, t, T)) { if (T.readyState = 1, g && m.trigger("ajaxSend", [T, v]), h) return T; v.async && 0 < v.timeout && (d = ie.setTimeout(function () { T.abort("timeout") }, v.timeout)); try { h = !1, c.send(a, l) } catch (e) { if (h) throw e; l(-1, e) } } else l(-1, "No Transport"); function l(e, t, n, r) { var i, o, a, s, u, l = t; h || (h = !0, d && ie.clearTimeout(d), c = void 0, p = r || "", T.readyState = 0 < e ? 4 : 0, i = 200 <= e && e < 300 || 304 === e, n && (s = function (e, t, n) { var r, i, o, a, s = e.contents, u = e.dataTypes; while ("*" === u[0]) u.shift(), void 0 === r && (r = e.mimeType || t.getResponseHeader("Content-Type")); if (r) for (i in s) if (s[i] && s[i].test(r)) { u.unshift(i); break } if (u[0] in n) o = u[0]; else { for (i in n) { if (!u[0] || e.converters[i + " " + u[0]]) { o = i; break } a || (a = i) } o = o || a } if (o) return o !== u[0] && u.unshift(o), n[o] }(v, T, n)), !i && -1 < ce.inArray("script", v.dataTypes) && ce.inArray("json", v.dataTypes) < 0 && (v.converters["text script"] = function () { }), s = function (e, t, n, r) { var i, o, a, s, u, l = {}, c = e.dataTypes.slice(); if (c[1]) for (a in e.converters) l[a.toLowerCase()] = e.converters[a]; o = c.shift(); while (o) if (e.responseFields[o] && (n[e.responseFields[o]] = t), !u && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)), u = o, o = c.shift()) if ("*" === o) o = u; else if ("*" !== u && u !== o) { if (!(a = l[u + " " + o] || l["* " + o])) for (i in l) if ((s = i.split(" "))[1] === o && (a = l[u + " " + s[0]] || l["* " + s[0]])) { !0 === a ? a = l[i] : !0 !== l[i] && (o = s[0], c.unshift(s[1])); break } if (!0 !== a) if (a && e["throws"]) t = a(t); else try { t = a(t) } catch (e) { return { state: "parsererror", error: a ? e : "No conversion from " + u + " to " + o } } } return { state: "success", data: t } }(v, s, T, i), i ? (v.ifModified && ((u = T.getResponseHeader("Last-Modified")) && (ce.lastModified[f] = u), (u = T.getResponseHeader("etag")) && (ce.etag[f] = u)), 204 === e || "HEAD" === v.type ? l = "nocontent" : 304 === e ? l = "notmodified" : (l = s.state, o = s.data, i = !(a = s.error))) : (a = l, !e && l || (l = "error", e < 0 && (e = 0))), T.status = e, T.statusText = (t || l) + "", i ? x.resolveWith(y, [o, l, T]) : x.rejectWith(y, [T, l, a]), T.statusCode(w), w = void 0, g && m.trigger(i ? "ajaxSuccess" : "ajaxError", [T, v, i ? o : a]), b.fireWith(y, [T, l]), g && (m.trigger("ajaxComplete", [T, v]), --ce.active || ce.event.trigger("ajaxStop"))) } return T }, getJSON: function (e, t, n) { return ce.get(e, t, n, "json") }, getScript: function (e, t) { return ce.get(e, void 0, t, "script") } }), ce.each(["get", "post"], function (e, i) { ce[i] = function (e, t, n, r) { return v(t) && (r = r || n, n = t, t = void 0), ce.ajax(ce.extend({ url: e, type: i, dataType: r, data: t, success: n }, ce.isPlainObject(e) && e)) } }), ce.ajaxPrefilter(function (e) { var t; for (t in e.headers) "content-type" === t.toLowerCase() && (e.contentType = e.headers[t] || "") }), ce._evalUrl = function (e, t, n) { return ce.ajax({ url: e, type: "GET", dataType: "script", cache: !0, async: !1, global: !1, converters: { "text script": function () { } }, dataFilter: function (e) { ce.globalEval(e, t, n) } }) }, ce.fn.extend({ wrapAll: function (e) { var t; return this[0] && (v(e) && (e = e.call(this[0])), t = ce(e, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && t.insertBefore(this[0]), t.map(function () { var e = this; while (e.firstElementChild) e = e.firstElementChild; return e }).append(this)), this }, wrapInner: function (n) { return v(n) ? this.each(function (e) { ce(this).wrapInner(n.call(this, e)) }) : this.each(function () { var e = ce(this), t = e.contents(); t.length ? t.wrapAll(n) : e.append(n) }) }, wrap: function (t) { var n = v(t); return this.each(function (e) { ce(this).wrapAll(n ? t.call(this, e) : t) }) }, unwrap: function (e) { return this.parent(e).not("body").each(function () { ce(this).replaceWith(this.childNodes) }), this } }), ce.expr.pseudos.hidden = function (e) { return !ce.expr.pseudos.visible(e) }, ce.expr.pseudos.visible = function (e) { return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length) }, ce.ajaxSettings.xhr = function () { try { return new ie.XMLHttpRequest } catch (e) { } }; var Yt = { 0: 200, 1223: 204 }, Qt = ce.ajaxSettings.xhr(); le.cors = !!Qt && "withCredentials" in Qt, le.ajax = Qt = !!Qt, ce.ajaxTransport(function (i) { var o, a; if (le.cors || Qt && !i.crossDomain) return { send: function (e, t) { var n, r = i.xhr(); if (r.open(i.type, i.url, i.async, i.username, i.password), i.xhrFields) for (n in i.xhrFields) r[n] = i.xhrFields[n]; for (n in i.mimeType && r.overrideMimeType && r.overrideMimeType(i.mimeType), i.crossDomain || e["X-Requested-With"] || (e["X-Requested-With"] = "XMLHttpRequest"), e) r.setRequestHeader(n, e[n]); o = function (e) { return function () { o && (o = a = r.onload = r.onerror = r.onabort = r.ontimeout = r.onreadystatechange = null, "abort" === e ? r.abort() : "error" === e ? "number" != typeof r.status ? t(0, "error") : t(r.status, r.statusText) : t(Yt[r.status] || r.status, r.statusText, "text" !== (r.responseType || "text") || "string" != typeof r.responseText ? { binary: r.response } : { text: r.responseText }, r.getAllResponseHeaders())) } }, r.onload = o(), a = r.onerror = r.ontimeout = o("error"), void 0 !== r.onabort ? r.onabort = a : r.onreadystatechange = function () { 4 === r.readyState && ie.setTimeout(function () { o && a() }) }, o = o("abort"); try { r.send(i.hasContent && i.data || null) } catch (e) { if (o) throw e } }, abort: function () { o && o() } } }), ce.ajaxPrefilter(function (e) { e.crossDomain && (e.contents.script = !1) }), ce.ajaxSetup({ accepts: { script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" }, contents: { script: /\b(?:java|ecma)script\b/ }, converters: { "text script": function (e) { return ce.globalEval(e), e } } }), ce.ajaxPrefilter("script", function (e) { void 0 === e.cache && (e.cache = !1), e.crossDomain && (e.type = "GET") }), ce.ajaxTransport("script", function (n) { var r, i; if (n.crossDomain || n.scriptAttrs) return { send: function (e, t) { r = ce("<script>").attr(n.scriptAttrs || {}).prop({ charset: n.scriptCharset, src: n.url }).on("load error", i = function (e) { r.remove(), i = null, e && t("error" === e.type ? 404 : 200, e.type) }), C.head.appendChild(r[0]) }, abort: function () { i && i() } } }); var Jt, Kt = [], Zt = /(=)\?(?=&|$)|\?\?/; ce.ajaxSetup({ jsonp: "callback", jsonpCallback: function () { var e = Kt.pop() || ce.expando + "_" + jt.guid++; return this[e] = !0, e } }), ce.ajaxPrefilter("json jsonp", function (e, t, n) { var r, i, o, a = !1 !== e.jsonp && (Zt.test(e.url) ? "url" : "string" == typeof e.data && 0 === (e.contentType || "").indexOf("application/x-www-form-urlencoded") && Zt.test(e.data) && "data"); if (a || "jsonp" === e.dataTypes[0]) return r = e.jsonpCallback = v(e.jsonpCallback) ? e.jsonpCallback() : e.jsonpCallback, a ? e[a] = e[a].replace(Zt, "$1" + r) : !1 !== e.jsonp && (e.url += (At.test(e.url) ? "&" : "?") + e.jsonp + "=" + r), e.converters["script json"] = function () { return o || ce.error(r + " was not called"), o[0] }, e.dataTypes[0] = "json", i = ie[r], ie[r] = function () { o = arguments }, n.always(function () { void 0 === i ? ce(ie).removeProp(r) : ie[r] = i, e[r] && (e.jsonpCallback = t.jsonpCallback, Kt.push(r)), o && v(i) && i(o[0]), o = i = void 0 }), "script" }), le.createHTMLDocument = ((Jt = C.implementation.createHTMLDocument("").body).innerHTML = "<form></form><form></form>", 2 === Jt.childNodes.length), ce.parseHTML = function (e, t, n) { return "string" != typeof e ? [] : ("boolean" == typeof t && (n = t, t = !1), t || (le.createHTMLDocument ? ((r = (t = C.implementation.createHTMLDocument("")).createElement("base")).href = C.location.href, t.head.appendChild(r)) : t = C), o = !n && [], (i = w.exec(e)) ? [t.createElement(i[1])] : (i = Ae([e], t, o), o && o.length && ce(o).remove(), ce.merge([], i.childNodes))); var r, i, o }, ce.fn.load = function (e, t, n) { var r, i, o, a = this, s = e.indexOf(" "); return -1 < s && (r = Tt(e.slice(s)), e = e.slice(0, s)), v(t) ? (n = t, t = void 0) : t && "object" == typeof t && (i = "POST"), 0 < a.length && ce.ajax({ url: e, type: i || "GET", dataType: "html", data: t }).done(function (e) { o = arguments, a.html(r ? ce("<div>").append(ce.parseHTML(e)).find(r) : e) }).always(n && function (e, t) { a.each(function () { n.apply(this, o || [e.responseText, t, e]) }) }), this }, ce.expr.pseudos.animated = function (t) { return ce.grep(ce.timers, function (e) { return t === e.elem }).length }, ce.offset = { setOffset: function (e, t, n) { var r, i, o, a, s, u, l = ce.css(e, "position"), c = ce(e), f = {}; "static" === l && (e.style.position = "relative"), s = c.offset(), o = ce.css(e, "top"), u = ce.css(e, "left"), ("absolute" === l || "fixed" === l) && -1 < (o + u).indexOf("auto") ? (a = (r = c.position()).top, i = r.left) : (a = parseFloat(o) || 0, i = parseFloat(u) || 0), v(t) && (t = t.call(e, n, ce.extend({}, s))), null != t.top && (f.top = t.top - s.top + a), null != t.left && (f.left = t.left - s.left + i), "using" in t ? t.using.call(e, f) : c.css(f) } }, ce.fn.extend({ offset: function (t) { if (arguments.length) return void 0 === t ? this : this.each(function (e) { ce.offset.setOffset(this, t, e) }); var e, n, r = this[0]; return r ? r.getClientRects().length ? (e = r.getBoundingClientRect(), n = r.ownerDocument.defaultView, { top: e.top + n.pageYOffset, left: e.left + n.pageXOffset }) : { top: 0, left: 0 } : void 0 }, position: function () { if (this[0]) { var e, t, n, r = this[0], i = { top: 0, left: 0 }; if ("fixed" === ce.css(r, "position")) t = r.getBoundingClientRect(); else { t = this.offset(), n = r.ownerDocument, e = r.offsetParent || n.documentElement; while (e && (e === n.body || e === n.documentElement) && "static" === ce.css(e, "position")) e = e.parentNode; e && e !== r && 1 === e.nodeType && ((i = ce(e).offset()).top += ce.css(e, "borderTopWidth", !0), i.left += ce.css(e, "borderLeftWidth", !0)) } return { top: t.top - i.top - ce.css(r, "marginTop", !0), left: t.left - i.left - ce.css(r, "marginLeft", !0) } } }, offsetParent: function () { return this.map(function () { var e = this.offsetParent; while (e && "static" === ce.css(e, "position")) e = e.offsetParent; return e || J }) } }), ce.each({ scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function (t, i) { var o = "pageYOffset" === i; ce.fn[t] = function (e) { return M(this, function (e, t, n) { var r; if (y(e) ? r = e : 9 === e.nodeType && (r = e.defaultView), void 0 === n) return r ? r[i] : e[t]; r ? r.scrollTo(o ? r.pageXOffset : n, o ? n : r.pageYOffset) : e[t] = n }, t, e, arguments.length) } }), ce.each(["top", "left"], function (e, n) { ce.cssHooks[n] = Ye(le.pixelPosition, function (e, t) { if (t) return t = Ge(e, n), _e.test(t) ? ce(e).position()[n] + "px" : t }) }), ce.each({ Height: "height", Width: "width" }, function (a, s) { ce.each({ padding: "inner" + a, content: s, "": "outer" + a }, function (r, o) { ce.fn[o] = function (e, t) { var n = arguments.length && (r || "boolean" != typeof e), i = r || (!0 === e || !0 === t ? "margin" : "border"); return M(this, function (e, t, n) { var r; return y(e) ? 0 === o.indexOf("outer") ? e["inner" + a] : e.document.documentElement["client" + a] : 9 === e.nodeType ? (r = e.documentElement, Math.max(e.body["scroll" + a], r["scroll" + a], e.body["offset" + a], r["offset" + a], r["client" + a])) : void 0 === n ? ce.css(e, t, i) : ce.style(e, t, n, i) }, s, n ? e : void 0, n) } }) }), ce.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function (e, t) { ce.fn[t] = function (e) { return this.on(t, e) } }), ce.fn.extend({ bind: function (e, t, n) { return this.on(e, null, t, n) }, unbind: function (e, t) { return this.off(e, null, t) }, delegate: function (e, t, n, r) { return this.on(t, e, n, r) }, undelegate: function (e, t, n) { return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n) }, hover: function (e, t) { return this.on("mouseenter", e).on("mouseleave", t || e) } }), ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), function (e, n) { ce.fn[n] = function (e, t) { return 0 < arguments.length ? this.on(n, null, e, t) : this.trigger(n) } }); var en = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g; ce.proxy = function (e, t) { var n, r, i; if ("string" == typeof t && (n = e[t], t = e, e = n), v(e)) return r = ae.call(arguments, 2), (i = function () { return e.apply(t || this, r.concat(ae.call(arguments))) }).guid = e.guid = e.guid || ce.guid++, i }, ce.holdReady = function (e) { e ? ce.readyWait++ : ce.ready(!0) }, ce.isArray = Array.isArray, ce.parseJSON = JSON.parse, ce.nodeName = fe, ce.isFunction = v, ce.isWindow = y, ce.camelCase = F, ce.type = x, ce.now = Date.now, ce.isNumeric = function (e) { var t = ce.type(e); return ("number" === t || "string" === t) && !isNaN(e - parseFloat(e)) }, ce.trim = function (e) { return null == e ? "" : (e + "").replace(en, "$1") }, "function" == typeof define && define.amd && define("jquery", [], function () { return ce }); var tn = ie.jQuery, nn = ie.$; return ce.noConflict = function (e) { return ie.$ === ce && (ie.$ = nn), e && ie.jQuery === ce && (ie.jQuery = tn), ce }, "undefined" == typeof e && (ie.jQuery = ie.$ = ce), ce });</script> <script type="text/javascript" src="https://rfmsite2023-images.azureedge.net/js/navbar.min.js?v=2.8"></script> <!-- Fim js's --> <link rel="preload" href="https://rfmsite2023-images.azureedge.net/js/video-ticker.min.js?v=2.8" as="script" /> <script> (function () { var docElem = document.documentElement; window.lazySizesConfig = window.lazySizesConfig || {}; window.lazySizesConfig.loadMode = 1; window.lazySizesConfig.expand = Math.max(Math.min(docElem.clientWidth, docElem.clientHeight, 1222) - 1, 359); window.lazySizesConfig.expFactor = lazySizesConfig.expand < 380 ? 3 : 2; })(); </script> <!-- Google Tag Manager --> <script>(function (w, d, s, l, i) { w[l] = w[l] || []; w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); })(window, document, 'script', 'dataLayer', 'GTM-NN3B2C2');</script> <!-- End Google Tag Manager --> <!-- Facebook Pixel Code --> <script> !function (f, b, e, v, n, t, s) { if (f.fbq) return; n = f.fbq = function () { n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments) }; if (!f._fbq) f._fbq = n; n.push = n; n.loaded = !0; n.version = '2.0'; n.queue = []; t = b.createElement(e); t.async = !0; t.src = v; s = b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t, s) }(window, document, 'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '660369728267137'); fbq('track', 'PageView'); </script> <noscript><img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=660369728267137&ev=PageView&noscript=1" /></noscript> <!-- End Facebook Pixel Code --> <!-- PUB BUNDLE--> <script src="https://rfmsite2023-images.azureedge.net/js/pub/tagbundle.js?v=2.8"></script> <script> //targeting page level tagBundleConfig.targeting = { segmentacao: ['homepage'] } </script> <!-- Para limitar a altura para o formato fluid aplicar a css--> <style> .stickyBottom {max-height: 100px; } </style> <!-- PUB BUNDLE--> <!-- PUB BUNDLE STICK--> <link rel="preload" href="https://rfmsite2023-images.azureedge.net/js/pub/stick.min.js?v=2.8" as="script" /> <script type="text/javascript" src="https://rfmsite2023-images.azureedge.net/js/pub/stick.min.js?v=2.8"></script> <!--Anti-AdBlocker: AD BLOCKING RECOVERY TAG --> <script async src="https://fundingchoicesmessages.google.com/i/pub-9376757882493680?ers=1" nonce="-JtmwVSv3mOryevFq_Bkhw"></script> <script nonce="-JtmwVSv3mOryevFq_Bkhw">(function () { function signalGooglefcPresent() { if (!window.frames['googlefcPresent']) { if (document.body) { const iframe = document.createElement('iframe'); iframe.style = 'width: 0; height: 0; border: none; z-index: -1000; left: -1000px; top: -1000px;'; iframe.style.display = 'none'; iframe.name = 'googlefcPresent'; document.body.appendChild(iframe); } else { setTimeout(signalGooglefcPresent, 0); } } } signalGooglefcPresent(); })();</script> <script src="https://rfmsite2023-images.azureedge.net/js/pub/anti-adblocker.js?v=2.8"></script> <!-- inMobi Consent--> </head> <body> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NN3B2C2" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <!-- PUB BUNDLE--> <div id="sticky_Bottom"> <ad-placement class="stickyBottom" format="stickyBottom" adunit="RFM/rfm_ros_stickyBottom"></ad-placement> </div> <!-- PUB BUNDLE--> <script type="text/javascript"> var nonioenabled =false; </script> <script type="text/javascript" src="https://rfmsite2023-images.azureedge.net/js/nonio/noniogatting.min.js?v=2.8"></script> <div id="wrapperContentGatingNonio" style="display: none;"> <div class="maskContentGatingNonio"> <!--caixa esquerda--> <div class="left-columnContentGatingNonio"> <div class="logotipoContentGatingNonio" style="background-image: url('https://images.rr.pt/logo_rfm_white6036587e.png')"></div> <div class="h-2ContentGatingNonio hidedesktopContentGatingNonio"> Para continuar a ler, <div class="h4rep">registe-se no Nónio</div> </div> <div class="h-1ContentGatingNonio hidemobileContentGatingNonio">Olá, para continuar a ler os nossos conteúdos e garantir o acesso aos melhores sites portugueses faça já o seu registo. </div> <div class="vantagensContentGatingNonio"> <div> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 20 20" style="enable-background: new 0 0 20 20;" xml:space="preserve"> <g> <path class="st0ContentGatingNonio" d="M10,0.2c-5.4,0-9.9,4.4-9.9,9.9c0,5.4,4.4,9.9,9.9,9.9s9.9-4.4,9.9-9.9C19.8,4.6,15.4,0.2,10,0.2z M10,18.6 c-4.7,0-8.6-3.8-8.6-8.6S5.2,1.4,10,1.4s8.6,3.8,8.6,8.6S14.7,18.6,10,18.6z" /> <polygon class="st0ContentGatingNonio" points="8.3,11.6 6,8.9 5,9.7 7.3,12.4 8.2,13.4 9.2,12.6 15,7.6 14.1,6.6 " /> </g> </svg> Acesso aos melhores conteúdos </div> <div> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 20 20" style="enable-background: new 0 0 20 20;" xml:space="preserve"> <g> <path class="st0ContentGatingNonio" d="M10,0.2c-5.4,0-9.9,4.4-9.9,9.9c0,5.4,4.4,9.9,9.9,9.9s9.9-4.4,9.9-9.9C19.8,4.6,15.4,0.2,10,0.2z M10,18.6 c-4.7,0-8.6-3.8-8.6-8.6S5.2,1.4,10,1.4s8.6,3.8,8.6,8.6S14.7,18.6,10,18.6z" /> <polygon class="st0ContentGatingNonio" points="8.3,11.6 6,8.9 5,9.7 7.3,12.4 8.2,13.4 9.2,12.6 15,7.6 14.1,6.6 " /> </g> </svg> Simples: Registo único em menos de 1 minuto </div> <div> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 20 20" style="enable-background: new 0 0 20 20;" xml:space="preserve"> <g> <path class="st0ContentGatingNonio" d="M10,0.2c-5.4,0-9.9,4.4-9.9,9.9c0,5.4,4.4,9.9,9.9,9.9s9.9-4.4,9.9-9.9C19.8,4.6,15.4,0.2,10,0.2z M10,18.6 c-4.7,0-8.6-3.8-8.6-8.6S5.2,1.4,10,1.4s8.6,3.8,8.6,8.6S14.7,18.6,10,18.6z" /> <polygon class="st0ContentGatingNonio" points="8.3,11.6 6,8.9 5,9.7 7.3,12.4 8.2,13.4 9.2,12.6 15,7.6 14.1,6.6 " /> </g> </svg> Um único login que lhe dá acesso permanente a este e aos mais de 70 sites de media portugueses, que fazem parte do NÓNIO </div> <div> <a style="color: white; text-decoration: none;" href="https://rfm.pt/" target="_self" title="Home Page">Voltar à homepage do site</a> </div> </div> </div> <!-- Caixa direita--> <!-- Caixa direita--> <div class="right-columnContentGatingNonio" style="overflow: hidden;"> <div id="cg" style="overflow-y: auto; height: 100%; min-height: 540px; max-height: 540px; margin-top: 5px; margin-bottom: 41px;"></div> <div class="assNonioContentGatingNonio"><a href="https://nonio.net/" target="_new"> <img alt="logo nonio" class="nonio-imgContentGatingNonio" width="64" src="https://rrsite-images.azureedge.net/img/ico-nonio.svg" /> Fique por dentro > </a></div> </div> </div> </div> <!-- nonio wrapper e--> <h1 class='h-h'>RFM - Só Grandes Músicas</h1> <!-- |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| --> <div class="s-mod search-hide"> <div class="c-but"> <div id="close-but2" class="mn-ico"> <div class='search-toggle' title='Fechar pesquisa'> <div class='bar-s1'></div> <div class='bar-s3'></div> </div> </div> </div> <div class="search-box"> <input class="searchBox" type="text" placeholder="O termo da tua pesquisa ..." name="search"> <button id="pesquisar" class="x-btn quarter-left-space" role="button" title="Pesquisar"> <div class="x-btn-bg bgc-light-red"></div> <p class="x-btn-lb txtc-red">Pesquisar</p> </button> </div> </div> <script src="https://rfmsite2023-images.azureedge.net/js/pesquisa.min.js?v=2.8"></script> <!-- ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||--> <!-- MAIN NAV --> <nav class="nav-hide"> <div class="c-but"> <div id="close-but" class="mn-ico"> <div class='search-toggle' title='Fechar menu'> <div class='bar-s1'></div> <div class='bar-s3'></div> </div> </div> </div> <ul> <li><h2 class="bgbox"><a href="https://rfm.pt/atualidade" target="_self" data-text="Atualidade">Atualidade</a></h2></li> <li><h2 class="bgbox"><a href="https://rfm.pt/radios" target="_self" data-text="Rádios">Rádios</a></h2></li> <li><h2 class="bgbox"><a href="https://rfm.pt/programas" target="_self" data-text="Programas">Programas</a></h2></li> <li><h2 class="bgbox"><a href="https://rfm.pt/podcasts" target="_self" data-text="Podcasts">Podcasts</a></h2></li> <li><h2 class="bgbox"><a href="https://rfm.pt/videos" target="_self" data-text="Vídeos">Vídeos</a></h2></li> <li><h2 class="bgbox"><a href="https://rfm.pt/eventos-rfm" target="_self" data-text="Eventos RFM">Eventos RFM</a></h2></li> <li><h2 class="bgbox"><a href="https://rfm.pt/a-rfm" target="_self" data-text="A RFM">A RFM</a></h2></li> </ul> </nav> <!-- BILLBOARD --> <section id='top-pub'><div class='pub-info-bb'>PUB</div><div class='pub-bb'><ad-placement refresh='false' format='Billboard' adunit='RFM/rfm_hp_Billboard'></ad-placement></div></section> <!-- MAIN GRID --> <div class="main-gta"> <header class="header sticky"> <!-- BARRA TOPO EXTRAS --> <!-- MAIN NAV --> <section id="top-extras"> <div class="extra-nav"> <div class="cx-pesq-notif"> <!-- Notifications Begins --> <div class="ico-alert half-right-space"> <a href="https://rfm.pt/notificacoes-rfm" target="_self" title="Notificações da RFM"> <img data-src="https://rfmsite2023-images.azureedge.net/images/ico-alert.svg" width="35" height="35" alt="Notificações da RFM" title="Notificações da RFM" class="lazyload" /> </a> <!-- PopNotificacoes --> <!-- Fim PopNotificacoes --> </div> <!-- Notifications Ends --> <div class="ico-search half-right-space"> <a href="#" title="Pesquisar no site"> <img data-src="https://rfmsite2023-images.azureedge.net/images/ico-search.svg" width="35" height="32" alt="Pesquisar no site" title="Pesquisar no site" class="lazyload" /> </a> </div> </div> <!-- Nonio --> <div class="cx-nonio"> <!-- Nonio RFM --> <script type="text/javascript"> var nonioShowCaptcha = 'false'; console.log('nonioShowCaptcha=' + nonioShowCaptcha); </script> <script type="text/javascript" src="https://rfmsite2023-images.azureedge.net/js/nonio/functions_nonio.min.js?v=2.8"></script> <div id="gigyaUserLoggedOut" style="display: none;"> <button class="x-btn half-right-space" onclick="New_Login();" role="button"> <div class="x-btn-bg bgc-light-red"></div> <p class="x-btn-lb txtc-red">Login</p> </button> <a href="#" class="lnk-white fw-bold half-right-space" style="cursor: pointer" onclick="Register();" title="Novo Registo">Novo Registo</a> </div> <div id="gigyaUserLoggedIn" style="display: none;"> <a href="#" class="lnk-white half-right-space hide-xsmall hide-small large" style="cursor: pointer" onclick="Update_User();">Olá <span id="gigyaFirstName"></span></a> <a href="#" class="lnk-white fw-bold half-right-space" style="cursor: pointer" onclick="Update_User();">Editar Perfil</a> <button onclick="LogOut();" class="x-btn half-right-space" role="button"> <div class="x-btn-bg bgc-light-red"></div> <p class="x-btn-lb txtc-red">Logout</p> </button> </div> <!-- Nonio RFM END--> </div> <!-- Nonio END --> </div> </section> <!-- TOPO BEGINS --> <section id="top-bar"> <!-- 3 x line --> <div class="top-triade"> <!-- Ico Nav --> <div class="mn-but mn-circle"> <div class="mn-ico"> <div class='navbar-toggle' title='Menu'> <div class='bar1'></div> <div class='bar2'></div> <div class='bar3'></div> <div class="bar-txt-mn">menu</div> </div> </div> </div> <!-- RFM Logo --> <a href="https://rfm.pt/" target="_self" title="RFM - Só Grandes Músicas"> <img src="https://rfmsite2023-images.azureedge.net/images/RFM-logo-marca-confianca-2025.png" width="220" height="95" class="ic-lg-extra lazyload" title="RFM Marca de Confiança 2025 - Ir para a homepage RFM" alt="RFM Marca de Confiança 2025 - Ir para a homepage RFM" /> </a> <!-- Ico Play --> <a href="https://rfm.pt/ouvir-emissao-rfm" rel="noopener" target="_blank" title="Ouvir a Rádio Online RFM" class="player-play"> <div class="mn-circle"> <div class="mn-ico"> <div class='ico-play'></div> <div class="bar-txt-play">ouvir</div> </div> </div> </a> </div> </section> </header> <!-- Métricas --> <!-- netScope v4 r1 – Begin of gPrism tag --> <script type="text/javascript"> <!--//--><![CDATA[//><!-- var pp_gemius_identifier = 'ndpAgrN_Kzod77shLEP21NTIDiGBXmcVepuwGVz.3HD.A7'; var pp_gemius_extraparameters = new Array('gA=Homepage_do_site'); // lines below shouldn't be edited function gemius_pending(i) { window[i] = window[i] || function () { var x = window[i + '_pdata'] = window[i + '_pdata'] || []; x[x.length] = arguments; }; }; gemius_pending('gemius_hit'); gemius_pending('gemius_event'); gemius_pending('pp_gemius_hit'); gemius_pending('pp_gemius_event'); (function (d, t) { var ex; try { var gt = d.createElement(t), s = d.getElementsByTagName(t)[0], l = 'http' + ((location.protocol == 'https:') ? 's' : ''); gt.async = 'true'; gt.src = l + '://gapt.hit.gemius.pl/xgemius.js'; s.parentNode.insertBefore(gt, s); } catch (ex) { } })(document, 'script'); //--><!]]> </script> <!--End netScope v4 r1 / www.net.marktest.pt / (C) Gemius/Marktest 2018 --> <!-- FIM Métricas --> <!-- BODY BEGINS --> <main> <section id="main-body" class="bottom-space"> <!-- **************** WEBRADIOS BEGINS ********************************** --> <link rel="preload" href="https://rfmsite2023-images.azureedge.net/js/slick.min.js?v=2.8" as="script" /> <link rel="preload" href="https://rfmsite2023-images.azureedge.net/js/ticker.min.js?v=2.8" as="script" /> <link rel="stylesheet" href="https://rfmsite2023-images.azureedge.net/css/rotator-webrads.min.css?v=2.9"> <section class="wr-box2 radios-hz-cx half-top-space"> <div class="wr-title quarter-vertical-space"> <div>Rádios online</div> <div class="quarter-left-space"> <hr /> </div> </div> <div class="webrads-rot"> <div class="loading-ln-rads"> <div class="loader"></div> </div> <div class="slick-not-init"> <div class="wr-active-rad"> <a href="https://rfm.pt/ouvir-emissao-rfm" target="_blank" title="Ouvir a Rádio Online RFM"> <figure class="wr-img"> <img title="Ouvir a Rádio Online RFM" alt="Ouvir a Rádio Online RFM" data-sizes="auto" data-srcset="https://rfmsite2023-images.azureedge.net/images/webrads/rfm-online_100x100.jpg" width="100" height="100" data-src="https://rfmsite2023-images.azureedge.net/images/webrads/rfm-online_100x100.jpg" class="lazyload" /> <figcaption> <div class="marquee"> <div>No ar com <span class="marqueeBoxAnim">RFM</span></div> </div> </figcaption> </figure> </a> </div> <div class="wr-rad-list"> <ul class="n-list wr-rot"> <li id="ContentPlaceHolderRFM_uc_radios_online_hz_li_rfm_jazzy"> <a href="https://rfm.pt/ouvir-emissao-rfm-jazzy" target="_blank" title="Ouvir a Rádio Online RFM Jazzy"> <figure class="wr-img"> <img title="Ouvir a Rádio Online RFM Jazzy" alt="Ouvir a Rádio Online RFM Jazzy" data-sizes="auto" data-srcset="https://rfmsite2023-images.azureedge.net/images/webrads/rfm-Jazzy-radio-online_100x100.jpg" width="100" height="100" data-src="https://rfmsite2023-images.azureedge.net/images/webrads/rfm-Jazzy-radio-online_100x100.jpg" class="lazyload" /> <figcaption>RFM Jazzy</figcaption> </figure> </a> </li> <li id="ContentPlaceHolderRFM_uc_radios_online_hz_li_rfm_novas"> <a href="https://rfm.pt/ouvir-emissao-rfm-novas" target="_blank" title="Ouvir a Rádio Online RFM Novas"> <figure class="wr-img"> <img title="Ouvir a Rádio Online RFM Novas" alt="Ouvir a Rádio Online RFM Novas" data-sizes="auto" data-srcset="https://rfmsite2023-images.azureedge.net/images/webrads/rfm-Novas-radio-online_100x100.jpg" width="100" height="100" data-src="https://rfmsite2023-images.azureedge.net/images/webrads/rfm-Novas-radio-online_100x100.jpg" class="lazyload" /> <figcaption>RFM Novas</figcaption> </figure> </a> </li> <li id="ContentPlaceHolderRFM_uc_radios_online_hz_li_rfm_dance_it"> <a href="https://rfm.pt/ouvir-emissao-rfm-dance-it" target="_blank" title="Ouvir a Rádio Online RFM Dance It"> <figure class="wr-img"> <img title="Ouvir a Rádio Online RFM Dance It" alt="Ouvir a Rádio Online RFM Dance It" data-sizes="auto" data-srcset="https://rfmsite2023-images.azureedge.net/images/webrads/rfm-Dance-it-radio-online_100x100.jpg" width="100" height="100" data-src="https://rfmsite2023-images.azureedge.net/images/webrads/rfm-Dance-it-radio-online_100x100.jpg" class="lazyload" /> <figcaption>RFM Dance It</figcaption> </figure> </a> </li> <li id="ContentPlaceHolderRFM_uc_radios_online_hz_li_rfm_latinas"> <a href="https://rfm.pt/ouvir-emissao-rfm-latinas" target="_blank" title="Ouvir a Rádio Online RFM Latinas"> <figure class="wr-img"> <img title="Ouvir a Rádio Online RFM Latinas" alt="Ouvir a Rádio Online RFM Latinas" data-sizes="auto" data-srcset="https://rfmsite2023-images.azureedge.net/images/webrads/rfm-Latinas-radio-online_100x100.jpg" width="100" height="100" data-src="https://rfmsite2023-images.azureedge.net/images/webrads/rfm-Latinas-radio-online_100x100.jpg" class="lazyload" /> <figcaption>RFM Latinas</figcaption> </figure> </a> </li> <li id="ContentPlaceHolderRFM_uc_radios_online_hz_li_rfm_oceano"> <a href="https://rfm.pt/ouvir-emissao-rfm-oceano-pacifico" target="_blank" title="Ouvir a Rádio Online RFM Oceano Pacífico"> <figure class="wr-img"> <img title="Ouvir a Rádio Online RFM Oceano Pacífico" alt="Ouvir a Rádio Online RFM Oceano Pacífico" data-sizes="auto" data-srcset="https://rfmsite2023-images.azureedge.net/images/webrads/rfm-Oceano-Pacifico-radio-online_100x100.jpg" width="100" height="100" data-src="https://rfmsite2023-images.azureedge.net/images/webrads/rfm-Oceano-Pacifico-radio-online_100x100.jpg" class="lazyload" /> <figcaption>RFM Oceano Pacífico</figcaption> </figure> </a> </li> <li id="ContentPlaceHolderRFM_uc_radios_online_hz_li_80s"> <a href="https://rfm.pt/ouvir-emissao-80s-rfm" target="_blank" title="Ouvir a Rádio Online 80's RFM"> <figure class="wr-img"> <img title="Ouvir a Rádio Online 80's RFM" alt="Ouvir a Rádio Online 80's RFM" data-sizes="auto" data-srcset="https://rfmsite2023-images.azureedge.net/images/webrads/rfm-80s-radio-online_100x100.jpg" width="100" height="100" data-src="https://rfmsite2023-images.azureedge.net/images/webrads/rfm-80s-radio-online_100x100.jpg" class="lazyload" /> <figcaption>80's RFM</figcaption> </figure> </a> </li> <li id="ContentPlaceHolderRFM_uc_radios_online_hz_li_90s"> <a href="https://rfm.pt/ouvir-emissao-90s-rfm" target="_blank" title="Ouvir a Rádio Online 90's RFM"> <figure class="wr-img"> <img title="Ouvir a Rádio Online 90's RFM" alt="Ouvir a Rádio Online 90's RFM" data-sizes="auto" data-srcset="https://rfmsite2023-images.azureedge.net/images/webrads/rfm-90s-radio-online_100x100.jpg" width="100" height="100" data-src="https://rfmsite2023-images.azureedge.net/images/webrads/rfm-90s-radio-online_100x100.jpg" class="lazyload" /> <figcaption>90's RFM</figcaption> </figure> </a> </li> <li id="ContentPlaceHolderRFM_uc_radios_online_hz_li_00s"> <a href="https://rfm.pt/ouvir-emissao-rfm-00s" target="_blank" title="Ouvir a Rádio Online 00's RFM"> <figure class="wr-img"> <img title="Ouvir a Rádio Online 00's RFM" alt="Ouvir a Rádio Online 00's RFM" data-sizes="auto" data-srcset="https://rfmsite2023-images.azureedge.net/images/webrads/rfm-00s-radio-online_100x100.jpg" width="100" height="100" data-src="https://rfmsite2023-images.azureedge.net/images/webrads/rfm-00s-radio-online_100x100.jpg" class="lazyload" /> <figcaption>00's RFM</figcaption> </figure> </a> </li> <li id="ContentPlaceHolderRFM_uc_radios_online_hz_li_rocks"> <a href="https://rfm.pt/ouvir-emissao-rfm-rocks" target="_blank" title="Ouvir a Rádio Online RFM Rocks"> <figure class="wr-img"> <img title="Ouvir a Rádio Online RFM Rocks" alt="Ouvir a Rádio Online RFM Rocks" data-sizes="auto" data-srcset="https://rfmsite2023-images.azureedge.net/images/webrads/rfm-Rocks-radio-online_100x100.jpg" width="100" height="100" data-src="https://rfmsite2023-images.azureedge.net/images/webrads/rfm-Rocks-radio-online_100x100.jpg" class="lazyload" /> <figcaption>RFM Rocks</figcaption> </figure> </a> </li> <li id="ContentPlaceHolderRFM_uc_radios_online_hz_li_toca_portugal"> <a href="https://rfm.pt/ouvir-emissao-rfm-toca-portugal" target="_blank" title="Ouvir a Rádio Online RFM Toca Portugal"> <figure class="wr-img"> <img title="Ouvir a Rádio Online RFM Toca Portugal" alt="Ouvir a Rádio Online RFM Toca Portugal" data-sizes="auto" data-srcset="https://rfmsite2023-images.azureedge.net/images/webrads/rfm-Toca-Portugal-radio-online_100x100.jpg" width="100" height="100" data-src="https://rfmsite2023-images.azureedge.net/images/webrads/rfm-Toca-Portugal-radio-online_100x100.jpg" class="lazyload" /> <figcaption>RFM Toca Portugal</figcaption> </figure> </a> </li> </ul> </div> </div> </div> </section> <script type="text/javascript" src="https://rfmsite2023-images.azureedge.net/js/slick.min.js?v=2.8"></script> <script type="text/javascript" src="https://rfmsite2023-images.azureedge.net/js/ticker.min.js?v=2.8"></script> <script type="text/javascript"> //Radios Ticker $(document).ready(function () { $(".loading-ln-rads").show(); //$('.wr-rot').on('init', function () { // $(this).removeClass('slick-not-init') //}) /* Simulate defer loading slick */ setTimeout(function () { $(".loading-ln-rads").hide(); $(".slick-not-init").show(); $('.wr-rot').slick({ dots: false, arrows: true, infinite: true, speed: 300, slidesToShow: 10, slidesToScroll: 1, autoplay: true, autoplaySpeed: 5000, prevArrow: "<img alt='Para a esquerda' class='a-left control-c prev slick-prev' src='https://rfmsite2023-images.azureedge.net/images/a-left.png'>", nextArrow: "<img alt='Para a direita' class='a-right control-c next slick-next' src='https://rfmsite2023-images.azureedge.net/images/a-right.png'>", responsive: [ { breakpoint: 2199.98, settings: { slidesToShow: 10, slidesToScroll: 1 } }, { breakpoint: 1899.98, settings: { slidesToShow: 9, slidesToScroll: 1 } }, { breakpoint: 1699.98, settings: { slidesToShow: 8, slidesToScroll: 1 } }, { breakpoint: 1499.98, settings: { slidesToShow: 7, slidesToScroll: 1 } }, { breakpoint: 1399.98, settings: { slidesToShow: 6, slidesToScroll: 1 } }, { breakpoint: 1299.98, settings: { slidesToShow: 5, slidesToScroll: 1 } }, { breakpoint: 1199.98, settings: { slidesToShow: 4, slidesToScroll: 1 } }, { breakpoint: 1099.98, settings: { slidesToShow: 3, slidesToScroll: 1 } }, { breakpoint: 992.98, settings: { slidesToShow: 5, slidesToScroll: 1 } }, { breakpoint: 767.98, settings: { slidesToShow: 4, slidesToScroll: 1, infinite: true } }, { breakpoint: 637.98, settings: { slidesToShow: 3, slidesToScroll: 1, infinite: true } }, { breakpoint: 458.98, settings: { slidesToShow: 2, slidesToScroll: 1, infinite: true } }, { breakpoint: 388.98, settings: { slidesToShow: 1, slidesToScroll: 1, infinite: true } } ] }); }, 500) }); </script> <!-- **************** WEBRADIOS ENDS ************************************ --> <!-- BANNER JOGO DA MALA --> <!-- FIM BANNER JOGO DA MALA --> <section class='b-red bottom-space'><a href='https://rfm.pt/atualidade/18029/ganha-um-dinheirao-no-grandioso-jogo-da-mala-com-a-rfm' target='_self' title='Ganha um dinheirão com o Grandioso Jogo da Mala! Sabe mais aqui!' class='lnk-white'><p class='ban-red'>Ganha um dinheirão com o Grandioso Jogo da Mala! Sabe mais aqui!</p></a></section><div class='x-title top-space half-bottom-space'><span>Atualidade</span></div><section class='g-mx g-m3'><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20169/como-salvar-um-prato-que-ficou-demasiado-salgado-estas-dicas-preciosas-vao-ajudar-te' title='Como salvar um prato que ficou demasiado salgado? Estas dicas preciosas vão ajudar-te' target='_self'><figure><div class='fig-box'><img title='Como salvar um prato que ficou demasiado salgado? Estas dicas preciosas vão ajudar-te' alt='Como salvar um prato que ficou demasiado salgado? Estas dicas preciosas vão ajudar-te' data-sizes='auto' data-srcset=' https://images.rfm.pt/comida-estragada-destaque1499d4e4_destaque_3col.jpg 480w, https://images.rfm.pt/comida-estragada-destaque1499d4e4_base.jpg 555w, https://images.rfm.pt/comida-estragada-destaque1499d4e4_app_medium.jpg 711w, https://images.rfm.pt/comida-estragada-destaque1499d4e4_destaque_2col.jpg 960w, https://images.rfm.pt/comida-estragada-destaque1499d4e4_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/comida-estragada-destaque1499d4e4_base.jpg' class='lazyload' /></div><figcaption>Como salvar um prato que ficou demasiado salgado? Estas dicas preciosas vão ajudar-te</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20171/estas-sempre-a-interromper-os-outros-eis-o-que-a-psicologia-tem-a-dizer' title='Estás sempre a interromper os outros? Eis o que a psicologia tem a dizer' target='_self'><figure><div class='fig-box'><img title='Estás sempre a interromper os outros? Eis o que a psicologia tem a dizer' alt='Estás sempre a interromper os outros? Eis o que a psicologia tem a dizer' data-sizes='auto' data-srcset=' https://images.rfm.pt/homem-a-falar-muito-destaque1436b0a1_destaque_3col.jpg 480w, https://images.rfm.pt/homem-a-falar-muito-destaque1436b0a1_base.jpg 555w, https://images.rfm.pt/homem-a-falar-muito-destaque1436b0a1_app_medium.jpg 711w, https://images.rfm.pt/homem-a-falar-muito-destaque1436b0a1_destaque_2col.jpg 960w, https://images.rfm.pt/homem-a-falar-muito-destaque1436b0a1_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/homem-a-falar-muito-destaque1436b0a1_base.jpg' class='lazyload' /></div><figcaption>Estás sempre a interromper os outros? Eis o que a psicologia tem a dizer</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20175/nuno-ribeiro-finalmente-no-coliseu-de-lisboa' title='Nuno Ribeiro finalmente no Coliseu de Lisboa' target='_self'><figure><div class='fig-box'><img title='Nuno Ribeiro finalmente no Coliseu de Lisboa' alt='Nuno Ribeiro finalmente no Coliseu de Lisboa' data-sizes='auto' data-srcset=' https://images.rfm.pt/nunoribeiro-2026-twittter-post2114a7f2_destaque_3col.jpg 480w, https://images.rfm.pt/nunoribeiro-2026-twittter-post2114a7f2_base.jpg 555w, https://images.rfm.pt/nunoribeiro-2026-twittter-post2114a7f2_app_medium.jpg 711w, https://images.rfm.pt/nunoribeiro-2026-twittter-post2114a7f2_destaque_2col.jpg 960w, https://images.rfm.pt/nunoribeiro-2026-twittter-post2114a7f2_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/nunoribeiro-2026-twittter-post2114a7f2_base.jpg' class='lazyload' /></div><figcaption>Nuno Ribeiro finalmente no Coliseu de Lisboa</figcaption></figure></a></div></section><!-- RFM_HP_INBLOCKS --><div style='margin: 0 auto; text-align: center; margin-bottom: 1em;'><ad-placement format='inBlocks' refresh='false' adunit='RFM/rfm_hp_inBlocks'></ad-placement></div><section class='g-mx g-m3'><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20167/garota-foi-eleita-cancao-do-ano-nos-premios-play-2025' title='"Garota" foi eleita Canção do Ano nos prémios PLAY 2025' target='_self'><figure><div class='fig-box'><img title='"Garota" foi eleita Canção do Ano nos prémios PLAY 2025' alt='"Garota" foi eleita Canção do Ano nos prémios PLAY 2025' data-sizes='auto' data-srcset=' https://images.rfm.pt/maninho-e-marisa-liz-destaque1923be05_destaque_3col.jpg 480w, https://images.rfm.pt/maninho-e-marisa-liz-destaque1923be05_base.jpg 555w, https://images.rfm.pt/maninho-e-marisa-liz-destaque1923be05_app_medium.jpg 711w, https://images.rfm.pt/maninho-e-marisa-liz-destaque1923be05_destaque_2col.jpg 960w, https://images.rfm.pt/maninho-e-marisa-liz-destaque1923be05_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/maninho-e-marisa-liz-destaque1923be05_base.jpg' class='lazyload' /></div><figcaption>"Garota" foi eleita Canção do Ano nos prémios PLAY 2025</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20156/portugal-entre-os-destinos-imperdiveis-para-a-primavera' title='Portugal entre os destinos imperdíveis para a primavera' target='_self'><figure><div class='fig-box'><img title='Portugal entre os destinos imperdíveis para a primavera' alt='Portugal entre os destinos imperdíveis para a primavera' data-sizes='auto' data-srcset=' https://images.rfm.pt/eletrico-em-lisboa-destaque16975439_destaque_3col.jpg 480w, https://images.rfm.pt/eletrico-em-lisboa-destaque16975439_base.jpg 555w, https://images.rfm.pt/eletrico-em-lisboa-destaque16975439_app_medium.jpg 711w, https://images.rfm.pt/eletrico-em-lisboa-destaque16975439_destaque_2col.jpg 960w, https://images.rfm.pt/eletrico-em-lisboa-destaque16975439_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/eletrico-em-lisboa-destaque16975439_base.jpg' class='lazyload' /></div><figcaption>Portugal entre os destinos imperdíveis para a primavera</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20161/irs-2025-como-podes-aumentar-o-teu-reembolso-ou-pagar-menos-ao-estado' title='IRS 2025: Como podes aumentar o teu reembolso ou pagar menos ao Estado?' target='_self'><figure><div class='fig-box'><img title='IRS 2025: Como podes aumentar o teu reembolso ou pagar menos ao Estado?' alt='IRS 2025: Como podes aumentar o teu reembolso ou pagar menos ao Estado?' data-sizes='auto' data-srcset=' https://images.rfm.pt/preencher-irs-destaque13205317_destaque_3col.jpg 480w, https://images.rfm.pt/preencher-irs-destaque13205317_base.jpg 555w, https://images.rfm.pt/preencher-irs-destaque13205317_app_medium.jpg 711w, https://images.rfm.pt/preencher-irs-destaque13205317_destaque_2col.jpg 960w, https://images.rfm.pt/preencher-irs-destaque13205317_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/preencher-irs-destaque13205317_base.jpg' class='lazyload' /></div><figcaption>IRS 2025: Como podes aumentar o teu reembolso ou pagar menos ao Estado?</figcaption></figure></a></div></section><section class='g-mx g-m3'><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20168/ana-garcia-martins-diz-qual-e-a-primeira-pessoa-que-despedia' title='Ana Garcia Martins diz qual é a primeira pessoa que despedia' target='_self'><figure><div class='fig-box'><img title='Ana Garcia Martins diz qual é a primeira pessoa que despedia' alt='Ana Garcia Martins diz qual é a primeira pessoa que despedia' data-sizes='auto' data-srcset=' https://images.rfm.pt/pipoca-04-abril-202548050d9f_destaque_3col.png 480w, https://images.rfm.pt/pipoca-04-abril-202548050d9f_base.png 555w, https://images.rfm.pt/pipoca-04-abril-202548050d9f_app_medium.png 711w, https://images.rfm.pt/pipoca-04-abril-202548050d9f_destaque_2col.png 960w, https://images.rfm.pt/pipoca-04-abril-202548050d9f_app_large.png 1080w' width='555' height='312' data-src='https://images.rfm.pt/pipoca-04-abril-202548050d9f_base.png' class='lazyload' /></div><figcaption>Ana Garcia Martins diz qual é a primeira pessoa que despedia</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20150/a-rfm-deu-25999-euros-no-grandioso-jogo-da-mala' title='A RFM deu 25.999 euros no Grandioso Jogo da Mala!' target='_self'><figure><div class='fig-box'><img title='A RFM deu 25.999 euros no Grandioso Jogo da Mala!' alt='A RFM deu 25.999 euros no Grandioso Jogo da Mala!' data-sizes='auto' data-srcset=' https://images.rfm.pt/frame59293ac2_destaque_3col.jpg 480w, https://images.rfm.pt/frame59293ac2_base.jpg 555w, https://images.rfm.pt/frame59293ac2_app_medium.jpg 711w, https://images.rfm.pt/frame59293ac2_destaque_2col.jpg 960w, https://images.rfm.pt/frame59293ac2_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/frame59293ac2_base.jpg' class='lazyload' /></div><figcaption>A RFM deu 25.999 euros no Grandioso Jogo da Mala!</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20172/duarte-pita-negrao-os-40-sao-os-novos-39' title='Duarte Pita Negrão: "Os 40 são os novos 39"' target='_self'><figure><div class='fig-box'><img title='Duarte Pita Negrão: "Os 40 são os novos 39"' alt='Duarte Pita Negrão: "Os 40 são os novos 39"' data-sizes='auto' data-srcset=' https://images.rfm.pt/bolo-de-aniversario-40-anos-destaque1661d374_destaque_3col.jpg 480w, https://images.rfm.pt/bolo-de-aniversario-40-anos-destaque1661d374_base.jpg 555w, https://images.rfm.pt/bolo-de-aniversario-40-anos-destaque1661d374_app_medium.jpg 711w, https://images.rfm.pt/bolo-de-aniversario-40-anos-destaque1661d374_destaque_2col.jpg 960w, https://images.rfm.pt/bolo-de-aniversario-40-anos-destaque1661d374_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/bolo-de-aniversario-40-anos-destaque1661d374_base.jpg' class='lazyload' /></div><figcaption>Duarte Pita Negrão: "Os 40 são os novos 39"</figcaption></figure></a></div></section><!-- RFM_HP_INBLOCKS --><div style='margin: 0 auto; text-align: center; margin-bottom: 1em;'><ad-placement format='inBlocks' refresh='false' adunit='RFM/rfm_hp_inBlocks'></ad-placement></div><section class='b-red bottom-space'><a href='https://rfm.pt/top25rfm' target='_self' title='Vota aqui para o Top 25 RFM' class='lnk-white'><p class='ban-red'>Vota aqui para o Top 25 RFM</p></a></section><section class='g-mx g-m4 g-mx-gray'><div class='g-mx-it'><a href='cafe-da-manha' title='Café da Manhã com Pedro, Mariana, Luis e Pipoca' target='_self'><figure><div class='fig-box'><img title='Café da Manhã com Pedro, Mariana, Luis e Pipoca' alt='Café da Manhã com Pedro, Mariana, Luis e Pipoca' data-sizes='auto' data-srcset=' https://images.rfm.pt/rfm-cafe-e-pipoca-1920x108070174981_destaque_3col.jpg 480w, https://images.rfm.pt/rfm-cafe-e-pipoca-1920x108070174981_base.jpg 555w, https://images.rfm.pt/rfm-cafe-e-pipoca-1920x108070174981_app_medium.jpg 711w, https://images.rfm.pt/rfm-cafe-e-pipoca-1920x108070174981_destaque_2col.jpg 960w, https://images.rfm.pt/rfm-cafe-e-pipoca-1920x108070174981_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/rfm-cafe-e-pipoca-1920x108070174981_base.jpg' class='lazyload' /></div><figcaption>Café da Manhã com Pedro, Mariana, Luis e Pipoca</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/animadores/19679/ta-bonito-com-helder-tavares-e-catarina-moreira' title='Tá bonito com Hélder Tavares e Catarina Moreira' target='_self'><figure><div class='fig-box'><img title='Tá bonito com Hélder Tavares e Catarina Moreira' alt='Tá bonito com Hélder Tavares e Catarina Moreira' data-sizes='auto' data-srcset=' https://images.rfm.pt/rfm-catarina-moreira-helder-tavares-1920x1080136845a2_destaque_3col.jpg 480w, https://images.rfm.pt/rfm-catarina-moreira-helder-tavares-1920x1080136845a2_base.jpg 555w, https://images.rfm.pt/rfm-catarina-moreira-helder-tavares-1920x1080136845a2_app_medium.jpg 711w, https://images.rfm.pt/rfm-catarina-moreira-helder-tavares-1920x1080136845a2_destaque_2col.jpg 960w, https://images.rfm.pt/rfm-catarina-moreira-helder-tavares-1920x1080136845a2_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/rfm-catarina-moreira-helder-tavares-1920x1080136845a2_base.jpg' class='lazyload' /></div><figcaption>Tá bonito com Hélder Tavares e Catarina Moreira</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/18029/ganha-um-dinheirao-no-grandioso-jogo-da-mala-com-a-rfm' title='Ganha um dinheirão no Grandioso Jogo da Mala com a RFM!' target='_self'><figure><div class='fig-box'><img title='Ganha um dinheirão no Grandioso Jogo da Mala com a RFM!' alt='Ganha um dinheirão no Grandioso Jogo da Mala com a RFM!' data-sizes='auto' data-srcset=' https://images.rfm.pt/h229153e5b_destaque_3col.jpg 480w, https://images.rfm.pt/h229153e5b_base.jpg 555w, https://images.rfm.pt/h229153e5b_app_medium.jpg 711w, https://images.rfm.pt/h229153e5b_destaque_2col.jpg 960w, https://images.rfm.pt/h229153e5b_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/h229153e5b_base.jpg' class='lazyload' /></div><figcaption>Ganha um dinheirão no Grandioso Jogo da Mala com a RFM!</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/19281/nova-vencedora-do-que-barulho-e-este-na-rfm-mariana-ferreira-ganhou-6840' title='Nova vencedora do "Que barulho é este, na RFM?" Mariana Ferreira ganhou 6.840€' target='_self'><figure><div class='fig-box'><img title='Nova vencedora do "Que barulho é este, na RFM?" Mariana Ferreira ganhou 6.840€' alt='Nova vencedora do "Que barulho é este, na RFM?" Mariana Ferreira ganhou 6.840€' data-sizes='auto' data-srcset=' https://images.rfm.pt/capa-barulho-4-abril-site1003b035_destaque_3col.jpg 480w, https://images.rfm.pt/capa-barulho-4-abril-site1003b035_base.jpg 555w, https://images.rfm.pt/capa-barulho-4-abril-site1003b035_app_medium.jpg 711w, https://images.rfm.pt/capa-barulho-4-abril-site1003b035_destaque_2col.jpg 960w, https://images.rfm.pt/capa-barulho-4-abril-site1003b035_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/capa-barulho-4-abril-site1003b035_base.jpg' class='lazyload' /></div><figcaption>Nova vencedora do "Que barulho é este, na RFM?" Mariana Ferreira ganhou 6.840€</figcaption></figure></a></div></section><!-- RFM_HP_INBLOCKS --><div style='margin: 0 auto; text-align: center; margin-bottom: 1em;'><ad-placement format='inBlocks' refresh='false' adunit='RFM/rfm_hp_inBlocks'></ad-placement></div><div class='x-title top-space half-bottom-space'><span>Vídeos</span></div><section class='videos-cx top-space'><div class='vid-scr' style='min-width: 0; min-height: 0;'><a href='https://rfm.pt/video/78590/a-rfm-2025-esta-completa' title='A RFM 2025 ESTÁ COMPLETA!' target='_self'><figure><div class='fig-box'><img title='A RFM 2025 ESTÁ COMPLETA!' alt='A RFM 2025 ESTÁ COMPLETA!' data-sizes='auto' data-srcset=' https://images.rfm.pt/ta-bonito-atualizado-destaque2040047d_destaque_2col.jpg 960w, https://images.rfm.pt/ta-bonito-atualizado-destaque2040047d_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/ta-bonito-atualizado-destaque2040047d_destaque_2col.jpg' class='lazyload' /><div class='btn-media'><div><img src='https://rfmsite2023-images.azureedge.net/images/mico_video.svg' alt='A RFM 2025 ESTÁ COMPLETA!' title='A RFM 2025 ESTÁ COMPLETA!' width='60' height='34' /></div></div></div><figcaption>A RFM 2025 ESTÁ COMPLETA!</figcaption></figure></a></div><div class='vid-list' style='min-width: 0; min-height: 0;'><div class='vid-ticker'><div class='vid-item'><a href='https://rfm.pt/video/79178/quem-despedias-ep-158' title='Quem despedias? | Ep. 158'><figure><img width='100' height='100' data-src='https://images.rfm.pt/ninguem-pod-comigo-2t-destaque-site-1920x1080138306e6_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg' alt='Quem despedias? | Ep. 158' title='Quem despedias? | Ep. 158' class='lazyload' /><figcaption>Quem despedias? | Ep. 158</figcaption></figure></a></div><div class='vid-item'><a href='https://rfm.pt/video/79196/rfm-na-apresentacao-do-meo-kalorama' title='RFM na apresentação do Meo Kalorama'><figure><img width='100' height='100' data-src='https://images.rfm.pt/meo-kalorama-foto-1104632da_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg' alt='RFM na apresentação do Meo Kalorama' title='RFM na apresentação do Meo Kalorama' class='lazyload' /><figcaption>RFM na apresentação do Meo Kalorama</figcaption></figure></a></div><div class='vid-item'><a href='https://rfm.pt/video/79137/903-t2-ep28-madjer-vou-morrer-sem-saber-quantos-golos-marquei-na-carreira' title='90+3 | T2 | EP28 | Madjer | “Vou morrer sem saber quantos golos marquei na carreira”'><figure><img width='100' height='100' data-src='https://images.rfm.pt/madjer1523d3c4_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg' alt='90+3 | T2 | EP28 | Madjer | “Vou morrer sem saber quantos golos marquei na carreira”' title='90+3 | T2 | EP28 | Madjer | “Vou morrer sem saber quantos golos marquei na carreira”' class='lazyload' /><figcaption>90+3 | T2 | EP28 | Madjer | “Vou morrer sem saber quantos golos marquei na carreira”</figcaption></figure></a></div><div class='vid-item'><a href='https://rfm.pt/video/79201/a-mariana-ferreira-ganhou-6840-no-que-barulho-e-este-na-rfm' title='A Mariana Ferreira ganhou 6.840€ no Que Barulho é Este, na RFM?'><figure><img width='100' height='100' data-src='https://images.rfm.pt/capa-barulho-4-abril-site1003b035_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg' alt='A Mariana Ferreira ganhou 6.840€ no Que Barulho é Este, na RFM?' title='A Mariana Ferreira ganhou 6.840€ no Que Barulho é Este, na RFM?' class='lazyload' /><figcaption>A Mariana Ferreira ganhou 6.840€ no Que Barulho é Este, na RFM?</figcaption></figure></a></div></div><div class='align-center'><img class='rad-arrow-up-v lazyload' data-src='https://rfmsite2023-images.azureedge.net/images/arrow-up.png' width='42' height='42' alt='Para cima' /><img class='rad-arrow-down-v lazyload' data-src='https://rfmsite2023-images.azureedge.net/images/arrow-down.png' width='42' height='42' alt='Para baixo' /></div></div></section><section class='top-space bottom-space align-center'><button onclick="location.href='https://rfm.pt/videos';" class='x-btn' role='button' aria-label='+ Vídeos' title='+ Vídeos'><div class='x-btn-bg bgc-white brd-grey'></div><span class='x-btn-lt txtc-grey large quarter-padding'>+ Vídeos</span></button></section><section class='b-red bottom-space'><a href='https://rfm.pt/que-musica-era' target='_self' title='Que música era?' class='lnk-white'><p class='ban-red'>Que música era?</p></a></section><!-- RFM_HP_INBLOCKS --><div style='margin: 0 auto; text-align: center; margin-bottom: 1em;'><ad-placement format='inBlocks' refresh='false' adunit='RFM/rfm_hp_inBlocks'></ad-placement></div><div class='x-title top-space half-bottom-space'><span>Podcasts </span></div><section class='g-pods top-space'><div class='g-pods-it'><a href='https://rfm.pt/podcast/148/ninguem-pod-comigo' title='Ninguém POD comigo' target='_self'><figure><img title='Ninguém POD comigo' alt='Ninguém POD comigo' data-sizes='auto' data-srcset=' https://images.rfm.pt/ninguem-pod-comigo-2t-itunes-3000x3000124407e8_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg 300w, https://images.rfm.pt/ninguem-pod-comigo-2t-itunes-3000x3000124407e8_app_square.jpg 400w, https://images.rfm.pt/ninguem-pod-comigo-2t-itunes-3000x3000124407e8_fbimg.jpg 1200w' width='300' height='300' data-src='https://images.rfm.pt/ninguem-pod-comigo-2t-itunes-3000x3000124407e8_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg' class='lazyload' /><figcaption><div class='p-title'>Ninguém POD comigo</div><div class='p-author'>De 2ª a 6ª no Café da Manhã</div></figcaption></figure></a></div><div class='g-pods-it'><a href='https://rfm.pt/podcast/165/cafe-curto' title='Café curto' target='_self'><figure><img title='Café curto' alt='Café curto' data-sizes='auto' data-srcset=' https://images.rfm.pt/cafe-curto-itunes-3000x30008836c41b_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg 300w, https://images.rfm.pt/cafe-curto-itunes-3000x30008836c41b_app_square.jpg 400w, https://images.rfm.pt/cafe-curto-itunes-3000x30008836c41b_fbimg.jpg 1200w' width='300' height='300' data-src='https://images.rfm.pt/cafe-curto-itunes-3000x30008836c41b_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg' class='lazyload' /><figcaption><div class='p-title'>Café curto</div><div class='p-author'>O melhor do Café da Manhã</div></figcaption></figure></a></div><div class='g-pods-it'><a href='https://rfm.pt/podcast/138/marketing-por-idiotas' title='Marketing por Idiotas' target='_self'><figure><img title='Marketing por Idiotas' alt='Marketing por Idiotas' data-sizes='auto' data-srcset=' https://images.rfm.pt/rfm-site-1200x1200-v43824f36a_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg 300w, https://images.rfm.pt/rfm-site-1200x1200-v43824f36a_app_square.jpg 400w, https://images.rfm.pt/rfm-site-1200x1200-v43824f36a_fbimg.jpg 1200w' width='300' height='300' data-src='https://images.rfm.pt/rfm-site-1200x1200-v43824f36a_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg' class='lazyload' /><figcaption><div class='p-title'>Marketing por Idiotas</div><div class='p-author'></div></figcaption></figure></a></div><div class='g-pods-it'><a href='https://rfm.pt/podcast/35/top-25-rfm' title='Top 25 RFM' target='_self'><figure><img title='Top 25 RFM' alt='Top 25 RFM' data-sizes='auto' data-srcset=' https://images.rfm.pt/top25-podcast-3000x3000-daniel18369301_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg 300w, https://images.rfm.pt/top25-podcast-3000x3000-daniel18369301_app_square.jpg 400w, https://images.rfm.pt/top25-podcast-3000x3000-daniel18369301_fbimg.jpg 1200w' width='300' height='300' data-src='https://images.rfm.pt/top25-podcast-3000x3000-daniel18369301_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg' class='lazyload' /><figcaption><div class='p-title'>Top 25 RFM</div><div class='p-author'>Todos os domingos, às 18h</div></figcaption></figure></a></div><div class='g-pods-it'><a href='https://rfm.pt/podcast/168/untese-radioshow-com-rich-mendes' title='UNTE/SE Radioshow com Rich & Mendes' target='_self'><figure><img title='UNTE/SE Radioshow com Rich & Mendes' alt='UNTE/SE Radioshow com Rich & Mendes' data-sizes='auto' data-srcset=' https://images.rfm.pt/rfm-unte-se-podcast-3000x30001354080a_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg 300w, https://images.rfm.pt/rfm-unte-se-podcast-3000x30001354080a_app_square.jpg 400w, https://images.rfm.pt/rfm-unte-se-podcast-3000x30001354080a_fbimg.jpg 1200w' width='300' height='300' data-src='https://images.rfm.pt/rfm-unte-se-podcast-3000x30001354080a_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg' class='lazyload' /><figcaption><div class='p-title'>UNTE/SE Radioshow com Rich & Mendes</div><div class='p-author'></div></figcaption></figure></a></div><div class='g-pods-it'><a href='https://rfm.pt/podcast/164/o-que-diz-o-teu-coracao-t2' title='O que diz o teu coração - T2' target='_self'><figure><img title='O que diz o teu coração - T2' alt='O que diz o teu coração - T2' data-sizes='auto' data-srcset=' https://images.rfm.pt/3000x3000-oqdotc9924c25a_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg 300w, https://images.rfm.pt/3000x3000-oqdotc9924c25a_app_square.jpg 400w, https://images.rfm.pt/3000x3000-oqdotc9924c25a_fbimg.jpg 1200w' width='300' height='300' data-src='https://images.rfm.pt/3000x3000-oqdotc9924c25a_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg' class='lazyload' /><figcaption><div class='p-title'>O que diz o teu coração - T2</div><div class='p-author'></div></figcaption></figure></a></div><div class='g-pods-it'><a href='https://rfm.pt/podcast/169/rfm-time-machine' title='RFM Time Machine' target='_self'><figure><img title='RFM Time Machine' alt='RFM Time Machine' data-sizes='auto' data-srcset=' https://images.rfm.pt/rfm-tm-3000x300018294514_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg 300w, https://images.rfm.pt/rfm-tm-3000x300018294514_app_square.jpg 400w, https://images.rfm.pt/rfm-tm-3000x300018294514_fbimg.jpg 1200w' width='300' height='300' data-src='https://images.rfm.pt/rfm-tm-3000x300018294514_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg' class='lazyload' /><figcaption><div class='p-title'>RFM Time Machine</div><div class='p-author'></div></figcaption></figure></a></div><div class='g-pods-it'><a href='https://rfm.pt/podcast/121/de-maneiras-que-e-assim' title='De Maneiras Que É Assim...' target='_self'><figure><img title='De Maneiras Que É Assim...' alt='De Maneiras Que É Assim...' data-sizes='auto' data-srcset=' https://images.rfm.pt/de-maneiras-3000x300018736cf8_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg 300w, https://images.rfm.pt/de-maneiras-3000x300018736cf8_app_square.jpg 400w, https://images.rfm.pt/de-maneiras-3000x300018736cf8_fbimg.jpg 1200w' width='300' height='300' data-src='https://images.rfm.pt/de-maneiras-3000x300018736cf8_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg' class='lazyload' /><figcaption><div class='p-title'>De Maneiras Que É Assim...</div><div class='p-author'>Todas as terças-feiras com novas histórias</div></figcaption></figure></a></div><div class='g-pods-it'><a href='https://rfm.pt/podcast/133/dudas-de-un-hombre' title='Dudas, de un hombre' target='_self'><figure><img title='Dudas, de un hombre' alt='Dudas, de un hombre' data-sizes='auto' data-srcset=' https://images.rfm.pt/1200x1200-dudas2012a410_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg 300w, https://images.rfm.pt/1200x1200-dudas2012a410_app_square.jpg 400w, https://images.rfm.pt/1200x1200-dudas2012a410_fbimg.jpg 1200w' width='300' height='300' data-src='https://images.rfm.pt/1200x1200-dudas2012a410_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg' class='lazyload' /><figcaption><div class='p-title'>Dudas, de un hombre</div><div class='p-author'></div></figcaption></figure></a></div><div class='g-pods-it'><a href='https://rfm.pt/podcast/145/clickbait' title='Clickbait' target='_self'><figure><img title='Clickbait' alt='Clickbait' data-sizes='auto' data-srcset=' https://images.rfm.pt/rfm-itunes-300016824812_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg 300w, https://images.rfm.pt/rfm-itunes-300016824812_app_square.jpg 400w, https://images.rfm.pt/rfm-itunes-300016824812_fbimg.jpg 1200w' width='300' height='300' data-src='https://images.rfm.pt/rfm-itunes-300016824812_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg' class='lazyload' /><figcaption><div class='p-title'>Clickbait</div><div class='p-author'>Todas as terças-feiras com novos episódios</div></figcaption></figure></a></div><div class='g-pods-it'><a href='https://rfm.pt/podcast/166/rfm-hangout-com-pedro-simoes' title='RFM Hangout com Pedro Simões' target='_self'><figure><img title='RFM Hangout com Pedro Simões' alt='RFM Hangout com Pedro Simões' data-sizes='auto' data-srcset=' https://images.rfm.pt/rfm-hangout-podcast-pedro-simoes-3000x30003735793e_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg 300w, https://images.rfm.pt/rfm-hangout-podcast-pedro-simoes-3000x30003735793e_app_square.jpg 400w, https://images.rfm.pt/rfm-hangout-podcast-pedro-simoes-3000x30003735793e_fbimg.jpg 1200w' width='300' height='300' data-src='https://images.rfm.pt/rfm-hangout-podcast-pedro-simoes-3000x30003735793e_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg' class='lazyload' /><figcaption><div class='p-title'>RFM Hangout com Pedro Simões</div><div class='p-author'></div></figcaption></figure></a></div><div class='g-pods-it'><a href='https://rfm.pt/podcast/129/sono-trocado-por-miudos' title='Sono Trocado por Miúdos' target='_self'><figure><img title='Sono Trocado por Miúdos' alt='Sono Trocado por Miúdos' data-sizes='auto' data-srcset=' https://images.rfm.pt/sono-trocados-023057d02c_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg 300w, https://images.rfm.pt/sono-trocados-023057d02c_app_square.jpg 400w, https://images.rfm.pt/sono-trocados-023057d02c_fbimg.jpg 1200w' width='300' height='300' data-src='https://images.rfm.pt/sono-trocados-023057d02c_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg' class='lazyload' /><figcaption><div class='p-title'>Sono Trocado por Miúdos</div><div class='p-author'>Todas as segundas-feiras com uma nova descoberta sobre o sono</div></figcaption></figure></a></div></section><section class='top-space bottom-space align-center'><button onclick="location.href='https://rfm.pt/podcasts';" class='x-btn' role='button' aria-label='+ Podcasts' title='+ Podcasts'><div class='x-btn-bg bgc-white brd-grey'></div><span class='x-btn-lt txtc-grey large quarter-padding'>+ Podcasts</span></button></section><div class='x-title top-space half-bottom-space'><span>Eventos RFM </span></div><section class='g-mx g-m4 top-space'><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20170/meo-kalorama-tem-o-cartaz-completo-e-ate-dia-11-o-bilhete-custa-so-35' title='Meo Kalorama anunciou cartaz completo! Compra já o teu bilhete mais barato!' target='_self'><figure><div class='fig-box'><img title='Meo Kalorama anunciou cartaz completo! Compra já o teu bilhete mais barato!' alt='Meo Kalorama anunciou cartaz completo! Compra já o teu bilhete mais barato!' data-sizes='auto' data-srcset=' https://images.rfm.pt/meo-kalorama-foto-1104632da_destaque_3col.jpg 480w, https://images.rfm.pt/meo-kalorama-foto-1104632da_base.jpg 555w, https://images.rfm.pt/meo-kalorama-foto-1104632da_app_medium.jpg 711w, https://images.rfm.pt/meo-kalorama-foto-1104632da_destaque_2col.jpg 960w, https://images.rfm.pt/meo-kalorama-foto-1104632da_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/meo-kalorama-foto-1104632da_base.jpg' class='lazyload' /></div><figcaption>Meo Kalorama anunciou cartaz completo! Compra já o teu bilhete mais barato!</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/19356/nelson-freitas-festeja-25-anos-de-carreira-e-esgota-coliseu' title='Nelson Freitas festeja 25 anos de carreira e esgota Coliseu' target='_self'><figure><div class='fig-box'><img title='Nelson Freitas festeja 25 anos de carreira e esgota Coliseu' alt='Nelson Freitas festeja 25 anos de carreira e esgota Coliseu' data-sizes='auto' data-srcset=' https://images.rfm.pt/nelson-freitas-destaque1825a855_destaque_3col.jpg 480w, https://images.rfm.pt/nelson-freitas-destaque1825a855_base.jpg 555w, https://images.rfm.pt/nelson-freitas-destaque1825a855_app_medium.jpg 711w, https://images.rfm.pt/nelson-freitas-destaque1825a855_destaque_2col.jpg 960w, https://images.rfm.pt/nelson-freitas-destaque1825a855_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/nelson-freitas-destaque1825a855_base.jpg' class='lazyload' /></div><figcaption>Nelson Freitas festeja 25 anos de carreira e esgota Coliseu</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20157/o-cartaz-do-sol-da-caparica-esta-fechado-descobre-aqui-quem-vai-la-estar' title='O cartaz do Sol da Caparica está fechado! Descobre aqui quem vai lá estar!' target='_self'><figure><div class='fig-box'><img title='O cartaz do Sol da Caparica está fechado! Descobre aqui quem vai lá estar!' alt='O cartaz do Sol da Caparica está fechado! Descobre aqui quem vai lá estar!' data-sizes='auto' data-srcset=' https://images.rfm.pt/foto-de-grupo-sol-da-caparica-228798dc3_destaque_3col.jpg 480w, https://images.rfm.pt/foto-de-grupo-sol-da-caparica-228798dc3_base.jpg 555w, https://images.rfm.pt/foto-de-grupo-sol-da-caparica-228798dc3_app_medium.jpg 711w, https://images.rfm.pt/foto-de-grupo-sol-da-caparica-228798dc3_destaque_2col.jpg 960w, https://images.rfm.pt/foto-de-grupo-sol-da-caparica-228798dc3_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/foto-de-grupo-sol-da-caparica-228798dc3_base.jpg' class='lazyload' /></div><figcaption>O cartaz do Sol da Caparica está fechado! Descobre aqui quem vai lá estar!</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/19723/caos-em-palco-a-peca-que-da-para-o-torto-regressa-a-portugal-com-a-rfm' title='Caos em palco! "A peça que dá para o torto" regressa a Portugal com a RFM' target='_self'><figure><div class='fig-box'><img title='Caos em palco! "A peça que dá para o torto" regressa a Portugal com a RFM' alt='Caos em palco! "A peça que dá para o torto" regressa a Portugal com a RFM' data-sizes='auto' data-srcset=' https://images.rfm.pt/a-peca-que-da-para-o-torto-destaque915802b6_destaque_3col.jpg 480w, https://images.rfm.pt/a-peca-que-da-para-o-torto-destaque915802b6_base.jpg 555w, https://images.rfm.pt/a-peca-que-da-para-o-torto-destaque915802b6_app_medium.jpg 711w, https://images.rfm.pt/a-peca-que-da-para-o-torto-destaque915802b6_destaque_2col.jpg 960w, https://images.rfm.pt/a-peca-que-da-para-o-torto-destaque915802b6_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/a-peca-que-da-para-o-torto-destaque915802b6_base.jpg' class='lazyload' /></div><figcaption>Caos em palco! "A peça que dá para o torto" regressa a Portugal com a RFM</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/13910/tens-planos-para-os-dias-17-e-18-de-maio-vem-ao-iberanime-em-santarem-com-a-rfm' title='Tens planos para os dias 17 e 18 de maio? Vem ao Iberanime em Santarém com a RFM!' target='_self'><figure><div class='fig-box'><img title='Tens planos para os dias 17 e 18 de maio? Vem ao Iberanime em Santarém com a RFM!' alt='Tens planos para os dias 17 e 18 de maio? Vem ao Iberanime em Santarém com a RFM!' data-sizes='auto' data-srcset=' https://images.rfm.pt/iberanime-cosplay-destaque200534b8_destaque_3col.jpg 480w, https://images.rfm.pt/iberanime-cosplay-destaque200534b8_base.jpg 555w, https://images.rfm.pt/iberanime-cosplay-destaque200534b8_app_medium.jpg 711w, https://images.rfm.pt/iberanime-cosplay-destaque200534b8_destaque_2col.jpg 960w, https://images.rfm.pt/iberanime-cosplay-destaque200534b8_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/iberanime-cosplay-destaque200534b8_base.jpg' class='lazyload' /></div><figcaption>Tens planos para os dias 17 e 18 de maio? Vem ao Iberanime em Santarém com a RFM!</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/19336/conhece-aqui-o-cartaz-completo-do-rfm-somnii-intermarche' title='Conhece hoje o cartaz completo do RFM SOMNII INTERMARCHÉ' target='_self'><figure><div class='fig-box'><img title='Conhece hoje o cartaz completo do RFM SOMNII INTERMARCHÉ' alt='Conhece hoje o cartaz completo do RFM SOMNII INTERMARCHÉ' data-sizes='auto' data-srcset=' https://images.rfm.pt/somnii-2025-destaque-11046c2f9_destaque_3col.jpg 480w, https://images.rfm.pt/somnii-2025-destaque-11046c2f9_base.jpg 555w, https://images.rfm.pt/somnii-2025-destaque-11046c2f9_app_medium.jpg 711w, https://images.rfm.pt/somnii-2025-destaque-11046c2f9_destaque_2col.jpg 960w, https://images.rfm.pt/somnii-2025-destaque-11046c2f9_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/somnii-2025-destaque-11046c2f9_base.jpg' class='lazyload' /></div><figcaption>Conhece hoje o cartaz completo do RFM SOMNII INTERMARCHÉ</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/19999/buba-espinho-no-porto-com-concerto-de-360-sempre-com-a-rfm' title='Buba Espinho no Porto, com concerto de 360º, sempre com a RFM!' target='_self'><figure><div class='fig-box'><img title='Buba Espinho no Porto, com concerto de 360º, sempre com a RFM!' alt='Buba Espinho no Porto, com concerto de 360º, sempre com a RFM!' data-sizes='auto' data-srcset=' https://images.rfm.pt/buba-coliseu-foto-catia-figueiredo-2824864a5_destaque_3col.jpg 480w, https://images.rfm.pt/buba-coliseu-foto-catia-figueiredo-2824864a5_base.jpg 555w, https://images.rfm.pt/buba-coliseu-foto-catia-figueiredo-2824864a5_app_medium.jpg 711w, https://images.rfm.pt/buba-coliseu-foto-catia-figueiredo-2824864a5_destaque_2col.jpg 960w, https://images.rfm.pt/buba-coliseu-foto-catia-figueiredo-2824864a5_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/buba-coliseu-foto-catia-figueiredo-2824864a5_base.jpg' class='lazyload' /></div><figcaption>Buba Espinho no Porto, com concerto de 360º, sempre com a RFM!</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20091/rfm-leva-te-ao-outro-lado-dos-delfins' title='RFM leva-te ao outro lado dos Delfins!' target='_self'><figure><div class='fig-box'><img title='RFM leva-te ao outro lado dos Delfins!' alt='RFM leva-te ao outro lado dos Delfins!' data-sizes='auto' data-srcset=' https://images.rfm.pt/delfins-u-outro-lado-amarelo1020b1f8_destaque_3col.jpg 480w, https://images.rfm.pt/delfins-u-outro-lado-amarelo1020b1f8_base.jpg 555w, https://images.rfm.pt/delfins-u-outro-lado-amarelo1020b1f8_app_medium.jpg 711w, https://images.rfm.pt/delfins-u-outro-lado-amarelo1020b1f8_destaque_2col.jpg 960w, https://images.rfm.pt/delfins-u-outro-lado-amarelo1020b1f8_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/delfins-u-outro-lado-amarelo1020b1f8_base.jpg' class='lazyload' /></div><figcaption>RFM leva-te ao outro lado dos Delfins!</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/19836/post-malone-em-portugal-com-a-rfm' title='Post Malone em Portugal com a RFM' target='_self'><figure><div class='fig-box'><img title='Post Malone em Portugal com a RFM' alt='Post Malone em Portugal com a RFM' data-sizes='auto' data-srcset=' https://images.rfm.pt/postmalone-press199333e7_destaque_3col.jpg 480w, https://images.rfm.pt/postmalone-press199333e7_base.jpg 555w, https://images.rfm.pt/postmalone-press199333e7_app_medium.jpg 711w, https://images.rfm.pt/postmalone-press199333e7_destaque_2col.jpg 960w, https://images.rfm.pt/postmalone-press199333e7_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/postmalone-press199333e7_base.jpg' class='lazyload' /></div><figcaption>Post Malone em Portugal com a RFM</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/15005/psicologo-jordan-peterson-volta-a-portugal-para-dar-mais-palestras' title='Psicólogo Jordan Peterson volta a Portugal para dar mais palestras' target='_self'><figure><div class='fig-box'><img title='Psicólogo Jordan Peterson volta a Portugal para dar mais palestras' alt='Psicólogo Jordan Peterson volta a Portugal para dar mais palestras' data-sizes='auto' data-srcset=' https://images.rfm.pt/jordan-peterson-destaque9835792d_destaque_3col.jpg 480w, https://images.rfm.pt/jordan-peterson-destaque9835792d_base.jpg 555w, https://images.rfm.pt/jordan-peterson-destaque9835792d_app_medium.jpg 711w, https://images.rfm.pt/jordan-peterson-destaque9835792d_destaque_2col.jpg 960w, https://images.rfm.pt/jordan-peterson-destaque9835792d_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/jordan-peterson-destaque9835792d_base.jpg' class='lazyload' /></div><figcaption>Psicólogo Jordan Peterson volta a Portugal para dar mais palestras</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/19824/rockin1000-regressa-com-a-rfm-dia-6-de-setembro-ao-estadio-de-leiria' title='ROCKIN’1000 regressa com a RFM dia 6 de setembro ao Estádio de Leiria' target='_self'><figure><div class='fig-box'><img title='ROCKIN’1000 regressa com a RFM dia 6 de setembro ao Estádio de Leiria' alt='ROCKIN’1000 regressa com a RFM dia 6 de setembro ao Estádio de Leiria' data-sizes='auto' data-srcset=' https://images.rfm.pt/rockin-1000-51693b089_destaque_3col.jpg 480w, https://images.rfm.pt/rockin-1000-51693b089_base.jpg 555w, https://images.rfm.pt/rockin-1000-51693b089_app_medium.jpg 711w, https://images.rfm.pt/rockin-1000-51693b089_destaque_2col.jpg 960w, https://images.rfm.pt/rockin-1000-51693b089_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/rockin-1000-51693b089_base.jpg' class='lazyload' /></div><figcaption>ROCKIN’1000 regressa com a RFM dia 6 de setembro ao Estádio de Leiria</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/18493/cirque-du-soleil-regressa-em-2025-com-a-rfm' title='Cirque Du Soleil regressa em 2025 com a RFM' target='_self'><figure><div class='fig-box'><img title='Cirque Du Soleil regressa em 2025 com a RFM' alt='Cirque Du Soleil regressa em 2025 com a RFM' data-sizes='auto' data-srcset=' https://images.rfm.pt/cirque-du-soleil-destaque1986a48e_destaque_3col.jpg 480w, https://images.rfm.pt/cirque-du-soleil-destaque1986a48e_base.jpg 555w, https://images.rfm.pt/cirque-du-soleil-destaque1986a48e_app_medium.jpg 711w, https://images.rfm.pt/cirque-du-soleil-destaque1986a48e_destaque_2col.jpg 960w, https://images.rfm.pt/cirque-du-soleil-destaque1986a48e_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/cirque-du-soleil-destaque1986a48e_base.jpg' class='lazyload' /></div><figcaption>Cirque Du Soleil regressa em 2025 com a RFM</figcaption></figure></a></div></section><section class='top-space bottom-space align-center'><button onclick="location.href='https://rfm.pt/eventos-rfm';" class='x-btn' role='button' aria-label='+ Eventos RFM' title='+ Eventos RFM'><div class='x-btn-bg bgc-white brd-grey'></div><span class='x-btn-lt txtc-grey large quarter-padding'>+ Eventos RFM</span></button></section><!-- RFM_HP_INBLOCKS --><div style='margin: 0 auto; text-align: center; margin-bottom: 1em;'><ad-placement format='inBlocks' refresh='false' adunit='RFM/rfm_hp_inBlocks'></ad-placement></div><section class='b-red bottom-space'><a href='https://rfm.pt/atualidade/19281/nova-vencedora-do-que-barulho-e-este-na-rfm-mariana-ferreira-ganhou-6840' target='_self' title='"Que barulho é este, na RFM?" com novo barulho em jogo. Vê aqui os palpites errados' class='lnk-white'><p class='ban-red'>"Que barulho é este, na RFM?" com novo barulho em jogo. Vê aqui os palpites errados</p></a></section><div class='x-title top-space half-bottom-space'><span>Mais Atualidade</span></div><section class='g-mx g-m4 top-space'><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20154/ja-viste-o-novo-circulo-azul-do-whatsapp-descobre-aqui-o-que-significa' title='Já viste o novo círculo azul do WhatsApp? Descobre aqui o que significa' target='_self'><figure><div class='fig-box'><img title='Já viste o novo círculo azul do WhatsApp? Descobre aqui o que significa' alt='Já viste o novo círculo azul do WhatsApp? Descobre aqui o que significa' data-sizes='auto' data-srcset=' https://images.rfm.pt/whatsapp-destaque105626cf_destaque_3col.jpg 480w, https://images.rfm.pt/whatsapp-destaque105626cf_base.jpg 555w, https://images.rfm.pt/whatsapp-destaque105626cf_app_medium.jpg 711w, https://images.rfm.pt/whatsapp-destaque105626cf_destaque_2col.jpg 960w, https://images.rfm.pt/whatsapp-destaque105626cf_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/whatsapp-destaque105626cf_base.jpg' class='lazyload' /></div><figcaption>Já viste o novo círculo azul do WhatsApp? Descobre aqui o que significa</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20146/boas-noticias-estudo-diz-que-as-pessoas-sao-melhores-do-que-aquilo-que-pensamos' title='Boas notícias: estudo diz que as pessoas são melhores do que aquilo que pensamos' target='_self'><figure><div class='fig-box'><img title='Boas notícias: estudo diz que as pessoas são melhores do que aquilo que pensamos' alt='Boas notícias: estudo diz que as pessoas são melhores do que aquilo que pensamos' data-sizes='auto' data-srcset=' https://images.rfm.pt/mulher-desconfiada-com-alguem-destaque1251f132_destaque_3col.jpg 480w, https://images.rfm.pt/mulher-desconfiada-com-alguem-destaque1251f132_base.jpg 555w, https://images.rfm.pt/mulher-desconfiada-com-alguem-destaque1251f132_app_medium.jpg 711w, https://images.rfm.pt/mulher-desconfiada-com-alguem-destaque1251f132_destaque_2col.jpg 960w, https://images.rfm.pt/mulher-desconfiada-com-alguem-destaque1251f132_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/mulher-desconfiada-com-alguem-destaque1251f132_base.jpg' class='lazyload' /></div><figcaption>Boas notícias: estudo diz que as pessoas são melhores do que aquilo que pensamos</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20151/depressao-nuria-traz-ventos-de-70kmh-chuva-trovoada-e-agitacao-maritima' title='Depressão Nuria traz ventos de 70km/h, chuva, trovoada e agitação marítima' target='_self'><figure><div class='fig-box'><img title='Depressão Nuria traz ventos de 70km/h, chuva, trovoada e agitação marítima' alt='Depressão Nuria traz ventos de 70km/h, chuva, trovoada e agitação marítima' data-sizes='auto' data-srcset=' https://images.rfm.pt/mulher-com-chapeu-de-chuva-na-praia-destaque9943d233_destaque_3col.jpg 480w, https://images.rfm.pt/mulher-com-chapeu-de-chuva-na-praia-destaque9943d233_base.jpg 555w, https://images.rfm.pt/mulher-com-chapeu-de-chuva-na-praia-destaque9943d233_app_medium.jpg 711w, https://images.rfm.pt/mulher-com-chapeu-de-chuva-na-praia-destaque9943d233_destaque_2col.jpg 960w, https://images.rfm.pt/mulher-com-chapeu-de-chuva-na-praia-destaque9943d233_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/mulher-com-chapeu-de-chuva-na-praia-destaque9943d233_base.jpg' class='lazyload' /></div><figcaption>Depressão Nuria traz ventos de 70km/h, chuva, trovoada e agitação marítima</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20075/a-rfm-e-pela-8-vez-distinguida-como-marca-de-confianca' title='A RFM é pela 8.ª vez distinguida como Marca de Confiança!' target='_self'><figure><div class='fig-box'><img title='A RFM é pela 8.ª vez distinguida como Marca de Confiança!' alt='A RFM é pela 8.ª vez distinguida como Marca de Confiança!' data-sizes='auto' data-srcset=' https://images.rfm.pt/rfm-cafe-e-pipoca-1920x108070174981_destaque_3col.jpg 480w, https://images.rfm.pt/rfm-cafe-e-pipoca-1920x108070174981_base.jpg 555w, https://images.rfm.pt/rfm-cafe-e-pipoca-1920x108070174981_app_medium.jpg 711w, https://images.rfm.pt/rfm-cafe-e-pipoca-1920x108070174981_destaque_2col.jpg 960w, https://images.rfm.pt/rfm-cafe-e-pipoca-1920x108070174981_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/rfm-cafe-e-pipoca-1920x108070174981_base.jpg' class='lazyload' /></div><figcaption>A RFM é pela 8.ª vez distinguida como Marca de Confiança!</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20148/kenneth-branagh-uma-thurman-ricardo-pereira-e-diogo-infante-dao-voz-a-o-rei-dos-reis' title='Kenneth Branagh, Uma Thurman, Ricardo Pereira e Diogo Infante dão voz a "O Rei dos Reis"' target='_self'><figure><div class='fig-box'><img title='Kenneth Branagh, Uma Thurman, Ricardo Pereira e Diogo Infante dão voz a "O Rei dos Reis"' alt='Kenneth Branagh, Uma Thurman, Ricardo Pereira e Diogo Infante dão voz a "O Rei dos Reis"' data-sizes='auto' data-srcset=' https://images.rfm.pt/king-of-kings-still-image-44759292337_destaque_3col.jpg 480w, https://images.rfm.pt/king-of-kings-still-image-44759292337_base.jpg 555w, https://images.rfm.pt/king-of-kings-still-image-44759292337_app_medium.jpg 711w, https://images.rfm.pt/king-of-kings-still-image-44759292337_destaque_2col.jpg 960w, https://images.rfm.pt/king-of-kings-still-image-44759292337_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/king-of-kings-still-image-44759292337_base.jpg' class='lazyload' /></div><figcaption>Kenneth Branagh, Uma Thurman, Ricardo Pereira e Diogo Infante dão voz a "O Rei dos Reis"</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20044/play4children-padel-cup-um-torneio-solidario-a-favor-das-criancas' title='Play4Children Padel Cup: Um torneio solidário a favor das crianças' target='_self'><figure><div class='fig-box'><img title='Play4Children Padel Cup: Um torneio solidário a favor das crianças' alt='Play4Children Padel Cup: Um torneio solidário a favor das crianças' data-sizes='auto' data-srcset=' https://images.rfm.pt/play4children-padel-cup-destaque3896c7c4_destaque_3col.jpg 480w, https://images.rfm.pt/play4children-padel-cup-destaque3896c7c4_base.jpg 555w, https://images.rfm.pt/play4children-padel-cup-destaque3896c7c4_app_medium.jpg 711w, https://images.rfm.pt/play4children-padel-cup-destaque3896c7c4_destaque_2col.jpg 960w, https://images.rfm.pt/play4children-padel-cup-destaque3896c7c4_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/play4children-padel-cup-destaque3896c7c4_base.jpg' class='lazyload' /></div><figcaption>Play4Children Padel Cup: Um torneio solidário a favor das crianças</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20159/professora-revoluciona-aula-de-biologia-com-fato-original-e-torna-se-viral' title='Professora revoluciona aula de biologia com fato original e torna-se viral' target='_self'><figure><div class='fig-box'><img title='Professora revoluciona aula de biologia com fato original e torna-se viral' alt='Professora revoluciona aula de biologia com fato original e torna-se viral' data-sizes='auto' data-srcset=' https://images.rfm.pt/professora-primaria-destaque6322108f_destaque_3col.jpg 480w, https://images.rfm.pt/professora-primaria-destaque6322108f_base.jpg 555w, https://images.rfm.pt/professora-primaria-destaque6322108f_app_medium.jpg 711w, https://images.rfm.pt/professora-primaria-destaque6322108f_destaque_2col.jpg 960w, https://images.rfm.pt/professora-primaria-destaque6322108f_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/professora-primaria-destaque6322108f_base.jpg' class='lazyload' /></div><figcaption>Professora revoluciona aula de biologia com fato original e torna-se viral</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20128/em-bali-as-mulheres-menstruadas-estao-proibidas-de-entrar-em-templos-sagrados' title='Em Bali, as mulheres menstruadas estão proibidas de entrar em templos sagrados' target='_self'><figure><div class='fig-box'><img title='Em Bali, as mulheres menstruadas estão proibidas de entrar em templos sagrados' alt='Em Bali, as mulheres menstruadas estão proibidas de entrar em templos sagrados' data-sizes='auto' data-srcset=' https://images.rfm.pt/turista-em-bali-destaque2216ecc4_destaque_3col.jpg 480w, https://images.rfm.pt/turista-em-bali-destaque2216ecc4_base.jpg 555w, https://images.rfm.pt/turista-em-bali-destaque2216ecc4_app_medium.jpg 711w, https://images.rfm.pt/turista-em-bali-destaque2216ecc4_destaque_2col.jpg 960w, https://images.rfm.pt/turista-em-bali-destaque2216ecc4_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/turista-em-bali-destaque2216ecc4_base.jpg' class='lazyload' /></div><figcaption>Em Bali, as mulheres menstruadas estão proibidas de entrar em templos sagrados</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20165/condutor-tenta-estacionar-veiculo-e-acaba-por-entrar-nas-escadas-do-metro-em-lisboa' title='Condutor tenta estacionar veículo e acaba por entrar nas escadas do metro, em Lisboa' target='_self'><figure><div class='fig-box'><img title='Condutor tenta estacionar veículo e acaba por entrar nas escadas do metro, em Lisboa' alt='Condutor tenta estacionar veículo e acaba por entrar nas escadas do metro, em Lisboa' data-sizes='auto' data-srcset=' https://images.rfm.pt/metro-lisboa-destaque6981d08d_destaque_3col.jpg 480w, https://images.rfm.pt/metro-lisboa-destaque6981d08d_base.jpg 555w, https://images.rfm.pt/metro-lisboa-destaque6981d08d_app_medium.jpg 711w, https://images.rfm.pt/metro-lisboa-destaque6981d08d_destaque_2col.jpg 960w, https://images.rfm.pt/metro-lisboa-destaque6981d08d_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/metro-lisboa-destaque6981d08d_base.jpg' class='lazyload' /></div><figcaption>Condutor tenta estacionar veículo e acaba por entrar nas escadas do metro, em Lisboa</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20153/estas-a-par-do-novo-fenomeno-que-e-pintar-livros' title='Estás a par do novo fenómeno que é pintar livros?' target='_self'><figure><div class='fig-box'><img title='Estás a par do novo fenómeno que é pintar livros?' alt='Estás a par do novo fenómeno que é pintar livros?' data-sizes='auto' data-srcset=' https://images.rfm.pt/pintar-livro-destaque11475ed7_destaque_3col.jpg 480w, https://images.rfm.pt/pintar-livro-destaque11475ed7_base.jpg 555w, https://images.rfm.pt/pintar-livro-destaque11475ed7_app_medium.jpg 711w, https://images.rfm.pt/pintar-livro-destaque11475ed7_destaque_2col.jpg 960w, https://images.rfm.pt/pintar-livro-destaque11475ed7_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/pintar-livro-destaque11475ed7_base.jpg' class='lazyload' /></div><figcaption>Estás a par do novo fenómeno que é pintar livros?</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20162/agora-os-portugueses-tem-de-pagar-para-entrar-no-reino-unido' title='Agora, os portugueses têm de pagar para entrar no Reino Unido' target='_self'><figure><div class='fig-box'><img title='Agora, os portugueses têm de pagar para entrar no Reino Unido' alt='Agora, os portugueses têm de pagar para entrar no Reino Unido' data-sizes='auto' data-srcset=' https://images.rfm.pt/big-ben-e-autocarros-em-londres-uk-destaque11586bad_destaque_3col.jpg 480w, https://images.rfm.pt/big-ben-e-autocarros-em-londres-uk-destaque11586bad_base.jpg 555w, https://images.rfm.pt/big-ben-e-autocarros-em-londres-uk-destaque11586bad_app_medium.jpg 711w, https://images.rfm.pt/big-ben-e-autocarros-em-londres-uk-destaque11586bad_destaque_2col.jpg 960w, https://images.rfm.pt/big-ben-e-autocarros-em-londres-uk-destaque11586bad_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/big-ben-e-autocarros-em-londres-uk-destaque11586bad_base.jpg' class='lazyload' /></div><figcaption>Agora, os portugueses têm de pagar para entrar no Reino Unido</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20166/este-e-um-dos-peixes-mais-consumidos-e-contem-naturalmente-mais-de-70-parasitas' title='Este é um dos peixes mais consumidos e contém naturalmente mais de 70 parasitas' target='_self'><figure><div class='fig-box'><img title='Este é um dos peixes mais consumidos e contém naturalmente mais de 70 parasitas' alt='Este é um dos peixes mais consumidos e contém naturalmente mais de 70 parasitas' data-sizes='auto' data-srcset=' https://images.rfm.pt/mulher-a-comer-peixe-destaque149966b0_destaque_3col.jpg 480w, https://images.rfm.pt/mulher-a-comer-peixe-destaque149966b0_base.jpg 555w, https://images.rfm.pt/mulher-a-comer-peixe-destaque149966b0_app_medium.jpg 711w, https://images.rfm.pt/mulher-a-comer-peixe-destaque149966b0_destaque_2col.jpg 960w, https://images.rfm.pt/mulher-a-comer-peixe-destaque149966b0_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/mulher-a-comer-peixe-destaque149966b0_base.jpg' class='lazyload' /></div><figcaption>Este é um dos peixes mais consumidos e contém naturalmente mais de 70 parasitas</figcaption></figure></a></div></section><section class='top-space bottom-space align-center'><button onclick="location.href='https://rfm.pt/atualidade';" class='x-btn' role='button' aria-label='+ Atualidade' title='+ Atualidade'><div class='x-btn-bg bgc-white brd-grey'></div><span class='x-btn-lt txtc-grey large quarter-padding'>+ Atualidade</span></button></section><!-- RFM_HP_INBLOCKS --><div style='margin: 0 auto; text-align: center; margin-bottom: 1em;'><ad-placement format='inBlocks' refresh='false' adunit='RFM/rfm_hp_inBlocks'></ad-placement></div><section class='b-red bottom-space'><a href='https://rfm.pt/metaverso' target='_blank' title='Visita o metaverso RFM e troca pontos por pequenos-almoços reais connosco' class='lnk-white'><p class='ban-red'>Visita o metaverso RFM e troca pontos por pequenos-almoços reais connosco</p></a></section> <!--Subscribe Newsletter Form --> <div id="ContentPlaceHolderRFM_uc_newsletter_newsl" class="vertical-space"> <div id="formsubscrever" class="nl-box"> <div class="sub-txt">Subscreve a newsletter RFM</div> <div class="sub-email"> <input id="email" type="text" placeholder="O teu email" /> </div> <div class="sub-send" style="display: flex; justify-content: flex-start; align-items: center"> <button aria-label="Enviar" class="x-btn" role="button" tabindex="0" type="submit" id="form-submit" name="submit" value="Submit" title="Enviar"> <div class="x-btn-bg bgc-light-red brd-white"></div> <span class="x-btn-lt txtc-white large quarter-padding">Enviar</span> </button> </div> </div> <div id="msg" class="nl-box" style="display: none"> </div> <div class="nl-info">Ao inserires o teu email concordas com os nossos <a href="https://rfm.pt/termos-de-utilizacao" title="Termos de Utilização" target="_blank">Termos de Utilização</a> e <a href="https://rfm.pt/politica-de-privacidade" title="Política de Privacidade" target="_blank">Política de Privacidade</a>.</div> <link href="https://rfmsite2023-images.azureedge.net/css/sendnews.min.css" rel="stylesheet" /> <script src="https://rfmsite2023-images.azureedge.net/js/sendnews.min.js"></script> </div> <!--Subscribe Newsletter Form END--> <!-- RFM Share --> <div class="x-title top-space"><span>A RFM perto de ti</span></div> <ul class="x-list vertical-space"> <li> <button rel="noopener" title="RFM no Facebook" class="button-s" onclick="window.open('https://www.facebook.com/rfmoficial', '_blank');"> <img class="lazyload" data-src="https://rfmsite2023-images.azureedge.net/images/ico-facebook.svg" width="22" height="22" alt="RFM no Facebook" title="RFM no Facebook" /> </button> </li> <li> <button rel="noopener" title="RFM no Instagram" class="button-s" onclick="window.open('https://www.instagram.com/rfmportugal/', '_blank');"> <img class="lazyload" data-src="https://rfmsite2023-images.azureedge.net/images/ico-insta.svg" width="22" height="22" alt="RFM no Instagram" title="RFM no Instagram" /> </button> </li> <li> <button rel="noopener" title="RFM no Twitter" class="button-s" onclick="window.open('https://twitter.com/rfmportugal', '_blank');"> <img class="lazyload" data-src="https://rfmsite2023-images.azureedge.net/images/ico-twitter.svg" width="22" height="22" alt="RFM no Twitter" title="RFM no Twitter" /> </button> </li> <li> <button rel="noopener" title="RFM no Youtube" class="button-s" onclick="window.open('https://www.youtube.com/RFMsoGrandesMusicas', '_blank');"> <img class="lazyload" data-src="https://rfmsite2023-images.azureedge.net/images/ico-youtube.svg" width="22" height="22" alt="RFM no Youtube" title="RFM no Youtube" /> </button> </li> <li> <button rel="noopener" title="RFM no Linkedin" class="button-s" onclick="window.open('https://www.linkedin.com/company/68863889/', '_blank');"> <img class="lazyload" data-src="https://rfmsite2023-images.azureedge.net/images/ico-in.svg" width="22" height="22" alt="RFM no Linkedin" title="RFM no Linkedin" /> </button> </li> </ul> <!-- RFM Share END--> </section> <aside> <!-- PUB --> <div class="pub-info-hp hide-all quarter-top-space">PUB</div> <div id="aside-pub" class="bottom-space"><ad-placement format='halfPage' adunit='RFM/rfm_hp_mpu'></ad-placement></div> <!-- PUB HALFPAGE MOVEL--> <div class="pub-box half-top-space"> <ad-placement id='scrollBanner' format='halfPage' refresh='false' adunit='RFM/rfm_hp_stickyBanner'></ad-placement> </div> </aside> </main> <!-- BODY ENDS --> <script type="text/javascript" src="https://rfmsite2023-images.azureedge.net/js/video-ticker.min.js?v=2.8"></script> <!-- Refrescamento HP --> <script type="text/javascript"> /* Refresh da página de 3 em 3 minutos*/ function reFresh() { console.log(pausedRefreshHP), location.reload(true); } var pausedRefreshHP = false, auto_refresh = setInterval(function () { if (pausedRefreshHP) return false; reFresh(); }, 180000); </script> <!-- FOOTER --> <footer class="x-grad"> <div id="footer" class="x-flex base-w align-center half-vertical-padding"> <div class="all-20"><a href="https://gruporenascencamultimedia.com/" rel="noreferrer" target="_blank" title="Grupo Renascença Multimédia"> <img data-src="https://rfmsite2023-images.azureedge.net/img/footer/GRM.svg" alt="Grupo Renascença Multimédia" width="100" height="90" class="lazyload"></a></div> <div class="all-15"><a href="https://rr.pt/" rel="noreferrer" target="_blank" title="Renascença"> <img data-src="https://rfmsite2023-images.azureedge.net/img/footer/RENASCENCA.svg" alt="Renascença" width="75" height="75" class="lazyload"></a></div> <div class="all-15"><a href="https://megahits.fm/" rel="noreferrer" target="_blank" title="Mega Hits"> <img data-src="https://rfmsite2023-images.azureedge.net/img/footer/MEGA.svg" alt="Mega Hits" width="75" height="75" class="lazyload"></a></div> <div class="all-15"><a href="https://www.geniusymeios.pt/" rel="noreferrer" target="_blank" title="Genius y Meios"> <img data-src="https://rfmsite2023-images.azureedge.net/img/footer/GENIUS.svg" alt="Genius y Meios" width="75" height="75" class="lazyload"></a></div> <div class="all-15"><a href="https://www.intervoz.pt/" rel="noreferrer" target="_blank" title="Intervoz"> <img data-src="https://rfmsite2023-images.azureedge.net/img/footer/INTERVOZ.svg" alt="Intervoz" width="75" height="75" class="lazyload"></a></div> <div class="all-15"><a href="https://popcasts.pt/" rel="noreferrer" target="_blank" title="POPCASTS"> <img data-src="https://rfmsite2023-images.azureedge.net/img/footer/POPCASTS.svg" alt="POPCASTS" width="75" height="75" class="lazyload"></a></div> </div> <div class="go2-center small txtc-white double-bottom-padding"> <div><a href="https://rfm.pt/politica-de-utilizacao-digital" class="lnk-white" title="Politica de utilização digital">Politica de utilização digital</a></div> <div>© <span id="YearGRM1"></span> RFM. Todos os direitos reservados.</div> <div class="txtc-light-grey">Quinta do Bom Pastor, Estrada da Buraca 8-12, 1549-025 Lisboa T.213 239 200</div> <div><a href="mailto:mail@rfm.pt" class="lnk-white">mail@rfm.pt</a> | <a href="https://rfm.pt/transparencia" class="lnk-white" title="Transparência">Transparência</a> | <a href="https://rmultimedia.workky.com/portal-denuncias" title="Canal de Denúncias" rel="noopener" class="lnk-white no-wrap" target="_blank">Canal de Denúncias</a> | <a href="https://rfm.pt/publicidade" class="lnk-white" title="Publicidade">Publicidade</a> | <a href="https://gruporenascencamultimedia.com/carreiras/" target="_blank" class="lnk-white" title="Carreiras">Carreiras</a></div> </div> <script> const d = new Date(); let yearGRM1 = d.getFullYear(); document.getElementById("YearGRM1").innerHTML = yearGRM1; </script> </footer> </div> <!-- MAIN GRID ENDS --> <!-- PUB RICHMEDIA--> <div style='height:1px; width:1px;'><ad-placement format='outOfPage' adunit='RFM/rfm_hp_Richmedia'></ad-placement></div> <script type="text/javascript" src="https://rfmsite2023-images.azureedge.net/js/scripts.min.js?v=2.8"></script> <script type="text/javascript" src="https://rfmsite2023-images.azureedge.net/js/lazysizes.min.js?v=2.8"></script> <!--Nonio RFM --> <script type="text/javascript" lang="javascript" src="https://cdns.gigya.com/js/gigya.js?apikey=3_GrwD1bNnX5VTTPqb_gKxnk6PZNZSdamJuaSJLnZZHpveP8D5lF8lk6YYoRaXAyox"> { lang: "pt", 'enableSSOToken': true } </script> <!-- PUB BUNDLE--> <script> window.TagBundle.init(tagBundleConfig, prebidConf) </script> <!-- PUB BUNDLE--> </body> </html>