From 643e20a2d84d2ceeb146bdc883cc847920df5180 Mon Sep 17 00:00:00 2001 From: Zixaphir Date: Thu, 18 Apr 2013 01:15:50 -0700 Subject: [PATCH 01/15] I kinda-sorta into quote threading. Unread count is completely broken with this, so I'm keeping it in its own branch until I fix it. Also code is a mess. --- builds/4chan-X.js | 342 +++++++++++++++++++++-- builds/4chan-X.user.js | 342 +++++++++++++++++++++-- builds/crx/script.js | 340 ++++++++++++++++++++-- src/code/config.coffee | 4 + src/code/main.coffee | 1 + src/code/monitoring/threadupdater.coffee | 12 +- src/code/monitoring/unread.coffee | 39 ++- src/code/quoting/quotethreading.coffee | 139 +++++++++ src/css/style.css | 6 + src/lib/$.coffee | 16 +- src/lib/classes.coffee | 3 +- src/lib/randomaccesslist.class | 50 ++++ 12 files changed, 1197 insertions(+), 97 deletions(-) create mode 100644 src/code/quoting/quotethreading.coffee create mode 100644 src/lib/randomaccesslist.class diff --git a/builds/4chan-X.js b/builds/4chan-X.js index 6d258803c..1d4bc3ff0 100644 --- a/builds/4chan-X.js +++ b/builds/4chan-X.js @@ -20,7 +20,7 @@ // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAgMAAAAqbBEUAAAACVBMVEUAAGcAAABmzDNZt9VtAAAAAXRSTlMAQObYZgAAAHFJREFUKFOt0LENACEIBdBv4Qju4wgWanEj3D6OcIVMKaitYHEU/jwTCQj8W75kiVCSBvdQ5/AvfVHBin11BgdRq3ysBgfwBDRrj3MCIA+oAQaku/Q1cNctrAmyDl577tOThYt/Y1RBM4DgOHzM0HFTAyLukH/cmRnqAAAAAElFTkSuQmCC // ==/UserScript== -/* 4chan X - Version 3.1.4 - 2013-04-16 +/* 4chan X - Version 3.1.4 - 2013-04-18 * https://4chan-x.just-believe.in/ * * Copyright (c) 2009-2011 James Campos @@ -43,7 +43,7 @@ */ (function() { - var $, $$, Anonymize, ArchiveLink, Board, Build, CatalogLinks, Clone, Conf, Config, CustomCSS, DataBoard, DataBoards, DeleteLink, DownloadLink, ExpandComment, ExpandThread, Favicon, FileInfo, Filter, Fourchan, Get, Header, ImageExpand, ImageHover, ImageReplace, Keybinds, Linkify, Main, Menu, Nav, Notification, PSAHiding, Polyfill, Post, PostHiding, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteYou, Quotify, Recursive, Redirect, RelativeDates, Report, ReportLink, RevealSpoilers, Sauce, Settings, Thread, ThreadExcerpt, ThreadHiding, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, c, d, doc, g, + var $, $$, Anonymize, ArchiveLink, Board, Build, CatalogLinks, Clone, Conf, Config, CustomCSS, DataBoard, DataBoards, DeleteLink, DownloadLink, ExpandComment, ExpandThread, Favicon, FileInfo, Filter, Fourchan, Get, Header, ImageExpand, ImageHover, ImageReplace, Keybinds, Linkify, Main, Menu, Nav, Notification, PSAHiding, Polyfill, Post, PostHiding, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, RandomAccessList, Recursive, Redirect, RelativeDates, Report, ReportLink, RevealSpoilers, Sauce, Settings, Thread, ThreadExcerpt, ThreadHiding, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, c, d, doc, g, __slice = [].slice, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, @@ -130,6 +130,7 @@ 'Forward Hiding': [true, 'Hide original posts of inlined backlinks.'], 'Quote Previewing': [true, 'Show quoted post on hover.'], 'Quote Highlighting': [true, 'Highlight the previewed post.'], + 'Quote Threading': [true, ''], 'Resurrect Quotes': [true, 'Link dead quotes to the archives.'], 'Mark Quotes of You': [true, 'Add \'(You)\' to quotes linking to your posts.'], 'Mark OP Quotes': [true, 'Add \'(OP)\' to OP quotes.'], @@ -249,6 +250,9 @@ for (key in properties) { val = properties[key]; + if (!properties.hasOwnProperty(key)) { + continue; + } object[key] = val; } }; @@ -284,7 +288,6 @@ arg = args[_i]; this.push.apply(this, arg); } - return this; }, remove: function(object) { var index; @@ -416,10 +419,11 @@ return setTimeout($.asap, 25, test, cb); } }, - addStyle: function(css) { + addStyle: function(css, id) { var style; style = $.el('style', { + id: id, textContent: css }); $.asap((function() { @@ -622,6 +626,9 @@ size = unit > 1 ? Math.round(size * 100) / 100 : Math.round(size); return "" + size + " " + ['B', 'KB', 'MB', 'GB'][unit]; }, + minmax: function(value, min, max) { + return (value < min ? min : value > max ? max : value); + }, syncing: {}, sync: (function() { window.addEventListener('storage', function(e) { @@ -1439,6 +1446,79 @@ })(); + RandomAccessList = (function() { + function RandomAccessList() { + this.first = null; + this.last = null; + this.length = 0; + } + + RandomAccessList.prototype.push = function(id, post) { + var item, last; + + last = this.last; + this[id] = item = post; + item.prev = last; + item.next = null; + this.last = item; + if (last) { + last.next = item; + } else { + this.first = item; + } + return this.length++; + }; + + RandomAccessList.prototype.shift = function() { + return this.rm(this.first.ID); + }; + + RandomAccessList.prototype.after = function(root, item) { + var next; + + if (item.prev === root) { + return; + } + this.rmi(item); + next = root.next; + root.next = item; + item.prev = root; + item.next = next; + return next.prev = item; + }; + + RandomAccessList.prototype.rm = function(id) { + var item; + + item = this[id]; + if (!item) { + return; + } + delete this[id]; + this.length--; + return this.rmi(item); + }; + + RandomAccessList.prototype.rmi = function(item) { + var next, prev; + + prev = item.prev, next = item.next; + if (prev) { + prev.next = next; + } else { + this.first = next; + } + if (next) { + return next.prev = prev; + } else { + return this.last = prev; + } + }; + + return RandomAccessList; + + })(); + Get = { threadExcerpt: function(thread) { var OP, excerpt, _ref; @@ -6045,7 +6125,7 @@ return $.after(root, [$.tn(' '), icon]); }, parse: function(postObjects) { - var ID, OP, count, deletedFiles, deletedPosts, files, index, node, nodes, num, post, postObject, posts, scroll, _i, _len, _ref; + var ID, OP, count, deletedFiles, deletedPosts, files, index, key, node, num, post, postObject, posts, scroll, _i, _len, _ref; OP = postObjects[0]; Build.spoilerRange[ThreadUpdater.thread.board] = OP.custom_spoiler; @@ -6053,7 +6133,6 @@ ThreadUpdater.updateThreadStatus('Closed', OP); ThreadUpdater.thread.postLimit = !!OP.bumplimit; ThreadUpdater.thread.fileLimit = !!OP.imagelimit; - nodes = []; posts = []; index = []; files = []; @@ -6070,7 +6149,6 @@ } count++; node = Build.postFromObject(postObject, ThreadUpdater.thread.board); - nodes.push(node); posts.push(new Post(node, ThreadUpdater.thread, ThreadUpdater.thread.board)); } deletedPosts = []; @@ -6111,7 +6189,17 @@ ThreadUpdater.lastPost = posts[count - 1].ID; Main.callbackNodes(Post, posts); scroll = Conf['Auto Scroll'] && ThreadUpdater.scrollBG() && ThreadUpdater.root.getBoundingClientRect().bottom - doc.clientHeight < 25; - $.add(ThreadUpdater.root, nodes); + for (key in posts) { + post = posts[key]; + if (!posts.hasOwnProperty(key)) { + continue; + } + if (post.cb) { + post.cb.call(post); + } else { + $.add(ThreadUpdater.root, post.nodes.root); + } + } if (scroll) { if (Conf['Bottom Scroll']) { doc.scrollTop = d.body.clientHeight; @@ -6289,7 +6377,7 @@ this.hr = $.el('hr', { id: 'unread-line' }); - this.posts = []; + this.posts = new RandomAccessList; this.postsQuotingYou = []; return Thread.prototype.callbacks.push({ name: 'Unread', @@ -6373,14 +6461,16 @@ continue; } } - Unread.posts.push(post); + Unread.posts.push(ID, post); Unread.addPostQuotingYou(post); } if (Conf['Unread Line']) { - Unread.setLine(newPosts.contains(Unread.posts[0])); + Unread.setLine(newPosts.contains(Unread.posts.first)); + } + if (!Conf['Quote Threading']) { + Unread.read(); + return Unread.update(); } - Unread.read(); - return Unread.update(); }, addPostQuotingYou: function(post) { var quotelink, _i, _len, _ref; @@ -6404,14 +6494,15 @@ } }, readSinglePost: function(post) { - var i; + var ID, i; - if ((i = Unread.posts.indexOf(post)) === -1) { + ID = post.ID; + if (!Unread.posts[ID]) { return; } - Unread.posts.splice(i, 1); - if (i === 0) { - Unread.lastReadPost = post.ID; + Unread.posts.rm(ID); + if (!Unread.posts.first) { + Unread.lastReadPost = ID; Unread.saveLastReadPost(); } if ((i = Unread.postsQuotingYou.indexOf(post)) !== -1) { @@ -6419,6 +6510,20 @@ } return Unread.update(); }, + readRAL: function(ral) { + var item, items, post, _i, _len, _results; + + items = []; + for (post in ral) { + items.push(post.ID > Unread.lastReadPost); + } + _results = []; + for (_i = 0, _len = items.length; _i < _len; _i++) { + item = items[_i]; + _results.push(ral.rm(item)); + } + return _results; + }, readArray: function(arr) { var i, post, _i, _len; @@ -6431,26 +6536,29 @@ return arr.splice(0, i); }, read: function(e) { - var bottom, height, i, post, _i, _len, _ref; + var bottom, height, key, post, posts; if (d.hidden || !Unread.posts.length) { return; } + posts = Unread.posts; height = doc.clientHeight; - _ref = Unread.posts; - for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { - post = _ref[i]; + for (key in posts) { + post = posts[key]; + if (!posts.hasOwnProperty(key)) { + continue; + } bottom = post.nodes.root.getBoundingClientRect().bottom; if (bottom > height) { break; } + Unread.posts.rm(post); } - if (!i) { + if (!post) { return; } - Unread.lastReadPost = Unread.posts[i - 1].ID; + Unread.lastReadPost = post.ID; Unread.saveLastReadPost(); - Unread.posts.splice(0, i); Unread.readArray(Unread.postsQuotingYou); if (e) { return Unread.update(); @@ -8136,6 +8244,187 @@ } }; + /* + <3 aeosynth + */ + + + QuoteThreading = { + init: function() { + var input; + + if (!(Conf['Quote Threading'] && g.VIEW === 'thread')) { + return; + } + this.enabled = true; + this.controls = $.el('span', { + innerHTML: '' + }); + input = $('input', this.controls); + $.on(input, 'change', QuoteThreading.toggle); + $.event('AddMenuEntry', { + type: 'header', + el: this.controls, + order: 115 + }); + $.on(d, '4chanXInitFinished', this.setup); + return Post.prototype.callbacks.push({ + name: 'Quote Threading', + cb: this.node + }); + }, + setup: function() { + var ID, err, post, posts; + + $.off(d, '4chanXInitFinished', QuoteThreading.setup); + posts = g.posts; + Unread.read(); + Unread.update(); + for (ID in posts) { + post = posts[ID]; + if (post.cb) { + try { + post.cb.call(post); + } catch (_error) { + err = _error; + console.log(err); + } + } + } + return; + return QuoteThreading.hasRun = true; + }, + node: function() { + var ID, keys, post, posts, qid, quote, quotes, uniq, _i, _j, _len, _len1; + + if (this.isClone || !QuoteThreading.enabled || this.thread.OP === this) { + return; + } + quotes = this.quotes, ID = this.ID; + if (QuoteThreading.hasRun) { + posts = Unread.posts; + if (!(post = posts[ID]) || post.isHidden) { + return; + } + } else { + posts = g.posts; + if (!(post = posts["" + g.BOARD + "." + ID]) || post.isHidden) { + return; + } + } + uniq = {}; + if (QuoteThreading.hasRun) { + for (_i = 0, _len = quotes.length; _i < _len; _i++) { + quote = quotes[_i]; + qid = quote.slice(2); + if (!(qid < ID)) { + continue; + } + if (qid in posts) { + uniq[qid] = true; + } + } + } else { + for (_j = 0, _len1 = quotes.length; _j < _len1; _j++) { + quote = quotes[_j]; + qid = quote; + if (!(qid.slice(2) < ID)) { + continue; + } + if (qid in posts) { + uniq[qid.slice(2)] = true; + } + } + } + keys = Object.keys(uniq); + if (keys.length !== 1) { + return; + } + this.threaded = keys[0]; + return this.cb = QuoteThreading.nodeinsert; + }, + nodeinsert: function() { + var pEl, pid, post, posts, ppost, qid, qpost, qroot, threadContainer, unread; + + qid = this.threaded; + if (QuoteThreading.hasRun) { + posts = Unread.posts; + qpost = posts[qid]; + } else { + posts = g.posts; + unread = Unread.posts; + qpost = posts["" + g.BOARD + "." + qid]; + } + if (this.thread.OP === qpost) { + return; + } + qroot = qpost.nodes.root; + threadContainer = qroot.nextSibling; + if ((threadContainer != null ? threadContainer.className : void 0) !== 'threadContainer') { + threadContainer = $.el('div', { + className: 'threadContainer' + }); + $.after(qroot, threadContainer); + } + $.add(threadContainer, this.nodes.root); + pEl = $.x('preceding::div[contains(@class,"post reply")][1]/parent::div', this.nodes.root); + pid = pEl.id.slice(2); + if (QuoteThreading.hasRun) { + ppost = posts[pid]; + } else { + ppost = posts[pid]; + if (!((post = unread["" + g.BOARD + "." + this.id]) && (ppost = unread["" + g.BOARD + "." + pid]))) { + return; + } + } + return posts.after(ppost, this); + }, + toggle: function() { + var container, containers, node, nodes, replies, reply, thread, _i, _j, _k, _len, _len1, _len2, _results; + + thread = $('.thread'); + replies = $$('.thread > .replyContainer, .threadContainer > .replyContainer', thread); + QuoteThreading.enabled = this.checked; + if (this.checked) { + nodes = (function() { + var _i, _len, _results; + + _results = []; + for (_i = 0, _len = replies.length; _i < _len; _i++) { + reply = replies[_i]; + _results.push(Get.postFromNode(reply)); + } + return _results; + })(); + for (_i = 0, _len = nodes.length; _i < _len; _i++) { + node = nodes[_i]; + Unread.node.call(node); + } + _results = []; + for (_j = 0, _len1 = nodes.length; _j < _len1; _j++) { + node = nodes[_j]; + _results.push(QuoteThreading.node(node)); + } + return _results; + } else { + replies.sort(function(a, b) { + var aID, bID; + + aID = Number(a.id.slice(2)); + bID = Number(b.id.slice(2)); + return aID - bID; + }); + $.add(thread, replies); + containers = $$('.threadContainer', thread); + for (_k = 0, _len2 = containers.length; _k < _len2; _k++) { + container = containers[_k]; + $.rm(container); + } + return Unread.update(true); + } + } + }; + QuoteYou = { init: function() { if (g.VIEW === 'catalog' || !Conf['Mark Quotes of You'] || !Conf['Quick Reply']) { @@ -8958,6 +9247,7 @@ 'Thread Excerpt': ThreadExcerpt, 'Favicon': Favicon, 'Unread': Unread, + 'Quote Threading': QuoteThreading, 'Thread Stats': ThreadStats, 'Thread Updater': ThreadUpdater, 'Thread Watcher': ThreadWatcher, @@ -9232,7 +9522,7 @@ } return Main.thisPageIsLegit; }, - css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\n}\n.post {\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #boardNavDesktop,\n#watcher,\n#qr {\nposition: fixed;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #boardNavDesktop {\nz-index: 10;\n}\n/* Header */\n.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n#boardNavDesktop {\nfloat: left;\n}\n.fixed #boardNavDesktop {\nfloat: none;\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #boardNavDesktop {\ntop: 0;\n}\n.fixed.bottom #boardNavDesktop {\nbottom: 0;\n}\n#boardNavDesktop {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #boardNavDesktop {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #boardNavDesktop {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #boardNavDesktop .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #boardNavDesktop.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #boardNavDesktop.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #boardNavDesktop.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#toggle-header-bar {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#boardNavDesktop #toggle-header-bar {\ndisplay: none;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ndisplay: block;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ncursor: n-resize;\n}\n.fixed.top boardNavDesktop #toggle-header-bar {\ntop: 100%;\n}\n.fixed.bottom #boardNavDesktop #toggle-header-bar {\nbottom: 100%;\n}\n.fixed #boardNavDesktop #header-bar.autohide #toggle-header-bar {\ncursor: s-resize;\n}\n#boardNavDesktop a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n\n/* Notifications */\n#notifications {\nheight: 0;\ntext-align: center;\nposition: fixed;\ntop: 0;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.top:not(.autohide) ~ #notifications {\ntop: 2em;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 0;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 1.7em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 1.7em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\n}\n.persona input.field {\nwidth: 29.6%;\nmargin: 0 0 0 0.4%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 1px 0 0;\ntext-align: center;\nbackground-image: #fff;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice,\nbutton,\ninput:not([type=radio]) {\n-moz-box-sizing: border-box;\nfont-size: 12px;\nheight: 1.6em;\nmargin: 1px 0 0;\nvertical-align: bottom;\npadding: 0 1px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filerm {\nposition: absolute;\nright: 3px;\ntop: 2px;\nz-index: 2;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n" + css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\n}\n.post {\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #boardNavDesktop,\n#watcher,\n#qr {\nposition: fixed;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #boardNavDesktop {\nz-index: 10;\n}\n/* Header */\n.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n#boardNavDesktop {\nfloat: left;\n}\n.fixed #boardNavDesktop {\nfloat: none;\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #boardNavDesktop {\ntop: 0;\n}\n.fixed.bottom #boardNavDesktop {\nbottom: 0;\n}\n#boardNavDesktop {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #boardNavDesktop {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #boardNavDesktop {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #boardNavDesktop .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #boardNavDesktop.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #boardNavDesktop.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #boardNavDesktop.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#toggle-header-bar {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#boardNavDesktop #toggle-header-bar {\ndisplay: none;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ndisplay: block;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ncursor: n-resize;\n}\n.fixed.top boardNavDesktop #toggle-header-bar {\ntop: 100%;\n}\n.fixed.bottom #boardNavDesktop #toggle-header-bar {\nbottom: 100%;\n}\n.fixed #boardNavDesktop #header-bar.autohide #toggle-header-bar {\ncursor: s-resize;\n}\n#boardNavDesktop a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n\n/* Notifications */\n#notifications {\nheight: 0;\ntext-align: center;\nposition: fixed;\ntop: 0;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.top:not(.autohide) ~ #notifications {\ntop: 2em;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 0;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 1.7em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 1.7em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* Quote Threading */\n.threadContainer {\nmargin-left: 20px;\nborder-left: 1px solid black;\n}\n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\n}\n.persona input.field {\nwidth: 29.6%;\nmargin: 0 0 0 0.4%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 1px 0 0;\ntext-align: center;\nbackground-image: #fff;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice,\nbutton,\ninput:not([type=radio]) {\n-moz-box-sizing: border-box;\nfont-size: 12px;\nheight: 1.6em;\nmargin: 1px 0 0;\nvertical-align: bottom;\npadding: 0 1px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filerm {\nposition: absolute;\nright: 3px;\ntop: 2px;\nz-index: 2;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n" }; Main.init(); diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js index ee631a9b7..ac767372b 100644 --- a/builds/4chan-X.user.js +++ b/builds/4chan-X.user.js @@ -20,7 +20,7 @@ // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAgMAAAAqbBEUAAAACVBMVEUAAGcAAABmzDNZt9VtAAAAAXRSTlMAQObYZgAAAHFJREFUKFOt0LENACEIBdBv4Qju4wgWanEj3D6OcIVMKaitYHEU/jwTCQj8W75kiVCSBvdQ5/AvfVHBin11BgdRq3ysBgfwBDRrj3MCIA+oAQaku/Q1cNctrAmyDl577tOThYt/Y1RBM4DgOHzM0HFTAyLukH/cmRnqAAAAAElFTkSuQmCC // ==/UserScript== -/* 4chan X - Version 3.1.4 - 2013-04-16 +/* 4chan X - Version 3.1.4 - 2013-04-18 * https://4chan-x.just-believe.in/ * * Copyright (c) 2009-2011 James Campos @@ -43,7 +43,7 @@ */ (function() { - var $, $$, Anonymize, ArchiveLink, Board, Build, CatalogLinks, Clone, Conf, Config, CustomCSS, DataBoard, DataBoards, DeleteLink, DownloadLink, ExpandComment, ExpandThread, Favicon, FileInfo, Filter, Fourchan, Get, Header, ImageExpand, ImageHover, ImageReplace, Keybinds, Linkify, Main, Menu, Nav, Notification, PSAHiding, Polyfill, Post, PostHiding, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteYou, Quotify, Recursive, Redirect, RelativeDates, Report, ReportLink, RevealSpoilers, Sauce, Settings, Thread, ThreadExcerpt, ThreadHiding, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, c, d, doc, g, + var $, $$, Anonymize, ArchiveLink, Board, Build, CatalogLinks, Clone, Conf, Config, CustomCSS, DataBoard, DataBoards, DeleteLink, DownloadLink, ExpandComment, ExpandThread, Favicon, FileInfo, Filter, Fourchan, Get, Header, ImageExpand, ImageHover, ImageReplace, Keybinds, Linkify, Main, Menu, Nav, Notification, PSAHiding, Polyfill, Post, PostHiding, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, RandomAccessList, Recursive, Redirect, RelativeDates, Report, ReportLink, RevealSpoilers, Sauce, Settings, Thread, ThreadExcerpt, ThreadHiding, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, c, d, doc, g, __slice = [].slice, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, @@ -131,6 +131,7 @@ 'Forward Hiding': [true, 'Hide original posts of inlined backlinks.'], 'Quote Previewing': [true, 'Show quoted post on hover.'], 'Quote Highlighting': [true, 'Highlight the previewed post.'], + 'Quote Threading': [true, ''], 'Resurrect Quotes': [true, 'Link dead quotes to the archives.'], 'Mark Quotes of You': [true, 'Add \'(You)\' to quotes linking to your posts.'], 'Mark OP Quotes': [true, 'Add \'(OP)\' to OP quotes.'], @@ -246,6 +247,9 @@ for (key in properties) { val = properties[key]; + if (!properties.hasOwnProperty(key)) { + continue; + } object[key] = val; } }; @@ -281,7 +285,6 @@ arg = args[_i]; this.push.apply(this, arg); } - return this; }, remove: function(object) { var index; @@ -413,10 +416,11 @@ return setTimeout($.asap, 25, test, cb); } }, - addStyle: function(css) { + addStyle: function(css, id) { var style; style = $.el('style', { + id: id, textContent: css }); $.asap((function() { @@ -619,6 +623,9 @@ size = unit > 1 ? Math.round(size * 100) / 100 : Math.round(size); return "" + size + " " + ['B', 'KB', 'MB', 'GB'][unit]; }, + minmax: function(value, min, max) { + return (value < min ? min : value > max ? max : value); + }, syncing: {}, sync: (function() { window.addEventListener('storage', function(e) { @@ -1430,6 +1437,79 @@ })(); + RandomAccessList = (function() { + function RandomAccessList() { + this.first = null; + this.last = null; + this.length = 0; + } + + RandomAccessList.prototype.push = function(id, post) { + var item, last; + + last = this.last; + this[id] = item = post; + item.prev = last; + item.next = null; + this.last = item; + if (last) { + last.next = item; + } else { + this.first = item; + } + return this.length++; + }; + + RandomAccessList.prototype.shift = function() { + return this.rm(this.first.ID); + }; + + RandomAccessList.prototype.after = function(root, item) { + var next; + + if (item.prev === root) { + return; + } + this.rmi(item); + next = root.next; + root.next = item; + item.prev = root; + item.next = next; + return next.prev = item; + }; + + RandomAccessList.prototype.rm = function(id) { + var item; + + item = this[id]; + if (!item) { + return; + } + delete this[id]; + this.length--; + return this.rmi(item); + }; + + RandomAccessList.prototype.rmi = function(item) { + var next, prev; + + prev = item.prev, next = item.next; + if (prev) { + prev.next = next; + } else { + this.first = next; + } + if (next) { + return next.prev = prev; + } else { + return this.last = prev; + } + }; + + return RandomAccessList; + + })(); + Get = { threadExcerpt: function(thread) { var OP, excerpt, _ref; @@ -6037,7 +6117,7 @@ return $.after(root, [$.tn(' '), icon]); }, parse: function(postObjects) { - var ID, OP, count, deletedFiles, deletedPosts, files, index, node, nodes, num, post, postObject, posts, scroll, _i, _len, _ref; + var ID, OP, count, deletedFiles, deletedPosts, files, index, key, node, num, post, postObject, posts, scroll, _i, _len, _ref; OP = postObjects[0]; Build.spoilerRange[ThreadUpdater.thread.board] = OP.custom_spoiler; @@ -6045,7 +6125,6 @@ ThreadUpdater.updateThreadStatus('Closed', OP); ThreadUpdater.thread.postLimit = !!OP.bumplimit; ThreadUpdater.thread.fileLimit = !!OP.imagelimit; - nodes = []; posts = []; index = []; files = []; @@ -6062,7 +6141,6 @@ } count++; node = Build.postFromObject(postObject, ThreadUpdater.thread.board); - nodes.push(node); posts.push(new Post(node, ThreadUpdater.thread, ThreadUpdater.thread.board)); } deletedPosts = []; @@ -6103,7 +6181,17 @@ ThreadUpdater.lastPost = posts[count - 1].ID; Main.callbackNodes(Post, posts); scroll = Conf['Auto Scroll'] && ThreadUpdater.scrollBG() && ThreadUpdater.root.getBoundingClientRect().bottom - doc.clientHeight < 25; - $.add(ThreadUpdater.root, nodes); + for (key in posts) { + post = posts[key]; + if (!posts.hasOwnProperty(key)) { + continue; + } + if (post.cb) { + post.cb.call(post); + } else { + $.add(ThreadUpdater.root, post.nodes.root); + } + } if (scroll) { if (Conf['Bottom Scroll']) { doc.scrollTop = d.body.clientHeight; @@ -6281,7 +6369,7 @@ this.hr = $.el('hr', { id: 'unread-line' }); - this.posts = []; + this.posts = new RandomAccessList; this.postsQuotingYou = []; return Thread.prototype.callbacks.push({ name: 'Unread', @@ -6365,14 +6453,16 @@ continue; } } - Unread.posts.push(post); + Unread.posts.push(ID, post); Unread.addPostQuotingYou(post); } if (Conf['Unread Line']) { - Unread.setLine(newPosts.contains(Unread.posts[0])); + Unread.setLine(newPosts.contains(Unread.posts.first)); + } + if (!Conf['Quote Threading']) { + Unread.read(); + return Unread.update(); } - Unread.read(); - return Unread.update(); }, addPostQuotingYou: function(post) { var quotelink, _i, _len, _ref; @@ -6396,14 +6486,15 @@ } }, readSinglePost: function(post) { - var i; + var ID, i; - if ((i = Unread.posts.indexOf(post)) === -1) { + ID = post.ID; + if (!Unread.posts[ID]) { return; } - Unread.posts.splice(i, 1); - if (i === 0) { - Unread.lastReadPost = post.ID; + Unread.posts.rm(ID); + if (!Unread.posts.first) { + Unread.lastReadPost = ID; Unread.saveLastReadPost(); } if ((i = Unread.postsQuotingYou.indexOf(post)) !== -1) { @@ -6411,6 +6502,20 @@ } return Unread.update(); }, + readRAL: function(ral) { + var item, items, post, _i, _len, _results; + + items = []; + for (post in ral) { + items.push(post.ID > Unread.lastReadPost); + } + _results = []; + for (_i = 0, _len = items.length; _i < _len; _i++) { + item = items[_i]; + _results.push(ral.rm(item)); + } + return _results; + }, readArray: function(arr) { var i, post, _i, _len; @@ -6423,26 +6528,29 @@ return arr.splice(0, i); }, read: function(e) { - var bottom, height, i, post, _i, _len, _ref; + var bottom, height, key, post, posts; if (d.hidden || !Unread.posts.length) { return; } + posts = Unread.posts; height = doc.clientHeight; - _ref = Unread.posts; - for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { - post = _ref[i]; + for (key in posts) { + post = posts[key]; + if (!posts.hasOwnProperty(key)) { + continue; + } bottom = post.nodes.root.getBoundingClientRect().bottom; if (bottom > height) { break; } + Unread.posts.rm(post); } - if (!i) { + if (!post) { return; } - Unread.lastReadPost = Unread.posts[i - 1].ID; + Unread.lastReadPost = post.ID; Unread.saveLastReadPost(); - Unread.posts.splice(0, i); Unread.readArray(Unread.postsQuotingYou); if (e) { return Unread.update(); @@ -8153,6 +8261,187 @@ } }; + /* + <3 aeosynth + */ + + + QuoteThreading = { + init: function() { + var input; + + if (!(Conf['Quote Threading'] && g.VIEW === 'thread')) { + return; + } + this.enabled = true; + this.controls = $.el('span', { + innerHTML: '' + }); + input = $('input', this.controls); + $.on(input, 'change', QuoteThreading.toggle); + $.event('AddMenuEntry', { + type: 'header', + el: this.controls, + order: 115 + }); + $.on(d, '4chanXInitFinished', this.setup); + return Post.prototype.callbacks.push({ + name: 'Quote Threading', + cb: this.node + }); + }, + setup: function() { + var ID, err, post, posts; + + $.off(d, '4chanXInitFinished', QuoteThreading.setup); + posts = g.posts; + Unread.read(); + Unread.update(); + for (ID in posts) { + post = posts[ID]; + if (post.cb) { + try { + post.cb.call(post); + } catch (_error) { + err = _error; + console.log(err); + } + } + } + return; + return QuoteThreading.hasRun = true; + }, + node: function() { + var ID, keys, post, posts, qid, quote, quotes, uniq, _i, _j, _len, _len1; + + if (this.isClone || !QuoteThreading.enabled || this.thread.OP === this) { + return; + } + quotes = this.quotes, ID = this.ID; + if (QuoteThreading.hasRun) { + posts = Unread.posts; + if (!(post = posts[ID]) || post.isHidden) { + return; + } + } else { + posts = g.posts; + if (!(post = posts["" + g.BOARD + "." + ID]) || post.isHidden) { + return; + } + } + uniq = {}; + if (QuoteThreading.hasRun) { + for (_i = 0, _len = quotes.length; _i < _len; _i++) { + quote = quotes[_i]; + qid = quote.slice(2); + if (!(qid < ID)) { + continue; + } + if (qid in posts) { + uniq[qid] = true; + } + } + } else { + for (_j = 0, _len1 = quotes.length; _j < _len1; _j++) { + quote = quotes[_j]; + qid = quote; + if (!(qid.slice(2) < ID)) { + continue; + } + if (qid in posts) { + uniq[qid.slice(2)] = true; + } + } + } + keys = Object.keys(uniq); + if (keys.length !== 1) { + return; + } + this.threaded = keys[0]; + return this.cb = QuoteThreading.nodeinsert; + }, + nodeinsert: function() { + var pEl, pid, post, posts, ppost, qid, qpost, qroot, threadContainer, unread; + + qid = this.threaded; + if (QuoteThreading.hasRun) { + posts = Unread.posts; + qpost = posts[qid]; + } else { + posts = g.posts; + unread = Unread.posts; + qpost = posts["" + g.BOARD + "." + qid]; + } + if (this.thread.OP === qpost) { + return; + } + qroot = qpost.nodes.root; + threadContainer = qroot.nextSibling; + if ((threadContainer != null ? threadContainer.className : void 0) !== 'threadContainer') { + threadContainer = $.el('div', { + className: 'threadContainer' + }); + $.after(qroot, threadContainer); + } + $.add(threadContainer, this.nodes.root); + pEl = $.x('preceding::div[contains(@class,"post reply")][1]/parent::div', this.nodes.root); + pid = pEl.id.slice(2); + if (QuoteThreading.hasRun) { + ppost = posts[pid]; + } else { + ppost = posts[pid]; + if (!((post = unread["" + g.BOARD + "." + this.id]) && (ppost = unread["" + g.BOARD + "." + pid]))) { + return; + } + } + return posts.after(ppost, this); + }, + toggle: function() { + var container, containers, node, nodes, replies, reply, thread, _i, _j, _k, _len, _len1, _len2, _results; + + thread = $('.thread'); + replies = $$('.thread > .replyContainer, .threadContainer > .replyContainer', thread); + QuoteThreading.enabled = this.checked; + if (this.checked) { + nodes = (function() { + var _i, _len, _results; + + _results = []; + for (_i = 0, _len = replies.length; _i < _len; _i++) { + reply = replies[_i]; + _results.push(Get.postFromNode(reply)); + } + return _results; + })(); + for (_i = 0, _len = nodes.length; _i < _len; _i++) { + node = nodes[_i]; + Unread.node.call(node); + } + _results = []; + for (_j = 0, _len1 = nodes.length; _j < _len1; _j++) { + node = nodes[_j]; + _results.push(QuoteThreading.node(node)); + } + return _results; + } else { + replies.sort(function(a, b) { + var aID, bID; + + aID = Number(a.id.slice(2)); + bID = Number(b.id.slice(2)); + return aID - bID; + }); + $.add(thread, replies); + containers = $$('.threadContainer', thread); + for (_k = 0, _len2 = containers.length; _k < _len2; _k++) { + container = containers[_k]; + $.rm(container); + } + return Unread.update(true); + } + } + }; + QuoteYou = { init: function() { if (g.VIEW === 'catalog' || !Conf['Mark Quotes of You'] || !Conf['Quick Reply']) { @@ -8977,6 +9266,7 @@ 'Thread Excerpt': ThreadExcerpt, 'Favicon': Favicon, 'Unread': Unread, + 'Quote Threading': QuoteThreading, 'Thread Stats': ThreadStats, 'Thread Updater': ThreadUpdater, 'Thread Watcher': ThreadWatcher, @@ -9251,7 +9541,7 @@ } return Main.thisPageIsLegit; }, - css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\n}\n.post {\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #boardNavDesktop,\n#watcher,\n#qr {\nposition: fixed;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #boardNavDesktop {\nz-index: 10;\n}\n/* Header */\n.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n#boardNavDesktop {\nfloat: left;\n}\n.fixed #boardNavDesktop {\nfloat: none;\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #boardNavDesktop {\ntop: 0;\n}\n.fixed.bottom #boardNavDesktop {\nbottom: 0;\n}\n#boardNavDesktop {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #boardNavDesktop {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #boardNavDesktop {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #boardNavDesktop .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #boardNavDesktop.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #boardNavDesktop.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #boardNavDesktop.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#toggle-header-bar {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#boardNavDesktop #toggle-header-bar {\ndisplay: none;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ndisplay: block;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ncursor: n-resize;\n}\n.fixed.top boardNavDesktop #toggle-header-bar {\ntop: 100%;\n}\n.fixed.bottom #boardNavDesktop #toggle-header-bar {\nbottom: 100%;\n}\n.fixed #boardNavDesktop #header-bar.autohide #toggle-header-bar {\ncursor: s-resize;\n}\n#boardNavDesktop a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n\n/* Notifications */\n#notifications {\nheight: 0;\ntext-align: center;\nposition: fixed;\ntop: 0;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.top:not(.autohide) ~ #notifications {\ntop: 2em;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 0;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 1.7em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 1.7em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\n}\n.persona input.field {\nwidth: 29.6%;\nmargin: 0 0 0 0.4%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 1px 0 0;\ntext-align: center;\nbackground-image: #fff;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice,\nbutton,\ninput:not([type=radio]) {\n-moz-box-sizing: border-box;\nfont-size: 12px;\nheight: 1.6em;\nmargin: 1px 0 0;\nvertical-align: bottom;\npadding: 0 1px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filerm {\nposition: absolute;\nright: 3px;\ntop: 2px;\nz-index: 2;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n" + css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\n}\n.post {\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #boardNavDesktop,\n#watcher,\n#qr {\nposition: fixed;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #boardNavDesktop {\nz-index: 10;\n}\n/* Header */\n.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n#boardNavDesktop {\nfloat: left;\n}\n.fixed #boardNavDesktop {\nfloat: none;\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #boardNavDesktop {\ntop: 0;\n}\n.fixed.bottom #boardNavDesktop {\nbottom: 0;\n}\n#boardNavDesktop {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #boardNavDesktop {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #boardNavDesktop {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #boardNavDesktop .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #boardNavDesktop.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #boardNavDesktop.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #boardNavDesktop.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#toggle-header-bar {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#boardNavDesktop #toggle-header-bar {\ndisplay: none;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ndisplay: block;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ncursor: n-resize;\n}\n.fixed.top boardNavDesktop #toggle-header-bar {\ntop: 100%;\n}\n.fixed.bottom #boardNavDesktop #toggle-header-bar {\nbottom: 100%;\n}\n.fixed #boardNavDesktop #header-bar.autohide #toggle-header-bar {\ncursor: s-resize;\n}\n#boardNavDesktop a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n\n/* Notifications */\n#notifications {\nheight: 0;\ntext-align: center;\nposition: fixed;\ntop: 0;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.top:not(.autohide) ~ #notifications {\ntop: 2em;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 0;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 1.7em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 1.7em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* Quote Threading */\n.threadContainer {\nmargin-left: 20px;\nborder-left: 1px solid black;\n}\n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\n}\n.persona input.field {\nwidth: 29.6%;\nmargin: 0 0 0 0.4%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 1px 0 0;\ntext-align: center;\nbackground-image: #fff;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice,\nbutton,\ninput:not([type=radio]) {\n-moz-box-sizing: border-box;\nfont-size: 12px;\nheight: 1.6em;\nmargin: 1px 0 0;\nvertical-align: bottom;\npadding: 0 1px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filerm {\nposition: absolute;\nright: 3px;\ntop: 2px;\nz-index: 2;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n" }; Main.init(); diff --git a/builds/crx/script.js b/builds/crx/script.js index 615b6a560..dc07fa8ab 100644 --- a/builds/crx/script.js +++ b/builds/crx/script.js @@ -1,5 +1,5 @@ (function() { - var $, $$, Anonymize, ArchiveLink, Board, Build, CatalogLinks, Clone, Conf, Config, CustomCSS, DataBoard, DataBoards, DeleteLink, DownloadLink, ExpandComment, ExpandThread, Favicon, FileInfo, Filter, Fourchan, Get, Header, ImageExpand, ImageHover, ImageReplace, Keybinds, Linkify, Main, Menu, Nav, Notification, PSAHiding, Polyfill, Post, PostHiding, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteYou, Quotify, Recursive, Redirect, RelativeDates, Report, ReportLink, RevealSpoilers, Sauce, Settings, Thread, ThreadExcerpt, ThreadHiding, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, c, d, doc, g, + var $, $$, Anonymize, ArchiveLink, Board, Build, CatalogLinks, Clone, Conf, Config, CustomCSS, DataBoard, DataBoards, DeleteLink, DownloadLink, ExpandComment, ExpandThread, Favicon, FileInfo, Filter, Fourchan, Get, Header, ImageExpand, ImageHover, ImageReplace, Keybinds, Linkify, Main, Menu, Nav, Notification, PSAHiding, Polyfill, Post, PostHiding, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, RandomAccessList, Recursive, Redirect, RelativeDates, Report, ReportLink, RevealSpoilers, Sauce, Settings, Thread, ThreadExcerpt, ThreadHiding, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, c, d, doc, g, __slice = [].slice, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, @@ -86,6 +86,7 @@ 'Forward Hiding': [true, 'Hide original posts of inlined backlinks.'], 'Quote Previewing': [true, 'Show quoted post on hover.'], 'Quote Highlighting': [true, 'Highlight the previewed post.'], + 'Quote Threading': [true, ''], 'Resurrect Quotes': [true, 'Link dead quotes to the archives.'], 'Mark Quotes of You': [true, 'Add \'(You)\' to quotes linking to your posts.'], 'Mark OP Quotes': [true, 'Add \'(OP)\' to OP quotes.'], @@ -201,6 +202,9 @@ for (key in properties) { val = properties[key]; + if (!properties.hasOwnProperty(key)) { + continue; + } object[key] = val; } }; @@ -236,7 +240,6 @@ arg = args[_i]; this.push.apply(this, arg); } - return this; }, remove: function(object) { var index; @@ -368,10 +371,11 @@ return setTimeout($.asap, 25, test, cb); } }, - addStyle: function(css) { + addStyle: function(css, id) { var style; style = $.el('style', { + id: id, textContent: css }); $.asap((function() { @@ -574,6 +578,9 @@ size = unit > 1 ? Math.round(size * 100) / 100 : Math.round(size); return "" + size + " " + ['B', 'KB', 'MB', 'GB'][unit]; }, + minmax: function(value, min, max) { + return (value < min ? min : value > max ? max : value); + }, syncing: {}, sync: (function() { chrome.storage.onChanged.addListener(function(changes) { @@ -1352,6 +1359,79 @@ })(); + RandomAccessList = (function() { + function RandomAccessList() { + this.first = null; + this.last = null; + this.length = 0; + } + + RandomAccessList.prototype.push = function(id, post) { + var item, last; + + last = this.last; + this[id] = item = post; + item.prev = last; + item.next = null; + this.last = item; + if (last) { + last.next = item; + } else { + this.first = item; + } + return this.length++; + }; + + RandomAccessList.prototype.shift = function() { + return this.rm(this.first.ID); + }; + + RandomAccessList.prototype.after = function(root, item) { + var next; + + if (item.prev === root) { + return; + } + this.rmi(item); + next = root.next; + root.next = item; + item.prev = root; + item.next = next; + return next.prev = item; + }; + + RandomAccessList.prototype.rm = function(id) { + var item; + + item = this[id]; + if (!item) { + return; + } + delete this[id]; + this.length--; + return this.rmi(item); + }; + + RandomAccessList.prototype.rmi = function(item) { + var next, prev; + + prev = item.prev, next = item.next; + if (prev) { + prev.next = next; + } else { + this.first = next; + } + if (next) { + return next.prev = prev; + } else { + return this.last = prev; + } + }; + + return RandomAccessList; + + })(); + Get = { threadExcerpt: function(thread) { var OP, excerpt, _ref; @@ -5958,7 +6038,7 @@ return $.after(root, [$.tn(' '), icon]); }, parse: function(postObjects) { - var ID, OP, count, deletedFiles, deletedPosts, files, index, node, nodes, num, post, postObject, posts, scroll, _i, _len, _ref; + var ID, OP, count, deletedFiles, deletedPosts, files, index, key, node, num, post, postObject, posts, scroll, _i, _len, _ref; OP = postObjects[0]; Build.spoilerRange[ThreadUpdater.thread.board] = OP.custom_spoiler; @@ -5966,7 +6046,6 @@ ThreadUpdater.updateThreadStatus('Closed', OP); ThreadUpdater.thread.postLimit = !!OP.bumplimit; ThreadUpdater.thread.fileLimit = !!OP.imagelimit; - nodes = []; posts = []; index = []; files = []; @@ -5983,7 +6062,6 @@ } count++; node = Build.postFromObject(postObject, ThreadUpdater.thread.board); - nodes.push(node); posts.push(new Post(node, ThreadUpdater.thread, ThreadUpdater.thread.board)); } deletedPosts = []; @@ -6024,7 +6102,17 @@ ThreadUpdater.lastPost = posts[count - 1].ID; Main.callbackNodes(Post, posts); scroll = Conf['Auto Scroll'] && ThreadUpdater.scrollBG() && ThreadUpdater.root.getBoundingClientRect().bottom - doc.clientHeight < 25; - $.add(ThreadUpdater.root, nodes); + for (key in posts) { + post = posts[key]; + if (!posts.hasOwnProperty(key)) { + continue; + } + if (post.cb) { + post.cb.call(post); + } else { + $.add(ThreadUpdater.root, post.nodes.root); + } + } if (scroll) { if (Conf['Bottom Scroll']) { d.body.scrollTop = d.body.clientHeight; @@ -6202,7 +6290,7 @@ this.hr = $.el('hr', { id: 'unread-line' }); - this.posts = []; + this.posts = new RandomAccessList; this.postsQuotingYou = []; return Thread.prototype.callbacks.push({ name: 'Unread', @@ -6286,14 +6374,16 @@ continue; } } - Unread.posts.push(post); + Unread.posts.push(ID, post); Unread.addPostQuotingYou(post); } if (Conf['Unread Line']) { - Unread.setLine(newPosts.contains(Unread.posts[0])); + Unread.setLine(newPosts.contains(Unread.posts.first)); + } + if (!Conf['Quote Threading']) { + Unread.read(); + return Unread.update(); } - Unread.read(); - return Unread.update(); }, addPostQuotingYou: function(post) { var quotelink, _i, _len, _ref; @@ -6317,14 +6407,15 @@ } }, readSinglePost: function(post) { - var i; + var ID, i; - if ((i = Unread.posts.indexOf(post)) === -1) { + ID = post.ID; + if (!Unread.posts[ID]) { return; } - Unread.posts.splice(i, 1); - if (i === 0) { - Unread.lastReadPost = post.ID; + Unread.posts.rm(ID); + if (!Unread.posts.first) { + Unread.lastReadPost = ID; Unread.saveLastReadPost(); } if ((i = Unread.postsQuotingYou.indexOf(post)) !== -1) { @@ -6332,6 +6423,20 @@ } return Unread.update(); }, + readRAL: function(ral) { + var item, items, post, _i, _len, _results; + + items = []; + for (post in ral) { + items.push(post.ID > Unread.lastReadPost); + } + _results = []; + for (_i = 0, _len = items.length; _i < _len; _i++) { + item = items[_i]; + _results.push(ral.rm(item)); + } + return _results; + }, readArray: function(arr) { var i, post, _i, _len; @@ -6344,26 +6449,29 @@ return arr.splice(0, i); }, read: function(e) { - var bottom, height, i, post, _i, _len, _ref; + var bottom, height, key, post, posts; if (d.hidden || !Unread.posts.length) { return; } + posts = Unread.posts; height = doc.clientHeight; - _ref = Unread.posts; - for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { - post = _ref[i]; + for (key in posts) { + post = posts[key]; + if (!posts.hasOwnProperty(key)) { + continue; + } bottom = post.nodes.root.getBoundingClientRect().bottom; if (bottom > height) { break; } + Unread.posts.rm(post); } - if (!i) { + if (!post) { return; } - Unread.lastReadPost = Unread.posts[i - 1].ID; + Unread.lastReadPost = post.ID; Unread.saveLastReadPost(); - Unread.posts.splice(0, i); Unread.readArray(Unread.postsQuotingYou); if (e) { return Unread.update(); @@ -8055,6 +8163,187 @@ } }; + /* + <3 aeosynth + */ + + + QuoteThreading = { + init: function() { + var input; + + if (!(Conf['Quote Threading'] && g.VIEW === 'thread')) { + return; + } + this.enabled = true; + this.controls = $.el('span', { + innerHTML: '' + }); + input = $('input', this.controls); + $.on(input, 'change', QuoteThreading.toggle); + $.event('AddMenuEntry', { + type: 'header', + el: this.controls, + order: 115 + }); + $.on(d, '4chanXInitFinished', this.setup); + return Post.prototype.callbacks.push({ + name: 'Quote Threading', + cb: this.node + }); + }, + setup: function() { + var ID, err, post, posts; + + $.off(d, '4chanXInitFinished', QuoteThreading.setup); + posts = g.posts; + Unread.read(); + Unread.update(); + for (ID in posts) { + post = posts[ID]; + if (post.cb) { + try { + post.cb.call(post); + } catch (_error) { + err = _error; + console.log(err); + } + } + } + return; + return QuoteThreading.hasRun = true; + }, + node: function() { + var ID, keys, post, posts, qid, quote, quotes, uniq, _i, _j, _len, _len1; + + if (this.isClone || !QuoteThreading.enabled || this.thread.OP === this) { + return; + } + quotes = this.quotes, ID = this.ID; + if (QuoteThreading.hasRun) { + posts = Unread.posts; + if (!(post = posts[ID]) || post.isHidden) { + return; + } + } else { + posts = g.posts; + if (!(post = posts["" + g.BOARD + "." + ID]) || post.isHidden) { + return; + } + } + uniq = {}; + if (QuoteThreading.hasRun) { + for (_i = 0, _len = quotes.length; _i < _len; _i++) { + quote = quotes[_i]; + qid = quote.slice(2); + if (!(qid < ID)) { + continue; + } + if (qid in posts) { + uniq[qid] = true; + } + } + } else { + for (_j = 0, _len1 = quotes.length; _j < _len1; _j++) { + quote = quotes[_j]; + qid = quote; + if (!(qid.slice(2) < ID)) { + continue; + } + if (qid in posts) { + uniq[qid.slice(2)] = true; + } + } + } + keys = Object.keys(uniq); + if (keys.length !== 1) { + return; + } + this.threaded = keys[0]; + return this.cb = QuoteThreading.nodeinsert; + }, + nodeinsert: function() { + var pEl, pid, post, posts, ppost, qid, qpost, qroot, threadContainer, unread; + + qid = this.threaded; + if (QuoteThreading.hasRun) { + posts = Unread.posts; + qpost = posts[qid]; + } else { + posts = g.posts; + unread = Unread.posts; + qpost = posts["" + g.BOARD + "." + qid]; + } + if (this.thread.OP === qpost) { + return; + } + qroot = qpost.nodes.root; + threadContainer = qroot.nextSibling; + if ((threadContainer != null ? threadContainer.className : void 0) !== 'threadContainer') { + threadContainer = $.el('div', { + className: 'threadContainer' + }); + $.after(qroot, threadContainer); + } + $.add(threadContainer, this.nodes.root); + pEl = $.x('preceding::div[contains(@class,"post reply")][1]/parent::div', this.nodes.root); + pid = pEl.id.slice(2); + if (QuoteThreading.hasRun) { + ppost = posts[pid]; + } else { + ppost = posts[pid]; + if (!((post = unread["" + g.BOARD + "." + this.id]) && (ppost = unread["" + g.BOARD + "." + pid]))) { + return; + } + } + return posts.after(ppost, this); + }, + toggle: function() { + var container, containers, node, nodes, replies, reply, thread, _i, _j, _k, _len, _len1, _len2, _results; + + thread = $('.thread'); + replies = $$('.thread > .replyContainer, .threadContainer > .replyContainer', thread); + QuoteThreading.enabled = this.checked; + if (this.checked) { + nodes = (function() { + var _i, _len, _results; + + _results = []; + for (_i = 0, _len = replies.length; _i < _len; _i++) { + reply = replies[_i]; + _results.push(Get.postFromNode(reply)); + } + return _results; + })(); + for (_i = 0, _len = nodes.length; _i < _len; _i++) { + node = nodes[_i]; + Unread.node.call(node); + } + _results = []; + for (_j = 0, _len1 = nodes.length; _j < _len1; _j++) { + node = nodes[_j]; + _results.push(QuoteThreading.node(node)); + } + return _results; + } else { + replies.sort(function(a, b) { + var aID, bID; + + aID = Number(a.id.slice(2)); + bID = Number(b.id.slice(2)); + return aID - bID; + }); + $.add(thread, replies); + containers = $$('.threadContainer', thread); + for (_k = 0, _len2 = containers.length; _k < _len2; _k++) { + container = containers[_k]; + $.rm(container); + } + return Unread.update(true); + } + } + }; + QuoteYou = { init: function() { if (g.VIEW === 'catalog' || !Conf['Mark Quotes of You'] || !Conf['Quick Reply']) { @@ -8877,6 +9166,7 @@ 'Thread Excerpt': ThreadExcerpt, 'Favicon': Favicon, 'Unread': Unread, + 'Quote Threading': QuoteThreading, 'Thread Stats': ThreadStats, 'Thread Updater': ThreadUpdater, 'Thread Watcher': ThreadWatcher, @@ -9151,7 +9441,7 @@ } return Main.thisPageIsLegit; }, - css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\n}\n.post {\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #boardNavDesktop,\n#watcher,\n#qr {\nposition: fixed;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #boardNavDesktop {\nz-index: 10;\n}\n/* Header */\n.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n#boardNavDesktop {\nfloat: left;\n}\n.fixed #boardNavDesktop {\nfloat: none;\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #boardNavDesktop {\ntop: 0;\n}\n.fixed.bottom #boardNavDesktop {\nbottom: 0;\n}\n#boardNavDesktop {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #boardNavDesktop {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #boardNavDesktop {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #boardNavDesktop .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #boardNavDesktop.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #boardNavDesktop.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #boardNavDesktop.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#toggle-header-bar {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#boardNavDesktop #toggle-header-bar {\ndisplay: none;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ndisplay: block;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ncursor: n-resize;\n}\n.fixed.top boardNavDesktop #toggle-header-bar {\ntop: 100%;\n}\n.fixed.bottom #boardNavDesktop #toggle-header-bar {\nbottom: 100%;\n}\n.fixed #boardNavDesktop #header-bar.autohide #toggle-header-bar {\ncursor: s-resize;\n}\n#boardNavDesktop a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n\n/* Notifications */\n#notifications {\nheight: 0;\ntext-align: center;\nposition: fixed;\ntop: 0;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.top:not(.autohide) ~ #notifications {\ntop: 2em;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 0;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 1.7em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 1.7em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\n}\n.persona input.field {\nwidth: 29.6%;\nmargin: 0 0 0 0.4%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 1px 0 0;\ntext-align: center;\nbackground-image: #fff;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice,\nbutton,\ninput:not([type=radio]) {\n-moz-box-sizing: border-box;\nfont-size: 12px;\nheight: 1.6em;\nmargin: 1px 0 0;\nvertical-align: bottom;\npadding: 0 1px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filerm {\nposition: absolute;\nright: 3px;\ntop: 2px;\nz-index: 2;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n" + css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\n}\n.post {\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #boardNavDesktop,\n#watcher,\n#qr {\nposition: fixed;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #boardNavDesktop {\nz-index: 10;\n}\n/* Header */\n.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n#boardNavDesktop {\nfloat: left;\n}\n.fixed #boardNavDesktop {\nfloat: none;\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #boardNavDesktop {\ntop: 0;\n}\n.fixed.bottom #boardNavDesktop {\nbottom: 0;\n}\n#boardNavDesktop {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #boardNavDesktop {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #boardNavDesktop {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #boardNavDesktop .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #boardNavDesktop.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #boardNavDesktop.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #boardNavDesktop.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#toggle-header-bar {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#boardNavDesktop #toggle-header-bar {\ndisplay: none;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ndisplay: block;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ncursor: n-resize;\n}\n.fixed.top boardNavDesktop #toggle-header-bar {\ntop: 100%;\n}\n.fixed.bottom #boardNavDesktop #toggle-header-bar {\nbottom: 100%;\n}\n.fixed #boardNavDesktop #header-bar.autohide #toggle-header-bar {\ncursor: s-resize;\n}\n#boardNavDesktop a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n\n/* Notifications */\n#notifications {\nheight: 0;\ntext-align: center;\nposition: fixed;\ntop: 0;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.top:not(.autohide) ~ #notifications {\ntop: 2em;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 0;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 1.7em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 1.7em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* Quote Threading */\n.threadContainer {\nmargin-left: 20px;\nborder-left: 1px solid black;\n}\n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\n}\n.persona input.field {\nwidth: 29.6%;\nmargin: 0 0 0 0.4%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 1px 0 0;\ntext-align: center;\nbackground-image: #fff;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice,\nbutton,\ninput:not([type=radio]) {\n-moz-box-sizing: border-box;\nfont-size: 12px;\nheight: 1.6em;\nmargin: 1px 0 0;\nvertical-align: bottom;\npadding: 0 1px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filerm {\nposition: absolute;\nright: 3px;\ntop: 2px;\nz-index: 2;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n" }; Main.init(); diff --git a/src/code/config.coffee b/src/code/config.coffee index 0bbcbbee0..3ee465f54 100644 --- a/src/code/config.coffee +++ b/src/code/config.coffee @@ -277,6 +277,10 @@ Config = true 'Highlight the previewed post.' ] + 'Quote Threading': [ + true + '' + ] 'Resurrect Quotes': [ true 'Link dead quotes to the archives.' diff --git a/src/code/main.coffee b/src/code/main.coffee index b359af750..d0c97063d 100644 --- a/src/code/main.coffee +++ b/src/code/main.coffee @@ -107,6 +107,7 @@ Main = 'Thread Excerpt': ThreadExcerpt 'Favicon': Favicon 'Unread': Unread + 'Quote Threading': QuoteThreading 'Thread Stats': ThreadStats 'Thread Updater': ThreadUpdater 'Thread Watcher': ThreadWatcher diff --git a/src/code/monitoring/threadupdater.coffee b/src/code/monitoring/threadupdater.coffee index 277200782..ac04e2107 100644 --- a/src/code/monitoring/threadupdater.coffee +++ b/src/code/monitoring/threadupdater.coffee @@ -218,7 +218,6 @@ ThreadUpdater = ThreadUpdater.thread.postLimit = !!OP.bumplimit ThreadUpdater.thread.fileLimit = !!OP.imagelimit - nodes = [] # post container elements posts = [] # post objects index = [] # existing posts files = [] # existing files @@ -232,7 +231,6 @@ ThreadUpdater = # Insert new posts, not older ones. count++ node = Build.postFromObject postObject, ThreadUpdater.thread.board - nodes.push node posts.push new Post node, ThreadUpdater.thread, ThreadUpdater.thread.board deletedPosts = [] @@ -258,6 +256,7 @@ ThreadUpdater = unless count ThreadUpdater.set 'status', null, null ThreadUpdater.outdateCount++ + else ThreadUpdater.set 'status', "+#{count}", 'new' ThreadUpdater.outdateCount = 0 @@ -271,7 +270,14 @@ ThreadUpdater = scroll = Conf['Auto Scroll'] and ThreadUpdater.scrollBG() and ThreadUpdater.root.getBoundingClientRect().bottom - doc.clientHeight < 25 - $.add ThreadUpdater.root, nodes + + for key, post of posts + continue unless posts.hasOwnProperty key + if post.cb + post.cb.call post + else + $.add ThreadUpdater.root, post.nodes.root + if scroll if Conf['Bottom Scroll'] <% if (type === 'crx') { %>d.body<% } else { %>doc<% } %>.scrollTop = d.body.clientHeight diff --git a/src/code/monitoring/unread.coffee b/src/code/monitoring/unread.coffee index eb3f2ba1d..ee90c1d85 100644 --- a/src/code/monitoring/unread.coffee +++ b/src/code/monitoring/unread.coffee @@ -5,7 +5,7 @@ Unread = @db = new DataBoard 'lastReadPosts', @sync @hr = $.el 'hr', id: 'unread-line' - @posts = [] + @posts = new RandomAccessList @postsQuotingYou = [] Thread::callbacks.push @@ -19,7 +19,7 @@ Unread = for ID, post of @posts posts.push post if post.isReply Unread.lastReadPost = Unread.db.get - boardID: @board.ID + boardID: @board.ID threadID: @ID defaultValue: 0 Unread.addPosts posts @@ -62,13 +62,14 @@ Unread = threadID: post.thread.ID postID: post.ID continue if QR.db.get data - Unread.posts.push post + Unread.posts.push ID, post Unread.addPostQuotingYou post if Conf['Unread Line'] # Force line on visible threads if there were no unread posts previously. - Unread.setLine newPosts.contains Unread.posts[0] - Unread.read() - Unread.update() + Unread.setLine newPosts.contains Unread.posts.first + unless Conf['Quote Threading'] + Unread.read() + Unread.update() addPostQuotingYou: (post) -> return unless QR.db @@ -84,14 +85,22 @@ Unread = Unread.addPosts e.detail.newPosts readSinglePost: (post) -> - return if (i = Unread.posts.indexOf post) is -1 - Unread.posts.splice i, 1 - if i is 0 - Unread.lastReadPost = post.ID + {ID} = post + return unless Unread.posts[ID] + Unread.posts.rm ID + unless Unread.posts.first + Unread.lastReadPost = ID Unread.saveLastReadPost() if (i = Unread.postsQuotingYou.indexOf post) isnt -1 Unread.postsQuotingYou.splice i, 1 Unread.update() + + readRAL: (ral) -> + items = [] + for post of ral + items.push post.ID > Unread.lastReadPost + for item in items + ral.rm item readArray: (arr) -> for post, i in arr @@ -100,15 +109,17 @@ Unread = read: (e) -> return if d.hidden or !Unread.posts.length + {posts} = Unread height = doc.clientHeight - for post, i in Unread.posts + for key, post of posts + continue unless posts.hasOwnProperty key {bottom} = post.nodes.root.getBoundingClientRect() break if bottom > height # post is not completely read - return unless i + Unread.posts.rm post + return unless post - Unread.lastReadPost = Unread.posts[i - 1].ID + Unread.lastReadPost = post.ID Unread.saveLastReadPost() - Unread.posts.splice 0, i Unread.readArray Unread.postsQuotingYou Unread.update() if e diff --git a/src/code/quoting/quotethreading.coffee b/src/code/quoting/quotethreading.coffee new file mode 100644 index 000000000..88f073532 --- /dev/null +++ b/src/code/quoting/quotethreading.coffee @@ -0,0 +1,139 @@ +### + <3 aeosynth +### + +QuoteThreading = + init: -> + return unless Conf['Quote Threading'] and g.VIEW is 'thread' + + @enabled = true + @controls = $.el 'span', + innerHTML: '' + + input = $ 'input', @controls + $.on input, 'change', QuoteThreading.toggle + + $.event 'AddMenuEntry', + type: 'header' + el: @controls + order: 115 + + $.on d, '4chanXInitFinished', @setup + + Post::callbacks.push + name: 'Quote Threading' + cb: @node + + setup: -> + $.off d, '4chanXInitFinished', QuoteThreading.setup + {posts} = g + + Unread.read() + Unread.update() + + for ID, post of posts + if post.cb + try + post.cb.call post + catch err + console.log err + return + + QuoteThreading.hasRun = true + + node: -> + # Random access list + # + # 'Array' implementation is very awkward - mid-object inserts, loop to find + # quoted post, loop to find inserted post(!), loop to find distance from + # threaded post to thread root + # + # Of course, implementing your own data structure can be awkward. + return if @isClone or not QuoteThreading.enabled or @thread.OP is @ + + {quotes, ID} = @ + if QuoteThreading.hasRun + {posts} = Unread + return if !(post = posts[ID]) or post.isHidden # Filtered + + else + {posts} = g + return if !(post = posts["#{g.BOARD}.#{ID}"]) or post.isHidden # Filtered + + uniq = {} + if QuoteThreading.hasRun + for quote in quotes + qid = quote[2..] + continue unless qid < ID + if qid of posts + uniq[qid] = true + else + for quote in quotes + qid = quote + continue unless qid[2..] < ID + if qid of posts + uniq[qid[2..]] = true + + keys = Object.keys uniq + return unless keys.length is 1 + + @threaded = keys[0] + @cb = QuoteThreading.nodeinsert + + nodeinsert: -> + qid = @threaded + + if QuoteThreading.hasRun + {posts} = Unread + qpost = posts[qid] + else + {posts} = g + unread = Unread.posts + qpost = posts["#{g.BOARD}.#{qid}"] + + return if @thread.OP is qpost + + qroot = qpost.nodes.root + threadContainer = qroot.nextSibling + if threadContainer?.className isnt 'threadContainer' + threadContainer = $.el 'div', + className: 'threadContainer' + $.after qroot, threadContainer + + $.add threadContainer, @nodes.root + + pEl = $.x 'preceding::div[contains(@class,"post reply")][1]/parent::div', @nodes.root + pid = pEl.id[2..] + + if QuoteThreading.hasRun + ppost = posts[pid] + else + ppost = posts[pid] + return unless (post = unread["#{g.BOARD}.#{@id}"]) and (ppost = unread["#{g.BOARD}.#{pid}"]) + + posts.after ppost, @ + + toggle: -> + thread = $ '.thread' + replies = $$ '.thread > .replyContainer, .threadContainer > .replyContainer', thread + QuoteThreading.enabled = @checked + if @checked + nodes = (Get.postFromNode reply for reply in replies) + Unread.node.call node for node in nodes + QuoteThreading.node node for node in nodes + else + replies.sort (a, b) -> + aID = Number a.id[2..] + bID = Number b.id[2..] + aID - bID + $.add thread, replies + containers = $$ '.threadContainer', thread + $.rm container for container in containers + Unread.update true + +# Keybind comes later. +# public: +# toggle: -> +# control = $.id 'threadingControl' +# control.checked = not control.checked +# QuoteThreading.toggle.call control \ No newline at end of file diff --git a/src/css/style.css b/src/css/style.css index f9a0f1b4d..d487843b0 100644 --- a/src/css/style.css +++ b/src/css/style.css @@ -481,6 +481,12 @@ a.hide-announcement { outline: 2px solid rgba(216, 94, 49, .7); } +/* Quote Threading */ +.threadContainer { + margin-left: 20px; + border-left: 1px solid black; +} + /* File */ .fileText:hover .fntrunc, .fileText:not(:hover) .fnfull, diff --git a/src/lib/$.coffee b/src/lib/$.coffee index c97d870a5..d64dff7a7 100644 --- a/src/lib/$.coffee +++ b/src/lib/$.coffee @@ -11,6 +11,7 @@ $$ = (selector, root=d.body) -> $.extend = (object, properties) -> for key, val of properties + continue unless properties.hasOwnProperty key object[key] = val return @@ -35,7 +36,7 @@ $.extend Array::, args = arguments for arg in args @push.apply @, arg - return @ + return remove: (object) -> if (index = @indexOf object) > -1 @@ -116,8 +117,9 @@ $.extend $, cb() else setTimeout $.asap, 25, test, cb - addStyle: (css) -> + addStyle: (css, id) -> style = $.el 'style', + id: id textContent: css $.asap (-> d.head), -> $.add d.head, style @@ -247,6 +249,16 @@ $.extend $, # Round to an integer otherwise. Math.round size "#{size} #{['B', 'KB', 'MB', 'GB'][unit]}" + minmax: (value, min, max) -> + return ( + if value < min + min + else + if value > max + max + else + value + ) syncing: {} sync: do -> <% if (type === 'crx') { %> diff --git a/src/lib/classes.coffee b/src/lib/classes.coffee index f337c4f0f..7f32752b8 100644 --- a/src/lib/classes.coffee +++ b/src/lib/classes.coffee @@ -3,4 +3,5 @@ <%= grunt.file.read('src/lib/post.class') %> <%= grunt.file.read('src/lib/clone.class') %> <%= grunt.file.read('src/lib/databoard.class') %> -<%= grunt.file.read('src/lib/notification.class') %> \ No newline at end of file +<%= grunt.file.read('src/lib/notification.class') %> +<%= grunt.file.read('src/lib/randomaccesslist.class') %> \ No newline at end of file diff --git a/src/lib/randomaccesslist.class b/src/lib/randomaccesslist.class new file mode 100644 index 000000000..faa5263ae --- /dev/null +++ b/src/lib/randomaccesslist.class @@ -0,0 +1,50 @@ +class RandomAccessList + constructor: -> + @first = null + @last = null + @length = 0 + + push: (id, post) -> + {last} = @ + @[id] = item = post + item.prev = last + item.next = null + @last = item + if last + last.next = item + else + @first = item + @length++ + + shift: -> + @rm @first.ID + + after: (root, item) -> + return if item.prev is root + + @rmi item + + {next} = root + + root.next = item + item.prev = root + item.next = next + next.prev = item + + rm: (id) -> + item = @[id] + return unless item + delete @[id] + @length-- + @rmi item + + rmi: (item) -> + {prev, next} = item + if prev + prev.next = next + else + @first = next + if next + next.prev = prev + else + @last = prev \ No newline at end of file From 7f59f652022bfc916d24e008bbd95652f7975c53 Mon Sep 17 00:00:00 2001 From: Zixaphir Date: Thu, 18 Apr 2013 02:35:29 -0700 Subject: [PATCH 02/15] Well, I was stupid. Oh well. --- builds/4chan-X.js | 16 ++++++---------- builds/4chan-X.user.js | 16 ++++++---------- builds/crx/script.js | 16 ++++++---------- src/code/quoting/quotethreading.coffee | 10 ++++------ 4 files changed, 22 insertions(+), 36 deletions(-) diff --git a/builds/4chan-X.js b/builds/4chan-X.js index 1d4bc3ff0..dbeae9a09 100644 --- a/builds/4chan-X.js +++ b/builds/4chan-X.js @@ -8274,7 +8274,7 @@ }); }, setup: function() { - var ID, err, post, posts; + var ID, post, posts; $.off(d, '4chanXInitFinished', QuoteThreading.setup); posts = g.posts; @@ -8283,19 +8283,14 @@ for (ID in posts) { post = posts[ID]; if (post.cb) { - try { - post.cb.call(post); - } catch (_error) { - err = _error; - console.log(err); - } + post.cb.call(post); } } return; return QuoteThreading.hasRun = true; }, node: function() { - var ID, keys, post, posts, qid, quote, quotes, uniq, _i, _j, _len, _len1; + var ID, keys, len, post, posts, qid, quote, quotes, uniq, _i, _j, _len, _len1; if (this.isClone || !QuoteThreading.enabled || this.thread.OP === this) { return; @@ -8325,14 +8320,15 @@ } } } else { + len = ("" + g.BOARD).length + 1; for (_j = 0, _len1 = quotes.length; _j < _len1; _j++) { quote = quotes[_j]; qid = quote; - if (!(qid.slice(2) < ID)) { + if (!(qid.slice(len) < ID)) { continue; } if (qid in posts) { - uniq[qid.slice(2)] = true; + uniq[qid.slice(len)] = true; } } } diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js index ac767372b..b15f54528 100644 --- a/builds/4chan-X.user.js +++ b/builds/4chan-X.user.js @@ -8291,7 +8291,7 @@ }); }, setup: function() { - var ID, err, post, posts; + var ID, post, posts; $.off(d, '4chanXInitFinished', QuoteThreading.setup); posts = g.posts; @@ -8300,19 +8300,14 @@ for (ID in posts) { post = posts[ID]; if (post.cb) { - try { - post.cb.call(post); - } catch (_error) { - err = _error; - console.log(err); - } + post.cb.call(post); } } return; return QuoteThreading.hasRun = true; }, node: function() { - var ID, keys, post, posts, qid, quote, quotes, uniq, _i, _j, _len, _len1; + var ID, keys, len, post, posts, qid, quote, quotes, uniq, _i, _j, _len, _len1; if (this.isClone || !QuoteThreading.enabled || this.thread.OP === this) { return; @@ -8342,14 +8337,15 @@ } } } else { + len = ("" + g.BOARD).length + 1; for (_j = 0, _len1 = quotes.length; _j < _len1; _j++) { quote = quotes[_j]; qid = quote; - if (!(qid.slice(2) < ID)) { + if (!(qid.slice(len) < ID)) { continue; } if (qid in posts) { - uniq[qid.slice(2)] = true; + uniq[qid.slice(len)] = true; } } } diff --git a/builds/crx/script.js b/builds/crx/script.js index dc07fa8ab..25592f74d 100644 --- a/builds/crx/script.js +++ b/builds/crx/script.js @@ -8193,7 +8193,7 @@ }); }, setup: function() { - var ID, err, post, posts; + var ID, post, posts; $.off(d, '4chanXInitFinished', QuoteThreading.setup); posts = g.posts; @@ -8202,19 +8202,14 @@ for (ID in posts) { post = posts[ID]; if (post.cb) { - try { - post.cb.call(post); - } catch (_error) { - err = _error; - console.log(err); - } + post.cb.call(post); } } return; return QuoteThreading.hasRun = true; }, node: function() { - var ID, keys, post, posts, qid, quote, quotes, uniq, _i, _j, _len, _len1; + var ID, keys, len, post, posts, qid, quote, quotes, uniq, _i, _j, _len, _len1; if (this.isClone || !QuoteThreading.enabled || this.thread.OP === this) { return; @@ -8244,14 +8239,15 @@ } } } else { + len = ("" + g.BOARD).length + 1; for (_j = 0, _len1 = quotes.length; _j < _len1; _j++) { quote = quotes[_j]; qid = quote; - if (!(qid.slice(2) < ID)) { + if (!(qid.slice(len) < ID)) { continue; } if (qid in posts) { - uniq[qid.slice(2)] = true; + uniq[qid.slice(len)] = true; } } } diff --git a/src/code/quoting/quotethreading.coffee b/src/code/quoting/quotethreading.coffee index 88f073532..6b706dc7e 100644 --- a/src/code/quoting/quotethreading.coffee +++ b/src/code/quoting/quotethreading.coffee @@ -33,10 +33,7 @@ QuoteThreading = for ID, post of posts if post.cb - try - post.cb.call post - catch err - console.log err + post.cb.call post return QuoteThreading.hasRun = true @@ -68,11 +65,12 @@ QuoteThreading = if qid of posts uniq[qid] = true else + len = "#{g.BOARD}".length + 1 for quote in quotes qid = quote - continue unless qid[2..] < ID + continue unless qid[len..] < ID if qid of posts - uniq[qid[2..]] = true + uniq[qid[len..]] = true keys = Object.keys uniq return unless keys.length is 1 From a20e10159c4ad543e7b4dbb2e10cfdd809bdee14 Mon Sep 17 00:00:00 2001 From: Jordan Bates Date: Thu, 18 Apr 2013 07:11:15 -0700 Subject: [PATCH 03/15] Lots of style fixes --- builds/4chan-X.js | 6 ++-- builds/4chan-X.user.js | 6 ++-- builds/crx/script.js | 4 +-- src/code/posting/qr.coffee | 5 +++- src/css/style.css | 58 ++++++++++++++++++++++---------------- 5 files changed, 45 insertions(+), 34 deletions(-) diff --git a/builds/4chan-X.js b/builds/4chan-X.js index 6d258803c..2b4a9bffe 100644 --- a/builds/4chan-X.js +++ b/builds/4chan-X.js @@ -20,7 +20,7 @@ // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAgMAAAAqbBEUAAAACVBMVEUAAGcAAABmzDNZt9VtAAAAAXRSTlMAQObYZgAAAHFJREFUKFOt0LENACEIBdBv4Qju4wgWanEj3D6OcIVMKaitYHEU/jwTCQj8W75kiVCSBvdQ5/AvfVHBin11BgdRq3ysBgfwBDRrj3MCIA+oAQaku/Q1cNctrAmyDl577tOThYt/Y1RBM4DgOHzM0HFTAyLukH/cmRnqAAAAAElFTkSuQmCC // ==/UserScript== -/* 4chan X - Version 3.1.4 - 2013-04-16 +/* 4chan X - Version 3.1.4 - 2013-04-18 * https://4chan-x.just-believe.in/ * * Copyright (c) 2009-2011 James Campos @@ -7480,7 +7480,7 @@ dialog: function() { var dialog, mimeTypes, name, nodes, thread, _i, _len, _ref; - dialog = UI.dialog('qr', 'top:0;right:0;', "
\n \n ×\n \n
\n
\n
\n \n \n \n \n
\n
\n \n \n
\n
\n
\n +\n
\n
\n \n No selected file\n \n ×\n \n \n
\n \n \n
".replace(/>\s+<')); + dialog = UI.dialog('qr', 'top:0;right:0;', "
\n \n ×\n \n
\n
\n
\n \n \n \n \n
\n
\n \n \n
\n
\n
\n +\n
\n
\n \n No selected file\n \n ×\n \n \n
\n \n \n
".replace(/>\s+<')); QR.nodes = nodes = { el: dialog, move: $('.move', dialog), @@ -9232,7 +9232,7 @@ } return Main.thisPageIsLegit; }, - css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\n}\n.post {\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #boardNavDesktop,\n#watcher,\n#qr {\nposition: fixed;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #boardNavDesktop {\nz-index: 10;\n}\n/* Header */\n.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n#boardNavDesktop {\nfloat: left;\n}\n.fixed #boardNavDesktop {\nfloat: none;\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #boardNavDesktop {\ntop: 0;\n}\n.fixed.bottom #boardNavDesktop {\nbottom: 0;\n}\n#boardNavDesktop {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #boardNavDesktop {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #boardNavDesktop {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #boardNavDesktop .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #boardNavDesktop.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #boardNavDesktop.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #boardNavDesktop.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#toggle-header-bar {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#boardNavDesktop #toggle-header-bar {\ndisplay: none;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ndisplay: block;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ncursor: n-resize;\n}\n.fixed.top boardNavDesktop #toggle-header-bar {\ntop: 100%;\n}\n.fixed.bottom #boardNavDesktop #toggle-header-bar {\nbottom: 100%;\n}\n.fixed #boardNavDesktop #header-bar.autohide #toggle-header-bar {\ncursor: s-resize;\n}\n#boardNavDesktop a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n\n/* Notifications */\n#notifications {\nheight: 0;\ntext-align: center;\nposition: fixed;\ntop: 0;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.top:not(.autohide) ~ #notifications {\ntop: 2em;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 0;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 1.7em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 1.7em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\n}\n.persona input.field {\nwidth: 29.6%;\nmargin: 0 0 0 0.4%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 1px 0 0;\ntext-align: center;\nbackground-image: #fff;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice,\nbutton,\ninput:not([type=radio]) {\n-moz-box-sizing: border-box;\nfont-size: 12px;\nheight: 1.6em;\nmargin: 1px 0 0;\nvertical-align: bottom;\npadding: 0 1px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filerm {\nposition: absolute;\nright: 3px;\ntop: 2px;\nz-index: 2;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n" + css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\nfont-size: 13px !important;\nopacity: 1.0 !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #boardNavDesktop,\n#qr {\nposition: fixed;\n}\n#watcher {\nposition: absolute;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #boardNavDesktop {\nz-index: 10;\n}\n/* Header */\n.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n#boardNavDesktop {\nfloat: left;\n}\n.fixed #boardNavDesktop {\nfloat: none;\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #boardNavDesktop {\ntop: 0;\n}\n.fixed.bottom #boardNavDesktop {\nbottom: 0;\n}\n#boardNavDesktop {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #boardNavDesktop {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #boardNavDesktop {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #boardNavDesktop .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #boardNavDesktop.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #boardNavDesktop.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #boardNavDesktop.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#toggle-header-bar {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#boardNavDesktop #toggle-header-bar {\ndisplay: none;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ndisplay: block;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ncursor: n-resize;\n}\n.fixed.top boardNavDesktop #toggle-header-bar {\ntop: 100%;\n}\n.fixed.bottom #boardNavDesktop #toggle-header-bar {\nbottom: 100%;\n}\n.fixed #boardNavDesktop #header-bar.autohide #toggle-header-bar {\ncursor: s-resize;\n}\n#boardNavDesktop a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n#navtopright a {\ntext-decoration: none;\n}\n\n/* Notifications */\n#notifications {\nheight: 0;\ntext-align: center;\nposition: fixed;\ntop: 0;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.top:not(.autohide) ~ #notifications {\ntop: 2em;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 0;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\nheight: 15px;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 2.1em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\npadding-top: 10px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form,\n.postingMode ~ #qr select {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\nfont: 13px sans-serif;\npadding: 1px 0px 2px;\n}\n.persona .field:not(#dump) {\nwidth: 95px;\nmin-width: 30%;\nmax-width: 30%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 0px;\ntext-align: center;\nbackground-image: #fff;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice {\n-moz-box-sizing: border-box;\nmargin: 0px;\npadding: 2px 4px 3px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\nvertical-align: top;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\npadding: 0px 4px;\nmargin-bottom: 2px;\n}\n#qr-no-file {\ncolor: #AAA;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\nmargin-top: 1px;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filerm {\nposition: absolute;\nright: 3px;\ntop: 2px;\nz-index: 2;\n}\n#file-n-submit {\nheight: 23px;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n" }; Main.init(); diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js index ee631a9b7..c2c7eee01 100644 --- a/builds/4chan-X.user.js +++ b/builds/4chan-X.user.js @@ -20,7 +20,7 @@ // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAgMAAAAqbBEUAAAACVBMVEUAAGcAAABmzDNZt9VtAAAAAXRSTlMAQObYZgAAAHFJREFUKFOt0LENACEIBdBv4Qju4wgWanEj3D6OcIVMKaitYHEU/jwTCQj8W75kiVCSBvdQ5/AvfVHBin11BgdRq3ysBgfwBDRrj3MCIA+oAQaku/Q1cNctrAmyDl577tOThYt/Y1RBM4DgOHzM0HFTAyLukH/cmRnqAAAAAElFTkSuQmCC // ==/UserScript== -/* 4chan X - Version 3.1.4 - 2013-04-16 +/* 4chan X - Version 3.1.4 - 2013-04-18 * https://4chan-x.just-believe.in/ * * Copyright (c) 2009-2011 James Campos @@ -7480,7 +7480,7 @@ dialog: function() { var dialog, elm, mimeTypes, name, nodes, thread, _i, _j, _len, _len1, _ref, _ref1; - dialog = UI.dialog('qr', 'top:0;right:0;', "
\n \n ×\n \n
\n
\n
\n \n \n \n \n
\n
\n \n \n
\n
\n
\n +\n
\n
\n \n No selected file\n \n ×\n \n \n
\n \n \n
".replace(/>\s+<')); + dialog = UI.dialog('qr', 'top:0;right:0;', "
\n \n ×\n \n
\n
\n
\n \n \n \n \n
\n
\n \n \n
\n
\n
\n +\n
\n
\n \n No selected file\n \n ×\n \n \n
\n \n \n
".replace(/>\s+<')); QR.nodes = nodes = { el: dialog, move: $('.move', dialog), @@ -9251,7 +9251,7 @@ } return Main.thisPageIsLegit; }, - css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\n}\n.post {\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #boardNavDesktop,\n#watcher,\n#qr {\nposition: fixed;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #boardNavDesktop {\nz-index: 10;\n}\n/* Header */\n.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n#boardNavDesktop {\nfloat: left;\n}\n.fixed #boardNavDesktop {\nfloat: none;\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #boardNavDesktop {\ntop: 0;\n}\n.fixed.bottom #boardNavDesktop {\nbottom: 0;\n}\n#boardNavDesktop {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #boardNavDesktop {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #boardNavDesktop {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #boardNavDesktop .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #boardNavDesktop.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #boardNavDesktop.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #boardNavDesktop.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#toggle-header-bar {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#boardNavDesktop #toggle-header-bar {\ndisplay: none;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ndisplay: block;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ncursor: n-resize;\n}\n.fixed.top boardNavDesktop #toggle-header-bar {\ntop: 100%;\n}\n.fixed.bottom #boardNavDesktop #toggle-header-bar {\nbottom: 100%;\n}\n.fixed #boardNavDesktop #header-bar.autohide #toggle-header-bar {\ncursor: s-resize;\n}\n#boardNavDesktop a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n\n/* Notifications */\n#notifications {\nheight: 0;\ntext-align: center;\nposition: fixed;\ntop: 0;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.top:not(.autohide) ~ #notifications {\ntop: 2em;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 0;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 1.7em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 1.7em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\n}\n.persona input.field {\nwidth: 29.6%;\nmargin: 0 0 0 0.4%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 1px 0 0;\ntext-align: center;\nbackground-image: #fff;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice,\nbutton,\ninput:not([type=radio]) {\n-moz-box-sizing: border-box;\nfont-size: 12px;\nheight: 1.6em;\nmargin: 1px 0 0;\nvertical-align: bottom;\npadding: 0 1px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filerm {\nposition: absolute;\nright: 3px;\ntop: 2px;\nz-index: 2;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n" + css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\nfont-size: 13px !important;\nopacity: 1.0 !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #boardNavDesktop,\n#qr {\nposition: fixed;\n}\n#watcher {\nposition: absolute;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #boardNavDesktop {\nz-index: 10;\n}\n/* Header */\n.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n#boardNavDesktop {\nfloat: left;\n}\n.fixed #boardNavDesktop {\nfloat: none;\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #boardNavDesktop {\ntop: 0;\n}\n.fixed.bottom #boardNavDesktop {\nbottom: 0;\n}\n#boardNavDesktop {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #boardNavDesktop {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #boardNavDesktop {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #boardNavDesktop .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #boardNavDesktop.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #boardNavDesktop.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #boardNavDesktop.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#toggle-header-bar {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#boardNavDesktop #toggle-header-bar {\ndisplay: none;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ndisplay: block;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ncursor: n-resize;\n}\n.fixed.top boardNavDesktop #toggle-header-bar {\ntop: 100%;\n}\n.fixed.bottom #boardNavDesktop #toggle-header-bar {\nbottom: 100%;\n}\n.fixed #boardNavDesktop #header-bar.autohide #toggle-header-bar {\ncursor: s-resize;\n}\n#boardNavDesktop a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n#navtopright a {\ntext-decoration: none;\n}\n\n/* Notifications */\n#notifications {\nheight: 0;\ntext-align: center;\nposition: fixed;\ntop: 0;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.top:not(.autohide) ~ #notifications {\ntop: 2em;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 0;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\nheight: 15px;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 2.1em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\npadding-top: 10px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form,\n.postingMode ~ #qr select {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\nfont: 13px sans-serif;\npadding: 1px 0px 2px;\n}\n.persona .field:not(#dump) {\nwidth: 95px;\nmin-width: 30%;\nmax-width: 30%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 0px;\ntext-align: center;\nbackground-image: #fff;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice {\n-moz-box-sizing: border-box;\nmargin: 0px;\npadding: 2px 4px 3px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\nvertical-align: top;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\npadding: 0px 4px;\nmargin-bottom: 2px;\n}\n#qr-no-file {\ncolor: #AAA;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\nmargin-top: 1px;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filerm {\nposition: absolute;\nright: 3px;\ntop: 2px;\nz-index: 2;\n}\n#file-n-submit {\nheight: 23px;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n" }; Main.init(); diff --git a/builds/crx/script.js b/builds/crx/script.js index 615b6a560..b32d36e07 100644 --- a/builds/crx/script.js +++ b/builds/crx/script.js @@ -7399,7 +7399,7 @@ dialog: function() { var dialog, mimeTypes, name, nodes, thread, _i, _len, _ref; - dialog = UI.dialog('qr', 'top:0;right:0;', "
\n \n ×\n \n
\n
\n
\n \n \n \n \n
\n
\n \n \n
\n
\n
\n +\n
\n
\n \n No selected file\n \n ×\n \n \n
\n \n \n
".replace(/>\s+<')); + dialog = UI.dialog('qr', 'top:0;right:0;', "
\n \n ×\n \n
\n
\n
\n \n \n \n \n
\n
\n \n \n
\n
\n
\n +\n
\n
\n \n No selected file\n \n ×\n \n \n
\n \n \n
".replace(/>\s+<')); QR.nodes = nodes = { el: dialog, move: $('.move', dialog), @@ -9151,7 +9151,7 @@ } return Main.thisPageIsLegit; }, - css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\n}\n.post {\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #boardNavDesktop,\n#watcher,\n#qr {\nposition: fixed;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #boardNavDesktop {\nz-index: 10;\n}\n/* Header */\n.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n#boardNavDesktop {\nfloat: left;\n}\n.fixed #boardNavDesktop {\nfloat: none;\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #boardNavDesktop {\ntop: 0;\n}\n.fixed.bottom #boardNavDesktop {\nbottom: 0;\n}\n#boardNavDesktop {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #boardNavDesktop {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #boardNavDesktop {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #boardNavDesktop .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #boardNavDesktop.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #boardNavDesktop.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #boardNavDesktop.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#toggle-header-bar {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#boardNavDesktop #toggle-header-bar {\ndisplay: none;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ndisplay: block;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ncursor: n-resize;\n}\n.fixed.top boardNavDesktop #toggle-header-bar {\ntop: 100%;\n}\n.fixed.bottom #boardNavDesktop #toggle-header-bar {\nbottom: 100%;\n}\n.fixed #boardNavDesktop #header-bar.autohide #toggle-header-bar {\ncursor: s-resize;\n}\n#boardNavDesktop a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n\n/* Notifications */\n#notifications {\nheight: 0;\ntext-align: center;\nposition: fixed;\ntop: 0;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.top:not(.autohide) ~ #notifications {\ntop: 2em;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 0;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 1.7em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 1.7em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\n}\n.persona input.field {\nwidth: 29.6%;\nmargin: 0 0 0 0.4%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 1px 0 0;\ntext-align: center;\nbackground-image: #fff;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice,\nbutton,\ninput:not([type=radio]) {\n-moz-box-sizing: border-box;\nfont-size: 12px;\nheight: 1.6em;\nmargin: 1px 0 0;\nvertical-align: bottom;\npadding: 0 1px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filerm {\nposition: absolute;\nright: 3px;\ntop: 2px;\nz-index: 2;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n" + css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\nfont-size: 13px !important;\nopacity: 1.0 !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #boardNavDesktop,\n#qr {\nposition: fixed;\n}\n#watcher {\nposition: absolute;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #boardNavDesktop {\nz-index: 10;\n}\n/* Header */\n.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n#boardNavDesktop {\nfloat: left;\n}\n.fixed #boardNavDesktop {\nfloat: none;\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #boardNavDesktop {\ntop: 0;\n}\n.fixed.bottom #boardNavDesktop {\nbottom: 0;\n}\n#boardNavDesktop {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #boardNavDesktop {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #boardNavDesktop {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #boardNavDesktop .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #boardNavDesktop.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #boardNavDesktop.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #boardNavDesktop.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#toggle-header-bar {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#boardNavDesktop #toggle-header-bar {\ndisplay: none;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ndisplay: block;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ncursor: n-resize;\n}\n.fixed.top boardNavDesktop #toggle-header-bar {\ntop: 100%;\n}\n.fixed.bottom #boardNavDesktop #toggle-header-bar {\nbottom: 100%;\n}\n.fixed #boardNavDesktop #header-bar.autohide #toggle-header-bar {\ncursor: s-resize;\n}\n#boardNavDesktop a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n#navtopright a {\ntext-decoration: none;\n}\n\n/* Notifications */\n#notifications {\nheight: 0;\ntext-align: center;\nposition: fixed;\ntop: 0;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.top:not(.autohide) ~ #notifications {\ntop: 2em;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 0;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\nheight: 15px;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 2.1em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\npadding-top: 10px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form,\n.postingMode ~ #qr select {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\nfont: 13px sans-serif;\npadding: 1px 0px 2px;\n}\n.persona .field:not(#dump) {\nwidth: 95px;\nmin-width: 30%;\nmax-width: 30%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 0px;\ntext-align: center;\nbackground-image: #fff;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice {\n-moz-box-sizing: border-box;\nmargin: 0px;\npadding: 2px 4px 3px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\nvertical-align: top;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\npadding: 0px 4px;\nmargin-bottom: 2px;\n}\n#qr-no-file {\ncolor: #AAA;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\nmargin-top: 1px;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filerm {\nposition: absolute;\nright: 3px;\ntop: 2px;\nz-index: 2;\n}\n#file-n-submit {\nheight: 23px;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n" }; Main.init(); diff --git a/src/code/posting/qr.coffee b/src/code/posting/qr.coffee index a3dc3390b..ff73f5c41 100644 --- a/src/code/posting/qr.coffee +++ b/src/code/posting/qr.coffee @@ -727,7 +727,10 @@ QR = dialog: -> dialog = UI.dialog 'qr', 'top:0;right:0;', """
- + × \n Quick Reply\n \n ×\n \n
\n
\n
\n \n \n \n \n
\n
\n \n \n
\n
\n
\n +\n
\n
\n \n No selected file\n \n ×\n \n \n
\n \n \n
".replace(/>\s+<')); + dialog = UI.dialog('qr', 'top:0;right:0;', "
\n \n ×\n \n
\n
\n
\n \n \n \n \n
\n
\n \n \n
\n
\n
\n +\n
\n
\n \n No selected file\n \n \n ×\n \n
\n \n \n
".replace(/>\s+<')); QR.nodes = nodes = { el: dialog, move: $('.move', dialog), @@ -9232,7 +9232,7 @@ } return Main.thisPageIsLegit; }, - css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\nfont-size: 13px !important;\nopacity: 1.0 !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #boardNavDesktop,\n#qr {\nposition: fixed;\n}\n#watcher {\nposition: absolute;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #boardNavDesktop {\nz-index: 10;\n}\n/* Header */\n.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n#boardNavDesktop {\nfloat: left;\n}\n.fixed #boardNavDesktop {\nfloat: none;\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #boardNavDesktop {\ntop: 0;\n}\n.fixed.bottom #boardNavDesktop {\nbottom: 0;\n}\n#boardNavDesktop {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #boardNavDesktop {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #boardNavDesktop {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #boardNavDesktop .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #boardNavDesktop.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #boardNavDesktop.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #boardNavDesktop.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#toggle-header-bar {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#boardNavDesktop #toggle-header-bar {\ndisplay: none;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ndisplay: block;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ncursor: n-resize;\n}\n.fixed.top boardNavDesktop #toggle-header-bar {\ntop: 100%;\n}\n.fixed.bottom #boardNavDesktop #toggle-header-bar {\nbottom: 100%;\n}\n.fixed #boardNavDesktop #header-bar.autohide #toggle-header-bar {\ncursor: s-resize;\n}\n#boardNavDesktop a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n#navtopright a {\ntext-decoration: none;\n}\n\n/* Notifications */\n#notifications {\nheight: 0;\ntext-align: center;\nposition: fixed;\ntop: 0;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.top:not(.autohide) ~ #notifications {\ntop: 2em;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 0;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\nheight: 15px;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 2.1em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\npadding-top: 10px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form,\n.postingMode ~ #qr select {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\nfont: 13px sans-serif;\npadding: 1px 0px 2px;\n}\n.persona .field:not(#dump) {\nwidth: 95px;\nmin-width: 30%;\nmax-width: 30%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 0px;\ntext-align: center;\nbackground-image: #fff;\nfont-size: 0px;\nmin-height: 59px;\nmin-width: 302px;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice {\n-moz-box-sizing: border-box;\nmargin: 0px;\npadding: 2px 4px 3px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\nvertical-align: top;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\npadding: 0px 4px;\nmargin-bottom: 2px;\n}\n#qr-no-file {\ncolor: #AAA;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\nmargin-top: 1px;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filerm {\nposition: absolute;\nright: 3px;\ntop: 2px;\nz-index: 2;\n}\n#file-n-submit {\nheight: 23px;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n" + css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\nfont-size: 13px !important;\nopacity: 1.0 !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #boardNavDesktop,\n#qr {\nposition: fixed;\n}\n#watcher {\nposition: absolute;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #boardNavDesktop {\nz-index: 10;\n}\n/* Header */\n.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n#boardNavDesktop {\nfloat: left;\n}\n.fixed #boardNavDesktop {\nfloat: none;\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #boardNavDesktop {\ntop: 0;\n}\n.fixed.bottom #boardNavDesktop {\nbottom: 0;\n}\n#boardNavDesktop {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #boardNavDesktop {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #boardNavDesktop {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #boardNavDesktop .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #boardNavDesktop.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #boardNavDesktop.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #boardNavDesktop.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#toggle-header-bar {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#boardNavDesktop #toggle-header-bar {\ndisplay: none;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ndisplay: block;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ncursor: n-resize;\n}\n.fixed.top boardNavDesktop #toggle-header-bar {\ntop: 100%;\n}\n.fixed.bottom #boardNavDesktop #toggle-header-bar {\nbottom: 100%;\n}\n.fixed #boardNavDesktop #header-bar.autohide #toggle-header-bar {\ncursor: s-resize;\n}\n#boardNavDesktop a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n#navtopright a {\ntext-decoration: none;\n}\n\n/* Notifications */\n#notifications {\nheight: 0;\ntext-align: center;\nposition: fixed;\ntop: 0;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.top:not(.autohide) ~ #notifications {\ntop: 2em;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 0;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\nheight: 15px;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 2.1em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\npadding-top: 10px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form,\n.postingMode ~ #qr select,\n#file-n-submit:not(.has-file) #qr-filerm {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\nfont: 13px sans-serif;\npadding: 1px 0px 2px;\n}\n.persona .field:not(#dump) {\nwidth: 95px;\nmin-width: 30%;\nmax-width: 30%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 0px;\ntext-align: center;\nbackground-image: #fff;\nfont-size: 0px;\nmin-height: 59px;\nmin-width: 302px;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice {\n-moz-box-sizing: border-box;\nmargin: 0px;\npadding: 2px 4px 3px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\nvertical-align: top;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\npadding: 0px 4px;\nmargin-bottom: 2px;\n}\n#qr-no-file {\ncolor: #AAA;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\nmargin-top: 1px;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filerm {\nposition: relative;\nright: 14px;\nbottom: 6px;\nmargin-right: -8px;\nz-index: 2;\n}\n#file-n-submit {\nheight: 23px;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n" }; Main.init(); diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js index cb0778b67..af5875e89 100644 --- a/builds/4chan-X.user.js +++ b/builds/4chan-X.user.js @@ -7480,7 +7480,7 @@ dialog: function() { var dialog, elm, mimeTypes, name, nodes, thread, _i, _j, _len, _len1, _ref, _ref1; - dialog = UI.dialog('qr', 'top:0;right:0;', "
\n \n ×\n \n
\n
\n
\n \n \n \n \n
\n
\n \n \n
\n
\n
\n +\n
\n
\n \n No selected file\n \n ×\n \n \n
\n \n \n
".replace(/>\s+<')); + dialog = UI.dialog('qr', 'top:0;right:0;', "
\n \n ×\n \n
\n
\n
\n \n \n \n \n
\n
\n \n \n
\n
\n
\n +\n
\n
\n \n No selected file\n \n \n ×\n \n
\n \n \n
".replace(/>\s+<')); QR.nodes = nodes = { el: dialog, move: $('.move', dialog), @@ -9251,7 +9251,7 @@ } return Main.thisPageIsLegit; }, - css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\nfont-size: 13px !important;\nopacity: 1.0 !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #boardNavDesktop,\n#qr {\nposition: fixed;\n}\n#watcher {\nposition: absolute;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #boardNavDesktop {\nz-index: 10;\n}\n/* Header */\n.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n#boardNavDesktop {\nfloat: left;\n}\n.fixed #boardNavDesktop {\nfloat: none;\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #boardNavDesktop {\ntop: 0;\n}\n.fixed.bottom #boardNavDesktop {\nbottom: 0;\n}\n#boardNavDesktop {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #boardNavDesktop {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #boardNavDesktop {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #boardNavDesktop .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #boardNavDesktop.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #boardNavDesktop.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #boardNavDesktop.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#toggle-header-bar {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#boardNavDesktop #toggle-header-bar {\ndisplay: none;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ndisplay: block;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ncursor: n-resize;\n}\n.fixed.top boardNavDesktop #toggle-header-bar {\ntop: 100%;\n}\n.fixed.bottom #boardNavDesktop #toggle-header-bar {\nbottom: 100%;\n}\n.fixed #boardNavDesktop #header-bar.autohide #toggle-header-bar {\ncursor: s-resize;\n}\n#boardNavDesktop a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n#navtopright a {\ntext-decoration: none;\n}\n\n/* Notifications */\n#notifications {\nheight: 0;\ntext-align: center;\nposition: fixed;\ntop: 0;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.top:not(.autohide) ~ #notifications {\ntop: 2em;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 0;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\nheight: 15px;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 2.1em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\npadding-top: 10px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form,\n.postingMode ~ #qr select {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\nfont: 13px sans-serif;\npadding: 1px 0px 2px;\n}\n.persona .field:not(#dump) {\nwidth: 95px;\nmin-width: 30%;\nmax-width: 30%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 0px;\ntext-align: center;\nbackground-image: #fff;\nfont-size: 0px;\nmin-height: 59px;\nmin-width: 302px;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice {\n-moz-box-sizing: border-box;\nmargin: 0px;\npadding: 2px 4px 3px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\nvertical-align: top;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\npadding: 0px 4px;\nmargin-bottom: 2px;\n}\n#qr-no-file {\ncolor: #AAA;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\nmargin-top: 1px;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filerm {\nposition: absolute;\nright: 3px;\ntop: 2px;\nz-index: 2;\n}\n#file-n-submit {\nheight: 23px;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n" + css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\nfont-size: 13px !important;\nopacity: 1.0 !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #boardNavDesktop,\n#qr {\nposition: fixed;\n}\n#watcher {\nposition: absolute;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #boardNavDesktop {\nz-index: 10;\n}\n/* Header */\n.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n#boardNavDesktop {\nfloat: left;\n}\n.fixed #boardNavDesktop {\nfloat: none;\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #boardNavDesktop {\ntop: 0;\n}\n.fixed.bottom #boardNavDesktop {\nbottom: 0;\n}\n#boardNavDesktop {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #boardNavDesktop {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #boardNavDesktop {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #boardNavDesktop .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #boardNavDesktop.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #boardNavDesktop.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #boardNavDesktop.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#toggle-header-bar {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#boardNavDesktop #toggle-header-bar {\ndisplay: none;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ndisplay: block;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ncursor: n-resize;\n}\n.fixed.top boardNavDesktop #toggle-header-bar {\ntop: 100%;\n}\n.fixed.bottom #boardNavDesktop #toggle-header-bar {\nbottom: 100%;\n}\n.fixed #boardNavDesktop #header-bar.autohide #toggle-header-bar {\ncursor: s-resize;\n}\n#boardNavDesktop a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n#navtopright a {\ntext-decoration: none;\n}\n\n/* Notifications */\n#notifications {\nheight: 0;\ntext-align: center;\nposition: fixed;\ntop: 0;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.top:not(.autohide) ~ #notifications {\ntop: 2em;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 0;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\nheight: 15px;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 2.1em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\npadding-top: 10px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form,\n.postingMode ~ #qr select,\n#file-n-submit:not(.has-file) #qr-filerm {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\nfont: 13px sans-serif;\npadding: 1px 0px 2px;\n}\n.persona .field:not(#dump) {\nwidth: 95px;\nmin-width: 30%;\nmax-width: 30%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 0px;\ntext-align: center;\nbackground-image: #fff;\nfont-size: 0px;\nmin-height: 59px;\nmin-width: 302px;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice {\n-moz-box-sizing: border-box;\nmargin: 0px;\npadding: 2px 4px 3px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\nvertical-align: top;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\npadding: 0px 4px;\nmargin-bottom: 2px;\n}\n#qr-no-file {\ncolor: #AAA;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\nmargin-top: 1px;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filerm {\nposition: relative;\nright: 14px;\nbottom: 6px;\nmargin-right: -8px;\nz-index: 2;\n}\n#file-n-submit {\nheight: 23px;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n" }; Main.init(); diff --git a/builds/crx/script.js b/builds/crx/script.js index c5e542be8..758e571d8 100644 --- a/builds/crx/script.js +++ b/builds/crx/script.js @@ -7399,7 +7399,7 @@ dialog: function() { var dialog, mimeTypes, name, nodes, thread, _i, _len, _ref; - dialog = UI.dialog('qr', 'top:0;right:0;', "
\n \n ×\n \n
\n
\n
\n \n \n \n \n
\n
\n \n \n
\n
\n
\n +\n
\n
\n \n No selected file\n \n ×\n \n \n
\n \n \n
".replace(/>\s+<')); + dialog = UI.dialog('qr', 'top:0;right:0;', "
\n \n ×\n \n
\n
\n
\n \n \n \n \n
\n
\n \n \n
\n
\n
\n +\n
\n
\n \n No selected file\n \n \n ×\n \n
\n \n \n
".replace(/>\s+<')); QR.nodes = nodes = { el: dialog, move: $('.move', dialog), @@ -9151,7 +9151,7 @@ } return Main.thisPageIsLegit; }, - css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\nfont-size: 13px !important;\nopacity: 1.0 !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #boardNavDesktop,\n#qr {\nposition: fixed;\n}\n#watcher {\nposition: absolute;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #boardNavDesktop {\nz-index: 10;\n}\n/* Header */\n.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n#boardNavDesktop {\nfloat: left;\n}\n.fixed #boardNavDesktop {\nfloat: none;\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #boardNavDesktop {\ntop: 0;\n}\n.fixed.bottom #boardNavDesktop {\nbottom: 0;\n}\n#boardNavDesktop {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #boardNavDesktop {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #boardNavDesktop {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #boardNavDesktop .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #boardNavDesktop.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #boardNavDesktop.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #boardNavDesktop.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#toggle-header-bar {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#boardNavDesktop #toggle-header-bar {\ndisplay: none;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ndisplay: block;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ncursor: n-resize;\n}\n.fixed.top boardNavDesktop #toggle-header-bar {\ntop: 100%;\n}\n.fixed.bottom #boardNavDesktop #toggle-header-bar {\nbottom: 100%;\n}\n.fixed #boardNavDesktop #header-bar.autohide #toggle-header-bar {\ncursor: s-resize;\n}\n#boardNavDesktop a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n#navtopright a {\ntext-decoration: none;\n}\n\n/* Notifications */\n#notifications {\nheight: 0;\ntext-align: center;\nposition: fixed;\ntop: 0;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.top:not(.autohide) ~ #notifications {\ntop: 2em;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 0;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\nheight: 15px;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 2.1em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\npadding-top: 10px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form,\n.postingMode ~ #qr select {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\nfont: 13px sans-serif;\npadding: 1px 0px 2px;\n}\n.persona .field:not(#dump) {\nwidth: 95px;\nmin-width: 30%;\nmax-width: 30%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 0px;\ntext-align: center;\nbackground-image: #fff;\nfont-size: 0px;\nmin-height: 59px;\nmin-width: 302px;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice {\n-moz-box-sizing: border-box;\nmargin: 0px;\npadding: 2px 4px 3px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\nvertical-align: top;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\npadding: 0px 4px;\nmargin-bottom: 2px;\n}\n#qr-no-file {\ncolor: #AAA;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\nmargin-top: 1px;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filerm {\nposition: absolute;\nright: 3px;\ntop: 2px;\nz-index: 2;\n}\n#file-n-submit {\nheight: 23px;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n" + css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\nfont-size: 13px !important;\nopacity: 1.0 !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #boardNavDesktop,\n#qr {\nposition: fixed;\n}\n#watcher {\nposition: absolute;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #boardNavDesktop {\nz-index: 10;\n}\n/* Header */\n.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n#boardNavDesktop {\nfloat: left;\n}\n.fixed #boardNavDesktop {\nfloat: none;\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #boardNavDesktop {\ntop: 0;\n}\n.fixed.bottom #boardNavDesktop {\nbottom: 0;\n}\n#boardNavDesktop {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #boardNavDesktop {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #boardNavDesktop {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #boardNavDesktop .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #boardNavDesktop.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #boardNavDesktop.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #boardNavDesktop.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#toggle-header-bar {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#boardNavDesktop #toggle-header-bar {\ndisplay: none;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ndisplay: block;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ncursor: n-resize;\n}\n.fixed.top boardNavDesktop #toggle-header-bar {\ntop: 100%;\n}\n.fixed.bottom #boardNavDesktop #toggle-header-bar {\nbottom: 100%;\n}\n.fixed #boardNavDesktop #header-bar.autohide #toggle-header-bar {\ncursor: s-resize;\n}\n#boardNavDesktop a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n#navtopright a {\ntext-decoration: none;\n}\n\n/* Notifications */\n#notifications {\nheight: 0;\ntext-align: center;\nposition: fixed;\ntop: 0;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.top:not(.autohide) ~ #notifications {\ntop: 2em;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 0;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\nheight: 15px;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 2.1em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\npadding-top: 10px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form,\n.postingMode ~ #qr select,\n#file-n-submit:not(.has-file) #qr-filerm {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\nfont: 13px sans-serif;\npadding: 1px 0px 2px;\n}\n.persona .field:not(#dump) {\nwidth: 95px;\nmin-width: 30%;\nmax-width: 30%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 0px;\ntext-align: center;\nbackground-image: #fff;\nfont-size: 0px;\nmin-height: 59px;\nmin-width: 302px;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice {\n-moz-box-sizing: border-box;\nmargin: 0px;\npadding: 2px 4px 3px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\nvertical-align: top;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\npadding: 0px 4px;\nmargin-bottom: 2px;\n}\n#qr-no-file {\ncolor: #AAA;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\nmargin-top: 1px;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filerm {\nposition: relative;\nright: 14px;\nbottom: 6px;\nmargin-right: -8px;\nz-index: 2;\n}\n#file-n-submit {\nheight: 23px;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n" }; Main.init(); diff --git a/src/code/posting/qr.coffee b/src/code/posting/qr.coffee index ff73f5c41..e46b8f8ff 100644 --- a/src/code/posting/qr.coffee +++ b/src/code/posting/qr.coffee @@ -755,8 +755,8 @@ QR = No selected file - × + × diff --git a/src/css/style.css b/src/css/style.css index 7eae3bdf3..80ef9056f 100644 --- a/src/css/style.css +++ b/src/css/style.css @@ -548,7 +548,8 @@ a.hide-announcement { :root.hide-original-post-form .postingMode, :root.hide-original-post-form #togglePostForm, #qr.autohide:not(.has-focus):not(:hover) > form, -.postingMode ~ #qr select { +.postingMode ~ #qr select, +#file-n-submit:not(.has-file) #qr-filerm { display: none; } #qr select, #dump-button, .remove, .captcha-img { @@ -662,9 +663,10 @@ input.field.tripped:not(:hover):not(:focus) { padding: 2px 1px 0; } #qr-filerm { - position: absolute; - right: 3px; - top: 2px; + position: relative; + right: 14px; + bottom: 6px; + margin-right: -8px; z-index: 2; } #file-n-submit { From 8926a9636f93bac6226f2eb1c03ec0c241acc89c Mon Sep 17 00:00:00 2001 From: Jordan Bates Date: Thu, 18 Apr 2013 08:28:43 -0700 Subject: [PATCH 06/15] Fix .qr-shortcut not being toggled by certain events --- builds/4chan-X.js | 4 +++- builds/4chan-X.user.js | 4 +++- builds/crx/script.js | 4 +++- src/code/misc/keybinds.coffee | 1 + src/code/posting/qr.coffee | 1 + 5 files changed, 11 insertions(+), 3 deletions(-) diff --git a/builds/4chan-X.js b/builds/4chan-X.js index 89d770830..8402f8522 100644 --- a/builds/4chan-X.js +++ b/builds/4chan-X.js @@ -5068,7 +5068,8 @@ if (quote) { QR.quote.call($('input', $('.post.highlight', thread) || thread)); } - return QR.nodes.com.focus(); + QR.nodes.com.focus(); + return $.rmClass($('.qr-shortcut'), 'disabled'); }, tags: function(tag, ta) { var range, selEnd, selStart, value; @@ -6602,6 +6603,7 @@ QR.cleanNotifications(); d.activeElement.blur(); $.rmClass(QR.nodes.el, 'dump'); + $.toggleClass($('.qr-shortcut'), 'disabled'); _ref = QR.posts; for (_i = 0, _len = _ref.length; _i < _len; _i++) { i = _ref[_i]; diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js index af5875e89..983a0807f 100644 --- a/builds/4chan-X.user.js +++ b/builds/4chan-X.user.js @@ -5060,7 +5060,8 @@ if (quote) { QR.quote.call($('input', $('.post.highlight', thread) || thread)); } - return QR.nodes.com.focus(); + QR.nodes.com.focus(); + return $.rmClass($('.qr-shortcut'), 'disabled'); }, tags: function(tag, ta) { var range, selEnd, selStart, value; @@ -6594,6 +6595,7 @@ QR.cleanNotifications(); d.activeElement.blur(); $.rmClass(QR.nodes.el, 'dump'); + $.toggleClass($('.qr-shortcut'), 'disabled'); _ref = QR.posts; for (_i = 0, _len = _ref.length; _i < _len; _i++) { i = _ref[_i]; diff --git a/builds/crx/script.js b/builds/crx/script.js index 758e571d8..fb4c06ff8 100644 --- a/builds/crx/script.js +++ b/builds/crx/script.js @@ -4981,7 +4981,8 @@ if (quote) { QR.quote.call($('input', $('.post.highlight', thread) || thread)); } - return QR.nodes.com.focus(); + QR.nodes.com.focus(); + return $.rmClass($('.qr-shortcut'), 'disabled'); }, tags: function(tag, ta) { var range, selEnd, selStart, value; @@ -6521,6 +6522,7 @@ QR.cleanNotifications(); d.activeElement.blur(); $.rmClass(QR.nodes.el, 'dump'); + $.toggleClass($('.qr-shortcut'), 'disabled'); _ref = QR.posts; for (_i = 0, _len = _ref.length; _i < _len; _i++) { i = _ref[_i]; diff --git a/src/code/misc/keybinds.coffee b/src/code/misc/keybinds.coffee index ad136eeb1..df2bd3ede 100644 --- a/src/code/misc/keybinds.coffee +++ b/src/code/misc/keybinds.coffee @@ -132,6 +132,7 @@ Keybinds = if quote QR.quote.call $ 'input', $('.post.highlight', thread) or thread QR.nodes.com.focus() + $.rmClass $('.qr-shortcut'), 'disabled' tags: (tag, ta) -> value = ta.value diff --git a/src/code/posting/qr.coffee b/src/code/posting/qr.coffee index e46b8f8ff..91cef3713 100644 --- a/src/code/posting/qr.coffee +++ b/src/code/posting/qr.coffee @@ -79,6 +79,7 @@ QR = QR.cleanNotifications() d.activeElement.blur() $.rmClass QR.nodes.el, 'dump' + $.toggleClass $('.qr-shortcut'), 'disabled' for i in QR.posts QR.posts[0].rm() QR.cooldown.auto = false From cdff50fc17a5caf0a121c5c79970c9e7e50e753a Mon Sep 17 00:00:00 2001 From: Jordan Bates Date: Thu, 18 Apr 2013 08:42:08 -0700 Subject: [PATCH 07/15] Fix empty string being passed to $.id --- builds/4chan-X.user.js | 2 +- src/code/misc/header.coffee | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js index 983a0807f..482ddec2e 100644 --- a/builds/4chan-X.user.js +++ b/builds/4chan-X.user.js @@ -4798,7 +4798,7 @@ hashScroll: function() { var post; - if (!(post = $.id(this.location.hash.slice(1)))) { + if (!(post = this.location.hash.slice(1))) { return; } if ((Get.postFromRoot(post)).isHidden) { diff --git a/src/code/misc/header.coffee b/src/code/misc/header.coffee index 9f9327d6a..13f4c6280 100644 --- a/src/code/misc/header.coffee +++ b/src/code/misc/header.coffee @@ -178,7 +178,7 @@ Header = (if hide then $.addClass else $.rmClass) Header.nav, 'autohide' hashScroll: -> - return unless post = $.id @location.hash[1..] + return unless post = @location.hash[1..] return if (Get.postFromRoot post).isHidden Header.scrollToPost post From f0c185c1e784f9b84424e9211d2e96749b287e4d Mon Sep 17 00:00:00 2001 From: Jordan Bates Date: Thu, 18 Apr 2013 11:03:02 -0700 Subject: [PATCH 08/15] Override mime type, avoid element not found error in updater --- builds/4chan-X.js | 3 ++- builds/4chan-X.user.js | 1 + builds/crx/script.js | 3 ++- src/lib/$.coffee | 1 + 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/builds/4chan-X.js b/builds/4chan-X.js index 8402f8522..3f85d878f 100644 --- a/builds/4chan-X.js +++ b/builds/4chan-X.js @@ -351,6 +351,7 @@ } type = opts.type, cred = opts.cred, headers = opts.headers, upCallbacks = opts.upCallbacks, form = opts.form, sync = opts.sync; r = new XMLHttpRequest(); + r.overrideMimeType('text/html'); type || (type = form && 'post' || 'get'); r.open(type, url, !sync); for (key in headers) { @@ -4806,7 +4807,7 @@ hashScroll: function() { var post; - if (!(post = $.id(this.location.hash.slice(1)))) { + if (!(post = this.location.hash.slice(1))) { return; } if ((Get.postFromRoot(post)).isHidden) { diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js index 482ddec2e..bb942cd70 100644 --- a/builds/4chan-X.user.js +++ b/builds/4chan-X.user.js @@ -348,6 +348,7 @@ } type = opts.type, cred = opts.cred, headers = opts.headers, upCallbacks = opts.upCallbacks, form = opts.form, sync = opts.sync; r = new XMLHttpRequest(); + r.overrideMimeType('text/html'); type || (type = form && 'post' || 'get'); r.open(type, url, !sync); for (key in headers) { diff --git a/builds/crx/script.js b/builds/crx/script.js index fb4c06ff8..09ee47da5 100644 --- a/builds/crx/script.js +++ b/builds/crx/script.js @@ -303,6 +303,7 @@ } type = opts.type, cred = opts.cred, headers = opts.headers, upCallbacks = opts.upCallbacks, form = opts.form, sync = opts.sync; r = new XMLHttpRequest(); + r.overrideMimeType('text/html'); type || (type = form && 'post' || 'get'); r.open(type, url, !sync); for (key in headers) { @@ -4719,7 +4720,7 @@ hashScroll: function() { var post; - if (!(post = $.id(this.location.hash.slice(1)))) { + if (!(post = this.location.hash.slice(1))) { return; } if ((Get.postFromRoot(post)).isHidden) { diff --git a/src/lib/$.coffee b/src/lib/$.coffee index c97d870a5..59b6c1195 100644 --- a/src/lib/$.coffee +++ b/src/lib/$.coffee @@ -77,6 +77,7 @@ $.extend $, ajax: (url, callbacks, opts={}) -> {type, cred, headers, upCallbacks, form, sync} = opts r = new XMLHttpRequest() + r.overrideMimeType 'text/html' type or= form and 'post' or 'get' r.open type, url, !sync for key, val of headers From 40884af79c048a609f06cee3d0f43d330e43ce68 Mon Sep 17 00:00:00 2001 From: Jordan Bates Date: Thu, 18 Apr 2013 11:16:18 -0700 Subject: [PATCH 09/15] Add text cursor to file input in QR --- builds/4chan-X.js | 2 +- builds/4chan-X.user.js | 2 +- builds/crx/script.js | 2 +- src/css/style.css | 3 +++ 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/builds/4chan-X.js b/builds/4chan-X.js index 3f85d878f..b78810aad 100644 --- a/builds/4chan-X.js +++ b/builds/4chan-X.js @@ -9235,7 +9235,7 @@ } return Main.thisPageIsLegit; }, - css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\nfont-size: 13px !important;\nopacity: 1.0 !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #boardNavDesktop,\n#qr {\nposition: fixed;\n}\n#watcher {\nposition: absolute;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #boardNavDesktop {\nz-index: 10;\n}\n/* Header */\n.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n#boardNavDesktop {\nfloat: left;\n}\n.fixed #boardNavDesktop {\nfloat: none;\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #boardNavDesktop {\ntop: 0;\n}\n.fixed.bottom #boardNavDesktop {\nbottom: 0;\n}\n#boardNavDesktop {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #boardNavDesktop {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #boardNavDesktop {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #boardNavDesktop .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #boardNavDesktop.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #boardNavDesktop.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #boardNavDesktop.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#toggle-header-bar {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#boardNavDesktop #toggle-header-bar {\ndisplay: none;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ndisplay: block;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ncursor: n-resize;\n}\n.fixed.top boardNavDesktop #toggle-header-bar {\ntop: 100%;\n}\n.fixed.bottom #boardNavDesktop #toggle-header-bar {\nbottom: 100%;\n}\n.fixed #boardNavDesktop #header-bar.autohide #toggle-header-bar {\ncursor: s-resize;\n}\n#boardNavDesktop a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n#navtopright a {\ntext-decoration: none;\n}\n\n/* Notifications */\n#notifications {\nheight: 0;\ntext-align: center;\nposition: fixed;\ntop: 0;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.top:not(.autohide) ~ #notifications {\ntop: 2em;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 0;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\nheight: 15px;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 2.1em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\npadding-top: 10px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form,\n.postingMode ~ #qr select,\n#file-n-submit:not(.has-file) #qr-filerm {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\nfont: 13px sans-serif;\npadding: 1px 0px 2px;\n}\n.persona .field:not(#dump) {\nwidth: 95px;\nmin-width: 30%;\nmax-width: 30%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 0px;\ntext-align: center;\nbackground-image: #fff;\nfont-size: 0px;\nmin-height: 59px;\nmin-width: 302px;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice {\n-moz-box-sizing: border-box;\nmargin: 0px;\npadding: 2px 4px 3px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\nvertical-align: top;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\npadding: 0px 4px;\nmargin-bottom: 2px;\n}\n#qr-no-file {\ncolor: #AAA;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\nmargin-top: 1px;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filerm {\nposition: relative;\nright: 14px;\nbottom: 6px;\nmargin-right: -8px;\nz-index: 2;\n}\n#file-n-submit {\nheight: 23px;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n" + css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\nfont-size: 13px !important;\nopacity: 1.0 !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #boardNavDesktop,\n#qr {\nposition: fixed;\n}\n#watcher {\nposition: absolute;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #boardNavDesktop {\nz-index: 10;\n}\n/* Header */\n.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n#boardNavDesktop {\nfloat: left;\n}\n.fixed #boardNavDesktop {\nfloat: none;\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #boardNavDesktop {\ntop: 0;\n}\n.fixed.bottom #boardNavDesktop {\nbottom: 0;\n}\n#boardNavDesktop {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #boardNavDesktop {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #boardNavDesktop {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #boardNavDesktop .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #boardNavDesktop.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #boardNavDesktop.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #boardNavDesktop.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#toggle-header-bar {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#boardNavDesktop #toggle-header-bar {\ndisplay: none;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ndisplay: block;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ncursor: n-resize;\n}\n.fixed.top boardNavDesktop #toggle-header-bar {\ntop: 100%;\n}\n.fixed.bottom #boardNavDesktop #toggle-header-bar {\nbottom: 100%;\n}\n.fixed #boardNavDesktop #header-bar.autohide #toggle-header-bar {\ncursor: s-resize;\n}\n#boardNavDesktop a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n#navtopright a {\ntext-decoration: none;\n}\n\n/* Notifications */\n#notifications {\nheight: 0;\ntext-align: center;\nposition: fixed;\ntop: 0;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.top:not(.autohide) ~ #notifications {\ntop: 2em;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 0;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\nheight: 15px;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 2.1em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\npadding-top: 10px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form,\n.postingMode ~ #qr select,\n#file-n-submit:not(.has-file) #qr-filerm {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\nfont: 13px sans-serif;\npadding: 1px 0px 2px;\n}\n.persona .field:not(#dump) {\nwidth: 95px;\nmin-width: 30%;\nmax-width: 30%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 0px;\ntext-align: center;\nbackground-image: #fff;\nfont-size: 0px;\nmin-height: 59px;\nmin-width: 302px;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice {\n-moz-box-sizing: border-box;\nmargin: 0px;\npadding: 2px 4px 3px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\nvertical-align: top;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\npadding: 0px 4px;\nmargin-bottom: 2px;\n}\n#qr-no-file {\ncolor: #AAA;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\nmargin-top: 1px;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filename-container:hover {\ncursor: text;\n}\n#qr-filerm {\nposition: relative;\nright: 14px;\nbottom: 6px;\nmargin-right: -8px;\nz-index: 2;\n}\n#file-n-submit {\nheight: 23px;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n" }; Main.init(); diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js index bb942cd70..62cba2e50 100644 --- a/builds/4chan-X.user.js +++ b/builds/4chan-X.user.js @@ -9254,7 +9254,7 @@ } return Main.thisPageIsLegit; }, - css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\nfont-size: 13px !important;\nopacity: 1.0 !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #boardNavDesktop,\n#qr {\nposition: fixed;\n}\n#watcher {\nposition: absolute;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #boardNavDesktop {\nz-index: 10;\n}\n/* Header */\n.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n#boardNavDesktop {\nfloat: left;\n}\n.fixed #boardNavDesktop {\nfloat: none;\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #boardNavDesktop {\ntop: 0;\n}\n.fixed.bottom #boardNavDesktop {\nbottom: 0;\n}\n#boardNavDesktop {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #boardNavDesktop {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #boardNavDesktop {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #boardNavDesktop .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #boardNavDesktop.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #boardNavDesktop.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #boardNavDesktop.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#toggle-header-bar {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#boardNavDesktop #toggle-header-bar {\ndisplay: none;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ndisplay: block;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ncursor: n-resize;\n}\n.fixed.top boardNavDesktop #toggle-header-bar {\ntop: 100%;\n}\n.fixed.bottom #boardNavDesktop #toggle-header-bar {\nbottom: 100%;\n}\n.fixed #boardNavDesktop #header-bar.autohide #toggle-header-bar {\ncursor: s-resize;\n}\n#boardNavDesktop a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n#navtopright a {\ntext-decoration: none;\n}\n\n/* Notifications */\n#notifications {\nheight: 0;\ntext-align: center;\nposition: fixed;\ntop: 0;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.top:not(.autohide) ~ #notifications {\ntop: 2em;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 0;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\nheight: 15px;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 2.1em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\npadding-top: 10px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form,\n.postingMode ~ #qr select,\n#file-n-submit:not(.has-file) #qr-filerm {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\nfont: 13px sans-serif;\npadding: 1px 0px 2px;\n}\n.persona .field:not(#dump) {\nwidth: 95px;\nmin-width: 30%;\nmax-width: 30%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 0px;\ntext-align: center;\nbackground-image: #fff;\nfont-size: 0px;\nmin-height: 59px;\nmin-width: 302px;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice {\n-moz-box-sizing: border-box;\nmargin: 0px;\npadding: 2px 4px 3px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\nvertical-align: top;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\npadding: 0px 4px;\nmargin-bottom: 2px;\n}\n#qr-no-file {\ncolor: #AAA;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\nmargin-top: 1px;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filerm {\nposition: relative;\nright: 14px;\nbottom: 6px;\nmargin-right: -8px;\nz-index: 2;\n}\n#file-n-submit {\nheight: 23px;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n" + css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\nfont-size: 13px !important;\nopacity: 1.0 !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #boardNavDesktop,\n#qr {\nposition: fixed;\n}\n#watcher {\nposition: absolute;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #boardNavDesktop {\nz-index: 10;\n}\n/* Header */\n.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n#boardNavDesktop {\nfloat: left;\n}\n.fixed #boardNavDesktop {\nfloat: none;\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #boardNavDesktop {\ntop: 0;\n}\n.fixed.bottom #boardNavDesktop {\nbottom: 0;\n}\n#boardNavDesktop {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #boardNavDesktop {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #boardNavDesktop {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #boardNavDesktop .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #boardNavDesktop.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #boardNavDesktop.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #boardNavDesktop.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#toggle-header-bar {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#boardNavDesktop #toggle-header-bar {\ndisplay: none;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ndisplay: block;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ncursor: n-resize;\n}\n.fixed.top boardNavDesktop #toggle-header-bar {\ntop: 100%;\n}\n.fixed.bottom #boardNavDesktop #toggle-header-bar {\nbottom: 100%;\n}\n.fixed #boardNavDesktop #header-bar.autohide #toggle-header-bar {\ncursor: s-resize;\n}\n#boardNavDesktop a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n#navtopright a {\ntext-decoration: none;\n}\n\n/* Notifications */\n#notifications {\nheight: 0;\ntext-align: center;\nposition: fixed;\ntop: 0;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.top:not(.autohide) ~ #notifications {\ntop: 2em;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 0;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\nheight: 15px;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 2.1em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\npadding-top: 10px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form,\n.postingMode ~ #qr select,\n#file-n-submit:not(.has-file) #qr-filerm {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\nfont: 13px sans-serif;\npadding: 1px 0px 2px;\n}\n.persona .field:not(#dump) {\nwidth: 95px;\nmin-width: 30%;\nmax-width: 30%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 0px;\ntext-align: center;\nbackground-image: #fff;\nfont-size: 0px;\nmin-height: 59px;\nmin-width: 302px;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice {\n-moz-box-sizing: border-box;\nmargin: 0px;\npadding: 2px 4px 3px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\nvertical-align: top;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\npadding: 0px 4px;\nmargin-bottom: 2px;\n}\n#qr-no-file {\ncolor: #AAA;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\nmargin-top: 1px;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filename-container:hover {\ncursor: text;\n}\n#qr-filerm {\nposition: relative;\nright: 14px;\nbottom: 6px;\nmargin-right: -8px;\nz-index: 2;\n}\n#file-n-submit {\nheight: 23px;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n" }; Main.init(); diff --git a/builds/crx/script.js b/builds/crx/script.js index 09ee47da5..4ba114869 100644 --- a/builds/crx/script.js +++ b/builds/crx/script.js @@ -9154,7 +9154,7 @@ } return Main.thisPageIsLegit; }, - css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\nfont-size: 13px !important;\nopacity: 1.0 !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #boardNavDesktop,\n#qr {\nposition: fixed;\n}\n#watcher {\nposition: absolute;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #boardNavDesktop {\nz-index: 10;\n}\n/* Header */\n.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n#boardNavDesktop {\nfloat: left;\n}\n.fixed #boardNavDesktop {\nfloat: none;\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #boardNavDesktop {\ntop: 0;\n}\n.fixed.bottom #boardNavDesktop {\nbottom: 0;\n}\n#boardNavDesktop {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #boardNavDesktop {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #boardNavDesktop {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #boardNavDesktop .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #boardNavDesktop.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #boardNavDesktop.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #boardNavDesktop.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#toggle-header-bar {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#boardNavDesktop #toggle-header-bar {\ndisplay: none;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ndisplay: block;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ncursor: n-resize;\n}\n.fixed.top boardNavDesktop #toggle-header-bar {\ntop: 100%;\n}\n.fixed.bottom #boardNavDesktop #toggle-header-bar {\nbottom: 100%;\n}\n.fixed #boardNavDesktop #header-bar.autohide #toggle-header-bar {\ncursor: s-resize;\n}\n#boardNavDesktop a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n#navtopright a {\ntext-decoration: none;\n}\n\n/* Notifications */\n#notifications {\nheight: 0;\ntext-align: center;\nposition: fixed;\ntop: 0;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.top:not(.autohide) ~ #notifications {\ntop: 2em;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 0;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\nheight: 15px;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 2.1em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\npadding-top: 10px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form,\n.postingMode ~ #qr select,\n#file-n-submit:not(.has-file) #qr-filerm {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\nfont: 13px sans-serif;\npadding: 1px 0px 2px;\n}\n.persona .field:not(#dump) {\nwidth: 95px;\nmin-width: 30%;\nmax-width: 30%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 0px;\ntext-align: center;\nbackground-image: #fff;\nfont-size: 0px;\nmin-height: 59px;\nmin-width: 302px;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice {\n-moz-box-sizing: border-box;\nmargin: 0px;\npadding: 2px 4px 3px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\nvertical-align: top;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\npadding: 0px 4px;\nmargin-bottom: 2px;\n}\n#qr-no-file {\ncolor: #AAA;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\nmargin-top: 1px;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filerm {\nposition: relative;\nright: 14px;\nbottom: 6px;\nmargin-right: -8px;\nz-index: 2;\n}\n#file-n-submit {\nheight: 23px;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n" + css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\nfont-size: 13px !important;\nopacity: 1.0 !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #boardNavDesktop,\n#qr {\nposition: fixed;\n}\n#watcher {\nposition: absolute;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #boardNavDesktop {\nz-index: 10;\n}\n/* Header */\n.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n#boardNavDesktop {\nfloat: left;\n}\n.fixed #boardNavDesktop {\nfloat: none;\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #boardNavDesktop {\ntop: 0;\n}\n.fixed.bottom #boardNavDesktop {\nbottom: 0;\n}\n#boardNavDesktop {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #boardNavDesktop {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #boardNavDesktop {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #boardNavDesktop .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #boardNavDesktop.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #boardNavDesktop.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #boardNavDesktop.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#toggle-header-bar {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#boardNavDesktop #toggle-header-bar {\ndisplay: none;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ndisplay: block;\n}\n.fixed #boardNavDesktop #toggle-header-bar {\ncursor: n-resize;\n}\n.fixed.top boardNavDesktop #toggle-header-bar {\ntop: 100%;\n}\n.fixed.bottom #boardNavDesktop #toggle-header-bar {\nbottom: 100%;\n}\n.fixed #boardNavDesktop #header-bar.autohide #toggle-header-bar {\ncursor: s-resize;\n}\n#boardNavDesktop a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n#navtopright a {\ntext-decoration: none;\n}\n\n/* Notifications */\n#notifications {\nheight: 0;\ntext-align: center;\nposition: fixed;\ntop: 0;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.top:not(.autohide) ~ #notifications {\ntop: 2em;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 0;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\nheight: 15px;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 2.1em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\npadding-top: 10px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form,\n.postingMode ~ #qr select,\n#file-n-submit:not(.has-file) #qr-filerm {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\nfont: 13px sans-serif;\npadding: 1px 0px 2px;\n}\n.persona .field:not(#dump) {\nwidth: 95px;\nmin-width: 30%;\nmax-width: 30%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 0px;\ntext-align: center;\nbackground-image: #fff;\nfont-size: 0px;\nmin-height: 59px;\nmin-width: 302px;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice {\n-moz-box-sizing: border-box;\nmargin: 0px;\npadding: 2px 4px 3px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\nvertical-align: top;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\npadding: 0px 4px;\nmargin-bottom: 2px;\n}\n#qr-no-file {\ncolor: #AAA;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\nmargin-top: 1px;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filename-container:hover {\ncursor: text;\n}\n#qr-filerm {\nposition: relative;\nright: 14px;\nbottom: 6px;\nmargin-right: -8px;\nz-index: 2;\n}\n#file-n-submit {\nheight: 23px;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n" }; Main.init(); diff --git a/src/css/style.css b/src/css/style.css index 80ef9056f..f8f9d9d32 100644 --- a/src/css/style.css +++ b/src/css/style.css @@ -662,6 +662,9 @@ input.field.tripped:not(:hover):not(:focus) { overflow: hidden; padding: 2px 1px 0; } +#qr-filename-container:hover { + cursor: text; +} #qr-filerm { position: relative; right: 14px; From bb27535de8f24793d7100cd5c273f5bdfaed2c53 Mon Sep 17 00:00:00 2001 From: Jordan Bates Date: Thu, 18 Apr 2013 21:12:21 -0700 Subject: [PATCH 10/15] Don't forget to remove disabled class on quote --- builds/4chan-X.js | 3 ++- builds/4chan-X.user.js | 3 ++- builds/crx/script.js | 3 ++- src/code/posting/qr.coffee | 2 ++ 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/builds/4chan-X.js b/builds/4chan-X.js index b78810aad..42654693c 100644 --- a/builds/4chan-X.js +++ b/builds/4chan-X.js @@ -6860,7 +6860,8 @@ com.setSelectionRange(range, range); com.focus(); QR.selected.save(com); - return QR.selected.save(thread); + QR.selected.save(thread); + return $.rmClass($('.qr-shortcut'), 'disabled'); }, characterCount: function() { var count, counter; diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js index 62cba2e50..4c88dd878 100644 --- a/builds/4chan-X.user.js +++ b/builds/4chan-X.user.js @@ -6852,7 +6852,8 @@ com.setSelectionRange(range, range); com.focus(); QR.selected.save(com); - return QR.selected.save(thread); + QR.selected.save(thread); + return $.rmClass($('.qr-shortcut'), 'disabled'); }, characterCount: function() { var count, counter; diff --git a/builds/crx/script.js b/builds/crx/script.js index 4ba114869..7f3917f41 100644 --- a/builds/crx/script.js +++ b/builds/crx/script.js @@ -6779,7 +6779,8 @@ com.setSelectionRange(range, range); com.focus(); QR.selected.save(com); - return QR.selected.save(thread); + QR.selected.save(thread); + return $.rmClass($('.qr-shortcut'), 'disabled'); }, characterCount: function() { var count, counter; diff --git a/src/code/posting/qr.coffee b/src/code/posting/qr.coffee index 91cef3713..2505b2b63 100644 --- a/src/code/posting/qr.coffee +++ b/src/code/posting/qr.coffee @@ -294,6 +294,8 @@ QR = QR.selected.save com QR.selected.save thread + $.rmClass $('.qr-shortcut'), 'disabled' + characterCount: -> counter = QR.nodes.charCount count = QR.nodes.com.textLength From 23bed0ede722d87f536d04d657edb4cb7f32392b Mon Sep 17 00:00:00 2001 From: Zixaphir Date: Thu, 18 Apr 2013 23:16:48 -0700 Subject: [PATCH 11/15] Completely remove Unread functionality from Quote Threading And make Unread Quote Threading aware. Also kill Random Access List --- builds/4chan-X.js | 215 +++++-------------------- builds/4chan-X.user.js | 215 +++++-------------------- builds/crx/script.js | 215 +++++-------------------- src/code/monitoring/unread.coffee | 48 +++--- src/code/quoting/quotethreading.coffee | 59 ++----- src/lib/classes.coffee | 3 +- src/lib/randomaccesslist.class | 50 ------ 7 files changed, 162 insertions(+), 643 deletions(-) delete mode 100644 src/lib/randomaccesslist.class diff --git a/builds/4chan-X.js b/builds/4chan-X.js index dbeae9a09..89800ad53 100644 --- a/builds/4chan-X.js +++ b/builds/4chan-X.js @@ -43,7 +43,7 @@ */ (function() { - var $, $$, Anonymize, ArchiveLink, Board, Build, CatalogLinks, Clone, Conf, Config, CustomCSS, DataBoard, DataBoards, DeleteLink, DownloadLink, ExpandComment, ExpandThread, Favicon, FileInfo, Filter, Fourchan, Get, Header, ImageExpand, ImageHover, ImageReplace, Keybinds, Linkify, Main, Menu, Nav, Notification, PSAHiding, Polyfill, Post, PostHiding, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, RandomAccessList, Recursive, Redirect, RelativeDates, Report, ReportLink, RevealSpoilers, Sauce, Settings, Thread, ThreadExcerpt, ThreadHiding, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, c, d, doc, g, + var $, $$, Anonymize, ArchiveLink, Board, Build, CatalogLinks, Clone, Conf, Config, CustomCSS, DataBoard, DataBoards, DeleteLink, DownloadLink, ExpandComment, ExpandThread, Favicon, FileInfo, Filter, Fourchan, Get, Header, ImageExpand, ImageHover, ImageReplace, Keybinds, Linkify, Main, Menu, Nav, Notification, PSAHiding, Polyfill, Post, PostHiding, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, Recursive, Redirect, RelativeDates, Report, ReportLink, RevealSpoilers, Sauce, Settings, Thread, ThreadExcerpt, ThreadHiding, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, c, d, doc, g, __slice = [].slice, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, @@ -1446,79 +1446,6 @@ })(); - RandomAccessList = (function() { - function RandomAccessList() { - this.first = null; - this.last = null; - this.length = 0; - } - - RandomAccessList.prototype.push = function(id, post) { - var item, last; - - last = this.last; - this[id] = item = post; - item.prev = last; - item.next = null; - this.last = item; - if (last) { - last.next = item; - } else { - this.first = item; - } - return this.length++; - }; - - RandomAccessList.prototype.shift = function() { - return this.rm(this.first.ID); - }; - - RandomAccessList.prototype.after = function(root, item) { - var next; - - if (item.prev === root) { - return; - } - this.rmi(item); - next = root.next; - root.next = item; - item.prev = root; - item.next = next; - return next.prev = item; - }; - - RandomAccessList.prototype.rm = function(id) { - var item; - - item = this[id]; - if (!item) { - return; - } - delete this[id]; - this.length--; - return this.rmi(item); - }; - - RandomAccessList.prototype.rmi = function(item) { - var next, prev; - - prev = item.prev, next = item.next; - if (prev) { - prev.next = next; - } else { - this.first = next; - } - if (next) { - return next.prev = prev; - } else { - return this.last = prev; - } - }; - - return RandomAccessList; - - })(); - Get = { threadExcerpt: function(thread) { var OP, excerpt, _ref; @@ -6377,7 +6304,7 @@ this.hr = $.el('hr', { id: 'unread-line' }); - this.posts = new RandomAccessList; + this.posts = []; this.postsQuotingYou = []; return Thread.prototype.callbacks.push({ name: 'Unread', @@ -6461,16 +6388,14 @@ continue; } } - Unread.posts.push(ID, post); + Unread.posts.push(post); Unread.addPostQuotingYou(post); } if (Conf['Unread Line']) { - Unread.setLine(newPosts.contains(Unread.posts.first)); - } - if (!Conf['Quote Threading']) { - Unread.read(); - return Unread.update(); + Unread.setLine(newPosts.contains(Unread.posts[0])); } + Unread.read(); + return Unread.update(); }, addPostQuotingYou: function(post) { var quotelink, _i, _len, _ref; @@ -6494,15 +6419,14 @@ } }, readSinglePost: function(post) { - var ID, i; + var i; - ID = post.ID; - if (!Unread.posts[ID]) { + if ((i = Unread.posts.indexOf(post)) === -1) { return; } - Unread.posts.rm(ID); - if (!Unread.posts.first) { - Unread.lastReadPost = ID; + Unread.posts.splice(i, 1); + if (i === 0) { + Unread.lastReadPost = post.ID; Unread.saveLastReadPost(); } if ((i = Unread.postsQuotingYou.indexOf(post)) !== -1) { @@ -6510,20 +6434,6 @@ } return Unread.update(); }, - readRAL: function(ral) { - var item, items, post, _i, _len, _results; - - items = []; - for (post in ral) { - items.push(post.ID > Unread.lastReadPost); - } - _results = []; - for (_i = 0, _len = items.length; _i < _len; _i++) { - item = items[_i]; - _results.push(ral.rm(item)); - } - return _results; - }, readArray: function(arr) { var i, post, _i, _len; @@ -6536,28 +6446,26 @@ return arr.splice(0, i); }, read: function(e) { - var bottom, height, key, post, posts; + var bottom, height, i, post, posts, read, top, _ref; if (d.hidden || !Unread.posts.length) { return; } - posts = Unread.posts; height = doc.clientHeight; - for (key in posts) { - post = posts[key]; - if (!posts.hasOwnProperty(key)) { - continue; + posts = Unread.posts; + read = []; + i = posts.length; + while (post = posts[--i]) { + _ref = post.nodes.root.getBoundingClientRect(), bottom = _ref.bottom, top = _ref.top; + if ((bottom < height) && (top > 0)) { + read.push(post); + posts.remove(post); } - bottom = post.nodes.root.getBoundingClientRect().bottom; - if (bottom > height) { - break; - } - Unread.posts.rm(post); } - if (!post) { + if (!read.length) { return; } - Unread.lastReadPost = post.ID; + Unread.lastReadPost = read[read.length - 1].ID; Unread.saveLastReadPost(); Unread.readArray(Unread.postsQuotingYou); if (e) { @@ -8278,79 +8186,51 @@ $.off(d, '4chanXInitFinished', QuoteThreading.setup); posts = g.posts; - Unread.read(); - Unread.update(); for (ID in posts) { post = posts[ID]; if (post.cb) { post.cb.call(post); } } - return; return QuoteThreading.hasRun = true; }, node: function() { - var ID, keys, len, post, posts, qid, quote, quotes, uniq, _i, _j, _len, _len1; + var ID, fullID, keys, len, post, posts, qid, quote, quotes, uniq, _i, _len; if (this.isClone || !QuoteThreading.enabled || this.thread.OP === this) { return; } - quotes = this.quotes, ID = this.ID; - if (QuoteThreading.hasRun) { - posts = Unread.posts; - if (!(post = posts[ID]) || post.isHidden) { - return; - } - } else { - posts = g.posts; - if (!(post = posts["" + g.BOARD + "." + ID]) || post.isHidden) { - return; - } + quotes = this.quotes, ID = this.ID, fullID = this.fullID; + posts = g.posts; + if (!(post = posts[fullID]) || post.isHidden) { + return; } uniq = {}; - if (QuoteThreading.hasRun) { - for (_i = 0, _len = quotes.length; _i < _len; _i++) { - quote = quotes[_i]; - qid = quote.slice(2); - if (!(qid < ID)) { - continue; - } - if (qid in posts) { - uniq[qid] = true; - } + len = ("" + g.BOARD).length + 1; + for (_i = 0, _len = quotes.length; _i < _len; _i++) { + quote = quotes[_i]; + qid = quote; + if (!(qid.slice(len) < ID)) { + continue; } - } else { - len = ("" + g.BOARD).length + 1; - for (_j = 0, _len1 = quotes.length; _j < _len1; _j++) { - quote = quotes[_j]; - qid = quote; - if (!(qid.slice(len) < ID)) { - continue; - } - if (qid in posts) { - uniq[qid.slice(len)] = true; - } + if (qid in posts) { + uniq[qid.slice(len)] = true; } } keys = Object.keys(uniq); if (keys.length !== 1) { return; } - this.threaded = keys[0]; + this.threaded = "" + g.BOARD + "." + keys[0]; return this.cb = QuoteThreading.nodeinsert; }, nodeinsert: function() { - var pEl, pid, post, posts, ppost, qid, qpost, qroot, threadContainer, unread; + var posts, qpost, qroot, threadContainer; - qid = this.threaded; - if (QuoteThreading.hasRun) { - posts = Unread.posts; - qpost = posts[qid]; - } else { - posts = g.posts; - unread = Unread.posts; - qpost = posts["" + g.BOARD + "." + qid]; - } + posts = g.posts; + qpost = posts[this.threaded]; + delete this.threaded; + delete this.cb; if (this.thread.OP === qpost) { return; } @@ -8362,18 +8242,7 @@ }); $.after(qroot, threadContainer); } - $.add(threadContainer, this.nodes.root); - pEl = $.x('preceding::div[contains(@class,"post reply")][1]/parent::div', this.nodes.root); - pid = pEl.id.slice(2); - if (QuoteThreading.hasRun) { - ppost = posts[pid]; - } else { - ppost = posts[pid]; - if (!((post = unread["" + g.BOARD + "." + this.id]) && (ppost = unread["" + g.BOARD + "." + pid]))) { - return; - } - } - return posts.after(ppost, this); + return $.add(threadContainer, this.nodes.root); }, toggle: function() { var container, containers, node, nodes, replies, reply, thread, _i, _j, _k, _len, _len1, _len2, _results; diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js index b15f54528..870a7801f 100644 --- a/builds/4chan-X.user.js +++ b/builds/4chan-X.user.js @@ -43,7 +43,7 @@ */ (function() { - var $, $$, Anonymize, ArchiveLink, Board, Build, CatalogLinks, Clone, Conf, Config, CustomCSS, DataBoard, DataBoards, DeleteLink, DownloadLink, ExpandComment, ExpandThread, Favicon, FileInfo, Filter, Fourchan, Get, Header, ImageExpand, ImageHover, ImageReplace, Keybinds, Linkify, Main, Menu, Nav, Notification, PSAHiding, Polyfill, Post, PostHiding, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, RandomAccessList, Recursive, Redirect, RelativeDates, Report, ReportLink, RevealSpoilers, Sauce, Settings, Thread, ThreadExcerpt, ThreadHiding, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, c, d, doc, g, + var $, $$, Anonymize, ArchiveLink, Board, Build, CatalogLinks, Clone, Conf, Config, CustomCSS, DataBoard, DataBoards, DeleteLink, DownloadLink, ExpandComment, ExpandThread, Favicon, FileInfo, Filter, Fourchan, Get, Header, ImageExpand, ImageHover, ImageReplace, Keybinds, Linkify, Main, Menu, Nav, Notification, PSAHiding, Polyfill, Post, PostHiding, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, Recursive, Redirect, RelativeDates, Report, ReportLink, RevealSpoilers, Sauce, Settings, Thread, ThreadExcerpt, ThreadHiding, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, c, d, doc, g, __slice = [].slice, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, @@ -1437,79 +1437,6 @@ })(); - RandomAccessList = (function() { - function RandomAccessList() { - this.first = null; - this.last = null; - this.length = 0; - } - - RandomAccessList.prototype.push = function(id, post) { - var item, last; - - last = this.last; - this[id] = item = post; - item.prev = last; - item.next = null; - this.last = item; - if (last) { - last.next = item; - } else { - this.first = item; - } - return this.length++; - }; - - RandomAccessList.prototype.shift = function() { - return this.rm(this.first.ID); - }; - - RandomAccessList.prototype.after = function(root, item) { - var next; - - if (item.prev === root) { - return; - } - this.rmi(item); - next = root.next; - root.next = item; - item.prev = root; - item.next = next; - return next.prev = item; - }; - - RandomAccessList.prototype.rm = function(id) { - var item; - - item = this[id]; - if (!item) { - return; - } - delete this[id]; - this.length--; - return this.rmi(item); - }; - - RandomAccessList.prototype.rmi = function(item) { - var next, prev; - - prev = item.prev, next = item.next; - if (prev) { - prev.next = next; - } else { - this.first = next; - } - if (next) { - return next.prev = prev; - } else { - return this.last = prev; - } - }; - - return RandomAccessList; - - })(); - Get = { threadExcerpt: function(thread) { var OP, excerpt, _ref; @@ -6369,7 +6296,7 @@ this.hr = $.el('hr', { id: 'unread-line' }); - this.posts = new RandomAccessList; + this.posts = []; this.postsQuotingYou = []; return Thread.prototype.callbacks.push({ name: 'Unread', @@ -6453,16 +6380,14 @@ continue; } } - Unread.posts.push(ID, post); + Unread.posts.push(post); Unread.addPostQuotingYou(post); } if (Conf['Unread Line']) { - Unread.setLine(newPosts.contains(Unread.posts.first)); - } - if (!Conf['Quote Threading']) { - Unread.read(); - return Unread.update(); + Unread.setLine(newPosts.contains(Unread.posts[0])); } + Unread.read(); + return Unread.update(); }, addPostQuotingYou: function(post) { var quotelink, _i, _len, _ref; @@ -6486,15 +6411,14 @@ } }, readSinglePost: function(post) { - var ID, i; + var i; - ID = post.ID; - if (!Unread.posts[ID]) { + if ((i = Unread.posts.indexOf(post)) === -1) { return; } - Unread.posts.rm(ID); - if (!Unread.posts.first) { - Unread.lastReadPost = ID; + Unread.posts.splice(i, 1); + if (i === 0) { + Unread.lastReadPost = post.ID; Unread.saveLastReadPost(); } if ((i = Unread.postsQuotingYou.indexOf(post)) !== -1) { @@ -6502,20 +6426,6 @@ } return Unread.update(); }, - readRAL: function(ral) { - var item, items, post, _i, _len, _results; - - items = []; - for (post in ral) { - items.push(post.ID > Unread.lastReadPost); - } - _results = []; - for (_i = 0, _len = items.length; _i < _len; _i++) { - item = items[_i]; - _results.push(ral.rm(item)); - } - return _results; - }, readArray: function(arr) { var i, post, _i, _len; @@ -6528,28 +6438,26 @@ return arr.splice(0, i); }, read: function(e) { - var bottom, height, key, post, posts; + var bottom, height, i, post, posts, read, top, _ref; if (d.hidden || !Unread.posts.length) { return; } - posts = Unread.posts; height = doc.clientHeight; - for (key in posts) { - post = posts[key]; - if (!posts.hasOwnProperty(key)) { - continue; + posts = Unread.posts; + read = []; + i = posts.length; + while (post = posts[--i]) { + _ref = post.nodes.root.getBoundingClientRect(), bottom = _ref.bottom, top = _ref.top; + if ((bottom < height) && (top > 0)) { + read.push(post); + posts.remove(post); } - bottom = post.nodes.root.getBoundingClientRect().bottom; - if (bottom > height) { - break; - } - Unread.posts.rm(post); } - if (!post) { + if (!read.length) { return; } - Unread.lastReadPost = post.ID; + Unread.lastReadPost = read[read.length - 1].ID; Unread.saveLastReadPost(); Unread.readArray(Unread.postsQuotingYou); if (e) { @@ -8295,79 +8203,51 @@ $.off(d, '4chanXInitFinished', QuoteThreading.setup); posts = g.posts; - Unread.read(); - Unread.update(); for (ID in posts) { post = posts[ID]; if (post.cb) { post.cb.call(post); } } - return; return QuoteThreading.hasRun = true; }, node: function() { - var ID, keys, len, post, posts, qid, quote, quotes, uniq, _i, _j, _len, _len1; + var ID, fullID, keys, len, post, posts, qid, quote, quotes, uniq, _i, _len; if (this.isClone || !QuoteThreading.enabled || this.thread.OP === this) { return; } - quotes = this.quotes, ID = this.ID; - if (QuoteThreading.hasRun) { - posts = Unread.posts; - if (!(post = posts[ID]) || post.isHidden) { - return; - } - } else { - posts = g.posts; - if (!(post = posts["" + g.BOARD + "." + ID]) || post.isHidden) { - return; - } + quotes = this.quotes, ID = this.ID, fullID = this.fullID; + posts = g.posts; + if (!(post = posts[fullID]) || post.isHidden) { + return; } uniq = {}; - if (QuoteThreading.hasRun) { - for (_i = 0, _len = quotes.length; _i < _len; _i++) { - quote = quotes[_i]; - qid = quote.slice(2); - if (!(qid < ID)) { - continue; - } - if (qid in posts) { - uniq[qid] = true; - } + len = ("" + g.BOARD).length + 1; + for (_i = 0, _len = quotes.length; _i < _len; _i++) { + quote = quotes[_i]; + qid = quote; + if (!(qid.slice(len) < ID)) { + continue; } - } else { - len = ("" + g.BOARD).length + 1; - for (_j = 0, _len1 = quotes.length; _j < _len1; _j++) { - quote = quotes[_j]; - qid = quote; - if (!(qid.slice(len) < ID)) { - continue; - } - if (qid in posts) { - uniq[qid.slice(len)] = true; - } + if (qid in posts) { + uniq[qid.slice(len)] = true; } } keys = Object.keys(uniq); if (keys.length !== 1) { return; } - this.threaded = keys[0]; + this.threaded = "" + g.BOARD + "." + keys[0]; return this.cb = QuoteThreading.nodeinsert; }, nodeinsert: function() { - var pEl, pid, post, posts, ppost, qid, qpost, qroot, threadContainer, unread; + var posts, qpost, qroot, threadContainer; - qid = this.threaded; - if (QuoteThreading.hasRun) { - posts = Unread.posts; - qpost = posts[qid]; - } else { - posts = g.posts; - unread = Unread.posts; - qpost = posts["" + g.BOARD + "." + qid]; - } + posts = g.posts; + qpost = posts[this.threaded]; + delete this.threaded; + delete this.cb; if (this.thread.OP === qpost) { return; } @@ -8379,18 +8259,7 @@ }); $.after(qroot, threadContainer); } - $.add(threadContainer, this.nodes.root); - pEl = $.x('preceding::div[contains(@class,"post reply")][1]/parent::div', this.nodes.root); - pid = pEl.id.slice(2); - if (QuoteThreading.hasRun) { - ppost = posts[pid]; - } else { - ppost = posts[pid]; - if (!((post = unread["" + g.BOARD + "." + this.id]) && (ppost = unread["" + g.BOARD + "." + pid]))) { - return; - } - } - return posts.after(ppost, this); + return $.add(threadContainer, this.nodes.root); }, toggle: function() { var container, containers, node, nodes, replies, reply, thread, _i, _j, _k, _len, _len1, _len2, _results; diff --git a/builds/crx/script.js b/builds/crx/script.js index 25592f74d..004512c4b 100644 --- a/builds/crx/script.js +++ b/builds/crx/script.js @@ -1,5 +1,5 @@ (function() { - var $, $$, Anonymize, ArchiveLink, Board, Build, CatalogLinks, Clone, Conf, Config, CustomCSS, DataBoard, DataBoards, DeleteLink, DownloadLink, ExpandComment, ExpandThread, Favicon, FileInfo, Filter, Fourchan, Get, Header, ImageExpand, ImageHover, ImageReplace, Keybinds, Linkify, Main, Menu, Nav, Notification, PSAHiding, Polyfill, Post, PostHiding, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, RandomAccessList, Recursive, Redirect, RelativeDates, Report, ReportLink, RevealSpoilers, Sauce, Settings, Thread, ThreadExcerpt, ThreadHiding, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, c, d, doc, g, + var $, $$, Anonymize, ArchiveLink, Board, Build, CatalogLinks, Clone, Conf, Config, CustomCSS, DataBoard, DataBoards, DeleteLink, DownloadLink, ExpandComment, ExpandThread, Favicon, FileInfo, Filter, Fourchan, Get, Header, ImageExpand, ImageHover, ImageReplace, Keybinds, Linkify, Main, Menu, Nav, Notification, PSAHiding, Polyfill, Post, PostHiding, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, Recursive, Redirect, RelativeDates, Report, ReportLink, RevealSpoilers, Sauce, Settings, Thread, ThreadExcerpt, ThreadHiding, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, c, d, doc, g, __slice = [].slice, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, @@ -1359,79 +1359,6 @@ })(); - RandomAccessList = (function() { - function RandomAccessList() { - this.first = null; - this.last = null; - this.length = 0; - } - - RandomAccessList.prototype.push = function(id, post) { - var item, last; - - last = this.last; - this[id] = item = post; - item.prev = last; - item.next = null; - this.last = item; - if (last) { - last.next = item; - } else { - this.first = item; - } - return this.length++; - }; - - RandomAccessList.prototype.shift = function() { - return this.rm(this.first.ID); - }; - - RandomAccessList.prototype.after = function(root, item) { - var next; - - if (item.prev === root) { - return; - } - this.rmi(item); - next = root.next; - root.next = item; - item.prev = root; - item.next = next; - return next.prev = item; - }; - - RandomAccessList.prototype.rm = function(id) { - var item; - - item = this[id]; - if (!item) { - return; - } - delete this[id]; - this.length--; - return this.rmi(item); - }; - - RandomAccessList.prototype.rmi = function(item) { - var next, prev; - - prev = item.prev, next = item.next; - if (prev) { - prev.next = next; - } else { - this.first = next; - } - if (next) { - return next.prev = prev; - } else { - return this.last = prev; - } - }; - - return RandomAccessList; - - })(); - Get = { threadExcerpt: function(thread) { var OP, excerpt, _ref; @@ -6290,7 +6217,7 @@ this.hr = $.el('hr', { id: 'unread-line' }); - this.posts = new RandomAccessList; + this.posts = []; this.postsQuotingYou = []; return Thread.prototype.callbacks.push({ name: 'Unread', @@ -6374,16 +6301,14 @@ continue; } } - Unread.posts.push(ID, post); + Unread.posts.push(post); Unread.addPostQuotingYou(post); } if (Conf['Unread Line']) { - Unread.setLine(newPosts.contains(Unread.posts.first)); - } - if (!Conf['Quote Threading']) { - Unread.read(); - return Unread.update(); + Unread.setLine(newPosts.contains(Unread.posts[0])); } + Unread.read(); + return Unread.update(); }, addPostQuotingYou: function(post) { var quotelink, _i, _len, _ref; @@ -6407,15 +6332,14 @@ } }, readSinglePost: function(post) { - var ID, i; + var i; - ID = post.ID; - if (!Unread.posts[ID]) { + if ((i = Unread.posts.indexOf(post)) === -1) { return; } - Unread.posts.rm(ID); - if (!Unread.posts.first) { - Unread.lastReadPost = ID; + Unread.posts.splice(i, 1); + if (i === 0) { + Unread.lastReadPost = post.ID; Unread.saveLastReadPost(); } if ((i = Unread.postsQuotingYou.indexOf(post)) !== -1) { @@ -6423,20 +6347,6 @@ } return Unread.update(); }, - readRAL: function(ral) { - var item, items, post, _i, _len, _results; - - items = []; - for (post in ral) { - items.push(post.ID > Unread.lastReadPost); - } - _results = []; - for (_i = 0, _len = items.length; _i < _len; _i++) { - item = items[_i]; - _results.push(ral.rm(item)); - } - return _results; - }, readArray: function(arr) { var i, post, _i, _len; @@ -6449,28 +6359,26 @@ return arr.splice(0, i); }, read: function(e) { - var bottom, height, key, post, posts; + var bottom, height, i, post, posts, read, top, _ref; if (d.hidden || !Unread.posts.length) { return; } - posts = Unread.posts; height = doc.clientHeight; - for (key in posts) { - post = posts[key]; - if (!posts.hasOwnProperty(key)) { - continue; + posts = Unread.posts; + read = []; + i = posts.length; + while (post = posts[--i]) { + _ref = post.nodes.root.getBoundingClientRect(), bottom = _ref.bottom, top = _ref.top; + if ((bottom < height) && (top > 0)) { + read.push(post); + posts.remove(post); } - bottom = post.nodes.root.getBoundingClientRect().bottom; - if (bottom > height) { - break; - } - Unread.posts.rm(post); } - if (!post) { + if (!read.length) { return; } - Unread.lastReadPost = post.ID; + Unread.lastReadPost = read[read.length - 1].ID; Unread.saveLastReadPost(); Unread.readArray(Unread.postsQuotingYou); if (e) { @@ -8197,79 +8105,51 @@ $.off(d, '4chanXInitFinished', QuoteThreading.setup); posts = g.posts; - Unread.read(); - Unread.update(); for (ID in posts) { post = posts[ID]; if (post.cb) { post.cb.call(post); } } - return; return QuoteThreading.hasRun = true; }, node: function() { - var ID, keys, len, post, posts, qid, quote, quotes, uniq, _i, _j, _len, _len1; + var ID, fullID, keys, len, post, posts, qid, quote, quotes, uniq, _i, _len; if (this.isClone || !QuoteThreading.enabled || this.thread.OP === this) { return; } - quotes = this.quotes, ID = this.ID; - if (QuoteThreading.hasRun) { - posts = Unread.posts; - if (!(post = posts[ID]) || post.isHidden) { - return; - } - } else { - posts = g.posts; - if (!(post = posts["" + g.BOARD + "." + ID]) || post.isHidden) { - return; - } + quotes = this.quotes, ID = this.ID, fullID = this.fullID; + posts = g.posts; + if (!(post = posts[fullID]) || post.isHidden) { + return; } uniq = {}; - if (QuoteThreading.hasRun) { - for (_i = 0, _len = quotes.length; _i < _len; _i++) { - quote = quotes[_i]; - qid = quote.slice(2); - if (!(qid < ID)) { - continue; - } - if (qid in posts) { - uniq[qid] = true; - } + len = ("" + g.BOARD).length + 1; + for (_i = 0, _len = quotes.length; _i < _len; _i++) { + quote = quotes[_i]; + qid = quote; + if (!(qid.slice(len) < ID)) { + continue; } - } else { - len = ("" + g.BOARD).length + 1; - for (_j = 0, _len1 = quotes.length; _j < _len1; _j++) { - quote = quotes[_j]; - qid = quote; - if (!(qid.slice(len) < ID)) { - continue; - } - if (qid in posts) { - uniq[qid.slice(len)] = true; - } + if (qid in posts) { + uniq[qid.slice(len)] = true; } } keys = Object.keys(uniq); if (keys.length !== 1) { return; } - this.threaded = keys[0]; + this.threaded = "" + g.BOARD + "." + keys[0]; return this.cb = QuoteThreading.nodeinsert; }, nodeinsert: function() { - var pEl, pid, post, posts, ppost, qid, qpost, qroot, threadContainer, unread; + var posts, qpost, qroot, threadContainer; - qid = this.threaded; - if (QuoteThreading.hasRun) { - posts = Unread.posts; - qpost = posts[qid]; - } else { - posts = g.posts; - unread = Unread.posts; - qpost = posts["" + g.BOARD + "." + qid]; - } + posts = g.posts; + qpost = posts[this.threaded]; + delete this.threaded; + delete this.cb; if (this.thread.OP === qpost) { return; } @@ -8281,18 +8161,7 @@ }); $.after(qroot, threadContainer); } - $.add(threadContainer, this.nodes.root); - pEl = $.x('preceding::div[contains(@class,"post reply")][1]/parent::div', this.nodes.root); - pid = pEl.id.slice(2); - if (QuoteThreading.hasRun) { - ppost = posts[pid]; - } else { - ppost = posts[pid]; - if (!((post = unread["" + g.BOARD + "." + this.id]) && (ppost = unread["" + g.BOARD + "." + pid]))) { - return; - } - } - return posts.after(ppost, this); + return $.add(threadContainer, this.nodes.root); }, toggle: function() { var container, containers, node, nodes, replies, reply, thread, _i, _j, _k, _len, _len1, _len2, _results; diff --git a/src/code/monitoring/unread.coffee b/src/code/monitoring/unread.coffee index ee90c1d85..3b1f404bd 100644 --- a/src/code/monitoring/unread.coffee +++ b/src/code/monitoring/unread.coffee @@ -5,7 +5,7 @@ Unread = @db = new DataBoard 'lastReadPosts', @sync @hr = $.el 'hr', id: 'unread-line' - @posts = new RandomAccessList + @posts = [] @postsQuotingYou = [] Thread::callbacks.push @@ -19,7 +19,7 @@ Unread = for ID, post of @posts posts.push post if post.isReply Unread.lastReadPost = Unread.db.get - boardID: @board.ID + boardID: @board.ID threadID: @ID defaultValue: 0 Unread.addPosts posts @@ -62,14 +62,13 @@ Unread = threadID: post.thread.ID postID: post.ID continue if QR.db.get data - Unread.posts.push ID, post + Unread.posts.push post Unread.addPostQuotingYou post if Conf['Unread Line'] # Force line on visible threads if there were no unread posts previously. - Unread.setLine newPosts.contains Unread.posts.first - unless Conf['Quote Threading'] - Unread.read() - Unread.update() + Unread.setLine newPosts.contains Unread.posts[0] + Unread.read() + Unread.update() addPostQuotingYou: (post) -> return unless QR.db @@ -85,22 +84,14 @@ Unread = Unread.addPosts e.detail.newPosts readSinglePost: (post) -> - {ID} = post - return unless Unread.posts[ID] - Unread.posts.rm ID - unless Unread.posts.first - Unread.lastReadPost = ID + return if (i = Unread.posts.indexOf post) is -1 + Unread.posts.splice i, 1 + if i is 0 + Unread.lastReadPost = post.ID Unread.saveLastReadPost() if (i = Unread.postsQuotingYou.indexOf post) isnt -1 Unread.postsQuotingYou.splice i, 1 Unread.update() - - readRAL: (ral) -> - items = [] - for post of ral - items.push post.ID > Unread.lastReadPost - for item in items - ral.rm item readArray: (arr) -> for post, i in arr @@ -109,16 +100,19 @@ Unread = read: (e) -> return if d.hidden or !Unread.posts.length + height = doc.clientHeight {posts} = Unread - height = doc.clientHeight - for key, post of posts - continue unless posts.hasOwnProperty key - {bottom} = post.nodes.root.getBoundingClientRect() - break if bottom > height # post is not completely read - Unread.posts.rm post - return unless post + read = [] + i = posts.length - Unread.lastReadPost = post.ID + while post = posts[--i] + {bottom, top} = post.nodes.root.getBoundingClientRect() + if (bottom < height) and (top > 0) # post is completely read + read.push post + posts.remove post + return unless read.length + + Unread.lastReadPost = read[read.length - 1].ID Unread.saveLastReadPost() Unread.readArray Unread.postsQuotingYou Unread.update() if e diff --git a/src/code/quoting/quotethreading.coffee b/src/code/quoting/quotethreading.coffee index 6b706dc7e..81a9d19b3 100644 --- a/src/code/quoting/quotethreading.coffee +++ b/src/code/quoting/quotethreading.coffee @@ -28,13 +28,9 @@ QuoteThreading = $.off d, '4chanXInitFinished', QuoteThreading.setup {posts} = g - Unread.read() - Unread.update() - for ID, post of posts if post.cb post.cb.call post - return QuoteThreading.hasRun = true @@ -48,46 +44,30 @@ QuoteThreading = # Of course, implementing your own data structure can be awkward. return if @isClone or not QuoteThreading.enabled or @thread.OP is @ - {quotes, ID} = @ - if QuoteThreading.hasRun - {posts} = Unread - return if !(post = posts[ID]) or post.isHidden # Filtered - - else - {posts} = g - return if !(post = posts["#{g.BOARD}.#{ID}"]) or post.isHidden # Filtered + {quotes, ID, fullID} = @ + {posts} = g + return if !(post = posts[fullID]) or post.isHidden # Filtered uniq = {} - if QuoteThreading.hasRun - for quote in quotes - qid = quote[2..] - continue unless qid < ID - if qid of posts - uniq[qid] = true - else - len = "#{g.BOARD}".length + 1 - for quote in quotes - qid = quote - continue unless qid[len..] < ID - if qid of posts - uniq[qid[len..]] = true + len = "#{g.BOARD}".length + 1 + for quote in quotes + qid = quote + continue unless qid[len..] < ID + if qid of posts + uniq[qid[len..]] = true keys = Object.keys uniq return unless keys.length is 1 - @threaded = keys[0] + @threaded = "#{g.BOARD}.#{keys[0]}" @cb = QuoteThreading.nodeinsert nodeinsert: -> - qid = @threaded + {posts} = g + qpost = posts[@threaded] - if QuoteThreading.hasRun - {posts} = Unread - qpost = posts[qid] - else - {posts} = g - unread = Unread.posts - qpost = posts["#{g.BOARD}.#{qid}"] + delete @threaded + delete @cb return if @thread.OP is qpost @@ -100,17 +80,6 @@ QuoteThreading = $.add threadContainer, @nodes.root - pEl = $.x 'preceding::div[contains(@class,"post reply")][1]/parent::div', @nodes.root - pid = pEl.id[2..] - - if QuoteThreading.hasRun - ppost = posts[pid] - else - ppost = posts[pid] - return unless (post = unread["#{g.BOARD}.#{@id}"]) and (ppost = unread["#{g.BOARD}.#{pid}"]) - - posts.after ppost, @ - toggle: -> thread = $ '.thread' replies = $$ '.thread > .replyContainer, .threadContainer > .replyContainer', thread diff --git a/src/lib/classes.coffee b/src/lib/classes.coffee index 7f32752b8..f337c4f0f 100644 --- a/src/lib/classes.coffee +++ b/src/lib/classes.coffee @@ -3,5 +3,4 @@ <%= grunt.file.read('src/lib/post.class') %> <%= grunt.file.read('src/lib/clone.class') %> <%= grunt.file.read('src/lib/databoard.class') %> -<%= grunt.file.read('src/lib/notification.class') %> -<%= grunt.file.read('src/lib/randomaccesslist.class') %> \ No newline at end of file +<%= grunt.file.read('src/lib/notification.class') %> \ No newline at end of file diff --git a/src/lib/randomaccesslist.class b/src/lib/randomaccesslist.class deleted file mode 100644 index faa5263ae..000000000 --- a/src/lib/randomaccesslist.class +++ /dev/null @@ -1,50 +0,0 @@ -class RandomAccessList - constructor: -> - @first = null - @last = null - @length = 0 - - push: (id, post) -> - {last} = @ - @[id] = item = post - item.prev = last - item.next = null - @last = item - if last - last.next = item - else - @first = item - @length++ - - shift: -> - @rm @first.ID - - after: (root, item) -> - return if item.prev is root - - @rmi item - - {next} = root - - root.next = item - item.prev = root - item.next = next - next.prev = item - - rm: (id) -> - item = @[id] - return unless item - delete @[id] - @length-- - @rmi item - - rmi: (item) -> - {prev, next} = item - if prev - prev.next = next - else - @first = next - if next - next.prev = prev - else - @last = prev \ No newline at end of file From e366dd08a6d95aa8b4470751dc31028567e69b47 Mon Sep 17 00:00:00 2001 From: Zixaphir Date: Thu, 18 Apr 2013 23:36:44 -0700 Subject: [PATCH 12/15] Finish up. --- builds/4chan-X.js | 13 +++++++++---- builds/4chan-X.user.js | 13 +++++++++---- builds/crx.crx | Bin 81044 -> 82025 bytes builds/crx/script.js | 13 +++++++++---- src/code/monitoring/unread.coffee | 6 +++--- src/code/quoting/quotethreading.coffee | 3 +++ 6 files changed, 33 insertions(+), 15 deletions(-) diff --git a/builds/4chan-X.js b/builds/4chan-X.js index 89800ad53..9dc3f6824 100644 --- a/builds/4chan-X.js +++ b/builds/4chan-X.js @@ -6446,7 +6446,7 @@ return arr.splice(0, i); }, read: function(e) { - var bottom, height, i, post, posts, read, top, _ref; + var ID, bottom, height, i, post, posts, read, top, _ref; if (d.hidden || !Unread.posts.length) { return; @@ -6458,14 +6458,14 @@ while (post = posts[--i]) { _ref = post.nodes.root.getBoundingClientRect(), bottom = _ref.bottom, top = _ref.top; if ((bottom < height) && (top > 0)) { - read.push(post); + ID = post.ID; posts.remove(post); } } - if (!read.length) { + if (!ID) { return; } - Unread.lastReadPost = read[read.length - 1].ID; + Unread.lastReadPost = ID; Unread.saveLastReadPost(); Unread.readArray(Unread.postsQuotingYou); if (e) { @@ -8234,6 +8234,11 @@ if (this.thread.OP === qpost) { return; } + if (QuoteThreading.hasRun) { + if (!Unread.posts.contains(qpost)) { + return; + } + } qroot = qpost.nodes.root; threadContainer = qroot.nextSibling; if ((threadContainer != null ? threadContainer.className : void 0) !== 'threadContainer') { diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js index 870a7801f..62b4e306e 100644 --- a/builds/4chan-X.user.js +++ b/builds/4chan-X.user.js @@ -6438,7 +6438,7 @@ return arr.splice(0, i); }, read: function(e) { - var bottom, height, i, post, posts, read, top, _ref; + var ID, bottom, height, i, post, posts, read, top, _ref; if (d.hidden || !Unread.posts.length) { return; @@ -6450,14 +6450,14 @@ while (post = posts[--i]) { _ref = post.nodes.root.getBoundingClientRect(), bottom = _ref.bottom, top = _ref.top; if ((bottom < height) && (top > 0)) { - read.push(post); + ID = post.ID; posts.remove(post); } } - if (!read.length) { + if (!ID) { return; } - Unread.lastReadPost = read[read.length - 1].ID; + Unread.lastReadPost = ID; Unread.saveLastReadPost(); Unread.readArray(Unread.postsQuotingYou); if (e) { @@ -8251,6 +8251,11 @@ if (this.thread.OP === qpost) { return; } + if (QuoteThreading.hasRun) { + if (!Unread.posts.contains(qpost)) { + return; + } + } qroot = qpost.nodes.root; threadContainer = qroot.nextSibling; if ((threadContainer != null ? threadContainer.className : void 0) !== 'threadContainer') { diff --git a/builds/crx.crx b/builds/crx.crx index 340b385d7300ed1def236ed9bc3c83e6e3f58e33..14f54ad67a803cee10efb60db6641826f78aafa9 100644 GIT binary patch delta 81195 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 `~d$O zp~zBvI4O(K@WUCblZXA^l=mAQ5EoHLPaBzLmQJd`8~x>CPM(yn26Zv}f)0`(0DqWk z(;I9vf~{{pQyQt00>c5U#)pUsO&o^n4rMD8VcLPf3zoTRv`Q%CQo#yZ&Tw5Ka|#kv zK6(m=e7mK%@?i;wHq?Jgc3EVb9xv*7HRk6vukkeyym)B+?2TSPIC|%Wj+FqimPgqz zjm6~$D_6v*aE9fVCNFK(cn4LO&VM@TL^E#+GA|ztRU^!f z59&WeAY-=#TG)Vdnxd=-1p$yP&uh9EjYvFD-jHtl`GAO5Kf8N3F{QL0xY?8amA9)4 z)$wWHS;Lh7c*)n%=uaHmk#PAtmeg*9zrh#M%F?Gl7lS{Q^M(Si{BPd&tbc58xH0_F zZR6^Y@I1FIbkz^(Bxv9mC^P7!eL?9VQ1EtD8A~KL-v?au(t7ghC7$HZCoq<|&4<%4 zgKr+uap|P%gg+}98sgeaS6iQo3yRvPDyqj-YI3mp%VZOB@20rH?gM~2ePLkxRl15t zoL|}#IV-C@g;P2>YIaq2O@C1sca~swNUzuJxB}S2JCaR3HCtL&2w`w8Hwlnk0h!tFQ{(#zrRg z*sQ3h)ufie1oX&8MLr9ZW2z0U+|gt1)@S7jM*m1qWjnoYq;v6AjDN>AqeODwqeKT; z4DiH&dkO84!xJP3wX1nVLn4MNOIwGXFi=+lK~tfYWG}&XGM($6D*Q|^&KteMS{dt2 zV-fSSX^;FO%rm-0$QLUNTcK&{K(;F$n^52UiXEq7OM&#?gxyh0W+7tf!s$RhmvxOY z=OcRO2O0=d_0Wuq$q8cJN zDrYBWJmPaIpLfcWDVosRh`ZXM$@6CtWKV-X+rvSJp(4DL-c8&5hChgvku9XXe1BmD zM7a8bBknY=w?_AH`^A_$!ChY#40;J9#-Kvl5lL-u->d^aUw=OT<^8*-qR|B9kBu+t zi|KA>Jio;J69w5|x7O>OpPzS6tLk)AAcN5}l1eY1mOZiv{&c*HBzRe)=|~f<>y&?# zUn(fBo8H)lS8{PMFyRK{q)=xpdqM4_&P6AWpl(82HKude46-t)$vUEG)_#jT34oFH z)AI^ygYdcT$A7b=Hn&!6bBh}pYMK$WmP#C0;ta zJX-2#6xY(+wzqC`^c!M$|5W(FS*`QyY9`A@{p9k9j(;Zb73KA7${K{3_Vng{V ztKfMi*ktOIR*3_5v-i(+dc)Rdx_UgXrv1&G8F~c4UwE_ja9Dm((E%tnz~LmzVzB_S za=5Frn6Y+gm$F6TGgrzfD8a4_NuV00R7J?;!19`<0~_!sm3@<$5@buU#n z&(MJR<7M#9U@@OVX9OJmn}_-YK4+t{p10IcZlRitbnLsEZeui2a%>h8=Vxw=t^&Y+ zf)JZ`JV?@yW$5_4yJh>?igm=7dTmGi%pE=L(0_x|k$%_I(RQpOyw)pc#LwK3x+Ls$ zq~A4lbbC{+9WR)(P-qPXiQlZ0eilPObGE{~YK(ECoB`-}asa01JDYnCdwv&ag+^RJ zU!x9DYaI_GGD?jzh!mY;t&7l2`6c#jZQ4$_JgLLA{oxRH2NpV9vtz%z zxqo-dY_VWaX#Va@IvhmTpV{YGNBfT0F~=cvPa}a_eNs^id%skfaS^~50#Ko*;eeOXfqZ2g4BHIw{-z)`L;!5#lFBh8Y`q@?q!Wed0>cBrxrV< zpV2}%XDUO<+hZkgZ#^O+%_9>OJX)SpuS3ZLmnBij(^Eg;o|dQB z<@MvVIQ6mxQN`)-BvlceYjyrqEEcI9PD`nRzPeXs)Esct-sScdkfHkyGBPcokgxOnG-*d)bJ_jPy`Kx@Q3Rv!7PzUsEcHg?SH-f34l5I{r27;^M=oN_g+-hH2L|C;gR-U&Cf8_nku-K z&>M4vDh1jK1CF_14&+XydR4+xIWfsZ`Hindu&rxBlUI$0<*yn|qOWCAN4mCD4OZ

Fb;U@c*q0yj@ zP3|47MQn~6?So!L3tPS>7VItNYiWG>iIJxO3o1UiAJ_j|d{WFetlV8Picq|HM&y=Z z7fgzecxhq=Rvn9s-odvj+RKL16x?oE7oLN?6Dv76eT}pp&YXnEY_62A7E|K)rPNN| z9JgcV`{K~Ac3N8E(|-_2Kj6A&erqNLnkZdiWg^{)&eA9wOKam~UYnF&WOZG*M7ziUI$*sy@kZsI_9tlY!^a9~Uq8)Q-17 zF`IETdN_?YvNLFOBZEB($3U$kcH_TK=qj$Uh7#F-HNl*FdVi((@AD@?6jl0nODHaX zf4-bZ+8}t952{(rxRz`qj9=k4=*OwJ;lJB)ibs+nr3TQD29GmcMZyoQz=^4K%w!NN z#V>e#rx}S}w#-Sox8r`!c71N*K-W8R#%Ej8N&7ti8q-%70J>AAEdK;&~rw_9aM9Bm9_E zC#(~rd6Xcgp^1G^6m-W2?Qvm`qB$F%#-)`4=)W`63R21VfvJcaO$bZ1nS!d^J6H5h z2*{Q`c8m``ZVc#j-3P-K!$DVIe>4mOD~;_`FyRBn-y(iTgfj`hD2paQb4p`8O`yGV zDtL2PA%9j-obH;4>e%86^mth+hR8ttD4ToPmO~0TdMa7ZP#S>pts|ZD&S}e^F$xt; ziQ@Zk-n;%14Hno&>1z{3&!rpE_$rSI;Y+2#Xr@2fva4e;V}A^ z9dP-~zRJp$JJ%qTiq+ieowO|-=O#ebCJ{2Th?srBZR$4N0fq8qJGuG?7*$h`x*etw0}^Zu_ZSz%X;&XZ(maRZ?RvPNooi^nR^Zw0?jSThy{DUdYlvsMU zC33rur8tUWCX7i+o%8YZNp%eDTuSU@;Cb{VPIZ=vX8|$d&WX&Ic-aciQeq-hv>7BF zP+&18k-z0v><-m8eGD6VL%!voLw^p85~Sr5b$b|op?RRCq2QkJ1X5iRf7^1lBY}v_ zzop5cAch0?vc7A*Vj+;J8)gk?uOXoXB+V2V1PY29ipK~0Y48IsFHR5c!sMMA+$QEv>)+A*-9^~qv%qZO0!{IfGV zFM)NgFKWB6acL4a0aF+1ZGU@nGt&IpQ)-j1O6cYBk}q{Y1-TE_QHZ87?XEiMNSwmn7`RE;*27dU!HFd_0f7Bu+y%sw=!R%NJl=o( z?(xt2-Vy4=<%o+rq1^eCN;a&8eT~<@~U29}aJ=AJ(iX?3ID8=h{FPuuQAX9EF5slV3LAh8U;U zBW9m%F-bbxvb4~Vv6sl;6Zwhl@u<(2HQ>l%8q`AmL9XWph9nkB`pc$zNhNw&G0lrD z<}5>6C^llTm(Ilq$$ym2MP_ix5+bw`qEq=?uo)#^LkoC92owlbRbN$cAg6vsEiPIS z1*Q* z+vZQ^x6*!!Vu}N$`xUAX9zk9y0LO6P?@wYTog9^*TYP-SGNDa0rDqeuZcN#>>giifPAW9w{eSzLjFk&KFSOaX2k;7j!9O}k z(!VdNdGRPe{sf1|CwqvdgCJ27>S_i@%Z_V$mU{q3jYjqs(vKUAX4Fxpd#XJQYe?V= zJ;AuRk%6k-Iy_sMuWz`tAkXS>Pw zK?Tryj6D+K(F=Xm01DH+ zs1|_dKXD=WPV6M*;aZPiqP(-taNZFc_v)r#YAbFDc6Q@|J8c!&n?ARxjded~w@%%B zs(*+wl{z992$mJdxkJO-v=&kAY-!I9!f-dvIZytho&1)u`I_l}RMX$W-+?JShbQ`4T0Q!o=$}Cwd0j70H%KUT#cKT7TneQ5O|wjHRloX4ia3LL}_<`2<>B-luUr z#Y$ACP)?!^eX&oQppFOMb?0zGWvz9lj)`0{E-ALuI!%jBA5ByfRW|gZnw6*Jq^o5# zpr(pheC-_JVU(W)0xC7R8H5hRpf4?-RIB=znLvq`7+I=4iK`8yL@^Pgkz{X|%zsvb zTMk04xHoxmD*DH)9En)na_Ft^he7T{gi+nK>AeYJU^e9XK{+JxjtkIJ+Bo4v&ogUi zPlPmU`S{%`OyvsvBb{B3XH{Ky)cMK>*@}#$-PHQl>eH_<%^E#J-4^KmP?hr8Dzk18 zhMUiR4nf^ITx@RcZ?@%t*8|huWq(5l2Wh_)`7R8z|nKM6Y^}D{R ztEx|UB(l_|{uU+P3{W4sjov0f)#lDZSL3%$@wWCrtN!Y{TGo%C`D3BQySX=NVcn#gM-tMe};s=rIvHPg9f`pD~-j36TEfloA$ zA^`Z?PBiZbFCims{w`TcZGZgKEtE?zuO8FMpBpYl7|NiCpmi}32Zakc4nm^?&XBbi zL;IND$Mf09JdBHZZXQ%H5!`^AE8%X#od~slQBp`3V0H`jXac=(#M&<(!S%;tX<^K`)Hzxk;DL-G6Pbg@2y0Eun=bRoc;- zN*;WP$Y*lMnp3{ym_6E|0)zP%_YA}Wz1C#-rm7?<6-2wNwT$4=*XRc`273+(Z!-I{ z0p3Pz5YEUQ`2V^Xo%H)Z9B?E3{s2|Wtj;*tLjPoYXs32CfHywL6`<{Ib%v#cPLPzr zej+);;IHV`>bV5A>wiNo5oWxEDXf(i@8Wtkwb(*pF&&slxB~Aq3M3YOLygKdqDcj@ zChZ3BX+Q-?%Ur9ko?0`mQ@o?PcA~7ba`|Ip+S2^;%BQ$k9b=<y zJS-GvGXNT0_obR*bK!sb1{Qz1b&I4=_a#hyE9Ij9enNZ|0e@ztdFeb=To3_;G| zdg)Vjpf77Y3%QNpd~shfN>eHp{J=I1hta!*8d+JC9JNfsTHxn4%b#ZJdXb@#dm8xP$Q4y&d^nXk6l4Dim+@TOQ>A*0g5 z>64Fgvjmr$Qk;*fb^Xjwz^0h3bD2|L0?9NG9P$m~)T`Imsi}h2{yXTWUcJ61t(2Yb zKSCFUD_%|Q>Mv1985^QwKMX~U|M#e%VzW_}Pjls0%zsX6v)x1$rS zZr0bBACyz9y<97|?gGU;c0TRsXUT z@w9MoO@EF53;mgSTC&u67PqXdsvSyU`9EL(^?BMX;kQ0dTM5aY!?`3RdmuqSbNbS= ziqge>o?by{$JI&dJO?0*6AEn#gw4?fo$|W%Gv@;LWJqu8zQ)%D zhTA1wt-HS?7`%{9vY7twT~Q|^;9E`AG!)dLgn!x>^ccZcRbE_@+%kFlxja1^VfgKk zVpEss62!we(nLo&GO&}5uZ;j|T1_2y%oyE~KGe(DA0@0Z0DPt=t}|hR02qEYTEft1 z(x8NP5u4x#l+=~pk6D^>sJ;IWhqu1#IY~9OYmwdnh|sJsn96Jwjy@dO7wKZOguKVR zk$*z^esvEi=^^HOMXcZTdY{^saw)MIC{@Dc;N6s;OKx- z=c&r(!x|boD~r)p6)4H&cGWcsb$R7@+r;%Lq|9m1sN7g_%Pu*74zN?RkAzqW+3*asKCXKn#5w!DI-8#S_fT?-Cm<;#^v4pkbtuRA)tKkv^I3R%!3GD>V*(|linGLLU><2(oZ~0V{MgwQZ1eY${ z(Zf0PW-)QM(rRKC!jIJw8yKn;UFHi%h(Legp&Yu>1H4;I%Fp(AX;OQkOzaI;Z+-YA zbw;QlRZ6kd)mNVWYa=7}Mfs-dx#>5a0w%S}Hn5smPOf>hZlbJdr}~vfiqLW|cko%l zdJlCqNvrPQ&6bOBF`d~ZT(e9S?-+u0)t@|6z0rnmim@5t93N)BGH(@sD(oP-Qy70D z2W}@v{!tLaf5cHJ_lg4p;!_)&av21Ct$~RS8(XWNN{othEUkIh#z?%trX{QExBv{a zq0FK>?!Ji6U1y>0j>#Wt5a#t&Re^`Igp*Y{qp1Dh~Ar6$WD6ysDCbR>FwqHTT>>!P> z^QCK)3t2z=Qo$D4T<1s}Ucp!h&P(S-_uCXeaZOw7q!7okv=&i2n>)oF*Lx`gBt5%Q zR|(w9ToZ~buF`C&5R?2vgtJ}YdRM&|Ih=y=k44+1W@N<<=UA5T*?!OVGBSS}T!=|` z{Ur*@v`j=v(|Y1$)TSY3RKpFYJ~$Yn6UHR-0g@NL6bOAl;D7ox3P`SYA$Alg;H;>; z$W(w+Q!mh9*#4QJlp-bF;h_e+OzYpm%`azX5q_yAhEaC4$xJAX9ajnFp{NypWX{f2 z#yew9K|HF$@J85t$;%z0cf)_n1$5-t;xQ)%odR>rzl>3&#tY2`HS>+k=Y;7(C-Q6q zV$tNMoLIPD78w7cop%k}uOK$aV%%c;?0vmMo)#S)h+8uDgHjx6BZ78LZMY0Lk! zZ^Du1OmO`tzMcwi7Zi!YPYs}mIR0@gXBf8V8a*5Q`=ipRhJnR6yWoFns-Boj0s0o6c!TbPMTQ+_8T+WQ^44WL_6fR14PjzLCXRO&K?wM#M^*HiEbh#+(|&7nPbS zjyF0i5xb%`5Z!@vo3{cQZNVv^H6Ze=oXlO3>^tK(Brr@GsZ8U?XiUMjYlmnw5>r48 zQ(yQhMU+&;^yt8mY?yLPbL&DFC2ZR~vZCiow8L8CDd3*d$6tT<_Vx~Y?Ss7Y>*3IZ z!^W_7%KgdQWZQA(N6j^uaGi<9qAHL&&Q}vC-P{x3ldd7^2L2}_Z;0Xa^l(JT4GP5} z;~{OhO-bq7?nkeX6I_EzIXiDzkfVR;Trx`_y-86l(!L2r+B9ccc*b)WhvLj=)z*@b zfO(^yet$lnm4ko99CKq~_Dz~2Mch%dU7?OL5Md<&lI}`%v4W}T1*G!CAdY~_#?A^OybO?Vc5Tm# zFv_O!F_^pO-#-R#R$6;WxITQKaBZ(ngjbqo;T07_?fQSFr|YwEh3J6RB@^s>9_1}O z&)0_4Sm8*DopmB?q{ouv4ZMidn8(?XyjkXayr}2Z`0?AftMb!|Z{~U#R9ul`mLml; zdpo}nx#`3mH~J9oUN%unR5{#g^6cwSCk|64; z9iJ*XWRLC5*?*ex$&yTZTQWy_+_f;gI<1?dNQsUYVx3Rh39YYQZ%S%sS7AMsmyg!; zWlo`a-oe_u&QFUM#VO{=yTlz^YaM79nka?|5r}^X|B`=sSq(5tyhB=(!xe1+n+|Xp zs`Ltz{L8!op8fP}j**UZ)T09(_DBizt)r~9?uI}TxGI56QHSwHcUdj!FBrvCr2K0R zKFppVn6*7SUSNI%yuOD`@xR!hqwge!SAEEIbYj12KUS1mi7t=*$I~}&pTGJgqJ;NW z&QpJ(V>4(jRILeNqIZh9ucvL+u)60ZPAwDNu3Ak42Q_qO^ZB&y_j-VDXNv*K+`X6i z#aS`_%acEH=AF*h-e6P>dS7n$9{;@m%O9VW0E(- zAnZDa0flh1BgIRKUIGKPEE(I36$r2(rH6lM;%SqiI1x*3Z!QxBnmu_EG$X!QgCONV z`sVrou=zzcd|VM|*|(Elwx!I_@RTT2;7p`Ea@gZsCjO09c}5WpWhIVrxTM{(qFs7vc{3^dpR^q|e^Swk@p^hHOS*q_u#uh3$0L1UDFXoB02t*L$jGQAA)M2Dhm$OOI4r*~ueGbDgIrcU z-+S1DFMbhBmsQSddYxG+t&b0NQglB8$KM%%XaOVXmXn@Ov=!;6#52Do+PZ)IQRHlkC>-b3{YmeKygR@OqQsSq2`!v1QyvZG4H*k=!4 zQI)EHG_`nAEoKPnuVQb{hRDM$v1w=4xBcVtl7Iwp+#N@r`&AcgwZV`NaR#cd2t zGLJLYwRt}1AQG$Qx@Q;DvtoiQ(mOf&jPMhoyV*#%HyNl6?eAmBLpoK@v54mXK8VkHs?o^t%Mu=Fy5NBsB2O()sn9qZ)EQSf>72>ViZP7g^$hT4 zHos`MX!0!yNPYLCX>xz0!SN|$>a(AzUMY9{>OSQBV%&@eFO8KVVZCKS1sr*g({Axt z8J}E4<0M>6i|Qm3S;?50a_w#U4ltHd4C{ufqi=)SQRr9rJ6tkvP^MKU51vf{a9H2M z6acMGh<^d?4y@eNazFE_pf`km04Q6O*+%>~I94QQ8Lo=A6oP+a$Y`x=0Jxk6B04~^)4yx4b@f3*I>7*K{O;53+j9?QQHN5Lzh7|dAOe`f z!*56$gtIlxRG-PV_~E(hhPoL}^L zsx4wx71KI($J$}fMPNs#d-Cj2CnS%%WrVBP8F{eArPhCrB1bIGV_5@SD%OC$Y9_1e z8)cTVPZ&-@TEmreubS{8yYCb!MX|m-B`u4~asnpc%?&K(Y;!;k%}zoQ$6M82)}ut! zz(F_UA6dlRA1(p!!`=DM#5}2io>8 z`N+|xORNcNP+m5rWUm`1sDT89xr<;fVoe$m%0Yi7Mb`|0OJm04Q32B%=aWS~8eMdl z#3>JfI?E?RbpZ&F1`4oIyY6OhiW4ApXOu#8nx7V^*UqQY(S_AYi-9XzOqj&KeN-~1 zh&ZW?frLM@A9)=~ONTkiExeW)PRJQt#xM`Vk=Wn?*h1IopB;~CpMvo9O{(Uhf()L% z<=ubabShK9h=-lJM?#;2`T}&fZl$a*p
!8hjf#E7#8; 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 B2xb5P delta 80201 zcmV(&K;ggXfCZHK1dy_S3&Q-46V(FEp3JAQ)K*Hz%jy7%dQcJ2!`9Rhig>Y+xZxIk znnQrg=ovt|tL|MOR6-KM61Jz{^I<8^f5k7~BU?hwx&_kPqoHdBz>i~Sh&<&JDI zf=33sEkneUrje;ATVfW`WJKG9#NHm2OBHdEVS$_cRn<{9b7OL8aC9zebL744cH79YDEj}bb>0D1JRuoVq-1-N z8OqYcw(PMIe`q9ml3ZDFKoXK*kpu?-Eh}T+*SHUKU+mUbH~I@8X?u3|-N$QLB!TYg z>gww1s_N?M{vV?Iqsw>}{XN=@eopct&1TVmz20{3KK#DBwS8}M>;C5UAOH9NivAE? zmgT${^!rp{^F#05q9`|q$s|qQC%tsm$3j%_aW=on(~HY8YL7YqW$XJ*0JR^8WLK$4_1!KQTHyEAw=?D6_m6tPb)bkLQ;~e`M6A$}h9o=8tLlY%z>R9^~^R z&t?~SH~J8lo89Qu>|&mkUFcX^q(wY`gW-#3%Z9caHy|e4dQrc?sQ&&eIPGH}<#qDt(b&W!CF59!6P?BZCwJf-MSQ!cm@o&dZ{g z;89l|M=~nG}RwYCN!S&B%4o?==w5iy-xt*6|e<9FH=Cd%%bZ&Et6=t zxIoOa8~|$&Com9K(M`6XN5H}V`+v317qbzPsNIQvg{RT`IFD|3qucPGsha*ffv@@K zGJT&sPiI%%=usBuWB6F46Zm+49GCGVyTDfk{F-DlC=V=h&VSPj_=KsGO&=d0ccXnM zE%o(RsJ5R>l2X9$!`Mu+c+9_^e3-)sKhCDpWLB!5Czp8=1Bjw z@?iuspj1CqC;8WL8JD`o>-jjQap9kTi(x*{PvF{a^!fn)&lvKk8^Pak2A>yQ&X?hmz?(RkmGf&DzK8w<b1_g2K*;5e)%k(C^3jloX3*_+rTynjw&M{pczX=wcD) zF`$u*9R!|#!h$vy>1npf%X{>91ZtLv+E*|O-CmO}>chvPAKhVi&e$3jvdPF1aNK;GZFuZ5=p zOFfFlh+IkHtRO0jCKP^ZRtpetd?xzK;em4;c>H=tdl|&o&qG>u?;P3b% z+vr6npgWc695KBvwAw+fd5i;mi%W7C@uNgxi$jZL(-}Vjs<_O zl|2G~CFBD1ylH4yc>!7jm<+K4<^b0khm{p29XK;Cl<27$hImAZ=6Vp}dkHH{A0|eL zGl%910(VJ>Ixa0Fybzo0SiM`&yK(fMEu#X#i5LNR3fw0RxW&qm=s=F-6~)PHD4PLf z7;+Flrl`FJO#nD}K8KYZ#hohyr^96IOlW$47Qs@2stbNga?k|5$@dT}iOmGdTEx^( zm39{qJhwKF!8xvYFv`cO z{2&6w?PM_o&_BaW0tNOM1kxDP=*2ila@KE|8oycsP?U9BO2Z@ul`g-5rKPfx{Ha=h zvUFFnIGLPpPBReayf{*ihndH(qGS5<_8Cf8G@R0em|DPz>bJf|=fF=eS%9 z3wJdv@S#CI4}N%3k|pEnLG&;v^w=1G3NKzkEs^uEfKO+g5}(fp#kC0 zt-xoMniXuB4UtG$B4+FIs^C{ZmBn;8i_=Mn2XLnTc<|J&t|qY5LkeG{=Y=G_CDSqf&Cze)%fh&66B z^E3g2oJln+aFIsSO$}J|EG}Swh66ifbJkixuHi&MrW>aLvxtp(u-q22(iLln`hwpR zqk^IarP$U^$VJA>Wf0;CygnHDmII7RdVZcDWwi$o^a_HB%0+Is83qodPkg{+F#*ZP zV08dR7in=B8Q7o0&??xl%GRoz&p^whH_FW63AcBT-O&Yc6J6t5yB#JV)CmmePliwVIs==$M7{#uH;MBoK8Hz3Yz5#$)FQpg25M7E z^bp&3P4gfO_0=3+kvRwq_Y$T&%rApD^cp3BqCFT1O05HQV#TdA2iTQ?RuO7FTrD1Y z(te7XcMclx@SPae)siUh5K_VKL8>O`4Kthpc~Y=DvXNd@L#!u%)Hfu01h8nCd`3ew zCa=^YK(s`Q*VTrxsTmr$6JC{&**rU!Hztg#==ViN+BlzN*%%hE5@?c)H=-oZv%E%e zAb+s-c-d0`-ze9!tIz&IZ-?rw%PNPp6?GN0GQB!OUM)~50B$FUCV9yQB~KIKqbV%t z9G-w|&4Vi>0R|TE5EP)V4h1HZVXz?pkMpc3HbrREfieq!3DA-8sHos;-sdlB3Z#0E z2TdK*Q~We7L1`P8=F(-LN$)Qc95hp0m?gwoDh#{CwxeQY6@eK+ZYWX`Rry{3770(( zQW}Ag?np&Nfy80bhNX}+nT<7B6gAGtx;LnRI_eK(!7_G3&(7nEV(@16yZ%4h zKity3g4>;c{)R?*F-w10BnSIeb?96&LN8DRFR=c}hs*a@+b0vFVwtD&Q8xD4#plp2 zwR+1aKZ>j3#|h~0$~8Qi#6>~Qs%bW6bYEoS+x?wOHQfgAVkesqZju7t*4NHTs{L?0 zO=nL1tP}thLJ97(yVxh2_!Rx1aY-uXEGwgb6);|Z|3Z<`kNcz}^xw_!asyX0n5y z{xTlY*8LC0yWjQuuo@&cCLrs*R3;Q=ab^^M>&-9cp`!Q3y>L_VK2I)^4?T3E_mdCl zd2e))0?rpyk_$$QIa;kkV1+&wq2~GR530frdT9r*=^=Y*pkP%mo6aZWoUo}XZU<{} zQAFU)#?P<@M#sP%Z#GCvlvRvIyf43c=b#7uySFI%Z-pj(B7XlH7{)$BCpZNf+rYtp zR6Y#h8{&~Qz(lHw1rL=%U{9ELWtR13NvTRz5CZ_MS{kroRkbJf`1lwEKd&|NhNB|v zt$-Hjo}(+YdFG0*Te9VbhRG&s{w^GOueKeP>SmT9oM!QRXy6oJUjXxO;;M5Noyt11 zN%rTNY83Z-pzt@-{x{?PH#hBX;?6gJ&j#PT7<_ZAiYSc>itX)vla5=}N<={#SbY+; zznOmnR@FCoN55yg9bQY+k9vVoGNYm}ru1c2UL`k$xwfAW^2QD!E~l->Wj?txY<2bf zC0mJX@+8xFc_W5a>z9_Ygnl}r)jV62tQO7|WJR#Y#NIkp6$rxdWqMxT@!+g~2tgUPRGF%`cBdA@X{s!8szV); z$F5S|(hiQ+H5U7u;eoKqu_ujx3g%dlf1941S#}-L`bcsZ+(DgI+GR2!Gtc)x+unMr zZdR=HMXS=L{wXcrC9GMjWM_>GP6$fv(B#Su)_TYNM2=$u(W@|hs#;e@t-1Bu zs`-pprPJ1jR^(D#3dLm(vk$fl<57~#P2&uI<6?_FC3%YGBB~ronM`ij zQ5)P6Cx_ZGSeBECwYNooPxMweyAx=$8twO9^a|~;gu-%QzLmztyUU8Skkd=Qm4}n- z_@;;oZcLb(L3PQB;IN3iD0Rnr(d#0Cm5a<5_6mg^w9e=$pJOvjxmOd`jP@@JgDF1hg5hm}0D=xFP^f zIh}N>35z&MJYzEHMhL1Ky-ndi7>V!~>`V#Rp`fX*bxkYFz>v18rf^(;(!todC8-IV4WI)x)nXq-V##6B=jYwrI>~BzaSQ z%nP6%{HhjGA7Em=9t{$(f__Osr*9=#7Do%dVFev8`xXOc@dbXRpjl(E5SmmteVbN2 ziYR3D7RQ2rf{um*YSoM=ZaMQkBII6CzdN^FrYBXRlvN?v##%x}-J7#0m z58bXFMtSu~K5@E*C!?@FYTjM7mhlD zdt;z~lt7QCLDKf-yp6S=oX3kvY4xwU_b4rlN#PLCZWFK#%`Id2G@n{+a4RmX-CgOg z)21S&1;7wcpKRoBnM^OTGsp&EaVNt@Kr&G6+twJYGLl%!9LL5%9HOlS1ARp2MTRHY zysNd+(KFf@fiHi<9h5Fc2<0~*jt1xeWA}ycr+nnpr>WBKo++F_p?>2wj4b5We zypjXf$l2o3;_a}w9J)*)OQ1PO#@jDi10yC-coh_8WTy|2sx9PX3fjYKv4nz(sz4%A z8Y`K_uP-s8x~<1Sb@3cz1DbzUi<{e>8pL(|FeVHV55_SlPg0EyDOgRuU@`JhQFvQ_ zeNkA3+U(NoiT>*Lo48O|0adq0Xyl}`i^r1`FvOP@{|u!#v&AYEPUtufSOYz_rSSJ1 zun&gW_{Mrfph1kz&DuD-tm^c@sV~nM08TEG;du@Uj1eKpkIX_eKdmzK#9{kw?6|^G zH^{r6@N;VZe4tzYAv)!P+E@h* zahotT7#rHUMP#^#8W$EpE+$+^Awq)ajK!5Se3x*^g`)h#LWQK3Vki3HzU*<&NRMYS zZp=Syc%@VuR4x|^2TN+oP*M3+Q&ze{C528-Ib+qAiMrC7VTdJ51z>rhPM8IMSCC>c z6v+?YSeDhAd%Qwoi`hBL99gYk?QN-6TaIj^MYSs2CM-UGjb^E$y2Nlz%gSm{ItPoy z8cR6V7g~tamR~KSJqO5ho_GF>&i1Y^N4)`3Iv~mQWZbgc3;|`(n0j_K?p}=wsA|;+q3aYK!ENd+ z?)|yG9CY;F{nNk}&fX01)+YW}Yp;PSl_&Alj@Q)oy@B`a-d(48W@DOitHQnaodW}f z`ivcU>nPT`SKMKQ;9~H9X(fd2Z+#9zcYZsB?tLFXsCnH3Tz>z1jkUb&(R>#-`(uGP!fX7`NNK5A7C9*TLWqr|1WbVJU3?nbz^{ zhEQmubJo|T>Zb44KzPjF8VBJfRj1L>vx2v)X@SFjcnh2Fz^HY9R*r*p>r( zz9=r;k`2ADz%LiwWUpxnES9IK2rEf!(`llopcs5lwDHn^V8)tK2CB8#k?MIS=^ZaU z`hYWVZ@YF&r+GKSrm1*NC$?Eqvwx#_U+pA&%xl;=I7JMLND)HYM=GKQNeD)e0^)CgaM$yf7`TPaQpadiT6;9xDz`ixb?GrZiX? zr8+>xVw5L;$xNvv{7Z>-1%PI?Y|f(ptJ=^;Eg6It`x0=rZv{dOs@bT%G$><~+)5)# zQl@IS+Elk)Z^V5)jA6M*##9$gW#@qmCK%`2X91KZN-c_KqXcG3J{XMC_r6BN-YQUt zU;z+kNQHea>+WRfqHEHI+{`*wp~YMk!IM#b3BCQK!2q{0?7&KB zmrgK$d=9^ikeMe`aWOZRMPLK4_ zRH(tHuRO?(T+nTPk-b5U*M}9+Ym0r9YE(UQRuviva&BTd33v-F*}?V0rXRv;BAvEP zSqP{v|8R{_y;Z(r`l?xQ>{dcV*Eb&iL!&8wx@;wIhz{cqZUOpu04f0}>|3CrQ?YB2 z73NEHVZ(cR)aPQRVEF@T6<`arzG>+uSQD@08KZFHyvM&T0+&j#87~C^PIqOrFG4Vc zfYR2vue5zkK&+!GoNIW`z*@&wh@0z)KActyWhi^dbV zhOQ1jk(~f)55IR=v83M!$*8U#TM%`BOS)3kw8BfhGVxT;M#DOt5V0B1UqdNMCa4jv zq$Q4q1Eh!P1`x~!27Rj6Mz;nQ)eMk^!aML(V6UL4ca9G1Yj7Ed;6V2|F@meC$a|h# z>Z@1kHqkd2KC9XC7SO5Mb42@9jfv?w?$&JMl38T}2yZ?Ly6w#5l(5n0L|qGi16CYV z_1rXBDvgXQI4T@f2~MUasqSkMVguA^6rSAY49M1esaCX0WjL`5Xo5loM1*5Jt*x54 zYQgs1E$5wV{8elkJ=j&)!1$9=04tHw7{~=GulGW=e+WF=R5b?Hx+@Ez>eK@ZoU)4pg%pp`IVqbb~I{Kq{?@VXvT|EOl{O99h3$Qp|)f zi#1JPF`~!J`{Gg5Glo?@Z_;@6{B_ToHpYTI8ipi^yb5Uzj$R-YGzj)b4Aj9I^%%WH z13q)3=L}*rFxEj6usD?P>ur;SeBLw5d8N~+V|RG1V};b{lPrN8IH(4H$-*5=^nO_+ z`OUFF*UfOZmG|p*Z~q}q)VudVhi>2QJ$v=~2!8%?i+{d2c=`I|iSgk0$>Ucq_u&EP z+gqKE?$B@EBP$lg@7_ars(a{mk<+Z37-p1d17npbBfIJOlvL|o_);CNAPrb0VE5}_ zEmT6PSDa^EuZPr}%EZopfOQvLJlhZRJie*?=sK<|9*+lsE{KNatPWR6Vw#ZnQ_Bq` zWLwv(#BY@lKMEX&V(%($0dUja0;da52Z}bfsaG|bBg)z5b;M)_1DuM&QHAy}%f1a# ziZnr_%>M>8(#TH#ub#^;Zo0YYsS)N403Lk&=We09R)_9a>fm30QEU*DtE4dJ7hU{Q z1UEwP1@s6$=$K-&;f94*GTfk`6nD%vJ zsLMEiShlx1u$aGpo`XDj9AgZWGR%1PZm%%03c_Z|#8QRKi52eLZQYyHltby*Z()qi zc?sirbaODqLf-Jl=<%*%1V^rVJM{Eb8hp{w#yx_7IWR#nro9U~PmG!MK}A4KkxSwm zbtJsySn#lfERvJBxWeXl+@bfmnXJINh*4#9@4tG1cO*f7*Pmm;9g58x20XOqBPaO9 zdaM1njo@^euPmS9jXEYl;gLhq^KsW-+L)}A{gP7F%tjcHji+fbk)aG?Xg=YI?5EN$ zx8@VrlC1*<~ln(82{)>C|JucWeL39r{WIEs~^P7iZK;f@-9pZTXx&&Mdzkl7WP zx>ZpVvL`HmLUqFyq%+RvV`nJicku^f7#BI7W&ouJ&+VguIWG%$rsNn}gS0{uka9f9 zID-aO+{{MZh=tK&{MNE&{@T6J$bL5GL5b2rWEhPtu|VBFosg z&iR0W5Do|77Pc5>U+GeSgXN9O#5sD~1WP{D6yO?7WG#YogB46uNxklIHZF^_W|uIT z!ebbdgp#fy)p3N30tJGx=d!XW-1R0NUBY5kd-yp|elf$!@u$r~ivMj!A38K7K)}e; z9W(BKgDi>U7qn9W?kQ9~3mg=Icg7+?E5Us)Qc_ujP}p`Ohvqo-qo;>}wP9PhJE4`0 z$2+IBt4Xzza&~jwO%sx}r2Img>nJ>!k`}OxGL{eOf{+xc8_w$BKl8YxrooO~<_jYV zc|^jy1@?Hc(wTIe0-xOBGO5^r`KPW;uXvb$<><_vI?pNdE!Y4KE@o6slWuNE5{DPte4kCc38~5Dl z&HnT;Ex#4+ojTXKRzvYj71t79ve9#Il`vhBiXf&oGmkMG+wuyD^9R>v%M0Ye9`_Pt z3lQZ77cYpBz2efBW*) z{*$-IFCQKrKYMlZ_T(RjPXuLG|C6XXQ(EK7sE+gb)>bm<(c9;k%@BvHD(f0u(=P$d z7JEH(P8;zhEii=o7B1uBOTg<$vjzgys5B^1T1$LyD56@n z!U|4_TFA7H`>VIqQ`WPyDRxW8JkVOrIMMkVYG4q(&(d+U6~@t9vhwM}$;22UXNn<) zGicVpP@U+(ExuiLUeie+J_6+Kv0C_HomyF3&P;bm$WOu7Jm6+FQledWhINh!jvHJy z3dFwT2zv?@@U!hgLPSl*rQfc9flevA@J-Oq$HyM1qG_v>^Dwy5QPF@^&aq0jd-%n* z$Q|X4K&+&_$>>o9M|Hz?#5!&mwTio;xGxng(Jd#oC;ouQy`pAow|j&X^0GTB^E|%rzD%8&38!^8xxPRE-OWE(i~cIBit5ox^djLzELWPhrEu{;RKz3c}|-{s`DE( z>ihKQR;$lyN$Pq77H%mq)X4CL0E>Jjcblkrk0PZ zjA4RyHgi_4L^eS$)AZi|4BYrAZ>qE_>SUfCK;R0xf4iox=MM_aJK zbGqy%$=iag^rXvv^IFM&oSmQlk0AvwM_)pXgkyLrdT?z%{Nw4U4g09oPHHVv(!?95 z#T=6w6Vh$;oN+#K{w>WLP=|}*aDvMhB?PUWGlm2Ctn31JzM?O!L9>!9AV0o%ivqKeXcC%=IfX)eHK8OI2`Pj1g zb+aaZ?YM_EKUc5w5tkCz>1>=`vvU#(b)(kX;Uu12wQ5@Ow6k$Cq)U$tcDs&KJRR$9 zA@hD?@*zP7@@0&%8*C68s0r_*t*1jf5fibq`Lz#N#b0&3{(+wPy!A`?7yx1H}uc&NbsQGxcOU1YR>7+ ztp+bG!oeaiwD9*ah^raOV*K$FRyRjlJ&Ua5jS52TC{~<=?-{l=|4Oc{;r9wmXl+pi zYf6#REmQi+@Hr6^JtI`4q~2`@7zcq0gE3|{gW2a*WZJ!dND92dMF?fbIadUf%?P`& z)ghyB4==gg?q#zn7spjhXd1>jiTZRDW8l8_s6e6SRPj!<5#f*1 z)+0O|{#W|@g8u&asC9OVZJs%V!o4^m(XZx{8c8>Qq6=8@a4tst!&H0B=Nxd%w8mC( z4ZUkDzOi0o11{4dXmF*Nc<%@(_Ua;A4)Y$@4=qCCI@Ei-cl$g*`1HHrx*^0 zw9&zxz$&giunmC;s|OBXdlR0bb)b~#uYjNSrXS_K_QK$*&?v5N4)g}^-E7#62Yfls zAY<=;lyi+LIB+kLGSDA~TB=XxPNt!+;<(mltD}lE@c1pXzw60URfXBCVhx8{u1X*3 zI;JisaG`LKBG~z59T()J^T_qodyXJ#fkbe73R1xANdvZp!d7F7A36rk6T@GvkT9NIpA zH3A!DR=}@Z(6s_jOOy{Fb6jPH;~Smqd>OU=5k4rE%oaK;q3ApFcvgSa0#?}M+ygcD zEwmoQTw`~b$D^yHEHyZhF0%?&Dzlz#(9^fXbjr~du^Jov5$A{Akt6r0 z9Zy;U;u)ir?V?$&;lNBc8kV!JT>Y#obm{g_qx&|iBN>?g$)E@<|C zA?+WuH{w&&dj7E6>La0lE_#n%Jv`b+3EFR+ZBSG8WQ}`z`Ht|A0w?gTRLp9>-o&{< zZ6Kb(!kdKeCf$Q-<_{trmN#)iih)h5West0v#9{g;P|s=wvo+viSn<)Jqt1(+K}x) zY0ZDU;sjaH!mwI`Y8OerU9U{H4yd&}U?e~rn4&8@248`-=-_RCt7DY}Y3Q)6bs7>X zax(6h6jI_=r6x`VBU5EwHaAo!l-$!#KoIHgETYcr3Bk0JD~<`GHHOwK5IB6Rd70?; z1&F$$*d%;Kdi}Or3&*SmBB6n+9d#N;(qQg@8Dtwmr(g;BR!_7Up~Z9dX0f&PaH}r! zK8a3}SFYd`9cvaYK#NAc1a5MrnoKN?w`K7{`1+L_GTL<_(!^bgZm@G{z%96KFXcmAL-Wd zjnjW_oZZ>zbpG)1^q*9%f6)OrMrMuDb7tfEh-h}BX-#fTBtie546)y%XzDVoYyu5S zY$L36GMwsi@j6(IoABnu1bKA5Y+^b~N?X%)lS$U@-RW%fJLs8{R1K{=AYo3o&m1tk z``bjvJ%;RFKEM2^>*#+r(8n0|ay`EJzzrzi-TfMBkPlF>WZ$4nNglQ3$Vzy%$9 zuQYfVc+~`)F%|YsWRUjLGic3Mry-dB~*-hea ztl|I@na413_N)VPqt93HAn{R!13``tR%og1&(ThQQ_EP3vX5yVwIOu+;T-lcsuvH- zGEZR!Bw#>5@y%>Dp)0|FlU>?!olADxZ1nql18t8krtM|d^;@k|WQ z2oY~|#i>=5TKh+xkTPodEP>l;L360CL4B%!(?zk-rBEgKr*MasZ5g|7&(jZ98h`h_ zxQs&uDo*R_D_afbkb7u+1m)fh(?xAvXkpCbP!EDd+-|sYaTSamyrk#NsD;|~3VAgA z66`#3`G7)H`xKfzKZmwj(Zn)FOL_X5{m1HfA|9?z$BE1Q1eEro6_U}Q;-rqdU=UKQ=WN(50%%5Gt6Y{bfj$|oxEd3Z{w~Y9qdet!=?X zH@nCwP&q-~jl2U*{=QqooWZbvy%B3W=vg{XFrXTBWvHzZqtxX?RtGR7X$WmpOO_LD zTF^tU0llrQ8`NnH%nY)Gg+x49oM*LCfwetU;mE$xuuWk76&XKN@QK+P1||8c9Jz_c z<1Sy7smY@XHsb3?$g}3DW7(^d1jcJ<4UPHn*tiD8E}?Giq|e$?#-5gccQL9HyW)9l zC7OjBB3pl#RQkRD_y0jh?gIcQMMNmHs0Qi{5azwi%>oIA&C=o~w%kxC;XRHvMqW*|+p7lGh=SrTCJUM2 z`%Dn?NP%<2+Pa-+V(p`UZJ1lVxLs%6c_%xiTAl2kmHbN){v0=!7CZsc~cLNY{0 zl`3o{KumVoBeJ%!J1U#18)-x&30!qj$B^4L;}}ylBw&n4{fhUx_6+|+q;iG&Vn~lc z(;d8Kti0373V;+c*+||Q$yOh;^XYjyql_%lLUXWP;^xM>C0km53@ajF&PG=4RXmk6 ziUZrIk~Kj*Wae&d!1Wvs{j#17)8{Z#%U3QrXxW;1`IpSEPw+Ez(KTeLJNxt zIS@${Xc-ut8l~81%qL$PI%Gu+7;!!{m7(q}<}{TsY=? z7C$-BDNPX;yn_UPwuZFV5P)jy$u_H)AaoLvfOFwoMS2Da)IP&k(0i4R%I}eEf$O{ z5AC)r&xXh|_sNGc$!GCIF-*%nn4&ifj1l_5X0JqGD4Yg=Yi=%t&P7&q3T(xYB?ujok zoq4IqZOlxU1C)p2lo-A>!ao=Ejc(sW3EQIBT>432yYJ}_6}qO9^!^^*-#Mn2WNo%a z7Zds*7~>Rw_nKPg)XI5^UVBW!iXZO?>U2UM6Mi+t%UN3lW=<^^qm(0r2~3$&J0+t+ z73uQQUjlp&!**Gg^FhBa1ntd|r0kXN4OYPmM=@J!E1~|UG^H--PfmY{F8TM=m4dON z&J`KGA#4f3lzv|lNpel1Yo=B~AJoB{MojP1u3qnd0*@aQy+vW6x_rt=M>m2;369zI zy|R9T?5B?qm_Zi!qE210{0mZ*qs(hn3hGSsca7gN{iaSkV0^WHpuo{F`2XW#ZkNJP z0YQPdGRND)bQOP3WI24o+5r+7kCwIYddW0f6nN7C?=5j0MU@x2Ox%>dx$G~Irhw55 z>~2DTQ2ZAG?zllH>IJYR9Ut_X4(0x=DuMQJ(fj$y(ec5nm)=&cH*(IN?VRtISJ2cB z^qaAcv3a?e4$Z)1{D)nOjAmD@rig>lpeQs7kQ%^mmy02Ym1+M)d~=yh|FQpLpQhF3 zhyHMq4g2r!^&dZb`0~dm&tLu6n~v>GcEk982nD>^CkE7Py^M=!n1JH5n2+N!!P}}L zDi;$FX2l9{pz13a;%dpMOM5G$Z81h$IemizWhl-wG&3UNv^T9HLPdHO zkVbV*fudTl|8fixf^IEt<7VOHSPsU2!jw9|yv|**y8U%^T~1?pv~a|_|ZY&pePne5o&dfEdUw-8Hxve9<>LT zIsWxVZd1&GB;R`=k6;+9ZwO_7!qVM{>5N5aR0k+}m%O~e=LA1AHWAYuKlmXHWg-WQW5tuTI~J0FiVHUH>;W7M+B@rq)g z%-0?TWwb$F7P~-71Rm0`K3NRVn`iU3Wxe4(N4wRt#2$1~M6JmEsz%#x_Xh`$0hd4B zI_va^UTsHJz_w_Xn{D`{b@tY%s$P1Q7H4}?wp^~|mU(hI$s6;2K#+;^4;wZ~B+^Qb zL$($(4k6`1f0y9mhi{hXD~>MUnpIh1q@?G|-D901tRIobho zC1c%dLA4@2C;oSo#SPza#6{?SBiXg(S$C^$ z&sJT=AtKV%M48fuw6&#u+wQ-=Su02>y6MrzaNKTmeEq%qKz z?Ic$UIw%Z0LRCdsZN$IcvSMnM{;0SSHkHPRmj=>p2ev-Vk2yTKhk{={GUvMRo3l-< z*jm*<|DXw=Zf~7y-EMF6)I!6@*Il-8o3Dpot$Wam!ndN_`Jzrksl~$uWbd>qC8rKk zU7KE#d8O%o;jxc@YNCpmt0ES3 zn06z|k{}=OMsg-m4x?=N&YPnOOReOP?p`T=>2$uCe3-MAC~p(gKR$&QHo}LdO=z-wS3M!OgqfHycK;-fTF1!eTI6VASuXoZ=}jG2E<(;@Ox2&x;6{1`0&7vlbmC=OF4X zp-B^<>(Mb!@WE#{F?kylE7 z2j{pqT9)IUZF2J6^L8JdR@f{zb+Ey~ey46mR=qz}X<5(Orydck8MeZXa^=3DlqhQ9 zJ|zuebxsLN0x@l@dVUFYXNisrTOBdz&OQHIcV48th$>%{IIsnhosN z096^;Iqze+onc%gf4twND6?Ui#qGrm)Tnr#w38X;F@Jq@@HhjjX@;9q&c+==R52ZQ z@w}qB+0DBu1AX^I{iKc^&#Ru8V(u-!4jnHxl5+-fzflcHWdYVZeb7P%tA0^`lH#9J zDC&-Tf|JZ>2|~s1%$re$u$deyhHl~b`yRL~tfvz}B#yx*^^ShR-RJC-MH&Eq> zFD*95o1(M%rdczlKk<|%X00TDH)#(%mEZXD+}<8fddzq|c39Z!l=cK50_sQGo$zvS zN)cR0Q7lHIq$ti8lgdbd8RwGIU`@FXLZ9x1ae-#rwM*wGjQqqy>Tl@=SqE%F20Op9 zAT$o(c?<(Fj>Zc%WM&c7@3le#anz%iZTJh5JRV&IO;GRB6d6_gcv#?nEqOFO+?i)m z+?aiVMb@}homW54zow#xc3IBLPZcfQb29JAYnY-OCVtmmk%fh-t(j~FHA;&+9Hp(b z&w&tCXh)($JDk%KQRJKl@!uaMU|pJLnf)Timmu0n$-$TW#V&C$MO&4Uu>P2yV=4ZA z@YE^zUOSeU5YN_~> z52GZXmriL!EqaE>aDO@qG)^0HOcen65~K;V8YJ8_K@AI_&?OOpB0nv%GKmgmAW!MF z@!MI5b>Tw{(MqnX((=GBe=r;4Qkq1s4x?YNDAsuq=U4cE>UyJpq-s3Qv!d7(GfRr9 z%At2Qn8hspWs#&~tis<9_MIZrjNZaRj*GbSa+ED7MK12)Phz)Q)A6^2%l@~{3v|vu zna;}_9yJ=K1b^c&`bCXW!S}D`d_qkX3I!1$vb6b%M~`?H)_PgYGmteo%?kbsdWR1J zNq`XW_Q}BeVlkY5rZf$X>6?%5H40`dK+3c`92E0MlZ3yyqlF{+7-@czZ3UP#p(*)r zGNDOK1d&;q@`F%uD(euv_mXON8>-dUy4O$(RMtwLvxe}lb;beWZS<4nzVjkl4c{O+NxBxRIHT|KzIUK%*@<@j!NWwl9R zKd2aGROXY9@ud7XP0HBf7~i>MUgp$BQ>j;Gujg|WH-JZ&3Z3=F#?1&SX#ewL@6MY$ zozsV#|JT{=6`MT9YvS%~7%gC4&Fv0hB2VC_9mwF~5OzgWf0M{|uqdM0PebOC5l3DP znxi&5+Nh&BccW=MchqOFzW$0DG>W3XT31mKhsk5)6uWLDH8B%jJU^9k?x{mAQ|E0t z<<~aj1R$AYhgH z_apv&(C0USe^Llz54}GPWt0ZD_nN*$2m1|$%RD8GZtq0CG?W$PZ|`xutRyD8ne08; z#E*tzpeMZp%IqEUXH(PJ6g?SxkNLBqBr2eLPvK8f8Bpwql27GJL)mdUWlOBsW1FaY zu%rbvA*coX(ohx_76A?4jB*&Wi;N>dzFy?6u$6?_f8ck+Uu|zl@atd<1HXFeoZ0ZB ztEy6bsGFa7IlPQ=^*%8Qi9x#K&78*c;ceR*51eI#x8;~Fl_fHE*hfy&$TrATe37#U zUREwvbaliaR^82%8M#>rQS-6sf~8;!TZt;>$z(#i)dS8_U9*6*@0rQK!VbQkHSg8v z+cde;f9iM|)vR+db5fVsi#mAkUiBxjoH#hP18YfwH>gn?nj|i2GjoHS7@}Ma5-4O` z{PKWA43~M(ryo&TMCy!vuL>xlsq`8&FcnX)g80YD`(%OvpuK7K?{qSW>11m%>;ENw zA0N|}exC$w|0uawOyc}4=>K_A@GQ^yS(H@Ie=q{S8)dU30-zY+oAe$GS%^P}A4OCE z`_L^xpv_)Jam1bYox)!^Q`3uCmSZ2J^3x2PiKlaP5p$jXb&|xxEbFIMWnMNU!a(Bt zu|13`VE=jaF9sm>rS`wNq@-@9vjT-ynZB=32Wca4vHGG&(Crk1L=k{=fRJwcnq_F6 ze|Ti+p^U;|c(9o4{UcjIQ!|8vSixVzmkdNnVo>vaASkisG3IK=T2n4tB-3=1O)&12 z#N{NFqb7%mY*iM)dbmo&MK3xik!ARLRumVAKg`Ne3bVDMzD56m&|h|s;_kcoj?l2j zhc5()3K{0n=+z;{d`xbl7!Vc?0F=^Pf5(Qj|Ap`W)#;MahL>7V`S!nN89vOgPf)4- zubZU!7bhYimS-!W(~NL7A0RY^Y`1zm%hW?`LO+H^mi6ovsEGMuLZprURXGd)rEkLm zqH2N;BsUuHeF3GUA02EI3D4bZ?gZ8|5vvfUH&svSFn*R^Tu$(`G3cR1i57Que~ugV zxN{RJ)?|!fpjbAMU`H=DvaC#8_?mMdc_Y4;syQEF{c3Ox%j7%;iLo;B$(Xo_X8a{? z-PwGE8$F;kV9H479fxF~)1-)oH;P-D@h$rIu>P zjcWxT6Kz~7s7T{VfghhIr%ebxe-}YZb37-7>H`izJjWC82%h2YP|omE{ClRF0CvMk z_4?>}1sw={LJ|`N8rZ+Uf*KVuSH}pSxnY#$AUo$7w?vD0B__FHa*RlegXrXPF&)l8 z6PH#E{*&Tn>8F?W#{6JteIi4CPLpcGRi4L8#g^-KM1RKZl-I2N^aFkQVd+yo~JmTT6= z)I7rj&P%76Tt^y?DQESv_DpJcN~#EA8BY!iuDMw!G9xAfGr0Cbp75NuCol!x>cC`m z3RT7a604}&c$P7Xd5m@Me_%$l@I0GLvTIUtjMZOFRh;Z)9?yyiX&D*Jc$T>b`%#
w&RJ7b70%7%wE1TRq33kc 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 0)) { - read.push(post); + ID = post.ID; posts.remove(post); } } - if (!read.length) { + if (!ID) { return; } - Unread.lastReadPost = read[read.length - 1].ID; + Unread.lastReadPost = ID; Unread.saveLastReadPost(); Unread.readArray(Unread.postsQuotingYou); if (e) { @@ -8153,6 +8153,11 @@ if (this.thread.OP === qpost) { return; } + if (QuoteThreading.hasRun) { + if (!Unread.posts.contains(qpost)) { + return; + } + } qroot = qpost.nodes.root; threadContainer = qroot.nextSibling; if ((threadContainer != null ? threadContainer.className : void 0) !== 'threadContainer') { diff --git a/src/code/monitoring/unread.coffee b/src/code/monitoring/unread.coffee index 3b1f404bd..53368f1af 100644 --- a/src/code/monitoring/unread.coffee +++ b/src/code/monitoring/unread.coffee @@ -108,11 +108,11 @@ Unread = while post = posts[--i] {bottom, top} = post.nodes.root.getBoundingClientRect() if (bottom < height) and (top > 0) # post is completely read - read.push post + ID = post.ID posts.remove post - return unless read.length + return unless ID - Unread.lastReadPost = read[read.length - 1].ID + Unread.lastReadPost = ID Unread.saveLastReadPost() Unread.readArray Unread.postsQuotingYou Unread.update() if e diff --git a/src/code/quoting/quotethreading.coffee b/src/code/quoting/quotethreading.coffee index 81a9d19b3..0b0b59c43 100644 --- a/src/code/quoting/quotethreading.coffee +++ b/src/code/quoting/quotethreading.coffee @@ -70,6 +70,9 @@ QuoteThreading = delete @cb return if @thread.OP is qpost + + if QuoteThreading.hasRun + return unless Unread.posts.contains qpost qroot = qpost.nodes.root threadContainer = qroot.nextSibling From 7c2005e369df4bba708e3d0a46d51d90fa27e835 Mon Sep 17 00:00:00 2001 From: Zixaphir Date: Thu, 18 Apr 2013 23:46:22 -0700 Subject: [PATCH 13/15] Config. --- builds/4chan-X.js | 4 ++-- builds/4chan-X.user.js | 4 ++-- builds/crx.crx | Bin 82177 -> 82188 bytes builds/crx/script.js | 4 ++-- src/code/config.coffee | 8 ++++---- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/builds/4chan-X.js b/builds/4chan-X.js index 2b5328cbd..fb24fb02b 100644 --- a/builds/4chan-X.js +++ b/builds/4chan-X.js @@ -130,11 +130,11 @@ 'Forward Hiding': [true, 'Hide original posts of inlined backlinks.'], 'Quote Previewing': [true, 'Show quoted post on hover.'], 'Quote Highlighting': [true, 'Highlight the previewed post.'], - 'Quote Threading': [true, ''], 'Resurrect Quotes': [true, 'Link dead quotes to the archives.'], 'Mark Quotes of You': [true, 'Add \'(You)\' to quotes linking to your posts.'], 'Mark OP Quotes': [true, 'Add \'(OP)\' to OP quotes.'], - 'Mark Cross-thread Quotes': [true, 'Add \'(Cross-thread)\' to cross-threads quotes.'] + 'Mark Cross-thread Quotes': [true, 'Add \'(Cross-thread)\' to cross-threads quotes.'], + 'Quote Threading': [false, 'Thread conversations'] } }, imageExpansion: { diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js index e0ae62cd3..2e9205fd6 100644 --- a/builds/4chan-X.user.js +++ b/builds/4chan-X.user.js @@ -131,11 +131,11 @@ 'Forward Hiding': [true, 'Hide original posts of inlined backlinks.'], 'Quote Previewing': [true, 'Show quoted post on hover.'], 'Quote Highlighting': [true, 'Highlight the previewed post.'], - 'Quote Threading': [true, ''], 'Resurrect Quotes': [true, 'Link dead quotes to the archives.'], 'Mark Quotes of You': [true, 'Add \'(You)\' to quotes linking to your posts.'], 'Mark OP Quotes': [true, 'Add \'(OP)\' to OP quotes.'], - 'Mark Cross-thread Quotes': [true, 'Add \'(Cross-thread)\' to cross-threads quotes.'] + 'Mark Cross-thread Quotes': [true, 'Add \'(Cross-thread)\' to cross-threads quotes.'], + 'Quote Threading': [false, 'Thread conversations'] } }, imageExpansion: { diff --git a/builds/crx.crx b/builds/crx.crx index b8add01aeceb9aff9a29afd672daab6713187970..208dac5070f3c67a85c6b814067e0b6bcd6c0342 100644 GIT binary patch delta 78925 zcmV(&K;gfEf(49%1(33Tk|asVL^jni{_u8lL%;Z&=;cc?IrwGD3wH;0{|l{Z>o;K) zYH&z4$U)b*^xm8QEKjsR`=l~7uNMa?ON-}pQGt=uu zv!rPpz7*$IOc=Ut>2(*Cg3?-lZ#0WU2vMcw>$ZSRiH{WQSp0qgJF_wY4g?7fi!ecg zIspJ#vq=SJ34Z~vR;UyJw-ZE3Ua~>S(?s|f3M+lU@6=0_+YAJ00Jfz!RL9*OyzC!$ z5s(6j)IlzXHy~Tf=n6@Ifdv8t70}mj6ig_?U}FHDltoo-E1}T@N)}Q;C*oBVhtFeS zc12vdOYKd_{ZNrfTZxIoKlJ>`&4v-$Nz%>yV_t*CH-D|=x+id;?-v=4xNKaOP^MNT zj2hPnOSMS_HVFB!NW;|ShY?sLc~Qk_1xAV|6;;|Nj>Gg|eZXm(zUCyA>57WCiQ8KrIXG56}>2vt_!3NkZt{`PaKUAMfn^ z%YV*DjfEYdy&B#u3XRO=;8NlP%~$z9+~!|C{T`p)i9tRL#OI=}m(}iQba{C>JTD5c zbB92^QI(;D9$(P}d_@1AuFBc|H-|sJeQ~_NT2LwfWjY=f<@xB5`1ZTe2$quUN&<4e ztICAJA}vI*;qqb`D|&A_j5npem)Uvtaes&&_)+#TKO0WYbHMqWN^-$uwM3Iw5m=*- zMW}iH`bbyULl^Jv&-9XAJW$ZqE9T4Dv?Oe7#XHfOToe&F?)(`R(BuHPL^(As)E~m_%1`;Gsqd?0*UK zt}cq#o|bL#t*R z%?2Ni`mXmZwcaPo5KfEq12k|1u+M?{w{g`uNsiPyvrWe9iEb1(i=gl~^U*ic(KlDU zZ_@rZKka_=a`&49T|}#EQ0(EuZ-4S>*RDhq@qyK6N$;EGH(-)|Q})ewHu~W+2p?EF zOZ{P0W#y!*#FV}$>i5}ICD-;tLSAey;&R%3QkS!>ad%+8ui1xWdnubQ>nmlYb${t< zGwM%oX*DlaHS3g%6`3IHZgKZrbp?WOaFL(YTLGL6fhY@xbPcd|>#f27(tkl6PNgTa zq9R?Q`>dK^QFi{^=ZrM~dN<^%>r0bJssS+jJwhOeAQi1G5RGa9p zt{U{q!mW~tDw+D|)OeW!@ti7iQDv^bx}92$=eaiLsSb5Wz4kTwuJMj^FR|EPg!{rN z$8I<(SYknbmTsU$aT(M4NPlt&?x0RaR{IeiRUc|5yJud1Zt#uQUCr~z3K98*zN zwdvR}`MJtqKwLWE$SUUqpb#wS>R@( z9R^V8pD)k>TRHpL`kf7%`heDrj;mn0leMFL1$xPq&BgXi6@M&f?B0&zE&L-x&?v@G zJx?%f4;H{;mZ>*Wcrz^~E3}*Rs{)Hnhx+xiSth=UfVMwBdwcNw^(##lf>DuU|cd7k74ccKZFk2J@TuNJXD==x5ly$MDwl(C;FL zo=OZ0GSUYi_b5s=&nknA3O^mdkC}pyaI~ckN)78^Eq@Haw4XTkRDZ>u-?AUQ5ZN9_ zunG|gObv?ODl-5+>mQ7`j&o%cgL$HR+>6HyT9q2aF>2xn!L zX-%Pr7=PXBc^$b(8$^n@71YSRuv`89@&cpjdinOYGqA`AGV(TnPf`VB$ooC}=5xRW zCREqO-%?C;!9zYR&jK}ij5j7| z@RMSWZ3m#BDt>gDpNO8BaUNpa*%gt7ubC0xL8W-jXx*&IXgHB5c-7B3(#MqIl3a)>G6OSXJ@@B1`WJ^3F-}cQeU8lZwkuxWE?_I z&L%yDLb%yAS#xoQ6 z8~x%Qkh3X@FJyL2rhzRgAqT=DR<|F+#h3hNQ*S8Kcj-qljH?oGKvfA11rVvlvVX4p znNnsjut=*xazS3kN{ut|68^y2y4MSJXa-9Rxe>%h zzhTT2PWq)mQJ|y0IT#X8st?>d?2LYczwM+^Z1&feFMg`)<=YHqc2x^zD~Gt>T!PK} zGM{IMfN8IbPU6u;J)d=jzJvV%*?-Yf9U~loVY;aOlT_(~XzMzFVbFVuz&Kd95VJU& ztFA{lU48MHy&P6qt$M=_t8do(0K!0>YcOW7&eFMj|K;T}QN z6K}?=5@Io-7302F3`M^(Sh8Q_ypGEP>c`Lw0c*(aBH)OpV8wC1(kzItI(Eh7m`&47 z3CUS{kQldzC}fzD4zPmaFopE-1tgPNtDC_B&Ht$tnw1$%gFUxQObf+&8)>0>L{uG5 z6?Mmp716Bk75MBAm!x6~=6|0DF1^xmQP#UKMBaOfC&Kq)99$hh@CTj|oQ$1$uO^co zPUhf1Tln1X_4Pa(``)^28rL;Z5P(!6%FxO-(0V6TifAh6tvNEqPt4eI1&fuT0f?tn zgQnZmI#n5hGCJ?|H%EbLHCY&Gl`aJmb%uwD9mzpP94!ChdORFbODGOaH> zN0jn6;ezcro&wm@VSk3a0`gse8IY%QiS7jiSJ&y z`mRDIn+@sf3*39f;j(3Yi*5cjpxNAShR)mFU(*6ZXl~&mt$)4-yf(1g2-KkGpqS}0 z0lKILDx=E!31X8+AQ@ls0Xs!h$I#foqtOVN7WZ&TSM{{%4Gr@#c$_Hx{M+*(A)=CT>DjmL zq4I!AMje7=H*-a4=#!T*y8Kbmh)EC4(CULfd~@E@=m^9{DxDfVs^IB!*p4!-TSm=t zHxv)0q9eLF+l0gYsqY=4d|`2o*sXA-#1o*|jn@5dQ! z$~to+-WGAXoun;|Qc2uuKFG&2^aOfsj;YRX&}iroqyv0k)RL+j3|PFSOv;xUCr!gf zPzgoF49aG-rt_3lG92q$Uc@;Tg(Zw{TysR3Mn2AF9@@piTe)c888pU=bTOS}rH}dt z;>1Q0z!WAy4Ov*?Gt)q6OH%8qxKmrA21=GVSyKPt|u#d3R%^Y0Xy9rC3A6h z_Fsk+yc~TEHK??t2iKlvpsvgU9kpfa)^6T5G9^vCX_OtTWdUOL2@U#i!Ih^rEp z`C?jJvd0n%4U+EZc$O~ScN|=)B=Zh4I)NCaS z@_(r}36F(omLmAQcWOJ+d56FoJ!5AJvlEGpWBrI*p#g(t@1wsP8sB3zeLyFLcuVZc zP5Rpxvn(yOA3+z9gA(yFV*g#;zomb|O~HeL;}-5e={aY1##&sr2nUP6(89k@KwK?Q z7URR8u(}*+{f^RMIU|S=8b{G`5`Jgc&VT%?xwe5ntT6n}p$gViMUHl)^i{*>g;oqj zbV^OVyAxp?1gaQ}F>@KrG7t{AnszU<3J;tpLOJ~u1XMd2ZegcGqVN#U^WPa3i#Zp^ zRZP(|j&sa~Y>7vHYQxS^G37UYcZfS93frFaNw{=aFSWh~E04RGD|a@PYUi_JoPW-q zeMqHZI3eTKVfboN=1VES_=WYw(WAQxxV|@lY1cV}k@SyIQ@8Dnc&L0@u z5TqgbRlaGEtP{#@F$9IG#2D6MfwS#An<9@G4N)Xs#E<@tB1ccW&#oL%lR1#zx(c(IWety7z6lZQI`ogyVOFu&mMYr$ zbsbm8sm>$UQ|~$4sSESf?gOSzooVPe#qy)g+gg=_& znKo=ky&5EWMY%P+j$&Lg)SXSGcBS7ztEv`s@E!`%`&On?n2&<4Lw`EAllvgRO#Rs0 zBT;MWarD{FK(x7?e2>9to!)Rb><=TQx9@EdW~b^jS-GfX{0L+5S{=$Y1e>OHI^g*2 z=TALi6@o~G9TE)>&rW0Y;i8bcWfb{szCkzZf>!0Aq-u0m{}7*eRJjU{rkEi5G&Oxx zPqKM)I-3gMqxfnMeSgzeXPZwQi>43s8<-$lAgrI?KJVGr+FjNgeTzr`_eSTiSa!O7 zoC4yUt~dcrb>T^T!=uJeL_aViPI=`Ocx9=e3Y>b>zyk(m5H7tBKOa8PRLET#>hshJ zwA_8qs{=ZmxtrX&#dy=BQ-TiRO-+djJ;rr+Cfmo_Z~!tYi+_1{x)k)qWip2kOg^iv zL<4n#22AG9U7mBg<4xsPC7yvFjno-4I?+I9fU&aTNSv3Ws+^2A0m#V~6t)-6C(6^H zzFazA=rlLIpHIJczVN|s?mGTumBdVP+UPs|>ktz_ z+l<(1f07S&QgR9+>h>QGlAbR4H3*~`X zrv_%p7=M`MVL->U@o%HkoAJPC%ArO{L!_4$yq=Bt){G%ZGJL~$tFfauW_UGT3@<>E zUR#WL$-;MPJax({d}VsA2Y}v&qhVh2(9ro`eC2SAc|+Wz2Z-L<(bD6nUO#c!kvpnc zQ%Qba0_^eu z+XYFTGVaO;Ea_7_>v$c~C7e`w8Ks zUOz-B-_vC<*0xKU<%1EHeb_PZn7IMUEzNh|erwt4QPS%q5!h=Kze`IYas?*fM@0C1r-RP0o5&t)ScNH)Qz&$Og{d;VPWWfMc%jX`Ad5i%%jGD5QOwMS^0ou#W;-8L}Jx)O{-{A*7UmDGu-TIy?qQ{f;O| z9&ANt{r(l3i5*Q?g~yNZ>7l=vXn(hkh{MCjp|Mp=1fIJ;sx)A78G)XHBzZ8+KL88w zpCKMfZ9(i939Rvuir8n=oF6_I!OMqo;WP^LL%pi5r?s%8ETQK#~C z`6BIdOM2;LlseG$&3binxNnzWi(do(w^`NN1z!u(!|kepA8|_1us8VKRDb**6=6#l zRVMY!hBLk(K*-`Q!D}N2s-Il#O$iK3w@6<*cEM0|n?!p_VprP(?xj6Ux5@8X` z3wL&QoZ_+VAtr~yeh3rw7HwJhtjM-Dt%P9nh)G50k+gQ107W&{(qq8#nnf&`OkF+r zL*OTV4-3tCR_}9!Ok5ZUieL?z@sf-9H9Cs6=hN@^O&c$teorEZPJcY?ceUfneAh&S zGRu#9+WTfdGlltU_aRzqorXA&mguB>vB*kX0(PzB5HS2%rwsmdD0Z~1C;6MZceNW? z)N=}3#+EJ*vn3(xIVGr3gKP`*U<<)R+`zDCcM0ilQ&<-Ex_*z*RYU<5N+vF+XSC+O zdHN$Vkl7d+n&J3pUVjBLPp_8DwElWSH~7F3b?B^7Arrfrf^{f&x*f~X50P@aiS`Dp zXKlk*+5^qYP^y`JyXP~t6_!M#=zJp@4U{3?gf=zq4!1D)Nu%oY1N+}mU%pgr(YVm4 zP@}9fY-#ag-?g|x1R^obQ@Fs)&qs;to?!0;ex}w}Lwf?FJz{O;uue!D$uPLyyZ6Z*~Lj ztWuXfAAWmY?|Bh`E7!#_WN_7@&%mBSF#`19f6Pj8<+eyXh1 zEzIU0s{-FaTu%to`BRbVjb>&Eu9{f!Z#L261 zVtN{syCK3c+@9Gf_X#*wLpfGm^J%-~6Bje0)0Ym*69WTSYiM5iwW5Sq<8&n8o@i8@ zk4?i85bb?Fn>7%O^U76Ed8F{Lmmf{Zynh2r&FeELMNT5THW@>|?2+d^k0ls|kSFMB zs3=F^m-YPMmAWBrK&a~ED$`eS1)qZQ4@u4NXwqVGQIsMohGP{}5QL3fQBf)shLY27 z8&EQ!Xe%c;gu+*%ks)sEznIU7j!@X!fPpyyW*R?8sE$8HGlp5lr_+S_RJp6~_J6-} z8Z4P1a0#L{)jj>25YfbUq-U4O=e5j-bL3KU_W0)@`q=%XRyP_HOqS9e#BK9c^d^;;5dw z%xZmaa5asFwvzg_=M^JNgHqCQ7k_dHVxydPhzkB(hleWedH*a1;`{oxbs!QpZh~dj zVW2C~-zW~c#57YOxlfAuvRKfWSqjTVZ9&b2|1Es+4sODqq*;kwN9*v5IHIChM#`>+OqnNhZ=FQ zrzY@aT4nVRtW7@qwbMWiO8n*AHF^>vLhayPdnmR4^maHM(~%NKp*O+$b|vw`hjrM$ zSP`8P`pAG zYnsfb5WF`)fak8#Y~+WZ-@e#Y-60toi9(0259gS(pf@@?o(@m8j(@A;%dJr#?7uLY zoe82j)DLSHk>a<9I;T`mD{)=1$=DYhA~&~q_j$_@j5fJl^awLiM;*{?IOJ%OImbal zPj3@IX#uMfo(On*J9+3uhbSz+3r=``jtn?8_I&XJ?%v}X?{1&lVnkOMEaJHoG(WSW zo;*@SugZzuS(_DnDSr~H=#zrBuG-EEB<^VeK@4b9)1r4g-Rd6?fgE>E$j!kA38MH~ z9Ryu4NBZh5!>@f7r0X_8b*A{C+9IQ91Asf~LCc?(i}O$C`C0$=C?8TPLbv_CH!Sw6 zy~R(NZi>h-rJQ9)Gr@H0BmCcItS~Pz=ZR9b9G@lImz>V#hJW60h^z|gf)|Q?_VORd z?;`B_)-6&w&8Aa#AlDaKd>Vn6AZ-R>w~yL@xKbMGEHYyp@`rP_r+vd&HEX|FYubJ1 zbX=QC!-g0VY6K1IUV!4~25VKWEDaVb8kpl>$ec`J3D>E?h#mtHz3OzpJ9$EY|Ggs& z#PKhh!IUn{T)u)~0!M-Z;2&+6$54-sAP>lxNPT`c?+Jeu!$$$3t={uK~aQ;)q1UkAFH2WM6 zz2<#d-ueKC3hgG{<3&s#b#DwfGe;hfBe0=&MZV~PCaV&+T2Xjh!J2bEmujwcmc)2j zU9#NF${>I)Fh^Q_!EO&@C##=T%UPFSG;m?_HhHW=PQOXlH8#@VzJ~s3_cfM6iF@HK zBe(F~wSOGdnqCfM{nCRzQg>6{9`Q<~i}`EN`c(U(6EM`&J_T~IA6Oi3xfWzGGS*4L zyl$TTg;#dkq>B?jO;muoD8dm`U$7@o9g*^4Xs5G@jk-qTAm0@Zr15*5`0i5I1#FS{Za#eb!L{{UjP!S{%k+DAnU)L8wGirIu0XL>RYGfg^n(>e^iJ0R_DxBX zXMd-Aq@t@&x`JGNx67DJvxinR1`I^7)NCB-v+7|Oeu!JLM>6L7gu-hqI(uI=vz^TP zq_y76(nPT0%MyKJ<IT&M0K+Fl#vSB#5}Mq5j8YV&P-Ay+G9m|OgJ zVsR^WFsGA<7b2%Rm7&cKKnXxM3t&Zfq~~4`rl5&x;}lM-)l!^GIz8pg&{gk=A}xR4 z3t|g+REsh{$3%4@15g%tTBH@lIe$zbUjXN2`meqNPWge@oyVe=a*CM+;Jv>Hz@NL$ zTEKtQyL&zlFrLtJ{;}sW2qT~D>u&h0anybO6lWLv-tZS0kN87{@u9PwxA41c(9oMo zZ4%uK3sK&%7z1G^bZ$8ApL=zencCW&#D#`#Qhk+gS@2<#Q|-TF8`j1)=zledJUYzl z0SUf#8Dg*vYY?seT%uvgyz8PjZNTrn#qX|a>#oJ`y~6J<{*K}|)s>D;-}?yi(qu$I zS7Q=${vktN#Rl;k@xYHZ;5ukxgE)+6{6-t>SQ3+HTbjtpMJ zKy2}|xtyU)Jim~>xmvZLR9|volf9H|CwENYjTBRngVa$*sd=l7zER_dk9ZF+#aYvy zXO|^BN7<4N#V@c1J%RwQ-@-TZ0t0RM;lziSMB{Od0&B`~+EuzJ)yw0$$fd$@N+%@D zcB(^S*3D$jR(h>=y?-cf$e9Y9M3`G<1$A+N>0HM^N2b1~Dq&9kg*UHnc{n#4?m35S zth+6m_Co&p918!4d511C7P`4J>(rPMHHPXET<8AV&!U&=-srV}4ab;KvBuz$&SZQd zyKsv4xqBPTIv<>$Lr#pA%^!yVYzjG%ZjL_KjB_S89lhr#XMY&2jjfjOx&V z&YWdzhZ_wJ30r-9bN@Rd}s8pKtv zM~L8p$-nMs)kx5+Z-_>Fqg>9uLlv^$?^}McrNlcfrG=iS{;d;A3c0%*B6rtE&cP$n zu&-Oi7{;%8vm)nwErXepT_T08%3tXC`kQ>`u%SN4(>$#M zi5F#xMyAI9$W$@si9E*}hss4fZ>GZ5)@dF|azs6++KQvX8^0}1XeDu}2qbMRae;^~ zp#Sqz)_L3)d5m8L&&|1qr@X4cEc7}XCVpa|s=JT8&LmnBiOPC!`XD6CZ5}dB`@A9T zxMhpcW`7E%SOfiu*h6!Fz6hmCC=$L_yU{;5v?MrisDkb-B53eD;k(U|GCO_XQmhNM z+1=zjkT*ZQ{`qYLPrt4oW^t{qE1>DS^y3qy%xr&>lG#DhRBI)!j1P!{&?{E75k%X`(;)wi$&#K z%kxzmBKY5uJt~o15seS(GFVC7u+}=?9-Y~>;;>(uZlW9%lY6*+?Peiwx?5dKfzwG zM=K%F)k|ulc42S8^hskcX|z{liqFs*e1C#}g{R7QR25`N(BH;VbhThp;w+oa%4Crj zX;AiLaxR&*>*4?R|6-~Vk*!BvMEI~dRfs}nNXZX}#WJ1bWb5y^CGbi=ARp0CZYd#I z6@>7-Skj%$@`(xKCVahMAaxs-j`k3jLb<^MCLDw!x71@qtKdj4jS{Z^E=EDk+kZox z?N>cLxPd=TvXE;DBSGXuBih7s6aX$FwmIo6Bxlph=ek0wK=|+!>C_iUUgazk9UvRTMD{x?z(R>pj0pqN0RYQx^ao?3Mw=X zx|H%k#r;ksRaWOD2pqAF2sdv3v$Hckk0LM2Szq4&7>u5fjVcA~bUEEp)E57~7* zb6{vQRGm0;(2qwmBY}n0ZhzVl6%t;?rW@y$9IoZgLT{8_(G6!!qoi-{hW^Q61*!BA z#$hqRo8!veU04W@^zBT&-;-1xxG5+*{S%0@v;4!>X;A4-yd=XN74u*gK zUfmAE+}t@)2-y~5*Hxh=6+z3x$aT`vWkxN#ML5px(V_kIM~9Yttbd`2g~jq?`5nti z-nJV#`r|$MaTC@LdCi+%dOFbSd>U`tDar41_Cz$Iqf6sk0oL~mgowpW<&f}?@(c=Rb9N}{@j@}w9g@eurf{6fs&~bxaRuCO*x3rY@9dR-L!`)5& z4>Aqm-N5z0N1`kXi=~cUp7;YCJx$_!5LAHBk%j9r!E_B1M1P_R?`;-UXnH&qY;eyD zF5HX_PESc_QcgCBHuHoD1MOdfCzNaxZJ*_{T3(VJTP7R!4zXwV9WNohN%qZxD%U&# zSzePzRfZmH^WF<*FddNh%Mjo4W(m9j)m6jL-vofqv6Y#^e|7`!t=yW@UFHDJcr-a{ zn|#HFoP*a;;C~#NBN0K^Wo6xyf#=>41xu93N`_jcdtRgSqJR~0an5Sxt77OTI2{g$ zHor&XM(1@s*0FT2f%`gof|H1FmetS<@xD5yvGE8=$6hqL1k?QQCvUT9j>mWSwo#86 z`)z%P`Wy8jRkR|PYtI!8>!)HDsUsN@~vkI?tgD-i zhcB(I5%(=7*y{v`tUY%kQnJJN3 zV&QFoD5V(Vtx0?7fV)HK`Jjy+TPsc~cqetW86aJxOwtmEO zO8WO4`lo-7Q-C!+KEVwKyHVn@kGCP)CuWxuU$co69ydz7~?Y+9FmNsoz|2S(>{o;9Y&SEb~R(fJHl`5der+#4&HK zha28}dtYY>GXy5Y?)S@&d-JqB&llUX?5y4$exJ?v#zi^J%I!%pE6Uy9ou#RIvwwSc z`4QL{k7Xp~`8e&}{r>yG4*YL;r>`rOVAZZFEZJ%3TRV=t10Uri;^7u{(tTsR;lp&V z35RvCJU;sznXfjfTzsnb{{HD0&iEMT%tKSL5iW`RM&**6ZGpE3`Z$-R!boP-Y~;1Am?_%VLsMRVFj&sE`!xv!HablDUT7B!ba{GIr$OUxOW$LT~jGm^s)EX|T&r zZ%@sQkkOl}i)dD9!SMvd1Ai6mdy<&WM5^MMOs6o|EsX0P5pi2~yl3SEj>IZKh-;s&nA`0k#9($`-41efMv2S0w@q8xH z@GcdOEV{pu6^4IwDAJo^c6G){Bo%IW{&cr3vPoAN+90r=Z{gWbaZqTy!ODR48t}_m z{t^G;GErZ7rkMyeJE%eGb#Y^NT1-~@F0@-chJcYv-OFtJKCl1WR^?HmN>SRsdGU{R zrJ+dIioKXyKH|Ajoqs`>5M#HMbp3`*HKK%5G>ES=Wv4@rASk_$bbBYFoJk83se<#3 zzju8m(!qjic;br4rdWIl9s(1>p%+pk762`|`se4(k-;ys#cGg%^qCc)Ois&G{hKYO z{G-Ba90$oo@gXbKANoeW)W^D5O)lsy{hGrk!?z4tMhE8XWPi``0pQg0nZG&0aj4mB zkRYg*)Lm^6!ZHCTBO#R=5kHI=$S)v)@@Yi=n1IVk#g5&5(+#n)f!BDDM9ul$Ctai? zJ8fxEXY<(3R-`Q~dK86x5{`dDl;iliA^z+lJ-w)8CT^F;j7BoSNW*MeTw*SIGx$Lg zG^{tIK`Jxb^?$F+e1_2CM>J>yW5W04umX9_yq1`HPQ_X`bhY91jvWmcjAHo)=5u<^ zaq{gOgJKx*%!nZ+zBQ!T+}={F+%&WI6t3d(;rrKUC4bWQ7~aeReTI8 zhDFRN0EFO2XX|Kxj^P&J*M_c0)5p^(R(^(Bya;@z=YMFbicQY|=s0Hpl>4_Ge70S{ z#zoNiJbj-ja>Ru-k{K4W)t-!*m~)K=QL;{$u+Zot5HH7XI)0A9ox90Slwb5jq;WPU z0d9;PUGVR-E5+~n6b%x+Y8WHcmZFpbz1K+gn)pl-9oTqGT*pr6U<^nzhDjLkG)P)f zn_=Le@_!jmr+@9er(3h^r0@vnwu!Nbk+~&?&+w_!hVqhouwe1#{x6WKFFs-7YzQ_vk=hb1&rR0T36rLmGMt}a(H%*a zvNp~xr#ijx>Z^AQ04JAZc%Fj_M)WXIqUNVlhTeE=k1?kPOVc1bN8oWTA0L>OA0TiBK=8o-5#L6m%WYfOCp7O(@b1oumVYVcl@kQ7LuV}k3^wGCL1egx1{W4VJ|g7g%(v?n9urt`5MhqMR$qeO3TV=P<0L#iEAw3>TX-Dl5*-$)-7#&K?D}&apz(U z%YXp6xt6PIHQh>~mP5a{H@75e_Skq;jPO&-+Q_4+scP!PnZE6uqZ$IKdN%4E$_CRP zTg)_oPXuGsoc|M$x&&B*i|vuMsvdDnXdBkBIPu2^m(P~ zRz+D`yO>T&!+2z1-N)~hNw&C#5^Q$;-Wt}FoN*iK~ z`jPH}zSWYI8(gO~6;C!96K#<>!x5!FW<#gz@bKR^pmYsFIT{R*)&WVbQ-5;B25wc# zpqP4YHSS)63aD!}2qCp$OPzfZ?$*){>fQhCZJ-7-Bv_mHzeam4mK%whx^r(gcz5rv z*F3W^O}S0s-uo911|{@$(#dY5SessPhZnK1(wFr&r_b5mMt{}0FTh&_d@89G zt)XsxYnLzA(9$dA3eaL`y)PhBHF!B$U;d_T_e|LCRim-q-C2IboZ0EBF1lnL^G|q% zU%t>b&#XypS`Ur$?wy^TZyFk>PhV(`>oIDx$X(BiXIt}+CVSfRx#;vNjv-$<oe2QRt{clYBqMR!SVJ20ih#A1h(VArcCi($(G(*@asi4 z*=t4uE6YF!y{(`bC}%pMQuKX|=6o@VYg|Hh6u{ zfvp?&9|)$_wW5oSWLz~cFQuiWvK8S^vwPk&k2MG9)gf+5=XjN20n&^Wi%FSf3$2py zlNRe5fJ)p*o3rTuvK!i{C4=x{Ujoi{H$1T^N~c8`qf|BqQIayYVY{jBy55NUh8&|Z zrMhS;doR>rVt=aANRDS@fMk ztEDcIEvAtYX8Xy20d8a1k(JOb4G9P6YY(y~7fhR9Wp7a9&0$6K*^HH_PL6tQL-qRn(@vRNFfBW}1j z^A@Gi|6S7-MWmUzUomAp%6TbA)n!`IrONK#$mN5>RXmaG6%E%8s@1-HSQt|LuW8Q8 z{;&m)*ElD$I{Zb{_aj~{*XuymzQ>C;j5uk((;}_XY3SyTQU(}+U1S4d8Y8;xGnwPHZa zLAK|SR5+%Br@~Q{=wxb>>Y*l~Y=9<>B7Rx6J74UIcA*U?ouC+m3Wx~Lc)GS~;;RLB z?(TTs)W)A>)8xUv#sJ0Ym*r|+2Cv%_UnB3=YQwV{=zPrNm^6PI-L*;GEHyf9THc@%R6<{aXjVd z6>#{tt7yhswTQNu-Ybxk`qbRQO=ax+&hX6gfSMVYW75%dCMrY-({QV+eNiM_*gH=* z>c0&9RX5SAtC&fxb@9+|EnfPXWqM5yArlgg1QeZiBKNn0AY}@6QykMGl@u4nu>5g`}#6}Z; z>GTPLL8318u$S(zM2rBMl8U>2q?Da@GI9z}x)sEv1#Ft0CRq7-WA*%8io`+AKfI?EpIOKfF=8?(cwI;Cl|fZ@u)Z4 z>chXsm*4eA!6x%2@J%liWX+{ z@=_h(PA=#MFN({oe3D{Fm3y~A_k322(^)qlsA`#Hm@0!i61UU`JU0>mUHtOt_g#_f5Ev{L^Q*>7k@1ep9PvzSxTEB~5|G|z=g&Sa zdj_DM#YcBf+~Gm+laylNPQ!mBR{S5lN5=JYQt^Ly(B8Sa$K<&pnKD$@+6}kB z)mU^NK)?82b6Lb4$$sSc+68JOqYHiI#)wyECCCE;Q0XSp8X&tM;$ouYUO4m&VcS&o zQ|Z)#mdZ`#^kUsJG438*-f0HICt=$usJP`9ON-V;Vq~eSAklu-s6ATt|t+Se%31^A3+Aj zm3?3S1+&8v>DmD7T~|cOfXJH}n_54oSmQ&L#D*00GOIvHvv)y%P;_hDI}zIio7*hIO=CB(W#rG<65t0tUeh0R%%E7o0@vfCpL22$T7QP_*&GmNFw~_W{anSs#NXtz7 zrP?IJ#%wKNLOFjie&NjE|4>H$lw+I;fl!;p3Mfv~P#ZMa@TILrCrUz#BvI*@{3eDv z!P5GcLJemFop9YbIVZ$RSk~;0W2BChSUL%Hl3S9hC^}R(aFK?m4G3eWq2sF=dO7v? z!T}XiJE7=ciZkLXrkty|=jN3~mp{8O)nZRu)(fk|QZ* z?C&9l>#HLW2l;pgJQ0{1!ALeK`+?U(OGsMHn{Gp*JDhl9$4*^UR_IR-@=TgQ*r7cA2ph*sfktQ)qkuQ=lN^6L3KJzs;AZR6U6;p~_< zKo|sct=1`h=M6LraIV$voOa4=OO3vCR?uOwHu-;L_zvqeNd(q7#OYA=$vO{td$c=d z+-^B+@8pNq@C6|MjPzCFC6vW}LQSNxn{^7~N01=$9p~^)zTa`*F0)1R@bZ63&8Gu2 z;$9C=y=ZcQeRkTjf%v=0(TV7+sH3clqoXcnB0yg*sTC)n{d9k(MLJ;@uUX~k)1h8t zF=T&A|E4cbQu9HteDwa=HZ4AQn1g=M%LBCzz+1f}Fc2k)5s3Op?|($Oh-W_VFTYWO zjNa(g=;&>Dg?~|T;otJ|Rm%pVw3r(it=g7d?Ube~lGSf0XL|Er4q`+Z)A+3L# zxG>ruU&y&sMsd`(yTly#NP*tvzvAMK(Wm3%Pse}%bbR|0Ug9zQblm%N-2Zg^>!;(- zpN@|{;Y}TnJ{^De>3HkY@h9h=j!7h&&4ib&;~>?IO*DUe>?Nlc{smqAxUD*Tjn$8r z?;Iav5a^_FtiOz$d|Nq`-=d$p@b7=$?VH=9PB;}f|0;6_E!;G`Z3$PEvpB_6s1+yc zz#lU@hlO|N)H82NVA(|FVU6cG(Dv-P%IdXsG0D4Qi`>LNqJNWv7WLKu>kPE0M$~xRg=pweUd!6q@ z?{&t~TU)2^B68cZC&z9C7hanp>W*WMHYJCmxs};T-h`;9<#`35`kUWwY%VpMPMg^W z!72_?nfV0+jZ@5ke5y=%I|FPFp*p3buSm&MHi>LxO=#pzi^F?zr>C3`RqV#z}-TwRsxhEgU?Rn5ePYd{P4RzxZ;ZNz0y|K31L1Og zJw%{=!>R~cdA<;Gwh_N1*jwK(33L%VxzjOO7oxto;EYH`Xtp-22|#PiHebP+M~-g(gIPW{5F~azS^a|PG)?ScUz{CMXGEg{#V<0PgjdGtqa&>)YYpdS2$6p*?H%J zdyIwM_F~?>hNj3Rr$)ng<>dIIw}>J{_T-G`;V~%A(lLJ>*md1F_WGIbgM6`E)nrZY zPcE{_`*HD+BGKzxS2(LEj)K!7C@jwYCg;UHdA&xg%QD?Z$;u;!!|Qk^vL&NU=q zbx~YyC4JC&DnJTVwQHBwIv$B{Xv!ybZe+02sU6DYz=|@rOMtT5o3E?*IQ$+Qrsr} zFU0aU$+Jkjo(-7ZP(QZPNRNwZVzGFdznOU}bf1QrJ%X zBHYe{YMCw`9(}tQSIa%D-LqL<$+d+SKyTAc(OX@--=xDuPace@ri9yOUHB=H(zsQ@ zcS;7{=hSnrdE*<9l2j_nuNxDOzB{zlyR5i9<^gWv><#$3fvf%Or`!vN&xu1nq_cm- z4-HivwK|dw$Z{r>rh_$rT@%qI&aVGLOoVWGab*GqxOjI^2I3}G@uwohlXKk1>Z(ESg<4hxSdzdoi0!N=oj#8E-PV=6O%b9;xo z-J?4h>36%8wFnlNSY2hkqGcv(yiQ7u3e*S+jD`<@q z$kIs~na)Y9j5yFR6>ksgMX!_KdaPURyND=QmGr6yo=C?J2_@sJF> zl9y2`TK$N6&`r9aUcJ=O%!0c8lV&M+8g<1HVmV)KFj|Y@ z%6Ki#`FgdOJmGoY3yf)GtclkLFS~x0CSV>m#um1FhnTH9TiflWH0r`Rj!u zX?2INeEr7JcpTg|jXr-8!{3rkl}tj*L*C=-g@Q0JbQGiH6urh!*_?m!P8&{p_Gdg} zf(I)iTB?_VFODhT@yCPLulR1K9w^@F?4T|%eLv#!yw2vm&V9VRV4K2|>TMK53Zp(H z4f|CbQESQ7M=|$)jy|WoYF&E+MwQb~uOWV-c3pu#U@3Zt zLO6ptdfCJKrEd>kK7aM|;j?CeGMQzm#<|zfl}6#W!y zWMtSRom^zS&S-y>F7qKV{jey{M}p(&NFR?!HGEgmWf9FgOiM~+sdF3ET0~vrtdY>s zsyeM#oSyXVj;~I%-+!nD+^>=I>O$CX2J)<07K_TUV7~H@Hj<&~khWIlu#9ptM~)k9 ze$?pnUC_LyfH`Ay`pyptU?Ou$qGCg-;}G}A)J8cHuPuMdc+Ia(X~Y=1$q-rS#1k$m zj{Zt%uG`pbugz_(r1bS`maC{d`wgOyg9+8D00#lbYxUlnjW}kqZx(XQW&fi_+PQjP zEb91%f@;4ujP{=!1Lxfu#Q)LxH4bvqOUIrc4rk>W-qxen866s@UaQB5#B)xXkZ8J* zpt*3=4W56d9}&p^ym+iHj-maM5Ua>gMnaYJ5e{*kPbA>O(6x!=qHN4QWPS;aL$9>I zjn`K3rlJXq(sa}D1WLO8hYKi3V>wsw_+LKlYOYad5L==UoN@c=ID}xJ-GPX!IZX!k zZ)4#K%`Gat*4Q471BRfi3G#`@_mGj|$(Argp-F$slk=xlbv*I+1w(Dj>#vAHxRG8r zU>!4C1LPa+!>?3Rn=EUO&4WM-M$2=JYNH**0T^7138va+(5|U&M6X_Vt0O0Q56|3& zJ+h4%mcla>o|_K3knJ0qjvsVtTpn1K>fOSHG{g@-pB zkD-6)e6e|~#OpUkOBud?BmB`CS@`TYH)BztwzSyJcZWO{h7k`C5WvE0xz`RCu;YOS zwbMKfOQO>7tmgBSG+*1g%l;0WEvzbI0n80D)2&g22Sw#AXb@WzxrvkiC!uq#SLTh2 zhc^48U6K#LKX-7QzN3yKB}x^L%_kjmJjQ` z2Eh!GM)5y$;f47c_QjDYM&zs!E#`v1&4j{6g2+i@ihuOhB4uuT_7Nuc^oI8AITwE< zfyCUA*V#UN_W1b*x_&n!bhp#lY#TwZIZ zo-}ifxKPjqP4R|CR!X2HTk|Ivo~*>_a-ce3;CyvL3!nZsybD@itmfl}{5m}uH^6y! z-92-ijM(m&Z^#_bri44BH~v7tD<^*=efxm8LQRH9;CA@!;YC{My8@`kitTXQ)WzC? z4t!UplRCK9LKb2`L6NqEAF_I}p#6GPphjWI>P&s1LZdsH8BzB?=yO}hDL-YD7Y1)x*+!2>XYci zx=&PHDLtKCTi4mGyztHFdFIWo zcZthE9oV7gNG`H66Qy|>InU}JiWN!wCv?O0+YE$y zpKg13;4fR(>BQ~fFRN^o9j4X$o|PdRq%gEc9<%z#yatx2+9Z{AB#VFL-<-XfzTuZH$%&z5A-X<180DY@$!S#M@PTr)H4bHTnPObr zY_H9`uY8I4b$i#8!7qPU;+I8`UGV~K3raU!^1sRqBaMi!n)j77BQrcDjb(=Ynpcc5 z2du2ow;B~LrP%nBs7aTK>S}J~lCux{Vdo7J!RsDYW+4Hh8T&;q=$d+bvzfZ9i4IsO zLt&hjYZ2f(BMk!E28{p6)6MpmtyA<5Pp_Qr*v@#W8W996qhfzHJA}_$`-&C3ei#_s ze;se>B zsl9<#iIRU@*IPeI;JVSF`*mvN#`s(oSME9^M2Hfg{PzVFCk;he1k%%*84D^2A=1KYN(@lWB z)dCvN50sjH3|IB{VgzO&@AKKL=UMeOHIi-?xtqn6&)r|#W|%lB>KOXUSZa`0X9Mrr zvH^eI(#3a(+mOsJyR5K%H*k&5-(G}<(Fg6J%`MwruDVTPay!!nIR?8y<9Es8If*0J z%ZaL%aOl?c&$g<_gZ!MOwn1AIlb5PTyvaCjda`-fo6E*|m(aTek46>&eBteP?l5qy z^aXh;!f0v#zBdk*{+FG`z+d}2Iw+f5wMTz7rRlp*O^hmfPA~ImeL>UBeINIzvYE*J@8a5b?mG`B z6g;Wi%MH9izSoepihyRJViuQjH zxAOR}KEqNsM2#kIRO#P*8=f``+{H3l2zuYyCB^+LueX(QKD5q&N#?uLFfae`w$rzM^#SWm(FENDZ7|`4pGq3x7Ds z^R>?96~DjK#L{#1Ad(*A)09h{nngv&e*gJ7zm=SW6O_3_U>K}xGgyc~Y=0nCL}sze z7E^i)>zW!Dko77o#g;;U++kKV>S<=gq1TOm&j^tupV0NKj(3pR!f_6Mtqn6@780 zEG$mlM_u^W9zqvBra^KKjP(CD&;Q#z|G&pP4^*hPEGoW6iTdr8C57Zot4p+k(2f=9 z#WtjXOt;PMWEHok*?muWm6?Bh|Jx~JI&{mx9hfa84#`qopYpBNZAo z8ltYE!ewy_db4gC>bo&jZeBqZ5~E<_)1LPgI`UDOFZ=e*U(k-#G}M1bmho7}-S3wl z=?LcC?|0x=1TAluHM%K^3qW_xE~TM|w#928`y->Jf2KSlpqaJxrb^U=vC^=o+g&DQqr$=2`n z^R|YHRr^POKd!o+ldb;fJl7EnSIY~uz3rK;{zj819V8QU5DtG71pW6g`>5^*0PA)> z&Zg?ml+0cHRSodgWXg#$NJ!b`%!HKQ5&jg#`}Beiso|KwzXWkXXDVp76jtp;x~wj6 z%T%o@19HcUyhoU!a^~khf?4-wsY~fiNduQbb$*9k>`jR8_&41Sbkwvi^fNy_o6)KfxD z_rQ>_4?2HG=Rx(5^mA3nx_ll`%zN?xQQLxYBP@tl2LcTrc721=Z`2Gt>D zj#|qbCxl@sR866}Hw4;%b#9YaRY}7@QCj)q&J=lXDRMVFgY;feIHeNSVC*@h z_r6z3JMER)LB(4+@N-0l%Kj5o4T-zEAhaGNJ20)i55MnX22K3Xou~P%E_TtGNrQ-+ z-F1Jx+#QYdt3JG=zd{!DVA6l8J{^y${zH-ro&adfYQ+3tHkwH_^M+MKGt5GD8UHJB zi=w+I&WhQrxP)~B=$n=I(-s46s!)({S8?$V0uz%#iy6{ z-O_5}3U=nXz=YM4z1bm7>v(kKl%wt`3(SA>cdyCw%<(hJ@%I$t-nAS*QyhN}e@8f8 z^84MR)0xlj>$p8GA?+pcLP?L9WY+3?ysC?B8Wc};W&`01mFKyo&3*XEuq<)ria7W2 zcU*xswT@2bE^X-bkhJDrlpn5n=MwIRDf1`?MYFP=NOD20N*NuZapQb#W%eO2R+WF7 zk-_oj@%cJEP3>M+M-g<|afP+mB@Lv(hEv&0JPL!WgY&*k1~hxS&BGC$83 z>FnpXFFJjh?n~a9v^&ahB6{~tR9B0R)PxNz~4Zr)aZ+{<;s4@BZ zc=W+3olmo(Iv(|VM}Pm_@wdm1PQL38zZ-c$3Twg%l-nFE@_802Aryzv8I3M4FNeBa z5dDlAZN8ebyv^ejre1McNtb_lGnNL=4(eMKC|u{HCrD(@GFU8dyLiMDaq&VvdX&!U zecTrQ_AJk4(`ujaP=1oZRlU0?m=V(Da+jj_i`fWX<0fx5`aRezQ1=Ned>%UnB5;F_ zG;R6fL;^X4af}>5H@xj?>Fr0t|6EMcvM5>@?gN)VlC|*+&1_slf(d_p2lrp>#J&GL zJaxZ>+X_l>-Kz3-9`Je#47jgVZP9@d%-$=|)2hp}NBHw)HqF!LPxm>8r#YH#RPn#( z$0HSpL0LRg(0#Dp{!W*Bx8H@{byeT?yZ68ECd=6h7P|^FmKzk#@t&q>p&1WE!v$jk zb^wKeb}=7qK1q=VqmO@>rDF2_GX0QkQ`zpr2RwBicGinEF}AoN-8QoLecia;m@H7F zH;wYF`{xJ)iv&)8p2QUY@dy-*ea$zfkb~oIJ(a0@*OjOO8 z_heSArY+-MVW9~Y;*tMUVKnjNOQ$>CWR!o{b3>cfH2TKou?mJa(}-A%hI=0L|LVkDgzejJXH%n$^*MPoQH9v z!nV7t&`S{-KtPF;VnhGmy&RcGUT(ZaC0$k!}N zaV}N8m(046^pY6y8hpz2hRciPqkMnE<*UKdpq(V5H>u}rFuUHy=Rikr$niW#lr1{o zMX{1mP~JA^t@eFSMW3TIk}H>CC(Z>i1})56(Re~kuVq0ysb_XIrg5k)bGo5Q1W$&Z zu@p??yE}h7yOG!TcJA-`GeMs-=^W7<<<&njwH0yIv_9d`D)o}^7q-9eS=L^sNTfM6 z-&I2v)?;cPadqS>+>kq>w*wIp8*_JK_VVr%yrpP*NKkYufeYS>gFxF*gu5RhoK~ZV zZg{?o$nvVFlOIuZb>eXDZ3ySbq8xM3T~Q`)%KU!=^wkHcu2I_%qM4j3>J|@Gd00A$ z)?>aL%knBTz;P0pkF7`UlzS<5;Ep$+X*NTNbcpUWwW~yaBbJZX+-}xB#|F0`FSWgN zs5VonxuZKL{YKB9b>_+vv0SGuH_~WtoTT`khjeVd=xIojZ=)J=O&%zsx~Uv=K!wQk z*&KgOVSV3NCZVatY2UOo&|W^C(!tre^T@pX^|R+T3&a|^nlXh%C`F05S}J4ZBNu%1 z0xKo;lzh>H?w_i~|9t68RgQK-k)s`Z8;Lpq5bVE2+?&)l_bNoMIeinG7R4CxPct_K zoyjarp~!2y?oj`iQ8ta>;zJLE)X|;*rh}&N;Pd(3)>uu$q7qdHA@T zT%f_pThfYv&C!QS8H3jNaJW)W+HN6V6Ra3qzojs`&V{qBCX09N6+@5ZaL&}hZcl&E zM=pN~uYOWavVWClnb%+Yr1QwqSr*Kz$H$2pE`Z`IjPZ^qtP{TsiciI;m-OJ-S=@p= zyHpoFZ{F}N$GeGlKgjxfQN%?f`i7D9MxVh64}+lXM^!8D%#S_p(`oV}IafxRosM9= zKRW8Zq48AXdNN3ky06%B=;8{>Zw`N9)=r8ky{+|c`tocW!vMOp4S+xB<-tljGrN`g zN$-EmVO}WUXZkmN;R6OQpMH;@@Xv{zyk8Z7D76ze^pL&EentS^p>)#%APkW2Ji$?w zXpZV_$_zk_1v$DJ59(9MXyp1Q+?>UkBql@i7OA`ah#*j0AY>nNQ=iNoroMDa0@&WHgc1S^QpdUZdwdZ`; zKghF38Z?!Rd+_`#={{eJQl`uH5Mgi+5(#};*<4{wS3T1o=R;l{WGO5wyF{StkZ{kN zO25jkc;||FHNk)V>dt!plum!PU3)o4(e!Ml{_@g}1bU{E_ebEjMR=_S*_6i`qhjvU+y@7L?sQzt44*;rlJhaIj$Tpe*?E8=vmtfcqDc+Y)T3 zQU|CM7Pg2wdw{NV%Dm&J+)09vdmJ$(RrVShn-s-tT3jxMv>B$7{ko^5T1Kl$xiu49 z2yCnH`Z|~9kme--fxLfS;LWqRRie)T&HsP)-gLcjBuNl_6{adXNfjmW))A2r+2ARP z_bn08orARB=sRck(j>48t(z#Omfe>=%C+0bQUPuya>~NEd*? z0&Z?R*&NIls<5F6BfNex7Mkif-6Emnk2O>UM85pTM|jbC2|WSEDwGd;?Q+gotqmRS zq!nbFQN(<09Dx+Q32N=Z-UwgbIII!w&jEjk$@D=cO&GAr{_RVDl~M z{b_)fwbgX&&`N)_(B5k>*$?oKfaZcez7X$xsIw+R@o=5kv6HYK3?`GCJa_J}Eii8x zp`UAyaS@{uJ!0YRDs&-=@o;hZu0RfC6cir9@)3;J7^yv+XCp2I>_4!k!GTc3U7`v; z(|zh9jXC{+7>pT6s#6Fxh(Pdv9SX^qII0QENi35^c87 zbto%?dSf=i0aTQR@r$2)_Mj-Qqy@dfNuxmUBV))O%K#(6(t!7z-w6wJcuMB?`PqVik%ZNB3b9X?A_+V}L{KHCcC&0@kjy&P4Yk;QE@{Xvn!2Z!m$O^HQ zrI;3nT0HV&SBHPllz=}O!AD(1rEzV5ic1yVAc0=Z<4xF4GTsMZFYGryVW?|pblCc0 z?CX5kY>4|n6+<5fMYi;O&s*)A@yO?QJ`I0NGkikKbcJ&&a1CF`5$p*WriIG@ z7k4*Q@~J~uzGf^0r>JtNcf5I!8m|IpLb_Y(wNx$H%zJm^&BfA%95?1nO zZxDZ0=Xd@|SpFp9irx+a1rRe1LytR9{N)$-BX~+&W_SeoHWm&3oXY{f9|;B7aRNx1 z7mq5iaUA*CjY~!Vave$pEwGCyf(c#_#RW>c>a>M&uJQzxRm6bNzytX`su()e{Wqyt zNT2UfvS2Itl6(ki07UrPaIlU)_AO z3gH`tSlQ8TI+4{rvTq#_J0*P9t#2s>gaN7`bk9NHvk~^ph%A69U*WEGbq@nF!rBqM zoIZ4TZ)g!Tk{=w(2B)*65Q5~l{Nzh_%vz-IK`j{gcrGf?2@e9~8aK=O;h_Z7SEPT( za}suVa@u$t;Tm#tHUGYi$EA4KZP>?qd2{+8Hu>VI8j9Hf7$<)HPTwS;yobzAlOa|` zPB_leq=$hTvmrf4gYcJMwa>rCw9jAPwuzy+FeXGe3P}R3e$Xcz0+kC5hu(-xE8xU~ z9JIKMI5tNolg2u67X4Z! zCXgqF=WhXVWdS284F8D%`IW~oyaz?0jp++0E_m14FztWk0giio&+&cM*=wR^eJAf5 z_FnA4OooO+xgr`YIGYh7$rKWK5WK--_~)PFiT7!psSyS#hRH~OqO{PbPfve03KeWR z7+JKj$D!K1n=u&-H$1mr?4Jt_<&V6j1gAOER#Pm9LHlN?B>aTO^^0zNa*BIL5#${N zVOqfeVRts*vPZJ{DSm|$41v!U__8#xqZ53N3^P9^uHa6?MNx2cd9+l)Q*5b!d!M-? z9#+YC{DMaboYe9Lu3ZGo^9p|f3XDLwN1Gk#Q5$1v^eh&|u`<$iASozFCltahoVnwu zd{Za`YIvrN)oYn*&(EHqjRB1l(NaB^!3c|BnAS`kJLfo<;C9WU5PEom>zhe6i z>?#(d-9@%+|74@clbQ20=I z-EnHX;uR3%sefkgT^fHfc2XQrA%+3<-Vlr38}A9nwZSQIr;b;am|$_SoP=Qlpwir{ z=Y*%>t1^wlSm!W~%2g;4!22=tplhOv*BQDRhpb*{As$*jc#A6dPEFV}g-ukQAlfGm z5saw_LtETVPY^gBZ=8roj{aA${XyS6o3Bm zi$1c}AEWr+S7JeoObBPjp4|ms0lWJJ=?D1g*Z%7MP4pGPir{F-394u+m_7si zsIs*q!tfhsWT@qmXa=XDMN40kHGuL~7YwQi_Iy>HYIc9*U8y_I85&g#k{QH<*X3Q! z7_m3`r-tjcLE}6DBqlZLl5HuNuD%rnNp@{mx0ZvxCoKC3eHWq%-Gn34Q-lNx!!8Qb zXd?);A}B{ibd^zhCmOtY)mqrbnq~mL%a&Re8&W&=y7J9hwr42DgqK!?O>_lO?n`)r zs5%mk!VZ5|9{%b@gF+3Wh)6$?kF0j*q&r~?rs;SFM2Vs0U_FNS*wL-tK=%tc2 zoH3zb4{zDzzrnkBa6(cmR~b?sW;~v*;Ba#N78vjTEv&~)@~j#^zU z(Z3~rwb~+&3G7IL@LSQ4w}f%TP7|mf8xI9lJitF20p9=S`eze>-sq}o-`G0}RRI4J z9wUFR3p9TXZK)ahW1_zZF6IN8iiJmoCTAJw4H_*PpoYHB5J*fHM0*S^3;jbAJf0kB z8k=iOO=GQEH(QGt>f2j}O!Pv?<1mrd-+B4+6Utx&$409f--_*i>UxkEXt`JUT(S{N z-`N|NqOmp6#1(Nwcu}(uea>%qCDXwmzc+u>ydOM2_;QHX3?l&~626f~BQx|lB#Xl; zikKarl9da~Kk`AvwUlw70R5w!XQT6V^eT#X2s+7QuWd>}cwPoLG6QzNI9W5}2IA31 z_$pX|D*`N)$a`t%Q)gje+7t0BDoA+1%^OwEf~+d3coh;iNS{|!3B}#b;%aAT%CLWW zPJlZ8ZqB{B=ZziU#tGGp8%H&aj?k(hBaxRjlI47N`9xj#6n0O2Dj(NLPM$>#FM`Px zRgc(yhM_Uw#T$-Scl>0+)hm?qd+h!!y;S%x8pXN1@3XJ<$27PT(G0nFA#P zJOxKn-FPd&!qXutS0QqPs5s-CA-#W$n@;GD46p zf=doz0V+hN6eMvWJ^>JHNRS9txBVpv?SfMAGs4)4DikTA->({JlYY3E%4C+Pu`uMX6`S-cv#9QOmCE%Y>*W z0wgNIMcIL`7;z1$zhM(`l39N<#@jZZmTYk+q(`A+fRp@jhSd{X3jx&5TMYr(b?Fxe z(RUo>uzkir0u@7>oRr{LC;YAjXKO`RRR>(RfW%95IYbFVOp1~34a@KJ6B5VdcRD30 zD@b9imO|%5Fn3N-Zud1S`g9#P>F<|(NK@|>e8^C7?e~ZhzW#o+BmsX9Pnote!)zgn zQi9nLYr9&>$czGY)@TwGMJdK9cK18YI~jHJMHHQma1=D96>GS|?g&}Ba_*h2U;H8K zq>Q?pn%TP-CHotW5HK@7?s4SHl+FR(SW_@J)||N02C$8s2nrt{1(9(Rn29tvyj!p~$IN*12T-5Bn7La}yO(6)&J~DX3VW-m! zWoqIEh$D$RF`T$$ttb>3IzK;f53x@K6Hv_86y&;>Sf*j^*6G8QL~8gPLQ9;(+#<<; z;2$>p`5~Ek#R_NmBNUr`D9DjsghccgL@f9`8Dbc5cETR+2Dg8HKB#$qOnfsKjzUG; z|N5Vl2+Ac-2@*g_P+Bw`KfB;h6a8kCUuM73lBpBKL*}5)e&rcigsd)T-o#hGX?Vaw zzO_PU!kq;=BxAj)1ctZRS;e3L@Si1c%A1}|r5N3W_ckr({&ZsrhgA1cGs z*>7s-{E$q18}5IFs~?&*PV++ozQ zDM}p1Nl!#e_`Z{q)1(XaW8OKya%I@3mC2b(;woT`7|))aP>n5Bp6_RfqAO-c&r1jY zUr=3!Emu$Q_klhM{^`BR(|qe$cpYZN_y5{@JdcKA?H#6$3I7x*-GP&%)u&EixmzFE zJi*}l=%s&9A?V2y7%Zq35G;6tiA4=0f>Sye(??%U>z7E(7Ytp87&K7$z6c{MVHT3V z*&)7ZP?Jc~tvNIxs1^yC0c}@s2bVQv_ zMRXwjxwq1EAD%})Y@2S^e?trZIT|n+1gfl0j34B537ZR{_KGMEf_=WL15RGQb)&qH zupfU#Fc7jX6EarXQ2iUP;DzJ-fx0tvpy3&jC|-e1mv86<-9~WGcv@rctQ~?{#QBEx za6XNb3ruRjI9COK$Hs=mQZUuRMLkode~a8)LMvLgEtogbXa1-_2XAkf7}ToCN8xt@ zu*1Bjg3{>LL_zYir|<<|!*5xFk#;Q+J@$Y5BNUyfgq<T*Qq&IWID+#FgtA9lwR}MW zupxf}l=u>^WKrzbZ1}5d&W}dq)^P-a>uWYr4d^Wt1Fgi9X#rOU-+l^t0|y<1e#3v^ zHBd?tG}_SLVUPqEHzR?9a2*?Va$gg2&#}WQzX@5i%F8s?BeER6aA7?-wzEZ(q0y8@Kc6YB`b>e>gK92r= za})hJc1ed#_u_(d-)QvWR~ad|z5IV7P7es6I5zDk9GMoU6c=qeCP4+xD^AB0_l6Ug zPUVLVM?ZHs)qlxw>gNt8FyJK$>abldA%+6U3*H!#7z$n)=e=_ziXttzHC^5kJ#k_| zN7#y2&Oy}XC2vT7y#Bxra2pm=YZoebC%SdtaxHR~fr@lL0b()$5(jS5us44WC%rv% zJz=ZE&c(IeVbPT@geQW#X7x8vi0^|1u_%;JfL|pQkAXz_>%3+VWHKn{mb zPt-b_JVA0Sm{;~(NKpr4gl)B~qqFM@oq2*TDnGJ|inx#3kL;r+?jtaqACCekR=XGh zykcW*g=G@!OiXCzi(+ID2?c*d!Z_FC$q6FSropTnMjX54 z@wfo3NUNF!gg7Ahh1Z~CAS9UB*qkv({aq)fs3s()0LZE>Ys-)DF?hsU%b-@8u$6|c zMwr)^poW*$j7cGIww&ThDoCCT#ip?kP7pvBaitW6l2TaDoB+`I%%6YH1m4_&rqCj| z!4BpY;`>lWxiNVj3dLdoT85%p77T2O1aka>6mQ~}S>$fqnHiw-X~Y5kC4#<#*lvR; z@(`{clJ&9M!G2}{9@Ys3$#er#&%KuCO!niSCap(RPpn~oRJ&Ta> z1upn|VxptwnRhn#0&A1L>`V|KS3)gV^svqNXD3$Rwm zXTky1L&ju+LVzr_6(f)G{UY@j#6qwm@;IyyHG0zC*va<5gpz;6U3_r5@?M}mKj43U zL5efsv?=y7Fi zEfq$2V|{9~ve|#vEN!GMHT%dlfD!TvTN;FBvNeM^G=-=`9B|>Y4hrYO%?@C+23Hmj z%sjCMtlu%glP0Mi;N(mIb?x+mqZ0`r%_0&Q1sON{+%4{*7kho-Wd8|U=%POay+n~u zCi*rqz_P5c_u4vq`qJZU;zv+kOaS>TJX``EQdeX|d47M$B!Y`v&?M2~isC5U2ZW#Z zJ_qd!+%JzeOL+t%lQVoao#|cE*IOH>PgiEDvKSc$fmb?AyL=4;9AJ-hRMK&UNAl$7 zkmM8z;eiA?srv_uL;n-YJ(K|eZdGT;oU`YCz}he)60OWb(1hS`{qSdfzwP?nGh1FXf;o@{xf;NTg zkM)1bC(#TaQD`hy2moH2V#@2!$`W#eZ23#O_=is%Aqp}h^p2pwL(<=`ugq0Yqy9U3 zfD}&14e$}5mI*Bv=x`gD8ggj+#~;Y(1OpOO1QP^DE3ygjRYhHVAtRz$=C}5SGYN<8 zxlaHgazA4d^_ATa#6=#pA3`lMYsl;Z($0SrDqjFCbNeTaAoK!L;3KzT(7SK10^6ah z(UI`{Sk1B1Fy@no+-JnQl?75y=sE-?p06bGFMW72)A7a4W56q%jC)!F8Go(nJ{)1< z+4B9ga% zi!3-RdJvwVru=rMBn3QOib`G-yN0{xJx%gKl>i~90wJC1DdOLwm#2D0$(7*tcX5<$ z0cAw<)q*1yL??&I$pG4+TxlOgbzI-y_k^Hgh6y&pcz9u9yF zyP7LDhM2G?Y7wbhq<3D|7gpX6q1tJarS#0dxn$+olMI-NE<3xxP=QBJ7J!K%w_=L;)q!zX$GZ0YaCs>{^ zAYA7jTk;b>ddZT|HH9X;>d?JH1s1W#tP!&dxwsgr5e#7ta|nH!d>s(?b*W>nr4g;rEQr2QGg@BB=c(+C82O%*G<7 zFIpW<-)a5v4bf1CPpgd^jxdiV)iscdg(yTAUEp-!C%8^+RRQOY z&3N+L$dw;CkxZekZmUC2pWIRdD+tR+U`*n*KwluFcF2;$+rG?{oe_9{XVFMDgF2?xnFTEg+Ne70I}DnnodHm?$yykv!O*WR#^jl1KZ-#1vTo+n=yAT z2W$;-(DxONs?A}YdIPUO@L;?fO=#Jx-jI|@Fp@|7EOa4(e`v1(#sM}DI6@8Tz>c`2W?SlV za)U0fL{&_6C2M+U2RmM>RLV?v<4oVN!rm2p z09vzzNtj7!>f=v*H*P2Pj54}H?rJFb&{CVIwzfhpqoDQ`x;FHgNsvoz$1)3-a;~Ux z4aF5I&_iDb?uEA7p)zs{k0_-N7zMF)U@(vA#cP(;O(`RxRsSf0nmz3fRZ)*44QB`? zO`JA7(Xe9z-TfPX9#T#Z=Y~W@juj_N$gwM6pl!>W=~*+aH0QtkyZ2PW92!8*RwIBo zvA=L`dr*$-DT2Z5H?WJ1^%ZeB;QcwNkU4%&?4Kf_X#f>}dTDY{add8+CEO?4&iEs< zg}#sj4Zx&Zcj{knIr-FBU0S%AeBG{xfHr%Rg&?VmNvpFw*nyyumq+HkqMx7#zmx8-(tic9US8MwiYPGq+x!ANZBSA3~-fH^H zM*TSg-)@@7uol-rhdjnfyv}YCDI)}{<2Hw7Ki_J&?-kepzY3n7EW+$`#}t-+7zW}B z@zLcw5z$Phy|cqSg_wGLGlIxZA+&qYY)31=+4-m?y>Cz)aqtC4FY#Hkp?zebcD`{V4d9&tHvoL7 zqBrh;nd1ZiJa=-v^%zJZ!iMoH^Ja_wpHHoERF#kheWQX77;QEEmSc-Vr z0pYJQ-qDX8y{_!Z*LZy3!^idekVae zsDxq$1+_hcC=eV8?HqJ?tNrV5YyS~h3ZBF<99G$fVtA>UjH$wvIk_Q40R;oI?*-?7 zAR(#)6&%jSx@j7K*kBcvKvj@qeeZZx!9qcb0!qTivVDLdxGRJzNO~vjbHGCIzUQJQ zik!kp(L^esY(WR7wV*=sE~tW~2#TkIidWT%Eh-;0_TE}l`XQin8ySrHE2QHA74lHy z#grEZphN;*`abmQC$M~wPXm9!=gb{{GMkFrX81P`agi|w>9%8=5T(J9y~@pG6De{Q zia0%`^Ai*f)QNktT`q&gG%5-Xr#|6T8~6@IUfLCvk5`JZG%PLcC=A?#QCQF!ZbGrm zWnddnNpwylE7g_*8-Yrua~iQ`+9Y^79r*TCGyIL0SIpV+8`I}_Nm7yU5u)6Gc%4A3 z4z)48g*XEkd#IEGNKv+MG_vt|YCTYq(}KW$_`Xp&obCV_N&gJ5bk>YxhFtQj~wuy$%F|77bE)3gs=1 zjG82brMfKWD2My917tG5s_*1~<(9q{MBm{xo_yoH!Y`aE_#ODBqW;h`x)5leD*~Rl z1)OF<5%k})YjxU(o@0@VFDU+uJcYdX*9-WJF76EoQ$GUglM z${7N}4vD@vfy4&1dJ5vCuxIf>l7gDcAi&IM%Mu`!+OoG43}8Gn3n*jaV2_0*3~s9k zQW2O~ayQmB*_>*6;N^;c6Uy+Qj*0FaQ)R~z1DX+$>vK+9@3svUw)jSF!Bic@L{Zf?Y_8|TK|p=1+Fd- zfk3dixP+lm5&j{$B$^2QhWbJp4L0LO=mUQ9Rz41A=0EAY0|i=N6yFD(op>@l*Y}o` zjkyYeypBj1oVu(lDv()BJbMf){22q_(*>dk7hh3WSTso3jtDi*84$q=*w7g`L16`2 z`A{5=o57N|Z~-@e;Vs&ALcn(u7Y)zlxzX%!V`beo`kK1u^KA)0 z!{xGYR~`ZVBMZbg??<`V^;mXycQixH17YI?ScWpM$%q^$)3p7#xXc7uFkw26f-t+2 zrWy=60Z2s8+ATTL=`Esr2%{hRCK#fStg1X~XJZAfu{pcetfWvo`(>R2PN`-j79 z0ak?1@(iQDOh{Njs#iy$K*|VAgk{>)6+fDe{mJCp8B8dM9&00>`ebN zm{?h4oeT4}n1J~2RIr%F@|DS?jAJv$pzZq~2!80512A5h72XE*pj(su_cy;b-kO0u zQ^&HoP-O6bnQ>8hXHUw)55S3F$zdjL-$N^H1&wpE-7e&ty=)rR_WK4nT?!CTfNNU; zCIpSn9N9OrrODqsDp~jUCV(VNQ0{wp5RZx^`*s!>aB{k8St?9yz4~_Oy@f~mQ3gx( zO)JD_s$lJ+U7`b@Glb=vNRDFsv&oPps3{^%_D(>5hWcAOtD1P2>{wc@4Z-_h-fW~%mTw_geU<&XBhA@2>lz@m5C1zX8{_&(-@o69Lyr*SLOSb2sSHqHoc8%9+z@MkBUT1~i0@c~Q+qMdMMnTQS0OTMlgvKwOAOQce8j z1NFL=&!D&1sEfR!+H*Qnb!frZYnOAzYHjH7wgJ83bpa0GaO)lg6bI%&p_CxR@!E2K zYi%JYVSP9puv3PgGiC1TO$<-yTe|(tmaWAn+A1o{x9bWzAfQjE6FbB@J=m>v4$)&7l4gBm%0N8MJS7$3f3h`$psac3h78cGzU zk{2t~-QIus#V_S}^@BQtbNib&KsX0~FSVAR>pZcpuqUx%45Mlvh)^-YvBI zQWd)Y*2?u>w-AbjlFm)t_hf)_Iz%C_L#W#`U7cJvoSp0Yh+Xa((^1D!f3n5yDyINd{+V@NYlAK)D{e}Gj0`T0QV!ZJux z?KJWEL=&Hp3$t$kbgL0}>dvQVD3QDj{TuqrkDnB|hHQg3MD!H3MvWrDj6%=~Q!xxm z;_>)b^s&)vyGt6L8Cx?fE{I8%S9GQ6TU%udqmcb8`2a6>V8u&Rvs1`_HR^d7i&<3+ zosJnn@X)D=lUL!^*!vTwAiR8MFHjJ!!sEgc92Yd{cAB8`TcI!V)VScb85CN;9{b`% z-$Fz#n6jYFhpp@121M>yb^-6G%R0E(v~b^s+#1iB!8 ze@HZ<5EG>~+$$v+UF|Gw*3PV!RZPE~3+v7uUZStL}4JbaUj9Q_qq6cn8^z8$GDNh%J-`!H+%SRsX z>4l`gjKDylnES~^PA>}`z(pTi(O$%7qjPA2wbS(JQpHJ1Pq=TB4v=XQjJv=d@F5Hw zbV`x4iJ25(WcdB*yzm{^RAncIJ?t6z{sLwXr@uvE>MXkKce;3cpa^pG_DWD}4vv3= z1K+SA&7Ap(#1?vgt-Z~GcZ6VxT{H;v!WXknunJ}{F_MVdCN&*0<`UO{OWw6%(pS7E zx%8i6CMr*yu3h6REakm36A6w>j+jjJ(a#BjhrvhEL{njCd+0wyp|=5Cr~kvRwax3h+rUNGDX-0-?dZV+2gh<`DybbB`SDPy<+}5fsUjN|6MF z1TrqTnGBfa*S@$62sj`xnk3m*AtQo3_=3laY+K3H8Om_NJ0axOfLQBI?8Y{=mCuIa zr`Ycn!4o%=I0pi%4QN1!bFGse943Yuqz?pMWI5lwNaWfwe0$nY|1Dc6p;L@wpcT|FvI_sP{l3Qq z24z`%BiOkv?_fR^OB7WHx!45+uVpj2{J;O#|INf>KM`D(YTvc$JEQ&o=NsBbI~C&- zn?(mc&SE&u=b)Nc2qEU$Dgcl|HBu?+RI0 zj(;V8t%z7ySTGv>LlcLTAr-%fOdE;O{Wn-gQ&y=g{de;A2Hk9Z@z$Lnf`=JSlPt4+ z@@9+k4qyO(!b=J+1X9iWoO>)jlq9m$u8CsXiiW-UiTcrDcTd!UHvzE{NiE{?Tv?(Pdu4NO9+2&G(J3@~5 zts`>$TNkvmmNY5sd!KiM#}82HwPLEYen z@zL}RO_OvEzIMfK7ex*jTth5&jW&kRbmbQILNaR_BL`B6=k=Pr)ldY1O_jT09&RWwY1 zs?f*%%(E8{b&Ehn9aIoCiNFFcWWxUFyze~)_~HG)yZ>*x=65-7=8~V=U~td~I*~34 ztc!bbE)2vc76ctFPNFIEfr7CgrSnL^(O7X&`n38YUBAfJuU{`?^eF{@kW=w#Ulo8o zWV{&2s>#O)q)9JV@&-~81(FdQyZ{>-a0K{-O_W6!3uYZWiU<3L6pvV+TsS6vXdDn6 zkfQmh*jPS(2*EgSI=t`()oX_Hsk>Dz@^PS!b@xkmwl$s4MN=c6Ix^@Ees(T^(Oo)h z`$^WfvWbhUBh&d@gBpH+_(58m+7drOFP^q2i#Pa>d;`PMcDlvHyrZsd72b5iFAc>u z$j7>|b06nb1%GzN@v53elhH@$9H#4l>AWXm=nZj$`EVs~4gnMbS%l+e_cps-UIOIW3{}b=x9;<|uECG5hT;3tAhW z(;8X-h&OBc?uu?MfEcor&22%@z~i@!=g|P$Nj#wPceIBLX5e9#NQ#HJzP~#Caw)&QtIz~~^P(n1o+Bda{OmqU)V;$6@dtOrW{S_H3iAZ}`s?m1WCk}yd zlP&2VQu7B5NnV|QJEZmMjUjcu1@0YW=M(_@FoZcYgJ{sM(?KzVa$^{Q8!R}k#MLQWGsAJog(0PL$ST}`wjU1Gr3WPg#|r-xgZjM;swlF#kJ_LAWl&%)n9xS z-k6fbbP9>#?C1qBpFF`0b9^^(G6DFbPfb=9cBZ)1;X389ZWJZe`+&hV)g~XIJ@Re( zsvTdJ8u{g{AW1E$QG1jc)2gJ`icUFx?Q&8nCP{fCx38}AQZqI!=VP1O9f0-2Yq@IPqaIT2PIp<84iDp%YL(&WBqhEq zwEC@oVLUl#PFuJ6ayFY^bvOE`a2L<*MzLM0E9rwwqf^N~97oU7)MGE(kXD7lW4hR~ z&5oX)9<=CT-p@UB`i+9t*^OSx_phCPH1=%VX^L(hUlN&8V^llr>_KmljrE@fnY+bf z?{3ml9y|8xzPQkpQX#h5H*a&L*G){7w~zaOUH8r!wCvRMr8T3)9_M}=@k?Qlk)Ql@qzj!Yxk7-FY7Ls8OCEMCdiC95OHp`vzv7gC* zOe)&#qzd7@jILicfoQyN(74}}+SOcHI?S!P-W!aS>22&Gwq2CXcwFC=Ys+zAX69o1 z$GsHK7E=3c&(_PiM#paHX8n*cHk;SgYvu5;%Qqhrby-anA9`tRnrghxbLHnu!Zy|6 zu68iCiBzGr$~NuCLLz;rYVv+QHJbK+WZIA`kIm>q-z+>!_l?BvF1PA53#n}!jlHle zb{Cy(Yn98LTA}*;aJblwO1W7^D(DLOTzrm6%4^Kp-o-Nio8oZ&2P3hc9_MpYsZ^Ls z<MN5k90li9pN!ea( zn(YH*tHtiB+gNl2fo(=BN$Gv`*w9Cde+oTbA$lAi9rK&XZd1yxlkrtH^OVYJsn_9S zBAZX$d-S*<*@@yPm5jIEqQ_#hsDo@@zmo}h*NP6||H*yqVFo`W3kZ_w<87kbYMHrO zHeYMq5Ax+g|F$~nCZ)77O+Ida;ycy2o0O%;czQg1sHYFB<8Zkyt;)$-uGJk3kEy{i znV0f++2np8y$+^IciLB9D$AGl;jum}YRP#mac^X2@v>5}bGO=Il1vV|>2k4Z#f|;J z+COg})afc-wQfiINv=4lTTjEM%4A~{7UR@z+M5>p)j?xqzt*Sy%F*0^=Az4a=he(K z3VQZ+zMCs8Rgqh>(aSVDO6OLk);`)aYKv~q9*@TN{Z64NFO<@u*-$K_JndDE@v5o} zlMmU|IBRa&lX-dn@{p=jt<2JR+-3D@N~u1^=EZ0(7Jbc(r@f=~9@6xK8KH5X-gvpn z;;B?$tn2Y{Y8+P|$EKWr9GBXQM*AhPhwoQ%|5lg#>1KX^U(M|;@Vh&{465L_tQHQ1 zV=>#621_%hKF(vRzJQHZV1M8@4S!3sH5fn+?AbhIm_QjlHcQWAtITUme@eyT<7zB! z!{25s{?LRBRKIdRD8hz{I^M8NeSN!FSH`yTSa?-Z>)Y+!?!MW7y^HPcqS5)`E($kD zx%kvB6nmw5qdtF#H>Pu`HtX1xRWGxM%@Vzp^xE6)?&lqIm@TWN+{317FJp52slT2{ zPnBMym%2UFCxd~e*~{KTskffJjGl|J*!Rz)p%`ejA30$zoZ}P)9o%cEfi+^ zWGt7-_Fksn%WQqeo=wHco=rB>vDke~Iu3@@j!|mWim}qu-7t~p_j`TgSn1Xt)ML6l zeV9&bgH~cFCBX6Y`n*b|hx5hb{i=C<%0}y(<@&xjY)hkm)xoG0ZzZ!+H}|*Qcx!Sm zt!58Ou~r!L+p)Wt6s^X#jrL(SEtKs{EE-G2lFLafmf1@OtsLLZqv>3BnVlZ`yPFh_ZHip^rA}HV!*Nh}m7a!! zMQL@fEW1zhR_-M+TNwRPJa>Hmg8lQhZ+mWRx{GomHGXcV!SDJdX%}1Z7iE+wz(!Q{ z_C=jk6l(k0n$>&)zvXsumhL^}pX6mNn?5ujGKVIA5?iv_mhxCUq$}l)QLlClx$-)d z`-Aj$d0z)*qK`*#uqK*OCDDwv@0zjBZ7kLS|GRf^_r@NYadQ#>Z?S!Q=Hj+iY#iEv z;_b(yY`yf@DcsEmtL7e{YQZkNjF;1@K4-;lQ?W$sVe&d`z3xk|arL?VtN`5H9Mdn8qTW*O zw$Xm_ z`{!0^Ey?pjZB^gjZCggh0_=C$nAZD>Ep_wlXgNQWt+pX`;?qTGn62$I_s$k27`kFJrH>R)xepU z?G_sIsa>+-FPr<~ol@CswpRaO)>>6L-y10NY{z_F==W0#25)Y_pf(<_f2J%l3#kMadW>{lGb23d8yj?`Z6>*qUTD15^QBqoWmK2V>F$tw-PKBy_EY}8C+GXS>EhM6eN!O&!7MzB z3Uh~RODDUno?*7yxza9bsEhSHomw|$jbmA>7?0UQx3<_ydchtj`$J5B8m6q?C|hnT z``rG1nwyks3%T29^tAeTT57kq6+_-dcgf8rrlqs;BD;FttG#{RI8=+7msx+2yG?_= z`#7xir1EZG*=B2n{a7w)x%x?EA^BKpTI-oM9VYgT*GYZ0 znXPlTQek|Tinm+a*~6@VRcJ`VTPZeIB`YQ0#U|0wAbX!y7P<9i8ZF;9tod|fM5RhE z-`Acx_tizIrVOLjlUaYUz|obuzpHBHqLr;qs}E8xww}t8`TDXfMy;1=Bb_bXS(E8b zky5oo&u(<=Yn8`f4@ZPtzabE~0$J=V6zSmVC9s2Wf9 zEOy(QC8w?C^!~1uT14-b>htYvqpw%ZT`g7`Or8hoptPB1qDHUtP_0?F`{JGUDD6v6 z4=;nv_ORZrqrK7|uo8Vkn-_-j%JTNM`Lvy{cI5$pQ*ocwhMU)?=a=qY9cK2O-feb# z*J~y!Mj_Y8_spk%b>m60n=_>{m+a?~JY3rYD|5FQ9Cr^ddQ7tua%Q2=Gx=3&m)_h< zO;yUhN4orx>_|3O@Mu(8F>^KPP>jYKrTkN&Ss9w;Ql(*mbv(o-Pwh!ZnslG)$I9k; zqHXijcrKZ#C)-c+ZfRBMo3rlgY=38TY^z+bt^R8_Z6u$6j0dUOooR*IeR=#?p4R0@ z<9;=-52m*g&od9@qDiqg2jiJFP|kHQuU>tzxUtza4Z2v3&F{ znjK9?<@}>EN>|pmiRa_|SWeu&zT7{ltJ2bL+4*dzbjYS-C8Hj_>#i4zIbe2*lDUeP zhr3iSo*n6bLwj59XFY#{@k(_(dW@j)7SA-vG}@reA?e0hHY&C1eSwt%wAHvhH@A; z?xptXxxE_=#`bILos0YfIhch&|NNi);}cncxMEa)a#J9()Y6Uo^se!0*Sdvcd-3v^ z-7Ak!Oc}opUXYkl#%jSrb~>%(rF5$>YYmEr#ptnpKPw-5t4hwWs&na3Ps~O`<*peY zSC!Q2b?};nFvvway>_;ropI0@s(eIysta#~pCEdlEneP5|tyT5=T0^RC3orHK zbg{}jb%E5kTc)$^{^)7fO4LV#cIWV1zfCtwjqGw(isQS2Z`Zef58YXKbSFMA^N{Yu zy4hT=GN=t_;K1*chO6RJty7=pW2@ODnR?hfJ=XynGwu!mdbF$S=gL#1UXzFI#&lJ&!FQ{5J#qbDPOzQ4=1%9(nlRIO*8r9mQ5eFjhN=bC&s%2k)i zg>tvrbgQr1gVa#fr^onUaog`t;>L1(EYuU3?nC-MmtRG#n)cG3%qww7lX`n)98GoC zGrf45T(<8Q&-HYACXHsRQfAPq>)rd;qrO!veLH-b71!CxqV~GUr_mz(Cy7sg{{@K; zBW?jv3lbhkbb!beCxqt!MK7B8B+IGQ4p#mb5T9;*Yd)m*X+2-HV(aFzR9b@btzH6$ z=z3q14Q;$Eb?W!8rKj|&acpg*s{N9jJ+Kd3cTuSv%WC~r;kaCwjaYZG?@#l0FRj>I zlVa0Ux4E_(clHC2#U|_Ws=SZw)z`b2)+vl@FUlmV@3V>9*;7L)74%{?I=PE0dZkhs zwHtEM-rQ=9=S_B7doFd=bWZAx@Ja*`AF&A6Ftw?s%gY~Rs8K0k&I@XP(VF~4UyZxy zE64QmLuPMnj?;4cke`-v*;&`z7gH|>V?WJ2CX|k`?%Wp5QtLk1>?IyD31!h<4J%Lm z+_UytZRZ{qlHQHWWvzX?%oV!{MFZO=Z~Zd`ku2Jbc{`;(LBk2D+81s{NB@sD0{HKq zz~mkPZ31`~5Q{|zIi-nz+7eyPy@Jsz>5^BHc%Ln(du3L; z8$V==qr&Za)J)f=^JqI$o6q;tW^~i)EZTNU>fcvV%YHf8x=r633%%T44_>TVIsI^d z|2UuS*1hPyasN1fRUcp556b*yI5XN>bD`wNar1e7>`7XCoB@(w?yk10{{VgQTliBN z)oTAm@#j04fin^4tpgbx#!Z4iQPY~Fp5Ko^?P~gP+ek~Zt+5`AlFfASu8>)q5P>wg z^Z2+_)S48V4|8!XYfd}*d|Z)xva;>9yS;L9V;u`cMLz6*^0#|^p-qNMRXW4~@AXjA zGyBPCQOwse$@#Rq)o*R7HN9_1h26Y0O(!cuY|0RXK#WT%WmU;oDY9!q8D_ehJkXGm z6d8&td9lF!Cc1BQS^uU!>ujg2F{ip(+s6-QZJeh9#v63`yc;FGjUx#*&Q32!*PCem zA)l3cMsd-9Eb1fcZdrV(l%E<;PpR6`l#Og6Juj{sO24*#HT7buQCYqWt=hoY6H6P% z#RWy9_-^i^>>K3L8Kg8tgUm0#VUV;%GIsbc92C`DpB+Mr&ap^kQFDCQaEJiX=9w;R zj-fV=0`VS~G`6=N9F11R%~JN&WT0a=bZkU*fd^B6XWBGCadcQWsp#j>ecTD!Olo<~ zD|dI7$aU-H<|6cg>evMnyJQ_(wyht!V5r6ScpQ#3=)MTX&?}SA5z_j#h1$9bg>jIM z525(S&{Cb)@B{P|`*p1CLO845%Gjx&e?`%hwDBkCM0>3mTiyN~|1}1meh$S#?rZ3e z$-Vx6H3r)Hd_nmJqaZ|}og6IZBz63o*Rm6V2#=YMlni=cD|&qfRs3G$#gPBOsO#i3 zLzBUQ#qnSAfb$D>-!Nfo+yeH0SJF&O&~W2{hn<%SAFqj@8yOOSAb6p-A1ez<^E<11(J+}PW6Lx$etLK_N0Owmb|(AeC%j$jm4{rL;HkP2I0bt2@QWL*$J_k`J^VPsROL!Ajk3gpE=Ili=-YB^3Sxa@QT2kZc5diMf-P1a3Ia>`K!=WpI)clcmv7S;&O_ zN32V6_qbo&R+y|M9>!=37(|_aOqaaz;YJ|4NwyHjX__$l9bq-$vT-aPT4KW7(W`!v zFT`lW*22$DRzpkG6!KQz%QZU0=m+zSXsJ#FkYQ-?Nv6svLz0lAfi;>WPzTNl?oUY0 zRt4y2ljzq`f1~I%$tRA3U29_}%FplPXzcP!{A)nN#@2=({Hx;czh;boHLxSleL>tu z%V8iz1TvQebn5c>@Lhp$@CFKua)w^tczKo_GQ!6@L(D5#;V{l26NZsimC+3$D#AF; zo|`Q0h|80VP!HX`bWkk2P`1QJj1qUu0t^g-#KJ4_>A?dFM);Eaoscs!A0_>^0YXa7 z^Y%^yDCBg+s|=$BUg4F0J9m^Wb^W%{X{7p_;ByM%Kr!zcBB9YI2T0=lvfc90-bL~n zY6ize1nn65Qq$FtF`2;sq6y;?0^zLHhGe6&RTR~-CflW`GRh#~ugWJ`5>@reTn11M zcX0l!OCljqOf(#d9s4`}PjU-_6IZoh=t-1}Z><{Zr5amnstH4X!ke~X=vLz4?jeTC zSh0tAB9V;Y78K=rbiCG;>(osgKlyviq3t78T{~J!c{|pO*k0Z_TFc&IS!&N)c}dDX zxB4%|msKKO#tMA!w;)ZS0YO=c;_p*QNhbEA{2pEWKNw zD%Dojy}F769<0`XPrsJe)xL4B&nBIv(rhQ<$%+=uJX!00VKMI8l~*fTNz@CoUb%ah z-&aiK7@yt_j#JC5B^QbMTB|POujOHEu&$Z&X>L4f&JO!zWfRT3q&L0AV%&SEBtRRP z`l8=0cVDynjjp^djMP9|n44O3nW!I@)gox4yn9|-`h0qS9KV1ztfYK=$jD{02gcDG z=Tg?Ta$k?vd*%5idH~~ijmMJ%%~-F;rB(bPv92Wc@p5@ST;I&ok$6mZhnw1Dp&iGAR`#$; z+(z#+vSN3C3zpisKi*mDqtwhlbjz=D=2$W1c%pS2bSy)EXz1~AW?$(ql8@>9aHC8X zb8XyfWfSv+S-Q(qtX*dT+EBLlmYUBsUlZM@{2+OhO*v5<9tNGgzIy2B@%qDSr9VwR zrcy5(>v^%zW}Q|$F-?prx0yF1I!)$*yNWI>^lsk)kqF;%ot=eGsT$pv5 zi`&tE7Oa`I$~^TKFLkXt*x2S%w7VSFyZUCk8Rhoc^5wag$nMt_%{15b>7Y34$}cN@ zz1hBuipx=dHE68mhM_;cD9_8~d?uG>>z71yILMBNdQ#DEOXJyUJR6qkspUGU>Sfy= zCZFbt5gqAI+s3%`0(!`mS5F&x@whf#k}unTX=X57y*$N6rKK@?zHKkpYG<0tZsbAY zcK*`oFN~M?sASt}dDU5DDrL2lu}8XGTs&3UntnKpRu75kFxgs^?U<6v?#GX}m3cZ^ zo$4U_8@s;U0#_;HofjAM1CXOiQ`c4k`EDw?56>SI5D zp*}`S+HmtYeO@QW`s`s=)}ChRr+f8roSu{`k6KyHPo9@)_3@aU8S3Ng@!?i|TuBbw z3RzZ{k-!x5RD2nZi^B)RC%_q_EC2?4RMm8zIXRQ}^B1*LaG*QF0sCsI+RkZBhmdgw z>XThD*Wu4mAUY&DuI8^d2I$HmnB#zdf0<)e5L)NNH2LbMy9_tn(^;S@5+%Ag!BYvN zKEY!;K>z7PhzHd6WV7N=N)iR%J_BT?Cw zMEG$PO2p%FF)QW54Kef_@C2}%-sB5X9_qT-o+glaK(d$b6(`ifTyt?T3e>`^a{mGpW1qVsf^fOMpZW<9 z(UH~O3ev^)O)9x+Ku@%UNUXL;yqg0=RD)v2{UMUX^C*g2~~ zlIo%Cz=7M!b~4`i2t;svH74DEUqGL4EU|-CK`?=eCGh$q9j6TH8$ZE_&z1^M35R7v z8bUaDx<4@jI~pY?^%8ELn;Oz=-~>-d(xtPtGLZ!hIWV##9Qy+5MPYh_4USPRNJj_W zh4^y?Jfp_s=up5@qD~a)P?GUDCtDK={V6n&mrN2VKX4Eihx7R`(#y$AJVlL|6SebVq ziK7{DemYo9k22V$ASCL4h8+cfsudc6l6!4z&yXf~WPlH_->n5& zgpI&2;PXy3E%aSRDMYrqu0kD_Y#u>}tM%5#=?d9yJSC3v<0Pqngkf>xX_TfCaKXC8 zP@msIUp$ck#>xLe64*IKx+E@rD8fF6&n_>h&G7ZgiOKJ#ia|8f%M|mDorWnasvp4m z`S~3|j(LGf&gF?C)TPd8aYe`q(uCcgj;eg}G$dJj=JW-$@8ob!Ik%U2$VuF+>AVz7 zZ8P@lL>#`5?_`>Pn_q?Qg2Um9`AUZ^Ypmh?z;RsGVd!)V-_g1$roluZ3TEKAz%Tfp zL>PG$x&^-v@ELrNOrxjquV3b0VG3-GQ-E43EydtVd>TtQtGy)-*H1xMUGgC2?#@wE zZXCj0T~hf|8K}VmFlxLE4;!4Sguu+lU8%gC23wx)7H<@PXnEiy4e~R`pgD9mTbEI; z0aPUj1IcM~A`^D-b>4UIm{^>Iw_4ZNLYxuhR((tTK>$l)rh}$$S@4`Zu-mF_9#NhG z-(mj^y?++3%qb2dFlU|5mWf-Ttx5CB2(oXA4MAooLHjr8&Xbu!_~zy&%&xJI5}sHP zcw&H|0`3}rCv1ev5XjlX!t%&4nf#~D2LKUh-4Tn)YwZT*Ttt^2@K_QuQ7HWkJf>pc zWDYEbEN=%b3NjvlQ}7<%wqIdmmuil}O!5ShH~8ts zHmb&6HFMw`h@8S24E-+`nuW68z`8g^*H1q+nqNq(=UG`{vU5)JT;ojZWTwtU@GUwv zVGBc>qb^|12+9D4PB$PoXkiOCSwF4}Q@ug@&=1h}f@1H2LJWdE z0Rc7j_f4FHOvf3|wAGZAdMs1<0O z1NZ|r;pbPtw*x~VV*2uPB#iOy(?x4**ecS0Tp-0Zio$-z!ZCY^T9+IGEtiJX?eqq( z3mn~f-9TM0tRBb=0und@wIi4ye4%pm!d3dp(;lRR;7oQKqq(ZsJkJKr)f-J{tckc- z%yo~8+7f27BHy5{*1}e{7Bs9Fs|UaUsz=Q2!9#vU8@l6;@MlmSYZOmdHZ_{W^p=c& zkhUJmZlQS*5b;3YW*eFXdsu~%k zXBmu%;>~EgS});))Ac-4Us4b4F}5OtHk%y`trYtRts(nJ@p~T#ET*XSIm>X$E6*)1 zmriWEV%~#IL95r{1h6?CD9C4{rD{!oEbUd~t6&K$a{?_K!>_y`=vctLD{-ab)3^}P z2BR??aM3hYc+e4guLL7CJ#e(fWJ-XP!|_G%78KP#*{Xomqjx)tA~aP9i4xESV*B^H zs33_bO5OfY{wbP;!U_EH3&9gt)#ATTMCAcPx`n1XY+hqZ*7)hXb_9At8gzJneOMzW zrW@C}1{v;q`5?Xd{Dg7$tbw4cdZNJ;J^c3#=G__{SWI|@D=f{EG4D=Ope#O_tQjqf z!g-i{%Vqpo8dASH;Z#Q#QEaM@4$d&xkm2(>6x<<_^yaF%#&=bY?g)PF>E3Qa$U#34 zWw;dzuE?T~-Do8$?J z@JQp<%OzUM$XA;@$Jcy3oe^JuhKMDmA98qUC`*Mf(Vz?J{c?6C*Bpd!7wnBx2t?HKMOY{VP zTtR2LG)D5W0I!`cnoy1**Q>a9bRpu-4~T$Q$TcT&O%4fkL2?cbI#Cgft%*cex(}!Q zD+e^!4w)z9HgG9VWw(9vA`x97qRVDlC_Zs}NEHLe58^&P5V6aDdqeXkA6SvjR|xS8 zA6O}nWz*0J_5q4nFx9H2!Yio+RmSx$L}iei0*gd``bmh1pp452ohm?>qf4KxFYs3! zKu?tO{1wkh4UD$~Y4m&j^!KD0z%bax`a>uaUmsi-eee;!;63Ts5nvxJiq$w}dyjpg z0!{AG#(XXV@Du@mjI0@wVo@E~9P=Gu|6ms@l4Xu+ z^$(;Fa=oZrS;fs47@+*3R8ns4I^UoOpq*ZM{|quoxIDHooh})7ijfL<05w86Ik9eB zXhE->fwF2UflKXsVuAb&`IiV{g3u5_-*GB|vSzC*pWPLIeE5Z`@)h-tpnKz!4&JuB zb3lW3OXLsMddM3nOj!sC)x}qOxF=E)BCHnU2Ux1fBzRM>~usaeqQpb3ax zRh?>p=X=LZk=HodP3QTqIF-cyE2JrE#+d$$1xi4q7Ptxl;^Ly!RY)6OvH9(xC5Gkj z9ao_PR_5VGWrKkR`bhg)Gat5 zQvd6JhB><=Fs})CF_(8TU{|%Z{o!MnF2MB5BhhILd=B#fJV3+0gF`z5qVAUi^s98Wy5)9rD79OKbf>WtchZ{h1 z=k#*+GXA^-2RDNJT26t6=CaKigmKW_RnF09VW+N zE(DA)-WWcZ`D*wWVt#piSoxz?1rQ)e8ozaM9H^m2LJmD~ZhgVY8DUDmi{O7S42<)d zsYt$k^)vOF;CSbFl+K@U^tdb6qL}Ue^nT?pUb~w&EY>sQ_^!HhrUNe5)h<` zw1u=jSYOV*=*pu|*`MA0wC-dCt=80iC@a}(owCW zonOwA<-jZefGp1!x+R!*gc2!JDob6N3m{&cUZ&;$I=QdAN9XCvRP}?q^VS9dYcwZVr*~+Ef)4Ui@8KSStAN z0SK92+?)J=N1DT{3+8I&;_@qC{XHP!d%gHq`XWqp!^_A#ZBQzLi-KM9C~|offB6%M z@1Y1KL${e2k;=Ml^fh%KLH83vQ|&-Fk=8_)V|c1`O?;6nx&q{wOGx>Hi66baDLVJ= zUC$84)7zgd`c6847gR)>eq{!Io<>nj<2aZwMd2UGH02|M^*%Z!F6JGGz6yjO__dkj zJ!kvxEUrTjY3~zq!zDQ7plgV8f66&#hSZ{q?Ae^w&NgPF>Tot}NDxM+lTQQ&uYUa` zTn)fJkpoS*RZrWQ!KPbnfVRAhfn8+yP4D0`>QI2fEE=OyA|!So;T9_A8A`&?6?cee zXTgEJ-|~R^$dF>;LC+qf9!7En83O;-fyd#ni!&}c=LojQs*c(?-?$09f4OiLz1&XN zKoe)Itq-)dMP$a0I&VZGrmQmDPB@nCTLbL5?F9$f^U%mS@1Rfs&pfayi-_C8C68fZ z5_KM*cxEK%a{@dEtnvx%3(pj~u~b|d7<4GYdL1y&rP^dwg#vuhIJ}5x-ie4e8nTCM zOmO8(q;|SayypPI%|Lyqf1*O4!~}cbX{gD#XwPv+m!G^kdsE)2RjRDWhe`gDV{14 zsK$7U&kqbVjg9v{`Rw_8qA}eAbp{|&n>N^YjQV)9Dk5nxc7NB`8cS{b#QKyqq60xs z~P7f2jMG^Ya)+PgmEf%yR|` z$!p*|b6kW3gfduxMD)ST#62Y<2_ExX=mJ@E3R*^{oFSxZCzs$z{~o%Ac9Jkx&l@$V zm#n_hiO(RKJ;7JU0YAtFm!3(OP0<#x`~7Yje_gp7`waT`JsNc`0hqeHnc<_tU4#Js zhJf=oVcyFRe*`T=Z>hWgG5+e5eP2&Qsv(l>?1RA6z@a$spL4^}YM*nv0kPduc#4C8 z-P&r(LU>F3?yHNVu{H6vg}2m}5@fzZJG^epYinkhwz9Rcp)(m=Q#CEkLNP8{ZJeKB ztXa_9nj~nrqzOA?3k1shoo<=gQm;>$3GtSWmO|MFf1QYZ2n0H8Y6a-I^BG~KNE71P zO(QqUnyPO(;~&t1u~zkn?SJ(p(zhE&+Fs?fdCX z_=jvxeRuQ9=p%g}uRy{D3leR^M<41dBdCnAe@GufRHud`jmJ$>?QBOY&3-hD#g88k zgc;of!4YM2dT49FwyJpf&__X$u_;f1bYkLC@LL0X6BabqP9b9rJthKLvuxS4L-3QT zkG*E!zUm7mr1ZRIvOLe2eYUCGZ&V zf7|k@U=HqHCm|K6qX-NFDGB+_Pevy0+kdREMr7BBR-c$RB%Z;OhHan7e`%T=PvV?s zOlSVXGvtp}2?}lX|F69_U2o$^5=H;t@4N3%g6sxp5euos5-8G#+S(dRmPX6;^dZ^m z0#PJO0#FbN5Jk6jUgJE_d9fQyE|E(We~L7FmV2*fT0~Xl8W|ZGTSj<;sbOIj7xC$+ z8!S?Lc}#9}oewbDV&M!7-r(M)5291$1Eq%@ZfJ6%2SPiZWKXef*>P}Hg(-1~exmN# zU>G!nCHzQ{KKERYXBx{8|J0pb#wisUf!a87wJLU)p&y_rx*@ApA-b^6&1qs*f3kEY z!@0=4JMN`0@-Lb4QSFT;t3^i=8~j9K-^{cC^{b zcyU6szg)Ap)8kF9MTv?jAk?tce=rrHDW{9*Y(_4&T6fUu!BtK4YMsj!c3p6Pt{eeH z_%XS|qTE-EtXC;zVr17(s?8+Hs<{Kbe7xGr-FR=*jGwZyT62%N2_IqArLMmazz|f1#Y->4kts}%MJhgr#~fqfA#ivV5AJm z>gT;>2F!sQwsFI!oVr1MzGE^hU#N2i5e>eXPO?SNRi(Ow@JkR^8+XMGp`}ByZUU$_ z{N3oZFiZ}P%=zNe?wYWXqFBwjW67@5>GhCb*<_p&%MyVcy$-h03}V#ce#|@%Ec)cx zR3$e#&!Ml&i84-gn&Jpof30Jk-x=JI+>9DP7}R9#ne)v~gj;5YA^A!DK>7D{kx}Ya z*_e(Z`TOr?vfPeIlW3?Szwru~sO>lS$4^O{rKh&n5smt%q(#>yQ18U$hhDcj+XOc* z0AhZk%05Djbw}drPqmUxTy1d#M4_vDtlF!%&JkDW=o>Hkj+JAkf0EEZ8Y_~%^MCqc zevOh?N1o@9Oa51#+3mBR)J;J4{=GW`H&KqQHwx?Vhq5@X`m}iPsiwDkk-p*q$3>;v zK_w@6$hVEohQo+62d`j{C)Q^SZwOrjcHJ8|Me*i;SoAg(z3mp|n^9q_R8p*d#R{+H zZ|7q#Fi-G(|M+;de@Krnpj=OeYvJ1wEmIixi@NBt?pmwtL;ooCjfhB#?gdawO)Z5$ zHG?a|$8Qhdeg5c>oz@)hdXZWLd#TND^9Q!2W+L<;@{&wRaK>Juk$3|ksg8h4+_$~VVmQF^d`V1YFJM>%Pb>?uuB4i|Q!H*=sXy$5 z7fQgK#63qaM<-HY5|Ph z5*dpmyG-u|vg*Tw-pA0*`KDirK@i8rgtLZee-m`wr-jZsBL=tW*l)|`f}HwFenjPwiCW#tqCzGOBbUL^VyG-}$7%TD`RSoRew{>iAJH=Ou{QcdY#V-Y)R z21~%9o*gR&dWE3V*b~-WRT&Ac>~m9+on(w^pSOC%q7!Ep`etxCJBGuuSX}BtFtpTz zif6@woQO>i>O7CfJTj#yu>zLC-T;*5%9IR^)O+>XR8XnpT6=rQDN!fDCLM|_e?4>w zfDw1nTNZE0*wlfx7WuTpcdkAEX+lK@A`XbDEpneukF!qyaMnNFOxlODJ;%w626hWa zh65}8QAuNO#6%{1mf!?p{hFj zsM5&l8Q!Bd1V?q{-_g^}(Jr$rf6-L$pTr5)T1p-b^;J^;TLH2?lCioVvq6HYtvYYlM@<7VUGe8bgqf3piYe~ zYgG9R%2{A56*H+h;B?+Xe@d754$!(h!Dxig&(o6=&c@O{F6I~Qphq4_%{|u}UZb3( z;u81eYK9#WZg_(oJV#r9C)RUhYc-**Hbqid%ejmu#mMG7T4vK4(|aVVjtQ@KJjv%| zS$RSlX=v!WJffhf>Pyr3wf8BXDQg(XG5%#un4vN?At$p>Qi7+Uf50+56?BUm2?Sdz zf_o>7HexEn(cSK~(Z-|;iy(=9l3It~7g>C;ZiAaLmqyDF_be-HQP9CT>Bad>7pc7> z{wcelGq4_cxrR<_kx}s!Tr@u+Ri4f#0AgCrO=ImL1^g0F zN8o3RlSDa_Idjn4f8oOiI=XENcz@$2vH55=!BGntIG9`oa+zIj<`PQ}^OeV)9Rz%k zl&IF#5T3}fe$s}C>3)NwJJ6$vSt~a`XQN7bFzG-q}e}l6wK)V%1u}4nC&}&r; z5GAiEi0JQ7i($iQ)IorU+8BEezyuPd3jnwtUt$E?LBv{$ z?chR4vYR0TNnpM{*9a~mhSCOdZvjoVp=_+AQcZnHmb+GzLyV!ad@dxdVe;P(3uCj0 zBWA4Yt1f5MfBJic^<0bpk>rz?VXQcAlW}!q&zz{2lzx|d;MRGI2KFfIi}*$iBA$Km z88OH1S&`Af_`pV^rOR{Gko*dIH)b zP$y#Kj-~|psEN47!|^@|MS3IPY*~%9;nxutffm!)g;akN0YzCBb4-$zo~E8EkD$W4 zfU{XRf0qnASo_@*n3{~h2yJx(sqIQZ9y`+!87q6^iKrSZ`6A(6YRC70!&iH1cUK;x z0VVP|RMmm-%6B@hB2wNoF|xjC66wv09J$lXu{A1T>wsi&QarVlVEz=<1^VGdmQqfK zwid5#sc~D&G$mh>LI3F~~ve3HAo$hv^7DDC$Oc*|CVJ zF$}J>sc_Wla$zw`8zc~+7$aQTITsTBR(oB_X5A%Y{8iF0%|eZoUJZ3aJr(KNuSh0x ze=+|X{lB3V@;k-xQA=z_*X?o*+b}%`+tY{Rid-ckarD*xTaCQo;~U!vJXJFgo;sZn zj`Q&}he?NqX;A9&RXy0bhRW^%=DI;pR_!c1rI{q13 z^tSv7-Z+OZ#d+`jn-`bz^5pO-Z(j5OIg3vjyZ*p4!yQ|*Yr9jkxQGXGdGR?|V%)4X zsy!v%Q%ez3W0I&&Jhx&WDYe-tp^(L&JV4R%-Kbr@I*6I$Pf>o%MhmmTzeF+ce+TSp z`~xB(J!x8deTSVQi_x=AAK(WRoL}A(@qpojO|x-5x^dRCai@K)&6}68BD6L?Q5*~4 zsyQx-=&hr^OAY@<$7z@Hx!5pH?xk`^`?uyate&&B4@jEQGtvfnw>TAQF`j8(B}tQA z5s~zRIoGw#h*?W6F}e2B$tL|pe?BePN7eW(6*LA4`8aeBbBj_qu(xP$tEN@1aC}pYsYNdX}Z&4KS`jIC?7zc#$0h;@(o>UP}MpN z-vs4J23##BhSnW_8hE)iA9zT5z@N~DSc06ZQ^fd1?Z|O$P#?rzu~GC-HW`)6At0aV>5AVZBt|*N*ki^Y2j>Ic1aZDZA!>&?78Rcqg4E z3i^$f->5mGbofN4s}Skc3dHD!P_k7=zw!JdDIP2FbP2Yf4@-%>~%IB7c$Jq zV$8GC1)loPr|fheFhUKaC?zy6-<_?dqZ#0M<1;|i@v+E<9!bj6Q;xZuEt=`$>jgw( z$qzpzsvBkXK;XZj7oLJamjkBW=ORKgil?t|AZGNVi>zEtLNE7tuM|JHM6@ud4V6()oOH@rWE`j=$*i8zK<* zggkmz`F(gzj3ZKZPwR$A@nDer;9UYV`sSY5EzCmjMmo(;{8Jd4`e8S@U9Ge-ak_DW zdYH`6@;mw+3`13Wm{7b0E)NgUTN{;#jQ@SmghUZq_~qk}fBX2M89`{R784@FwgaE$ z;(zrh=FWAO=NU{wL#qT4K$ZO=3Be{{?cRWjUp%pep;_+Y2laBNqW|h?9NP@R$LZ`# zT6%FpkH7RHhyV|f4xwy-AIWZH!cY(>!(;ZZ?zFeZ?G2RO&uNJ|L=*?~|7shku;~G= zRa3&tV?zf9f3++$<%t}`_@BDDW-#ZHI1@WAHMw?b8B!rh3VCwHr&&$eeD^Oq%xm2* zVHz6(=cCw=&6kdu=H=+SN!gPwp%Hi8w1?a#dC0l#()9!MC-nTE@INHG>TG~!pA zu{pPPsy}&bZk#FhSiLLphgW2v*C?{<`Q86yg})qJ#rTiaN~5elZZ1DG5dsOPbw095d+F>gEbg)T20&RXhjN(0`=R^5$M@rTgNChOem&}uW&(OMcUkJ*S) zE7nki0z2|i#I3LvmyCnQIva=BAUZ@lRBd0Pf19VXYB4C-G*|9}@8n!^DsfZwYXzO<+D%78NsOwsjp%oytkyt2p7XC_GJbCFrtXB!gPk_b zQ@f&x>@H#|7L4p7>0(5(7R>4-d3V505S;_^$E`x8e*1K7H=etIuV|2@drw!x3 zf8e?~$X%_WMhbZN>lM}DHJ^P?h>mICp)E`|z)qIr{G)T^Y$$-a?R&1X+9koR<<^Gl zb}s^x%L*0^2E6`p#MiK+6*TWfj5`&nv|(IB4pn+w6rb|Uz#8Mzmme~|kG#9p-iXBq zSQkL;hBj%283@!6F$uwIbd?J($v0rue;THs;0_m=>hc5pZ-OFA_TePYCgTrhuudNK ze^cIXbU<809X)L*n?-f%2Hxl|S4;Awd^IYw#TRst1OdR@v)*Kz5o~?)nUYnVWEel7 z86P4l)NvTDJCv=Eg~<&9FIeWP(JG;kOGP(mJHvH}%qd7v>EtOK@}0Kg%Evhzf7($0 zDcNO_ZF;;am&KHyTVCTW5WIM3!{m)#Ksb7rnGUW1vX)2LFj>as2P;>^sBp&lmpU(P z)p!?Gn9e%sbT)4?Zu8#Sr&WL`fQsz#U{AJo5z$j5F8w6Fo^G)Gwx z3IZV8p4W6XnUHv(ydmB8(-9G`e_?X>ZpDx$dLuU=E{Ks>?jz)jt z*p7tD-?5~2Bm51%kXDvH{Usayk}qotyz;+!+q1B};l}VwcZ{n;h3C0#p{IUGCqV

hy(?@SAiM4^h9iCvsL+dkUv?a8&QA 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

c_jMi({#p#^iK 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 TIspJ#m(4%{E(WPS0RR91^}=ka delta 78923 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 R07RGAKmjfWo<0Ep0080}4{87a diff --git a/builds/crx/script.js b/builds/crx/script.js index c612fe848..0995830c7 100644 --- a/builds/crx/script.js +++ b/builds/crx/script.js @@ -86,11 +86,11 @@ 'Forward Hiding': [true, 'Hide original posts of inlined backlinks.'], 'Quote Previewing': [true, 'Show quoted post on hover.'], 'Quote Highlighting': [true, 'Highlight the previewed post.'], - 'Quote Threading': [true, ''], 'Resurrect Quotes': [true, 'Link dead quotes to the archives.'], 'Mark Quotes of You': [true, 'Add \'(You)\' to quotes linking to your posts.'], 'Mark OP Quotes': [true, 'Add \'(OP)\' to OP quotes.'], - 'Mark Cross-thread Quotes': [true, 'Add \'(Cross-thread)\' to cross-threads quotes.'] + 'Mark Cross-thread Quotes': [true, 'Add \'(Cross-thread)\' to cross-threads quotes.'], + 'Quote Threading': [false, 'Thread conversations'] } }, imageExpansion: { diff --git a/src/code/config.coffee b/src/code/config.coffee index 3ee465f54..358da50d9 100644 --- a/src/code/config.coffee +++ b/src/code/config.coffee @@ -277,10 +277,6 @@ Config = true 'Highlight the previewed post.' ] - 'Quote Threading': [ - true - '' - ] 'Resurrect Quotes': [ true 'Link dead quotes to the archives.' @@ -297,6 +293,10 @@ Config = true 'Add \'(Cross-thread)\' to cross-threads quotes.' ] + 'Quote Threading': [ + false + 'Thread conversations' + ] imageExpansion: 'Fit width': [ From 891e61089782644c0fa96d6ea55cdb2f80d66a37 Mon Sep 17 00:00:00 2001 From: Zixaphir Date: Fri, 19 Apr 2013 00:11:58 -0700 Subject: [PATCH 14/15] Remove unnecessary comment (RALs are no longer used.) --- src/code/quoting/quotethreading.coffee | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/code/quoting/quotethreading.coffee b/src/code/quoting/quotethreading.coffee index 0b0b59c43..76b94d5b2 100644 --- a/src/code/quoting/quotethreading.coffee +++ b/src/code/quoting/quotethreading.coffee @@ -35,13 +35,6 @@ QuoteThreading = QuoteThreading.hasRun = true node: -> - # Random access list - # - # 'Array' implementation is very awkward - mid-object inserts, loop to find - # quoted post, loop to find inserted post(!), loop to find distance from - # threaded post to thread root - # - # Of course, implementing your own data structure can be awkward. return if @isClone or not QuoteThreading.enabled or @thread.OP is @ {quotes, ID, fullID} = @ From c820ed44bc0ef45086ec1414e6c7c22a2f99bb4b Mon Sep 17 00:00:00 2001 From: Zixaphir Date: Fri, 19 Apr 2013 01:08:26 -0700 Subject: [PATCH 15/15] Oops. --- builds/4chan-X.js | 24 +++++++++++++---------- builds/4chan-X.user.js | 24 +++++++++++++---------- builds/crx.crx | Bin 82188 -> 82240 bytes builds/crx/script.js | 22 ++++++++++++--------- src/code/monitoring/threadupdater.coffee | 3 ++- src/code/quoting/quotethreading.coffee | 15 +++++--------- 6 files changed, 48 insertions(+), 40 deletions(-) diff --git a/builds/4chan-X.js b/builds/4chan-X.js index fb24fb02b..e30ade4a1 100644 --- a/builds/4chan-X.js +++ b/builds/4chan-X.js @@ -20,7 +20,7 @@ // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAgMAAAAqbBEUAAAACVBMVEUAAGcAAABmzDNZt9VtAAAAAXRSTlMAQObYZgAAAHFJREFUKFOt0LENACEIBdBv4Qju4wgWanEj3D6OcIVMKaitYHEU/jwTCQj8W75kiVCSBvdQ5/AvfVHBin11BgdRq3ysBgfwBDRrj3MCIA+oAQaku/Q1cNctrAmyDl577tOThYt/Y1RBM4DgOHzM0HFTAyLukH/cmRnqAAAAAElFTkSuQmCC // ==/UserScript== -/* 4chan X - Version 3.1.4 - 2013-04-18 +/* 4chan X - Version 3.1.4 - 2013-04-19 * https://4chan-x.just-believe.in/ * * Copyright (c) 2009-2011 James Campos @@ -6124,7 +6124,9 @@ continue; } if (post.cb) { - post.cb.call(post); + if (!post.cb.call(post)) { + $.add(ThreadUpdater.root, post.nodes.root); + } } else { $.add(ThreadUpdater.root, post.nodes.root); } @@ -8235,13 +8237,8 @@ qpost = posts[this.threaded]; delete this.threaded; delete this.cb; - if (this.thread.OP === qpost) { - return; - } - if (QuoteThreading.hasRun) { - if (!Unread.posts.contains(qpost)) { - return; - } + if (this.thread.OP === qpost || (QuoteThreading.hasRun && !Unread.posts.contains(qpost))) { + return false; } qroot = qpost.nodes.root; threadContainer = qroot.nextSibling; @@ -8251,7 +8248,8 @@ }); $.after(qroot, threadContainer); } - return $.add(threadContainer, this.nodes.root); + $.add(threadContainer, this.nodes.root); + return true; }, toggle: function() { var container, containers, node, nodes, replies, reply, thread, _i, _j, _k, _len, _len1, _len2, _results; @@ -8296,6 +8294,12 @@ } return Unread.update(true); } + }, + kb: function() { + var control; + + control = $.id('threadingControl'); + return control.click(); } }; diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js index 2e9205fd6..2a5950ff9 100644 --- a/builds/4chan-X.user.js +++ b/builds/4chan-X.user.js @@ -20,7 +20,7 @@ // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAgMAAAAqbBEUAAAACVBMVEUAAGcAAABmzDNZt9VtAAAAAXRSTlMAQObYZgAAAHFJREFUKFOt0LENACEIBdBv4Qju4wgWanEj3D6OcIVMKaitYHEU/jwTCQj8W75kiVCSBvdQ5/AvfVHBin11BgdRq3ysBgfwBDRrj3MCIA+oAQaku/Q1cNctrAmyDl577tOThYt/Y1RBM4DgOHzM0HFTAyLukH/cmRnqAAAAAElFTkSuQmCC // ==/UserScript== -/* 4chan X - Version 3.1.4 - 2013-04-18 +/* 4chan X - Version 3.1.4 - 2013-04-19 * https://4chan-x.just-believe.in/ * * Copyright (c) 2009-2011 James Campos @@ -6116,7 +6116,9 @@ continue; } if (post.cb) { - post.cb.call(post); + if (!post.cb.call(post)) { + $.add(ThreadUpdater.root, post.nodes.root); + } } else { $.add(ThreadUpdater.root, post.nodes.root); } @@ -8252,13 +8254,8 @@ qpost = posts[this.threaded]; delete this.threaded; delete this.cb; - if (this.thread.OP === qpost) { - return; - } - if (QuoteThreading.hasRun) { - if (!Unread.posts.contains(qpost)) { - return; - } + if (this.thread.OP === qpost || (QuoteThreading.hasRun && !Unread.posts.contains(qpost))) { + return false; } qroot = qpost.nodes.root; threadContainer = qroot.nextSibling; @@ -8268,7 +8265,8 @@ }); $.after(qroot, threadContainer); } - return $.add(threadContainer, this.nodes.root); + $.add(threadContainer, this.nodes.root); + return true; }, toggle: function() { var container, containers, node, nodes, replies, reply, thread, _i, _j, _k, _len, _len1, _len2, _results; @@ -8313,6 +8311,12 @@ } return Unread.update(true); } + }, + kb: function() { + var control; + + control = $.id('threadingControl'); + return control.click(); } }; diff --git a/builds/crx.crx b/builds/crx.crx index 208dac5070f3c67a85c6b814067e0b6bcd6c0342..ade054aa3c8b3d97114297cba4b3ebfc51fd0b03 100644 GIT binary patch delta 30464 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 H0RR91ywc#j delta 30440 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 z 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 diff --git a/builds/crx/script.js b/builds/crx/script.js index 0995830c7..826a44af7 100644 --- a/builds/crx/script.js +++ b/builds/crx/script.js @@ -6037,7 +6037,9 @@ continue; } if (post.cb) { - post.cb.call(post); + if (!post.cb.call(post)) { + $.add(ThreadUpdater.root, post.nodes.root); + } } else { $.add(ThreadUpdater.root, post.nodes.root); } @@ -8154,13 +8156,8 @@ qpost = posts[this.threaded]; delete this.threaded; delete this.cb; - if (this.thread.OP === qpost) { - return; - } - if (QuoteThreading.hasRun) { - if (!Unread.posts.contains(qpost)) { - return; - } + if (this.thread.OP === qpost || (QuoteThreading.hasRun && !Unread.posts.contains(qpost))) { + return false; } qroot = qpost.nodes.root; threadContainer = qroot.nextSibling; @@ -8170,7 +8167,8 @@ }); $.after(qroot, threadContainer); } - return $.add(threadContainer, this.nodes.root); + $.add(threadContainer, this.nodes.root); + return true; }, toggle: function() { var container, containers, node, nodes, replies, reply, thread, _i, _j, _k, _len, _len1, _len2, _results; @@ -8215,6 +8213,12 @@ } return Unread.update(true); } + }, + kb: function() { + var control; + + control = $.id('threadingControl'); + return control.click(); } }; diff --git a/src/code/monitoring/threadupdater.coffee b/src/code/monitoring/threadupdater.coffee index ac04e2107..119296a73 100644 --- a/src/code/monitoring/threadupdater.coffee +++ b/src/code/monitoring/threadupdater.coffee @@ -274,7 +274,8 @@ ThreadUpdater = for key, post of posts continue unless posts.hasOwnProperty key if post.cb - post.cb.call post + unless post.cb.call post + $.add ThreadUpdater.root, post.nodes.root else $.add ThreadUpdater.root, post.nodes.root diff --git a/src/code/quoting/quotethreading.coffee b/src/code/quoting/quotethreading.coffee index 76b94d5b2..185e70ed8 100644 --- a/src/code/quoting/quotethreading.coffee +++ b/src/code/quoting/quotethreading.coffee @@ -62,10 +62,7 @@ QuoteThreading = delete @threaded delete @cb - return if @thread.OP is qpost - - if QuoteThreading.hasRun - return unless Unread.posts.contains qpost + return false if @thread.OP is qpost or (QuoteThreading.hasRun and !Unread.posts.contains qpost) qroot = qpost.nodes.root threadContainer = qroot.nextSibling @@ -75,6 +72,7 @@ QuoteThreading = $.after qroot, threadContainer $.add threadContainer, @nodes.root + return true toggle: -> thread = $ '.thread' @@ -94,9 +92,6 @@ QuoteThreading = $.rm container for container in containers Unread.update true -# Keybind comes later. -# public: -# toggle: -> -# control = $.id 'threadingControl' -# control.checked = not control.checked -# QuoteThreading.toggle.call control \ No newline at end of file + kb: -> + control = $.id 'threadingControl' + control.click() \ No newline at end of file