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 30 mil euros no Grandioso Jogo da Mala! Sabe mais aqui!' class='lnk-white'><p class='ban-red'>Ganha 30 mil euros no 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/20081/jk-rowling-escreve-indireta-para-os-atores-de-harry-potter-e-torna-se-viral' title='J.K. Rowling escreve indireta para os atores de Harry Potter e torna-se viral' target='_self'><figure><div class='fig-box'><img title='J.K. Rowling escreve indireta para os atores de Harry Potter e torna-se viral' alt='J.K. Rowling escreve indireta para os atores de Harry Potter e torna-se viral' data-sizes='auto' data-srcset=' https://images.rfm.pt/j-k-rowling-reuters-destaque20918bcc_destaque_3col.jpg 480w, https://images.rfm.pt/j-k-rowling-reuters-destaque20918bcc_base.jpg 555w, https://images.rfm.pt/j-k-rowling-reuters-destaque20918bcc_app_medium.jpg 711w, https://images.rfm.pt/j-k-rowling-reuters-destaque20918bcc_destaque_2col.jpg 960w, https://images.rfm.pt/j-k-rowling-reuters-destaque20918bcc_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/j-k-rowling-reuters-destaque20918bcc_base.jpg' class='lazyload' /></div><figcaption>J.K. Rowling escreve indireta para os atores de Harry Potter e torna-se viral</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20078/a-febre-do-chocolate-do-dubai-e-tanta-que-ja-esta-a-venda-no-olx-por-mais-de-30-euros' title='A febre do chocolate do Dubai &#233; tanta que j&#225; est&#225; &#224; venda no OLX por mais de 30 euros' target='_self'><figure><div class='fig-box'><img title='A febre do chocolate do Dubai &#233; tanta que j&#225; est&#225; &#224; venda no OLX por mais de 30 euros' alt='A febre do chocolate do Dubai &#233; tanta que j&#225; est&#225; &#224; venda no OLX por mais de 30 euros' data-sizes='auto' data-srcset=' https://images.rfm.pt/choc-dubai-precos-olx-destaque1399bcac_destaque_3col.jpg 480w, https://images.rfm.pt/choc-dubai-precos-olx-destaque1399bcac_base.jpg 555w, https://images.rfm.pt/choc-dubai-precos-olx-destaque1399bcac_app_medium.jpg 711w, https://images.rfm.pt/choc-dubai-precos-olx-destaque1399bcac_destaque_2col.jpg 960w, https://images.rfm.pt/choc-dubai-precos-olx-destaque1399bcac_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/choc-dubai-precos-olx-destaque1399bcac_base.jpg' class='lazyload' /></div><figcaption>A febre do chocolate do Dubai é tanta que já está à venda no OLX por mais de 30 euros</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20080/video-viral-mostra-manobra-assustadora-no-aeroporto-internacional-da-madeira' title='V&#237;deo viral mostra manobra assustadora no Aeroporto Internacional da Madeira' target='_self'><figure><div class='fig-box'><img title='V&#237;deo viral mostra manobra assustadora no Aeroporto Internacional da Madeira' alt='V&#237;deo viral mostra manobra assustadora no Aeroporto Internacional da Madeira' data-sizes='auto' data-srcset=' https://images.rfm.pt/easyjet-na-madeira-destaque1302fc20_destaque_3col.jpg 480w, https://images.rfm.pt/easyjet-na-madeira-destaque1302fc20_base.jpg 555w, https://images.rfm.pt/easyjet-na-madeira-destaque1302fc20_app_medium.jpg 711w, https://images.rfm.pt/easyjet-na-madeira-destaque1302fc20_destaque_2col.jpg 960w, https://images.rfm.pt/easyjet-na-madeira-destaque1302fc20_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/easyjet-na-madeira-destaque1302fc20_base.jpg' class='lazyload' /></div><figcaption>Vídeo viral mostra manobra assustadora no Aeroporto Internacional da Madeira</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/20077/estas-farto-do-mau-tempo-calma-o-sol-esta-quase-a-chegar' title='Est&#225;s farto do mau tempo? Calma, o sol est&#225; quase a chegar!' target='_self'><figure><div class='fig-box'><img title='Est&#225;s farto do mau tempo? Calma, o sol est&#225; quase a chegar!' alt='Est&#225;s farto do mau tempo? Calma, o sol est&#225; quase a chegar!' data-sizes='auto' data-srcset=' https://images.rfm.pt/mulher-a-apanhar-sol-destaque44662e98_destaque_3col.jpg 480w, https://images.rfm.pt/mulher-a-apanhar-sol-destaque44662e98_base.jpg 555w, https://images.rfm.pt/mulher-a-apanhar-sol-destaque44662e98_app_medium.jpg 711w, https://images.rfm.pt/mulher-a-apanhar-sol-destaque44662e98_destaque_2col.jpg 960w, https://images.rfm.pt/mulher-a-apanhar-sol-destaque44662e98_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/mulher-a-apanhar-sol-destaque44662e98_base.jpg' class='lazyload' /></div><figcaption>Estás farto do mau tempo? Calma, o sol está quase a chegar!</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20071/cuidado-com-certas-chamadas-dicas-infaliveis-para-evitar-fraudes-telefonicas' title='Cuidado com certas chamadas: Dicas infal&#237;veis para evitar fraudes telef&#243;nicas' target='_self'><figure><div class='fig-box'><img title='Cuidado com certas chamadas: Dicas infal&#237;veis para evitar fraudes telef&#243;nicas' alt='Cuidado com certas chamadas: Dicas infal&#237;veis para evitar fraudes telef&#243;nicas' data-sizes='auto' data-srcset=' https://images.rfm.pt/chamada-fraude-destaque164752ec_destaque_3col.jpg 480w, https://images.rfm.pt/chamada-fraude-destaque164752ec_base.jpg 555w, https://images.rfm.pt/chamada-fraude-destaque164752ec_app_medium.jpg 711w, https://images.rfm.pt/chamada-fraude-destaque164752ec_destaque_2col.jpg 960w, https://images.rfm.pt/chamada-fraude-destaque164752ec_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/chamada-fraude-destaque164752ec_base.jpg' class='lazyload' /></div><figcaption>Cuidado com certas chamadas: Dicas infalíveis para evitar fraudes telefónicas</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20076/descobre-aqui-com-quem-e-que-ana-garcia-martins-ia-de-ferias-ou-a-um-restaurante-caro' title='Descobre aqui com quem &#233; que Ana Garcia Martins ia de f&#233;rias ou a um restaurante caro?' target='_self'><figure><div class='fig-box'><img title='Descobre aqui com quem &#233; que Ana Garcia Martins ia de f&#233;rias ou a um restaurante caro?' alt='Descobre aqui com quem &#233; que Ana Garcia Martins ia de f&#233;rias ou a um restaurante caro?' data-sizes='auto' data-srcset=' https://images.rfm.pt/pipoca-21-marco-2025161863ec_destaque_3col.png 480w, https://images.rfm.pt/pipoca-21-marco-2025161863ec_base.png 555w, https://images.rfm.pt/pipoca-21-marco-2025161863ec_app_medium.png 711w, https://images.rfm.pt/pipoca-21-marco-2025161863ec_destaque_2col.png 960w, https://images.rfm.pt/pipoca-21-marco-2025161863ec_app_large.png 1080w' width='555' height='312' data-src='https://images.rfm.pt/pipoca-21-marco-2025161863ec_base.png' class='lazyload' /></div><figcaption>Descobre aqui com quem é que Ana Garcia Martins ia de férias ou a um restaurante caro?</figcaption></figure></a></div></section><section class='g-mx g-m3'><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20051/adolescencia-a-serie-que-esta-a-dar-que-falar-a-historia-de-um-jovem-acusado-de-homicidio' title='&quot;Adolesc&#234;ncia&quot;, a s&#233;rie que est&#225; a dar que falar: a hist&#243;ria de um jovem acusado de homic&#237;dio' target='_self'><figure><div class='fig-box'><img title='&quot;Adolesc&#234;ncia&quot;, a s&#233;rie que est&#225; a dar que falar: a hist&#243;ria de um jovem acusado de homic&#237;dio' alt='&quot;Adolesc&#234;ncia&quot;, a s&#233;rie que est&#225; a dar que falar: a hist&#243;ria de um jovem acusado de homic&#237;dio' data-sizes='auto' data-srcset=' https://images.rfm.pt/adolescencia-destaque1301c4bf_destaque_3col.jpg 480w, https://images.rfm.pt/adolescencia-destaque1301c4bf_base.jpg 555w, https://images.rfm.pt/adolescencia-destaque1301c4bf_app_medium.jpg 711w, https://images.rfm.pt/adolescencia-destaque1301c4bf_destaque_2col.jpg 960w, https://images.rfm.pt/adolescencia-destaque1301c4bf_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/adolescencia-destaque1301c4bf_base.jpg' class='lazyload' /></div><figcaption>"Adolescência", a série que está a dar que falar: a história de um jovem acusado de homicídio</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20001/a-rfm-deu-30-mil-euros-no-grandioso-jogo-da-mala' title='A RFM deu 30 mil euros no Grandioso Jogo da Mala!' target='_self'><figure><div class='fig-box'><img title='A RFM deu 30 mil euros no Grandioso Jogo da Mala!' alt='A RFM deu 30 mil euros no Grandioso Jogo da Mala!' data-sizes='auto' data-srcset=' https://images.rfm.pt/framegjm89974a24_destaque_3col.jpg 480w, https://images.rfm.pt/framegjm89974a24_base.jpg 555w, https://images.rfm.pt/framegjm89974a24_app_medium.jpg 711w, https://images.rfm.pt/framegjm89974a24_destaque_2col.jpg 960w, https://images.rfm.pt/framegjm89974a24_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/framegjm89974a24_base.jpg' class='lazyload' /></div><figcaption>A RFM deu 30 mil euros no Grandioso Jogo da Mala!</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 &#233; pela 8.&#170; vez distinguida como Marca de Confian&#231;a!' target='_self'><figure><div class='fig-box'><img title='A RFM &#233; pela 8.&#170; vez distinguida como Marca de Confian&#231;a!' alt='A RFM &#233; pela 8.&#170; vez distinguida como Marca de Confian&#231;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></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&#233; da Manh&#227; com Pedro, Mariana e Luis' target='_self'><figure><div class='fig-box'><img title='Caf&#233; da Manh&#227; com Pedro, Mariana e Luis' alt='Caf&#233; da Manh&#227; com Pedro, Mariana e Luis' 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 e Luis</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&#225; bonito com H&#233;lder Tavares e Catarina Moreira' target='_self'><figure><div class='fig-box'><img title='T&#225; bonito com H&#233;lder Tavares e Catarina Moreira' alt='T&#225; bonito com H&#233;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&#227;o no Grandioso Jogo da Mala com a RFM!' target='_self'><figure><div class='fig-box'><img title='Ganha um dinheir&#227;o no Grandioso Jogo da Mala com a RFM!' alt='Ganha um dinheir&#227;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/ernesto-damas-acertou-no-que-barulho-e-este-na-rfm-e-ganhou-4150-euros' title='Ernesto Damas acertou no &quot;Que barulho &#233; este, na RFM?&quot; e ganhou 4150 euros!' target='_self'><figure><div class='fig-box'><img title='Ernesto Damas acertou no &quot;Que barulho &#233; este, na RFM?&quot; e ganhou 4150 euros!' alt='Ernesto Damas acertou no &quot;Que barulho &#233; este, na RFM?&quot; e ganhou 4150 euros!' data-sizes='auto' data-srcset=' https://images.rfm.pt/img-28168836c8c8_destaque_3col.jpg 480w, https://images.rfm.pt/img-28168836c8c8_base.jpg 555w, https://images.rfm.pt/img-28168836c8c8_app_medium.jpg 711w, https://images.rfm.pt/img-28168836c8c8_destaque_2col.jpg 960w, https://images.rfm.pt/img-28168836c8c8_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/img-28168836c8c8_base.jpg' class='lazyload' /></div><figcaption>Ernesto Damas acertou no "Que barulho é este, na RFM?" e ganhou 4150 euros!</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&#193; COMPLETA!' target='_self'><figure><div class='fig-box'><img title='A RFM 2025 EST&#193; COMPLETA!' alt='A RFM 2025 EST&#193; 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&#193; COMPLETA!' title='A RFM 2025 EST&#193; 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/78892/enxovalhar-celebridades-ep-148' title='Enxovalhar celebridades | Ep. 148'><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='Enxovalhar celebridades | Ep. 148' title='Enxovalhar celebridades | Ep. 148' class='lazyload' /><figcaption>Enxovalhar celebridades | Ep. 148</figcaption></figure></a></div><div class='vid-item'><a href='https://rfm.pt/video/78822/ep-142-dudas-de-un-hombre-task-masking' title='Ep. 142 | Dudas, de un Hombre - Task Masking'><figure><img width='100' height='100' data-src='https://images.rfm.pt/dudas-de-un-hombre-destaque-1920x10802114a4d1_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg' alt='Ep. 142 | Dudas, de un Hombre - Task Masking' title='Ep. 142 | Dudas, de un Hombre - Task Masking' class='lazyload' /><figcaption>Ep. 142 | Dudas, de un Hombre - Task Masking</figcaption></figure></a></div><div class='vid-item'><a href='https://rfm.pt/video/78858/voar-ao-vivo-no-dia-do-pai' title='&#39;Voar&#39; ao vivo no Dia do Pai'><figure><img width='100' height='100' data-src='https://images.rfm.pt/tim-e-filho-musica-destaque98357c2e_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg' alt='&#39;Voar&#39; ao vivo no Dia do Pai' title='&#39;Voar&#39; ao vivo no Dia do Pai' class='lazyload' /><figcaption>'Voar' ao vivo no Dia do Pai</figcaption></figure></a></div><div class='vid-item'><a href='https://rfm.pt/video/78852/rouco-por-ti-ao-vivo-no-dia-do-pai' title='Rouco por ti no Dia do pai'><figure><img width='100' height='100' data-src='https://images.rfm.pt/joao-pedro-pais-e-pedro-fernandes-musica-dia-do-pai-rouco-por-ti-destaque441305a4_quadrada_agenda_top25_locutores_autopromo_capaPlayer.jpg' alt='Rouco por ti no Dia do pai' title='Rouco por ti no Dia do pai' class='lazyload' /><figcaption>Rouco por ti no Dia do pai</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&#233;m POD comigo' target='_self'><figure><img title='Ningu&#233;m POD comigo' alt='Ningu&#233;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&#233; curto' target='_self'><figure><img title='Caf&#233; curto' alt='Caf&#233; 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 &amp; Mendes' target='_self'><figure><img title='UNTE/SE Radioshow com Rich &amp; Mendes' alt='UNTE/SE Radioshow com Rich &amp; 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&#231;&#227;o - T2' target='_self'><figure><img title='O que diz o teu cora&#231;&#227;o - T2' alt='O que diz o teu cora&#231;&#227;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 &#201; Assim...' target='_self'><figure><img title='De Maneiras Que &#201; Assim...' alt='De Maneiras Que &#201; 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&#245;es' target='_self'><figure><img title='RFM Hangout com Pedro Sim&#245;es' alt='RFM Hangout com Pedro Sim&#245;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&#250;dos' target='_self'><figure><img title='Sono Trocado por Mi&#250;dos' alt='Sono Trocado por Mi&#250;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/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&#233;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&#233;m com a RFM!' alt='Tens planos para os dias 17 e 18 de maio? Vem ao Iberanime em Santar&#233;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&#201;' target='_self'><figure><div class='fig-box'><img title='Conhece hoje o cartaz completo do RFM SOMNII INTERMARCH&#201;' alt='Conhece hoje o cartaz completo do RFM SOMNII INTERMARCH&#201;' 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/19908/bia-caboz-sippinpurpp-miguel-carmona-nininho-vaz-maia-matias-damasio-e-muito-mais-no-sol-da-caparica' title='Bia Caboz, Sippinpurpp e Miguel Carmona, Nininho Vaz Maia,Matias Dam&#225;sio e muito mais no Sol da Caparica' target='_self'><figure><div class='fig-box'><img title='Bia Caboz, Sippinpurpp e Miguel Carmona, Nininho Vaz Maia,Matias Dam&#225;sio e muito mais no Sol da Caparica' alt='Bia Caboz, Sippinpurpp e Miguel Carmona, Nininho Vaz Maia,Matias Dam&#225;sio e muito mais no Sol da Caparica' data-sizes='auto' data-srcset=' https://images.rfm.pt/nininho-vaz-maia-no-sol-da-caparica-destaque5359da24_destaque_3col.jpg 480w, https://images.rfm.pt/nininho-vaz-maia-no-sol-da-caparica-destaque5359da24_base.jpg 555w, https://images.rfm.pt/nininho-vaz-maia-no-sol-da-caparica-destaque5359da24_app_medium.jpg 711w, https://images.rfm.pt/nininho-vaz-maia-no-sol-da-caparica-destaque5359da24_destaque_2col.jpg 960w, https://images.rfm.pt/nininho-vaz-maia-no-sol-da-caparica-destaque5359da24_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/nininho-vaz-maia-no-sol-da-caparica-destaque5359da24_base.jpg' class='lazyload' /></div><figcaption>Bia Caboz, Sippinpurpp e Miguel Carmona, Nininho Vaz Maia,Matias Damásio e muito mais no Sol da Caparica</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&#186;, sempre com a RFM!' target='_self'><figure><div class='fig-box'><img title='Buba Espinho no Porto, com concerto de 360&#186;, sempre com a RFM!' alt='Buba Espinho no Porto, com concerto de 360&#186;, 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/17649/duarte-pita-negrao-chega-a-barcelos-com-o-espetaculo-luzes' title='Duarte Pita Negr&#227;o chega a Barcelos com o espet&#225;culo &quot;Luzes&quot;' target='_self'><figure><div class='fig-box'><img title='Duarte Pita Negr&#227;o chega a Barcelos com o espet&#225;culo &quot;Luzes&quot;' alt='Duarte Pita Negr&#227;o chega a Barcelos com o espet&#225;culo &quot;Luzes&quot;' data-sizes='auto' data-srcset=' https://images.rfm.pt/luzes-duarte-pita-destaque246936a5_destaque_3col.jpg 480w, https://images.rfm.pt/luzes-duarte-pita-destaque246936a5_base.jpg 555w, https://images.rfm.pt/luzes-duarte-pita-destaque246936a5_app_medium.jpg 711w, https://images.rfm.pt/luzes-duarte-pita-destaque246936a5_destaque_2col.jpg 960w, https://images.rfm.pt/luzes-duarte-pita-destaque246936a5_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/luzes-duarte-pita-destaque246936a5_base.jpg' class='lazyload' /></div><figcaption>Duarte Pita Negrão chega a Barcelos com o espetáculo "Luzes"</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/19863/meo-kalorama-regressa-com-a-rfm-e-os-passes-para-os-3-dias-ja-estao-a-venda' title='MEO KALORAMA regressa com a RFM e os passes para os 3 dias j&#225; est&#227;o &#224; venda.' target='_self'><figure><div class='fig-box'><img title='MEO KALORAMA regressa com a RFM e os passes para os 3 dias j&#225; est&#227;o &#224; venda.' alt='MEO KALORAMA regressa com a RFM e os passes para os 3 dias j&#225; est&#227;o &#224; venda.' data-sizes='auto' data-srcset=' https://images.rfm.pt/nunomagalhaes-panorama-741060131550e3_destaque_3col.jpg 480w, https://images.rfm.pt/nunomagalhaes-panorama-741060131550e3_base.jpg 555w, https://images.rfm.pt/nunomagalhaes-panorama-741060131550e3_app_medium.jpg 711w, https://images.rfm.pt/nunomagalhaes-panorama-741060131550e3_destaque_2col.jpg 960w, https://images.rfm.pt/nunomagalhaes-panorama-741060131550e3_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/nunomagalhaes-panorama-741060131550e3_base.jpg' class='lazyload' /></div><figcaption>MEO KALORAMA regressa com a RFM e os passes para os 3 dias já estão à venda.</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&#243;logo Jordan Peterson volta a Portugal para dar mais palestras' target='_self'><figure><div class='fig-box'><img title='Psic&#243;logo Jordan Peterson volta a Portugal para dar mais palestras' alt='Psic&#243;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&#225;dio de Leiria' target='_self'><figure><div class='fig-box'><img title='​ROCKIN’1000 regressa com a RFM dia 6 de setembro ao Est&#225;dio de Leiria' alt='​ROCKIN’1000 regressa com a RFM dia 6 de setembro ao Est&#225;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/19723/caos-em-palco-a-peca-que-da-para-o-torto-regressa-a-portugal-com-a-rfm' title='Caos em palco! &quot;A pe&#231;a que d&#225; para o torto&quot; regressa a Portugal com a RFM' target='_self'><figure><div class='fig-box'><img title='Caos em palco! &quot;A pe&#231;a que d&#225; para o torto&quot; regressa a Portugal com a RFM' alt='Caos em palco! &quot;A pe&#231;a que d&#225; para o torto&quot; 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/19356/nelson-freitas-vai-festejar-25-anos-de-carreira-no-coliseu' title='Nelson Freitas vai festejar 25 anos de carreira no Coliseu' target='_self'><figure><div class='fig-box'><img title='Nelson Freitas vai festejar 25 anos de carreira no Coliseu' alt='Nelson Freitas vai festejar 25 anos de carreira no 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 vai festejar 25 anos de carreira no Coliseu</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/barulho' target='_blank' title='Que Barulho é Este, na RFM? Vê aqui os palpites errados e joga!' class='lnk-white'><p class='ban-red'>Que Barulho é Este, na RFM? Vê aqui os palpites errados e joga!</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/20070/as-regras-de-conducao-mais-estranhas-de-sempre-de-cada-pais' title='As regras de condu&#231;&#227;o mais estranhas de sempre de cada pa&#237;s' target='_self'><figure><div class='fig-box'><img title='As regras de condu&#231;&#227;o mais estranhas de sempre de cada pa&#237;s' alt='As regras de condu&#231;&#227;o mais estranhas de sempre de cada pa&#237;s' data-sizes='auto' data-srcset=' https://images.rfm.pt/mulher-a-conduzir-destaque50732aa8_destaque_3col.jpg 480w, https://images.rfm.pt/mulher-a-conduzir-destaque50732aa8_base.jpg 555w, https://images.rfm.pt/mulher-a-conduzir-destaque50732aa8_app_medium.jpg 711w, https://images.rfm.pt/mulher-a-conduzir-destaque50732aa8_destaque_2col.jpg 960w, https://images.rfm.pt/mulher-a-conduzir-destaque50732aa8_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/mulher-a-conduzir-destaque50732aa8_base.jpg' class='lazyload' /></div><figcaption>As regras de condução mais estranhas de sempre de cada país</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20059/deixa-te-de-esperas-e-faz-o-teu-proprio-chocolate-do-dubai-com-esta-receita' title='Deixa-te de esperas e faz o teu pr&#243;prio chocolate do Dubai com esta receita' target='_self'><figure><div class='fig-box'><img title='Deixa-te de esperas e faz o teu pr&#243;prio chocolate do Dubai com esta receita' alt='Deixa-te de esperas e faz o teu pr&#243;prio chocolate do Dubai com esta receita' data-sizes='auto' data-srcset=' https://images.rfm.pt/receita-choc-dubai-destaque5020c550_destaque_3col.jpg 480w, https://images.rfm.pt/receita-choc-dubai-destaque5020c550_base.jpg 555w, https://images.rfm.pt/receita-choc-dubai-destaque5020c550_app_medium.jpg 711w, https://images.rfm.pt/receita-choc-dubai-destaque5020c550_destaque_2col.jpg 960w, https://images.rfm.pt/receita-choc-dubai-destaque5020c550_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/receita-choc-dubai-destaque5020c550_base.jpg' class='lazyload' /></div><figcaption>Deixa-te de esperas e faz o teu próprio chocolate do Dubai com esta receita</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20065/nem-a-farda-segurou-as-lagrimas-a-surpresa-da-psp-que-emocionou-o-pais' title='Nem a farda segurou as l&#225;grimas: A surpresa da PSP que emocionou o pa&#237;s' target='_self'><figure><div class='fig-box'><img title='Nem a farda segurou as l&#225;grimas: A surpresa da PSP que emocionou o pa&#237;s' alt='Nem a farda segurou as l&#225;grimas: A surpresa da PSP que emocionou o pa&#237;s' data-sizes='auto' data-srcset=' https://images.rfm.pt/surpresa-psp-destaque1978d13b_destaque_3col.jpg 480w, https://images.rfm.pt/surpresa-psp-destaque1978d13b_base.jpg 555w, https://images.rfm.pt/surpresa-psp-destaque1978d13b_app_medium.jpg 711w, https://images.rfm.pt/surpresa-psp-destaque1978d13b_destaque_2col.jpg 960w, https://images.rfm.pt/surpresa-psp-destaque1978d13b_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/surpresa-psp-destaque1978d13b_base.jpg' class='lazyload' /></div><figcaption>Nem a farda segurou as lágrimas: A surpresa da PSP que emocionou o país</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20049/somos-uns-abencoados-no-dia-do-pai-a-rfm-ouviu-as-confidencias-de-musicos-que-sao-pais' title='&quot;Somos uns aben&#231;oados!&quot; No dia do pai a RFM ouviu as confid&#234;ncias de m&#250;sicos que s&#227;o pais' target='_self'><figure><div class='fig-box'><img title='&quot;Somos uns aben&#231;oados!&quot; No dia do pai a RFM ouviu as confid&#234;ncias de m&#250;sicos que s&#227;o pais' alt='&quot;Somos uns aben&#231;oados!&quot; No dia do pai a RFM ouviu as confid&#234;ncias de m&#250;sicos que s&#227;o pais' data-sizes='auto' data-srcset=' https://images.rfm.pt/video-dia-do-pai-destaque-sem-letras17113edb_destaque_3col.jpg 480w, https://images.rfm.pt/video-dia-do-pai-destaque-sem-letras17113edb_base.jpg 555w, https://images.rfm.pt/video-dia-do-pai-destaque-sem-letras17113edb_app_medium.jpg 711w, https://images.rfm.pt/video-dia-do-pai-destaque-sem-letras17113edb_destaque_2col.jpg 960w, https://images.rfm.pt/video-dia-do-pai-destaque-sem-letras17113edb_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/video-dia-do-pai-destaque-sem-letras17113edb_base.jpg' class='lazyload' /></div><figcaption>"Somos uns abençoados!" No dia do pai a RFM ouviu as confidências de músicos que são pais</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20069/imagens-dos-estragos-da-depressao-martinho-que-se-fez-sentir-em-portugal' title='Imagens dos estragos da depress&#227;o Martinho que se fez sentir em Portugal' target='_self'><figure><div class='fig-box'><img title='Imagens dos estragos da depress&#227;o Martinho que se fez sentir em Portugal' alt='Imagens dos estragos da depress&#227;o Martinho que se fez sentir em Portugal' data-sizes='auto' data-srcset=' https://images.rfm.pt/queda-de-arvore-martinho-destaque1255db81_destaque_3col.jpg 480w, https://images.rfm.pt/queda-de-arvore-martinho-destaque1255db81_base.jpg 555w, https://images.rfm.pt/queda-de-arvore-martinho-destaque1255db81_app_medium.jpg 711w, https://images.rfm.pt/queda-de-arvore-martinho-destaque1255db81_destaque_2col.jpg 960w, https://images.rfm.pt/queda-de-arvore-martinho-destaque1255db81_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/queda-de-arvore-martinho-destaque1255db81_base.jpg' class='lazyload' /></div><figcaption>Imagens dos estragos da depressão Martinho que se fez sentir em Portugal</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20067/tim-dos-xutos-e-o-filho-vicente-emocionam-ao-cantarem-juntos-na-rfm-no-dia-do-pai' title='Tim dos Xutos e o filho Vicente emocionam ao cantarem juntos na RFM no Dia do Pai' target='_self'><figure><div class='fig-box'><img title='Tim dos Xutos e o filho Vicente emocionam ao cantarem juntos na RFM no Dia do Pai' alt='Tim dos Xutos e o filho Vicente emocionam ao cantarem juntos na RFM no Dia do Pai' data-sizes='auto' data-srcset=' https://images.rfm.pt/tim-e-filho-no-dia-do-pai-destaque2146bdb5_destaque_3col.jpg 480w, https://images.rfm.pt/tim-e-filho-no-dia-do-pai-destaque2146bdb5_base.jpg 555w, https://images.rfm.pt/tim-e-filho-no-dia-do-pai-destaque2146bdb5_app_medium.jpg 711w, https://images.rfm.pt/tim-e-filho-no-dia-do-pai-destaque2146bdb5_destaque_2col.jpg 960w, https://images.rfm.pt/tim-e-filho-no-dia-do-pai-destaque2146bdb5_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/tim-e-filho-no-dia-do-pai-destaque2146bdb5_base.jpg' class='lazyload' /></div><figcaption>Tim dos Xutos e o filho Vicente emocionam ao cantarem juntos na RFM no Dia do Pai</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20066/neste-dia-do-pai-joao-pedro-pais-e-o-filho-cantaram-juntos-e-a-rfm-preparou-uma-grande-surpresa' title='Neste Dia do Pai, Jo&#227;o Pedro Pais e o filho cantaram juntos (e a RFM preparou uma grande surpresa)' target='_self'><figure><div class='fig-box'><img title='Neste Dia do Pai, Jo&#227;o Pedro Pais e o filho cantaram juntos (e a RFM preparou uma grande surpresa)' alt='Neste Dia do Pai, Jo&#227;o Pedro Pais e o filho cantaram juntos (e a RFM preparou uma grande surpresa)' data-sizes='auto' data-srcset=' https://images.rfm.pt/destque-jpp-dia-do-pai-19-marco-20253396b0da_destaque_3col.jpg 480w, https://images.rfm.pt/destque-jpp-dia-do-pai-19-marco-20253396b0da_base.jpg 555w, https://images.rfm.pt/destque-jpp-dia-do-pai-19-marco-20253396b0da_app_medium.jpg 711w, https://images.rfm.pt/destque-jpp-dia-do-pai-19-marco-20253396b0da_destaque_2col.jpg 960w, https://images.rfm.pt/destque-jpp-dia-do-pai-19-marco-20253396b0da_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/destque-jpp-dia-do-pai-19-marco-20253396b0da_base.jpg' class='lazyload' /></div><figcaption>Neste Dia do Pai, João Pedro Pais e o filho cantaram juntos (e a RFM preparou uma grande surpresa)</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20028/o-mau-tempo-continua-mais-duas-depressoes-vao-afetar-portugal-esta-semana' title='O mau tempo continua: mais duas depress&#245;es v&#227;o afetar Portugal esta semana' target='_self'><figure><div class='fig-box'><img title='O mau tempo continua: mais duas depress&#245;es v&#227;o afetar Portugal esta semana' alt='O mau tempo continua: mais duas depress&#245;es v&#227;o afetar Portugal esta semana' data-sizes='auto' data-srcset=' https://images.rfm.pt/chuva-intensa-destaque1800a702_destaque_3col.jpg 480w, https://images.rfm.pt/chuva-intensa-destaque1800a702_base.jpg 555w, https://images.rfm.pt/chuva-intensa-destaque1800a702_app_medium.jpg 711w, https://images.rfm.pt/chuva-intensa-destaque1800a702_destaque_2col.jpg 960w, https://images.rfm.pt/chuva-intensa-destaque1800a702_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/chuva-intensa-destaque1800a702_base.jpg' class='lazyload' /></div><figcaption>O mau tempo continua: mais duas depressões vão afetar Portugal esta semana</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20062/duarte-pita-negrao-dicas-para-fazeres-task-masking-no-trabalho-e-na-vida' title='Duarte Pita Negr&#227;o: Dicas para fazeres Task Masking, no trabalho e na vida' target='_self'><figure><div class='fig-box'><img title='Duarte Pita Negr&#227;o: Dicas para fazeres Task Masking, no trabalho e na vida' alt='Duarte Pita Negr&#227;o: Dicas para fazeres Task Masking, no trabalho e na vida' data-sizes='auto' data-srcset=' https://images.rfm.pt/mulher-aborrecida-no-escritorio-destaque890727c1_destaque_3col.jpg 480w, https://images.rfm.pt/mulher-aborrecida-no-escritorio-destaque890727c1_base.jpg 555w, https://images.rfm.pt/mulher-aborrecida-no-escritorio-destaque890727c1_app_medium.jpg 711w, https://images.rfm.pt/mulher-aborrecida-no-escritorio-destaque890727c1_destaque_2col.jpg 960w, https://images.rfm.pt/mulher-aborrecida-no-escritorio-destaque890727c1_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/mulher-aborrecida-no-escritorio-destaque890727c1_base.jpg' class='lazyload' /></div><figcaption>Duarte Pita Negrão: Dicas para fazeres Task Masking, no trabalho e na vida</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/19975/cate-blanchett-e-michael-fassbender-num-thriller-de-soderbergh-black-bag-nos-cinemas-com-a-rfm' title='Cate Blanchett e Michael Fassbender num thriller de Soderbergh. &quot;Black Bag&quot; nos cinemas com a RFM' target='_self'><figure><div class='fig-box'><img title='Cate Blanchett e Michael Fassbender num thriller de Soderbergh. &quot;Black Bag&quot; nos cinemas com a RFM' alt='Cate Blanchett e Michael Fassbender num thriller de Soderbergh. &quot;Black Bag&quot; nos cinemas com a RFM' data-sizes='auto' data-srcset=' https://images.rfm.pt/black-bag-1828666d4_destaque_3col.jpg 480w, https://images.rfm.pt/black-bag-1828666d4_base.jpg 555w, https://images.rfm.pt/black-bag-1828666d4_app_medium.jpg 711w, https://images.rfm.pt/black-bag-1828666d4_destaque_2col.jpg 960w, https://images.rfm.pt/black-bag-1828666d4_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/black-bag-1828666d4_base.jpg' class='lazyload' /></div><figcaption>Cate Blanchett e Michael Fassbender num thriller de Soderbergh. "Black Bag" nos cinemas com a RFM</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20072/neve-em-cascais-o-fenomeno-que-esta-a-dar-que-falar-nas-redes-sociais' title='Neve em Cascais? O fen&#243;meno que est&#225; a dar que falar nas redes sociais' target='_self'><figure><div class='fig-box'><img title='Neve em Cascais? O fen&#243;meno que est&#225; a dar que falar nas redes sociais' alt='Neve em Cascais? O fen&#243;meno que est&#225; a dar que falar nas redes sociais' data-sizes='auto' data-srcset=' https://images.rfm.pt/fenomeno-em-cascais-espuma-destaque13455015_destaque_3col.jpg 480w, https://images.rfm.pt/fenomeno-em-cascais-espuma-destaque13455015_base.jpg 555w, https://images.rfm.pt/fenomeno-em-cascais-espuma-destaque13455015_app_medium.jpg 711w, https://images.rfm.pt/fenomeno-em-cascais-espuma-destaque13455015_destaque_2col.jpg 960w, https://images.rfm.pt/fenomeno-em-cascais-espuma-destaque13455015_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/fenomeno-em-cascais-espuma-destaque13455015_base.jpg' class='lazyload' /></div><figcaption>Neve em Cascais? O fenómeno que está a dar que falar nas redes sociais</figcaption></figure></a></div><div class='g-mx-it'><a href='https://rfm.pt/atualidade/20073/estes-sao-os-paises-mais-felizes-do-mundo' title='Estes s&#227;o os pa&#237;ses mais felizes do mundo' target='_self'><figure><div class='fig-box'><img title='Estes s&#227;o os pa&#237;ses mais felizes do mundo' alt='Estes s&#227;o os pa&#237;ses mais felizes do mundo' data-sizes='auto' data-srcset=' https://images.rfm.pt/o_segredo_para_a_fel1184f993_destaque_3col.jpg 480w, https://images.rfm.pt/o_segredo_para_a_fel1184f993_base.jpg 555w, https://images.rfm.pt/o_segredo_para_a_fel1184f993_app_medium.jpg 711w, https://images.rfm.pt/o_segredo_para_a_fel1184f993_destaque_2col.jpg 960w, https://images.rfm.pt/o_segredo_para_a_fel1184f993_app_large.jpg 1080w' width='555' height='312' data-src='https://images.rfm.pt/o_segredo_para_a_fel1184f993_base.jpg' class='lazyload' /></div><figcaption>Estes são os países mais felizes do mundo</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>

Pages: 1 2 3 4 5 6 7 8 9 10