From a28c8d9ec9d49283f5c73f94e284d9f230f79a6c Mon Sep 17 00:00:00 2001 From: Juribiyan Date: Sat, 28 Jan 2023 20:04:53 +0500 Subject: [PATCH] Uploading files of any type + autoprefix+lint CSS --- UTIL/kusaba_freshinstall.mysql.sql | 1 + UTIL/upgrade_to_any_filetype_uploads.sql | 1 + config.php | 2 + css/img_global.css | 1825 ++++++++++++++-------- dwoo/templates/board_main_loop.tpl | 9 +- dwoo/templates/board_post_box.tpl | 22 +- inc/classes/board-post.class.php | 41 +- inc/classes/manage.class.php | 18 +- inc/classes/upload.class.php | 31 +- inc/func/custom.php | 9 + inc/func/fetching.php | 6 +- inc/lang/ru/LC_MESSAGES/kusaba.po | 10 +- lib/javascript/es6/src/kusaba.new.js | 33 +- lib/javascript/kusaba.new.js | 2 +- lib/javascript/kusaba.new.js.map | 2 +- 15 files changed, 1273 insertions(+), 739 deletions(-) create mode 100644 UTIL/upgrade_to_any_filetype_uploads.sql diff --git a/UTIL/kusaba_freshinstall.mysql.sql b/UTIL/kusaba_freshinstall.mysql.sql index a42d214..f31bac4 100644 --- a/UTIL/kusaba_freshinstall.mysql.sql +++ b/UTIL/kusaba_freshinstall.mysql.sql @@ -470,6 +470,7 @@ INSERT INTO `PREFIX_ads` (`id`, `position`, `disp`, `boards`, `code`) VALUES (1, INSERT INTO `PREFIX_filetypes` (`filetype`, `mime`, `image`, `image_w`, `image_h`, `force_thumb`) VALUES +( '*', '', '', 0, 0, 1), ( 'jpg', '', '', 0, 0, 0), ( 'gif', '', '', 0, 0, 0), ( 'png', '', '', 0, 0, 0), diff --git a/UTIL/upgrade_to_any_filetype_uploads.sql b/UTIL/upgrade_to_any_filetype_uploads.sql new file mode 100644 index 0000000..dd14e05 --- /dev/null +++ b/UTIL/upgrade_to_any_filetype_uploads.sql @@ -0,0 +1 @@ +INSERT INTO `filetypes` (`filetype`, `image_w`, `image_h`) VALUES ('*', '0', '0'); \ No newline at end of file diff --git a/config.php b/config.php index cb50328..06bfd99 100644 --- a/config.php +++ b/config.php @@ -170,6 +170,7 @@ if (!$cache_loaded) { $cf['KU_OPTIPNGLV'] = '2'; // Optipng optimization level, from 1 (fastest) to 7 (slowest) $cf['KU_YOUTUBEWIDTH'] = 200; // Width to display embedded YouTube videos $cf['KU_YOUTUBEHEIGHT'] = 164; // Height to display embedded YouTube videos + $cf['I0_BANNED_FILETYPES'] = 'php:htaccess:html'; // List of filetypes that should never be allowed to upload. These filetypes should only be allowed to upload if you properly set up your server to not execute them // ------------------------------------- Misc settings -------------------------------------- @@ -313,6 +314,7 @@ if (!isset($tc_db) && !isset($preconfig_db_unnecessary) && (!isset($GLOBALS['ski } else { $tc_db->Connect(KU_DBHOST, KU_DBUSERNAME, KU_DBPASSWORD, KU_DBDATABASE) or die('SQL database connection error: ' . $tc_db->ErrorMsg()); } + mysqli_report(MYSQLI_REPORT_OFF); $tc_db->EXECUTE("set names '".KU_DBCHARSET."'"); diff --git a/css/img_global.css b/css/img_global.css index 5000f71..2dfa269 100644 --- a/css/img_global.css +++ b/css/img_global.css @@ -50,26 +50,33 @@ url('fonts/roboto-v16-cyrillic_latin-700italic.ttf') format('truetype'), /* Safari, Android, iOS */ url('fonts/roboto-v16-cyrillic_latin-700italic.svg#Roboto') format('svg'); /* Legacy iOS */ } + .i0svcel { - display: none!important; + display: none !important; } + body { margin: 0; padding: 8px; margin-bottom: auto; } + .content { padding: 9px; margin: 6px 12.5px; } + span[id^=unhidethread] { display: none; } -.reflinkpreview div[id^=thread], .reflinkpreview .postbody { - display: block!important; + +.reflinkpreview div[id^=thread], +.reflinkpreview .postbody { + display: block !important; } + .reflinkpreview span[id^=unhidethread] { - display: none!important; + display: none !important; } blockquote blockquote { @@ -89,25 +96,21 @@ form { text-align: center; visibility: hidden; opacity: 0; - -webkit-transition: opacity 0.4s, visibility 0s 0.4s; transition: opacity 0.4s, visibility 0s 0.4s; height: 100%; box-sizing: border-box; - -webkit-box-pack: center; - justify-content: center; - display: -webkit-box; + justify-content: center; display: flex; } .form-sending .formsending-overlay { visibility: visible; opacity: 1; - -webkit-transition: opacity 0.4s, visibility 0s; transition: opacity 0.4s, visibility 0s; } -.postform, .extrabtns { - -webkit-transition: opacity 0.4s; +.postform, +.extrabtns { transition: opacity 0.4s; } @@ -122,10 +125,8 @@ form { border-radius: 100%; border-width: 10px; border-style: inset; - -webkit-animation: spin 0.7s infinite linear; animation: spin 0.7s infinite linear; top: 0; - display: -webkit-box; display: flex; color: currentColor; margin-top: 0; @@ -135,27 +136,33 @@ form { } .blotter { - font-size:0.7em; + font-size: 0.7em; } + .blotterhead { text-align: center; } + .blotter-entries { padding-top: 0.7em; } + .blotter-row summary { text-align: center; cursor: pointer; outline: none; } + @keyframes ul-slidedown { from { transform: scaleY(0); } + to { transform: scaleY(1); } } + .blotter-row ul { margin-left: 0; margin-top: 0; @@ -187,6 +194,7 @@ textarea { -webkit-user-select: none; -ms-user-select: none; } + .cw-loading::before { content: ''; height: 18px; @@ -194,34 +202,23 @@ textarea { position: absolute; left: 50%; top: 50%; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); + transform: translate(-50%, -50%); border-radius: 100%; border: 2px solid transparent; border-color: transparent transparent currentColor currentColor; - -webkit-animation: c-spin .4s linear infinite; - animation: c-spin .4s linear infinite; -} -@-webkit-keyframes c-spin { - from { - -webkit-transform: translate(-50%, -50%) rotate(0deg); - transform: translate(-50%, -50%) rotate(0deg); - } - to { - -webkit-transform: translate(-50%, -50%) rotate(360deg); - transform: translate(-50%, -50%) rotate(360deg); - } + animation: c-spin .4s linear infinite; } + @keyframes c-spin { from { - -webkit-transform: translate(-50%, -50%) rotate(0deg); - transform: translate(-50%, -50%) rotate(0deg); + transform: translate(-50%, -50%) rotate(0deg); } + to { - -webkit-transform: translate(-50%, -50%) rotate(360deg); - transform: translate(-50%, -50%) rotate(360deg); + transform: translate(-50%, -50%) rotate(360deg); } } + .captchaimage { width: 150px; height: 30px; @@ -229,6 +226,7 @@ textarea { left: 0; top: 0; } + .msg { display: inline-block; font-size: 14px; @@ -236,10 +234,12 @@ textarea { vertical-align: middle; pointer-events: none; } + .captchawrap:hover .msg { border-bottom: 1px dashed currentColor; margin-bottom: -1px; } + .rotting-indicator { height: 2px; width: 100%; @@ -248,58 +248,69 @@ textarea { bottom: 0; left: 0; } + .cw-running .captchaimage { - -webkit-animation: rot 0.4s ease 2s 1 normal forwards; - animation: rot 0.4s ease 2s 1 normal forwards; + animation: rot 0.4s ease 2s 1 normal forwards; } + .rotten-msg { opacity: 0; } + .cw-running .rotten-msg { - -webkit-animation: rot-msg 0.4s ease 2s 1 normal forwards; - animation: rot-msg 0.4s ease 2s 1 normal forwards; + animation: rot-msg 0.4s ease 2s 1 normal forwards; } + .cw-running .rotting-indicator { - -webkit-animation: rot-countdown 2s linear normal forwards; - animation: rot-countdown 2s linear normal forwards; + animation: rot-countdown 2s linear normal forwards; } + .captchawrap:not(.cw-initial) .captcha-show, .cw-initial .captchaimage, .cw-initial .rotten-msg, .cw-initial .rotting-indicator { display: none; } -@-webkit-keyframes rot-countdown { - from {width: 150px;} - to {width: 0px; display: none;} -} + @keyframes rot-countdown { - from {width: 150px;} - to {width: 0px; display: none;} -} -@-webkit-keyframes rot { - from {opacity: 1} - to {opacity: 0.1} + from { + width: 150px; + } + + to { + width: 0px; + display: none; + } } + @keyframes rot { - from {opacity: 1} - to {opacity: 0.1} -} -@-webkit-keyframes rot-msg { - from {opacity: 0} - to {opacity: 1} + from { + opacity: 1 + } + + to { + opacity: 0.1 + } } + @keyframes rot-msg { - from {opacity: 0} - to {opacity: 1} + from { + opacity: 0 + } + + to { + opacity: 1 + } } + .captchaimage-invisible .captchaimage { visibility: hidden; } + /* ---------- /captcha ---------- */ form .trap { - display:none; + display: none; } .postarea { @@ -327,20 +338,21 @@ form .trap { .navbar { display: block; } + .boardlist select { max-width: 5em; } .overlay-menu { - position:fixed; - top:0px; - left:30px; - border-left:1px #CCC solid; - border-right:1px #CCC solid; - border-bottom:1px #CCC solid; - padding:3px; + position: fixed; + top: 0px; + left: 30px; + border-left: 1px #CCC solid; + border-right: 1px #CCC solid; + border-bottom: 1px #CCC solid; + padding: 3px; border-radius: 0px 0px 5px 5px; - z-index:100 + z-index: 100 } .code_full { @@ -359,30 +371,25 @@ pre { padding: 0px; border-radius: 5px; } -.reflinkpreview, .qrf-floating { + +.reflinkpreview, +.qrf-floating { border: 1px #666 dashed; box-shadow: #666 0px 0px 10px; } + .actual-reflinkpreview { opacity: 1; - -webkit-transform: scale(1); - transform: scale(1); + transform: scale(1); /* -webkit-transform: scale3d(1,1,1); transform: scale3d(1,1,1); */ - -webkit-transition: -webkit-transform 0.2s, opacity 0.2s; - transition: -webkit-transform 0.2s, opacity 0.2s; - -webkit-transition: opacity 0.2s, -webkit-transform 0.2s; - transition: opacity 0.2s, -webkit-transform 0.2s; transition: transform 0.2s, opacity 0.2s; - transition: transform 0.2s, opacity 0.2s, -webkit-transform 0.2s; - transition: transform 0.2s, -webkit-transform 0.2s, opacity 0.2s; } .pre-hidden { opacity: 0; - -webkit-transform: scale(0.8); - transform: scale(0.8); -/* -webkit-transform: scale3d(1.1,1.1,1); + transform: scale(0.8); + /* -webkit-transform: scale3d(1.1,1.1,1); transform: scale3d(1.1,1.1,1); */ } @@ -400,7 +407,8 @@ pre { margin-left: 0; } -.reply blockquote, blockquote :last-child { +.reply blockquote, +blockquote :last-child { margin-bottom: 0em; } @@ -409,20 +417,16 @@ pre { text-decoration: none; } -.reflink a:hover{ +.reflink a:hover { color: #800000; } -.reflink a:visited{ +.reflink a:visited { color: #333333; } -.reply .filesize { - /* margin-left: 20px; */ -} - .replieslist { - font-size:11px; + font-size: 11px; } .userdelete { @@ -430,23 +434,26 @@ pre { text-align: center; white-space: nowrap; } + .userdelete summary { font-size: 13px; cursor: pointer; } + .userdelete td { - display: -webkit-box; display: flex; margin: 2px 1px; } + .userdelete input[type=submit], .userdelete input[name=postpassword] { - -webkit-box-flex: 1; - flex-grow: 1; + flex-grow: 1; } + .userdelete input[name=postpassword] { margin: 0; } + .userdelete label[for=opmod] { margin-left: 6px; } @@ -486,12 +493,10 @@ pre { .spoiler * { opacity: 0; - -webkit-transition: opacity 0.2s; transition: opacity 0.2s; } .spoiler * * { - -webkit-transition: none; transition: none; } @@ -500,11 +505,11 @@ pre { } .spoiler { - -webkit-transition: color 0.2s, background-color 0.2s; transition: color 0.2s, background-color 0.2s; } -.extrabtns, .mod-thread-controls { +.extrabtns, +.mod-thread-controls { vertical-align: middle; display: inline-block; line-height: 8px; @@ -526,29 +531,32 @@ pre { .b-icon { fill: currentColor; border-radius: 3px; - -webkit-transition-property: background-color, color, box-shadow, fill; - -webkit-transition-property: background-color, color, fill, -webkit-box-shadow; transition-property: background-color, color, box-shadow, fill; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; + transition-duration: 0.3s; } -.b-icon, .i-icon { + +.b-icon, +.i-icon { margin: 0 2px; border-radius: 3px; } + .i-icon { color: white; } + .b-icon:active { - -webkit-transform: translate(0, 1px); - transform: translate(0, 1px); + transform: translate(0, 1px); } + .is-catalog .qrl { display: none; } + .i-icon.i-pin { background-color: #2D83DE; } + .i-icon.i-lock { background-color: #FF4800; } @@ -560,15 +568,27 @@ pre { display: none; } -.sb-l { border-radius: 3px 0 0 3px; margin-right: 0; } -.sb-c { border-radius: 0px; margin: 0;} -.sb-r { border-radius: 0 3px 3px 0; margin-left: 0;} +.sb-l { + border-radius: 3px 0 0 3px; + margin-right: 0; +} + +.sb-c { + border-radius: 0px; + margin: 0; +} + +.sb-r { + border-radius: 0 3px 3px 0; + margin-left: 0; +} .getnewposts { background-position: -16px -16px; } -.closebox, .delete { +.closebox, +.delete { background-position: -16px 0px; } @@ -592,7 +612,8 @@ pre { display: block; } -img.latex, object.latex { +img.latex, +object.latex { vertical-align: middle; } @@ -612,17 +633,14 @@ img.latex, object.latex { margin-top: 4px; max-width: 100%; } -.reply-with-form-open { - /*z-index: 2;*/ - /*position: relative; */ -} .reflinkpreview .reply { box-shadow: none; margin: 0px; } -.prettyprint, .code_part { +.prettyprint, +.code_part { overflow: auto; max-height: 330px; max-height: 33vh; @@ -632,8 +650,8 @@ img.latex, object.latex { padding: 2px; padding-right: 20px !important; -moz-tab-size: 2; - -o-tab-size: 2; - tab-size: 2; + -o-tab-size: 2; + tab-size: 2; } .code_part { @@ -643,22 +661,25 @@ img.latex, object.latex { color: #333333; } -.unkfunc, .rquote { - background: inherit; /* No idea why */ +.unkfunc, +.rquote { + background: inherit; + /* No idea why */ } .dice { color: white; -background: rgb(135, 106, 172); -padding: 0 3px; -border-radius: 5px; + background: rgb(135, 106, 172); + padding: 0 3px; + border-radius: 5px; } .doubledash { display: none; } -.replies table, .replies table tbody { +.replies table, +.replies table tbody { display: block; } @@ -667,7 +688,6 @@ border-radius: 5px; } .quick-reply-form { - -webkit-transition: box-shadow .2s, opacity .2s; transition: box-shadow .2s, opacity .2s; padding: 0 2px; } @@ -676,64 +696,44 @@ border-radius: 5px; display: inline-block; margin-top: 0px; margin-left: 8px; - -webkit-animation: form-appear .1s ease-in-out forwards; - animation: form-appear .1s ease-in-out forwards; + animation: form-appear .1s ease-in-out forwards; margin-bottom: 4px; } -.qrf-builtin-back { - -webkit-animation: form-buildin .1s ease-in-out forwards; - animation: form-buildin .1s ease-in-out forwards; -} -@-webkit-keyframes form-appear { - from { - -webkit-transform: translate(-6px, 0); - transform: translate(-6px, 0); - } - to { - -webkit-transform: translate(0px, 0); - transform: translate(0px, 0); - } +.qrf-builtin-back { + animation: form-buildin .1s ease-in-out forwards; } @keyframes form-appear { from { - -webkit-transform: translate(-6px, 0); - transform: translate(-6px, 0); + transform: translate(-6px, 0); } + to { - -webkit-transform: translate(0px, 0); - transform: translate(0px, 0); - } -} -@-webkit-keyframes form-buildin { - from { - -webkit-transform: translate(6px, 0); - transform: translate(6px, 0); - } - to { - -webkit-transform: translate(0px, 0); - transform: translate(0px, 0); + transform: translate(0px, 0); } } + @keyframes form-buildin { from { - -webkit-transform: translate(6px, 0); - transform: translate(6px, 0); + transform: translate(6px, 0); } + to { - -webkit-transform: translate(0px, 0); - transform: translate(0px, 0); + transform: translate(0px, 0); } } .qrf-builtin .collapse-qr-form { display: none; } + .quick-reply-form.hidden { display: none; } -table.postform, table.postform tbody { + +table.postform, +table.postform tbody { display: table; } @@ -745,32 +745,25 @@ table.postform, table.postform tbody { padding: 0; /*animation: form-float .3s ease-in-out forwards;*/ } -@-webkit-keyframes form-float { - from { - -webkit-transform: scale(1.03); - transform: scale(1.03); - } - to { - -webkit-transform: scale(1); - transform: scale(1); - } -} + @keyframes form-float { from { - -webkit-transform: scale(1.03); - transform: scale(1.03); + transform: scale(1.03); } + to { - -webkit-transform: scale(1); - transform: scale(1); + transform: scale(1); } } + .qrf-floating:hover { opacity: 1; } + .qrf-floating.collapsed .postform { - display: none!important; + display: none !important; } + .qrf-floating.collapsed .postboxcontrol { position: relative; /* padding-top: 2px; */ @@ -780,54 +773,63 @@ table.postform, table.postform tbody { float: right; margin-bottom: -3px; } + .qrf-floating.collapsed .formsending-overlay { display: none; } + .qrf-floating.collapsed { white-space: nowrap; padding: 4px; } + .postboxcontrol { position: absolute; top: 4px; right: 4px; } + .simplified-extras { position: absolute; top: 4px; left: 4px; display: none; } + .xlink { cursor: pointer; } + .read-more { margin: .3em 0; - outline:none; - -webkit-user-select:none; - -moz-user-select:none; - -ms-user-select:none; - user-select:none; + outline: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; } /* Node insertion detection #snivystuff */ @keyframes nodeInserted { - from { clip: rect(1px, auto, auto, auto); } - to { clip: rect(0px, auto, auto, auto); } -} -@-webkit-keyframes nodeInserted { - from { clip: rect(1px, auto, auto, auto); } - to { clip: rect(0px, auto, auto, auto); } + from { + clip: rect(1px, auto, auto, auto); + } + + to { + clip: rect(0px, auto, auto, auto); + } } + @keyframes windowSmall { - from { clip: rect(1px, auto, auto, auto); } - to { clip: rect(0px, auto, auto, auto); } + from { + clip: rect(1px, auto, auto, auto); + } + + to { + clip: rect(0px, auto, auto, auto); + } } -@-webkit-keyframes windowSmall { - from { clip: rect(1px, auto, auto, auto); } - to { clip: rect(0px, auto, auto, auto); } -} - /* div[id*=op], td[id*=reply] */ + +/* div[id*=op], td[id*=reply] */ .postmessage { animation-duration: 0.001s; -o-animation-duration: 0.001s; @@ -840,15 +842,18 @@ table.postform, table.postform tbody { -moz-animation-name: nodeInserted; -webkit-animation-name: nodeInserted; } + .embed { position: relative; } + .youtube.embed { width: 368px; height: 237px; background-position: 50% 50%; background-size: 100%; } + .youtube.wrapper:before { position: absolute; width: 368px; @@ -858,9 +863,13 @@ table.postform, table.postform tbody { display: block; cursor: pointer; } -.youtube.wrapper:hover, .vimeo.wrapper:hover, .coub.wrapper:hover { + +.youtube.wrapper:hover, +.vimeo.wrapper:hover, +.coub.wrapper:hover { cursor: pointer; } + .youtube.wrapper:hover:before { position: absolute; width: 368px; @@ -870,6 +879,7 @@ table.postform, table.postform tbody { display: block; pointer-events: none; } + .youtube.unwrapping:before { position: absolute; width: 368px; @@ -878,12 +888,13 @@ table.postform, table.postform tbody { background: url('../images/yt-ol.png') 0 -474px; display: block; } + .yt-title-overlay { display: block; color: rgb(238, 238, 238) !important; font-family: Roboto, Arial, Helvetica, sans-serif; font-size: 16.5px; - box-shadow: inset 0 120px 90px -90px rgba(8,8,8,.8); + box-shadow: inset 0 120px 90px -90px rgba(8, 8, 8, .8); height: 80px; overflow: hidden; text-overflow: ellipsis; @@ -893,6 +904,7 @@ table.postform, table.postform tbody { text-decoration: none; text-shadow: rgba(0, 0, 0, 0.498039) 0px 0px 2px; } + .yt-title-overlay:hover { text-decoration: underline; color: rgba(255, 255, 255, 1) !important; @@ -906,6 +918,7 @@ table.postform, table.postform tbody { overflow: hidden; text-overflow: ellipsis; } + .vimeo.wrapper:before { position: absolute; width: 368px; @@ -915,6 +928,7 @@ table.postform, table.postform tbody { display: block; cursor: pointer; } + .vimeo.wrapper:hover:before { position: absolute; width: 368px; @@ -924,6 +938,7 @@ table.postform, table.postform tbody { display: block; pointer-events: none; } + .vimeo.unwrapping:before { position: absolute; width: 368px; @@ -932,6 +947,7 @@ table.postform, table.postform tbody { background: url('../images/vi-ol.png') 0 -420px; display: block; } + .vi-title-overlay { position: relative; display: inline; @@ -942,11 +958,12 @@ table.postform, table.postform tbody { overflow: hidden; text-overflow: ellipsis; font-weight: bold; - font-family: 'Helvetica Neue','Helvetica','Arial'!important; + font-family: 'Helvetica Neue', 'Helvetica', 'Arial' !important; font-size: 20px; padding: 2px 4px; text-decoration: none; } + .vi-title-overlay:hover { color: #FF5210 !important; text-shadow: none !important; @@ -960,6 +977,7 @@ table.postform, table.postform tbody { overflow: hidden; text-overflow: ellipsis; } + .coub.wrapper:before { position: absolute; width: 368px; @@ -969,6 +987,7 @@ table.postform, table.postform tbody { display: block; cursor: pointer; } + .coub.wrapper:hover:before { position: absolute; width: 368px; @@ -978,6 +997,7 @@ table.postform, table.postform tbody { display: block; pointer-events: none; } + .coub.unwrapping:before { position: absolute; width: 368px; @@ -986,6 +1006,7 @@ table.postform, table.postform tbody { background: url('../images/co-ol.png') 0 -414px; display: block; } + .co-title-overlay { position: relative; display: inline; @@ -994,11 +1015,12 @@ table.postform, table.postform tbody { color: rgba(255, 255, 255, 0.85) !important; overflow: hidden; text-overflow: ellipsis; - font-family: 'Helvetica Neue','Helvetica','Arial'!important; + font-family: 'Helvetica Neue', 'Helvetica', 'Arial' !important; font-size: 15px; text-decoration: none; text-shadow: 0 0 12px #000; } + .co-title-overlay:hover { color: rgba(255, 255, 255, 1) !important; } @@ -1017,13 +1039,13 @@ table.postform, table.postform tbody { border-radius: 5px; border-bottom-right-radius: 0px; } + .markupbtns { - display: -webkit-box; display: flex; - -webkit-box-pack: justify; - justify-content: space-between; + justify-content: space-between; width: 100%; } + .uibutton { font-size: 12px; border-radius: 4px; @@ -1031,15 +1053,17 @@ table.postform, table.postform tbody { padding: 0 14px; margin-right: 4px; text-align: center; - -webkit-transition: background-color .2s, color .2s, border-color .2s; transition: background-color .2s, color .2s, border-color .2s; } + .uibutton:last-child { margin-right: 0; } + .uib-spoiler { position: relative; } + .uib-spoiler:before { content: '/////'; position: absolute; @@ -1050,69 +1074,80 @@ table.postform, table.postform tbody { text-align: center; overflow: hidden; } + .opt-exp { position: relative; padding: 0 8px; } #interface-notifier { -display: inline-block; -text-align: center; -padding: 10px; -position: fixed; -z-index: 10; + display: inline-block; + text-align: center; + padding: 10px; + position: fixed; + z-index: 10; } .bnr { -display: inline-block; -position: relative; -height: 100px; -width: 300px; + display: inline-block; + position: relative; + height: 100px; + width: 300px; } + .bnrsupdate { -display: inline-block; -height: 39px; -width: 49px; -position: absolute; -background: url(../images/bnr-overlay.png); -bottom: 0; -right: 0; -opacity: 0; --webkit-transition: opacity 0.2s; --o-transition: opacity 0.2s; --moz-transition: opacity 0.2s; + display: inline-block; + height: 39px; + width: 49px; + position: absolute; + background: url(../images/bnr-overlay.png); + bottom: 0; + right: 0; + opacity: 0; + transition: opacity 0.2s; } + .bnr:hover .bnrsupdate { opacity: 0.5; } + .bnrsupdate:hover { - opacity:1!important; + opacity: 1 !important; } + .bnr-wrap { -text-align: center; -height: 100px; + text-align: center; + height: 100px; } + #rswapper { text-align: center; } -.movie img { cursor: pointer;} + +.movie img { + cursor: pointer; +} proven.prooflabel { - font-wight: bold; + font-weight: bold; } + .disproven.prooflabel { text-decoration: line-through; color: inherit; } + #wild_thread_appeared { display: block; text-align: center; border: none; } + .spin-around { position: relative; } + .spin-around:before { content: ''; width: 16px; @@ -1122,7 +1157,6 @@ proven.prooflabel { border-radius: 100%; top: -18px; border: 2px solid; - -webkit-animation: spin 0.7s infinite linear; animation: spin 0.7s infinite linear; border-color: currentColor currentColor transparent transparent; } @@ -1130,20 +1164,24 @@ proven.prooflabel { /*==CATALOG==*/ #catalog-contents { - font-size: 0; + font-size: 0; } + .icon { height: 16px; width: 16px; fill: currentColor; } + .i-20 { height: 20px; width: 20px; } + .i-16in20 { padding: 2px; } + .cat-entry { display: inline-block; width: 208px; @@ -1152,39 +1190,41 @@ proven.prooflabel { margin: 8px; vertical-align: top; } + .cat-card { box-sizing: border-box; width: 208px; padding: 3px; overflow: hidden; height: 100%; - -webkit-transition: background-color 0.2s, -webkit-box-shadow 0.2s; - -webkit-transition: box-shadow 0.2s, background-color 0.2s; transition: box-shadow 0.2s, background-color 0.2s; z-index: 2; } -.cat-card:hover { -} + .expand-on-hover-enabled .cat-entry:not(.thumbExpanded):hover .cat-card { position: absolute; height: auto; top: 0px; } + .expand-on-hover-enabled .ce-text.cat-entry:not(.thumbExpanded):hover .cat-card { min-height: 208px; } + .expand-on-hover-enabled .ce-gallery.cat-entry:not(.thumbExpanded):hover .cat-card { min-height: 337px; } + .ce-text.cat-entry { height: 208px; } + .ce-gallery.cat-entry { height: 337px; } + .smallThumb { - display: inline-block; height: 50px; width: 50px; line-height: 50px; @@ -1194,100 +1234,119 @@ proven.prooflabel { position: relative; text-decoration: none; } + .nofile-removed { box-sizing: border-box; height: 50px; width: 50px; line-height: 46px; } + .smallThumb img { vertical-align: middle; } + .cat-infoline { position: relative; height: 16px; line-height: 16px; opacity: 0.8; } + .ce-gallery .cat-infoline { padding: 0 3px; } + .ce-text .cat-infoline { display: inline-block; margin-left: 4px; } + .namedate-overlay { position: relative; width: 145px; overflow: hidden; cursor: pointer; } + .ce-gallery .namedate-overlay { top: 0; right: 0; display: inline-block; height: 16px; text-align: center; - -webkit-transition: width 0.2s, background-color 0.2s; transition: width 0.2s, background-color 0.2s; } + .counters { display: inline-block; position: absolute; top: 0; right: 0; } -.ce-gallery .cat-poster, .ce-gallery .cat-date { + +.ce-gallery .cat-poster, +.ce-gallery .cat-date { left: 0; } + .cat-date { white-space: nowrap; } -.namedate-overlay .cat-poster, .namedate-overlay .cat-date { + +.namedate-overlay .cat-poster, +.namedate-overlay .cat-date { position: absolute; - -webkit-transition: top 0.3s; transition: top 0.3s; } + .date-on.namedate-overlay .cat-poster { top: -16px; pointer-events: none; opacity: 0.5; } + .date-on.namedate-overlay .cat-date { top: 0px; } + .name-on.namedate-overlay .cat-poster { top: 0px; } + .name-on.namedate-overlay .cat-date { top: 16px; pointer-events: none; opacity: 0.5; } + .op-number { font-weight: bold; } + .i-layer-2 { display: none; } + .cat-prv { margin-right: 7px; } + .indicators { display: inline-block; position: absolute; top: 0px; right: 0px; } -.ce-text .indicators { -} .pressed { border-radius: 2px; } + .cat-infoline:not(:last-child) { margin-bottom: 1px; } + .infolabel { display: inline-block; line-height: 16px; @@ -1295,50 +1354,65 @@ proven.prooflabel { height: 16px; white-space: nowrap; } + .il-page { width: 39px; } + .actor { cursor: pointer; } -.actor, .actor span { + +.actor, +.actor span { color: inherit; } + .infolabel span { min-width: 14px; display: inline-block; text-align: center } + .ctx { font-size: 12px; } -.cat-infoline *, .infolabel * { + +.cat-infoline *, +.infolabel * { vertical-align: middle; } + .op-prv { display: inline-block; width: 74px; } + .cat-date { display: inline-block; font-style: italic; } + .cat-date-long { width: 142px; } + .op-prv { width: 75px; } + .ce-opcontent { margin-top: 9px; font-size: 12px; text-align: center; } + .ce-opcontent h5 { font-size: 13px; margin: 0; margin-bottom: 5px; } + .cat-entry:after { content: ""; height: 40px; @@ -1348,12 +1422,14 @@ proven.prooflabel { font-size: 0; position: absolute; pointer-events: none; - -webkit-transition: opacity 0.2s; transition: opacity 0.2s; } + .cat-entry:not(.thumbExpanded):hover:after { opacity: 0; -}/* +} + +/* .bigThumb .icon { position: absolute; bottom: 3px; @@ -1367,9 +1443,11 @@ proven.prooflabel { .bigThumb:hover .icon { opacity: 0.5; } + .bigThumb:hover .icon:hover { opacity: 1; } + .ce-text .bigThumb { position: absolute; height: 56px; @@ -1377,13 +1455,14 @@ proven.prooflabel { line-height: 50px; text-align: center; -webkit-backdrop-filter: none; - backdrop-filter: none; + backdrop-filter: none; top: 1px; left: 1px; padding: 3px; box-sizing: border-box; z-index: 2; } + .thumbExpanded .bigThumb { opacity: 1; height: 206px; @@ -1393,6 +1472,7 @@ proven.prooflabel { backdrop-filter: blur(2px); z-index: 1; } + .ce-gallery .bigThumb { padding: 0; width: 100%; @@ -1400,57 +1480,68 @@ proven.prooflabel { text-align: center; margin-bottom: 3px; } + .bigThumb { - -webkit-transition-property: height, width, line-height; transition-property: height, width, line-height; - -webkit-transition-duration: 0.3s; - transition-duration: 0.3s; + transition-duration: 0.3s; } -.bigThumb img, .bigThumb video, .bigThumb audio { +.bigThumb img, +.bigThumb video, +.bigThumb audio { max-width: 100%; max-height: 100%; vertical-align: middle; } -.ce-text .bigThumb img, .ce-text .bigThumb video, .ce-text .bigThumb audio { +.ce-text .bigThumb img, +.ce-text .bigThumb video, +.ce-text .bigThumb audio { opacity: 0; - -webkit-transition: opacity 0.3s; transition: opacity 0.3s; pointer-events: none; } -.thumbExpanded img, .thumbExpanded video, .thumbExpanded audio { - opacity: 1!important; - pointer-events: all!important; + +.thumbExpanded img, +.thumbExpanded video, +.thumbExpanded audio { + opacity: 1 !important; + pointer-events: all !important; } + .thumbExpanded .icon { - opacity: 0!important; + opacity: 0 !important; } + .cat-thumb-shrink { position: absolute; top: 3px; left: 3px; } + .c-poster span { float: left; } + .foradmin-show { display: none; } + .ce-heda { position: relative; } /* cat-bt-embed insertion detection */ @keyframes embed-image-insert { - from { clip: rect(1px, auto, auto, auto); } - to { clip: rect(0px, auto, auto, auto); } + from { + clip: rect(1px, auto, auto, auto); + } + + to { + clip: rect(0px, auto, auto, auto); + } } -@-webkit-keyframes embed-image-insert { - from { clip: rect(1px, auto, auto, auto); } - to { clip: rect(0px, auto, auto, auto); } -} .cat-bt-embed { animation-duration: 0.001s; -o-animation-duration: 0.001s; @@ -1463,31 +1554,33 @@ proven.prooflabel { -moz-animation-name: embed-image-insert; -webkit-animation-name: embed-image-insert; } + #catalog-controls { font-size: 12px; } + #catalog-controls label { white-space: nowrap; margin-right: 4px; } + .hideHidden .thread-hidden { display: none; } + .refresh-catalog { cursor: pointer; } -.button-group, .refresh-catalog { - display:inline-block; + +.button-group, +.refresh-catalog { + display: inline-block; vertical-align: middle; height: 20px; font-size: 0; border-radius: 6px; padding: 2px; - -webkit-transition: opacity 0.3s, background-color 0.3s, -webkit-box-shadow 0.3s, -webkit-transform 0.3s; - -webkit-transition: box-shadow 0.3s, opacity 0.3s, background-color 0.3s, -webkit-transform 0.3s; - transition: box-shadow 0.3s, opacity 0.3s, background-color 0.3s, -webkit-transform 0.3s; transition: box-shadow 0.3s, opacity 0.3s, background-color 0.3s, transform 0.3s; - transition: box-shadow 0.3s, opacity 0.3s, background-color 0.3s, transform 0.3s, -webkit-transform 0.3s; outline: none; height: 20px; vertical-align: middle; @@ -1502,7 +1595,6 @@ proven.prooflabel { width: 24px; text-align: center; cursor: pointer; - -webkit-transition: background-color 0.3s, color 0.3s; transition: background-color 0.3s, color 0.3s; } @@ -1510,28 +1602,34 @@ proven.prooflabel { padding-left: 4px; font-size: 12px; } + .bg-button:first-child { border-radius: 4px 0 0 4px; } + .bg-button:last-child { border-radius: 0 4px 4px 0; } + .disabled.button-group { opacity: 0.5; pointer-events: none; - -webkit-transform: scale(0.85); - transform: scale(0.85); + transform: scale(0.85); } + .ce-text .ci-op-link { display: block; - margin-left: 54px!important; + margin-left: 54px !important; } + .ci-op-link a { display: block; } + .cat-prv { display: inline-block; } + .cat-prv svg { pointer-events: none; } @@ -1539,118 +1637,154 @@ proven.prooflabel { /* .onsmall-show { display: none; } */ -.replies, .omittedposts { +.replies, +.omittedposts { margin-left: 4px; } -/* --------- Basic small-screen changes --------- */ +/* --------- Basic small-screen changes --------- */ @media only screen and (max-width: 666px) { + /* .maintable { margin-top: 0; } */ #delform { margin: 0 2px; } - html,body,.content-background { + + html, + body, + .content-background { max-width: 100%; - margin:0; - padding:0!important; + margin: 0; + padding: 0 !important; } + .content::before { width: 100%; margin: 0 0 17px 0; } + body { - font-size: 0.8em!important; + font-size: 0.8em !important; } - .postnode, .postnode tbody, .postnode tr, .postnode .reply, .postnode .highlight { + + .postnode, + .postnode tbody, + .postnode tr, + .postnode .reply, + .postnode .highlight { display: inline-block; clear: both; width: 100%; margin: 0; } + .postnode { margin-bottom: 3px; } - .postinfo, .reflink { - font-size: 11px!important; + + .postinfo, + .reflink { + font-size: 11px !important; } - .border-left, .border-right, .topbar-left, .topbar-right { + + .border-left, + .border-right, + .topbar-left, + .topbar-right { display: none; } - code,blockquote pre { - white-space:pre-wrap; + + code, + blockquote pre { + white-space: pre-wrap; } + .omittedposts { - display:inline-block; + display: inline-block; padding: 2px 0 8px 0; width: 100%; text-align: center; margin: 0; } - .maintable { - /* width:100%; */ - } - .bottom-left,.bottom-right,.bottom-center { - display:none; + + .bottom-left, + .bottom-right, + .bottom-center { + display: none; } + #overlay_menu { left: 0; } + hr { - margin: 4px 0!important; + margin: 4px 0 !important; } + .actual-reflinkpreview { - left: 0!important; + left: 0 !important; width: 100%; box-sizing: border-box; display: block; } + .actual-reflinkpreview tbody, .actual-reflinkpreview tr, .actual-reflinkpreview .postnode { display: block; } + .actual-reflinkpreview .reply { width: 100%; display: block; float: left; } + .pre-hidden { - -webkit-transform: scale(1,0); - transform: scale(1,0); + transform: scale(1, 0); } + .replies { margin: 0; } + .post-menu-toggle { margin-bottom: -2px; } } -/* -------- /Basic small-screen changes --------- */ -ol,ul { - list-style-position:inside; +/* -------- /Basic small-screen changes --------- */ + +ol, +ul { + list-style-position: inside; } + .touch-mode .b-icon { width: 24px; } + .touch-mode .qrl { display: none; } -.unpinned.pinner .use-pin, + +.unpinned.pinner .use-pin, .pinned.pinner .use-unpin, .collapsed.collapser .use-collapse, .collapser:not(.collapsed) .use-uncollapse { display: none; } + .i-deathmark { background: red; color: white; border-radius: 2px; } + hr { - clear:both; + clear: both; } .js-supported .userdelete { @@ -1660,36 +1794,35 @@ hr { right: 6px; bottom: -160px; padding: 4px; - -webkit-transition: bottom 0.3s; transition: bottom 0.3s; } + .ud-active.userdelete { bottom: 6px; } @supports ((transform: translate(0, calc(100% + 6px))) or (-webkit-transform: translate(0, calc(100% + 6px)))) { .js-supported .userdelete { - -webkit-transition: -webkit-transform 0.3s; - transition: -webkit-transform 0.3s; transition: transform 0.3s; - transition: transform 0.3s, -webkit-transform 0.3s; -webkit-transition: transform 0.3s; transform: translate(0, calc(100% + 6px)); -webkit-transform: translate(0, calc(100% + 6px)); bottom: 6px; } + .ud-active.userdelete { - -webkit-transform: none; - transform: none; + transform: none; } } svg { - -moz-transform: scale(1); + transform: scale(1); } + .olm-link { position: relative; } + .got-updates.olm-link:before { content: '+'; position: absolute; @@ -1709,6 +1842,7 @@ svg { font-family: sans-serif; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.09); } + .markup-popup { position: absolute; display: inline-block; @@ -1716,42 +1850,51 @@ svg { left: 0; top: 16px; } + .expandee { z-index: 2; max-height: 0; - -webkit-transition: max-height .3s, top .3s; transition: max-height .3s, top .3s; overflow: hidden; } + .code_markup_select { height: 150px; } + .expanded.code_markup { max-height: 200px; top: -40px; } + .expanded.quote_markup { max-height: 200px; top: -18px; } + textarea { z-index: 1; position: relative; } + #delform .postertrip { cursor: pointer; } + #delform .postertrip:hover { border-bottom-style: dotted; border-bottom-width: 1px; } + .trip-info-line { font-size: 12px; font-style: italic; } + input[readonly] { cursor: text; } + input:disabled { opacity: 0.5 } @@ -1766,6 +1909,7 @@ input:disabled { padding: 9px 15px; text-shadow: none; } + .bubble:after { content: ""; position: absolute; @@ -1776,6 +1920,7 @@ input:disabled { z-index: 1; border-width: 6px 11px 6px 0; } + .bubble:before { content: ""; position: absolute; @@ -1786,6 +1931,7 @@ input:disabled { z-index: 0; border-width: 7px 12px 7px 0; } + .reverse-caption-bubble:after { content: ""; position: absolute; @@ -1798,66 +1944,86 @@ input:disabled { border-width: 6px 0 6px 11px; } -.bubble:not(.thought-bubble):after, .bubble:not(.thought-bubble):before { +.bubble:not(.thought-bubble):after, +.bubble:not(.thought-bubble):before { border-style: solid; } + .thought-bubble { left: 10px; - margin-right: 10px!important; + margin-right: 10px !important; } + .reverse-caption-bubble.thought-bubble { left: auto; right: 10px; - margin: 0 20px 0 10px!important; + margin: 0 20px 0 10px !important; } + .thought-bubble:after { height: 14px; width: 14px; left: -17px; top: 4px; } + .reverse-caption-bubble.thought-bubble:after { left: auto; right: -17px; } + .thought-bubble:before { height: 9px; width: 9px; left: -29px; top: 5px; } + .reverse-caption-bubble.thought-bubble:before { left: auto; right: -29px; } -.thought-bubble, .thought-bubble:after, .thought-bubble:before { + +.thought-bubble, +.thought-bubble:after, +.thought-bubble:before { border-radius: 20px; } -.thought-bubble:after, .thought-bubble:before { + +.thought-bubble:after, +.thought-bubble:before { box-sizing: border-box; } -.lination, .caption { - display: inline-block!important; + +.lination, +.caption { + display: inline-block !important; vertical-align: middle; border-spacing: 0; } -.lination td, .caption td { + +.lination td, +.caption td { vertical-align: top; } + .reverse-caption { float: right; } -.reverse-caption + br { + +.reverse-caption+br { clear: both; } + .reverse-caption img { - -webkit-transform: scaleX(-1); - transform: scaleX(-1); + transform: scaleX(-1); } + .caption:not(.reverse-caption) td:first-child, .reverse-caption td:last-child { font-size: 0; } + .bubble:not(.thought-bubble):before { content: none; } @@ -1865,9 +2031,9 @@ input:disabled { .emoji { vertical-align: middle; } + i .emoji { - -webkit-transform: skewX(-20deg); - transform: skewX(-20deg); + transform: skewX(-20deg); } .postbody::-webkit-scrollbar, @@ -1876,153 +2042,175 @@ i .emoji { width: 8px; height: 8px; } + ::-webkit-scrollbar-corner, ::-webkit-scrollbar-track { background: rgba(0, 0, 0, 0.03); } + ::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, 0.13); -webkit-transition: background-color 0.3s; transition: background-color 0.3s; } + .postbody:hover::-webkit-scrollbar-track, .postbody:hover *::-webkit-scrollbar-track, .reply:hover .prettyprint::-webkit-scrollbar-corner, .reply:hover .code_part::-webkit-scrollbar-corner { background: rgba(0, 0, 0, 0.06); } + .postbody:hover::-webkit-scrollbar-thumb, .reply:hover *::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, 0.2); } + ::-webkit-scrollbar-thumb:active { background: rgba(0, 0, 0, 0.5) !important; } -@-webkit-keyframes circle-timer { - from { stroke-dashoffset: 0; } - to { stroke-dashoffset: 55; } +@keyframes circle-timer { + from { + stroke-dashoffset: 0; + } + + to { + stroke-dashoffset: 55; + } } -@keyframes circle-timer { - from { stroke-dashoffset: 0; } - to { stroke-dashoffset: 55; } -} -@-webkit-keyframes spin { - from {-webkit-transform:rotate(0deg);transform:rotate(0deg);} - to {-webkit-transform:rotate(360deg);transform:rotate(360deg);} -} @keyframes spin { - from {-webkit-transform:rotate(0deg);transform:rotate(0deg);} - to {-webkit-transform:rotate(360deg);transform:rotate(360deg);} + from { + transform: rotate(0deg); + } + + to { + transform: rotate(360deg); + } } + svg.refresher { background-color: transparent !important; box-shadow: none !important; - fill: currentColor!important; + fill: currentColor !important; overflow: visible; vertical-align: middle; margin-right: 5px; } + .timer-circle { fill: transparent; stroke: currentColor; stroke-width: 2px; - stroke-dasharray: 0,55; - -webkit-transition: stroke-dasharray 0.2s; + stroke-dasharray: 0, 55; transition: stroke-dasharray 0.2s; } + .upd-counting .timer-circle { stroke-dasharray: 55; - -webkit-animation: circle-timer 5s linear forwards; - animation: circle-timer 5s linear forwards; + animation: circle-timer 5s linear forwards; } + .upd-updating .timer-circle { stroke-dashoffset: 0; stroke-dasharray: 9; - -webkit-animation: spin 1s infinite linear; - animation: spin 1s infinite linear; - -webkit-transform-origin: 50%; - transform-origin: 50%; + animation: spin 1s infinite linear; + transform-origin: 50%; } + .tc-wrapper { - -webkit-transition: -webkit-transform 0.3s; - transition: -webkit-transform 0.3s; transition: transform 0.3s; - transition: transform 0.3s, -webkit-transform 0.3s; - -webkit-transform-origin: 50%; - transform-origin: 50%; + transform-origin: 50%; } + a:hover .tc-wrapper { - -webkit-transform: scale(1.2); - transform: scale(1.2); + transform: scale(1.2); } + #newposts_get svg, #newposts_get span { vertical-align: middle; } + .upd-updating .upd-action, .upd-msg { display: none; } + .upd-updating .upd-msg { - display: inline-block!important; -} -@-webkit-keyframes ellipsis { - 0%, 100% {content: '.. '} - 33% {content: ' ..'} - 66% {content: '. .'} -} -@keyframes ellipsis { - 0%, 100% {content: '.. '} - 33% {content: ' ..'} - 66% {content: '. .'} -} -.upd-msg::after { - content: '...'; - -webkit-animation: ellipsis 0.4s linear infinite; - animation: ellipsis 0.4s linear infinite; + display: inline-block !important; } -.code_part + br, -.prettyprint + br, -.bubble + br, -blockquote ul + br, -blockquote ol + br { +@keyframes ellipsis { + + 0%, + 100% { + content: '.. ' + } + + 33% { + content: ' ..' + } + + 66% { + content: '. .' + } +} + +.upd-msg::after { + content: '...'; + animation: ellipsis 0.4s linear infinite; +} + +.code_part+br, +.prettyprint+br, +.bubble+br, +blockquote ul+br, +blockquote ol+br { display: none; } -.prettyprint, .caption, .lination, .code_part, +.prettyprint, +.caption, +.lination, +.code_part, /* .bubble, */ blockquote ul, blockquote ol { margin: 8px 0; display: block; } + .inline-pp { display: inline; padding: 1px 4px; background: rgba(0, 0, 0, 0.07); border-radius: 4px; } + blockquote ul, blockquote ol { padding-left: 20px; } -td > .bubble { + +td>.bubble { display: inline-block; margin: 0; margin-left: 20px; } -td > .reverse-caption-bubble { + +td>.reverse-caption-bubble { margin-right: 20px; margin-left: 0; } + .embedgroup { float: left; margin-right: 0.8em; margin-bottom: 0.4em; } + figure { display: inline-block; margin: .2em 0.4em; @@ -2030,34 +2218,44 @@ figure { text-align: left; margin-left: 0; } + figcaption { - opacity: 1!important; + opacity: 1 !important; } + .multiembed audio { float: left; clear: both; margin: 2px; } + .audiowrap audio, .unwrapped .audiowrap .thumb { display: none; } + .unwrapped .audiowrap audio { display: initial; width: 300px; } + .pb-empty .embedgroup { margin: 0; } + .pb-empty figure { margin: 0 0.4em 0 0; } + .pb-empty figure:last-of-type { margin: 0; } -.filesize a, .filesize span { + +.filesize a, +.filesize span { font-size: .8rem; } + .filesize { float: left; font-style: italic; @@ -2068,48 +2266,56 @@ figcaption { padding-left: 2px; font-size: .8em; } + .emb-button { position: absolute; top: 3px; opacity: 0; - -webkit-transition: opacity 0.2s; transition: opacity 0.2s; background: none; border: none; padding: 0; } + .delete-multiple button.emb-button { display: none; } + .delete-multiple input.emb-button { display: initial; } + .embed-wrap .icon { margin: 0 2px; border-radius: 3px; color: rgba(255, 255, 255, 0.78); background: rgba(0, 0, 0, 0.22); - -webkit-transition: background-color 0.3s, color 0.3s; transition: background-color 0.3s, color 0.3s; } + .embed-wrap .icon:hover { color: rgba(255, 255, 255, 0.95); background: rgba(0, 0, 0, 0.28); } + .embed-wrap .icon:active { - -webkit-transform: translate(0, 1px); - transform: translate(0, 1px); + transform: translate(0, 1px); } -.file-control, .collapse-video { + +.file-control, +.collapse-video { right: 2px; } + .collapse-video { -/* left: 2px; */ + /* left: 2px; */ display: none; } + .unwrapped .collapse-video { display: inline-block; } + figure:hover .emb-button, .file-control:checked, .emb-button:focus, @@ -2117,30 +2323,35 @@ figure:hover .emb-button, opacity: 1; outline: none; } + .unwrapped .file-control, .unwrapped-audio .file-control { display: none; } + .filesize a { font-style: normal; display: inline-block; height: 2ch; margin-right: 20px; } -.postmessage:before { /* https://css-tricks.com/minimum-paragraph-widths/ */ + +.postmessage:before { + /* https://css-tricks.com/minimum-paragraph-widths/ */ content: ""; width: 33%; display: block; overflow: hidden; /* border: 1px solid green; */ } -figure > a { - display:block; + +figure>a { + display: block; font-size: 0; } + .fc-filename { max-width: 8ch; - display: inline-block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; @@ -2148,49 +2359,58 @@ figure > a { float: left; text-decoration: underline; } + .unwrapped-audio .fc-filename { - max-width: 230px!important; + max-width: 230px !important; } + .postbutt:not(:empty) { margin: .3em; margin-left: .5rem; } + .postbutt .ref-reply { - display: inline-block; + display: inline-block; } + .postbody { padding: .5em; padding-top: 0; } + .reply:not(.reply-expanded) .postbody:not(.postbody-expanded) { max-height: 500px; max-height: 50vh; overflow: auto; } + .postbody-expanded { max-height: none; overflow: visible; } + blockquote { margin: 0; word-break: break-word; } + .posthead { - position: relative; - margin-bottom: 0.2em; + position: relative; + margin-bottom: 0.2em; } /* No-js multifile input */ .multiembedwrap { margin: 3px 0; display: inline-block; - -webkit-transform: box-shadow 0.3s; - transform: box-shadow 0.3s; + transform: box-shadow 0.3s; } + .multiembedwrap .b-icon, .multiembedwrap .icon-wraping-button { vertical-align: middle; } + noscript.b-icon { display: inline-block; width: 16px; @@ -2199,22 +2419,27 @@ noscript.b-icon { text-align: center; font-size: 14px; } + .icon-with-fallback { display: contents; } + .icon-checkbox-wrap input[type=checkbox] { display: none; } + .add-embed, -.add-embed:checked + label { +.add-embed:checked+label { display: none; } -.add-embed:not(:checked) + label + br + .multiembedwrap, -.add-embed:not(:checked) + label + br + .multiembedwrap + .add-embed, -.add-embed:not(:checked) + label + br + .multiembedwrap + .add-embed + label, -.add-embed:not(:checked) + label + br + .multiembedwrap + .add-embed + label + br { + +.add-embed:not(:checked)+label+br+.multiembedwrap, +.add-embed:not(:checked)+label+br+.multiembedwrap+.add-embed, +.add-embed:not(:checked)+label+br+.multiembedwrap+.add-embed+label, +.add-embed:not(:checked)+label+br+.multiembedwrap+.add-embed+label+br { display: none; } + .add-embed-button { cursor: pointer; font-weight: bold; @@ -2225,6 +2450,7 @@ noscript.b-icon { text-align: center; line-height: 16px; } + .error-in-attachment { box-shadow: 0 0 3px 4px red; } @@ -2236,6 +2462,7 @@ noscript.b-icon { overflow: hidden; z-index: 0; } + .embed-overlay { content: ""; width: 100%; @@ -2244,44 +2471,46 @@ noscript.b-icon { position: absolute; opacity: 0; z-index: 2; - -webkit-transition: opacity 0.4s; transition: opacity 0.4s; line-height: 100%; text-align: center; } + .embed-wrap:hover .embed-overlay { - opacity: 1; + opacity: 1; } + .embed-thumbnail { - -webkit-transition: -webkit-transform 0.4s; - transition: -webkit-transform 0.4s; transition: transform 0.4s; - transition: transform 0.4s, -webkit-transform 0.4s; } + .embed-wrap:hover .embed-thumbnail { - -webkit-transform: scale(1.03); - transform: scale(1.03); + transform: scale(1.03); } -.embed-title, .embed-title:visited, .embed-title:hover { + +.embed-title, +.embed-title:visited, +.embed-title:hover { position: absolute; left: 0; top: 0; text-shadow: 0 1px 2px #000000, 0 2px 8px black; padding: 5px 25px 27px 7px; width: 100%; - background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.7)), to(#0000)); background: linear-gradient(to bottom, rgba(0, 0, 0, 0.7) 0%, #0000 100%); box-sizing: border-box; overflow: hidden; opacity: 0.8; - -webkit-transition: opacity 0.4s; transition: - opacity 0.4s; + opacity 0.4s; z-index: 3; /* height: 5.3rem; */ font-size: 1rem; } -.embed-title a, .embed-title a:visited, .embed-title a:hover { + +.embed-title a, +.embed-title a:visited, +.embed-title a:hover { color: white; font-size: 1rem; text-decoration: none; @@ -2296,13 +2525,16 @@ noscript.b-icon { /* -webkit-box-orient: vertical; */ /* -webkit-mask-image: -webkit-gradient(linear, left 90%, left bottom, from(rgba(0,0,0,1)), to(rgba(0,0,0,0))); */ } + .embed-title a:hover { text-decoration: underline; } + .embed-wrap:hover .embed-title, .embed-wrap:hover .embed-play-button { opacity: 1; } + .embed-duration { font-size: 0.8rem; position: absolute; @@ -2316,26 +2548,25 @@ noscript.b-icon { z-index: 3; cursor: default; } + .embed-wrap .emb-button { z-index: 4; } + .embed-logo { width: 40px; position: absolute; left: 6px; bottom: 6px; - -webkit-filter: grayscale(1); - filter: grayscale(1); - -webkit-transition: -webkit-filter .4s; - transition: -webkit-filter .4s; + filter: grayscale(1); transition: filter .4s; - transition: filter .4s, -webkit-filter .4s; mix-blend-mode: hard-light; } + .embed-wrap:hover .embed-logo { - -webkit-filter: grayscale(0); - filter: grayscale(0); + filter: grayscale(0); } + .embed-wrap:after { content: ''; background: white; @@ -2345,16 +2576,17 @@ noscript.b-icon { left: 0; top: 0; } + .playable-thumb::after { content: ''; } + .embed-play-button, .playable-thumb::after { display: inline-block; position: absolute; top: 50%; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); + transform: translate(-50%, -50%); left: 50%; width: 0; height: 0; @@ -2362,42 +2594,43 @@ noscript.b-icon { border-width: 25px 0 25px 43.3px; border-color: transparent transparent transparent rgba(255, 255, 255, 0.4); cursor: pointer; - -webkit-transition: opacity 0.4s, border-color 0.4s, -webkit-transform 0.4s; - transition: opacity 0.4s, border-color 0.4s, -webkit-transform 0.4s; transition: opacity 0.4s, border-color 0.4s, transform 0.4s; - transition: opacity 0.4s, border-color 0.4s, transform 0.4s, -webkit-transform 0.4s; z-index: 4; opacity: 0; } + .playable-thumb { - -webkit-transition: -webkit-filter 0.4s; - transition: -webkit-filter 0.4s; transition: filter 0.4s; - transition: filter 0.4s, -webkit-filter 0.4s; } + figure:not(.unwrapped):hover .playable-thumb::after { opacity: 1; border-color: transparent transparent transparent rgba(255, 255, 255, 0.78); } + .embed-play-button:hover { border-color: transparent transparent transparent rgba(255, 255, 255, 0.83); - -webkit-transform: translate(-50%, -50%) scale(1.1); - transform: translate(-50%, -50%) scale(1.1); + transform: translate(-50%, -50%) scale(1.1); } + figure:not(.unwrapped):hover .playable-thumb { - -webkit-filter: brightness(0.9); - filter: brightness(0.9); + filter: brightness(0.9); } -.unwrapped .embed-wrap > *[class^=embed] { + +.unwrapped .embed-wrap>*[class^=embed] { display: none; } + .emb-iframe-wrapper { width: 450px; display: none; } -.vertical-video, .soundcloud-embed { + +.vertical-video, +.soundcloud-embed { width: 250px; } + .unwrapped .embed-wrap .emb-iframe-wrapper { position: relative; display: block; @@ -2405,6 +2638,7 @@ figure:not(.unwrapped):hover .playable-thumb { padding: 0; overflow: hidden; } + .emb-iframe-wrapper iframe { position: absolute; top: 0; @@ -2414,6 +2648,7 @@ figure:not(.unwrapped):hover .playable-thumb { width: 100%; border: 0; } + #pups-container { position: fixed; padding: 4px 8px; @@ -2425,14 +2660,15 @@ figure:not(.unwrapped):hover .playable-thumb { height: 0; box-sizing: border-box; } + .history-mode#pups-container { height: 100%; pointer-events: all; } + /* Popups */ #pups-container::after { content: ''; - background: -webkit-gradient(linear, right top, left top, from(#000), to(transparent)); background: linear-gradient(to left, #000 0%, transparent 100%); height: 100%; width: 100%; @@ -2440,112 +2676,114 @@ figure:not(.unwrapped):hover .playable-thumb { top: 0; z-index: -1; opacity: 0; - -webkit-transition: opacity .3s; transition: opacity .3s; } + .history-mode#pups-container::after { opacity: 1; } + .pup { display: block; - -webkit-transition: margin-top .3s, -webkit-transform .3s; - transition: margin-top .3s, -webkit-transform .3s; transition: margin-top .3s, transform .3s; - transition: margin-top .3s, transform .3s, -webkit-transform .3s; padding: 4px 0; text-align: right; pointer-events: all; max-height: 9000px; } + .pup-wrapped { padding: 4px; border: 1px solid currentColor; display: inline-block; text-align: left; - -webkit-transition-property: background-color, color, box-shadow, width; transition-property: background-color, color, box-shadow, width; - -webkit-transition-duration: .3s; - transition-duration: .3s; + transition-duration: .3s; min-width: 100px; } -.alert-icon, .alert-msg { + +.alert-icon, +.alert-msg { display: table-cell; } + .alert-icon { padding: 4px; padding-right: 4px; padding-bottom: 0; vertical-align: top; } + .alert-msg { padding: 2px; padding-right: 4px; } + .pup-noshadow .pup-wrapped { - box-shadow: none!important; + box-shadow: none !important; } + .pup-pre { - -webkit-transition: none; transition: none; } + .pup[pupclass=succ] .pup-wrapped { background: #c4f5b9; border-color: #4dbb35; color: #1c9e00; box-shadow: 0 5px 12px rgba(77, 187, 53, 0.2); } + .pup[pupclass=err] .pup-wrapped { background: #f9cdcd; border-color: #e03333; color: #a23434; box-shadow: 0 5px 12px rgba(187, 53, 53, 0.2); } + .pup[pupclass=info] .pup-wrapped { background: #dff0f9; border-color: #60b9e8; color: #2391cc; box-shadow: 0 5px 12px rgba(86, 174, 224, 0.2); } + .pup[pupclass=warn] .pup-wrapped { background: #fff451; border-color: #d8a72c; color: #ce8105; box-shadow: 0 5px 12px rgba(202, 131, 29, 0.2); } + .pup-away { - -webkit-transform: translate(calc(100% + 20px), 0); - transform: translate(calc(100% + 20px), 0); - -webkit-transition: margin-top .3s .3s, -webkit-transform .3s; - transition: margin-top .3s .3s, -webkit-transform .3s; + transform: translate(calc(100% + 20px), 0); transition: margin-top .3s .3s, transform .3s; - transition: margin-top .3s .3s, transform .3s, -webkit-transform .3s; } + .pup-away .pup-wrapped { - -webkit-transition: none; transition: none; } + .pup-away-full { - -webkit-transition: max-height 0s .3s, padding 0s .3s, -webkit-transform .3s; - transition: max-height 0s .3s, padding 0s .3s, -webkit-transform .3s; transition: transform .3s, max-height 0s .3s, padding 0s .3s; - transition: transform .3s, max-height 0s .3s, padding 0s .3s, -webkit-transform .3s; } + #pups-container:not(.history-mode) .pup-away-full .pup-wrapped { box-shadow: none !important; } + .history-mode .pup { - -webkit-transform: none; - transform: none; - -webkit-transition: -webkit-transform .3s; - transition: -webkit-transform .3s; + transform: none; transition: transform .3s; - transition: transform .3s, -webkit-transform .3s; - margin-top: 0!important; + margin-top: 0 !important; } + .history-toggle { vertical-align: top; } -.pup a, .pup a:visited { + +.pup a, +.pup a:visited { color: currentColor; } @@ -2554,18 +2792,21 @@ figure:not(.unwrapped):hover .playable-thumb { max-width: 100%; width: 100%; } + #pups-container::after { - background: -webkit-gradient(linear, right top, left top, from(rgba(0, 0, 0, .5)), to(transparent)); background: linear-gradient(to left, rgba(0, 0, 0, .5) 0%, transparent 100%); } } + .styletest-form { margin-top: 4px; text-align: center; } + .styletest-form button { width: 40%; } + /* ------------- Mobile menu ------------- */ #mobile-menu { position: fixed; @@ -2580,6 +2821,7 @@ figure:not(.unwrapped):hover .playable-thumb { height: 40px; width: 40px; } + .mm-expanded#mobile-menu { top: 0px; left: 0px; @@ -2587,16 +2829,17 @@ figure:not(.unwrapped):hover .playable-thumb { height: auto; overflow: hidden; } + #mobile-menu-contents { padding: 6px 20px; max-height: 50vh; overflow: auto; opacity: 0; visibility: hidden; - -webkit-transition: opacity .3s; transition: opacity .3s; box-sizing: border-box; } + .mm-item { position: relative; text-decoration: none; @@ -2609,60 +2852,49 @@ figure:not(.unwrapped):hover .playable-thumb { line-height: 16px; font-size: 14px; } -.mm-cat::after, .mm-brd::after { + +.mm-cat::after, +.mm-brd::after { content: ''; position: absolute; left: 0; - top:0; + top: 0; width: 100%; height: 100%; z-index: -1; - -webkit-transform: skew(-20deg, 0); - transform: skew(-20deg, 0); + transform: skew(-20deg, 0); border-radius: 2px; } .mm-cat::after { - -webkit-transition: box-shadow .2s, background-color .2s; transition: box-shadow .2s, background-color .2s; } + .mm-cat { font-weight: bold; } .mm-brd { - -webkit-animation: mmb-appear .15s linear normal forwards; - animation: mmb-appear .15s linear normal forwards; - -webkit-transform-origin: left center; - transform-origin: left center; + animation: mmb-appear .15s linear normal forwards; + transform-origin: left center; } + .mm-boards { display: none; } -@-webkit-keyframes mmb-appear { - from { - -webkit-transform: scale(0,1); - transform: scale(0,1); - opacity: 0; - } - to { - -webkit-transform: scale(1,1); - transform: scale(1,1); - opacity: 1; - } -} + @keyframes mmb-appear { from { - -webkit-transform: scale(0,1); - transform: scale(0,1); + transform: scale(0, 1); opacity: 0; } + to { - -webkit-transform: scale(1,1); - transform: scale(1,1); + transform: scale(1, 1); opacity: 1; } } + #mobile-menu #ms-_options { display: inline-block; text-align: left; @@ -2681,32 +2913,30 @@ figure:not(.unwrapped):hover .playable-thumb { line-height: 40px; text-align: center; } + #mm-circle { height: 40px; width: 40px; border-radius: 40px; - -webkit-transition: -webkit-transform .3s; - transition: -webkit-transform .3s; transition: transform .3s; - transition: transform .3s, -webkit-transform .3s; position: absolute; top: 0; left: 0; } + .mm-expanded #mm-toggle { left: 10px; top: 10px; } + .mm-expanded #mm-circle { box-shadow: none; } + .mm-bars { position: relative; vertical-align: middle; - -webkit-transition: opacity .3s, box-shadow .25s, -webkit-transform .3s; - transition: opacity .3s, box-shadow .25s, -webkit-transform .3s; transition: transform .3s, opacity .3s, box-shadow .25s; - transition: transform .3s, opacity .3s, box-shadow .25s, -webkit-transform .3s; z-index: 1; height: 2px; width: 18px; @@ -2714,9 +2944,9 @@ figure:not(.unwrapped):hover .playable-thumb { display: inline-block; box-shadow: 0 6px 0 0, 0 -6px 0 0; } + .bars-away .mm-bars { - -webkit-transform: scale(0); - transform: scale(0); + transform: scale(0); opacity: 0; } @@ -2725,27 +2955,37 @@ figure:not(.unwrapped):hover .playable-thumb { } /* ---------- deleted items ---------- */ -.deleted.reply, figure.deleted { +.deleted.reply, +figure.deleted { box-shadow: inset 0 0 59px rgba(255, 15, 15, 0.33); } -.mod-deleted.reply, figure.mod-deleted { + +.mod-deleted.reply, +figure.mod-deleted { box-shadow: inset 0 0 59px rgba(255, 195, 15, 0.22); } -.op-deleted.reply, figure.op-deleted { + +.op-deleted.reply, +figure.op-deleted { box-shadow: inset 0 0 59px rgba(15, 252, 255, 0.22); } + .deleted.reply { border: 1px solid rgba(255, 15, 15, 0.51); } + .mod-deleted.reply { border: 1px solid rgba(255, 195, 15, 0.33); } + .op-deleted.reply { border: 1px solid rgba(15, 252, 255, 0.33); } + figure.deleted { position: relative; } + figure.deleted:after { content: ''; position: absolute; @@ -2756,17 +2996,21 @@ figure.deleted:after { left: 0; pointer-events: none; } + figure.mod-deleted:after { box-shadow: inset 0 0 0 1px rgba(255, 195, 15, 0.33); } + figure.op-deleted:after { box-shadow: inset 0 0 0 1px rgba(15, 252, 255, 0.33); } + .deleted[id^=thread] .op .posthead { position: relative; z-index: 1; display: inline-block; } + .deleted[id^=thread] .op .posthead:before { content: ''; position: absolute; @@ -2776,15 +3020,18 @@ figure.op-deleted:after { width: 100%; border-bottom: 2px solid #ce3e3d; } + figure.deleted:not(:hover) .embed-thumbnail, figure.deleted:not(:hover) .thumb, -.deleted.reply:not(:hover) > div { +.deleted.reply:not(:hover)>div { opacity: .5; } + .post-ttl { font-size: .9em; color: #e03d43; } + .hashpic { vertical-align: middle; margin-bottom: 4px; @@ -2794,14 +3041,17 @@ figure.deleted:not(:hover) .thumb, .post-menu-toggle { vertical-align: -2px; } + .touch-mode .posthead .post-menu-toggle, .touch-mode .post-menu-toggle .b-icon { width: 16px; } + .touch-mode .file-menu-toggle { opacity: 1; height: 16px; } + .post-menu { position: absolute; left: -1px; @@ -2810,71 +3060,84 @@ figure.deleted:not(:hover) .thumb, font-size: 0; box-sizing: border-box; } + figure .post-menu { min-width: 100%; box-sizing: border-box; left: 0px; } + .post-menu ul { margin: 0; padding: 0; white-space: pre-line; } -.post-menu a, .post-menu a:hover, .post-menu a:visited { + +.post-menu a, +.post-menu a:hover, +.post-menu a:visited { text-decoration: none; color: inherit; } + .post-menu li { list-style: none; padding: 0 6px 0 3px; padding-right: 6px; cursor: pointer; - -webkit-transition: background-color .2s, color .2s; transition: background-color .2s, color .2s; line-height: 24px; white-space: nowrap; font-style: normal; } + .touch-mode .post-menu li { line-height: 30px; } + .post-menu li * { vertical-align: middle; } + .post-menu li span { font-size: 14px; } + .post-menu li .icon { margin-right: 5px; } + .menu-captcha { - display: -webkit-box; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - -webkit-box-align: center; - align-items: center; + flex-direction: column; + align-items: center; } -.menu-captcha .captchawrap, .menu-captcha input { + +.menu-captcha .captchawrap, +.menu-captcha input { margin-bottom: 2px; } + .menu-captcha input { margin-bottom: 2px; width: 100%; } + .select-multiple .multidel { display: initial; } + .select-multiple .post-menu-toggle, .select-multiple .file-menu-toggle, .post-hidden .menu-hide, .postnode:not(.post-hidden) .menu-unhide { display: none; } + .post-hidden .posthead { margin-bottom: 0; } + .icon-wraping-button { outline: none; background: none; @@ -2886,32 +3149,40 @@ figure .post-menu { margin: 0 2px; vertical-align: middle; } + .icon-wraping-button .b-icon { margin: 0; } + .close-multisel { position: absolute; top: 4px; right: 2px; } + .post-menu li.spin-around:before { top: 2px; left: 1px; } + .touch-mode .post-menu li.spin-around:before { top: 5px; } + .pm-link { - -webkit-transition: width .2s!important; + transition: width .2s !important; display: inline-block; width: 60px; } + .pm-direct-link { margin-right: 6px; } + .pm-link.selected { width: 120px; } + /* .js-supported .shl { pointer-events: none; cursor: default; @@ -2926,6 +3197,7 @@ figure .post-menu { border: none; text-decoration: none; } + .fresh-replies { margin-top: 4px; display: inline-block; @@ -2935,13 +3207,12 @@ figure .post-menu { position: relative; overflow: hidden; } + .f-spoiler figcaption, .f-spoiler a img.thumb { - -webkit-transition: -webkit-filter .3s; - transition: -webkit-filter .3s; transition: filter .3s; - transition: filter .3s, -webkit-filter .3s; } + .spoiler-cover { position: absolute; width: 100%; @@ -2949,49 +3220,54 @@ figure .post-menu { z-index: 1; line-height: 100%; text-align: center; - display: -webkit-box; display: flex; border: 1px dashed currentColor; box-sizing: border-box; } + .spoiler-cover .icon { width: 32px; height: 32px; } + .spoiler-checkbox { display: none; } -.spoiler-checkbox:checked + label .spoiler-cover { + +.spoiler-checkbox:checked+label .spoiler-cover { display: none; } -.spoiler-checkbox:not(:checked) + label + figcaption, -.spoiler-checkbox:not(:checked) + label + figcaption + a img.thumb, -.spoiler-checkbox:not(:checked) + label + .embed-wrap { + +.spoiler-checkbox:not(:checked)+label+figcaption, +.spoiler-checkbox:not(:checked)+label+figcaption+a img.thumb, +.spoiler-checkbox:not(:checked)+label+.embed-wrap { opacity: 0; } -@supports ((-webkit-filter: blur(15px)) or (filter: blur(15px))) { - .spoiler-checkbox:not(:checked) + label + figcaption, - .spoiler-checkbox:not(:checked) + label + figcaption + a img.thumb, - .spoiler-checkbox:not(:checked) + label + .embed-wrap { - -webkit-filter: blur(15px); - filter: blur(15px); + +@supports (filter: blur(15px)) { + + .spoiler-checkbox:not(:checked)+label+figcaption, + .spoiler-checkbox:not(:checked)+label+figcaption+a img.thumb, + .spoiler-checkbox:not(:checked)+label+.embed-wrap { + filter: blur(15px); opacity: 1; } + .spoiler-cover { border: none; } } + .spoiler-cover div { vertical-align: middle; display: inline-block; - -webkit-align-self: center; - -ms-grid-row-align: center; - align-self: center; + -ms-grid-row-align: center; + align-self: center; opacity: .7; - -webkit-transition: opacity .2s; transition: opacity .2s; margin: 0px auto; } + .spoiler-cover:hover div { opacity: 1; } @@ -3004,8 +3280,7 @@ figure .post-menu { } .spinner { - -webkit-animation: spin 0.6s infinite linear, spinner-appear 0.15s forwards; - animation: spin 0.6s infinite linear, spinner-appear 0.15s forwards; + animation: spin 0.6s infinite linear, spinner-appear 0.15s forwards; height: 16px; display: inline-block; border-style: solid; @@ -3018,25 +3293,13 @@ figure .post-menu { top: 0; } -@-webkit-keyframes spinner-appear { - from { - opacity: 0; - width: 0; - margin: 0; - } - to { - opacity: 1; - width: 16px; - margin: 0 8px 0 -3px; - } -} - @keyframes spinner-appear { from { opacity: 0; width: 0; margin: 0; } + to { opacity: 1; width: 16px; @@ -3047,10 +3310,12 @@ figure .post-menu { .logo { text-decoration: none; } + a.logo { position: relative; padding-left: 1em; } + a.logo::after, a.logo::before { content: ''; @@ -3059,47 +3324,46 @@ a.logo::before { position: absolute; left: 0; height: 40%; - -webkit-transition: -webkit-transform .2s; - transition: -webkit-transform .2s; transition: transform .2s; - transition: transform .2s, -webkit-transform .2s; } + a.logo::before { top: 11%; - -webkit-transform: rotate(45deg); - transform: rotate(45deg); - -webkit-transform-origin: bottom; - transform-origin: bottom; + transform: rotate(45deg); + transform-origin: bottom; } + a.logo::after { bottom: 11%; - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); - -webkit-transform-origin: top; - transform-origin: top; + transform: rotate(-45deg); + transform-origin: top; } + a.logo:hover::before { - -webkit-transform: translate(-3px, 0) rotate(45deg); - transform: translate(-3px, 0) rotate(45deg); + transform: translate(-3px, 0) rotate(45deg); } + a.logo:hover::after { - -webkit-transform: translate(-3px, 0) rotate(-45deg); - transform: translate(-3px, 0) rotate(-45deg); + transform: translate(-3px, 0) rotate(-45deg); } + .remove-file-legacy { display: none; } -.non-empty-file-input + label + label + .remove-file-legacy { + +.non-empty-file-input+label+label+.remove-file-legacy { display: initial; } + .debug-show { - display: block!important; + display: block !important; } + .drop-area { max-width: 530px; - -webkit-transition: width .2s, height .2s; transition: width .2s, height .2s; } + .add-files { background: none; border: none; @@ -3110,9 +3374,9 @@ a.logo:hover::after { display: block; border: 1px dashed currentColor; padding: 6px; - -webkit-transition: color .2s; transition: color .2s; } + .fda-non-empty .add-files { display: inline-block; width: 51px; @@ -3130,6 +3394,7 @@ a.logo:hover::after { .add-files-plus { display: none; } + .fda-non-empty .add-files-plus { display: inline-block; font-size: 0; @@ -3137,6 +3402,7 @@ a.logo:hover::after { width: 100%; position: relative; } + .add-files-plus:before, .add-files-plus:after { content: ''; @@ -3144,27 +3410,30 @@ a.logo:hover::after { background: currentColor; display: inline-block; } + .add-files-plus:before { height: 23px; width: 3px; left: 23px; top: 13px; } + .add-files-plus:after { width: 23px; height: 3px; left: 13px; top: 23px; } + .fda-form-full .add-files { display: none; } + .file-entry { margin: 0 4px 4px 0; display: inline-block; width: 70px; height: 70px; - -webkit-transition: width .3s, height .3s, background-color .3s, line-height .3s; transition: width .3s, height .3s, background-color .3s, line-height .3s; font-size: 0; line-height: 33px; @@ -3176,11 +3445,13 @@ a.logo:hover::after { overflow: hidden; vertical-align: middle; } + .fe-expanded { width: 200px; height: 200px; line-height: 150px; } + .fe-thumb { width: 100%; height: 100%; @@ -3191,13 +3462,14 @@ a.logo:hover::after { position: relative; text-align: center; border-radius: 4px; - -webkit-transition: width .3s, height .3s; transition: width .3s, height .3s; } + .fe-expanded .fe-thumb { width: 100%; height: 158px; } + .fe-noimg { height: 70px; width: 70px; @@ -3207,29 +3479,28 @@ a.logo:hover::after { text-align: center; line-height: 70px; text-transform: uppercase; - background: -webkit-gradient(linear, left top, left bottom, color-stop(-150%, currentColor), color-stop(150%, transparent)); background: linear-gradient(to bottom, currentColor -150%, transparent 150%); -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-transition: font-size .3s, padding .3s; + -ms-user-select: none; + user-select: none; transition: font-size .3s, padding .3s; display: inline-block; } + .fe-expanded .fe-noimg { padding: 40px; font-size: 20px; } + .fe-thumb img { max-height: 100%; max-width: 100%; vertical-align: middle; display: inline-block; } + .fe-spoiler img { - -webkit-filter: blur(3px); - filter: blur(3px); + filter: blur(3px); } .fe-edit-mode .file-entry { @@ -3237,84 +3508,91 @@ a.logo:hover::after { width: 100%; margin-right: 50px; } + .file-entry button:not(.fe-pop-button) { display: none; } + .fe-fn { display: block; width: calc(100% - 22px); - vertical-align: middle; + /* vertical-align: middle; */ box-sizing: border-box; margin-top: 4px; visibility: hidden; height: 20px; } + .fe-expanded .fe-fn { visibility: visible; visibility: hidden; - -webkit-animation: fe-appear 0s .3s ease 1 normal forwards; - animation: fe-appear 0s .3s ease 1 normal forwards; + animation: fe-appear 0s .3s ease 1 normal forwards; text-align: center; -} +} + .fe-pop-button { margin: 0; position: absolute; width: auto; height: auto; - -webkit-transform: scale(0); - transform: scale(0); - -webkit-transition: -webkit-transform .2s; - transition: -webkit-transform .2s; + transform: scale(0); transition: transform .2s; - transition: transform .2s, -webkit-transform .2s; z-index: 2; } + .file-entry:hover .fe-pop-button, .fe-spoiler .spoiler-file, .fe-name-hidden .clear-filename, .fe-expanded .clear-filename { - -webkit-transform: scale(1); - transform: scale(1); + transform: scale(1); } + .fe-pop-button.remove-file { right: 0; top: 0; } + .fe-pop-button.spoiler-file { bottom: 0; left: 0; } + .fe-pop-button.clear-filename { bottom: 0px; right: 0px; } + .fe-expanded .fe-pop-button.clear-filename { bottom: 23px; right: 5px; - -webkit-transition: none; - transition:none; + transition: none; visibility: hidden; - -webkit-animation: fe-appear 0s .3s ease 1 normal forwards; - animation: fe-appear 0s .3s ease 1 normal forwards; -} -@-webkit-keyframes fe-appear { - from {visibility: hidden} - to {visibility: visible} + animation: fe-appear 0s .3s ease 1 normal forwards; } + @keyframes fe-appear { - from {visibility: hidden} - to {visibility: visible} + from { + visibility: hidden + } + + to { + visibility: visible + } } + .fe-pop-button svg { padding: 1px; } + .fe-sort-wrapper { font-size: 0; white-space: normal; } + .fda-non-empty .fe-sort-wrapper { display: inline; } + .fe-info { font-size: 12px; line-height: 21px; @@ -3326,34 +3604,37 @@ a.logo:hover::after { display: none; overflow: hidden; } + .fe-expanded .fe-info { display: block; } + .sosach_indicator { height: 16px; float: left; margin-left: -4px; } + .fly-to-zero { - -webkit-transform: scale(.03); - transform: scale(.03); + transform: scale(.03); opacity: 0.3; - -webkit-transition: opacity .3s, -webkit-transform .3s; - transition: opacity .3s, -webkit-transform .3s; transition: transform .3s, opacity .3s; - transition: transform .3s, opacity .3s, -webkit-transform .3s; } + .form-handle-icon { margin-right: 2px; opacity: .5; display: none; } + .collapsed .form-handle-icon { display: inline-block; } + .button-with-reminder { position: relative; } + .button-with-reminder::after { content: ''; height: 5px; @@ -3364,22 +3645,26 @@ a.logo:hover::after { top: -16px; right: 2px; } + .reflinkpreview .postboxcontrol .pinner { display: none; } + /* ------------------------ Simplified postform ------------------------ */ .postform-simplified { padding: 0px; padding-top: 20px; } + .postform-simplified tr { display: block; } + .postform-simplified .drop-area { - -webkit-box-flex: 1; - flex-grow: 1; + flex-grow: 1; max-width: 100%; } + .postform-simplified .postblock, .postform-simplified .markupbtns, .postform-simplified .sage-row, @@ -3393,378 +3678,416 @@ a.logo:hover::after { .quick-reply-form:not(.postform-simplified) .simplified-send-row { display: none; } + .postform-simplified .row-shown, .postform-simplified.fda-non-empty .file-row { - display: -webkit-box; display: flex; } + .postform-simplified .row-shown.embed-row { display: block; margin-right: -64px; width: 100%; } + .postform-simplified .simplified-extras { display: block; } + .simplified-send-row .icon { vertical-align: middle; line-height: 16px; display: none; } + .js-supported .simplified-send-row .icon { display: block; } + .simplified-send-row .icon.next-to-text { margin-right: 4px; } + .sage-icon { - -webkit-transform: scale(1,-1); - transform: scale(1,-1); - -webkit-transform-origin: 0; - transform-origin: 0; + transform: scale(1, -1); + transform-origin: 0; } + .simplified-send-row button { /* width: 50%; */ - display: -webkit-box; display: flex; - -webkit-box-align: center; align-items: center; - -webkit-box-pack: center; justify-content: center; padding: 2px 0; } + .simplified-send-row button { - -webkit-box-flex: 1; - flex-grow: 1; + flex-grow: 1; height: 24px; } + .simplified-send-row button { margin-right: 3%; } + .simplified-send-row button:last-child { margin-right: 0px; } + .postform-simplified .simplified-send-row button.primary { - -webkit-box-flex: 2; - flex-grow: 2; + flex-grow: 2; } + .postform-simplified .message-row { font-size: 0; } + .postform-simplified .postform { margin: 0 2px; } + .postform-simplified textarea { min-width: 240px; min-height: 50px; } + .postform-simplified td { margin: 4px 0; } + .postform-simplified td, .postform-simplified .captcharow { - display: -webkit-box; display: flex; width: 100%; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; flex-direction: row; - -webkit-box-align: baseline; align-items: baseline; padding: 0; } + .postform-simplified .captcharow { - -webkit-box-align: center; - align-items: center; + align-items: center; } + .postform-simplified .message-row td { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; + flex-direction: column; } + .postform-simplified .file-row td { margin-bottom: -2px; } + .postform-simplified input[type=submit] { display: none; } + .postform-simplified input[name=name], .postform-simplified input[name=captcha], .postform-simplified input[name=subject], .postform-simplified input[name=postpassword] { - -webkit-box-flex: 1; flex-grow: 1; width: 0; min-width: 0; } + .postform-simplified input[name=name] { margin-right: 8px; } + .postform-simplified input[name=captcha] { margin-right: 0; } + /* .postform-simplified input[name=captcha] { } */ .postform-simplified .captchawrap { - -webkit-box-ordinal-group: 0; - order: -1; + order: -1; margin-right: 8px; - } +} + .postform-simplified .embed-row td:not(.postblock) { display: block; width: 100%; } + .postform-simplified .multiembedwrap { width: calc(100% - 32px); - display: -webkit-inline-box; display: inline-flex; - -webkit-box-align: center; - align-items: center; + align-items: center; font-size: 0; } + .postform-simplified .multiembedwrap input[type=text] { - -webkit-box-flex: 1; - flex-grow: 1; + flex-grow: 1; width: calc(100% - 62px); margin-right: 3px; } + .postform-simplified input::-webkit-input-placeholder { - opacity: 1; + opacity: 1; padding-left: 3px; } + .postform-simplified input:-moz-placeholder { - opacity: 1; + opacity: 1; padding-left: 3px; } + .postform-simplified .subject-submit { font-size: 0; } + .simplified-send-row td { margin-top: 8px; } + .postform-simplified input[name=ttl] { margin-left: 4px; margin-bottom: -2px; } + .postform-simplified .form-spinner { height: 110px; width: 110px; } + .postform-simplified .site-indicator { margin: 0 4px; } + .collapsed .simplify-qr-form { display: none; } + .postform-simplified .markup-enabled td:not(.postblock) { position: relative; /* margin-top: 0; */ } + .postform-simplified .markup-enabled .markupbtns { - display: -webkit-box; display: flex; /* position: absolute; top: 1px; */ } + .postform-simplified .markup-enabled textarea { min-width: 500px; } + .quick-reply-form:not(.postform-simplified) .use-complicate, .postform-simplified .use-simplify { display: none; } + .reflinkpreview .quick-reply-form { margin: 0px 4px; - -webkit-animation: none; - animation: none; + animation: none; background: none; - border: none!important; - box-shadow: none!important; + border: none !important; + box-shadow: none !important; } + .postform-simplified .add-embed-button { vertical-align: baseline; } + input[name=postpassword] { margin-right: 4px; } + .postform-simplified input[name=postpassword] { flex-basis: 60px; } -input[name=postpassword] + div { + +input[name=postpassword]+div { display: inline-block; } -.postform-simplified input[name=postpassword] + div { + +.postform-simplified input[name=postpassword]+div { min-width: 0px; white-space: nowrap; } -.postform-simplified input[name=postpassword] + div span { + +.postform-simplified input[name=postpassword]+div span { overflow: hidden; text-overflow: ellipsis; display: inline-block; max-width: 100%; vertical-align: middle; } + .postform-simplified.quick-reply-form .postform tbody { margin-bottom: -1px; } + /* ------------------------ /Simplified postform ------------------------ */ .main-reply-form .simplified-send-row, .main-reply-form .s-file { display: none; } + /* ------------- Simplify main postform for narrow screens -------------- */ @media only screen and (max-width: 666px) { - .main-reply-form table.postform, + + .main-reply-form table.postform, .main-reply-form table.postform tbody { display: block; padding: 0 4px; box-sizing: border-box; } - .main-reply-form tr, .main-reply-form .simplified-send-row { - display: -webkit-box; + + .main-reply-form tr, + .main-reply-form .simplified-send-row { display: flex; } + .drop-area { - -webkit-box-flex: 1; - flex-grow: 1; + flex-grow: 1; max-width: 100%; } + .postblock, .sage-row { - display: none!important; + display: none !important; } + .embed-row { display: block; margin-right: -64px; width: 100%; } - .message-row, .subject-submit { + + .message-row, + .subject-submit { font-size: 0; } + .postform { margin: 0 2px; width: 100%; } + textarea { min-height: 50px; min-width: 100%; max-width: 100%; box-sizing: border-box; } + .main-reply-form td { margin: 4px 0; } + .main-reply-form td:not(.postblock), .main-reply-form .captcharow { - display: -webkit-box; display: flex; width: 100%; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-direction: row; - -webkit-box-align: center; - align-items: center; + flex-direction: row; + align-items: center; padding: 0; } + .message-row td:not(.postblock) { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - -webkit-box-align: start; - align-items: flex-start; + flex-direction: column; + align-items: flex-start; } + .file-row td { margin-bottom: -2px; } + .main-reply-form input[type=submit] { display: none; } + .main-reply-form input[name=name], .main-reply-form input[name=captcha], .main-reply-form input[name=subject], .main-reply-form input[name=postpassword] { - -webkit-box-flex: 1; - flex-grow: 1; + flex-grow: 1; width: 0; min-width: 0; } + .main-reply-form input[name=name] { margin-right: 8px; } + .main-reply-form input[name=captcha] { margin-right: 0; } + .captchawrap { - -webkit-box-ordinal-group: 0; - order: -1; - margin-right: 8px; + order: -1; + margin-right: 8px; } + .embed-row td:not(.postblock) { display: block; width: 100%; } + .multiembedwrap { width: calc(100% - 32px); - display: -webkit-inline-box; display: inline-flex; - -webkit-box-align: center; - align-items: center; + align-items: center; font-size: 0; } + .multiembedwrap input[type=text] { - -webkit-box-flex: 1; - flex-grow: 1; + flex-grow: 1; width: calc(100% - 62px); margin-right: 3px; } + .main-reply-form input::-webkit-input-placeholder { - opacity: 1; + opacity: 1; padding-left: 3px; } + .main-reply-form input:-moz-placeholder { - opacity: 1; + opacity: 1; padding-left: 3px; } + input[name=ttl] { margin-left: 4px; margin-bottom: -2px; } - .form-spinner { - /*height: 110px;*/ - /*width: 110px;*/ - } + .site-indicator { margin: 0 4px; } + .add-embed-button { vertical-align: baseline; } - .markupbtns, { + + .markupbtns { display: block; - /* position: absolute; */ top: 1px; } + .main-reply-form:not(.fda-non-empty) .add-files { margin: 2px 0 6px 0; } + .main-reply-form .blotter-row td { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; + flex-direction: column; } + .quick-reply-form { margin: 0; width: 100%; box-sizing: border-box; margin-bottom: 4px; - -webkit-animation: none; animation: none; min-width: 210px; } + .quick-reply-form textarea, - .postform-simplified textarea { + .postform-simplified textarea { max-width: 100%; resize: vertical; min-width: 100%; @@ -3775,82 +4098,106 @@ input[name=postpassword] + div { margin: 0; padding: 0 1px; } + .quick-reply-form .postform tbody { width: 100%; } - .simplify-qr-form, .postboxcontrol .pinner { + + .simplify-qr-form, + .postboxcontrol .pinner { display: none; } + body { - -webkit-animation: windowSmall 0.001s; - animation: windowSmall 0.001s; + animation: windowSmall 0.001s; } + .postform input[name=postpassword] { flex-basis: 60px; } - .postform input[name=postpassword] + div { + + .postform input[name=postpassword]+div { min-width: 0px; white-space: nowrap; } - .postform input[name=postpassword] + div span { + + .postform input[name=postpassword]+div span { overflow: hidden; text-overflow: ellipsis; display: inline-block; max-width: 100%; vertical-align: middle; } - .markupbtns, .postform-simplified .markup-enabled .markupbtns { + + .markupbtns, + .postform-simplified .markup-enabled .markupbtns { flex-wrap: wrap; margin-top: -4px; } + .uibutton { padding: 2px 8px; margin: 4px 2px; } + .uib-spoiler:before { line-height: 166%; } + .postform-simplified .markup-enabled textarea { min-width: 100%; } } + /* ------------ /Simplify main postform for narrow screens -------------- */ .fresh-replies-breaker { display: none; } -.qrf-builtin:not(.hidden) + .fresh-replies-breaker { + +.qrf-builtin:not(.hidden)+.fresh-replies-breaker { display: block; } + .isthread .inthread-hide { display: none; } + .actual-reflinkpreview .postnode.op { - float: none!important; - display: table-cell!important; + float: none !important; + display: table-cell !important; } -.actual-reflinkpreview .replies, + +.actual-reflinkpreview .replies, .actual-reflinkpreview .omittedposts { margin-left: 0; } + /* Inline collapsible menus */ -.collapsed-menu-contents, .collapsible-menu input[type=checkbox] { +.collapsed-menu-contents, +.collapsible-menu input[type=checkbox] { display: none; } -.collapsible-menu input[type=checkbox]:checked + .collapsible-menu-name + .collapsed-menu-contents { + +.collapsible-menu input[type=checkbox]:checked+.collapsible-menu-name+.collapsed-menu-contents { display: inline; } -.collapsible-menu input[type=checkbox]:checked + .collapsible-menu-name { + +.collapsible-menu input[type=checkbox]:checked+.collapsible-menu-name { text-decoration: none; } -.collapsible-menu input[type=checkbox]:checked + .collapsible-menu-name::after { + +.collapsible-menu input[type=checkbox]:checked+.collapsible-menu-name::after { content: ': '; font-weight: normal; } + .collapsible-menu-name { + -webkit-text-decoration: underline dotted; text-decoration: underline dotted; cursor: pointer; } + .collapsed-menu-contents a { display: inline-block; transform-origin: 0 0; @@ -3877,6 +4224,7 @@ input[name=postpassword] + div { z-index: 1000; width: 100%; } + .media-viewer { position: fixed; width: 100%; @@ -3888,21 +4236,31 @@ input[name=postpassword] + div { box-sizing: border-box; display: flex; justify-content: center; + -webkit-user-select: none; + -ms-user-select: none; user-select: none; } + .media-viewer { background-color: rgba(0, 0, 0, 0.75); } + .mvc-collapsed .mv-label { display: none; } + .mvc-collapsed .media-viewer { background-color: transparent; } -.mv-transparent/* , .mv-collapsed */ { + +.mv-transparent + +/* , .mv-collapsed */ + { background-color: transparent; pointer-events: none; } + .media-viewer .media-item { transition-property: transform; transition-duration: .25s; @@ -3915,6 +4273,7 @@ input[name=postpassword] + div { justify-content: center; pointer-events: all; } + .mv-label { position: absolute; bottom: 8px; @@ -3928,10 +4287,12 @@ input[name=postpassword] + div { opacity: 0; transition: opacity 1.5s; } + .mv-label.mvl-visible { opacity: 1; transition-duration: .15s; } + .mv-button { cursor: pointer; position: absolute; @@ -3941,20 +4302,24 @@ input[name=postpassword] + div { transition: opacity .2s; z-index: 2; } + .mv-button:hover { opacity: 1; } + .mv-prev { left: 0; height: 100%; top: 0; - background: linear-gradient(to left, transparent 0%, rgba(0,0,0,0.4) 100%); + background: linear-gradient(to left, transparent 0%, rgba(0, 0, 0, 0.4) 100%); } + .mv-next { right: 0; height: 100%; - background: linear-gradient(to right, transparent 0%, rgba(0,0,0,0.4) 100%); + background: linear-gradient(to right, transparent 0%, rgba(0, 0, 0, 0.4) 100%); } + .mv-prev-next::before { content: ''; width: 33px; @@ -3969,21 +4334,27 @@ input[name=postpassword] + div { transition: transform .2s; box-shadow: -2px -2px 2px 0px rgb(0 0 0 / 40%), inset 2px 2px 2px 0px rgb(0 0 0 / 40%); } + .mv-prev:hover::before { transform: translate(-18px, -50%) rotate(-45deg); } + .mv-next::before { transform: translate(-33px, -50%) rotate(135deg); } + .mv-next:hover::before { transform: translate(-16px, -50%) rotate(135deg); } + .mv-close { height: 80px; top: 0; right: 0; } -.mv-close::before, .mv-close::after { + +.mv-close::before, +.mv-close::after { content: ''; width: 40px; height: 40px; @@ -3991,24 +4362,29 @@ input[name=postpassword] + div { box-sizing: border-box; transition: transform .2s; } + .mv-close::before { left: 50%; top: 55px; transform: translate(-5px, -50%) rotate(-45deg); border-top: 2px solid #ffffff; } + .mv-close::after { left: 50%; top: 29px; transform: translate(-5px, -50%) rotate(-45deg); border-left: 2px solid #ffffff; } + .mv-restore { height: 80px; left: 0; top: 0; } -.mv-restore::before, .mv-restore::after { + +.mv-restore::before, +.mv-restore::after { content: ''; width: 26px; height: 26px; @@ -4017,26 +4393,33 @@ input[name=postpassword] + div { left: 22px; top: 26px; } + .mv-restore::after { transform: translate(8px, -6px); border-bottom: none; border-left: none; } -.media-item img, .media-item video { + +.media-item img, +.media-item video { max-width: 100%; max-height: 100%; + -o-object-fit: scale-down; object-fit: scale-down; } + .mv-under { position: absolute; width: 100%; height: 100%; + -o-object-fit: scale-down; object-fit: scale-down; background-repeat: no-repeat; background-size: contain; background-position: center center; top: 0; } + .mv-over { display: none; position: relative; @@ -4045,9 +4428,11 @@ input[name=postpassword] + div { top: 50%; transform: translate(0, -50%); } + .loaded .mv-over { display: block; } + .media-item::before { content: ''; position: absolute; @@ -4063,15 +4448,19 @@ input[name=postpassword] + div { border-color: rgba(255, 255, 255, 0.8) rgba(255, 255, 255, 0.8) rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.4); animation: c-spin 0.7s infinite linear; } + .media-item.loaded::before { content: none; } + .placeholder-svg { pointer-events: none; } + .no-transition { - transition: none!important; + transition: none !important; } + .video-event-overlay { pointer-events: all; position: absolute; @@ -4082,8 +4471,68 @@ input[name=postpassword] + div { display: block; height: 40px; } + .endless-scroll-loading::before { left: calc(50% - 8px); top: calc(50% - 8px); - transform: translate(-12px,-8px); -} \ No newline at end of file + transform: translate(-12px, -8px); +} + +/* ------------------------ Generic file icons ------------------------ */ +.generic-file-icon { + display: inline-block; + height: 48px; + width: 36px; + background-image: linear-gradient(to bottom, transparent 0%, rgba(0, 0, 0, 0.3) 100%); + -webkit-clip-path: polygon(-1px -1px, 24.5px -1px, 37px 11.5px, 37px 49px, -1px 49px, -1px -1px); + clip-path: polygon(-1px -1px, 24.5px -1px, 37px 11.5px, 37px 49px, -1px 49px, -1px -1px); + box-shadow: 0 2px 2px rgb(0 0 0 / 30%); + transition: filter .2s; + position: relative; + line-height: normal; + vertical-align: middle; +} + +.generic-file-icon::before { + background: white; + top: 0; + mix-blend-mode: lighten; + opacity: 0.7; +} + +.generic-file-icon::before, +.generic-file-icon::after { + content: ""; + width: 11px; + height: 11px; + position: absolute; + right: 0; +} + +.generic-file-icon::after { + background: black; + opacity: .2; + top: 11px; + -webkit-clip-path: polygon(-1px -1px, 12px -1px, 12px 12px, -1px -1px); + clip-path: polygon(-1px -1px, 12px -1px, 12px 12px, -1px -1px); +} + +.gfi-extension { + color: #fff; + text-transform: uppercase; + font-size: 11px; + letter-spacing: 0.4pt; + transform: rotate(-90deg) scale(.8, 1); + position: absolute; + bottom: 3px; + left: 15px; + transform-origin: bottom left; + text-shadow: -1px 1px 1px rgb(0 0 0 / 60%); + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.generic-file-icon:hover { + filter: brightness(1.05) contrast(1.15); +} diff --git a/dwoo/templates/board_main_loop.tpl b/dwoo/templates/board_main_loop.tpl index 33af738..35405e7 100644 --- a/dwoo/templates/board_main_loop.tpl +++ b/dwoo/templates/board_main_loop.tpl @@ -210,7 +210,14 @@ {if $embed.file_type eq 'css'} class="csswrap" {/if} {if %KU_NEWWINDOW}target="_blank"{/if} href="{$file_path}/src/{$embed.file}.{$embed.file_type}"> -
{$post.id}
+ {* FUCK THIS BULLSHIT LOGIC I WANNA KMS *} + {if $embed.generic_icon == 2} +
+
{$embed.file_type}
+
+ {else} +
{$post.id}
+ {/if} {/if} diff --git a/dwoo/templates/board_post_box.tpl b/dwoo/templates/board_post_box.tpl index ff83a7d..640f373 100644 --- a/dwoo/templates/board_post_box.tpl +++ b/dwoo/templates/board_post_box.tpl @@ -1,6 +1,6 @@
-{if not $isthread}
!i0-pb
{/if}
+{if not $isthread}
!i0-pb
{/if} @@ -81,7 +81,7 @@ {/if} - {if $board.filetypes_allowed} + {if $board.filetypes_allowed || $board.any_filetype} {t}File{/t} @@ -213,12 +213,22 @@ [{t}Info{/t}]
  • {t}Supported file types are{/t}: {strip} - {if $board.filetypes_allowed neq ''} - {foreach name=files item=filetype from=$board.filetypes_allowed} - {$filetype|upper}{if $.foreach.files.last}{else}, {/if} + {if ($board.filetypes_allowed neq '' && !empty($board.filetypes_allowed))} + {foreach name=types item=filetype from=$board.filetypes_allowed} + {$filetype|upper}{if $.foreach.types.last}{else}, {/if} {/foreach} {else} - {t}None{/t} + {if $board.any_filetype} + {t}All{/t} + {if %I0_BANNED_FILETYPES} + {t} except {/t} + {foreach name=types from=explode(':', %I0_BANNED_FILETYPES) item=filetype} + {$filetype|upper}{if $.foreach.types.last}{else}, {/if} + {/foreach} + {/if} + {else} + {t}None{/t} + {/if} {/if}.{/strip}
  • {t}Supported embed types are{/t}: {strip} diff --git a/inc/classes/board-post.class.php b/inc/classes/board-post.class.php index 4893dcd..71e5b4b 100644 --- a/inc/classes/board-post.class.php +++ b/inc/classes/board-post.class.php @@ -117,7 +117,12 @@ class Board { } } foreach($filetypes_allowed as $filetype) { - $this->board['filetypes_allowed'] []= $filetype['filetype']; + if ($filetype['filetype']=="*") { + $this->board['any_filetype'] = true; + $this->board['filetypes_allowed'] = array(); + } + else + $this->board['filetypes_allowed'] []= $filetype['filetype']; } $ftypes = $tc_db->GetAll("SELECT `filetype` FROM `" . KU_DBPREFIX . "embeds`"); $this->board['filetypes'] = array(); @@ -756,25 +761,31 @@ class Board { ) { if(!isset($filetype_info[$embed['file_type']])) $filetype_info[$embed['file_type']] = getfiletypeinfo($embed['file_type']); - $embed['nonstandard_file'] = KU_WEBPATH . '/inc/filetypes/' . $filetype_info[$embed['file_type']][0]; - if($embed['thumb_w']!=0&&$embed['thumb_h']!=0) { - if(file_exists(KU_BOARDSDIR.$this->board['name'].'/thumb/'.$embed['file'].'s.jpg')) - $embed['nonstandard_file'] = KU_WEBPATH . '/' .$this->board['name'].'/thumb/'.$embed['file'].'s.jpg'; - elseif(file_exists(KU_BOARDSDIR.$this->board['name'].'/thumb/'.$embed['file'].'s.png')) - $embed['nonstandard_file'] = KU_WEBPATH . '/' .$this->board['name'].'/thumb/'.$embed['file'].'s.png'; - elseif(file_exists(KU_BOARDSDIR.$this->board['name'].'/thumb/'.$embed['file'].'s.gif')) - $embed['nonstandard_file'] = KU_WEBPATH . '/' .$this->board['name'].'/thumb/'.$embed['file'].'s.gif'; + if ($filetype_info[$embed['file_type']][0] == "*") { + $embed['generic_icon'] = 2; + $embed['nonstandard_file'] = true; + } + else { + $embed['nonstandard_file'] = KU_WEBPATH . '/inc/filetypes/' . $filetype_info[$embed['file_type']][0]; + if($embed['thumb_w']!=0&&$embed['thumb_h']!=0) { + if(file_exists(KU_BOARDSDIR.$this->board['name'].'/thumb/'.$embed['file'].'s.jpg')) + $embed['nonstandard_file'] = KU_WEBPATH . '/' .$this->board['name'].'/thumb/'.$embed['file'].'s.jpg'; + elseif(file_exists(KU_BOARDSDIR.$this->board['name'].'/thumb/'.$embed['file'].'s.png')) + $embed['nonstandard_file'] = KU_WEBPATH . '/' .$this->board['name'].'/thumb/'.$embed['file'].'s.png'; + elseif(file_exists(KU_BOARDSDIR.$this->board['name'].'/thumb/'.$embed['file'].'s.gif')) + $embed['nonstandard_file'] = KU_WEBPATH . '/' .$this->board['name'].'/thumb/'.$embed['file'].'s.gif'; + else { + $embed['generic_icon'] = 1; + $embed['thumb_w'] = $filetype_info[$embed['file_type']][1]; + $embed['thumb_h'] = $filetype_info[$embed['file_type']][2]; + } + } else { - $embed['generic_icon'] = true; + $embed['generic_icon'] = 1; $embed['thumb_w'] = $filetype_info[$embed['file_type']][1]; $embed['thumb_h'] = $filetype_info[$embed['file_type']][2]; } } - else { - $embed['generic_icon'] = true; - $embed['thumb_w'] = $filetype_info[$embed['file_type']][1]; - $embed['thumb_h'] = $filetype_info[$embed['file_type']][2]; - } } } diff --git a/inc/classes/manage.class.php b/inc/classes/manage.class.php index d8c60de..089b37d 100755 --- a/inc/classes/manage.class.php +++ b/inc/classes/manage.class.php @@ -3210,12 +3210,28 @@ class Manage {
    '. _gettext('What filetypes users are allowed to upload.') .'

    '; $filetypes = $tc_db->GetAll("SELECT HIGH_PRIORITY `id`, `filetype` FROM `" . KU_DBPREFIX . "filetypes` ORDER BY `filetype` ASC"); foreach ($filetypes as $filetype) { - $tpl_page .= '"._gettext('Any file type')."" : strtoupper($filetype['filetype']); + $tpl_page .= 'GetOne("SELECT HIGH_PRIORITY COUNT(*) FROM `" . KU_DBPREFIX . "board_filetypes` WHERE `boardid` = '" . $lineboard['id'] . "' AND `typeid` = '" . $filetype['id'] . "' LIMIT 1"); if ($filetype_isenabled > 0) { $tpl_page .= ' checked'; } $tpl_page .= ' />
    '; + if ($is_any) { + $tpl_page .= ""; + } } /* Allowed embeds */ diff --git a/inc/classes/upload.class.php b/inc/classes/upload.class.php index 12b3186..6efbbd1 100644 --- a/inc/classes/upload.class.php +++ b/inc/classes/upload.class.php @@ -83,7 +83,8 @@ class Upload { $file_type = '.jpg'; } $filetype_withoutdot = substr($file_type, 1); - if (in_array($filetype_withoutdot, $board_class->board['filetypes_allowed'])) { + $generic_filetype_allowed = $board_class->board['any_filetype'] && !$this->isBannedFiletype($filetype_withoutdot); + if ($generic_filetype_allowed || in_array($filetype_withoutdot, $board_class->board['filetypes_allowed'])) { $file_md5 = md5_file($_FILES['imagefile']['tmp_name'][$i]); if (in_array($file_md5, $file_hashes)) { $this->exitWithUploadErrorPage(_gettext('Duplicate file entry detected.'), @@ -304,9 +305,10 @@ class Upload { AND " . KU_DBPREFIX . "filetypes.id = " . KU_DBPREFIX . "board_filetypes.typeid AND " . KU_DBPREFIX . "boards.name = '" . $board_class->board['name'] . "' AND " . KU_DBPREFIX . "filetypes.filetype = '" . $attachment['filetype_withoutdot'] . "';"); - if ($filetype_forcethumb != '') { - if ($filetype_forcethumb == 0) { - + $generic_filetype_allowed = $board_class->board['any_filetype'] && !$this->isBannedFiletype($attachment['filetype_withoutdot']); + if ($generic_filetype_allowed || $filetype_forcethumb != '') { + // Make thumbnails for images and videos + if ($filetype_forcethumb != '' && $filetype_forcethumb == 0) { /* If this board has a load balance url and password configured for it, attempt to use it */ if ($board_class->board['loadbalanceurl'] != '' && $board_class->board['loadbalancepassword'] != '') { require_once KU_ROOTDIR . 'inc/classes/loadbalancer.class.php'; @@ -325,8 +327,8 @@ class Upload { } else { $this->exitWithUploadErrorPage(_gettext('File was not properly thumbnailed').': ' . $response, $atype, $i, $filename); } - /* Otherwise, use this script alone */ - } else { + } + else { /* Otherwise, use this script alone */ $attachment['file_location'] = KU_BOARDSDIR . $board_class->board['name'] . '/src/' . $attachment['file_name'] . $attachment['file_type']; if($attachment['is_video']) { @@ -375,12 +377,15 @@ class Upload { $imageDim_thumb = getimagesize($attachment['file_thumb_location']); $attachment['imgWidth_thumb'] = $imageDim_thumb[0]; $attachment['imgHeight_thumb'] = $imageDim_thumb[1]; - } else { + } + else { $this->exitWithUploadErrorPage(_gettext('File was not fully uploaded. Please go back and try again.'), $atype, $i, $filename); } } } - } else { + } + // Assign a generic thumbnail to file + else { /* Fetch the mime requirement for this special filetype */ $filetype_required_mime = $tc_db->GetOne("SELECT `mime` FROM `" . KU_DBPREFIX . "filetypes` @@ -405,7 +410,8 @@ class Upload { $attachment['file_is_special'] = true; /* Otherwise, use this script alone */ - } else { + } + else { $attachment['file_location'] = KU_BOARDSDIR . $board_class->board['name'] . '/src/' . $attachment['file_name'] . $attachment['file_type']; if (file_exists($attachment['file_location'])) { @@ -486,7 +492,8 @@ class Upload { $attachment['file_is_special'] = true; } } - } else { + } + else { $this->exitWithUploadErrorPage(_gettext('Sorry, that filetype is not allowed on this board.'), $atype, $i, $filename); } } @@ -580,6 +587,10 @@ class Upload { } unset($i); } + function isBannedFiletype($type) { + return in_array($type, explode(':', I0_BANNED_FILETYPES)); + } + function ffProbe($filepath) { if(KU_FFMPEGPATH) putenv('PATH=' . KU_FFMPEGPATH . PATH_SEPARATOR . getenv('PATH')); exec("ffprobe -v error -show_entries format=duration:stream=width,height -of default=noprint_wrappers=1:nokey=1 ".$filepath." 2>&1", $finfo, $x); diff --git a/inc/func/custom.php b/inc/func/custom.php index d7146b3..be71753 100644 --- a/inc/func/custom.php +++ b/inc/func/custom.php @@ -65,6 +65,15 @@ function rainbow ($string) return base64_encode ($image_data); } +function color_from_extension($ext) { + $chars = array_reverse(str_split($ext)); + $s = ''; + foreach ($chars as $char) { + $s .= ord($char); + } + return $s % 360; +} + function is_from_sosach($filename) { return preg_match('/^[0-9]{14}$/m', $filename); } diff --git a/inc/func/fetching.php b/inc/func/fetching.php index f96759d..ef8714c 100644 --- a/inc/func/fetching.php +++ b/inc/func/fetching.php @@ -93,9 +93,9 @@ function getfiletypeinfo($filetype) { foreach($results AS $line) { $return = array($line['image'],$line['image_w'],$line['image_h']); } - } else { - /* No info was found, return the generic icon */ - $return = array('generic.png',48,48); + } + else { /* No info was found, return the generic icon */ + $return = array('*',0,0); } if (KU_APC) { diff --git a/inc/lang/ru/LC_MESSAGES/kusaba.po b/inc/lang/ru/LC_MESSAGES/kusaba.po index d5c2822..ccc3201 100644 --- a/inc/lang/ru/LC_MESSAGES/kusaba.po +++ b/inc/lang/ru/LC_MESSAGES/kusaba.po @@ -1091,7 +1091,7 @@ msgid "Sorry, because of your numerous failed logins, you have been locked out f msgstr "Слишком много попыток захода. Обожди 20 минут. И попробуй снова." msgid "Sorry, that filetype is not allowed on this board." -msgstr "Типа файла не разрешен к отправке на эту доску." +msgstr "Тип файла не разрешен к отправке на эту доску." msgid "Sorry, this board is locked and can not be posted in." msgstr "Эта доска закрыта, в неё нельзя отправлять сообщения." @@ -2201,4 +2201,10 @@ msgid "Encrypted ID" msgstr "Зашифрованный ID" msgid "Ban duration for posting this file" -msgstr "Время бана за постинг этого файла" \ No newline at end of file +msgstr "Время бана за постинг этого файла" + +msgid "All" +msgstr "Все" + +msgid " except " +msgstr ", кроме " diff --git a/lib/javascript/es6/src/kusaba.new.js b/lib/javascript/es6/src/kusaba.new.js index 4ecc940..0e2ffa9 100644 --- a/lib/javascript/es6/src/kusaba.new.js +++ b/lib/javascript/es6/src/kusaba.new.js @@ -1465,7 +1465,12 @@ const richFileInput = { fx.ext = (ns.length) > 1 ? ns.pop().toLowerCase() : "" if (fx.ext == 'jpeg') fx.ext = 'jpg' - if (!_.contains(form.dataset.allowedFiletypes.split(','), fx.ext)) { + + if ( + form.dataset.allowedAllFiletypes != '*' + && + !_.contains(form.dataset.allowedFiletypes.split(','), fx.ext) + ) { pups.err(`${file.name}: ${_l.unsupportedFileType}.`) return 0 } @@ -1491,7 +1496,7 @@ const richFileInput = { form.querySelector('.fe-sort-wrapper').insertAdjacentHTML('beforeEnd', `
    - ${extra.img ? `` : `
    ${extra.ext}
    `} + ${extra.img ? `` : makeGenericFileIcon(extra.ext)}
    \n \n
    "),{time:0,save:!0})},confirmLongTermTest:function confirmLongTermTest(){this.onTest&&localStorage.setItem("testing-css",JSON.stringify(this.onTest))},quitTest:function quitTest(){localStorage.removeItem("testing-css"),this.decide()}};style_cookie&&Styles.decide();var HiddenItems={init:function init(){var e=this;this.hideCompletely="true"==localStorage["hideCompletely."+this_board_dir],["posts","threads"].forEach(function(t){var a=localStorage["hidden".concat(_.capitalize(t))],n=a?a.split(",").filter(function(e){return e}):[];e.lists[t]=n}),document.write(""))},buildCSS:function buildCSS(){var e=this,t=[],a=[],n=[];return["posts","threads"].forEach(function(s){e.lists[s].forEach(function(i){if("posts"==s){var o="#postnode".concat(i);n.push(o),e.hideCompletely?a.push(o):a.push("#postbody".concat(i))}else ispage&&(a.push("#thread".concat(i)),e.hideCompletely?(a.push("#unhidethread".concat(i)),a.push("#thread".concat(i," + br")),a.push("#thread".concat(i," + br + hr"))):t.push("#unhidethread".concat(i)))})}),n.length&&onReady.pushTask(function(){$(n.join(",")).addClass("post-hidden")}),(a.length?a.join(",")+"{ display: none }":"")+(t.length?t.join(",")+"{ display: inline-block }":"")},updateCSS:function updateCSS(){injector.inject("hideitems",this.buildCSS())},hideCompletely:!1,lists:{},isHidden:function isHidden(e,t){return-1!=this.lists[e+"s"].indexOf(t.toString())},hideItem:function hideItem(e,t){this.isHidden(e,t)||(this.lists[e+"s"].push(t),this.saveList(e))},unhideItem:function unhideItem(e,t){this.isHidden(e,t)&&(this.lists[e+"s"]=this.lists[e+"s"].filter(function(e){return e!=t}),this.saveList(e))},hideThread:function hideThread(e){!!(1
".concat(_l.loading,"...")).prependTo(o),HTMLoader.getThread(t,+e,[s,i],function(e,t){t?(n.find(".omittedposts").replaceWith(t),replyMap.showReplies()):(setTimeout(function(){return o.find(".spinner").hide()},1e3),o.find("span").text(_l.oops+(!1===e?"":" (".concat(e,")"))),o.find("a").text(_l.tryAgain).show())})}return!1}var newposts={busy:!1,get:function get(){var e=0\n ".concat(s.querySelector(".name-row")?"\n \n \n \n "):"","\n \n \n \n \n \n \n ").concat(s.querySelector(".embed-row")?"\n \n \n \n "):"","\n \n \n \n ").concat(s.querySelector(".ttl-row")?"\n \n \n \n "):"","\n ")),updateReminders(s),s.querySelectorAll(".simplified-toggle").forEach(function(e){e.onclick=function(t){t.preventDefault(),toggleFormRow(s,e)}}),s.querySelector(".s-markup").onclick=function(e){e.preventDefault(),this.querySelector(".icon").classList.toggle("pressed"),s.querySelector(".message-row").classList.toggle("markup-enabled")},i.remove();var o="_"+_.uniqueId();s.querySelectorAll("label").forEach(function(e){var t=e.getAttribute("for"),a=t+o,n=s.querySelector("#"+t);n&&(n.id=a),e.setAttribute("for",a)}),s.classList.add("quick-reply-form"),s.classList.add("postform-simplified"),resetForm(s,!0),richFileInput.initForm(s),s.insertAdjacentHTML("beforeend","\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n  \n \n \n \n ")),s.getParentPost=function(){var e=s._findPrevious("*:not(.i0svcel)");return e.matches(".postnode")?e:null},s.querySelector(".hide-qr-form").onclick=function(e){e.preventDefault();var t=!1;if(s.classList.contains("qrf-floating")){var a=s.getParentPost();a&&(flyTo(s,a.querySelector("a.qrl .b-icon")).then(hidePostForm),t=!0)}t||hidePostForm(s)},s.querySelector(".simplify-qr-form").onclick=function(e){e.preventDefault(),toggleFormSimplify(s)},s.querySelector(".pinner").onclick=function(e){e.preventDefault();var t=s.classList.contains("qrf-builtin");toggleFormFloating(s,t)},s.querySelector(".collapse-qr-form").onclick=function(e){e.preventDefault(),toggleFormCollapse(s)},s.querySelectorAll("a").forEach(function(e){e.ondragstart=function(){return!1},e.ondrop=function(){return!1}}),initForm(s),n(s)})})}function quickreply(){var e=$(this),t=e.data("parent"),a=$(this).data("postnum")||t.split("-")[0],n=e.parents(".postnode"),s=n.data("board"),i=!is_overboard&&s!=this_board_dir,o=n[0],r=n.parents(".reflinkpreview"),l=!0,d=o._findNext("*:not(.i0svcel)"),c=d&&"postform"==d.getAttribute("name"),p=c&&d.classList.contains("hidden"),u=c&&d.classList.contains("qrf-floating"),m=o._findParent(".reflinkpreview"),h=l?getPostQuotation(o.querySelector(".postbody")):"";return c?(u?(toggleFormCollapse(d,!1),toggleFormFloating(d,!1)):(p?d.classList.remove("hidden"):(hidePostForm(d),p=!0),p=!p),l=!1):(e.addClass("spin-around"),clonePostForm(o.id||o.parentElement.id,m,!!is_overboard&&s).then(function(n){e.removeClass("spin-around"),n.classList.add("qrf-builtin"),n.querySelector(".pinner").classList.toggle("pinned"),n.querySelector("input[name=replythread]").value=t,o.insertAdjacentElement("afterend",n),document.querySelectorAll(".qrf-floating:not(.collapsed)").forEach(function(e){return toggleFormCollapse(e)}),n.querySelector("textarea").focus(),l&&insert(">>".concat(i?"/".concat(s,"/"):"").concat(a,"\n").concat(h)),m&&!m._pinned&&o.querySelector(".pinner").click()})),!1}function _getSelection(){if(!window.getSelection)return null;var e=window.getSelection();if("Range"!==e.type)return null;var t=e.toString();return t?{text:t,node:e.anchorNode}:null}function getLocalSelection(e){var t=_getSelection();return t&&t.node._isChildOf(e)?t.text:null}function getPostQuotation(e){var t=getLocalSelection(e);return t?(t=t.replace(/^\s/,"").replace(/\s$/,"").replace(/^>/gm," >").replace(/^/gm,"> "),t||""):""}function popupMessage(e){var t=1e?"".concat(e,"B"):1e6>e?"".concat(t(e/1e3),"KB"):"".concat(t(e/1e5)/10,"MB")}var richFileInput={handleFiles:function handleFiles(e,t){for(var a=!!(2=s&&o&&pups.warn(_l.maxAttNumReached)},handleFile:function handleFile(e,t){var a=this,n=!!(2\n
\n ").concat(t.img?""):"
".concat(t.ext,"
"),"\n
\n \n \n \n \n
\n \n ")),this.recalcForm(a);var i=a.querySelector(".file-entry[data-index=\"".concat(s,"\"]")),o=!1,r=function(){return i.querySelector(".fe-info").innerText="".concat(t.ext.toUpperCase()).concat(o?", ".concat(o.naturalWidth,"\xD7").concat(o.naturalHeight):"",", ").concat(t.sizeFormatted)};t.img?(o=i.querySelector("img"),o.onload=r,o.onerror=r):r(),i._ext=t.ext,this.updateTitle($(i))},recalcForm:function recalcForm(e){var t=e.querySelectorAll(".file-entry").length,a=+e.dataset.maxfiles;e.classList.toggle("fda-non-empty",0=a),e.querySelector(".file-count").innerHTML=0(").concat(t,"/").concat(a,")"):"".concat(_l.file)},updateTitle:function updateTitle(e){var t=e.find(".fe-fn").val(),a=!e.hasClass("fe-name-hidden")&&t?t:"*****";e[0].title="".concat(a,".").concat(e[0]._ext)},serialize:function serialize(e,t){var a=this;e.querySelectorAll(".file-entry").forEach(function(e,n){t.append("imagefile[]",a.store[+e.dataset.index]),e.classList.contains("fe-spoiler")&&t.append("spoiler-".concat(n),1);var s=e.querySelector(".fe-fn").value;e.classList.contains("fe-name-hidden")||""===s?t.append("hidename-".concat(n),1):t.append("filename-".concat(n),s)})},store:[],initiated:!1,init:function init(e){if(this.enabled=e.querySelector(".file-row")&&"FileReader"in window,this.enabled){var t=this;$("body").on("click",".remove-file",function(e){e.preventDefault(),e.stopPropagation();var a=$(this).parents(".file-entry");t.store[+a.data("index")]=null;var n=a.parents("form[name=postform]");a.remove(),t.recalcForm(n[0])}).on("click",".file-entry",function(){var e=this;$(this).toggleClass("fe-expanded"),setTimeout(function(){return $(e).find("input").select()},450)}).on("click",".file-entry input",function(e){e.stopPropagation()}).on("click",".spoiler-file",function(e){e.preventDefault(),e.stopPropagation(),$(this).parents(".file-entry").toggleClass("fe-spoiler")}).on("click",".clear-filename",function(e){e.preventDefault(),e.stopPropagation();var a=$(this).parents(".file-entry");a.find(".fe-fn").prop("disabled",!a.hasClass("fe-name-hidden")),a.toggleClass("fe-name-hidden"),t.updateTitle(a)}).on("change",".fe-fn",function(){t.updateTitle($(this).parents(".file-entry"))}).on("change","input[type=file]",function(e){var a=$(this).parents("form[name=postform]")[0];t.handleFiles(e.target.files,a),this.value=null}).on("click",".add-files",function(e){e.preventDefault(),$(this).parents("form[name=postform]").find("input[type=file]")[0].click()}).on("paste","form[name=postform]",function(e){for(var a,n=(e.clipboardData||e.originalEvent.clipboardData).items,s=[],o=0;o").concat(t.error_verbose)),!t.error_type)o(t.error,{time:0});else if("ban"==t.error_type&&o("".concat(t.error," (").concat(_l.details,")"),{time:0,save:!0}),"duplicate_file"==t.error_type&&(o(t.error,{time:0}),e.querySelector("input[name=\"imagefile\"]").value=null),"upload_error"==t.error_type){o(t.error,{time:0});var n=e.querySelector(".multiembedwrap[data-pos=\"".concat(t.error_data.attachmenttype,"-").concat(t.error_data.position+1,"\"]"));n&&n.classList.add("error-in-attachment")}return}t.timings&&console.log("timings:",t.timings),resetForm(e),e.classList.contains("quick-reply-form")&&hidePostForm(e);var s=e.querySelector("input[name=\"redirecttothread\"]"),i=s&&s.checked;0==t.thread_replyto?i?redirectTo("".concat(ku_boardspath,"/").concat(t.board,"/res/").concat(t.post_id,".html")):redirectTo("".concat(ku_boardspath,"/").concat(t.board)):newposts.get({threadid:ispage?t.thread_replyto+"-"+t.board:null,expectedPost:t.post_id+"-"+t.board,onError:function onError(e){console.error(e),redirectTo("".concat(ku_boardspath,"/").concat(t.board,"/res/").concat(t.thread_replyto,".html#").concat(t.post_id)),ispage||document.location.reload()},onSuccess:function onSuccess(){return $("#delform div[id^=thread".concat(t.thread_replyto,"] .fresh-replies")).remove()}})},a.send(l)},shownErrors:[],reportPost:function reportPost(e){var t=1").concat(e.error_verbose)),void pups.err(e.error,{time:0});$("body").removeClass("select-multiple"),$(".userdelete").removeClass("ud-active");var n=[],s=[];e.data.forEach(function(e){return e.success?void(n.push(e.id),!$("input[name=\"post[]\"]:checked").length&&$(".userdelete").removeClass("ud-active")):void s.push(e)});var i="";n.length&&(n=n.map(function(e){return"#"+e}),i+=1").concat(e.error_verbose)),pups.err(e.error,{time:0}),t(!1);$("body").removeClass("select-multiple"),$(".userdelete").removeClass("ud-active");var n=[],s=[];e.data.forEach(function(e){return e.success?void(n.push(e.id),!$("input[name=\"post[]\"]:checked").length&&$(".userdelete").removeClass("ud-active")):void s.push(e)});var i="";n.length&&(n.forEach(function(e){var t=$(".postnode[data-id=".concat(e,"]"));t.find(".post-ttl").remove(),t.find(".post-menu").hide()}),i+=1").concat(e.error_verbose)),void pups.err(e.error,{time:0});var n=a.parents(".posthead"),o=n.find(".extrabtns");"stickypost"==t&&(o.prepend(makeIcon("pin","i-icon i-pin")),n.addClass("thread-stickied")),"unstickypost"==t&&(o.find("svg.i-icon.i-pin").remove(),n.removeClass("thread-stickied")),"lockpost"==t&&(o.prepend(makeIcon("lock","i-icon i-lock")),n.addClass("thread-locked")),"unlockpost"==t&&(o.find("svg.i-icon.i-lock").remove(),n.removeClass("thread-locked")),pups.succ(e.message)},s.send(n)},deleteItems:function deleteItems(e){var t=1").concat(e.error_verbose)),void pups.err(e.error,{time:0})):void _deleteItems(e.data)},s.send(e)}};function inspectFormData(e){var t,a=_createForOfIteratorHelper(e.entries());try{for(a.s();!(t=a.n()).done;){var n=t.value;console.log(n[0]+", "+n[1])}}catch(e){a.e(e)}finally{a.f()}}function makeIcon(e){var t=1"),"\n \n ").concat(a?"":"")}function addCaptchaToMenu(e){return e.find(".captchawrap").length?void(Captcha.state="init"):void(!Captcha.enabled&&Captcha.init("only-access"),e.prepend("
  • \n
    \n
    ").concat(_l.showCaptcha,"
    \n \"").concat(_l.captchaImage,"\"\n
    \n
    ").concat(_l.captchaExpired,"
    \n
    \n \n
  • ")),Captcha.initForm(e[0]),e.find("input[name=captcha]").keydown(function(e){"Enter"==e.key&&(e.preventDefault(),e.stopPropagation())}))}var MediaViewer=function(){var e=Math.min,t=Math.round,a=Math.abs;function n(t,a,s,i,o){var r=this,l=!!(7\n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    "),this.viewer=this.container.querySelector(".media-viewer"),this.viewer.addEventListener("wheel",this.handleZoom.bind(this)),this.viewer.addEventListener("mousemove",function(t){e.mouseX=t.clientX,e.mouseY=t.clientY,e.isMouseDown&&e.handleDrag()}),this.viewer.addEventListener("mousedown",function(t){if(2==t.button&&e.currentMediaItem._isVideo){var a=e.currentMediaItem.querySelector(".video-event-overlay");a.style.pointerEvents="none",setTimeout(function(){return a.style.pointerEvents="all"},100)}e.gripX=t.clientX,e.gripY=t.clientY,e.isMouseDown=!0,(t.target.classList.contains("media-viewer")||t.target.classList.contains("mv-under"))&&(e.emptyClick=!0)}),this.viewer.addEventListener("contextmenu",function(){if(e.currentMediaItem._isVideo){var t=e.currentMediaItem.querySelector(".video-event-overlay");t.style.pointerEvents="none",setTimeout(function(){return t.style.pointerEvents="all"},100)}}),this.viewer.addEventListener("click",function(t){e.isDragged&&(e.isDragged=!1,t.preventDefault())}),this.viewer.addEventListener("mouseup",function(t){e.isMouseDown=!1,e.currentMediaItem.classList.remove("no-transition"),e.isDragged?t.preventDefault():0==t.button&&e.collapse(),e.emptyClick=!1}),this.viewer.addEventListener("dragstart",function(e){e.preventDefault(),e.stopPropagation()}),this.viewer.querySelectorAll(".mv-button").forEach(function(t){t.addEventListener("click",function(a){a.stopPropagation(),e.refreshList();var n=e.findIndex(e.currentThumb);t.classList.contains("mv-prev")||t.classList.contains("mv-next")?(t.classList.contains("mv-prev")?(n-=1,0>n&&(n=e.list.length-1)):(n+=1,n>=e.list.length&&(n=0)),e.switchItem(e.list[n])):t.classList.contains("mv-close")?e.collapse():t.classList.contains("mv-restore")&&e.toggleFullSize(0)}),["mouseup","mousedown"].forEach(function(e){return t.addEventListener(e,function(e){return e.stopPropagation()})})}),this.viewer.addEventListener("mouseleave",function(){e.isMouseDown=!1,e.isDragged=!1})}},{key:"applyTransform",value:function applyTransform(){var e=this.currentMediaItem;e&&(e.style.transform="translate(".concat(this.translateX,"px, ").concat(this.translateY,"px) scale(").concat(this.scale,")"))}},{key:"resetTransform",value:function resetTransform(){this.translateX=0,this.translateY=0,this.scale=1}},{key:"initZoom",value:function initZoom(){this.zoomAmount=.5,this.minScale=.1,this.zoomSteps=[.1,.25,.33,.5,.75,1,1.5,2,2.5,3,4,5,6,8,10]}},{key:"handleZoom",value:function handleZoom(e){var t=Math.sign,n=this,s=this.currentMediaItem;if(s){e.stopPropagation(),e.preventDefault();var i=-t(e.deltaY),o=1/s._scaleDownFactor,r=Array.from(this.zoomSteps).filter(function(e){return .1o&&(n=i.naturalWidth*o,s=i.naturalHeight*o);var r=!0;if(document.body.contains(this.currentThumb)){var l=this.currentThumb.getBoundingClientRect();if(r=!(l.y\n
    \n <").concat(o?"video controls autoplay loop":"img"," src=\"").concat(s,"\" class=\"mv-over\" ").concat(o?">"):"onload=\"this.parentElement.classList.add('loaded')\">","\n \n ")}}],[{key:"parseVideo",value:function parseVideo(e){var t=e.dataset.id,a=e.href,n=e.dataset.thumb,s=e.dataset.width,i=e.dataset.height,o=e.querySelector("img"),r=o.width,l=o.height;return[t,a,n,s,i,r,l]}},{key:"parseImg",value:function parseImg(e){return e.getAttribute("onclick").match(/expandimg\('(.+?)', ?'(.+?)', ?'(.+?)', ?'(.+?)', ?'(.+?)', ?'(.+?)', ?'(.+?)'/).slice(1)}}]),n}();Element.prototype._ins=function(){var e=0"),!Settings.expandImgFull()){for(var m=l.getElementsByTagName("img")[0],h=document.documentElement?document.documentElement.clientWidth:document.body.clientWidth,f=50,g=m;null!=g;)f+=g.offsetLeft,g=g.offsetParent;var v=h-f;if(m.width>v){var b=m.width/m.height,y=1-v/m.width,w=document.createElement("div");w.setAttribute("class","filesize"),w.style.textDecoration="underline";var k=document.createTextNode(_l.imageDownscaledBy+" "+r(100*y)+"% "+_l.toFit);w.appendChild(k),l.insertBefore(w,m),$(m).width(v),$(m).height(v/b)}d=v}else d=n;p&&p.addClass("postbody-expanded")}else l.innerHTML="\""+e+"\"",d=i,p&&p.removeClass("postbody-expanded");return u[0].style.maxWidth="".concat(d-50,"px"),!1}function expandimg(e,t,a,n,s,i,o){if(Settings.newMediaViewer()){var r=new MediaViewer(e,t,a,n,s,i,o);r.onCollapse=function(){return r=null}}else expandimg_old(e,t,a,n,s,i,o);return!1}var PostPreviews={zindex:3,parent:{},_parseLink:function _parseLink(e){var t=e.getAttribute("href");if(t){var a=t.match(/\/(.+)\/res\/([0-9]+)\.html#([0-9]+)|postbynumber\.php\?b=(.+)&p=([0-9]+)/i);if(a)return{board:a[1]||a[4],parent:a[2]||"?",post:a[3]||a[5]}}var n=[].find.call(e.classList,function(e){return e.match(/ref\|.+?\|([0-9]+|\?)\|[0-9]+/)});return n?(n=n.split("|"),{board:n[1],parent:n[2],post:n[3]}):null},_mouseover:function _mouseover(t){var e=this;t.stopPropagation();var a=$(this).hasClass("catalog-entry"),n=PostPreviews._parseLink(this);if(!n)return!1;var s=n.board,i=n.parent,o=n.post,r="preview_"+s+"_"+o,l=$("#"+r);if(0==l.length)$("body").children().first().before("
    "),l=$("#"+r),l.addClass("reflinkpreview content-background pre-hidden actual-reflinkpreview"),l.mouseleave(PostPreviews._mouseout),l.mouseover(PostPreviews.mouseOverPreview);else if(l[0]._pinned)return!1;var d=$(this).parents("div[id^=preview]");if(0\n \n \n \n \n "));var s=n.querySelector(".pinner");s.onclick=function(e){e.preventDefault(),e.stopPropagation(),PostPreviews.pinPreview(l[0])}}},0)}),t.preventDefault()},mouseOverPreview:function mouseOverPreview(){var e=$(this);if($(this).is("a")){var t=PostPreviews._parseLink(this);if(!t)return;var a=t.board,n=t.post;e=$("#preview_"+a+"_"+n).first()}for(;0 *, .emoji { opacity: 0.05;} figure:hover > *, .postbody:hover .emoji { opacity: 1;}"):injector.remove("sfwMode"),t},hideCompletely:function hideCompletely(e){var t=Settings._checkbox(e,"hideCompletely",!1,!0);return e&&(HiddenItems.hideCompletely=t,HiddenItems.updateCSS()),t},expandImgFull:function expandImgFull(e){return Settings._checkbox(e,"expandImgFull",!1)},constrainWidth:function constrainWidth(e){var t=Settings._checkbox(e,"constrainWidth",!1);t?injector.inject("constrainWidth","body {\n max-width: 960px;\n margin: 0px auto;\n }"):injector.remove("constrainWidth")},newMediaViewer:function newMediaViewer(e){return Settings._checkbox(e,"newMediaViewer",!0)},hidePostBtn:function hidePostBtn(e){var t=Settings._checkbox(e,"hidePostBtn",!0);return t?injector.remove("hidePostBtn"):injector.inject("hidePostBtn",".hide-post-btn {display: none}"),e||HiddenItems.lists.posts.forEach(function(e){$("#postnode".concat(e)).find(".hide-post-btn").attr("title",_l.unhidePost).find("use").attr("xlink:href","#i-unhide")}),t},endlessScroll:function endlessScroll(e){var t=Settings._checkbox(e,"endlessScroll",!1);_endlessScroll.toggle(t)}},rswap={i:!0,swap:function swap(){this.i?$("#delform").before($("#rswapper")).after($(".postarea")):$("#delform").before($(".postarea")).after($("#rswapper")),this.i=!this.i}},captchalang=getCookie("captchalang")||"ru";function setCaptchaLang(e){in_array(e,["ru","en","num"])&&(captchalang=e,set_cookie("captchalang",e,365),pups.succ(_l.captchaLangChanged))}var offClick=[];function readyset(){$(".make-me-readonly").each(function(){$(this).attr("readonly",!0).on("focus",function(){$(this).removeAttr("readonly")})}),ispage||$(".mgoback").show(),isTouch?$("#js_settings").prepend(""+_l.returnDesktop+"
    "):$("#js_settings").prepend(""+_l.returnTouch+"
    "),$("#js_settings").prepend(_l.captchalang+": Cyrillic | Latin | Numeral
    "),Styles.$cancelLink&&$("#js_settings").prepend(Styles.$cancelLink);var e=document.querySelector("#postform");if(e&&richFileInput.initForm(e),pups.init(),chpok.init(!0),LatexIT.init(),checkhighlight(),checkgotothread(),checknamesave(),bnrs.init(),getCookie("ku_menutype")){var t=Cookie("ku_menutype");"default"!=t&&""!=t&&(document.getElementById("overlay_menu").style.position=t)}if(processNodeInsertion(),isTouch?(add_mob_menu(),$("body").addClass("touch-mode"),$(".sect-exr:not([data-toexpand=\"_options\"])").parent().hide(),$(".sect-exr").click(function(){return $("#js_settings").is(":visible")?menu_show("_off_"):menu_show("ms-_options"),!1}),offClick.push(function(e){menu_show("_off_"),document.querySelectorAll("[id^=preview]").forEach(function(e){return PostPreviews._mouseout.bind(e)(null,!0)})}),$("body").on("click","a[class^='ref']",PostPreviews._mouseover).on("doubletap",".postnode",function(e){e.stopPropagation(),e.preventDefault(),this.querySelector(".qrl").click()})):(cloud20.init(),$(".sect-exr").mouseenter(function(){menu_show("ms-"+$(this).data("toexpand"))}),$("#overlay_menu").mouseleave(function(){menu_show("_off_")}),$("body").on("mouseenter","a[class^='ref']",function(e){var t=this;this.predelay=setTimeout(function(){return PostPreviews._mouseover.bind(t)(e)},PostPreviews._timings.predelay)}).on("mouseleave","a[class^='ref']",PostPreviews._mouseout).on("click","a[class^='ref']",function(t){t.preventDefault();var e=this.getAttribute("href");highlight(e.split("#")[1],0)||redirectTo(e)})),$("html").click(function(e){return offClick.forEach(function(t){return t(e)})}),$("body").on("click",".uib-mup",function(){return markup($(this).parents("form"),$(this).data("mups"),$(this).data("mupe"),$(this).data("imups"),$(this).data("imupe")),!1}).on("click",".uib-bul",function(){return bullets($(this).parents("form"),$(this).data("bul"),$(this).data("imups"),$(this).data("imupe")),!1}).on("click",".uib-tx",function(){var e=$(this).data("target");return head.js("http://latex.codecogs.com/editor3.js",function(){OpenLatexEditor(e,"phpBB","en-us",!1,"","full")}),!1}).on("click",".movie",function(e){expandVideo($(this),e)}).on("click",".qrl",quickreply).on("click",".hashpic",function(){$(".highlight").removeClass("highlight");var e=$(".hashpic[alt=".concat($(this).attr("alt"),"]")).each(function(){$(this).parents(".posthead").parent().addClass("highlight")}).length;pups.info(_l.found+": "+e,{time:1.5})}).on("click",".posttypeindicator a",function(){var e=$(this),t=$("[name=\""+e.attr("href").substr(1)+"\"]").offset()||$("[name=\""+e.text().split(">>")[1]+"\"]").offset()||!1;return t&&$("html, body").animate({scrollTop:t.top-($("#overlay_menu").height()+10)},250),!1}).on("click",".dice",function(){"undefined"==typeof $(this).data("html")&&$(this).data("html",$(this).html());var e=stripHTML($(this).html());$(this).html($(this).attr("title")),$(this).attr("title",e)}).on("click",".reflink a",function(e){e.preventDefault();var t=this.parentElement,a=t._findParent(".postnode");if(!lastActiveForm)quickreply.bind(a.querySelector(".qrl"))();else{var n=is_overboard?lastActiveForm.getAttribute("id").match(/[0-9]+\-(.+?)_qrf/)[1]:this_board_dir,s=a.querySelector(".postbody"),i=getPostQuotation(s);insert(">>".concat(t.dataset.b==n?"":"/".concat(t.dataset.b,"/")).concat(t.dataset.id,"\n").concat(i))}}).on("click",".embed-play-button",function(e){e.preventDefault(),unwrapEmbed($(this).parents("figure"))}).on("click",".collapse-video",function(e){e.preventDefault(),wrapEmbed($(this).parents("figure"))}).on("mouseenter","._country_",function(){"undefined"==typeof $(this).attr("title")&&$(this).attr("title",countries[$(this).attr("src").split("flags/")[1].split(".png")[0].toUpperCase()])}).on("click",".audiowrap",function(e){e.preventDefault();var t=$(this),a=t.attr("href"),n=t.parents("figure");n.hasClass("unwrapped")||n.addClass("unwrapped unwrapped-audio");var s=n.find(".filesize");s.find(".collapse-btn").length||s.append("\n ")),t.find("audio").length||t.append(""),s.find(".collapse-video").click(function(){n.removeClass("unwrapped unwrapped-audio").find("audio")[0].pause()})}).on("change",".multidel",function(){var e=$(".multidel:checked").length;$(".item-count").length||($(".userdelete tbody").prepend("\n ".concat(_l.selected,": \n \n ")),$(".close-multisel").click(function(e){e.preventDefault(),$(".multidel").prop("checked",!1),$("body").removeClass("select-multiple"),$(".userdelete").removeClass("ud-active")})),0 \n \n ")),a=t.parent().find(".post-menu")}a.toggle(n)}}).on("click",".file-menu-toggle",function(e){e.stopPropagation(),e.preventDefault();var t=$(".file-menu"),a=$(this),n=a.parent(),s=t.is(":visible");if($(".post-menu").hide(),!(s&&t[0].$boundTo[0]==n[0])){var i=n.offset(),o=n.hasClass("embed-wrap")?22:n.outerHeight();t.css({left:"".concat(i.left,"px"),top:"".concat(i.top+o,"px"),"min-width":"".concat(n.outerWidth(),"px")}).show();var r=n.parents("figure").data("fileid"),l=n.parents(".postnode"),d=l.data("board"),c=l.data("id");t[0].__menuProps={fileid:r,board:d},t[0].$boundTo=n,t.find(".menu-banfile").attr("href","".concat(ku_cgipath,"/manage_page.php?action=bans&banboard=").concat(d,"&banpost=").concat(c,"&banfile=").concat(r))}}).on("click",".post-menu li",function(e){return e.stopPropagation()}).on("click",".menu-select-multiple",function(e){$(".post-menu").hide();var t=$(this).parents(".post-menu"),a=t.hasClass("file-menu"),n=(a?t[0].$boundTo:$(this).parents(".posthead")).find(".multidel");n.length&&(n.prop("checked",!0).trigger("change"),$(".userdelete").addClass("ud-active"),$("body").addClass("select-multiple"))}).on("click",".menu-link-share",function(e){var t=$(this),a=t.find("input").length;if(!a){var n=t.parents(".postnode"),s=n.data("board"),i=n.data("id"),o=ku_boardspath+n.find(".shl").attr("href");t.find("span").html(" \n ")).css({"font-size":0}).find(".pm-direct-link").click()}else t.toggleClass("direct-or-quote")}).on("click",".pm-link",function(e){e.stopPropagation();var t=$(this);$(".pm-link").removeClass("selected"),t.focus().select().addClass("selected")}).on("click",".menu-delete",function(){var e=$(this),t=e.parents(".post-menu"),a=t[0],n=t.hasClass("file-menu"),s=n?t[0].$boundTo:e.parents(".posthead"),i=t.find(".menu-password");e.addClass("spin-around");var o=new FormData;if(t.find(".menu-captcha").length){var r=t.find("input[name=captcha]");if(!r.val())return r.focus(),pups.warn(_l.enterCaptcha),void e.removeClass("spin-around");o.append("captcha",r.val())}n?o.append("delete-file[]",a.__menuProps.fileid):o.append("post[]",s.parents(".postnode").data("id"));var l=e.hasClass("menu-delete-mod");o.append("moddelete",l),o.append("opdelete",+e.hasClass("menu-delete-op")),o.append("board",n?a.__menuProps.board:s.parents(".postnode").data("board")),o.append("postpassword",i.length?i.find("input").val():$("#delform input[name=\"postpassword\"]").val()),Ajax.deleteItems(o,function(a){if(e.removeClass("spin-around"),!!a){var o=a[0];if(!o.success&&s.is(":visible")){if(l)return;i.length||t.prepend("
  • ".concat(makeIcon("password"),"\n
  • ")),o.special_error&&"captchalocked"==o.special_error?addCaptchaToMenu(t):t.find(".menu-password input").select().keydown(function(e){"Enter"==e.key&&(e.preventDefault(),e.stopPropagation())})}else n&&$(".file-menu").hide()}})}).on("click",".menu-report",function(){var e=$(this),t=e.parents(".postnode");e.addClass("spin-around");var a=new FormData;a.append("post[]",t.data("id")),a.append("board",t.data("board")),Ajax.reportPost(a,function(t){e.removeClass("spin-around")})}).on("click",".menu-hide",function(){var e=$(this).parents(".postnode");HiddenItems.hidePost(e.data("id")+"-"+e.data("board")),e.addClass("post-hidden").find(".post-menu").hide()}).on("click",".menu-unhide",function(){var e=$(this).parents(".postnode");HiddenItems.unhidePost(e.data("id")+"-"+e.data("board")),e.removeClass("post-hidden")}).on("click",".menu-cancel-timer",function(){var e=$(this),t=e.parents(".post-menu"),a=t[0],n=t.find(".menu-password"),s=e.parents(".postnode");e.addClass("spin-around");var i=new FormData;if(t.find(".menu-captcha").length){var o=t.find("input[name=captcha]");if(!o.val())return o.focus(),pups.warn(_l.enterCaptcha),void e.removeClass("spin-around");i.append("captcha",o.val())}i.append("post[]",s.data("id")),i.append("board",s.data("board")),i.append("modsave",e.hasClass("menu-delete-mod")),i.append("opsave",e.hasClass("menu-delete-op")),i.append("postpassword",n.length?n.find("input").val():$("#delform input[name=\"postpassword\"]").val()),Ajax.cancelTimer(i,function(a){if(e.removeClass("spin-around"),a.length){var s=a[0];n.length||t.prepend("
  • ".concat(makeIcon("password"),"\n
  • ")),s.special_error&&"captchalocked"==s.special_error?addCaptchaToMenu(t):t.find(".menu-password input").select().keydown(function(e){"Enter"==e.key&&(e.preventDefault(),e.stopPropagation())})}else t.find(".menu-password, .menu-captcha").remove()})}).on("click",".csswrap",function(e){e.preventDefault();var t=$(this).attr("href"),a=$(this).parent().find(".fc-filename").text();Styles.testStyle(t,a)}).on("blur","input[name=\"name\"]",function(){var e=~this.value.indexOf("#");this.type=e?"password":"text"}).on("focus","input[name=\"name\"]",function(){this.type="text"}),offClick.push(function(e){$(".post-menu").hide()}),$(window).resize(function(){var e=$(".file-menu");if(e.is(":visible")){var t=e[0].$boundTo,a=t.offset(),n=t.hasClass("embed-wrap")?22:t.outerHeight();e.css({left:"".concat(a.left,"px"),top:"".concat(a.top+n,"px"),"min-width":"".concat(t.outerWidth(),"px")})}}),$(".userdelete").addClass("content-background reflinkpreview").find("tbody").append("")),$("#delform").on("submit",function(t){return t.preventDefault(),Ajax.deleteItems(new FormData(this)),!1}),$(".userdelete input[type=submit]").click(function(t){t.preventDefault(),t.stopPropagation();var e=new FormData($(this).parents("form")[0]);("deletepost"==this.name||"moddelete"==this.name)&&Ajax.deleteItems(e,null,"moddelete"==this.name),"cancel_timer"==this.name&&Ajax.cancelTimer(e),"reportpost"==this.name&&Ajax.reportPost(e)}),is_overboard||$("#delform").after(""),Settings.sfwMode(!1),localStorage)for(var a in Settings)"_"!=a.substring(0,1)&&($("#js_settings").append("
    "),Settings[a](!1));else $("#js_settings").append(""+_l.noLocalStorage+"
    \u0422\u0432\u043E\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u2014 \u0433\u043E\u0432\u043D\u043E. \u0421\u043A\u0430\u0447\u0430\u0439 Chome, \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440.");var n=document.getElementById("message");n&&(n.onfocus=function(){is_entering=!0},n.onblur=function(){is_entering=!1}),$("body").append("\n
    \n \n
    \n ")),$(document).on("animationstart webkitAnimationStart MSAnimationStart oanimationstart",function(e){var t=$(e.target);"nodeInserted"!=e.originalEvent.animationName||t.hasClass("_inserted_")||processNodeInsertion(t),"windowSmall"==e.originalEvent.animationName&&document.querySelectorAll(".quick-reply-form").forEach(function(e){toggleFormFloating(e,!1),toggleFormSimplify(e,!0)})}),Captcha.init(is_overboard),initForm(document.querySelector("#postform")),"undefined"!=typeof is_catalog&&is_catalog&&catalog.init(),$("
    ").addClass("content-background reflinkpreview qreplyform").hide().appendTo("body"),$("#delform").on("click",".postertrip",function(e){e.preventDefault(),e.stopPropagation();var t=$(this).text().split("!")[1],a=$(this).offset(),n=$(this).height();$.getJSON("/tripinfo.php",{trip:t}).done(function(e){var s=[];_.each(e.active_on,function(e){s.push("/"+e+"/")}),$("#tripinfo").html("
    !"+t+" [G]
    "+_l.threads+": "+e.threads+", "+_l.comments+": "+e.comments+"
    "+_l.active_since+": "+catalog.formatDate(e.active_since,!0)+"
    "+_l.last_active+": "+catalog.formatDate(e.last_active,!0)+"
    "+(s.length?"
    "+_l.active_on+": "+s.join(", ")+"
    ":"")).css({top:a.top+n,left:a.left}).fadeIn("fast")}).fail(function(e){console.error(e)})}),unreadCounter.update(),liveupd_ena&&"undefined"!=typeof io&&updater.init(),onReady.ready()}(function(e){e.event.special.doubletap={bindType:"touchend",delegateType:"touchend",handle:function handle(t){var a=t.handleObj,n=jQuery.data(t.target),s=new Date().getTime(),i=n.lastTouch?s-n.lastTouch:0,o=null==o?300:o,r=t.originalEvent;i\n \n \n ")),this.initiated=!0,this.audio=document.querySelector("#chpok-audio")},play:function play(){this.initiated||this.init(),this.audio.play()["catch"](function(t){return _.noop})}},updater={newThreads:[],init:function init(){this.socket=io.connect(liveupd_api);var e;ispage?(e=[liveupd_sitename+this_board_dir+":threads"],document.querySelectorAll(".postnode.op").forEach(function(t){return e.push(liveupd_sitename+t.dataset.board+":"+t.dataset.id)})):(e=[liveupd_sitename+this_board_dir+":"+$("input[name=replythread]").val()],_l.noNewPosts+="
    "+_l.threadUpdationAutomatically),this.socket.on("update",this.dispatch.bind(this)).emit("subscribe",e),Object.defineProperty(this,"markOnly",{value:!0,writable:!1,configurable:!1})},dispatch:function dispatch(e){if(!e.action)return pups.warn("Event with unspecified action, see console"),void console.warn(e);if("new_thread"==e.action){if(e.token&&Ajax.postToken&&e.token==Ajax.postToken)return;this.notifyAboutNewThreads(e)}if("new_reply"==e.action){if(e.token&&Ajax.postToken&&e.token==Ajax.postToken)return;ispage?this.notifyAboutNewRepliesOnBoardPage(e):this.showNewReplies(e)}if("delete"==e.action){if(e.token&&Ajax.delToken&&e.token==Ajax.delToken)return;_deleteItems(e.items,!1,this.markOnly)}if("cancel_timer"==e.action){if(e.token&&Ajax.timerToken&&e.token==Ajax.timerToken)return;var t=[],a="";e.items.forEach(function(e){$(".postnode[data-id=".concat(e.id,"] .post-ttl")).remove(),t.push(e.id)}),t.length&&(a=1"+_l.newThreadsAvailable+"
    "):(scrollAnchor.save("autoload",".postnode"),this.showNewThreads(function(){return scrollAnchor.restore("autoload")}),chpok.play())},notifyAboutNewRepliesOnBoardPage:function notifyAboutNewRepliesOnBoardPage(e){var t=e.room+"-"+e.board;this.repliesOnBoardPage[t]?this.repliesOnBoardPage[t].push(e.reply_id):this.repliesOnBoardPage[t]=[e.reply_id],this.refreshNewRepliesCount(e.board,e.room,e.timestamp)},refreshNewRepliesCount:function refreshNewRepliesCount(e,t){var a=this,n=2"+_l.newReplies+": ").find(".fresh-replies"),p=c[0];c.click(function(t){t.preventDefault();c.__alreadyLoading||(p.__alreadyLoading=!0,p.insertAdjacentHTML("afterBegin","
    "),d(function(){return $(p).remove()}))})}}o.find(".fresh-replies-number").text(i)}else r.length&&(r.remove(),l())},repliesOnBoardPage:{},showNewThreads:function showNewThreads(e){var t=this,a=$("#wild_thread_appeared");a.length&&a.find("span")[0].insertAdjacentHTML("afterBegin","
    "),this.newThreads.forEach(function(n){HTMLoader.getThread(n.board,n.thread,null,function(s,i){return s?pups.err(_l.noDataLoaded):void(a.remove(),document.querySelector("#delform").insertAdjacentHTML("afterBegin","\n ".concat(i,"\n
    \n \n
    \n
    ")),is_overboard&&n.board_desc&&document.querySelector("#delform .posthead").insertAdjacentHTML("afterbegin","/").concat(n.board,"/ \u2014 ").concat(n.board_desc,"")),t.socket.emit("subscribe",liveupd_sitename+n.board+":"+n.thread),e&&e())})}),this.newThreads=[]}};function _deleteItems(e){var t,a=!(1".concat(_l.fileRemoved,"")),o.push("#"+e.id)}"delete_thread"==e.action&&(updater.newThreads=updater.newThreads.filter(function(t){return t!=e.id}),!updater.newThreads.length&&$("#wild_thread_appeared").remove(),pups.info("".concat(_l.thread," ").concat(e.id," ").concat(_l.deleted,".")))}),$(".multidel").is(":checked")||$(".multidel.delete-file").is(":checked")||($(".userdelete").removeClass("ud-active"),$("body").removeClass("select-multiple")),s.length){var l=1"),{time:2+i.length}),r.length&&pups.err(r.map(function(e){return"".concat(_l.file," #").concat(e.id,": ").concat(e.message)}).join("
    "),{time:2+r.length})}if(+localStorage.localmod)kumod_set=!0;else{var kumod=getCookie("kumod");""!==kumod&&("allboards"===kumod?kumod_set=!0:kumod_set=in_array(this_board_dir,kumod.split("|")))}function expandVideo_old(e,t){var a=Math.round,n=e.parents(".reply");if("1"!==e.data("expanded")){t.preventDefault();var s=e.attr("href"),i=e.data("height"),o=e.data("width"),r=e.data("thumb"),l=e.data("id"),d="_vframe_"+randomString(5)+new Date().getTime();e.replaceWith(function(){return""+this.innerHTML+""}),e=$("#"+d),e.find("img").hide();var c=e.find("video").show(),p="";if(c.length?c.get(0).play():(e.find(".playable-thumb").append("").promise().done(function(){c=e.find("video")}),c[0].volume=localStorage.mediaVolume||1,c[0].onvolumechange=function(){localStorage.mediaVolume=this.muted?0:this.volume}),!Settings.expandImgFull()){for(var u=50,m=c[0],h=document.documentElement?document.documentElement.clientWidth:document.body.clientWidth;null!=m;)u+=m.offsetLeft,m=m.offsetParent;var f=h-u;if(o>f){var g=o/i,v=1-f/o,b=f/g;c.width(f),c.height(b),p=_l.videoDownscaledBy+" "+a(100*v)+"% "+_l.toFit}}var y=e.parents("figure");y.hasClass("unwrapped")||y.addClass("unwrapped");var w=e.parent().find(".filesize");w.find(".collapse-btn").length||(w.append("\n ")),e.parent().find(".collapse-video").click(function(){y.removeClass("unwrapped");var t="_vframe_"+randomString(5)+new Date().getTime();return e.replaceWith(function(){return""+this.innerHTML+""}).data("expanded","0"),e=$("#"+t),e.find("video").hide()[0].pause(),e.find("img").show(),$(this).remove(),e.parents(".reply").removeClass("reply-expanded"),!1})),e.parents(".reply").addClass("reply-expanded")}}function expandVideo(e,t){if(t.preventDefault(),Settings.newMediaViewer()){var a=_construct(MediaViewer,_toConsumableArray(MediaViewer.parseVideo(e[0])).concat([!0]));a.onCollapse=function(){return a=null}}else expandVideo_old(e,t);return!1}function checknamesave(){var e;e=""!=getCookie("name");var t=document.getElementById("save");null!=t&&(t.checked=e)}function checkgotothread(){var e;e="off"!=getCookie("tothread"),$("#gotothread").attr("checked",e)}function navigatepages(e){if(document.getElementById&&!is_entering)if(window.event&&(e=window.event),e.ctrlKey){var t=null,a=null,n=document.location.toString();if(-1!=n.indexOf("/res/"))"Enter"==e.key&&handleCtrlEnter(e);else{if(-1==n.indexOf(".html")||-1!=n.indexOf("board.html"))var s=0,i=n.substr(0,n.lastIndexOf("/")+1);else{var s=n.substr(n.lastIndexOf("/")+1);s=+s.substr(0,s.indexOf(".html"));var i=n.substr(0,n.lastIndexOf("/")+1)}if(0==s)var o=i;else var o=i+s+".html";var r;if(r=/#s([0-9]+)/.exec(n))var l=+r[1];else var l=-1;for(var d=0;0>>").concat(n==o?"":"/".concat(n,"/")).concat(a,"");e.posts[o]&&e.posts[o][r]?!_.includes(e.posts[o][r].replies,d)&&e.posts[o][r].replies.push(d):(!e.posts[o]&&(e.posts[o]={}),e.posts[o][r]={replies:[d]}),e.posts[o][r].skip=!1})}),_.each(this.posts,function(e){return _.each(e,function(e){!e.skip&&e.replies.length&&e.container&&(e.container.innerHTML="".concat(_l.replies,": ").concat(e.replies.join(", ")),e.skip=!0)})})},posts:{}},scrollAnchor={save:function save(e,t){var a=Math.abs,n=2=r.left&&0>=r.right||0>=r.top&&0>=r.bottom||r.left>=window.innerWidth||r.top>=window.innerHeight)&&(i=[r.left+r.width/2,r.top+r.height/2]);var l=t instanceof Node?[t]:t instanceof NodeList?t:(n==window?document:n).querySelectorAll(t);if(l.length){l.forEach(function(e){var t=Math.pos,n=e.getBoundingClientRect(),l=t(n.width-(t(r.left-n.left)+t(n.right-r.right)))/n.width,d=t(n.height-(t(r.top-n.top)+t(n.bottom-r.bottom)))/n.height,c=a(i[0]-(n.left+n.width/2)),p=a(i[1]-(n.top+n.height/2));o.push({el:e,primaryVisibility:"h"==s[0]?l:d,secondaryVisibility:"v"==s[0]?l:d,primaryOffset:"h"==s[0]?c:p,secondaryOffset:"v"==s[0]?c:p})}),o.sort(function(e,t){return t.primaryVisibility===e.primaryVisibility?1\n ".concat(document.getElementById("ns_oldmenu").innerText,"\n [overlay]\n ")),Cookie("ku_oldmenu",e?"yes":"no",90)}var LatexIT={mode:"gif",init:function init(){document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")&&(this.mode="svg")},odc:"javascript:LatexIT.replaceWithSrc(this);",dcls:"Double click to show source",pre:function pre(eqn){var txt=eqn.innerHTML;if(!txt.match(//i)&&!txt.match(//i)){txt=txt.replace(/
    /gi,"").replace(/
    /gi,"").replace(/&/mg,"&");var atxt="[tex]"+txt+"[/tex]";txt=escape(txt.replace(/\\/mg,"\\"));var c=eval("LatexIT.normalize"+$(eqn).parent().css("color")),extxt="{\\color[rgb]{"+c.r+","+c.g+","+c.b+"}"+txt+"}";txt=" \""+atxt+"\" "}return txt},replaceWithSrc:function replaceWithSrc(e){var t=$(e).attr("alt");$(e).parent().html(t)},render:function render(e){for(var t="undefined"==typeof e?window.document:e[0],a=t.getElementsByTagName("*"),n=0;nt.data("w")&&t.addClass("vertical-video"),"Soundcloud"==t.data("site")&&t.addClass("soundcloud-embed"),t.css({paddingBottom:"".concat(100*(t.data("h")/t.data("w")),"%")});var a=t.data("code"),n="frameborder=\"0\" scrolling=\"no\" webkitallowfullscreen=\"\" mozallowfullscreen=\"\" allowfullscreen=\"\"";if("Youtube"==t.data("site")){var s=t.data("startraw");t.append(""))}if("Vimeo"==t.data("site")){var i=t.data("start");t.append(""))}if("Soundcloud"==t.data("site")){var o=encodeURI(a),r=t.data("start");t.append(""))}"Coub"==t.data("site")&&t.append(""));var l=e.find(".embed-wrap");l.find(".collapse-video").length||e.find(".embed-wrap").append("\n "))}function wrapEmbed(e){e.removeClass("unwrapped"),e.find(".emb-iframe-wrapper").empty()}function resetForm(e){var t=!!(1"))})}),e.querySelectorAll("input[name^=imagefile]").forEach(function(e){e.addEventListener("change",function(){if(this.value){var e=this.parentElement.nextElementSibling;e&&(e.checked=!0)}})}),e.querySelectorAll(".opt-exp").forEach(function(e){e.onclick=function(e){e.preventDefault(),this.querySelector(".expandee").classList.toggle("expanded")},e.onmouseleave=function(e){var t=this;this.hideTimeout=setTimeout(function(){return t.querySelector(".expandee").classList.remove("expanded")},250)},e.onmouseenter=function(){clearTimeout(this.hideTimeout)}});var a=e.querySelector(".code_markup_select");a&&(a.onchange=function(){markup(t,"[code=".concat(this.value,"]"),"[/code]")}),e.querySelector(".quote_select").onchange=function(){quotes(t,this.value)};var n=e.id+"_textarea";e.querySelector("textarea").id=n,e.querySelector(".uib-tx").dataset.target=n,Captcha.enabled&&"only-access"!==Captcha.enabled&&Captcha.initForm(e),e.querySelectorAll(".make-me-readonly").forEach(function(e){e.readOnly=!0,e.addEventListener("focus",function(){return e.readOnly=!1})});var s=e.querySelector("input[name=disable_name]");s&&(s.onchange=function(){var t=this.checked;e.querySelector("input[name=name]").disabled=t,localStorage.setItem("post_anonymously",+t)},s.checked=!!+localStorage.post_anonymously,s.onchange()),e.addEventListener("submit",function(e){e.preventDefault(),e.stopPropagation(),Ajax.submitPost(this)}),e.querySelectorAll(".simplified-send-row button[type=\"submit\"]").forEach(function(t){t.onclick=function(t){t.preventDefault(),t.stopPropagation();var a=+("sagebtn"==this.name);Ajax.submitPost(e,a)}});var i=e.querySelector("input[name=\"ttl-enable\"]");i&&(i.onchange=function(){var t=this.checked,a=e.ttl;a.disabled=!t,a.min=t?1:0,t&&0==a.value&&(a.value=1)},i.onchange()),e.querySelectorAll("textarea, input[type=text]").forEach(function(t){t.onfocus=function(){lastActiveForm=e}});var o=e.querySelector(".s-file");o&&(o.onclick=function(t){t.preventDefault(),e.querySelector("input[type=file]").click()})}}var injector={inject:function inject(e,t){var a="injector:".concat(e),n=document.getElementById(a);if(n)return void(n.innerHTML=t);var s=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css",i.id=a,i.styleSheet?i.styleSheet.cssText=t:i.appendChild(document.createTextNode(t)),s.appendChild(i)},remove:function remove(e){var t="injector:".concat(e),a=document.getElementById(t);if(a){var n=document.head||document.getElementsByTagName("head")[0];n&&n.removeChild(document.getElementById(t))}}};function randomString(){for(var e=0
    ");var s=document.querySelector("#mobile-menu-contents"),i=$("#mobile-menu"),o="";overboard_dir&&(o+="").concat(overboard_desc,"")),$("
    ").append($("#ms-_options")).appendTo($(s)),i.append("
    \n
    \n
    \n
    ");var r=boards10.list;cloud20.getBoards().then(function(t){r.sort(function(e,t){return+e.order>+t.order}).push({id:"20",name:"2.0",boards:t}),r.forEach(function(e,t){e.boards&&(o+="").concat(e.name,"\n "),e.boards.forEach(function(e){e.dir=e.dir||e.name,o+="/").concat(e.dir,"/ \u2014 ").concat(e.desc,"")}),o+="")}),o+="Options",s.insertAdjacentHTML("afterBegin","".concat(o)),$("#mm-toggle").click(function(){var t=Math.sqrt;if(!i.hasClass("mm-expanded")){i.addClass("mm-expanded");var a=i[0].getBoundingClientRect(),n=a.width-20-10,o=a.height-20-10,r=t(n*n+o*o),l=e(r/20);$("#mm-circle").css({transform:"scale(".concat(l,")")}),$(s).css({visibility:"visible",opacity:1}),i.addClass("bars-away"),setTimeout(function(){i.addClass("mm-expanded-full")},300)}}),offClick.push(function(){i.hasClass("mm-expanded-full")&&(i.removeClass("mm-expanded-full bars-away"),setTimeout(function(){$(s).css({visibility:"hidden"}),i.removeClass("mm-expanded")},300),$(s).css({visibility:"visible",opacity:0}),$("#mm-circle").css({transform:"scale(1)"}))})}),i.click(function(e){e.stopPropagation()}).on("click",".mm-cat[data-mmbx]",function(){var e=$("#mmb-".concat($(this).data("mmbx")));return e.is(":visible")?(e.toggle(!1),$(this).removeClass("mmc-expanded")):($(".mm-boards").toggle(!1),$("#mmb-_options").slideUp("fast"),e.toggle(!0),$(".mmc-expanded").removeClass("mmc-expanded"),$(this).addClass("mmc-expanded")),!1})}var boards10={get list(){var e=this;return this.allboards||(this.allboards=[],document.querySelectorAll(".olm-link").forEach(function(t){if(t=t.querySelector("a"),!!t){var a=t.dataset.toexpand,n=t.innerText,s=document.querySelector("#ms-".concat(a));if(a&&"20"!=a&&"_options"!=a){var i={id:a,name:n,boards:[]};s.querySelectorAll("a").forEach(function(e){var t=e.innerText.match(/\/(.+?)\/ - (.+)/);t&&i.boards.push({dir:t[1],desc:t[2]})}),e.allboards.push(i)}}})),this.allboards}},cloud20={init:function init(){var e=this;this.getBoards().then(function(){return e.filter("")})["catch"](_.noop),$("#boardselect").on("input",function(){cloud20.filter($(this).val())})},getBoards:function getBoards(){var e=this;return new Promise(function(t,a){e.allboards?t(e.allboards):$.getJSON(ku_cgipath+"/boards20.json",function(a){e.allboards=a,t(a)}).fail(function(t){pups.err(_l.unable_load_20),a(t)})})},filter:function filter(e){var t=[];"undefined"==typeof this.allboards||(""==e?t=this.allboards:(e=e.toLowerCase(),_.each(this.allboards,function(a){(-1!==a.name.toLowerCase().search(e)||-1!==a.desc.toLowerCase().search(e))&&t.push(a)})),this.display(t))},display:function display(e){var t="",a="";_.each(e,function(e){t+="/"+e.name+"/ - "+e.desc+"",a+=""}),$("#boards20").html(t),$(".boardsel20").append(a)}},countries={A1:"Anonymous Proxy",A2:"Satellite Provider",O1:"Other Country",AD:"Andorra",AE:"United Arab Emirates",AF:"Afghanistan",AG:"Antigua and Barbuda",AI:"Anguilla",AL:"Albania",AM:"Armenia",AO:"Angola",AP:"Asia/Pacific Region",AQ:"Antarctica",AR:"Argentina",AS:"American Samoa",AT:"Austria",AU:"Australia",AW:"Aruba",AX:"Aland Islands",AZ:"Azerbaijan",BA:"Bosnia and Herzegovina",BB:"Barbados",BD:"Bangladesh",BE:"Belgium",BF:"Burkina Faso",BG:"Bulgaria",BH:"Bahrain",BI:"Burundi",BJ:"Benin",BL:"Saint Bartelemey",BM:"Bermuda",BN:"Brunei Darussalam",BO:"Bolivia",BQ:"Bonaire, Saint Eustatius and Saba",BR:"Brazil",BS:"Bahamas",BT:"Bhutan",BV:"Bouvet Island",BW:"Botswana",BY:"Belarus",BZ:"Belize",CA:"Canada",CC:"Cocos (Keeling) Islands",CD:"Congo, The Democratic Republic of the",CF:"Central African Republic",CG:"Congo",CH:"Switzerland",CI:"Cote d'Ivoire",CK:"Cook Islands",CL:"Chile",CM:"Cameroon",CN:"China",CO:"Colombia",CR:"Costa Rica",CU:"Cuba",CV:"Cape Verde",CW:"Curacao",CX:"Christmas Island",CY:"Cyprus",CZ:"Czech Republic",DE:"Germany",DJ:"Djibouti",DK:"Denmark",DM:"Dominica",DO:"Dominican Republic",DZ:"Algeria",EC:"Ecuador",EE:"Estonia",EG:"Egypt",EH:"Western Sahara",ER:"Eritrea",ES:"Spain",ET:"Ethiopia",EU:"Europe",FI:"Finland",FJ:"Fiji",FK:"Falkland Islands (Malvinas)",FM:"Micronesia, Federated States of",FO:"Faroe Islands",FR:"France",GA:"Gabon",GB:"United Kingdom",GD:"Grenada",GE:"Georgia",GF:"French Guiana",GG:"Guernsey",GH:"Ghana",GI:"Gibraltar",GL:"Greenland",GM:"Gambia",GN:"Guinea",GP:"Guadeloupe",GQ:"Equatorial Guinea",GR:"Greece",GS:"South Georgia and the South Sandwich Islands",GT:"Guatemala",GU:"Guam",GW:"Guinea-Bissau",GY:"Guyana",HK:"Hong Kong",HM:"Heard Island and McDonald Islands",HN:"Honduras",HR:"Croatia",HT:"Haiti",HU:"Hungary",ID:"Indonesia",IE:"Ireland",IL:"Israel",IM:"Isle of Man",IN:"India",IO:"British Indian Ocean Territory",IQ:"Iraq",IR:"Iran, Islamic Republic of",IS:"Iceland",IT:"Italy",JE:"Jersey",JM:"Jamaica",JO:"Jordan",JP:"Japan",KE:"Kenya",KG:"Kyrgyzstan",KH:"Cambodia",KI:"Kiribati",KM:"Comoros",KN:"Saint Kitts and Nevis",KP:"Korea, Democratic People's Republic of",KR:"Korea, Republic of",KW:"Kuwait",KY:"Cayman Islands",KZ:"Kazakhstan",LA:"Lao People's Democratic Republic",LB:"Lebanon",LC:"Saint Lucia",LI:"Liechtenstein",LK:"Sri Lanka",LR:"Liberia",LS:"Lesotho",LT:"Lithuania",LU:"Luxembourg",LV:"Latvia",LY:"Libyan Arab Jamahiriya",MA:"Morocco",MC:"Monaco",MD:"Moldova, Republic of",ME:"Montenegro",MF:"Saint Martin",MG:"Madagascar",MH:"Marshall Islands",MK:"Macedonia",ML:"Mali",MM:"Myanmar",MN:"Mongolia",MO:"Macao",MP:"Northern Mariana Islands",MQ:"Martinique",MR:"Mauritania",MS:"Montserrat",MT:"Malta",MU:"Mauritius",MV:"Maldives",MW:"Malawi",MX:"Mexico",MY:"Malaysia",MZ:"Mozambique",NA:"Namibia",NC:"New Caledonia",NE:"Niger",NF:"Norfolk Island",NG:"Nigeria",NI:"Nicaragua",NL:"Netherlands",NO:"Norway",NP:"Nepal",NR:"Nauru",NU:"Niue",NZ:"New Zealand",OM:"Oman",PA:"Panama",PE:"Peru",PF:"French Polynesia",PG:"Papua New Guinea",PH:"Philippines",PK:"Pakistan",PL:"Poland",PM:"Saint Pierre and Miquelon",PN:"Pitcairn",PR:"Puerto Rico",PS:"Palestinian Territory",PT:"Portugal",PW:"Palau",PY:"Paraguay",QA:"Qatar",RE:"Reunion",RO:"Romania",RS:"Serbia",RU:"Russian Federation",RW:"Rwanda",SA:"Saudi Arabia",SB:"Solomon Islands",SC:"Seychelles",SD:"Sudan",SE:"Sweden",SG:"Singapore",SH:"Saint Helena",SI:"Slovenia",SJ:"Svalbard and Jan Mayen",SK:"Slovakia",SL:"Sierra Leone",SM:"San Marino",SN:"Senegal",SO:"Somalia",SR:"Suriname",SS:"South Sudan",ST:"Sao Tome and Principe",SV:"El Salvador",SX:"Sint Maarten",SY:"Syrian Arab Republic",SZ:"Swaziland",TC:"Turks and Caicos Islands",TD:"Chad",TF:"French Southern Territories",TG:"Togo",TH:"Thailand",TJ:"Tajikistan",TK:"Tokelau",TL:"Timor-Leste",TM:"Turkmenistan",TN:"Tunisia",TO:"Tonga",TR:"Turkey",TT:"Trinidad and Tobago",TV:"Tuvalu",TW:"Taiwan",TZ:"Tanzania, United Republic of",UA:"Ukraine",UG:"Uganda",UM:"United States Minor Outlying Islands",US:"United States",UY:"Uruguay",UZ:"Uzbekistan",VA:"Holy See (Vatican City State)",VC:"Saint Vincent and the Grenadines",VE:"Venezuela",VG:"Virgin Islands, British",VI:"Virgin Islands, U.S.",VN:"Vietnam",VU:"Vanuatu",WF:"Wallis and Futuna",WS:"Samoa",YE:"Yemen",YT:"Mayotte",ZA:"South Africa",ZM:"Zambia",ZW:"Zimbabwe",XX:"OMCK",T1:"Tor"},bnrs={initiated:!1,init:function init(){$.getJSON(ku_boardspath+"/bnrs.json",function(e){var t=[];1";$(".bnr").length?$(".bnr").html(n):$(".logo").before("
    "+n+"
    ")}}};function getRandomInt(e,t){return Math.floor(Math.random()*(t-e+1))+e}function randomItem(e){return e[getRandomInt(0,e.length-1)]}var embedLinks={sites:[{id:"youtube",rx:/(?:youtu(?:\.be|be\.com)\/(?:.*v(?:\/|=)|(?:.*\/)?)([\w'-]+))/i},{id:"vimeo",rx:/[\w\W]*vimeo\.com\/(?:.*?)([0-9]+)(?:.*)?/},{id:"coub",rx:/[\w\W]*coub\.com\/view\/([\w\W]*)[\w\W]*/},{id:"soundcloud",rx:/[\w\W]*soundcloud.com\/([\w\W]*)[\w\W]*/i}],process:function process(e){var t=null;return _.find(this.sites,function(a){var n=a.rx.exec(e);null!=n&&(t={site:a.id,code:n[1]})}),t}},catalog={conf:{sortBy:"bumped",layout:"text",respectStickied:!0,showHidden:!0,expandOnHover:!0},saveConfig:function saveConfig(){localStorage.catalogSettings=JSON.stringify(this.conf)},init:function init(){if(document.body.classList.add("is-catalog"),localStorage.catalogSettings)try{var e=JSON.parse(localStorage.catalogSettings);_.each(e,function(e,t){this.conf[t]=e},this)}catch(t){console.error("Invalid catalog config"),localStorage.removeItem("catalogSettings")}var t="
    "),a="
    ";_.each([["bumped","bumpOrder","bump","i-20"],["timestamp","creationDate","creation","i-20"],["replied","lastReply","reply","i-16in20"],["reply_count","replyCount","replies","i-20"]],function(e){a+="
    "}.bind(this)),a+="
    ";var n="
    ";_.each([[1,"doStick","pin","i-16in20"],[0,"doNotStick","unpin","i-16in20"]],function(e){n+="
    "}.bind(this)),n+="
    ";var s="
    ";_.each([[0,"hideHidden","hide","i-16in20"],[1,"showHidden","unhide","i-16in20"]],function(e){s+="
    "}.bind(this)),s+="
    ";var i="
    ";_.each([["text","smallPics","grid-small","i-20"],["gallery","largePics","gallery-grid","i-20"]],function(e){i+="
    "}.bind(this)),i+="
    ";var o="";$("#catalog-controls").html(t+a+n+o+s+i),this.load(),this.conf.expandOnHover&&$("#catalog-contents").addClass("expand-on-hover-enabled"),$("#catalog-contents").on("click",".namedate-overlay",function(){$(this).toggleClass("date-on name-on")}).on("click",".ce-text .bigThumb",function(e){e.stopPropagation(),e.preventDefault();var t=$(this).parents(".cat-entry");t.toggleClass("thumbExpanded")}).on("click",".bigThumb audio, .bigThumb video",function(e){e.stopPropagation()}).on("animationstart webkitAnimationStart MSAnimationStart oanimationstart",function(e){var t=$(e.target);"embed-image-insert"!=e.originalEvent.animationName||t.hasClass("_inserted_")||this.getEmbedThumb(t)}.bind(this)).on("mousedown",".cat-prv",function(e){e.preventDefault(),PostPreviews._mouseover.bind(this)(e)}).on("click",".cat-prv",function(e){e.stopPropagation(),e.preventDefault()}).on("mouseleave",".cat-prv",function(e){PostPreviews._mouseout.bind(this)()}).on("click",".i-hide",function(e){var t=$(e.currentTarget),a=t.parents(".cat-entry"),n=a.data("id"),s=_.findIndex(this.model,{id:n}),i=this.model[s];i.hidden=!i.hidden,i.hidden?(t[0].classList.add("pressed"),t.html(makeIcon("unhide","",!0)),HiddenItems.hideItem("thread",n),a.addClass("thread-hidden")):(t[0].classList.remove("pressed"),t.html(makeIcon("hide","",!0)),HiddenItems.unhideItem("thread",n),a.removeClass("thread-hidden")),this.model[s]=i,delete this.rendered[this.conf.layout][n]}.bind(this)),$(".bg-button").click(function(e){var t=$(e.currentTarget);if(!t.hasClass("bgb-selected")){var a=t.parent(),n=t.data("val"),s=a.data("select");a.find(".bg-button").removeClass("bgb-selected"),t.addClass("bgb-selected"),"sortBy"!==s&&"layout"!==s?n=!!n:"bumped"==n?$("#pinControl").removeClass("disabled"):$("#pinControl").addClass("disabled"),this.conf[s]=n,this.saveConfig(),"showHidden"===s?n?$("#catalog-contents").removeClass("hideHidden"):$("#catalog-contents").addClass("hideHidden"):this.build()}}.bind(this)),$(".refresh-catalog").click(function(e){e.preventDefault(),this.load()}.bind(this)),$("#cat-search").on("input",function(){var e=$(this).val().toLowerCase().replace(/\"/,"\\\"");try{injector.remove("cat-search")}catch(t){}e.length?injector.inject("cat-search","#catalog-contents .cat-entry:not([data-search *= \""+e+"\"]) { display:none; }"):injector.remove("cat-search")}).trigger("input")},load:function load(){$("#catalog-contents").html("
    ".concat(_l.loading,"...
    ")),this.rendered={text:{},gallery:{}},this.model=null,$.getJSON("catalog.json?v="+new Date().getTime()).done(this.build.bind(this)).fail(function(e){throw e})},fileTypes:{image:["jpg","gif","png"],jpgThumb:["webm","mp4","cob","vim","you"],iconsAvailable:["swf","mp3","ogg","css","flv"],audio:["mp3","ogg"],embed:["cob","vim","you"]},authorities:["","Admin","Mod","?","God"],formatDate:function formatDate(e,t){"undefined"==typeof t&&(t=!1);var a=new Date(1e3*e),n=this.dateLocal.dows.hasOwnProperty(locale)?this.dateLocal.dows[locale][a.getDay()]:this.dateLocal.dows.en[a.getDay()],s=_.padLeft(a.getFullYear()%100,2,0),i=_.padLeft(a.getMonth()+1,2,0),o="ru"===locale?this.dateLocal.mons.ru[a.getMonth()]:a.getMonth()+1,r=_.padLeft(a.getDate(),2,0),l=_.padLeft(a.getHours(),2,0),d=_.padLeft(a.getMinutes(),2,0),c=_.padLeft(a.getSeconds(),2,0);return(t?"ru"===locale?r+"."+i+"."+s+" \u0432 ":i+"/"+r+"/"+s+" @ ":"ru"===locale?n+" "+r+" "+o+"\u2019"+s+" \u0432 ":i+"/"+r+"/"+s+" ("+n+") @ ")+l+":"+d+":"+c},dateLocal:{dows:{ru:["\u041F\u043D\u0434","\u0412\u0442\u0440","\u0421\u0440\u0434","\u0427\u0442\u0432","\u041F\u0442\u043D","\u0421\u0431\u0442","\u0412\u0441\u043A"],en:["Sun","Mon","Tue","Wen","Thu","Fri","Sat"]},mons:{ru:["\u042F\u043D\u0432","\u0424\u0435\u0432","\u041C\u0430\u0440","\u0410\u043F\u0440","\u041C\u0430\u0439","\u0418\u044E\u043D","\u0418\u044E\u043B","\u0410\u0432\u0433","\u0421\u0435\u043D","\u041E\u043A\u0442","\u041D\u043E\u044F","\u0414\u0435\u043A"]}},build:function build(e){if("undefined"==typeof e&&(e=this.model),!!e){if(_.each(e,function(t,a){_.each(["id","reply_count","bumped","replied","reply_count","timestamp","page","locked","stickied","deleted_timestamp"],function(e){t[e]=~~t[e]}),e[a]=t}),"bumped"===this.conf.sortBy&&this.conf.respectStickied)this.model=_.sortByOrder(e,["stickied","bumped"],["desc","desc"]);else{var t=[this.conf.sortBy];"bumped"!==this.conf.sortBy&&t.push("bumped"),this.model=_.sortByOrder(e,t,_.repeat("desc",t.length))}var a="";_.each(this.model,function(e){a+=this.buildEntry(e)},this),$("#catalog-contents").html(a)}},getEmbedThumb:function getEmbedThumb(e){var t,a=e.data("site"),n=e.data("id"),s=e.parents(".cat-entry"),i=s.data("id");"cob"==a&&$.get(ku_boardspath+"/corpsy.php?code="+n,function(t){e.replaceWith(""),this.rendered[this.conf.layout][i]=s[0].outerHTML}.bind(this)),"vim"==a&&$.get("http://vimeo.com/api/v2/video/"+n+".json",function(t){e.replaceWith(""),this.rendered[this.conf.layout][i]=s[0].outerHTML}.bind(this))},buildEntry:function buildEntry(e){if(this.rendered[this.conf.layout].hasOwnProperty(e.id))return this.rendered[this.conf.layout][e.id];if(!e.processed){e.url="/"+this_board_dir+"/res/"+e.id+".html";var t="",a="",n=e.embeds?e.embeds.find(function(t){return"removed"!=t.file})||"removed":null;if(!n||"removed"===n)e.smallThumb="
    "+("removed"===n?"\u0423\u0434\u0430\u043B\u0451\u043D":"No File")+"
    ";else{if(_.includes(this.fileTypes.image,n.file_type)||_.includes(this.fileTypes.jpgThumb,n.file_type)||_.includes(this.fileTypes.audio,n.file_type)&&0<+n.thumb_w&&0<+n.thumb_h){var s=_.includes(this.fileTypes.image,n.file_type)?n.file_type:"jpg",i=_.includes(this.fileTypes.embed,n.file_type)?"".concat(n.file_type,"-").concat(n.file,"-"):n.file,o="mp3"==n.file_type?" onerror=\"switchFileType(this)\" extset=\"jpg,png,gif\"":"";e.smallThumb=" ",e.bigThumb=""}else{var r=_.includes(this.fileTypes.iconsAvailable,n.file_type)?"/inc/filetypes/"+n.file_type+".png":"/inc/filetypes/generic"+(_.includes(this.fileTypes.embed,n.file_type)?"-embed":"")+".png",l=_.includes(this.fileTypes.embed,n.file_type)||_.includes(this.fileTypes.audio,n.file_type);e.smallThumb=" ",_.includes(this.fileTypes.audio,n.file_type)&&(e.bigThumb="")}e.bigThumb=""+e.bigThumb+""}e.op="#"+e.id+"",e.preview=" ";var d=" "+e.reply_count+"";e.last_reply&&(d=""+d+"");var c="
    "+d+"
    ",p="
    "+e.images+"
    ",u="";e.countersCombined=c+p+u,e.posterauthority=+e.posterauthority,e.nameDatePriority="date",("name"==localStorage.cat_nameDatePriority||"date"!=localStorage.cat_nameDatePriority&&(e.name||e.tripcode||e.posterauthority))&&(e.nameDatePriority="name");var m=(e.name?""+e.name+"":"")+(e.tripcode?"!"+e.tripcode+"":"")+(e.posterauthority?" ##"+this.authorities[e.posterauthority]+"##":"");e.poster="
    by "+(m||""+(this_board_defaultName||_l.anonymous)+"")+"
    ";var h=" style=\"display:none\"";e.date="
    "+this.formatDate(e.timestamp)+"
    ",e.dateCompact="
    "+this.formatDate(e.timestamp,1)+"
    ",e.searchData=_.escape(stripHTML(e.subject+" "+e.message).toLowerCase()),e.message=e.message.replace(/\\"/mg,"\""),e.processed=!0,this.model[_.findIndex(this.model,{id:e.id})]=e}e=this.buildIndicators(e);var f=this.layouts[this.conf.layout].bind(this)(e);return this.rendered[this.conf.layout][e.id]=f,f},buildIndicators:function buildIndicators(e){e.hidden=HiddenItems.isHidden("thread",e.id);var t=e.stickied?"":"",a=e.locked?"":"",n=e.deleted_timestamp?"":"",s="",i="",o="",r="",l="";return e.indicatorsCombined="
    "+n+t+a+s+"
    ",e},layouts:{text:function text(e){return"
    "+e.smallThumb+"
    "+e.op+e.indicatorsCombined+"
    "+e.poster+e.date+"
    "+e.preview+e.countersCombined+"
    "+e.subject+"
    "+e.message+"
    "+e.bigThumb+"
    "},gallery:function gallery(e){return"
    "+e.bigThumb+"
    "+e.op+"
    "+e.countersCombined+"
    "+e.preview+"
    "+e.poster+e.dateCompact+"
    "+e.indicatorsCombined+"
    "+e.subject+"
    "+e.message+"
    "}}};function stripHTML(e){var t=document.implementation.createHTMLDocument("New").body;return t.innerHTML=e,t.textContent||t.innerText||""}var overboard={get boards(){return is_overboard?(this._boards||(this._boards=_.unique([].map.call(document.querySelectorAll("div[id^=thread]"),function(t){return t.dataset.boardid}))),this._boards):[boardid]},idFromName:function idFromName(e){return null!==e&&$("div[data-board=\"".concat(e,"\"]")).parents("div[id^=thread]").data("boardid")}},unreadCounter={init:function init(e){var t=this;e||(e=+document.querySelector("meta[property=\"i0:buildtime\"]").content),this.lastvisits=localStorage.lastvisits?JSON.parse(localStorage.lastvisits)||{}:{},overboard.boards.forEach(function(a){var n=t.lastvisits.hasOwnProperty(a)?parseInt(t.lastvisits[a]):0;n\xA0(".concat(e,")"),n=$(".menu-item[href=\"/".concat(t,"/\"]"));n.length&&(n.append(a),$(".sect-exr[data-toexpand=\"".concat(n.parents(".menu-sect").attr("id").split("ms-")[1],"\"]")).parent().addClass("got-updates")),$(".mobile-nav option[value=\"".concat(t,"\"]")).append(a)}})}})}},HTMLoader={loadThread:function loadThread(e,t,a,n){var s=this;$.get("?"===t?"".concat(ku_boardspath,"/postbynumber.php?b=").concat(e,"&p=").concat(n):"".concat(ku_boardspath,"/").concat(e,"/res/").concat(t,".html?").concat(force_html_nocache?Math.random():"")).then(function(n){var i=n.match(/!i0-pd:[0-9]+\s*?<\/div\s*?>[\s\S]+?!i0-pd-end\s*?<\/div\s*?>/gi).map(function(e){var t=e.match(/!i0-pd:([0-9]+)\s*?<\/div\s*?>([\s\S]+?)!i0-pd-end\s*?<\/div\s*?>/i);return{id:+t[1],body:t[2]}});if("?"===t){var o=n.match(//);o&&(t=o[1])}if(i.length){var r=i.map(function(t){return s.cached["".concat(e,"_").concat(t.id)]=t.body,t.id});"?"!==t&&(s.threadMaps["".concat(e,"_").concat(t)]=r)}a()}).fail(function(e){a(e.status||"null")})},loadPage:function loadPage(e,t){var a=this,n=2!i0-page-start\s*?<\/div\s*?>\s*([\s\S]+?)\s*!i0-page-end\s*?<\/div\s*?>/i))||void 0===n?void 0:n[1];s&&(document.querySelector("#delform hr:last-of-type").insertAdjacentHTML("afterend",s),a.pageCleanUp()),t()})},pageCleanUp:function pageCleanUp(){var e=[];document.querySelectorAll("div[id^=thread]").forEach(function(t){e.includes(t.id)&&(t.previousElementSibling.remove(),t.nextElementSibling.remove(),t.nextElementSibling.remove(),t.remove()),e.push(t.id)})},getPost:function getPost(e,t,a,n,s){var i=this,o=this.cached["".concat(e,"_").concat(a)];if(o)return void n(!1,o);if(!s){var r=!1;if(e===this_board_dir){var l=$("a[name=".concat(a,"]"));if(l.length){var d=l.parents(".postnode")[0].outerHTML;this.cached["".concat(e,"_").concat(a)]=d,r=!0,n(!1,d)}}r||this.loadThread(e,t,function(s){s?n(s):i.getPost(e,t,a,n,!0)},a)}else n(null)},getThread:function getThread(e,t,a,n,s,i){var o=this,r=!i&&this.threadMaps["".concat(e,"_").concat(t)];r?(a&&(r=r.filter(function(e){return e>a[0]&&e!i0-pb\s*?<\/div\s*?>([\s\S]+?)!i0-pb-end\s*?<\/div\s*?>/i);i||n(404);var o=document.createElement("div");o.innerHTML=i[1];var r;"undefined"==typeof hcaptcha&&(r=i[1].match(/