Enstyler

MyDealz Enstyler enhanced features

ของเมื่อวันที่ 18-02-2019 ดู เวอร์ชันล่าสุด

คุณจะต้องติดตั้งส่วนขยาย เช่น Tampermonkey, Greasemonkey หรือ Violentmonkey เพื่อติดตั้งสคริปต์นี้

คุณจะต้องติดตั้งส่วนขยาย เช่น Tampermonkey หรือ Violentmonkey เพื่อติดตั้งสคริปต์นี้

คุณจะต้องติดตั้งส่วนขยาย เช่น Tampermonkey หรือ Violentmonkey เพื่อติดตั้งสคริปต์นี้

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name        Enstyler
// @namespace   dealz.rrr.de
// @description MyDealz Enstyler enhanced features
// @author      gnadelwartz
// @license     LGPL-3.0; http://www.gnu.org/licenses/lgpl-3.0.txt
// @include     https://nl.pepper.com/*
// @include     https://www.preisjaeger.at/*
// @include     https://www.mydealz.de/*
// @include     https://www.hotukdeals.com/*
// @include     https://userstyles.org/styles/128262/*
// @include     https://www.amazon.*/gp/aw/*
// @version     5.02.185
// @grant       GM_getValue
// @grant       GM_setValue
// @grant       GM_xmlhttpRequest
// @require     https://unpkg.com/umbrellajs
// @require     https://cdn.jsdelivr.net/gh/gnadelwartz/[email protected]/translations.js
// @require     https://cdn.jsdelivr.net/gh/gnadelwartz/GM_config/GM_config-min.js
// @require      https://cdn.jsdelivr.net/gh/pieroxy/lz-string/libs/lz-string.min.js
// @require     https://cdn.jsdelivr.net/gh/gnadelwartz/sjcl/sjcl.js
// @require     https://cdn.jsdelivr.net/gh/delight-im/ShortURL/JavaScript/ShortURL.min.js
// @run-at      document-start
// ==/UserScript==
// @ the original development source with comments can be found here: https://greasyfork.org/de/scripts/24244-enstylerjs-develop
// @ if you don't trust this minimized script use the development source.
function EnstylerInit() {
  (enUserLogin = u(".avatar--type-nav").length) ? (enUserName = (enUserName = u(".navDropDown a").attr(enHREF)).replace(/.*\/profile\/([^\/]+).*/, "$1"), GM_setValue("enCSyncUser", enUserName)) : enUserName = GM_getValue("enCSyncUser", ""),
  enSection = enLocParser.pathname.replace(/\/([^\/]+\/*).*/, "/$1");
}

function EnstylerDealActions() {
  if (enTransTags = 5, myDealAction) {
    u("footer ul").length && (enDealFooter = "%0D%0A%0D%0A-- %0D%0A" + u("footer ul li p").first().innerHTML.replace(/<br>/g, "%0D%0A").replace(/<.*?>/g, ""));
    var e = enLocParser.pathname;
    switch ("" != enUserName && (e = e.replace(enUserName + "/", "")), enDealAdd = enDealAction[0], !0) {
     case e.endsWith("profile/diskussion"):
     case enUserLogin && e.endsWith(enUserName):
      enDealAdd += enDealAction[2];
    }
    enDealAdd = enLangLocalize(enDealAdd + enDealAction[3] + enDealAction[5], enDealLang, enLANG), enSocialAdd = enLangLocalize(enDealAction[6] + enDealAction[4], enDealLang, enLANG);
  }
  EnstylerDealActionsDo();
}

function EnstylerDealActionsDo() {
  var e, t, n, a, o, i, r, l, s, c, d, p;
  enMyCSSID = enUserKey(""), (myDealAction || myTouch || myFixHtml || myVotebar || myPrice || enBlackTemp == enValOff) && (s = u(".thread--type-list, .cept-listing--card").length, u("article").not(".enClassActionDone, ." + enClassHidden).each(function(g) {
    if (u(g).addClass("enClassActionDone"), !u(g).hasClass("threadWidget--type-card--item")) if (null !== (e = u(g).attr(enID))) {
      if (n = u(g).find(".thread-title a"), c = "c" != e[0], enBlackTemp != enValOff && (c ? s ? (d = (u(g).find(".thread-title a").text() + " @" + u(g).find("a.user").text()).replace(unwantedRegex[1], " "),
      l = null !== (l = u(g).find(".vote-temp")).text() ? parseInt(l.text()) : 9999) : (l = 9999, d = "") : (d = (u(g).find(".userHtml").text() + " @" + u(g).find("a.user").text()).replace(unwantedRegex[1], " "),
      l = 0), (!enWhiteTrue || !d.match(enWhite)) && (enBlackTemp >= l || enBlackTrue && d.match(enBlack)))) {
        var f = u(g).parent();
        f.hasClass("threadCardLayout--card") ? f.addClass(enClassHidden) : u(g).addClass(enClassHidden), enBlacklisted++;
      }
      myFixHtml && u(g).find(".userHtml").each(function(e) {
        u(e).html(u(e).html().replace(/[^ -~¡-ÿ✘►○●✰€≠]+|(&nbsp;)+|(\n\r)+|<\/p>|<div>/g, " ").replace(/<\/div>/g, "<br>").replace(/<p>|<br>( *<br>)+/g, "<br><br>").replace(/(<li>)(<br>)+|<br>*(<br><\/li>)/g, "$1"));
      }), myPrice && c && (d = u(g).find(".thread-price.text--b")).length && ((o = u(g).find(".cept-dealBtn")).hasClass("ico--type-redirect-white") ? o.html(d.html()) : o.html(d.html() + '<span class="ico ico--type-redirect-white size--all-xl space--l-1"></span>'),
      u(g).find(".cept-tb").html(d.html())), myDealAction && c && (s || (n = u(g).find(".thread-title"), enTransTags = 20), enTranslateGoogle(n), (i = u(g).find(".vote-temp")).length && (i = parseInt(i.text()),
      myVotebar && (l = u(g).find(".vote-temp").attr("class").replace(/.*charcoal|.*vote-temp--/i, ""), 0 > (r = i / (myVotescale / 70) + 5) && (r *= -3), p = g, s || (p = u(u(g).find("div").first())), u(p).prepend('<div class="votebar vote-progress voteBar--' + l + '" style="width: ' + r + '%;"></div>'),
      u(g).hasClass("thread--type-card") && (i = 0), i > myVotescale / 2.51 ? u(p).prepend(enDealFlame) : -myVotescale / 10.1 > i && u(p).prepend(enDealIce))), s ? (u(g).find("span.meta-ribbon.hide--toW3").removeClass("hide--toW3"),
      u(g).find(".threadGrid-title .thread-title.lineClamp--2").removeClass("lineClamp--2"), a = n.first().outerHTML.replace(/\n|\r|\t/g, "").replace(/^.*href="/, "").replace(/".*/, "").replace(/(.*)\/.*-/, "$1/md-"),
      o = enDealComposeAction(u(g), n.text(), a, enDealAdd.replace(enPATTERN[enTITLE], n.text())), u(g).find(".cept-comment-link").append(o)) : (o = enDealComposeAction(u(g), n.text(), enLocParser.toString().replace(/(.*)\/.*-/, "$1/md-"), enSocialAdd.replace(enPATTERN[enTITLE], n.text())),
      u(g).find("a.btn--twitter").parent().append(o))), (t = u(g).find(".userHtml")).length && enTranslateGoogle(t);
    } else u(g).remove();
  }), EnstylerBlacklistShow());
}

function enDealComposeAction(e, t, n, a) {
  100 > (t = encodeURIComponent(("Gnadelwartz" == enUserName ? "KayDealz" : enInterName) + ": " + t.replace(/\r|\n|\t/g, " ").replace(/  */g, " "))).length && e.find("span.thread-price").length && (t += encodeURIComponent(" -> " + e.find("span.thread-price").text().replace(/ |\t/g, "")));
  var o = n.replace(/(.*)\/.*-/, "$1/md-");
  return enCCMail && (o = n.replace(/^https:\/\/.*?\//, "https://dealz.rrr.de/" + enInterName + "/") + "?ID=" + enMyCSSID), a.replace(enPATTERN[enHREF], "\n\r" + n).replace(enPATTERN[enTEXT], truncStringWord(t, 160, "%20") + "&body=" + t + "%0D%0A%0D%0A" + o + enDealFooter);
}

function EnstylerBlacklist() {
  enUserLogin && !GM_config.get("enConfWhitelist").includes(enUserName) && GM_config.set("enConfWhitelist", "@" + enUserName + "," + GM_config.get("enConfWhitelist"));
  var e = GM_config.get("enConfBlacklist").replace(unwantedRegex[0], "");
  enBlack = RegExp(e.replace(/^,|,$/g, "").replace(/(.),(.)/g, "$1|$2"), "i"), (enBlackTrue = !" ".match(enBlack)) || "" == e || alert(confLang("regexfailed")), enWhite = RegExp(GM_config.get("enConfWhitelist").replace(/^,|,$/g, "").replace(/(.),(.)/g, "$1|$2"), "i"),
  enWhiteTrue = !" ".match(enWhite), enBlackTemp = GM_config.get("enCBlackC"), enBlackTrue = enBlackTrue && enBlackTemp != enValOff;
}

function EnstylerBlacklistShow() {
  enConfDefs.default.enCUnblackL.label = enUnblackText.replace(enPATTERN[enTEXT], enBlacklisted);
}

function EnstylerBlacklistUnhide() {
  enBlacklisted = 0, EnstylerBlacklistShow(), u("." + enClassHidden).removeClass(enClassHidden);
}

function EnstylerPagePickerCreate() {
  if (GM_config.get("enCPageP")) {
    var e, t, n, a = 1, o = 1;
    u(selectList).empty();
    var i = u("nav .cept-last-page");
    if (i.length) {
      var r = u("nav .pagination-page .hide--fromW2");
      isNaN(a = parseInt(r.html())) && (a = 1), isNaN(o = parseInt(i.html())) && (o = a);
    } else o = a = enLocParser.search.length ? parseInt(enLocParser.search.replace(/.*=/, "")) : 1;
    for (var l = 1; o >= l; ) (n = document.createElement("option")).text = l, selectList.add(n), t = l, e = Math.abs(a - l), 10 > l || 5 > e ? l++ : l += 1e3 > l && e > 600 ? e / 3.5 : Math.floor(e / 2),
    e > 9 && l > 9 && (l = 50 > e || 50 > l ? 2 * Math.floor(l / 2) : 5 * Math.floor(l / 5));
    a > o && (o = a), o > t && ((n = document.createElement("option")).text = o, selectList.add(n)), selectList.value = a;
    var s = [ ".js-navDropDown-messages", enPEnum + " js-navDropDown-messages vAlign--all-m" ];
    u(".test-loginButton").length && (s[0] = ".test-loginButton"), u(".voteBar").length && (s = [ ".voteBar--sticky-off--hide.hAlign--all-r", enPEnum + " subNavMenu-link subNavMenu-btn voteBar--sticky-off--hide" ]),
    selectList.setAttribute("class", s[1]), u(s[0]).before(selectList);
  }
}

function EnstylerPagePickerDo() {
  enLocParser.search.length ? selectList.value = parseInt(location.search.replace(/.*=/, "")) : selectList.value = 1;
}

function EnstylerPageAction() {
  var e = document.getElementById(enPEnum), t = "page=" + e.options[e.selectedIndex].value, n = enLocParser.toString().replace(/page=.*|#.*/, "");
  n.endsWith("?") || n.endsWith("&") ? n += t : n += "?" + t, "/deals/" == enSection && (n += "#thread-comments"), window.location = n;
}

function EnstylerFixedNav() {
  var e = u(".subNavMenu .subNavMenu-layer").first();
  if (GM_config.get("enCNavF")) if ("/deals/" != enSection && "/gutscheine/" != enSection) {
    var t = u("header.js-sticky").html();
    u("header.forceLayer").replace('<header class="enFixedNav">' + t + "</header>");
    var n = myFixedCSS.every;
    enSection == EnstylerSiteConfig("discussion") && (n += myFixedCSS.discus), (u(".nav-subheadline").length || "/profile/" == enSection) && (n += myFixedCSS.subnav), addStyleString(n);
  } else e = u(".vote-box").first();
  e && e.after(enMenuButton);
}

function EnstylerDealTime() {
  TodayStart.setHours(0, 0, 0, 0), today = enLangLocalize('<span class="hide--toW2"><EN-LANG:today>&nbsp;</span>', enTimeLang, enLANG), oclock = enLangLocalize('<span class="hide--toW2">&nbsp;<EN-LANG:oclock></span>', enTimeLang, enLANG),
  yesterday = enLangLocalize("<EN-LANG:yesterday> ", enTimeLang, enLANG), EnstylerDealTimeDo();
}

function EnstylerDealTimeDo() {
  if (myDealTime) {
    var e, t, n, a = Date.now();
    u(".meta-ribbon, time, .metaRibbon").not("." + EnstylerTimeSeen).each(function(o) {
      if (u(o).addClass(EnstylerTimeSeen), !(e = u(o).html()).includes(" am ")) {
        switch (DealDate.setTime(a - (60 * parseInt(e.replace(/.* ([0-9].*) [hu].*|.*/, "$1")) + parseInt(e.replace(/.* ([0-9].*) m.*|.*/, "$1"))) * enTime2Min), t = (a - DealDate) / enTime2Min, n = DealDate.toString().slice(16, 21),
        !0) {
         case 5 > n.length || 60 > t:
          return;

         case t > 1440:
          e += "&nbsp;(" + n + oclock + ")";
          break;

         case TodayStart > DealDate:
          e = yesterday + n + oclock;
          break;

         default:
          e += "&nbsp;(" + today + n + oclock + ")";
        }
        u(o).html(e);
      }
    });
  }
}

function EnstylerLastSeen() {
  if (LastSeenOnce) if (LastSeenOnce = !1, enSection.match(enMainSectionMatch)) {
    if (enSeArt = GM_getValue(enSec, ""), SyncLastSeen(), EnstylerLastSeenDo(), "" == enLocParser.search) {
      var e = !1;
      u("article").not(".threadWidget-item").each(function(t) {
        e || 0 != u(t).find(".cept-pinned-flag").length || (GM_setValue(enSec, u(t).attr(enID)), GM_setValue(enSec + "Last", enSeArt), SaveLastSeen(), e = !0);
      });
    }
  } else EnstylerLastSeenLast();
}

function EnstylerLastSeenDo() {
  if ("" != enSec) if (GM_setValue("enLastCheck" + enSec, Date.now() / enMs2Min), enSeArt) {
    GM_setValue(enSec + "Last", enSeArt);
    var e = u("#" + enSeArt);
    e.addClass("enClassMarkArticle"), enLaArt.startsWith("thread_") && (e = u("#" + enLaArt)).addClass("enClassMarkArticleLoad");
  } else GM_setValue(enSec, "thread_1");
}

function EnstylerLastSeenLast() {
  var e = GM_getValue(enNewestBase + "LastSec", "");
  GM_setValue(e, GM_getValue(e + "Last", ""));
}

function enCheckUpdates() {
  var e = Date.now() / enMs2Min - GM_getValue("enLastUpdateCheck", "0");
  (e > enUpdInt || 0 > e) && enUpdateCSS();
}

function enUpdateCSS() {
  var e = parseInt(Date.now() / enMs2Min), t = enComposeUpdateOpt();
  enCacheExternalResource(enUpdateUrl + t, MyCSS), GM_setValue("enLastUpdateCheck", e), enSaveMyCSS();
}

function enComposeUpdateOpt() {
  var e = GM_getValue(enCssOpt, "");
  if ("" == e || !e.startsWith("#")) return "";
  var t = (e = e.replace(/\n/g, "")).split(";");
  e = "";
  for (var n = 0; n < t.length; n++) if ("" != t[n]) {
    var a = t[n].split(":");
    2 > a.length || (e += "&" + a[1].slice(0, -1) + "=" + a[1]);
  }
  return "?" + e.slice(1);
}

function EnstylerMenuActions() {
  enInter || EnstylerAddNav("Main", "<EN-LANG:discussion>", EnstylerSiteConfig("discussion"), "enMainDiscussion"), EnstylerAddNav("Main", "<EN-LANG:enstyler>", '<EN-LANG:enhref>" target="_blank', "enMainHomepage", "home"),
  EnstylerAddNav("Main", "Enstyler Discussion", "https://www.mydealz.de/diskussion/enstyler-856062", "enMainHomepage", "page"), EnstylerAddNav("Main", "Enstyler Deal-O-Mat", "https://dealz.rrr.de/deal-O-mat/", "enMainHomepage", "home"),
  EnstylerAddNav("MainButton", "<EN-LANG:settings>", showEnstylerConfig, EnstylerButton, "gear-grey");
}

function EnstylerAddNav(e, t, n, a, o) {
  void 0 !== o && "" != o || (o = enNavIconPat);
  var i = !1, r = enMenuItemCode[e].replace(enPATTERN[enID], a).replace(enPATTERN[enTEXT], t);
  o != enNavIconPat && (r = r.split(enNavIconPat).join("#" + o)), "function" == typeof n ? i = !0 : r = r.replace(enPATTERN[enHREF], n), "M" == e[0] && ("" == enAddMain && u(".nav-link.navMenu-trigger").on("click", function() {
    setTimeout(EnstylerMainDo, 200);
  }), enAddMain += r, i && (enAddMainFunc[enAddMainCount++] = {
    ID: a,
    target: n
  }));
}

function EnstylerMainDo() {
  if (!enAddMainDone) {
    enAddMainDone = !0, u(".popover-content nav .navMenu-div").first().insertAdjacentHTML("beforebegin", enLangLocalize(enAddMain, enMenuLang, enLANG));
    var e = u(".popover--mainNav"), t = 35 * (enAddMain.split(enNavEntry).length - 1) + parseInt(e.attr("style").split("height: ")[1]);
    e.attr("style", e.attr("style").replace(/height: [0-9.]*px/, "height: " + t + "px"));
    for (var n = 0; enAddMainCount > n; n++) u("section #" + enAddMainFunc[n].ID).on("click", enAddMainFunc[n].target);
  }
}

function confLang(e) {
  return enLangLocalize("<EN-LANG:" + e + ">", enConfigLang, enLANG);
}

function confMess(e) {
  return enLangLocalize("<EN-LANG:" + e + ">", enMessageLang, enLANG);
}

function showEnstylerConfig() {
  u("body").prepend('<div id="enOverDim"></div>'), GM_config.open(), document.getElementById("main").click(), enGMConfigOpen = !0;
}

function closeEnstylerConfig() {
  u("#enOverDim").remove(), enGMConfigOpen = !1;
}

function confLangOpen() {
  u('.GM_config button[id$="_saveBtn"]').html(confLang("save")), u('.GM_config button[id$="_closeBtn"]').html(confLang("close")), u("#GM_config_resetLink").html(confMess("reset"));
}

function EnstylerSyncIDShow() {
  enSyncKey != enValOff && (u('.GM_config input[id$="_field_enCSync"]').first().value = confLang("sync") + " " + enUserKey(""));
}

function SyncSettings() {
  EnGetValue("", enSetValue), EnGetValue(enSettings, enSetSettings);
}

function SaveSettings() {
  EnSaveValue(enCssOpt, GM_getValue(enCssOpt, "")), enSaveMyCSS();
  for (var e = "", t = 0; t < enSaveSettings.length; t++) e += enSaveSettings[t] + "=" + GM_config.get(enSaveSettings[t]) + "&";
  EnSaveValue(enSettings, e);
}

function SaveLastSeen() {
  enAutoSync && (Date.now() / enMs2Min - GM_getValue("enLastCheck" + enSec, "0") > 5 && (delay = 500), setTimeout(function() {
    EnSaveValue(enSec, GM_getValue(enSec, ""));
  }, 1 * enMs2Min / 2));
}

function SyncLastSeen() {
  if (enAutoSync) {
    var e = Date.now() / enMs2Min, t = e - GM_getValue("enLastCheck" + enSec, "0");
    (t > 1 || 0 > t) && (GM_setValue("enLastCheck" + enSec, e), EnGetValue(enSec, enSetLastSeen));
  }
}

function enSetLastSeen(e, t) {
  enLaArt = t, EnstylerLastSeenDo(), enLaArt.replace(/thread_/i, "") > enSeArt.replace(/thread_/i, "") && enSetValue(e + "Last", t);
}

function enSaveMyCSS() {
  EnSaveValue("", extraCSS + GM_getValue(MyCSS, "").replace(/^.*?{/, "").replace(/} *@-moz-document.*/, ""), !1);
}

function enSetSettings(e, t) {
  for (var n = t.split("&"), a = 0; a < n.length; a++) {
    var o = n[a].split("=");
    o.length >= 2 && enSaveSettings.includes(o[0]) && ("false" == o[1] ? GM_config.fields[o[0]].value = !1 : GM_config.fields[o[0]].value = o[1], GM_config.fields[o[0]].reload());
  }
}

function enAmazonMobileRedirect() {
  var e = enLocParser.href;
  return !!e.startsWith("https://www.amazon") && (GM_config.get("enCRedirect") && (e.includes("/gp/aw/d/") ? window.location.replace(e.replace("/gp/aw/d/", "/dp/")) : e.includes("/gp/aw/ol/") ? window.location.replace(e.replace("/gp/aw/ol/", "/gp/offer-listing/")) : (enDebugLog("AMAZON redirect failed ... redirect to main page"),
  window.location = enLocParser.protocol + enLocParser.host)), !0);
}

function EnstylerStart() {
  EnstylerShowPage(), EnstylerFixedNav(), EnstylerLastSeen(), EnstylerDealTime(), EnstylerBlacklist(), EnstylerDealActions();
}

function EnstylerRedo() {
  EnstylerShowPage(), EnstylerLastSeenDo(), EnstylerPagePickerDo(), EnstylerDealTimeDo(), EnstylerDealActionsDo();
}

function EnstylerShowPage() {
  if (myDealTime) {
    var e = u(".search-input");
    e.lenth || e.nodes[0].setAttribute("placeholder", enShowDate + enLangLocalize(" <EN-LANG:oclock>", enTimeLang, enLANG) + ("/" == enLocParser.pathname ? " (home" : " (" + enLocParser.pathname.replace(/(^.*)[\/]|-.*/g, "")) + (enLocParser.search.length ? " |" + enLocParser.search.replace(/.*=/, "") + "|" : "") + ")");
  }
}

function EnstylerDelayedInit() {
  var e = shadeRGBColor(getStyle(u(".nav").first(), "background-color"), .1), t = shadeRGBColor(getStyle(u(".btn--mode-special").first(), "background-color"), .1), n = shadeRGBColor(e, .7), a = medainRGBColor(getStyle(u("#main").first(), "background-color")) > 100 ? "" : ".notification-item {color: #111;} body, .user, .thread-title, .subNavMenu-link, .mute--text2 {color: #aaa !important} .notification-item--read, .card-title, .mute--text, .userHtml-quote, .userHtml .userHtml-quote-source, .widget-title, .linkGrey, .thread-userOptionLink, .btn--mode-white--dark, .btn--mode-boxSec, .thread--expired.thread--type-card, .thread--expired.thread--type-list {color: #888;} article, section {border: 1px #666 solid} img, .votebar, .vote-tempIco, .vote-temp, .vote-temp--hot, .text--color-red, .vote-btn, .emoji, .ico, .dot {filter: grayscale(.25);}";
  addStyleString(" .GM_config {background-color: " + e + " !important; color: " + n + ";} .GM_config select {background-color: " + e + " !important;} .GM_config .section_header, .GM_config .config_header {background-color: " + shadeRGBColor(e, -.25) + " !important; color: " + n + " !important;} .nav-link-text:hover, .js-navDropDown-messages:hover, .js-navDropDown-activities:hover  { background-color: " + shadeRGBColor(e, .1) + " !important;} .GM_config input[type=button] { background-color: " + t + " !important; border-color: " + t + " !important; min-width: 10em;} .GM_config input[type=button]:hover, .btn--mode-special:hover { background-color: " + shadeRGBColor(t, .2) + " !important; border-color: " + shadeRGBColor(t, .2) + " !important;} .bg--inverted { background-color: " + t + " }" + a),
  EnstylerMenuActions(), EnstylerPagePickerCreate(), isMobile ? u("#main").on("DOMSubtreeModified", debounce(300, function() {
    window.requestAnimationFrame(EnstylerRedo);
  })) : u(".js-pagi-bottom").on("DOMSubtreeModified", debounce(200, function() {
    window.requestAnimationFrame(EnstylerRedo);
  }));
}

function WaitForBody() {
  if (!enAmazonMobileRedirect()) if (u("#messages-list").length || u("#footer").length) {
    if (enEarlyInit(), enLocParser.pathname.match(enDisableScript)) return;
    WaitForDOM();
  } else window.requestAnimationFrame(WaitForBody);
}

function WaitForDOM() {
  var e = getStyle(u(".nav, #navigation").first(), "background-color").replace(/[^\(]*/, "");
  u(".vwo-deal-button, #footer").length && "" != e ? MAIN() : window.requestAnimationFrame(function() {
    setTimeout(WaitForDOM, 80);
  });
}

function enEarlyInit() {
  addStyleString(GM_getValue("Enstyler2_CSS", ""), 'domain("' + enLocParser.hostname), enCCMail = GM_config.get("enCCMail"), myDealAction = GM_config.get("enCDealA"), myTouch = GM_config.get("enCTouch"),
  myCompact = GM_config.get("enCCompact"), myPrice = GM_config.get("enCPrice"), myFixHtml = GM_config.get("enCFixHtml"), myVotescale = GM_config.get("enCDealVbar"), myVotebar = myVotescale != enValOff,
  myDealTime = GM_config.get("enCDealT"), myPrice && (extraCSS += ".threadGrid-title .flex, .threadGrid-title .overflow--fade {display: none;}"), myCompact && (extraCSS += ".threadGrid {padding: .3em !important;} .threadGrid-headerMeta, .threadGrid-title {height: 2.8em;}.thread-title {white-space: nowrap;} .threadGrid-headerMeta {height: 2.3em;} .thread--compact .threadGrid-image {display: none}.space--mt-2, .space--mv-2 {margin-top: .25em;} .vote-box {height: 2.1em} .votebar {top: 0;} .threadTempBadge-icon {font-size: 1.3em !important;}",
  myPrice && (enCSS += ".threadGrid-headerMeta, .threadGrid-title {height: 2em !important;}")), myTouch && (extraCSS += "article .footerMeta-actionSlot .ico::before, article .threadItem-footerMeta .ico::before, article .threadCardLayout--row--small .ico::before, .thread-userOptionLink.ico:before {-webkit-transform: scale(1.7); transform: scale(1.7); width: 1.5em; left: .4em;}.ico--reduce3 {left: .5em;} #emergency {transform: scale(1.5); margin-left: .7em;}article a.btn--ctrl--fixed {-webkit-transform: scale(1.2); transform: scale(1.2); left: 0; margin-left: 3em; min-width: 4em;}.vote-down, .vote-up {padding-top: 0.25em; padding-bottom: 0.25em} .thread-avatar { width: 2.3em; height: 2.3em;}"),
  myVotebar || (extraCSS += ".threadTempBadge { display: unset; }"), myDealAction && (extraCSS += "button.meta-ribbon-btn.hide--fromW3 {display: none}"), addStyleString(enCSS + extraCSS + enNavCSS);
}

function MAIN() {
  EnstylerInit(), enCheckUpdates(), document.body.appendChild(enGMFrame), addStyleString(".bg--off {background-color: " + shadeRGBColor(getStyle(u(".bg--main").first(), "background-color"), -.08) + "!important;}"),
  EnstylerStart(), setTimeout(EnstylerDelayedInit, 300);
}

function enUserstyleDo() {
  u("#EnstylerButton").length || (document.body.appendChild(enGMFrame), addStyleString(enCSS + "#buttons {visibility: hidden;} #ownedButtons {visibility: visible; border: 1px solid red;}"), addStyleString(GM_getValue("Enstyler2_CSS", ""), "url(https://userstyles.org"),
  setTimeout(createEnstylerButton, 1e3));
}

function createEnstylerButton() {
  u("#advancedsettings_area").attr("class", "advancedsettings_shown"), u(".advanced_button").remove(), input.setAttribute("style", "font-size: 1.3em; padding: 0.7em; background-color: #69be28; color: white; border-radius: 8px; border: 1px solid grey; margin-top: 1em; font-weight: bold;"),
  u("#style-settings").before(input), window.scrollTo(100, 400), enSetOptions();
}

function saveEnstylerCSS() {
  enSaveOptions(), setTimeout(window.close, 1e3);
}

function enSaveOptions() {
  var e, t, n, a = "";
  u("#style-settings select").each(function(o) {
    e = u(o).attr(enID), t = o.value, n = u("option[value=" + t + "]").text(), a += "#" + e + ":" + t + ":" + n + ";\n";
  }), u("#style-settings input[type=text]").each(function(o) {
    e = u(o).attr(enID), t = o.value, a += "#" + e + ":" + t + ":" + (n = "RGB-Clolor") + ";\n";
  }), u("#style-settings input:checked").each(function(o) {
    e = u(o).attr(enID), t = o.value, n = u("label[for=" + e + "]").text(), a += "#" + e + ":" + t + ":" + n + ";\n";
  }), GM_config.set("saveOpt", a), GM_setValue(enCssOpt, a);
}

function enSetOptions() {
  input.value = confLang("options");
  var e = GM_getValue(enCssOpt, ""), t = (e = e.replace(/\n/g, "")).split(";");
  if ("" != e && e.startsWith("#")) {
    for (var n = 0; n < t.length; n++) {
      var a = t[n].split(":");
      a[0].startsWith("#setting") ? (u(a[0]).first().selectedIndex = "-1", u(a[0]).first().value = a[1]) : a[0].startsWith("#option") ? u(a[0]).first().checked = !0 : "" != a[0] && enDebugLog('ignoring unkown option: "' + a + '"');
    }
    addStyleString("#button { display: none; }");
  }
}

function enComposeCSS() {
  var e = GM_getValue(enCssOpt, "");
  if ("" == e || !e.startsWith("#")) return "";
  var t = (e = e.replace(/\n/g, "")).split(";");
  e = "";
  for (var n = 0; n < t.length; n++) if ("" != t[n]) {
    var a = t[n].split(":");
    2 > a.length || (e += "&" + a[0] + "=" + a[1]);
  }
  return e = "?" + e.slice(1).replace(/#/g, ""), enDebugLog(e), e;
}

//var isIE = /*@cc_on!@*/false || !!document.documentMode;
function mobileLog(e) {
  GM_setValue(saveLog, GM_getValue(saveLog, "") + e + "\n");
}

function mobileShowLog() {
  GM_getValue(saveLog, "");
}

function mobileClearLog() {
  GM_setValue(saveLog, "Enstyler Log\n");
}

function EnstylerSiteConfig(e) {
  return enGetSiteConfig(enInterName, e);
}

function enGetSiteConfig(e, t) {
  return enSiteConfig.hasOwnProperty(e) && enSiteConfig[e].hasOwnProperty(t) ? enSiteConfig[e][t] : "";
}

function enLangLocalize(e, t, n) {
  return enDealLang.hasOwnProperty(n) && void 0 !== t[n] || (n = "en"), (e = e.replace(enLangPat, function(e, a) {
    return t.hasOwnProperty(n) && t[n].hasOwnProperty(a) ? t[n][a] : a;
  })).match(enLangPat) ? enLangLocalize(e, t, n) : e;
}

function addStyleString(e, t) {
  // check if style contains @-moz-document rules
  if (void 0 === t && (t = ""), e.match(enUserScript.detect)) {
    "" == t && (t = enLocParser.hostname);
    var n = e.split(t);
    e = "";
    for (var a = 1; a < n.length; a++) -1 != n[a].indexOf("{") && (e += n[a].replace(enUserScript.split, "").replace(enUserScript.next, ""));
  }
  for (var o, i = 0, r = enCSSmax; e.length > r && (o = e.substring(r).indexOf("}.")) > 0; ) addStyleString(e.slice(i, r += o + 1)), i = r, r += enCSSmax;
  var l = document.createElement("style");
  l.innerHTML = e.slice(i), document.body.appendChild(l);
}

function capitalizeFirstLetter(e) {
  return e[0].toUpperCase() + e.slice(1);
}

function truncStringWord(e, t, n) {
  return void 0 === n && (n = " "), e.length > t ? (e = e.substr(0, t - 1)).substr(0, e.lastIndexOf(n)) + "..." : e;
}

function shadeRGBColor(e, t) {
  if (void 0 === t && (t = .1), void 0 === e) return "rgba(0,0,0,0)";
  var n = e.split(","), a = 0 > t ? 0 : 255, o = 0 > t ? -1 * t : t, i = parseInt(n[0].slice(4)), r = parseInt(n[1]), l = parseInt(n[2]);
  return "rgb(" + (Math.round((a - i) * o) + i) + "," + (Math.round((a - r) * o) + r) + "," + (Math.round((a - l) * o) + l) + ")";
}

function medainRGBColor(e) {
  var t = e.split(","), n = parseInt(t[0].slice(4)), a = parseInt(t[1]), o = parseInt(t[2]);
  return Math.round((n + a + o) / 3);
}

function debounce(e, t) {
  var n = null;
  return function() {
    clearTimeout(n), n = setTimeout(function() {
      t.call(this);
    }, e);
  };
}

/* curreently we assume its a CSS or JS File, so we strip comments and @namespace @moz-document... */ function enCacheExternalResource(e, t) {
  GM_xmlhttpRequest({
    method: "GET",
    url: e,
    onload: function(e) {
      var n = e.responseText.replace(/\r\n/g, " ").replace(/\/\*.*?\*\/|   *|\t/g, "").replace(/([:;]) /g, "$1").replace(/1111.11%/g, "100%");
      n.length > 60 && (GM_setValue(t, n), addStyleString(n));
    },
    onerror: function() {
      alert(confMess("cssfailed"));
    }
  });
}

function enTranslateGoogle(thisObj) {
  if (enLANG != enSiteLANG && thisObj.length) {
    var text = thisObj.html().replace(/[#\(\)]|\n|\r|\t/g, ""), html = "", transTags = [], count, match, buff = "", last = 0, regex = /<.*?>/gi;
    for (count = 0; match = regex.exec(text); count++) {
      if (count > enTransTags || buff.length + (match.index - last) > enMaxTrans) {
        var space = text.lastIndexOf(" ", last + (enMaxTrans - buff.length));
        buff += text.slice(last, last + space), html = text.slice(last + space);
        break;
      }
      transTags[count] = match[0], buff += text.slice(last, match.index) + '<a href="' + count + '">', last = regex.lastIndex;
    }
    if (buff.length || (buff = text, buff.length <= enMaxTrans)) var query = enGoogleTransURL.replace(/<ENSTYLER-LANG-HERE>/, enLANG).replace(/<ENSTYLER-HTML-HERE>/, encodeURI(buff)), ret = GM_xmlhttpRequest({
      method: "GET",
      url: query,
      onload: function(res) {
        text = eval("(" + res.responseText + ")")[0][0][0];
        try {
          for (x = 1; 5 > x; x++) text += eval("(" + res.responseText + ")")[0][x][0];
        } catch (e) {}
        for (count--; count >= 0; count--) text = text.replace(RegExp('< *a href *= *"' + count + '" *>'), transTags[count]);
        thisObj.html(text + " " + html);
      }
    });
  }
}

function EnSaveValue(e, t, n) {
  if ("" != enUserName && enSyncKey != enValOff) {
    if (void 0 === n && (n = !0), e + t == enSaveUrlLast) return;
    enSaveUrlLast = e + t;
    var a = n ? enEncrypt(t) : LZString.compressToEncodedURIComponent(t), o = enSaveURL + "ID=" + enUserKey(e) + "&value=" + a;
    GM_xmlhttpRequest({
      method: "GET",
      url: o
    });
  }
}

function EnGetValue(e, t, n) {
  if ("" == enUserName && (enUserName = GM_getValue("enCSyncUser", "")), "" != enUserName && enSyncKey != enValOff) {
    void 0 === n && (n = !0);
    var a = "https://dealz.rrr.de/enstyler/load.php?ID=" + enUserKey(e);
    GM_xmlhttpRequest({
      method: "GET",
      url: a,
      onload: function(a) {
        200 === a.status && a.responseText.length > 30 && t(e, n ? enDecrypt(a.responseText) : LZString.decompressFromEncodedURIComponent(a.responseText));
      }
    });
  }
}

function enSetValue(e, t) {
  GM_setValue(e + "", t + "");
}

function enEncrypt(e) {
  return btoa(sjcl.encrypt(enUserKey(""), e));
}

function enDecrypt(e) {
  return sjcl.decrypt(enUserKey(""), atob(e));
}

function enUserKey(e) {
  return enShortKey(enUserName + enSyncKey + e);
}

function enShortKey(e) {
  return ShortURL.encode(parseInt(e.toLowerCase().split("").map(function(e) {
    return "eariotnslcudpmhgbfywkvxzjq".indexOf(e) + 1 || "9876543210".indexOf(e) + 1 || "";
  }).join("")));
}

function getStyle(e, t) {
  if (window.getComputedStyle) try {
    return getComputedStyle(e).getPropertyValue(t);
  } catch (e) {} else if (e.currentStyle) try {
    return e.currentStyle[t];
  } catch (e) {}
  return "";
}

var DEBUG = !1, DEBUGXX = !0, DEBUGXXX = !1, DEBUGINT = !1, enLocParser = location, enInterSite = enLocParser.hostname.replace("www.", ""), enInterName = capitalizeFirstLetter(enInterSite.replace(/^\.|\..*/g, "")), enInter = "Mydealz" != enInterName, enUpdInt = 1440, enMs2Min = 6e4, enTime2Min = enMs2Min, enUserLogin = !1, enUserName = "", enSection = enLocParser.pathname.replace(/\/([^\/]+\/*).*/, "/$1"), enValOff = "off", enSyncKey = enValOff, enAutoSync = !1, isFirefox = "undefined" != typeof InstallTrigger, isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);

/Linux/i.test(navigator.userAgent) && void 0 !== GM_info.scriptHandler && GM_info.scriptHandler.startsWith("USI") && (isMobile = !0);

var saveLog = "enMobileLog", enDebugLog = console.error, enInitTime;

mobileClearLog();

var enDisableScript = /settings$/, enLangPat = /<EN-LANG:(.*?)>/g, enSiteLANG = void 0 === enSiteConfig[enInterName] ? "en" : enSiteConfig[enInterName].lang, enLANG = enSiteLANG, enHostpath = enLocParser.protocol + "//" + enLocParser.host + enLocParser.pathname, enDealAction = [ '<a title="<EN-LANG:post>" class="space--h-1" style="font-size: xx-large"href="<ENSTYLER-HREF-HERE>#comment-form" data-handler="track" data-track="{&quot;action&quot;:&quot;scroll_to_comment_add_form&quot;,&quot;label&quot;:&quot;engagement&quot;}">+</a>', '<a title="<EN-LANG:remove>"class="space--h-1" style="font-size: x-large"data-handler="track replace" data-replace="{&quot;endpoint&quot;:&quot;https://www.mydealz.de/threads/<ENSTYLER-ID-HERE>/remove&quot;,&quot;method&quot;:&quot;post&quot;}" data-track="{&quot;action&quot;:&quot;save_thread&quot;,&quot;label&quot;:&quot;engagement&quot;}">-</a>', '<a title="<EN-LANG:edit>" class="space--h-1" style="font-size: x-large"href="<ENSTYLER-HREF-HERE>/edit" data-handler="track" data-track="{&quot;action&quot;:&quot;goto_Update startededit_form&quot;,&quot;beacon&quot;:true}"><span>E</a>', '<a title="<EN-LANG:mail>" class="space--h-1" style="font-size: x-large"href="mailto:?subject=<ENSTYLER-TEXT-HERE>" <span class="hide--toW3"><span>M</a>', '<a title="<EN-LANG:mail>" class="btn btn--messenger btn--mail space--ml-2" style="background-color: #69BE28;"href="mailto:?subject=<ENSTYLER-TEXT-HERE>"><span class="ico ico--type-mail-white ico--reduce size--all-xxl"></span><svg width="22px" height="22px" class="icon icon--mail icon-u--1"><use xlink:href="/assets/img/ico_39d8b.svg#mail"></use></svg><span class="space--ml-2"><EN-LANG:mail></span></a>', '<a title="<EN-LANG:telegram>" class="space--h-1" style="font-size: x-large" target="blank"href="https://telegram.me/share/url?url=<ENSTYLER-HREF-HERE>&text=<ENSTYLER-TITLE-HERE>" <span class="hide--toW3"><span>T</a>', '<a title="<EN-LANG:telegram>" class="btn btn--messenger btn--mail space--ml-2" style="background-color: #10a0d0;" target="blank"href="https://telegram.me/share/url?url=<ENSTYLER-HREF-HERE>&text=<ENSTYLER-TITLE-HERE>"><span class="ico ico--type-mail-white ico--reduce size--all-xxl"></span><svg width="17px" height="17px" class="icon icon--external icon-u--1"><use xlink:href="/assets/img/ico_39d8b.svg#external"></use></svg><span class="space--ml-2"><EN-LANG:telegram></span></a>' ], enDealSearch = '<div class="tGrid-cell vAlign--all-m hAlign--all-r  space--r-3 width--all-4"><div class="aGrid box--all-i vAlign--all-m width--all-12 hAlign--all-l zIndex--popover" action=""><div><div><button type="submit" aria-label="Finde"><span class="search-button search-button--inactive text--color-grey"><svg width="20px" height="20px" class="icon icon--search"><use xlink:href="/assets/img/ico_0d108.svg#search"></use></svg></span></button><input id="enCommentSearch" name="enCom" value="" class="search-input input input--search width--all-12" type="search" placeholder="<EN-LANG:commentsearch>"> </div></div></div></div>', enDealFlame = '<span class="vote-tempIco ico ico--type-flame2-red threadTempBadge-icon" style="position: absolute; display: block; margin-left: .3em; font-size: 2em;"></span>', enDealIce = '<span class="vote-tempIco ico ico--type-snowflake-blueTint threadTempBadge-icon" style="position: absolute; display: block; margin-left: .3em; font-size: 2em;"></span>', enDealMarker = "#thread_", enDealAdd = "", enSocialAdd, enDealFooter = "", enCCMail, enMyCSSID, myDealAction, myTouch, myFixHtml, myVotebar, myVotescale, myCompact, myPrice, myDealTime, enClassHidden = "enClassHidden", enClassBlackDone = "enClassBlackDone", enBlacklisted = 0, unwantedRegex = [ /[\[\]\(\)\{\}\?\:\;\!\"\*\+\ ]/g, /[\[\]\(\)\{\}\?\.\:\;\!\"\*\+\,\n\r\t]+/g ], enBlack, enBlackTrue, enWhite, enWhiteTrue, enBlackTemp, enPEnum = "enPageEnum", selectList = document.createElement("select");

selectList.id = enPEnum, selectList.setAttribute("class", enPEnum), selectList.onchange = EnstylerPageAction;

var myFixedCSS = {
  every: ".enFixedNav { display: block; position: fixed; width: 100%; z-index: 120;} .listingProfile {margin-bottom: -55px}.listingProfile, .subNav, .profileHeader, .tabbedInterface, .splitPage-wrapper {margin-top: 55px}",
  subnav: ".subNav {margin-top: 0 !important;} .nav-subheadline {margin-top: 55px}",
  discus: ".tGrid.page2-center.height--all-full {margin-top: calc(55px + 10px);} #footer .page-content { padding-top: calc(55px + 10px);}"
}, DealDate = new Date(), TodayStart = new Date(), EnstylerTimeSeen = "enTimeSeen", today = "", oclock = "", yesterday = "", enNewestBase = "enNewest" + enInterSite, enSec = enNewestBase + "-" + enSection.replace(/\//, ""), LastSeenOnce = !0, enSeArt = "", enLaArt = "", enUpdateUrl = "https://userstyles.org/styles/128262/enstyler2-style-your-mydealz.css", MyCSS = "Enstyler2_CSS", enCssOpt = "EnstylerCssOpt", enMainSectionMatch = /^\/$|^\/hot$|^\/new$|^\/settings$|^\/discussed$|^\/hei%C3%9F$|^\/diskutiert$/, enHREF = "href", enID = "id", enTEXT = "text", enTITLE = "title", enPATTERN = {
  href: /<ENSTYLER-HREF-HERE>/g,
  id: /<ENSTYLER-ID-HERE>/g,
  text: /<ENSTYLER-TEXT-HERE>/g,
  title: /<ENSTYLER-TITLE-HERE>/g
}, enNavEntry = "enNavEntry", enMenuItemCode = {
  Main: '<a class="space--h-2 lbox--v-4 enNavEntry navMenu-link" id="<ENSTYLER-ID-HERE>" href="<ENSTYLER-HREF-HERE>" data-handler="track" data-track="{&quot;action&quot;:&quot;goto_main_target&quot;,&quot;beacon&quot;:true}"><span class="lbox--h-4"><svg width="24px" height="20px" class="icon icon--comments"></span><ENSTYLER-TEXT-HERE></a>',
  Sub: '<li class="enNavEntry subNavMenu-item--separator test-tablink-discussed"><a  href="<ENSTYLER-HREF-HERE>" class="subNavMenu-item subNavMenu-link space--h-4 vAlign--all-m" id="<ENSTYLER-ID-HERE>" data-handler="track" data-track="{&quot;action&quot;:&quot;goto_menu_target sort&quot;,&quot;label&quot;:&quot;diskutiert&quot;,&quot;beacon&quot;:true}"><span class="box--all-i size--all-xl vAlign--all-m"><ENSTYLER-TEXT-HERE></span><span class="js-vue-container--threadcount" data-handler="vue" data-vue="{&quot;count&quot;:null}"></span></a></li>',
  MainButton: '<a class="space--h-2 lbox--v-4 enNavEntry navMenu-link" id="<ENSTYLER-ID-HERE>"><span class="lbox--h-4"><svg width="24px" height="20px" class="icon icon--comments"></span><ENSTYLER-TEXT-HERE></a>'
}, enNavGrid = '<div id="enButt"><a title="Grid Layout" id="enGrid" href="' + enHostpath + '?layout=grid"><img src="https://dealz.rrr.de/enstyler/grid.png"></a><a title="List Layout" id="enList" href="' + enHostpath + '?layout=horizontal"><img src="https://dealz.rrr.de/enstyler/list.png"></a><a title="Text Layout" id="enText" href="' + enHostpath + '?layout=text"><img src="https://dealz.rrr.de/enstyler/text.png"></a></div>', enNavCSS = "#enGrid, #enList, #enText { padding: 0.5em; } #enButt {left: 3em; top: 1em; padding-left: 4em; display: inline-block;}", enMenuItemLength = enMenuItemCode.length, EnstylerButton = "EnstylerButton", enMenuButton = document.createElement("input");

enMenuButton.type = "button", enMenuButton.setAttribute(enID, "emergency"), enMenuButton.onclick = showEnstylerConfig, enMenuButton.value = " ", enMenuButton.setAttribute("style", "background-position: -.00071em -176.85em; width: .85786em; display: inline-block; height: 1.42929em; background-image: url(https://assets.mydealz.de/assets/img/icons_5a065.svg); background-repeat: no-repeat; background-size: 5.50071em 590.57214em; cursor: pointer;");

var enNavIconPat = "#discussion", enAddMain = "", enAddMainFunc = [], enAddMainCount = 0, enAddMainDone = !1, enUpdateWindow, enUnblackText = enLangLocalize("<EN-LANG:unblack> <ENSTYLER-TEXT-HERE> Dealz", enConfigLang, enLANG), enConfDefs = [];

enConfDefs.default = {
  enCSS: {
    label: confLang("configcss"),
    title: confMess("configcss"),
    type: "button",
    click: function() {
      enUpdateWindow = window.open("https://userstyles.org/styles/128262", "UserCSS", "left=0,top=0"), GM_setValue("enLastUpdateCheck", 0);
    }
  },
  enJS: {
    label: confLang("userscript"),
    title: confMess("userscript"),
    type: "button",
    click: function() {
      enUpdateWindow = window.open("https://greasyfork.org/scripts/24243-enstylerjs/code/EnstylerJS.user.js", "UserScript", "width=210,height=210,left=0,top=0"), setTimeout(enUpdateWindow.close, 5e3);
    }
  },
  enCNavF: {
    label: confLang("navfixed"),
    title: confMess("navfixed"),
    type: "checkbox",
    default: !0,
    section: [ confLang("config"), "" ]
  },
  enCMax: {
    label: confLang("max"),
    title: confMess("max"),
    type: "select",
    options: enSiteConfig.width,
    default: "1450"
  },
  enCDealA: {
    label: confLang("dealaction"),
    title: confMess("dealaction"),
    type: "checkbox",
    default: !0
  },
  enCDealVbar: {
    label: confLang("dealvotebar"),
    title: confMess("dealvotebar"),
    type: "select",
    options: enSiteConfig.votescale,
    default: "500"
  },
  enCTouch: {
    label: confLang("touch"),
    title: confMess("touch"),
    type: "checkbox",
    default: !0
  },
  enCWidth: {
    label: confLang("width"),
    title: confMess("width"),
    type: "select",
    options: enSiteConfig.width,
    default: enValOff
  },
  enCPrice: {
    label: confLang("price"),
    title: confMess("price"),
    type: "checkbox",
    default: !1
  },
  enCCompact: {
    label: confLang("compact"),
    title: confMess("compact"),
    type: "checkbox",
    default: !1
  },
  enCCMail: {
    label: confLang("cssdealz"),
    title: confMess("cssdealz"),
    type: "checkbox",
    default: !1
  },
  enCRedirect: {
    label: confLang("redir"),
    title: confMess("redir"),
    type: "checkbox",
    default: !0
  },
  enCPageP: {
    label: confLang("picker"),
    title: confMess("picker"),
    type: "checkbox",
    default: !0
  },
  enCDealT: {
    label: confLang("dealtime"),
    title: confMess("dealtime"),
    type: "checkbox",
    default: !0
  },
  enCFixHtml: {
    label: confLang("fixhtml"),
    title: confMess("fixhtml"),
    type: "checkbox",
    default: !0
  },
  enCBlackC: {
    label: confLang("blacklist"),
    title: confMess("blacklist"),
    type: "select",
    options: enSiteConfig.blackcold,
    default: "-20"
  },
  enConfBlacklist: {
    label: confLang("black"),
    title: confMess("black"),
    type: "text",
    size: 70,
    default: ""
  },
  enConfWhitelist: {
    label: confLang("white"),
    title: confMess("white"),
    type: "text",
    size: 70,
    default: ""
  },
  enCUnblackL: {
    label: confLang("unblack"),
    title: confMess("unblack"),
    type: "button",
    click: EnstylerBlacklistUnhide
  },
  enCLang: {
    label: confLang("lang"),
    title: confMess("lang"),
    type: "select",
    options: enSiteConfig.languages,
    default: "auto"
  }
}, enConfDefs.sync = {
  enCAutoS: {
    label: confLang("autosync"),
    title: confMess("autosync"),
    type: "checkbox",
    section: [ confLang("syncconf"), "" ],
    default: !0
  },
  enCSyncKey: {
    label: confLang("synckey"),
    title: confMess("synckey"),
    type: "text",
    size: 10,
    default: enValOff
  },
  enCSync: {
    label: confLang("sync"),
    title: confMess("sync"),
    type: "button",
    click: function() {
      SyncSettings();
    }
  }
};

var enSaveSettings = [ "enCNavF", "enCDealA", "enCDealVbar", "enCTouch", "enCRedirect", "enCPageP", "enCFixHtml", "enCDealT", "enCBlackC", "enConfBlacklist", "enConfWhitelist", "enCAutoS" ], enGMFrame = document.createElement("div");

enGMFrame.setAttribute("class", "GM_config");

var enGMConfigOpen = !1, enRemConf = [ {
  val: enValOff,
  field: "enCBlackC",
  rem: "enConfWhitelist"
}, {
  val: enValOff,
  field: "enCBlackC",
  rem: "enConfBlacklist"
}, {
  val: enValOff,
  field: "enCBlackC",
  rem: "enCUnblackL"
}, {
  val: enValOff,
  field: "enCSyncKey",
  rem: "enCSync"
}, {
  val: enValOff,
  field: "enCSyncKey",
  rem: "enCAutoS"
} ], enSettings = "enSettings", enShowDate = new Date().toLocaleString("de-DE", {
  hour: "numeric",
  minute: "numeric"
}), enCSS = [ ".card-inner::after {display: none !important} .GM_config {color: white !important; opacity: 0.92 !important; left: 5% !important; height: auto !important; padding-bottom: 10px !important; top: 1.4em !important; box-shadow: 10px 10px 20px black; min-width: 21em; max-width: 40em !important; border-radius: 10px} #enOverDim {background-color: black; z-index: 999; position: fixed; top: 0; right: 0; bottom: 0; left: 0; opacity: 0.5} .GM_config input, .GM_config button, .GM_config textarea { border: 1px solid; margin: 0.5em 0em 0.2em 1em; padding: 0.1em;} .GM_config .reset { font-size: 9pt; padding-right: 1em; } .GM_config .config_header {font-size: 14pt !important; border: none !important; padding: 0.2em; font-weight: bold; text-align: center;} .GM_config .section_header { border: none !important; background-color:#005293 !important; !important; text-align: center; margin-top: 1em;} .GM_config .field_label:hover {color: gray;} .GM_config a:hover {text-decoration: underline; color: darkgray;} .GM_config .config_var {display: inline-block;} .GM_config .field_label {display: inline-block; min-width: 14em;  margin-left: 2em; } .GM_config button, .GM_config input[type=button] { font-weight: bold; text-align: center; color: #fff; background-color:  #58a618 !important; } .GM_config button:hover {background-color: #a5d867 !important; border-color: #a5d867 !important;} .enClassHidden, #EnPopup_closeBtn, .voteBar-- { display: none !important; } .votebar {display: inline-block; position: relative; top: .3em; height: .5em; margin-left: 2.5em; max-width: 80% } .voteBar--warm { background-color:  #ffb612 } .voteBar--hot  { background-color:  #e00034 } .voteBar--burn { background-color:  #e00034 } .voteBar--cold, .voteBar--colder { background-color:: #00a9e0 } .voteBar--cold, .voteBar--colder { background-color: #5bc6e8 } .threadTempBadge { display: none; } .flex--justify-space-between { justify-content: unset !important; }", ".gridLayout { width: unset; max-width: " + GM_getValue("enMax", "") + "px !important;}", ".page2-center, .thread-list--type-list--sideAds, .thread-list--type-list, .listLayout { max-width: " + GM_getValue("enMax", "") + "px !important;}" ].join(" "), extraCSS = "", EnstylerStartTime = Date.now(), input = document.createElement("input");

input.type = "button", input.setAttribute(enID, EnstylerButton), input.onclick = saveEnstylerCSS, input.value = confLang("options");

var enWidth = GM_getValue("enWidth", enValOff);

isMobile && enWidth != enValOff && u("meta[name=viewport]").attr("content", "width=" + enWidth + "px, initial-scale=1");

var enUserScript = {
  detect: /.*?@-moz-document .*?\{\s*/,
  split: /^.*?\{/,
  next: /}\s*@-moz-document.*/
}, enCSSmax = 16100, enGoogleTransURL = "https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=<ENSTYLER-LANG-HERE>&dt=t&q=<ENSTYLER-HTML-HERE>", enMaxTrans = 300, enTransTags = 5, enSaveURL = "https://dealz.rrr.de/enstyler/save.php?", enSaveUrlLast = "", enGMSave = !1;

if (window.location.hostname.endsWith("userstyles.org")) return GM_config.init({
  id: "GM_config",
  fields: {
    saveOpt: {
      type: "textarea"
    }
  },
  frame: enGMFrame
}), setTimeout(enUserstyleDo, 5e3), void ("complete" === document.readyState || "loading" !== document.readyState ? enUserstyleDo() : document.addEventListener("DOMContentLoaded", enUserstyleDo));

var enFixedNavLast = !1;

GM_config.init({
  id: enInter ? "GM_config" + enInterSite : "GM_config",
  title: confLang("headline"),
  fields: Object.assign(enConfDefs.default, enConfDefs.sync, enConfDefs.debug),
  events: {
    init: function() {},
    open: function() {
      enFixedNavLast = GM_config.get("enCNavF"), confLangOpen(), EnstylerSyncIDShow(), u('.GM_config [id$="_enJS_var"]').after(enNavGrid);
      for (var e = 0; e < enRemConf.length; e++) GM_config.get(enRemConf[e].field) == enRemConf[e].val && GM_config.fields[enRemConf[e].rem].remove();
      isMobile || GM_config.fields.enCWidth.remove();
    },
    save: function() {
      SaveSettings(), GM_setValue("enWidth", GM_config.get("enCWidth")), GM_setValue("enMax", GM_config.get("enCMax")), enSyncKey = GM_config.get("enCSyncKey"), enAutoSync = GM_config.get("enCAutoS"), GM_config.close(),
      showEnstylerConfig(), enGMSave ? window.location.reload() : enGMSave = !0;
    },
    close: function() {
      closeEnstylerConfig(), enCheckUpdates();
    }
  },
  frame: enGMFrame
}), enSyncKey = GM_config.get("enCSyncKey"), enAutoSync = GM_config.get("enCAutoS"), "auto" != GM_config.get("enCLang") && (enLANG = GM_config.get("enCLang")), window.eval("window['ga-disable-UA-2467049-1'] = true;"),
WaitForBody();