Greasy Fork is available in English.

RSS+ : Show Site All RSS

Show Site All RSS.

As of 2018-10-14. See the latest version.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         RSS+ : Show Site All RSS
// @name:zh      RSS+ : 显示当前网站所有的 RSS
// @name:zh-CN   RSS+ : 显示当前网站所有的 RSS
// @name:zh-TW   RSS+ : 顯示當前網站所有的 RSS
// @description         Show Site All RSS.
// @description:zh      显示当前网站所有的 RSS
// @description:zh-CN   显示当前网站所有的 RSS
// @description:zh-TW   顯示當前網站所有的 RSS
// @date          2018.09.16
// @modified	  2018.10.14
// @version       0.2

// @author       Wizos
// @namespace    https://blog.wizos.me
// @supportURL   [email protected]
// @contributionURL   https://www.paypal.com/cgi-bin/webscr?cmd=_donations&[email protected]&item_name=Greasy+Fork+donation
// @contributionAmount 2
// @include *
// @match        http://*/*
// @match        https://*/*
// @grant        GM_xmlhttpRequest
// @grant        GM_setClipboard
// @grant        GM_notification
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        unsafeWindow
// @noframes
// @run-at     document-end
// ==/UserScript==

var encodeUrl = "https://api.wizos.me/find.php?q=" + encodeURIComponent(location.href.replace(/^http:\/\/|https:\/\//s, ""));
var ajax = new XMLHttpRequest();
ajax.onreadystatechange = function() {
  if (ajax.readyState == 4 && ajax.status == 200) {
    var obj = JSON.parse(ajax.responseText);
    // console.log("调用接口成功:" + obj.status + "," + obj.result);
    getKnowFeeds();
    getUnknownFeeds();
    // console.log("本地feeds:" + localFeeds.length);
    if (obj.status != 404) {
      feeds = deleteDuplicate(localFeeds, obj.feeds);
    } else {
      feeds = deleteDuplicate(localFeeds);
    }

    render(feeds);
  }
};

ajax.open("GET", encodeUrl, true);
ajax.send();
var localFeeds = [];
var feeds = [];

/**
 * 删除重复的RSS
 */
function deleteDuplicate(localFeeds, cloudFeeds) {
  var map = {},
    tempLink;
  localFeeds.forEach(element => {
    tempLink = element.link.toLowerCase();
    if (!map[tempLink]) {
      map[tempLink] = 1;
      feeds.push(element);
    }
  });

  if (!cloudFeeds || cloudFeeds.length <= 0) {
    return feeds;
  }
  cloudFeeds.forEach(element => {
    tempLink = element.link.toLowerCase();
    if (!map[tempLink]) {
      //如果能查找到,证明数组元素重复了
      map[tempLink] = 1;
      feeds.push(element);
    }
  });
  return feeds;
}

function addDiscoverRSS(title, link, type) {
  // console.log("添加新的RSS:" + title + "," + link);
  var feed = {};
  feed.title = title;
  feed.link = link;
  localFeeds.push(feed);
}

// 获取已经在<head>中的<link>元素中,正确声明为RSS的链接
// Get links already declared properly in <link> elements in <head>
function getKnowFeeds() {
  var linkElems = document.getElementsByTagName("link");
  var link;
  for (var i = 0, l = linkElems.length; i < l; i++) {
    link = linkElems[i];
    if (!link) continue;
    var linkhref = link.href;
    var linktype = link.type;
    var linktitle = document.title;
    if (link.title) {
      linktitle = link.title;
    }
    if (linktype && linktype.match(/.*\/(rss|atom)\+xml?$/i)) {
      addDiscoverRSS(linktitle, linkhref);
    } else if (linktype && linktype.match(/^text\/xml$/i)) {
      addDiscoverRSS(linktitle, linkhref);
    }
  }
}

function getUnknownFeeds() {
  if (!document.links) {
    document.links = document.getElementsByTagName("a");
  }
  var links = document.links;
  var link;
  for (var a = 0, len = links.length; a < len; a++) {
    link = links[a];
    var linkhref = link.href;
    var linktitle = document.title;
    if (link.title) {
      linktitle = link.title;
    } else if (link.innerText) {
      linktitle = link.innerText;
    }
    // console.log("检查RSS:" + linkhref + "  , " + link.title);
    if (
      linkhref.match(/^rss:/) ||
      linkhref.match(
        /^(https|http|ftp|feed).*([\.\/]rss([\.\/]xml|\.aspx|\.jsp|\/)?$|\/node\/feed$|\/rss\/[a-z0-9]+$|[?&;](rss|xml|rdf)=|[?&;]feed=rss[0-9.]*$|[?&;]action=rss_rc$|feeds\.feedburner\.com\/[\w\W]+$)/i
      )
    ) {
      addDiscoverRSS(linktitle, linkhref);
    } else if (
      linkhref.match(
        /^(https|http|ftp|feed).*\/atom(\.xml|\.aspx|\.jsp|\/)?$|[?&;]feed=atom[0-9.]*$/i
      )
    ) {
      addDiscoverRSS(linktitle, linkhref);
    } else if (
      linkhref.match(
        /^(https|http|ftp|feed).*(\/feeds?\/[^.\/]*\.xml$|.*\/index\.xml$|feed\/msgs\.xml(\?num=\d+)?$)/i
      )
    ) {
      addDiscoverRSS(linktitle, linkhref);
    } else if (linkhref.match(/^(https|http|ftp|feed).*\.rdf$/i)) {
      addDiscoverRSS(linktitle, linkhref);
    } else if (linkhref.match(/^feed:\/\//i)) {
      addDiscoverRSS(linktitle, linkhref);
    }
  }
}

function render(feeds) {
  // console.log("开始渲染控件");
  // if (!feeds) {
  //   console.log("feed有问题C");
  //   feeds = JSON.parse(
  //     '[{"title":"这是第一个的标题","desc":"这是第一个的简介","link":"Http://baidu.com","follows":12,"update":"2018-10-13"}]'
  //   );
  // }

  if (!feeds || feeds.length <= 0) {
    console.log("该页没有发现feed");
    return;
  }
  var rss_plus_html = "";
  var element, tips, desc;
  for (var i = 0; i < feeds.length; i++) {
    element = feeds[i];
    tips = "";
    desc = "";
    // console.log("feed信息:" + element.title + element.link);

    if (element.follows) {
      tips = " - " + element.follows + "人订阅";
    }
    if (element.update) {
      tips += " - " + element.update + "更新";
    }
    if (element.desc) {
      desc = ' title="' + element.desc + '"';
    }
    rss_plus_html +=
      '<tr><td class=""><div class="rp-table-cell"><div class="feed-title"' +
      desc +
      ">" +
      element.title +
      '</div><div class="feed-tips">' +
      element.link +
      tips +
      '</div></div></td><td class="rp-table-column-center"><div class="rp-table-cell" sytle="display:inline">';
    rss_plus_html +=
      '<button type="button" index="' +
      i +
      '" class="rp-btn rp-btn-primary rp-btn-small rp-copy-feed-link" data-clipboard-action="copy" data-clipboard-target=".feed-title"><i class="rp-icon icon-copy"></i><span>复制</span></button>';
    rss_plus_html +=
      '<button type="button" index="' +
      i +
      '" class="rp-btn rp-btn-primary rp-btn-small rp-follow-feed-link"><i class="rp-icon icon-subs"></i><span>订阅</span></button></div></td></tr>';
  }

  var rss_count_badge_html =
    '<div id="rp-feed-badge" class="rp-card rp-card-bordered"><span class="rp-badge-count" place="count">' +
    feeds.length +
    "</span></div>";

  var rss_feed_list_html =
    '<div id="rp-feed-list" class="rp-card rp-card-bordered"><div id="rp-card-head" class="rp-card-head"><div class="card-title"><i class="rp-icon icon-star"></i>发现<span class="rp-mark-count" place="count">' +
    feeds.length +
    '</span>个订阅源 -【RSS+】</div></div><div class="rp-card-extra"><button type="button" id="rp-close-btn" class="rp-btn rp-btn-dashed" title="关闭"> <span><i class="rp-icon icon-close"></i></span></button></div>';

  rss_feed_list_html +=
    '<div id="rp-card-body"><div class="rp-table"><table cellspacing="0" cellpadding="0" border="0"><colgroup><col width="70%"><col width="30%"></colgroup><tbody class="rp-table-tbody">' +
    rss_plus_html +
    "</tbody></table></div></div></div></div>";

  var styleEl = document.createElement("style");
  styleEl.innerHTML = styleHtml;

  var head = document.getElementsByTagName("head");
  if (head && head[0]) head = head[0];
  var body = document.getElementsByTagName("body");
  if (body && body[0]) body = body[0];

  var rssPlusBoxDiv = document.createElement("div");
  rssPlusBoxDiv.setAttribute("id", "RSSPlusBox");
  rssPlusBoxDiv.innerHTML = rss_count_badge_html + rss_feed_list_html;
  //+ '<iframe name="rpJSFrame" src="about:blank" style="width:100%;height:100%;border:0px;display: block!important;" allowTransparency="true"></iframe>';
  body.insertBefore(rssPlusBoxDiv, body.firstChild);
  body.insertBefore(styleEl, body.firstChild);

  //setTimeout(function() {
  //    body.insertBefore(rssPlusBoxDiv, body.firstChild);
  //  }, 333); // hack to workaround the duplicated content problem 破解以解决重复内容问题

  var rpFeedBadgeDiv = document.getElementById("rp-feed-badge");
  var rpFeedListTitleDiv = document.getElementById("rp-card-head");
  var rpCloseDiv = document.getElementById("rp-close-btn");
  addEventHandler(rpCloseDiv, "click", function() {
    document.getElementById("rp-feed-list").style.display = "none";
    document.getElementById("rp-feed-badge").style.display = "block";
  });
  // addEventHandler(rpFeedListTitleDiv, "click", function() {
  //   document.getElementById("rp-feed-list").style.display = "none";
  //   document.getElementById("rp-feed-badge").style.display = "block";
  // });
  addEventHandler(rpFeedBadgeDiv, "click", function() {
    document.getElementById("rp-feed-list").style.display = "block";
    document.getElementById("rp-feed-badge").style.display = "none";
  });

  var copyFeedLinkButtons = document.getElementsByClassName(
    "rp-copy-feed-link"
  );
  var followFeedLinkButtons = document.getElementsByClassName(
    "rp-follow-feed-link"
  );
  for (i = 0; i < copyFeedLinkButtons.length; i++) {
    addEventHandler(copyFeedLinkButtons[i], "click", function() {
      copyFeedLink(this.getAttribute("index"));
    });
  }
  for (i = 0; i < followFeedLinkButtons.length; i++) {
    addEventHandler(followFeedLinkButtons[i], "click", function() {
      followFeedLink(this.getAttribute("index"));
    });
  }


  // GM_notification({
  //   title: "发现 " + feeds.length + " 个 RSS 订阅源",
  //   text: "点击右下角数字查看",
  //   timeout: 2000
  // });
}



function copyFeedLink(index) {
  GM_setClipboard(feeds[index].link);
  GM_notification({
    text: "已复制:" + feeds[index].link,
    title: "复制成功",
    timeout: 2000
  });
}

function followFeedLink(index) {
  // [feedly]https://feedly.com/i/subscription/feed%2Fhttp%3A%2F%2Ffeeds.howtogeek.com%2FHowToGeek
  // [inoreader]http://www.inoreader.com/?add_feed=https%3A%2F%2Fwww.howtogeek.com%2Ffeed%2F
  // [NewsBlur]http://www.newsblur.com/?url=https%3A%2F%2Ffeeds.howtogeek.com%2FHowToGeek
  // [theoldreader]https://theoldreader.com/feeds/subscribe?url=https://api.izgq.net/weibo/rss/1197161814
  window.open("https://www.inoreader.com/?add_feed=" + feeds[index].link, "_blank");
}

function addEventHandler(target, eventName, eventHandler, scope) {
  var f = scope ? function() {
        eventHandler.apply(scope, arguments);
      }
    : eventHandler;
  if (target.addEventListener) {
    target.addEventListener(eventName, f, true);
  } else if (target.attachEvent) {
    target.attachEvent("on" + eventName, f);
  }
  return f;
}

// function setupClipboard(frameWindow) {
//   var clipboardJs = GM_getResourceText("clipboard");
//   return function(jsStr) {
//     console.log("正在执行安装脚本" + frameWindow);
//     console.log(frameWindow);
//     frameWindow.eval(jsStr);
//   }.call(frameWindow, clipboardJs);
// }
var styleHtml =
  '@font-face {font-family: "RSSPlus";src: url("iconfont.eot?t=1539525813084");src: url("iconfont.eot?t=1539525813084#iefix") format("embedded-opentype"),url("data:application/x-font-woff;charset=utf-8;base64,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") format("woff"),url("iconfont.ttf?t=1539525813084") format("truetype"),url("iconfont.svg?t=1539525813084#RSSPlus") format("svg");}.rp-icon{display:inline-block;font-family:RSSPlus !important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-subs:before { content: "\\e651"; }.icon-dollar:before { content: "\\e8a4"; }.icon-feedback:before { content: "\\e684"; }.icon-search:before { content: "\\e600"; }.icon-copy:before { content: "\\e64e"; }.icon-star:before { content: "\\e625"; }.icon-close:before { content: "\\e619"; }#RSSPlusBox { position:fixed;z-index:99999;text-align:left;bottom:20px; right:20px; width:600px;max-height:460px;}div.feed-title { font-weight: bold;font-size: 1.0rem; cursor: pointer;}div.feed-tips { font-size: 0.75rem; color: rgb(158, 158, 158);}.card-title {}.rp-card-extra { position:absolute;right:16px;top:1px;}.rp-table-body { max-height: 400px; height: auto; overflow-x: hidden;}.table-footer { position: fixed; bottom: 0 ; padding-left: 10px; width: 100%; background-color: #fff;}.table-footer a { color: #ed3f14;}.support-box { height: 28px; line-height: 28px;}#rp-feed-list{display:none;z-index:23333;box-shadow: 1px 1px 2px 2px #4242426b;} #rp-feed-badge{width: 28px; height: 28px; line-height: 28px; border-radius: 14px; float: right;cursor: pointer;z-index:23333;box-shadow: 1px 1px 2px 2px #4242426b;}#rp-feed-badge:hover{border-color:#e9eaec}.badge{ top:-17px; left: -6%; width: 26px; height: 26px; line-height: 26px; border-radius: 13px;}.rp-card:hover{-webkit-box-shadow:0 1px 6px rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.2);border-color:#eee}.rp-card{background:#fff;border-radius:4px;font-size:14px;position:relative;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.rp-card-bordered:hover{border-color:#e9eaec}.rp-card-bordered{border:1px solid #dddee1;border-color:#e9eaec}.rp-mark-count{font-weight:bold;color: #ed3f14;}.rp-badge-count{position:relative;display:inline-block;width: 26px;height: 26px;line-height: 26px;border-radius: 15px;min-width: 20px;background:#4b5979;border: 1px solid transparent;color: #fff;text-align: center;font-size: 12px;white-space: nowrap;-webkit-transform-origin: -10% center;-ms-transform-origin: -10% center;transform-origin: -10% center;z-index: 10;-webkit-box-shadow: 0 0 0 1px #fff;box-shadow: 0 0 0 1px #fff;}.rp-badge-count a,.rp-badge-count a:hover{color:#fff}.rp-card-head{border-bottom:1px solid #e9eaec;padding:10px 16px;line-height:1}.rp-tooltip{display:inline-block}.rp-tooltip-rel{display:inline-block;position:relative}.rp-btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;line-height:1.5;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:6px 15px;font-size:12px;border-radius:4px;-webkit-transition:color .2s linear,background-color .2s linear,border .2s linear,-webkit-box-shadow .2s linear;transition:color .2s linear,background-color .2s linear,border .2s linear,-webkit-box-shadow .2s linear;transition:color .2s linear,background-color .2s linear,border .2s linear,box-shadow .2s linear;transition:color .2s linear,background-color .2s linear,border .2s linear,box-shadow .2s linear,-webkit-box-shadow .2s linear;color:#495060;background-color:#f7f7f7;border-color:#dddee1}.rp-btn>.rp-icon{line-height:1}.rp-btn,.rp-btn:active,.rp-btn:focus{outline:0}.rp-btn:not([disabled]):hover{text-decoration:none}.rp-btn:not([disabled]):active{outline:0}.rp-btn.disabled,.rp-btn[disabled]{cursor:not-allowed}.rp-btn.disabled>*,.rp-btn[disabled]>*{pointer-events:none}.rp-btn>a:only-child{color:currentColor}.rp-btn>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:0 0}.rp-btn:hover{color:#6d7380;background-color:#f9f9f9;border-color:#e4e5e7}.rp-btn:hover>a:only-child{color:currentColor}.rp-btn:hover>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:0 0}.rp-btn.active,.rp-btn:active{color:#454c5b;background-color:#ebebeb;border-color:#ebebeb}.rp-btn.active>a:only-child,.rp-btn:active>a:only-child{color:currentColor}.rp-btn.active>a:only-child:after,.rp-btn:active>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:0 0}.rp-btn.disabled,.rp-btn.disabled.active,.rp-btn.disabled:active,.rp-btn.disabled:focus,.rp-btn.disabled:hover,.rp-btn[disabled],.rp-btn[disabled].active,.rp-btn[disabled]:active,.rp-btn[disabled]:focus,.rp-btn[disabled]:hover,fieldset[disabled] .rp-btn,fieldset[disabled] .rp-btn.active,fieldset[disabled] .rp-btn:active,fieldset[disabled] .rp-btn:focus,fieldset[disabled] .rp-btn:hover{color:#bbbec4;background-color:#f7f7f7;border-color:#dddee1}.rp-btn.disabled.active>a:only-child,.rp-btn.disabled:active>a:only-child,.rp-btn.disabled:focus>a:only-child,.rp-btn.disabled:hover>a:only-child,.rp-btn.disabled>a:only-child,.rp-btn[disabled].active>a:only-child,.rp-btn[disabled]:active>a:only-child,.rp-btn[disabled]:focus>a:only-child,.rp-btn[disabled]:hover>a:only-child,.rp-btn[disabled]>a:only-child,fieldset[disabled] .rp-btn.active>a:only-child,fieldset[disabled] .rp-btn:active>a:only-child,fieldset[disabled] .rp-btn:focus>a:only-child,fieldset[disabled] .rp-btn:hover>a:only-child,fieldset[disabled] .rp-btn>a:only-child{color:currentColor}.rp-btn.disabled.active>a:only-child:after,.rp-btn.disabled:active>a:only-child:after,.rp-btn.disabled:focus>a:only-child:after,.rp-btn.disabled:hover>a:only-child:after,.rp-btn.disabled>a:only-child:after,.rp-btn[disabled].active>a:only-child:after,.rp-btn[disabled]:active>a:only-child:after,.rp-btn[disabled]:focus>a:only-child:after,.rp-btn[disabled]:hover>a:only-child:after,.rp-btn[disabled]>a:only-child:after,fieldset[disabled] .rp-btn.active>a:only-child:after,fieldset[disabled] .rp-btn:active>a:only-child:after,fieldset[disabled] .rp-btn:focus>a:only-child:after,fieldset[disabled] .rp-btn:hover>a:only-child:after,fieldset[disabled] .rp-btn>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:0 0}.rp-btn:hover{color:#57a3f3;background-color:#fff;border-color:#57a3f3}.rp-btn:hover>a:only-child{color:currentColor}.rp-btn:hover>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:0 0}.rp-btn.active,.rp-btn:active{color:#2b85e4;background-color:#fff;border-color:#2b85e4}.rp-btn.active>a:only-child,.rp-btn:active>a:only-child{color:currentColor}.rp-btn.active>a:only-child:after,.rp-btn:active>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:0 0}.rp-btn:focus{-webkit-box-shadow:0 0 0 2px rgba(45,140,240,.2);box-shadow:0 0 0 2px rgba(45,140,240,.2)}.rp-btn-long{width:100%}.rp-btn>.rp-icon+span,.rp-btn>span+.rp-icon{margin-left:4px}.rp-table{width:inherit;max-height:280px;max-width:100%;overflow:auto;color:#495060;font-size:12px;background-color:#fff;-webkit-box-sizing:border-box;box-sizing:border-box}.rp-table:before{content:"";width:100%;height:1px;position:absolute;left:0;bottom:0;background-color:#dddee1;z-index:1}.rp-table:after{content:"";width:1px;height:100%;position:absolute;top:0;right:0;background-color:#dddee1;z-index:3}.rp-table-body{overflow:auto}.rp-table td,.rp-table th{min-width:0;height:48px;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:left;text-overflow:ellipsis;vertical-align:middle;border-bottom:1px solid #e9eaec}.rp-table th{height:40px;white-space:nowrap;overflow:hidden;background-color:#f8f8f9}.rp-table td{background-color:#fff;-webkit-transition:background-color .2s ease-in-out;transition:background-color .2s ease-in-out}//.rp-table-cell span{display:none}.rp-table-cell{display:inline-block;word-wrap:normal;vertical-align:middle}.rp-table-cell{padding-left:18px;padding-right:18px;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;-webkit-box-sizing:border-box;box-sizing:border-box}td.rp-table-column-center,th.rp-table-column-center{text-align:center}td.rp-table-column-right,th.rp-table-column-right{text-align:right}.rp-table table{table-layout:fixed;width: 100%;}.rp-btn-primary{color:#fff;background-color:#2d8cf0;border-color:#2d8cf0;margin:5px;}.rp-btn-primary>a:only-child{color:currentColor}.rp-btn-primary>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:0 0}.rp-btn-primary:hover{color:#fff;background-color:#57a3f3;border-color:#57a3f3}.rp-btn-primary:hover>a:only-child{color:currentColor}.rp-btn-primary:hover>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:0 0}.rp-btn-primary.active,.rp-btn-primary:active{color:#f2f2f2;background-color:#2b85e4;border-color:#2b85e4}.rp-btn-primary.active>a:only-child,.rp-btn-primary:active>a:only-child{color:currentColor}.rp-btn-primary.active>a:only-child:after,.rp-btn-primary:active>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:0 0}.rp-btn-primary.disabled,.rp-btn-primary.disabled.active,.rp-btn-primary.disabled:active,.rp-btn-primary.disabled:focus,.rp-btn-primary.disabled:hover,.rp-btn-primary[disabled],.rp-btn-primary[disabled].active,.rp-btn-primary[disabled]:active,.rp-btn-primary[disabled]:focus,.rp-btn-primary[disabled]:hover,fieldset[disabled] .rp-btn-primary,fieldset[disabled] .rp-btn-primary.active,fieldset[disabled] .rp-btn-primary:active,fieldset[disabled] .rp-btn-primary:focus,fieldset[disabled] .rp-btn-primary:hover{color:#bbbec4;background-color:#f7f7f7;border-color:#dddee1}.rp-btn-primary.disabled.active>a:only-child,.rp-btn-primary.disabled:active>a:only-child,.rp-btn-primary.disabled:focus>a:only-child,.rp-btn-primary.disabled:hover>a:only-child,.rp-btn-primary.disabled>a:only-child,.rp-btn-primary[disabled].active>a:only-child,.rp-btn-primary[disabled]:active>a:only-child,.rp-btn-primary[disabled]:focus>a:only-child,.rp-btn-primary[disabled]:hover>a:only-child,.rp-btn-primary[disabled]>a:only-child,fieldset[disabled] .rp-btn-primary.active>a:only-child,fieldset[disabled] .rp-btn-primary:active>a:only-child,fieldset[disabled] .rp-btn-primary:focus>a:only-child,fieldset[disabled] .rp-btn-primary:hover>a:only-child,fieldset[disabled] .rp-btn-primary>a:only-child{color:currentColor}.rp-btn-primary.disabled.active>a:only-child:after,.rp-btn-primary.disabled:active>a:only-child:after,.rp-btn-primary.disabled:focus>a:only-child:after,.rp-btn-primary.disabled:hover>a:only-child:after,.rp-btn-primary.disabled>a:only-child:after,.rp-btn-primary[disabled].active>a:only-child:after,.rp-btn-primary[disabled]:active>a:only-child:after,.rp-btn-primary[disabled]:focus>a:only-child:after,.rp-btn-primary[disabled]:hover>a:only-child:after,.rp-btn-primary[disabled]>a:only-child:after,fieldset[disabled] .rp-btn-primary.active>a:only-child:after,fieldset[disabled] .rp-btn-primary:active>a:only-child:after,fieldset[disabled] .rp-btn-primary:focus>a:only-child:after,fieldset[disabled] .rp-btn-primary:hover>a:only-child:after,fieldset[disabled] .rp-btn-primary>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:0 0}.rp-btn-primary.active,.rp-btn-primary:active,.rp-btn-primary:hover{color:#fff}.rp-btn-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(45,140,240,.2);box-shadow:0 0 0 2px rgba(45,140,240,.2)}.rp-btn-group:not(.rp-btn-group-vertical) .rp-btn-primary:not(:first-child):not(:last-child){border-right-color:#2b85e4;border-left-color:#2b85e4}.rp-btn-group:not(.rp-btn-group-vertical) .rp-btn-primary:first-child:not(:last-child){border-right-color:#2b85e4}.rp-btn-group:not(.rp-btn-group-vertical) .rp-btn-primary:first-child:not(:last-child)[disabled]{border-right-color:#dddee1}.rp-btn-group:not(.rp-btn-group-vertical) .rp-btn-primary+.rp-btn,.rp-btn-group:not(.rp-btn-group-vertical) .rp-btn-primary:last-child:not(:first-child){border-left-color:#2b85e4}.rp-btn-group:not(.rp-btn-group-vertical) .rp-btn-primary+.rp-btn[disabled],.rp-btn-group:not(.rp-btn-group-vertical) .rp-btn-primary:last-child:not(:first-child)[disabled]{border-left-color:#dddee1}.rp-btn-group-vertical .rp-btn-primary:not(:first-child):not(:last-child){border-top-color:#2b85e4;border-bottom-color:#2b85e4}.rp-btn-group-vertical .rp-btn-primary:first-child:not(:last-child){border-bottom-color:#2b85e4}.rp-btn-group-vertical .rp-btn-primary:first-child:not(:last-child)[disabled]{border-top-color:#dddee1}.rp-btn-group-vertical .rp-btn-primary+.rp-btn,.rp-btn-group-vertical .rp-btn-primary:last-child:not(:first-child){border-top-color:#2b85e4}.rp-btn-group-vertical .rp-btn-primary+.rp-btn[disabled],.rp-btn-group-vertical .rp-btn-primary:last-child:not(:first-child)[disabled]{border-bottom-color:#dddee1}#card-tips{margin-top: 5px;}.rp-btn-small {padding: 2px 7px;font-size: 12px;border-radius: 3px;';