From 421cd15ecec02471437a0bb0f6fc0cbdf6a44fe5 Mon Sep 17 00:00:00 2001 From: Zixaphir Date: Tue, 19 Mar 2013 18:03:29 -0700 Subject: [PATCH] Get the Appchan kinda-sorta-maybe working. --- appchan-x.user.js | 3454 +++++++++++++++++++++++++++++++++++++++- css/burichan.css | 52 - css/futaba.css | 52 - css/icons.base.css | 95 ++ css/icons.horz.css | 81 + css/icons.horz.tu.css | 9 + css/icons.vert.css | 81 + css/icons.vert.tu.css | 8 + css/jscolor.css | 77 + css/layout.css | 1790 +++++++++++++++++++++ css/photon.css | 52 - css/prettyprint.css | 57 + css/style.css | 802 ---------- css/theme.4chanss.css | 30 + css/theme.css | 396 +++++ css/theme.oneechan.css | 27 + css/tomorrow.css | 58 - css/yotsuba-b.css | 52 - css/yotsuba.css | 52 - lib/$.coffee | 3 +- src/appchan.coffee | 1530 +++++++++++++++++- src/config.coffee | 355 +++++ src/features.coffee | 2 +- src/globals.coffee | 2756 +++++++++++++++++++++++++++++++- src/main.coffee | 9 +- 25 files changed, 10715 insertions(+), 1165 deletions(-) delete mode 100644 css/burichan.css delete mode 100644 css/futaba.css create mode 100644 css/icons.base.css create mode 100644 css/icons.horz.css create mode 100644 css/icons.horz.tu.css create mode 100644 css/icons.vert.css create mode 100644 css/icons.vert.tu.css create mode 100644 css/jscolor.css create mode 100644 css/layout.css delete mode 100644 css/photon.css create mode 100644 css/prettyprint.css delete mode 100644 css/style.css create mode 100644 css/theme.4chanss.css create mode 100644 css/theme.css create mode 100644 css/theme.oneechan.css delete mode 100644 css/tomorrow.css delete mode 100644 css/yotsuba-b.css delete mode 100644 css/yotsuba.css diff --git a/appchan-x.user.js b/appchan-x.user.js index 4fb8efd61..9ab14320d 100644 --- a/appchan-x.user.js +++ b/appchan-x.user.js @@ -43,7 +43,7 @@ */ (function() { - var $, $$, Anonymize, ArchiveLink, Banner, Board, Build, CatalogLinks, Clone, Conf, Config, CustomCSS, DeleteLink, DownloadLink, ExpandComment, ExpandThread, Favicon, FileInfo, Filter, Fourchan, Get, GlobalMessage, Header, ImageExpand, ImageHover, ImageReplace, Keybinds, Linkify, Main, Menu, Misc, Nav, Notification, Polyfill, Post, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteYou, Quotify, Recursive, Redirect, RelativeDates, ReplyHiding, Report, ReportLink, RevealSpoilers, Rice, Sauce, Settings, Style, Thread, ThreadExcerpt, ThreadHiding, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, c, d, doc, g, + var $, $$, Anonymize, ArchiveLink, Banner, Board, Build, CatalogLinks, Clone, Conf, Config, CustomCSS, DeleteLink, DownloadLink, Emoji, ExpandComment, ExpandThread, Favicon, FileInfo, Filter, Fourchan, Get, GlobalMessage, Header, Icons, ImageExpand, ImageHover, ImageReplace, JSColor, Keybinds, Linkify, Main, MascotTools, Mascots, Menu, Misc, Nav, Notification, Polyfill, Post, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteYou, Quotify, Recursive, Redirect, RelativeDates, ReplyHiding, Report, ReportLink, RevealSpoilers, Rice, Sauce, Settings, Style, ThemeTools, Themes, Thread, ThreadExcerpt, ThreadHiding, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, c, d, doc, editMascot, editTheme, g, userNavigation, __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; }; @@ -135,6 +135,95 @@ 'Expand spoilers': [true, 'Expand all images along with spoilers.'], 'Expand from here': [true, 'Expand all images only from current position to thread end.'] }, + style: { + Interface: { + 'Single Column Mode': [true, 'Presents options in a single column, rather than in blocks.'], + 'Sidebar': ['normal', 'Alter the sidebar size. Completely hiding it can cause content to overlap, but with the correct option combinations can create a minimal 4chan layout that has more efficient screen real-estate than vanilla 4chan.', ['large', 'normal', 'minimal', 'hide']], + 'Sidebar Location': ['right', 'The side of the page the sidebar content is on. It is highly recommended that you do not hide the sidebar if you change this option.', ['left', 'right']], + 'Top Thread Padding': ['0', 'Add some spacing between the top edge of document and the threads.', 'text'], + 'Bottom Thread Padding': ['0', 'Add some spacing between the bottom edge of document and the threads.', 'text'], + 'Left Thread Padding': ['0', 'Add some spacing between the left edge of document and the threads.', 'text'], + 'Right Thread Padding': ['0', 'Add some spacing between the right edge of document and the threads.', 'text'], + 'Announcements': ['slideout', 'The style of announcements and the ability to hide them.', ['4chan default', 'slideout', 'hide']], + 'Board Title': ['at sidebar top', 'The positioning of the board\'s logo and subtitle.', ['at sidebar top', 'at sidebar bottom', 'at top', 'under post form', 'hide']], + 'Custom Board Titles': [false, 'Customize Board Titles by shift-clicking the board title or subtitle.'], + 'Board Subtitle': [true, 'Show the board subtitle.'], + '4chan Banner': ['at sidebar top', 'The positioning of 4chan\'s image banner.', ['at sidebar top', 'at sidebar bottom', 'under post form', 'at top', 'hide']], + '4chan Banner Reflection': [false, 'Adds reflection effects to 4chan\'s image banner.'], + 'Faded 4chan Banner': [true, 'Make 4chan\'s image banner translucent.'], + 'Icon Orientation': ['horizontal', 'Change the orientation of the appchan x icons.', ['horizontal', 'vertical']], + 'Slideout Watcher': [true, 'Adds an icon you can hover over to show the watcher, as opposed to having the watcher always visible.'], + 'Updater Position': ['top', 'The position of 4chan thread updater and stats', ['top', 'bottom', 'moveable']] + }, + Posts: { + 'Alternate Post Colors': [false, 'Make post background colors alternate every other post.'], + 'Color Reply Headings': [false, 'Give the post info a background.'], + 'Color File Info': [false, 'Give the file info a background.'], + 'OP Background': [false, 'Adds a border and background color to the OP Post, as if it were a reply.'], + 'Backlinks Position': ['default', 'The position of backlinks in relation to the post.', ['default', 'lower left', 'lower right']], + 'Sage Highlighting': ['image', 'Icons or text to highlight saged posts.', ['text', 'image', 'none']], + 'Sage Highlight Position': ['after', 'Position of Sage Highlighting', ['before', 'after']], + 'Filtered Backlinks': [true, 'Mark backlinks to filtered posts.'], + 'Force Reply Break': [false, 'Force replies to occupy their own line and not be adjacent to the OP image.'], + 'Fit Width Replies': [true, 'Replies fit the entire width of the page.'], + 'Hide Delete UI': [false, 'Hides vanilla report and delete functionality and UI. This does not affect Appchan\'s Menu functionality.'], + 'Post Spacing': ['2', 'The amount of space between replies.', 'text'], + 'Vertical Post Padding': ['5', 'The vertical padding around post content of replies.', 'text'], + 'Horizontal Post Padding': ['20', 'The horizontal padding around post content of replies.', 'text'], + 'Hide Horizontal Rules': [false, 'Hides lines between threads.'], + 'Images Overlap Post Form': [true, 'Images expand over the post form and sidebar content, usually used with "Expand images" set to "full".'] + }, + Aesthetics: { + '4chan SS Navigation': [false, 'Try to emulate the appearance of 4chan SS\'s Navigation.'], + '4chan SS Sidebar': [false, 'Try to emulate the appearance of 4chan SS\'s Sidebar.'], + 'Block Ads': [false, 'Block advertisements. It\'s probably better to use AdBlock for this.'], + 'Shrink Ads': [false, 'Make 4chan advertisements smaller.'], + 'Bolds': [true, 'Bold text for names and such.'], + 'Italics': [false, 'Give tripcodes italics.'], + 'Sidebar Glow': [false, 'Adds a glow to the sidebar\'s text.'], + 'Circle Checkboxes': [false, 'Make checkboxes circular.'], + 'Custom CSS': [false, 'Add (more) custom CSS to Appchan X'], + 'Emoji': ['enabled', 'Enable emoji', ['enabled', 'disable ponies', 'only ponies', 'disable']], + 'Emoji Position': ['before', 'Position of emoji icons, like sega and neko.', ['before', 'after']], + 'Emoji Spacing': ['5', 'Add some spacing between emoji and text.', 'text'], + 'Font': ['sans-serif', 'The font used by all elements of 4chan.', 'text'], + 'Font Size': ['12', 'The font size of posts and various UI. This changes most, but not all, font sizes.', 'text'], + 'Icons': ['oneechan', 'Icon theme which Appchan will use.', ['oneechan', '4chan SS']], + 'Invisible Icons': [false, 'Makes icons invisible unless hovered. Invisible really is "invisible", so don\'t use it if you don\'t have your icons memorized or don\'t use keybinds.'], + 'Quote Shadows': [true, 'Add shadows to the quote previews and inline quotes.'], + 'Rounded Edges': [false, 'Round the edges of various 4chan elements.'], + 'Underline Links': [false, 'Put lines under hyperlinks.'], + 'NSFW/SFW Themes': [false, 'Choose your theme based on the SFW status of the board you are viewing.'] + }, + Mascots: { + 'Mascots': [true, 'Add a pretty picture of your waifu to Appchan.'], + 'Mascot Location': ['sidebar', 'Change where your mascot is located.', ['sidebar', 'opposite']], + 'Mascot Position': ['default', 'Change where your mascot is placed in relation to the post form.', ['above post form', 'default', 'bottom']], + 'Mascots Overlap Posts': [true, 'Mascots overlap threads and posts.'], + 'NSFW/SFW Mascots': [false, 'Enable or disable mascots based on the SFW status of the board you are viewing.'], + 'Grayscale Mascots': [false, 'Force mascots to be monochrome.'], + 'Mascot Opacity': ['1.00', 'Make Mascots transparent.', 'text'], + 'Hide Mascots on Catalog': [false, 'Do not show mascots on the official catalog pages.'] + }, + Navigation: { + 'Boards Navigation': ['sticky top', 'The position of 4chan board navigation', ['sticky top', 'sticky bottom', 'top', 'hide']], + 'Navigation Alignment': ['center', 'Change the text alignment of the navigation.', ['left', 'center', 'right']], + 'Slideout Navigation': ['compact', 'How the slideout navigation will be displayed.', ['compact', 'list', 'hide']], + 'Pagination': ['sticky bottom', 'The position of 4chan page navigation', ['sticky top', 'sticky bottom', 'top', 'bottom', 'on side', 'hide']], + 'Pagination Alignment': ['center', 'Change the text alignment of the pagination.', ['left', 'center', 'right']], + 'Hide Navigation Decorations': [false, 'Hide non-link text in the board navigation and pagination. This also disables the delimiter in Custom Navigation'] + }, + 'Post Form': { + 'Compact Post Form Inputs': [true, 'Use compact inputs on the post form.'], + 'Hide Show Post Form': [false, 'Hides the "Show Post Form" button when Persistent QR is disabled.'], + 'Show Post Form Header': [false, 'Force the Post Form to have a header.'], + 'Post Form Style': ['tabbed slideout', 'How the post form will sit on the page.', ['fixed', 'slideout', 'tabbed slideout', 'transparent fade', 'float']], + 'Post Form Slideout Transitions': [true, 'Animate slideouts for the post form.'], + 'Post Form Decorations': [false, 'Add a border and background to the post form (does not apply to the "float" post form style.'], + 'Textarea Resize': ['vertical', 'Options to resize the post form\'s comment box.', ['both', 'horizontal', 'vertical', 'none']], + 'Tripcode Hider': [true, 'Intelligent name field hiding.'] + } + }, filter: { name: "# Filter any namefags:\n#/^(?!Anonymous$)/", uniqueID: "# Filter a specific ID:\n#/Txhvk1Tl/", @@ -196,13 +285,23 @@ 'Optional Increase': [false, 'Increase the intervals between updates on threads without new posts.'] }, 'Interval': 30 - } + }, + embedWidth: 640, + embedHeight: 390, + theme: 'Yotsuba B', + mascot: '' }; - if (!/^(boards|images|sys)\.4chan\.org$/.test(location.hostname)) { + if (!/^[a-z]+\.4chan\.org$/.test(location.hostname)) { return; } + editTheme = {}; + + editMascot = {}; + + userNavigation = {}; + Conf = {}; c = console; @@ -214,11 +313,2101 @@ g = { VERSION: '2.0.0', NAMESPACE: 'appchan-x.', + TYPE: 'sfw', boards: {}, threads: {}, posts: {} }; + Mascots = { + 'Akiyama_Mio': { + category: 'Anime', + image: 'https://i.minus.com/ibrWLbKvjRnHZS.png' + }, + 'Akiyama_Mio_2': { + category: 'Anime', + image: 'https://i.minus.com/ibmZgHvl3ZSxYk.png' + }, + 'Akiyama_Mio_3': { + category: 'Anime', + image: 'https://i.minus.com/irFbpefCFt1cT.png', + center: true + }, + 'Akiyama_Mio_sitting': { + category: 'Questionable', + image: 'https://i.minus.com/ibnnAPmolhTfE7.png' + }, + 'Anime_Girl_in_Bondage': { + category: 'Questionable', + image: 'https://i.minus.com/ibbfIrZEoNLmiU.png', + center: true + }, + 'Anime_Girl_in_Bondage_2': { + category: 'Questionable', + image: 'http://i.minus.com/iGRED5sHh4RMs.png', + center: true + }, + 'Applejack': { + category: 'Ponies', + image: 'https://i.minus.com/inZ8jSVsEhfnC.png', + center: true + }, + 'Asuka_Langley_Soryu': { + category: 'Anime', + image: 'https://i.minus.com/ib2z9ME9QKEBaS.png', + center: true + }, + 'Asuka_Langley_Soryu_2': { + category: 'Anime', + image: 'https://i.minus.com/iI3QR5SywNfg9.png', + center: true + }, + 'Asuka_Langley_Soryu_3': { + category: 'Anime', + image: 'https://i.minus.com/ibwjj4dLtiADla.png', + center: true + }, + 'Asuka_Langley_Soryu_4': { + category: 'Anime', + image: 'https://i.minus.com/ibiiInQGLGnYNj.png', + center: true + }, + 'Asuka_Langley_Soryu_5': { + category: 'Questionable', + image: 'https://i.minus.com/iJq4VXY1Gw8ZE.png', + center: true + }, + 'Asuka_Langley_Soryu_6': { + category: 'Anime', + image: 'https://i.minus.com/ibzbnBcaEtoqck.png', + position: 'bottom' + }, + 'Ayanami_Rei': { + category: 'Anime', + image: 'https://i.minus.com/ib0ft5OmqRZx2r.png', + center: true + }, + 'Ayase_Yue': { + category: 'Questionable', + image: 'https://i.minus.com/ign5fGOZWTx5o.png' + }, + 'Ayase': { + category: 'Anime', + image: 'https://i.minus.com/ibmArq5Wb4Po4v.png', + center: true + }, + 'Ayase_2': { + category: 'Questionable', + image: 'https://i.minus.com/ibjUbDLSU5pwhK.png', + center: true + }, + 'BLACK_ROCK_SHOOTER': { + category: 'Anime', + image: 'https://i.minus.com/ibMe9MrTMdvAT.png', + center: true + }, + 'Blue_Rose': { + category: 'Questionable', + image: 'https://i.minus.com/ibiq1joMemfzeM.png', + center: true + }, + 'Brioche_d_Arquien': { + category: 'Anime', + image: 'https://i.minus.com/ibobXYJ2k3JXK.png', + center: true + }, + 'CC': { + category: 'Anime', + image: 'https://i.minus.com/iwndO4Pn6SO0X.png', + center: true + }, + 'CC2': { + category: 'Questionable', + image: 'https://i.minus.com/iVT3TjJ7lBRpl.png', + center: true + }, + 'Chie': { + category: 'Anime', + image: 'https://i.minus.com/ib0HI16h9FSjSp.png', + center: true + }, + 'Cirno': { + category: 'Questionable', + image: 'https://i.minus.com/ibffjW5v0zrSGa.png', + center: true + }, + 'Cirno_2': { + category: 'Anime', + image: 'https://i.minus.com/iSZ06ZxrcqAKq.png', + center: true + }, + 'Dawn_Hikari': { + category: 'Anime', + image: 'https://i.minus.com/iL3J1EmcDkFzE.png', + center: true + }, + 'Doppleganger': { + category: 'Anime', + image: 'https://i.minus.com/iPvv86W9r3Rxm.png' + }, + 'Dragonkid': { + category: 'Anime', + image: 'https://i.minus.com/iq9fuyWSjIDWf.png', + center: true + }, + 'Dragonkid_2': { + category: 'Anime', + image: 'https://i.minus.com/i7sdxK3G12RB6.png', + center: true + }, + 'Eclair': { + category: 'Anime', + image: 'https://i.minus.com/ibsk5mMYVR5zuA.png', + center: true + }, + 'Erio_Touwa': { + category: 'Questionable', + image: 'https://i.minus.com/in8bF152Y9qVB.png' + }, + 'Evangeline_AK_McDowell': { + category: 'Anime', + image: 'https://i.minus.com/ibuq7a8zWKi2gl.png', + center: true + }, + 'Fluttershy': { + category: 'Ponies', + image: 'https://i.minus.com/ibwEFEGlRm0Uxy.png' + }, + 'Fluttershy_2': { + category: 'Ponies', + image: 'https://i.minus.com/ibjtz6EU2OFPgh.png', + center: true + }, + 'Fluttershy_Cutiemark': { + category: 'Ponies', + image: 'https://i.minus.com/i5WVpIAlHQdhs.png', + center: true + }, + 'Fujiwara_no_Mokou': { + category: 'Anime', + image: 'https://i.minus.com/ibpwDyMGodvni6.png' + }, + 'Furudo_Erika': { + category: 'Anime', + image: 'https://i.minus.com/iCrRzQ8WvHiSM.png', + center: true + }, + 'Gally': { + category: 'Anime', + image: 'https://i.minus.com/iblWZGuSlWtDI6.png', + center: true + }, + 'Gasai_Yuno': { + category: 'Anime', + image: 'https://i.minus.com/iEQsK6K85jX2n.png' + }, + 'Gasai_Yuno_2': { + category: 'Questionable', + image: 'https://i.minus.com/ifyPk7Yeo1JA7.png' + }, + 'George_Costanza': { + category: 'Western', + image: 'https://i.minus.com/iFWdpFGfzLs6v.png' + }, + 'Hanako': { + category: 'Anime', + image: 'https://i.minus.com/iRLF8gCIZbGjo.png', + center: true + }, + 'Hasekura_Youko': { + category: 'Anime', + image: 'https://i.minus.com/iqBTFZf5UhLpR.png', + center: true + }, + 'Hatsune_Miku': { + category: 'Questionable', + image: 'https://i.minus.com/iHuUwYVywpp3Z.png' + }, + 'Hatsune_Miku_2': { + category: 'Questionable', + image: 'https://i.minus.com/iclhgYeHDD77I.png', + center: true + }, + 'Hatsune_Miku_3': { + category: 'Anime', + image: 'https://i.minus.com/iLJ4uDTcg1T8r.png', + center: true + }, + 'Hatsune_Miku_4': { + category: 'Anime', + image: 'https://i.minus.com/ibjkPMLT8Uxitp.png', + center: true + }, + 'Hatsune_Miku_5': { + category: 'Anime', + image: 'https://i.minus.com/i9Evu9dyvok4G.png', + center: true + }, + 'Hatsune_Miku_6': { + category: 'Questionable', + image: 'https://i.minus.com/iQzx9fPFgPUNl.png', + center: true + }, + 'Hatsune_Miku_7': { + category: 'Questionable', + image: 'https://i.minus.com/iDScshaEZqUuy.png', + center: true + }, + 'Hirasawa_Yui': { + category: 'Anime', + image: 'https://i.minus.com/iuGe5uDaTNmhR.png', + center: true + }, + 'Homura_Akemi': { + category: 'Anime', + image: 'https://i.minus.com/iPtrwFEEtPLhn.png' + }, + 'Horo': { + category: 'Silhouette', + image: ['https://i.minus.com/i429JguITUibN.png', 'https://i.minus.com/icpvfMuZEQCtS.png'] + }, + 'Horo_2': { + category: 'Silhouette', + image: ['https://i.minus.com/ibv270koIdRjm7.png', 'https://i.minus.com/iPM4lDD53yB5n.png'] + }, + 'Horo_3': { + category: 'Questionable', + image: 'http://i.minus.com/ibyT9dlTe1HN5P.png' + }, + 'Horo_4': { + category: 'Questionable', + image: 'http://i.minus.com/ibbMKiznORGJ00.png' + }, + 'Ika_Musume': { + category: 'Anime', + image: 'https://i.minus.com/ibqVu5GNfKx5bC.png', + center: true + }, + 'Ika_Musume_2': { + category: 'Anime', + image: 'https://i.minus.com/ibhnEiE8HabEqC.png', + center: true + }, + 'Ika_Musume_3': { + category: 'Questionable', + image: 'https://i.minus.com/iby8LyjXffukaI.png', + center: true + }, + 'Inori': { + category: 'Questionable', + image: 'https://i.minus.com/ibpHKNPxcFqRxs.png' + }, + 'Inori_2': { + category: 'Questionable', + image: 'https://i.minus.com/ibzM531DBaHYXD.png' + }, + 'Iwakura_Lain': { + category: 'Anime', + image: 'https://i.minus.com/iBXRRT19scoHf.png', + center: true + }, + 'Iwakura_Lain_2': { + category: 'Anime', + image: 'https://i.minus.com/ioMltWNYUWeJ3.png', + center: true + }, + 'KOn_Girls': { + category: 'Anime', + image: 'https://i.minus.com/ibndVLiH09uINs.png', + center: true + }, + 'Kagamine_Rin': { + category: 'Questionable', + image: 'https://i.minus.com/iVPKJeDXKPKeV.png', + center: true + }, + 'Kagamine_Rin_2': { + category: 'Anime', + image: 'https://i.minus.com/jbkL01TIeJwEN6.png' + }, + 'Kagari_Izuriha': { + category: 'Anime', + image: 'https://i.minus.com/ihaFHsvFfL0vH.png' + }, + 'Kaname_Madoka': { + category: 'Anime', + image: 'https://i.minus.com/iRuEFK8cdAHxB.png', + center: true + }, + 'Karina': { + category: 'Anime', + image: 'https://i.minus.com/iUADBOpQYPfeP.png', + center: true + }, + 'Kigurumi_Harokitei': { + category: 'Anime', + image: 'https://i.minus.com/ibb17W5i3rQvut.png', + center: true + }, + 'Kinomoto_Sakura': { + category: 'Anime', + image: 'https://i.minus.com/iVmsLKa4zLwZR.png', + center: true + }, + 'Kinomoto_Sakura_2': { + category: 'Questionable', + image: 'https://i.minus.com/ibklztjz3Ua747.png', + center: true + }, + 'Kirisame_Marisa': { + category: 'Anime', + image: 'https://i.minus.com/ibikDZH5CZ0V30.png' + }, + 'Kirino_Kosaka_and_Ruri_Goko': { + category: 'Questionable', + image: 'https://i.minus.com/isIzggtfUo4ql.png', + center: true + }, + 'Koiwai_Yotsuba': { + category: 'Anime', + image: 'https://i.minus.com/iKFKyVVBato2N.png', + center: true + }, + 'Koko': { + category: 'Anime', + image: 'https://i.minus.com/ieVyNMSjXpBs2.png', + center: true + }, + 'Konjiki_no_Yami': { + category: 'Questionable', + image: 'https://i.minus.com/imy7iv5fuym8b.png', + position: 'bottom' + }, + 'Kotobuki_Tsumugi': { + category: 'Anime', + image: 'https://i.minus.com/i6doAUnM6jMAY.png', + center: true + }, + 'Kurisu_Makise': { + category: 'Anime', + image: 'https://i.minus.com/ib1eMtRHdvc9ix.png' + }, + 'Kuroko_Shirai': { + category: 'Anime', + image: 'https://i.minus.com/i3K8F7lu2SHfn.png' + }, + 'Kyouko_Sakura': { + category: 'Anime', + image: 'https://i.minus.com/iMrFOS1mfzIJP.png', + center: true + }, + 'Kyubee': { + category: 'Anime', + image: 'https://i.minus.com/iD0SEJPeZa0Dw.png' + }, + 'Kyubee_2': { + category: 'Anime', + image: 'https://i.minus.com/iGlKiDZvM3xi8.png', + center: true + }, + 'Leonmitchelli': { + category: 'Questionable', + image: 'https://i.minus.com/ibgUFGlOpedfbs.png', + center: true + }, + 'Li_Syaoran': { + category: 'Anime', + image: 'https://i.minus.com/ib0IWPBRSHyiDe.png' + }, + 'Link': { + category: 'Anime', + image: 'https://i.minus.com/ibd1JShAMTdJBH.png', + center: true + }, + 'Lizardgirl': { + category: 'Anime', + image: 'https://i.minus.com/is7h27Q6lsmyx.png' + }, + 'Luka': { + category: 'Anime', + image: 'https://i.minus.com/inds5h2BOmVBy.png' + }, + 'Madotsuki': { + category: 'Anime', + image: 'https://i.minus.com/ik6QYfTfgx9Za.png' + }, + 'Makoto': { + category: 'Anime', + image: 'https://i.minus.com/i7q6aOuUqqA9F.png', + center: true + }, + 'Mantis': { + category: 'Anime', + image: 'https://i.minus.com/iBmluUJOZivY2.png' + }, + 'Megurine_Luka': { + category: 'Anime', + image: 'https://i.minus.com/ibxe63yidpz9Gz.png', + center: true + }, + 'Mei_Sunohara': { + category: 'Anime', + image: 'https://i.minus.com/i7ElzNY4xQHHz.png', + center: true + }, + 'Millefiori': { + category: 'Anime', + image: 'https://i.minus.com/ifVzPtH8JHXjl.png', + center: true + }, + 'Millefiori_2': { + category: 'Anime', + image: 'https://i.minus.com/iMSUiQxRBylQG.png', + center: true + }, + 'Millefiori_3': { + category: 'Anime', + image: 'https://i.minus.com/iDOe3ltSvOYXZ.png', + center: true + }, + 'Misaki_Mei': { + category: 'Anime', + image: 'https://i.minus.com/icmYGJ9vIOFjr.png', + center: true + }, + 'Mizunashi_Akari': { + category: 'Anime', + image: 'https://i.minus.com/iNy9kHlNsUoVK.png', + center: true + }, + 'Motoko': { + category: 'Anime', + image: 'https://i.minus.com/irFtkWWyMChSA.png', + center: true + }, + 'Nagato_Yuki': { + category: 'Anime', + image: 'https://i.minus.com/it3pEawWIxY84.png', + center: true + }, + 'Nagato_Yuki_2': { + category: 'Anime', + image: 'https://i.minus.com/iuspcZbLvmqpb.png', + center: true + }, + 'Nagato_Yuki_3': { + category: 'Anime', + image: 'https://i.minus.com/ibndIkldw4njbD.png', + center: true + }, + 'Nagato_Yuki_4': { + category: 'Questionable', + image: 'https://i.minus.com/i92tUr90OVZGD.png', + center: true + }, + 'Nagato_Yuki_5': { + category: 'Silhouette', + image: ['https://i.minus.com/iW0iHUkHwu44d.png', 'https://i.minus.com/i859zL9JXZLbD.png'], + center: true + }, + 'Nagato_Yuki_6': { + category: 'Silhouette', + image: ['https://i.minus.com/iJdxNEMekrQjp.png', 'https://i.minus.com/ibbHeuocMgN5Eu.png'], + center: true + }, + 'Nagato_Yuki_7': { + category: 'Questionable', + image: 'http://i.minus.com/iFQQPEaC3aEV7.png' + }, + 'Nakano_Azusa': { + category: 'Anime', + image: 'https://i.minus.com/iiptfoMlr4v1k.png' + }, + 'Nodoka_Miyazaki': { + category: 'Questionable', + image: 'http://i.minus.com/iDX5mImKBzrXK.png' + }, + 'Nichijou': { + category: 'Anime', + image: 'https://i.minus.com/iE8lbZ5f3OT2B.png' + }, + 'Noir_VinoCacao': { + category: 'Anime', + image: 'https://i.minus.com/ibo8aCWF0OwNwP.png', + center: true + }, + 'Pinkie_Pie': { + category: 'Ponies', + image: 'https://i.minus.com/ib1kcpqxvsyZWG.png', + center: true + }, + 'Pinkie_Pie_2': { + category: 'Ponies', + image: 'https://i.minus.com/i8QRRgE7iKpw7.png', + center: true + }, + 'Oshino_Shinobu': { + category: 'Anime', + image: 'https://i.minus.com/ibwhAyR6D7OBAB.png' + }, + 'Oshino_Shinobu_2': { + category: 'Anime', + image: 'https://i.minus.com/ibqoNiWzynsVvg.png', + position: 'bottom' + }, + 'Patchouli_Knowledge': { + category: 'Anime', + image: 'https://i.minus.com/ibnOEAxXaKlctB.png', + center: true + }, + 'Patchouli_Knowledge_2': { + category: 'Anime', + image: 'https://i.minus.com/i1MOPTmohOsMD.png' + }, + 'Pink_Doggy': { + category: 'Anime', + image: 'https://i.minus.com/i1SpWAzfcIEQc.png', + center: true + }, + 'Pink_Hair': { + category: 'Anime', + image: 'https://i.minus.com/ibdwMaIPwdscao.png', + center: true + }, + 'Pixie': { + category: 'Questionable', + image: 'https://i.minus.com/ipRzX1YsTyhgZ.png', + center: true + }, + 'Railgun': { + category: 'Questionable', + image: 'https://i.minus.com/iysolfmvz6WKs.png', + center: true + }, + 'Railgun_2': { + category: 'Anime', + image: 'https://i.minus.com/iNhpDDO0GSTeM.png', + center: true + }, + 'Railgun_3': { + category: 'Anime', + image: 'https://i.minus.com/iiW02dmqUwRcy.png' + }, + 'Railgun_4': { + category: 'Anime', + image: 'https://i.minus.com/iR3j0mGgd1927.png', + center: true + }, + 'Rainbow_Dash': { + category: 'Ponies', + image: 'https://i.minus.com/ibthr5EDMZHV9j.png', + center: true + }, + 'Rarity': { + category: 'Ponies', + image: 'https://i.minus.com/ibkraGhhUh25CU.png', + center: true + }, + 'Revi': { + category: 'Anime', + image: 'https://i.minus.com/ivUMKcy5ow6Ab.png', + position: 'bottom', + center: true + }, + 'Ruri_Gokou': { + category: 'Anime', + image: 'https://i.minus.com/ibtZo1fdOk8NCB.png', + position: 'bottom', + center: true + }, + 'Ryuu': { + category: 'Anime', + image: 'https://i.minus.com/iecVz4p2SuqK4.png', + position: 'bottom' + }, + 'Saber': { + category: 'Questionable', + image: 'https://i.minus.com/i62cv3csQaqgk.png', + center: true + }, + 'Sakurazaki_Setsuna': { + category: 'Questionable', + image: 'https://i.minus.com/iHS6559NMU1tS.png' + }, + 'Samus_Aran': { + category: 'Anime', + image: 'https://i.minus.com/iWG1GFJ89A05p.png', + center: true + }, + 'Samus_Aran_2': { + category: 'Anime', + image: 'http://i.minus.com/ibl4efsNtHpkXg.png' + }, + 'Seraphim': { + category: 'Questionable', + image: 'https://i.minus.com/ivHaKIFHRpPFP.png', + center: true + }, + 'Shana': { + category: 'Anime', + image: 'https://i.minus.com/ib2cTJMF0cYIde.png', + center: true + }, + 'Shana_2': { + category: 'Anime', + image: 'https://i.minus.com/ioRICGu0Ipzj9.png', + center: true + }, + 'Shiki': { + category: 'Anime', + image: 'https://i.minus.com/iIZm1JxxDIDQ1.png' + }, + 'Shinji_and_Girls': { + category: 'Anime', + image: 'https://i.minus.com/itMrEn56GzvzE.png', + center: true + }, + 'Shinonome_Hakase': { + category: 'Anime', + image: 'https://i.minus.com/iocCwDCnNgI19.png', + center: true + }, + 'Shirakiin_Ririchiyo': { + category: 'Anime', + image: 'https://i.minus.com/i1m0rdzmVLYLa.png', + position: 'bottom', + center: true + }, + 'Shirohibe': { + category: 'Anime', + image: 'https://i.minus.com/iGu91k3KZeg00.png', + position: 'bottom' + }, + 'Suruga_Kanbaru': { + category: 'Anime', + image: 'https://i.minus.com/irEL7AgC80qKD.png', + center: true + }, + 'Suzumiya_Haruhi': { + category: 'Anime', + image: 'https://i.minus.com/iM9qMfUNh9Qi9.png', + center: true + }, + 'Suzumiya_Haruhi_2': { + category: 'Anime', + image: 'https://i.minus.com/ibnomd5iasjceY.png', + center: true + }, + 'Tardis': { + category: 'Western', + image: 'https://i.minus.com/iQL2bwpDfOgk.png', + center: true + }, + 'Teletha_Tessa_Testarossa': { + category: 'Questionable', + image: 'https://i.minus.com/iQKrg7Pq7Y6Ed.png' + }, + 'Rukia_Nia_and_Asa': { + category: 'Questionable', + image: 'http://i.minus.com/icECBJR5D5U4S.png' + }, + 'Tewi_Inaba': { + category: 'Anime', + image: 'https://i.minus.com/ib2k9lwQIkmb66.png' + }, + 'Tifa': { + category: 'Questionable', + image: 'https://i.minus.com/inDzKQ0Wck4ef.png', + center: true + }, + 'Tomozo_Kaoru': { + category: 'Anime', + image: 'https://i.minus.com/islUcBaPRYAgv.png', + center: true + }, + 'Twilight_Sparkle': { + category: 'Ponies', + image: 'https://i.minus.com/ibnMYVTZEykrKU.png', + center: true + }, + 'Udine': { + category: 'Questionable', + image: 'https://i.minus.com/iiycujRmhn6QK.png', + position: 'bottom' + }, + 'Wanwan': { + category: 'Questionable', + image: 'https://i.minus.com/iTdBWYMCXULLT.png', + center: true + }, + 'White_Curious': { + category: 'Anime', + image: 'https://i.minus.com/ibfkj5osu99axe.png', + center: true + }, + 'Yakumo_Ran': { + category: 'Anime', + image: 'https://i.minus.com/ivKqn8vL9A8cQ.png' + }, + 'Yin': { + category: 'Anime', + image: 'https://i.minus.com/iL9DlVtaAGFdq.png' + }, + 'Yin_2': { + category: 'Anime', + image: 'https://i.minus.com/izkTpyjr1XlLR.png', + center: true + }, + 'Yoko_Littner': { + category: 'Questionable', + image: 'https://i.minus.com/i0mtOEsBC9GlY.png' + }, + 'Yoko_Littner_2': { + category: 'Anime', + image: 'https://i.minus.com/i7aUDY4h9uB1T.png', + center: true + }, + 'Yoko_Littner_3': { + category: 'Anime', + image: 'https://i.minus.com/iYVd5DhCmB7VJ.png', + center: true + }, + 'Yozora_Mikazuki': { + category: 'Anime', + image: 'https://i.minus.com/iIFEsDzoDALQd.png' + }, + 'Yuzuki_Yukari': { + category: 'Anime', + image: 'https://i.minus.com/iYQOz0iGM9ygq.png', + center: true + }, + 'Yukkikaze': { + category: 'Anime', + image: 'https://i.minus.com/ioQJAnyXebHDJ.png', + center: true + }, + 'Yukkihaze_2': { + category: 'Anime', + image: 'https://i.minus.com/inpgaDlJtZ9Sc.png', + center: true + } + }; + + Themes = { + 'AppChan': { + 'Author': 'Zixaphir', + 'Author Tripcode': '!..NoTrip..', + 'Background Color': 'rgba(44,44,44,1)', + 'Thread Wrapper Background': 'rgba(0,0,0,0)', + 'Thread Wrapper Border': 'rgba(0,0,0,0)', + 'Dialog Background': 'rgba(44,44,44,1)', + 'Dialog Border': 'rgba(44,44,44,1)', + 'Reply Background': 'rgba(51,51,51,1)', + 'Reply Border': 'rgba(51,51,51,1)', + 'Highlighted Reply Background': 'rgba(57,57,57,1)', + 'Highlighted Reply Border': 'rgba(57,57,57,1)', + 'Backlinked Reply Outline': 'rgba(98,124,141,1)', + 'Input Background': 'rgba(51,51,51,1)', + 'Input Border': 'rgba(51,51,51,1)', + 'Checkbox Background': 'rgba(68,68,68,1)', + 'Checkbox Border': 'rgba(68,68,68,1)', + 'Checkbox Checked Background': 'rgba(17,17,17,1)', + 'Buttons Background': 'rgba(48,48,48,1)', + 'Buttons Border': 'rgba(48,48,48,1)', + 'Focused Input Background': 'rgba(63,63,63,1)', + 'Focused Input Border': 'rgba(63,63,63,1)', + 'Hovered Input Background': 'rgba(57,57,57,1)', + 'Hovered Input Border': 'rgba(57,57,57,1)', + 'Navigation Background': 'rgba(44,44,44,0.9)', + 'Navigation Border': 'rgba(44,44,44,0.9)', + 'Quotelinks': 'rgb(79,95,143)', + 'Backlinks': 'rgb(79,95,143)', + 'Links': 'rgb(102,136,170)', + 'Hovered Links': 'rgb(78,110,142)', + 'Navigation Links': 'rgb(170,170,170)', + 'Hovered Navigation Links': 'rgb(78,110,142)', + 'Names': 'rgb(170,170,170)', + 'Tripcodes': 'rgb(170,170,170)', + 'Emails': 'rgb(102,136,170)', + 'Subjects': 'rgb(144,144,144)', + 'Text': 'rgb(170,170,170)', + 'Inputs': 'rgb(170,170,170)', + 'Post Numbers': 'rgb(102,136,170)', + 'Greentext': 'rgb(120,153,34)', + 'Sage': 'rgb(150,150,150)', + 'Board Title': 'rgb(170,170,170)', + 'Timestamps': 'rgb(170,170,170)', + 'Warnings': 'rgb(102,136,170)', + 'Shadow Color': 'rgba(0,0,0,.1)', + 'Custom CSS': '' + }, + 'BakaBT': { + 'Author': 'seaweed', + 'Author Tripcode': '!POMF.9waa', + 'Background Image': 'url("http://i.imgur.com/rTkxi.jpg")', + 'Background Attachment': 'fixed', + 'Background Position': '20px 20px', + 'Background Repeat': 'repeat', + 'Background Color': 'rgba(238,238,238,1)', + 'Thread Wrapper Background': 'rgba(255,255,255,1)', + 'Thread Wrapper Border': 'rgba(204,204,204,1)', + 'Dialog Background': 'rgba(238,221,255,1)', + 'Dialog Border': 'rgba(238,221,255,1)', + 'Reply Background': 'rgba(238,221,255,1)', + 'Reply Border': 'rgba(209,162,255,1)', + 'Highlighted Reply Background': 'rgba(238,221,255,1)', + 'Highlighted Reply Border': 'rgba(209,162,255,1)', + 'Backlinked Reply Outline': 'rgba(204,101,99,1)', + 'Input Background': 'rgba(255,255,255,1)', + 'Input Border': 'rgba(204,204,204,1)', + 'Checkbox Background': 'rgba(255,255,238,1)', + 'Checkbox Border': 'rgba(204,204,204,1)', + 'Checkbox Checked Background': 'rgba(188,192,212,1)', + 'Buttons Background': 'rgba(255,255,255,1)', + 'Buttons Border': 'rgba(204,204,204,1)', + 'Focused Input Background': 'rgba(255,255,255,1)', + 'Focused Input Border': 'rgba(209,162,255,1)', + 'Hovered Input Background': 'rgba(238,221,255,1)', + 'Hovered Input Border': 'rgba(204,204,204,1)', + 'Navigation Background': 'rgba(255,255,255,0.8)', + 'Navigation Border': 'rgba(255,255,255,0.8)', + 'Quotelinks': 'rgb(146,92,141)', + 'Backlinks': 'rgb(146,92,141)', + 'Links': 'rgb(133,76,158)', + 'Hovered Links': 'rgb(198,23,230)', + 'Navigation Links': 'rgb(17,17,17)', + 'Hovered Navigation Links': 'rgb(198,23,230)', + 'Names': 'rgb(133,76,158)', + 'Tripcodes': 'rgb(146,92,141)', + 'Emails': 'rgb(133,76,158)', + 'Subjects': 'rgb(17,17,17)', + 'Text': 'rgb(0,0,0)', + 'Inputs': 'rgb(0,0,0)', + 'Post Numbers': 'rgb(146,92,141)', + 'Greentext': 'rgb(129,153,65)', + 'Sage': 'rgb(146,92,141)', + 'Board Title': 'rgb(133,76,158)', + 'Timestamps': 'rgb(0,0,0)', + 'Warnings': 'rgb(133,76,158)', + 'Shadow Color': 'rgba(0,0,0,.05)', + 'Custom CSS': ".board {\n box-shadow: 0px 10px 10px 2px rgba(128,128,128,0.5);\n border-radius: 3px;\n}\n.thread {\n padding:10px;\n}\n#options.reply.dialog,\n#options .dialog {\n background-color:#FFF;\n color:#000;\n border:2px solid #CCC;\n}\n#options ul {\n border-bottom:1px solid #DBD8D2;\n}\n#options ul:last-of-type{\n border:none;\n}\n#qp div.post{\n background-color:rgba(255,255,255,0.9);\n border:1px solid #D1A2FF;\n color:#000;\n}" + }, + 'Blackberry Jam': { + 'Author': 'seaweed', + 'Author Tripcode': '!POMF.9waa', + 'Dialog Background': 'rgba(27,27,27,1)', + 'Dialog Border': 'rgba(27,27,27,1)', + 'Background Color': 'rgba(45,45,45,1)', + 'Thread Wrapper Background': 'rgba(0,0,0,0)', + 'Thread Wrapper Border': 'rgba(0,0,0,0)', + 'Reply Background': 'rgba(27,27,27,1)', + 'Reply Border': 'rgba(38,38,38,1)', + 'Highlighted Reply Background': 'rgba(17,17,17,1)', + 'Highlighted Reply Border': 'rgba(17,17,17,1)', + 'Backlinked Reply Outline': 'rgba(103,204,232,1)', + 'Checkbox Background': 'rgba(51,51,51,1)', + 'Checkbox Border': 'rgba(51,51,51,1)', + 'Input Background': 'rgba(27,27,27,1)', + 'Input Border': 'rgba(27,27,27,1)', + 'Focused Input Background': 'rgba(27,27,27,1)', + 'Focused Input Border': 'rgba(27,27,27,1)', + 'Hovered Input Background': 'rgba(17,17,17,1)', + 'Hovered Input Border': 'rgba(17,17,17,1)', + 'Checkbox Checked Background': 'rgba(17,17,17,1)', + 'Buttons Background': 'rgba(27,27,27,1)', + 'Buttons Border': 'rgba(27,27,27,1)', + 'Navigation Background': 'rgba(45,45,45,0.9)', + 'Navigation Border': 'rgba(45,45,45,0.9)', + 'Links': 'rgb(218,105,224)', + 'Hovered Links': 'rgb(255,0,255)', + 'Navigation Links': 'rgb(241,241,241)', + 'Hovered Navigation Links': 'rgb(255,0,255)', + 'Subjects': 'rgb(241,241,241)', + 'Names': 'rgb(103,204,232)', + 'Sage': 'rgb(103,204,232)', + 'Tripcodes': 'rgb(103,204,232)', + 'Emails': 'rgb(218,105,224)', + 'Post Numbers': 'rgb(218,105,224)', + 'Text': 'rgb(241,241,241)', + 'Quotelinks': 'rgb(223,153,247)', + 'Backlinks': 'rgb(223,153,247)', + 'Greentext': 'rgb(108,204,102)', + 'Board Title': 'rgb(103,204,232)', + 'Timestamps': 'rgb(218,105,224)', + 'Inputs': 'rgb(218,105,224)', + 'Warnings': 'rgb(103,204,232)', + 'Shadow Color': 'rgba(0,0,0,.1)', + 'Custom CSS': ".reply.post {\n box-shadow: inset 0px 1px 2px 1px #111;\n}\n#qr {\n box-shadow: none;\n}\n#qr textarea,\n#qr input[name=\"name\"],\n#qr input[name=\"email\"],\n#qr input[name=\"sub\"],\n#qr input[title=\"Verification\"] {\n box-shadow: inset 0px 1px 2px 0px #111;\n}\n#qp .post {\n background-color: rgba(29,29,33,1);\n border: 1px solid rgba(95,137,172,0.4);\n}" + }, + 'Midnight Caek': { + 'Author': 'Zixaphir', + 'Author Tripcode': '!M.........', + 'Background Color': 'rgba(16,16,16,1)', + 'Thread Wrapper Background': 'rgba(0,0,0,0)', + 'Thread Wrapper Border': 'rgba(0,0,0,0)', + 'Dialog Background': 'rgba(28,28,28,1)', + 'Dialog Border': 'rgba(28,28,28,1)', + 'Reply Background': 'rgba(28,28,28,1)', + 'Reply Border': 'rgba(28,28,28,1)', + 'Highlighted Reply Background': 'rgba(24,24,24,1)', + 'Highlighted Reply Border': 'rgba(24,24,24,1)', + 'Backlinked Reply Outline': 'rgba(98,124,141,1)', + 'Input Background': 'rgba(28,28,28,1)', + 'Input Border': 'rgba(28,28,28,1)', + 'Hovered Input Background': 'rgba(24,24,24,1)', + 'Hovered Input Border': 'rgba(24,24,24,1)', + 'Focused Input Background': 'rgba(16,16,16,1)', + 'Focused Input Border': 'rgba(28,28,28,1)', + 'Checkbox Background': 'rgba(0,0,0,1)', + 'Checkbox Border': 'rgba(60,60,60,1)', + 'Checkbox Checked Background': 'rgba(60,60,60,1)', + 'Buttons Background': 'rgba(24,24,24,1)', + 'Buttons Border': 'rgba(24,24,24,1)', + 'Navigation Background': 'rgba(16,16,16,0.9)', + 'Navigation Border': 'rgba(16,16,16,0.9)', + 'Quotelinks': 'rgb(71,71,91)', + 'Backlinks': 'rgb(66,66,71)', + 'Links': 'rgb(87,87,123)', + 'Hovered Links': 'rgb(71,71,91)', + 'Navigation Links': 'rgb(144,144,144)', + 'Hovered Navigation Links': 'rgb(71,71,91)', + 'Names': 'rgb(124,45,45)', + 'Tripcodes': 'rgb(62,113,87)', + 'Emails': 'rgb(68,68,68)', + 'Subjects': 'rgb(170,170,170)', + 'Text': 'rgb(144,144,144)', + 'Inputs': 'rgb(144,144,144)', + 'Post Numbers': 'rgb(144,144,144)', + 'Greentext': 'rgb(113,121,62)', + 'Sage': 'rgb(68,68,68)', + 'Board Title': 'rgb(144,144,144)', + 'Timestamps': 'rgb(144,144,144)', + 'Warnings': 'rgb(87,87,123)', + 'Shadow Color': 'rgba(0,0,0,.1)', + 'Custom CSS': '' + }, + 'Minimalistic Mayhem': { + 'Author': 'Mayhem', + 'Author Tripcode': '!MayhemYDG.', + 'Background Image': 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAAXNSR0IArs4c6QAAACdJREFUCNdNxzEBADAMwzCnOMwfWYDs2JNPCgCoH9m0zQa4jXob4AGJFwxchPNwQAAAAABJRU5ErkJggg==")', + 'Background Color': 'rgba(25,25,25,1)', + 'Dialog Background': 'rgba(34,34,34,1)', + 'Dialog Border': 'rgba(41,41,41,1)', + 'Thread Wrapper Background': 'rgba(34,34,34,1)', + 'Thread Wrapper Border': 'rgba(0,0,0,1)', + 'Reply Background': 'rgba(51,51,51,1)', + 'Reply Border': 'rgba(17,17,17,1)', + 'Highlighted Reply Background': 'rgba(37,38,42,1)', + 'Highlighted Reply Border': 'rgba(85,85,85,1)', + 'Backlinked Reply Outline': 'rgba(98,124,141,1)', + 'Checkbox Background': 'rgba(57,57,57,1)', + 'Checkbox Border': 'rgba(25,25,25,1)', + 'Input Background': 'rgba(34,34,34,1)', + 'Input Border': 'rgba(21,21,21,1)', + 'Focused Input Background': 'rgba(32,32,32,1)', + 'Focused Input Border': 'rgba(102,102,102,1)', + 'Hovered Input Background': 'rgba(24,24,24,1)', + 'Hovered Input Border': 'rgba(21,21,21,1)', + 'Checkbox Checked Background': 'rgba(57,57,57,1)', + 'Buttons Background': 'rgba(32,32,32,1)', + 'Buttons Border': 'rgba(16,16,16,1)', + 'Navigation Background': 'rgba(26,26,26,0.9)', + 'Navigation Border': 'rgba(26,26,26,0.9)', + 'Links': 'rgb(85,156,122)', + 'Hovered Links': 'rgb(199,222,26)', + 'Navigation Links': 'rgb(144,144,144)', + 'Hovered Navigation Links': 'rgb(198,23,230)', + 'Subjects': 'rgb(72,98,115)', + 'Names': 'rgb(46,136,166)', + 'Sage': 'rgb(124,45,45)', + 'Tripcodes': 'rgb(140,93,42)', + 'Emails': 'rgb(174,43,41)', + 'Post Numbers': 'rgb(137,115,153)', + 'Text': 'rgb(221,221,221)', + 'Quotelinks': 'rgb(139,164,70)', + 'Backlinks': 'rgb(139,164,70)', + 'Greentext': 'rgb(139,164,70)', + 'Board Title': 'rgb(187,187,187)', + 'Timestamps': 'rgb(221,221,221)', + 'Inputs': 'rgb(187,187,187)', + 'Warnings': 'rgb(87,87,123)', + 'Shadow Color': 'rgba(0,0,0,.1)', + 'Custom CSS': ".nameBlock > .useremail > postertrip {\n color: rgb(137,115,153);\n}\na.backlink:hover {\n color: rgb(198,23,230);\n}\n.reply:target,\n.reply.highlight:target {\n background:rgb(37,38,42);\n}\n[alt=\"sticky\"] + a {\n color: rgb(242,141,0);\n}\n[alt=\"closed\"] + a {\n color: rgb(178,171,130);\n}\ninput:checked .rice {\n border-color:rgb(21,21,21);\n}\ninput[type=\"submit\"],\ninput[type=\"button\"],\nbutton {\n background: linear-gradient(#393939, #292929);\n border: 1px solid #191919;\n color: #AAA;\n text-shadow: 0 1px 1px #191919;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\nbackground-color: #393939;\n border: 1px solid #191919;\n}\ninput[type=\"checkbox\"]:checked,\ninput[type=\"radio\"]:checked {\n background: linear-gradient(#595959, #393939);\n border: 1px solid #151515;\n}\n.thread {\n padding: 7px;\n}\n.subject:hover,\ndiv.post:hover .subject {\n color: #3F8DBF !important;\n}\n.postertrip:hover,\ndiv.post:hover .postertrip {\n color:#CC7212 !important;\n}\n.name:hover,\ndiv.post:hover .name {\n color: #0AAEE7 !important;\n}\n.name,\n.subject,\n.postertrip {\n -webkit-transition:color .3s ease-in-out;\n -moz-transition:color .3s ease-in-out;\n -o-transition:color .3s ease-in-out;\n}" + }, + 'ObsidianChan': { + 'Author': 'seaweed', + 'Author Tripcode': '!POMF.9waa', + 'Background Image': 'url("http://i.imgur.com/sbi8u.png")', + 'Background Attachment': 'fixed', + 'Dialog Background': 'rgba(0,0,0,0.7)', + 'Dialog Border': 'rgba(0,0,0,0.7)', + 'Background Color': 'rgba(0,0,0,1)', + 'Thread Wrapper Background': 'rgba(0,0,0,0.3)', + 'Thread Wrapper Border': 'rgba(51,51,51,1)', + 'Reply Background': 'rgba(0,0,0,0.6)', + 'Reply Border': 'rgba(0,0,0,0.6)', + 'Highlighted Reply Background': 'rgba(0,0,0,0.4)', + 'Highlighted Reply Border': 'rgba(0,0,0,0.4)', + 'Backlinked Reply Outline': 'rgba(98,124,141,1)', + 'Checkbox Background': 'rgba(68,68,68,1)', + 'Checkbox Border': 'rgba(68,68,68,1)', + 'Input Background': 'rgba(0,0,0,0.6)', + 'Input Border': 'rgba(0,0,0,0.6)', + 'Hovered Input Background': 'rgba(0,0,0,0.4)', + 'Hovered Input Border': 'rgba(0,0,0,0.4)', + 'Focused Input Background': 'rgba(0,0,0,0.4)', + 'Focused Input Border': 'rgba(0,0,0,0.4)', + 'Checkbox Checked Background': 'rgba(255,0,127,1)', + 'Buttons Background': 'rgba(0,0,0,0.4)', + 'Buttons Border': 'rgba(0,0,0,0.4)', + 'Navigation Background': 'rgba(0,0,0,0.7)', + 'Navigation Border': 'rgba(0,0,0,0.7)', + 'Links': 'rgb(0,255,255)', + 'Hovered Links': 'rgb(0,255,255)', + 'Navigation Links': 'rgb(253,254,255)', + 'Hovered Navigation Links': 'rgb(253,254,255)', + 'Subjects': 'rgb(144,144,144)', + 'Names': 'rgb(253,254,255)', + 'Sage': 'rgb(253,254,255)', + 'Tripcodes': 'rgb(255,82,203)', + 'Emails': 'rgb(0,255,255)', + 'Post Numbers': 'rgb(0,255,255)', + 'Text': 'rgb(253,254,255)', + 'Quotelinks': 'rgb(0,255,255)', + 'Backlinks': 'rgb(0,255,255)', + 'Greentext': 'rgb(67,204,103)', + 'Board Title': 'rgb(253,254,255)', + 'Timestamps': 'rgb(253,254,255)', + 'Inputs': 'rgb(253,254,255)', + 'Warnings': 'rgb(0,255,255)', + 'Shadow Color': 'rgba(0,0,0,.1)', + 'Custom CSS': "#qp div.post{\n background-color:rgba(0,0,0,0.8);\n border: 1px solid #333;\n}\n#qr {\n background-color: rgba(0,0,0,0.7);\n border: 1px solid #333;\n}" + }, + 'PaisleyChan': { + 'Author': 'Ubuntufriend', + 'Author Tripcode': '!TRip.C0d3', + 'Background Image': 'url(http://i.imgur.com/DRaZf.jpg)', + 'Background Attachment': 'fixed', + 'Background Repeat': 'repeat', + 'Background Color': 'rgba(19,19,19,1)', + 'Dialog Background': 'rgba(16,16,16,1)', + 'Dialog Border': 'rgba(16,16,16,1)', + 'Thread Wrapper Background': 'rgba(52,56,56,0.3)', + 'Thread Wrapper Border': 'rgba(52,56,56,0.3)', + 'Reply Background': 'rgba(52,56,56,1)', + 'Reply Border': 'rgba(0,0,0,0)', + 'Highlighted Reply Background': 'rgba(0,0,0,0)', + 'Highlighted Reply Border': 'rgba(0,0,0,0)', + 'Backlinked Reply Outline': 'rgba(98,124,141,1)', + 'Checkbox Background': 'rgba(34,34,34,1)', + 'Checkbox Border': 'rgba(60,60,60,1)', + 'Input Background': 'rgba(28,28,28,1)', + 'Input Border': 'rgba(28,28,28,1)', + 'Hovered Input Background': 'rgba(24,24,24,1)', + 'Hovered Input Border': 'rgba(24,24,24,1)', + 'Focused Input Background': 'rgba(32,32,32,1)', + 'Focused Input Border': 'rgba(32,32,32,1)', + 'Checkbox Checked Background': 'rgba(34,34,34,1)', + 'Buttons Background': 'rgba(32,32,32,1)', + 'Buttons Border': 'rgba(32,32,32,1)', + 'Navigation Background': 'rgba(16,16,16,0.9)', + 'Navigation Border': 'rgba(16,16,16,0.9)', + 'Links': 'rgb(187,187,187)', + 'Hovered Links': 'rgb(0,223,252)', + 'Navigation Links': 'rgb(153,153,153)', + 'Hovered Navigation Links': 'rgb(0,223,252)', + 'Subjects': 'rgb(170,170,170)', + 'Names': 'rgb(128,172,206)', + 'Sage': 'rgb(153,153,153)', + 'Tripcodes': 'rgb(128,172,206)', + 'Emails': 'rgb(187,187,187)', + 'Post Numbers': 'rgb(153,153,153)', + 'Text': 'rgb(153,153,153)', + 'Quotelinks': 'rgb(212,212,212)', + 'Backlinks': 'rgb(212,212,212)', + 'Greentext': 'rgb(152,185,98)', + 'Board Title': 'rgb(153,153,153)', + 'Timestamps': 'rgb(153,153,153)', + 'Inputs': 'rgb(153,153,153)', + 'Warnings': 'rgb(187,187,187)', + 'Shadow Color': 'rgba(0,0,0,.1)', + 'Custom CSS': "#options {\n background-color: rgba(16,16,16,1) !important;\n}\n#delform blockquote {\n border-radius:3px;\n color:#bbb;\n background:#343838;\n padding:8px;\n box-shadow:0px 0px 20px rgba(25,25,25,0.6);\n border:1px solid #343838;\n border-bottom:2px solid #444848;\n border-radius:0px 6px 6px 6px;\n padding-top:15px;\n}\n.name {\n font-weight:800;\n}\n.nameBlock > .useremail > .name:hover,\n.nameBlock> .useremail> .postertrip:hover {\n color:#00dffc;\n}\na.forwardlink {\n color:#608cae;\n font-weight:800;\n}\ndiv.reply,\n.reply.highlight {\n padding:0;\n}\n#qp div.post {\n border:1px solid rgba(128,172,206,0.5) !important;\n background-color: rgba(24,24,24,0.9) !important;\n}\n.name,\n.postertrip {\n text-shadow:0px 0px 6px rgba(20,20,20,0.9);\n font-weight:bold;\n background:#343838;\n border:1px solid #343838;\n border-radius:5px 5px 0px 0px;\n padding:4px 6px;\n padding-top:2px;\n}\n.board,\n.board blockquote {\n margin:0 10px 15px 0 !important;\n padding:0px;\n}\na {\n -moz-transition:all 0.5s ease;\n -webkit-transition:all 0.5s ease;\n -o-transition:all 0.5s ease;\n}\na.pointer{\n font-weight:bold;\n font-weight:normal;\n color:#777;\n padding-right:5px;\n}\n.thread .opContainer,\n.thread .replyContainer {\n opacity:0.45;\n transition:all 0.5s ease;\n}\n.thread .opContainer:hover,\n.thread .replyContainer:hover {\n opacity:1;\n}\n.reply.post,\n.reply.highlight {\n background:transparent;\n border:0px;\n padding:0px;\n padding-bottom:0px;\n border-radius:6px;\n}\n#delform blockquote {\n padding:5px;\n background:#343838;\n margin-top:0px;\n min-height:20px;\n padding-top:10px;\n clear:none;\n}\n #delform .file + blockquote{\n margin-top:-16px !important;\n padding-left:150px !important;\n}\n.file{\n margin-top: 2px;\n}\na.backlink{\nborder:1px solid #343838;\nborder-radius:5px 5px 0px 0px;\nbackground:#343838;\npadding:2px 4px 2px;\n text-decoration:none;\n}\na.forwardlink{\n color:#608CAE;\n text-shadow:0 0 6px rgba(96,140,174,0.8);\n}\n.subject{\n font-weight: bold;\n letter-spacing: 3px;\n background: transparent;\n}\n.reply.post {\n background-color: rgba(0,0,0,0) !important;\n border: none !important;\n}\n#qp div.post .name,\n#qp div.post a.backlink,\n#qp div.post blockquote {\n background:none !important;\n border:none !important;\n box-shadow:none !important;\n border-radius:0px !important;\n}" + }, + 'Photon': { + 'Author': 'seaweed', + 'Author Tripcode': '!POMF.9waa', + 'Background Color': 'rgba(238,238,238,1)', + 'Dialog Background': 'rgba(238,238,238,1)', + 'Dialog Border': 'rgba(204,204,204,1)', + 'Thread Wrapper Background': 'rgba(0,0,0,0)', + 'Thread Wrapper Border': 'rgba(0,0,0,0)', + 'Reply Background': 'rgba(221,221,221,1)', + 'Reply Border': 'rgba(204,204,204,1)', + 'Highlighted Reply Background': 'rgba(204,204,204,1)', + 'Highlighted Reply Border': 'rgba(204,204,204,1)', + 'Backlinked Reply Outline': 'rgba(98,124,141,1)', + 'Checkbox Background': 'rgba(255,255,238)', + 'Checkbox Border': 'rgba(255,255,238)', + 'Checkbox Checked Background': 'rgba(188,192,212)', + 'Input Background': 'rgba(255,255,255,1)', + 'Input Border': 'rgba(204,204,204,1)', + 'Hovered Input Background': 'rgba(204,204,204,1)', + 'Hovered Input Border': 'rgba(204,204,204,1)', + 'Focused Input Background': 'rgba(255,255,255,1)', + 'Focused Input Border': 'rgba(0,74,153,1)', + 'Buttons Background': 'rgba(255,255,238,1)', + 'Buttons Border': 'rgba(204,204,204,1)', + 'Navigation Background': 'rgba(238,238,238,0.9)', + 'Navigation Border': 'rgba(238,238,238,0.9)', + 'Links': 'rgb(255,102,0)', + 'Hovered Links': 'rgb(255,51,0)', + 'Navigation Links': 'rgb(17,17,17)', + 'Hovered Navigation Links': 'rgb(255,51,0)', + 'Subjects': 'rgb(17,17,17)', + 'Names': 'rgb(0,74,153)', + 'Sage': 'rgb(51,51,51)', + 'Tripcodes': 'rgb(255,51,0)', + 'Emails': 'rgb(255,102,0)', + 'Post Numbers': 'rgb(51,51,51)', + 'Text': 'rgb(51,51,51)', + 'Quotelinks': 'rgb(17,17,17)', + 'Backlinks': 'rgb(17,17,17)', + 'Greentext': 'rgb(120,153,34)', + 'Board Title': 'rgb(0,74,153)', + 'Timestamps': 'rgb(51,51,51)', + 'Inputs': 'rgb(0,0,0)', + 'Warnings': 'rgb(51,51,51)', + 'Shadow Color': 'rgba(0,0,0,.05)', + 'Custom CSS': ".fileText{\n color: rgb(102,102,102);\n}\n.boardTitle {\n color: #004a99 !important;\n text-shadow: 1px 1px 1px #222 !important;\n}\n.boardSubtitle,\n.boardBanner .boardSubtitle > a {\n text-shadow: none !important;\n}" + }, + 'RedUX': { + 'Author': 'Zixaphir', + 'Author Tripcode': '!VGsTHECURE', + 'Background Image': 'linear-gradient(rgba(210,210,210,0.7), rgba(240,240,240,0.4) 400px, rgba(240,240,240,0.3)), url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIQAAACEAQMAAABrihHkAAAABlBMVEX///8AAABVwtN+AAAAAnRSTlMASuCaZbYAAAA+SURBVHhe7c2xCQAgDAXRKywsHcFRdDNxchtBkhHk4Lp88ui7hhaztBCkyYZ7fFHzI/Jk/GRpaWlpaWlpaR3scHNQSY3kigAAAABJRU5ErkJggg==")', + 'Background Attachment': 'fixed, scroll', + 'Background Position': 'top, center', + 'Background Repeat': 'no-repeat, repeat', + 'Background Color': 'rgba(238,242,255,1)', + 'Thread Wrapper Background': 'rgb(230,230,230)', + 'Thread Wrapper Border': 'rgba(204,204,204,1)', + 'Dialog Background': 'linear-gradient(rgb(222,222,222), rgb(240,240,240) 200px, rgb(240,240,240))', + 'Dialog Border': 'rgb(220,210,210)', + 'Reply Background': 'rgba(230,230,230,1)', + 'Reply Border': 'rgba(204,204,204,1)', + 'Highlighted Reply Background': 'rgba(219,219,219,1)', + 'Highlighted Reply Border': 'rgba(219,219,219,1)', + 'Backlinked Reply Outline': 'rgba(98,124,141,1)', + 'Input Background': 'linear-gradient(rgb(222,222,222), rgb(240,240,240)), rgb(240,240,240)', + 'Input Border': 'rgb(220,210,210)', + 'Hovered Input Background': 'linear-gradient(rgba(214,186,208,0.7), rgb(240,240,240)), rgb(240,240,240)', + 'Hovered Input Border': 'rgba(214,186,208,1)', + 'Focused Input Background': 'rgb(240,240,240)', + 'Focused Input Border': 'rgb(220,210,210)', + 'Checkbox Background': 'rgba(238,242,255,1)', + 'Checkbox Checked Background': 'rgba(255,255,255,1)', + 'Checkbox Border': 'rgba(180,180,180,1)', + 'Buttons Background': 'linear-gradient(rgb(222,222,222), rgb(240,240,240)), rgb(240,240,240)', + 'Buttons Border': 'rgb(220,210,210)', + 'Navigation Background': 'rgba(230,230,230,0.8)', + 'Navigation Border': 'rgba(204,204,204,1)', + 'Quotelinks': 'rgb(153,51,51)', + 'Backlinks': 'rgb(153,51,51)', + 'Links': 'rgb(87,87,123)', + 'Hovered Links': 'rgb(221,0,0)', + 'Navigation Links': 'rgb(0,0,0)', + 'Hovered Navigation Links': 'rgb(87,87,123)', + 'Names': 'rgb(119,51,51)', + 'Tripcodes': 'rgb(119,51,51)', + 'Emails': 'rgb(87,87,123)', + 'Subjects': 'rgb(15,12,93)', + 'Text': 'rgb(0,0,0)', + 'Inputs': 'rgb(0,0,0)', + 'Post Numbers': 'rgb(0,0,0)', + 'Greentext': 'rgb(34,133,34)', + 'Sage': 'rgb(87,87,123)', + 'Board Title': 'rgb(119,51,51)', + 'Timestamps': 'rgb(0,0,0)', + 'Warnings': 'rgb(87,87,123)', + 'Shadow Color': 'rgba(0,0,0,.07)', + 'Custom CSS': ".thread .reply {\n background-color: transparent;\n border-color: #ccc transparent transparent transparent;\n border-style: solid;\n border-radius: 0 !important;\n margin-bottom: 0;\n}\n.thread .op {\n padding: 0 3px;\n}\n#themes {\n text-shadow: none;\n}\n#qp {\n text-shadow: 1px 0 0 rgb(0,0,0),\n 1px 1px 0 rgb(0,0,0),\n 0 1px 0 rgb(0,0,0),\n 1px 1px 2px rgb(0,0,0);\n}\n#qp .op.post,\n#qp .reply.post {\n border: 1px rgba(0,0,0,0.7) solid;\n background: linear-gradient(to right, rgba(0,0,0,0.7), rgba(0,0,0,0.5)), transparent;\n}\n#qp div.post,\n#qp .pln,\n#qp .postNum a {\n color: #fcd;\n}\n#qp .dateTime {\n color: #fcd !important;\n}\n#qp .subject,\n#qp .nameBlock > .useremail > .name,\n#qp .nameBlock > .useremail > .postertrip,\n#qp .name,\n#qp .postertrip,\n#qp .trip {\n color: #ffaac0 !important;\n}\n#qp a {\n color: #aaaac8;\n}\n.boardBanner a,\n#qp a.backlink,\n#qp span.quote > a.quotelink {\n color: rgb(255,255,255);\n}\n#qp span.quote {\n color: rgb(130,163,100);\n}\n.board {\n box-shadow: 0 20px 40px 10px rgba(0,0,0,0.1);\n border-radius: 4px;\n}\n:not(#themes) .rice {\n box-shadow:rgba(170, 170, 170,0.3) 0 1px;\n}\n#qp .prettyprint {\n background-color: rgba(0,0,0,0.3);\n border: 1px solid rgba(0,0,0,0.5);\n}\n#qp span.tag {\n color: #96562c;\n}\n#qp span.pun {\n color: #5b6f2a;\n}\n#qp span.com {\n color: #a34443;\n}\n#qp span.str,\n#qp span.atv {\n color: #8ba446;\n}\n#qp span.kwd {\n color: #987d3e;\n}\n#qp span.typ,\n#qp span.atn {\n color: #897399;\n}\n#qp span.lit {\n color: #558773;\n}" + }, + 'Solarized': { + 'Author': 'ubuntufriend', + 'Author Tripcode': '!TRip.C0d', + 'Background Color': 'rgba(7,54,66,1)', + 'Dialog Background': 'rgba(0,43,54,1)', + 'Dialog Border': 'rgba(0,43,54,1)', + 'Thread Wrapper Background': 'rgba(0,0,0,0)', + 'Thread Wrapper Border': 'rgba(0,0,0,0)', + 'Reply Background': 'rgba(0,43,54,1)', + 'Reply Border': 'rgba(0,43,54,1)', + 'Highlighted Reply Background': 'rgba(7,54,66,1)', + 'Highlighted Reply Border': 'rgba(7,54,66,1)', + 'Backlinked Reply Outline': 'rgba(98,124,141,1)', + 'Checkbox Background': 'rgba(88,110,117,1)', + 'Checkbox Border': 'rgba(88,110,117,1)', + 'Checkbox Checked Background': 'rgba(17,17,17,1)', + 'Input Background': 'rgba(0,43,54,1)', + 'Input Border': 'rgba(0,43,54,1)', + 'Hovered Input Background': 'rgba(7,54,66,1)', + 'Hovered Input Border': 'rgba(7,54,66,1)', + 'Focused Input Background': 'rgba(7,54,66,1)', + 'Focused Input Border': 'rgba(7,54,66,1)', + 'Buttons Background': 'rgba(0,43,54,1)', + 'Buttons Border': 'rgba(0,43,54,1)', + 'Navigation Background': 'rgba(7,54,66,1)', + 'Navigation Border': 'rgba(7,54,66,1)', + 'Links': 'rgb(108,113,196)', + 'Hovered Links': 'rgb(211,54,130)', + 'Navigation Links': 'rgb(147,161,161)', + 'Hovered Navigation Links': 'rgb(211,54,130)', + 'Subjects': 'rgb(203,75,22)', + 'Names': 'rgb(88,110,117)', + 'Sage': 'rgb(108,113,196)', + 'Tripcodes': 'rgb(42,161,152)', + 'Emails': 'rgb(108,113,196)', + 'Post Numbers': 'rgb(147,161,161)', + 'Text': 'rgb(147,161,161)', + 'Quotelinks': 'rgb(79,95,143)', + 'Backlinks': 'rgb(79,95,143)', + 'Greentext': 'rgb(133,153,0)', + 'Board Title': 'rgb(147,161,161)', + 'Timestamps': 'rgb(147,161,161)', + 'Inputs': 'rgb(147,161,161)', + 'Warnings': 'rgb(108,113,196)', + 'Shadow Color': 'rgba(0,0,0,.1)', + 'Custom CSS': "#qp div.post {\n background-color:rgba(7,54,66,0.9);\n border:1px solid rgba(79,95,143,0.9);\n}" + }, + 'Yotsuba': { + 'Author': 'moot', + 'Author Tripcode': '!Ep8pui8Vw2', + 'Background Image': 'linear-gradient(rgb(254,214,175), rgb(255,255,238) 200px, rgb(255,255,238))', + 'Background Color': 'rgba(255,255,238,1)', + 'Dialog Background': 'rgba(240,224,214,1)', + 'Dialog Border': 'rgba(217,191,183,1)', + 'Thread Wrapper Background': 'rgba(0,0,0,0)', + 'Thread Wrapper Border': 'rgba(0,0,0,0)', + 'Reply Background': 'rgba(240,224,214,1)', + 'Reply Border': 'rgba(217,191,183,1)', + 'Highlighted Reply Background': 'rgba(240,192,176,1)', + 'Highlighted Reply Border': 'rgba(217,191,183,1)', + 'Backlinked Reply Outline': 'rgba(98,124,141,1)', + 'Checkbox Background': 'rgba(255,255,238,1)', + 'Checkbox Border': 'rgba(217,191,183,1)', + 'Checkbox Checked Background': 'rgba(255,255,238,1)', + 'Input Background': 'rgba(240,224,214,1)', + 'Input Border': 'rgba(217,191,183,1)', + 'Hovered Input Background': 'rgba(240,224,214,1)', + 'Hovered Input Border': 'rgba(217,191,183,1)', + 'Focused Input Background': 'rgba(255,255,255,1)', + 'Focused Input Border': 'rgba(128,0,0,1)', + 'Buttons Background': 'rgba(240,192,176,1)', + 'Buttons Border': 'rgba(217,191,183,1)', + 'Navigation Background': 'rgba(240,192,176,0.7)', + 'Navigation Border': 'rgba(217,191,183,1)', + 'Links': 'rgb(186,0,0)', + 'Hovered Links': 'rgb(221,0,0)', + 'Navigation Links': 'rgb(128,0,0)', + 'Hovered Navigation Links': 'rgb(221,0,0)', + 'Subjects': 'rgb(204,17,5)', + 'Names': 'rgb(17,119,67)', + 'Sage': 'rgb(204,17,17)', + 'Tripcodes': 'rgb(34,136,84)', + 'Emails': 'rgb(186,0,0)', + 'Post Numbers': 'rgb(128,0,0)', + 'Text': 'rgb(128,0,0)', + 'Quotelinks': 'rgb(221,0,0)', + 'Backlinks': 'rgb(220,0,0)', + 'Greentext': 'rgb(120,153,34)', + 'Board Title': 'rgb(204,17,5)', + 'Timestamps': 'rgb(186,0,0)', + 'Inputs': 'rgb(0,0,0)', + 'Warnings': 'rgb(128,0,0)', + 'Shadow Color': 'rgba(0,0,0,.05)', + 'Custom CSS': "#qp div.post {\n background-color:rgba(240,192,176,1);\n box-shadow:5px 5px 5px rgba(128,128,128,0.5);\n}\n.reply.post {\n border-color: transparent rgba(240,224,214,1) rgba(240,224,214,1) transparent;\n}" + }, + 'Yotsuba B': { + 'Author': 'moot', + 'Author Tripcode': '!Ep8pui8Vw2', + 'Background Image': 'linear-gradient(rgb(209,213,238), rgb(238,242,255) 200px, rgb(238,242,255))', + 'Background Color': 'rgba(238,242,255,1)', + 'Dialog Background': 'rgba(214,218,240,1)', + 'Dialog Border': 'rgba(183,197,217,1)', + 'Thread Wrapper Background': 'rgba(0,0,0,0)', + 'Thread Wrapper Border': 'rgba(0,0,0,0)', + 'Reply Background': 'rgba(214,218,240,1)', + 'Reply Border': 'rgba(183,197,217,1)', + 'Highlighted Reply Background': 'rgba(214,186,208,1)', + 'Highlighted Reply Border': 'rgba(183,197,217,1)', + 'Backlinked Reply Outline': 'rgba(98,124,141,1)', + 'Checkbox Background': 'rgba(238,242,255,1)', + 'Checkbox Border': 'rgba(183,197,217,1)', + 'Checkbox Checked Background': 'rgba(188,192,212,1)', + 'Input Background': 'rgba(238,242,255,1)', + 'Input Border': 'rgba(183,197,217,1)', + 'Hovered Input Background': 'rgba(214,186,208,1)', + 'Hovered Input Border': 'rgba(183,197,217,1)', + 'Focused Input Background': 'rgba(214,218,240,1)', + 'Focused Input Border': 'rgba(153,136,238,1)', + 'Buttons Background': 'rgba(214,218,240,1)', + 'Buttons Border': 'rgba(183,197,217,1)', + 'Navigation Background': 'rgba(211,215,238,0.7)', + 'Navigation Border': 'rgba(183,197,217,1)', + 'Links': 'rgb(52,52,92)', + 'Hovered Links': 'rgb(221,0,0)', + 'Navigation Links': 'rgb(0,0,0)', + 'Hovered Navigation Links': 'rgb(221,0,0)', + 'Subjects': 'rgb(15,12,93)', + 'Names': 'rgb(17,119,67)', + 'Sage': 'rgb(153,0,0)', + 'Tripcodes': 'rgb(34,136,84)', + 'Emails': 'rgb(87,87,123)', + 'Post Numbers': 'rgb(0,0,0)', + 'Text': 'rgb(0,0,0)', + 'Quotelinks': 'rgb(221,0,0)', + 'Backlinks': 'rgb(52,52,92)', + 'Greentext': 'rgb(120,153,34)', + 'Board Title': 'rgb(175,10,15)', + 'Timestamps': 'rgb(0,0,0)', + 'Inputs': 'rgb(0,0,0)', + 'Warnings': 'rgb(87,87,123)', + 'Shadow Color': 'rgba(0,0,0,.05)', + 'Custom CSS': "#qp div.post {\n background-color:rgba(214,186,208,1);\n box-shadow:5px 5px 5px rgba(128,128,128,0.5);\n}\n.reply.post {\n border-color: transparent rgba(183,197,217,1) rgba(183,197,217,1) transparent;\n}" + }, + 'Zenburned': { + 'Author': 'lazy', + 'Author Tripcode': '!HONKYn7h1.', + 'Background Color': 'rgba(63,63,63,1)', + 'Dialog Background': 'rgba(87,87,87,1)', + 'Dialog Border': 'rgba(87,87,87,1)', + 'Thread Wrapper Background': 'rgba(0,0,0,0)', + 'Thread Wrapper Border': 'rgba(0,0,0,0)', + 'Reply Background': 'rgba(87,87,87,1)', + 'Reply Border': 'rgba(87,87,87,1)', + 'Highlighted Reply Background': 'rgba(38,38,38,1)', + 'Highlighted Reply Border': 'rgba(38,38,38,1)', + 'Backlinked Reply Outline': 'rgba(98,124,141,1)', + 'Checkbox Background': 'rgba(63,63,63,1)', + 'Checkbox Border': 'rgba(136,136,136,1)', + 'Checkbox Checked Background': 'rgba(17,17,17,1)', + 'Input Background': 'rgba(87,87,87,1)', + 'Input Border': 'rgba(136,136,136,1)', + 'Hovered Input Background': 'rgba(38,38,38,1)', + 'Hovered Input Border': 'rgba(38,38,38,1)', + 'Focused Input Background': 'rgba(38,38,38,1)', + 'Focused Input Border': 'rgba(153,136,238,1)', + 'Buttons Background': 'rgba(49,60,54,1)', + 'Buttons Border': 'rgba(136,136,136,1)', + 'Navigation Background': 'rgba(63,63,63,0.9)', + 'Navigation Border': 'rgba(63,63,63,0.9)', + 'Links': 'rgb(239,220,188)', + 'Hovered Links': 'rgb(248,248,147)', + 'Navigation Links': 'rgb(220,220,204)', + 'Hovered Navigation Links': 'rgb(248,248,147)', + 'Subjects': 'rgb(170,170,170)', + 'Names': 'rgb(192,190,209)', + 'Sage': 'rgb(220,220,204)', + 'Tripcodes': 'rgb(140,208,211)', + 'Emails': 'rgb(239,220,188)', + 'Post Numbers': 'rgb(220,220,204)', + 'Text': 'rgb(220,220,204)', + 'Quotelinks': 'rgb(220,163,163)', + 'Backlinks': 'rgb(220,163,163)', + 'Greentext': 'rgb(127,159,127)', + 'Board Title': 'rgb(220,220,204)', + 'Timestamps': 'rgb(220,220,204)', + 'Inputs': 'rgb(220,220,204)', + 'Warnings': 'rgb(239,220,188)', + 'Shadow Color': 'rgba(0,0,0,.1)', + 'Custom CSS': '' + }, + "ピンク": { + "Author": "DrooidKun", + "Author Tripcode": "!/Apk/MRkGM", + "Background Color": "rgb(255,255,255)", + "Dialog Background": "rgba(242,242,242,.98)", + "Dialog Border": "rgb(240,240,240)", + "Thread Wrapper Background": "rgba(0,0,0,0)", + "Thread Wrapper Border": "rgba(0,0,0,0)", + "Reply Background": "rgba(242,242,242,1.0)", + "Reply Border": "rgb(240,240,240)", + "Highlighted Reply Background": "rgba(238,238,238,1.0)", + "Highlighted Reply Border": "rgb(191,122,180)", + "Backlinked Reply Outline": "rgb(191,122,180)", + "Checkbox Background": "rgba(240,240,240,1.0)", + "Checkbox Border": "rgb(222,222,222)", + "Checkbox Checked Background": "rgb(240,240,240)", + "Input Background": "rgba(240,240,240,1.0)", + "Input Border": "rgb(222,222,222)", + "Hovered Input Background": "rgba(224,224,224,1.0)", + "Hovered Input Border": "rgb(222,222,222)", + "Focused Input Background": "rgba(224,224,224,1.0)", + "Focused Input Border": "rgb(222,222,222)", + "Buttons Background": "rgba(240,240,240,1.0)", + "Buttons Border": "rgb(222,222,222)", + "Navigation Background": "rgba(255,255,255,0.8)", + "Navigation Border": "rgb(242,242,242)", + "Quotelinks": "rgb(191,122,180)", + "Links": "rgb(191,122,180)", + "Hovered Links": "rgb(198,105,201)", + "Navigation Links": "rgb(77,77,76)", + "Hovered Navigation Links": "rgb(198,105,201)", + "Subjects": "rgb(77,77,77)", + "Names": "rgb(204,94,193)", + "Sage": "rgb(200,40,41)", + "Tripcodes": "rgb(198,105,201)", + "Emails": "rgb(191,122,180)", + "Post Numbers": "rgb(191,122,180)", + "Text": "rgb(77,77,76)", + "Backlinks": "rgb(191,122,180)", + "Greentext": "rgb(113,140,0)", + "Board Title": "rgb(77,77,76)", + "Timestamps": "rgb(77,77,76)", + "Inputs": "rgb(77,77,76)", + "Warnings": "rgb(200,40,41)", + "Shadow Color": "rgba(0,0,0,0.05)", + "Custom CSS": ".rice {\n box-shadow:rgba(255,255,255,.3) 0 1px;\n}\nnput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#options input:not([type=checkbox]):hover {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#options input:focus {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\n transition:background .2s,box-shadow .2s;\n}\n.boardTitle {\n color: #cc5ec1 !important;\n text-shadow: 1px 1px 1px #772E28 !important;\n}\n.boardSubtitle,\n.boardBanner .boardSubtitle > a {\n text-shadow: none !important;\n}" + }, + "Yotsuba Purple": { + "Author": "seaweed", + "Author Tripcode": "!POMF.9waa", + "Background Image": "linear-gradient(rgba(238,221,255,1.0), rgba(248,243,254,1) 200px, rgba(248,243,254,1))", + "Background Color": "rgb(248,243,254)", + "Dialog Background": "rgba(238,221,255,.98)", + "Dialog Border": "rgb(202,183,217)", + "Thread Wrapper Background": "rgba(0,0,0,0)", + "Thread Wrapper Border": "rgba(0,0,0,0)", + "Reply Background": "rgba(238,221,255,1.0)", + "Reply Border": "rgb(202,183,217)", + "Highlighted Reply Background": "rgba(234,217,251,1.0)", + "Highlighted Reply Border": "rgb(150,37,148)", + "Backlinked Reply Outline": "rgb(150,37,148)", + "Checkbox Background": "rgba(255,255,255,1.0)", + "Checkbox Border": "rgb(202,183,217)", + "Checkbox Checked Background": "rgb(255,255,255)", + "Input Background": "rgba(255,255,255,1.0)", + "Input Border": "rgb(202,183,217)", + "Hovered Input Background": "rgba(239,239,239,1.0)", + "Hovered Input Border": "rgb(202,183,217)", + "Focused Input Background": "rgba(239,239,239,1.0)", + "Focused Input Border": "rgb(202,183,217)", + "Buttons Background": "rgba(255,255,255,1.0)", + "Buttons Border": "rgb(202,183,217)", + "Navigation Background": "rgba(229, 219, 240,.9)", + "Navigation Border": "rgb(238,221,255)", + "Quotelinks": "rgb(150,37,148)", + "Links": "rgb(150,37,148)", + "Hovered Links": "rgb(178,44,170)", + "Navigation Links": "rgb(0,0,0)", + "Hovered Navigation Links": "rgb(178,44,170)", + "Subjects": "rgb(15,12,93)", + "Names": "rgb(89,17,119)", + "Sage": "rgb(153,0,0)", + "Tripcodes": "rgb(178,44,170)", + "Emails": "rgb(150,37,148)", + "Post Numbers": "rgb(150,37,148)", + "Text": "rgb(0,0,0)", + "Backlinks": "rgb(150,37,148)", + "Greentext": "rgb(120,153,34)", + "Board Title": "rgb(0,0,0)", + "Timestamps": "rgb(0,0,0)", + "Inputs": "rgb(0,0,0)", + "Warnings": "rgb(153,0,0)", + "Shadow Color": "rgba(0,0,0,.05)", + "Custom CSS": ".rice {\n box-shadow:rgba(255,253,255,.3) 0 1px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#options input:not([type=checkbox]):hover {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#options input:focus {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\n transition:background .2s,box-shadow .2s;\n}\n.boardTitle {\n color: #591177 !important;\n text-shadow: 1px 1px 1px #222 !important;\n}\n.boardSubtitle,\n.boardBanner .boardSubtitle > a {\n text-shadow: none !important;\n}\n.postNum a {\n color: #000000 !important;\n}\n.reply.post {\n border-color: transparent rgb(202,183,217) rgb(202,183,217) transparent;\n}" + }, + "Vimyanized Dark": { + "Author": "seaweed", + "Author Tripcode": "!POMF.9waa", + "Background Color": "rgb(9,13,15)", + "Dialog Background": "rgba(13,17,20,.98)", + "Dialog Border": "rgb(11,19,22)", + "Thread Wrapper Background": "rgba(13,17,20,.5)", + "Thread Wrapper Border": "rgba(11,19,22,.9)", + "Reply Background": "rgba(13,17,20,.9)", + "Reply Border": "rgb(11,19,22)", + "Highlighted Reply Background": "rgba(9,13,16,.9)", + "Highlighted Reply Border": "rgb(83,189,177)", + "Backlinked Reply Outline": "rgb(83,189,177)", + "Checkbox Background": "rgba(9,13,15,.9)", + "Checkbox Border": "rgb(11,19,22)", + "Checkbox Checked Background": "rgb(9,13,15)", + "Input Background": "rgba(9,13,15,.9)", + "Input Border": "rgb(11,19,22)", + "Hovered Input Background": "rgba(0,0,0,.9)", + "Hovered Input Border": "rgb(11,19,22)", + "Focused Input Background": "rgba(0,0,0,.9)", + "Focused Input Border": "rgb(11,19,22)", + "Buttons Background": "rgba(9,13,15,.9)", + "Buttons Border": "rgb(11,19,22)", + "Navigation Background": "rgba(9,13,15,0.8)", + "Navigation Border": "rgb(13,17,20)", + "Quotelinks": "rgb(83,189,177)", + "Links": "rgb(83,189,177)", + "Hovered Links": "rgb(48,144,181)", + "Navigation Links": "rgb(248,248,248)", + "Hovered Navigation Links": "rgb(48,144,181)", + "Subjects": "rgb(184,140,209)", + "Names": "rgb(214,62,52)", + "Sage": "rgb(79,79,79)", + "Tripcodes": "rgb(212,182,60)", + "Emails": "rgb(83,189,177)", + "Post Numbers": "rgb(83,189,177)", + "Text": "rgb(248,248,248)", + "Backlinks": "rgb(83,189,177)", + "Greentext": "rgb(150,200,59)", + "Board Title": "rgb(248,248,248)", + "Timestamps": "rgb(221,221,221)", + "Inputs": "rgb(248,248,248)", + "Warnings": "rgb(79,79,79)", + "Shadow Color": "rgba(0,0,0,.1)", + "Custom CSS": ".thread {\n padding: 1px;\n}\n.rice {\n box-shadow:rgba(45,49,52,.3) 0 1px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#options input:not([type=checkbox]):hover {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#options input:focus {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\n transition:background .2s,box-shadow .2s;\n}" + }, + "Tomorrow Night": { + "Author": "Chris Kempson", + "Author Tripcode": "!.pC/AHOKAg", + "Background Color": "rgb(29,31,33)", + "Dialog Background": "rgba(40,42,46,.98)", + "Dialog Border": "rgb(55,59,65)", + "Thread Wrapper Background": "rgba(40,42,46,.5)", + "Thread Wrapper Border": "rgba(55,59,65,.9)", + "Reply Background": "rgba(40,42,46,.9)", + "Reply Border": "rgb(55,59,65)", + "Highlighted Reply Background": "rgba(36,38,42,.9)", + "Highlighted Reply Border": "rgb(129,162,190)", + "Backlinked Reply Outline": "rgb(129,162,190)", + "Checkbox Background": "rgba(40,42,46,.9)", + "Checkbox Border": "rgb(29,31,33)", + "Checkbox Checked Background": "rgb(40,42,46)", + "Input Background": "rgba(40,42,46,.9)", + "Input Border": "rgb(29,31,33)", + "Hovered Input Background": "rgba(24,26,30,.9)", + "Hovered Input Border": "rgb(29,31,33)", + "Focused Input Background": "rgba(24,26,30,.9)", + "Focused Input Border": "rgb(29,31,33)", + "Buttons Background": "rgba(40,42,46,.9)", + "Buttons Border": "rgb(29,31,33)", + "Navigation Background": "rgba(29,31,33,0.8)", + "Navigation Border": "rgb(40,42,46)", + "Quotelinks": "rgb(129,162,190)", + "Links": "rgb(129,162,190)", + "Hovered Links": "rgb(204,102,102)", + "Navigation Links": "rgb(197,200,198)", + "Hovered Navigation Links": "rgb(204,102,102)", + "Subjects": "rgb(178,148,187)", + "Names": "rgb(129,162,190)", + "Sage": "rgb(204,102,102)", + "Tripcodes": "rgb(138,190,183)", + "Emails": "rgb(129,162,190)", + "Post Numbers": "rgb(129,162,190)", + "Text": "rgb(197,200,198)", + "Backlinks": "rgb(129,162,190)", + "Greentext": "rgb(181,189,104)", + "Board Title": "rgb(197,200,198)", + "Timestamps": "rgb(197,200,198)", + "Inputs": "rgb(197,200,198)", + "Warnings": "rgb(204,102,102)", + "Shadow Color": "rgba(0,0,0,.1)", + "Custom CSS": ".thread {\n padding: 1px;\n}\n.rice {\n box-shadow:rgba(72,74,78,.3) 0 1px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#options input:not([type=checkbox]):hover {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#options input:focus {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\n transition:background .2s,box-shadow .2s;\n}" + }, + "Solarized Light": { + "Author": "seaweed", + "Author Tripcode": "!POMF.9waa", + "Background Color": "rgb(240,240,240)", + "Dialog Background": "rgba(253,246,227,.98)", + "Dialog Border": "rgb(230,223,206)", + "Thread Wrapper Background": "rgba(0,0,0,0)", + "Thread Wrapper Border": "rgba(0,0,0,0)", + "Reply Background": "rgba(253,246,227,1.0)", + "Reply Border": "rgb(230,223,206)", + "Highlighted Reply Background": "rgba(249,242,223,1.0)", + "Highlighted Reply Border": "rgb(108,113,196)", + "Backlinked Reply Outline": "rgb(108,113,196)", + "Checkbox Background": "rgba(255,255,255,1.0)", + "Checkbox Border": "rgb(204,204,204)", + "Checkbox Checked Background": "rgb(255,255,255)", + "Input Background": "rgba(255,255,255,1.0)", + "Input Border": "rgb(204,204,204)", + "Hovered Input Background": "rgba(239,239,239,1.0)", + "Hovered Input Border": "rgb(204,204,204)", + "Focused Input Background": "rgba(239,239,239,1.0)", + "Focused Input Border": "rgb(204,204,204)", + "Buttons Background": "rgba(255,255,255,1.0)", + "Buttons Border": "rgb(204,204,204)", + "Navigation Background": "rgba(240,240,240,0.8)", + "Navigation Border": "rgb(253,246,227)", + "Quotelinks": "rgb(108,113,196)", + "Links": "rgb(108,113,196)", + "Hovered Links": "rgb(211,54,130)", + "Navigation Links": "rgb(101,123,131)", + "Hovered Navigation Links": "rgb(211,54,130)", + "Subjects": "rgb(181,137,0)", + "Names": "rgb(101,123,131)", + "Sage": "rgb(153,0,0)", + "Tripcodes": "rgb(42,161,152)", + "Emails": "rgb(108,113,196)", + "Post Numbers": "rgb(108,113,196)", + "Text": "rgb(101,123,131)", + "Backlinks": "rgb(108,113,196)", + "Greentext": "rgb(133,153,0)", + "Board Title": "rgb(101,123,131)", + "Timestamps": "rgb(101,123,131)", + "Inputs": "rgb(101,123,131)", + "Warnings": "rgb(153,0,0)", + "Shadow Color": "rgba(0,0,0,.05)", + "Custom CSS": ".rice {\n box-shadow:rgba(255,255,255,.3) 0 1px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#options input:not([type=checkbox]):hover {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#options input:focus {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\n transition:background .2s,box-shadow .2s;\n}\n.boardTitle {\n color: #b58900 !important;\n text-shadow: 1px 1px 1px #999 !important;\n}\n.boardSubtitle,\n.boardBanner .boardSubtitle > a {\n text-shadow: none !important;\n}\n.postNum a {\n color: #657b83 !important;\n}" + }, + "Muted": { + "Author": "seaweed", + "Author Tripcode": "!POMF.9waa", + "Background Color": "rgb(255,255,255)", + "Dialog Background": "rgba(245,242,233,.98)", + "Dialog Border": "rgb(204,204,204)", + "Thread Wrapper Background": "rgba(245,242,233,.5)", + "Thread Wrapper Border": "rgba(204,204,204,.9)", + "Reply Background": "rgba(245,242,233,.9)", + "Reply Border": "rgb(204,204,204)", + "Highlighted Reply Background": "rgba(241,238,229,.9)", + "Highlighted Reply Border": "rgb(188,49,42)", + "Backlinked Reply Outline": "rgb(188,49,42)", + "Checkbox Background": "rgba(255,255,255,.9)", + "Checkbox Border": "rgb(204,204,204)", + "Checkbox Checked Background": "rgb(255,255,255)", + "Input Background": "rgba(255,255,255,.9)", + "Input Border": "rgb(204,204,204)", + "Hovered Input Background": "rgba(239,239,239,.9)", + "Hovered Input Border": "rgb(204,204,204)", + "Focused Input Background": "rgba(239,239,239,.9)", + "Focused Input Border": "rgb(204,204,204)", + "Buttons Background": "rgba(255,255,255,.9)", + "Buttons Border": "rgb(204,204,204)", + "Navigation Background": "rgba(255,255,255,0.8)", + "Navigation Border": "rgb(245,242,233)", + "Quotelinks": "rgb(188,49,42)", + "Links": "rgb(188,49,42)", + "Hovered Links": "rgb(142,34,32)", + "Navigation Links": "rgb(57,55,53)", + "Hovered Navigation Links": "rgb(142,34,32)", + "Subjects": "rgb(17,17,17)", + "Names": "rgb(44,100,160)", + "Sage": "rgb(153,0,0)", + "Tripcodes": "rgb(204,101,99)", + "Emails": "rgb(188,49,42)", + "Post Numbers": "rgb(188,49,42)", + "Text": "rgb(57,55,53)", + "Backlinks": "rgb(188,49,42)", + "Greentext": "rgb(120,153,34)", + "Board Title": "rgb(57,55,53)", + "Timestamps": "rgb(51,51,51)", + "Inputs": "rgb(57,55,53)", + "Warnings": "rgb(153,0,0)", + "Shadow Color": "rgba(0,0,0,.05)", + "Custom CSS": ".thread {\n padding: 1px;\n}\n.rice {\n box-shadow:rgba(255,255,255,.3) 0 1px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#options input:not([type=checkbox]):hover {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#options input:focus {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\n transition:background .2s,box-shadow .2s;\n}\n.boardTitle{\ncolor:#bc312a!important;\n text-shadow:1px 1px 1px #772e28 !important;\n}\n.boardSubtitle,\n.boardBanner .boardSubtitle > a {\n text-shadow:none!important;\n}\n.postNum a {\n color:#111111!important;\n}\ndiv.reply a.quotelink{\n color:#bc312a!important;\n}" + }, + "Monokai": { + "Author": "seaweed", + "Author Tripcode": "!POMF.9waa", + "Background Color": "rgb(32,33,28)", + "Dialog Background": "rgba(39,40,34,.98)", + "Dialog Border": "rgb(45,46,39)", + "Thread Wrapper Background": "rgba(0,0,0,0)", + "Thread Wrapper Border": "rgba(0,0,0,0)", + "Reply Background": "rgba(39,40,34,1.0)", + "Reply Border": "rgb(45,46,39)", + "Highlighted Reply Background": "rgba(35,36,30,1.0)", + "Highlighted Reply Border": "rgb(226,219,116)", + "Backlinked Reply Outline": "rgb(226,219,116)", + "Checkbox Background": "rgba(32,33,28,1.0)", + "Checkbox Border": "rgb(23,23,19)", + "Checkbox Checked Background": "rgb(32,33,28)", + "Input Background": "rgba(32,33,28,1.0)", + "Input Border": "rgb(23,23,19)", + "Hovered Input Background": "rgba(16,17,12,1.0)", + "Hovered Input Border": "rgb(23,23,19)", + "Focused Input Background": "rgba(16,17,12,1.0)", + "Focused Input Border": "rgb(23,23,19)", + "Buttons Background": "rgba(32,33,28,1.0)", + "Buttons Border": "rgb(23,23,19)", + "Navigation Background": "rgba(32,33,28,0.8)", + "Navigation Border": "rgb(39,40,34)", + "Quotelinks": "rgb(226,219,116)", + "Links": "rgb(226,219,116)", + "Hovered Links": "rgb(174,129,255)", + "Navigation Links": "rgb(248,248,242)", + "Hovered Navigation Links": "rgb(174,129,255)", + "Subjects": "rgb(174,129,255)", + "Names": "rgb(90,192,204)", + "Sage": "rgb(79,79,79)", + "Tripcodes": "rgb(250,130,32)", + "Emails": "rgb(226,219,116)", + "Post Numbers": "rgb(226,219,116)", + "Text": "rgb(248,248,242)", + "Backlinks": "rgb(226,219,116)", + "Greentext": "rgb(162,204,40)", + "Board Title": "rgb(248,248,242)", + "Timestamps": "rgb(248,248,242)", + "Inputs": "rgb(248,248,242)", + "Warnings": "rgb(79,79,79)", + "Shadow Color": "rgba(0,0,0,.12)", + "Custom CSS": ".rice {\n box-shadow:rgba(71,72,66,.3) 0 1px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#options input:not([type=checkbox]):hover {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#options input:focus {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\n transition:background .2s,box-shadow .2s;\n}" + }, + "Dark Flat": { + "Author": "Ahoka", + "Author Tripcode": "!.pC/AHOKAg", + "Background Image": "url(\"data:image/gif;base64,R0lGODlhAwADAIAAAB0dHRkZGSH5BADoAwAALAAAAAADAAMAAAIDDG5YADs=\")", + "Background Attachment": "fixed", + "Background Position": "top left", + "Background Repeat": "repeat", + "Background Color": "rgb(32,32,32)", + "Dialog Background": "rgba(35,36,37,.98)", + "Dialog Border": "rgb(41,42,43)", + "Thread Wrapper Background": "rgba(35,36,37,.5)", + "Thread Wrapper Border": "rgba(41,42,43,.9)", + "Reply Background": "rgba(35,36,37,.9)", + "Reply Border": "rgba(35,36,37,.9)", + "Highlighted Reply Background": "rgba(31,32,33,.9)", + "Highlighted Reply Border": "rgb(172,155,176)", + "Backlinked Reply Outline": "rgb(172,155,176)", + "Checkbox Background": "rgba(24,25,26,.9)", + "Checkbox Border": "rgb(18,19,20)", + "Checkbox Checked Background": "rgb(24,25,26)", + "Input Background": "rgba(24,25,26,.9)", + "Input Border": "rgb(18,19,20)", + "Hovered Input Background": "rgba(8,9,10,.9)", + "Hovered Input Border": "rgb(18,19,20)", + "Focused Input Background": "rgba(8,9,10,.9)", + "Focused Input Border": "rgb(18,19,20)", + "Buttons Background": "rgba(24,25,26,.9)", + "Buttons Border": "rgb(18,19,20)", + "Navigation Background": "rgba(32,32,32,0.8)", + "Navigation Border": "rgb(35,36,37)", + "Quotelinks": "rgb(172,155,176)", + "Links": "rgb(172,155,176)", + "Hovered Links": "rgb(111,153,180)", + "Navigation Links": "rgb(221,221,221)", + "Hovered Navigation Links": "rgb(111,153,180)", + "Subjects": "rgb(147,144,201)", + "Names": "rgb(168,198,217)", + "Sage": "rgb(201,144,144)", + "Tripcodes": "rgb(212,192,149)", + "Emails": "rgb(172,155,176)", + "Post Numbers": "rgb(172,155,176)", + "Text": "rgb(221,221,221)", + "Backlinks": "rgb(172,155,176)", + "Greentext": "rgb(179,196,94)", + "Board Title": "rgb(221,221,221)", + "Timestamps": "rgb(221,221,221)", + "Inputs": "rgb(221,221,221)", + "Warnings": "rgb(201,144,144)", + "Shadow Color": "rgba(0,0,0,.1)", + "Custom CSS": ".thread {\n padding: 1px;\n}\n.rice {\n box-shadow:rgba(67,68,69,.3) 0 1px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#options input:not([type=checkbox]):hover {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#options input:focus {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\n transition:background .2s,box-shadow .2s;\n}" + }, + "Blackboard": { + "Author": "seaweed", + "Author Tripcode": "!POMF.9waa", + "Background Color": "rgb(10,13,28)", + "Dialog Background": "rgba(12,16,33,.98)", + "Dialog Border": "rgb(14,18,40)", + "Thread Wrapper Background": "rgba(0,0,0,0)", + "Thread Wrapper Border": "rgba(0,0,0,0)", + "Reply Background": "rgba(12,16,33,1.0)", + "Reply Border": "rgb(14,18,40)", + "Highlighted Reply Background": "rgba(8,12,29,1.0)", + "Highlighted Reply Border": "rgb(251,222,45)", + "Backlinked Reply Outline": "rgb(251,222,45)", + "Checkbox Background": "rgba(12,16,33,1.0)", + "Checkbox Border": "rgb(8,11,22)", + "Checkbox Checked Background": "rgb(12,16,33)", + "Input Background": "rgba(12,16,33,1.0)", + "Input Border": "rgb(8,11,22)", + "Hovered Input Background": "rgba(0,0,17,1.0)", + "Hovered Input Border": "rgb(8,11,22)", + "Focused Input Background": "rgba(0,0,17,1.0)", + "Focused Input Border": "rgb(8,11,22)", + "Buttons Background": "rgba(12,16,33,1.0)", + "Buttons Border": "rgb(8,11,22)", + "Navigation Background": "rgba(10,13,28,0.8)", + "Navigation Border": "rgb(12,16,33)", + "Quotelinks": "rgb(251,222,45)", + "Links": "rgb(251,222,45)", + "Hovered Links": "rgb(75,101,204)", + "Navigation Links": "rgb(248,248,248)", + "Hovered Navigation Links": "rgb(75,101,204)", + "Subjects": "rgb(255,100,0)", + "Names": "rgb(141,166,206)", + "Sage": "rgb(79,79,79)", + "Tripcodes": "rgb(255,100,0)", + "Emails": "rgb(251,222,45)", + "Post Numbers": "rgb(251,222,45)", + "Text": "rgb(248,248,248)", + "Backlinks": "rgb(251,222,45)", + "Greentext": "rgb(154,207,8)", + "Board Title": "rgb(248,248,248)", + "Timestamps": "rgb(221,221,221)", + "Inputs": "rgb(248,248,248)", + "Warnings": "rgb(79,79,79)", + "Shadow Color": "rgba(0,0,0,.1)", + "Custom CSS": ".rice {\n box-shadow:rgba(44,48,65,.3) 0 1px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#options input:not([type=checkbox]):hover {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#options input:focus {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\n transition:background .2s,box-shadow .2s;\n}\n.postInfo {\n box-shadow: 0px 2px 3px #0A0A0A;\n}\n#qp .postInfo,\n.inline .postInfo {\n box-shadow: none;\n}" + }, + "4chan Rewired": { + "Author": "", + "Author Tripcode": "!K.WeEabo0o", + "Background Color": "rgb(244,244,244)", + "Dialog Background": "rgba(239,239,239,.98)", + "Dialog Border": "rgb(212,212,212)", + "Thread Wrapper Background": "rgba(0,0,0,0)", + "Thread Wrapper Border": "rgba(0,0,0,0)", + "Reply Background": "linear-gradient(rgba(244,244,244,0.9), rgba(239,239,239,0.9)), rgba(239,239,239,1)", + "Reply Border": "rgb(212,212,212)", + "Highlighted Reply Background": "linear-gradient(rgba(250,250,250,.9), rgba(230,230,230,0.9))", + "Highlighted Reply Border": "rgb(191,127,63)", + "Backlinked Reply Outline": "rgba(191,127,63,0.5)", + "Checkbox Background": "rgba(228,228,228,.9)", + "Checkbox Border": "rgb(204,204,204)", + "Checkbox Checked Background": "rgb(228,228,228)", + "Input Background": "rgba(244,244,244,0.9)", + "Input Border": "rgb(204,204,204)", + "Hovered Input Background": "rgba(212,212,212,.9)", + "Hovered Input Border": "rgb(204,204,204)", + "Focused Input Background": "rgba(212,212,212,.9)", + "Focused Input Border": "rgb(204,204,204)", + "Buttons Background": "rgba(244,244,244,0.9)", + "Buttons Border": "rgb(204,204,204)", + "Navigation Background": "rgba(244,244,244,0.8)", + "Navigation Border": "rgb(239,239,239)", + "Quotelinks": "rgb(191,127,63)", + "Links": "rgb(191,127,63)", + "Hovered Links": "rgb(191,127,63)", + "Navigation Links": "rgba(0,0,0,.7)", + "Hovered Navigation Links": "rgb(211,54,130)", + "Subjects": "rgba(0,0,0,.7)", + "Names": "rgba(0,0,0,.7)", + "Sage": "rgb(204,102,102)", + "Tripcodes": "rgb(191,127,63)", + "Emails": "rgb(191,127,63)", + "Post Numbers": "rgb(191,127,63)", + "Text": "rgba(0,0,0,.7)", + "Backlinks": "rgb(191,127,63)", + "Greentext": "rgb(107,122,30)", + "Board Title": "rgba(0,0,0,.7)", + "Timestamps": "rgba(0,0,0,.7)", + "Inputs": "rgba(0,0,0,.7)", + "Warnings": "rgb(204,102,102)", + "Shadow Color": "rgba(0,0,0,.07)", + "Custom CSS": ".rice {\n box-shadow:rgba(255,255,255,.3) 0 1px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#options input:not([type=checkbox]):hover {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\n.reply.post,\n.op.post {\n background-color: transparent !important;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#options input:focus {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\na {\n -moz-transition: text-shadow .2s;\n -o-transition: text-shadow .2s;\n -webkit-transition: text-shadow .2s;\n}\na:hover {\n text-shadow: 0 0 3px rgba(232,118,0,.7);\n}\nbutton,\ninput,\ntextarea,\n.rice {\n transition:\n background .2s,\n box-shadow .2s;\n}\n.subject:not(:empty)::after {\n content: \" by\";\n font-weight: normal;\n}" + }, + "4chan Dark Upgrade": { + "Author": "Ahoka", + "Author Tripcode": "!.pC/AHOKAg", + "Background Image": "url(\"http://i.minus.com/iNkJoDJkLU0co.png\")", + "Background Attachment": "fixed", + "Background Position": "top left", + "Background Repeat": "repeat", + "Background Color": "rgb(36,36,36)", + "Dialog Background": "rgba(51,51,51,.98)", + "Dialog Border": "rgb(58,58,58)", + "Thread Wrapper Background": "rgba(51,51,51,.5)", + "Thread Wrapper Border": "rgba(58,58,58,.9)", + "Reply Background": "rgba(51,51,51,.9)", + "Reply Border": "rgb(58,58,58)", + "Highlighted Reply Background": "rgba(47,47,47,.9)", + "Highlighted Reply Border": "rgb(221,221,221)", + "Backlinked Reply Outline": "rgb(221,221,221)", + "Checkbox Background": "rgba(47,47,47,.9)", + "Checkbox Border": "rgb(15,15,15)", + "Checkbox Checked Background": "rgb(47,47,47)", + "Input Background": "rgba(47,47,47,.9)", + "Input Border": "rgb(15,15,15)", + "Hovered Input Background": "rgba(31,31,31,.9)", + "Hovered Input Border": "rgb(15,15,15)", + "Focused Input Background": "rgba(31,31,31,.9)", + "Focused Input Border": "rgb(15,15,15)", + "Buttons Background": "rgba(47,47,47,.9)", + "Buttons Border": "rgb(15,15,15)", + "Navigation Background": "rgba(36,36,36,0.8)", + "Navigation Border": "rgb(51,51,51)", + "Quotelinks": "rgb(221,221,221)", + "Links": "rgb(221,221,221)", + "Hovered Links": "rgb(238,238,238)", + "Navigation Links": "rgb(255,255,255)", + "Hovered Navigation Links": "rgb(238,238,238)", + "Subjects": "rgb(153,153,153)", + "Names": "rgb(255,255,255)", + "Sage": "rgb(177,115,133)", + "Tripcodes": "rgb(167,220,231)", + "Emails": "rgb(221,221,221)", + "Post Numbers": "rgb(221,221,221)", + "Text": "rgb(255,255,255)", + "Backlinks": "rgb(221,221,221)", + "Greentext": "rgb(99,153,91)", + "Board Title": "rgb(255,255,255)", + "Timestamps": "rgb(170,170,170)", + "Inputs": "rgb(255,255,255)", + "Warnings": "rgb(177,115,133)", + "Shadow Color": "rgba(0,0,0,0.2)", + "Custom CSS": "html {\n}\n.thread {\n padding: 3px 4px;\n}\n.rice {\n box-shadow:rgba(83,83,83,.3) 0 1px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#options input:not([type=checkbox]):hover {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#options input:focus {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\n transition:background .2s,box-shadow .2s;\n}\n#delform {\n background: rgba(22,22,22,.8) !important;\n border: 0 !important;\n padding: 1px !important;\n box-shadow: rgba(0,0,0,.8) 0 0 10px;\n}\ndiv.reply.post {\n background-image: -moz-repeating-linear-gradient(45deg, #303030, #292929, #303030, #303030 3px) !important;\n background-image: -o-repeating-linear-gradient(45deg, #303030, #292929, #303030, #303030 3px) !important;\n background-image: -webkit-repeating-linear-gradient(45deg, #303030, #292929, #303030, #303030 3px) !important;\n border-bottom:#1f1f1f!important;\n}\n.thread:not(.stub) {\n background: 0 !important\n}\na:not([href='javascript:;']){\n text-shadow: #0f0f0f 0 1px;\n}" + }, + "安心院なじみ ": { + "Author": "Ahoka", + "Author Tripcode": "!.pC/AHOKAg", + "Background Image": "url(\"http://i.imgur.com/RewHm.png\")", + "Background Attachment": "fixed", + "Background Position": "bottom right", + "Background Repeat": "no-repeat", + "Background Color": "rgb(255,255,255)", + "Dialog Background": "rgba(239,239,239,.98)", + "Dialog Border": "rgb(214,214,214)", + "Thread Wrapper Background": "rgba(239,239,239,.4)", + "Thread Wrapper Border": "rgba(214,214,214,.9)", + "Reply Background": "rgba(239,239,239,.9)", + "Reply Border": "rgb(214,214,214)", + "Highlighted Reply Background": "rgba(235,235,235,.9)", + "Highlighted Reply Border": "rgb(191,128,64)", + "Backlinked Reply Outline": "rgb(191,128,64)", + "Checkbox Background": "rgba(204,204,204,.9)", + "Checkbox Border": "rgb(187,187,187)", + "Checkbox Checked Background": "rgb(204,204,204)", + "Input Background": "rgba(204,204,204,.9)", + "Input Border": "rgb(187,187,187)", + "Hovered Input Background": "rgba(188,188,188,.9)", + "Hovered Input Border": "rgb(187,187,187)", + "Focused Input Background": "rgba(188,188,188,.9)", + "Focused Input Border": "rgb(187,187,187)", + "Buttons Background": "rgba(204,204,204,.9)", + "Buttons Border": "rgb(187,187,187)", + "Navigation Background": "rgba(255,255,255,0.8)", + "Navigation Border": "rgb(239,239,239)", + "Quotelinks": "rgb(191,128,64)", + "Links": "rgb(191,128,64)", + "Hovered Links": "rgb(191,128,64)", + "Navigation Links": "rgb(77,77,76)", + "Hovered Navigation Links": "rgb(191,128,64)", + "Subjects": "rgb(77,77,77)", + "Names": "rgb(43,128,194)", + "Sage": "rgb(200,40,41)", + "Tripcodes": "rgb(62,153,159)", + "Emails": "rgb(191,128,64)", + "Post Numbers": "rgb(191,128,64)", + "Text": "rgb(77,77,76)", + "Backlinks": "rgb(191,128,64)", + "Greentext": "rgb(113,140,0)", + "Board Title": "rgb(77,77,76)", + "Timestamps": "rgb(77,77,76)", + "Inputs": "rgb(77,77,76)", + "Warnings": "rgb(200,40,41)", + "Shadow Color": "rgba(0,0,0,.05)", + "Custom CSS": ".thread {\n padding: 1px;\n}\n.rice {\n box-shadow:rgba(255,255,255,.3) 0 1px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#options input:not([type=checkbox]):hover {\n box-shadow: inset rgba(0,0,0,.2) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#options input:focus {\n box-shadow: inset rgba(0,0,0,.2) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\n transition: background .2s,box-shadow .2s;\n}" + }, + "violaceous": { + "Author": "Anonymous", + "Author Tripcode": "!MaSoOdDwDw", + "Background Color": "rgb(18,19,20)", + "Dialog Background": "rgba(27,27,27,.98)", + "Dialog Border": "rgb(41,42,43)", + "Thread Wrapper Background": "rgba(27,27,27,.5)", + "Thread Wrapper Border": "rgba(41,42,43,.9)", + "Reply Background": "rgba(27,27,27,.9)", + "Reply Border": "rgba(27,27,27,.9)", + "Highlighted Reply Background": "rgba(31,31,31,.9)", + "Highlighted Reply Border": "rgb(42,127,160)", + "Backlinked Reply Outline": "rgb(42,127,160)", + "Checkbox Background": "rgba(24,25,26,.9)", + "Checkbox Border": "rgb(18,19,20)", + "Checkbox Checked Background": "rgb(24,25,26)", + "Input Background": "rgba(24,25,26,.9)", + "Input Border": "rgb(18,19,20)", + "Hovered Input Background": "rgba(40,41,42,.9)", + "Hovered Input Border": "rgb(18,19,20)", + "Focused Input Background": "rgba(40,41,42,.9)", + "Focused Input Border": "rgb(18,19,20)", + "Buttons Background": "rgba(24,25,26,.9)", + "Buttons Border": "rgb(18,19,20)", + "Navigation Background": "rgba(18,19,20,0.8)", + "Navigation Border": "rgb(27,27,27)", + "Quotelinks": "rgb(42,127,160)", + "Links": "rgb(42,127,160)", + "Hovered Links": "rgb(48,144,181)", + "Navigation Links": "rgb(221,221,221)", + "Hovered Navigation Links": "rgb(48,144,181)", + "Subjects": "rgb(6,152,154)", + "Names": "rgb(164,151,176)", + "Sage": "rgb(79,79,79)", + "Tripcodes": "rgb(189,43,131)", + "Emails": "rgb(42,127,160)", + "Post Numbers": "rgb(42,127,160)", + "Text": "rgb(221,221,221)", + "Backlinks": "rgb(42,127,160)", + "Greentext": "rgb(0,171,63)", + "Board Title": "rgb(221,221,221)", + "Timestamps": "rgb(221,221,221)", + "Inputs": "rgb(221,221,221)", + "Warnings": "rgb(79,79,79)", + "Shadow Color": "rgba(0,0,0,.1)", + "Custom CSS": ".thread {\n padding: 1px;\n}\n.rice {\n box-shadow:rgba(59,59,59,.3) 0 1px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#options input:not([type=checkbox]):hover {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#options input:focus {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\n transition:background .2s,box-shadow .2s;\n}" + }, + "Mesa": { + "Author": "Tristan", + "Author Tripcode": "!..NoTrip..", + "Background Color": "#3c212a", + "Thread Wrapper Background": "rgba(0,0,0,0)", + "Thread Wrapper Border": "rgba(0,0,0,0)", + "Dialog Background": "#3c212a", + "Dialog Border": "#171717", + "Reply Background": "#3c212a", + "Reply Border": "#171717", + "Highlighted Reply Background": "#3c212a", + "Highlighted Reply Border": "#bfa977", + "Backlinked Reply Outline": "#bfa977", + "Input Background": "#3c212a", + "Input Border": "#171717", + "Checkbox Background": "#3c212a", + "Checkbox Border": "#171717", + "Checkbox Checked Background": "rgba(17,17,17,1)", + "Buttons Background": "#3c212a", + "Buttons Border": "#171717", + "Focused Input Background": "#3c212a", + "Focused Input Border": "#171717", + "Hovered Input Background": "#3c212a", + "Hovered Input Border": "#171717", + "Navigation Background": "#3c212a", + "Navigation Border": "#171717", + "Quotelinks": "#bfa977", + "Backlinks": "#bfa977", + "Links": "#bfa977", + "Hovered Links": "#aa4775", + "Navigation Links": "#bfa977", + "Hovered Navigation Links": "#aa4775", + "Names": "#bfa977", + "Tripcodes": "#aa6d89", + "Emails": "#9c8aaa", + "Subjects": "#bfa977", + "Text": "#BFA977", + "Inputs": "#bfa977", + "Post Numbers": "#bfa977", + "Greentext": "#99848b", + "Sage": "rgb(150,150,150)", + "Board Title": "#aa9d8d", + "Timestamps": "#aa9d8d", + "Warnings": "#aa8575", + "Shadow Color": "rgba(0,0,0,.1)", + "Custom CSS": "", + "Background Image": "", + "Background Attachment": "", + "Background Position": "", + "Background Repeat": "" + } + }; + + Icons = { + header: { + png: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA' + }, + themes: { + oneechan: 'A8AAACWBAMAAADzkc/yAAAAMFBMVEVoaGhsbGxsbGxsbGxsbGxsbGxsbGxsbGxqampsbGxsbGxsbGxlZWVsbGxsbGxsbGzdpWE1AAAAD3RSTlMAfEDYHcNYkhP0pz8MJYTrg0d+AAACwElEQVR4Xp3RT2gTaRjH8W9r/rVJNTl42UvHvYinVGLR7SoZ6+JBD0kpsafVgJale4m67r/DkgEp7EEMsqy2KEwEUdjt0kBZqovY3oQedEBE8GA9iV42TQaTVm0f33lfCAgLZfuDgc/85n2f5zDAonnYIQ5LIwCykrj5hyqc5dWlz35QaMr7c3eKEBGReVVASaRZBOCxiKfRJ7KuMV4x1eGvE7pKjHo8bvwDXXsh0Xqu4AGP/mKT7DRgwTc4IgaXRSSTeQ2i0zbNv2UBjonP9gDMGQC7DQAiGbacbwpjRYB7rsh0DSLN+pnSqxbk7reIfEjb7Iyvwvtw0jSrC7Y6Uy6WzreAPVl1y+rM2STjmaGa3uX/+PNbB+JrHqSnoDJAfy3mQ92hbJG2GFS26KnSIHjtHaClUCM6wBA8RX0KDtf14coUp73YdDDQgvRb4ImMnRJxgPnRsXFZwaTbAl4UTnoASzKYbTsQy14gVD4AvS0g0oblsxCvztrUbUKztVySUSi12ZanQEg+EM6rpleK9OTptxd+AnUmV/0TULeies5GMPmWun8AeCS/uxsOwOHCiM0nOV4zWBp5Y2ncJnYIIJSHeYB4EsIaL2ESgH3wSmPOutzQCH1/ov8gJmF/0SCWXTfgYtuAvl/4jyyLzzYRj5xcJ+6KrfBucbsEcKVaF9dm8oH48u5vB6iLzJhN4qMzIWtF4OFR95p79dkilS+kOLGWdajIVSKuBDhEKKuQkzZRUUj8ekk/MPy5io2qg7Qhd8GGr8o2aRsgZ5EeloZB9zqwQ6PrxkkN8QanTEMpaRD7TTfDsnFwv7rVmdOZ3NnV2a6KZL/Iyv9DKpWydqVSSTrpNFsbCN9mpk8ATIrKWWA2QAsiEqQBYY0Z6FG4cheIytBEC4AE4TUP0GXeoEvaBnG1xSgrTYOS+Hz6M2PffclH1wyYp51t8R8AAAAASUVORK5CYII=', + "4chan SS": 'A8AAACWBAMAAADzkc/yAAAAMFBMVEVmZmZnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2djY2NkZGRnZ2dnZ2dnZ2eHsc5jAAAAD3RSTlMAgEDLkve+G+dSqwcRdCZzKH/3AAACz0lEQVR4Xp2PQWhTdxzHP0vTliQvMaE4NjdoutMOA6NrpeghQaazp4R1XkL15VDR4UbeKiJ4UXCuzG7kgd2lONLbGNmWgKwqGyMQN0QRqruIuKYXi9iDtkmeaaD97Z9/2nfy0n0u+fDl//3+XnA5E+XIoA30bPDnVceC0EfgkynAl6AyulICHhjDi/kYEHx7Ab8NhPpW0bxfbRQAfEcfSasEVGv3RTIQlMlAVlagv7lIRcSi+An05hy4awN3f+a1TKNhqbFvfAG4LW1+BVNLI0pRNDE8cS0p8F364bEpF4FbkJdZAIxs0wIIvSU/AuAdPci2GRj6ooz+jpp8A4RyzvKSFOCZrB46KLUyWUmZKVMybuK+cVvAwAm1s12MXUP73wXYKSKNMHhF0iJ1qIpMqWyebEcymCJjSi4SFzmuk6p+LPP8JXKs0zI3dx7eePOyWn4900ODNsD5xmC8ZUHv5Se/B81J8Lf6xkdOpSE/kmvtWq7aJK0Xze/KNxN8iNeZpyfGpwT+vYc3xT4I/GP7YxwqQTL9W4J8GO6sqJb/OHSPpNvL7/C8OKlvjZ9Qt9zrEDx1Rf+G4iKtMtAlIzOSAKprUF0FsgmV1oGcDW84W9ICirNwfQ3IrxNIvgL8sqdPVgAjKYow4Dn805c6AujXEaq/JURg/BpgTGdINhbhqSTI10pQEZs78dMY8eEyvXNOqeLcAALZkyoEmGs4JS295hiaik5Qlc+zpwFPxSnNqRZncwVVVDt6+brYFJubt36Jbl5n4j2FBV5pU4cLH1twLmmx2wK4EGX3hKx3xLMB7NASHBvUIstff9tJyM93xLg0tkO36lNfqZa74y67t9zrKgj3i7zcnkQikehAJBLGxU3+3yDMDB/9DOBvUSSAYlvWwSeb0qWlAN1Kjn0AeOXK9+sA/EFXYxHQ4QE0QamjCakraOKyiqYqNTQ9W2Ic2ct/3c/SAwz13v8AAAAASUVORK5CYII=' + } + }; + UI = (function() { var Menu, dialog, drag, dragend, dragstart, hover, hoverend, hoverstart, touchend, touchmove; @@ -843,10 +3032,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() { @@ -1151,12 +3341,11 @@ } }), 500); }); - Main.callbacks.push(this.node); return this.setup(); }, setup: function() { + this.addStyleReady(); if (d.head) { - this.addStyleReady(); this.remStyle(); if (!Style.headCount) { return this.cleanup(); @@ -1179,9 +3368,6 @@ }, wrapper: function() { if (d.head) { - if (Style.addStyleReady) { - Style.addStyleReady(); - } Style.remStyle(); if (!Style.headCount || d.readyState === 'complete') { if (Style.observer) { @@ -1224,7 +3410,7 @@ paddingSheet: $.addStyle("", 'padding'), mascot: $.addStyle("", 'mascotSheet') }); - $.addStyle(Style.jsColorCSS(), 'jsColor'); + $.addStyle(JSColor.css(), 'jsColor'); return delete Style.addStyleReady; }, remStyle: function() { @@ -1262,6 +3448,235 @@ b: parseInt(bgHex.substr(4, 2), 16) / 255 }); return "filter: url(\"data:image/svg+xml,#filters\");"; + }, + layout: function() { + var agent, css, editSpace, position, width, xOffset, _conf; + + _conf = Conf; + agent = Style.agent; + xOffset = _conf["Sidebar Location"] === "left" ? '' : '-'; + position = { + right: { + hide: parseInt(_conf['Right Thread Padding'], 10) < 100 ? "right" : "left", + minimal: "right" + }[_conf["Sidebar"]] || "left", + left: parseInt(_conf['Right Thread Padding'], 10) < 100 ? "right" : "left" + }[_conf["Sidebar Location"]]; + Style['sidebarOffset'] = _conf["Sidebar"] === "large" ? { + W: 51, + H: 17 + } : { + W: 0, + H: 0 + }; + Style.logoOffset = _conf["4chan Banner"] === "at sidebar top" ? 83 + Style.sidebarOffset.H : 0; + width = 248 + Style.sidebarOffset.W; + Style.sidebarLocation = _conf["Sidebar Location"] === "left" ? ["left", "right"] : ["right", "left"]; + if (_conf['editMode'] === "theme") { + editSpace = {}; + editSpace[Style.sidebarLocation[1]] = 300; + editSpace[Style.sidebarLocation[0]] = 0; + } else { + editSpace = { + left: 0, + right: 0 + }; + } + Style.sidebar = { + minimal: 20, + hide: 2 + }[_conf.Sidebar] || (252 + Style.sidebarOffset.W); + Style.replyMargin = _conf["Post Spacing"]; + return css = "/* Cleanup */\n#absbot,\n#delPassword,\n#delform > hr:last-of-type,\n#navbotright,\n#postForm,\n#styleSwitcher,\n.boardBanner > div,\n.mobile,\n.postingMode,\n.riced,\n.sideArrows,\n.stylechanger,\nbody > br,\nbody > div[style^=\"text-align\"],\nbody > hr {\n display: none;\n}\n/* Empties */\n#qr .warning:empty,\n#threadselect:empty {\n display: none;\n}\n/* File Name Trunctuate */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull {\n display: none;\n}\n/* Unnecessary */\n#qp input,\n#qp .rice,\n.inline .rice {\n display: none !important;\n}\n/* Hidden Content */\n.forwarded,\n.hidden_thread ~ div,\n.hidden_thread ~ a,\n[hidden] {\n display: none !important;\n}\n/* Hidden UI */\n#catalog,\n#navlinks,\n#navtopright,\n.cataloglink,\n.navLinks,\na[style=\"cursor: pointer; float: right;\"] {\n position: fixed;\n top: 100%;\n left: 100%;\n}\n/* Hide last horizontal rule, keep clear functionality. */\n.board > hr:last-of-type {\n visibility: hidden;\n}\n/* Fappe Tyme */\n.fappeTyme .thread > .noFile {\n display: none;\n}\n/* Defaults */\na {\n text-decoration: " + (_conf["Underline Links"] ? "underline" : "none") + ";\n outline: none;\n}\nbody, html {\n min-height: 100%;\n " + Style.sizing + ": border-box;\n}\nbody {\n outline: none;\n font-size: " + (parseInt(_conf["Font Size"], 10)) + "px;\n font-family: " + _conf["Font"] + ";\n min-height: 100%;\n margin-top: 0;\n margin-bottom: 0;\n margin-" + Style.sidebarLocation[0] + ": " + (/^boards\.4chan\.org$/.test(location.hostname) ? Style.sidebar : '2') + "px;\n margin-" + Style.sidebarLocation[1] + ": 2px;\n padding: 0 " + (parseInt(_conf["Right Thread Padding"], 10) + editSpace["right"]) + "px 0 " + (parseInt(_conf["Left Thread Padding"], 10) + editSpace["left"]) + "px;\n}\n" + (_conf["4chan SS Sidebar"] && /^boards\.4chan\.org$/.test(location.hostname) ? "body::before { content: ''; position: fixed; top: 0; bottom: 0; " + Style.sidebarLocation[0] + ": 0; width: " + (_conf["Sidebar"] === 'large' ? 305 : _conf['Sidebar'] === 'normal' ? 254 : _conf['Sidebar'] === 'minimal' ? 27 : 0) + "px; z-index: 1; " + Style.sizing + ": border-box; display: block;}body { padding-" + Style.sidebarLocation[0] + ": 2px;}" : "") + "\nbutton,\ninput,\ntextarea {\n font-size: " + (parseInt(_conf["Font Size"], 10)) + "px;\n font-family: " + _conf["Font"] + ";\n}\nhr {\n clear: both;\n border: 0;\n padding: 0;\n margin: 0 0 1px;\n " + (_conf['Hide Horizontal Rules'] ? 'visibility: hidden;' : '') + "\n}\n.center {\n text-align: center;\n}\n/* Symbols */\n.dropmarker {\n vertical-align: middle;\n display: inline-block;\n margin: 2px 2px 3px;\n border-top: .5em solid;\n border-right: .3em solid transparent;\n border-left: .3em solid transparent;\n}\n/* Thread / Reply Nav */\n#navlinks a {\n position: fixed;\n z-index: 12;\n opacity: 0.5;\n display: inline-block;\n border-right: 6px solid transparent;\n border-left: 6px solid transparent;\n margin: 1.5px;\n}\n/* Navigation */\n#boardNavDesktop {\n z-index: 6;\n border-width: 1px;\n" + { + "sticky top": " position: fixed; top: 0; border-top-width: 0; " + (_conf["Rounded Edges"] ? "border-radius: 0 0 3px 3px;" : ""), + "sticky bottom": " position: fixed; bottom: 0; border-bottom-width: 0; " + (_conf["Rounded Edges"] ? "border-radius: 3px 3px 0 0;" : ""), + "top": " position: absolute; top: 0; border-top-width: 0; " + (_conf["Rounded Edges"] ? "border-radius: 0 0 3px 3px;" : ""), + "hide": " position: fixed; top: 110%;" + }[_conf['Boards Navigation']] + "\n" + (_conf['4chan SS Navigation'] ? " left: 0; right: 0; border-left: 0; border-right: 0; border-radius: 0 !important;" : " " + Style.sidebarLocation[0] + ": " + (Style.sidebar + parseInt(_conf["Right Thread Padding"], 10) + editSpace["right"]) + "px; " + Style.sidebarLocation[1] + ": " + (parseInt(_conf["Left Thread Padding"], 10) + editSpace["left"] + 2) + "px;") + "\n" + (_conf["Hide Navigation Decorations"] ? " font-size: 0; color: transparent; word-spacing: 2px;" : "") + "\n text-align: " + _conf["Navigation Alignment"] + ";\n}\n/* Pagination */\n.pagelist {\n border-width: 1px;\n text-align: " + _conf["Pagination Alignment"] + ";\n" + (_conf['4chan SS Navigation'] ? " left: 0; right: 0; border-left: 0; border-right: 0; border-radius: 0 !important;" : " " + Style.sidebarLocation[0] + ": " + (Style.sidebar + parseInt(_conf["Right Thread Padding"], 10) + editSpace["right"]) + "px; " + Style.sidebarLocation[1] + ": " + (parseInt(_conf["Left Thread Padding"], 10) + editSpace["left"] + 2) + "px;") + "\n" + { + "sticky top": " position: fixed; top: 0; border-top-width: 0; " + (_conf["Rounded Edges"] ? "border-radius: 0 0 3px 3px;" : ""), + "sticky bottom": " position: fixed; bottom: 0; border-bottom-width: 0; " + (_conf["Rounded Edges"] ? "border-radius: 3px 3px 0 0;" : ""), + "top": " position: absolute; top: 0; border-top-width: 0; " + (_conf["Rounded Edges"] ? "border-radius: 0 0 3px 3px;" : ""), + "bottom": " position: static; " + (_conf["Rounded Edges"] ? "border-radius: 3px 3px 0 0;" : ""), + "hide": " display: none;", + "on side": " position: fixed; padding: 0; top: auto; bottom: " + (['fixed', 'transparent fade'].contains(_conf['Post Form Style']) ? 21.6 + (Conf['Show Post Form Header'] ? 1.5 : 0) + (Conf['Post Form Decorations'] ? 0.2 : 0) : .5) + "em; " + Style.sidebarLocation[1] + ": auto; " + Style.sidebarLocation[0] + ": " + (250 + Style.sidebarOffset.W) + "px position: fixed;" + (Style.sidebarLocation[0] === 'right' ? " " + agent + "transform: rotate(90deg); " + agent + "transform-origin: bottom right;" : " " + agent + "transform: rotate(-90deg); " + agent + "transform-origin: bottom left;") + " z-index: 6; margin: 0; background: none transparent !important; border: 0 none !important; text-align: right;" + }[_conf['Pagination']] + "\n" + (_conf["Hide Navigation Decorations"] ? " font-size: 0; color: transparent; word-spacing: 0;" : "") + "\n z-index: 6;\n}\n.pagelist input,\n.pagelist div {\n vertical-align: middle;\n}\n#boardNavDesktop a {\n font-size: " + (parseInt(_conf["Font Size"], 10)) + "px;\n}\n" + (_conf["Hide Navigation Decorations"] ? ".pages a { margin: 0 1px; font-size: " + (parseInt(_conf["Font Size"], 10)) + "px;}" : "") + "\n.next,\n.pages,\n.prev {\n display: inline-block;\n margin: 0 3px;\n}\n/* Banner */\n.boardBanner {\n line-height: 0;\n}\n" + (_conf["Faded 4chan Banner"] ? ".boardBanner { opacity: 0.5; " + agent + "transition: opacity 0.3s ease-in-out .5s;}.boardBanner:hover { opacity: 1; " + agent + "transition: opacity 0.3s ease-in;}" : "") + "\n" + (_conf["4chan Banner Reflection"] ? "/* From 4chan SS / OneeChan */.gecko .boardBanner::after { background-image: -moz-element(#Banner); bottom: -100%; content: ''; left: 0; mask: url(\"data:image/svg+xml, #mask\"); opacity: 0.3; position: absolute; right: 0; top: 100%; -moz-transform: scaleY(-1); z-index: -1;}.webkit #Banner { -webkit-box-reflect: below 0 -webkit-linear-gradient(rgba(255,255,255,0), rgba(255,255,255,0) 10%, rgba(255,255,255,.5));}" : "") + "\n" + { + "at sidebar top": ".boardBanner { position: fixed; top: 18px; " + Style.sidebarLocation[0] + ": 2px;}.boardBanner img { width: " + width + "px;}", + "at sidebar bottom": ".boardBanner { position: fixed; bottom: 270px; " + Style.sidebarLocation[0] + ": 2px;}.boardBanner img { width: " + width + "px;}", + "under post form": " .boardBanner { position: fixed; bottom: 130px; " + Style.sidebarLocation[0] + ": 2px;}.boardBanner img { width: " + width + "px;}", + "at top": ".boardBanner { position: relative; display: table; margin: 12px auto; text-align: center;}", + "hide": ".boardBanner { display: none;}" + }[_conf["4chan Banner"]] + "\n/* Board Title */\n#boardTitle {\n font-size: " + (parseInt(_conf["Font Size"], 10) + 10) + "px;\n text-align: center;\n z-index: 4;\n" + { + "at sidebar top": " position: fixed; " + Style.sidebarLocation[0] + ": 2px; top: " + ((Style.logoOffset === 0 && _conf["Icon Orientation"] !== "vertical" ? 40 : 21) + Style.logoOffset) + "px; width: " + width + "px;", + "at sidebar bottom": " position: fixed; " + Style.sidebarLocation[0] + ": 2px; bottom: 280px; width: " + width + "px;", + "under post form": " position: fixed; " + Style.sidebarLocation[0] + ": 2px; bottom: 140px; width: " + width + "px;", + "at top": " margin: 12px 0;", + "hide": " display: none;" + }[_conf["Board Title"]] + "\n}\n.boardTitle a {\n font-size: " + (parseInt(_conf["Font Size"], 10) + 10) + "px;\n}\n.boardSubtitle,\n.boardSubtitle a {\n font-size: " + (parseInt(_conf["Font Size"], 10) - 1) + "px;\n}\n/* Dialogs */\n.move {\n cursor: pointer;\n}\n#ihover {\n position: fixed;\n max-height: 97%;\n max-width: 75%;\n padding: 10px;\n z-index: 22;\n}\n#qp {\n position: fixed;\n z-index: 22;\n}\n#qp .postMessage::after {\n clear: both;\n display: block;\n content: \"\";\n}\n#qp .fullSize {\n max-height: 300px;\n max-width: 500px;\n}\n#menu {\n position: absolute;\n outline: none;\n z-index: 22;\n}\n/* Updater */\n#updater {\n position: fixed;\n z-index: 10;\n padding: 0 1px 1px;\n border: 1px solid transparent;\n " + (_conf["Rounded Edges"] ? "border-radius: 3px;" : "") + "\n}\n#updater:not(:hover) > div:not(.move) {\n display: none;\n}\n#updater input {\n text-align: right;\n}\n#updater .rice {\n float: left;\n}\n#updater .field {\n width: 50px;\n}\n/* Stats */\n#stats {\n position: fixed;\n " + (_conf["Rounded Edges"] ? "border-radius: 3px;" : "") + "\n}\n/* Image Expansion */\n#imgControls .rice {\n display: none;\n}\n#imgControls {\n width: 15px;\n overflow-x: hidden;\n overflow-y: visible;\n}\n#imgContainer {\n float: " + Style.sidebarLocation[0] + ";\n}\n#imgContainer,\n#imgControls:hover {\n width: 110px;\n}\n#imgControls label {\n float: " + Style.sidebarLocation[0] + ";\n}\n#imgControls .selectrice {\n float: " + Style.sidebarLocation[1] + ";\n width: 90px;\n}\n.fitwidth .fullSize {\n max-width: 100%;\n width: 100%;\n}\n\n" + (_conf['Images Overlap Post Form'] ? ".fullSize { position: relative; z-index: 22;}" : "") + "\n/* Prefetcher */\n#prefetch {\n z-index: 9;\n position: fixed;\n}\n/* Delete Buttons */\n" + (_conf['Hide Delete UI'] ? ".deleteform,.post .rice { display: none;}.postInfo { padding: 0 0 0 3px;}" : ".deleteform { position: fixed; z-index: 18; width: 0; bottom: 0; right: 0; border-width: 1px 0 0 1px; border-style: solid; font-size: 0; color: transparent; max-height: 1.6em;}.deleteform:hover { width: auto;}.deleteform::before { z-index: 18; border-width: 1px 0 0 1px; border-style: solid; content: 'X'; display: block; position: fixed; bottom: 0; right: 0; font-size: " + _conf['Font Size'] + "px; " + Style.sizing + ": border-box; height: 1.6em; width: 1.4em; text-align: center;}.deleteform:hover::before { display: none;}.deleteform input { margin: 0 1px 0 0;}") + "\n/* Slideout Navigation */\n#boardNavDesktopFoot {\n position: fixed;\n width: " + width + "px;\n " + Style.sidebarLocation[0] + ": 2px;\n text-align: center;\n font-size: 0;\n color: transparent;\n overflow: hidden;\n " + Style.sizing + ": border-box;\n}\n#boardNavDesktopFoot a,\n#boardNavDesktopFoot a::after,\n#boardNavDesktopFoot a::before {\n font-size: " + _conf['Font Size'] + "px;\n}\n#boardNavDesktopFoot:hover {\n overflow-y: auto;\n padding: 2px;\n}\n#boardNavDesktopFoot:not(:hover) {\n border-color: transparent;\n background-color: transparent;\n height: 0;\n overflow: hidden;\n padding: 0;\n border: 0 none;\n}\n" + { + compact: "#boardNavDesktopFoot { word-spacing: 1px;}", + list: "#boardNavDesktopFoot a { display: block;}#boardNavDesktopFoot:hover { max-height: 400px;}#boardNavDesktopFoot a::after { content: ' - ' attr(title);}#boardNavDesktopFoot a[href*='//boards.4chan.org/']::after,#boardNavDesktopFoot a[href*='//rs.4chan.org/']::after { content: '/ - ' attr(title);}#boardNavDesktopFoot a[href*='//boards.4chan.org/']::before,#boardNavDesktopFoot a[href*='//rs.4chan.org/']::before { content: '/';}", + hide: "#boardNavDesktopFoot { display: none;}" + }[_conf["Slideout Navigation"]] + "\n/* Watcher */\n#watcher {\n position: fixed;\n z-index: 14;\n padding: 2px;\n " + (_conf["Rounded Edges"] ? "border-radius: 3px;" : "") + "\n}\n" + (_conf['Slideout Watcher'] ? "#watcher { width: " + width + "px; " + Style.sidebarLocation[0] + ": 2px !important; " + Style.sidebarLocation[1] + ": auto !important; " + Style.sizing + ": border-box;}#watcher .move { cursor: default; text-decoration: " + (_conf["Underline Links"] ? "underline" : "none") + ";}#watcher > div { max-height: 1.6em; overflow: hidden;}#watcher:hover { overflow-y: auto;}#watcher:not(:hover) { height: 0; overflow: hidden; border: 0 none; padding: 0;}" : "#watcher { width: 200px;}") + "\n/* Announcements */\n#globalMessage {\n text-align: center;\n " + (_conf["Rounded Edges"] ? "border-radius: 3px;" : "") + "\n}\n" + (_conf['Announcements'] === 'slideout' ? "#globalMessage { position: fixed; padding: 2px; width: " + width + "px; " + Style.sidebarLocation[0] + ": 2px !important; " + Style.sidebarLocation[1] + ": auto !important;}#globalMessage h3 { margin: 0;}#globalMessage:hover { " + Style.sizing + ": border-box; overflow-y: auto;}#globalMessage:not(:hover) { height: 0; overflow: hidden; padding: 0; border: 0 none;}" : "") + "\n/* Threads */\n.thread {\n margin: " + (parseInt(_conf["Top Thread Padding"], 10)) + "px 0 " + (parseInt(_conf["Bottom Thread Padding"], 10)) + "px 0;\n " + (_conf["Rounded Edges"] ? "border-radius: 4px;" : "") + "\n}\n/* Thread Clearfix */\n.thread > div:last-of-type::after {\n display: block;\n content: ' ';\n clear: both;\n}\n/* Posts */\n.summary {\n margin-bottom: " + Style.replyMargin + "px;\n}\n.post {\n margin-bottom: " + Style.replyMargin + "px;\n}\n.replyContainer:last-of-type .post {\n margin-bottom: 0;\n}\n.menu_button,\n.hide_thread_button,\n.hide_reply_button {\n float: right;\n margin: 0 3px;\n opacity: 0;\n " + agent + "transition: opacity .3s ease-out 0s;\n}\n.post:hover .hide_reply_button,\n.post:hover .menu_button,\n.post:hover .hide_thread_button,\n.hidden_thread .hide_thread_button,\n.hidden_thread .menu_button,\n.inline .hide_reply_button,\n.inline .menu_button {\n opacity: 1;\n}\n.hidden_thread {\n text-align: right;\n}\n" + (_conf['Color user IDs'] ? ".posteruid .hand { padding: .1em .3em; border-radius: 1em; font-size: 80%;}" : "") + "\n.postInfo > span {\n vertical-align: bottom;\n}\n.subject,\n.name {\n " + (_conf["Bolds"] ? 'font-weight: 600;' : '') + "\n}\n.postertrip {\n " + (_conf["Italics"] ? 'font-style: italic;' : '') + "\n}\n.replylink {\n text-decoration: " + (_conf["Underline Links"] ? "underline" : "none") + ";\n}\n.fileInfo {\n padding: 0 3px;\n}\n.fileThumb {\n float: left;\n margin: 3px 20px;\n outline: none;\n}\n.reply.post {\n display: inline-block;\n " + Style.sizing + ": border-box;\n " + (_conf["Fit Width Replies"] ? "width: 100%;" : "") + "\n}\n.post {\n " + (_conf["Rounded Edges"] ? "border-radius: 3px;" : "") + "\n}\n.postMessage {\n margin: " + _conf['Vertical Post Padding'] + "px " + _conf['Horizontal Post Padding'] + "px;\n}\n.spoiler,\ns {\n text-decoration: none;\n}\n/* Reply Clearfix */\n.reply.post .postMessage {\n clear: right;\n}\n" + (_conf['Force Reply Break'] || _conf["OP Background"] ? ".op.post .postMessage { display: block; content: ' '; clear: both;}" : "") + "\n/* OP */\n.favicon {\n vertical-align: bottom;\n}\n" + (_conf["OP Background"] ? ".op.post { " + Style.sizing + ": border-box;}" : "") + "\n/* Summary */\n" + (_conf["Fit Width Replies"] ? ".summary { clear: both; float: left; }" : "") + "\n/* Inlined */\n.inline {\n margin: 2px 8px 2px 2px;\n}\n.post .inline {\n margin: 2px;\n}\n.inline .replyContainer {\n display: inline-block;\n}\n/* Inlined Clearfix */\n.inline .postMessage::after {\n clear: both;\n display: block;\n content: \"\";\n}\n/* Quotes */\n.inlined {\n font-style: italic;\n " + (_conf["Bolds"] ? 'font-weight: 800;' : '') + "\n}\n.quotelink {\n text-decoration: " + (_conf["Underline Links"] ? "underline" : "none") + ";\n}\n.filtered,\n.quotelink.filtered {\n text-decoration: underline;\n text-decoration: line-through !important;\n}\n/* Backlinks */\n.backlink {\n text-decoration: " + (_conf["Underline Links"] ? "underline" : "none") + ";\n}\n.backlink.dead {\n text-decoration: none;\n}\n" + { + "lower left": ".container { padding: 0 5px; max-width: 100%;}.reply.quoted { position: relative; padding-bottom: 1.7em;}.reply .container { position: absolute; left: 0; bottom: 0; padding: 0 5px;}.reply .container::before { content: 'REPLIES: ';}#qp .container { position: static; max-width: 100%;}#qp .container::before { content: '';}.inline .container { position: static; max-width: 100%;}.inline .container::before { content: '';}", + 'lower right': ".reply.quoted { position: relative; padding-bottom: 1.7em;}.reply .container { position: absolute; right: 0; bottom: 0;}.container::before { content: 'REPLIES: ';}.container { max-width: 100%; padding: 0 5px;}#qp .container { position: static; max-width: 100%;}#qp .container::before { content: '';}.inline .container { position: static; float: none;}.inline .container::before { content: '';}", + 'default': "" + }[_conf["Backlinks Position"]] + "\n/* Code */\n.prettyprint {\n " + Style.sizing + ": border-box;\n font-family: monospace;\n display: inline-block;\n margin-right: auto;\n white-space: pre-wrap;\n border-radius: 2px;\n overflow-x: auto;\n padding: 3px;\n max-width: 100%;\n}\n/* Menu */\n.entry {\n border-bottom: 1px solid rgba(0,0,0,.25);\n cursor: pointer;\n display: block;\n outline: none;\n padding: 3px 7px;\n position: relative;\n text-decoration: none;\n white-space: nowrap;\n}\n.entry:last-child {\n border-bottom: 0;\n}\n.hasSubMenu::after {\n content: \"\";\n border-" + position + ": .5em solid;\n border-top: .3em solid transparent;\n border-bottom: .3em solid transparent;\n display: inline-block;\n margin: .3em;\n position: absolute;\n right: 3px;\n}\n.subMenu {\n display: none;\n position: absolute;\n " + position + ": 100%;\n top: -1px;\n}\n.focused .subMenu {\n display: block;\n}\n/* Stubs */\n" + (_conf['Fit Width Replies'] ? ".stub { float: right; clear: both;}" : "") + "\n/* Emoji */\n" + (_conf["Emoji"] !== "disable" ? Emoji.css(_conf["Emoji Position"]) : "") + "\n/* Element Replacing */\n/* Checkboxes */\n.rice {\n cursor: pointer;\n width: 9px;\n height: 9px;\n margin: 2px 3px 3px;\n display: inline-block;\n vertical-align: bottom;\n " + (_conf["Rounded Edges"] ? "border-radius: 2px;" : "") + "\n " + (_conf["Circle Checkboxes"] ? "border-radius: 6px;" : "") + "\n}\ninput:checked + .rice {\n background-attachment: scroll;\n background-repeat: no-repeat;\n background-position: bottom right;\n}\n/* Selects */\n.selectrice {\n position: relative;\n cursor: default;\n overflow: hidden;\n text-align: left;\n}\n.selectrice::after {\n content: \"\";\n border-right: .25em solid transparent;\n border-left: .25em solid transparent;\n position: absolute;\n right: .4em;\n top: .5em;\n}\n.selectrice::before {\n content: \"\";\n height: 1.6em;\n position: absolute;\n right: 1.3em;\n top: 0;\n}\n/* Select Dropdown */\n.selectrice ul {\n padding: 0;\n position: fixed;\n max-height: 120px;\n overflow-y: auto;\n overflow-x: hidden;\n z-index: 32;\n}\n/* Post Form */\n#qr {\n z-index: 20;\n position: fixed;\n padding: 1px;\n border: 1px solid transparent;\n min-width: " + width + "px;\n " + (_conf["Rounded Edges"] ? "border-radius: 3px 3px 0 0;" : "") + "\n}\n#qrtab {\n " + (_conf["Rounded Edges"] ? "border-radius: 3px 3px 0 0;" : "") + "\n}\n\n" + ({ + "fixed": "#qr { top: auto !important; bottom: 1.7em !important; " + Style.sidebarLocation[0] + ": 0 !important; " + Style.sidebarLocation[1] + ": auto !important;}", + "slideout": "#qr { top: auto !important; bottom: 1.7em !important; " + Style.sidebarLocation[0] + ": -" + (233 + Style.sidebarOffset.W) + "px !important; " + Style.sidebarLocation[1] + ": auto !important;}#qr:hover,#qr.focus,#qr.dump { " + agent + "transform: translate(" + (xOffset + (233 + Style.sidebarOffset.W)) + "px);}", + "tabbed slideout": "#qr { top: auto !important; bottom: 1.7em !important; " + Style.sidebarLocation[0] + ": -" + (252 + Style.sidebarOffset.W) + "px !important; " + Style.sidebarLocation[1] + ": auto !important;}#qr:hover,#qr.focus,#qr.dump { " + agent + "transform: translate(" + (xOffset + (252 + Style.sidebarOffset.W)) + "px);}#qr #qrtab { " + agent + "transform: rotate(" + (Style.sidebarLocation[0] === "left" ? "" : "-") + "90deg); " + agent + "transform-origin: bottom " + Style.sidebarLocation[0] + "; position: absolute; top: 0; " + Style.sidebarLocation[0] + ": 100%; width: 110px; text-align: center; border-width: 1px 1px 0 1px; cursor: default;}#qr:hover #qrtab,#qr.focus #qrtab,#qr.dump #qrtab { opacity: 0; " + Style.sidebarLocation[0] + ": " + (252 + Style.sidebarOffset.W) + "px;}#qrtab input,#qrtab .rice,#qrtab span { display: none;}", + "transparent fade": "#qr { overflow: visible; top: auto !important; bottom: 1.7em !important; " + Style.sidebarLocation[0] + ": 2px !important; " + Style.sidebarLocation[1] + ": auto !important; opacity: 0.2; " + agent + "transition: opacity .3s ease-in-out 1s;}#qr:hover,#qr.focus,#qr.dump { opacity: 1; " + agent + "transition: opacity .3s linear;}" + }[_conf['Post Form Style']] || "") + "\n\n" + (_conf['Post Form Style'] !== 'tabbed slideout' ? (!(_conf['Post Form Style'] === 'float' || _conf['Show Post Form Header']) ? "#qrtab { display: none; }" : _conf['Post Form Style'] !== 'slideout' ? ".autohide:not(:hover) > form { display: none !important; }" : "") + "#qrtab { margin-bottom: 1px; }" : "") + "\n\n" + (_conf['Post Form Style'] !== 'float' && _conf["Post Form Slideout Transitions"] ? "#qr { " + agent + "transition: " + agent + "transform .3s ease-in-out 1s;}#qr:hover,#qr.focus,#qr.dump { " + agent + "transition: " + agent + "transform .3s linear;}#qrtab { " + agent + "transition: opacity .3s ease-in-out 1s;}#qr:hover #qrtab { " + agent + "transition: opacity .3s linear;}" : "") + "\n\n#qr .close {\n float: right;\n padding: 0 3px;\n}\n#qr .warning {\n min-height: 1.6em;\n vertical-align: middle;\n padding: 0 1px;\n border-width: 1px;\n border-style: solid;\n}\n.userInfo {\n width: 248px;\n max-width: 100%;\n min-width: 100%;\n}\n#dump {\n width: 10%;\n margin: 0;\n}\n\n" + (_conf['Compact Post Form Inputs'] ? ".userInfo input.field { width: 29.6%; margin: 0 0 0 0.4%;}#qr textarea.field { height: 14.8em; min-height: 9em;}#qr.captcha textarea.field { height: 9em;}" : ".userInfo input.field { width: 100%;}.userInfo input.field[name='name'] { width: 89.6%; margin: 0 0 0 0.4%;}#qr textarea.field { height: 11.6em; min-height: 6em;}#qr.captcha textarea.field { height: 6em;}") + "\n\n" + (_conf["Tripcode Hider"] ? "input.field.tripped:not(:hover):not(:focus) { color: transparent !important; text-shadow: none !important;}" : "") + "\n\n#qr textarea {\n resize: " + _conf['Textarea Resize'] + ";\n}\n.captchaimg {\n margin: 1px 0 0;\n text-align: center;\n}\n.captchaimg img {\n width: 100%;\n height: 4em;\n width: 246px;\n}\n.captchainput .field {\n width: 100%;\n margin: 1px 0 0;\n}\n.field,\n.selectrice,\nbutton,\ninput:not([type=radio]) {\n " + Style.sizing + ": border-box;\n font-size: " + (parseInt(_conf['Font Size'], 10)) + "px;\n height: 1.6em;\n margin: 1px 0 0;\n vertical-align: bottom;\n padding: 0 1px;\n}\n#qr textarea {\n min-width: 100%;\n}\n#qr [type='submit'] {\n width: 25%;\n}\n[type='file'] {\n position: absolute;\n opacity: 0;\n z-index: -1;\n}\n#showQR {\n display: " + (_conf["Hide Show Post Form"] ? "none" : "block") + ";\n z-index: 4;\n " + Style.sidebarLocation[0] + ": 2px;\n width: " + width + "px;\n background-color: transparent;\n text-align: center;\n position: fixed;\n top: auto;\n}\n/* Fake File Input */\n#file {\n " + Style.sizing + ": border-box;\n display: inline-block;\n width: 100px;\n min-width: 74.6%;\n max-width: 74.6%;\n margin-right: 0.4%;\n overflow: hidden;\n}\n/* Thread Select / Spoiler Label */\n#threadselect {\n vertical-align: bottom;\n width: 49%;\n display: inline-block;\n}\n#spoilerLabel {\n vertical-align: bottom;\n width: 49%;\n display: inline-block;\n text-align: right;\n}\n#threadselect:empty + #spoilerLabel {\n display: inline-block;\n width: 100%;\n}\n/* Dumping UI */\n.dump #replies {\n display: block;\n}\n#replies {\n display: none;\n height: 90px;\n position: relative;\n}\n#replies > div {\n counter-reset: thumbnails;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow: hidden;\n position: absolute;\n white-space: pre;\n}\n#replies > div:hover {\n overflow-x: auto;\n}\n.thumbnail {\n " + Style.sizing + ": border-box;\n cursor: move;\n border: 1px solid transparent;\n background: rgba(0,0,0,.2) 50% 20% cover;\n display: inline-block;\n height: 90px;\n width: 90px;\n padding: 2px;\n opacity: .5;\n overflow: hidden;\n position: relative;\n text-shadow: 0 1px 1px #000;\n " + agent + "transition: opacity .25s ease-in-out;\n vertical-align: top;\n}\n.thumbnail:hover,\n.thumbnail:focus {\n opacity: .9;\n}\n.thumbnail::before {\n counter-increment: thumbnails;\n content: counter(thumbnails);\n color: #fff;\n position: absolute;\n top: 3px;\n right: 3px;\n text-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.thumbnail#selected {\n opacity: 1;\n}\n.thumbnail.drag {\n box-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.thumbnail.over {\n border-color: #fff;\n}\n.thumbnail > span {\n color: #fff;\n}\n.remove {\n background: none;\n color: #e00;\n font-weight: 700;\n padding: 3px;\n}\na:only-of-type > .remove {\n display: none;\n}\n.remove:hover::after {\n content: \" Remove\";\n}\n.thumbnail > label {\n background: rgba(0,0,0,.5);\n color: #fff;\n right: 0; bottom: 0; left: 0;\n position: absolute;\n text-align: center;\n}\n.thumbnail > label > input {\n margin: 0;\n}\n#addReply {\n cursor: pointer;\n font-size: 3.5em;\n line-height: 90px;\n margin: 0 0.5em;\n}\n/* Ads */\n.topad img,\n.middlead img,\n.bottomad img {\n opacity: 0.3;\n " + agent + "transition: opacity .3s linear;\n}\n.topad img:hover,\n.middlead img:hover,\n.bottomad img:hover {\n opacity: 1;\n}\n" + (_conf["Block Ads"] ? "/* AdBlock Minus */.bottomad + hr,.topad img,.middlead img,.bottomad img { display: none;}" : "") + "\n" + (_conf["Shrink Ads"] ? ".topad a img,.middlead a img,.bottomad a img { width: 500px; height: auto;}" : "") + "\n/* Options */\n#overlay {\n position: fixed;\n z-index: 30;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n background: rgba(0,0,0,.5);\n}\n#options {\n width: auto;\n left: 15%;\n right: 15%;\n top: 15%;\n bottom: 15%;\n position: absolute;\n padding: .3em;\n " + (_conf["Rounded Edges"] ? "border-radius: 3px;" : "") + "\n}\n#options h3,\n.keybinds_tab,\n.mascots_tab,\n.main_tab,\n.style_tab {\n text-align: center;\n}\n.keybinds_tab table,\n.main_tab ul,\n.style_tab ul {\n text-align: left;\n}\n#options ul {\n padding: 0;\n " + (_conf["Rounded Edges"] ? "border-radius: 3px;" : "") + "\n}\n#options .selectrice ul {\n border-radius: 0;\n}\n#optionsContent {\n overflow: auto;\n position: absolute;\n top: 1.7em;\n right: 5px;\n bottom: 5px;\n left: 5px;\n " + (_conf["Rounded Edges"] ? "border-radius: 3px;" : "") + "\n}\n#optionsbar {\n padding: 0 3px;\n}\n#optionsbar label {\n cursor: pointer;\n " + (_conf["Rounded Edges"] ? "border-radius: 3px 3px 0 0;" : "") + "\n}\n.tabs label {\n position: relative;\n padding: 0 4px;\n z-index: 1;\n height: 1.4em;\n display: inline-block;\n border-width: 1px 1px 0 1px;\n border-color: transparent;\n border-style: solid;\n}\n#credits {\n float: right;\n}\n#optionsContent > input:not(:checked) + div {\n display: none;\n}\n#options h3 {\n margin: 0;\n}\n.main_tab li,\n.style_tab li,\n.rice_tab li {\n overflow: visible;\n padding: 0 5px 0 7px;\n list-style-type: none;\n}\n#options tr:nth-of-type(2n+1),\n.main_tab li:nth-of-type(2n+1),\n.rice_tab li:nth-of-type(2n+1),\n.style_tab li:nth-of-type(2n+1),\n.keybinds_tab li:nth-of-type(2n+1),\n.selectrice li:nth-of-type(2n+1) {\n background-color: rgba(0, 0, 0, 0.05);\n}\narticle li {\n margin: 10px 0 10px 2em;\n}\n#options .option {\n width: 50%;\n display: inline-block;\n vertical-align: bottom;\n}\n.optionlabel {\n padding-left: 18px;\n}\n.rice + .optionlabel {\n padding-left: 0;\n}\n#options .style_tab ul,\n#options .main_tab ul {\n vertical-align: top;\n " + (_conf["Single Column Mode"] ? "margin: 0 auto 6px;" : "margin: 0 3px 6px;\n display: inline-block;") + "\n}\n.main_tab li,\n.styleoption {\n text-align: left;\n}\n.style_tab .suboptions ul {\n width: 370px;\n}\n.main_tab ul {\n width: 200px;\n}\n.suboptions,\n#mascotcontent,\n#themecontent {\n overflow: auto;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 1.7em;\n left: 0;\n}\n.mAlign {\n height: 250px;\n vertical-align: middle;\n display: table-cell;\n}\n#themecontent {\n top: 1.7em;\n}\n#save,\n.stylesettings {\n position: absolute;\n right: 10px;\n bottom: 0;\n}\n.style_tab .suboptions {\n bottom: 0;\n}\n#optionsContent textarea {\n font-family: monospace;\n min-height: 350px;\n resize: vertical;\n width: 100%;\n}\n/* Hover Functionality */\n#mouseover {\n z-index: 32;\n position: fixed;\n max-width: 70%;\n}\n#mouseover:empty {\n display: none;\n}\n/* Mascot Tab */\n#mascot_hide {\n padding: 3px;\n position: absolute;\n top: 2px;\n right: 18px;\n}\n#mascot_hide .rice {\n float: left;\n}\n#mascot_hide > div {\n height: 0;\n text-align: right;\n overflow: hidden;\n}\n#mascot_hide:hover > div {\n height: auto;\n}\n#mascot_hide label {\n width: 100%;\n display: block;\n clear: both;\n text-decoration: none;\n}\n.mascots {\n padding: 0;\n text-align: center;\n " + (_conf["Rounded Edges"] ? "border-radius: 3px;" : "") + "\n}\n.mascot,\n.mascotcontainer {\n overflow: hidden;\n}\n.mascot {\n position: relative;\n border: none;\n margin: 5px;\n padding: 0;\n width: 200px;\n display: inline-block;\n background-color: transparent;\n}\n.mascotcontainer {\n height: 250px;\n border: 0;\n margin: 0;\n max-height: 250px;\n cursor: pointer;\n bottom: 0;\n border-width: 0 1px 1px;\n border-style: solid;\n border-color: transparent;\n overflow: hidden;\n}\n.mascot img {\n max-width: 200px;\n}\n.mascotname,\n.mascotoptions {\n padding: 0;\n width: 100%;\n}\n.mascot .mascotoptions {\nopacity: 0;\n " + agent + "transition: opacity .3s linear;\n}\n.mascot:hover .mascotoptions {\n opacity: 1;\n}\n.mascotoptions {\n position: absolute;\n bottom: 0;\n right: 0;\n left: 0;\n}\n.mascotoptions a {\n display: inline-block;\n width: 33%;\n}\n#upload {\n position: absolute;\n width: 100px;\n left: 50%;\n margin-left: -50px;\n text-align: center;\n bottom: 0;\n}\n#mascots_batch {\n position: absolute;\n left: 10px;\n bottom: 0;\n}\n/* Themes Tab */\n.theme_tab h1 {\n position: absolute;\n right: 300px;\n bottom: 10px;\n margin: 0;\n " + agent + "transition: all .2s ease-in-out;\n opacity: 0;\n}\n.theme_tab .selectedtheme h1 {\n right: 11px;\n opacity: 1;\n}\n#themeContainer {\n margin-bottom: 3px;\n}\n#addthemes {\n position: absolute;\n left: 10px;\n bottom: 0;\n}\n.theme {\n margin: 1em;\n}\n/* Theme Editor */\n#themeConf {\n position: fixed;\n " + Style.sidebarLocation[1] + ": 2px;\n " + Style.sidebarLocation[0] + ": auto;\n top: 0;\n bottom: 0;\n width: 296px;\n z-index: 10;\n}\n#themebar input {\n width: 30%;\n}\n.color {\n width: 10%;\n border-left: none !important;\n color: transparent !important;\n}\n.colorfield {\n width: 90%;\n}\n.themevar textarea {\n min-width: 100%;\n max-width: 100%;\n height: 20em;\n resize: vertical;\n}\n/* Mascot Editor */\n#mascotConf {\n position: fixed;\n height: 17em;\n bottom: 0;\n left: 50%;\n width: 500px;\n margin-left: -250px;\n overflow: auto;\n z-index: 10;\n}\n#mascotConf .option,\n#mascotConf .optionlabel {\n " + Style.sizing + ": border-box;\n width: 50%;\n display: inline-block;\n vertical-align: middle;\n}\n#mascotConf .option input {\n width: 100%;\n}\n#close {\n position: absolute;\n left: 10px;\n bottom: 0;\n}\n/* Catalog */\n#content .navLinks,\n#info .navLinks,\n.btn-wrap {\n display: block;\n}\n.navLinks > .btn-wrap:not(:first-of-type)::before {\n content: ' - ';\n}\n.button {\n cursor: pointer;\n}\n#content .btn-wrap,\n#info .btn-wrap {\n display: inline-block;\n}\n#settings .selectrice {\n width: 100px;\n display: inline-block;\n}\n#post-preview {\n position: absolute;\n z-index: 22;\n " + (_conf["Rounded Edges"] ? "border-radius: 3px;" : "") + "\n}\n#settings,\n#threads,\n#info .navLinks,\n#content .navLinks {\n text-align: center;\n}\n#threads .thread {\n vertical-align: top;\n display: inline-block;\n word-wrap: break-word;\n overflow: hidden;\n margin-top: 5px;\n padding: 5px 0 3px;\n text-align: center;\n}\n.extended-small .thread,\n.small .thread {\n width: 165px;\n max-height: 320px;\n}\n.small .teaser,\n.large .teaser {\n display: none;\n}\n.extended-large .thread,\n.large .thread {\n width: 270px;\n max-height: 410px;\n}\n.extended-small .thumb,\n.small .thumb {\n max-width: 150px;\n max-height: 150px;\n}\n/* Front Page */\n#logo {\n text-align: center;\n}\n#doc {\n margin: 0 auto;\n width: 1000px;\n position: relative;\n}\n#boards .boxcontent {\n vertical-align: top;\n text-align: center;\n}\n#filter-container,\n#options-container {\n float: right;\n position: relative;\n}\n#optionsmenu {\n top: 100% !important;\n left: 0 !important;\n}\n#boards .column {\n " + Style.sizing + ": border-box;\n display: inline-block;\n width: 16em;\n text-align: left;\n vertical-align: top;\n}\n.bd ul,\n.boxcontent ul {\n vertical-align: top;\n padding: 0;\n}\n.right-box .boxcontent ul {\n padding: 0 10px;\n}\n.yuimenuitem,\n.boxcontent li {\n list-style-type: none;\n}\n.bd ul {\n margin: 0;\n}\n.yuimenuitem::before {\n content: \" [ ] \";\n font-family: monospace;\n}\n.yuimenuitem-checked::before {\n content: \" [x] \"\n}\n.yui-u {\n display: inline-block;\n vertical-align: top;\n width: 475px;\n margin: 10px;\n}\n#recent-images .boxcontent {\n text-align: center;\n}\n#ft {\n text-align: center;\n}\n#ft ul {\n padding: 0;\n}\n#ft li {\n list-style-type: none;\n display: inline-block;\n width: 100px;\n}\n#preview-tooltip-nws,\n#preview-tooltip-ws,\n#ft .fill,\n.clear-bug {\n display: none;\n}"; + }, + theme: function(theme) { + var agent, backgroundC, bgColor, css, icons, _conf; + + _conf = Conf; + agent = Style.agent; + bgColor = new Style.color(Style.colorToHex(backgroundC = theme["Background Color"])); + Style.lightTheme = bgColor.isLight(); + icons = Icons.header.png + Icons.themes[_conf["Icons"]]; + return css = ".hide_thread_button span > span,\n.hide_reply_button span > span {\n background-color: " + theme["Links"] + ";\n}\n#mascot_hide label {\n border-bottom: 1px solid " + theme["Reply Border"] + ";\n}\n#content .thumb {\n box-shadow: 0 0 5px " + theme["Reply Border"] + ";\n}\n.mascotname,\n.mascotoptions {\n background: " + theme["Dialog Background"] + ";\n border: 1px solid " + theme["Buttons Border"] + ";\n}\n.opContainer.filter_highlight {\n box-shadow: inset 5px 0 " + theme["Backlinked Reply Outline"] + ";\n}\n.filter_highlight > .reply {\n box-shadow: -5px 0 " + theme["Backlinked Reply Outline"] + ";\n}\n::" + agent + "selection {\n background: " + theme["Text"] + ";\n color: " + backgroundC + ";\n}\nhr {\n border-bottom: 1px solid " + theme["Reply Border"] + ";\n}\na[style=\"cursor: pointer; float: right;\"] + div[style^=\"width: 100%;\"] > table > tbody > tr > td {\n background: " + backgroundC + " !important;\n border: 1px solid " + theme["Reply Border"] + " !important;\n}\n#fs_status {\n background: " + theme["Dialog Background"] + " !important;\n}\n#fs_data tr[style=\"background-color: #EA8;\"] {\n background: " + theme["Reply Background"] + " !important;\n}\n#fs_data,\n#fs_data * {\n border-color: " + theme["Reply Border"] + " !important;\n}\nhtml {\n background: " + (backgroundC || '') + ";\n background-image: " + (theme["Background Image"] || '') + ";\n background-repeat: " + (theme["Background Repeat"] || '') + ";\n background-attachment: " + (theme["Background Attachment"] || '') + ";\n background-position: " + (theme["Background Position"] || '') + ";\n}\n#optionsContent,\n#exlinks-options-content,\n#mascotcontent,\n#themecontent {\n background: " + backgroundC + ";\n border: 1px solid " + theme["Reply Border"] + ";\n padding: 5px;\n}\n#selected_tab {\n background: " + backgroundC + ";\n border-color: " + theme["Reply Border"] + ";\n border-style: solid;\n}\n.captchaimg img {\n " + (Style.filter(theme["Text"], theme["Input Background"])) + "\n}\n#boardTitle,\n#prefetch,\n#showQR,\n" + (!_conf["Post Form Decorations"] ? '#spoilerLabel,' : '') + "\n#stats,\n#updater:not(:hover) .move {\n text-shadow:\n 1px 1px 0 " + backgroundC + ",\n -1px -1px 0 " + backgroundC + ",\n 1px -1px 0 " + backgroundC + ",\n -1px 1px 0 " + backgroundC + ",\n 0 1px 0 " + backgroundC + ",\n 0 -1px 0 " + backgroundC + ",\n 1px 0 0 " + backgroundC + ",\n -1px 0 0 " + backgroundC + "\n " + (_conf["Sidebar Glow"] ? ", 0 2px 5px " + theme['Text'] + ";" : ";") + "\n}\n/* Fixes text spoilers */\n" + (_conf['Remove Spoilers'] && _conf['Indicate Spoilers'] ? ".spoiler::before,s::before { content: '[spoiler]';}.spoiler::after,s::after { content: '[/spoiler]';}" : !_conf['Remove Spoilers'] ? ".spoiler:not(:hover) *,s:not(:hover) * { color: rgb(0,0,0) !important; text-shadow: none !important;}.spoiler:not(:hover),s:not(:hover) { background-color: rgb(0,0,0); color: rgb(0,0,0) !important; text-shadow: none !important;}" : "") + "\n#exlinks-options,\n#options,\n#qrtab,\n" + (_conf["Post Form Decorations"] ? "#qr," : "") + "\n#updater:hover,\ninput[type=\"submit\"],\ninput[value=\"Report\"],\nspan[style=\"left: 5px; position: absolute;\"] a {\n background: " + theme["Buttons Background"] + ";\n border: 1px solid " + theme["Buttons Border"] + ";\n}\n.enabled .mascotcontainer {\n background: " + theme["Buttons Background"] + ";\n border-color: " + theme["Buttons Border"] + ";\n}\n#dump,\n#file,\n#options input,\n.captchaimg,\n.dump #dump:not(:hover):not(:focus),\n.selectrice,\nbutton,\ninput,\ntextarea {\n background: " + theme["Input Background"] + ";\n border: 1px solid " + theme["Input Border"] + ";\n color: " + theme["Inputs"] + ";\n}\n#dump:hover,\n#file:hover,\n#options .selectrice li:nth-of-type(2n+1):hover,\n.selectrice:hover,\n.selectrice li:hover,\ninput:hover,\ntextarea:hover {\n background: " + theme["Hovered Input Background"] + ";\n border-color: " + theme["Hovered Input Border"] + ";\n color: " + theme["Inputs"] + ";\n}\n#dump:active,\n#dump:focus,\n.selectrice:focus,\n.selectrice li:focus,\ninput:focus,\ntextarea:focus,\ntextarea.field:focus {\n background: " + theme["Focused Input Background"] + ";\n border-color: " + theme["Focused Input Border"] + ";\n color: " + theme["Inputs"] + ";\n}\n#mouseover,\n#post-preview,\n#qp .post,\n#xupdater,\n.reply.post {\n border-width: 1px;\n border-style: solid;\n border-color: " + theme["Reply Border"] + ";\n background: " + theme["Reply Background"] + ";\n}\n.thread > .replyContainer > .reply.post {\n border-width: " + (_conf['Post Spacing'] === "0" ? "1px 1px 0 1px" : '1px') + ";\n}\n.exblock.reply,\n.reply.post.highlight,\n.reply.post:target {\n background: " + theme["Highlighted Reply Background"] + ";\n border: 1px solid " + theme["Highlighted Reply Border"] + ";\n}\n#boardNavDesktop,\n.pagelist {\n background: " + theme["Navigation Background"] + ";\n border-style: solid;\n border-color: " + theme["Navigation Border"] + ";\n}\n.thread {\n background: " + theme["Thread Wrapper Background"] + ";\n border: 1px solid " + theme["Thread Wrapper Border"] + ";\n}\n#boardNavDesktopFoot,\n#mascotConf,\n#mascot_hide,\n#menu,\n#selectrice,\n#themeConf,\n#watcher,\n#watcher:hover,\n.subMenu,\na[style=\"cursor: pointer; float: right;\"] ~ div[style^=\"width: 100%;\"] > table {\n background: " + theme["Dialog Background"] + ";\n border: 1px solid " + theme["Dialog Border"] + ";\n}\n.deleteform::before,\n.deleteform,\n#qr .warning {\n background: " + theme["Input Background"] + ";\n border-color: " + theme["Input Border"] + ";\n}\n.disabledwarning,\n.warning {\n color: " + theme["Warnings"] + ";\n}\n#navlinks a:first-of-type {\n border-bottom: 11px solid rgb(" + (Style.lightTheme ? "130,130,130" : "152,152,152") + ");\n}\n#navlinks a:last-of-type {\n border-top: 11px solid rgb(" + (Style.lightTheme ? "130,130,130" : "152,152,152") + ");\n}\n#charCount {\n color: " + (Style.lightTheme ? "rgba(0,0,0,0.7)" : "rgba(255,255,255,0.7)") + ";\n}\n.postNum a {\n color: " + theme["Post Numbers"] + ";\n}\n.subject {\n color: " + theme["Subjects"] + " !important;\n}\n.dateTime,\n.post-ago {\n color: " + theme["Timestamps"] + " !important;\n}\n#fs_status a,\n#imgControls label::after,\n#updater #count:not(.new)::after,\n#showQR,\n#updater,\n.abbr,\n.boxbar,\n.boxcontent,\n.deleteform::before,\n.pages strong,\n.pln,\n.reply,\n.reply.highlight,\n.summary,\nbody,\nbutton,\nspan[style=\"left: 5px; position: absolute;\"] a,\ninput,\ntextarea {\n color: " + theme["Text"] + ";\n}\n#exlinks-options-content > table,\n#options ul,\n.selectrice ul {\n border-bottom: 1px solid " + theme["Reply Border"] + ";\n box-shadow: inset " + theme["Shadow Color"] + " 0 0 5px;\n}\n.quote + .spoiler:hover,\n.quote {\n color: " + theme["Greentext"] + ";\n}\n.forwardlink {\n text-decoration: " + (_conf["Underline Links"] ? "underline" : "none") + ";\n border-bottom: 1px dashed " + theme["Backlinks"] + ";\n}\n.container::before {\n color: " + theme["Timestamps"] + ";\n}\n#menu,\n#post-preview,\n#qp .opContainer,\n#qp .replyContainer,\n.subMenu {\n box-shadow: " + (_conf['Quote Shadows'] ? "5px 5px 5px " + theme['Shadow Color'] : "") + ";\n}\n.rice {\n background: " + theme["Checkbox Background"] + ";\n border: 1px solid " + theme["Checkbox Border"] + ";\n}\n.selectrice::before {\n border-left: 1px solid " + theme["Input Border"] + ";\n}\n.selectrice::after {\n border-top: .45em solid " + theme["Inputs"] + ";\n}\n#updater input,\n.bd {\n background: " + theme["Buttons Background"] + ";\n border: 1px solid " + theme["Buttons Border"] + ";\n}\n.pages a,\n#boardNavDesktop a {\n color: " + theme["Navigation Links"] + ";\n}\ninput[type=checkbox]:checked + .rice {\n background: " + theme["Checkbox Checked Background"] + ";\n background-image: url(" + (Icons.header.png + (Style.lightTheme ? "AkAAAAJCAMAAADXT/YiAAAAWlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLSV5RAAAAHXRSTlMAgVHwkF11LdsM9vm9n5x+ye0qMOfk/GzqSMC6EsZzJYoAAABBSURBVHheLcZHEoAwEMRArcHknNP8/5u4MLqo+SszcBMwFyt57cFXamjV0UtyDBotIIVFiiAJ33aijhOA67bnwwuZdAPNxckOUgAAAABJRU5ErkJggg==" : "AkAAAAJCAMAAADXT/YiAAAAWlBMVEX///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9jZLFEAAAAHXRSTlMAgVHwkF11LdsM9vm9n5x+ye0qMOfk/GzqSMC6EsZzJYoAAABBSURBVHheLcZHEoAwEMRArcHknNP8/5u4MLqo+SszcBMwFyt57cFXamjV0UtyDBotIIVFiiAJ33aijhOA67bnwwuZdAPNxckOUgAAAABJRU5ErkJggg==")) + ");\n}\n#addReply,\n#dump,\n.button,\n.entry,\n.replylink,\na {\n color: " + theme["Links"] + ";\n}\n.backlink {\n color: " + theme["Backlinks"] + ";\n}\n.qiQuote,\n.quotelink {\n color: " + theme["Quotelinks"] + ";\n}\n#addReply:hover,\n#dump:hover,\n.entry:hover,\n.sideArrows a:hover,\n.replylink:hover,\n.qiQuote:hover,\n.quotelink:hover,\na .name:hover,\na .postertrip:hover,\na:hover {\n color: " + theme["Hovered Links"] + ";\n}\n#boardNavDesktop a:hover,\n#boardTitle a:hover {\n color: " + theme["Hovered Navigation Links"] + ";\n}\n#boardTitle {\n color: " + theme["Board Title"] + ";\n}\n.name,\n.post-author {\n color: " + theme["Names"] + " !important;\n}\n.post-tripcode,\n.postertrip,\n.trip {\n color: " + theme["Tripcodes"] + " !important;\n}\na .postertrip,\na .name {\n color: " + theme["Emails"] + ";\n}\n.post.reply.qphl,\n.post.op.qphl {\n border-color: " + theme["Backlinked Reply Outline"] + ";\n background: " + theme["Highlighted Reply Background"] + ";\n}\n.inline .post {\n box-shadow: " + (_conf['Quote Shadows'] ? "5px 5px 5px " + theme['Shadow Color'] : "") + ";\n}\n.placeholder,\n#qr input::" + agent + "placeholder,\n#qr textarea::" + agent + "placeholder {\n color: " + (Style.lightTheme ? "rgba(0,0,0,0.3)" : "rgba(255,255,255,0.2)") + " !important;\n}\n#qr input:" + agent + "placeholder,\n#qr textarea:" + agent + "placeholder,\n.placeholder {\n color: " + (Style.lightTheme ? "rgba(0,0,0,0.3)" : "rgba(255,255,255,0.2)") + " !important;\n}\n#options ul,\n.boxcontent dd,\n.selectrice ul {\n border-color: " + (Style.lightTheme ? "rgba(0,0,0,0.1)" : "rgba(255,255,255,0.1)") + ";\n}\n#options li,\n.selectrice li:not(:first-of-type) {\n border-top: 1px solid " + (Style.lightTheme ? "rgba(0,0,0,0.05)" : "rgba(255,255,255,0.025)") + ";\n}\n#navtopright .exlinksOptionsLink::after,\n#appchanOptions,\n.navLinks > a:first-of-type::after,\n#watcher::after,\n#globalMessage::after,\n#boardNavDesktopFoot::after,\na[style=\"cursor: pointer; float: right;\"]::after,\n#imgControls label:first-of-type::after,\n#catalog::after,\n#fappeTyme {\n background-image: url('" + icons + "');\n" + (!Style.lightTheme ? "filter: url(\"data:image/svg+xml,#filters\");" : "") + "\n}\n" + theme["Custom CSS"]; + }, + iconPositions: function() { + var align, aligner, css, i, iconOffset, navlinks, notCatalog, notEither, position, _conf; + + css = "#navtopright .exlinksOptionsLink::after,\n#appchanOptions,\nbody > div.navLinks > a:first-of-type::after,\n" + (Conf['Slideout Watcher'] ? '#watcher::after,' : '') + "\n" + (Conf['Announcements'] === 'slideout' ? '#globalMessage::after,' : '') + "\n#boardNavDesktopFoot::after,\nbody > a[style=\"cursor: pointer; float: right;\"]::after,\n#imgControls label:first-of-type::after,\n#catalog::after,\n#fappeTyme {\n z-index: 18;\n position: fixed;\n display: block;\n width: 15px;\n height: 15px;\n content: \"\";\n overflow: hidden;\n opacity: " + (Conf['Invisible Icons'] ? 0 : 0.5) + ";\n}\n#navtopright .exlinksOptionsLink,\nbody > div.navLinks > a:first-of-type,\n" + (Conf['Slideout Watcher'] ? '#watcher,' : '') + "\n" + (Conf['Announcements'] === 'slideout' ? '#globalMessage,' : '') + "\n#boardNavDesktopFoot,\nbody > a[style=\"cursor: pointer; float: right;\"],\n#catalog {\n z-index: 16;\n}\n#navtopright .exlinksOptionsLink:hover,\nbody > div.navLinks > a:first-of-type:hover,\n" + (Conf['Slideout Watcher'] ? '#watcher:hover,' : '') + "\n" + (Conf['Announcements'] === 'slideout' ? '#globalMessage:hover,' : '') + "\n#boardNavDesktopFoot:hover,\nbody > a[style=\"cursor: pointer; float: right;\"]:hover,\n#catalog:hover {\n z-index: 17;\n}\n#imgControls {\n z-index: 19;\n}\n#imgControls {\n position: fixed;\n}\n#appchanOptions {\n visibility: visible;\n background-position: 0 0;\n}\nbody > div.navLinks > a:first-of-type::after {\n cursor: pointer;\n background-position: 0 -15px;\n}\n#watcher::after {\n background-position: 0 -30px;\n}\n#globalMessage::after {\n background-position: 0 -45px;\n}\n#boardNavDesktopFoot::after {\n background-position: 0 -60px;\n}\nbody > a[style=\"cursor: pointer; float: right;\"]::after {\n visibility: visible;\n cursor: pointer;\n background-position: 0 -75px;\n}\n#imgControls label:first-of-type::after {\n position: static;\n background-position: 0 -90px;\n}\n#navtopright .exlinksOptionsLink::after {\n background-position: 0 -105px;\n}\n#catalog::after {\n visibility: visible;\n background-position: 0 -120px;\n}\n#fappeTyme {\n background-position: 0 -135px;\n}\n#boardNavDesktopFoot:hover::after,\n#globalMessage:hover::after,\n#imgControls label:hover:first-of-type::after,\n#navlinks a:hover,\n#appchanOptions:hover,\n#navtopright .exlinksOptionsLink:hover::after,\n#qr #qrtab,\n#watcher:hover::after,\n.thumbnail#selected,\nbody > a[style=\"cursor: pointer; float: right;\"]:hover::after,\ndiv.navLinks > a:first-of-type:hover::after,\n#catalog:hover::after,\n#fappeTyme:hover {\n opacity: 1;\n}"; + i = 0; + align = Style.sidebarLocation[0]; + _conf = Conf; + notCatalog = !g.CATALOG; + notEither = notCatalog && g.BOARD !== 'f'; + aligner = function(first, checks) { + var enabled, position, _i, _len; + + position = [first]; + for (_i = 0, _len = checks.length; _i < _len; _i++) { + enabled = checks[_i]; + position[position.length] = enabled ? first += 19 : first; + } + return position; + }; + if (_conf["Icon Orientation"] === "horizontal") { + position = aligner(2, [notCatalog, _conf['Slideout Navigation'] !== 'hide', _conf['Announcements'] === 'slideout' && $('#globalMessage', d.body), notCatalog && _conf['Slideout Watcher'] && _conf['Thread Watcher'], $('#navtopright .exlinksOptionsLink', d.body), notCatalog && $('body > a[style="cursor: pointer; float: right;"]', d.body), notEither && _conf['Image Expansion'], notEither, g.REPLY, notEither && _conf['Fappe Tyme'], navlinks = ((!g.REPLY && _conf['Index Navigation']) || (g.REPLY && _conf['Reply Navigation'])) && notCatalog, navlinks]); + iconOffset = position[position.length - 1] - (_conf['4chan SS Navigation'] ? 0 : Style.sidebar + parseInt(_conf["Right Thread Padding"], 10)); + if (iconOffset < 0) { + iconOffset = 0; + } + css += "/* 4chan X Options */\n#appchanOptions {\n " + align + ": " + position[i++] + "px;\n}\n/* Slideout Navigation */\n#boardNavDesktopFoot::after {\n " + align + ": " + position[i++] + "px;\n}\n/* Global Message */\n#globalMessage::after {\n " + align + ": " + position[i++] + "px;\n}\n/* Watcher */\n#watcher::after {\n " + align + ": " + position[i++] + "px;\n}\n/* ExLinks */\n#navtopright .exlinksOptionsLink::after {\n " + align + ": " + position[i++] + "px;\n}\n/* 4sight */\nbody > a[style=\"cursor: pointer; float: right;\"]::after {\n " + align + ": " + position[i++] + "px;\n}\n/* Expand Images */\n#imgControls {\n " + align + ": " + position[i++] + "px;\n}\n/* 4chan Catalog */\n#catalog::after {\n " + align + ": " + position[i++] + "px;\n}\n/* Back */\ndiv.navLinks > a:first-of-type::after {\n " + align + ": " + position[i++] + "px;\n}\n/* Fappe Tyme */\n#fappeTyme {\n " + align + ": " + position[i++] + "px;\n}\n/* Thread Navigation Links */\n#navlinks a {\n margin: 2px;\n top: 2px;\n}\n#navlinks a:last-of-type {\n " + align + ": " + position[i++] + "px;\n}\n#navlinks a:first-of-type {\n " + align + ": " + position[i++] + "px;\n}\n#prefetch {\n width: " + (248 + Style.sidebarOffset.W) + "px;\n " + align + ": 2px;\n top: 1.6em;\n text-align: " + Style.sidebarLocation[1] + ";\n}\n#boardNavDesktopFoot::after,\n#navtopright .exlinksOptionsLink::after,\n#appchanOptions,\n#watcher::after,\n#globalMessage::after,\n#imgControls,\n#fappeTyme,\ndiv.navLinks > a:first-of-type::after,\n#catalog::after,\nbody > a[style=\"cursor: pointer; float: right;\"]::after {\n top: 2px !important;\n}\n" + (_conf["Announcements"] === "slideout" ? "#globalMessage," : "") + "\n" + (_conf["Slideout Watcher"] ? "#watcher," : "") + "\n#boardNavDesktopFoot {\n top: 17px !important;\n}\n" + (_conf['Boards Navigation'] === 'top' || _conf['Boards Navigation'] === 'sticky top' ? '#boardNavDesktop' : _conf['Pagination'] === 'top' || _conf['Pagination'] === 'sticky top' ? '.pagelist' : void 0) + " {\n " + (_conf['4chan SS Navigation'] ? "padding-" + align + ": " + iconOffset + "px;" : "margin-" + align + ": " + iconOffset + "px;") + "\n}\n"; + if (_conf["Updater Position"] !== 'moveable') { + css += "/* Updater + Stats */\n#updater,\n#stats {\n " + align + ": 2px !important;\n " + Style.sidebarLocation[1] + ": auto !important;\n top: auto !important;\n bottom: auto !important;\n " + (_conf["Updater Position"] === 'top' ? "top: 1.6em !important" : "bottom: 0 !important") + ";\n}"; + } + } else { + position = aligner(2 + (_conf["4chan Banner"] === "at sidebar top" ? Style.logoOffset + 19 : 0), [notEither && _conf['Image Expansion'], notCatalog, _conf['Slideout Navigation'] !== 'hide', _conf['Announcements'] === 'slideout' && $('#globalMessage', d.body), notCatalog && _conf['Slideout Watcher'] && _conf['Thread Watcher'], notCatalog && $('body > a[style="cursor: pointer; float: right;"]', d.body), $('#navtopright .exlinksOptionsLink', d.body), notEither, g.REPLY, notEither && _conf['Fappe Tyme'], navlinks = ((!g.REPLY && _conf['Index Navigation']) || (g.REPLY && _conf['Reply Navigation'])) && notCatalog, navlinks]); + iconOffset = (g.REPLY && _conf['Prefetch'] ? 250 + Style.sidebarOffset.W : 20 + (g.REPLY && _conf['Updater Position'] === 'top' ? 100 : 0)) - (_conf['4chan SS Navigation'] ? 0 : Style.sidebar + parseInt(_conf[align.capitalize() + " Thread Padding"], 10)); + css += "/* Image Expansion */\n#imgControls {\n top: " + position[i++] + "px;\n}\n/* 4chan X Options */\n#appchanOptions {\n top: " + position[i++] + "px;\n}\n/* Slideout Navigation */\n#boardNavDesktopFoot,\n#boardNavDesktopFoot::after {\n top: " + position[i++] + "px;\n}\n/* Global Message */\n#globalMessage,\n#globalMessage::after {\n top: " + position[i++] + "px;\n}\n/* Watcher */\n" + (_conf["Slideout Watcher"] ? "#watcher, #watcher::after" : "") + " {\n top: " + position[i++] + "px !important;\n}\n/* 4sight */\nbody > a[style=\"cursor: pointer; float: right;\"]::after {\n top: " + position[i++] + "px;\n}\n/* ExLinks */\n#navtopright .exlinksOptionsLink::after {\n top: " + position[i++] + "px;\n}\n/* 4chan Catalog */\n#catalog::after {\n top: " + position[i++] + "px;\n}\n/* Back */\ndiv.navLinks > a:first-of-type::after {\n top: " + position[i++] + "px;\n}\n/* Fappe Tyme */\n#fappeTyme {\n top: " + position[i++] + "px;\n}\n/* Thread Navigation Links */\n#navlinks a:first-of-type {\n top: " + position[i++] + "px !important;\n}\n#navlinks a:last-of-type {\n top: " + position[i++] + "px !important;\n}\n#prefetch {\n width: " + (248 + Style.sidebarOffset.W) + "px;\n " + align + ": 2px;\n top: 0;\n text-align: " + Style.sidebarLocation[1] + ";\n}\n#navlinks a,\n#navtopright .exlinksOptionsLink::after,\n#appchanOptions,\n#boardNavDesktopFoot::after,\n#globalMessage::after,\n#imgControls,\n#fappeTyme,\n" + (_conf["Slideout Watcher"] ? "#watcher::after," : "") + "\nbody > a[style=\"cursor: pointer; float: right;\"]::after,\n#catalog::after,\ndiv.navLinks > a:first-of-type::after {\n " + align + ": 3px !important;\n}\n#boardNavDesktopFoot,\n#globalMessage,\n#watcher {\n width: " + (233 + Style.sidebarOffset.W) + "px !important;\n " + align + ": 18px !important;\n}\n" + (_conf['Boards Navigation'] === 'top' || _conf['Boards Navigation'] === 'sticky top' ? '#boardNavDesktop' : _conf['Pagination'] === 'top' || _conf['Pagination'] === 'sticky top' ? '.pagelist' : void 0) + " {\n " + (_conf['4chan SS Navigation'] ? "padding-" + align + ": " + iconOffset + "px;" : "margin-" + align + ": " + iconOffset + "px;") + "\n}"; + if (_conf["Updater Position"] !== 'moveable') { + css += "/* Updater + Stats */\n#updater,\n#stats {\n " + align + ": " + (_conf["Updater Position"] === "top" ? "24" : "2") + "px !important;\n " + Style.sidebarLocation[1] + ": auto !important;\n top: " + (_conf["Updater Position"] === "top" ? "-1px" : "auto") + " !important;\n bottom: " + (_conf["Updater Position"] === "bottom" ? "-2px" : "auto") + " !important;\n}"; + } + } + return Style.icons.textContent = css; + }, + padding: function() { + var css, sheet, _conf; + + if (!(sheet = Style.paddingSheet)) { + return; + } + _conf = Conf; + Style.padding.nav.property = _conf["Boards Navigation"].split(" "); + Style.padding.nav.property = Style.padding.nav.property[Style.padding.nav.property.length - 1]; + if (Style.padding.pages) { + Style.padding.pages.property = _conf["Pagination"].split(" "); + Style.padding.pages.property = Style.padding.pages.property[Style.padding.pages.property.length - 1]; + } + css = "body::before {\n"; + if (_conf["4chan SS Emulation"]) { + if (Style.padding.pages && (_conf["Pagination"] === "sticky top" || _conf["Pagination"] === "sticky bottom")) { + css += " " + Style.padding.pages.property + ": " + Style.padding.pages.offsetHeight + "px !important;\n"; + } + if (_conf["Boards Navigation"] === "sticky top" || _conf["Boards Navigation"] === "sticky bottom") { + css += " " + Style.padding.nav.property + ": " + Style.padding.nav.offsetHeight + "px !important;\n"; + } + } + css += "}\nbody {\n padding-bottom: 0;\n"; + if ((Style.padding.pages != null) && (_conf["Pagination"] === "sticky top" || _conf["Pagination"] === "sticky bottom" || _conf["Pagination"] === "top")) { + css += " padding-" + Style.padding.pages.property + ": " + Style.padding.pages.offsetHeight + "px;\n"; + } + if (_conf["Boards Navigation"] !== "hide") { + css += " padding-" + Style.padding.nav.property + ": " + Style.padding.nav.offsetHeight + "px;\n"; + } + css += "}"; + return sheet.textContent = css; + }, + color: function(hex) { + this.hex = "#" + hex; + this.calc_rgb = function(hex) { + hex = parseInt(hex, 16); + return [(hex >> 16) & 0xFF, (hex >> 8) & 0xFF, hex & 0xFF]; + }; + this.private_rgb = this.calc_rgb(hex); + this.rgb = this.private_rgb.join(","); + this.isLight = function() { + var rgb; + + rgb = this.private_rgb; + return (rgb[0] + rgb[1] + rgb[2]) >= 400; + }; + this.shiftRGB = function(shift, smart) { + var minmax, rgb; + + minmax = function(base) { + return Math.min(Math.max(base, 0), 255); + }; + rgb = this.private_rgb.slice(0); + shift = smart ? (this.isLight(rgb) ? -1 : 1) * Math.abs(shift) : shift; + return [minmax(rgb[0] + shift), minmax(rgb[1] + shift), minmax(rgb[2] + shift)].join(","); + }; + return this.hover = this.shiftRGB(16, true); + }, + colorToHex: function(color) { + var digits, hex; + + if (color.substr(0, 1) === '#') { + return color.slice(1, color.length); + } + if (digits = color.match(/(.*?)rgba?\((\d+), ?(\d+), ?(\d+)(.*?)\)/)) { + hex = ((parseInt(digits[2], 10) << 16) | (parseInt(digits[3], 10) << 8) | (parseInt(digits[4], 10))).toString(16); + while (hex.length < 6) { + hex = "0" + hex; + } + return hex; + } else { + return false; + } + } + }; + + Emoji = { + init: function() { + return Emoji.icons.not.push(['PlanNine', Emoji.icons.not[0][1]]); + }, + css: function(position) { + var category, css, icon, key, margin, name, _conf, _i, _len, _ref; + + _conf = Conf; + css = []; + margin = "margin-" + (position === "before" ? "right" : "left") + ": " + (parseInt(_conf['Emoji Spacing'])) + "px;"; + _ref = Emoji.icons; + for (key in _ref) { + category = _ref[key]; + if ((_conf['Emoji'] !== "disable ponies" && key === "pony") || (_conf['Emoji'] !== "only ponies" && key === "not")) { + for (_i = 0, _len = category.length; _i < _len; _i++) { + icon = category[_i]; + name = icon[0]; + css[css.length] = "a.useremail[href*='" + name + "']:last-of-type::" + position + ",\na.useremail[href*='" + (name.toLowerCase()) + "']:last-of-type::" + position + ",\na.useremail[href*='" + (name.toUpperCase()) + "']:last-of-type::" + position + " {\ncontent: url('" + (Icons.header.png + icon[1]) + "');\nvertical-align: top;\n" + margin + "\n}\n"; + } + } + } + return css.join(""); + }, + icons: { + pony: [['Pinkie', 'BAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAA3dJREFUGBlNwUtoXFUcB+Df/zzuY553pp2MmUwSk5TGpnamiokWRdNCSkCrUChKCnVZQUEUdy5sQZC6cyd2VWgoutCFXWTjIyp1UdqmEDBRsSZNmkmaZF6Zx32ccyzowu8j/M883pH5A9kBYfNkFOpu0OiulyqXmnhkDmdYHYJexzX1Ef51EQDhP9fxpjU0PDCd7IldYIxGVag3/KZ/ZX1p8/P0k/0U47qs291M2NS3f6ncuLeFeQ3A8KuYoNPoY/3e2Ej6scSnqUJ8gksmhC2y3OJHpSUHU0/3HU+WCuddyV6VSpVyYv/aUuPefWAP4iDG8AhJWyYYo972tg8DQ1wyWHGZSfcmZmQ+YeKTw1bQ70H8uJw3xtDp6NzG15VLf/DLWMBZHGPkwuWGyq7njLoZyzAiCtqRIddioifBxYBHIpeE0oaw0yoG7WA755dvi8Xih66BOSZj4rwds45bSQkuOeOCQYWG2PjjcEq94JwjQgQ+kCW+tBl3H7Ym4jnbE/nDmamwqz9mnEaYoBgiZaJIGW5zEIHEPheykMD2w12ztPIXCrZHec+GdOVAUI8ygjvifeHQESiNoKtMlIoRxSV0owMjAeY5+P3BKrbTDq3n02B/7yDTDkBANSXiewKgjFbahEwQe34IiVIfRNqCv1qDanQR9Di4+tU16N409o2WMXnyJeNWb9PO4s6WroZawOiSiozCoR7lPFUQezICCzXF+pPGYRna6/rotNqY/eJLUzh4mM5dP4Va0YXV45x0O9F9FhkN5auq4eznaq3WmP1pDkuibW5uraNaqyNh23ihPA6v7wAVS+PwXAGkbYiUnU3kYm8JzvgGpJGdG6vzm15+ce6H79/9bnnBhCxG702dwnTaw4nyM/jsiTHsHx+DEyjKWnGEUpBOyjTTgbpsNHyLojPe7PK3qci58NvNu0Gl0YA8NIxWp4MkdzCdK2Ci6iNYXIV6UEfUDBC2Q/A3WqVbUUfVucWftYhP9fLiFf7yRPGVmZmhE88dJVmpGRMqRH4E3emSbnQR3lkzaqNB3br/J39tb1ibJglGfJDZbMReb37Td/bFhcnB/iNppXNUbZEKFGBJ6FBT+9cVo5c3yd/trDV3OxdFDDHFOV8IffVJtNNOC+J3xtYqATWw0Mm6RIJ9YAy9rdtt07q1ZtjdVXCYFRBG4Bv8A+lliGhzN164AAAAAElFTkSuQmCC'], ['Applejack', 'A4AAAAQCAYAAAAmlE46AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAv9JREFUOE9dkmtIU2EYx88Roi9FfahkfQmS6kNGEBRlZWSY5tylTKepqR8MHYGl2R1POm2u5bCVlzbog2Ze591pzZPZxUskDZLMMLSWzcIca3MXt7N/55woqhf+PC8Pz+99n+fPQxAEQf6vhINb1nG5/ISdobWXo+9eSd4tyM7OJimKImmaJhsaGjjmX/DGqfDQmkvRg1x+9YrlZPd18fdupXiu6mxkOAcqlUqyuLiYB/+cayfD1rKFH0w3pYEHV4/omhTCyieVcYEB7TEYSyX21Mita/6u/91qUBMV00JrjmKwMg4zI2fgnlfD90PLx+nhMyinIrb91SFBFqaHBevPHb7G/fS06jhs0wXwO8rBOLXws2Kct/k4//HKRE+jZD0Pl2buD2FnmOlVSUFrpJg15/JFgcWKP0Bg8Q6fs1sVs+11wmAebKaEuiG1CC81Yozci+cL4KoC3JUIuCp4+R23+Ee4Dr5bisZmJi7fJzpLRJZPOin8vSlwdSXDO54Hz+vT8LzLh3uuCIuzBfDa1DzMPcrJMVfkIHpVEu94uYgH/aaTvOxdJzDZkI76smhY2mVwDmfg8zM5RukcvH8pbx96mLiPMBTG0nSpGK7mePg6k+DsSUZbSQwem02oba3DRsFKzNQfx9sHSdi1dzve5Ow4xM+ozorY1K2U2MY0IrhbEuB7lIqB6gxY7B9R3XoHAoEAivN74O5LAaXNwvNLe9PlcjlJACANRaIRztFh1iRvfRyYx5kIOCwY+GCE9GIUOjrzwZjS4H16FV80UT1WqzWIWFhYIBsLhDf7y46Ck1UvATNKgXlxHgHbJDyub2DGVPC2s+bVyGDTx74ym80kwe2fKvNASN8NySK3NeayWNagNPj7WaP62Uhn8HdPkwyWW3IoEjdv0Ol0JGE0GvmV0+dFpj9SS5kOKuahr01Wwbb2lXV6aakjkfF1p8DXlwHnaB5yTm1bbzAYfs34e/+0pyNic+N2ruIWmQWXcdE1dUEGd9UYq6kle1mXqVW6imWIn290AGVZutJTAAAAAElFTkSuQmCC'], ['Fluttershy', 'BAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAA2xJREFUOE9dU91PWmcYP2uybDfrxdIlu9vN/oglverWNN3Fmu1iN7vY2q4utnE2Nu26ukyrUUGwExGpn3xY+TyACjrskFrcEYoWnCAM4YAgcJjROkFA1q789nJczNaTPHnfk+f5/d7n4/dQ1Cvf3Ut3Xp//Qnze36gYCt56kIgJpyqRFvrvcIvxMNxhSa9eV993XJK/+yqO/zdf7j7tbRz1RdstLzOKReRoLxJSOzb7HyKtdCEumgErmEbwO03U2aR8738kzq8ln8e6bXlWYMWmZA6Z8SUk5U5ytyPeY0Oy1w5O50FO+wQ5jbtG4lK19L5BGehzb9sE19+JtFt2c8ZlJPvmwAqtSA06EWs3g+2aQnacwdbwAmLknuiZxaZ4FiTD6tLFvi+pBeenb/3mvvo4Yu3D5v1ZsP1axHpUiAo0iPyg41/dGiNgiQI5PXmdXkai92dkVItYbZ6YpVZWLrrKFSOynBip9W6U/7LwViqZ8SykRWpcR8BqJNlmJCZp1LLMkIxSAw6s39WHqUCo/mDnWTdKhwRUMaNMzvLh5NFZsaBIbD+rJ34jgsxtcLQH3IQbKakDoVZDmnpk+irA/fEjCkXlv+AawX+MEJQJcaFEY8bWAJdMgYxyESn5PILNumUqJNVVA4EG7OXlx8Bf3T2QyRuh0X2P5ad9pCQTcjtqDI3UwTMuReIeaaKagb9u6B6VVi9Wg1YRUhkhH1g6NKFf3gD/2gAYz08YVd5AdltDfDS2d2QIrH6DcNcwUjLHc+aC8AMqLrW/4EwesBoligUTCgc05h52IH9gwu6+ERwBb+9pkc0IwLJNWHPXIyrUIdysW2POd52gopIZjtOSpgzOI2NToVAmwD0D9osmvvZSxcCXtr5wA08627Ah0yHZ74D3ysBNXokR8XQ8q2SQM3gQbZtAPm1AiZRyNIUawZGFl5qIRqbBdk4Sndjy1iviIymzIquXldirWRXDzzdOZr63q8J66OqOf+2yL8be+nMr3fry91A9NlRjvKT9tx88Pt6Djdaps0RZxQRZmCzpbHrMBV9b5/YM/dn7tSCT/cNTvpauFdasR5xkkCaS9n07Kj0mIKm+GbujP5OQ/vI8Ofyomhx0sOmxhU9W6wYp5uOO12qB3guik2TuI2QPXmwpXLGnjSMf3RRdO1Hz/QNneMt7Iqmg5QAAAABJRU5ErkJggg=='], ['Twilight', 'BIAAAAQCAYAAAAbBi9cAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAA6lJREFUOE+VlF9Mk1cYxj+Kc3+yXWimFxuk2zTIn4bQFkppF0hDNmBpBtgKixhhQZAhbSkFBp1uZWg3ZLRMxFKE0qKtrMy2E2ztn2+1tLQgbuJiorvQ7c5pgplZNjfmePZ9nwtZMm52kufqvOeX5zznfQ9B/M9l/8CXPP2R/6ajy+u0amZeoI8D2PpfTLqMlZQpT9vE2fPOc9l73302q7rs6Sz5K6zM3ZuJzD2EVf1VytejC4hNXoWj2/vlF71+FgVKIsZVHrbnEzLoPkYOqqtPNm7j1l1J4R9Y4wgVkOR3Qcvrg+uNXmTnt9zfmdcUFRd1XqQhC+eWMXP8MiwKdyUDOqMLEG49qYtYlhA+vQi7zocGmQHFYi2UnM9wq/RzNEsOQyDWMBIWtjNurjivw2ucg+toyM+A6LWZU72vvsqwFjwVZwrmrEvoq7DBLDDiltQAobidgeRRUipMTA0t32AU3hNzD7zGSANBZMi2UFe5nyZohrREB9dxEnMTS+jgnUBYMghv2afrbhhHb3aAnFxkQMHhOALDid8p0EHiKU6VklvQil0UiJakqBsf77dCmTmASPEAhoqPIEN4CGmCJvAkauzKfw/5pRr4J+JUTtfo693zGSM7iBdzan10sE9gh5AragNXoEKtvB+93ZMY0TthGraB92oJVlYewDTgQJ96DKTtiStXb8jvNoafIV7i19+lndC2X+bXPyqXffj4kmV+PYexY1aQMwnkv1YGWUUljryvQ0/dqfV9+Vs9zVTYLILKZ5UGsXMbb2/llJaWCN8OnzNMrxda9JNYjt+ENL0RrQol0nekQVtlRHA8gsWpZQhEmrviws5yIpXfcG87t+52UpY8NZXN3lIjPRiOReZxfugCA7s4EsCN727ArHChQiKDYGchRrumELbFEbQmkFvQ+ofg9TYX8Xx2zfnkLDmHbgM2m00M1tortQf06FC2Y2HqGgMjvSR+WfkVplYPzCoX3EOziDmuwjMSRk6BajVP1PYT/fzb/j0nZ7tmN+n3mUlpUTmCo1EGFHJE8NvDR/g+egd0fj5LDN6xKHo6bOAL1D/niTTRDUd2rMW13VBj/zFu/5YZBaYBp69j0blMPfs8zhj9KCjspPNZ+6fjd28IGld4MgIn5x/HJr9ByJRYDz5oS2B6KIT9Nf3IEaj+pCBrXFELOTERZm0Ichy+lHy2czZlpv+y80JfmILFVwPDsTvmo26SJ1I9zBU1/UVBfqAk35ujpb+RpL8BJjxIUjyXvSgAAAAASUVORK5CYII='], ['Rainbow', 'A8AAAAQCAYAAADJViUEAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAA3tJREFUGBk9wV9MG3UAB/Dv7+531971aKGMlr+OwjoGBUZwRDrRBJwj0bHEmeiS6Xwyxn8x8UVNzHAPPvliFhMzsy0m8uDD5h/QZWoUNxYMBoZbZCBjZTBoKRwtLde7cv9+bg/6+ZDnzk6C44lw6f6whdOnETpzla+0803RMD3ZGSH95V62lzGQtMH9M7MhfpPUyIX5HE1uvNXDaCQgtykB70cR/4unrn3aqzYkZt7v18ZfezyTkfy0HlJ7FMWKEBJFpYMSVq7bngMlGvvc/OTiLzRYLp8K1waObaS16MDIRfupG9c6SuwCsSt2kJ+/B+3HMdC6MBofa0N1a2sVJTWj02mh4BFCCpV84jN4oHyX3KYEJAi2BWYR2CkPmMlBiOgwE0mYiymo1Qu0Mx4/8VLVnrtnF4VxfuCN9z5mDBA9FJt7mzDe3oXkjou69CqoxkA4gC9xQAggankMa7uTm3m32SLKD+Sz6XXGGCDJAv6j7di4MzqBo199Adk2EIqkQGQHDy3Ij2Q+bHr9g3UxyFHLdFyvJHAg+J/ipYgdjuMyzwELCfRsTWG/NQEwhqCVC0YLy/qKGJzmD77w9pHSoFyjbWWxtjAH5jIIHi8EKkCpq8JteCD2H0F2u4BwZhE+x8BEWbt6i6df8kr/s0+H/HKMc1yo02MYaG9APjGLxJ+T2NxYRV7fxu66GqjwYyrn2AG7YFGw4FygeYiXjva/KoipxoaKGPY1N+PJfRHEauvQaIj47vsLSN67i87ew6hOLGFeTS38FO45XhR8lQlffS0tmGViwbmCdKEb3tJSGLYLieMwMfQr1tZSqOzqheCVkDWIk7i/vvJ7WdVVxd96XWBU4kzb55qOiZvqJazmCxhLGzBFiqbnuzD71xyij8bxEN/XzXccf7PyxJ6+lkxuwknnftP4vorBd9O1mXBAnsbfaQW6VQadcWC7gmiIH0JlrBWuw+DYgFyiSGqu+O2NjZllPMBJRUevuH4Ipu1DyOefrS6RzmQN211iFGUtzSAcD8dh2Ll8cyStai8vra/8MQhgEADvjx/bX78c6rgT1ddl722/btSelEz69eaWoZqms1kwrGVt27xV1I1zgdWfRw6Ww8lmswQAo6QR2dnM6JC6HT3PEfvctjSsnx+3J1uob6qt6gAtSgEu4BbdV2KO80T3O0QQBFiWRQRBwL/txI3OlzkSKwAAAABJRU5ErkJggg=='], ['Rarity', 'BMAAAAQCAYAAAD0xERiAAAEEElEQVR4Xm2SW2xURRyHfzPnsmcvlO4ulN1uF2sLrIpdJNS0KUZFUq1t0AiKkpASbyQSjRKENEGrPuCTiUoTjSENKAnFYKokbZOmIBaoTRXB1AjbWmrabmVpt3SvZ899PFnTxAe+ZF7+D998mf/gbmwt30131B58YM+WTw7vbTnW/+oTHZda6490723uPP1KY0fna40dh/Y0fFz/4pq3XRFEsATB/2i71EauvDcplHN173p8of2gnI8KPHLxm/AEqwgIARUEeywyS1dVPZ+9kJ6OHdB/uzF2BmcYXRIdHxkhO/0vR/e9+c4p7+pIO+92+wlHaGE+QV1lYWpLCe90kdKVTvJo80rqDTic4nJfk7c62kM3rltfgQpSLGOM4ZfR0apQIPQTpSR04uhVqhUYSkoItLyMVFaEIjNENpTg8ZbVyGYK6PpyHIYGBhCmLiYHZ2NDzxZlpwYHaX3V2mMet3sPpZSbjc/B5y+Fw8GDgWEukcbURBLR2jB0TcPpz4cwO5aBBQJuWSnsbC09eeN50tnZSYy0s6p5V+MwIVghSQ4iFwqQHBIIIcVjGEaxXtd1XO2P4dr3N6EqCvJyFoqmgvqDlqZqp+jxD4/z8etKGxjxm6ZJxmIxnB8YwNDQEGITE5iemQHHcRAEATYIVPvB8ZQRQu05D45QGPNx2PYNNFxWV21y/h0AiCiKkGUZcwsZnDjTg7cOtuOr098hYxLYQJIklK8ps5hoaAyM2ZeAFwRQEJi5FEclT/BpxZBKFhdkQimFx+NBTbQG+1pfQFZ34tZtFd29PTAtC+N2dU9vH/t18sKCwPP4r46DQ3QySzcGKBGERzRFpYl4CkubPdd3Fj1nu5GduAxvdQNIPgNV1zBw/hy6+y+D510xUZQYzwlM5CXT5iID+5RailLNDINN/ZUCoQTLlnkQj8dx8uRJW2DA7V2F6H0RGJoGt8vFgqF7c2vD0T4wMANgd0yjP2Mqb+Ty2RkqMrhhmbh+JYnk7TSWl/pwuP0DrIvWoX73EWx/LIIV3lKIgoitT21Dy7aWPzU125/JpbOLukrA8U1ly8uGwxWVz1CXwOvE0qHIGq4NJ4qPHApVoKurC4defw6bKigCwfLiRkMBPzavL39w5/tPChk5vV+ZvzVHUknm4DhB13RKeZ5LlthlzDAQG00jkykU/5VTYKgJiTANE6LkhKIqTNW0nKqpvYauj89PzX5jcqxG0/WmeGK6bj6V+IHPy7nfV/hWbS5kM0gnC5iMLWBjXfhnAA0FRQGz0XVtzmJsZEHOH52a+uPirubtOmw2BfYmg9cSP2YsJ7uIbxlpfaitdk3l/Q/rlv7FnVzucmXdPS+1HtjyD8dzWCIvy76/Z6bY5MTs4tfjn7HBjwZxN/4Fq6rr1ZuF0oUAAAAASUVORK5CYII='], ['Spike', 'A4AAAAQCAYAAAAmlE46AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAsFJREFUOE+Fk1tM0nEUx/9QPtCD7z30nE9sbbVeXJJR6j8DkVsIhg6HTqSXnBHSMMEbEy+AgPwVQpcgNy+kKLc/lCgF09Wquaab67kHX1pulif+mHRdne3sd3Z2Pt/fOee3H4J8N/ow2lrj4H64OljRfEXBIZ/k/3lWquXIrQl2ROAVA98jOro2XKUtvV9Dpj/iFV/ppwvLVfzThEBZGRWh0S4hmFx+rId2ysmMSU6WAAUeMfDcdYe0gUrGdUOl7rZXBDRdRQtRp1PeIRlVctIzk+lHR6itJnwC1nkbgOXgZlhO3h6RY9rZKYT7W9NUKpUklUqRKjPDQADEjYTz3SLgzQjzMWua/5E5xLpQrqOX/jEzamTc4LqEX/KQRwRMBwfEDgnUOyXAdgk+1zr5e0w7J/vA15OfN28PW5SnZlRuVT3WeMia5oHW1AthawSS40mIjcWhW98HfF89Ifa6qb+hqAA6FA5xzIp/dVncYDc/hkQOiI/jBcctCegwdRJgsERWcszpZTrKU/3S7s+Ff4vn9UG4aWbGyofoaB60d05dDJuiR/8DcXMCpLY24GPsrlRWcxZxKmaqF0aCsDy8ArgtAVFL/Jc2C4LWBEwFNLCUbt9PZrpEiEk2VjbmMYIdm4TQ6Cq4RmYB02CwZAlB2ByBkHEVYhYcEmEreNZl4F+/C8F0+0vE2x1IL3qDsDgZhKg5Bt7ULAgHa+HVzlt4v7MHMQyHpM8LrlQzuNdaIfJCub+R0Z5DfNrAxsJAEHJbhXhue5nQJmS3t2D73S6suVK5XBKiYQMs4B3xSEbZ83xTc3ljq5eMmNts5/3d82/8jicQDc0Cbo8BjiVyQsez4rYkeNRzfqfadUYgEJBRFCVRKBQS0tTUSM7BxaauUelyenwunnZ+SnhXDkKG0EGgb+5g4p5dpa5TFEkk1bmfQSu8/TfTXs+Z8UbptgAAAABJRU5ErkJggg==']], + not: [['Plan9', 'AwAAAAPCAYAAAGn5h7fAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AoYAzE15J1s7QAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAACAElEQVQoz3WSz4sSARTHvzMjygpqYg3+KIhkE83DKtKlf0C9SrTRuZNEx0VowU6CuSeJNlwwpEO2kJ6SQBiIUAzFjRDF4wrjKosnGx3HmdehFDfpe/2+z/s++D5gU7IsEwRByICIiAEAIiIAYAFAXsjYVr/fLxMRNVvN+prJ5/OA3+/XERFNf02JyeVyDx0OxyvLNQsnimLKfcf9KRQKXQAAnE6nlf5qMpnQycnbP/kAoKoqsSwLAJhOp+AAwOv1otvtpqxWq73dbt/r9XqvEQ6HUalUEvF4XLd5IpvNZqlerzd5nlf6/f6tTCZjBACk0+nb+XxeW4UrikLJZPImAGA0Gq0NIqJyuSyyANDr9Q5Wu1utFvR6/SULAI1G4+vK8Pv90DTtGwsAJpPpaGUYDAZ0Op3PHAAEg8H3tVqtbrtu21sqyxuRSOQJk0ql9IvF4r7b7f7pcrlejkaj57IsH58Pzp8dvjhc/lsBk0gkbLFYrFqtVvd27+4qOk733ePxPDCbzVBVFfP5fCiK4rvhxfDN/qP9wSasGwwGMv1HiqJQsVg8ZlfTHMepkiR1t05gGJBGmM/nMBqNj9nN9kql0lNN064ARISzH2cQBAGz2ewLu2na7XYLwzBbvxYIBBCNRrFj3BmsAZ/PZ+J5/kOhUIAkSVeA8XiMZqt5efrx9OA3GfcgvyVno9cAAAAASUVORK5CYII='], ['Neko', 'BMAAAARCAMAAAAIRmf1AAACoFBMVEUAAABnUFZoUVddU1T6+PvFwLzn4eFXVlT/+vZpZGCgm5dKU1Cfnpz//flbWljr5uLp5OCalpNZWFb//f3r6+n28ff9+PRaVVH59Pr//vr38vj57/Dp7eyjn5zq8O5aVVJbYV9nVFhjUFRiWFlZVlFgZGOboJzm5uZhamfz9/bt8fDw6+drb26bl5j/8/lkX1z06uldWFS5r61UT0tfWlbDwr3Ew76moqNRTU7Mx8P75OpeY19pWl1XW1qzr6x5eHaLiojv7+1UT0xIU0uzqadVS0nV0MxkZGT5+PPk497///ra29Xq5eFtY2H28e2hnJignJlUUE1dXV2vrqxkY2FkYF/m3d5vZmfDuruhl5aZlJHx8O75+PZWVVP29vT/9fTj3trv6ubh5eRdXFqTkpBOTUtqZmX88/RMQ0T78vPEvr7HwcHDwsDq6ef///3Gx8H++fXEv7tZWVedmZZXXVudnJp0c3FZU1f79fnb1dlXUVVjXWFrZmy8t7359/qLj455e3q4s69vamZjX1zy4+avpaReWFz/+f1NR0vu6Ozp4+f48/lnYmi8ur3Iw7/69fHz7+xbV1SZmJZVUk1ZV1zq5ez++f/c196uqbDn4uj9+P7z7vRVVVXt6ORiXl/OycXHw8CPi4ihoJ5aWF3/+v/k3+axrLOsp67LzMZYU1m2sq9dWF5WUU1WUk/Au7eYlJGqpqObmphYVV749f7p5Or38fPu6OpiXFz38fH79vLz7urv6+hhYF5cWWKal6D//f/Z09Xg29exraqbl5RqaW6kpKTq5uPv7Of/+PDj29D//vP18Ozs5+OloJymoZ1ZVVJZWVlkYF2hnpmblIyspJmVjYKQi4enop5STUlRTUpcWUhqY1BgWT9ZUjhcV1NiXVkkhke3AAAABHRSTlMA5vjapJ+a9wAAAP9JREFUGBk9wA1EAwEAhuHv3dTQAkLiUlJFJWF0QDLFYDRXIMkomBgxNIYxhOk4wwCqQhQjxgxSGIsALFA5BiYbMZHajz1oJlx51sBJpf6Gd3zONcrqm/r1W8ByK0r+XV1LXyOLLnjW6hMGpu0u1IzPSdO17DgrGC6AadrVodGcDQYbhguP6wAvAaC0BRZQalkUQ8UQDz5tAof0XbejOFcV5xiUoCfjj3O/nf0ZbqAMPYmzU18KSDaRQ08qnfw+B2JNdAEQt2O5vctUGjhoIBU4ygPsj2Vh5zYopDK73hsirdkPTwGCbSHpiYFwYVVC/17pCFSBeUmoqwYQuZtWxx+BVEz0LeVKIQAAAABJRU5ErkJggg=='], ['Madotsuki', 'BQAAAAPCAMAAADTRh9nAAAALVBMVEUAAAC3iopWLTtWPkHnvqUcBxx5GCZyAAARERGbdXJrRUyGRUyYbY23coZFGDRFGEYfAAAAAXRSTlMAQObYZgAAAGhJREFUeF5Vy1kOQyEMQ1Fshzd12P9y61AixLX4yJFo1cvVUfT23GaflF0HPLln6bhnZVKCcrIWGqpCUcKYSP3JSIRySKTtULPNwMaD8/NC8tsyqsd1hR+6qeqIDHc3LD0B3KdtV1f2A+LJBBIHSgcEAAAAAElFTkSuQmCC'], ['Sega', 'CwAAAALBAMAAAD2A3K8AAAAMFBMVEUAAACMjpOChImytLmdnqMrKzDIyM55dnkODQ94foQ7PkXm5Olsb3VUUVVhZmw8Sl6klHLxAAAAAXRSTlMAQObYZgAAANFJREFUGJVjYIACRiUlJUUGDHBk4syTkxQwhO3/rQ/4ZYsuymi3YEFUqAhC4LCJZJGIi1uimKKjk3KysbOxsaMnAwNLyqoopaXhttf2it1anrJqke1pr1DlBAZhicLnM5YXZ4RWlIYoezx0zrjYqG6czCDsYRzxIko6Q/qFaKy0690Ij0MxN8K2MIhJXF+hsfxJxuwdpYGVaUU3Mm5bqgKFOZOFit3Vp23J3pgsqLxFUXpLtlD5bgcGBs45794dn6mkOVFQUOjNmXPPz8ysOcAAANw6SHLtrqolAAAAAElFTkSuQmCC'], ['Sakamoto', 'BEAAAAQCAYAAADwMZRfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAxVJREFUOE+Nk19IU1EYwK+GQQTVQ39egh6ibKlzw91z7rn3bvfOmddNszl1bjKXc5rJJGmBUr7Yg9qTD0IalFgRBEYg6EDQQB+GovQyQgiaUZsoLcgHMcr069w7MgcGXfi453zn+37fv3MYZt/n99e76tzVj4JN/hP79fvXnV3hnNabwUBjoOHcgTYOu/JQspgTzsqKgn9BfD4vkWTzur287PqLVy+zM+yePB7KsRXLywTjnSpnZctBkPCdW8ccDuU55vBO8RXbkC/oP5ph19V5+7LIky0OY1BKbZEbLcFSt7u6pN7jLmltCVrr3DV5jY3+KovFEsccB1KJNVpefe10BqS2tqqO4/AuphBB4L/LkrRqNgtJs1lMypLls1kU38mytMLz/E8VIlutqVqX6/weZG52OttRXjbE0cP/FYLRlpVjDXuQ/r77x2XZPKkCHA4HBAIBkCQpAygIAvh8Pu2MZgO0Lz+QSa/sQfwN9RfpVN66XC6Ynp6GhYUFGBwczAC1t7fD0tISxONx6O7upgHILmsqvLcHodOggfiV/v5+SCaT4HQ6IRaLgdfr1bIRRREmJyfBZrNBNBqF+fl5sNsdgE2GiAbp6bmbdbXC7qWQbxMTE7C2tgY6nQ5SqRSEw2ENopaoZpCXlwdTU1NaoECgCbgiU6y8QH+ECYWaTymK7TWdys7MzIwGaWtrg42NDejo6AB1WjU1NZo+FArB2NgYrK6uQrAlCASxn2z6wkuMp87VIAhkE2MEAwMDkEgkYHx8HBYXF0HtkQpRy1BLiEQisLy8rPVNKSsFjEzrXH4+z1hlS4xDhKadNu7t7YPR0VHweDzAEVWfHru6HxkZgeHhYVAURYNjkylVWKArZjjMzqmdVi+QCsLUkQiEjvDvncEkvU7/qQ0Vgukeo48Go87IiCJnZNmipxiz7wXEbVDnbUxQOgM12h9n6qTq6NvapRdtkwaP0XK8RmPuYSbxYfaQ/sJJhjfknuFRURUi7AMOozcCwl94hLZp5F+EioDQVwqYI6jomZU1NFtM+rOSxZjVazcyvwHr/p/Kws1jegAAAABJRU5ErkJggg=='], ['Baka', 'BAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAA0pJREFUOE91k3tI01EUx39JOpA0H4jNx0pbD3XTalISWf8YFlEgldqDsBLLyqjEKBCiLLWiggh6/KEV1WZ7OaelLZvDdDafNW1JFraWe/32+01FrUZ9uy4ylLpw4Z5z7/nc77n3HIqaMRIjZJyEcNX+uFCFeGmI/GZciEIsCFJUTvoAzDz+1y7K76MSwhX5hXl6z+WSbrzU2KB8YEGDwgrTaxZ3b7xHcaHhR3xw7Z5/UviB1ReP5XSg3+TAqYJOxMzWISFIC0GQDomhTVA9skCnsaAwp/vnMq66dBokNuBR9uFd7T9Z1zCunjci0qcRJUVdoJ3DYOhRnC/qBZ+jQbfeCc+37yjY2UEg0iwvJE0k9l8Z+8xqHmTgot0QLdQgTaQFQ2AsOzlHvOu1S5pwOLsHHo8HjHMCq2MazNvTlByKHyrJLDvdR25jMWRxYx5HjeMH2r1BDOOeguRua4OI14jx8a8YH5tA+al3EHKlW6mYOapb2oZBOOwMbEMseAE12L+jjUh3w+VipyAZ65oxn1NP/GMYGR6Ftn4Qsf7qa9S82Y/l/X122G0uL2TbxmZEz1WhXW8mUol8moXu+SCi/OoQ6VsDh3UUwyQ1k9GOaI5MTkX4yWTGHutvgI1F28sviAlRgxeoRm62HvsyW8En9pZ1TYgi6TntoyQtFm86rVgUoJZRvDnKMmXVAGxWmkAYOBwudBqGcHCvHulrGpGT2Uy+z4yT+QYsCXtCUpp8GxbKhx8gDK0ro+KjJGvzdjfDZnN6VdisLD5/JjArQ2zW66PJOj2lEZtStaBphkwah7K6kMJ/GEulp1bMWhAmMbTozOQRaWRtfoZVgjo4iRra4SYgGi26TwjxVeDKhR7Y7U606ixICq9tr7hd7+OthRWL7yUnJ1WPmXotqLhpRICPHCePtuFV6xdUPTAhcWEtRHEqfHpPyto4hPXLXnzflSEJnFaN3OCKDcsFsrEntR9RUmxARLAUgT5iBPuJsXWDBj0dZjRU9yNV+PTbpjTp9OA/pOSk24nRkXf1J462oPxcJ65f6ULlHSMulepRerYDgvj7A0cKpNz/tyTZqbzXO4t0ZZGQJ34RH11lFHIlA8LIqreCCMUZRY3cd2bwL/5/RmjNSXqtAAAAAElFTkSuQmCC'], ['Ponyo', 'BAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAuNJREFUOE+Nk3tI01EUx39BTytConQTt1am07m5abi5KT5S8z2dj1yOEMUC7aUgIoimlmUEWX9kBZGWaamEmE6U1BI1XNPNGTrnHs33IwuSXrL4NgcJ0mNdOHDh3PPhnPP9XoKwcroJYvMQiRSicHCQKCgUyZC9/T5rNet5KUFs0zCZbZMsFmZ9fTEjEEBDp4/KSSSb/4JoGIyWaTYbiykpWEhOxhSHAzWD0aqkUGhWAcVkW58xlvuPhfh4zItEmOHxYDR3MhcdDaNAsKJydAz5IySKRNjEUmy88vjOVaU8F0iPCqCNjEBHkC/UYaGYFwqxmJoKLYOhkxPElg0QsbNtTlmox9yjRD9UCbnoOR+J/lwRWtOCcdXfDc2BPpg0d7CQlIQZPh9KKlVkAQjJ2x2zmOSsQu7hpzUJfBhLjsNQmADjxcT10Bcl4rE4EHc5LjBEhEPn7f1WTqXSLQB/s1Tp7vslsoIkyPPiMJAbi86McBguiaHKjoEqR4jJy2K0nAxApzMN5iUGrclrKVaz2fUvuF4tRbxDKA90w5VjTFyLZKHpTBSq4/1QnxGB2qxoVIZx0JopRCPHFSNOThfWZzfrXDcZEowH4iA05ATg68hDtBaL0HAuCm3lJ9Bfcx2fFNUoi/DCjRgfNHHd1wCZA2TyXjNkE6F0cBDpPFiojeNi8EkJdFoN3vXch0nbBJOhDd907dANv8JITxNqziag3ZsJbUDAwLin50Q9QWwl1qSYoNOVvUcOoqOqAAa9Fu9H2/F9+B5WZLcwOyxFX18flLI+VASyMGVeoJHD+Tzq5BS1PoaKRrNT8127P74swsq4FCa9FKvqBqwaOiz3hdEuLKueYSyECT2LNW0eIfo3E/WmEbvnG1MUJnWdpWhDGDvxQXZHo+RR0uW2tnv+auPX+TvtJm7zKpaen/4y2yjBUlcxlvtvmvT16ZWDpQeoVv3/60F/NrHjTf4ugazIXtJ8ivjnz/sJ+yGQRjcqUdIAAAAASUVORK5CYII='], ['Rabite', 'BIAAAAQCAYAAAAbBi9cAAAD/0lEQVR4Xl2MXUxbdQDFz/9+9Lb3tkBLCxTKhzgoOOZAsokbJmZxDFHnd+LL4hKVzBgfNCY++ODbjDEaZowvErOM6HRu6hKZY2rIAOkCY4OSDTpFaAsrlJa2t5+39+NvjT7tnJzknIfzI98Nf/C6TuXdguWBd1q9rcb8/CwsZiu2Ywm4nDVo3VWLZCKDaDwJq9mCg31PgjAMKKUwmcyYvTbek9iJRDm6M/XswEDjwNz6plWW6wdZhjUAintFCEEhn0N04zYskljaDLaj8ar49oUrsYR6mrFJNj322w46H8y+mitM/ZJKZmyE4XAvjJSsazpyuSzslVZIkgWKOvvRgQ6Xrdlhqmds7o7bFZoLkctreKxf7GtuCE7IyUQjBQcQ8j/lvxCGQJZz0IoCVpamTtzfIh9nwiaIrCQyjNg8mq11oDLUhNXRJfT1Ozr3tS/PqpnQ80qRgjAmKIqBfK4ItbSLKoOZqR/6neLkENlSUAIhlktvEf+sD2rkm8nWTHtvZCGMVON1ePuaoBER31/MXGly1wSqq9Uug6FluYyWXJiPqFXmjd4Dh9oF9ZKKimYXRtYCx8lmMIDIxlIPGz591av0mtanF7FcCEN6iMXeox2wOJ0QJAmUAoRQaIqCnWAQY1/ewKNGNeQuYXkm0d2NC2e+wvmRr/Hx+6+8PHayrbDyyQBNDb9As3PHKDWG6MTM23RoeJAWsqeoWvyUUv0UHf7pBB0fe4OeeXe3/vmHbx3+8dwIGJ4IsFpMMFe0fbtAn+nwZePr1u4MBK8XIALG/Rt479wYrs2vgeNNAMNgMbiNzybuoKVvn+Gs9kbr6qpBfJfGYHFIkJUCoGwfqcoMX/b27EGhwgOjoCADDlP+CA51ugFFRzoB8FYNaQ1oqKD44+eNL+wNj7zJGQSIhe8+jgQ9thk+27v/KRY6L4FSCkVOwtlQj6P73Qgt/o1ERoKt4iUkE7+jrZMHyzIoK9cOBFfT4LbWAk+0a7ZLnvqHcTNdACgFScfAcjxEdy00VQclHGo7dqGeYxHbvIo6hwhSghCehb3G5p6eW7VxXC5/xGWToMgrKKoaCnIalI9CIARasQAqloMI/x4BWrLLYwE1AEPTwCGHaGjz7pw/leZUNV8wNm9BLy6CxsvxZ1kMbaY4TKIIXlNBsynoVjvAC4CuAoYOVi+CMfLYCUfg95tPHuzZB0YtKzsb58RMucWE/fZmhCbdOP9rNnLnxko6GVoB8lFwyVVw8b/AyeulHoJyN4Rb19dTFyeqBlu6njvfsWcvOJvLs7DMmw/7bvpeE4pU2OIcgcqmp4fGAgt2Txwvqr7lTp5V7LquZxXC6+BqEvGcY5pyjaM1tffJbk89NE3FP5VQ6y7a+paZAAAAAElFTkSuQmCC'], ['Arch', 'BAAAAAQCAMAAAAoLQ9TAAABCFBMVEUAAAAA//8rqtVAqtUQj88tpdIYks46otwVldUbktEaldMjldM2qNcXk9IWktQZkdIYlc8mnNUXlNEZktEZlNIYktIWlNMXktE7o9klmdMXktFHqdkXk9EWk9EYk9IlmtQXlNEXktAWk9AWlNEYlNFDptkZldMYk9E4otg/p9kXktEXk9AXlNA4otclmdQXk9IYktEXlNEwn9YXk9IXk9FFp9o3otgXk9FPrdwXk9E2otdCptkXk9E/ptkcldIXk9Edl9IXk9EjmdUXk9EXk9EXk9EbldIcldIjmdMmmtQsndUvntYyn9YyoNYzoNc0odc1odc2odc6pNg7pNg9pdlDp9pJqttOrdzlYlFbAAAARXRSTlMAAQYMEBEVFhgcHR0mLS8zNTY3PT4/RU1kdXp6e3+Cg4WIiYqMjZGXl5mbnqSnrbS3zMzV3OPk7Ozv8fT29vf4+fz8/f7SyXIjAAAAmUlEQVR4XlXI1WLCUBQF0YM3SHB3a1B3l7Bx1///E6ANkDtva0jKbCW2XIH1z2hiZEZ4uUgxo7JedTQye/KN/Sb5tbJ+7V9OXd1n+O+38257TL+tah3mADAwSMM7wzQWF4Hff6ubQIZIAIb6vxEF4CZyATXhZa4HwEnEA+2QgoiyQDnIEWkjVSBBZBqXbCRlKYo8+Rwkyx54AOYfFe7HhFa7AAAAAElFTkSuQmCC'], ['CentOS', 'BAAAAAQCAMAAAAoLQ9TAAAB5lBMVEUAAADy8tng4Ovs9tnk5O3c7bX44LLduNO1tdDh7r/eutj43q2kocX23az07N+qqsvUqcmXl7331ZXJj7r40o/Pn8T42qP63KjNw9n21p3Y387Ml7732JzR55z05MSxtMLGn8TC4Hx8eqt8e62Af6/B4HnG4oPC4HzH44fBf7LCgbOkoMTcsrmtn8PWqcfFtKrj4Jvs2ZOz2FnMqLXT3KfY5p60Z6NUU5XRuqHzwWSywqDn3JaiiLWahrWhkry5zJjRmqm1Z6P1wmb1y319fK632mK5cKi5nH+73Gu73Gy73W283W+9eK17e6y1yZS3aqRZWJdcW5ldXJplXZppaKBwb6VwcKV5eKswL306OYNPTpGkfK+m0kGpUJWq1EnEqIuXK3+Xh7ahP4qhkryMfK6BgK+CdpGMaKKMa6O9ea2+eq6+oYW/eq+NbqWVlL2Wlr7AjanA4HnA4HrBkqbBlafB33rCgbLCmKjCxIzC1mSs1UytV5mtxIWt1lCuz2evWpuvXJywxYzHjrvH4oXIjrrN2HXO5pTO5pXUlYnUlYvVl5Hb0G7e0XTg03rhr5fpzHPpzXTp0Hvtz3/wrDHytknyt0zyuE3yuVHzvVr0wGP1x3T1yHf1yXe0ZaL2zYP30o730pD31ZeRIcF5AAAAQ3RSTlMAFBkbHEhJS0xMTk5UWWBsd4SEiIiPkJCVlZaam6CjpK29wMPDxMTFxcnK193e3+Dg4uTn5+fo6e/v8/P4+fn7/P7+J4XBAAAAAOBJREFUeF5Vj1OvAwEYBb/yGlu717atLW0b17Zt2/6nze42TTpvMw8nOZCAmwUpiIY6c5IiLi9tPX64GairqszHQ4X2VB64v1Cs6PxMPJSdHM777s6/jyaMRGiRLyyrb88OpjZ3CzAXrm1sqzSNNeN7kVBPNgB7cG51abE5l9cXDces7emQ1uadHhutFUg6gpPKkSIqQGavwz7r7O/+/3t/rSdjI9XDM3qz4fr3B/3iA0aJTG9x71+9oR/PLDwUe2wm19bly+fTIxHyEETatbPewGEw6Mk/tKZCEqSQQUlIHB/QNBEjjVN1AAAAAElFTkSuQmCC'], ['Debian', 'A0AAAAQCAYAAADNo/U5AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAZ5JREFUOE+Nkk0oBHEYxv8fu5GQj3JwcaDkIAc5IpR87M7MKnIVJVKclaIQ5Sy5OLkgR7n5OigcSNpmd2c2Vyfl4KT8/muWiVU79TTv+7zv837NCBF6PG1X+NpZyEYSD9mIc+tHnBPe23B9xKrCuTmbQA/JKfABrhBswa1hH4A38IwfOxPdX1qcjiCQxO5NyrjKV70TnSbeRPwJvGN3i4yyqnEucPY8ZZX9GSEgGK+RvFfyjk2VKZxzBNG8wJWWgh/xtDOeUXZ7Slr6TrSLYL9N4SMgYTTcwdc2ArvJcElhSVcM6mCNSV8n9hA59yTU5UWMG6HIbLhIWlglgWiC2L4Z79qTdo40D6ISuOWwKCWHyk9Fv8ldpUHOuGTuynwSBUynddPdlbEosVpP9Eu4FnOsRzUYNTsdmZN/d5LDiqM0w+2CMdAFFsFGWgfXxZnheqe/z+0puwEM0HHYV3Z9Sgz8TEz7GkQvpuJ/36ggj2AaHLrSlkULWV5x+h2E8xkZL16YVjGNaAUscfZ/f6c/k9ywLKI2MMcRWl0RLy007idmRbQJ7RIfDAAAAABJRU5ErkJggg=='], ['Fedora', 'BAAAAAQCAMAAAAoLQ9TAAABPlBMVEUAAAApQXIpQXIpQXIqQ3UpQXIpQXIpQXIpQXIpQXIpQXIpQXIpQXIpQXIpQXIpQXIpQXIpQXIpQXIpQXIpQXIpQXIqQ3QpQXIpQXIqRHYpQXIpQXIqQ3QqRHYpQXI8brT///8uTYMpQnM5Zqg5ZqnS1+I4ZaY4ZactSn8uRnYrQ3MrRXgsRHUsR3s8bbM8brMtSX4wUosxVI01XZw2X50vUIguToQvR3c6X5o6aKs6aq08Un8qQnM9VIFDWINJXohKcKlXapEqQ3UvUIc2X55bhcBdcJVgcpdhfapmd5tuk8dxgqJ1hKR5jbB6iah/m8Shudq3v9C4wNG/x9bFy9nFzNnFzNrIz9zK0NzK0t/O2+3P1eA2YaDU2eTb3+jb4Oje4urj6fHm6e/s7/Tz9fj3+fz7/P38/f3+/v83YaEa/NNxAAAAHnRSTlMABAoVGyY1SVlpeIuQsLfDzdHW4+3y8/b39/n6+vr4+ns8AAAAyklEQVR4XiWN5XrDMAxF75KOknYdZJS0klNmHjMzMzO9/wvMcH7I37mSJShsJ+5NjMT6umDoHyXDcI/2qJadh++P3cle1de+9yPe3/bTY92wzfzr7wGtP3JrAI72BZGVtcAdQlwHy+JS1pDbBE9qamZF3BYrjQxPEXwKc6dC8bXFm0QIpmt8kn0Rn093q82UCtK8oXZckwFJzuulV8bHkajPyXdbnJnARfDHs0trz+JQ+5AFvzp/L0+cL2qPAINUPrq5OC6p/64F/AMnrST+Dq/r7QAAAABJRU5ErkJggg=='], ['FreeBSD', 'BAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAABIAAAASABGyWs+AAAABmJLR0QA/wD/AP+gvaeTAAADXklEQVQYGQXBS2wUZQDA8f83j33M9rF9d7u4loaWklaDpkSo9KDGaIKUaGxshD2YSPRiuDVeTDyhBxosJCoa40ktpAkPDcUqAYVIpUSUPrAulEdD2bbb7e7ObGcfM/P5+4kwKDvq6yJ1FYYcvb+YAkqAHo/HQ7FYrFIoCiurq9ZXJ06YSOkA+kBzfX06bys3zHxS9EL0tXDVyZfefacqV+X/ZSJx5+qLbx98LhaL9RiGEZWlEsWC/Thd9q6Pf3vs2u6Orc83rFsvTwwfLf5obgywT1Vjh2Hh+rbNsnTssJdNLedK5aIrpSuldKVXKsnH4+Pyn6FDXn5tMef9O+3NvdkvP1V4+EYw2AoQ+KSx8dRYS6NXXnwovaItXduSrrkinWxGOmZWJi9OyOK9m1LmsjIz9IH8QUMOd3WfAQwNKCy2tJwbHB5+XasPaxIHmc4g7WWEZ1MquBiRFlJTf1E7+Tl/H/8asavPzTY1nWd2ZkMDRPeBeHPz5ojwsilEQCBvTSKunCF3M8FSNkBGVTHDYYrLj8jVNhDZ2SMa2zo3MTamaIC/u6Ojr3DtrOrvP0BpdATnyBeIhTxpR5ABUlKSUlXS1dWstbVxdz6hPL0l1quGqkLaKwNvVcjEXNRd/4mit4Z19DjefBEPyCKxgQJQcF28dBrHNDGTSZSezsjeff0hraa2Vs2vrvit81O4vj9xLJcC4ADrQA7YAGqBGsAql/EtLdFQE/L7dF1XZmdnSrbPMJfXoLDmolQK8gJyQBowgQhQDRQBD+hsraVhd4e5MH+/oExfvWLJ9q3/3S7qMpNH2hsS40kFS4EUUAMA2IANRIBXv4uzuO67c2PykqkA5YmZ6bN18YPi0Yoknxc4AsJPCMLVAk2BLKDosCWqs/PZaulkuxk9fekcUBAAQGDks5FT0W++3NuYuC0DVUL4DIEdlIQDAj0IRkigaMjArkFx0tf523sffrQHyKsAgHPhwoXLL+yP9/kePNhk5ExUTyKFkJVAUAiCFZrQup4Rv9ftuLV/6ONBYBVABQAArMvJ5MXW7duD6P62sD8UrPAFRU1TpeCpCnGvPZr7WW///v0jpw+VC9ZdAAABAAAAAMLo7drWrmQyPWG/r8tnaGIjaM05ujr16x/ZBFh5AACA/wGZnIuw4Z4A3AAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxMi0wNy0wNFQxMDowOTo0OS0wNDowMOPVpFwAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTItMDctMDRUMTA6MDk6NDktMDQ6MDCSiBzgAAAAAElFTkSuQmCC'], ['Gentoo', 'BAAAAAQCAMAAAAoLQ9TAAAB9VBMVEUAAAD///+AgICqqv+AgIC/v9+Ojqqii9GAgKptYZKQkOmPj/ddUYBgW4eVjeCTgfiWjO5wbJaZkvPBvepkXomYkNldV4Bzbpl6dJ+Uj7ynoO6Vi+1qZI63se2mnudjXYjOy+GCfaqZjvWlm/Pc2e+Oh7NeWIOWjfeXjeW1sd+gl+diXIfp5/KHgKnn5/F2cZx6c6ZgWoXc2e6dltrAvNu0scrX1eTOyujCvup4c5qpovVpY43///+6uPPJyPXq6fvm5vrz8/z8/P7+/v/d3PixqvmxrPSyrfe0sPO0sfS3tMve2/3r6vy6ufPz8/3d3fi3tM63tPO4tsu5tsu5tvO6tfe6t/Vva5KRjKy7tvW7t/W9vPO/vM+/vvPCwfPEw/TFwvTFxOfGxfTGxvTHxvTIx/TJx/aTiOrNzPXNzfXQzfnRzuHS0fbS0vbT0uHU0e/U0uTU0/bW0+zW1ffX1vfY1/jZ2Pjb2/jc2uSTiemVkLSlnvbe3PTe3vng3fzg3f3g4Pnh4Pnh4fri4enj4/nk5Prl5Prm4/ymn/bn5vro5/rp6O/p6funoPWsqs3t7Pvt7fXv7vzv7v3w7/nx7/3y8f3y8v3z8vytqPWuqPX09P319P319P719f339v739/34+P35+f37+/+uqev9/f6vqvSwrPQAR0dcAAAAPHRSTlMAAQIDBAgJCwwVFyAsNUFHSVBneH+Bh4mVmZmanKCxsrK2tr3ExtDW19rb4ODl5u3t7u/w8/T6+/z9/f4MkNJ1AAAA8ElEQVR4XjXNw5aDURSE0YrRtm3b54+dtm3btm3bz9k3Wek9+2pSYFwT8ibzE93hwAtdJqK3nZo4J9hFXbP+vFHOthV6gnGzstZq94wdCs4UCCDymQ2v7X0LdYoSQ0MIENRYzJbRlPTTHu73ZNAL8vivmVui98PpzuqffX0mIPHJGtOQenukteJ+aS3b9htNpDnT9TeZH1bHAwBRMhGpd6e6uNrLoRgxBKmsX47nBlp678ojpEA40fejcmW4e/No0V8IIPfj6eKgbEJ3ZUnzgE1OqWp9Q3VeWRAsg51f1dZ8c31RmAsc+N5JGbG+zvj3BzDCPrzMDC9SAAAAAElFTkSuQmCC'], ['Mint', 'BAAAAAQCAMAAAAoLQ9TAAACVVBMVEUAAADh4eEAAAAAAAAAAAAAAAAAAAAsLCyXl5dgYGCnp6eTk5N3d3fBwcGqqqq8vLzNzc3Ozs7Ozs7Pz8/Pz9DQ0NHR0dLS0tLS0tPT09Pf3t/Pz8/i4eLb29vZ2drZ2tna2dra2trf3t/u7O/u7e/u7O/r6+vt7O/w7/Lw8PDy8fTz8fXz8fbx8fHz8/P19fb49/j49/n6+vuPxlmWyGOx437h9NDr9eD6/fj////+/v75/vTA5Jv6/fb7/fnL5bDL5q+AxjeDxUCEzTyGxUaGzjyHxkiHzz6J0D+Kxk6K0kCLyE2M00WNy06P00mSz1OUyF+W2FGX1FiY0F6Z02CZ21ac0Wiez2yfz2+f2mOh4GCi4GOi4WKi4mOk12+k3Wul32um1Hin0nun4G6n5Gin5Wmo23Op2Huq1n+q43Cr526s4Hit23+v6XSw34Cw34Gw6nWx4IKy4IOy44Cy63ez146z34az4IWz4YW03Y217nu38H2625e645G74pK83pu98Iq984W+4ZjA4px0tzDA5ZrB8ZDC5p7D55/E947F6KHF+JHH4qvH6qTI46/K5LLL5LN1tzLL5bN1uTDL57DM5bPM6qzM66/N5rTP6LbP6bTR6rfS573T67vT7LrV7r3X68XX7MHX773Y77/Y9rvZ8cHa7cjd88bi88/j8tTk8djk9tHm8trn89vo89zo9N3p9N3p9d7p9tvq9d/s+93s/dzy+erz+O73+vT4/PX5/fT5/fX5/vN1uzB3vTD6/ff6/fh5uTj8/fv9/vr9/vx8wjV/xDmrMRH0AAAAOXRSTlMAAAECAwQJDzk/RUlNU3F0kpSVlpeYmpucnaKjpKWqqqqtu8LExMTEzdTU1NXY4evy8vP+/v7+/v6LaR1mAAABD0lEQVR4XiXI03bEABAA0KltW9kaW3eSZW3btm3btm3b/q4mp/fxgqKOtpamhrqaqoqykrQYABh+PVMU9fjE5Xp8o54kgPHN0EBHU2N5YXZykiua0HHd2759VF2Sk5IYE5GGsmCEWLV1kVWwt5O+3x/qpgsy8k4ja+cJl2/v5C22tlgCAHtw9TQSa4s+AzfPSm0BRNl9SydhWJzLC567KrNhgrNwHIJ5qTz/2f9w7Jw/DNqIjVr04exW0AEOXcN3Ab7enr9eDW2VTJgehONyc2Z8XP5YdD0Tcuhcc4/r45OjGX51TEjYPbh8THRPvbz+CHusgSZlT7rP8PkCwfQKaQUi9Igr6JsRBMFiWZgb/AHKElRzKopZJQAAAABJRU5ErkJggg=='], ['Osx', 'BAAAAAQCAMAAAAoLQ9TAAABrVBMVEUAAAD///////+qqqr///+ZmZn///+qqqqAgID///////+tra339/eAgICoqKjx8fGMjIzm5ubh4eGPj4/g4ODIyMiAgICSkpKLi4vS1tbPz8+Xl5eMjIypqanIyMjW1tZ2dnbR0dGamprFxcV3d3d+fn60tbV3d3dcXFx3d3epqal7fHxxcXF+foCnp6hYWFhyc3Ojo6SMjI5fX196enp+fn6Li4xERERqamqgoKFpaWmFhoeen6A/Pz9QUFCWlpeSk5SUlZWUlZaOjo+Tk5RHR0cuLi5YWFgwMDAeHh40NDQ3Nzc6OjpcXF1rbG0XFxdSU1NVVVVXV1dZWVlbW1tnZ2lwcHABAQEEBAQXFxchISI+P0BISUpaW1xHR0kNDg4qKyszNDU1NTY9Pj8NDQ1cXF4XFxhSU1QSEhIDAwMrKywtLS4uLi4wMDFHSElISEggISE0NDVJSktNTU1FRUVWVlhGRkYEBAVBQUE0NTZQUVJQUVMFBQUqKitWV1lXV1daWlpaWlw+Pj8bGxtcXV9dXV1fX19fYGFgYGBkZGRlZmhpaWlsbGxwcHB2dna844Y9AAAAV3RSTlMAAQIDAwUFBggMDhkeICMkKCgqMDIzPj9ERFBib4CCg4iMjZCcnp+jqamrw83W1tvb3ePl6Ojp6+vs7u7v8PHy9PT09PT3+vr7/f39/f39/v7+/v7+/v50ou7NAAAA30lEQVR4XkXIY3vDYABG4SepMdq2bRSz/capzdm2fvOuDO397Rw0Ly4tz2QAQPbcxuZ2E/STJwfxPhWgG355fRrVAIVb1zeP9UDLfiSwkAcADe8fn7tFxWuEXFRDoer/OgoMTRBCumj8yJwPBo8Zhpk14U856/HI8n0ZUtpZ1udrSzfVneA4roNKjdrwpcMRilb8d8G60+lKnrpWcn9bO+B23w2O8Tzfq4aiNSZJqzn5O4Kw16h06fPZ+VUlUHfo97+VAEb7rSh2UgDd4/U+TBlQY7FMj5gBIGvcarVVfQPVPTG94D0j9QAAAABJRU5ErkJggg=='], ['Rhel', 'BAAAAAQCAMAAAAoLQ9TAAABj1BMVEUAAAD///////8AAAD///////8AAAD///8AAAD///////8AAAD///8AAAD+/v4AAAAAAAAAAAArKysAAAD///////8AAAAAAAAAAAAAAAD///8AAAAAAAAAAAD///8AAAD///8AAAAAAAAAAAAAAAB5eXn+/v5JSUnKysrS0tJ5eXmqqqqxsrL+/v4ZCgknJyeHh4eIiIjo6OgZCAdOTk7t7e3///8GCwwPAAArKyv19fX29vb9/f0EAAD////+/v4AAAAGBgYHAAAJAAAMAAANAQAPAQAVAQFyCQV9fX2pIRzmEQjn5+cBAAAFAAAAAADnEQjvEgn////uEQjyEgnsEQjzEgnxEgljBwPaEAj9EwnwEglHBQJHBQNNBQIBAAB3CQR5CQSHCgWLCgWRCgWTCwadDAWmDAapDAa/DgfKDwjWEAgGAADh4eHiEQjmEQjmEQkKAADoEQgLAQDtEQgMAQDuEQnvEQjvEQkPAQAfAgEuAwEvAwE8BAL1Egn3Egn4Egn6Egk+BAL+/v5CBQJrB0muAAAAT3RSTlMAAAMEBAkYGhsbMTRLUmpvcHeIjLe6vcHCxM3P0NbW3Ojp6u/w9ff5+fn6+vr6+/v7+/v8/Pz9/f39/f39/f7+/v7+/v7+/v7+/v7+/v7+Q8UoNAAAAO5JREFUeF4tiwVPA0EYRL9SXIsWl+LuxfcOd2Z3764quLu788NZNrxkksmbDP2R7vH6GioLs+iffEzNXd4+TqPErUUpVqMOvwgdzMPn1rv5vPsVeufBTaBK/bH2FPvkEUuIG5jIIc+sHYn/HJ3dC/Hxuo4y8s44dzwBbFkisHN8bVIdXs6jb+H97aCwbHEIqgcml64CD7YllNkAVQC940MLYe5YzvIeQAXNrd19Roc5MdzfdQLUUKaUYyuG9I8y1g4gj6hIak4X5cBIT2MquZJrJdOqpY11ZpAiqVwbY/C7KY1cRCrZxX4pWXVuiuq/hs49kg4OyP4AAAAASUVORK5CYII='], ['Sabayon', 'BAAAAAQCAMAAAAoLQ9TAAABvFBMVEUAAAAcUaYdVKwAAAAAAAUABAwWRY4YSZYhZtIhaNYHDx0KCgoFDBcKCgoRMmYSNm0fXL0fXb8AAAAYS5gaTp8fXLwgXsEGBgYFBQUZSpgZTZ4JFSgODg4IEiIOJkwOKVIkW7EnXbQLGzUTExMKGC8LHjwMIkITExMiIiIPEBEPJ00QEhMXOXAaPncOJEgoXbApXbEcHBwwMDAEAgAfHRgQDgo3NC8AAAAHBwcKCgoLCwsJCQkaGhofHx8lJSUwMDA0NDQ4ODiRkZEICQocHBweHh4GBgYHCg8mJiYnJycpKSkrKystLS0uLi4ICAgODg43NzcRERF1dXUUFBSjo6O1tbUbGxsEBAMLGS8MDA0iIiIjIyMkJCQNDQ0NHTYKCQkoKCgPDw8QEBArMDkKCgkRERIREhMxMTEyMjISIz00Njk1NTU2NjYCAgIVFRU5OTo5P0c8PD0+Pj4/QURAQEBHR0dKSkpMTExSUlJiYmJlZWVnZ2cWFhZ2dnZ4eHh8fHx9fX2FhYUXFxeVlZWXl5eYmJiZmZmcnJwZGRmlpaWrq6usrKyvr68KFiq/v7/FxcXY2Nji4uLn5+ft7e0yif9uAAAAN3RSTlMAAAApKSkqKioqg4OEhISEhoa1tra3t7y9vr7S09PT09TU+Pj5+fn5+/v7+/v7+/v7/v7+/v7+70RY/wAAAPpJREFUeF4dyWNjw2AUBeC7dfYyorM6rx1exKltzLZt2/rDa/J8OgBVVlFDX39jcTZoUqCse251a2dvu6ccUtWlanLQ4Vpel+ThlWq1l3wEz58tx4dOt1dMlAJk9A5gMjG75LHwo46hzkwosGOMbejumoRvubC9EOrMviT0E0Us9fvN9dA6zxJCNv6+ECGsb6oNWsgmpZT9/UTUZo3Em6AW34guTL4jiAudiCM1kLcw8/SmHERfT1/eueBiDqR1GK1n9w+K8nglxYxd6QAML4ztXoQuj8YFgWcgqdJp8qzty26vaboCNIxBCshyQDKov0aXr29v1ufq1PwPx5Q7bCoh6eoAAAAASUVORK5CYII='], ['Slackware', 'BAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AcEDi0qZWWDgAAAAx1JREFUOMt9kktoXHUchb/ffc1M7rySSdJMOknFPMRitLgoNKKI8ZHGKkgrjU8SitidimSh2UkXoQmoO1dGQSxJjdvOtqSaqlR0USEGSjVJGxuSmWR6M3fu4/93YX0g4rc9HA6cc4Q7DI+fpzz7PA8++2mxvZAeBZ4xhHtFcJRmXWsWvb36/OLcyxf5B/KHeYHy7DmGx1+YSDjmWTdlobTGMAStQGkNoLXS4tXDq7u7tUcWz49tA8jR8QUuzB5n5NTCV13F9JEo1JJwTLKuzU61QiOMcd0UDb+BncwQK3Rl15eNja3ui/Njq8aF2eMcO/XlBz0H8oO2ZUkum6A13WB99TtyzXlaCi24SaFa+ZFCzsG2DNnfkdbFjsI1APPhk+d6ujqznycdCxFozadYWvyMpx47wa+bPkGksKwUNnsk3TaCGASRXDZh5LpHXPPg4Rcni+3uYBxrtBbQghlscOVKmYHeEm0ZIZ9xyLffw41ND6VAa43SmjiMByzHYtjzwr9arfshxf5jOKlvKZfn8es77N2uks24PPfSFD/9Uvt7AtPKWmEU9d645eHYJo5tcKi/FX/zG+zmQxQH+rANk862DOW5N/hhaY64cJSa5xNFCgDDILZACMKYWAmh73HmzFsMlBQJ06LeiMinE1S3KzRCm5rXIIoUIoKIYCVM36urZFbEoiBLNMIhAE6/NsSB7h6SKZdL8xsUOnpx9j1KbTdARACIowArYe1ergfNT2i0mIbJys0GI6PT3N1/hJvrPxOFdRJNBQIy/FapI4Bpgohgcjuw+jq8jy8tV55MNBWI4ohS802CpizKv8q+FgALZAfYgSyAZtNro1oLaU1VvxCA029Oraxs7u/tKnXiNjn8HyKwur6lI++6vPK4V7IA7u+1Dyu1tr183ddNbkHuXP8/zEIYeFqiLRl6YO/p0bHJdflT/PD9qZa1W+ry99fcvlAlcZwUpuUAglIRYVgnDEIOlna4q0M/NPnuO1/PzMwg/045O/XeibUt5/Xangx6viSVFpK2jtMpvdyWCz+5ryf10clX3/amp6eZmJjgd441URWWJY8BAAAAAElFTkSuQmCC'], ['Trisquel', 'BAAAAAQCAMAAAAoLQ9TAAABjFBMVEX///8AAAAAAAAAAAAAADMAAGYAAAAAHFUAGWYAF10AImYAIGAAHloAHGMAKGsAGmYAJmYAJGEAKnUAJ1gAMXYAJnEAJGQAI2EAK28AK3cAGTEAMHgALXEALXgALG0AFUAAI2oAK3EAMngANoYALXMANIAAM4IANIIAL3gANIcANokANoQANYQAOY0ANIYANooAN4kAN40AOY0APZMANIUAOY0AO5AAPZUAPJAAP5MAPpQAQJUAOYsAPpYANoUAPpoAPpUAM4AAQJkAPZIAPJEAQpgAN4cAPpQAPZUAPJEAO4oAOosAOo8AQJoAOYsAO44AQpsAO48AQp0AP5UAQpoARJwAQ58ARaAAQZgAQ54AQ50AQpgARaIARqMARaMARaIAR6QARaIARaEASakARKEAR6MASqsARKEASKcAR6MARqYAR6UATbEATa8ARqUARKAAR6oARqMASKgATK8AR6QATbIATbAASq0AR6cASKgASqwAR6UASKcATa8ASqoASqwAS6wASKoAS60ATbHn4CTpAAAAhHRSTlMAAQIFBQUGCQoLDxAREhMUFBUYGhobHB0eHh8gIiIjJCQkJCYoLC0xMTE0NDo6Oz1BQUNHSUxOVFVVVldaWl5iY2RkZWZoamtsb3FycnR1ent9f4KDhIiJioyNkJGYm5+foqOkpqamqKmqrKytsLKzs7e4uLy8v8TFxcXGx8rO0NXY2eZc4XYcAAAA00lEQVR4XkWN1VoCUQAG/3NWtwh7CTsQJOyk7BaDxuxA6bbrxf32gt25m7kZqDRYxziooDV7+1AalMUavQh2AsEZoWvzigLun+T17/c8QiJZ7qu2QKiNmyZthdcR1/as353jIeU1GxMHo5XHdqPFeX8IaDMdHPYN6dRN7LR4qQewdTa35HWkyh+fbxERAMjwlAWJv3CPSKDQ+H7XvHdkV4Pua3Gtm4sPKIF/WV8dop4VKBw/NU33B3x1JbTt+XwhkJQoqRfWvHOy28uqH8JIdomR/R+s9yR3Cso77AAAAABJRU5ErkJggg=='], ['Ubuntu', 'BAAAAAQCAMAAAAoLQ9TAAABKVBMVEX////ojFzplGf1zbnqnHLvs5P10b3yuZv1xKrytZXvtJXys5LysI32waT0n3HxiVHwg0jxhk31kFn0h0zxf0P0hUrveTv2iU3yfkD1hEfyejv5eDLybSX0aR7zZxvyayH6ZxnxZBj4YhH7XAb5WALlUQLeTwHgUAHeTgHfTwD65NzdTQDdTQHdTgD31MfcTgLcTADcTQD////xt5/31Mf54dfmfE/dUAbeVQ/jcUDcTgHeWBnnflHohFvpjGbqkGztnX342Mz53dLgXiP65d399PHdUgrtoYLyu6Xzvaf76eLfXB/rkm/fWhvupojwrpTeVhTgYSfgYynzwa30xbL1ybnngFT31snngljhZS3539XhZzDiajbibDn77OX88Ovrl3X99vTjbz1fisGCAAAAMHRSTlMABgYGBwcHJiorMDA1NXGHjY2Nl5mZmZyfn6O5u8XHzc3X193j9fj4+vr6/f39/f08OUojAAAAx0lEQVR4Xi3HZVbDYBhGwQctWqzFPXiQ+36pu+LubvtfBKcN82/UEhld2vWXxyL6F92gbTPabse8hU/uHMx1SZoyyJWPTwq1Rs7GpYE9+Cg+OJcs1MHvU9y4fnrN31yUm18vMCIPjtw3QMndw4rs8ieVzAAcBlewpe1KM3uaBuD3Dda1BhWXAsi6AFY1a2SqifxZ+rnxWYcJDRkUS3fO1R5vwe+XZgw4D4L3RAJiknoXCVX3WeiUpJ5pIxTvVmg45pl5k4Ot/AGV2iqZBWgJJAAAAABJRU5ErkJggg=='], ['Windows', 'BIAAAAQCAYAAAAbBi9cAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAA+pJREFUOE+F0n84FHYcB3CWSsL9ojo/6ik64c6PnTjmSS0limmrpBm2G002y++xzXRz6zE0R4nbw+RnTj/WD4sbanLkkAe55ccYlyNme4SrO9u9d13PI3/saZ+/vs/3831ez+f9eb5aWsuqy2mjRYeNUa7YmtjfTico7jNJ8z0eG24NB9vvnDrvufzpq89Npnr8VjMddNmuRh9rDfp36mFg91oM7qPIc5JdbDJq3An/JfCu7Hl53W2lpS220pP2OuniN299jAYbYizSENIoAgbCTdrTKtxOJVdvGo8psUwKy7Vxe4ez1YEVudGP8YEZzyveInFJ6mZRHHqYazDspw/pJwTIuERM5JIwmUdGdyo9K7/BszGzzg6fXzZHGJ8KvzQqXKOpoIeZLjofWR++BPWyCEnPY4xFGEKWQcLjMjKmr1MwfcMYwmz/Y4KOgNki0V5k1dkjUWCK93Kp2PMFFawos8cm1gZ2GqjLXktL4mbQPHLQ4B9ZDFE5+S356fQlyuJMqzH++HnTo6ui2OO1ko9Ul+4fxfd3d4F7k4YTReqpuFS88bGZUE2QNNDobuIq8Q5CduHb7lFJaTnvnym9ergjMWD/FG8zf+aKS3G9JO5C01Asah6wUXrvALKEDoitMMHhDKrKJdg8RU2s0EB2EWWur8dd7PDPFv6dUC0Gv3kAN36VPRGP/5k5NS6lljWxG0TDiSr1VKhoPwhevRMSqkwRxDObc/DavGtpP6zoi8XOyZfhnyNEvKANBU0P8VPfI/wyNCGXSn7wlEmyA9KrgmOKGth3eDVvPfyywq2dnUEv2R9qG2rLsH7xJXziKnWcI8tlTvEC7Mu8hROlImTU9aKqcwQ1vWOihWFu+sJknmph5CvxQh87c7bNh/NXo03hrMCosyvLmMNgMF7TQL6J1dsZIUVwjKqEO+cajp5vxPN439U/gKBt8PTcYHzL/BgHCyOf4unAISj6mFC2bYC82kB5Ls460NHRUVsDeYSXpGw7UgC7sAtwShDgzdM38W7BbURXtqpqhfmB8sEQuXwoCM/6faGQuGCxyxyKWhIm+PrSD495WL3cT0hhi8Whc3NbAs9KaOyCTvrJ8qkdX19XBeTUDU00+55USFzVU2yHstcaix0mUAjJkJeuRU868Ucmk0lcguiBnMAVxjbbdHV1yeq8+u4Hgo22huSG+iQXp83ftaxW3lsPZcs6KG5T8OwaAfJiPcxlrVRVRhvF02i0F/t5VbHZ7JWDfErKTLnhE3mFPuRFepg/uxqz6TqLv6euGj3ut87t/4ylvre3t3ZehOWWO1zjSFEqMVP4GfGb/DBykJcjmaZOoLsc+hcVY/LaAgcTQAAAAABJRU5ErkJggg=='], ['OpenBSD', 'BAAAAAQCAYAAAFo9M/3AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AoYAykIPu64pQAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAADTklEQVQ4y32RXUxTdxjGn3N6eujoKT3SUkuk3VoBGfVjgFXAsZ7WkipyYXQbuu3CzUXZmGRbssnFEseFkWzgcGzGXky9MWL8TsC4IeFgtK4oAqOnG5vMVl1pCMVWQD7b/y5M6jLdflfvxfPked/nBQA0NDSChqnGVrLuGkES742NhJAdhAKAuk9yyUs5Gry7RQMZAARCWgivpQiPe71P5DUfH0xaqTL7m/iiLkJmphawa+e4SM2PvUyC4yUIBu8CnAQKAK53rCA5OUtQtStVpJ4Gw/FOBddZVKhCfq4MP4n6+at+DUsJm/e0G9JZzYEvI2tHwlEYjDxomkZ+3nG8WroRtHihZVOhVlorDQzh0okhcByDP4ZGcf+X9XAsvY5/RsBa7Kq5H/CqLctKyl/g08S2i6fq8W/MS3P34T9wNDVYSeDX1eTD9xhiLXbtB/Akwmmv6Kr+ICFkLpGhtNSM3qsSstS3oX8lSsmsxS6ZVn3j6PvVVqhUcvC8AtPxVPxwygVKvngN89WOjgVprggGA4eenjB4nsXsTASpC63I0wVTZYPR11FoKRB8Ax54PCFk6BhMTk5CPR3GSbHouGzknr/bYFq9EAvfc9Tu1sLjHcXNKxLuTOTgzOlOe7IHBc/beAXWpWmXlz8a84nhcLQ+ecVzsAEQrMWuMX+f9HZF2YPZ28FVSNfoPWqOzMUmqYMAJm7+/OOzXQFwHGpyEV+vi+yvtxBC9pDmpgJC4tvI3mo9GTitIxvW24nT7ug67HY/3eDs2bbyrVsrY2day70rV6kRfDAHk5lDLJqAmmeRiD9GJDKHvwb74R8G0mkTPjrQTTG122xkTTbwaV2b1H4u16JQKXGr7yG2b8/H1MQ09IsTSEmRwzf4CCwzD+dmE1re8CI7wwi5XNlFf9vaTXX4dWJg4LLl7h05fpNGwNAMWpp9CIVYNO/tRCzGwpDFQaVMQTS2CKY0BWr3GVGWNSXKACDDaA4Mh976pq9f5Sy09GgKlmeAMIBKzUKpU+BFoxJecRhUfAbMxDi4eADfHVmE79v7q575gvvYeVvjZ58LD5mwsKUyX0hnf0feslnQCWD4zxnc6reKisxsfH2oscqcmTmK/+Ow252cna7K52r+Bky6PqmoT5HBAAAAAElFTkSuQmCC'], ['Gnu', 'BAAAAAQCAYAAAFo9M/3AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AoYAywUV5gQrwAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAADcElEQVQ4y43Tb0jjBRzH8c9v+7nNMebcUW21Cc78g/wcuhByIScoMRwoTBmFlZCmIJ14axqkgoYIkXIqKIVBEuJNUBEUPRlpqDC3Q2Ex0nTezun2YOaPLXNIv7Vvj7zgiOj1+PPk/eADjuNEuHN6ekqMw+H4IzMz8xChUCjV1NT0JbO7uxtfXFy8NZvNr21tbd0AAEQikY6I0m1tbQbx2NjYZiqV+vn29jY+PDw8xhYWFj45PDzcb25uhlQqfSTief6X0dFRpqKigvF4PPPipaWlY7lcXhCLxXJnZmY+ZTY2NnzX19ePGxsbHw0MDLivrq5mc3Jy2pPJZLVWq/2cdbvdDSzLholoNJ1OMy6Xq0Ymk5HNZktOTU29qMgA8HYqlaKDgwNKp9M0PT09BgAM/iGuqqoimUx2yPP8U5/P9wEAMB0dHRUKheJHiUTyeGhoqAUAnE7nR0qlsjcQCLwjlsvlz+bm5mQWi0VSWlr6bXV1tU6hUMj6+/vfN5lMN0xxcfG1zWZ7SETTSqWSGhoamPHxcajV6s+8Xu9Xou7u7t9VKtW00+mkSCTC6PV6aDQa8Dw/Wl9fP8UAQCgUosvLSyovL2eWl5dRUFBw7Ha7v9vc3By5K3g1EAg8FQSBiIguLi4IgBwA2LtEjuPuJxKJ62AwKFpdXf0eQBIvYVmW/cLlchEAWK1WAADT09NzX6PR/OTz+eKVlZUzKpVqTyqVvsnzfLCkpGSrtrb2t97eXnFeXl5ZKpWyZ2RkPPP7/UUnJyefGI3GU+zt7aU4jotOTk7mAUBfX1+b1Wq9kcvlBIAcDgctLCyQxWKhoqIi6uzs/BoAVlZW3qqpqbllZmdnf1hfX//Q4/HEzWbzX+3t7fcMBgMFg0EYjUYmEolAEAREo1Hk5+fT+fk5Mzg4GD86OpJ0dXXJGQBoaWl5Ra/XP6yrq3tQVlam2N7ehslkAsuySCaTUKvVSCQS2NnZSXAcJxYEQTEyMvKeIAhLDADY7fZ7BoPhm6ysLFpbWzuan5//WKvVvsHzPEWjUSYSiSA3N5d0Oh0TjUaf+/1+S2Nj46/4FwYAr7e2tnbF4/E/iYjC4TCFw+F0LBaj/f19mpiYeID/IAagAyABYLXb7cLZ2Rml02nyer3POY6rwv8hEr34u0IkEk1mZ2cTgGMA7768/RtL5JKsGzrLIgAAAABJRU5ErkJggg=='], ['CrunchBang', 'BYAAAAQCAQAAAC45EetAAAA8ElEQVR4XnWOsUpCYQBGz1TIHYu2Qix6g0DEtSeQu/UIISJtUS8gJq61F1wcdMohcBDxKUR8hsz1xA/y44/cs3znbB+RJ0Skl3pSkeFQbUs79VAPzrwPFRmN1Ja0Ug/16I93+1oi4lKte+zMXv32WuoAm43lXMrqzbFncgWw21lORf4+/PREKpAhYqZuPXZ+T/3yXbZEajV1JavUQ104sRcq0myqc5mnHurWqc/7yhExVwuPncl+C4Bu13L60ueAwcByOtLhgAIRCzU38fRGTmSxUBvSSD3Ui1NvQkXWa7Uq1dRD9R17HiqyRUSy1NP6B7e1Yu2GtlUKAAAAAElFTkSuQmCC'], ['Yuno', 'BgAAAAPCAYAAAD+pA/bAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAABDtJREFUOE+FlHtMm1UYxrtsi8aEgCb+oTFmZur+WNS5RaPERU10C2qGaBgb6hgwLwMmHTIKlIKlQIHSQrmU24BSSmnpBVooUmihtEC5yKWDjVu5uOkcEca4lG5E93j6EQmELX7Jky/fOed9fu973vMdGu0xT3Cgz57yXMZLDdXcy821PFWLKmuA6HqLMqtLX5POl4iYb2ukWW8IOOFe/qfe3/M4n0eOjwyZD8//bldODOk37N1yDJgl+LVdjEGLFKO9KkzZm8hbje7mIrTXZ7sMtTydrJh15H8hHW11XvN/jGS7VudcD5w34ZZzeQYb67fwYO03LN4exo1+LWzNxbA05O5QuzbHqRYn+++CHDx4YK9WLfaedfQzV5em54g5Zbi8OIml+VFMDLWQ7GXoaSmFWZsDZVGCO2u0EbkhHTrhFqi9PmelSsQ8tAtSVch60dpUeGe4kxgZxegzVkBzlQ2NKBG2+iJIMqMok9r8OLRIMqApToSqmAWTmk9B2+o2YW79oshU7ABcuvAFrVGWXkVKpBYoSaBSxIS2mINpiwbjZiUMZRloVfJQyaXDKObBpimBScpHFe8KmmXpaKhK3arGrBVuVBclHN2CiPNin1OVs1tVJYlQlyZBxA6DviQVo6ZaOKd7sTplw53BVugruBBzfsRslw7rZPxaczWutSpQV/gzJPxo1JexyfaxKBBpuiEx+tw+CpKdEvGWTprGlhcwqbIzL5/DYKMYndpK3L1hxf3ZfkrzwybUZjPhnOqmvlcmutFF1jis9QSShOrcWNSXJ1MA0ou/NZWc8Ddfe4VGO3bk0JON1dyMMlK+gmxNrZCFhZF2Kng7YNO0awt4b7wLNp2EqtAsF6ImP56SG0B6siovTYpIjg15gapCVhAfJRUyIBFEo6k8AyuTtkcC/qvG/XbDexulWJvqgYH0o0nKhVHFJ40XwFQnWM5OCX+XMg86c3KvVMSMapCmPpSTIygTxGKZZOcOXhrr3Mp4uzkFuG6B3ajE3TELDDU8qEmsmvRATxquKkxAnSTFjwKEfv3JU9JC5unG6rQ1bTkbQ4Yq/DVgxOqwBWt2K9Yne3ZCZvrgHO2k5paHzOhSiVCZSkdNTgzy40JRlPgDhDHBCxUZdCs91G8fLeK87zOl6XSOICZYXMGNhDqX9fDP/mbK2DXVi/szm03eLpejl5pzOfqwOt4JBT8OeYwQt/4R/BR0OzXiLCM5LOCji/4nXt46rpywgG+zor5RxgSdupBzJdglSY+5ZZbl3XNY6mbn7W0Lcx06zBg1WBjtcC6OmG+OmRTrFrnIUZESZeVeCpwh8TpiPsQ47/tloM97T+/6m8mg55mT3tStyL54mhlwwtszNvjzD8/6HH8i7PvvPPRioZdRWuDBZUR6pEWG7I8P9Xs1Jsj36MfvvO5J/+rTw58dP7afJPfBgeef3XGz/gskFVpJc4HwGwAAAABJRU5ErkJggg==']] } }; @@ -1348,9 +3763,13 @@ Rice = { init: function() { - return $.ready(function() { + $.ready(function() { return Rice.nodes(d.body); }); + return Post.prototype.callbacks.push({ + name: 'Rice Checkboxes', + cb: this.node + }); }, checkclick: function() { return this.check.click(); @@ -1426,7 +3845,7 @@ } }, node: function() { - return Rice.checkbox($('.postInfo input', this)); + return Rice.checkbox($('.postInfo input', this.el)); }, checkbox: function(input) { var div; @@ -1441,7 +3860,7 @@ div.check = input; $.after(input, div); if (div.parentElement.tagName.toLowerCase() !== 'label') { - return $.on(div, 'click', Rice.click); + return $.on(div, 'click', Rice.checkclick); } }, select: function(input) { @@ -1452,7 +3871,1004 @@ className: 'selectrice', innerHTML: "
" + (input.options[input.selectedIndex].textContent || null) + "
" }); - return $.on(div, "click", e, $.after(input, div)); + $.on(div, "click", function(e) { + return Rice.selectclick; + }); + return $.after(input, div); + } + }; + + /* + JSColor + http://github.com/hotchpotch/jscolor/tree/master + + JSColor is color library for JavaScript. + JSColor code is porting from AS3 Color library ColorSB < http://sketchbook.libspark.org/trac/wiki/ColorSB >. + */ + + + JSColor = { + css: function() { + var agent; + + agent = Style.agent; + return ".jscBox {\nwidth: 251px;\nheight: 155px;\n}\n.jscBoxB,\n.jscPadB,\n.jscPadM,\n.jscSldB,\n.jscSldM,\n.jscBtn {\nposition: absolute;\nclear: both;\n}\n.jscBoxB {\nleft: 320px;\nbottom: 20px;\nz-index: 30;\nborder: 1px solid;\nborder-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;\nbackground: ThreeDFace;\n}\n.jscPad {\nwidth: 181px;\nheight: 101px;\nbackground-image: " + agent + "linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1)), " + agent + "linear-gradient(left, #f00, #ff0, #0f0, #0ff, #00f, #f0f, #f00);\nbackground-repeat: no-repeat;\nbackground-position: 0 0;\n}\n.jscPadB {\nleft: 10px;\ntop: 10px;\nborder: 1px solid;\nborder-color: ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow;\n}\n.jscPadM {\nleft: 0;\ntop: 0;\nwidth: 200px;\nheight: 121px;\ncursor: crosshair;\nbackground-image: url('data:image/gif;base64,R0lGODlhDwAPAKEBAAAAAP///////////yH5BAEKAAIALAAAAAAPAA8AAAIklB8Qx53b4otSUWcvyiz4/4AeQJbmKY4p1HHapBlwPL/uVRsFADs=');\nbackground-repeat: no-repeat;\n}\n.jscSld {\nwidth: 16px;\nheight: 101px;\nbackground-image: " + agent + "linear-gradient(rgba(0,0,0,0), rgba(0,0,0,1));\n}\n.jscSldB {\nright: 10px;\ntop: 10px;\nborder: 1px solid;\nborder-color: ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow;\n}\n.jscSldM {\nright: 0;\ntop: 0;\nwidth: 36px;\nheight: 121px;\ncursor: pointer;\nbackground-image: url('data:image/gif;base64,R0lGODlhBwALAKECAAAAAP///6g8eKg8eCH5BAEKAAIALAAAAAAHAAsAAAITTIQYcLnsgGxvijrxqdQq6DRJAQA7');\nbackground-repeat: no-repeat;\n}\n.jscBtn {\nright: 10px;\nbottom: 10px;\npadding: 0 15px;\nheight: 18px;\nborder: 1px solid;\nborder-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;\ncolor: ButtonText;\ntext-align: center;\ncursor: pointer;\n}\n.jscBtnS {\nline-height: 10px;\n}"; + }, + bind: function(el) { + if (!el.color) { + return el.color = new JSColor.color(el); + } + }, + fetchElement: function(mixed) { + if (typeof mixed === "string") { + return $.id(mixed); + } else { + return mixed; + } + }, + fireEvent: function(el, evnt) { + var ev; + + if (!el) { + return; + } + ev = document.createEvent('HTMLEvents'); + ev.initEvent(evnt, true, true); + return el.dispatchEvent(ev); + }, + getRelMousePos: function(e) { + var x, y; + + if (e == null) { + e = window.event; + } + x = 0; + y = 0; + if (typeof e.offsetX === 'number') { + x = e.offsetX; + y = e.offsetY; + } else if (typeof e.layerX === 'number') { + x = e.layerX; + y = e.layerY; + } + return { + x: x, + y: y + }; + }, + color: function(target) { + var HSV_RGB, RGB_HSV, THIS, abortBlur, blurTarget, blurValue, drawPicker, holdPad, holdSld, isPickerOwner, leavePad, leaveSld, leaveStyle, leaveValue, redrawPad, redrawSld, removePicker, setPad, setSld, styleElement, valueElement; + + this.hsv = [0, 0, 1]; + this.rgb = [1, 1, 1]; + this.valueElement = this.styleElement = target; + abortBlur = holdPad = holdSld = false; + this.hidePicker = function() { + if (isPickerOwner()) { + return removePicker(); + } + }; + this.showPicker = function() { + if (!isPickerOwner()) { + return drawPicker(); + } + }; + this.importColor = function() { + if (!valueElement) { + return this.exportColor(); + } else { + if (!this.fromString(valueElement.value, leaveValue)) { + styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor; + return this.exportColor(leaveValue | leaveStyle); + } + } + }; + this.exportColor = function(flags) { + var value; + + if (!(flags & leaveValue) && valueElement) { + value = '#' + this.toString(); + valueElement.value = value; + valueElement.previousSibling.value = value; + editTheme[valueElement.previousSibling.name] = value; + setTimeout(function() { + return Style.themeCSS.textContent = Style.theme(editTheme); + }); + } + if (!(flags & leaveStyle) && styleElement) { + styleElement.style.backgroundColor = '#' + this.toString(); + } + if (!(flags & leavePad) && isPickerOwner()) { + redrawPad(); + } + if (!(flags & leaveSld) && isPickerOwner()) { + return redrawSld(); + } + }; + this.fromHSV = function(h, s, v, flags) { + this.hsv = [h = h ? $.minmax(h, 0.0, 6.0) : this.hsv[0], s = s ? $.minmax(s, 0.0, 1.0) : this.hsv[1], v = v ? $.minmax(v, 0.0, 1.0) : this.hsv[2]]; + this.rgb = HSV_RGB(h, s, v); + return this.exportColor(flags); + }; + this.fromRGB = function(r, g, b, flags) { + var hsv; + + r = r != null ? $.minmax(r, 0.0, 1.0) : this.rgb[0]; + g = g != null ? $.minmax(g, 0.0, 1.0) : this.rgb[1]; + b = b != null ? $.minmax(b, 0.0, 1.0) : this.rgb[2]; + hsv = RGB_HSV(r, g, b); + if (hsv[0] != null) { + this.hsv[0] = $.minmax(hsv[0], 0.0, 6.0); + } + if (hsv[2] !== 0) { + this.hsv[1] = hsv[1] == null ? null : $.minmax(hsv[1], 0.0, 1.0); + } + this.hsv[2] = hsv[2] == null ? null : $.minmax(hsv[2], 0.0, 1.0); + this.rgb = HSV_RGB(this.hsv[0], this.hsv[1], this.hsv[2]); + return this.exportColor(flags); + }; + this.fromString = function(number, flags) { + var m, val; + + m = number.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i); + if (!m) { + return false; + } else { + if (m[1].length === 6) { + this.fromRGB(parseInt(m[1].substr(0, 2), 16) / 255, parseInt(m[1].substr(2, 2), 16) / 255, parseInt(m[1].substr(4, 2), 16) / 255, flags); + } else { + this.fromRGB(parseInt((val = m[1].charAt(0)) + val, 16) / 255, parseInt((val = m[1].charAt(1)) + val, 16) / 255, parseInt((val = m[1].charAt(2)) + val, 16) / 255, flags); + } + return true; + } + }; + this.toString = function() { + return (0x100 | Math.round(255 * this.rgb[0])).toString(16).substr(1) + (0x100 | Math.round(255 * this.rgb[1])).toString(16).substr(1) + (0x100 | Math.round(255 * this.rgb[2])).toString(16).substr(1); + }; + RGB_HSV = function(r, g, b) { + var h, m, n, v; + + n = (n = r < g ? r : g) < b ? n : b; + v = (v = r > g ? r : g) > b ? v : b; + m = v - n; + if (m === 0) { + return [null, 0, v]; + } + h = r === n ? 3 + (b - g) / m : g === n ? 5 + (r - b) / m : 1 + (g - r) / m; + return [h === 6 ? 0 : h, m / v, v]; + }; + HSV_RGB = function(h, s, v) { + var f, i, m, n; + + if (h == null) { + return [v, v, v]; + } + i = Math.floor(h); + f = i % 2 ? h - i : 1 - (h - i); + m = v * (1 - s); + n = v * (1 - s * f); + switch (i) { + case 6: + case 0: + return [v, n, m]; + case 1: + return [n, v, m]; + case 2: + return [m, v, n]; + case 3: + return [m, n, v]; + case 4: + return [n, m, v]; + case 5: + return [v, m, n]; + } + }; + removePicker = function() { + delete JSColor.picker.owner; + return $.rm(JSColor.picker.boxB); + }; + drawPicker = function(x, y) { + var box, boxB, btn, btnS, elements, item, p, pad, padB, padM, sld, sldB, sldM, _i, _len; + + if (!(p = JSColor.picker)) { + elements = ['box', 'boxB', 'pad', 'padB', 'padM', 'sld', 'sldB', 'sldM', 'btn']; + p = {}; + for (_i = 0, _len = elements.length; _i < _len; _i++) { + item = elements[_i]; + p[item] = $.el('div', { + className: "jsc" + (item.capitalize()) + }); + } + p.btnS = $.el('span', { + className: 'jscBtnS' + }); + p.btnT = $.tn('Close'); + JSColor.picker = p; + $.add(p.box, [p.sldB, p.sldM, p.padB, p.padM, p.btn]); + $.add(p.sldB, p.sld); + $.add(p.padB, p.pad); + $.add(p.btnS, p.btnT); + $.add(p.btn, p.btnS); + $.add(p.boxB, p.box); + } + box = p.box, boxB = p.boxB, btn = p.btn, btnS = p.btnS, pad = p.pad, padB = p.padB, padM = p.padM, sld = p.sld, sldB = p.sldB, sldM = p.sldM; + box.onmouseup = box.onmouseout = function() { + return target.focus(); + }; + box.onmousedown = function() { + return abortBlur = true; + }; + box.onmousemove = function(e) { + if (holdPad || holdSld) { + holdPad && setPad(e); + holdSld && setSld(e); + if (d.selection) { + return d.selection.empty(); + } else if (window.getSelection) { + return window.getSelection().removeAllRanges(); + } + } + }; + padM.onmouseup = padM.onmouseout = function() { + if (holdPad) { + holdPad = false; + return JSColor.fireEvent(valueElement, 'change'); + } + }; + padM.onmousedown = function(e) { + if (THIS.hsv[2] === 0) { + THIS.fromHSV(null, null, 1.0); + } + holdPad = true; + return setPad(e); + }; + sldM.onmouseup = sldM.onmouseout = function() { + if (holdSld) { + holdSld = false; + return JSColor.fireEvent(valueElement, 'change'); + } + }; + sldM.onmousedown = function(e) { + holdSld = true; + return setSld(e); + }; + btn.onmousedown = function() { + return THIS.hidePicker(); + }; + redrawPad(); + redrawSld(); + JSColor.picker.owner = THIS; + return $.add(ThemeTools.dialog, p.boxB); + }; + redrawPad = function() { + var rgb; + + JSColor.picker.padM.style.backgroundPosition = "" + (4 + Math.round((THIS.hsv[0] / 6) * 180)) + "px " + (4 + Math.round((1 - THIS.hsv[1]) * 100)) + "px"; + rgb = HSV_RGB(THIS.hsv[0], THIS.hsv[1], 1); + JSColor.picker.sld.style.backgroundColor = "rgb(" + (rgb[0] * 100) + "%, " + (rgb[1] * 100) + "%, " + (rgb[2] * 100) + "%)"; + }; + redrawSld = function() { + return JSColor.picker.sldM.style.backgroundPosition = "0 " + (6 + Math.round((1 - THIS.hsv[2]) * 100)) + "px"; + }; + isPickerOwner = function() { + return JSColor.picker && JSColor.picker.owner === THIS; + }; + blurTarget = function() { + if (valueElement === target) { + return THIS.importColor(); + } + }; + blurValue = function() { + if (valueElement !== target) { + return THIS.importColor(); + } + }; + setPad = function(e) { + var mpos, x, y; + + mpos = JSColor.getRelMousePos(e); + x = mpos.x - 11; + y = mpos.y - 11; + return THIS.fromHSV(x * (1 / 30), 1 - y / 100, null, leaveSld); + }; + setSld = function(e) { + var mpos, y; + + mpos = JSColor.getRelMousePos(e); + y = mpos.y - 9; + return THIS.fromHSV(null, null, 1 - y / 100, leavePad); + }; + THIS = this; + valueElement = JSColor.fetchElement(this.valueElement); + styleElement = JSColor.fetchElement(this.styleElement); + leaveValue = 1 << 0; + leaveStyle = 1 << 1; + leavePad = 1 << 2; + leaveSld = 1 << 3; + $.on(target, 'focus', function() { + return THIS.showPicker(); + }); + $.on(target, 'blur', function() { + if (!abortBlur) { + return window.setTimeout(function() { + abortBlur || blurTarget(); + return abortBlur = false; + }); + } else { + return abortBlur = false; + } + }); + if (valueElement) { + $.on(valueElement, 'keyup input', function() { + return THIS.fromString(valueElement.value, leaveValue); + }); + $.on(valueElement, 'blur', blurValue); + valueElement.setAttribute('autocomplete', 'off'); + } + if (styleElement) { + styleElement.jscStyle = { + backgroundColor: styleElement.style.backgroundColor + }; + } + return this.importColor(); + } + }; + + MascotTools = { + init: function(mascot) { + var el, filters, location, position; + + if (mascot == null) { + mascot = Conf[g.MASCOTSTRING][Math.floor(Math.random() * Conf[g.MASCOTSTRING].length)]; + } + Conf['mascot'] = mascot; + this.el = el = $('#mascot img', d.body); + if (!Conf['Mascots'] || (g.CATALOG && Conf['Hide Mascots on Catalog'])) { + if (el) { + return el.src = ""; + } else { + return null; + } + } + position = "" + (Conf['Mascot Position'] === 'bottom' || !(Conf['Mascot Position'] === "default" && Conf['Post Form Style'] === "fixed") ? 0 + ((!g.REPLY || Conf['Boards Navigation'] === 'sticky bottom') && Conf['4chan SS Navigation'] ? 1.6 : 0) : 20.3 + (!g.REPLY || !!$('#postForm input[name=spoiler]') ? 1.4 : 0) + (Conf['Show Post Form Header'] ? 1.5 : 0) + (Conf['Post Form Decorations'] ? 0.2 : 0)) + "em"; + if (Conf['editMode']) { + if (!(mascot = editMascot || (mascot = Mascots[Conf["mascot"]]))) { + return; + } + } else { + if (!Conf["mascot"]) { + if (el) { + return el.src = ""; + } else { + return null; + } + } + if (!(mascot = Mascots[Conf["mascot"]])) { + Conf[g.MASCOTSTRING].remove(Conf["mascot"]); + return this.init(); + } + this.addMascot(mascot); + } + if (Conf["Sidebar Location"] === 'left') { + if (Conf["Mascot Location"] === "sidebar") { + location = 'left'; + } else { + location = 'right'; + } + } else if (Conf["Mascot Location"] === "sidebar") { + location = 'right'; + } else { + location = 'left'; + } + filters = []; + if (Conf["Grayscale Mascots"]) { + filters.push(''); + } + return Style.mascot.textContent = "#mascot img {\n position: fixed;\n z-index: " + (Conf['Mascots Overlap Posts'] ? '3' : '-1') + ";\n " + (Style.sidebarLocation[0] === "left" ? "" + Style.agent + "transform: scaleX(-1);" : "") + "\n bottom: " + (mascot.position === 'top' ? 'auto' : (mascot.position === 'bottom' && Conf['Mascot Position'] === 'default') || !$.id('postForm') ? '0' : position) + ";\n " + location + ": " + ((mascot.hOffset || 0) + (Conf['Sidebar'] === 'large' && mascot.center ? 25 : 0)) + "px;\n top: " + (mascot.position === 'top' ? '0' : 'auto') + ";\n height: " + (mascot.height && isNaN(parseFloat(mascot.height)) ? mascot.height : mascot.height ? parseInt(mascot.height, 10) + 'px' : 'auto') + ";\n width: " + (mascot.width && isNaN(parseFloat(mascot.width)) ? mascot.width : mascot.width ? parseInt(mascot.width, 10) + 'px' : 'auto') + ";\n margin-" + location + ": " + (mascot.hOffset || 0) + "px;\n margin-bottom: " + (mascot.vOffset || 0) + "px;\n opacity: " + Conf['Mascot Opacity'] + ";\n pointer-events: none;\n " + (filters.length > 0 ? "filter: url('data:image/svg+xml," + filters.join("") + "#filters');" : "") + "\n}"; + }, + categories: ['Anime', 'Ponies', 'Questionable', 'Silhouette', 'Western'], + dialog: function(key) { + var dialog, div, fileInput, input, item, layout, name, option, optionHTML, setting, value, _i, _len, _ref; + + Conf['editMode'] = 'mascot'; + if (Mascots[key]) { + editMascot = JSON.parse(JSON.stringify(Mascots[key])); + } else { + editMascot = {}; + } + editMascot.name = key || ''; + MascotTools.addMascot(editMascot); + Style.addStyle(); + layout = { + name: ["Mascot Name", "", "text"], + image: ["Image", "", "text"], + category: ["Category", MascotTools.categories[0], "select", MascotTools.categories], + position: ["Position", "default", "select", ["default", "top", "bottom"]], + height: ["Height", "auto", "text"], + width: ["Width", "auto", "text"], + vOffset: ["Vertical Offset", "0", "number"], + hOffset: ["Horizontal Offset", "0", "number"], + center: ["Center Mascot", false, "checkbox"] + }; + dialog = $.el("div", { + id: "mascotConf", + className: "reply dialog", + innerHTML: "

" + }); + for (name in layout) { + item = layout[name]; + switch (item[2]) { + case "text": + div = this.input(item, name); + input = $('input', div); + if (name === 'image') { + $.on(input, 'blur', function() { + editMascot[this.name] = this.value; + MascotTools.addMascot(editMascot); + return Style.addStyle(); + }); + fileInput = $.el('input', { + type: "file", + accept: "image/*", + title: "imagefile", + hidden: "hidden" + }); + $.on(input, 'click', function(evt) { + if (evt.shiftKey) { + return this.nextSibling.click(); + } + }); + $.on(fileInput, 'change', function(evt) { + return MascotTools.uploadImage(evt, this); + }); + $.after(input, fileInput); + } + if (name === 'name') { + $.on(input, 'blur', function() { + this.value = this.value.replace(/[^a-z-_0-9]/ig, "_"); + if (!/^[a-z]/i.test(this.value)) { + return alert("Mascot names must start with a letter."); + } + editMascot[this.name] = this.value; + MascotTools.addMascot(editMascot); + return Style.addStyle(); + }); + } else { + $.on(input, 'blur', function() { + editMascot[this.name] = this.value; + MascotTools.addMascot(editMascot); + return Style.addStyle(); + }); + } + break; + case "number": + div = this.input(item, name); + $.on($('input', div), 'blur', function() { + editMascot[this.name] = parseInt(this.value); + MascotTools.addMascot(editMascot); + return Style.addStyle(); + }); + break; + case "select": + value = editMascot[name] || item[1]; + optionHTML = "
" + item[0] + "
"; + div = $.el('div', { + className: "mascotvar", + innerHTML: optionHTML + }); + setting = $("select", div); + setting.value = value; + $.on($('select', div), 'change', function() { + editMascot[this.name] = this.value; + MascotTools.addMascot(editMascot); + return Style.addStyle(); + }); + break; + case "checkbox": + value = editMascot[name] || item[1]; + div = $.el("div", { + className: "mascotvar", + innerHTML: "" + }); + $.on($('input', div), 'click', function() { + editMascot[this.name] = this.checked ? true : false; + MascotTools.addMascot(editMascot); + return Style.addStyle(); + }); + } + $.add($("#mascotcontent", dialog), div); + } + $.on($('#save > a', dialog), 'click', function() { + return MascotTools.save(editMascot); + }); + $.on($('#close > a', dialog), 'click', MascotTools.close); + Style.rice(dialog); + return $.add(d.body, dialog); + }, + input: function(item, name) { + var div, value; + + if (Array.isArray(editMascot[name])) { + if (Style.lightTheme) { + value = editMascot[name][1]; + } else { + value = editMascot[name][0]; + } + } else { + value = editMascot[name] || item[1]; + } + editMascot[name] = value; + div = $.el("div", { + className: "mascotvar", + innerHTML: "
" + item[0] + "
" + }); + return div; + }, + uploadImage: function(evt, el) { + var file, reader; + + file = evt.target.files[0]; + reader = new FileReader(); + reader.onload = function(evt) { + var val; + + val = evt.target.result; + el.previousSibling.value = val; + editMascot.image = val; + return Style.addStyle(); + }; + return reader.readAsDataURL(file); + }, + addMascot: function(mascot) { + var el; + + if (el = this.el) { + return el.src = Array.isArray(mascot.image) ? (Style.lightTheme ? mascot.image[1] : mascot.image[0]) : mascot.image; + } else { + this.el = el = $.el('div', { + id: "mascot", + innerHTML: "" + }); + return $.add(d.body, el); + } + }, + save: function(mascot) { + var image, name, type, userMascots, _i, _len, _ref; + + name = mascot.name, image = mascot.image; + if ((name == null) || name === "") { + alert("Please name your mascot."); + return; + } + if ((image == null) || image === "") { + alert("Your mascot must contain an image."); + return; + } + if (!mascot.category) { + mascot.category = MascotTools.categories[0]; + } + if (Mascots[name]) { + if (Conf["Deleted Mascots"].contains(name)) { + Conf["Deleted Mascots"].remove(name); + $.set("Deleted Mascots", Conf["Deleted Mascots"]); + } else { + if (confirm("A mascot named \"" + name + "\" already exists. Would you like to over-write?")) { + delete Mascots[name]; + } else { + return alert("Creation of \"" + name + "\" aborted."); + } + } + } + _ref = ["Enabled Mascots", "Enabled Mascots sfw", "Enabled Mascots nsfw"]; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + type = _ref[_i]; + if (!Conf[type].contains(name)) { + Conf[type].push(name); + $.set(type, Conf[type]); + } + } + Mascots[name] = JSON.parse(JSON.stringify(mascot)); + Conf["mascot"] = name; + delete Mascots[name].name; + userMascots = $.get("userMascots", {}); + userMascots[name] = Mascots[name]; + $.set('userMascots', userMascots); + return alert("Mascot \"" + name + "\" saved."); + }, + close: function() { + Conf['editMode'] = false; + editMascot = {}; + $.rm($("#mascotConf", d.body)); + Style.addStyle(); + return Options.dialog("mascot"); + }, + importMascot: function(evt) { + var file, reader; + + file = evt.target.files[0]; + reader = new FileReader(); + reader.onload = function(e) { + var err, imported, name, userMascots; + + try { + imported = JSON.parse(e.target.result); + } catch (_error) { + err = _error; + alert(err); + return; + } + if (!imported["Mascot"]) { + alert("Mascot file is invalid."); + } + name = imported["Mascot"]; + delete imported["Mascot"]; + if (Mascots[name] && !Conf["Deleted Mascots"].remove(name)) { + if (!confirm("A mascot with this name already exists. Would you like to over-write?")) { + return; + } + } + Mascots[name] = imported; + userMascots = $.get("userMascots", {}); + userMascots[name] = Mascots[name]; + $.set('userMascots', userMascots); + alert("Mascot \"" + name + "\" imported!"); + $.rm($("#mascotContainer", d.body)); + return Options.mascotTab.dialog(); + }; + return reader.readAsText(file); + } + }; + + /* + Style.color adapted from 4chan Style Script + */ + + + ThemeTools = { + init: function(key) { + var colorInput, div, fileInput, header, input, item, layout, themecontent, _i, _j, _len, _len1, _ref; + + Conf['editMode'] = "theme"; + if (Themes[key]) { + editTheme = JSON.parse(JSON.stringify(Themes[key])); + if (($.get("userThemes", {}))[key]) { + editTheme["Theme"] = key; + } else { + editTheme["Theme"] = key += " [custom]"; + } + } else { + editTheme = JSON.parse(JSON.stringify(Themes['Yotsuba B'])); + editTheme["Theme"] = "Untitled"; + editTheme["Author"] = "Author"; + editTheme["Author Tripcode"] = "Unknown"; + } + layout = ["Background Image", "Background Attachment", "Background Position", "Background Repeat", "Background Color", "Thread Wrapper Background", "Thread Wrapper Border", "Dialog Background", "Dialog Border", "Reply Background", "Reply Border", "Highlighted Reply Background", "Highlighted Reply Border", "Backlinked Reply Outline", "Input Background", "Input Border", "Hovered Input Background", "Hovered Input Border", "Focused Input Background", "Focused Input Border", "Checkbox Background", "Checkbox Border", "Checkbox Checked Background", "Buttons Background", "Buttons Border", "Navigation Background", "Navigation Border", "Links", "Hovered Links", "Quotelinks", "Backlinks", "Navigation Links", "Hovered Navigation Links", "Names", "Tripcodes", "Emails", "Subjects", "Text", "Inputs", "Post Numbers", "Greentext", "Sage", "Board Title", "Timestamps", "Warnings", "Shadow Color"]; + ThemeTools.dialog = $.el("div", { + id: "themeConf", + className: "reply dialog", + innerHTML: "

" + }); + header = $.el("div", { + innerHTML: " by" + }); + _ref = $$("input", header); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + input = _ref[_i]; + $.on(input, 'blur', function() { + return editTheme[this.name] = this.value; + }); + } + $.add($("#themebar", ThemeTools.dialog), header); + themecontent = $("#themecontent", ThemeTools.dialog); + for (_j = 0, _len1 = layout.length; _j < _len1; _j++) { + item = layout[_j]; + if (!editTheme[item]) { + editTheme[item] = ''; + } + div = $.el("div", { + className: "themevar", + innerHTML: "
" + item + "
" + }); + input = $('input', div); + input.value = editTheme[item]; + switch (item) { + case "Background Image": + input.className = 'field'; + fileInput = $.el('input', { + type: 'file', + accept: "image/*", + title: "BG Image", + hidden: "hidden" + }); + $.on(input, 'click', function(evt) { + if (evt.shiftKey) { + return this.nextSibling.click(); + } + }); + $.on(fileInput, 'change', function(evt) { + return ThemeTools.uploadImage(evt, this); + }); + $.after(input, fileInput); + break; + case "Background Attachment": + case "Background Position": + case "Background Repeat": + input.className = 'field'; + break; + default: + input.className = "colorfield"; + colorInput = $.el('input', { + className: 'color', + value: "#" + (Style.colorToHex(input.value)) + }); + JSColor.bind(colorInput); + $.after(input, colorInput); + } + $.on(input, 'blur', function() { + var depth, i, toggle1, toggle2, _k, _ref1; + + depth = 0; + if (!(this.value.length > 1000)) { + for (i = _k = 0, _ref1 = this.value.length - 1; 0 <= _ref1 ? _k <= _ref1 : _k >= _ref1; i = 0 <= _ref1 ? ++_k : --_k) { + switch (this.value[i]) { + case '(': + depth++; + break; + case ')': + depth--; + break; + case '"': + toggle1 = !toggle1; + break; + case "'": + toggle2 = !toggle2; + } + } + } + if (depth !== 0 || toggle1 || toggle2) { + return alert("Syntax error on " + this.name + "."); + } + if (this.className === "colorfield") { + this.nextSibling.value = "#" + (Style.colorToHex(this.value)); + this.nextSibling.color.importColor(); + } + return editTheme[this.name] = this.value; + }); + Style.addStyle(editTheme); + $.add(themecontent, div); + } + $.add(themecontent, div); + if (!editTheme["Custom CSS"]) { + editTheme["Custom CSS"] = ""; + } + div = $.el("div", { + className: "themevar", + innerHTML: "
Custom CSS
" + }); + $.on($('textarea', div), 'blur', function() { + editTheme["Custom CSS"] = this.value; + return Style.themeCSS.textContent = Style.theme(editTheme); + }); + $.add(themecontent, div); + $.on($('#save > a', ThemeTools.dialog), 'click', function() { + return ThemeTools.save(editTheme); + }); + $.on($('#close > a', ThemeTools.dialog), 'click', ThemeTools.close); + $.add(d.body, ThemeTools.dialog); + return Style.themeCSS.textContent = Style.theme(editTheme); + }, + uploadImage: function(evt, el) { + var file, reader; + + file = evt.target.files[0]; + reader = new FileReader(); + reader.onload = function(evt) { + var val; + + val = 'url("' + evt.target.result + '")'; + el.previousSibling.value = val; + editTheme["Background Image"] = val; + return Style.themeCSS.textContent = Style.theme(editTheme); + }; + return reader.readAsDataURL(file); + }, + importtheme: function(origin, evt) { + var file, reader; + + file = evt.target.files[0]; + reader = new FileReader(); + reader.onload = function(e) { + var bgColor, bgRPA, blinkColor, brderColor, err, imported, inputColor, inputbColor, jlinkColor, linkColor, linkHColor, mainColor, name, nameColor, quoteColor, sageColor, textColor, timeColor, titleColor, tripColor, userThemes; + + try { + imported = JSON.parse(e.target.result); + } catch (_error) { + err = _error; + alert(err); + return; + } + if (!((origin !== 'appchan' && imported.mainColor) || (origin === 'appchan' && imported["Author Tripcode"]))) { + alert("Theme file is invalid."); + return; + } + name = imported.name || imported["Theme"]; + delete imported.name; + if (Themes[name] && !Themes[name]["Deleted"]) { + if (confirm("A theme with this name already exists. Would you like to over-write?")) { + delete Themes[name]; + } else { + return; + } + } + if (origin === "oneechan" || origin === "SS") { + bgColor = new Style.color(imported.bgColor); + mainColor = new Style.color(imported.mainColor); + brderColor = new Style.color(imported.brderColor); + inputColor = new Style.color(imported.inputColor); + inputbColor = new Style.color(imported.inputbColor); + blinkColor = new Style.color(imported.blinkColor); + jlinkColor = new Style.color(imported.jlinkColor); + linkColor = new Style.color(imported.linkColor); + linkHColor = new Style.color(imported.linkHColor); + nameColor = new Style.color(imported.nameColor); + quoteColor = new Style.color(imported.quoteColor); + sageColor = new Style.color(imported.sageColor); + textColor = new Style.color(imported.textColor); + titleColor = new Style.color(imported.titleColor); + tripColor = new Style.color(imported.tripColor); + timeColor = new Style.color(imported.timeColor || imported.textColor); + if (imported.bgRPA) { + bgRPA = imported.bgRPA.split(' '); + } else { + bgRPA = ['no-repeat', 'bottom', 'left', 'fixed']; + } + if (origin === "oneechan") { + Themes[name] = { + 'Author': "Anonymous", + 'Author Tripcode': "!POMF.9waa", + 'Background Image': 'url("' + (imported.bgImg || '') + '")', + 'Background Attachment': bgRPA[3] || '', + 'Background Position': ((bgRPA[1] + " ") || '') + (bgRPA[2] || ''), + 'Background Repeat': bgRPA[0] || '', + 'Background Color': 'rgb(' + bgColor.rgb + ')', + 'Dialog Background': 'rgba(' + mainColor.rgb + ',.98)', + 'Dialog Border': 'rgb(' + brderColor.rgb + ')', + 'Thread Wrapper Background': 'rgba(0,0,0,0)', + 'Thread Wrapper Border': 'rgba(0,0,0,0)', + 'Reply Background': 'rgba(' + mainColor.rgb + ',' + imported.replyOp + ')', + 'Reply Border': 'rgb(' + brderColor.rgb + ')', + 'Highlighted Reply Background': 'rgba(' + mainColor.shiftRGB(4, true) + ',' + imported.replyOp + ')', + 'Highlighted Reply Border': 'rgb(' + linkColor.rgb + ')', + 'Backlinked Reply Outline': 'rgb(' + linkColor.rgb + ')', + 'Checkbox Background': 'rgba(' + inputColor.rgb + ',' + imported.replyOp + ')', + 'Checkbox Border': 'rgb(' + inputbColor.rgb + ')', + 'Checkbox Checked Background': 'rgb(' + inputColor.rgb + ')', + 'Input Background': 'rgba(' + inputColor.rgb + ',' + imported.replyOp + ')', + 'Input Border': 'rgb(' + inputbColor.rgb + ')', + 'Hovered Input Background': 'rgba(' + inputColor.hover + ',' + imported.replyOp + ')', + 'Hovered Input Border': 'rgb(' + inputbColor.rgb + ')', + 'Focused Input Background': 'rgba(' + inputColor.hover + ',' + imported.replyOp + ')', + 'Focused Input Border': 'rgb(' + inputbColor.rgb + ')', + 'Buttons Background': 'rgba(' + inputColor.rgb + ',' + imported.replyOp + ')', + 'Buttons Border': 'rgb(' + inputbColor.rgb + ')', + 'Navigation Background': 'rgba(' + bgColor.rgb + ',0.8)', + 'Navigation Border': 'rgb(' + mainColor.rgb + ')', + 'Quotelinks': 'rgb(' + linkColor.rgb + ')', + 'Links': 'rgb(' + linkColor.rgb + ')', + 'Hovered Links': 'rgb(' + linkHColor.rgb + ')', + 'Navigation Links': 'rgb(' + textColor.rgb + ')', + 'Hovered Navigation Links': 'rgb(' + linkHColor.rgb + ')', + 'Subjects': 'rgb(' + titleColor.rgb + ')', + 'Names': 'rgb(' + nameColor.rgb + ')', + 'Sage': 'rgb(' + sageColor.rgb + ')', + 'Tripcodes': 'rgb(' + tripColor.rgb + ')', + 'Emails': 'rgb(' + linkColor.rgb + ')', + 'Post Numbers': 'rgb(' + linkColor.rgb + ')', + 'Text': 'rgb(' + textColor.rgb + ')', + 'Backlinks': 'rgb(' + linkColor.rgb + ')', + 'Greentext': 'rgb(' + quoteColor.rgb + ')', + 'Board Title': 'rgb(' + textColor.rgb + ')', + 'Timestamps': 'rgb(' + timeColor.rgb + ')', + 'Inputs': 'rgb(' + textColor.rgb + ')', + 'Warnings': 'rgb(' + sageColor.rgb + ')', + 'Shadow Color': 'rgba(0,0,0,0.1)', + 'Custom CSS': ".rice {\nbox-shadow:rgba(" + mainColor.shiftRGB(32) + ",.3) 0 1px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#options input:not([type=checkbox]):hover {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#options input:focus {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\n transition:background .2s,box-shadow .2s;\n}" + (imported.customCSS || '') + }; + } else if (origin === "SS") { + Themes[name] = { + 'Author': "Anonymous", + 'Author Tripcode': "!.pC/AHOKAg", + 'Background Image': 'url("' + (imported.bgImg || '') + '")', + 'Background Attachment': bgRPA[3] || '', + 'Background Position': ((bgRPA[1] + " ") || '') + (bgRPA[2] || ''), + 'Background Repeat': bgRPA[0] || '', + 'Background Color': 'rgb(' + bgColor.rgb + ')', + 'Dialog Background': 'rgba(' + mainColor.rgb + ',.98)', + 'Dialog Border': 'rgb(' + brderColor.rgb + ')', + 'Thread Wrapper Background': 'rgba(' + mainColor.rgb + ',.5)', + 'Thread Wrapper Border': 'rgba(' + brderColor.rgb + ',.9)', + 'Reply Background': 'rgba(' + mainColor.rgb + ',.9)', + 'Reply Border': 'rgb(' + brderColor.rgb + ')', + 'Highlighted Reply Background': 'rgba(' + mainColor.shiftRGB(4, true) + ',.9)', + 'Highlighted Reply Border': 'rgb(' + linkColor.rgb + ')', + 'Backlinked Reply Outline': 'rgb(' + linkColor.rgb + ')', + 'Checkbox Background': 'rgba(' + inputColor.rgb + ',.9)', + 'Checkbox Border': 'rgb(' + inputbColor.rgb + ')', + 'Checkbox Checked Background': 'rgb(' + inputColor.rgb + ')', + 'Input Background': 'rgba(' + inputColor.rgb + ',.9)', + 'Input Border': 'rgb(' + inputbColor.rgb + ')', + 'Hovered Input Background': 'rgba(' + inputColor.hover + ',.9)', + 'Hovered Input Border': 'rgb(' + inputbColor.rgb + ')', + 'Focused Input Background': 'rgba(' + inputColor.hover + ',.9)', + 'Focused Input Border': 'rgb(' + inputbColor.rgb + ')', + 'Buttons Background': 'rgba(' + inputColor.rgb + ',.9)', + 'Buttons Border': 'rgb(' + inputbColor.rgb + ')', + 'Navigation Background': 'rgba(' + bgColor.rgb + ',0.8)', + 'Navigation Border': 'rgb(' + mainColor.rgb + ')', + 'Quotelinks': 'rgb(' + linkColor.rgb + ')', + 'Links': 'rgb(' + linkColor.rgb + ')', + 'Hovered Links': 'rgb(' + linkHColor.rgb + ')', + 'Navigation Links': 'rgb(' + textColor.rgb + ')', + 'Hovered Navigation Links': 'rgb(' + linkHColor.rgb + ')', + 'Subjects': 'rgb(' + titleColor.rgb + ')', + 'Names': 'rgb(' + nameColor.rgb + ')', + 'Sage': 'rgb(' + sageColor.rgb + ')', + 'Tripcodes': 'rgb(' + tripColor.rgb + ')', + 'Emails': 'rgb(' + linkColor.rgb + ')', + 'Post Numbers': 'rgb(' + linkColor.rgb + ')', + 'Text': 'rgb(' + textColor.rgb + ')', + 'Backlinks': 'rgb(' + linkColor.rgb + ')', + 'Greentext': 'rgb(' + quoteColor.rgb + ')', + 'Board Title': 'rgb(' + textColor.rgb + ')', + 'Timestamps': 'rgb(' + timeColor.rgb + ')', + 'Inputs': 'rgb(' + textColor.rgb + ')', + 'Warnings': 'rgb(' + sageColor.rgb + ')', + 'Shadow Color': 'rgba(0,0,0,0.1)', + 'Custom CSS': ".board {\npadding: 1px 2px;\n}\n.rice {\nbox-shadow:rgba(" + mainColor.shiftRGB(32) + ",.3) 0 1px;\n}\ninput[type=password]:hover,\ninput[type=text]:not([disabled]):hover,\ninput#fs_search:hover,\ninput.field:hover,\n.webkit select:hover,\ntextarea:hover,\n#options input:not([type=checkbox]):hover {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\ninput[type=password]:focus,\ninput[type=text]:focus,\ninput#fs_search:focus,\ninput.field:focus,\n.webkit select:focus,\ntextarea:focus,\n#options input:focus {\n box-shadow:inset rgba(0,0,0,.2) 0 1px 2px;\n}\nbutton,\ninput,\ntextarea,\n.rice {\n transition:background .2s,box-shadow .2s;\n}" + (imported.customCSS || '') + }; + } + } else if (origin === 'appchan') { + Themes[name] = imported; + } + userThemes = $.get("userThemes", {}); + userThemes[name] = Themes[name]; + $.set('userThemes', userThemes); + alert("Theme \"" + name + "\" imported!"); + $.rm($("#themes", d.body)); + return Options.themeTab(); + }; + return reader.readAsText(file); + }, + save: function(theme) { + var name, userThemes; + + name = theme["Theme"]; + if (Themes[name] && !Themes[name]["Deleted"]) { + if (confirm("A theme with this name already exists. Would you like to over-write?")) { + delete Themes[name]; + } else { + return; + } + } + Themes[name] = JSON.parse(JSON.stringify(theme)); + delete Themes[name]["Theme"]; + userThemes = $.get("userThemes", {}); + userThemes[name] = Themes[name]; + $.set('userThemes', userThemes); + $.set("theme", Conf['theme'] = name); + return alert("Theme \"" + name + "\" saved."); + }, + close: function() { + Conf['editMode'] = false; + $.rm($("#themeConf", d.body)); + Style.addStyle(); + return Options.dialog("theme"); } }; @@ -1678,7 +5094,7 @@ var catalogLink; if (catalogLink = $('.pages.cataloglink a', d.body) || $('[href=".././catalog"]', d.body)) { - if (!g.VIEW === thread) { + if (!g.VIEW === 'thread') { $.add(d.body, catalogLink); } return catalogLink.id = 'catalog'; @@ -8542,6 +11958,11 @@ }; initFeatures({ 'Polyfill': Polyfill, + 'Emoji': Emoji, + 'Style': Style, + 'Rice': Rice, + 'Banner': Banner, + 'Announcements': GlobalMessage, 'Header': Header, 'Catalog Links': CatalogLinks, 'Settings': Settings, @@ -8606,9 +12027,6 @@ } return; } - if (!$.hasClass(doc, 'fourchan-x')) { - Main.initStyle(); - } if (board = $('.board')) { threads = []; posts = []; diff --git a/css/burichan.css b/css/burichan.css deleted file mode 100644 index 0c941526c..000000000 --- a/css/burichan.css +++ /dev/null @@ -1,52 +0,0 @@ -/* General */ -:root.burichan .dialog { - background-color: #D6DAF0; - border-color: #B7C5D9; -} -:root.burichan .field:focus { - border-color: #98E; -} - -/* Header */ -:root.burichan #header-bar { - font-size: 11pt; - color: #89A; -} -:root.burichan #header-bar a { - color: #34345C; -} - -/* Settings */ -:root.burichan #fourchanx-settings fieldset { - border-color: #B7C5D9; -} - -/* Quote */ -:root.burichan .backlink.deadlink { - color: #34345C !important; -} -:root.burichan .inline { - border-color: #B7C5D9; - background-color: rgba(255, 255, 255, .14); -} - -/* QR */ -.burichan #dump-list::-webkit-scrollbar-thumb { - background-color: #D6DAF0; - border-color: #B7C5D9; -} -:root.burichan .qr-preview { - background-color: rgba(0, 0, 0, .15); -} - -/* Menu */ -:root.burichan #menu { - color: #000000; -} -:root.burichan .entry { - border-bottom: 1px solid #B7C5D9; - font-size: 12pt; -} -:root.burichan .focused.entry { - background: rgba(255, 255, 255, .33); -} diff --git a/css/futaba.css b/css/futaba.css deleted file mode 100644 index 30099ef0c..000000000 --- a/css/futaba.css +++ /dev/null @@ -1,52 +0,0 @@ -/* General */ -:root.futaba .dialog { - background-color: #F0E0D6; - border-color: #D9BFB7; -} -:root.futaba .field:focus { - border-color: #EA8; -} - -/* Header */ -:root.futaba #header-bar { - font-size: 11pt; - color: #B86; -} -:root.futaba #header-bar a { - color: #800000; -} - -/* Settings */ -:root.futaba #fourchanx-settings fieldset { - border-color: #D9BFB7; -} - -/* Quote */ -:root.futaba .backlink.deadlink { - color: #00E !important; -} -:root.futaba .inline { - border-color: #D9BFB7; - background-color: rgba(255, 255, 255, .14); -} - -/* QR */ -.futaba #dump-list::-webkit-scrollbar-thumb { - background-color: #F0E0D6; - border-color: #D9BFB7; -} -:root.futaba .qr-preview { - background-color: rgba(0, 0, 0, .15); -} - -/* Menu */ -:root.futaba #menu { - color: #800000; -} -:root.futaba .entry { - border-bottom: 1px solid #D9BFB7; - font-size: 12pt; -} -:root.futaba .focused.entry { - background: rgba(255, 255, 255, .33); -} diff --git a/css/icons.base.css b/css/icons.base.css new file mode 100644 index 000000000..060a24d2f --- /dev/null +++ b/css/icons.base.css @@ -0,0 +1,95 @@ + +#navtopright .exlinksOptionsLink::after, +#appchanOptions, +body > div.navLinks > a:first-of-type::after, +#{if Conf['Slideout Watcher'] then '#watcher::after,' else ''} +#{if Conf['Announcements'] is 'slideout' then '#globalMessage::after,' else ''} +#boardNavDesktopFoot::after, +body > a[style="cursor: pointer; float: right;"]::after, +#imgControls label:first-of-type::after, +#catalog::after, +#fappeTyme { + z-index: 18; + position: fixed; + display: block; + width: 15px; + height: 15px; + content: ""; + overflow: hidden; + opacity: #{if Conf['Invisible Icons'] then 0 else 0.5}; +} +#navtopright .exlinksOptionsLink, +body > div.navLinks > a:first-of-type, +#{if Conf['Slideout Watcher'] then '#watcher,' else ''} +#{if Conf['Announcements'] is 'slideout' then '#globalMessage,' else ''} +#boardNavDesktopFoot, +body > a[style="cursor: pointer; float: right;"], +#catalog { + z-index: 16; +} +#navtopright .exlinksOptionsLink:hover, +body > div.navLinks > a:first-of-type:hover, +#{if Conf['Slideout Watcher'] then '#watcher:hover,' else ''} +#{if Conf['Announcements'] is 'slideout' then '#globalMessage:hover,' else ''} +#boardNavDesktopFoot:hover, +body > a[style="cursor: pointer; float: right;"]:hover, +#catalog:hover { + z-index: 17; +} +#imgControls { + z-index: 19; +} +#imgControls { + position: fixed; +} +#appchanOptions { + visibility: visible; + background-position: 0 0; +} +body > div.navLinks > a:first-of-type::after { + cursor: pointer; + background-position: 0 -15px; +} +#watcher::after { + background-position: 0 -30px; +} +#globalMessage::after { + background-position: 0 -45px; +} +#boardNavDesktopFoot::after { + background-position: 0 -60px; +} +body > a[style="cursor: pointer; float: right;"]::after { + visibility: visible; + cursor: pointer; + background-position: 0 -75px; +} +#imgControls label:first-of-type::after { + position: static; + background-position: 0 -90px; +} +#navtopright .exlinksOptionsLink::after { + background-position: 0 -105px; +} +#catalog::after { + visibility: visible; + background-position: 0 -120px; +} +#fappeTyme { + background-position: 0 -135px; +} +#boardNavDesktopFoot:hover::after, +#globalMessage:hover::after, +#imgControls label:hover:first-of-type::after, +#navlinks a:hover, +#appchanOptions:hover, +#navtopright .exlinksOptionsLink:hover::after, +#qr #qrtab, +#watcher:hover::after, +.thumbnail#selected, +body > a[style="cursor: pointer; float: right;"]:hover::after, +div.navLinks > a:first-of-type:hover::after, +#catalog:hover::after, +#fappeTyme:hover { + opacity: 1; +} \ No newline at end of file diff --git a/css/icons.horz.css b/css/icons.horz.css new file mode 100644 index 000000000..f8b2d7614 --- /dev/null +++ b/css/icons.horz.css @@ -0,0 +1,81 @@ + +/* 4chan X Options */ +#appchanOptions { + #{align}: #{position[i++]}px; +} +/* Slideout Navigation */ +#boardNavDesktopFoot::after { + #{align}: #{position[i++]}px; +} +/* Global Message */ +#globalMessage::after { + #{align}: #{position[i++]}px; +} +/* Watcher */ +#watcher::after { + #{align}: #{position[i++]}px; +} +/* ExLinks */ +#navtopright .exlinksOptionsLink::after { + #{align}: #{position[i++]}px; +} +/* 4sight */ +body > a[style="cursor: pointer; float: right;"]::after { + #{align}: #{position[i++]}px; +} +/* Expand Images */ +#imgControls { + #{align}: #{position[i++]}px; +} +/* 4chan Catalog */ +#catalog::after { + #{align}: #{position[i++]}px; +} +/* Back */ +div.navLinks > a:first-of-type::after { + #{align}: #{position[i++]}px; +} +/* Fappe Tyme */ +#fappeTyme { + #{align}: #{position[i++]}px; +} +/* Thread Navigation Links */ +#navlinks a { + margin: 2px; + top: 2px; +} +#navlinks a:last-of-type { + #{align}: #{position[i++]}px; +} +#navlinks a:first-of-type { + #{align}: #{position[i++]}px; +} +#prefetch { + width: #{248 + Style.sidebarOffset.W}px; + #{align}: 2px; + top: 1.6em; + text-align: #{Style.sidebarLocation[1]}; +} +#boardNavDesktopFoot::after, +#navtopright .exlinksOptionsLink::after, +#appchanOptions, +#watcher::after, +#globalMessage::after, +#imgControls, +#fappeTyme, +div.navLinks > a:first-of-type::after, +#catalog::after, +body > a[style="cursor: pointer; float: right;"]::after { + top: 2px !important; +} +#{if _conf["Announcements"] is "slideout" then "#globalMessage," else ""} +#{if _conf["Slideout Watcher"] then "#watcher," else ""} +#boardNavDesktopFoot { + top: 17px !important; +} +#{if _conf['Boards Navigation'] is 'top' or _conf['Boards Navigation'] is 'sticky top' then '#boardNavDesktop' else if _conf['Pagination'] is 'top' or _conf['Pagination'] is 'sticky top' then '.pagelist'} { + #{if _conf['4chan SS Navigation'] + "padding-#{align}: #{iconOffset}px;" + else + "margin-#{align}: #{iconOffset}px;"} +}\n \ No newline at end of file diff --git a/css/icons.horz.tu.css b/css/icons.horz.tu.css new file mode 100644 index 000000000..9b69e2e61 --- /dev/null +++ b/css/icons.horz.tu.css @@ -0,0 +1,9 @@ +/* Updater + Stats */ +#updater, +#stats { + #{align}: 2px !important; + #{Style.sidebarLocation[1]}: auto !important; + top: auto !important; + bottom: auto !important; + #{if _conf["Updater Position"] is 'top' then "top: 1.6em !important" else "bottom: 0 !important"}; +} \ No newline at end of file diff --git a/css/icons.vert.css b/css/icons.vert.css new file mode 100644 index 000000000..f4d6c54b3 --- /dev/null +++ b/css/icons.vert.css @@ -0,0 +1,81 @@ + +/* Image Expansion */ +#imgControls { + top: #{position[i++]}px; +} +/* 4chan X Options */ +#appchanOptions { + top: #{position[i++]}px; +} +/* Slideout Navigation */ +#boardNavDesktopFoot, +#boardNavDesktopFoot::after { + top: #{position[i++]}px; +} +/* Global Message */ +#globalMessage, +#globalMessage::after { + top: #{position[i++]}px; +} +/* Watcher */ +#{if _conf["Slideout Watcher"] then "#watcher, #watcher::after" else ""} { + top: #{position[i++]}px !important; +} +/* 4sight */ +body > a[style="cursor: pointer; float: right;"]::after { + top: #{position[i++]}px; +} +/* ExLinks */ +#navtopright .exlinksOptionsLink::after { + top: #{position[i++]}px; +} +/* 4chan Catalog */ +#catalog::after { + top: #{position[i++]}px; +} +/* Back */ +div.navLinks > a:first-of-type::after { + top: #{position[i++]}px; +} +/* Fappe Tyme */ +#fappeTyme { + top: #{position[i++]}px; +} +/* Thread Navigation Links */ +#navlinks a:first-of-type { + top: #{position[i++]}px !important; +} +#navlinks a:last-of-type { + top: #{position[i++]}px !important; +} +#prefetch { + width: #{248 + Style.sidebarOffset.W}px; + #{align}: 2px; + top: 0; + text-align: #{Style.sidebarLocation[1]}; +} +#navlinks a, +#navtopright .exlinksOptionsLink::after, +#appchanOptions, +#boardNavDesktopFoot::after, +#globalMessage::after, +#imgControls, +#fappeTyme, +#{if _conf["Slideout Watcher"] then "#watcher::after," else ""} +body > a[style="cursor: pointer; float: right;"]::after, +#catalog::after, +div.navLinks > a:first-of-type::after { + #{align}: 3px !important; +} +#boardNavDesktopFoot, +#globalMessage, +#watcher { + width: #{233 + Style.sidebarOffset.W}px !important; + #{align}: 18px !important; +} +#{if _conf['Boards Navigation'] is 'top' or _conf['Boards Navigation'] is 'sticky top' then '#boardNavDesktop' else if _conf['Pagination'] is 'top' or _conf['Pagination'] is 'sticky top' then '.pagelist'} { + #{if _conf['4chan SS Navigation'] + "padding-#{align}: #{iconOffset}px;" + else + "margin-#{align}: #{iconOffset}px;"} +} \ No newline at end of file diff --git a/css/icons.vert.tu.css b/css/icons.vert.tu.css new file mode 100644 index 000000000..11122d7fe --- /dev/null +++ b/css/icons.vert.tu.css @@ -0,0 +1,8 @@ +/* Updater + Stats */ +#updater, +#stats { + #{align}: #{if _conf["Updater Position"] is "top" then "24" else "2"}px !important; + #{Style.sidebarLocation[1]}: auto !important; + top: #{if _conf["Updater Position"] == "top" then "-1px" else "auto"} !important; + bottom: #{if _conf["Updater Position"] == "bottom" then "-2px" else "auto"} !important; +} \ No newline at end of file diff --git a/css/jscolor.css b/css/jscolor.css new file mode 100644 index 000000000..f1d39d90c --- /dev/null +++ b/css/jscolor.css @@ -0,0 +1,77 @@ +.jscBox { + width: 251px; + height: 155px; +} +.jscBoxB, +.jscPadB, +.jscPadM, +.jscSldB, +.jscSldM, +.jscBtn { + position: absolute; + clear: both; +} +.jscBoxB { + left: 320px; + bottom: 20px; + z-index: 30; + border: 1px solid; + border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight; + background: ThreeDFace; +} +.jscPad { + width: 181px; + height: 101px; + background-image: #{agent}linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1)), #{agent}linear-gradient(left, #f00, #ff0, #0f0, #0ff, #00f, #f0f, #f00); + background-repeat: no-repeat; + background-position: 0 0; +} +.jscPadB { + left: 10px; + top: 10px; + border: 1px solid; + border-color: ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow; +} +.jscPadM { + left: 0; + top: 0; + width: 200px; + height: 121px; + cursor: crosshair; + background-image: url('data:image/gif;base64,R0lGODlhDwAPAKEBAAAAAP///////////yH5BAEKAAIALAAAAAAPAA8AAAIklB8Qx53b4otSUWcvyiz4/4AeQJbmKY4p1HHapBlwPL/uVRsFADs='); + background-repeat: no-repeat; +} +.jscSld { + width: 16px; + height: 101px; + background-image: #{agent}linear-gradient(rgba(0,0,0,0), rgba(0,0,0,1)); +} +.jscSldB { + right: 10px; + top: 10px; + border: 1px solid; + border-color: ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow; +} +.jscSldM { + right: 0; + top: 0; + width: 36px; + height: 121px; + cursor: pointer; + background-image: url('data:image/gif;base64,R0lGODlhBwALAKECAAAAAP///6g8eKg8eCH5BAEKAAIALAAAAAAHAAsAAAITTIQYcLnsgGxvijrxqdQq6DRJAQA7'); + background-repeat: no-repeat; +} +.jscBtn { + right: 10px; + bottom: 10px; + padding: 0 15px; + height: 18px; + border: 1px solid; + border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight; + color: ButtonText; + text-align: center; + cursor: pointer; +} +.jscBtnS { + line-height: 10px; +} \ No newline at end of file diff --git a/css/layout.css b/css/layout.css new file mode 100644 index 000000000..5dd257e33 --- /dev/null +++ b/css/layout.css @@ -0,0 +1,1790 @@ +/* Cleanup */ +#absbot, +#delPassword, +#delform > hr:last-of-type, +#navbotright, +#postForm, +#styleSwitcher, +.boardBanner > div, +.mobile, +.postingMode, +.riced, +.sideArrows, +.stylechanger, +body > br, +body > div[style^="text-align"], +body > hr { + display: none; +} +/* Empties */ +#qr .warning:empty, +#threadselect:empty { + display: none; +} +/* File Name Trunctuate */ +.fileText:hover .fntrunc, +.fileText:not(:hover) .fnfull { + display: none; +} +/* Unnecessary */ +#qp input, +#qp .rice, +.inline .rice { + display: none !important; +} +/* Hidden Content */ +.forwarded, +.hidden_thread ~ div, +.hidden_thread ~ a, +[hidden] { + display: none !important; +} +/* Hidden UI */ +#catalog, +#navlinks, +#navtopright, +.cataloglink, +.navLinks, +a[style="cursor: pointer; float: right;"] { + position: fixed; + top: 100%; + left: 100%; +} +/* Hide last horizontal rule, keep clear functionality. */ +.board > hr:last-of-type { + visibility: hidden; +} +/* Fappe Tyme */ +.fappeTyme .thread > .noFile { + display: none; +} +/* Defaults */ +a { + text-decoration: #{if _conf["Underline Links"] then "underline" else "none"}; + outline: none; +} +body, html { + min-height: 100%; + #{Style.sizing}: border-box; +} +body { + outline: none; + font-size: #{parseInt(_conf["Font Size"], 10)}px; + font-family: #{_conf["Font"]}; + min-height: 100%; + margin-top: 0; + margin-bottom: 0; + margin-#{Style.sidebarLocation[0]}: #{if /^boards\.4chan\.org$/.test(location.hostname) then Style.sidebar else '2'}px; + margin-#{Style.sidebarLocation[1]}: 2px; + padding: 0 #{parseInt(_conf["Right Thread Padding"], 10) + editSpace["right"]}px 0 #{parseInt(_conf["Left Thread Padding"], 10) + editSpace["left"]}px; +} +#{if _conf["4chan SS Sidebar"] and /^boards\.4chan\.org$/.test location.hostname then " +body::before { + content: ''; + position: fixed; + top: 0; + bottom: 0; + #{Style.sidebarLocation[0]}: 0; + width: #{if _conf["Sidebar"] is 'large' then 305 else if _conf['Sidebar'] is 'normal' then 254 else if _conf['Sidebar'] is 'minimal' then 27 else 0}px; + z-index: 1; + #{Style.sizing}: border-box; + display: block; +} +body { + padding-#{Style.sidebarLocation[0]}: 2px; +} +" else ""} +button, +input, +textarea { + font-size: #{parseInt(_conf["Font Size"], 10)}px; + font-family: #{_conf["Font"]}; +} +hr { + clear: both; + border: 0; + padding: 0; + margin: 0 0 1px; + #{if _conf['Hide Horizontal Rules'] then 'visibility: hidden;' else ''} +} +.center { + text-align: center; +} +/* Symbols */ +.dropmarker { + vertical-align: middle; + display: inline-block; + margin: 2px 2px 3px; + border-top: .5em solid; + border-right: .3em solid transparent; + border-left: .3em solid transparent; +} +/* Thread / Reply Nav */ +#navlinks a { + position: fixed; + z-index: 12; + opacity: 0.5; + display: inline-block; + border-right: 6px solid transparent; + border-left: 6px solid transparent; + margin: 1.5px; +} +/* Navigation */ +#boardNavDesktop { + z-index: 6; + border-width: 1px; +#{{ +"sticky top": " + position: fixed; + top: 0; + border-top-width: 0; + #{if _conf["Rounded Edges"] then "border-radius: 0 0 3px 3px;" else ""}" + +"sticky bottom": " + position: fixed; + bottom: 0; + border-bottom-width: 0; + #{if _conf["Rounded Edges"] then "border-radius: 3px 3px 0 0;" else ""}" + +"top": " + position: absolute; + top: 0; + border-top-width: 0; + #{if _conf["Rounded Edges"] then "border-radius: 0 0 3px 3px;" else ""}" + +"hide": " + position: fixed; + top: 110%;" + +}[_conf['Boards Navigation']]} +#{ +if _conf['4chan SS Navigation'] then " + left: 0; + right: 0; + border-left: 0; + border-right: 0; + border-radius: 0 !important;" +else " + #{Style.sidebarLocation[0]}: #{Style.sidebar + parseInt(_conf["Right Thread Padding"], 10) + editSpace["right"]}px; + #{Style.sidebarLocation[1]}: #{parseInt(_conf["Left Thread Padding"], 10) + editSpace["left"] + 2}px;" +} +#{if _conf["Hide Navigation Decorations"] then " + font-size: 0; + color: transparent; + word-spacing: 2px; +" else ""} + text-align: #{_conf["Navigation Alignment"]}; +} +/* Pagination */ +.pagelist { + border-width: 1px; + text-align: #{_conf["Pagination Alignment"]}; +#{ +if _conf['4chan SS Navigation'] then " + left: 0; + right: 0; + border-left: 0; + border-right: 0; + border-radius: 0 !important;" +else " + #{Style.sidebarLocation[0]}: #{Style.sidebar + parseInt(_conf["Right Thread Padding"], 10) + editSpace["right"]}px; + #{Style.sidebarLocation[1]}: #{parseInt(_conf["Left Thread Padding"], 10) + editSpace["left"] + 2}px;" +} +#{{ +"sticky top": " + position: fixed; + top: 0; + border-top-width: 0; + #{if _conf["Rounded Edges"] then "border-radius: 0 0 3px 3px;" else ""}" + +"sticky bottom": " + position: fixed; + bottom: 0; + border-bottom-width: 0; + #{if _conf["Rounded Edges"] then "border-radius: 3px 3px 0 0;" else ""}" + +"top": " + position: absolute; + top: 0; + border-top-width: 0; + #{if _conf["Rounded Edges"] then "border-radius: 0 0 3px 3px;" else ""}" + +"bottom": " + position: static; + #{if _conf["Rounded Edges"] then "border-radius: 3px 3px 0 0;" else ""}" + +"hide": " + display: none;" + +"on side": " + position: fixed; + padding: 0; + top: auto; + bottom: #{if ['fixed', 'transparent fade'].contains(_conf['Post Form Style']) then (21.6 + (if Conf['Show Post Form Header'] then 1.5 else 0) + (if Conf['Post Form Decorations'] then 0.2 else 0)) else .5}em; + #{Style.sidebarLocation[1]}: auto; + #{Style.sidebarLocation[0]}: #{250 + Style.sidebarOffset.W}px + position: fixed; +#{if Style.sidebarLocation[0] is 'right' then " + #{agent}transform: rotate(90deg); + #{agent}transform-origin: bottom right;" +else " + #{agent}transform: rotate(-90deg); + #{agent}transform-origin: bottom left; +"} + z-index: 6; + margin: 0; + background: none transparent !important; + border: 0 none !important; + text-align: right; +" +}[_conf['Pagination']]} +#{if _conf["Hide Navigation Decorations"] then " + font-size: 0; + color: transparent; + word-spacing: 0; +" else ""} + z-index: 6; +} +.pagelist input, +.pagelist div { + vertical-align: middle; +} +#boardNavDesktop a { + font-size: #{parseInt(_conf["Font Size"], 10)}px; +} +#{if _conf["Hide Navigation Decorations"] then " +.pages a { + margin: 0 1px; + font-size: #{parseInt(_conf["Font Size"], 10)}px; +}" else ""} +.next, +.pages, +.prev { + display: inline-block; + margin: 0 3px; +} +/* Banner */ +.boardBanner { + line-height: 0; +} +#{if _conf["Faded 4chan Banner"] then " +.boardBanner { + opacity: 0.5; + #{agent}transition: opacity 0.3s ease-in-out .5s; +} +.boardBanner:hover { + opacity: 1; + #{agent}transition: opacity 0.3s ease-in; +} +" else ""} +#{if _conf["4chan Banner Reflection"] then " +/* From 4chan SS / OneeChan */ +.gecko .boardBanner::after { + background-image: -moz-element(#Banner); + bottom: -100%; + content: ''; + left: 0; + mask: url(\"data:image/svg+xml, #mask\"); + opacity: 0.3; + position: absolute; + right: 0; + top: 100%; + -moz-transform: scaleY(-1); + z-index: -1; +} +.webkit #Banner { + -webkit-box-reflect: below 0 -webkit-linear-gradient(rgba(255,255,255,0), rgba(255,255,255,0) 10%, rgba(255,255,255,.5)); +} +" else ""} +#{{ +"at sidebar top": " +.boardBanner { + position: fixed; + top: 18px; + #{Style.sidebarLocation[0]}: 2px; +} +.boardBanner img { + width: #{width}px; +}" +"at sidebar bottom": " +.boardBanner { + position: fixed; + bottom: 270px; + #{Style.sidebarLocation[0]}: 2px; +} +.boardBanner img { + width: #{width}px; +}" + +"under post form": " + .boardBanner { + position: fixed; + bottom: 130px; + #{Style.sidebarLocation[0]}: 2px; +} +.boardBanner img { + width: #{width}px; +}" + +"at top": " +.boardBanner { + position: relative; + display: table; + margin: 12px auto; + text-align: center; +}" + +"hide": " +.boardBanner { + display: none; +}" +}[_conf["4chan Banner"]]} +/* Board Title */ +#boardTitle { + font-size: #{parseInt(_conf["Font Size"], 10) + 10}px; + text-align: center; + z-index: 4; +#{{ +"at sidebar top": " + position: fixed; + #{Style.sidebarLocation[0]}: 2px; + top: #{(if Style.logoOffset is 0 and _conf["Icon Orientation"] isnt "vertical" then 40 else 21) + Style.logoOffset}px; + width: #{width}px; +" + +"at sidebar bottom": " + position: fixed; + #{Style.sidebarLocation[0]}: 2px; + bottom: 280px; + width: #{width}px; +" + +"under post form": " + position: fixed; + #{Style.sidebarLocation[0]}: 2px; + bottom: 140px; + width: #{width}px; +" + +"at top": " + margin: 12px 0; +" + +"hide": " + display: none; +"}[_conf["Board Title"]]} +} +.boardTitle a { + font-size: #{parseInt(_conf["Font Size"], 10) + 10}px; +} +.boardSubtitle, +.boardSubtitle a { + font-size: #{parseInt(_conf["Font Size"], 10) - 1}px; +} +/* Dialogs */ +.move { + cursor: pointer; +} +#ihover { + position: fixed; + max-height: 97%; + max-width: 75%; + padding: 10px; + z-index: 22; +} +#qp { + position: fixed; + z-index: 22; +} +#qp .postMessage::after { + clear: both; + display: block; + content: ""; +} +#qp .fullSize { + max-height: 300px; + max-width: 500px; +} +#menu { + position: absolute; + outline: none; + z-index: 22; +} +/* Updater */ +#updater { + position: fixed; + z-index: 10; + padding: 0 1px 1px; + border: 1px solid transparent; + #{if _conf["Rounded Edges"] then "border-radius: 3px;" else ""} +} +#updater:not(:hover) > div:not(.move) { + display: none; +} +#updater input { + text-align: right; +} +#updater .rice { + float: left; +} +#updater .field { + width: 50px; +} +/* Stats */ +#stats { + position: fixed; + #{if _conf["Rounded Edges"] then "border-radius: 3px;" else ""} +} +/* Image Expansion */ +#imgControls .rice { + display: none; +} +#imgControls { + width: 15px; + overflow-x: hidden; + overflow-y: visible; +} +#imgContainer { + float: #{Style.sidebarLocation[0]}; +} +#imgContainer, +#imgControls:hover { + width: 110px; +} +#imgControls label { + float: #{Style.sidebarLocation[0]}; +} +#imgControls .selectrice { + float: #{Style.sidebarLocation[1]}; + width: 90px; +} +.fitwidth .fullSize { + max-width: 100%; + width: 100%; +} + +#{if _conf['Images Overlap Post Form'] then " +.fullSize { + position: relative; + z-index: 22; +}" else "" +} +/* Prefetcher */ +#prefetch { + z-index: 9; + position: fixed; +} +/* Delete Buttons */ +#{if _conf['Hide Delete UI'] then " +.deleteform, +.post .rice { + display: none; +} +.postInfo { + padding: 0 0 0 3px; +} +" else " +.deleteform { + position: fixed; + z-index: 18; + width: 0; + bottom: 0; + right: 0; + border-width: 1px 0 0 1px; + border-style: solid; + font-size: 0; + color: transparent; + max-height: 1.6em; +} +.deleteform:hover { + width: auto; +} +.deleteform::before { + z-index: 18; + border-width: 1px 0 0 1px; + border-style: solid; + content: 'X'; + display: block; + position: fixed; + bottom: 0; + right: 0; + font-size: #{_conf['Font Size']}px; + #{Style.sizing}: border-box; + height: 1.6em; + width: 1.4em; + text-align: center; +} +.deleteform:hover::before { + display: none; +} +.deleteform input { + margin: 0 1px 0 0; +}"} +/* Slideout Navigation */ +#boardNavDesktopFoot { + position: fixed; + width: #{width}px; + #{Style.sidebarLocation[0]}: 2px; + text-align: center; + font-size: 0; + color: transparent; + overflow: hidden; + #{Style.sizing}: border-box; +} +#boardNavDesktopFoot a, +#boardNavDesktopFoot a::after, +#boardNavDesktopFoot a::before { + font-size: #{_conf['Font Size']}px; +} +#boardNavDesktopFoot:hover { + overflow-y: auto; + padding: 2px; +} +#boardNavDesktopFoot:not(:hover) { + border-color: transparent; + background-color: transparent; + height: 0; + overflow: hidden; + padding: 0; + border: 0 none; +} +#{{ +compact: " +#boardNavDesktopFoot { + word-spacing: 1px; +} +" +list: " +#boardNavDesktopFoot a { + display: block; +} +#boardNavDesktopFoot:hover { + max-height: 400px; +} +#boardNavDesktopFoot a::after { + content: ' - ' attr(title); +} +#boardNavDesktopFoot a[href*='//boards.4chan.org/']::after, +#boardNavDesktopFoot a[href*='//rs.4chan.org/']::after { + content: '/ - ' attr(title); +} +#boardNavDesktopFoot a[href*='//boards.4chan.org/']::before, +#boardNavDesktopFoot a[href*='//rs.4chan.org/']::before { + content: '/'; +} +" +hide: " +#boardNavDesktopFoot { + display: none; +}"}[_conf["Slideout Navigation"]]} +/* Watcher */ +#watcher { + position: fixed; + z-index: 14; + padding: 2px; + #{if _conf["Rounded Edges"] then "border-radius: 3px;" else ""} +} +#{ if _conf['Slideout Watcher'] then " +#watcher { + width: #{width}px; + #{Style.sidebarLocation[0]}: 2px !important; + #{Style.sidebarLocation[1]}: auto !important; + #{Style.sizing}: border-box; +} +#watcher .move { + cursor: default; + text-decoration: #{if _conf["Underline Links"] then "underline" else "none"}; +} +#watcher > div { + max-height: 1.6em; + overflow: hidden; +} +#watcher:hover { + overflow-y: auto; +} +#watcher:not(:hover) { + height: 0; + overflow: hidden; + border: 0 none; + padding: 0; +}" else " +#watcher { + width: 200px; +} +"} +/* Announcements */ +#globalMessage { + text-align: center; + #{if _conf["Rounded Edges"] then "border-radius: 3px;" else ""} +} +#{if _conf['Announcements'] is 'slideout' then " +#globalMessage { + position: fixed; + padding: 2px; + width: #{width}px; + #{Style.sidebarLocation[0]}: 2px !important; + #{Style.sidebarLocation[1]}: auto !important; +} +#globalMessage h3 { + margin: 0; +} +#globalMessage:hover { + #{Style.sizing}: border-box; + overflow-y: auto; +} +#globalMessage:not(:hover) { + height: 0; + overflow: hidden; + padding: 0; + border: 0 none; +}" else ""} +/* Threads */ +.thread { + margin: #{parseInt _conf["Top Thread Padding"], 10}px 0 #{parseInt _conf["Bottom Thread Padding"], 10}px 0; + #{if _conf["Rounded Edges"] then "border-radius: 4px;" else ""} +} +/* Thread Clearfix */ +.thread > div:last-of-type::after { + display: block; + content: ' '; + clear: both; +} +/* Posts */ +.summary { + margin-bottom: #{Style.replyMargin}px; +} +.post { + margin-bottom: #{Style.replyMargin}px; +} +.replyContainer:last-of-type .post { + margin-bottom: 0; +} +.menu_button, +.hide_thread_button, +.hide_reply_button { + float: right; + margin: 0 3px; + opacity: 0; + #{agent}transition: opacity .3s ease-out 0s; +} +.post:hover .hide_reply_button, +.post:hover .menu_button, +.post:hover .hide_thread_button, +.hidden_thread .hide_thread_button, +.hidden_thread .menu_button, +.inline .hide_reply_button, +.inline .menu_button { + opacity: 1; +} +.hidden_thread { + text-align: right; +} +#{if _conf['Color user IDs'] then " +.posteruid .hand { + padding: .1em .3em; + border-radius: 1em; + font-size: 80%; +}" else ""} +.postInfo > span { + vertical-align: bottom; +} +.subject, +.name { + #{if _conf["Bolds"] then 'font-weight: 600;' else ''} +} +.postertrip { + #{if _conf["Italics"] then 'font-style: italic;' else ''} +} +.replylink { + text-decoration: #{if _conf["Underline Links"] then "underline" else "none"}; +} +.fileInfo { + padding: 0 3px; +} +.fileThumb { + float: left; + margin: 3px 20px; + outline: none; +} +.reply.post { + display: inline-block; + #{Style.sizing}: border-box; + #{if _conf["Fit Width Replies"] then "width: 100%;" else ""} +} +.post { + #{if _conf["Rounded Edges"] then "border-radius: 3px;" else ""} +} +.postMessage { + margin: #{_conf['Vertical Post Padding']}px #{_conf['Horizontal Post Padding']}px; +} +.spoiler, +s { + text-decoration: none; +} +/* Reply Clearfix */ +.reply.post .postMessage { + clear: right; +} +#{if _conf['Force Reply Break'] or _conf["OP Background"] then " +.op.post .postMessage { + display: block; + content: ' '; + clear: both; +} +" else "" +} +/* OP */ +.favicon { + vertical-align: bottom; +} +#{if _conf["OP Background"] then " +.op.post { + #{Style.sizing}: border-box; +}" else ""} +/* Summary */ +#{ +if _conf["Fit Width Replies"] + ".summary { clear: both; float: left; }" +else "" +} +/* Inlined */ +.inline { + margin: 2px 8px 2px 2px; +} +.post .inline { + margin: 2px; +} +.inline .replyContainer { + display: inline-block; +} +/* Inlined Clearfix */ +.inline .postMessage::after { + clear: both; + display: block; + content: ""; +} +/* Quotes */ +.inlined { + font-style: italic; + #{if _conf["Bolds"] then 'font-weight: 800;' else ''} +} +.quotelink { + text-decoration: #{if _conf["Underline Links"] then "underline" else "none"}; +} +.filtered, +.quotelink.filtered { + text-decoration: underline; + text-decoration: line-through !important; +} +/* Backlinks */ +.backlink { + text-decoration: #{if _conf["Underline Links"] then "underline" else "none"}; +} +.backlink.dead { + text-decoration: none; +} +#{{ +"lower left": " +.container { + padding: 0 5px; + max-width: 100%; +} +.reply.quoted { + position: relative; + padding-bottom: 1.7em; +} +.reply .container { + position: absolute; + left: 0; + bottom: 0; + padding: 0 5px; +} +.reply .container::before { + content: 'REPLIES: '; +} +#qp .container { + position: static; + max-width: 100%; +} +#qp .container::before { + content: ''; +} +.inline .container { + position: static; + max-width: 100%; +} +.inline .container::before { + content: ''; +}" + +'lower right': " +.reply.quoted { + position: relative; + padding-bottom: 1.7em; +} +.reply .container { + position: absolute; + right: 0; + bottom: 0; +} +.container::before { + content: 'REPLIES: '; +} +.container { + max-width: 100%; + padding: 0 5px; +} +#qp .container { + position: static; + max-width: 100%; +} +#qp .container::before { + content: ''; +} +.inline .container { + position: static; + float: none; +} +.inline .container::before { + content: ''; +}" + +'default': ""}[_conf["Backlinks Position"]]} +/* Code */ +.prettyprint { + #{Style.sizing}: border-box; + font-family: monospace; + display: inline-block; + margin-right: auto; + white-space: pre-wrap; + border-radius: 2px; + overflow-x: auto; + padding: 3px; + max-width: 100%; +} +/* Menu */ +.entry { + border-bottom: 1px solid rgba(0,0,0,.25); + cursor: pointer; + display: block; + outline: none; + padding: 3px 7px; + position: relative; + text-decoration: none; + white-space: nowrap; +} +.entry:last-child { + border-bottom: 0; +} +.hasSubMenu::after { + content: ""; + border-#{position}: .5em solid; + border-top: .3em solid transparent; + border-bottom: .3em solid transparent; + display: inline-block; + margin: .3em; + position: absolute; + right: 3px; +} +.subMenu { + display: none; + position: absolute; + #{position}: 100%; + top: -1px; +} +.focused .subMenu { + display: block; +} +/* Stubs */ +#{if _conf['Fit Width Replies'] then " +.stub { + float: right; + clear: both; +}" else ""} +/* Emoji */ +#{unless _conf["Emoji"] is "disable" then Emoji.css _conf["Emoji Position"] else ""} +/* Element Replacing */ +/* Checkboxes */ +.rice { + cursor: pointer; + width: 9px; + height: 9px; + margin: 2px 3px 3px; + display: inline-block; + vertical-align: bottom; + #{if _conf["Rounded Edges"] then "border-radius: 2px;" else ""} + #{if _conf["Circle Checkboxes"] then "border-radius: 6px;" else ""} +} +input:checked + .rice { + background-attachment: scroll; + background-repeat: no-repeat; + background-position: bottom right; +} +/* Selects */ +.selectrice { + position: relative; + cursor: default; + overflow: hidden; + text-align: left; +} +.selectrice::after { + content: ""; + border-right: .25em solid transparent; + border-left: .25em solid transparent; + position: absolute; + right: .4em; + top: .5em; +} +.selectrice::before { + content: ""; + height: 1.6em; + position: absolute; + right: 1.3em; + top: 0; +} +/* Select Dropdown */ +.selectrice ul { + padding: 0; + position: fixed; + max-height: 120px; + overflow-y: auto; + overflow-x: hidden; + z-index: 32; +} +/* Post Form */ +#qr { + z-index: 20; + position: fixed; + padding: 1px; + border: 1px solid transparent; + min-width: #{width}px; + #{if _conf["Rounded Edges"] then "border-radius: 3px 3px 0 0;" else ""} +} +#qrtab { + #{if _conf["Rounded Edges"] then "border-radius: 3px 3px 0 0;" else ""} +} + +#{{ +"fixed": " +#qr { + top: auto !important; + bottom: 1.7em !important; + #{Style.sidebarLocation[0]}: 0 !important; + #{Style.sidebarLocation[1]}: auto !important; +}" + +"slideout": " +#qr { + top: auto !important; + bottom: 1.7em !important; + #{Style.sidebarLocation[0]}: -#{233 + Style.sidebarOffset.W}px !important; + #{Style.sidebarLocation[1]}: auto !important; +} +#qr:hover, +#qr.focus, +#qr.dump { + #{agent}transform: translate(#{xOffset + (233 + Style.sidebarOffset.W)}px); +}" + +"tabbed slideout": " +#qr { + top: auto !important; + bottom: 1.7em !important; + #{Style.sidebarLocation[0]}: -#{252 + Style.sidebarOffset.W}px !important; + #{Style.sidebarLocation[1]}: auto !important; +} +#qr:hover, +#qr.focus, +#qr.dump { + #{agent}transform: translate(#{xOffset + (252 + Style.sidebarOffset.W)}px); +} +#qr #qrtab { + #{agent}transform: rotate(#{(if Style.sidebarLocation[0] is "left" then "" else "-")}90deg); + #{agent}transform-origin: bottom #{Style.sidebarLocation[0]}; + position: absolute; + top: 0; + #{Style.sidebarLocation[0]}: 100%; + width: 110px; + text-align: center; + border-width: 1px 1px 0 1px; + cursor: default; +} +#qr:hover #qrtab, +#qr.focus #qrtab, +#qr.dump #qrtab { + opacity: 0; + #{Style.sidebarLocation[0]}: #{252 + Style.sidebarOffset.W}px; +} +#qrtab input, +#qrtab .rice, +#qrtab span { + display: none; +}" + +"transparent fade": " +#qr { + overflow: visible; + top: auto !important; + bottom: 1.7em !important; + #{Style.sidebarLocation[0]}: 2px !important; + #{Style.sidebarLocation[1]}: auto !important; + opacity: 0.2; + #{agent}transition: opacity .3s ease-in-out 1s; +} +#qr:hover, +#qr.focus, +#qr.dump { + opacity: 1; + #{agent}transition: opacity .3s linear; +}" +}[_conf['Post Form Style']] or ""} + +#{ +unless _conf['Post Form Style'] is 'tabbed slideout' + ( + unless _conf['Post Form Style'] is 'float' or _conf['Show Post Form Header'] + "#qrtab { display: none; }" + else unless _conf['Post Form Style'] is 'slideout' + ".autohide:not(:hover) > form { display: none !important; }" + else "" + ) + "#qrtab { margin-bottom: 1px; }" +else ""} + +#{ +if _conf['Post Form Style'] isnt 'float' and _conf["Post Form Slideout Transitions"] then " +#qr { + #{agent}transition: #{agent}transform .3s ease-in-out 1s; +} +#qr:hover, +#qr.focus, +#qr.dump { + #{agent}transition: #{agent}transform .3s linear; +} +#qrtab { + #{agent}transition: opacity .3s ease-in-out 1s; +} +#qr:hover #qrtab { + #{agent}transition: opacity .3s linear; +}" else "" +} + +#qr .close { + float: right; + padding: 0 3px; +} +#qr .warning { + min-height: 1.6em; + vertical-align: middle; + padding: 0 1px; + border-width: 1px; + border-style: solid; +} +.userInfo { + width: 248px; + max-width: 100%; + min-width: 100%; +} +#dump { + width: 10%; + margin: 0; +} + +#{ +if _conf['Compact Post Form Inputs'] then " +.userInfo input.field { + width: 29.6%; + margin: 0 0 0 0.4%; +} +#qr textarea.field { + height: 14.8em; + min-height: 9em; +} +#qr.captcha textarea.field { + height: 9em; +} + +" else " + +.userInfo input.field { + width: 100%; +} +.userInfo input.field[name='name'] { + width: 89.6%; + margin: 0 0 0 0.4%; +} +#qr textarea.field { + height: 11.6em; + min-height: 6em; +} +#qr.captcha textarea.field { + height: 6em; +}" +} + +#{ +if _conf["Tripcode Hider"] then " +input.field.tripped:not(:hover):not(:focus) { + color: transparent !important; + text-shadow: none !important; +}" else "" +} + +#qr textarea { + resize: #{_conf['Textarea Resize']}; +} +.captchaimg { + margin: 1px 0 0; + text-align: center; +} +.captchaimg img { + width: 100%; + height: 4em; + width: 246px; +} +.captchainput .field { + width: 100%; + margin: 1px 0 0; +} +.field, +.selectrice, +button, +input:not([type=radio]) { + #{Style.sizing}: border-box; + font-size: #{parseInt(_conf['Font Size'], 10)}px; + height: 1.6em; + margin: 1px 0 0; + vertical-align: bottom; + padding: 0 1px; +} +#qr textarea { + min-width: 100%; +} +#qr [type='submit'] { + width: 25%; +} +[type='file'] { + position: absolute; + opacity: 0; + z-index: -1; +} +#showQR { + display: #{if _conf["Hide Show Post Form"] then "none" else "block"}; + z-index: 4; + #{Style.sidebarLocation[0]}: 2px; + width: #{width}px; + background-color: transparent; + text-align: center; + position: fixed; + top: auto; +} +/* Fake File Input */ +#file { + #{Style.sizing}: border-box; + display: inline-block; + width: 100px; + min-width: 74.6%; + max-width: 74.6%; + margin-right: 0.4%; + overflow: hidden; +} +/* Thread Select / Spoiler Label */ +#threadselect { + vertical-align: bottom; + width: 49%; + display: inline-block; +} +#spoilerLabel { + vertical-align: bottom; + width: 49%; + display: inline-block; + text-align: right; +} +#threadselect:empty + #spoilerLabel { + display: inline-block; + width: 100%; +} +/* Dumping UI */ +.dump #replies { + display: block; +} +#replies { + display: none; + height: 90px; + position: relative; +} +#replies > div { + counter-reset: thumbnails; + top: 0; + right: 0; + bottom: 0; + left: 0; + overflow: hidden; + position: absolute; + white-space: pre; +} +#replies > div:hover { + overflow-x: auto; +} +.thumbnail { + #{Style.sizing}: border-box; + cursor: move; + border: 1px solid transparent; + background: rgba(0,0,0,.2) 50% 20% cover; + display: inline-block; + height: 90px; + width: 90px; + padding: 2px; + opacity: .5; + overflow: hidden; + position: relative; + text-shadow: 0 1px 1px #000; + #{agent}transition: opacity .25s ease-in-out; + vertical-align: top; +} +.thumbnail:hover, +.thumbnail:focus { + opacity: .9; +} +.thumbnail::before { + counter-increment: thumbnails; + content: counter(thumbnails); + color: #fff; + position: absolute; + top: 3px; + right: 3px; + text-shadow: 0 0 3px #000, 0 0 8px #000; +} +.thumbnail#selected { + opacity: 1; +} +.thumbnail.drag { + box-shadow: 0 0 10px rgba(0,0,0,.5); +} +.thumbnail.over { + border-color: #fff; +} +.thumbnail > span { + color: #fff; +} +.remove { + background: none; + color: #e00; + font-weight: 700; + padding: 3px; +} +a:only-of-type > .remove { + display: none; +} +.remove:hover::after { + content: " Remove"; +} +.thumbnail > label { + background: rgba(0,0,0,.5); + color: #fff; + right: 0; bottom: 0; left: 0; + position: absolute; + text-align: center; +} +.thumbnail > label > input { + margin: 0; +} +#addReply { + cursor: pointer; + font-size: 3.5em; + line-height: 90px; + margin: 0 0.5em; +} +/* Ads */ +.topad img, +.middlead img, +.bottomad img { + opacity: 0.3; + #{agent}transition: opacity .3s linear; +} +.topad img:hover, +.middlead img:hover, +.bottomad img:hover { + opacity: 1; +} +#{if _conf["Block Ads"] then " +/* AdBlock Minus */ +.bottomad + hr, +.topad img, +.middlead img, +.bottomad img { + display: none; +} +" else ""} +#{if _conf["Shrink Ads"] then " +.topad a img, +.middlead a img, +.bottomad a img { + width: 500px; + height: auto; +} +" else ""} +/* Options */ +#overlay { + position: fixed; + z-index: 30; + top: 0; + right: 0; + left: 0; + bottom: 0; + background: rgba(0,0,0,.5); +} +#options { + width: auto; + left: 15%; + right: 15%; + top: 15%; + bottom: 15%; + position: absolute; + padding: .3em; + #{if _conf["Rounded Edges"] then "border-radius: 3px;" else ""} +} +#options h3, +.keybinds_tab, +.mascots_tab, +.main_tab, +.style_tab { + text-align: center; +} +.keybinds_tab table, +.main_tab ul, +.style_tab ul { + text-align: left; +} +#options ul { + padding: 0; + #{if _conf["Rounded Edges"] then "border-radius: 3px;" else ""} +} +#options .selectrice ul { + border-radius: 0; +} +#optionsContent { + overflow: auto; + position: absolute; + top: 1.7em; + right: 5px; + bottom: 5px; + left: 5px; + #{if _conf["Rounded Edges"] then "border-radius: 3px;" else ""} +} +#optionsbar { + padding: 0 3px; +} +#optionsbar label { + cursor: pointer; + #{if _conf["Rounded Edges"] then "border-radius: 3px 3px 0 0;" else ""} +} +.tabs label { + position: relative; + padding: 0 4px; + z-index: 1; + height: 1.4em; + display: inline-block; + border-width: 1px 1px 0 1px; + border-color: transparent; + border-style: solid; +} +#credits { + float: right; +} +#optionsContent > input:not(:checked) + div { + display: none; +} +#options h3 { + margin: 0; +} +.main_tab li, +.style_tab li, +.rice_tab li { + overflow: visible; + padding: 0 5px 0 7px; + list-style-type: none; +} +#options tr:nth-of-type(2n+1), +.main_tab li:nth-of-type(2n+1), +.rice_tab li:nth-of-type(2n+1), +.style_tab li:nth-of-type(2n+1), +.keybinds_tab li:nth-of-type(2n+1), +.selectrice li:nth-of-type(2n+1) { + background-color: rgba(0, 0, 0, 0.05); +} +article li { + margin: 10px 0 10px 2em; +} +#options .option { + width: 50%; + display: inline-block; + vertical-align: bottom; +} +.optionlabel { + padding-left: 18px; +} +.rice + .optionlabel { + padding-left: 0; +} +#options .style_tab ul, +#options .main_tab ul { + vertical-align: top; + #{if _conf["Single Column Mode"] then "margin: 0 auto 6px;" else "margin: 0 3px 6px;\n display: inline-block;"} +} +.main_tab li, +.styleoption { + text-align: left; +} +.style_tab .suboptions ul { + width: 370px; +} +.main_tab ul { + width: 200px; +} +.suboptions, +#mascotcontent, +#themecontent { + overflow: auto; + position: absolute; + top: 0; + right: 0; + bottom: 1.7em; + left: 0; +} +.mAlign { + height: 250px; + vertical-align: middle; + display: table-cell; +} +#themecontent { + top: 1.7em; +} +#save, +.stylesettings { + position: absolute; + right: 10px; + bottom: 0; +} +.style_tab .suboptions { + bottom: 0; +} +#optionsContent textarea { + font-family: monospace; + min-height: 350px; + resize: vertical; + width: 100%; +} +/* Hover Functionality */ +#mouseover { + z-index: 32; + position: fixed; + max-width: 70%; +} +#mouseover:empty { + display: none; +} +/* Mascot Tab */ +#mascot_hide { + padding: 3px; + position: absolute; + top: 2px; + right: 18px; +} +#mascot_hide .rice { + float: left; +} +#mascot_hide > div { + height: 0; + text-align: right; + overflow: hidden; +} +#mascot_hide:hover > div { + height: auto; +} +#mascot_hide label { + width: 100%; + display: block; + clear: both; + text-decoration: none; +} +.mascots { + padding: 0; + text-align: center; + #{if _conf["Rounded Edges"] then "border-radius: 3px;" else ""} +} +.mascot, +.mascotcontainer { + overflow: hidden; +} +.mascot { + position: relative; + border: none; + margin: 5px; + padding: 0; + width: 200px; + display: inline-block; + background-color: transparent; +} +.mascotcontainer { + height: 250px; + border: 0; + margin: 0; + max-height: 250px; + cursor: pointer; + bottom: 0; + border-width: 0 1px 1px; + border-style: solid; + border-color: transparent; + overflow: hidden; +} +.mascot img { + max-width: 200px; +} +.mascotname, +.mascotoptions { + padding: 0; + width: 100%; +} +.mascot .mascotoptions { +opacity: 0; + #{agent}transition: opacity .3s linear; +} +.mascot:hover .mascotoptions { + opacity: 1; +} +.mascotoptions { + position: absolute; + bottom: 0; + right: 0; + left: 0; +} +.mascotoptions a { + display: inline-block; + width: 33%; +} +#upload { + position: absolute; + width: 100px; + left: 50%; + margin-left: -50px; + text-align: center; + bottom: 0; +} +#mascots_batch { + position: absolute; + left: 10px; + bottom: 0; +} +/* Themes Tab */ +.theme_tab h1 { + position: absolute; + right: 300px; + bottom: 10px; + margin: 0; + #{agent}transition: all .2s ease-in-out; + opacity: 0; +} +.theme_tab .selectedtheme h1 { + right: 11px; + opacity: 1; +} +#themeContainer { + margin-bottom: 3px; +} +#addthemes { + position: absolute; + left: 10px; + bottom: 0; +} +.theme { + margin: 1em; +} +/* Theme Editor */ +#themeConf { + position: fixed; + #{Style.sidebarLocation[1]}: 2px; + #{Style.sidebarLocation[0]}: auto; + top: 0; + bottom: 0; + width: 296px; + z-index: 10; +} +#themebar input { + width: 30%; +} +.color { + width: 10%; + border-left: none !important; + color: transparent !important; +} +.colorfield { + width: 90%; +} +.themevar textarea { + min-width: 100%; + max-width: 100%; + height: 20em; + resize: vertical; +} +/* Mascot Editor */ +#mascotConf { + position: fixed; + height: 17em; + bottom: 0; + left: 50%; + width: 500px; + margin-left: -250px; + overflow: auto; + z-index: 10; +} +#mascotConf .option, +#mascotConf .optionlabel { + #{Style.sizing}: border-box; + width: 50%; + display: inline-block; + vertical-align: middle; +} +#mascotConf .option input { + width: 100%; +} +#close { + position: absolute; + left: 10px; + bottom: 0; +} +/* Catalog */ +#content .navLinks, +#info .navLinks, +.btn-wrap { + display: block; +} +.navLinks > .btn-wrap:not(:first-of-type)::before { + content: ' - '; +} +.button { + cursor: pointer; +} +#content .btn-wrap, +#info .btn-wrap { + display: inline-block; +} +#settings .selectrice { + width: 100px; + display: inline-block; +} +#post-preview { + position: absolute; + z-index: 22; + #{if _conf["Rounded Edges"] then "border-radius: 3px;" else ""} +} +#settings, +#threads, +#info .navLinks, +#content .navLinks { + text-align: center; +} +#threads .thread { + vertical-align: top; + display: inline-block; + word-wrap: break-word; + overflow: hidden; + margin-top: 5px; + padding: 5px 0 3px; + text-align: center; +} +.extended-small .thread, +.small .thread { + width: 165px; + max-height: 320px; +} +.small .teaser, +.large .teaser { + display: none; +} +.extended-large .thread, +.large .thread { + width: 270px; + max-height: 410px; +} +.extended-small .thumb, +.small .thumb { + max-width: 150px; + max-height: 150px; +} +/* Front Page */ +#logo { + text-align: center; +} +#doc { + margin: 0 auto; + width: 1000px; + position: relative; +} +#boards .boxcontent { + vertical-align: top; + text-align: center; +} +#filter-container, +#options-container { + float: right; + position: relative; +} +#optionsmenu { + top: 100% !important; + left: 0 !important; +} +#boards .column { + #{Style.sizing}: border-box; + display: inline-block; + width: 16em; + text-align: left; + vertical-align: top; +} +.bd ul, +.boxcontent ul { + vertical-align: top; + padding: 0; +} +.right-box .boxcontent ul { + padding: 0 10px; +} +.yuimenuitem, +.boxcontent li { + list-style-type: none; +} +.bd ul { + margin: 0; +} +.yuimenuitem::before { + content: " [ ] "; + font-family: monospace; +} +.yuimenuitem-checked::before { + content: " [x] " +} +.yui-u { + display: inline-block; + vertical-align: top; + width: 475px; + margin: 10px; +} +#recent-images .boxcontent { + text-align: center; +} +#ft { + text-align: center; +} +#ft ul { + padding: 0; +} +#ft li { + list-style-type: none; + display: inline-block; + width: 100px; +} +#preview-tooltip-nws, +#preview-tooltip-ws, +#ft .fill, +.clear-bug { + display: none; +} \ No newline at end of file diff --git a/css/photon.css b/css/photon.css deleted file mode 100644 index cd4d9a702..000000000 --- a/css/photon.css +++ /dev/null @@ -1,52 +0,0 @@ -/* General */ -:root.photon .dialog { - background-color: #DDD; - border-color: #CCC; -} -:root.photon .field:focus { - border-color: #EA8; -} - -/* Header */ -:root.photon #header-bar { - font-size: 9pt; - color: #333; -} -:root.photon #header-bar a { - color: #FF6600; -} - -/* Settings */ -:root.photon #fourchanx-settings fieldset { - border-color: #CCC; -} - -/* Quote */ -:root.photon .backlink.deadlink { - color: #F60 !important; -} -:root.photon .inline { - border-color: #CCC; - background-color: rgba(255, 255, 255, .14); -} - -/* QR */ -.photon #dump-list::-webkit-scrollbar-thumb { - background-color: #DDD; - border-color: #CCC; -} -:root.photon .qr-preview { - background-color: rgba(0, 0, 0, .15); -} - -/* Menu */ -:root.photon #menu { - color: #333; -} -:root.photon .entry { - border-bottom: 1px solid #CCC; - font-size: 10pt; -} -:root.photon .focused.entry { - background: rgba(255, 255, 255, .33); -} diff --git a/css/prettyprint.css b/css/prettyprint.css new file mode 100644 index 000000000..93f7abacc --- /dev/null +++ b/css/prettyprint.css @@ -0,0 +1,57 @@ +(if Style.lightTheme then """ +.prettyprint { + background-color: #e7e7e7; + border: 1px solid #dcdcdc; +} +.com { + color: #dd0000; +} +.str, +.atv { + color: #7fa61b; +} +.pun { + color: #61663a; +} +.tag { + color: #117743; +} +.kwd { + color: #5a6F9e; +} +.typ, +.atn { + color: #9474bd; +} +.lit { + color: #368c72; +}\n +""" else """ +.prettyprint { + background-color: rgba(0,0,0,.1); + border: 1px solid rgba(0,0,0,0.5); +} +.tag { + color: #96562c; +} +.pun { + color: #5b6f2a; +} +.com { + color: #a34443; +} +.str, +.atv { + color: #8ba446; +} +.kwd { + color: #987d3e; +} +.typ, +.atn { + color: #897399; +} +.lit { + color: #558773; +}\n +""" \ No newline at end of file diff --git a/css/style.css b/css/style.css deleted file mode 100644 index 3f21f4327..000000000 --- a/css/style.css +++ /dev/null @@ -1,802 +0,0 @@ -/* General */ -.dialog { - box-shadow: 0 1px 2px rgba(0, 0, 0, .15); - border: 1px solid; - display: block; - padding: 0; -} -.field { - border: 1px solid #CCC; - -moz-box-sizing: border-box; - box-sizing: border-box; - color: #333; - font: 13px sans-serif; - margin: 0; - padding: 2px 4px 3px; - outline: none; - -webkit-transition: color .25s, border-color .25s, -webkit-flex .25s; - transition: color .25s, border-color .25s, flex .25s; -} -.field::-moz-placeholder, -.field:hover::-moz-placeholder { - color: #AAA !important; -} -.field:hover { - border-color: #999; -} -.field:hover, .field:focus { - color: #000; -} -.field[disabled] { - background-color: #F2F2F2; - color: #888; -} -.move { - cursor: move; -} -label, .favicon { - cursor: pointer; -} -a[href="javascript:;"] { - text-decoration: none; -} -.warning { - color: red; -} - -/* 4chan style fixes */ -.opContainer, .op { - display: block !important; -} -.post { - overflow: visible !important; -} -[hidden] { - display: none !important; -} - -/* fixed, z-index */ -#overlay, -#qp, #ihover, -#updater, #thread-stats, -#navlinks, #header, -#qr, #watcher { - position: fixed; -} -#overlay { - z-index: 999; -} -#notifications { - z-index: 70; -} -#qp, #ihover { - z-index: 60; -} -#menu { - z-index: 50; -} -#navlinks, #updater, #thread-stats { - z-index: 40; -} -#qr { - z-index: 30; -} -#watcher { - z-index: 20; -} -#header { - z-index: 10; -} - -/* Header */ -.fourchan-x body { - -moz-box-sizing: border-box; - box-sizing: border-box; -} -#header { - top: 0; - right: 0; - left: 0; -} -#header-bar { - border-width: 0 0 1px; - display: -webkit-flex; - display: flex; - padding: 3px 4px 4px; - position: relative; - -webkit-transition: all .1s ease-in-out; - transition: all .1s ease-in-out; -} -#board-list { - -webkit-flex: 1; - flex: 1; - text-align: center; -} -#header-bar.autohide:not(:hover) { - box-shadow: none; - margin-bottom: -1em; - -webkit-transform: translateY(-100%); - transform: translateY(-100%); - -webkit-transition: all .8s .6s cubic-bezier(.55, .055, .675, .19); - transition: all .8s .6s cubic-bezier(.55, .055, .675, .19); -} -#toggle-header-bar { - cursor: n-resize; - left: 0; - right: 0; - bottom: -8px; - height: 10px; - position: absolute; -} -#header-bar.autohide:not(:hover) #toggle-header-bar, #toggle-header-bar:hover { - bottom: -16px; - height: 18px; -} -#header-bar.autohide #toggle-header-bar { - cursor: s-resize; -} -#header-bar a:not(.entry) { - text-decoration: none; - padding: 1px; -} -#shortcuts:empty { - display: none; -} -.brackets-wrap::before { - content: "\\00a0["; -} -.brackets-wrap::after { - content: "]\\00a0"; -} -.disabled, -.expand-all-shortcut { - opacity: .45; -} - -/* Notifications */ -#notifications { - height: 0; - text-align: center; - position: fixed; - top: 0; - right: 0; - left: 0; -} -.notification { - color: #FFF; - font-weight: 700; - text-shadow: 0 1px 2px rgba(0, 0, 0, .5); - box-shadow: 0 1px 2px rgba(0, 0, 0, .15); - border-radius: 2px; - margin: 1px auto; - width: 500px; - max-width: 100%; - position: relative; - -webkit-transition: all .25s ease-in-out; - transition: all .25s ease-in-out; -} -.notification.error { - background-color: hsla(0, 100%, 38%, .9); -} -.notification.warning { - background-color: hsla(36, 100%, 38%, .9); -} -.notification.info { - background-color: hsla(200, 100%, 38%, .9); -} -.notification.success { - background-color: hsla(104, 100%, 38%, .9); -} -.notification a { - color: white; -} -.notification > .close { - padding: 6px; - top: 0; - right: 0; - position: absolute; -} -.message { - -moz-box-sizing: border-box; - box-sizing: border-box; - padding: 6px 20px; - max-height: 200px; - width: 100%; - overflow: auto; -} - -/* Settings */ -#overlay { - background-color: rgba(0, 0, 0, .5); - display: -webkit-flex; - display: flex; - -webkit-align-items: center; - align-items: center; - -webkit-justify-content: center; - justify-content: center; - position: fixed; - top: 0; - left: 0; - height: 100%; - width: 100%; -} -#fourchanx-settings { - -moz-box-sizing: border-box; - box-sizing: border-box; - box-shadow: 0 0 15px rgba(0, 0, 0, .15); - height: 600px; - min-height: 0; - max-height: 100%; - width: 900px; - min-width: 0; - max-width: 100%; - padding: 3px; - display: -webkit-flex; - display: flex; - -webkit-flex-direction: column; - flex-direction: column; -} -#fourchanx-settings > nav { - display: -webkit-flex; - display: flex; - padding: 2px 2px 0; -} -#fourchanx-settings > nav a { - text-decoration: underline; -} -#fourchanx-settings > nav a.close { - text-decoration: none; - padding: 2px; -} -.sections-list { - -webkit-flex: 1; - flex: 1; -} -.section-container { - -webkit-flex: 1; - flex: 1; - position: relative; -} -.section-container > section { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - overflow: auto; -} -.section-sauce ul, -.section-rice ul { - list-style: none; - margin: 0; - padding: 8px; -} -.section-sauce li, -.section-rice li { - padding-left: 4px; -} -.section-main label { - text-decoration: underline; -} -.section-filter ul { - padding: 0; -} -.section-filter li { - margin: 10px 40px; -} -.section-filter textarea { - height: 500px; -} -.section-sauce textarea { - height: 350px; -} -.section-rice .field[name="boardnav"] { - width: 100%; -} -.section-rice textarea { - height: 150px; -} -#fourchanx-settings fieldset { - border: 1px solid; - border-radius: 3px; -} -#fourchanx-settings legend { - font-weight: 700; -} -#fourchanx-settings textarea { - font-family: monospace; - min-width: 100%; - max-width: 100%; -} -#fourchanx-settings code { - color: #000; - background-color: #FFF; - padding: 0 2px; -} -.unscroll { - overflow: hidden; -} - -/* Unread */ -#unread-line { - margin: 0; -} - -/* Thread Updater */ -#updater:not(:hover) { - background: none; - border: none; - box-shadow: none; -} -#updater > .move { - padding: 0 3px; -} -#updater > div:last-child { - text-align: center; -} -#updater input[type=number] { - width: 4em; -} -#updater:not(:hover) > div:not(.move) { - display: none; -} -.new { - color: limegreen; -} - -/* Thread Watcher */ -#watcher { - padding-bottom: 3px; - overflow: hidden; - white-space: nowrap; -} -#watcher:not(:hover) { - max-height: 220px; -} -#watcher > .move { - padding-top: 3px; -} -#watcher > div { - max-width: 200px; - overflow: hidden; - padding-left: 3px; - padding-right: 3px; - text-overflow: ellipsis; -} -#watcher a { - text-decoration: none; -} - -/* Thread Stats */ -#thread-stats { - background: none; - border: none; - box-shadow: none; -} - -/* Quote */ -.deadlink { - text-decoration: none !important; -} -.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) { - text-decoration: underline !important; -} -.inlined { - opacity: .5; -} -#qp input, .forwarded { - display: none; -} -.quotelink.forwardlink, -.backlink.forwardlink { - text-decoration: none; - border-bottom: 1px dashed; -} -.filtered { - text-decoration: underline line-through; -} -.inline { - border: 1px solid; - display: table; - margin: 2px 0; -} -.inline .post { - border: 0 !important; - background-color: transparent !important; - display: table !important; - margin: 0 !important; - padding: 1px 2px !important; -} -#qp > .opContainer::after { - content: ''; - clear: both; - display: table; -} -#qp .post { - border: none; - margin: 0; - padding: 2px 2px 5px; -} -#qp img { - max-height: 300px; - max-width: 500px; -} -.qphl { - outline: 2px solid rgba(216, 94, 49, .7); -} - -/* File */ -.fileText:hover .fntrunc, -.fileText:not(:hover) .fnfull, -.expanded-image > .post > .file > .fileThumb > img[data-md5], -:not(.expanded-image) > .post > .file > .fileThumb > .full-image { - display: none; -} -.expanding { - opacity: .5; -} -.expanded-image > .op > .file::after { - content: ''; - clear: both; - display: table; -} -:root.fit-width .full-image { - max-width: 100%; -} -:root.gecko.fit-width .full-image, -:root.presto.fit-width .full-image { - width: 100%; -} -#ihover { - -moz-box-sizing: border-box; - box-sizing: border-box; - max-height: 100%; - max-width: 75%; - padding-bottom: 16px; -} - -/* Index/Reply Navigation */ -#navlinks { - font-size: 16px; - top: 25px; - right: 10px; -} - -/* Filter */ -.opContainer.filter-highlight { - box-shadow: inset 5px 0 rgba(255, 0, 0, .5); -} -.filter-highlight > .reply { - box-shadow: -5px 0 rgba(255, 0, 0, .5); -} - -/* Thread & Reply Hiding */ -.hide-thread-button, -.hide-reply-button { - float: left; - margin-right: 2px; -} -.stub ~ .sideArrows, -.stub ~ .hide-reply-button, -.stub ~ .post { - display: none !important; -} -.stub input { - display: inline-block; -} - -/* QR */ -.hide-original-post-form #postForm, -.hide-original-post-form .postingMode, -#qr.autohide:not(:hover) > form { - display: none; -} -#qr select, #dump-button, .remove, .captcha-img { - cursor: pointer; -} -#qr > div { - min-width: 300px; - display: -webkit-flex; - display: flex; - -webkit-align-items: center; - align-items: center; -} -#qr .move { - -webkit-align-self: stretch; - align-self: stretch; - -webkit-flex: 1; - flex: 1; -} -#qr select { - margin: 0; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border: none; - background: none; -} -.presto #qr select { - height: 1em; -} -#qr .close { - padding: 0 3px; -} -#qr > form { - display: -webkit-flex; - display: flex; - -webkit-flex-direction: column; - flex-direction: column; -} -.persona { - display: -webkit-flex; - display: flex; -} -.persona .field { - -webkit-flex: 1; - flex: 1; -} -.persona .field:focus { - -webkit-flex: 4; - flex: 4; -} -#dump-button { - background: -webkit-linear-gradient(#EEE, #CCC); - background: linear-gradient(#EEE, #CCC); - border: 1px solid #CCC; - margin: 0; - padding: 2px 4px 3px; - outline: none; - width: 30px; -} -#dump-button:hover, #dump-button:focus { - background: -webkit-linear-gradient(#FFF, #DDD); - background: linear-gradient(#FFF, #DDD); -} -#dump-button:active, .dump #dump-button:not(:hover):not(:focus) { - background: -webkit-linear-gradient(#CCC, #DDD); - background: linear-gradient(#CCC, #DDD); -} -.gecko #dump-button { - padding: 0; -} -#qr:not(.dump) #dump-list-container { - display: none; -} -#dump-list-container { - height: 100px; - position: relative; - -webkit-user-select: none; - -moz-user-select: none; - -o-user-select: none; - user-select: none; -} -#dump-list { - counter-reset: qrpreviews; - top: 0; right: 0; bottom: 0; left: 0; - overflow: hidden; - position: absolute; - white-space: nowrap; -} -#dump-list:hover { - bottom: -12px; - overflow-x: auto; - z-index: 1; -} -#dump-list::-webkit-scrollbar { - height: 12px; -} -#dump-list::-webkit-scrollbar-thumb { - border: 1px solid; -} -.qr-preview { - background-position: 50% 20%; - background-size: cover; - border: 1px solid #808080; - color: #FFF !important; - font-size: 12px; - -moz-box-sizing: border-box; - box-sizing: border-box; - cursor: move; - display: inline-block; - height: 92px; width: 92px; - margin: 4px; padding: 2px; - opacity: .6; - outline: none; - overflow: hidden; - position: relative; - text-shadow: 0 1px 1px #000; - -webkit-transition: opacity .25s ease-in-out; - transition: opacity .25s ease-in-out; - vertical-align: top; - white-space: pre; -} -.qr-preview:hover, .qr-preview:focus { - opacity: .9; - color: #FFF !important; -} -.qr-preview#selected { - opacity: 1; -} -.qr-preview::before { - counter-increment: qrpreviews; - content: counter(qrpreviews); - font-weight: 700; - text-shadow: 0 0 3px #000, 0 0 5px #000; - position: absolute; - top: 3px; right: 3px; -} -.qr-preview.drag { - border-color: red; - border-style: dashed; -} -.qr-preview.over { - border-color: #FFF; - border-style: dashed; -} -.remove { - color: #E00 !important; - font-weight: 700; - padding: 3px; -} -.remove:hover::after { - content: ' Remove'; -} -.qr-preview > label { - background: rgba(0, 0, 0, .5); - right: 0; bottom: 0; left: 0; - position: absolute; - text-align: center; -} -.qr-preview > label > input { - margin: 1px 0; - vertical-align: bottom; -} -#add-post { - display: inline-block; - font-size: 30px; - height: 30px; - width: 30px; - line-height: 1; - text-align: center; - position: absolute; - right: 0; bottom: 0; - z-index: 1; -} -#qr textarea { - min-height: 160px; - min-width: 100%; - display: block; -} -#qr.has-captcha textarea { - min-height: 120px; -} -.textarea { - position: relative; -} -#char-count { - color: #000; - background: hsla(0, 0%, 100%, .5); - font-size: 8pt; - position: absolute; - bottom: 1px; - right: 1px; - pointer-events: none; -} -#char-count.warning { - color: red; -} -.captcha-img { - background: #FFF; - outline: 1px solid #CCC; - outline-offset: -1px; -} -.captcha-img > img { - display: block; - height: 57px; - width: 300px; -} -#file-n-submit > input { - margin: 0; -} -#file-n-submit.has-file #qr-no-file { - visibility: hidden; -} -#file-n-submit:not(.has-file) #qr-filename, -#file-n-submit:not(.has-file) #qr-file-spoiler, -#file-n-submit:not(.has-file) #qr-filerm { - display: none; -} -#file-n-submit { - display: -webkit-flex; - display: flex; - -webkit-flex-direction: row; - flex-direction: row; - -webkit-align-items: center; - align-items: center; -} -#qr-no-file, #qr-filename-container { - -webkit-flex: 1; - flex: 1; -} -#qr-filename-container { - cursor: default; - position: relative; - margin-left: 2px; -} -#qr-filename { - position: absolute; - top: 0; right: 0; bottom: 0; left: 0; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} -#qr-filerm { - padding: 0 2px; -} -#file-n-submit > #qr-file-spoiler { - margin: 0 2px; -} -#qr input[type='file'] { - position: absolute; - visibility: hidden; -} - -/* Menu */ -.menu-button { - display: inline-block; - position: relative; -} -.menu-button i { - border-top: 6px solid; - border-right: 4px solid transparent; - border-left: 4px solid transparent; - display: inline-block; - margin: 2px; - vertical-align: middle; -} -#menu { - border-bottom: 0; - display: -webkit-flex; - display: flex; - margin: 2px 0; - -webkit-flex-direction: column; - flex-direction: column; - position: absolute; - outline: none; -} -.entry { - cursor: pointer; - outline: none; - padding: 3px 7px; - position: relative; - text-decoration: none; - white-space: nowrap; -} -.entry.has-submenu { - padding-right: 20px; -} -.has-submenu::after { - content: ''; - border-left: 6px solid; - border-top: 4px solid transparent; - border-bottom: 4px solid transparent; - display: inline-block; - margin: 4px; - position: absolute; - right: 3px; -} -.has-submenu:not(.focused) > .submenu { - display: none; -} -.submenu { - border-bottom: 0; - display: -webkit-flex; - display: flex; - -webkit-flex-direction: column; - flex-direction: column; - position: absolute; - margin: -1px 0; -} -.entry input { - margin: 0; -} diff --git a/css/theme.4chanss.css b/css/theme.4chanss.css new file mode 100644 index 000000000..2afb0bdcd --- /dev/null +++ b/css/theme.4chanss.css @@ -0,0 +1,30 @@ +.board { + padding: 1px 2px; +} +.rice { + box-shadow:rgba(""" + mainColor.shiftRGB(32) + """,.3) 0 1px; +} +input[type=password]:hover, +input[type=text]:not([disabled]):hover, +input#fs_search:hover, +input.field:hover, +.webkit select:hover, +textarea:hover, +#options input:not([type=checkbox]):hover { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +input[type=password]:focus, +input[type=text]:focus, +input#fs_search:focus, +input.field:focus, +.webkit select:focus, +textarea:focus, +#options input:focus { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +button, +input, +textarea, +.rice { + transition:background .2s,box-shadow .2s; +} diff --git a/css/theme.css b/css/theme.css new file mode 100644 index 000000000..37ebe34ac --- /dev/null +++ b/css/theme.css @@ -0,0 +1,396 @@ + +.hide_thread_button span > span, +.hide_reply_button span > span { + background-color: #{theme["Links"]}; +} +#mascot_hide label { + border-bottom: 1px solid #{theme["Reply Border"]}; +} +#content .thumb { + box-shadow: 0 0 5px #{theme["Reply Border"]}; +} +.mascotname, +.mascotoptions { + background: #{theme["Dialog Background"]}; + border: 1px solid #{theme["Buttons Border"]}; +} +.opContainer.filter_highlight { + box-shadow: inset 5px 0 #{theme["Backlinked Reply Outline"]}; +} +.filter_highlight > .reply { + box-shadow: -5px 0 #{theme["Backlinked Reply Outline"]}; +} +::#{agent}selection { + background: #{theme["Text"]}; + color: #{backgroundC}; +} +hr { + border-bottom: 1px solid #{theme["Reply Border"]}; +} +a[style="cursor: pointer; float: right;"] + div[style^="width: 100%;"] > table > tbody > tr > td { + background: #{backgroundC} !important; + border: 1px solid #{theme["Reply Border"]} !important; +} +#fs_status { + background: #{theme["Dialog Background"]} !important; +} +#fs_data tr[style="background-color: #EA8;"] { + background: #{theme["Reply Background"]} !important; +} +#fs_data, +#fs_data * { + border-color: #{theme["Reply Border"]} !important; +} +html { + background: #{backgroundC or ''}; + background-image: #{theme["Background Image"] or ''}; + background-repeat: #{theme["Background Repeat"] or ''}; + background-attachment: #{theme["Background Attachment"] or ''}; + background-position: #{theme["Background Position"] or ''}; +} +#optionsContent, +#exlinks-options-content, +#mascotcontent, +#themecontent { + background: #{backgroundC}; + border: 1px solid #{theme["Reply Border"]}; + padding: 5px; +} +#selected_tab { + background: #{backgroundC}; + border-color: #{theme["Reply Border"]}; + border-style: solid; +} +.captchaimg img { + #{Style.filter theme["Text"], theme["Input Background"]} +} +#boardTitle, +#prefetch, +#showQR, +#{unless _conf["Post Form Decorations"] then '#spoilerLabel,' else ''} +#stats, +#updater:not(:hover) .move { + text-shadow: + 1px 1px 0 #{backgroundC}, + -1px -1px 0 #{backgroundC}, + 1px -1px 0 #{backgroundC}, + -1px 1px 0 #{backgroundC}, + 0 1px 0 #{backgroundC}, + 0 -1px 0 #{backgroundC}, + 1px 0 0 #{backgroundC}, + -1px 0 0 #{backgroundC} + #{if _conf["Sidebar Glow"] then ", 0 2px 5px #{theme['Text']};" else ";"} +} +/* Fixes text spoilers */ +#{if _conf['Remove Spoilers'] and _conf['Indicate Spoilers'] then " +.spoiler::before, +s::before { + content: '[spoiler]'; +} +.spoiler::after, +s::after { + content: '[/spoiler]'; +} +" else unless _conf['Remove Spoilers'] then " +.spoiler:not(:hover) *, +s:not(:hover) * { + color: rgb(0,0,0) !important; + text-shadow: none !important; +} +.spoiler:not(:hover), +s:not(:hover) { + background-color: rgb(0,0,0); + color: rgb(0,0,0) !important; + text-shadow: none !important; +}" else ""} +#exlinks-options, +#options, +#qrtab, +#{if _conf["Post Form Decorations"] then "#qr," else ""} +#updater:hover, +input[type="submit"], +input[value="Report"], +span[style="left: 5px; position: absolute;"] a { + background: #{theme["Buttons Background"]}; + border: 1px solid #{theme["Buttons Border"]}; +} +.enabled .mascotcontainer { + background: #{theme["Buttons Background"]}; + border-color: #{theme["Buttons Border"]}; +} +#dump, +#file, +#options input, +.captchaimg, +.dump #dump:not(:hover):not(:focus), +.selectrice, +button, +input, +textarea { + background: #{theme["Input Background"]}; + border: 1px solid #{theme["Input Border"]}; + color: #{theme["Inputs"]}; +} +#dump:hover, +#file:hover, +#options .selectrice li:nth-of-type(2n+1):hover, +.selectrice:hover, +.selectrice li:hover, +input:hover, +textarea:hover { + background: #{theme["Hovered Input Background"]}; + border-color: #{theme["Hovered Input Border"]}; + color: #{theme["Inputs"]}; +} +#dump:active, +#dump:focus, +.selectrice:focus, +.selectrice li:focus, +input:focus, +textarea:focus, +textarea.field:focus { + background: #{theme["Focused Input Background"]}; + border-color: #{theme["Focused Input Border"]}; + color: #{theme["Inputs"]}; +} +#mouseover, +#post-preview, +#qp .post, +#xupdater, +.reply.post { + border-width: 1px; + border-style: solid; + border-color: #{theme["Reply Border"]}; + background: #{theme["Reply Background"]}; +} +.thread > .replyContainer > .reply.post { + border-width: #{if _conf['Post Spacing'] is "0" then "1px 1px 0 1px" else '1px'}; +} +.exblock.reply, +.reply.post.highlight, +.reply.post:target { + background: #{theme["Highlighted Reply Background"]}; + border: 1px solid #{theme["Highlighted Reply Border"]}; +} +#boardNavDesktop, +.pagelist { + background: #{theme["Navigation Background"]}; + border-style: solid; + border-color: #{theme["Navigation Border"]}; +} +.thread { + background: #{theme["Thread Wrapper Background"]}; + border: 1px solid #{theme["Thread Wrapper Border"]}; +} +#boardNavDesktopFoot, +#mascotConf, +#mascot_hide, +#menu, +#selectrice, +#themeConf, +#watcher, +#watcher:hover, +.subMenu, +a[style="cursor: pointer; float: right;"] ~ div[style^="width: 100%;"] > table { + background: #{theme["Dialog Background"]}; + border: 1px solid #{theme["Dialog Border"]}; +} +.deleteform::before, +.deleteform, +#qr .warning { + background: #{theme["Input Background"]}; + border-color: #{theme["Input Border"]}; +} +.disabledwarning, +.warning { + color: #{theme["Warnings"]}; +} +#navlinks a:first-of-type { + border-bottom: 11px solid rgb(#{if Style.lightTheme then "130,130,130" else "152,152,152"}); +} +#navlinks a:last-of-type { + border-top: 11px solid rgb(#{if Style.lightTheme then "130,130,130" else "152,152,152"}); +} +#charCount { + color: #{(if Style.lightTheme then "rgba(0,0,0,0.7)" else "rgba(255,255,255,0.7)")}; +} +.postNum a { + color: #{theme["Post Numbers"]}; +} +.subject { + color: #{theme["Subjects"]} !important; +} +.dateTime, +.post-ago { + color: #{theme["Timestamps"]} !important; +} +#fs_status a, +#imgControls label::after, +#updater #count:not(.new)::after, +#showQR, +#updater, +.abbr, +.boxbar, +.boxcontent, +.deleteform::before, +.pages strong, +.pln, +.reply, +.reply.highlight, +.summary, +body, +button, +span[style="left: 5px; position: absolute;"] a, +input, +textarea { + color: #{theme["Text"]}; +} +#exlinks-options-content > table, +#options ul, +.selectrice ul { + border-bottom: 1px solid #{theme["Reply Border"]}; + box-shadow: inset #{theme["Shadow Color"]} 0 0 5px; +} +.quote + .spoiler:hover, +.quote { + color: #{theme["Greentext"]}; +} +.forwardlink { + text-decoration: #{if _conf["Underline Links"] then "underline" else "none"}; + border-bottom: 1px dashed #{theme["Backlinks"]}; +} +.container::before { + color: #{theme["Timestamps"]}; +} +#menu, +#post-preview, +#qp .opContainer, +#qp .replyContainer, +.subMenu { + box-shadow: #{if _conf['Quote Shadows'] then "5px 5px 5px #{theme['Shadow Color']}" else ""}; +} +.rice { + background: #{theme["Checkbox Background"]}; + border: 1px solid #{theme["Checkbox Border"]}; +} +.selectrice::before { + border-left: 1px solid #{theme["Input Border"]}; +} +.selectrice::after { + border-top: .45em solid #{theme["Inputs"]}; +} +#updater input, +.bd { + background: #{theme["Buttons Background"]}; + border: 1px solid #{theme["Buttons Border"]}; +} +.pages a, +#boardNavDesktop a { + color: #{theme["Navigation Links"]}; +} +input[type=checkbox]:checked + .rice { + background: #{theme["Checkbox Checked Background"]}; + background-image: url(#{ +Icons.header.png + ( + if Style.lightTheme + "AkAAAAJCAMAAADXT/YiAAAAWlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLSV5RAAAAHXRSTlMAgVHwkF11LdsM9vm9n5x+ye0qMOfk/GzqSMC6EsZzJYoAAABBSURBVHheLcZHEoAwEMRArcHknNP8/5u4MLqo+SszcBMwFyt57cFXamjV0UtyDBotIIVFiiAJ33aijhOA67bnwwuZdAPNxckOUgAAAABJRU5ErkJggg==" + else + "AkAAAAJCAMAAADXT/YiAAAAWlBMVEX///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9jZLFEAAAAHXRSTlMAgVHwkF11LdsM9vm9n5x+ye0qMOfk/GzqSMC6EsZzJYoAAABBSURBVHheLcZHEoAwEMRArcHknNP8/5u4MLqo+SszcBMwFyt57cFXamjV0UtyDBotIIVFiiAJ33aijhOA67bnwwuZdAPNxckOUgAAAABJRU5ErkJggg==" + ) +}); +} +#addReply, +#dump, +.button, +.entry, +.replylink, +a { + color: #{theme["Links"]}; +} +.backlink { + color: #{theme["Backlinks"]}; +} +.qiQuote, +.quotelink { + color: #{theme["Quotelinks"]}; +} +#addReply:hover, +#dump:hover, +.entry:hover, +.sideArrows a:hover, +.replylink:hover, +.qiQuote:hover, +.quotelink:hover, +a .name:hover, +a .postertrip:hover, +a:hover { + color: #{theme["Hovered Links"]}; +} +#boardNavDesktop a:hover, +#boardTitle a:hover { + color: #{theme["Hovered Navigation Links"]}; +} +#boardTitle { + color: #{theme["Board Title"]}; +} +.name, +.post-author { + color: #{theme["Names"]} !important; +} +.post-tripcode, +.postertrip, +.trip { + color: #{theme["Tripcodes"]} !important; +} +a .postertrip, +a .name { + color: #{theme["Emails"]}; +} +.post.reply.qphl, +.post.op.qphl { + border-color: #{theme["Backlinked Reply Outline"]}; + background: #{theme["Highlighted Reply Background"]}; +} +.inline .post { + box-shadow: #{if _conf['Quote Shadows'] then "5px 5px 5px #{theme['Shadow Color']}" else ""}; +} +.placeholder, +#qr input::#{agent}placeholder, +#qr textarea::#{agent}placeholder { + color: #{if Style.lightTheme then "rgba(0,0,0,0.3)" else "rgba(255,255,255,0.2)"} !important; +} +#qr input:#{agent}placeholder, +#qr textarea:#{agent}placeholder, +.placeholder { + color: #{if Style.lightTheme then "rgba(0,0,0,0.3)" else "rgba(255,255,255,0.2)"} !important; +} +#options ul, +.boxcontent dd, +.selectrice ul { + border-color: #{if Style.lightTheme then "rgba(0,0,0,0.1)" else "rgba(255,255,255,0.1)"}; +} +#options li, +.selectrice li:not(:first-of-type) { + border-top: 1px solid #{if Style.lightTheme then "rgba(0,0,0,0.05)" else "rgba(255,255,255,0.025)"}; +} +#navtopright .exlinksOptionsLink::after, +#appchanOptions, +.navLinks > a:first-of-type::after, +#watcher::after, +#globalMessage::after, +#boardNavDesktopFoot::after, +a[style="cursor: pointer; float: right;"]::after, +#imgControls label:first-of-type::after, +#catalog::after, +#fappeTyme { + background-image: url('#{icons}'); +#{unless Style.lightTheme then " +filter: url(\" +data:image/svg+xml,#filters +\");" else ""} +} +#{theme["Custom CSS"]} \ No newline at end of file diff --git a/css/theme.oneechan.css b/css/theme.oneechan.css new file mode 100644 index 000000000..5b764a7d3 --- /dev/null +++ b/css/theme.oneechan.css @@ -0,0 +1,27 @@ +.rice { + box-shadow:rgba(""" + mainColor.shiftRGB(32) + """,.3) 0 1px; +} +input[type=password]:hover, +input[type=text]:not([disabled]):hover, +input#fs_search:hover, +input.field:hover, +.webkit select:hover, +textarea:hover, +#options input:not([type=checkbox]):hover { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +input[type=password]:focus, +input[type=text]:focus, +input#fs_search:focus, +input.field:focus, +.webkit select:focus, +textarea:focus, +#options input:focus { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +button, +input, +textarea, +.rice { + transition:background .2s,box-shadow .2s; +} diff --git a/css/tomorrow.css b/css/tomorrow.css deleted file mode 100644 index 2d03d4498..000000000 --- a/css/tomorrow.css +++ /dev/null @@ -1,58 +0,0 @@ -/* General */ -:root.tomorrow .dialog { - background-color: #282A2E; - border-color: #111; -} -:root.tomorrow .field:focus { - border-color: #000; -} - -/* Header */ -:root.tomorrow #header-bar { - font-size: 9pt; - color: #C5C8C6; -} -:root.tomorrow #header-bar a { - color: #81A2BE; -} - -/* Settings */ -:root.tomorrow #fourchanx-settings fieldset { - border-color: #111; -} - -/* Quote */ -:root.tomorrow .backlink.deadlink { - color: #81A2BE !important; -} -:root.tomorrow .inline { - border-color: #111; - background-color: rgba(0, 0, 0, .14); -} - -/* QR */ -.tomorrow #dump-list::-webkit-scrollbar-thumb { - background-color: #282A2E; - border-color: #111; -} -:root.tomorrow #qr select { - color: #C5C8C6; -} -:root.tomorrow #qr option { - color: #000; -} -:root.tomorrow .qr-preview { - background-color: rgba(255, 255, 255, .15); -} - -/* Menu */ -:root.tomorrow #menu { - color: #C5C8C6; -} -:root.tomorrow .entry { - border-bottom: 1px solid #111; - font-size: 10pt; -} -:root.tomorrow .focused.entry { - background: rgba(0, 0, 0, .33); -} diff --git a/css/yotsuba-b.css b/css/yotsuba-b.css deleted file mode 100644 index 20b1214fe..000000000 --- a/css/yotsuba-b.css +++ /dev/null @@ -1,52 +0,0 @@ -/* General */ -:root.yotsuba-b .dialog { - background-color: #D6DAF0; - border-color: #B7C5D9; -} -:root.yotsuba-b .field:focus { - border-color: #98E; -} - -/* Header */ -:root.yotsuba-b #header-bar { - font-size: 9pt; - color: #89A; -} -:root.yotsuba-b #header-bar a { - color: #34345C; -} - -/* Settings */ -:root.yotsuba-b #fourchanx-settings fieldset { - border-color: #B7C5D9; -} - -/* Quote */ -:root.yotsuba-b .backlink.deadlink { - color: #34345C !important; -} -:root.yotsuba-b .inline { - border-color: #B7C5D9; - background-color: rgba(255, 255, 255, .14); -} - -/* QR */ -.yotsuba-b #dump-list::-webkit-scrollbar-thumb { - background-color: #D6DAF0; - border-color: #B7C5D9; -} -:root.yotsuba-b .qr-preview { - background-color: rgba(0, 0, 0, .15); -} - -/* Menu */ -:root.yotsuba-b #menu { - color: #000; -} -:root.yotsuba-b .entry { - border-bottom: 1px solid #B7C5D9; - font-size: 10pt; -} -:root.yotsuba-b .focused.entry { - background: rgba(255, 255, 255, .33); -} diff --git a/css/yotsuba.css b/css/yotsuba.css deleted file mode 100644 index 2cf8b83ba..000000000 --- a/css/yotsuba.css +++ /dev/null @@ -1,52 +0,0 @@ -/* General */ -:root.yotsuba .dialog { - background-color: #F0E0D6; - border-color: #D9BFB7; -} -:root.yotsuba .field:focus { - border-color: #EA8; -} - -/* Header */ -:root.yotsuba #header-bar { - font-size: 9pt; - color: #B86; -} -:root.yotsuba #header-bar a { - color: #800000; -} - -/* Settings */ -:root.yotsuba #fourchanx-settings fieldset { - border-color: #D9BFB7; -} - -/* Quote */ -:root.yotsuba .backlink.deadlink { - color: #00E !important; -} -:root.yotsuba .inline { - border-color: #D9BFB7; - background-color: rgba(255, 255, 255, .14); -} - -/* QR */ -.yotsuba #dump-list::-webkit-scrollbar-thumb { - background-color: #F0E0D6; - border-color: #D9BFB7; -} -:root.yotsuba .qr-preview { - background-color: rgba(0, 0, 0, .15); -} - -/* Menu */ -:root.yotsuba #menu { - color: #800000; -} -:root.yotsuba .entry { - border-bottom: 1px solid #D9BFB7; - font-size: 10pt; -} -:root.yotsuba .focused.entry { - background: rgba(255, 255, 255, .33); -} diff --git a/lib/$.coffee b/lib/$.coffee index 447bb1c3d..b05e86f99 100644 --- a/lib/$.coffee +++ b/lib/$.coffee @@ -121,8 +121,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 diff --git a/src/appchan.coffee b/src/appchan.coffee index ba8ecd04f..cfa01e9c9 100644 --- a/src/appchan.coffee +++ b/src/appchan.coffee @@ -23,12 +23,11 @@ Style = setTimeout Style.rice, 100 ), 500 - Main.callbacks.push @node @setup() setup: -> + @addStyleReady() if d.head - @addStyleReady() @remStyle() unless Style.headCount return @cleanup() @@ -45,9 +44,6 @@ Style = wrapper: -> if d.head - if Style.addStyleReady - Style.addStyleReady() - Style.remStyle() if not Style.headCount or d.readyState is 'complete' @@ -79,14 +75,14 @@ Style = addStyleReady: -> theme = Themes[Conf['theme']] $.extend Style, - layoutCSS: $.addStyle Style.layout(), 'layout' - themeCSS: $.addStyle Style.theme(theme), 'theme' - icons: $.addStyle "", 'icons' - paddingSheet: $.addStyle "", 'padding' - mascot: $.addStyle "", 'mascotSheet' + layoutCSS: $.addStyle Style.layout(), 'layout' + themeCSS: $.addStyle Style.theme(theme), 'theme' + icons: $.addStyle "", 'icons' + paddingSheet: $.addStyle "", 'padding' + mascot: $.addStyle "", 'mascotSheet' # Non-customizable - $.addStyle Style.jsColorCSS(), 'jsColor' + $.addStyle JSColor.css(), 'jsColor' delete Style.addStyleReady @@ -121,9 +117,344 @@ Style = g: parseInt(bgHex.substr(2, 2), 16) / 255 b: parseInt(bgHex.substr(4, 2), 16) / 255 } - + return "filter: url(\"data:image/svg+xml,#filters\");" + layout: -> + _conf = Conf + agent = Style.agent + xOffset = if _conf["Sidebar Location"] is "left" then '' else '-' + + # Position of submenus in relation to the post menu. + position = { + right: + { + hide: + if parseInt(_conf['Right Thread Padding'], 10) < 100 + "right" + else + "left" + minimal: "right" + }[_conf["Sidebar"]] or "left" + left: + if parseInt(_conf['Right Thread Padding'], 10) < 100 + "right" + else + "left" + }[_conf["Sidebar Location"]] + + # Offsets various UI of the sidebar depending on the sidebar's width. + # Only really used for the board banner or right sidebar. + Style['sidebarOffset'] = if _conf["Sidebar"] is "large" + { + W: 51 + H: 17 + } + else + { + W: 0 + H: 0 + } + + Style.logoOffset = + if _conf["4chan Banner"] is "at sidebar top" + 83 + Style.sidebarOffset.H + else + 0 + + width = 248 + Style.sidebarOffset.W + + Style.sidebarLocation = if _conf["Sidebar Location"] is "left" + ["left", "right"] + else + ["right", "left" ] + + if _conf['editMode'] is "theme" + editSpace = {} + editSpace[Style.sidebarLocation[1]] = 300 + editSpace[Style.sidebarLocation[0]] = 0 + else + editSpace = + left: 0 + right: 0 + + Style.sidebar = { + minimal: 20 + hide: 2 + }[_conf.Sidebar] or (252 + Style.sidebarOffset.W) + + Style.replyMargin = _conf["Post Spacing"] + + css = """<%= grunt.file.read('css/layout.css') %>""" + + theme: (theme) -> + _conf = Conf + agent = Style.agent + + bgColor = new Style.color Style.colorToHex backgroundC = theme["Background Color"] + + Style.lightTheme = bgColor.isLight() + + icons = Icons.header.png + Icons.themes[_conf["Icons"]] + + css = """<%= grunt.file.read('css/theme.css') %>""" + + iconPositions: -> + css = """<%= grunt.file.read('css/icons.base.css') %>""" + i = 0 + align = Style.sidebarLocation[0] + + _conf = Conf + notCatalog = !g.CATALOG + notEither = notCatalog and g.BOARD isnt 'f' + + aligner = (first, checks) -> + # Create a position to hold values + position = [first] + + # Check which elements we actually have. Some are easy, because the script creates them so we'd know they're here + # Some are hard, like 4sight, which we have no way of knowing if available without looking for it. + for enabled in checks + position[position.length] = + if enabled + first += 19 + else + first + + position + + if _conf["Icon Orientation"] is "horizontal" + + position = aligner( + 2 + [ + notCatalog + _conf['Slideout Navigation'] isnt 'hide' + _conf['Announcements'] is 'slideout' and $ '#globalMessage', d.body + notCatalog and _conf['Slideout Watcher'] and _conf['Thread Watcher'] + $ '#navtopright .exlinksOptionsLink', d.body + notCatalog and $ 'body > a[style="cursor: pointer; float: right;"]', d.body + notEither and _conf['Image Expansion'] + notEither + g.REPLY + notEither and _conf['Fappe Tyme'] + navlinks = ((!g.REPLY and _conf['Index Navigation']) or (g.REPLY and _conf['Reply Navigation'])) and notCatalog + navlinks + ] + ) + + iconOffset = + position[position.length - 1] - (if _conf['4chan SS Navigation'] + 0 + else + Style.sidebar + parseInt(_conf["Right Thread Padding"], 10)) + if iconOffset < 0 then iconOffset = 0 + + css += """<%= grunt.file.read('css/icons.horz.css') %>""" + + if _conf["Updater Position"] isnt 'moveable' + css += """<%= grunt.file.read('css/icons.horz.tu.css') %>""" + else + + position = aligner( + 2 + (if _conf["4chan Banner"] is "at sidebar top" then (Style.logoOffset + 19) else 0) + [ + notEither and _conf['Image Expansion'] + notCatalog + _conf['Slideout Navigation'] isnt 'hide' + _conf['Announcements'] is 'slideout' and $ '#globalMessage', d.body + notCatalog and _conf['Slideout Watcher'] and _conf['Thread Watcher'] + notCatalog and $ 'body > a[style="cursor: pointer; float: right;"]', d.body + $ '#navtopright .exlinksOptionsLink', d.body + notEither + g.REPLY + notEither and _conf['Fappe Tyme'] + navlinks = ((!g.REPLY and _conf['Index Navigation']) or (g.REPLY and _conf['Reply Navigation'])) and notCatalog + navlinks + ] + ) + + iconOffset = ( + if g.REPLY and _conf['Prefetch'] + 250 + Style.sidebarOffset.W + else + 20 + ( + if g.REPLY and _conf['Updater Position'] is 'top' + 100 + else + 0 + ) + ) - ( + if _conf['4chan SS Navigation'] + 0 + else + Style.sidebar + parseInt _conf[align.capitalize() + " Thread Padding"], 10 + ) + + css += """<%= grunt.file.read('css/icons.vert.css') %>""" + + if _conf["Updater Position"] isnt 'moveable' + css += """<%= grunt.file.read('css/icons.vert.tu.css') %>""" + + Style.icons.textContent = css + + padding: -> + return unless sheet = Style.paddingSheet + _conf = Conf + Style.padding.nav.property = _conf["Boards Navigation"].split(" ") + Style.padding.nav.property = Style.padding.nav.property[Style.padding.nav.property.length - 1] + if Style.padding.pages + Style.padding.pages.property = _conf["Pagination"].split(" ") + Style.padding.pages.property = Style.padding.pages.property[Style.padding.pages.property.length - 1] + css = "body::before {\n" + if _conf["4chan SS Emulation"] + if Style.padding.pages and (_conf["Pagination"] is "sticky top" or _conf["Pagination"] is "sticky bottom") + css += " #{Style.padding.pages.property}: #{Style.padding.pages.offsetHeight}px !important;\n" + + if _conf["Boards Navigation"] is "sticky top" or _conf["Boards Navigation"] is "sticky bottom" + css += " #{Style.padding.nav.property}: #{Style.padding.nav.offsetHeight}px !important;\n" + + css += """ +} +body { + padding-bottom: 0;\n +""" + + if Style.padding.pages? and (_conf["Pagination"] is "sticky top" or _conf["Pagination"] is "sticky bottom" or _conf["Pagination"] is "top") + css += " padding-#{Style.padding.pages.property}: #{Style.padding.pages.offsetHeight}px;\n" + + unless _conf["Boards Navigation"] is "hide" + css += " padding-#{Style.padding.nav.property}: #{Style.padding.nav.offsetHeight}px;\n" + + css += "}" + sheet.textContent = css + + + color: (hex) -> + @hex = "#" + hex + + @calc_rgb = (hex) -> + hex = parseInt hex, 16 + [ # 0xRRGGBB to [R, G, B] + (hex >> 16) & 0xFF + (hex >> 8) & 0xFF + hex & 0xFF + ] + + @private_rgb = @calc_rgb(hex) + + @rgb = @private_rgb.join "," + + @isLight = -> + rgb = @private_rgb + return (rgb[0] + rgb[1] + rgb[2]) >= 400 + + @shiftRGB = (shift, smart) -> + minmax = (base) -> + Math.min Math.max(base, 0), 255 + rgb = @private_rgb.slice 0 + shift = if smart + ( + if @isLight rgb + -1 + else + 1 + ) * Math.abs shift + else + shift + + return [ + minmax rgb[0] + shift + minmax rgb[1] + shift + minmax rgb[2] + shift + ].join "," + + @hover = @shiftRGB 16, true + + colorToHex: (color) -> + if color.substr(0, 1) is '#' + return color.slice 1, color.length + + if digits = color.match /(.*?)rgba?\((\d+), ?(\d+), ?(\d+)(.*?)\)/ + # [R, G, B] to 0xRRGGBB + hex = ( + (parseInt(digits[2], 10) << 16) | + (parseInt(digits[3], 10) << 8) | + (parseInt(digits[4], 10)) + ).toString 16 + + while hex.length < 6 + hex = "0#{hex}" + + hex + + else + false + +Emoji = + init: -> + Emoji.icons.not.push ['PlanNine', Emoji.icons.not[0][1]] + + css: (position) -> + _conf = Conf + css = [] + margin = "margin-#{if position is "before" then "right" else "left"}: #{parseInt _conf['Emoji Spacing']}px;" + + for key, category of Emoji.icons + if (_conf['Emoji'] isnt "disable ponies" and key is "pony") or (_conf['Emoji'] isnt "only ponies" and key is "not") + for icon in category + name = icon[0] + css[css.length] = """ +a.useremail[href*='#{name}']:last-of-type::#{position}, +a.useremail[href*='#{name.toLowerCase()}']:last-of-type::#{position}, +a.useremail[href*='#{name.toUpperCase()}']:last-of-type::#{position} { +content: url('#{Icons.header.png + icon[1]}'); +vertical-align: top; +#{margin} +}\n +""" + css.join "" + + icons: + pony: [ + ['Pinkie', 'BAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAA3dJREFUGBlNwUtoXFUcB+Df/zzuY553pp2MmUwSk5TGpnamiokWRdNCSkCrUChKCnVZQUEUdy5sQZC6cyd2VWgoutCFXWTjIyp1UdqmEDBRsSZNmkmaZF6Zx32ccyzowu8j/M883pH5A9kBYfNkFOpu0OiulyqXmnhkDmdYHYJexzX1Ef51EQDhP9fxpjU0PDCd7IldYIxGVag3/KZ/ZX1p8/P0k/0U47qs291M2NS3f6ncuLeFeQ3A8KuYoNPoY/3e2Ej6scSnqUJ8gksmhC2y3OJHpSUHU0/3HU+WCuddyV6VSpVyYv/aUuPefWAP4iDG8AhJWyYYo972tg8DQ1wyWHGZSfcmZmQ+YeKTw1bQ70H8uJw3xtDp6NzG15VLf/DLWMBZHGPkwuWGyq7njLoZyzAiCtqRIddioifBxYBHIpeE0oaw0yoG7WA755dvi8Xih66BOSZj4rwds45bSQkuOeOCQYWG2PjjcEq94JwjQgQ+kCW+tBl3H7Ym4jnbE/nDmamwqz9mnEaYoBgiZaJIGW5zEIHEPheykMD2w12ztPIXCrZHec+GdOVAUI8ygjvifeHQESiNoKtMlIoRxSV0owMjAeY5+P3BKrbTDq3n02B/7yDTDkBANSXiewKgjFbahEwQe34IiVIfRNqCv1qDanQR9Di4+tU16N409o2WMXnyJeNWb9PO4s6WroZawOiSiozCoR7lPFUQezICCzXF+pPGYRna6/rotNqY/eJLUzh4mM5dP4Va0YXV45x0O9F9FhkN5auq4eznaq3WmP1pDkuibW5uraNaqyNh23ihPA6v7wAVS+PwXAGkbYiUnU3kYm8JzvgGpJGdG6vzm15+ce6H79/9bnnBhCxG702dwnTaw4nyM/jsiTHsHx+DEyjKWnGEUpBOyjTTgbpsNHyLojPe7PK3qci58NvNu0Gl0YA8NIxWp4MkdzCdK2Ci6iNYXIV6UEfUDBC2Q/A3WqVbUUfVucWftYhP9fLiFf7yRPGVmZmhE88dJVmpGRMqRH4E3emSbnQR3lkzaqNB3br/J39tb1ibJglGfJDZbMReb37Td/bFhcnB/iNppXNUbZEKFGBJ6FBT+9cVo5c3yd/trDV3OxdFDDHFOV8IffVJtNNOC+J3xtYqATWw0Mm6RIJ9YAy9rdtt07q1ZtjdVXCYFRBG4Bv8A+lliGhzN164AAAAAElFTkSuQmCC'] + ['Applejack', 'A4AAAAQCAYAAAAmlE46AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAv9JREFUOE9dkmtIU2EYx88Roi9FfahkfQmS6kNGEBRlZWSY5tylTKepqR8MHYGl2R1POm2u5bCVlzbog2Ze591pzZPZxUskDZLMMLSWzcIca3MXt7N/55woqhf+PC8Pz+99n+fPQxAEQf6vhINb1nG5/ISdobWXo+9eSd4tyM7OJimKImmaJhsaGjjmX/DGqfDQmkvRg1x+9YrlZPd18fdupXiu6mxkOAcqlUqyuLiYB/+cayfD1rKFH0w3pYEHV4/omhTCyieVcYEB7TEYSyX21Mita/6u/91qUBMV00JrjmKwMg4zI2fgnlfD90PLx+nhMyinIrb91SFBFqaHBevPHb7G/fS06jhs0wXwO8rBOLXws2Kct/k4//HKRE+jZD0Pl2buD2FnmOlVSUFrpJg15/JFgcWKP0Bg8Q6fs1sVs+11wmAebKaEuiG1CC81Yozci+cL4KoC3JUIuCp4+R23+Ee4Dr5bisZmJi7fJzpLRJZPOin8vSlwdSXDO54Hz+vT8LzLh3uuCIuzBfDa1DzMPcrJMVfkIHpVEu94uYgH/aaTvOxdJzDZkI76smhY2mVwDmfg8zM5RukcvH8pbx96mLiPMBTG0nSpGK7mePg6k+DsSUZbSQwem02oba3DRsFKzNQfx9sHSdi1dzve5Ow4xM+ozorY1K2U2MY0IrhbEuB7lIqB6gxY7B9R3XoHAoEAivN74O5LAaXNwvNLe9PlcjlJACANRaIRztFh1iRvfRyYx5kIOCwY+GCE9GIUOjrzwZjS4H16FV80UT1WqzWIWFhYIBsLhDf7y46Ck1UvATNKgXlxHgHbJDyub2DGVPC2s+bVyGDTx74ym80kwe2fKvNASN8NySK3NeayWNagNPj7WaP62Uhn8HdPkwyWW3IoEjdv0Ol0JGE0GvmV0+dFpj9SS5kOKuahr01Wwbb2lXV6aakjkfF1p8DXlwHnaB5yTm1bbzAYfs34e/+0pyNic+N2ruIWmQWXcdE1dUEGd9UYq6kle1mXqVW6imWIn290AGVZutJTAAAAAElFTkSuQmCC'] + ['Fluttershy', 'BAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAA2xJREFUOE9dU91PWmcYP2uybDfrxdIlu9vN/oglverWNN3Fmu1iN7vY2q4utnE2Nu26ukyrUUGwExGpn3xY+TyACjrskFrcEYoWnCAM4YAgcJjROkFA1q789nJczNaTPHnfk+f5/d7n4/dQ1Cvf3Ut3Xp//Qnze36gYCt56kIgJpyqRFvrvcIvxMNxhSa9eV993XJK/+yqO/zdf7j7tbRz1RdstLzOKReRoLxJSOzb7HyKtdCEumgErmEbwO03U2aR8738kzq8ln8e6bXlWYMWmZA6Z8SUk5U5ytyPeY0Oy1w5O50FO+wQ5jbtG4lK19L5BGehzb9sE19+JtFt2c8ZlJPvmwAqtSA06EWs3g+2aQnacwdbwAmLknuiZxaZ4FiTD6tLFvi+pBeenb/3mvvo4Yu3D5v1ZsP1axHpUiAo0iPyg41/dGiNgiQI5PXmdXkai92dkVItYbZ6YpVZWLrrKFSOynBip9W6U/7LwViqZ8SykRWpcR8BqJNlmJCZp1LLMkIxSAw6s39WHqUCo/mDnWTdKhwRUMaNMzvLh5NFZsaBIbD+rJ34jgsxtcLQH3IQbKakDoVZDmnpk+irA/fEjCkXlv+AawX+MEJQJcaFEY8bWAJdMgYxyESn5PILNumUqJNVVA4EG7OXlx8Bf3T2QyRuh0X2P5ad9pCQTcjtqDI3UwTMuReIeaaKagb9u6B6VVi9Wg1YRUhkhH1g6NKFf3gD/2gAYz08YVd5AdltDfDS2d2QIrH6DcNcwUjLHc+aC8AMqLrW/4EwesBoligUTCgc05h52IH9gwu6+ERwBb+9pkc0IwLJNWHPXIyrUIdysW2POd52gopIZjtOSpgzOI2NToVAmwD0D9osmvvZSxcCXtr5wA08627Ah0yHZ74D3ysBNXokR8XQ8q2SQM3gQbZtAPm1AiZRyNIUawZGFl5qIRqbBdk4Sndjy1iviIymzIquXldirWRXDzzdOZr63q8J66OqOf+2yL8be+nMr3fry91A9NlRjvKT9tx88Pt6Djdaps0RZxQRZmCzpbHrMBV9b5/YM/dn7tSCT/cNTvpauFdasR5xkkCaS9n07Kj0mIKm+GbujP5OQ/vI8Ofyomhx0sOmxhU9W6wYp5uOO12qB3guik2TuI2QPXmwpXLGnjSMf3RRdO1Hz/QNneMt7Iqmg5QAAAABJRU5ErkJggg=='] + ['Twilight', 'BIAAAAQCAYAAAAbBi9cAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAA6lJREFUOE+VlF9Mk1cYxj+Kc3+yXWimFxuk2zTIn4bQFkppF0hDNmBpBtgKixhhQZAhbSkFBp1uZWg3ZLRMxFKE0qKtrMy2E2ztn2+1tLQgbuJiorvQ7c5pgplZNjfmePZ9nwtZMm52kufqvOeX5zznfQ9B/M9l/8CXPP2R/6ajy+u0amZeoI8D2PpfTLqMlZQpT9vE2fPOc9l73302q7rs6Sz5K6zM3ZuJzD2EVf1VytejC4hNXoWj2/vlF71+FgVKIsZVHrbnEzLoPkYOqqtPNm7j1l1J4R9Y4wgVkOR3Qcvrg+uNXmTnt9zfmdcUFRd1XqQhC+eWMXP8MiwKdyUDOqMLEG49qYtYlhA+vQi7zocGmQHFYi2UnM9wq/RzNEsOQyDWMBIWtjNurjivw2ucg+toyM+A6LWZU72vvsqwFjwVZwrmrEvoq7DBLDDiltQAobidgeRRUipMTA0t32AU3hNzD7zGSANBZMi2UFe5nyZohrREB9dxEnMTS+jgnUBYMghv2afrbhhHb3aAnFxkQMHhOALDid8p0EHiKU6VklvQil0UiJakqBsf77dCmTmASPEAhoqPIEN4CGmCJvAkauzKfw/5pRr4J+JUTtfo693zGSM7iBdzan10sE9gh5AragNXoEKtvB+93ZMY0TthGraB92oJVlYewDTgQJ96DKTtiStXb8jvNoafIV7i19+lndC2X+bXPyqXffj4kmV+PYexY1aQMwnkv1YGWUUljryvQ0/dqfV9+Vs9zVTYLILKZ5UGsXMbb2/llJaWCN8OnzNMrxda9JNYjt+ENL0RrQol0nekQVtlRHA8gsWpZQhEmrviws5yIpXfcG87t+52UpY8NZXN3lIjPRiOReZxfugCA7s4EsCN727ArHChQiKDYGchRrumELbFEbQmkFvQ+ofg9TYX8Xx2zfnkLDmHbgM2m00M1tortQf06FC2Y2HqGgMjvSR+WfkVplYPzCoX3EOziDmuwjMSRk6BajVP1PYT/fzb/j0nZ7tmN+n3mUlpUTmCo1EGFHJE8NvDR/g+egd0fj5LDN6xKHo6bOAL1D/niTTRDUd2rMW13VBj/zFu/5YZBaYBp69j0blMPfs8zhj9KCjspPNZ+6fjd28IGld4MgIn5x/HJr9ByJRYDz5oS2B6KIT9Nf3IEaj+pCBrXFELOTERZm0Ichy+lHy2czZlpv+y80JfmILFVwPDsTvmo26SJ1I9zBU1/UVBfqAk35ujpb+RpL8BJjxIUjyXvSgAAAAASUVORK5CYII='] + ['Rainbow', 'A8AAAAQCAYAAADJViUEAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAA3tJREFUGBk9wV9MG3UAB/Dv7+531971aKGMlr+OwjoGBUZwRDrRBJwj0bHEmeiS6Xwyxn8x8UVNzHAPPvliFhMzsy0m8uDD5h/QZWoUNxYMBoZbZCBjZTBoKRwtLde7cv9+bg/6+ZDnzk6C44lw6f6whdOnETpzla+0803RMD3ZGSH95V62lzGQtMH9M7MhfpPUyIX5HE1uvNXDaCQgtykB70cR/4unrn3aqzYkZt7v18ZfezyTkfy0HlJ7FMWKEBJFpYMSVq7bngMlGvvc/OTiLzRYLp8K1waObaS16MDIRfupG9c6SuwCsSt2kJ+/B+3HMdC6MBofa0N1a2sVJTWj02mh4BFCCpV84jN4oHyX3KYEJAi2BWYR2CkPmMlBiOgwE0mYiymo1Qu0Mx4/8VLVnrtnF4VxfuCN9z5mDBA9FJt7mzDe3oXkjou69CqoxkA4gC9xQAggankMa7uTm3m32SLKD+Sz6XXGGCDJAv6j7di4MzqBo199Adk2EIqkQGQHDy3Ij2Q+bHr9g3UxyFHLdFyvJHAg+J/ipYgdjuMyzwELCfRsTWG/NQEwhqCVC0YLy/qKGJzmD77w9pHSoFyjbWWxtjAH5jIIHi8EKkCpq8JteCD2H0F2u4BwZhE+x8BEWbt6i6df8kr/s0+H/HKMc1yo02MYaG9APjGLxJ+T2NxYRV7fxu66GqjwYyrn2AG7YFGw4FygeYiXjva/KoipxoaKGPY1N+PJfRHEauvQaIj47vsLSN67i87ew6hOLGFeTS38FO45XhR8lQlffS0tmGViwbmCdKEb3tJSGLYLieMwMfQr1tZSqOzqheCVkDWIk7i/vvJ7WdVVxd96XWBU4kzb55qOiZvqJazmCxhLGzBFiqbnuzD71xyij8bxEN/XzXccf7PyxJ6+lkxuwknnftP4vorBd9O1mXBAnsbfaQW6VQadcWC7gmiIH0JlrBWuw+DYgFyiSGqu+O2NjZllPMBJRUevuH4Ipu1DyOefrS6RzmQN211iFGUtzSAcD8dh2Ll8cyStai8vra/8MQhgEADvjx/bX78c6rgT1ddl722/btSelEz69eaWoZqms1kwrGVt27xV1I1zgdWfRw6Ww8lmswQAo6QR2dnM6JC6HT3PEfvctjSsnx+3J1uob6qt6gAtSgEu4BbdV2KO80T3O0QQBFiWRQRBwL/txI3OlzkSKwAAAABJRU5ErkJggg=='] + ['Rarity', 'BMAAAAQCAYAAAD0xERiAAAEEElEQVR4Xm2SW2xURRyHfzPnsmcvlO4ulN1uF2sLrIpdJNS0KUZFUq1t0AiKkpASbyQSjRKENEGrPuCTiUoTjSENKAnFYKokbZOmIBaoTRXB1AjbWmrabmVpt3SvZ899PFnTxAe+ZF7+D998mf/gbmwt30131B58YM+WTw7vbTnW/+oTHZda6490723uPP1KY0fna40dh/Y0fFz/4pq3XRFEsATB/2i71EauvDcplHN173p8of2gnI8KPHLxm/AEqwgIARUEeywyS1dVPZ+9kJ6OHdB/uzF2BmcYXRIdHxkhO/0vR/e9+c4p7+pIO+92+wlHaGE+QV1lYWpLCe90kdKVTvJo80rqDTic4nJfk7c62kM3rltfgQpSLGOM4ZfR0apQIPQTpSR04uhVqhUYSkoItLyMVFaEIjNENpTg8ZbVyGYK6PpyHIYGBhCmLiYHZ2NDzxZlpwYHaX3V2mMet3sPpZSbjc/B5y+Fw8GDgWEukcbURBLR2jB0TcPpz4cwO5aBBQJuWSnsbC09eeN50tnZSYy0s6p5V+MwIVghSQ4iFwqQHBIIIcVjGEaxXtd1XO2P4dr3N6EqCvJyFoqmgvqDlqZqp+jxD4/z8etKGxjxm6ZJxmIxnB8YwNDQEGITE5iemQHHcRAEATYIVPvB8ZQRQu05D45QGPNx2PYNNFxWV21y/h0AiCiKkGUZcwsZnDjTg7cOtuOr098hYxLYQJIklK8ps5hoaAyM2ZeAFwRQEJi5FEclT/BpxZBKFhdkQimFx+NBTbQG+1pfQFZ34tZtFd29PTAtC+N2dU9vH/t18sKCwPP4r46DQ3QySzcGKBGERzRFpYl4CkubPdd3Fj1nu5GduAxvdQNIPgNV1zBw/hy6+y+D510xUZQYzwlM5CXT5iID+5RailLNDINN/ZUCoQTLlnkQj8dx8uRJW2DA7V2F6H0RGJoGt8vFgqF7c2vD0T4wMANgd0yjP2Mqb+Ty2RkqMrhhmbh+JYnk7TSWl/pwuP0DrIvWoX73EWx/LIIV3lKIgoitT21Dy7aWPzU125/JpbOLukrA8U1ly8uGwxWVz1CXwOvE0qHIGq4NJ4qPHApVoKurC4defw6bKigCwfLiRkMBPzavL39w5/tPChk5vV+ZvzVHUknm4DhB13RKeZ5LlthlzDAQG00jkykU/5VTYKgJiTANE6LkhKIqTNW0nKqpvYauj89PzX5jcqxG0/WmeGK6bj6V+IHPy7nfV/hWbS5kM0gnC5iMLWBjXfhnAA0FRQGz0XVtzmJsZEHOH52a+uPirubtOmw2BfYmg9cSP2YsJ7uIbxlpfaitdk3l/Q/rlv7FnVzucmXdPS+1HtjyD8dzWCIvy76/Z6bY5MTs4tfjn7HBjwZxN/4Fq6rr1ZuF0oUAAAAASUVORK5CYII='] + ['Spike', 'A4AAAAQCAYAAAAmlE46AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAsFJREFUOE+Fk1tM0nEUx/9QPtCD7z30nE9sbbVeXJJR6j8DkVsIhg6HTqSXnBHSMMEbEy+AgPwVQpcgNy+kKLc/lCgF09Wquaab67kHX1pulif+mHRdne3sd3Z2Pt/fOee3H4J8N/ow2lrj4H64OljRfEXBIZ/k/3lWquXIrQl2ROAVA98jOro2XKUtvV9Dpj/iFV/ppwvLVfzThEBZGRWh0S4hmFx+rId2ysmMSU6WAAUeMfDcdYe0gUrGdUOl7rZXBDRdRQtRp1PeIRlVctIzk+lHR6itJnwC1nkbgOXgZlhO3h6RY9rZKYT7W9NUKpUklUqRKjPDQADEjYTz3SLgzQjzMWua/5E5xLpQrqOX/jEzamTc4LqEX/KQRwRMBwfEDgnUOyXAdgk+1zr5e0w7J/vA15OfN28PW5SnZlRuVT3WeMia5oHW1AthawSS40mIjcWhW98HfF89Ifa6qb+hqAA6FA5xzIp/dVncYDc/hkQOiI/jBcctCegwdRJgsERWcszpZTrKU/3S7s+Ff4vn9UG4aWbGyofoaB60d05dDJuiR/8DcXMCpLY24GPsrlRWcxZxKmaqF0aCsDy8ArgtAVFL/Jc2C4LWBEwFNLCUbt9PZrpEiEk2VjbmMYIdm4TQ6Cq4RmYB02CwZAlB2ByBkHEVYhYcEmEreNZl4F+/C8F0+0vE2x1IL3qDsDgZhKg5Bt7ULAgHa+HVzlt4v7MHMQyHpM8LrlQzuNdaIfJCub+R0Z5DfNrAxsJAEHJbhXhue5nQJmS3t2D73S6suVK5XBKiYQMs4B3xSEbZ83xTc3ljq5eMmNts5/3d82/8jicQDc0Cbo8BjiVyQsez4rYkeNRzfqfadUYgEJBRFCVRKBQS0tTUSM7BxaauUelyenwunnZ+SnhXDkKG0EGgb+5g4p5dpa5TFEkk1bmfQSu8/TfTXs+Z8UbptgAAAABJRU5ErkJggg=='] + ] + not: [ + ['Plan9', 'AwAAAAPCAYAAAGn5h7fAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AoYAzE15J1s7QAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAACAElEQVQoz3WSz4sSARTHvzMjygpqYg3+KIhkE83DKtKlf0C9SrTRuZNEx0VowU6CuSeJNlwwpEO2kJ6SQBiIUAzFjRDF4wrjKosnGx3HmdehFDfpe/2+z/s++D5gU7IsEwRByICIiAEAIiIAYAFAXsjYVr/fLxMRNVvN+prJ5/OA3+/XERFNf02JyeVyDx0OxyvLNQsnimLKfcf9KRQKXQAAnE6nlf5qMpnQycnbP/kAoKoqsSwLAJhOp+AAwOv1otvtpqxWq73dbt/r9XqvEQ6HUalUEvF4XLd5IpvNZqlerzd5nlf6/f6tTCZjBACk0+nb+XxeW4UrikLJZPImAGA0Gq0NIqJyuSyyANDr9Q5Wu1utFvR6/SULAI1G4+vK8Pv90DTtGwsAJpPpaGUYDAZ0Op3PHAAEg8H3tVqtbrtu21sqyxuRSOQJk0ql9IvF4r7b7f7pcrlejkaj57IsH58Pzp8dvjhc/lsBk0gkbLFYrFqtVvd27+4qOk733ePxPDCbzVBVFfP5fCiK4rvhxfDN/qP9wSasGwwGMv1HiqJQsVg8ZlfTHMepkiR1t05gGJBGmM/nMBqNj9nN9kql0lNN064ARISzH2cQBAGz2ewLu2na7XYLwzBbvxYIBBCNRrFj3BmsAZ/PZ+J5/kOhUIAkSVeA8XiMZqt5efrx9OA3GfcgvyVno9cAAAAASUVORK5CYII='] + ['Neko', 'BMAAAARCAMAAAAIRmf1AAACoFBMVEUAAABnUFZoUVddU1T6+PvFwLzn4eFXVlT/+vZpZGCgm5dKU1Cfnpz//flbWljr5uLp5OCalpNZWFb//f3r6+n28ff9+PRaVVH59Pr//vr38vj57/Dp7eyjn5zq8O5aVVJbYV9nVFhjUFRiWFlZVlFgZGOboJzm5uZhamfz9/bt8fDw6+drb26bl5j/8/lkX1z06uldWFS5r61UT0tfWlbDwr3Ew76moqNRTU7Mx8P75OpeY19pWl1XW1qzr6x5eHaLiojv7+1UT0xIU0uzqadVS0nV0MxkZGT5+PPk497///ra29Xq5eFtY2H28e2hnJignJlUUE1dXV2vrqxkY2FkYF/m3d5vZmfDuruhl5aZlJHx8O75+PZWVVP29vT/9fTj3trv6ubh5eRdXFqTkpBOTUtqZmX88/RMQ0T78vPEvr7HwcHDwsDq6ef///3Gx8H++fXEv7tZWVedmZZXXVudnJp0c3FZU1f79fnb1dlXUVVjXWFrZmy8t7359/qLj455e3q4s69vamZjX1zy4+avpaReWFz/+f1NR0vu6Ozp4+f48/lnYmi8ur3Iw7/69fHz7+xbV1SZmJZVUk1ZV1zq5ez++f/c196uqbDn4uj9+P7z7vRVVVXt6ORiXl/OycXHw8CPi4ihoJ5aWF3/+v/k3+axrLOsp67LzMZYU1m2sq9dWF5WUU1WUk/Au7eYlJGqpqObmphYVV749f7p5Or38fPu6OpiXFz38fH79vLz7urv6+hhYF5cWWKal6D//f/Z09Xg29exraqbl5RqaW6kpKTq5uPv7Of/+PDj29D//vP18Ozs5+OloJymoZ1ZVVJZWVlkYF2hnpmblIyspJmVjYKQi4enop5STUlRTUpcWUhqY1BgWT9ZUjhcV1NiXVkkhke3AAAABHRSTlMA5vjapJ+a9wAAAP9JREFUGBk9wA1EAwEAhuHv3dTQAkLiUlJFJWF0QDLFYDRXIMkomBgxNIYxhOk4wwCqQhQjxgxSGIsALFA5BiYbMZHajz1oJlx51sBJpf6Gd3zONcrqm/r1W8ByK0r+XV1LXyOLLnjW6hMGpu0u1IzPSdO17DgrGC6AadrVodGcDQYbhguP6wAvAaC0BRZQalkUQ8UQDz5tAof0XbejOFcV5xiUoCfjj3O/nf0ZbqAMPYmzU18KSDaRQ08qnfw+B2JNdAEQt2O5vctUGjhoIBU4ygPsj2Vh5zYopDK73hsirdkPTwGCbSHpiYFwYVVC/17pCFSBeUmoqwYQuZtWxx+BVEz0LeVKIQAAAABJRU5ErkJggg=='] + ['Madotsuki', 'BQAAAAPCAMAAADTRh9nAAAALVBMVEUAAAC3iopWLTtWPkHnvqUcBxx5GCZyAAARERGbdXJrRUyGRUyYbY23coZFGDRFGEYfAAAAAXRSTlMAQObYZgAAAGhJREFUeF5Vy1kOQyEMQ1Fshzd12P9y61AixLX4yJFo1cvVUfT23GaflF0HPLln6bhnZVKCcrIWGqpCUcKYSP3JSIRySKTtULPNwMaD8/NC8tsyqsd1hR+6qeqIDHc3LD0B3KdtV1f2A+LJBBIHSgcEAAAAAElFTkSuQmCC'] + ['Sega', 'CwAAAALBAMAAAD2A3K8AAAAMFBMVEUAAACMjpOChImytLmdnqMrKzDIyM55dnkODQ94foQ7PkXm5Olsb3VUUVVhZmw8Sl6klHLxAAAAAXRSTlMAQObYZgAAANFJREFUGJVjYIACRiUlJUUGDHBk4syTkxQwhO3/rQ/4ZYsuymi3YEFUqAhC4LCJZJGIi1uimKKjk3KysbOxsaMnAwNLyqoopaXhttf2it1anrJqke1pr1DlBAZhicLnM5YXZ4RWlIYoezx0zrjYqG6czCDsYRzxIko6Q/qFaKy0690Ij0MxN8K2MIhJXF+hsfxJxuwdpYGVaUU3Mm5bqgKFOZOFit3Vp23J3pgsqLxFUXpLtlD5bgcGBs45794dn6mkOVFQUOjNmXPPz8ysOcAAANw6SHLtrqolAAAAAElFTkSuQmCC'] + ['Sakamoto', 'BEAAAAQCAYAAADwMZRfAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAxVJREFUOE+Nk19IU1EYwK+GQQTVQ39egh6ibKlzw91z7rn3bvfOmddNszl1bjKXc5rJJGmBUr7Yg9qTD0IalFgRBEYg6EDQQB+GovQyQgiaUZsoLcgHMcr069w7MgcGXfi453zn+37fv3MYZt/n99e76tzVj4JN/hP79fvXnV3hnNabwUBjoOHcgTYOu/JQspgTzsqKgn9BfD4vkWTzur287PqLVy+zM+yePB7KsRXLywTjnSpnZctBkPCdW8ccDuU55vBO8RXbkC/oP5ph19V5+7LIky0OY1BKbZEbLcFSt7u6pN7jLmltCVrr3DV5jY3+KovFEsccB1KJNVpefe10BqS2tqqO4/AuphBB4L/LkrRqNgtJs1lMypLls1kU38mytMLz/E8VIlutqVqX6/weZG52OttRXjbE0cP/FYLRlpVjDXuQ/r77x2XZPKkCHA4HBAIBkCQpAygIAvh8Pu2MZgO0Lz+QSa/sQfwN9RfpVN66XC6Ynp6GhYUFGBwczAC1t7fD0tISxONx6O7upgHILmsqvLcHodOggfiV/v5+SCaT4HQ6IRaLgdfr1bIRRREmJyfBZrNBNBqF+fl5sNsdgE2GiAbp6bmbdbXC7qWQbxMTE7C2tgY6nQ5SqRSEw2ENopaoZpCXlwdTU1NaoECgCbgiU6y8QH+ECYWaTymK7TWdys7MzIwGaWtrg42NDejo6AB1WjU1NZo+FArB2NgYrK6uQrAlCASxn2z6wkuMp87VIAhkE2MEAwMDkEgkYHx8HBYXF0HtkQpRy1BLiEQisLy8rPVNKSsFjEzrXH4+z1hlS4xDhKadNu7t7YPR0VHweDzAEVWfHru6HxkZgeHhYVAURYNjkylVWKArZjjMzqmdVi+QCsLUkQiEjvDvncEkvU7/qQ0Vgukeo48Go87IiCJnZNmipxiz7wXEbVDnbUxQOgM12h9n6qTq6NvapRdtkwaP0XK8RmPuYSbxYfaQ/sJJhjfknuFRURUi7AMOozcCwl94hLZp5F+EioDQVwqYI6jomZU1NFtM+rOSxZjVazcyvwHr/p/Kws1jegAAAABJRU5ErkJggg=='] + ['Baka', 'BAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAA0pJREFUOE91k3tI01EUx39JOpA0H4jNx0pbD3XTalISWf8YFlEgldqDsBLLyqjEKBCiLLWiggh6/KEV1WZ7OaelLZvDdDafNW1JFraWe/32+01FrUZ9uy4ylLpw4Z5z7/nc77n3HIqaMRIjZJyEcNX+uFCFeGmI/GZciEIsCFJUTvoAzDz+1y7K76MSwhX5hXl6z+WSbrzU2KB8YEGDwgrTaxZ3b7xHcaHhR3xw7Z5/UviB1ReP5XSg3+TAqYJOxMzWISFIC0GQDomhTVA9skCnsaAwp/vnMq66dBokNuBR9uFd7T9Z1zCunjci0qcRJUVdoJ3DYOhRnC/qBZ+jQbfeCc+37yjY2UEg0iwvJE0k9l8Z+8xqHmTgot0QLdQgTaQFQ2AsOzlHvOu1S5pwOLsHHo8HjHMCq2MazNvTlByKHyrJLDvdR25jMWRxYx5HjeMH2r1BDOOeguRua4OI14jx8a8YH5tA+al3EHKlW6mYOapb2oZBOOwMbEMseAE12L+jjUh3w+VipyAZ65oxn1NP/GMYGR6Ftn4Qsf7qa9S82Y/l/X122G0uL2TbxmZEz1WhXW8mUol8moXu+SCi/OoQ6VsDh3UUwyQ1k9GOaI5MTkX4yWTGHutvgI1F28sviAlRgxeoRm62HvsyW8En9pZ1TYgi6TntoyQtFm86rVgUoJZRvDnKMmXVAGxWmkAYOBwudBqGcHCvHulrGpGT2Uy+z4yT+QYsCXtCUpp8GxbKhx8gDK0ro+KjJGvzdjfDZnN6VdisLD5/JjArQ2zW66PJOj2lEZtStaBphkwah7K6kMJ/GEulp1bMWhAmMbTozOQRaWRtfoZVgjo4iRra4SYgGi26TwjxVeDKhR7Y7U606ixICq9tr7hd7+OthRWL7yUnJ1WPmXotqLhpRICPHCePtuFV6xdUPTAhcWEtRHEqfHpPyto4hPXLXnzflSEJnFaN3OCKDcsFsrEntR9RUmxARLAUgT5iBPuJsXWDBj0dZjRU9yNV+PTbpjTp9OA/pOSk24nRkXf1J462oPxcJ65f6ULlHSMulepRerYDgvj7A0cKpNz/tyTZqbzXO4t0ZZGQJ34RH11lFHIlA8LIqreCCMUZRY3cd2bwL/5/RmjNSXqtAAAAAElFTkSuQmCC'] + ['Ponyo', 'BAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAuNJREFUOE+Nk3tI01EUx39BTytConQTt1am07m5abi5KT5S8z2dj1yOEMUC7aUgIoimlmUEWX9kBZGWaamEmE6U1BI1XNPNGTrnHs33IwuSXrL4NgcJ0mNdOHDh3PPhnPP9XoKwcroJYvMQiRSicHCQKCgUyZC9/T5rNet5KUFs0zCZbZMsFmZ9fTEjEEBDp4/KSSSb/4JoGIyWaTYbiykpWEhOxhSHAzWD0aqkUGhWAcVkW58xlvuPhfh4zItEmOHxYDR3MhcdDaNAsKJydAz5IySKRNjEUmy88vjOVaU8F0iPCqCNjEBHkC/UYaGYFwqxmJoKLYOhkxPElg0QsbNtTlmox9yjRD9UCbnoOR+J/lwRWtOCcdXfDc2BPpg0d7CQlIQZPh9KKlVkAQjJ2x2zmOSsQu7hpzUJfBhLjsNQmADjxcT10Bcl4rE4EHc5LjBEhEPn7f1WTqXSLQB/s1Tp7vslsoIkyPPiMJAbi86McBguiaHKjoEqR4jJy2K0nAxApzMN5iUGrclrKVaz2fUvuF4tRbxDKA90w5VjTFyLZKHpTBSq4/1QnxGB2qxoVIZx0JopRCPHFSNOThfWZzfrXDcZEowH4iA05ATg68hDtBaL0HAuCm3lJ9Bfcx2fFNUoi/DCjRgfNHHd1wCZA2TyXjNkE6F0cBDpPFiojeNi8EkJdFoN3vXch0nbBJOhDd907dANv8JITxNqziag3ZsJbUDAwLin50Q9QWwl1qSYoNOVvUcOoqOqAAa9Fu9H2/F9+B5WZLcwOyxFX18flLI+VASyMGVeoJHD+Tzq5BS1PoaKRrNT8127P74swsq4FCa9FKvqBqwaOiz3hdEuLKueYSyECT2LNW0eIfo3E/WmEbvnG1MUJnWdpWhDGDvxQXZHo+RR0uW2tnv+auPX+TvtJm7zKpaen/4y2yjBUlcxlvtvmvT16ZWDpQeoVv3/60F/NrHjTf4ugazIXtJ8ivjnz/sJ+yGQRjcqUdIAAAAASUVORK5CYII='] + ['Rabite', 'BIAAAAQCAYAAAAbBi9cAAAD/0lEQVR4Xl2MXUxbdQDFz/9+9Lb3tkBLCxTKhzgoOOZAsokbJmZxDFHnd+LL4hKVzBgfNCY++ODbjDEaZowvErOM6HRu6hKZY2rIAOkCY4OSDTpFaAsrlJa2t5+39+NvjT7tnJzknIfzI98Nf/C6TuXdguWBd1q9rcb8/CwsZiu2Ywm4nDVo3VWLZCKDaDwJq9mCg31PgjAMKKUwmcyYvTbek9iJRDm6M/XswEDjwNz6plWW6wdZhjUAintFCEEhn0N04zYskljaDLaj8ar49oUrsYR6mrFJNj322w46H8y+mitM/ZJKZmyE4XAvjJSsazpyuSzslVZIkgWKOvvRgQ6Xrdlhqmds7o7bFZoLkctreKxf7GtuCE7IyUQjBQcQ8j/lvxCGQJZz0IoCVpamTtzfIh9nwiaIrCQyjNg8mq11oDLUhNXRJfT1Ozr3tS/PqpnQ80qRgjAmKIqBfK4ItbSLKoOZqR/6neLkENlSUAIhlktvEf+sD2rkm8nWTHtvZCGMVON1ePuaoBER31/MXGly1wSqq9Uug6FluYyWXJiPqFXmjd4Dh9oF9ZKKimYXRtYCx8lmMIDIxlIPGz591av0mtanF7FcCEN6iMXeox2wOJ0QJAmUAoRQaIqCnWAQY1/ewKNGNeQuYXkm0d2NC2e+wvmRr/Hx+6+8PHayrbDyyQBNDb9As3PHKDWG6MTM23RoeJAWsqeoWvyUUv0UHf7pBB0fe4OeeXe3/vmHbx3+8dwIGJ4IsFpMMFe0fbtAn+nwZePr1u4MBK8XIALG/Rt479wYrs2vgeNNAMNgMbiNzybuoKVvn+Gs9kbr6qpBfJfGYHFIkJUCoGwfqcoMX/b27EGhwgOjoCADDlP+CA51ugFFRzoB8FYNaQ1oqKD44+eNL+wNj7zJGQSIhe8+jgQ9thk+27v/KRY6L4FSCkVOwtlQj6P73Qgt/o1ERoKt4iUkE7+jrZMHyzIoK9cOBFfT4LbWAk+0a7ZLnvqHcTNdACgFScfAcjxEdy00VQclHGo7dqGeYxHbvIo6hwhSghCehb3G5p6eW7VxXC5/xGWToMgrKKoaCnIalI9CIARasQAqloMI/x4BWrLLYwE1AEPTwCGHaGjz7pw/leZUNV8wNm9BLy6CxsvxZ1kMbaY4TKIIXlNBsynoVjvAC4CuAoYOVi+CMfLYCUfg95tPHuzZB0YtKzsb58RMucWE/fZmhCbdOP9rNnLnxko6GVoB8lFwyVVw8b/AyeulHoJyN4Rb19dTFyeqBlu6njvfsWcvOJvLs7DMmw/7bvpeE4pU2OIcgcqmp4fGAgt2Txwvqr7lTp5V7LquZxXC6+BqEvGcY5pyjaM1tffJbk89NE3FP5VQ6y7a+paZAAAAAElFTkSuQmCC'] + ['Arch', 'BAAAAAQCAMAAAAoLQ9TAAABCFBMVEUAAAAA//8rqtVAqtUQj88tpdIYks46otwVldUbktEaldMjldM2qNcXk9IWktQZkdIYlc8mnNUXlNEZktEZlNIYktIWlNMXktE7o9klmdMXktFHqdkXk9EWk9EYk9IlmtQXlNEXktAWk9AWlNEYlNFDptkZldMYk9E4otg/p9kXktEXk9AXlNA4otclmdQXk9IYktEXlNEwn9YXk9IXk9FFp9o3otgXk9FPrdwXk9E2otdCptkXk9E/ptkcldIXk9Edl9IXk9EjmdUXk9EXk9EXk9EbldIcldIjmdMmmtQsndUvntYyn9YyoNYzoNc0odc1odc2odc6pNg7pNg9pdlDp9pJqttOrdzlYlFbAAAARXRSTlMAAQYMEBEVFhgcHR0mLS8zNTY3PT4/RU1kdXp6e3+Cg4WIiYqMjZGXl5mbnqSnrbS3zMzV3OPk7Ozv8fT29vf4+fz8/f7SyXIjAAAAmUlEQVR4XlXI1WLCUBQF0YM3SHB3a1B3l7Bx1///E6ANkDtva0jKbCW2XIH1z2hiZEZ4uUgxo7JedTQye/KN/Sb5tbJ+7V9OXd1n+O+38257TL+tah3mADAwSMM7wzQWF4Hff6ubQIZIAIb6vxEF4CZyATXhZa4HwEnEA+2QgoiyQDnIEWkjVSBBZBqXbCRlKYo8+Rwkyx54AOYfFe7HhFa7AAAAAElFTkSuQmCC'] + ['CentOS', 'BAAAAAQCAMAAAAoLQ9TAAAB5lBMVEUAAADy8tng4Ovs9tnk5O3c7bX44LLduNO1tdDh7r/eutj43q2kocX23az07N+qqsvUqcmXl7331ZXJj7r40o/Pn8T42qP63KjNw9n21p3Y387Ml7732JzR55z05MSxtMLGn8TC4Hx8eqt8e62Af6/B4HnG4oPC4HzH44fBf7LCgbOkoMTcsrmtn8PWqcfFtKrj4Jvs2ZOz2FnMqLXT3KfY5p60Z6NUU5XRuqHzwWSywqDn3JaiiLWahrWhkry5zJjRmqm1Z6P1wmb1y319fK632mK5cKi5nH+73Gu73Gy73W283W+9eK17e6y1yZS3aqRZWJdcW5ldXJplXZppaKBwb6VwcKV5eKswL306OYNPTpGkfK+m0kGpUJWq1EnEqIuXK3+Xh7ahP4qhkryMfK6BgK+CdpGMaKKMa6O9ea2+eq6+oYW/eq+NbqWVlL2Wlr7AjanA4HnA4HrBkqbBlafB33rCgbLCmKjCxIzC1mSs1UytV5mtxIWt1lCuz2evWpuvXJywxYzHjrvH4oXIjrrN2HXO5pTO5pXUlYnUlYvVl5Hb0G7e0XTg03rhr5fpzHPpzXTp0Hvtz3/wrDHytknyt0zyuE3yuVHzvVr0wGP1x3T1yHf1yXe0ZaL2zYP30o730pD31ZeRIcF5AAAAQ3RSTlMAFBkbHEhJS0xMTk5UWWBsd4SEiIiPkJCVlZaam6CjpK29wMPDxMTFxcnK193e3+Dg4uTn5+fo6e/v8/P4+fn7/P7+J4XBAAAAAOBJREFUeF5Vj1OvAwEYBb/yGlu717atLW0b17Zt2/6nze42TTpvMw8nOZCAmwUpiIY6c5IiLi9tPX64GairqszHQ4X2VB64v1Cs6PxMPJSdHM777s6/jyaMRGiRLyyrb88OpjZ3CzAXrm1sqzSNNeN7kVBPNgB7cG51abE5l9cXDces7emQ1uadHhutFUg6gpPKkSIqQGavwz7r7O/+/3t/rSdjI9XDM3qz4fr3B/3iA0aJTG9x71+9oR/PLDwUe2wm19bly+fTIxHyEETatbPewGEw6Mk/tKZCEqSQQUlIHB/QNBEjjVN1AAAAAElFTkSuQmCC'] + ['Debian', 'A0AAAAQCAYAAADNo/U5AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAZ5JREFUOE+Nkk0oBHEYxv8fu5GQj3JwcaDkIAc5IpR87M7MKnIVJVKclaIQ5Sy5OLkgR7n5OigcSNpmd2c2Vyfl4KT8/muWiVU79TTv+7zv837NCBF6PG1X+NpZyEYSD9mIc+tHnBPe23B9xKrCuTmbQA/JKfABrhBswa1hH4A38IwfOxPdX1qcjiCQxO5NyrjKV70TnSbeRPwJvGN3i4yyqnEucPY8ZZX9GSEgGK+RvFfyjk2VKZxzBNG8wJWWgh/xtDOeUXZ7Slr6TrSLYL9N4SMgYTTcwdc2ArvJcElhSVcM6mCNSV8n9hA59yTU5UWMG6HIbLhIWlglgWiC2L4Z79qTdo40D6ISuOWwKCWHyk9Fv8ldpUHOuGTuynwSBUynddPdlbEosVpP9Eu4FnOsRzUYNTsdmZN/d5LDiqM0w+2CMdAFFsFGWgfXxZnheqe/z+0puwEM0HHYV3Z9Sgz8TEz7GkQvpuJ/36ggj2AaHLrSlkULWV5x+h2E8xkZL16YVjGNaAUscfZ/f6c/k9ywLKI2MMcRWl0RLy007idmRbQJ7RIfDAAAAABJRU5ErkJggg=='] + ['Fedora', 'BAAAAAQCAMAAAAoLQ9TAAABPlBMVEUAAAApQXIpQXIpQXIqQ3UpQXIpQXIpQXIpQXIpQXIpQXIpQXIpQXIpQXIpQXIpQXIpQXIpQXIpQXIpQXIpQXIpQXIqQ3QpQXIpQXIqRHYpQXIpQXIqQ3QqRHYpQXI8brT///8uTYMpQnM5Zqg5ZqnS1+I4ZaY4ZactSn8uRnYrQ3MrRXgsRHUsR3s8bbM8brMtSX4wUosxVI01XZw2X50vUIguToQvR3c6X5o6aKs6aq08Un8qQnM9VIFDWINJXohKcKlXapEqQ3UvUIc2X55bhcBdcJVgcpdhfapmd5tuk8dxgqJ1hKR5jbB6iah/m8Shudq3v9C4wNG/x9bFy9nFzNnFzNrIz9zK0NzK0t/O2+3P1eA2YaDU2eTb3+jb4Oje4urj6fHm6e/s7/Tz9fj3+fz7/P38/f3+/v83YaEa/NNxAAAAHnRSTlMABAoVGyY1SVlpeIuQsLfDzdHW4+3y8/b39/n6+vr4+ns8AAAAyklEQVR4XiWN5XrDMAxF75KOknYdZJS0klNmHjMzMzO9/wvMcH7I37mSJShsJ+5NjMT6umDoHyXDcI/2qJadh++P3cle1de+9yPe3/bTY92wzfzr7wGtP3JrAI72BZGVtcAdQlwHy+JS1pDbBE9qamZF3BYrjQxPEXwKc6dC8bXFm0QIpmt8kn0Rn093q82UCtK8oXZckwFJzuulV8bHkajPyXdbnJnARfDHs0trz+JQ+5AFvzp/L0+cL2qPAINUPrq5OC6p/64F/AMnrST+Dq/r7QAAAABJRU5ErkJggg=='] + ['FreeBSD', 'BAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAABIAAAASABGyWs+AAAABmJLR0QA/wD/AP+gvaeTAAADXklEQVQYGQXBS2wUZQDA8f83j33M9rF9d7u4loaWklaDpkSo9KDGaIKUaGxshD2YSPRiuDVeTDyhBxosJCoa40ktpAkPDcUqAYVIpUSUPrAulEdD2bbb7e7ObGcfM/P5+4kwKDvq6yJ1FYYcvb+YAkqAHo/HQ7FYrFIoCiurq9ZXJ06YSOkA+kBzfX06bys3zHxS9EL0tXDVyZfefacqV+X/ZSJx5+qLbx98LhaL9RiGEZWlEsWC/Thd9q6Pf3vs2u6Orc83rFsvTwwfLf5obgywT1Vjh2Hh+rbNsnTssJdNLedK5aIrpSuldKVXKsnH4+Pyn6FDXn5tMef9O+3NvdkvP1V4+EYw2AoQ+KSx8dRYS6NXXnwovaItXduSrrkinWxGOmZWJi9OyOK9m1LmsjIz9IH8QUMOd3WfAQwNKCy2tJwbHB5+XasPaxIHmc4g7WWEZ1MquBiRFlJTf1E7+Tl/H/8asavPzTY1nWd2ZkMDRPeBeHPz5ojwsilEQCBvTSKunCF3M8FSNkBGVTHDYYrLj8jVNhDZ2SMa2zo3MTamaIC/u6Ojr3DtrOrvP0BpdATnyBeIhTxpR5ABUlKSUlXS1dWstbVxdz6hPL0l1quGqkLaKwNvVcjEXNRd/4mit4Z19DjefBEPyCKxgQJQcF28dBrHNDGTSZSezsjeff0hraa2Vs2vrvit81O4vj9xLJcC4ADrQA7YAGqBGsAql/EtLdFQE/L7dF1XZmdnSrbPMJfXoLDmolQK8gJyQBowgQhQDRQBD+hsraVhd4e5MH+/oExfvWLJ9q3/3S7qMpNH2hsS40kFS4EUUAMA2IANRIBXv4uzuO67c2PykqkA5YmZ6bN18YPi0Yoknxc4AsJPCMLVAk2BLKDosCWqs/PZaulkuxk9fekcUBAAQGDks5FT0W++3NuYuC0DVUL4DIEdlIQDAj0IRkigaMjArkFx0tf523sffrQHyKsAgHPhwoXLL+yP9/kePNhk5ExUTyKFkJVAUAiCFZrQup4Rv9ftuLV/6ONBYBVABQAArMvJ5MXW7duD6P62sD8UrPAFRU1TpeCpCnGvPZr7WW///v0jpw+VC9ZdAAABAAAAAMLo7drWrmQyPWG/r8tnaGIjaM05ujr16x/ZBFh5AACA/wGZnIuw4Z4A3AAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxMi0wNy0wNFQxMDowOTo0OS0wNDowMOPVpFwAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTItMDctMDRUMTA6MDk6NDktMDQ6MDCSiBzgAAAAAElFTkSuQmCC'] + ['Gentoo', 'BAAAAAQCAMAAAAoLQ9TAAAB9VBMVEUAAAD///+AgICqqv+AgIC/v9+Ojqqii9GAgKptYZKQkOmPj/ddUYBgW4eVjeCTgfiWjO5wbJaZkvPBvepkXomYkNldV4Bzbpl6dJ+Uj7ynoO6Vi+1qZI63se2mnudjXYjOy+GCfaqZjvWlm/Pc2e+Oh7NeWIOWjfeXjeW1sd+gl+diXIfp5/KHgKnn5/F2cZx6c6ZgWoXc2e6dltrAvNu0scrX1eTOyujCvup4c5qpovVpY43///+6uPPJyPXq6fvm5vrz8/z8/P7+/v/d3PixqvmxrPSyrfe0sPO0sfS3tMve2/3r6vy6ufPz8/3d3fi3tM63tPO4tsu5tsu5tvO6tfe6t/Vva5KRjKy7tvW7t/W9vPO/vM+/vvPCwfPEw/TFwvTFxOfGxfTGxvTHxvTIx/TJx/aTiOrNzPXNzfXQzfnRzuHS0fbS0vbT0uHU0e/U0uTU0/bW0+zW1ffX1vfY1/jZ2Pjb2/jc2uSTiemVkLSlnvbe3PTe3vng3fzg3f3g4Pnh4Pnh4fri4enj4/nk5Prl5Prm4/ymn/bn5vro5/rp6O/p6funoPWsqs3t7Pvt7fXv7vzv7v3w7/nx7/3y8f3y8v3z8vytqPWuqPX09P319P319P719f339v739/34+P35+f37+/+uqev9/f6vqvSwrPQAR0dcAAAAPHRSTlMAAQIDBAgJCwwVFyAsNUFHSVBneH+Bh4mVmZmanKCxsrK2tr3ExtDW19rb4ODl5u3t7u/w8/T6+/z9/f4MkNJ1AAAA8ElEQVR4XjXNw5aDURSE0YrRtm3b54+dtm3btm3bz9k3Wek9+2pSYFwT8ibzE93hwAtdJqK3nZo4J9hFXbP+vFHOthV6gnGzstZq94wdCs4UCCDymQ2v7X0LdYoSQ0MIENRYzJbRlPTTHu73ZNAL8vivmVui98PpzuqffX0mIPHJGtOQenukteJ+aS3b9htNpDnT9TeZH1bHAwBRMhGpd6e6uNrLoRgxBKmsX47nBlp678ojpEA40fejcmW4e/No0V8IIPfj6eKgbEJ3ZUnzgE1OqWp9Q3VeWRAsg51f1dZ8c31RmAsc+N5JGbG+zvj3BzDCPrzMDC9SAAAAAElFTkSuQmCC'] + ['Mint', 'BAAAAAQCAMAAAAoLQ9TAAACVVBMVEUAAADh4eEAAAAAAAAAAAAAAAAAAAAsLCyXl5dgYGCnp6eTk5N3d3fBwcGqqqq8vLzNzc3Ozs7Ozs7Pz8/Pz9DQ0NHR0dLS0tLS0tPT09Pf3t/Pz8/i4eLb29vZ2drZ2tna2dra2trf3t/u7O/u7e/u7O/r6+vt7O/w7/Lw8PDy8fTz8fXz8fbx8fHz8/P19fb49/j49/n6+vuPxlmWyGOx437h9NDr9eD6/fj////+/v75/vTA5Jv6/fb7/fnL5bDL5q+AxjeDxUCEzTyGxUaGzjyHxkiHzz6J0D+Kxk6K0kCLyE2M00WNy06P00mSz1OUyF+W2FGX1FiY0F6Z02CZ21ac0Wiez2yfz2+f2mOh4GCi4GOi4WKi4mOk12+k3Wul32um1Hin0nun4G6n5Gin5Wmo23Op2Huq1n+q43Cr526s4Hit23+v6XSw34Cw34Gw6nWx4IKy4IOy44Cy63ez146z34az4IWz4YW03Y217nu38H2625e645G74pK83pu98Iq984W+4ZjA4px0tzDA5ZrB8ZDC5p7D55/E947F6KHF+JHH4qvH6qTI46/K5LLL5LN1tzLL5bN1uTDL57DM5bPM6qzM66/N5rTP6LbP6bTR6rfS573T67vT7LrV7r3X68XX7MHX773Y77/Y9rvZ8cHa7cjd88bi88/j8tTk8djk9tHm8trn89vo89zo9N3p9N3p9d7p9tvq9d/s+93s/dzy+erz+O73+vT4/PX5/fT5/fX5/vN1uzB3vTD6/ff6/fh5uTj8/fv9/vr9/vx8wjV/xDmrMRH0AAAAOXRSTlMAAAECAwQJDzk/RUlNU3F0kpSVlpeYmpucnaKjpKWqqqqtu8LExMTEzdTU1NXY4evy8vP+/v7+/v6LaR1mAAABD0lEQVR4XiXI03bEABAA0KltW9kaW3eSZW3btm3btm3b/q4mp/fxgqKOtpamhrqaqoqykrQYABh+PVMU9fjE5Xp8o54kgPHN0EBHU2N5YXZykiua0HHd2759VF2Sk5IYE5GGsmCEWLV1kVWwt5O+3x/qpgsy8k4ja+cJl2/v5C22tlgCAHtw9TQSa4s+AzfPSm0BRNl9SydhWJzLC567KrNhgrNwHIJ5qTz/2f9w7Jw/DNqIjVr04exW0AEOXcN3Ab7enr9eDW2VTJgehONyc2Z8XP5YdD0Tcuhcc4/r45OjGX51TEjYPbh8THRPvbz+CHusgSZlT7rP8PkCwfQKaQUi9Igr6JsRBMFiWZgb/AHKElRzKopZJQAAAABJRU5ErkJggg=='] + ['Osx', 'BAAAAAQCAMAAAAoLQ9TAAABrVBMVEUAAAD///////+qqqr///+ZmZn///+qqqqAgID///////+tra339/eAgICoqKjx8fGMjIzm5ubh4eGPj4/g4ODIyMiAgICSkpKLi4vS1tbPz8+Xl5eMjIypqanIyMjW1tZ2dnbR0dGamprFxcV3d3d+fn60tbV3d3dcXFx3d3epqal7fHxxcXF+foCnp6hYWFhyc3Ojo6SMjI5fX196enp+fn6Li4xERERqamqgoKFpaWmFhoeen6A/Pz9QUFCWlpeSk5SUlZWUlZaOjo+Tk5RHR0cuLi5YWFgwMDAeHh40NDQ3Nzc6OjpcXF1rbG0XFxdSU1NVVVVXV1dZWVlbW1tnZ2lwcHABAQEEBAQXFxchISI+P0BISUpaW1xHR0kNDg4qKyszNDU1NTY9Pj8NDQ1cXF4XFxhSU1QSEhIDAwMrKywtLS4uLi4wMDFHSElISEggISE0NDVJSktNTU1FRUVWVlhGRkYEBAVBQUE0NTZQUVJQUVMFBQUqKitWV1lXV1daWlpaWlw+Pj8bGxtcXV9dXV1fX19fYGFgYGBkZGRlZmhpaWlsbGxwcHB2dna844Y9AAAAV3RSTlMAAQIDAwUFBggMDhkeICMkKCgqMDIzPj9ERFBib4CCg4iMjZCcnp+jqamrw83W1tvb3ePl6Ojp6+vs7u7v8PHy9PT09PT3+vr7/f39/f39/v7+/v7+/v50ou7NAAAA30lEQVR4XkXIY3vDYABG4SepMdq2bRSz/capzdm2fvOuDO397Rw0Ly4tz2QAQPbcxuZ2E/STJwfxPhWgG355fRrVAIVb1zeP9UDLfiSwkAcADe8fn7tFxWuEXFRDoer/OgoMTRBCumj8yJwPBo8Zhpk14U856/HI8n0ZUtpZ1udrSzfVneA4roNKjdrwpcMRilb8d8G60+lKnrpWcn9bO+B23w2O8Tzfq4aiNSZJqzn5O4Kw16h06fPZ+VUlUHfo97+VAEb7rSh2UgDd4/U+TBlQY7FMj5gBIGvcarVVfQPVPTG94D0j9QAAAABJRU5ErkJggg=='] + ['Rhel', 'BAAAAAQCAMAAAAoLQ9TAAABj1BMVEUAAAD///////8AAAD///////8AAAD///8AAAD///////8AAAD///8AAAD+/v4AAAAAAAAAAAArKysAAAD///////8AAAAAAAAAAAAAAAD///8AAAAAAAAAAAD///8AAAD///8AAAAAAAAAAAAAAAB5eXn+/v5JSUnKysrS0tJ5eXmqqqqxsrL+/v4ZCgknJyeHh4eIiIjo6OgZCAdOTk7t7e3///8GCwwPAAArKyv19fX29vb9/f0EAAD////+/v4AAAAGBgYHAAAJAAAMAAANAQAPAQAVAQFyCQV9fX2pIRzmEQjn5+cBAAAFAAAAAADnEQjvEgn////uEQjyEgnsEQjzEgnxEgljBwPaEAj9EwnwEglHBQJHBQNNBQIBAAB3CQR5CQSHCgWLCgWRCgWTCwadDAWmDAapDAa/DgfKDwjWEAgGAADh4eHiEQjmEQjmEQkKAADoEQgLAQDtEQgMAQDuEQnvEQjvEQkPAQAfAgEuAwEvAwE8BAL1Egn3Egn4Egn6Egk+BAL+/v5CBQJrB0muAAAAT3RSTlMAAAMEBAkYGhsbMTRLUmpvcHeIjLe6vcHCxM3P0NbW3Ojp6u/w9ff5+fn6+vr6+/v7+/v8/Pz9/f39/f39/f7+/v7+/v7+/v7+/v7+/v7+Q8UoNAAAAO5JREFUeF4tiwVPA0EYRL9SXIsWl+LuxfcOd2Z3764quLu788NZNrxkksmbDP2R7vH6GioLs+iffEzNXd4+TqPErUUpVqMOvwgdzMPn1rv5vPsVeufBTaBK/bH2FPvkEUuIG5jIIc+sHYn/HJ3dC/Hxuo4y8s44dzwBbFkisHN8bVIdXs6jb+H97aCwbHEIqgcml64CD7YllNkAVQC940MLYe5YzvIeQAXNrd19Roc5MdzfdQLUUKaUYyuG9I8y1g4gj6hIak4X5cBIT2MquZJrJdOqpY11ZpAiqVwbY/C7KY1cRCrZxX4pWXVuiuq/hs49kg4OyP4AAAAASUVORK5CYII='] + ['Sabayon', 'BAAAAAQCAMAAAAoLQ9TAAABvFBMVEUAAAAcUaYdVKwAAAAAAAUABAwWRY4YSZYhZtIhaNYHDx0KCgoFDBcKCgoRMmYSNm0fXL0fXb8AAAAYS5gaTp8fXLwgXsEGBgYFBQUZSpgZTZ4JFSgODg4IEiIOJkwOKVIkW7EnXbQLGzUTExMKGC8LHjwMIkITExMiIiIPEBEPJ00QEhMXOXAaPncOJEgoXbApXbEcHBwwMDAEAgAfHRgQDgo3NC8AAAAHBwcKCgoLCwsJCQkaGhofHx8lJSUwMDA0NDQ4ODiRkZEICQocHBweHh4GBgYHCg8mJiYnJycpKSkrKystLS0uLi4ICAgODg43NzcRERF1dXUUFBSjo6O1tbUbGxsEBAMLGS8MDA0iIiIjIyMkJCQNDQ0NHTYKCQkoKCgPDw8QEBArMDkKCgkRERIREhMxMTEyMjISIz00Njk1NTU2NjYCAgIVFRU5OTo5P0c8PD0+Pj4/QURAQEBHR0dKSkpMTExSUlJiYmJlZWVnZ2cWFhZ2dnZ4eHh8fHx9fX2FhYUXFxeVlZWXl5eYmJiZmZmcnJwZGRmlpaWrq6usrKyvr68KFiq/v7/FxcXY2Nji4uLn5+ft7e0yif9uAAAAN3RSTlMAAAApKSkqKioqg4OEhISEhoa1tra3t7y9vr7S09PT09TU+Pj5+fn5+/v7+/v7+/v7/v7+/v7+70RY/wAAAPpJREFUeF4dyWNjw2AUBeC7dfYyorM6rx1exKltzLZt2/rDa/J8OgBVVlFDX39jcTZoUqCse251a2dvu6ccUtWlanLQ4Vpel+ThlWq1l3wEz58tx4dOt1dMlAJk9A5gMjG75LHwo46hzkwosGOMbejumoRvubC9EOrMviT0E0Us9fvN9dA6zxJCNv6+ECGsb6oNWsgmpZT9/UTUZo3Em6AW34guTL4jiAudiCM1kLcw8/SmHERfT1/eueBiDqR1GK1n9w+K8nglxYxd6QAML4ztXoQuj8YFgWcgqdJp8qzty26vaboCNIxBCshyQDKov0aXr29v1ufq1PwPx5Q7bCoh6eoAAAAASUVORK5CYII='] + ['Slackware', 'BAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AcEDi0qZWWDgAAAAx1JREFUOMt9kktoXHUchb/ffc1M7rySSdJMOknFPMRitLgoNKKI8ZHGKkgrjU8SitidimSh2UkXoQmoO1dGQSxJjdvOtqSaqlR0USEGSjVJGxuSmWR6M3fu4/93YX0g4rc9HA6cc4Q7DI+fpzz7PA8++2mxvZAeBZ4xhHtFcJRmXWsWvb36/OLcyxf5B/KHeYHy7DmGx1+YSDjmWTdlobTGMAStQGkNoLXS4tXDq7u7tUcWz49tA8jR8QUuzB5n5NTCV13F9JEo1JJwTLKuzU61QiOMcd0UDb+BncwQK3Rl15eNja3ui/Njq8aF2eMcO/XlBz0H8oO2ZUkum6A13WB99TtyzXlaCi24SaFa+ZFCzsG2DNnfkdbFjsI1APPhk+d6ujqznycdCxFozadYWvyMpx47wa+bPkGksKwUNnsk3TaCGASRXDZh5LpHXPPg4Rcni+3uYBxrtBbQghlscOVKmYHeEm0ZIZ9xyLffw41ND6VAa43SmjiMByzHYtjzwr9arfshxf5jOKlvKZfn8es77N2uks24PPfSFD/9Uvt7AtPKWmEU9d645eHYJo5tcKi/FX/zG+zmQxQH+rANk862DOW5N/hhaY64cJSa5xNFCgDDILZACMKYWAmh73HmzFsMlBQJ06LeiMinE1S3KzRCm5rXIIoUIoKIYCVM36urZFbEoiBLNMIhAE6/NsSB7h6SKZdL8xsUOnpx9j1KbTdARACIowArYe1ergfNT2i0mIbJys0GI6PT3N1/hJvrPxOFdRJNBQIy/FapI4Bpgohgcjuw+jq8jy8tV55MNBWI4ohS802CpizKv8q+FgALZAfYgSyAZtNro1oLaU1VvxCA029Oraxs7u/tKnXiNjn8HyKwur6lI++6vPK4V7IA7u+1Dyu1tr183ddNbkHuXP8/zEIYeFqiLRl6YO/p0bHJdflT/PD9qZa1W+ry99fcvlAlcZwUpuUAglIRYVgnDEIOlna4q0M/NPnuO1/PzMwg/045O/XeibUt5/Xangx6viSVFpK2jtMpvdyWCz+5ryf10clX3/amp6eZmJjgd441URWWJY8BAAAAAElFTkSuQmCC'] + ['Trisquel', 'BAAAAAQCAMAAAAoLQ9TAAABjFBMVEX///8AAAAAAAAAAAAAADMAAGYAAAAAHFUAGWYAF10AImYAIGAAHloAHGMAKGsAGmYAJmYAJGEAKnUAJ1gAMXYAJnEAJGQAI2EAK28AK3cAGTEAMHgALXEALXgALG0AFUAAI2oAK3EAMngANoYALXMANIAAM4IANIIAL3gANIcANokANoQANYQAOY0ANIYANooAN4kAN40AOY0APZMANIUAOY0AO5AAPZUAPJAAP5MAPpQAQJUAOYsAPpYANoUAPpoAPpUAM4AAQJkAPZIAPJEAQpgAN4cAPpQAPZUAPJEAO4oAOosAOo8AQJoAOYsAO44AQpsAO48AQp0AP5UAQpoARJwAQ58ARaAAQZgAQ54AQ50AQpgARaIARqMARaMARaIAR6QARaIARaEASakARKEAR6MASqsARKEASKcAR6MARqYAR6UATbEATa8ARqUARKAAR6oARqMASKgATK8AR6QATbIATbAASq0AR6cASKgASqwAR6UASKcATa8ASqoASqwAS6wASKoAS60ATbHn4CTpAAAAhHRSTlMAAQIFBQUGCQoLDxAREhMUFBUYGhobHB0eHh8gIiIjJCQkJCYoLC0xMTE0NDo6Oz1BQUNHSUxOVFVVVldaWl5iY2RkZWZoamtsb3FycnR1ent9f4KDhIiJioyNkJGYm5+foqOkpqamqKmqrKytsLKzs7e4uLy8v8TFxcXGx8rO0NXY2eZc4XYcAAAA00lEQVR4XkWN1VoCUQAG/3NWtwh7CTsQJOyk7BaDxuxA6bbrxf32gt25m7kZqDRYxziooDV7+1AalMUavQh2AsEZoWvzigLun+T17/c8QiJZ7qu2QKiNmyZthdcR1/as353jIeU1GxMHo5XHdqPFeX8IaDMdHPYN6dRN7LR4qQewdTa35HWkyh+fbxERAMjwlAWJv3CPSKDQ+H7XvHdkV4Pua3Gtm4sPKIF/WV8dop4VKBw/NU33B3x1JbTt+XwhkJQoqRfWvHOy28uqH8JIdomR/R+s9yR3Cso77AAAAABJRU5ErkJggg=='] + ['Ubuntu', 'BAAAAAQCAMAAAAoLQ9TAAABKVBMVEX////ojFzplGf1zbnqnHLvs5P10b3yuZv1xKrytZXvtJXys5LysI32waT0n3HxiVHwg0jxhk31kFn0h0zxf0P0hUrveTv2iU3yfkD1hEfyejv5eDLybSX0aR7zZxvyayH6ZxnxZBj4YhH7XAb5WALlUQLeTwHgUAHeTgHfTwD65NzdTQDdTQHdTgD31MfcTgLcTADcTQD////xt5/31Mf54dfmfE/dUAbeVQ/jcUDcTgHeWBnnflHohFvpjGbqkGztnX342Mz53dLgXiP65d399PHdUgrtoYLyu6Xzvaf76eLfXB/rkm/fWhvupojwrpTeVhTgYSfgYynzwa30xbL1ybnngFT31snngljhZS3539XhZzDiajbibDn77OX88Ovrl3X99vTjbz1fisGCAAAAMHRSTlMABgYGBwcHJiorMDA1NXGHjY2Nl5mZmZyfn6O5u8XHzc3X193j9fj4+vr6/f39/f08OUojAAAAx0lEQVR4Xi3HZVbDYBhGwQctWqzFPXiQ+36pu+LubvtfBKcN82/UEhld2vWXxyL6F92gbTPabse8hU/uHMx1SZoyyJWPTwq1Rs7GpYE9+Cg+OJcs1MHvU9y4fnrN31yUm18vMCIPjtw3QMndw4rs8ieVzAAcBlewpe1KM3uaBuD3Dda1BhWXAsi6AFY1a2SqifxZ+rnxWYcJDRkUS3fO1R5vwe+XZgw4D4L3RAJiknoXCVX3WeiUpJ5pIxTvVmg45pl5k4Ot/AGV2iqZBWgJJAAAAABJRU5ErkJggg=='] + ['Windows', 'BIAAAAQCAYAAAAbBi9cAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAA+pJREFUOE+F0n84FHYcB3CWSsL9ojo/6ik64c6PnTjmSS0limmrpBm2G002y++xzXRz6zE0R4nbw+RnTj/WD4sbanLkkAe55ccYlyNme4SrO9u9d13PI3/saZ+/vs/3831ez+f9eb5aWsuqy2mjRYeNUa7YmtjfTico7jNJ8z0eG24NB9vvnDrvufzpq89Npnr8VjMddNmuRh9rDfp36mFg91oM7qPIc5JdbDJq3An/JfCu7Hl53W2lpS220pP2OuniN299jAYbYizSENIoAgbCTdrTKtxOJVdvGo8psUwKy7Vxe4ez1YEVudGP8YEZzyveInFJ6mZRHHqYazDspw/pJwTIuERM5JIwmUdGdyo9K7/BszGzzg6fXzZHGJ8KvzQqXKOpoIeZLjofWR++BPWyCEnPY4xFGEKWQcLjMjKmr1MwfcMYwmz/Y4KOgNki0V5k1dkjUWCK93Kp2PMFFawos8cm1gZ2GqjLXktL4mbQPHLQ4B9ZDFE5+S356fQlyuJMqzH++HnTo6ui2OO1ko9Ul+4fxfd3d4F7k4YTReqpuFS88bGZUE2QNNDobuIq8Q5CduHb7lFJaTnvnym9ergjMWD/FG8zf+aKS3G9JO5C01Asah6wUXrvALKEDoitMMHhDKrKJdg8RU2s0EB2EWWur8dd7PDPFv6dUC0Gv3kAN36VPRGP/5k5NS6lljWxG0TDiSr1VKhoPwhevRMSqkwRxDObc/DavGtpP6zoi8XOyZfhnyNEvKANBU0P8VPfI/wyNCGXSn7wlEmyA9KrgmOKGth3eDVvPfyywq2dnUEv2R9qG2rLsH7xJXziKnWcI8tlTvEC7Mu8hROlImTU9aKqcwQ1vWOihWFu+sJknmph5CvxQh87c7bNh/NXo03hrMCosyvLmMNgMF7TQL6J1dsZIUVwjKqEO+cajp5vxPN439U/gKBt8PTcYHzL/BgHCyOf4unAISj6mFC2bYC82kB5Ls460NHRUVsDeYSXpGw7UgC7sAtwShDgzdM38W7BbURXtqpqhfmB8sEQuXwoCM/6faGQuGCxyxyKWhIm+PrSD495WL3cT0hhi8Whc3NbAs9KaOyCTvrJ8qkdX19XBeTUDU00+55USFzVU2yHstcaix0mUAjJkJeuRU868Ucmk0lcguiBnMAVxjbbdHV1yeq8+u4Hgo22huSG+iQXp83ftaxW3lsPZcs6KG5T8OwaAfJiPcxlrVRVRhvF02i0F/t5VbHZ7JWDfErKTLnhE3mFPuRFepg/uxqz6TqLv6euGj3ut87t/4ylvre3t3ZehOWWO1zjSFEqMVP4GfGb/DBykJcjmaZOoLsc+hcVY/LaAgcTQAAAAABJRU5ErkJggg=='] + ['OpenBSD', 'BAAAAAQCAYAAAFo9M/3AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AoYAykIPu64pQAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAADTklEQVQ4y32RXUxTdxjGn3N6eujoKT3SUkuk3VoBGfVjgFXAsZ7WkipyYXQbuu3CzUXZmGRbssnFEseFkWzgcGzGXky9MWL8TsC4IeFgtK4oAqOnG5vMVl1pCMVWQD7b/y5M6jLdflfvxfPked/nBQA0NDSChqnGVrLuGkES742NhJAdhAKAuk9yyUs5Gry7RQMZAARCWgivpQiPe71P5DUfH0xaqTL7m/iiLkJmphawa+e4SM2PvUyC4yUIBu8CnAQKAK53rCA5OUtQtStVpJ4Gw/FOBddZVKhCfq4MP4n6+at+DUsJm/e0G9JZzYEvI2tHwlEYjDxomkZ+3nG8WroRtHihZVOhVlorDQzh0okhcByDP4ZGcf+X9XAsvY5/RsBa7Kq5H/CqLctKyl/g08S2i6fq8W/MS3P34T9wNDVYSeDX1eTD9xhiLXbtB/Akwmmv6Kr+ICFkLpGhtNSM3qsSstS3oX8lSsmsxS6ZVn3j6PvVVqhUcvC8AtPxVPxwygVKvngN89WOjgVprggGA4eenjB4nsXsTASpC63I0wVTZYPR11FoKRB8Ax54PCFk6BhMTk5CPR3GSbHouGzknr/bYFq9EAvfc9Tu1sLjHcXNKxLuTOTgzOlOe7IHBc/beAXWpWmXlz8a84nhcLQ+ecVzsAEQrMWuMX+f9HZF2YPZ28FVSNfoPWqOzMUmqYMAJm7+/OOzXQFwHGpyEV+vi+yvtxBC9pDmpgJC4tvI3mo9GTitIxvW24nT7ug67HY/3eDs2bbyrVsrY2day70rV6kRfDAHk5lDLJqAmmeRiD9GJDKHvwb74R8G0mkTPjrQTTG122xkTTbwaV2b1H4u16JQKXGr7yG2b8/H1MQ09IsTSEmRwzf4CCwzD+dmE1re8CI7wwi5XNlFf9vaTXX4dWJg4LLl7h05fpNGwNAMWpp9CIVYNO/tRCzGwpDFQaVMQTS2CKY0BWr3GVGWNSXKACDDaA4Mh976pq9f5Sy09GgKlmeAMIBKzUKpU+BFoxJecRhUfAbMxDi4eADfHVmE79v7q575gvvYeVvjZ58LD5mwsKUyX0hnf0feslnQCWD4zxnc6reKisxsfH2oscqcmTmK/+Ow252cna7K52r+Bky6PqmoT5HBAAAAAElFTkSuQmCC'] + ['Gnu', 'BAAAAAQCAYAAAFo9M/3AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AoYAywUV5gQrwAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAADcElEQVQ4y43Tb0jjBRzH8c9v+7nNMebcUW21Cc78g/wcuhByIScoMRwoTBmFlZCmIJ14axqkgoYIkXIqKIVBEuJNUBEUPRlpqDC3Q2Ex0nTezun2YOaPLXNIv7Vvj7zgiOj1+PPk/eADjuNEuHN6ekqMw+H4IzMz8xChUCjV1NT0JbO7uxtfXFy8NZvNr21tbd0AAEQikY6I0m1tbQbx2NjYZiqV+vn29jY+PDw8xhYWFj45PDzcb25uhlQqfSTief6X0dFRpqKigvF4PPPipaWlY7lcXhCLxXJnZmY+ZTY2NnzX19ePGxsbHw0MDLivrq5mc3Jy2pPJZLVWq/2cdbvdDSzLholoNJ1OMy6Xq0Ymk5HNZktOTU29qMgA8HYqlaKDgwNKp9M0PT09BgAM/iGuqqoimUx2yPP8U5/P9wEAMB0dHRUKheJHiUTyeGhoqAUAnE7nR0qlsjcQCLwjlsvlz+bm5mQWi0VSWlr6bXV1tU6hUMj6+/vfN5lMN0xxcfG1zWZ7SETTSqWSGhoamPHxcajV6s+8Xu9Xou7u7t9VKtW00+mkSCTC6PV6aDQa8Dw/Wl9fP8UAQCgUosvLSyovL2eWl5dRUFBw7Ha7v9vc3By5K3g1EAg8FQSBiIguLi4IgBwA2LtEjuPuJxKJ62AwKFpdXf0eQBIvYVmW/cLlchEAWK1WAADT09NzX6PR/OTz+eKVlZUzKpVqTyqVvsnzfLCkpGSrtrb2t97eXnFeXl5ZKpWyZ2RkPPP7/UUnJyefGI3GU+zt7aU4jotOTk7mAUBfX1+b1Wq9kcvlBIAcDgctLCyQxWKhoqIi6uzs/BoAVlZW3qqpqbllZmdnf1hfX//Q4/HEzWbzX+3t7fcMBgMFg0EYjUYmEolAEAREo1Hk5+fT+fk5Mzg4GD86OpJ0dXXJGQBoaWl5Ra/XP6yrq3tQVlam2N7ehslkAsuySCaTUKvVSCQS2NnZSXAcJxYEQTEyMvKeIAhLDADY7fZ7BoPhm6ysLFpbWzuan5//WKvVvsHzPEWjUSYSiSA3N5d0Oh0TjUaf+/1+S2Nj46/4FwYAr7e2tnbF4/E/iYjC4TCFw+F0LBaj/f19mpiYeID/IAagAyABYLXb7cLZ2Rml02nyer3POY6rwv8hEr34u0IkEk1mZ2cTgGMA7768/RtL5JKsGzrLIgAAAABJRU5ErkJggg=='] + ['CrunchBang', 'BYAAAAQCAQAAAC45EetAAAA8ElEQVR4XnWOsUpCYQBGz1TIHYu2Qix6g0DEtSeQu/UIISJtUS8gJq61F1wcdMohcBDxKUR8hsz1xA/y44/cs3znbB+RJ0Skl3pSkeFQbUs79VAPzrwPFRmN1Ja0Ug/16I93+1oi4lKte+zMXv32WuoAm43lXMrqzbFncgWw21lORf4+/PREKpAhYqZuPXZ+T/3yXbZEajV1JavUQ104sRcq0myqc5mnHurWqc/7yhExVwuPncl+C4Bu13L60ueAwcByOtLhgAIRCzU38fRGTmSxUBvSSD3Ui1NvQkXWa7Uq1dRD9R17HiqyRUSy1NP6B7e1Yu2GtlUKAAAAAElFTkSuQmCC'] + ['Yuno', 'BgAAAAPCAYAAAD+pA/bAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAABDtJREFUOE+FlHtMm1UYxrtsi8aEgCb+oTFmZur+WNS5RaPERU10C2qGaBgb6hgwLwMmHTIKlIKlQIHSQrmU24BSSmnpBVooUmihtEC5yKWDjVu5uOkcEca4lG5E93j6EQmELX7Jky/fOed9fu973vMdGu0xT3Cgz57yXMZLDdXcy821PFWLKmuA6HqLMqtLX5POl4iYb2ukWW8IOOFe/qfe3/M4n0eOjwyZD8//bldODOk37N1yDJgl+LVdjEGLFKO9KkzZm8hbje7mIrTXZ7sMtTydrJh15H8hHW11XvN/jGS7VudcD5w34ZZzeQYb67fwYO03LN4exo1+LWzNxbA05O5QuzbHqRYn+++CHDx4YK9WLfaedfQzV5em54g5Zbi8OIml+VFMDLWQ7GXoaSmFWZsDZVGCO2u0EbkhHTrhFqi9PmelSsQ8tAtSVch60dpUeGe4kxgZxegzVkBzlQ2NKBG2+iJIMqMok9r8OLRIMqApToSqmAWTmk9B2+o2YW79oshU7ABcuvAFrVGWXkVKpBYoSaBSxIS2mINpiwbjZiUMZRloVfJQyaXDKObBpimBScpHFe8KmmXpaKhK3arGrBVuVBclHN2CiPNin1OVs1tVJYlQlyZBxA6DviQVo6ZaOKd7sTplw53BVugruBBzfsRslw7rZPxaczWutSpQV/gzJPxo1JexyfaxKBBpuiEx+tw+CpKdEvGWTprGlhcwqbIzL5/DYKMYndpK3L1hxf3ZfkrzwybUZjPhnOqmvlcmutFF1jis9QSShOrcWNSXJ1MA0ou/NZWc8Ddfe4VGO3bk0JON1dyMMlK+gmxNrZCFhZF2Kng7YNO0awt4b7wLNp2EqtAsF6ImP56SG0B6siovTYpIjg15gapCVhAfJRUyIBFEo6k8AyuTtkcC/qvG/XbDexulWJvqgYH0o0nKhVHFJ40XwFQnWM5OCX+XMg86c3KvVMSMapCmPpSTIygTxGKZZOcOXhrr3Mp4uzkFuG6B3ajE3TELDDU8qEmsmvRATxquKkxAnSTFjwKEfv3JU9JC5unG6rQ1bTkbQ4Yq/DVgxOqwBWt2K9Yne3ZCZvrgHO2k5paHzOhSiVCZSkdNTgzy40JRlPgDhDHBCxUZdCs91G8fLeK87zOl6XSOICZYXMGNhDqX9fDP/mbK2DXVi/szm03eLpejl5pzOfqwOt4JBT8OeYwQt/4R/BR0OzXiLCM5LOCji/4nXt46rpywgG+zor5RxgSdupBzJdglSY+5ZZbl3XNY6mbn7W0Lcx06zBg1WBjtcC6OmG+OmRTrFrnIUZESZeVeCpwh8TpiPsQ47/tloM97T+/6m8mg55mT3tStyL54mhlwwtszNvjzD8/6HH8i7PvvPPRioZdRWuDBZUR6pEWG7I8P9Xs1Jsj36MfvvO5J/+rTw58dP7afJPfBgeef3XGz/gskFVpJc4HwGwAAAABJRU5ErkJggg=='] + ] + + Banner = init: -> $.asap (-> doc), -> @@ -186,10 +517,14 @@ Rice = init: -> $.ready -> Rice.nodes d.body + + Post::callbacks.push + name: 'Rice Checkboxes' + cb: @node checkclick: -> @check.click() - + selectclick: -> e.stopPropagation() if Rice.ul @@ -244,7 +579,7 @@ Rice = return node: -> - Rice.checkbox $ '.postInfo input', @ + Rice.checkbox $ '.postInfo input', @el checkbox: (input) -> return if $.hasClass input, 'riced' @@ -254,13 +589,1174 @@ Rice = div.check = input $.after input, div if div.parentElement.tagName.toLowerCase() != 'label' - $.on div, 'click', Rice.click + $.on div, 'click', Rice.checkclick select: (input) -> $.addClass input, 'riced' div = $.el 'div', className: 'selectrice' innerHTML: "
#{input.options[input.selectedIndex].textContent or null}
" - $.on div, "click", (e), - + $.on div, "click", (e) -> + Rice.selectclick + $.after input, div + +### + JSColor + http://github.com/hotchpotch/jscolor/tree/master + + JSColor is color library for JavaScript. + JSColor code is porting from AS3 Color library ColorSB < http://sketchbook.libspark.org/trac/wiki/ColorSB >. +### + +JSColor = + css: -> + agent = Style.agent + """<%= grunt.file.read('css/jscolor.css') %>""" + + bind: (el) -> + el.color = new JSColor.color(el) if not el.color + + fetchElement: (mixed) -> + if typeof mixed is "string" then $.id mixed else mixed + + fireEvent: (el, evnt) -> + return unless el + + ev = document.createEvent 'HTMLEvents' + ev.initEvent evnt, true, true + el.dispatchEvent ev + + getRelMousePos: (e = window.event) -> + x = 0 + y = 0 + if typeof e.offsetX is 'number' + x = e.offsetX + y = e.offsetY + else if typeof e.layerX is 'number' + x = e.layerX + y = e.layerY + x: x + y: y + + color: (target) -> + # Read Only + @hsv = [0, 0, 1] # 0-6, 0-1, 0-1 + @rgb = [1, 1, 1] # 0-1, 0-1, 0-1 + + # Writable. + # Value holder / Where to reflect current color + @valueElement = @styleElement = target + + # Blur / Drag trackers + abortBlur = holdPad = holdSld = false + + @hidePicker = -> + if isPickerOwner() then removePicker() + + @showPicker = -> + unless isPickerOwner() then drawPicker() + + @importColor = -> + unless valueElement + @exportColor() + else + unless @fromString valueElement.value, leaveValue + styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor + @exportColor leaveValue | leaveStyle + + @exportColor = (flags) -> + if !(flags & leaveValue) and valueElement + value = '#' + @toString() + valueElement.value = value + valueElement.previousSibling.value = value + editTheme[valueElement.previousSibling.name] = value + + setTimeout -> Style.themeCSS.textContent = Style.theme editTheme + + if not (flags & leaveStyle) and styleElement + styleElement.style.backgroundColor = '#' + @toString() + + if not (flags & leavePad) and isPickerOwner() + redrawPad() + + if not (flags & leaveSld) and isPickerOwner() + redrawSld() + + @fromHSV = (h, s, v, flags) -> # null = don't change + @hsv = [ + h = + if h + $.minmax h, 0.0, 6.0 + else + @hsv[0] + s = + if s + $.minmax s, 0.0, 1.0 + else + @hsv[1] + v = + if v + $.minmax v, 0.0, 1.0 + else + @hsv[2] + ] + + @rgb = HSV_RGB(h, s, v) + + @exportColor flags + + @fromRGB = (r, g, b, flags) -> # null = don't change + r = + if r? + $.minmax r, 0.0, 1.0 + else + @rgb[0] + g = + if g? + $.minmax g, 0.0, 1.0 + else + @rgb[1] + b = + if b? + $.minmax b, 0.0, 1.0 + else + @rgb[2] + + hsv = RGB_HSV(r, g, b) + + if hsv[0]? + @hsv[0] = $.minmax hsv[0], 0.0, 6.0 + + if hsv[2] isnt 0 + @hsv[1] = + unless hsv[1]? + null + else + $.minmax hsv[1], 0.0, 1.0 + + @hsv[2] = + unless hsv[2]? + null + else + $.minmax hsv[2], 0.0, 1.0 + + # update RGB according to final HSV, as some values might be trimmed + @rgb = HSV_RGB @hsv[0], @hsv[1], @hsv[2] + + @exportColor flags + + @fromString = (number, flags) -> + m = number.match /^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i + unless m + return false + else + if m[1].length is 6 # 6-char notation + @fromRGB( + parseInt(m[1].substr(0, 2), 16) / 255 + parseInt(m[1].substr(2, 2), 16) / 255 + parseInt(m[1].substr(4, 2), 16) / 255 + flags + ) + else # 3-char notation + @fromRGB( + # Double-up each character to fake 6-char notation. + parseInt((val = m[1].charAt 0) + val, 16) / 255 + parseInt((val = m[1].charAt 1) + val, 16) / 255 + parseInt((val = m[1].charAt 2) + val, 16) / 255 + flags + ) + true + + @toString = -> + (0x100 | Math.round(255 * @rgb[0])).toString(16).substr(1) + + (0x100 | Math.round(255 * @rgb[1])).toString(16).substr(1) + + (0x100 | Math.round(255 * @rgb[2])).toString(16).substr(1) + + RGB_HSV = (r, g, b) -> + n = if (n = if r < g then r else g) < b then n else b + v = if (v = if r > g then r else g) > b then v else b + m = v - n + + return [ null, 0, v ] if m is 0 + + h = + if r is n + 3 + (b - g) / m + else + if g is n + 5 + (r - b) / m + else + 1 + (g - r) / m + [ + if h is 6 then 0 else h + m / v + v + ] + + HSV_RGB = (h, s, v) -> + + return [ v, v, v ] unless h? + + i = Math.floor(h) + f = + if i % 2 + h - i + else + 1 - (h - i) + m = v * (1 - s) + n = v * (1 - s * f) + + switch i + when 6, 0 + [v,n,m] + when 1 + [n,v,m] + when 2 + [m,v,n] + when 3 + [m,n,v] + when 4 + [n,m,v] + when 5 + [v,m,n] + + removePicker = -> + delete JSColor.picker.owner + $.rm JSColor.picker.boxB + + drawPicker = (x, y) -> + unless p = JSColor.picker + elements = ['box', 'boxB', 'pad', 'padB', 'padM', 'sld', 'sldB', 'sldM', 'btn'] + p = {} + for item in elements + p[item] = $.el 'div', {className: "jsc#{item.capitalize()}"} + + p.btnS = $.el 'span', {className: 'jscBtnS'} + p.btnT = $.tn 'Close' + + JSColor.picker = p + + $.add p.box, [p.sldB, p.sldM, p.padB, p.padM, p.btn] + $.add p.sldB, p.sld + $.add p.padB, p.pad + $.add p.btnS, p.btnT + $.add p.btn, p.btnS + $.add p.boxB, p.box + + # controls interaction + {box, boxB, btn, btnS, pad, padB, padM, sld, sldB, sldM} = p + box.onmouseup = + box.onmouseout = -> target.focus() + box.onmousedown = -> abortBlur=true + box.onmousemove = (e) -> + if holdPad or holdSld + holdPad and setPad e + holdSld and setSld e + + if d.selection + d.selection.empty() + else if window.getSelection + window.getSelection().removeAllRanges() + + padM.onmouseup = + padM.onmouseout = -> if holdPad + holdPad = false + JSColor.fireEvent valueElement, 'change' + padM.onmousedown = (e) -> + # If the slider is at the bottom, move it up + + if THIS.hsv[2] is 0 + THIS.fromHSV null, null, 1.0 + + holdPad = true + setPad e + + sldM.onmouseup = + sldM.onmouseout = -> if holdSld + holdSld = false + JSColor.fireEvent valueElement, 'change' + sldM.onmousedown = (e) -> + holdSld = true + setSld e + + btn.onmousedown = -> + THIS.hidePicker() + + # place pointers + redrawPad() + redrawSld() + + JSColor.picker.owner = THIS + $.add ThemeTools.dialog, p.boxB + + # redraw the pad pointer + redrawPad = -> + # The X and Y positions of the picker crosshair, based on the hsv Hue and Saturation values as percentages and the picker's dimensions. + JSColor.picker.padM.style.backgroundPosition = + "#{4 + Math.round (THIS.hsv[0] / 6) * 180}px #{4 + Math.round (1 - THIS.hsv[1]) * 100}px" + + rgb = HSV_RGB(THIS.hsv[0], THIS.hsv[1], 1) + JSColor.picker.sld.style.backgroundColor = "rgb(#{rgb[0] * 100}%, #{rgb[1] * 100}%, #{rgb[2] * 100}%)" + + return + + redrawSld = -> + # redraw the slider pointer. X will always be 0, Y will always be a percentage of the HSV 'Value' value. + JSColor.picker.sldM.style.backgroundPosition = + "0 #{6 + Math.round (1 - THIS.hsv[2]) * 100}px" + + + isPickerOwner = -> + return JSColor.picker and JSColor.picker.owner is THIS + + blurTarget = -> + if valueElement is target + THIS.importColor() + + blurValue = -> + if valueElement isnt target + THIS.importColor() + + setPad = (e) -> + mpos = JSColor.getRelMousePos e + x = mpos.x - 11 + y = mpos.y - 11 + THIS.fromHSV( + x * (1 / 30) + 1 - y / 100 + null + leaveSld + ) + + setSld = (e) -> + mpos = JSColor.getRelMousePos e + y = mpos.y - 9 + THIS.fromHSV( + null + null + 1 - y / 100 + leavePad + ) + + THIS = @ + valueElement = JSColor.fetchElement @valueElement + styleElement = JSColor.fetchElement @styleElement + leaveValue = 1 << 0 + leaveStyle = 1 << 1 + leavePad = 1 << 2 + leaveSld = 1 << 3 + + # target + $.on target, 'focus', -> + THIS.showPicker() + + $.on target, 'blur', -> + unless abortBlur + window.setTimeout(-> + abortBlur or blurTarget() + abortBlur = false + ) + else + abortBlur = false + + # valueElement + if valueElement + $.on valueElement, 'keyup input', -> + THIS.fromString valueElement.value, leaveValue + + $.on valueElement, 'blur', blurValue + + valueElement.setAttribute 'autocomplete', 'off' + + # styleElement + if styleElement + styleElement.jscStyle = + backgroundColor: styleElement.style.backgroundColor + + @importColor() + +MascotTools = + init: (mascot = Conf[g.MASCOTSTRING][Math.floor(Math.random() * Conf[g.MASCOTSTRING].length)]) -> + + Conf['mascot'] = mascot + @el = el = $('#mascot img', d.body) + + if !Conf['Mascots'] or (g.CATALOG and Conf['Hide Mascots on Catalog']) + return if el then el.src = "" else null + + position = "#{if Conf['Mascot Position'] is 'bottom' or !(Conf['Mascot Position'] is "default" and Conf['Post Form Style'] is "fixed") + 0 + (if (!g.REPLY or Conf['Boards Navigation'] is 'sticky bottom') and Conf['4chan SS Navigation'] then 1.6 else 0) + else + 20.3 + (if !g.REPLY or !!$ '#postForm input[name=spoiler]' then 1.4 else 0) + (if Conf['Show Post Form Header'] then 1.5 else 0) + (if Conf['Post Form Decorations'] then 0.2 else 0) + }em" + + # If we're editting anything, let's not change mascots any time we change a value. + if Conf['editMode'] + unless mascot = editMascot or mascot = Mascots[Conf["mascot"]] + return + + else + unless Conf["mascot"] + return if el then el.src = "" else null + + unless mascot = Mascots[Conf["mascot"]] + Conf[g.MASCOTSTRING].remove Conf["mascot"] + return @init() + + @addMascot mascot + + if Conf["Sidebar Location"] is 'left' + if Conf["Mascot Location"] is "sidebar" + location = 'left' + else + location = 'right' + else if Conf["Mascot Location"] is "sidebar" + location = 'right' + else + location = 'left' + + filters = [] + + if Conf["Grayscale Mascots"] + filters.push '' + + Style.mascot.textContent = """ +#mascot img { + position: fixed; + z-index: #{ + if Conf['Mascots Overlap Posts'] + '3' + else + '-1' + }; + #{if Style.sidebarLocation[0] is "left" then "#{Style.agent}transform: scaleX(-1);" else ""} + bottom: #{ + if mascot.position is 'top' + 'auto' + else if (mascot.position is 'bottom' and Conf['Mascot Position'] is 'default') or !$.id 'postForm' + '0' + else + position + }; + #{location}: #{ + (mascot.hOffset or 0) + ( + if Conf['Sidebar'] is 'large' and mascot.center + 25 + else + 0 + ) + }px; + top: #{ + if mascot.position is 'top' + '0' + else + 'auto' + }; + height: #{ + if mascot.height and isNaN parseFloat mascot.height + mascot.height + else if mascot.height + parseInt(mascot.height, 10) + 'px' + else + 'auto' + }; + width: #{ + if mascot.width and isNaN parseFloat mascot.width + mascot.width + else if mascot.width + parseInt(mascot.width, 10) + 'px' + else + 'auto' + }; + margin-#{location}: #{mascot.hOffset or 0}px; + margin-bottom: #{mascot.vOffset or 0}px; + opacity: #{Conf['Mascot Opacity']}; + pointer-events: none; + #{if filters.length > 0 then "filter: url('data:image/svg+xml," + filters.join("") + "#filters');" else ""} +} +""" + + categories: [ + 'Anime' + 'Ponies' + 'Questionable' + 'Silhouette' + 'Western' + ] + + dialog: (key) -> + Conf['editMode'] = 'mascot' + if Mascots[key] + editMascot = JSON.parse(JSON.stringify(Mascots[key])) + else + editMascot = {} + editMascot.name = key or '' + MascotTools.addMascot editMascot + Style.addStyle() + layout = + name: [ + "Mascot Name" + "" + "text" + ] + image: [ + "Image" + "" + "text" + ] + category: [ + "Category" + MascotTools.categories[0] + "select" + MascotTools.categories + ] + position: [ + "Position" + "default" + "select" + ["default", "top", "bottom"] + ] + height: [ + "Height" + "auto" + "text" + ] + width: [ + "Width" + "auto" + "text" + ] + vOffset: [ + "Vertical Offset" + "0" + "number" + ] + hOffset: [ + "Horizontal Offset" + "0" + "number" + ] + center: [ + "Center Mascot" + false + "checkbox" + ] + + dialog = $.el "div", + id: "mascotConf" + className: "reply dialog" + innerHTML: " +
+
+
+
+
+ +
+ Close +
+" + for name, item of layout + + switch item[2] + + when "text" + div = @input item, name + input = $ 'input', div + + if name is 'image' + + $.on input, 'blur', -> + editMascot[@name] = @value + MascotTools.addMascot editMascot + Style.addStyle() + + fileInput = $.el 'input', + type: "file" + accept: "image/*" + title: "imagefile" + hidden: "hidden" + + $.on input, 'click', (evt) -> + if evt.shiftKey + @.nextSibling.click() + + $.on fileInput, 'change', (evt) -> + MascotTools.uploadImage evt, @ + + $.after input, fileInput + + if name is 'name' + + $.on input, 'blur', -> + @value = @value.replace /[^a-z-_0-9]/ig, "_" + unless /^[a-z]/i.test @value + return alert "Mascot names must start with a letter." + editMascot[@name] = @value + MascotTools.addMascot editMascot + Style.addStyle() + + else + + $.on input, 'blur', -> + editMascot[@name] = @value + MascotTools.addMascot editMascot + Style.addStyle() + + when "number" + div = @input item, name + $.on $('input', div), 'blur', -> + editMascot[@name] = parseInt @value + MascotTools.addMascot editMascot + Style.addStyle() + + when "select" + value = editMascot[name] or item[1] + optionHTML = "
#{item[0]}
" + div = $.el 'div', + className: "mascotvar" + innerHTML: optionHTML + setting = $ "select", div + setting.value = value + + $.on $('select', div), 'change', -> + editMascot[@name] = @value + MascotTools.addMascot editMascot + Style.addStyle() + + when "checkbox" + value = editMascot[name] or item[1] + div = $.el "div", + className: "mascotvar" + innerHTML: "" + $.on $('input', div), 'click', -> + editMascot[@name] = if @checked then true else false + MascotTools.addMascot editMascot + Style.addStyle() + + $.add $("#mascotcontent", dialog), div + + $.on $('#save > a', dialog), 'click', -> + MascotTools.save editMascot + + $.on $('#close > a', dialog), 'click', MascotTools.close + Style.rice(dialog) + $.add d.body, dialog + + input: (item, name) -> + if Array.isArray(editMascot[name]) + if Style.lightTheme + value = editMascot[name][1] + else + value = editMascot[name][0] + else + value = editMascot[name] or item[1] + + editMascot[name] = value + + div = $.el "div", + className: "mascotvar" + innerHTML: "
#{item[0]}
" + + return div + + uploadImage: (evt, el) -> + file = evt.target.files[0] + reader = new FileReader() + + reader.onload = (evt) -> + val = evt.target.result + + el.previousSibling.value = val + editMascot.image = val + Style.addStyle() + + reader.readAsDataURL file + + addMascot: (mascot) -> + if el = @el + el.src = if Array.isArray(mascot.image) then (if Style.lightTheme then mascot.image[1] else mascot.image[0]) else mascot.image + else + @el = el = $.el 'div', + id: "mascot" + innerHTML: "" + + $.add d.body, el + + save: (mascot) -> + {name, image} = mascot + if !name? or name is "" + alert "Please name your mascot." + return + + if !image? or image is "" + alert "Your mascot must contain an image." + return + + unless mascot.category + mascot.category = MascotTools.categories[0] + + if Mascots[name] + + if Conf["Deleted Mascots"].contains name + Conf["Deleted Mascots"].remove name + $.set "Deleted Mascots", Conf["Deleted Mascots"] + + else + if confirm "A mascot named \"#{name}\" already exists. Would you like to over-write?" + delete Mascots[name] + else + return alert "Creation of \"#{name}\" aborted." + + for type in ["Enabled Mascots", "Enabled Mascots sfw", "Enabled Mascots nsfw"] + unless Conf[type].contains name + Conf[type].push name + $.set type, Conf[type] + Mascots[name] = JSON.parse(JSON.stringify(mascot)) + Conf["mascot"] = name + delete Mascots[name].name + userMascots = $.get "userMascots", {} + userMascots[name] = Mascots[name] + $.set 'userMascots', userMascots + alert "Mascot \"#{name}\" saved." + + close: -> + Conf['editMode'] = false + editMascot = {} + $.rm $("#mascotConf", d.body) + Style.addStyle() + Options.dialog("mascot") + + importMascot: (evt) -> + file = evt.target.files[0] + reader = new FileReader() + + reader.onload = (e) -> + + try + imported = JSON.parse e.target.result + catch err + alert err + return + + unless (imported["Mascot"]) + alert "Mascot file is invalid." + + name = imported["Mascot"] + delete imported["Mascot"] + + if Mascots[name] and not Conf["Deleted Mascots"].remove name + unless confirm "A mascot with this name already exists. Would you like to over-write?" + return + + Mascots[name] = imported + + userMascots = $.get "userMascots", {} + userMascots[name] = Mascots[name] + $.set 'userMascots', userMascots + + alert "Mascot \"#{name}\" imported!" + $.rm $("#mascotContainer", d.body) + Options.mascotTab.dialog() + + reader.readAsText(file) + +### + Style.color adapted from 4chan Style Script +### + +ThemeTools = + init: (key) -> + Conf['editMode'] = "theme" + + if Themes[key] + editTheme = JSON.parse(JSON.stringify(Themes[key])) + if ($.get "userThemes", {})[key] + editTheme["Theme"] = key + else + editTheme["Theme"] = key += " [custom]" + else + editTheme = JSON.parse(JSON.stringify(Themes['Yotsuba B'])) + editTheme["Theme"] = "Untitled" + editTheme["Author"] = "Author" + editTheme["Author Tripcode"] = "Unknown" + + # Objects are not guaranteed to have any type of arrangement, so we use a presorted + # array to generate the layout of of the theme editor. + # (Themes aren't even guaranteed to have any of these values, actually) + layout = [ + "Background Image" + "Background Attachment" + "Background Position" + "Background Repeat" + "Background Color" + "Thread Wrapper Background" + "Thread Wrapper Border" + "Dialog Background" + "Dialog Border" + "Reply Background" + "Reply Border" + "Highlighted Reply Background" + "Highlighted Reply Border" + "Backlinked Reply Outline" + "Input Background" + "Input Border" + "Hovered Input Background" + "Hovered Input Border" + "Focused Input Background" + "Focused Input Border" + "Checkbox Background" + "Checkbox Border" + "Checkbox Checked Background" + "Buttons Background" + "Buttons Border" + "Navigation Background" + "Navigation Border" + "Links" + "Hovered Links" + "Quotelinks" + "Backlinks" + "Navigation Links" + "Hovered Navigation Links" + "Names" + "Tripcodes" + "Emails" + "Subjects" + "Text" + "Inputs" + "Post Numbers" + "Greentext" + "Sage" + "Board Title" + "Timestamps" + "Warnings" + "Shadow Color" + ] + + ThemeTools.dialog = $.el "div", + id: "themeConf" + className: "reply dialog" + innerHTML: " +
+
+
+
+
+
+ Save +
+ +
+ Close +
+" + + header = $.el "div", + innerHTML: " + by + +" + + #Setup inputs that are not generated from the layout variable. + for input in $$("input", header) + $.on input, 'blur', -> + editTheme[@name] = @value + $.add $("#themebar", ThemeTools.dialog), header + themecontent = $("#themecontent", ThemeTools.dialog) + + for item in layout + unless editTheme[item] + editTheme[item] = '' + + div = $.el "div", + className: "themevar" + innerHTML: "
#{item}
" + + input = $('input', div) + + input.value = editTheme[item] + + switch item + when "Background Image" + input.className = 'field' + fileInput = $.el 'input', + type: 'file' + accept: "image/*" + title: "BG Image" + hidden: "hidden" + + $.on input, 'click', (evt) -> + if evt.shiftKey + @nextSibling.click() + + $.on fileInput, 'change', (evt) -> + ThemeTools.uploadImage evt, @ + + $.after input, fileInput + + when "Background Attachment" ,"Background Position", "Background Repeat" + input.className = 'field' + + else + input.className = "colorfield" + + colorInput = $.el 'input', + className: 'color' + value: "##{Style.colorToHex input.value}" + + JSColor.bind colorInput + + $.after input, colorInput + + $.on input, 'blur', -> + depth = 0 + + unless @value.length > 1000 + for i in [0..@value.length - 1] + switch @value[i] + when '(' then depth++ + when ')' then depth-- + when '"' then toggle1 = not toggle1 + when "'" then toggle2 = not toggle2 + + if depth != 0 or toggle1 or toggle2 + return alert "Syntax error on #{@name}." + + if @className == "colorfield" + @nextSibling.value = "##{Style.colorToHex @value}" + @nextSibling.color.importColor() + + editTheme[@name] = @value + + Style.addStyle(editTheme) + + $.add themecontent, div + + $.add themecontent, div + + unless editTheme["Custom CSS"] + editTheme["Custom CSS"] = "" + + div = $.el "div", + className: "themevar" + innerHTML: "
Custom CSS
" + + $.on $('textarea', div), 'blur', -> + editTheme["Custom CSS"] = @value + Style.themeCSS.textContent = Style.theme editTheme + + $.add themecontent, div + + $.on $('#save > a', ThemeTools.dialog), 'click', -> + ThemeTools.save editTheme + + $.on $('#close > a', ThemeTools.dialog), 'click', ThemeTools.close + $.add d.body, ThemeTools.dialog + Style.themeCSS.textContent = Style.theme editTheme + + uploadImage: (evt, el) -> + file = evt.target.files[0] + reader = new FileReader() + + reader.onload = (evt) -> + val = 'url("' + evt.target.result + '")' + + el.previousSibling.value = val + editTheme["Background Image"] = val + Style.themeCSS.textContent = Style.theme editTheme + + reader.readAsDataURL file + + importtheme: (origin, evt) -> + file = evt.target.files[0] + reader = new FileReader() + + reader.onload = (e) -> + + try + imported = JSON.parse e.target.result + catch err + alert err + return + + unless (origin != 'appchan' and imported.mainColor) or (origin == 'appchan' and imported["Author Tripcode"]) + alert "Theme file is invalid." + return + name = imported.name or imported["Theme"] + delete imported.name + + if Themes[name] and not Themes[name]["Deleted"] + if confirm "A theme with this name already exists. Would you like to over-write?" + delete Themes[name] + else + return + + if origin == "oneechan" or origin == "SS" + bgColor = new Style.color(imported.bgColor); + mainColor = new Style.color(imported.mainColor); + brderColor = new Style.color(imported.brderColor); + inputColor = new Style.color(imported.inputColor); + inputbColor = new Style.color(imported.inputbColor); + blinkColor = new Style.color(imported.blinkColor); + jlinkColor = new Style.color(imported.jlinkColor); + linkColor = new Style.color(imported.linkColor); + linkHColor = new Style.color(imported.linkHColor); + nameColor = new Style.color(imported.nameColor); + quoteColor = new Style.color(imported.quoteColor); + sageColor = new Style.color(imported.sageColor); + textColor = new Style.color(imported.textColor); + titleColor = new Style.color(imported.titleColor); + tripColor = new Style.color(imported.tripColor); + timeColor = new Style.color(imported.timeColor || imported.textColor); + + if imported.bgRPA + bgRPA = imported.bgRPA.split(' ') + else + bgRPA = ['no-repeat', 'bottom', 'left', 'fixed'] + + if origin == "oneechan" + Themes[name] = { + 'Author' : "Anonymous" + 'Author Tripcode' : "!POMF.9waa" + 'Background Image' : 'url("' + (imported.bgImg or '') + '")' + 'Background Attachment' : bgRPA[3] or '' + 'Background Position' : ((bgRPA[1] + " ") or '') + (bgRPA[2] or '') + 'Background Repeat' : bgRPA[0] or '' + 'Background Color' : 'rgb(' + bgColor.rgb + ')' + 'Dialog Background' : 'rgba(' + mainColor.rgb + ',.98)' + 'Dialog Border' : 'rgb(' + brderColor.rgb + ')' + 'Thread Wrapper Background' : 'rgba(0,0,0,0)' + 'Thread Wrapper Border' : 'rgba(0,0,0,0)' + 'Reply Background' : 'rgba(' + mainColor.rgb + ',' + imported.replyOp + ')' + 'Reply Border' : 'rgb(' + brderColor.rgb + ')' + 'Highlighted Reply Background': 'rgba(' + mainColor.shiftRGB(4, true) + ',' + imported.replyOp + ')' + 'Highlighted Reply Border' : 'rgb(' + linkColor.rgb + ')' + 'Backlinked Reply Outline' : 'rgb(' + linkColor.rgb + ')' + 'Checkbox Background' : 'rgba(' + inputColor.rgb + ',' + imported.replyOp + ')' + 'Checkbox Border' : 'rgb(' + inputbColor.rgb + ')' + 'Checkbox Checked Background' : 'rgb(' + inputColor.rgb + ')' + 'Input Background' : 'rgba(' + inputColor.rgb + ',' + imported.replyOp + ')' + 'Input Border' : 'rgb(' + inputbColor.rgb + ')' + 'Hovered Input Background' : 'rgba(' + inputColor.hover + ',' + imported.replyOp + ')' + 'Hovered Input Border' : 'rgb(' + inputbColor.rgb + ')' + 'Focused Input Background' : 'rgba(' + inputColor.hover + ',' + imported.replyOp + ')' + 'Focused Input Border' : 'rgb(' + inputbColor.rgb + ')' + 'Buttons Background' : 'rgba(' + inputColor.rgb + ',' + imported.replyOp + ')' + 'Buttons Border' : 'rgb(' + inputbColor.rgb + ')' + 'Navigation Background' : 'rgba(' + bgColor.rgb + ',0.8)' + 'Navigation Border' : 'rgb(' + mainColor.rgb + ')' + 'Quotelinks' : 'rgb(' + linkColor.rgb + ')' + 'Links' : 'rgb(' + linkColor.rgb + ')' + 'Hovered Links' : 'rgb(' + linkHColor.rgb + ')' + 'Navigation Links' : 'rgb(' + textColor.rgb + ')' + 'Hovered Navigation Links' : 'rgb(' + linkHColor.rgb + ')' + 'Subjects' : 'rgb(' + titleColor.rgb + ')' + 'Names' : 'rgb(' + nameColor.rgb + ')' + 'Sage' : 'rgb(' + sageColor.rgb + ')' + 'Tripcodes' : 'rgb(' + tripColor.rgb + ')' + 'Emails' : 'rgb(' + linkColor.rgb + ')' + 'Post Numbers' : 'rgb(' + linkColor.rgb + ')' + 'Text' : 'rgb(' + textColor.rgb + ')' + 'Backlinks' : 'rgb(' + linkColor.rgb + ')' + 'Greentext' : 'rgb(' + quoteColor.rgb + ')' + 'Board Title' : 'rgb(' + textColor.rgb + ')' + 'Timestamps' : 'rgb(' + timeColor.rgb + ')' + 'Inputs' : 'rgb(' + textColor.rgb + ')' + 'Warnings' : 'rgb(' + sageColor.rgb + ')' + 'Shadow Color' : 'rgba(0,0,0,0.1)' + 'Custom CSS' : """<%= grunt.file.read('css/theme.oneechan.css') %>""" + (imported.customCSS or '') } + + else if origin == "SS" + Themes[name] = { + 'Author' : "Anonymous" + 'Author Tripcode' : "!.pC/AHOKAg" + 'Background Image' : 'url("' + (imported.bgImg or '') + '")' + 'Background Attachment' : bgRPA[3] or '' + 'Background Position' : ((bgRPA[1] + " ") or '') + (bgRPA[2] or '') + 'Background Repeat' : bgRPA[0] or '' + 'Background Color' : 'rgb(' + bgColor.rgb + ')' + 'Dialog Background' : 'rgba(' + mainColor.rgb + ',.98)' + 'Dialog Border' : 'rgb(' + brderColor.rgb + ')' + 'Thread Wrapper Background' : 'rgba(' + mainColor.rgb + ',.5)' + 'Thread Wrapper Border' : 'rgba(' + brderColor.rgb + ',.9)' + 'Reply Background' : 'rgba(' + mainColor.rgb + ',.9)' + 'Reply Border' : 'rgb(' + brderColor.rgb + ')' + 'Highlighted Reply Background': 'rgba(' + mainColor.shiftRGB(4, true) + ',.9)' + 'Highlighted Reply Border' : 'rgb(' + linkColor.rgb + ')' + 'Backlinked Reply Outline' : 'rgb(' + linkColor.rgb + ')' + 'Checkbox Background' : 'rgba(' + inputColor.rgb + ',.9)' + 'Checkbox Border' : 'rgb(' + inputbColor.rgb + ')' + 'Checkbox Checked Background' : 'rgb(' + inputColor.rgb + ')' + 'Input Background' : 'rgba(' + inputColor.rgb + ',.9)' + 'Input Border' : 'rgb(' + inputbColor.rgb + ')' + 'Hovered Input Background' : 'rgba(' + inputColor.hover + ',.9)' + 'Hovered Input Border' : 'rgb(' + inputbColor.rgb + ')' + 'Focused Input Background' : 'rgba(' + inputColor.hover + ',.9)' + 'Focused Input Border' : 'rgb(' + inputbColor.rgb + ')' + 'Buttons Background' : 'rgba(' + inputColor.rgb + ',.9)' + 'Buttons Border' : 'rgb(' + inputbColor.rgb + ')' + 'Navigation Background' : 'rgba(' + bgColor.rgb + ',0.8)' + 'Navigation Border' : 'rgb(' + mainColor.rgb + ')' + 'Quotelinks' : 'rgb(' + linkColor.rgb + ')' + 'Links' : 'rgb(' + linkColor.rgb + ')' + 'Hovered Links' : 'rgb(' + linkHColor.rgb + ')' + 'Navigation Links' : 'rgb(' + textColor.rgb + ')' + 'Hovered Navigation Links' : 'rgb(' + linkHColor.rgb + ')' + 'Subjects' : 'rgb(' + titleColor.rgb + ')' + 'Names' : 'rgb(' + nameColor.rgb + ')' + 'Sage' : 'rgb(' + sageColor.rgb + ')' + 'Tripcodes' : 'rgb(' + tripColor.rgb + ')' + 'Emails' : 'rgb(' + linkColor.rgb + ')' + 'Post Numbers' : 'rgb(' + linkColor.rgb + ')' + 'Text' : 'rgb(' + textColor.rgb + ')' + 'Backlinks' : 'rgb(' + linkColor.rgb + ')' + 'Greentext' : 'rgb(' + quoteColor.rgb + ')' + 'Board Title' : 'rgb(' + textColor.rgb + ')' + 'Timestamps' : 'rgb(' + timeColor.rgb + ')' + 'Inputs' : 'rgb(' + textColor.rgb + ')' + 'Warnings' : 'rgb(' + sageColor.rgb + ')' + 'Shadow Color' : 'rgba(0,0,0,0.1)' + 'Custom CSS' : """<%= grunt.file.read('css/theme.4chanss.css') %>""" + (imported.customCSS or '') } + + else if origin == 'appchan' + Themes[name] = imported + + userThemes = $.get "userThemes", {} + userThemes[name] = Themes[name] + $.set 'userThemes', userThemes + alert "Theme \"#{name}\" imported!" + $.rm $("#themes", d.body) + Options.themeTab() + + reader.readAsText(file) + + save: (theme) -> + name = theme["Theme"] + + if Themes[name] and not Themes[name]["Deleted"] + if confirm "A theme with this name already exists. Would you like to over-write?" + delete Themes[name] + else + return + + Themes[name] = JSON.parse(JSON.stringify(theme)) + delete Themes[name]["Theme"] + userThemes = $.get "userThemes", {} + userThemes[name] = Themes[name] + $.set 'userThemes', userThemes + $.set "theme", Conf['theme'] = name + alert "Theme \"#{name}\" saved." + + close: -> + Conf['editMode'] = false + $.rm $("#themeConf", d.body) + Style.addStyle() + Options.dialog("theme") \ No newline at end of file diff --git a/src/config.coffee b/src/config.coffee index 31eb11526..180369be6 100644 --- a/src/config.coffee +++ b/src/config.coffee @@ -282,6 +282,356 @@ Config = 'Expand all images only from current position to thread end.' ] + style: + + # Style Options are either booleans, select options, or text, depending on the value of optionName[2]. + # If it doesn't exist, it is a boolean, if it does, it's either an array of the select options or "text". + + Interface: + 'Single Column Mode': [ + true + 'Presents options in a single column, rather than in blocks.' + ] + 'Sidebar': [ + 'normal' + 'Alter the sidebar size. Completely hiding it can cause content to overlap, but with the correct option combinations can create a minimal 4chan layout that has more efficient screen real-estate than vanilla 4chan.' + ['large', 'normal', 'minimal', 'hide'] + ] + 'Sidebar Location': [ + 'right' + 'The side of the page the sidebar content is on. It is highly recommended that you do not hide the sidebar if you change this option.' + ['left', 'right'] + ] + 'Top Thread Padding': [ + '0' + 'Add some spacing between the top edge of document and the threads.' + 'text' + ] + 'Bottom Thread Padding': [ + '0' + 'Add some spacing between the bottom edge of document and the threads.' + 'text' + ] + 'Left Thread Padding': [ + '0' + 'Add some spacing between the left edge of document and the threads.' + 'text' + ] + 'Right Thread Padding': [ + '0' + 'Add some spacing between the right edge of document and the threads.' + 'text' + ] + 'Announcements': [ + 'slideout' + 'The style of announcements and the ability to hide them.' + ['4chan default', 'slideout', 'hide'] + ] + 'Board Title': [ + 'at sidebar top' + 'The positioning of the board\'s logo and subtitle.' + ['at sidebar top', 'at sidebar bottom', 'at top', 'under post form', 'hide'] + ] + 'Custom Board Titles': [ + false + 'Customize Board Titles by shift-clicking the board title or subtitle.' + ] + 'Board Subtitle': [ + true + 'Show the board subtitle.' + ] + '4chan Banner': [ + 'at sidebar top' + 'The positioning of 4chan\'s image banner.' + ['at sidebar top', 'at sidebar bottom', 'under post form', 'at top', 'hide'] + ] + '4chan Banner Reflection': [ + false + 'Adds reflection effects to 4chan\'s image banner.' + ] + 'Faded 4chan Banner': [ + true + 'Make 4chan\'s image banner translucent.' + ] + 'Icon Orientation': [ + 'horizontal' + 'Change the orientation of the appchan x icons.' + ['horizontal', 'vertical'] + ] + 'Slideout Watcher': [ + true + 'Adds an icon you can hover over to show the watcher, as opposed to having the watcher always visible.' + ] + 'Updater Position': [ + 'top' + 'The position of 4chan thread updater and stats' + ['top', 'bottom', 'moveable'] + ] + + Posts: + 'Alternate Post Colors': [ + false + 'Make post background colors alternate every other post.' + ] + 'Color Reply Headings': [ + false + 'Give the post info a background.' + ] + 'Color File Info': [ + false + 'Give the file info a background.' + ] + 'OP Background': [ + false + 'Adds a border and background color to the OP Post, as if it were a reply.' + ] + 'Backlinks Position': [ + 'default' + 'The position of backlinks in relation to the post.' + ['default', 'lower left', 'lower right'] + ] + 'Sage Highlighting': [ + 'image' + 'Icons or text to highlight saged posts.' + ['text', 'image', 'none'] + ] + 'Sage Highlight Position': [ + 'after' + 'Position of Sage Highlighting' + ['before', 'after'] + ] + 'Filtered Backlinks': [ + true + 'Mark backlinks to filtered posts.' + ] + 'Force Reply Break': [ + false + 'Force replies to occupy their own line and not be adjacent to the OP image.' + ] + 'Fit Width Replies': [ + true + 'Replies fit the entire width of the page.' + ] + 'Hide Delete UI': [ + false + 'Hides vanilla report and delete functionality and UI. This does not affect Appchan\'s Menu functionality.' + ] + 'Post Spacing': [ + '2' + 'The amount of space between replies.' + 'text' + ] + 'Vertical Post Padding': [ + '5' + 'The vertical padding around post content of replies.' + 'text' + ] + 'Horizontal Post Padding': [ + '20' + 'The horizontal padding around post content of replies.' + 'text' + ] + 'Hide Horizontal Rules': [ + false + 'Hides lines between threads.' + ] + 'Images Overlap Post Form': [ + true + 'Images expand over the post form and sidebar content, usually used with "Expand images" set to "full".' + ] + + Aesthetics: + '4chan SS Navigation': [ + false + 'Try to emulate the appearance of 4chan SS\'s Navigation.' + ] + '4chan SS Sidebar': [ + false + 'Try to emulate the appearance of 4chan SS\'s Sidebar.' + ] + 'Block Ads': [ + false + 'Block advertisements. It\'s probably better to use AdBlock for this.' + ] + 'Shrink Ads': [ + false + 'Make 4chan advertisements smaller.' + ] + 'Bolds': [ + true + 'Bold text for names and such.' + ] + 'Italics': [ + false + 'Give tripcodes italics.' + ] + 'Sidebar Glow': [ + false + 'Adds a glow to the sidebar\'s text.' + ] + 'Circle Checkboxes': [ + false + 'Make checkboxes circular.' + ] + 'Custom CSS': [ + false + 'Add (more) custom CSS to Appchan X' + ] + 'Emoji': [ + 'enabled' + 'Enable emoji' + ['enabled', 'disable ponies', 'only ponies', 'disable'] + ] + 'Emoji Position': [ + 'before' + 'Position of emoji icons, like sega and neko.' + ['before', 'after'] + ] + 'Emoji Spacing': [ + '5' + 'Add some spacing between emoji and text.' + 'text' + ] + 'Font': [ + 'sans-serif' + 'The font used by all elements of 4chan.' + 'text' + ] + 'Font Size': [ + '12' + 'The font size of posts and various UI. This changes most, but not all, font sizes.' + 'text' + ] + 'Icons': [ + 'oneechan' + 'Icon theme which Appchan will use.' + ['oneechan', '4chan SS'] + ] + 'Invisible Icons': [ + false + 'Makes icons invisible unless hovered. Invisible really is "invisible", so don\'t use it if you don\'t have your icons memorized or don\'t use keybinds.' + ] + 'Quote Shadows': [ + true + 'Add shadows to the quote previews and inline quotes.' + ] + 'Rounded Edges': [ + false + 'Round the edges of various 4chan elements.' + ] + 'Underline Links': [ + false + 'Put lines under hyperlinks.' + ] + 'NSFW/SFW Themes': [ + false + 'Choose your theme based on the SFW status of the board you are viewing.' + ] + + Mascots: + 'Mascots': [ + true + 'Add a pretty picture of your waifu to Appchan.' + ] + 'Mascot Location': [ + 'sidebar' + 'Change where your mascot is located.' + ['sidebar', 'opposite'] + ] + 'Mascot Position': [ + 'default' + 'Change where your mascot is placed in relation to the post form.' + ['above post form', 'default', 'bottom'] + ] + 'Mascots Overlap Posts': [ + true + 'Mascots overlap threads and posts.' + ] + 'NSFW/SFW Mascots': [ + false + 'Enable or disable mascots based on the SFW status of the board you are viewing.' + ] + 'Grayscale Mascots': [ + false + 'Force mascots to be monochrome.' + ] + 'Mascot Opacity': [ + '1.00' + 'Make Mascots transparent.' + 'text' + ] + 'Hide Mascots on Catalog': [ + false + 'Do not show mascots on the official catalog pages.' + ] + + Navigation: + 'Boards Navigation': [ + 'sticky top' + 'The position of 4chan board navigation' + ['sticky top', 'sticky bottom', 'top', 'hide'] + ] + 'Navigation Alignment': [ + 'center' + 'Change the text alignment of the navigation.' + ['left', 'center', 'right'] + ] + 'Slideout Navigation': [ + 'compact' + 'How the slideout navigation will be displayed.' + ['compact', 'list', 'hide'] + ] + 'Pagination': [ + 'sticky bottom' + 'The position of 4chan page navigation' + ['sticky top', 'sticky bottom', 'top', 'bottom', 'on side', 'hide'] + ] + 'Pagination Alignment': [ + 'center' + 'Change the text alignment of the pagination.' + ['left', 'center', 'right'] + ] + 'Hide Navigation Decorations': [ + false + 'Hide non-link text in the board navigation and pagination. This also disables the delimiter in Custom Navigation' + ] + + 'Post Form': + 'Compact Post Form Inputs': [ + true + 'Use compact inputs on the post form.' + ] + 'Hide Show Post Form': [ + false + 'Hides the "Show Post Form" button when Persistent QR is disabled.' + ] + 'Show Post Form Header': [ + false + 'Force the Post Form to have a header.' + ] + 'Post Form Style': [ + 'tabbed slideout' + 'How the post form will sit on the page.' + ['fixed', 'slideout', 'tabbed slideout', 'transparent fade', 'float'] + ] + 'Post Form Slideout Transitions' : [ + true + 'Animate slideouts for the post form.' + ] + 'Post Form Decorations': [ + false + 'Add a border and background to the post form (does not apply to the "float" post form style.' + ] + 'Textarea Resize': [ + 'vertical' + 'Options to resize the post form\'s comment box.' + ['both', 'horizontal', 'vertical', 'none'] + ] + 'Tripcode Hider': [ + true + 'Intelligent name field hiding.' + ] + filter: name: """ # Filter any namefags: @@ -500,3 +850,8 @@ http://www.google.com/searchbyimage?image_url=%turl 'Increase the intervals between updates on threads without new posts.' ] 'Interval': 30 + + embedWidth: 640 + embedHeight: 390 + theme : 'Yotsuba B' + mascot : '' diff --git a/src/features.coffee b/src/features.coffee index 1c2457a09..7ca5c0216 100644 --- a/src/features.coffee +++ b/src/features.coffee @@ -166,7 +166,7 @@ CatalogLinks = ready: -> if catalogLink = ($('.pages.cataloglink a', d.body) or $ '[href=".././catalog"]', d.body) - if !g.VIEW is thread + if !g.VIEW is 'thread' $.add d.body, catalogLink catalogLink.id = 'catalog' diff --git a/src/globals.coffee b/src/globals.coffee index a17a6f7a0..0dac0d959 100644 --- a/src/globals.coffee +++ b/src/globals.coffee @@ -1,7 +1,10 @@ # Opera doesn't support the @match metadata key, # return 4chan X here if we're not on 4chan. -return unless /^(boards|images|sys)\.4chan\.org$/.test location.hostname +return unless /^[a-z]+\.4chan\.org$/.test location.hostname +editTheme = {} # Currently editted theme. +editMascot = {} # Which mascot we're editting. +userNavigation = {} # ... Conf = {} c = console d = document @@ -9,6 +12,2751 @@ doc = null g = VERSION: '<%= version %>' NAMESPACE: '<%= meta.name %>.' - boards: {} - threads: {} - posts: {} + TYPE: 'sfw' + boards: {} + threads: {} + posts: {} + +Mascots = + 'Akiyama_Mio': + category: 'Anime' + image: 'https://i.minus.com/ibrWLbKvjRnHZS.png' + 'Akiyama_Mio_2': + category: 'Anime' + image: 'https://i.minus.com/ibmZgHvl3ZSxYk.png' + 'Akiyama_Mio_3': + category: 'Anime' + image: 'https://i.minus.com/irFbpefCFt1cT.png' + center: true + 'Akiyama_Mio_sitting': + category: 'Questionable' + image: 'https://i.minus.com/ibnnAPmolhTfE7.png' + 'Anime_Girl_in_Bondage': + category: 'Questionable' + image: 'https://i.minus.com/ibbfIrZEoNLmiU.png' + center: true + 'Anime_Girl_in_Bondage_2': + category: 'Questionable' + image: 'http://i.minus.com/iGRED5sHh4RMs.png' + center: true + 'Applejack': + category: 'Ponies' + image: 'https://i.minus.com/inZ8jSVsEhfnC.png' + center: true + 'Asuka_Langley_Soryu': + category: 'Anime' + image: 'https://i.minus.com/ib2z9ME9QKEBaS.png' + center: true + 'Asuka_Langley_Soryu_2': + category: 'Anime' + image: 'https://i.minus.com/iI3QR5SywNfg9.png' + center: true + 'Asuka_Langley_Soryu_3': + category: 'Anime' + image: 'https://i.minus.com/ibwjj4dLtiADla.png' + center: true + 'Asuka_Langley_Soryu_4': + category: 'Anime' + image: 'https://i.minus.com/ibiiInQGLGnYNj.png' + center: true + 'Asuka_Langley_Soryu_5': + category: 'Questionable' + image: 'https://i.minus.com/iJq4VXY1Gw8ZE.png' + center: true + 'Asuka_Langley_Soryu_6': + category: 'Anime' + image: 'https://i.minus.com/ibzbnBcaEtoqck.png' + position: 'bottom' + 'Ayanami_Rei': + category: 'Anime' + image: 'https://i.minus.com/ib0ft5OmqRZx2r.png' + center: true + 'Ayase_Yue': + category: 'Questionable' + image: 'https://i.minus.com/ign5fGOZWTx5o.png' + 'Ayase': + category: 'Anime' + image: 'https://i.minus.com/ibmArq5Wb4Po4v.png' + center: true + 'Ayase_2': + category: 'Questionable' + image: 'https://i.minus.com/ibjUbDLSU5pwhK.png' + center: true + 'BLACK_ROCK_SHOOTER': + category: 'Anime' + image: 'https://i.minus.com/ibMe9MrTMdvAT.png' + center: true + 'Blue_Rose': + category: 'Questionable' + image: 'https://i.minus.com/ibiq1joMemfzeM.png' + center: true + 'Brioche_d_Arquien': + category: 'Anime' + image: 'https://i.minus.com/ibobXYJ2k3JXK.png' + center: true + 'CC': + category: 'Anime' + image: 'https://i.minus.com/iwndO4Pn6SO0X.png' + center: true + 'CC2': + category: 'Questionable' + image: 'https://i.minus.com/iVT3TjJ7lBRpl.png' + center: true + 'Chie': + category: 'Anime' + image: 'https://i.minus.com/ib0HI16h9FSjSp.png' + center: true + 'Cirno': + category: 'Questionable' + image: 'https://i.minus.com/ibffjW5v0zrSGa.png' + center: true + 'Cirno_2': + category: 'Anime' + image: 'https://i.minus.com/iSZ06ZxrcqAKq.png' + center: true + 'Dawn_Hikari': + category: 'Anime' + image: 'https://i.minus.com/iL3J1EmcDkFzE.png' + center: true + 'Doppleganger': + category: 'Anime' + image: 'https://i.minus.com/iPvv86W9r3Rxm.png' + 'Dragonkid': + category: 'Anime' + image: 'https://i.minus.com/iq9fuyWSjIDWf.png' + center: true + 'Dragonkid_2': + category: 'Anime' + image: 'https://i.minus.com/i7sdxK3G12RB6.png' + center: true + 'Eclair': + category: 'Anime' + image: 'https://i.minus.com/ibsk5mMYVR5zuA.png' + center: true + 'Erio_Touwa': + category: 'Questionable' + image: 'https://i.minus.com/in8bF152Y9qVB.png' + 'Evangeline_AK_McDowell': + category: 'Anime' + image: 'https://i.minus.com/ibuq7a8zWKi2gl.png' + center: true + 'Fluttershy': + category: 'Ponies' + image: 'https://i.minus.com/ibwEFEGlRm0Uxy.png' + 'Fluttershy_2': + category: 'Ponies' + image: 'https://i.minus.com/ibjtz6EU2OFPgh.png' + center: true + 'Fluttershy_Cutiemark': + category: 'Ponies' + image: 'https://i.minus.com/i5WVpIAlHQdhs.png' + center: true + 'Fujiwara_no_Mokou': + category: 'Anime' + image: 'https://i.minus.com/ibpwDyMGodvni6.png' + 'Furudo_Erika': + category: 'Anime' + image: 'https://i.minus.com/iCrRzQ8WvHiSM.png' + center: true + 'Gally': + category: 'Anime' + image: 'https://i.minus.com/iblWZGuSlWtDI6.png' + center: true + 'Gasai_Yuno': + category: 'Anime' + image: 'https://i.minus.com/iEQsK6K85jX2n.png' + 'Gasai_Yuno_2': + category: 'Questionable' + image: 'https://i.minus.com/ifyPk7Yeo1JA7.png' + 'George_Costanza': + category: 'Western' + image: 'https://i.minus.com/iFWdpFGfzLs6v.png' + 'Hanako': + category: 'Anime' + image: 'https://i.minus.com/iRLF8gCIZbGjo.png' + center: true + 'Hasekura_Youko': + category: 'Anime' + image: 'https://i.minus.com/iqBTFZf5UhLpR.png' + center: true + 'Hatsune_Miku': + category: 'Questionable' + image: 'https://i.minus.com/iHuUwYVywpp3Z.png' + 'Hatsune_Miku_2': + category: 'Questionable' + image: 'https://i.minus.com/iclhgYeHDD77I.png' + center: true + 'Hatsune_Miku_3': + category: 'Anime' + image: 'https://i.minus.com/iLJ4uDTcg1T8r.png' + center: true + 'Hatsune_Miku_4': + category: 'Anime' + image: 'https://i.minus.com/ibjkPMLT8Uxitp.png' + center: true + 'Hatsune_Miku_5': + category: 'Anime' + image: 'https://i.minus.com/i9Evu9dyvok4G.png' + center: true + 'Hatsune_Miku_6': + category: 'Questionable' + image: 'https://i.minus.com/iQzx9fPFgPUNl.png' + center: true + 'Hatsune_Miku_7': + category: 'Questionable' + image: 'https://i.minus.com/iDScshaEZqUuy.png' + center: true + 'Hirasawa_Yui': + category: 'Anime' + image: 'https://i.minus.com/iuGe5uDaTNmhR.png' + center: true + 'Homura_Akemi': + category: 'Anime' + image: 'https://i.minus.com/iPtrwFEEtPLhn.png' + 'Horo': + category: 'Silhouette' + image: ['https://i.minus.com/i429JguITUibN.png', 'https://i.minus.com/icpvfMuZEQCtS.png'] + 'Horo_2': + category: 'Silhouette' + image: ['https://i.minus.com/ibv270koIdRjm7.png', 'https://i.minus.com/iPM4lDD53yB5n.png'] + 'Horo_3': + category: 'Questionable' + image: 'http://i.minus.com/ibyT9dlTe1HN5P.png' + 'Horo_4': + category: 'Questionable' + image: 'http://i.minus.com/ibbMKiznORGJ00.png' + 'Ika_Musume': + category: 'Anime' + image: 'https://i.minus.com/ibqVu5GNfKx5bC.png' + center: true + 'Ika_Musume_2': + category: 'Anime' + image: 'https://i.minus.com/ibhnEiE8HabEqC.png' + center: true + 'Ika_Musume_3': + category: 'Questionable' + image: 'https://i.minus.com/iby8LyjXffukaI.png' + center: true + 'Inori': + category: 'Questionable' + image: 'https://i.minus.com/ibpHKNPxcFqRxs.png' + 'Inori_2': + category: 'Questionable' + image: 'https://i.minus.com/ibzM531DBaHYXD.png' + 'Iwakura_Lain': + category: 'Anime' + image: 'https://i.minus.com/iBXRRT19scoHf.png' + center: true + 'Iwakura_Lain_2': + category: 'Anime' + image: 'https://i.minus.com/ioMltWNYUWeJ3.png' + center: true + 'KOn_Girls': + category: 'Anime' + image: 'https://i.minus.com/ibndVLiH09uINs.png' + center: true + 'Kagamine_Rin': + category: 'Questionable' + image: 'https://i.minus.com/iVPKJeDXKPKeV.png' + center: true + 'Kagamine_Rin_2': + category: 'Anime' + image: 'https://i.minus.com/jbkL01TIeJwEN6.png' + 'Kagari_Izuriha': + category: 'Anime' + image: 'https://i.minus.com/ihaFHsvFfL0vH.png' + 'Kaname_Madoka': + category: 'Anime' + image: 'https://i.minus.com/iRuEFK8cdAHxB.png' + center: true + 'Karina': + category: 'Anime' + image: 'https://i.minus.com/iUADBOpQYPfeP.png' + center: true + 'Kigurumi_Harokitei': + category: 'Anime' + image: 'https://i.minus.com/ibb17W5i3rQvut.png' + center: true + 'Kinomoto_Sakura': + category: 'Anime' + image: 'https://i.minus.com/iVmsLKa4zLwZR.png' + center: true + 'Kinomoto_Sakura_2': + category: 'Questionable' + image: 'https://i.minus.com/ibklztjz3Ua747.png' + center: true + 'Kirisame_Marisa': + category: 'Anime' + image: 'https://i.minus.com/ibikDZH5CZ0V30.png' + 'Kirino_Kosaka_and_Ruri_Goko': + category: 'Questionable' + image: 'https://i.minus.com/isIzggtfUo4ql.png' + center: true + 'Koiwai_Yotsuba': + category: 'Anime' + image: 'https://i.minus.com/iKFKyVVBato2N.png' + center: true + 'Koko': + category: 'Anime' + image: 'https://i.minus.com/ieVyNMSjXpBs2.png' + center: true + 'Konjiki_no_Yami': + category: 'Questionable' + image: 'https://i.minus.com/imy7iv5fuym8b.png' + position: 'bottom' + 'Kotobuki_Tsumugi': + category: 'Anime' + image: 'https://i.minus.com/i6doAUnM6jMAY.png' + center: true + 'Kurisu_Makise': + category: 'Anime' + image: 'https://i.minus.com/ib1eMtRHdvc9ix.png' + 'Kuroko_Shirai': + category: 'Anime' + image: 'https://i.minus.com/i3K8F7lu2SHfn.png' + 'Kyouko_Sakura': + category: 'Anime' + image: 'https://i.minus.com/iMrFOS1mfzIJP.png' + center: true + 'Kyubee': + category: 'Anime' + image: 'https://i.minus.com/iD0SEJPeZa0Dw.png' + 'Kyubee_2': + category: 'Anime' + image: 'https://i.minus.com/iGlKiDZvM3xi8.png' + center: true + 'Leonmitchelli': + category: 'Questionable' + image: 'https://i.minus.com/ibgUFGlOpedfbs.png' + center: true + 'Li_Syaoran': + category: 'Anime' + image: 'https://i.minus.com/ib0IWPBRSHyiDe.png' + 'Link': + category: 'Anime' + image: 'https://i.minus.com/ibd1JShAMTdJBH.png' + center: true + 'Lizardgirl': + category: 'Anime' + image: 'https://i.minus.com/is7h27Q6lsmyx.png' + 'Luka': + category: 'Anime' + image: 'https://i.minus.com/inds5h2BOmVBy.png' + 'Madotsuki': + category: 'Anime' + image: 'https://i.minus.com/ik6QYfTfgx9Za.png' + 'Makoto': + category: 'Anime' + image: 'https://i.minus.com/i7q6aOuUqqA9F.png' + center: true + 'Mantis': + category: 'Anime' + image: 'https://i.minus.com/iBmluUJOZivY2.png' + 'Megurine_Luka': + category: 'Anime' + image: 'https://i.minus.com/ibxe63yidpz9Gz.png' + center: true + 'Mei_Sunohara': + category: 'Anime' + image: 'https://i.minus.com/i7ElzNY4xQHHz.png' + center: true + 'Millefiori': + category: 'Anime' + image: 'https://i.minus.com/ifVzPtH8JHXjl.png' + center: true + 'Millefiori_2': + category: 'Anime' + image: 'https://i.minus.com/iMSUiQxRBylQG.png' + center: true + 'Millefiori_3': + category: 'Anime' + image: 'https://i.minus.com/iDOe3ltSvOYXZ.png' + center: true + 'Misaki_Mei': + category: 'Anime' + image: 'https://i.minus.com/icmYGJ9vIOFjr.png' + center: true + 'Mizunashi_Akari': + category: 'Anime' + image: 'https://i.minus.com/iNy9kHlNsUoVK.png' + center: true + 'Motoko': + category: 'Anime' + image: 'https://i.minus.com/irFtkWWyMChSA.png' + center: true + 'Nagato_Yuki': + category: 'Anime' + image: 'https://i.minus.com/it3pEawWIxY84.png' + center: true + 'Nagato_Yuki_2': + category: 'Anime' + image: 'https://i.minus.com/iuspcZbLvmqpb.png' + center: true + 'Nagato_Yuki_3': + category: 'Anime' + image: 'https://i.minus.com/ibndIkldw4njbD.png' + center: true + 'Nagato_Yuki_4': + category: 'Questionable' + image: 'https://i.minus.com/i92tUr90OVZGD.png' + center: true + 'Nagato_Yuki_5': + category: 'Silhouette' + image: ['https://i.minus.com/iW0iHUkHwu44d.png', 'https://i.minus.com/i859zL9JXZLbD.png'] + center: true + 'Nagato_Yuki_6': + category: 'Silhouette' + image: ['https://i.minus.com/iJdxNEMekrQjp.png', 'https://i.minus.com/ibbHeuocMgN5Eu.png'] + center: true + 'Nagato_Yuki_7': + category: 'Questionable' + image: 'http://i.minus.com/iFQQPEaC3aEV7.png' + 'Nakano_Azusa': + category: 'Anime' + image: 'https://i.minus.com/iiptfoMlr4v1k.png' + 'Nodoka_Miyazaki': + category: 'Questionable' + image: 'http://i.minus.com/iDX5mImKBzrXK.png' + 'Nichijou': + category: 'Anime' + image: 'https://i.minus.com/iE8lbZ5f3OT2B.png' + 'Noir_VinoCacao': + category: 'Anime' + image: 'https://i.minus.com/ibo8aCWF0OwNwP.png' + center: true + 'Pinkie_Pie': + category: 'Ponies' + image: 'https://i.minus.com/ib1kcpqxvsyZWG.png' + center: true + 'Pinkie_Pie_2': + category: 'Ponies' + image: 'https://i.minus.com/i8QRRgE7iKpw7.png' + center: true + 'Oshino_Shinobu': + category: 'Anime' + image: 'https://i.minus.com/ibwhAyR6D7OBAB.png' + 'Oshino_Shinobu_2': + category: 'Anime' + image: 'https://i.minus.com/ibqoNiWzynsVvg.png' + position: 'bottom' + 'Patchouli_Knowledge': + category: 'Anime' + image: 'https://i.minus.com/ibnOEAxXaKlctB.png' + center: true + 'Patchouli_Knowledge_2': + category: 'Anime' + image: 'https://i.minus.com/i1MOPTmohOsMD.png' + 'Pink_Doggy': + category: 'Anime' + image: 'https://i.minus.com/i1SpWAzfcIEQc.png' + center: true + 'Pink_Hair': + category: 'Anime' + image: 'https://i.minus.com/ibdwMaIPwdscao.png' + center: true + 'Pixie': + category: 'Questionable' + image: 'https://i.minus.com/ipRzX1YsTyhgZ.png' + center: true + 'Railgun': + category: 'Questionable' + image: 'https://i.minus.com/iysolfmvz6WKs.png' + center: true + 'Railgun_2': + category: 'Anime' + image: 'https://i.minus.com/iNhpDDO0GSTeM.png' + center: true + 'Railgun_3': + category: 'Anime' + image: 'https://i.minus.com/iiW02dmqUwRcy.png' + 'Railgun_4': + category: 'Anime' + image: 'https://i.minus.com/iR3j0mGgd1927.png' + center: true + 'Rainbow_Dash': + category: 'Ponies' + image: 'https://i.minus.com/ibthr5EDMZHV9j.png' + center: true + 'Rarity': + category: 'Ponies' + image: 'https://i.minus.com/ibkraGhhUh25CU.png' + center: true + 'Revi': + category: 'Anime' + image: 'https://i.minus.com/ivUMKcy5ow6Ab.png' + position: 'bottom' + center: true + 'Ruri_Gokou': + category: 'Anime' + image: 'https://i.minus.com/ibtZo1fdOk8NCB.png' + position: 'bottom' + center: true + 'Ryuu': + category: 'Anime' + image: 'https://i.minus.com/iecVz4p2SuqK4.png' + position: 'bottom' + 'Saber': + category: 'Questionable' + image: 'https://i.minus.com/i62cv3csQaqgk.png' + center: true + 'Sakurazaki_Setsuna': + category: 'Questionable' + image: 'https://i.minus.com/iHS6559NMU1tS.png' + 'Samus_Aran': + category: 'Anime' + image: 'https://i.minus.com/iWG1GFJ89A05p.png' + center: true + 'Samus_Aran_2': + category: 'Anime' + image: 'http://i.minus.com/ibl4efsNtHpkXg.png' + 'Seraphim': + category: 'Questionable' + image: 'https://i.minus.com/ivHaKIFHRpPFP.png' + center: true + 'Shana': + category: 'Anime' + image: 'https://i.minus.com/ib2cTJMF0cYIde.png' + center: true + 'Shana_2': + category: 'Anime' + image: 'https://i.minus.com/ioRICGu0Ipzj9.png' + center: true + 'Shiki': + category: 'Anime' + image: 'https://i.minus.com/iIZm1JxxDIDQ1.png' + 'Shinji_and_Girls': + category: 'Anime' + image: 'https://i.minus.com/itMrEn56GzvzE.png' + center: true + 'Shinonome_Hakase': + category: 'Anime' + image: 'https://i.minus.com/iocCwDCnNgI19.png' + center: true + 'Shirakiin_Ririchiyo': + category: 'Anime' + image: 'https://i.minus.com/i1m0rdzmVLYLa.png' + position: 'bottom' + center: true + 'Shirohibe': + category: 'Anime' + image: 'https://i.minus.com/iGu91k3KZeg00.png' + position: 'bottom' + 'Suruga_Kanbaru': + category: 'Anime' + image: 'https://i.minus.com/irEL7AgC80qKD.png' + center: true + 'Suzumiya_Haruhi': + category: 'Anime' + image: 'https://i.minus.com/iM9qMfUNh9Qi9.png' + center: true + 'Suzumiya_Haruhi_2': + category: 'Anime' + image: 'https://i.minus.com/ibnomd5iasjceY.png' + center: true + 'Tardis': + category: 'Western' + image: 'https://i.minus.com/iQL2bwpDfOgk.png' + center: true + 'Teletha_Tessa_Testarossa': + category: 'Questionable' + image: 'https://i.minus.com/iQKrg7Pq7Y6Ed.png' + 'Rukia_Nia_and_Asa': + category: 'Questionable' + image: 'http://i.minus.com/icECBJR5D5U4S.png' + 'Tewi_Inaba': + category: 'Anime' + image: 'https://i.minus.com/ib2k9lwQIkmb66.png' + 'Tifa': + category: 'Questionable' + image: 'https://i.minus.com/inDzKQ0Wck4ef.png' + center: true + 'Tomozo_Kaoru': + category: 'Anime' + image: 'https://i.minus.com/islUcBaPRYAgv.png' + center: true + 'Twilight_Sparkle': + category: 'Ponies' + image: 'https://i.minus.com/ibnMYVTZEykrKU.png' + center: true + 'Udine': + category: 'Questionable' + image: 'https://i.minus.com/iiycujRmhn6QK.png' + position: 'bottom' + 'Wanwan': + category: 'Questionable' + image: 'https://i.minus.com/iTdBWYMCXULLT.png' + center: true + 'White_Curious': + category: 'Anime' + image: 'https://i.minus.com/ibfkj5osu99axe.png' + center: true + 'Yakumo_Ran': + category: 'Anime' + image: 'https://i.minus.com/ivKqn8vL9A8cQ.png' + 'Yin': + category: 'Anime' + image: 'https://i.minus.com/iL9DlVtaAGFdq.png' + 'Yin_2': + category: 'Anime' + image: 'https://i.minus.com/izkTpyjr1XlLR.png' + center: true + 'Yoko_Littner': + category: 'Questionable' + image: 'https://i.minus.com/i0mtOEsBC9GlY.png' + 'Yoko_Littner_2': + category: 'Anime' + image: 'https://i.minus.com/i7aUDY4h9uB1T.png' + center: true + 'Yoko_Littner_3': + category: 'Anime' + image: 'https://i.minus.com/iYVd5DhCmB7VJ.png' + center: true + 'Yozora_Mikazuki': + category: 'Anime' + image: 'https://i.minus.com/iIFEsDzoDALQd.png' + 'Yuzuki_Yukari': + category: 'Anime' + image: 'https://i.minus.com/iYQOz0iGM9ygq.png' + center: true + 'Yukkikaze': + category: 'Anime' + image: 'https://i.minus.com/ioQJAnyXebHDJ.png' + center: true + 'Yukkihaze_2': + category: 'Anime' + image: 'https://i.minus.com/inpgaDlJtZ9Sc.png' + center: true + +Themes = + 'AppChan': + 'Author' : 'Zixaphir' + 'Author Tripcode' : '!..NoTrip..' + 'Background Color' : 'rgba(44,44,44,1)' + 'Thread Wrapper Background' : 'rgba(0,0,0,0)' + 'Thread Wrapper Border' : 'rgba(0,0,0,0)' + 'Dialog Background' : 'rgba(44,44,44,1)' + 'Dialog Border' : 'rgba(44,44,44,1)' + 'Reply Background' : 'rgba(51,51,51,1)' + 'Reply Border' : 'rgba(51,51,51,1)' + 'Highlighted Reply Background': 'rgba(57,57,57,1)' + 'Highlighted Reply Border' : 'rgba(57,57,57,1)' + 'Backlinked Reply Outline' : 'rgba(98,124,141,1)' + 'Input Background' : 'rgba(51,51,51,1)' + 'Input Border' : 'rgba(51,51,51,1)' + 'Checkbox Background' : 'rgba(68,68,68,1)' + 'Checkbox Border' : 'rgba(68,68,68,1)' + 'Checkbox Checked Background' : 'rgba(17,17,17,1)' + 'Buttons Background' : 'rgba(48,48,48,1)' + 'Buttons Border' : 'rgba(48,48,48,1)' + 'Focused Input Background' : 'rgba(63,63,63,1)' + 'Focused Input Border' : 'rgba(63,63,63,1)' + 'Hovered Input Background' : 'rgba(57,57,57,1)' + 'Hovered Input Border' : 'rgba(57,57,57,1)' + 'Navigation Background' : 'rgba(44,44,44,0.9)' + 'Navigation Border' : 'rgba(44,44,44,0.9)' + 'Quotelinks' : 'rgb(79,95,143)' + 'Backlinks' : 'rgb(79,95,143)' + 'Links' : 'rgb(102,136,170)' + 'Hovered Links' : 'rgb(78,110,142)' + 'Navigation Links' : 'rgb(170,170,170)' + 'Hovered Navigation Links' : 'rgb(78,110,142)' + 'Names' : 'rgb(170,170,170)' + 'Tripcodes' : 'rgb(170,170,170)' + 'Emails' : 'rgb(102,136,170)' + 'Subjects' : 'rgb(144,144,144)' + 'Text' : 'rgb(170,170,170)' + 'Inputs' : 'rgb(170,170,170)' + 'Post Numbers' : 'rgb(102,136,170)' + 'Greentext' : 'rgb(120,153,34)' + 'Sage' : 'rgb(150,150,150)' + 'Board Title' : 'rgb(170,170,170)' + 'Timestamps' : 'rgb(170,170,170)' + 'Warnings' : 'rgb(102,136,170)' + 'Shadow Color' : 'rgba(0,0,0,.1)' + 'Custom CSS' : '' + + 'BakaBT': + 'Author' : 'seaweed' + 'Author Tripcode' : '!POMF.9waa' + 'Background Image' : 'url("http://i.imgur.com/rTkxi.jpg")' + 'Background Attachment' : 'fixed' + 'Background Position' : '20px 20px' + 'Background Repeat' : 'repeat' + 'Background Color' : 'rgba(238,238,238,1)' + 'Thread Wrapper Background' : 'rgba(255,255,255,1)' + 'Thread Wrapper Border' : 'rgba(204,204,204,1)' + 'Dialog Background' : 'rgba(238,221,255,1)' + 'Dialog Border' : 'rgba(238,221,255,1)' + 'Reply Background' : 'rgba(238,221,255,1)' + 'Reply Border' : 'rgba(209,162,255,1)' + 'Highlighted Reply Background': 'rgba(238,221,255,1)' + 'Highlighted Reply Border' : 'rgba(209,162,255,1)' + 'Backlinked Reply Outline' : 'rgba(204,101,99,1)' + 'Input Background' : 'rgba(255,255,255,1)' + 'Input Border' : 'rgba(204,204,204,1)' + 'Checkbox Background' : 'rgba(255,255,238,1)' + 'Checkbox Border' : 'rgba(204,204,204,1)' + 'Checkbox Checked Background' : 'rgba(188,192,212,1)' + 'Buttons Background' : 'rgba(255,255,255,1)' + 'Buttons Border' : 'rgba(204,204,204,1)' + 'Focused Input Background' : 'rgba(255,255,255,1)' + 'Focused Input Border' : 'rgba(209,162,255,1)' + 'Hovered Input Background' : 'rgba(238,221,255,1)' + 'Hovered Input Border' : 'rgba(204,204,204,1)' + 'Navigation Background' : 'rgba(255,255,255,0.8)' + 'Navigation Border' : 'rgba(255,255,255,0.8)' + 'Quotelinks' : 'rgb(146,92,141)' + 'Backlinks' : 'rgb(146,92,141)' + 'Links' : 'rgb(133,76,158)' + 'Hovered Links' : 'rgb(198,23,230)' + 'Navigation Links' : 'rgb(17,17,17)' + 'Hovered Navigation Links' : 'rgb(198,23,230)' + 'Names' : 'rgb(133,76,158)' + 'Tripcodes' : 'rgb(146,92,141)' + 'Emails' : 'rgb(133,76,158)' + 'Subjects' : 'rgb(17,17,17)' + 'Text' : 'rgb(0,0,0)' + 'Inputs' : 'rgb(0,0,0)' + 'Post Numbers' : 'rgb(146,92,141)' + 'Greentext' : 'rgb(129,153,65)' + 'Sage' : 'rgb(146,92,141)' + 'Board Title' : 'rgb(133,76,158)' + 'Timestamps' : 'rgb(0,0,0)' + 'Warnings' : 'rgb(133,76,158)' + 'Shadow Color' : 'rgba(0,0,0,.05)' + 'Custom CSS' : """ +.board { + box-shadow: 0px 10px 10px 2px rgba(128,128,128,0.5); + border-radius: 3px; +} +.thread { + padding:10px; +} +#options.reply.dialog, +#options .dialog { + background-color:#FFF; + color:#000; + border:2px solid #CCC; +} +#options ul { + border-bottom:1px solid #DBD8D2; +} +#options ul:last-of-type{ + border:none; +} +#qp div.post{ + background-color:rgba(255,255,255,0.9); + border:1px solid #D1A2FF; + color:#000; +}""" + + 'Blackberry Jam': + 'Author' : 'seaweed' + 'Author Tripcode' : '!POMF.9waa' + 'Dialog Background' : 'rgba(27,27,27,1)' + 'Dialog Border' : 'rgba(27,27,27,1)' + 'Background Color' : 'rgba(45,45,45,1)' + 'Thread Wrapper Background' : 'rgba(0,0,0,0)' + 'Thread Wrapper Border' : 'rgba(0,0,0,0)' + 'Reply Background' : 'rgba(27,27,27,1)' + 'Reply Border' : 'rgba(38,38,38,1)' + 'Highlighted Reply Background': 'rgba(17,17,17,1)' + 'Highlighted Reply Border' : 'rgba(17,17,17,1)' + 'Backlinked Reply Outline' : 'rgba(103,204,232,1)' + 'Checkbox Background' : 'rgba(51,51,51,1)' + 'Checkbox Border' : 'rgba(51,51,51,1)' + 'Input Background' : 'rgba(27,27,27,1)' + 'Input Border' : 'rgba(27,27,27,1)' + 'Focused Input Background' : 'rgba(27,27,27,1)' + 'Focused Input Border' : 'rgba(27,27,27,1)' + 'Hovered Input Background' : 'rgba(17,17,17,1)' + 'Hovered Input Border' : 'rgba(17,17,17,1)' + 'Checkbox Checked Background' : 'rgba(17,17,17,1)' + 'Buttons Background' : 'rgba(27,27,27,1)' + 'Buttons Border' : 'rgba(27,27,27,1)' + 'Navigation Background' : 'rgba(45,45,45,0.9)' + 'Navigation Border' : 'rgba(45,45,45,0.9)' + 'Links' : 'rgb(218,105,224)' + 'Hovered Links' : 'rgb(255,0,255)' + 'Navigation Links' : 'rgb(241,241,241)' + 'Hovered Navigation Links' : 'rgb(255,0,255)' + 'Subjects' : 'rgb(241,241,241)' + 'Names' : 'rgb(103,204,232)' + 'Sage' : 'rgb(103,204,232)' + 'Tripcodes' : 'rgb(103,204,232)' + 'Emails' : 'rgb(218,105,224)' + 'Post Numbers' : 'rgb(218,105,224)' + 'Text' : 'rgb(241,241,241)' + 'Quotelinks' : 'rgb(223,153,247)' + 'Backlinks' : 'rgb(223,153,247)' + 'Greentext' : 'rgb(108,204,102)' + 'Board Title' : 'rgb(103,204,232)' + 'Timestamps' : 'rgb(218,105,224)' + 'Inputs' : 'rgb(218,105,224)' + 'Warnings' : 'rgb(103,204,232)' + 'Shadow Color' : 'rgba(0,0,0,.1)' + 'Custom CSS' : """ +.reply.post { + box-shadow: inset 0px 1px 2px 1px #111; +} +#qr { + box-shadow: none; +} +#qr textarea, +#qr input[name="name"], +#qr input[name="email"], +#qr input[name="sub"], +#qr input[title="Verification"] { + box-shadow: inset 0px 1px 2px 0px #111; +} +#qp .post { + background-color: rgba(29,29,33,1); + border: 1px solid rgba(95,137,172,0.4); +} +""" + + 'Midnight Caek': + 'Author' : 'Zixaphir' + 'Author Tripcode' : '!M.........' + 'Background Color' : 'rgba(16,16,16,1)' + 'Thread Wrapper Background' : 'rgba(0,0,0,0)' + 'Thread Wrapper Border' : 'rgba(0,0,0,0)' + 'Dialog Background' : 'rgba(28,28,28,1)' + 'Dialog Border' : 'rgba(28,28,28,1)' + 'Reply Background' : 'rgba(28,28,28,1)' + 'Reply Border' : 'rgba(28,28,28,1)' + 'Highlighted Reply Background': 'rgba(24,24,24,1)' + 'Highlighted Reply Border' : 'rgba(24,24,24,1)' + 'Backlinked Reply Outline' : 'rgba(98,124,141,1)' + 'Input Background' : 'rgba(28,28,28,1)' + 'Input Border' : 'rgba(28,28,28,1)' + 'Hovered Input Background' : 'rgba(24,24,24,1)' + 'Hovered Input Border' : 'rgba(24,24,24,1)' + 'Focused Input Background' : 'rgba(16,16,16,1)' + 'Focused Input Border' : 'rgba(28,28,28,1)' + 'Checkbox Background' : 'rgba(0,0,0,1)' + 'Checkbox Border' : 'rgba(60,60,60,1)' + 'Checkbox Checked Background' : 'rgba(60,60,60,1)' + 'Buttons Background' : 'rgba(24,24,24,1)' + 'Buttons Border' : 'rgba(24,24,24,1)' + 'Navigation Background' : 'rgba(16,16,16,0.9)' + 'Navigation Border' : 'rgba(16,16,16,0.9)' + 'Quotelinks' : 'rgb(71,71,91)' + 'Backlinks' : 'rgb(66,66,71)' + 'Links' : 'rgb(87,87,123)' + 'Hovered Links' : 'rgb(71,71,91)' + 'Navigation Links' : 'rgb(144,144,144)' + 'Hovered Navigation Links' : 'rgb(71,71,91)' + 'Names' : 'rgb(124,45,45)' + 'Tripcodes' : 'rgb(62,113,87)' + 'Emails' : 'rgb(68,68,68)' + 'Subjects' : 'rgb(170,170,170)' + 'Text' : 'rgb(144,144,144)' + 'Inputs' : 'rgb(144,144,144)' + 'Post Numbers' : 'rgb(144,144,144)' + 'Greentext' : 'rgb(113,121,62)' + 'Sage' : 'rgb(68,68,68)' + 'Board Title' : 'rgb(144,144,144)' + 'Timestamps' : 'rgb(144,144,144)' + 'Warnings' : 'rgb(87,87,123)' + 'Shadow Color' : 'rgba(0,0,0,.1)' + 'Custom CSS' : '' + + 'Minimalistic Mayhem': + 'Author' : 'Mayhem' + 'Author Tripcode' : '!MayhemYDG.' + 'Background Image' : 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAAXNSR0IArs4c6QAAACdJREFUCNdNxzEBADAMwzCnOMwfWYDs2JNPCgCoH9m0zQa4jXob4AGJFwxchPNwQAAAAABJRU5ErkJggg==")' + 'Background Color' : 'rgba(25,25,25,1)' + 'Dialog Background' : 'rgba(34,34,34,1)' + 'Dialog Border' : 'rgba(41,41,41,1)' + 'Thread Wrapper Background' : 'rgba(34,34,34,1)' + 'Thread Wrapper Border' : 'rgba(0,0,0,1)' + 'Reply Background' : 'rgba(51,51,51,1)' + 'Reply Border' : 'rgba(17,17,17,1)' + 'Highlighted Reply Background': 'rgba(37,38,42,1)' + 'Highlighted Reply Border' : 'rgba(85,85,85,1)' + 'Backlinked Reply Outline' : 'rgba(98,124,141,1)' + 'Checkbox Background' : 'rgba(57,57,57,1)' + 'Checkbox Border' : 'rgba(25,25,25,1)' + 'Input Background' : 'rgba(34,34,34,1)' + 'Input Border' : 'rgba(21,21,21,1)' + 'Focused Input Background' : 'rgba(32,32,32,1)' + 'Focused Input Border' : 'rgba(102,102,102,1)' + 'Hovered Input Background' : 'rgba(24,24,24,1)' + 'Hovered Input Border' : 'rgba(21,21,21,1)' + 'Checkbox Checked Background' : 'rgba(57,57,57,1)' + 'Buttons Background' : 'rgba(32,32,32,1)' + 'Buttons Border' : 'rgba(16,16,16,1)' + 'Navigation Background' : 'rgba(26,26,26,0.9)' + 'Navigation Border' : 'rgba(26,26,26,0.9)' + 'Links' : 'rgb(85,156,122)' + 'Hovered Links' : 'rgb(199,222,26)' + 'Navigation Links' : 'rgb(144,144,144)' + 'Hovered Navigation Links' : 'rgb(198,23,230)' + 'Subjects' : 'rgb(72,98,115)' + 'Names' : 'rgb(46,136,166)' + 'Sage' : 'rgb(124,45,45)' + 'Tripcodes' : 'rgb(140,93,42)' + 'Emails' : 'rgb(174,43,41)' + 'Post Numbers' : 'rgb(137,115,153)' + 'Text' : 'rgb(221,221,221)' + 'Quotelinks' : 'rgb(139,164,70)' + 'Backlinks' : 'rgb(139,164,70)' + 'Greentext' : 'rgb(139,164,70)' + 'Board Title' : 'rgb(187,187,187)' + 'Timestamps' : 'rgb(221,221,221)' + 'Inputs' : 'rgb(187,187,187)' + 'Warnings' : 'rgb(87,87,123)' + 'Shadow Color' : 'rgba(0,0,0,.1)' + 'Custom CSS' : """ +.nameBlock > .useremail > postertrip { + color: rgb(137,115,153); +} +a.backlink:hover { + color: rgb(198,23,230); +} +.reply:target, +.reply.highlight:target { + background:rgb(37,38,42); +} +[alt="sticky"] + a { + color: rgb(242,141,0); +} +[alt="closed"] + a { + color: rgb(178,171,130); +} +input:checked .rice { + border-color:rgb(21,21,21); +} +input[type="submit"], +input[type="button"], +button { + background: linear-gradient(#393939, #292929); + border: 1px solid #191919; + color: #AAA; + text-shadow: 0 1px 1px #191919; +} +input[type="checkbox"], +input[type="radio"] { +background-color: #393939; + border: 1px solid #191919; +} +input[type="checkbox"]:checked, +input[type="radio"]:checked { + background: linear-gradient(#595959, #393939); + border: 1px solid #151515; +} +.thread { + padding: 7px; +} +.subject:hover, +div.post:hover .subject { + color: #3F8DBF !important; +} +.postertrip:hover, +div.post:hover .postertrip { + color:#CC7212 !important; +} +.name:hover, +div.post:hover .name { + color: #0AAEE7 !important; +} +.name, +.subject, +.postertrip { + -webkit-transition:color .3s ease-in-out; + -moz-transition:color .3s ease-in-out; + -o-transition:color .3s ease-in-out; +}""" + + 'ObsidianChan': + 'Author' : 'seaweed' + 'Author Tripcode' : '!POMF.9waa' + 'Background Image' : 'url("http://i.imgur.com/sbi8u.png")' + 'Background Attachment' : 'fixed' + 'Dialog Background' : 'rgba(0,0,0,0.7)' + 'Dialog Border' : 'rgba(0,0,0,0.7)' + 'Background Color' : 'rgba(0,0,0,1)' + 'Thread Wrapper Background' : 'rgba(0,0,0,0.3)' + 'Thread Wrapper Border' : 'rgba(51,51,51,1)' + 'Reply Background' : 'rgba(0,0,0,0.6)' + 'Reply Border' : 'rgba(0,0,0,0.6)' + 'Highlighted Reply Background': 'rgba(0,0,0,0.4)' + 'Highlighted Reply Border' : 'rgba(0,0,0,0.4)' + 'Backlinked Reply Outline' : 'rgba(98,124,141,1)' + 'Checkbox Background' : 'rgba(68,68,68,1)' + 'Checkbox Border' : 'rgba(68,68,68,1)' + 'Input Background' : 'rgba(0,0,0,0.6)' + 'Input Border' : 'rgba(0,0,0,0.6)' + 'Hovered Input Background' : 'rgba(0,0,0,0.4)' + 'Hovered Input Border' : 'rgba(0,0,0,0.4)' + 'Focused Input Background' : 'rgba(0,0,0,0.4)' + 'Focused Input Border' : 'rgba(0,0,0,0.4)' + 'Checkbox Checked Background' : 'rgba(255,0,127,1)' + 'Buttons Background' : 'rgba(0,0,0,0.4)' + 'Buttons Border' : 'rgba(0,0,0,0.4)' + 'Navigation Background' : 'rgba(0,0,0,0.7)' + 'Navigation Border' : 'rgba(0,0,0,0.7)' + 'Links' : 'rgb(0,255,255)' + 'Hovered Links' : 'rgb(0,255,255)' + 'Navigation Links' : 'rgb(253,254,255)' + 'Hovered Navigation Links' : 'rgb(253,254,255)' + 'Subjects' : 'rgb(144,144,144)' + 'Names' : 'rgb(253,254,255)' + 'Sage' : 'rgb(253,254,255)' + 'Tripcodes' : 'rgb(255,82,203)' + 'Emails' : 'rgb(0,255,255)' + 'Post Numbers' : 'rgb(0,255,255)' + 'Text' : 'rgb(253,254,255)' + 'Quotelinks' : 'rgb(0,255,255)' + 'Backlinks' : 'rgb(0,255,255)' + 'Greentext' : 'rgb(67,204,103)' + 'Board Title' : 'rgb(253,254,255)' + 'Timestamps' : 'rgb(253,254,255)' + 'Inputs' : 'rgb(253,254,255)' + 'Warnings' : 'rgb(0,255,255)' + 'Shadow Color' : 'rgba(0,0,0,.1)' + 'Custom CSS' : """ +#qp div.post{ + background-color:rgba(0,0,0,0.8); + border: 1px solid #333; +} +#qr { + background-color: rgba(0,0,0,0.7); + border: 1px solid #333; +} +""" + + 'PaisleyChan': + 'Author' : 'Ubuntufriend' + 'Author Tripcode' : '!TRip.C0d3' + 'Background Image' : 'url(http://i.imgur.com/DRaZf.jpg)' + 'Background Attachment' : 'fixed' + 'Background Repeat' : 'repeat' + 'Background Color' : 'rgba(19,19,19,1)' + 'Dialog Background' : 'rgba(16,16,16,1)' + 'Dialog Border' : 'rgba(16,16,16,1)' + 'Thread Wrapper Background' : 'rgba(52,56,56,0.3)' + 'Thread Wrapper Border' : 'rgba(52,56,56,0.3)' + 'Reply Background' : 'rgba(52,56,56,1)' + 'Reply Border' : 'rgba(0,0,0,0)' + 'Highlighted Reply Background': 'rgba(0,0,0,0)' + 'Highlighted Reply Border' : 'rgba(0,0,0,0)' + 'Backlinked Reply Outline' : 'rgba(98,124,141,1)' + 'Checkbox Background' : 'rgba(34,34,34,1)' + 'Checkbox Border' : 'rgba(60,60,60,1)' + 'Input Background' : 'rgba(28,28,28,1)' + 'Input Border' : 'rgba(28,28,28,1)' + 'Hovered Input Background' : 'rgba(24,24,24,1)' + 'Hovered Input Border' : 'rgba(24,24,24,1)' + 'Focused Input Background' : 'rgba(32,32,32,1)' + 'Focused Input Border' : 'rgba(32,32,32,1)' + 'Checkbox Checked Background' : 'rgba(34,34,34,1)' + 'Buttons Background' : 'rgba(32,32,32,1)' + 'Buttons Border' : 'rgba(32,32,32,1)' + 'Navigation Background' : 'rgba(16,16,16,0.9)' + 'Navigation Border' : 'rgba(16,16,16,0.9)' + 'Links' : 'rgb(187,187,187)' + 'Hovered Links' : 'rgb(0,223,252)' + 'Navigation Links' : 'rgb(153,153,153)' + 'Hovered Navigation Links' : 'rgb(0,223,252)' + 'Subjects' : 'rgb(170,170,170)' + 'Names' : 'rgb(128,172,206)' + 'Sage' : 'rgb(153,153,153)' + 'Tripcodes' : 'rgb(128,172,206)' + 'Emails' : 'rgb(187,187,187)' + 'Post Numbers' : 'rgb(153,153,153)' + 'Text' : 'rgb(153,153,153)' + 'Quotelinks' : 'rgb(212,212,212)' + 'Backlinks' : 'rgb(212,212,212)' + 'Greentext' : 'rgb(152,185,98)' + 'Board Title' : 'rgb(153,153,153)' + 'Timestamps' : 'rgb(153,153,153)' + 'Inputs' : 'rgb(153,153,153)' + 'Warnings' : 'rgb(187,187,187)' + 'Shadow Color' : 'rgba(0,0,0,.1)' + 'Custom CSS' : """ +#options { + background-color: rgba(16,16,16,1) !important; +} +#delform blockquote { + border-radius:3px; + color:#bbb; + background:#343838; + padding:8px; + box-shadow:0px 0px 20px rgba(25,25,25,0.6); + border:1px solid #343838; + border-bottom:2px solid #444848; + border-radius:0px 6px 6px 6px; + padding-top:15px; +} +.name { + font-weight:800; +} +.nameBlock > .useremail > .name:hover, +.nameBlock> .useremail> .postertrip:hover { + color:#00dffc; +} +a.forwardlink { + color:#608cae; + font-weight:800; +} +div.reply, +.reply.highlight { + padding:0; +} +#qp div.post { + border:1px solid rgba(128,172,206,0.5) !important; + background-color: rgba(24,24,24,0.9) !important; +} +.name, +.postertrip { + text-shadow:0px 0px 6px rgba(20,20,20,0.9); + font-weight:bold; + background:#343838; + border:1px solid #343838; + border-radius:5px 5px 0px 0px; + padding:4px 6px; + padding-top:2px; +} +.board, +.board blockquote { + margin:0 10px 15px 0 !important; + padding:0px; +} +a { + -moz-transition:all 0.5s ease; + -webkit-transition:all 0.5s ease; + -o-transition:all 0.5s ease; +} +a.pointer{ + font-weight:bold; + font-weight:normal; + color:#777; + padding-right:5px; +} +.thread .opContainer, +.thread .replyContainer { + opacity:0.45; + transition:all 0.5s ease; +} +.thread .opContainer:hover, +.thread .replyContainer:hover { + opacity:1; +} +.reply.post, +.reply.highlight { + background:transparent; + border:0px; + padding:0px; + padding-bottom:0px; + border-radius:6px; +} +#delform blockquote { + padding:5px; + background:#343838; + margin-top:0px; + min-height:20px; + padding-top:10px; + clear:none; +} + #delform .file + blockquote{ + margin-top:-16px !important; + padding-left:150px !important; +} +.file{ + margin-top: 2px; +} +a.backlink{ +border:1px solid #343838; +border-radius:5px 5px 0px 0px; +background:#343838; +padding:2px 4px 2px; + text-decoration:none; +} +a.forwardlink{ + color:#608CAE; + text-shadow:0 0 6px rgba(96,140,174,0.8); +} +.subject{ + font-weight: bold; + letter-spacing: 3px; + background: transparent; +} +.reply.post { + background-color: rgba(0,0,0,0) !important; + border: none !important; +} +#qp div.post .name, +#qp div.post a.backlink, +#qp div.post blockquote { + background:none !important; + border:none !important; + box-shadow:none !important; + border-radius:0px !important; +} +""" + + 'Photon': + 'Author' : 'seaweed' + 'Author Tripcode' : '!POMF.9waa' + 'Background Color' : 'rgba(238,238,238,1)' + 'Dialog Background' : 'rgba(238,238,238,1)' + 'Dialog Border' : 'rgba(204,204,204,1)' + 'Thread Wrapper Background' : 'rgba(0,0,0,0)' + 'Thread Wrapper Border' : 'rgba(0,0,0,0)' + 'Reply Background' : 'rgba(221,221,221,1)' + 'Reply Border' : 'rgba(204,204,204,1)' + 'Highlighted Reply Background': 'rgba(204,204,204,1)' + 'Highlighted Reply Border' : 'rgba(204,204,204,1)' + 'Backlinked Reply Outline' : 'rgba(98,124,141,1)' + 'Checkbox Background' : 'rgba(255,255,238)' + 'Checkbox Border' : 'rgba(255,255,238)' + 'Checkbox Checked Background' : 'rgba(188,192,212)' + 'Input Background' : 'rgba(255,255,255,1)' + 'Input Border' : 'rgba(204,204,204,1)' + 'Hovered Input Background' : 'rgba(204,204,204,1)' + 'Hovered Input Border' : 'rgba(204,204,204,1)' + 'Focused Input Background' : 'rgba(255,255,255,1)' + 'Focused Input Border' : 'rgba(0,74,153,1)' + 'Buttons Background' : 'rgba(255,255,238,1)' + 'Buttons Border' : 'rgba(204,204,204,1)' + 'Navigation Background' : 'rgba(238,238,238,0.9)' + 'Navigation Border' : 'rgba(238,238,238,0.9)' + 'Links' : 'rgb(255,102,0)' + 'Hovered Links' : 'rgb(255,51,0)' + 'Navigation Links' : 'rgb(17,17,17)' + 'Hovered Navigation Links' : 'rgb(255,51,0)' + 'Subjects' : 'rgb(17,17,17)' + 'Names' : 'rgb(0,74,153)' + 'Sage' : 'rgb(51,51,51)' + 'Tripcodes' : 'rgb(255,51,0)' + 'Emails' : 'rgb(255,102,0)' + 'Post Numbers' : 'rgb(51,51,51)' + 'Text' : 'rgb(51,51,51)' + 'Quotelinks' : 'rgb(17,17,17)' + 'Backlinks' : 'rgb(17,17,17)' + 'Greentext' : 'rgb(120,153,34)' + 'Board Title' : 'rgb(0,74,153)' + 'Timestamps' : 'rgb(51,51,51)' + 'Inputs' : 'rgb(0,0,0)' + 'Warnings' : 'rgb(51,51,51)' + 'Shadow Color' : 'rgba(0,0,0,.05)' + 'Custom CSS' : """ +.fileText{ + color: rgb(102,102,102); +} +.boardTitle { + color: #004a99 !important; + text-shadow: 1px 1px 1px #222 !important; +} +.boardSubtitle, +.boardBanner .boardSubtitle > a { + text-shadow: none !important; +} +""" + + 'RedUX': + 'Author' : 'Zixaphir' + 'Author Tripcode' : '!VGsTHECURE' + 'Background Image' : 'linear-gradient(rgba(210,210,210,0.7), rgba(240,240,240,0.4) 400px, rgba(240,240,240,0.3)), url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIQAAACEAQMAAABrihHkAAAABlBMVEX///8AAABVwtN+AAAAAnRSTlMASuCaZbYAAAA+SURBVHhe7c2xCQAgDAXRKywsHcFRdDNxchtBkhHk4Lp88ui7hhaztBCkyYZ7fFHzI/Jk/GRpaWlpaWlpaR3scHNQSY3kigAAAABJRU5ErkJggg==")' + 'Background Attachment' : 'fixed, scroll' + 'Background Position' : 'top, center' + 'Background Repeat' : 'no-repeat, repeat' + 'Background Color' : 'rgba(238,242,255,1)' + 'Thread Wrapper Background' : 'rgb(230,230,230)' + 'Thread Wrapper Border' : 'rgba(204,204,204,1)' + 'Dialog Background' : 'linear-gradient(rgb(222,222,222), rgb(240,240,240) 200px, rgb(240,240,240))' + 'Dialog Border' : 'rgb(220,210,210)' + 'Reply Background' : 'rgba(230,230,230,1)' + 'Reply Border' : 'rgba(204,204,204,1)' + 'Highlighted Reply Background': 'rgba(219,219,219,1)' + 'Highlighted Reply Border' : 'rgba(219,219,219,1)' + 'Backlinked Reply Outline' : 'rgba(98,124,141,1)' + 'Input Background' : 'linear-gradient(rgb(222,222,222), rgb(240,240,240)), rgb(240,240,240)' + 'Input Border' : 'rgb(220,210,210)' + 'Hovered Input Background' : 'linear-gradient(rgba(214,186,208,0.7), rgb(240,240,240)), rgb(240,240,240)' + 'Hovered Input Border' : 'rgba(214,186,208,1)' + 'Focused Input Background' : 'rgb(240,240,240)' + 'Focused Input Border' : 'rgb(220,210,210)' + 'Checkbox Background' : 'rgba(238,242,255,1)' + 'Checkbox Checked Background' : 'rgba(255,255,255,1)' + 'Checkbox Border' : 'rgba(180,180,180,1)' + 'Buttons Background' : 'linear-gradient(rgb(222,222,222), rgb(240,240,240)), rgb(240,240,240)' + 'Buttons Border' : 'rgb(220,210,210)' + 'Navigation Background' : 'rgba(230,230,230,0.8)' + 'Navigation Border' : 'rgba(204,204,204,1)' + 'Quotelinks' : 'rgb(153,51,51)' + 'Backlinks' : 'rgb(153,51,51)' + 'Links' : 'rgb(87,87,123)' + 'Hovered Links' : 'rgb(221,0,0)' + 'Navigation Links' : 'rgb(0,0,0)' + 'Hovered Navigation Links' : 'rgb(87,87,123)' + 'Names' : 'rgb(119,51,51)' + 'Tripcodes' : 'rgb(119,51,51)' + 'Emails' : 'rgb(87,87,123)' + 'Subjects' : 'rgb(15,12,93)' + 'Text' : 'rgb(0,0,0)' + 'Inputs' : 'rgb(0,0,0)' + 'Post Numbers' : 'rgb(0,0,0)' + 'Greentext' : 'rgb(34,133,34)' + 'Sage' : 'rgb(87,87,123)' + 'Board Title' : 'rgb(119,51,51)' + 'Timestamps' : 'rgb(0,0,0)' + 'Warnings' : 'rgb(87,87,123)' + 'Shadow Color' : 'rgba(0,0,0,.07)' + 'Custom CSS' : """ +.thread .reply { + background-color: transparent; + border-color: #ccc transparent transparent transparent; + border-style: solid; + border-radius: 0 !important; + margin-bottom: 0; +} +.thread .op { + padding: 0 3px; +} +#themes { + text-shadow: none; +} +#qp { + text-shadow: 1px 0 0 rgb(0,0,0), + 1px 1px 0 rgb(0,0,0), + 0 1px 0 rgb(0,0,0), + 1px 1px 2px rgb(0,0,0); +} +#qp .op.post, +#qp .reply.post { + border: 1px rgba(0,0,0,0.7) solid; + background: linear-gradient(to right, rgba(0,0,0,0.7), rgba(0,0,0,0.5)), transparent; +} +#qp div.post, +#qp .pln, +#qp .postNum a { + color: #fcd; +} +#qp .dateTime { + color: #fcd !important; +} +#qp .subject, +#qp .nameBlock > .useremail > .name, +#qp .nameBlock > .useremail > .postertrip, +#qp .name, +#qp .postertrip, +#qp .trip { + color: #ffaac0 !important; +} +#qp a { + color: #aaaac8; +} +.boardBanner a, +#qp a.backlink, +#qp span.quote > a.quotelink { + color: rgb(255,255,255); +} +#qp span.quote { + color: rgb(130,163,100); +} +.board { + box-shadow: 0 20px 40px 10px rgba(0,0,0,0.1); + border-radius: 4px; +} +:not(#themes) .rice { + box-shadow:rgba(170, 170, 170,0.3) 0 1px; +} +#qp .prettyprint { + background-color: rgba(0,0,0,0.3); + border: 1px solid rgba(0,0,0,0.5); +} +#qp span.tag { + color: #96562c; +} +#qp span.pun { + color: #5b6f2a; +} +#qp span.com { + color: #a34443; +} +#qp span.str, +#qp span.atv { + color: #8ba446; +} +#qp span.kwd { + color: #987d3e; +} +#qp span.typ, +#qp span.atn { + color: #897399; +} +#qp span.lit { + color: #558773; +} +""" + + 'Solarized': + 'Author' : 'ubuntufriend' + 'Author Tripcode' : '!TRip.C0d' + 'Background Color' : 'rgba(7,54,66,1)' + 'Dialog Background' : 'rgba(0,43,54,1)' + 'Dialog Border' : 'rgba(0,43,54,1)' + 'Thread Wrapper Background' : 'rgba(0,0,0,0)' + 'Thread Wrapper Border' : 'rgba(0,0,0,0)' + 'Reply Background' : 'rgba(0,43,54,1)' + 'Reply Border' : 'rgba(0,43,54,1)' + 'Highlighted Reply Background': 'rgba(7,54,66,1)' + 'Highlighted Reply Border' : 'rgba(7,54,66,1)' + 'Backlinked Reply Outline' : 'rgba(98,124,141,1)' + 'Checkbox Background' : 'rgba(88,110,117,1)' + 'Checkbox Border' : 'rgba(88,110,117,1)' + 'Checkbox Checked Background' : 'rgba(17,17,17,1)' + 'Input Background' : 'rgba(0,43,54,1)' + 'Input Border' : 'rgba(0,43,54,1)' + 'Hovered Input Background' : 'rgba(7,54,66,1)' + 'Hovered Input Border' : 'rgba(7,54,66,1)' + 'Focused Input Background' : 'rgba(7,54,66,1)' + 'Focused Input Border' : 'rgba(7,54,66,1)' + 'Buttons Background' : 'rgba(0,43,54,1)' + 'Buttons Border' : 'rgba(0,43,54,1)' + 'Navigation Background' : 'rgba(7,54,66,1)' + 'Navigation Border' : 'rgba(7,54,66,1)' + 'Links' : 'rgb(108,113,196)' + 'Hovered Links' : 'rgb(211,54,130)' + 'Navigation Links' : 'rgb(147,161,161)' + 'Hovered Navigation Links' : 'rgb(211,54,130)' + 'Subjects' : 'rgb(203,75,22)' + 'Names' : 'rgb(88,110,117)' + 'Sage' : 'rgb(108,113,196)' + 'Tripcodes' : 'rgb(42,161,152)' + 'Emails' : 'rgb(108,113,196)' + 'Post Numbers' : 'rgb(147,161,161)' + 'Text' : 'rgb(147,161,161)' + 'Quotelinks' : 'rgb(79,95,143)' + 'Backlinks' : 'rgb(79,95,143)' + 'Greentext' : 'rgb(133,153,0)' + 'Board Title' : 'rgb(147,161,161)' + 'Timestamps' : 'rgb(147,161,161)' + 'Inputs' : 'rgb(147,161,161)' + 'Warnings' : 'rgb(108,113,196)' + 'Shadow Color' : 'rgba(0,0,0,.1)' + 'Custom CSS' : """ +#qp div.post { + background-color:rgba(7,54,66,0.9); + border:1px solid rgba(79,95,143,0.9); +} +""" + + 'Yotsuba': + 'Author' : 'moot' + 'Author Tripcode' : '!Ep8pui8Vw2' + 'Background Image' : 'linear-gradient(rgb(254,214,175), rgb(255,255,238) 200px, rgb(255,255,238))' + 'Background Color' : 'rgba(255,255,238,1)' + 'Dialog Background' : 'rgba(240,224,214,1)' + 'Dialog Border' : 'rgba(217,191,183,1)' + 'Thread Wrapper Background' : 'rgba(0,0,0,0)' + 'Thread Wrapper Border' : 'rgba(0,0,0,0)' + 'Reply Background' : 'rgba(240,224,214,1)' + 'Reply Border' : 'rgba(217,191,183,1)' + 'Highlighted Reply Background': 'rgba(240,192,176,1)' + 'Highlighted Reply Border' : 'rgba(217,191,183,1)' + 'Backlinked Reply Outline' : 'rgba(98,124,141,1)' + 'Checkbox Background' : 'rgba(255,255,238,1)' + 'Checkbox Border' : 'rgba(217,191,183,1)' + 'Checkbox Checked Background' : 'rgba(255,255,238,1)' + 'Input Background' : 'rgba(240,224,214,1)' + 'Input Border' : 'rgba(217,191,183,1)' + 'Hovered Input Background' : 'rgba(240,224,214,1)' + 'Hovered Input Border' : 'rgba(217,191,183,1)' + 'Focused Input Background' : 'rgba(255,255,255,1)' + 'Focused Input Border' : 'rgba(128,0,0,1)' + 'Buttons Background' : 'rgba(240,192,176,1)' + 'Buttons Border' : 'rgba(217,191,183,1)' + 'Navigation Background' : 'rgba(240,192,176,0.7)' + 'Navigation Border' : 'rgba(217,191,183,1)' + 'Links' : 'rgb(186,0,0)' + 'Hovered Links' : 'rgb(221,0,0)' + 'Navigation Links' : 'rgb(128,0,0)' + 'Hovered Navigation Links' : 'rgb(221,0,0)' + 'Subjects' : 'rgb(204,17,5)' + 'Names' : 'rgb(17,119,67)' + 'Sage' : 'rgb(204,17,17)' + 'Tripcodes' : 'rgb(34,136,84)' + 'Emails' : 'rgb(186,0,0)' + 'Post Numbers' : 'rgb(128,0,0)' + 'Text' : 'rgb(128,0,0)' + 'Quotelinks' : 'rgb(221,0,0)' + 'Backlinks' : 'rgb(220,0,0)' + 'Greentext' : 'rgb(120,153,34)' + 'Board Title' : 'rgb(204,17,5)' + 'Timestamps' : 'rgb(186,0,0)' + 'Inputs' : 'rgb(0,0,0)' + 'Warnings' : 'rgb(128,0,0)' + 'Shadow Color' : 'rgba(0,0,0,.05)' + 'Custom CSS' : """ +#qp div.post { + background-color:rgba(240,192,176,1); + box-shadow:5px 5px 5px rgba(128,128,128,0.5); +} +.reply.post { + border-color: transparent rgba(240,224,214,1) rgba(240,224,214,1) transparent; +} +""" + + 'Yotsuba B': + 'Author' : 'moot' + 'Author Tripcode' : '!Ep8pui8Vw2' + 'Background Image' : 'linear-gradient(rgb(209,213,238), rgb(238,242,255) 200px, rgb(238,242,255))' + 'Background Color' : 'rgba(238,242,255,1)' + 'Dialog Background' : 'rgba(214,218,240,1)' + 'Dialog Border' : 'rgba(183,197,217,1)' + 'Thread Wrapper Background' : 'rgba(0,0,0,0)' + 'Thread Wrapper Border' : 'rgba(0,0,0,0)' + 'Reply Background' : 'rgba(214,218,240,1)' + 'Reply Border' : 'rgba(183,197,217,1)' + 'Highlighted Reply Background': 'rgba(214,186,208,1)' + 'Highlighted Reply Border' : 'rgba(183,197,217,1)' + 'Backlinked Reply Outline' : 'rgba(98,124,141,1)' + 'Checkbox Background' : 'rgba(238,242,255,1)' + 'Checkbox Border' : 'rgba(183,197,217,1)' + 'Checkbox Checked Background' : 'rgba(188,192,212,1)' + 'Input Background' : 'rgba(238,242,255,1)' + 'Input Border' : 'rgba(183,197,217,1)' + 'Hovered Input Background' : 'rgba(214,186,208,1)' + 'Hovered Input Border' : 'rgba(183,197,217,1)' + 'Focused Input Background' : 'rgba(214,218,240,1)' + 'Focused Input Border' : 'rgba(153,136,238,1)' + 'Buttons Background' : 'rgba(214,218,240,1)' + 'Buttons Border' : 'rgba(183,197,217,1)' + 'Navigation Background' : 'rgba(211,215,238,0.7)' + 'Navigation Border' : 'rgba(183,197,217,1)' + 'Links' : 'rgb(52,52,92)' + 'Hovered Links' : 'rgb(221,0,0)' + 'Navigation Links' : 'rgb(0,0,0)' + 'Hovered Navigation Links' : 'rgb(221,0,0)' + 'Subjects' : 'rgb(15,12,93)' + 'Names' : 'rgb(17,119,67)' + 'Sage' : 'rgb(153,0,0)' + 'Tripcodes' : 'rgb(34,136,84)' + 'Emails' : 'rgb(87,87,123)' + 'Post Numbers' : 'rgb(0,0,0)' + 'Text' : 'rgb(0,0,0)' + 'Quotelinks' : 'rgb(221,0,0)' + 'Backlinks' : 'rgb(52,52,92)' + 'Greentext' : 'rgb(120,153,34)' + 'Board Title' : 'rgb(175,10,15)' + 'Timestamps' : 'rgb(0,0,0)' + 'Inputs' : 'rgb(0,0,0)' + 'Warnings' : 'rgb(87,87,123)' + 'Shadow Color' : 'rgba(0,0,0,.05)' + 'Custom CSS' : """ +#qp div.post { + background-color:rgba(214,186,208,1); + box-shadow:5px 5px 5px rgba(128,128,128,0.5); +} +.reply.post { + border-color: transparent rgba(183,197,217,1) rgba(183,197,217,1) transparent; +} +""" + + 'Zenburned': + 'Author' : 'lazy' + 'Author Tripcode' : '!HONKYn7h1.' + 'Background Color' : 'rgba(63,63,63,1)' + 'Dialog Background' : 'rgba(87,87,87,1)' + 'Dialog Border' : 'rgba(87,87,87,1)' + 'Thread Wrapper Background' : 'rgba(0,0,0,0)' + 'Thread Wrapper Border' : 'rgba(0,0,0,0)' + 'Reply Background' : 'rgba(87,87,87,1)' + 'Reply Border' : 'rgba(87,87,87,1)' + 'Highlighted Reply Background': 'rgba(38,38,38,1)' + 'Highlighted Reply Border' : 'rgba(38,38,38,1)' + 'Backlinked Reply Outline' : 'rgba(98,124,141,1)' + 'Checkbox Background' : 'rgba(63,63,63,1)' + 'Checkbox Border' : 'rgba(136,136,136,1)' + 'Checkbox Checked Background' : 'rgba(17,17,17,1)' + 'Input Background' : 'rgba(87,87,87,1)' + 'Input Border' : 'rgba(136,136,136,1)' + 'Hovered Input Background' : 'rgba(38,38,38,1)' + 'Hovered Input Border' : 'rgba(38,38,38,1)' + 'Focused Input Background' : 'rgba(38,38,38,1)' + 'Focused Input Border' : 'rgba(153,136,238,1)' + 'Buttons Background' : 'rgba(49,60,54,1)' + 'Buttons Border' : 'rgba(136,136,136,1)' + 'Navigation Background' : 'rgba(63,63,63,0.9)' + 'Navigation Border' : 'rgba(63,63,63,0.9)' + 'Links' : 'rgb(239,220,188)' + 'Hovered Links' : 'rgb(248,248,147)' + 'Navigation Links' : 'rgb(220,220,204)' + 'Hovered Navigation Links' : 'rgb(248,248,147)' + 'Subjects' : 'rgb(170,170,170)' + 'Names' : 'rgb(192,190,209)' + 'Sage' : 'rgb(220,220,204)' + 'Tripcodes' : 'rgb(140,208,211)' + 'Emails' : 'rgb(239,220,188)' + 'Post Numbers' : 'rgb(220,220,204)' + 'Text' : 'rgb(220,220,204)' + 'Quotelinks' : 'rgb(220,163,163)' + 'Backlinks' : 'rgb(220,163,163)' + 'Greentext' : 'rgb(127,159,127)' + 'Board Title' : 'rgb(220,220,204)' + 'Timestamps' : 'rgb(220,220,204)' + 'Inputs' : 'rgb(220,220,204)' + 'Warnings' : 'rgb(239,220,188)' + 'Shadow Color' : 'rgba(0,0,0,.1)' + 'Custom CSS' : '' + + "ピンク": + "Author" : "DrooidKun" + "Author Tripcode" : "!/Apk/MRkGM" + "Background Color" : "rgb(255,255,255)" + "Dialog Background" : "rgba(242,242,242,.98)" + "Dialog Border" : "rgb(240,240,240)" + "Thread Wrapper Background" : "rgba(0,0,0,0)" + "Thread Wrapper Border" : "rgba(0,0,0,0)" + "Reply Background" : "rgba(242,242,242,1.0)" + "Reply Border" : "rgb(240,240,240)" + "Highlighted Reply Background": "rgba(238,238,238,1.0)" + "Highlighted Reply Border" : "rgb(191,122,180)" + "Backlinked Reply Outline" : "rgb(191,122,180)" + "Checkbox Background" : "rgba(240,240,240,1.0)" + "Checkbox Border" : "rgb(222,222,222)" + "Checkbox Checked Background" : "rgb(240,240,240)" + "Input Background" : "rgba(240,240,240,1.0)" + "Input Border" : "rgb(222,222,222)" + "Hovered Input Background" : "rgba(224,224,224,1.0)" + "Hovered Input Border" : "rgb(222,222,222)" + "Focused Input Background" : "rgba(224,224,224,1.0)" + "Focused Input Border" : "rgb(222,222,222)" + "Buttons Background" : "rgba(240,240,240,1.0)" + "Buttons Border" : "rgb(222,222,222)" + "Navigation Background" : "rgba(255,255,255,0.8)" + "Navigation Border" : "rgb(242,242,242)" + "Quotelinks" : "rgb(191,122,180)" + "Links" : "rgb(191,122,180)" + "Hovered Links" : "rgb(198,105,201)" + "Navigation Links" : "rgb(77,77,76)" + "Hovered Navigation Links" : "rgb(198,105,201)" + "Subjects" : "rgb(77,77,77)" + "Names" : "rgb(204,94,193)" + "Sage" : "rgb(200,40,41)" + "Tripcodes" : "rgb(198,105,201)" + "Emails" : "rgb(191,122,180)" + "Post Numbers" : "rgb(191,122,180)" + "Text" : "rgb(77,77,76)" + "Backlinks" : "rgb(191,122,180)" + "Greentext" : "rgb(113,140,0)" + "Board Title" : "rgb(77,77,76)" + "Timestamps" : "rgb(77,77,76)" + "Inputs" : "rgb(77,77,76)" + "Warnings" : "rgb(200,40,41)" + "Shadow Color" : "rgba(0,0,0,0.05)" + "Custom CSS" : """ +.rice { + box-shadow:rgba(255,255,255,.3) 0 1px; +} +nput[type=password]:hover, +input[type=text]:not([disabled]):hover, +input#fs_search:hover, +input.field:hover, +.webkit select:hover, +textarea:hover, +#options input:not([type=checkbox]):hover { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +input[type=password]:focus, +input[type=text]:focus, +input#fs_search:focus, +input.field:focus, +.webkit select:focus, +textarea:focus, +#options input:focus { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +button, +input, +textarea, +.rice { + transition:background .2s,box-shadow .2s; +} +.boardTitle { + color: #cc5ec1 !important; + text-shadow: 1px 1px 1px #772E28 !important; +} +.boardSubtitle, +.boardBanner .boardSubtitle > a { + text-shadow: none !important; +} +""" + + "Yotsuba Purple": + "Author" : "seaweed" + "Author Tripcode" : "!POMF.9waa" + "Background Image" : "linear-gradient(rgba(238,221,255,1.0), rgba(248,243,254,1) 200px, rgba(248,243,254,1))" + "Background Color" : "rgb(248,243,254)" + "Dialog Background" : "rgba(238,221,255,.98)" + "Dialog Border" : "rgb(202,183,217)" + "Thread Wrapper Background" : "rgba(0,0,0,0)" + "Thread Wrapper Border" : "rgba(0,0,0,0)" + "Reply Background" : "rgba(238,221,255,1.0)" + "Reply Border" : "rgb(202,183,217)" + "Highlighted Reply Background": "rgba(234,217,251,1.0)" + "Highlighted Reply Border" : "rgb(150,37,148)" + "Backlinked Reply Outline" : "rgb(150,37,148)" + "Checkbox Background" : "rgba(255,255,255,1.0)" + "Checkbox Border" : "rgb(202,183,217)" + "Checkbox Checked Background" : "rgb(255,255,255)" + "Input Background" : "rgba(255,255,255,1.0)" + "Input Border" : "rgb(202,183,217)" + "Hovered Input Background" : "rgba(239,239,239,1.0)" + "Hovered Input Border" : "rgb(202,183,217)" + "Focused Input Background" : "rgba(239,239,239,1.0)" + "Focused Input Border" : "rgb(202,183,217)" + "Buttons Background" : "rgba(255,255,255,1.0)" + "Buttons Border" : "rgb(202,183,217)" + "Navigation Background" : "rgba(229, 219, 240,.9)" + "Navigation Border" : "rgb(238,221,255)" + "Quotelinks" : "rgb(150,37,148)" + "Links" : "rgb(150,37,148)" + "Hovered Links" : "rgb(178,44,170)" + "Navigation Links" : "rgb(0,0,0)" + "Hovered Navigation Links" : "rgb(178,44,170)" + "Subjects" : "rgb(15,12,93)" + "Names" : "rgb(89,17,119)" + "Sage" : "rgb(153,0,0)" + "Tripcodes" : "rgb(178,44,170)" + "Emails" : "rgb(150,37,148)" + "Post Numbers" : "rgb(150,37,148)" + "Text" : "rgb(0,0,0)" + "Backlinks" : "rgb(150,37,148)" + "Greentext" : "rgb(120,153,34)" + "Board Title" : "rgb(0,0,0)" + "Timestamps" : "rgb(0,0,0)" + "Inputs" : "rgb(0,0,0)" + "Warnings" : "rgb(153,0,0)" + "Shadow Color" : "rgba(0,0,0,.05)" + "Custom CSS" : """ +.rice { + box-shadow:rgba(255,253,255,.3) 0 1px; +} +input[type=password]:hover, +input[type=text]:not([disabled]):hover, +input#fs_search:hover, +input.field:hover, +.webkit select:hover, +textarea:hover, +#options input:not([type=checkbox]):hover { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +input[type=password]:focus, +input[type=text]:focus, +input#fs_search:focus, +input.field:focus, +.webkit select:focus, +textarea:focus, +#options input:focus { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +button, +input, +textarea, +.rice { + transition:background .2s,box-shadow .2s; +} +.boardTitle { + color: #591177 !important; + text-shadow: 1px 1px 1px #222 !important; +} +.boardSubtitle, +.boardBanner .boardSubtitle > a { + text-shadow: none !important; +} +.postNum a { + color: #000000 !important; +} +.reply.post { + border-color: transparent rgb(202,183,217) rgb(202,183,217) transparent; +} +""" + + "Vimyanized Dark": + "Author" : "seaweed" + "Author Tripcode" : "!POMF.9waa" + "Background Color" : "rgb(9,13,15)" + "Dialog Background" : "rgba(13,17,20,.98)" + "Dialog Border" : "rgb(11,19,22)" + "Thread Wrapper Background" : "rgba(13,17,20,.5)" + "Thread Wrapper Border" : "rgba(11,19,22,.9)" + "Reply Background" : "rgba(13,17,20,.9)" + "Reply Border" : "rgb(11,19,22)" + "Highlighted Reply Background": "rgba(9,13,16,.9)" + "Highlighted Reply Border" : "rgb(83,189,177)" + "Backlinked Reply Outline" : "rgb(83,189,177)" + "Checkbox Background" : "rgba(9,13,15,.9)" + "Checkbox Border" : "rgb(11,19,22)" + "Checkbox Checked Background" : "rgb(9,13,15)" + "Input Background" : "rgba(9,13,15,.9)" + "Input Border" : "rgb(11,19,22)" + "Hovered Input Background" : "rgba(0,0,0,.9)" + "Hovered Input Border" : "rgb(11,19,22)" + "Focused Input Background" : "rgba(0,0,0,.9)" + "Focused Input Border" : "rgb(11,19,22)" + "Buttons Background" : "rgba(9,13,15,.9)" + "Buttons Border" : "rgb(11,19,22)" + "Navigation Background" : "rgba(9,13,15,0.8)" + "Navigation Border" : "rgb(13,17,20)" + "Quotelinks" : "rgb(83,189,177)" + "Links" : "rgb(83,189,177)" + "Hovered Links" : "rgb(48,144,181)" + "Navigation Links" : "rgb(248,248,248)" + "Hovered Navigation Links" : "rgb(48,144,181)" + "Subjects" : "rgb(184,140,209)" + "Names" : "rgb(214,62,52)" + "Sage" : "rgb(79,79,79)" + "Tripcodes" : "rgb(212,182,60)" + "Emails" : "rgb(83,189,177)" + "Post Numbers" : "rgb(83,189,177)" + "Text" : "rgb(248,248,248)" + "Backlinks" : "rgb(83,189,177)" + "Greentext" : "rgb(150,200,59)" + "Board Title" : "rgb(248,248,248)" + "Timestamps" : "rgb(221,221,221)" + "Inputs" : "rgb(248,248,248)" + "Warnings" : "rgb(79,79,79)" + "Shadow Color" : "rgba(0,0,0,.1)" + "Custom CSS" : """ +.thread { + padding: 1px; +} +.rice { + box-shadow:rgba(45,49,52,.3) 0 1px; +} +input[type=password]:hover, +input[type=text]:not([disabled]):hover, +input#fs_search:hover, +input.field:hover, +.webkit select:hover, +textarea:hover, +#options input:not([type=checkbox]):hover { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +input[type=password]:focus, +input[type=text]:focus, +input#fs_search:focus, +input.field:focus, +.webkit select:focus, +textarea:focus, +#options input:focus { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +button, +input, +textarea, +.rice { + transition:background .2s,box-shadow .2s; +} +""" + + "Tomorrow Night": + "Author" : "Chris Kempson" + "Author Tripcode" : "!.pC/AHOKAg" + "Background Color" : "rgb(29,31,33)" + "Dialog Background" : "rgba(40,42,46,.98)" + "Dialog Border" : "rgb(55,59,65)" + "Thread Wrapper Background" : "rgba(40,42,46,.5)" + "Thread Wrapper Border" : "rgba(55,59,65,.9)" + "Reply Background" : "rgba(40,42,46,.9)" + "Reply Border" : "rgb(55,59,65)" + "Highlighted Reply Background": "rgba(36,38,42,.9)" + "Highlighted Reply Border" : "rgb(129,162,190)" + "Backlinked Reply Outline" : "rgb(129,162,190)" + "Checkbox Background" : "rgba(40,42,46,.9)" + "Checkbox Border" : "rgb(29,31,33)" + "Checkbox Checked Background" : "rgb(40,42,46)" + "Input Background" : "rgba(40,42,46,.9)" + "Input Border" : "rgb(29,31,33)" + "Hovered Input Background" : "rgba(24,26,30,.9)" + "Hovered Input Border" : "rgb(29,31,33)" + "Focused Input Background" : "rgba(24,26,30,.9)" + "Focused Input Border" : "rgb(29,31,33)" + "Buttons Background" : "rgba(40,42,46,.9)" + "Buttons Border" : "rgb(29,31,33)" + "Navigation Background" : "rgba(29,31,33,0.8)" + "Navigation Border" : "rgb(40,42,46)" + "Quotelinks" : "rgb(129,162,190)" + "Links" : "rgb(129,162,190)" + "Hovered Links" : "rgb(204,102,102)" + "Navigation Links" : "rgb(197,200,198)" + "Hovered Navigation Links" : "rgb(204,102,102)" + "Subjects" : "rgb(178,148,187)" + "Names" : "rgb(129,162,190)" + "Sage" : "rgb(204,102,102)" + "Tripcodes" : "rgb(138,190,183)" + "Emails" : "rgb(129,162,190)" + "Post Numbers" : "rgb(129,162,190)" + "Text" : "rgb(197,200,198)" + "Backlinks" : "rgb(129,162,190)" + "Greentext" : "rgb(181,189,104)" + "Board Title" : "rgb(197,200,198)" + "Timestamps" : "rgb(197,200,198)" + "Inputs" : "rgb(197,200,198)" + "Warnings" : "rgb(204,102,102)" + "Shadow Color" : "rgba(0,0,0,.1)" + "Custom CSS" : """ +.thread { + padding: 1px; +} +.rice { + box-shadow:rgba(72,74,78,.3) 0 1px; +} +input[type=password]:hover, +input[type=text]:not([disabled]):hover, +input#fs_search:hover, +input.field:hover, +.webkit select:hover, +textarea:hover, +#options input:not([type=checkbox]):hover { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +input[type=password]:focus, +input[type=text]:focus, +input#fs_search:focus, +input.field:focus, +.webkit select:focus, +textarea:focus, +#options input:focus { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +button, +input, +textarea, +.rice { + transition:background .2s,box-shadow .2s; +} +""" + + "Solarized Light": + "Author" : "seaweed" + "Author Tripcode" : "!POMF.9waa" + "Background Color" : "rgb(240,240,240)" + "Dialog Background" : "rgba(253,246,227,.98)" + "Dialog Border" : "rgb(230,223,206)" + "Thread Wrapper Background" : "rgba(0,0,0,0)" + "Thread Wrapper Border" : "rgba(0,0,0,0)" + "Reply Background" : "rgba(253,246,227,1.0)" + "Reply Border" : "rgb(230,223,206)" + "Highlighted Reply Background": "rgba(249,242,223,1.0)" + "Highlighted Reply Border" : "rgb(108,113,196)" + "Backlinked Reply Outline" : "rgb(108,113,196)" + "Checkbox Background" : "rgba(255,255,255,1.0)" + "Checkbox Border" : "rgb(204,204,204)" + "Checkbox Checked Background" : "rgb(255,255,255)" + "Input Background" : "rgba(255,255,255,1.0)" + "Input Border" : "rgb(204,204,204)" + "Hovered Input Background" : "rgba(239,239,239,1.0)" + "Hovered Input Border" : "rgb(204,204,204)" + "Focused Input Background" : "rgba(239,239,239,1.0)" + "Focused Input Border" : "rgb(204,204,204)" + "Buttons Background" : "rgba(255,255,255,1.0)" + "Buttons Border" : "rgb(204,204,204)" + "Navigation Background" : "rgba(240,240,240,0.8)" + "Navigation Border" : "rgb(253,246,227)" + "Quotelinks" : "rgb(108,113,196)" + "Links" : "rgb(108,113,196)" + "Hovered Links" : "rgb(211,54,130)" + "Navigation Links" : "rgb(101,123,131)" + "Hovered Navigation Links" : "rgb(211,54,130)" + "Subjects" : "rgb(181,137,0)" + "Names" : "rgb(101,123,131)" + "Sage" : "rgb(153,0,0)" + "Tripcodes" : "rgb(42,161,152)" + "Emails" : "rgb(108,113,196)" + "Post Numbers" : "rgb(108,113,196)" + "Text" : "rgb(101,123,131)" + "Backlinks" : "rgb(108,113,196)" + "Greentext" : "rgb(133,153,0)" + "Board Title" : "rgb(101,123,131)" + "Timestamps" : "rgb(101,123,131)" + "Inputs" : "rgb(101,123,131)" + "Warnings" : "rgb(153,0,0)" + "Shadow Color" : "rgba(0,0,0,.05)" + "Custom CSS" : """ +.rice { + box-shadow:rgba(255,255,255,.3) 0 1px; +} +input[type=password]:hover, +input[type=text]:not([disabled]):hover, +input#fs_search:hover, +input.field:hover, +.webkit select:hover, +textarea:hover, +#options input:not([type=checkbox]):hover { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +input[type=password]:focus, +input[type=text]:focus, +input#fs_search:focus, +input.field:focus, +.webkit select:focus, +textarea:focus, +#options input:focus { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +button, +input, +textarea, +.rice { + transition:background .2s,box-shadow .2s; +} +.boardTitle { + color: #b58900 !important; + text-shadow: 1px 1px 1px #999 !important; +} +.boardSubtitle, +.boardBanner .boardSubtitle > a { + text-shadow: none !important; +} +.postNum a { + color: #657b83 !important; +} +""" + + "Muted": + "Author" : "seaweed" + "Author Tripcode" : "!POMF.9waa" + "Background Color" : "rgb(255,255,255)" + "Dialog Background" : "rgba(245,242,233,.98)" + "Dialog Border" : "rgb(204,204,204)" + "Thread Wrapper Background" : "rgba(245,242,233,.5)" + "Thread Wrapper Border" : "rgba(204,204,204,.9)" + "Reply Background" : "rgba(245,242,233,.9)" + "Reply Border" : "rgb(204,204,204)" + "Highlighted Reply Background": "rgba(241,238,229,.9)" + "Highlighted Reply Border" : "rgb(188,49,42)" + "Backlinked Reply Outline" : "rgb(188,49,42)" + "Checkbox Background" : "rgba(255,255,255,.9)" + "Checkbox Border" : "rgb(204,204,204)" + "Checkbox Checked Background" : "rgb(255,255,255)" + "Input Background" : "rgba(255,255,255,.9)" + "Input Border" : "rgb(204,204,204)" + "Hovered Input Background" : "rgba(239,239,239,.9)" + "Hovered Input Border" : "rgb(204,204,204)" + "Focused Input Background" : "rgba(239,239,239,.9)" + "Focused Input Border" : "rgb(204,204,204)" + "Buttons Background" : "rgba(255,255,255,.9)" + "Buttons Border" : "rgb(204,204,204)" + "Navigation Background" : "rgba(255,255,255,0.8)" + "Navigation Border" : "rgb(245,242,233)" + "Quotelinks" : "rgb(188,49,42)" + "Links" : "rgb(188,49,42)" + "Hovered Links" : "rgb(142,34,32)" + "Navigation Links" : "rgb(57,55,53)" + "Hovered Navigation Links" : "rgb(142,34,32)" + "Subjects" : "rgb(17,17,17)" + "Names" : "rgb(44,100,160)" + "Sage" : "rgb(153,0,0)" + "Tripcodes" : "rgb(204,101,99)" + "Emails" : "rgb(188,49,42)" + "Post Numbers" : "rgb(188,49,42)" + "Text" : "rgb(57,55,53)" + "Backlinks" : "rgb(188,49,42)" + "Greentext" : "rgb(120,153,34)" + "Board Title" : "rgb(57,55,53)" + "Timestamps" : "rgb(51,51,51)" + "Inputs" : "rgb(57,55,53)" + "Warnings" : "rgb(153,0,0)" + "Shadow Color" : "rgba(0,0,0,.05)" + "Custom CSS" : """ +.thread { + padding: 1px; +} +.rice { + box-shadow:rgba(255,255,255,.3) 0 1px; +} +input[type=password]:hover, +input[type=text]:not([disabled]):hover, +input#fs_search:hover, +input.field:hover, +.webkit select:hover, +textarea:hover, +#options input:not([type=checkbox]):hover { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +input[type=password]:focus, +input[type=text]:focus, +input#fs_search:focus, +input.field:focus, +.webkit select:focus, +textarea:focus, +#options input:focus { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +button, +input, +textarea, +.rice { + transition:background .2s,box-shadow .2s; +} +.boardTitle{ +color:#bc312a!important; + text-shadow:1px 1px 1px #772e28 !important; +} +.boardSubtitle, +.boardBanner .boardSubtitle > a { + text-shadow:none!important; +} +.postNum a { + color:#111111!important; +} +div.reply a.quotelink{ + color:#bc312a!important; +} +""" + + "Monokai": + "Author" : "seaweed" + "Author Tripcode" : "!POMF.9waa" + "Background Color" : "rgb(32,33,28)" + "Dialog Background" : "rgba(39,40,34,.98)" + "Dialog Border" : "rgb(45,46,39)" + "Thread Wrapper Background" : "rgba(0,0,0,0)" + "Thread Wrapper Border" : "rgba(0,0,0,0)" + "Reply Background" : "rgba(39,40,34,1.0)" + "Reply Border" : "rgb(45,46,39)" + "Highlighted Reply Background": "rgba(35,36,30,1.0)" + "Highlighted Reply Border" : "rgb(226,219,116)" + "Backlinked Reply Outline" : "rgb(226,219,116)" + "Checkbox Background" : "rgba(32,33,28,1.0)" + "Checkbox Border" : "rgb(23,23,19)" + "Checkbox Checked Background" : "rgb(32,33,28)" + "Input Background" : "rgba(32,33,28,1.0)" + "Input Border" : "rgb(23,23,19)" + "Hovered Input Background" : "rgba(16,17,12,1.0)" + "Hovered Input Border" : "rgb(23,23,19)" + "Focused Input Background" : "rgba(16,17,12,1.0)" + "Focused Input Border" : "rgb(23,23,19)" + "Buttons Background" : "rgba(32,33,28,1.0)" + "Buttons Border" : "rgb(23,23,19)" + "Navigation Background" : "rgba(32,33,28,0.8)" + "Navigation Border" : "rgb(39,40,34)" + "Quotelinks" : "rgb(226,219,116)" + "Links" : "rgb(226,219,116)" + "Hovered Links" : "rgb(174,129,255)" + "Navigation Links" : "rgb(248,248,242)" + "Hovered Navigation Links" : "rgb(174,129,255)" + "Subjects" : "rgb(174,129,255)" + "Names" : "rgb(90,192,204)" + "Sage" : "rgb(79,79,79)" + "Tripcodes" : "rgb(250,130,32)" + "Emails" : "rgb(226,219,116)" + "Post Numbers" : "rgb(226,219,116)" + "Text" : "rgb(248,248,242)" + "Backlinks" : "rgb(226,219,116)" + "Greentext" : "rgb(162,204,40)" + "Board Title" : "rgb(248,248,242)" + "Timestamps" : "rgb(248,248,242)" + "Inputs" : "rgb(248,248,242)" + "Warnings" : "rgb(79,79,79)" + "Shadow Color" : "rgba(0,0,0,.12)" + "Custom CSS" : """ +.rice { + box-shadow:rgba(71,72,66,.3) 0 1px; +} +input[type=password]:hover, +input[type=text]:not([disabled]):hover, +input#fs_search:hover, +input.field:hover, +.webkit select:hover, +textarea:hover, +#options input:not([type=checkbox]):hover { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +input[type=password]:focus, +input[type=text]:focus, +input#fs_search:focus, +input.field:focus, +.webkit select:focus, +textarea:focus, +#options input:focus { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +button, +input, +textarea, +.rice { + transition:background .2s,box-shadow .2s; +} +""" + + "Dark Flat": + "Author" : "Ahoka" + "Author Tripcode" : "!.pC/AHOKAg" + "Background Image" : "url(\"data:image/gif;base64,R0lGODlhAwADAIAAAB0dHRkZGSH5BADoAwAALAAAAAADAAMAAAIDDG5YADs=\")" + "Background Attachment" : "fixed" + "Background Position" : "top left" + "Background Repeat" : "repeat" + "Background Color" : "rgb(32,32,32)" + "Dialog Background" : "rgba(35,36,37,.98)" + "Dialog Border" : "rgb(41,42,43)" + "Thread Wrapper Background" : "rgba(35,36,37,.5)" + "Thread Wrapper Border" : "rgba(41,42,43,.9)" + "Reply Background" : "rgba(35,36,37,.9)" + "Reply Border" : "rgba(35,36,37,.9)" + "Highlighted Reply Background": "rgba(31,32,33,.9)" + "Highlighted Reply Border" : "rgb(172,155,176)" + "Backlinked Reply Outline" : "rgb(172,155,176)" + "Checkbox Background" : "rgba(24,25,26,.9)" + "Checkbox Border" : "rgb(18,19,20)" + "Checkbox Checked Background" : "rgb(24,25,26)" + "Input Background" : "rgba(24,25,26,.9)" + "Input Border" : "rgb(18,19,20)" + "Hovered Input Background" : "rgba(8,9,10,.9)" + "Hovered Input Border" : "rgb(18,19,20)" + "Focused Input Background" : "rgba(8,9,10,.9)" + "Focused Input Border" : "rgb(18,19,20)" + "Buttons Background" : "rgba(24,25,26,.9)" + "Buttons Border" : "rgb(18,19,20)" + "Navigation Background" : "rgba(32,32,32,0.8)" + "Navigation Border" : "rgb(35,36,37)" + "Quotelinks" : "rgb(172,155,176)" + "Links" : "rgb(172,155,176)" + "Hovered Links" : "rgb(111,153,180)" + "Navigation Links" : "rgb(221,221,221)" + "Hovered Navigation Links" : "rgb(111,153,180)" + "Subjects" : "rgb(147,144,201)" + "Names" : "rgb(168,198,217)" + "Sage" : "rgb(201,144,144)" + "Tripcodes" : "rgb(212,192,149)" + "Emails" : "rgb(172,155,176)" + "Post Numbers" : "rgb(172,155,176)" + "Text" : "rgb(221,221,221)" + "Backlinks" : "rgb(172,155,176)" + "Greentext" : "rgb(179,196,94)" + "Board Title" : "rgb(221,221,221)" + "Timestamps" : "rgb(221,221,221)" + "Inputs" : "rgb(221,221,221)" + "Warnings" : "rgb(201,144,144)" + "Shadow Color" : "rgba(0,0,0,.1)" + "Custom CSS" : """ +.thread { + padding: 1px; +} +.rice { + box-shadow:rgba(67,68,69,.3) 0 1px; +} +input[type=password]:hover, +input[type=text]:not([disabled]):hover, +input#fs_search:hover, +input.field:hover, +.webkit select:hover, +textarea:hover, +#options input:not([type=checkbox]):hover { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +input[type=password]:focus, +input[type=text]:focus, +input#fs_search:focus, +input.field:focus, +.webkit select:focus, +textarea:focus, +#options input:focus { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +button, +input, +textarea, +.rice { + transition:background .2s,box-shadow .2s; +} +""" + + "Blackboard": + "Author" : "seaweed" + "Author Tripcode" : "!POMF.9waa" + "Background Color" : "rgb(10,13,28)" + "Dialog Background" : "rgba(12,16,33,.98)" + "Dialog Border" : "rgb(14,18,40)" + "Thread Wrapper Background" : "rgba(0,0,0,0)" + "Thread Wrapper Border" : "rgba(0,0,0,0)" + "Reply Background" : "rgba(12,16,33,1.0)" + "Reply Border" : "rgb(14,18,40)" + "Highlighted Reply Background": "rgba(8,12,29,1.0)" + "Highlighted Reply Border" : "rgb(251,222,45)" + "Backlinked Reply Outline" : "rgb(251,222,45)" + "Checkbox Background" : "rgba(12,16,33,1.0)" + "Checkbox Border" : "rgb(8,11,22)" + "Checkbox Checked Background" : "rgb(12,16,33)" + "Input Background" : "rgba(12,16,33,1.0)" + "Input Border" : "rgb(8,11,22)" + "Hovered Input Background" : "rgba(0,0,17,1.0)" + "Hovered Input Border" : "rgb(8,11,22)" + "Focused Input Background" : "rgba(0,0,17,1.0)" + "Focused Input Border" : "rgb(8,11,22)" + "Buttons Background" : "rgba(12,16,33,1.0)" + "Buttons Border" : "rgb(8,11,22)" + "Navigation Background" : "rgba(10,13,28,0.8)" + "Navigation Border" : "rgb(12,16,33)" + "Quotelinks" : "rgb(251,222,45)" + "Links" : "rgb(251,222,45)" + "Hovered Links" : "rgb(75,101,204)" + "Navigation Links" : "rgb(248,248,248)" + "Hovered Navigation Links" : "rgb(75,101,204)" + "Subjects" : "rgb(255,100,0)" + "Names" : "rgb(141,166,206)" + "Sage" : "rgb(79,79,79)" + "Tripcodes" : "rgb(255,100,0)" + "Emails" : "rgb(251,222,45)" + "Post Numbers" : "rgb(251,222,45)" + "Text" : "rgb(248,248,248)" + "Backlinks" : "rgb(251,222,45)" + "Greentext" : "rgb(154,207,8)" + "Board Title" : "rgb(248,248,248)" + "Timestamps" : "rgb(221,221,221)" + "Inputs" : "rgb(248,248,248)" + "Warnings" : "rgb(79,79,79)" + "Shadow Color" : "rgba(0,0,0,.1)" + "Custom CSS" : """ +.rice { + box-shadow:rgba(44,48,65,.3) 0 1px; +} +input[type=password]:hover, +input[type=text]:not([disabled]):hover, +input#fs_search:hover, +input.field:hover, +.webkit select:hover, +textarea:hover, +#options input:not([type=checkbox]):hover { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +input[type=password]:focus, +input[type=text]:focus, +input#fs_search:focus, +input.field:focus, +.webkit select:focus, +textarea:focus, +#options input:focus { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +button, +input, +textarea, +.rice { + transition:background .2s,box-shadow .2s; +} +.postInfo { + box-shadow: 0px 2px 3px #0A0A0A; +} +#qp .postInfo, +.inline .postInfo { + box-shadow: none; +} +""" + + "4chan Rewired": + "Author" : "" + "Author Tripcode" : "!K.WeEabo0o" + "Background Color" : "rgb(244,244,244)" + "Dialog Background" : "rgba(239,239,239,.98)" + "Dialog Border" : "rgb(212,212,212)" + "Thread Wrapper Background" : "rgba(0,0,0,0)" + "Thread Wrapper Border" : "rgba(0,0,0,0)" + "Reply Background" : "linear-gradient(rgba(244,244,244,0.9), rgba(239,239,239,0.9)), rgba(239,239,239,1)" + "Reply Border" : "rgb(212,212,212)" + "Highlighted Reply Background": "linear-gradient(rgba(250,250,250,.9), rgba(230,230,230,0.9))" + "Highlighted Reply Border" : "rgb(191,127,63)" + "Backlinked Reply Outline" : "rgba(191,127,63,0.5)" + "Checkbox Background" : "rgba(228,228,228,.9)" + "Checkbox Border" : "rgb(204,204,204)" + "Checkbox Checked Background" : "rgb(228,228,228)" + "Input Background" : "rgba(244,244,244,0.9)" + "Input Border" : "rgb(204,204,204)" + "Hovered Input Background" : "rgba(212,212,212,.9)" + "Hovered Input Border" : "rgb(204,204,204)" + "Focused Input Background" : "rgba(212,212,212,.9)" + "Focused Input Border" : "rgb(204,204,204)" + "Buttons Background" : "rgba(244,244,244,0.9)" + "Buttons Border" : "rgb(204,204,204)" + "Navigation Background" : "rgba(244,244,244,0.8)" + "Navigation Border" : "rgb(239,239,239)" + "Quotelinks" : "rgb(191,127,63)" + "Links" : "rgb(191,127,63)" + "Hovered Links" : "rgb(191,127,63)" + "Navigation Links" : "rgba(0,0,0,.7)" + "Hovered Navigation Links" : "rgb(211,54,130)" + "Subjects" : "rgba(0,0,0,.7)" + "Names" : "rgba(0,0,0,.7)" + "Sage" : "rgb(204,102,102)" + "Tripcodes" : "rgb(191,127,63)" + "Emails" : "rgb(191,127,63)" + "Post Numbers" : "rgb(191,127,63)" + "Text" : "rgba(0,0,0,.7)" + "Backlinks" : "rgb(191,127,63)" + "Greentext" : "rgb(107,122,30)" + "Board Title" : "rgba(0,0,0,.7)" + "Timestamps" : "rgba(0,0,0,.7)" + "Inputs" : "rgba(0,0,0,.7)" + "Warnings" : "rgb(204,102,102)" + "Shadow Color" : "rgba(0,0,0,.07)" + "Custom CSS" : """ +.rice { + box-shadow:rgba(255,255,255,.3) 0 1px; +} +input[type=password]:hover, +input[type=text]:not([disabled]):hover, +input#fs_search:hover, +input.field:hover, +.webkit select:hover, +textarea:hover, +#options input:not([type=checkbox]):hover { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +.reply.post, +.op.post { + background-color: transparent !important; +} +input[type=password]:focus, +input[type=text]:focus, +input#fs_search:focus, +input.field:focus, +.webkit select:focus, +textarea:focus, +#options input:focus { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +a { + -moz-transition: text-shadow .2s; + -o-transition: text-shadow .2s; + -webkit-transition: text-shadow .2s; +} +a:hover { + text-shadow: 0 0 3px rgba(232,118,0,.7); +} +button, +input, +textarea, +.rice { + transition: + background .2s, + box-shadow .2s; +} +.subject:not(:empty)::after { + content: " by"; + font-weight: normal; +} +""" + + "4chan Dark Upgrade": + "Author" : "Ahoka" + "Author Tripcode" : "!.pC/AHOKAg" + "Background Image" : "url(\"http://i.minus.com/iNkJoDJkLU0co.png\")" + "Background Attachment" : "fixed" + "Background Position" : "top left" + "Background Repeat" : "repeat" + "Background Color" : "rgb(36,36,36)" + "Dialog Background" : "rgba(51,51,51,.98)" + "Dialog Border" : "rgb(58,58,58)" + "Thread Wrapper Background" : "rgba(51,51,51,.5)" + "Thread Wrapper Border" : "rgba(58,58,58,.9)" + "Reply Background" : "rgba(51,51,51,.9)" + "Reply Border" : "rgb(58,58,58)" + "Highlighted Reply Background": "rgba(47,47,47,.9)" + "Highlighted Reply Border" : "rgb(221,221,221)" + "Backlinked Reply Outline" : "rgb(221,221,221)" + "Checkbox Background" : "rgba(47,47,47,.9)" + "Checkbox Border" : "rgb(15,15,15)" + "Checkbox Checked Background" : "rgb(47,47,47)" + "Input Background" : "rgba(47,47,47,.9)" + "Input Border" : "rgb(15,15,15)" + "Hovered Input Background" : "rgba(31,31,31,.9)" + "Hovered Input Border" : "rgb(15,15,15)" + "Focused Input Background" : "rgba(31,31,31,.9)" + "Focused Input Border" : "rgb(15,15,15)" + "Buttons Background" : "rgba(47,47,47,.9)" + "Buttons Border" : "rgb(15,15,15)" + "Navigation Background" : "rgba(36,36,36,0.8)" + "Navigation Border" : "rgb(51,51,51)" + "Quotelinks" : "rgb(221,221,221)" + "Links" : "rgb(221,221,221)" + "Hovered Links" : "rgb(238,238,238)" + "Navigation Links" : "rgb(255,255,255)" + "Hovered Navigation Links" : "rgb(238,238,238)" + "Subjects" : "rgb(153,153,153)" + "Names" : "rgb(255,255,255)" + "Sage" : "rgb(177,115,133)" + "Tripcodes" : "rgb(167,220,231)" + "Emails" : "rgb(221,221,221)" + "Post Numbers" : "rgb(221,221,221)" + "Text" : "rgb(255,255,255)" + "Backlinks" : "rgb(221,221,221)" + "Greentext" : "rgb(99,153,91)" + "Board Title" : "rgb(255,255,255)" + "Timestamps" : "rgb(170,170,170)" + "Inputs" : "rgb(255,255,255)" + "Warnings" : "rgb(177,115,133)" + "Shadow Color" : "rgba(0,0,0,0.2)" + "Custom CSS" : """ +html { +} +.thread { + padding: 3px 4px; +} +.rice { + box-shadow:rgba(83,83,83,.3) 0 1px; +} +input[type=password]:hover, +input[type=text]:not([disabled]):hover, +input#fs_search:hover, +input.field:hover, +.webkit select:hover, +textarea:hover, +#options input:not([type=checkbox]):hover { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +input[type=password]:focus, +input[type=text]:focus, +input#fs_search:focus, +input.field:focus, +.webkit select:focus, +textarea:focus, +#options input:focus { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +button, +input, +textarea, +.rice { + transition:background .2s,box-shadow .2s; +} +#delform { + background: rgba(22,22,22,.8) !important; + border: 0 !important; + padding: 1px !important; + box-shadow: rgba(0,0,0,.8) 0 0 10px; +} +div.reply.post { + background-image: -moz-repeating-linear-gradient(45deg, #303030, #292929, #303030, #303030 3px) !important; + background-image: -o-repeating-linear-gradient(45deg, #303030, #292929, #303030, #303030 3px) !important; + background-image: -webkit-repeating-linear-gradient(45deg, #303030, #292929, #303030, #303030 3px) !important; + border-bottom:#1f1f1f!important; +} +.thread:not(.stub) { + background: 0 !important +} +a:not([href='javascript:;']){ + text-shadow: #0f0f0f 0 1px; +} +""" + + "安心院なじみ ": + "Author" :"Ahoka" + "Author Tripcode" : "!.pC/AHOKAg" + "Background Image" : "url(\"http://i.imgur.com/RewHm.png\")" + "Background Attachment" : "fixed" + "Background Position" : "bottom right" + "Background Repeat" : "no-repeat" + "Background Color" : "rgb(255,255,255)" + "Dialog Background" : "rgba(239,239,239,.98)" + "Dialog Border" : "rgb(214,214,214)" + "Thread Wrapper Background" : "rgba(239,239,239,.4)" + "Thread Wrapper Border" : "rgba(214,214,214,.9)" + "Reply Background" : "rgba(239,239,239,.9)" + "Reply Border" : "rgb(214,214,214)" + "Highlighted Reply Background": "rgba(235,235,235,.9)" + "Highlighted Reply Border" : "rgb(191,128,64)" + "Backlinked Reply Outline" : "rgb(191,128,64)" + "Checkbox Background" : "rgba(204,204,204,.9)" + "Checkbox Border" : "rgb(187,187,187)" + "Checkbox Checked Background" : "rgb(204,204,204)" + "Input Background" : "rgba(204,204,204,.9)" + "Input Border" : "rgb(187,187,187)" + "Hovered Input Background" : "rgba(188,188,188,.9)" + "Hovered Input Border" : "rgb(187,187,187)" + "Focused Input Background" : "rgba(188,188,188,.9)" + "Focused Input Border" : "rgb(187,187,187)" + "Buttons Background" : "rgba(204,204,204,.9)" + "Buttons Border" : "rgb(187,187,187)" + "Navigation Background" : "rgba(255,255,255,0.8)" + "Navigation Border" : "rgb(239,239,239)" + "Quotelinks" : "rgb(191,128,64)" + "Links" : "rgb(191,128,64)" + "Hovered Links" : "rgb(191,128,64)" + "Navigation Links" : "rgb(77,77,76)" + "Hovered Navigation Links" : "rgb(191,128,64)" + "Subjects" : "rgb(77,77,77)" + "Names" : "rgb(43,128,194)" + "Sage" : "rgb(200,40,41)" + "Tripcodes" : "rgb(62,153,159)" + "Emails" : "rgb(191,128,64)" + "Post Numbers" : "rgb(191,128,64)" + "Text" : "rgb(77,77,76)" + "Backlinks" : "rgb(191,128,64)" + "Greentext" : "rgb(113,140,0)" + "Board Title" : "rgb(77,77,76)" + "Timestamps" : "rgb(77,77,76)" + "Inputs" : "rgb(77,77,76)" + "Warnings" : "rgb(200,40,41)" + "Shadow Color" : "rgba(0,0,0,.05)" + "Custom CSS" : """ +.thread { + padding: 1px; +} +.rice { + box-shadow:rgba(255,255,255,.3) 0 1px; +} +input[type=password]:hover, +input[type=text]:not([disabled]):hover, +input#fs_search:hover, +input.field:hover, +.webkit select:hover, +textarea:hover, +#options input:not([type=checkbox]):hover { + box-shadow: inset rgba(0,0,0,.2) 0 1px 2px; +} +input[type=password]:focus, +input[type=text]:focus, +input#fs_search:focus, +input.field:focus, +.webkit select:focus, +textarea:focus, +#options input:focus { + box-shadow: inset rgba(0,0,0,.2) 0 1px 2px; +} +button, +input, +textarea, +.rice { + transition: background .2s,box-shadow .2s; +}""" + + "violaceous": + "Author" : "Anonymous" + "Author Tripcode" : "!MaSoOdDwDw" + "Background Color" : "rgb(18,19,20)" + "Dialog Background" : "rgba(27,27,27,.98)" + "Dialog Border" : "rgb(41,42,43)" + "Thread Wrapper Background" : "rgba(27,27,27,.5)" + "Thread Wrapper Border" : "rgba(41,42,43,.9)" + "Reply Background" : "rgba(27,27,27,.9)" + "Reply Border" : "rgba(27,27,27,.9)" + "Highlighted Reply Background": "rgba(31,31,31,.9)" + "Highlighted Reply Border" : "rgb(42,127,160)" + "Backlinked Reply Outline" : "rgb(42,127,160)" + "Checkbox Background" : "rgba(24,25,26,.9)" + "Checkbox Border" : "rgb(18,19,20)" + "Checkbox Checked Background" : "rgb(24,25,26)" + "Input Background" : "rgba(24,25,26,.9)" + "Input Border" : "rgb(18,19,20)" + "Hovered Input Background" : "rgba(40,41,42,.9)" + "Hovered Input Border" : "rgb(18,19,20)" + "Focused Input Background" : "rgba(40,41,42,.9)" + "Focused Input Border" : "rgb(18,19,20)" + "Buttons Background" : "rgba(24,25,26,.9)" + "Buttons Border" : "rgb(18,19,20)" + "Navigation Background" : "rgba(18,19,20,0.8)" + "Navigation Border" : "rgb(27,27,27)" + "Quotelinks" : "rgb(42,127,160)" + "Links" : "rgb(42,127,160)" + "Hovered Links" : "rgb(48,144,181)" + "Navigation Links" : "rgb(221,221,221)" + "Hovered Navigation Links" : "rgb(48,144,181)" + "Subjects" : "rgb(6,152,154)" + "Names" : "rgb(164,151,176)" + "Sage" : "rgb(79,79,79)" + "Tripcodes" : "rgb(189,43,131)" + "Emails" : "rgb(42,127,160)" + "Post Numbers" : "rgb(42,127,160)" + "Text" : "rgb(221,221,221)" + "Backlinks" : "rgb(42,127,160)" + "Greentext" : "rgb(0,171,63)" + "Board Title" : "rgb(221,221,221)" + "Timestamps" : "rgb(221,221,221)" + "Inputs" : "rgb(221,221,221)" + "Warnings" : "rgb(79,79,79)" + "Shadow Color" : "rgba(0,0,0,.1)" + "Custom CSS" : """ +.thread { + padding: 1px; +} +.rice { + box-shadow:rgba(59,59,59,.3) 0 1px; +} +input[type=password]:hover, +input[type=text]:not([disabled]):hover, +input#fs_search:hover, +input.field:hover, +.webkit select:hover, +textarea:hover, +#options input:not([type=checkbox]):hover { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +input[type=password]:focus, +input[type=text]:focus, +input#fs_search:focus, +input.field:focus, +.webkit select:focus, +textarea:focus, +#options input:focus { + box-shadow:inset rgba(0,0,0,.2) 0 1px 2px; +} +button, +input, +textarea, +.rice { + transition:background .2s,box-shadow .2s; +} +""" + "Mesa": + "Author" : "Tristan" + "Author Tripcode" : "!..NoTrip.." + "Background Color" : "#3c212a" + "Thread Wrapper Background" : "rgba(0,0,0,0)" + "Thread Wrapper Border" : "rgba(0,0,0,0)" + "Dialog Background" : "#3c212a" + "Dialog Border" : "#171717" + "Reply Background" : "#3c212a" + "Reply Border" : "#171717" + "Highlighted Reply Background": "#3c212a" + "Highlighted Reply Border" : "#bfa977" + "Backlinked Reply Outline" : "#bfa977" + "Input Background" : "#3c212a" + "Input Border" : "#171717" + "Checkbox Background" : "#3c212a" + "Checkbox Border" : "#171717" + "Checkbox Checked Background" : "rgba(17,17,17,1)" + "Buttons Background" : "#3c212a" + "Buttons Border" : "#171717" + "Focused Input Background" : "#3c212a" + "Focused Input Border" : "#171717" + "Hovered Input Background" : "#3c212a" + "Hovered Input Border" : "#171717" + "Navigation Background" : "#3c212a" + "Navigation Border" : "#171717" + "Quotelinks" : "#bfa977" + "Backlinks" : "#bfa977" + "Links" : "#bfa977" + "Hovered Links" : "#aa4775" + "Navigation Links" : "#bfa977" + "Hovered Navigation Links" : "#aa4775" + "Names" : "#bfa977" + "Tripcodes" : "#aa6d89" + "Emails" : "#9c8aaa" + "Subjects" : "#bfa977" + "Text" : "#BFA977" + "Inputs" : "#bfa977" + "Post Numbers" : "#bfa977" + "Greentext" : "#99848b" + "Sage" : "rgb(150,150,150)" + "Board Title" : "#aa9d8d" + "Timestamps" : "#aa9d8d" + "Warnings" : "#aa8575" + "Shadow Color" : "rgba(0,0,0,.1)" + "Custom CSS" : "" + "Background Image" : "" + "Background Attachment" : "" + "Background Position" : "" + "Background Repeat" : "" + +Icons = + header: + png: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA' + themes: + oneechan: 'A8AAACWBAMAAADzkc/yAAAAMFBMVEVoaGhsbGxsbGxsbGxsbGxsbGxsbGxsbGxqampsbGxsbGxsbGxlZWVsbGxsbGxsbGzdpWE1AAAAD3RSTlMAfEDYHcNYkhP0pz8MJYTrg0d+AAACwElEQVR4Xp3RT2gTaRjH8W9r/rVJNTl42UvHvYinVGLR7SoZ6+JBD0kpsafVgJale4m67r/DkgEp7EEMsqy2KEwEUdjt0kBZqovY3oQedEBE8GA9iV42TQaTVm0f33lfCAgLZfuDgc/85n2f5zDAonnYIQ5LIwCykrj5hyqc5dWlz35QaMr7c3eKEBGReVVASaRZBOCxiKfRJ7KuMV4x1eGvE7pKjHo8bvwDXXsh0Xqu4AGP/mKT7DRgwTc4IgaXRSSTeQ2i0zbNv2UBjonP9gDMGQC7DQAiGbacbwpjRYB7rsh0DSLN+pnSqxbk7reIfEjb7Iyvwvtw0jSrC7Y6Uy6WzreAPVl1y+rM2STjmaGa3uX/+PNbB+JrHqSnoDJAfy3mQ92hbJG2GFS26KnSIHjtHaClUCM6wBA8RX0KDtf14coUp73YdDDQgvRb4ImMnRJxgPnRsXFZwaTbAl4UTnoASzKYbTsQy14gVD4AvS0g0oblsxCvztrUbUKztVySUSi12ZanQEg+EM6rpleK9OTptxd+AnUmV/0TULeies5GMPmWun8AeCS/uxsOwOHCiM0nOV4zWBp5Y2ncJnYIIJSHeYB4EsIaL2ESgH3wSmPOutzQCH1/ov8gJmF/0SCWXTfgYtuAvl/4jyyLzzYRj5xcJ+6KrfBucbsEcKVaF9dm8oH48u5vB6iLzJhN4qMzIWtF4OFR95p79dkilS+kOLGWdajIVSKuBDhEKKuQkzZRUUj8ekk/MPy5io2qg7Qhd8GGr8o2aRsgZ5EeloZB9zqwQ6PrxkkN8QanTEMpaRD7TTfDsnFwv7rVmdOZ3NnV2a6KZL/Iyv9DKpWydqVSSTrpNFsbCN9mpk8ATIrKWWA2QAsiEqQBYY0Z6FG4cheIytBEC4AE4TUP0GXeoEvaBnG1xSgrTYOS+Hz6M2PffclH1wyYp51t8R8AAAAASUVORK5CYII=' + "4chan SS": 'A8AAACWBAMAAADzkc/yAAAAMFBMVEVmZmZnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2djY2NkZGRnZ2dnZ2dnZ2eHsc5jAAAAD3RSTlMAgEDLkve+G+dSqwcRdCZzKH/3AAACz0lEQVR4Xp2PQWhTdxzHP0vTliQvMaE4NjdoutMOA6NrpeghQaazp4R1XkL15VDR4UbeKiJ4UXCuzG7kgd2lONLbGNmWgKwqGyMQN0QRqruIuKYXi9iDtkmeaaD97Z9/2nfy0n0u+fDl//3+XnA5E+XIoA30bPDnVceC0EfgkynAl6AyulICHhjDi/kYEHx7Ab8NhPpW0bxfbRQAfEcfSasEVGv3RTIQlMlAVlagv7lIRcSi+An05hy4awN3f+a1TKNhqbFvfAG4LW1+BVNLI0pRNDE8cS0p8F364bEpF4FbkJdZAIxs0wIIvSU/AuAdPci2GRj6ooz+jpp8A4RyzvKSFOCZrB46KLUyWUmZKVMybuK+cVvAwAm1s12MXUP73wXYKSKNMHhF0iJ1qIpMqWyebEcymCJjSi4SFzmuk6p+LPP8JXKs0zI3dx7eePOyWn4900ODNsD5xmC8ZUHv5Se/B81J8Lf6xkdOpSE/kmvtWq7aJK0Xze/KNxN8iNeZpyfGpwT+vYc3xT4I/GP7YxwqQTL9W4J8GO6sqJb/OHSPpNvL7/C8OKlvjZ9Qt9zrEDx1Rf+G4iKtMtAlIzOSAKprUF0FsgmV1oGcDW84W9ICirNwfQ3IrxNIvgL8sqdPVgAjKYow4Dn805c6AujXEaq/JURg/BpgTGdINhbhqSTI10pQEZs78dMY8eEyvXNOqeLcAALZkyoEmGs4JS295hiaik5Qlc+zpwFPxSnNqRZncwVVVDt6+brYFJubt36Jbl5n4j2FBV5pU4cLH1twLmmx2wK4EGX3hKx3xLMB7NASHBvUIstff9tJyM93xLg0tkO36lNfqZa74y67t9zrKgj3i7zcnkQikehAJBLGxU3+3yDMDB/9DOBvUSSAYlvWwSeb0qWlAN1Kjn0AeOXK9+sA/EFXYxHQ4QE0QamjCakraOKyiqYqNTQ9W2Ic2ct/3c/SAwz13v8AAAAASUVORK5CYII=' \ No newline at end of file diff --git a/src/main.coffee b/src/main.coffee index 26d8681a9..a3ce37242 100644 --- a/src/main.coffee +++ b/src/main.coffee @@ -342,6 +342,11 @@ Main = # c.time 'All initializations' initFeatures 'Polyfill': Polyfill + 'Emoji': Emoji + 'Style': Style + 'Rice': Rice + 'Banner': Banner + 'Announcements': GlobalMessage 'Header': Header 'Catalog Links': CatalogLinks 'Settings': Settings @@ -403,10 +408,6 @@ Main = location.href = href or "/#{g.BOARD}/" return - unless $.hasClass doc, 'fourchan-x' - # Something might have gone wrong! - Main.initStyle() - if board = $ '.board' threads = [] posts = []